Merge "(bug 47070) check content model namespace on import."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 28 Jan 2014 20:56:02 +0000 (20:56 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 28 Jan 2014 20:56:02 +0000 (20:56 +0000)
1  2 
docs/hooks.txt
includes/Import.php
languages/messages/MessagesEn.php
languages/messages/MessagesQqq.php
maintenance/language/messages.inc

diff --combined docs/hooks.txt
@@@ -269,9 -269,6 +269,9 @@@ $reason: the reason for the move (adde
  'AbortNewAccount': Return false to cancel explicit account creation.
  $user: the User object about to be created (read-only, incomplete)
  &$msg: out parameter: HTML to display on abort
 +&$status: out parameter: Status object to return, replaces the older $msg param (added in 1.23)
 +          Create the object with Status::newFatal() to ensure proper API error messages
 +          are returned when creating account through API clients.
  
  'AbortTalkPageEmailNotification': Return false to cancel talk page email notification
  $targetUser: the user whom to send talk page email notification
@@@ -298,15 -295,6 +298,15 @@@ $article: Article objec
  $user: the User object that was created. (Parameter added in 1.7)
  $byEmail: true when account was created "by email" (added in 1.12)
  
 +'AddNewAccountApiForm': Allow modifying internal login form when creating an account via API.
 +$apiModule: the ApiCreateAccount module calling
 +$loginForm: the LoginForm used
 +
 +'AddNewAccountApiResult': Modify API output when creating a new account via API.
 +$apiModule: the ApiCreateAccount module calling
 +$loginForm: the LoginForm used
 +&$result: associative array for API result data
 +
  'AfterFinalPageOutput': At the end of OutputPage::output() but before final
  ob_end_flush() which will send the buffered output to the client. This allows
  for last-minute modification of the output within the buffer by using
@@@ -359,9 -347,6 +359,9 @@@ $body: Body of the messag
  this to extend core API modules.
  &$module: Module object
  
 +'ApiBeforeMain': Before calling ApiMain's execute() method in api.php.
 +&$main: ApiMain object
 +
  'ApiCheckCanExecute': Called during ApiMain::checkCanExecute. Use to further
  authenticate and authorize API clients before executing the module. Return
  false and set a message to cancel the request.
@@@ -541,7 -526,6 +541,7 @@@ $wikiPage: WikiPage (object) being modi
  Wiki::articleFromTitle().
  $title: Title (object) used to create the article object
  $article: Article (object) that will be returned
 +$context: IContextSource (object)
  
  'ArticleInsertComplete': After a new article is created. DEPRECATED, use
  PageContentInsertComplete.
@@@ -776,7 -760,6 +776,7 @@@ $block: Block object (which is set to b
  'BlockIp': Before an IP address or user is blocked.
  $block: the Block object about to be saved
  $user: the user _doing_ the block (not the one being blocked)
 +&$reason: if the hook is aborted, the error message to be returned in an array
  
  'BlockIpComplete': After an IP address or user is blocked.
  $block: the Block object that was saved
@@@ -847,6 -830,15 +847,15 @@@ content model name, but no entry for th
  $modeName: the requested content model name
  &$handler: set this to a ContentHandler object, if desired.
  
+ 'ContentModelCanBeUsedOn': Called to determine whether that content model can
+ be used on a given page. This is especially useful to prevent some content models
+ to be used in some special location.
+ $contentModel: ID of the content model in question
+ $title: the Title in question.
+ &$ok: Output parameter, whether it is OK to use $contentModel on $title.
+ Handler functions that modify $ok should generally return false to prevent further
+ hooks from further modifying $ok.
  'ConvertContent': Called by AbstractContent::convert when a conversion to another
  content model is requested.
  $content: The Content object to be converted.
@@@ -1560,7 -1552,6 +1569,7 @@@ cache
  $cache: The LocalisationCache object
  $code: language code
  &$alldata: The localisation data from core and extensions
 +&purgeBlobs: whether to purge/update the message blobs via MessageBlobStore::clear()
  
  'LocalisationChecksBlacklist': When fetching the blacklist of
  localisation checks.
@@@ -1610,12 -1601,6 +1619,12 @@@ $paramArray: Array of parameters that c
  &$revert: string that is displayed in the UI, similar to $comment.
  $time: timestamp of the log entry (added in 1.12)
  
 +'LonelyPagesQuery': Allow extensions to modify the query used by
 +Special:LonelyPages.
 +&$tables: tables to join in the query
 +&$conds: conditions for the query
 +&$joinConds: join conditions for the query
 +
  'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance
  script.
  $refreshLinks: RefreshLinks object
@@@ -1813,8 -1798,7 +1822,8 @@@ $queryInfo: the query parameter
  'PageRenderingHash': Alter the parser cache option hash key. A parser extension
  which depends on user options should install this hook and append its values to
  the key.
 -$hash: reference to a hash key string which can be modified
 +&$confstr: reference to a hash key string which can be modified
 +$user: User (object) requesting the page
  
  'ParserAfterParse': Called from Parser::parse() just after the call to
  Parser::internalParse() returns.
@@@ -2225,14 -2209,8 +2234,14 @@@ software
  $software: The array of software in format 'name' => 'version'. See
    SpecialVersion::softwareInformation().
  
 +'SpecialBlockModifyFormFields': Add more fields to Special:Block
 +$sp: SpecialPage object, for context
 +&$fields: Current HTMLForm fields
 +
  'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
 -$id: User identifier
 +$id: User id number, only provided for backwards-compatability
 +$user: User object representing user contributions are being fetched for
 +$sp: SpecialPage instance, providing context
  
  'SpecialListusersDefaultQuery': Called right before the end of
  UsersPager::getDefaultQuery().
@@@ -2421,7 -2399,7 +2430,7 @@@ $special: the special page objec
  &$tables: array of tables to be queried
  &$join_conds: join conditions for the tables
  &$fields: array of query fields
 -$values: array of variables with watchlist options
 +$opts: A FormOptions object with watchlist options for the current request
  
  'SpecialWatchlistGetNonRevisionTypes': Called when building sql query for
  SpecialWatchlist. Allows extensions to register custom values they have
diff --combined includes/Import.php
@@@ -252,6 -252,16 +252,16 @@@ class WikiImporter 
         * @return bool
         */
        public function importRevision( $revision ) {
+               if ( !$revision->getContent()->getContentHandler()->canBeUsedOn( $revision->getTitle() ) ) {
+                       $this->notice( 'import-error-bad-location',
+                               $revision->getTitle()->getPrefixedText(),
+                               $revision->getID(),
+                               $revision->getModel(),
+                               $revision->getFormat() );
+                       return false;
+               }
                try {
                        $dbw = wfGetDB( DB_MASTER );
                        return $dbw->deadlockLoop( array( $revision, 'importOldRevision' ) );
                                $revision->getModel(),
                                $revision->getFormat() );
                }
+               return false;
        }
  
        /**
@@@ -1717,7 -1729,7 +1729,7 @@@ class ImportStreamSource 
                        return Status::newFatal( 'import-noarticle' );
                }
                $link = Title::newFromText( "$interwiki:Special:Export/$page" );
 -              if ( is_null( $link ) || $link->getInterwiki() == '' ) {
 +              if ( is_null( $link ) || !$link->isExternal() ) {
                        return Status::newFatal( 'importbadinterwiki' );
                } else {
                        $params = array();
@@@ -363,7 -363,6 +363,7 @@@ $magicWords = array
        'numberingroup'           => array( 1,    'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'          => array( 1,    '__STATICREDIRECT__' ),
        'protectionlevel'         => array( 1,    'PROTECTIONLEVEL' ),
 +      'cascadingsources'        => array( 1,    'CASCADINGSOURCES' ),
        'formatdate'              => array( 0,    'formatdate', 'dateformat' ),
        'url_path'                => array( 0,    'PATH' ),
        'url_wiki'                => array( 0,    'WIKI' ),
@@@ -404,7 -403,6 +404,7 @@@ $specialPageAliases = array
        'CreateAccount'             => array( 'CreateAccount' ),
        'Deadendpages'              => array( 'DeadendPages' ),
        'DeletedContributions'      => array( 'DeletedContributions' ),
 +      'Diff'                      => array( 'Diff' ),
        'DoubleRedirects'           => array( 'DoubleRedirects' ),
        'EditWatchlist'             => array( 'EditWatchlist' ),
        'Emailuser'                 => array( 'EmailUser' ),
@@@ -668,7 -666,9 +668,7 @@@ future releases. Also note that since e
  'tog-numberheadings'          => 'Auto-number headings',
  'tog-showtoolbar'             => 'Show edit toolbar',
  'tog-editondblclick'          => 'Edit pages on double click',
 -'tog-editsection'             => 'Enable section editing via [edit] links',
  'tog-editsectiononrightclick' => 'Enable section editing by right clicking on section titles',
 -'tog-showtoc'                 => 'Show table of contents (for pages with more than 3 headings)',
  'tog-rememberpassword'        => 'Remember my login on this browser (for a maximum of $1 {{PLURAL:$1|day|days}})',
  'tog-watchcreations'          => 'Add pages I create and files I upload to my watchlist',
  'tog-watchdefault'            => 'Add pages and files I edit to my watchlist',
  'tog-minordefault'            => 'Mark all edits minor by default',
  'tog-previewontop'            => 'Show preview before edit box',
  'tog-previewonfirst'          => 'Show preview on first edit',
 -'tog-nocache'                 => 'Disable browser page caching',
  'tog-enotifwatchlistpages'    => 'Email me when a page or file on my watchlist is changed',
  'tog-enotifusertalkpages'     => 'Email me when my user talk page is changed',
  'tog-enotifminoredits'        => 'Email me also for minor edits of pages and files',
  'category_header'                => 'Pages in category "$1"',
  'subcategories'                  => 'Subcategories',
  'category-media-header'          => 'Media in category "$1"',
 -'category-empty'                 => "''This category currently contains no pages or media.''",
 +'category-empty'                 => '<em>This category currently contains no pages or media.</em>',
  'hidden-categories'              => '{{PLURAL:$1|Hidden category|Hidden categories}}',
  'hidden-category-category'       => 'Hidden categories',
  'category-subcat-count'          => '{{PLURAL:$2|This category has only the following subcategory.|This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}',
@@@ -1008,7 -1009,7 +1008,7 @@@ This may indicate a bug in the software
  'databaseerror-query'           => 'Query: $1',
  'databaseerror-function'        => 'Function: $1',
  'databaseerror-error'           => 'Error: $1',
 -'laggedslavemode'               => "'''Warning:''' Page may not contain recent updates.",
 +'laggedslavemode'               => '<strong>Warning:</strong> Page may not contain recent updates.',
  'readonly'                      => 'Database locked',
  'enterlockreason'               => 'Enter a reason for the lock, including an estimate of when the lock will be released',
  'readonlytext'                  => 'The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.
@@@ -1056,15 -1057,15 +1056,15 @@@ Data here will not presently be refresh
  Please try again in a few minutes.',
  'protectedpagetext'             => 'This page has been protected to prevent editing or other actions.',
  'viewsourcetext'                => 'You can view and copy the source of this page:',
 -'viewyourtext'                  => "You can view and copy the source of '''your edits''' to this page:",
 +'viewyourtext'                  => 'You can view and copy the source of <strong>your edits</strong> to this page:',
  'protectedinterface'            => 'This page provides interface text for the software on this wiki, and is protected to prevent abuse.
  To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
 -'editinginterface'              => "'''Warning:''' You are editing a page that is used to provide interface text for the software.
 +'editinginterface'              => '<strong>Warning:</strong> You are editing a page that is used to provide interface text for the software.
  Changes to this page will affect the appearance of the user interface for other users on this wiki.
 -To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
 +To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
  'cascadeprotected'              => 'This page has been protected from editing because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the "cascading" option turned on:
  $2',
 -'namespaceprotected'            => "You do not have permission to edit pages in the '''$1''' namespace.",
 +'namespaceprotected'            => "You do not have permission to edit pages in the <strong>$1</strong> namespace.",
  'customcssprotected'            => "You do not have permission to edit this CSS page because it contains another user's personal settings.",
  'customjsprotected'             => "You do not have permission to edit this JavaScript page because it contains another user's personal settings.",
  'mycustomcssprotected'          => 'You do not have permission to edit this CSS page.',
  'mypreferencesprotected'        => 'You do not have permission to edit your preferences.',
  'ns-specialprotected'           => 'Special pages cannot be edited.',
  'titleprotected'                => 'This title has been protected from creation by [[User:$1|$1]].
 -The reason given is "\'\'$2\'\'".',
 +The reason given is "<em>$2</em>".',
  'filereadonlyerror'             => 'Unable to modify the file "$1" because the file repository "$2" is in read-only mode.
  
  The administrator who locked it offered this explanation: "$3".',
  'exception-nologin-text-manual' => 'Please $1 to be able to access this page or action.',
  
  # Virus scanner
 -'virus-badscanner'     => "Bad configuration: Unknown virus scanner: ''$1''",
 +'virus-badscanner'     => "Bad configuration: Unknown virus scanner: <em>$1</em>",
  'virus-scanfailed'     => 'scan failed (code $1)',
  'virus-unknownscanner' => 'unknown antivirus:',
  
  # Login and logout pages
 -'logouttext'                      => "'''You are now logged out.'''
 +'logouttext'                      => "<strong>You are now logged out.</strong>
  
  Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
  'welcomeuser'                     => 'Welcome, $1!',
@@@ -1180,7 -1181,7 +1180,7 @@@ Ensure you have cookies enabled, reloa
  'nocookiesforlogin'               => '{{int:nocookieslogin}}', # only translate this message to other languages if you have to change it
  'noname'                          => 'You have not specified a valid username.',
  'loginsuccesstitle'               => 'Login successful',
 -'loginsuccess'                    => "'''You are now logged in to {{SITENAME}} as \"\$1\".'''",
 +'loginsuccess'                    => "<strong>You are now logged in to {{SITENAME}} as \"\$1\".</strong>",
  'nosuchuser'                      => 'There is no user by the name "$1".
  Usernames are case sensitive.
  Check your spelling, or [[Special:UserLogin/signup|create a new account]].',
@@@ -1233,7 -1234,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}}',
@@@ -1267,8 -1267,6 +1267,8 @@@ If you choose to provide it, this will 
  # Change password dialog
  'changepassword'            => 'Change password',
  'changepassword-summary'    => '', # do not translate or duplicate this message to other languages
 +'changepassword-throttled'  => 'You have made too many recent login attempts.
 +Please wait $1 before trying again.',
  'resetpass_announce'        => 'You logged in with a temporary emailed code.
  To finish logging in, you must set a new password here:',
  'resetpass_text'            => '<!-- Add text here -->', # only translate this message to other languages if you have to change it
@@@ -1339,8 -1337,6 +1339,8 @@@ Temporary password: $2'
  'changeemail-password' => 'Your {{SITENAME}} password:',
  'changeemail-submit'   => 'Change email',
  'changeemail-cancel'   => 'Cancel',
 +'changeemail-throttled' => 'You have made too many login attempts.
 +Please wait $1 before trying again.',
  
  # Special:ResetTokens
  'resettokens'                 => 'Reset tokens',
@@@ -1386,21 -1382,21 +1386,21 @@@ You should do it if you accidentally sh
  'showpreview'                      => 'Show preview',
  'showlivepreview'                  => 'Live preview',
  'showdiff'                         => 'Show changes',
 -'anoneditwarning'                  => "'''Warning:''' You are not logged in.
 +'anoneditwarning'                  => "<strong>Warning:</strong> You are not logged in.
  Your IP address will be recorded in this page's edit history.",
 -'anonpreviewwarning'               => "''You are not logged in. Saving will record your IP address in this page's edit history.''",
 -'missingsummary'                   => "'''Reminder:''' You have not provided an edit summary.
 +'anonpreviewwarning'               => "<em>You are not logged in. Saving will record your IP address in this page's edit history.</em>",
 +'missingsummary'                   => "<strong>Reminder:</strong> You have not provided an edit summary.
  If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
  'missingcommenttext'               => 'Please enter a comment below.',
 -'missingcommentheader'             => "'''Reminder:''' You have not provided a subject/headline for this comment.
 +'missingcommentheader'             => "<strong>Reminder:</strong> You have not provided a subject/headline for this comment.
  If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
  'summary-preview'                  => 'Summary preview:',
  'subject-preview'                  => 'Subject/headline preview:',
  'blockedtitle'                     => 'User is blocked',
 -'blockedtext'                      => "'''Your username or IP address has been blocked.'''
 +'blockedtext'                      => "<strong>Your username or IP address has been blocked.</strong>
  
  The block was made by $1.
 -The reason given is ''$2''.
 +The reason given is <em>$2</em>.
  
  * Start of block: $8
  * Expiry of block: $6
@@@ -1413,7 -1409,7 +1413,7 @@@ Please include all above details in an
  'autoblockedtext'                  => "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.
  The reason given is:
  
 -:''$2''
 +:<em>$2</em>
  
  * Start of block: $8
  * Expiry of block: $6
@@@ -1426,7 -1422,7 +1426,7 @@@ Note that you may not use the \"email t
  Your current IP address is $3, and the block ID is #$5.
  Please include all above details in any queries you make.",
  'blockednoreason'                  => 'no reason given',
 -'whitelistedittext'                => 'You have to $1 to edit pages.',
 +'whitelistedittext'                => 'Please $1 to edit pages.',
  'confirmedittext'                  => 'You must confirm your email address before editing pages.
  Please set and validate your email address through your [[Special:Preferences|user preferences]].',
  'nosuchsectiontitle'               => 'Cannot find section',
  It may have been moved or deleted while you were viewing the page.',
  'loginreqtitle'                    => 'Login required',
  'loginreqlink'                     => 'log in',
 -'loginreqpagetext'                 => 'You must $1 to view other pages.',
 +'loginreqpagetext'                 => 'Please $1 to view other pages.',
  'accmailtitle'                     => 'Password sent',
 -'accmailtext'                      => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
 +'accmailtext'                      => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the <em>[[Special:ChangePassword|change password]]</em> page upon logging in.",
  'newarticle'                       => '(New)',
  'newarticletext'                   => "You have followed a link to a page that does not exist yet.
  To create the page, start typing in the box below (see the [[{{MediaWiki:Helppage}}|help page]] for more info).
 -If you are here by mistake, click your browser's '''back''' button.",
 +If you are here by mistake, click your browser's <strong>back</strong> button.",
  'newarticletextanon'               => '{{int:newarticletext}}', # do not translate or duplicate this message to other languages
  'talkpagetext'                     => '<!-- MediaWiki:talkpagetext -->', # do not translate or duplicate this message to other languages
  'anontalkpagetext'                 => "----
 -''This is the discussion page for an anonymous user who has not created an account yet, or who does not use it.''
 +<em>This is the discussion page for an anonymous user who has not created an account yet, or who does not use it.</em>
  We therefore have to use the numerical IP address to identify him/her.
  Such an IP address can be shared by several users.
  If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:UserLogin/signup|create an account]] or [[Special:UserLogin|log in]] to avoid future confusion with other anonymous users.",
@@@ -1464,42 -1460,42 +1464,42 @@@ Please check if you want to create/edi
  'userpage-userdoesnotexist-view'   => 'User account "$1" is not registered.',
  'blocked-notice-logextract'        => 'This user is currently blocked.
  The latest block log entry is provided below for reference:',
 -'clearyourcache'                   => "'''Note:''' After saving, you may have to bypass your browser's cache to see the changes.
 -* '''Firefox / Safari:''' Hold ''Shift'' while clicking ''Reload'', or press either ''Ctrl-F5'' or ''Ctrl-R'' (''⌘-R'' on a Mac)
 -* '''Google Chrome:''' Press ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)
 -* '''Internet Explorer:''' Hold ''Ctrl'' while clicking ''Refresh'', or press ''Ctrl-F5''
 -* '''Opera:''' Clear the cache in ''Tools â†’ Preferences''",
 -'usercssyoucanpreview'             => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
 -'userjsyoucanpreview'              => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
 -'usercsspreview'                   => "'''Remember that you are only previewing your user CSS.'''
 -'''It has not yet been saved!'''",
 -'userjspreview'                    => "'''Remember that you are only testing/previewing your user JavaScript.'''
 -'''It has not yet been saved!'''",
 -'sitecsspreview'                   => "'''Remember that you are only previewing this CSS.'''
 -'''It has not yet been saved!'''",
 -'sitejspreview'                    => "'''Remember that you are only previewing this JavaScript code.'''
 -'''It has not yet been saved!'''",
 -'userinvalidcssjstitle'            => "'''Warning:''' There is no skin \"\$1\".
 +'clearyourcache'                   => "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.
 +* <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)
 +* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)
 +* <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>
 +* <strong>Opera:</strong> Clear the cache in <em>Tools â†’ Preferences</em>",
 +'usercssyoucanpreview'             => "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
 +'userjsyoucanpreview'              => "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
 +'usercsspreview'                   => "<strong>Remember that you are only previewing your user CSS.
 +It has not yet been saved!</strong>",
 +'userjspreview'                    => "<strong>Remember that you are only testing/previewing your user JavaScript.
 +It has not yet been saved!</strong>",
 +'sitecsspreview'                   => "<strong>Remember that you are only previewing this CSS.
 +It has not yet been saved!</strong>",
 +'sitejspreview'                    => "<strong>Remember that you are only previewing this JavaScript code.
 +It has not yet been saved!</strong>",
 +'userinvalidcssjstitle'            => "<strong>Warning:</strong> There is no skin \"\$1\".
  Custom .css and .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.css as opposed to {{ns:user}}:Foo/Vector.css.",
  'updated'                          => '(Updated)',
 -'note'                             => "'''Note:'''",
 -'previewnote'                      => "'''Remember that this is only a preview.'''
 +'note'                             => "<strong>Note:</strong>",
 +'previewnote'                      => "<strong>Remember that this is only a preview.</strong>
  Your changes have not yet been saved!",
  'continue-editing'                 => 'Go to editing area',
  'previewconflict'                  => 'This preview reflects the text in the upper text editing area as it will appear if you choose to save.',
 -'session_fail_preview'             => "'''Sorry! We could not process your edit due to a loss of session data.'''
 +'session_fail_preview'             => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
  Please try again.
  If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
 -'session_fail_preview_html'        => "'''Sorry! We could not process your edit due to a loss of session data.'''
 +'session_fail_preview_html'        => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
  
 -''Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.''
 +<em>Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.</em>
  
 -'''If this is a legitimate edit attempt, please try again.'''
 +<strong>If this is a legitimate edit attempt, please try again.</strong>
  If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
 -'token_suffix_mismatch'            => "'''Your edit has been rejected because your client mangled the punctuation characters in the edit token.'''
 +'token_suffix_mismatch'            => "<strong>Your edit has been rejected because your client mangled the punctuation characters in the edit token.</strong>
  The edit has been rejected to prevent corruption of the page text.
  This sometimes happens when you are using a buggy web-based anonymous proxy service.",
 -'edit_form_incomplete'             => "'''Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.'''",
 +'edit_form_incomplete'             => "<strong>Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.</strong>",
  'editing'                          => 'Editing $1',
  'creating'                         => 'Creating $1',
  'editingsection'                   => 'Editing $1 (section)',
  The upper text area contains the page text as it currently exists.
  Your changes are shown in the lower text area.
  You will have to merge your changes into the existing text.
 -'''Only''' the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
 +<strong>Only</strong> the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
  'yourtext'                         => 'Your text',
  'storedversion'                    => 'Stored revision',
 -'nonunicodebrowser'                => "'''Warning: Your browser is not Unicode compliant.'''
 +'nonunicodebrowser'                => "<strong>Warning: Your browser is not Unicode compliant.</strong>
  A workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.",
 -'editingold'                       => "'''Warning: You are editing an out-of-date revision of this page.'''
 +'editingold'                       => "<strong>Warning: You are editing an out-of-date revision of this page.</strong>
  If you save it, any changes made since this revision will be lost.",
  'yourdiff'                         => 'Differences',
  'copyrightwarning'                 => "Please note that all contributions to {{SITENAME}} are considered to be released under the $2 (see $1 for details).
  If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.<br />
  You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
 -'''Do not submit copyrighted work without permission!'''",
 +<strong>Do not submit copyrighted work without permission!</strong>",
  'copyrightwarning2'                => "Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.
  If you do not want your writing to be edited mercilessly, then do not submit it here.<br />
  You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).
 -'''Do not submit copyrighted work without permission!'''",
 +<strong>Do not submit copyrighted work without permission!</strong>",
  'editpage-head-copy-warn'          => '-', # do not translate or duplicate this message to other languages
  'editpage-tos-summary'             => '-', # do not translate or duplicate this message to other languages
  'longpage-hint'                    => '-', # do not translate or duplicate this message to other languages
 -'longpageerror'                    => "'''Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.'''
 +'longpageerror'                    => "<strong>Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.</strong>
  It cannot be saved.",
 -'readonlywarning'                  => "'''Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.'''
 +'readonlywarning'                  => "<strong>Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.</strong>
  You may wish to copy and paste your text into a text file and save it for later.
  
  The administrator who locked it offered this explanation: $1",
 -'protectedpagewarning'             => "'''Warning: This page has been protected so that only users with administrator privileges can edit it.'''
 +'protectedpagewarning'             => "<strong>Warning: This page has been protected so that only users with administrator privileges can edit it.</strong>
  The latest log entry is provided below for reference:",
 -'semiprotectedpagewarning'         => "'''Note:''' This page has been protected so that only registered users can edit it.
 +'semiprotectedpagewarning'         => "<strong>Note:</strong> This page has been protected so that only registered users can edit it.
  The latest log entry is provided below for reference:",
 -'cascadeprotectedwarning'          => "'''Warning:''' This page has been protected so that only users with administrator privileges can edit it because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:",
 -'titleprotectedwarning'            => "'''Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.'''
 +'cascadeprotectedwarning'          => "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can edit it because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:",
 +'titleprotectedwarning'            => "<strong>Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.</strong>
  The latest log entry is provided below for reference:",
  'templatesused'                    => '{{PLURAL:$1|Template|Templates}} used on this page:',
  'templatesusedpreview'             => '{{PLURAL:$1|Template|Templates}} used in this preview:',
@@@ -1557,7 -1553,7 +1557,7 @@@ You can go back and edit an existing pa
  'permissionserrors'                => 'Permission error',
  'permissionserrorstext'            => 'You do not have permission to do that, for the following {{PLURAL:$1|reason|reasons}}:',
  'permissionserrorstext-withaction' => 'You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:',
 -'recreate-moveddeleted-warn'       => "'''Warning: You are recreating a page that was previously deleted.'''
 +'recreate-moveddeleted-warn'       => "<strong>Warning: You are recreating a page that was previously deleted.</strong>
  
  You should consider whether it is appropriate to continue editing this page.
  The deletion and move log for this page are provided here for convenience:",
@@@ -1581,8 -1577,6 +1581,8 @@@ It already exists.'
  'content-not-allowed-here'         => '"$1" content is not allowed on page [[$2]]',
  'editwarning-warning'              => 'Leaving this page may cause you to lose any changes you have made.
  If you are logged in, you can disable this warning in the "Editing" section of your preferences.',
 +'editpage-notsupportedcontentformat-title'=> 'Content format not supported',
 +'editpage-notsupportedcontentformat-text' => 'The content format $1 is not supported by the content model $2.',
  
  # Content models
  'content-model-wikitext'   => 'wikitext',
  'content-model-css'        => 'CSS',
  
  # Parser/template warnings
 -'expensive-parserfunction-warning'        => "'''Warning:''' This page contains too many expensive parser function calls.
 +'expensive-parserfunction-warning'        => "<strong>Warning:</strong> This page contains too many expensive parser function calls.
  
  It should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 calls}}.",
  'expensive-parserfunction-category'       => 'Pages with too many expensive parser function calls',
 -'post-expand-template-inclusion-warning'  => "'''Warning:''' Template include size is too large.
 +'post-expand-template-inclusion-warning'  => "<strong>Warning:</strong> Template include size is too large.
  Some templates will not be included.",
  'post-expand-template-inclusion-category' => 'Pages where template include size is exceeded',
 -'post-expand-template-argument-warning'   => "'''Warning:''' This page contains at least one template argument that has a too large expansion size.
 +'post-expand-template-argument-warning'   => "<strong>Warning:</strong> This page contains at least one template argument that has a too large expansion size.
  These arguments have been omitted.",
  'post-expand-template-argument-category'  => 'Pages containing omitted template arguments',
  'parser-template-loop-warning'            => 'Template loop detected: [[$1]]',
@@@ -1622,13 -1616,9 +1622,13 @@@ Please check the comparison below to ve
  
  # Account creation failure
  'cantcreateaccounttitle' => 'Cannot create account',
 -'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
 +'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 (<strong>$1</strong>) has been blocked by [[User:$3|$3]].
 +
 +The reason given by $3 is <em>$2</em>",
 +'createaccount-hook-aborted' => '$1', # do not translate or duplicate this message to other languages
  
  # History pages
  'viewpagelogs'           => 'View logs for this page',
  'page_first'             => 'first',
  'page_last'              => 'last',
  'histlegend'             => "Diff selection: Mark the radio boxes of the revisions to compare and hit enter or the button at the bottom.<br />
 -Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})''' = difference with preceding revision, '''{{int:minoreditletter}}''' = minor edit.",
 +Legend: <strong>({{int:cur}})</strong> = difference with latest revision, <strong>({{int:last}})</strong> = difference with preceding revision, <strong>{{int:minoreditletter}}</strong> = minor edit.",
  'history-fieldset-title' => 'Browse history',
  'history-show-deleted'   => 'Deleted only',
  'history_copyright'      => '-', # do not translate or duplicate this message to other languages
@@@ -1670,30 -1660,30 +1670,30 @@@ Try [[Special:Search|searching on the w
  'rev-deleted-user'            => '(username removed)',
  'rev-deleted-event'           => '(log action removed)',
  'rev-deleted-user-contribs'   => '[username or IP address removed - edit hidden from contributions]',
 -'rev-deleted-text-permission' => "This page revision has been '''deleted'''.
 +'rev-deleted-text-permission' => "This page revision has been <strong>deleted</strong>.
  Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
 -'rev-deleted-text-unhide'     => "This page revision has been '''deleted'''.
 +'rev-deleted-text-unhide'     => "This page revision has been <strong>deleted</strong>.
  Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
  You can still [$1 view this revision] if you wish to proceed.",
 -'rev-suppressed-text-unhide'  => "This page revision has been '''suppressed'''.
 +'rev-suppressed-text-unhide'  => "This page revision has been <strong>suppressed</strong>.
  Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
  You can still [$1 view this revision] if you wish to proceed.",
 -'rev-deleted-text-view'       => "This page revision has been '''deleted'''.
 +'rev-deleted-text-view'       => "This page revision has been <strong>deleted</strong>.
  You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
 -'rev-suppressed-text-view'    => "This page revision has been '''suppressed'''.
 +'rev-suppressed-text-view'    => "This page revision has been <strong>suppressed</strong>.
  You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
 -'rev-deleted-no-diff'         => "You cannot view this diff because one of the revisions has been '''deleted'''.
 +'rev-deleted-no-diff'         => "You cannot view this diff because one of the revisions has been <strong>deleted</strong>.
  Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
 -'rev-suppressed-no-diff'      => "You cannot view this diff because one of the revisions has been '''deleted'''.",
 -'rev-deleted-unhide-diff'     => "One of the revisions of this diff has been '''deleted'''.
 +'rev-suppressed-no-diff'      => "You cannot view this diff because one of the revisions has been <strong>deleted</strong>.",
 +'rev-deleted-unhide-diff'     => "One of the revisions of this diff has been <strong>deleted</strong>.
  Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
  You can still [$1 view this diff] if you wish to proceed.",
 -'rev-suppressed-unhide-diff'  => "One of the revisions of this diff has been '''suppressed'''.
 +'rev-suppressed-unhide-diff'  => "One of the revisions of this diff has been <strong>suppressed</strong>.
  Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
  You can still [$1 view this diff] if you wish to proceed.",
 -'rev-deleted-diff-view'       => "One of the revisions of this diff has been '''deleted'''.
 +'rev-deleted-diff-view'       => "One of the revisions of this diff has been <strong>deleted</strong>.
  You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
 -'rev-suppressed-diff-view'    => "One of the revisions of this diff has been '''suppressed'''.
 +'rev-suppressed-diff-view'    => "One of the revisions of this diff has been <strong>suppressed</strong>.
  You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
  'rev-delundel'                => 'change visibility',
  'rev-showdeleted'             => 'show',
@@@ -1704,15 -1694,15 +1704,15 @@@ function, the specified revision does n
  'revdelete-no-file'           => 'The file specified does not exist.',
  'revdelete-show-file-confirm' => 'Are you sure you want to view a deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
  'revdelete-show-file-submit'  => 'Yes',
 -'revdelete-selected'          => "'''{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:'''",
 -'logdelete-selected'          => "'''{{PLURAL:$1|Selected log event|Selected log events}}:'''",
 -'revdelete-text'              => "'''Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.'''
 +'revdelete-selected'          => "<strong>{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:</strong>",
 +'logdelete-selected'          => "<strong>{{PLURAL:$1|Selected log event|Selected log events}}:</strong>",
 +'revdelete-text'              => "<strong>Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.</strong>
  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
 -*: ''home addresses and telephone numbers, national identification numbers, etc.''",
 +'revdelete-suppress-text'     => "Suppression should <strong>only</strong> be used for the following cases:
 +* potentially libelous information
 +* inappropriate personal information
 +*: <em>home addresses and telephone numbers, national identification numbers, etc.</em>",
  'revdelete-legend'            => 'Set visibility restrictions',
  'revdelete-hide-text'         => 'Revision text',
  'revdelete-hide-image'        => 'Hide file content',
  'revdelete-unsuppress'        => 'Remove restrictions on restored revisions',
  'revdelete-log'               => 'Reason:',
  'revdelete-submit'            => 'Apply to selected {{PLURAL:$1|revision|revisions}}',
 -'revdelete-success'           => "'''Revision visibility successfully updated.'''",
 -'revdelete-failure'           => "'''Revision visibility could not be updated:'''
 +'revdelete-success'           => "<strong>Revision visibility successfully updated.</strong>",
 +'revdelete-failure'           => "<strong>Revision visibility could not be updated:</strong>
  $1",
 -'logdelete-success'           => "'''Log visibility successfully set.'''",
 -'logdelete-failure'           => "'''Log visibility could not be set:'''
 +'logdelete-success'           => "<strong>Log visibility successfully set.</strong>",
 +'logdelete-failure'           => "<strong>Log visibility could not be set:</strong>
  $1",
  'revdel-restore'              => 'change visibility',
  'pagehist'                    => 'Page history',
@@@ -1743,7 -1733,7 +1743,7 @@@ You do not have access to it.'
  'revdelete-modify-no-access'  => 'Error modifying the item dated $2, $1: This item has been marked "restricted".
  You do not have access to it.',
  'revdelete-modify-missing'    => 'Error modifying item ID $1: It is missing from the database!',
 -'revdelete-no-change'         => "'''Warning:''' The item dated $2, $1 already had the requested visibility settings.",
 +'revdelete-no-change'         => "<strong>Warning:</strong> The item dated $2, $1 already had the requested visibility settings.",
  'revdelete-concurrent-change' => 'Error modifying the item dated $2, $1: Its status appears to have been changed by someone else while you attempted to modify it.
  Please check the logs.',
  'revdelete-only-restricted'   => 'Error hiding the item dated $2, $1: You cannot suppress items from view by administrators without also selecting one of the other visibility options.',
@@@ -1825,8 -1815,8 +1825,8 @@@ Details can be found in the [{{fullurl:
  'nextn-title'                      => 'Next $1 {{PLURAL:$1|result|results}}',
  'shown-title'                      => 'Show $1 {{PLURAL:$1|result|results}} per page',
  'viewprevnext'                     => 'View ($1 {{int:pipe-separator}} $2) ($3)',
 -'searchmenu-exists'                => "'''There is a page named \"[[:\$1]]\" on this wiki.''' {{PLURAL:$2|0=|See also the other search results found.}}",
 -'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!''' {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
 +'searchmenu-exists'                => "<strong>There is a page named \"[[:\$1]]\" on this wiki.</strong> {{PLURAL:$2|0=|See also the other search results found.}}",
 +'searchmenu-new'                   => "<strong>Create the page \"[[:\$1]]\" on this wiki!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
  'searchmenu-new-nocreate'          => '', # do not translate or duplicate this message to other languages
  'searchprofile-articles'           => 'Content pages',
  'searchprofile-project'            => 'Help and Project pages',
  'search-result-score'              => 'Relevance: $1%',
  'search-redirect'                  => '(redirect $1)',
  'search-section'                   => '(section $1)',
 +'search-file-match'                => '(matches file content)',
  'search-suggest'                   => 'Did you mean: $1',
  'search-interwiki-caption'         => 'Sister projects',
  'search-interwiki-default'         => '$1 results:',
  'searcheverything-enable'          => 'Search in all namespaces',
  'searchrelated'                    => 'related',
  'searchall'                        => 'all',
 -'showingresults'                   => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
 -'showingresultsnum'                => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
 -'showingresultsheader'             => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
 +'showingresults'                   => "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.",
 +'showingresultsnum'                => "Showing below {{PLURAL:$3|<strong>1</strong> result|<strong>$3</strong> results}} starting with #<strong>$2</strong>.",
 +'showingresultsheader'             => "{{PLURAL:$5|Result <strong>$1</strong> of <strong>$3</strong>|Results <strong>$1 - $2</strong> of <strong>$3</strong>}} for <strong>$4</strong>",
  'search-nonefound'                 => 'There were no results matching the query.',
  'powersearch-legend'               => 'Advanced search',
  'powersearch-ns'                   => 'Search in namespaces:',
@@@ -1890,7 -1879,7 +1890,7 @@@ Note that their indexes of {{SITENAME}
  'preferences-summary'           => '', # do not translate or duplicate this message to other languages
  'mypreferences'                 => 'Preferences',
  'prefs-edits'                   => 'Number of edits:',
 -'prefsnologintext2'             => 'Please $1 to set user preferences.',
 +'prefsnologintext2'             => 'Please $1 to change your preferences.',
  'prefs-skin'                    => 'Skin',
  'skin-preview'                  => 'Preview',
  'datedefault'                   => 'No preference',
  'rows'                          => 'Rows:',
  'columns'                       => 'Columns:',
  'searchresultshead'             => 'Search',
 -'resultsperpage'                => 'Hits per page:',
  'stub-threshold'                => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
  'stub-threshold-disabled'       => 'Disabled',
  'recentchangesdays'             => 'Days to show in recent changes:',
@@@ -2005,7 -1995,6 +2005,7 @@@ Your email address is not revealed whe
  'prefs-tokenwatchlist'          => 'Token',
  'prefs-diffs'                   => 'Diffs',
  'prefs-help-prefershttps'       => 'This preference will take effect on your next login.',
 +'prefs-tabs-navigation-hint'    => 'Tip: You can use the left and right arrow keys to navigate between the tabs in the tabs list.',
  
  # User preference: email validation using jQuery
  'email-address-validity-valid'   => 'Email address appears valid',
  'userrights-lookup-user'         => 'Manage user groups',
  'userrights-user-editname'       => 'Enter a username:',
  'editusergroup'                  => 'Edit user groups',
 -'editinguser'                    => "Changing user rights of user '''[[User:$1|$1]]''' $2",
 +'editinguser'                    => "Changing user rights of user <strong>[[User:$1|$1]]</strong> $2",
  'userrights-editusergroup'       => 'Edit user groups',
  'saveusergroups'                 => 'Save user groups',
  'userrights-groupsmember'        => 'Member of:',
  '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).",
 +'recentchanges-legend-plusminus'    => "(<em>±123</em>)",
 +'rcnotefrom'                        => "Below are the changes since <strong>$2</strong> (up to <strong>$1</strong> 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',
  '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).
 -Pages on [[Special:Watchlist|your watchlist]] are '''bold'''.",
 +Pages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.",
  'recentchangeslinked-page'    => 'Page name:',
  'recentchangeslinked-to'      => 'Show changes to pages linked to the given page instead',
  
  'reuploaddesc'                => 'Cancel upload and return to the upload form',
  'upload-tryagain'             => 'Submit modified file description',
  'uploadnologin'               => 'Not logged in',
 -'uploadnologintext'           => 'You must $1 to upload files.',
 +'uploadnologintext'           => 'Please $1 to upload files.',
  'upload_directory_missing'    => 'The upload directory ($1) is missing and could not be created by the webserver.',
  'upload_directory_read_only'  => 'The upload directory ($1) is not writable by the webserver.',
  'uploaderror'                 => 'Upload error',
  'upload-summary'              => '', # do not translate or duplicate this message to other languages
 -'upload-recreate-warning'     => "'''Warning: A file by that name has been deleted or moved.'''
 +'upload-recreate-warning'     => "<strong>Warning: A file by that name has been deleted or moved.</strong>
  
  The deletion and move log for this page are provided here for convenience:",
  'uploadtext'                  => "Use the form below to upload files.
  To view or search previously uploaded files go to the [[Special:FileList|list of uploaded files]], (re)uploads are also logged in the [[Special:Log/upload|upload log]], deletions in the [[Special:Log/delete|deletion log]].
  
  To include a file in a page, use a link in one of the following forms:
 -* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' to use the full version of the file
 -* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' to use a 200 pixel wide rendition in a box in the left margin with \"alt text\" as description
 -* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' for directly linking to the file without displaying the file",
 +* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> to use the full version of the file
 +* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> to use a 200 pixel wide rendition in a box in the left margin with \"alt text\" as description
 +* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> for directly linking to the file without displaying the file",
  'upload-permitted'            => 'Permitted file types: $1.',
  'upload-preferred'            => 'Preferred file types: $1.',
  'upload-prohibited'           => 'Prohibited file types: $1.',
@@@ -2285,9 -2273,9 +2285,9 @@@ Please rename the file and try uploadin
  'filetype-mime-mismatch'      => 'File extension ".$1" does not match the detected MIME type of the file ($2).',
  'filetype-badmime'            => 'Files of the MIME type "$1" are not allowed to be uploaded.',
  'filetype-bad-ie-mime'        => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
 -'filetype-unwanted-type'      => "'''\".\$1\"''' is an unwanted file type.
 +'filetype-unwanted-type'      => "<strong>\".\$1\"</strong> is an unwanted file type.
  Preferred {{PLURAL:\$3|file type is|file types are}} \$2.",
 -'filetype-banned-type'        => '\'\'\'".$1"\'\'\' {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
 +'filetype-banned-type'        => '<strong>".$1"</strong> {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
  Permitted {{PLURAL:$3|file type is|file types are}} $2.',
  'filetype-missing'            => 'The file has no extension (like ".jpg").',
  'empty-file'                  => 'The file you submitted was empty.',
@@@ -2318,12 -2306,12 +2318,12 @@@ To make your summary appear there, you 
  * Name of the uploading file: <strong>[[:$1]]</strong>
  * Name of the existing file: <strong>[[:$2]]</strong>
  Please choose a different name.',
 -'fileexists-thumbnail-yes'    => "The file seems to be an image of reduced size ''(thumbnail)''.
 +'fileexists-thumbnail-yes'    => "The file seems to be an image of reduced size <em>(thumbnail)</em>.
  [[$1|thumb]]
  Please check the file <strong>[[:$1]]</strong>.
  If the checked file is the same image of original size it is not necessary to upload an extra thumbnail.",
  'file-thumbnail-no'           => "The filename begins with <strong>$1</strong>.
 -It seems to be an image of reduced size ''(thumbnail)''.
 +It seems to be an image of reduced size <em>(thumbnail)</em>.
  If you have this image in full resolution upload this one, otherwise change the filename please.",
  'fileexists-forbidden'        => 'A file with this name already exists, and cannot be overwritten.
  If you still want to upload your file, please go back and use a new name.
@@@ -2334,8 -2322,6 +2334,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',
  'php-uploaddisabledtext'      => 'File uploads are disabled in PHP.
  Please check the file_uploads setting.',
  'uploadscripted'              => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
 +'uploadinvalidxml'            => 'The XML in the uploaded file could not be parsed.',
  'uploadvirus'                 => 'The file contains a virus!
  Details: $1',
  'uploadjava'                  => 'The file is a ZIP file that contains a Java .class file.
@@@ -2363,7 -2348,7 +2363,7 @@@ Uploading Java files is not allowed bec
  'watchthisupload'             => 'Watch this file',
  'filewasdeleted'              => 'A file of this name has been previously uploaded and subsequently deleted.
  You should check the $1 before proceeding to upload it again.',
 -'filename-bad-prefix'         => "The name of the file you are uploading begins with '''\"\$1\"''', which is a non-descriptive name typically assigned automatically by digital cameras.
 +'filename-bad-prefix'         => "The name of the file you are uploading begins with <strong>\"\$1\"</strong>, which is a non-descriptive name typically assigned automatically by digital cameras.
  Please choose a more descriptive name for your file.",
  'filename-prefix-blacklist'   => ' #<!-- leave this line exactly as it is --> <pre>
  # Syntax is as follows:
@@@ -2421,7 -2406,7 +2421,7 @@@ If the problem persists, contact an [[S
  '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-readonly'      => 'The storage backend "$1" is currently read-only. The reason given is: "<em>$2</em>"',
  '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".',
@@@ -2573,24 -2558,24 +2573,24 @@@ Maybe you want to edit the description 
  # File reversion
  'filerevert'                => 'Revert $1',
  'filerevert-legend'         => 'Revert file',
 -'filerevert-intro'          => "You are about to revert the file '''[[Media:$1|$1]]''' to the [$4 version as of $3, $2].",
 +'filerevert-intro'          => "You are about to revert the file <strong>[[Media:$1|$1]]</strong> to the [$4 version as of $3, $2].",
  'filerevert-comment'        => 'Reason:',
  'filerevert-defaultcomment' => 'Reverted to version as of $2, $1',
  'filerevert-submit'         => 'Revert',
 -'filerevert-success'        => "'''[[Media:$1|$1]]''' has been reverted to the [$4 version as of $3, $2].",
 +'filerevert-success'        => "<strong>[[Media:$1|$1]]</strong> has been reverted to the [$4 version as of $3, $2].",
  'filerevert-badversion'     => 'There is no previous local version of this file with the provided timestamp.',
  
  # File deletion
  'filedelete'                   => 'Delete $1',
  'filedelete-legend'            => 'Delete file',
 -'filedelete-intro'             => "You are about to delete the file '''[[Media:$1|$1]]''' along with all of its history.",
 -'filedelete-intro-old'         => "You are deleting the version of '''[[Media:$1|$1]]''' as of [$4 $3, $2].",
 +'filedelete-intro'             => "You are about to delete the file <strong>[[Media:$1|$1]]</strong> along with all of its history.",
 +'filedelete-intro-old'         => "You are deleting the version of <strong>[[Media:$1|$1]]</strong> as of [$4 $3, $2].",
  'filedelete-comment'           => 'Reason:',
  'filedelete-submit'            => 'Delete',
 -'filedelete-success'           => "'''$1''' has been deleted.",
 -'filedelete-success-old'       => "The version of '''[[Media:$1|$1]]''' as of $3, $2 has been deleted.",
 -'filedelete-nofile'            => "'''$1''' does not exist.",
 -'filedelete-nofile-old'        => "There is no archived version of '''$1''' with the specified attributes.",
 +'filedelete-success'           => "<strong>$1</strong> has been deleted.",
 +'filedelete-success-old'       => "The version of <strong>[[Media:$1|$1]]</strong> as of $3, $2 has been deleted.",
 +'filedelete-nofile'            => "<strong>$1</strong> does not exist.",
 +'filedelete-nofile-old'        => "There is no archived version of <strong>$1</strong> with the specified attributes.",
  'filedelete-otherreason'       => 'Other/additional reason:',
  'filedelete-reason-otherlist'  => 'Other reason',
  'filedelete-reason-dropdown'   => '*Common delete reasons
@@@ -2700,7 -2685,6 +2700,7 @@@ It now redirects to [[$2]].'
  'ninterwikis'                     => '$1 {{PLURAL:$1|interwiki|interwikis}}',
  'nlinks'                          => '$1 {{PLURAL:$1|link|links}}',
  'nmembers'                        => '$1 {{PLURAL:$1|member|members}}',
 +'nmemberschanged'                 => '$1 â†’ $2 {{PLURAL:$2|member|members}}',
  'nrevisions'                      => '$1 {{PLURAL:$1|revision|revisions}}',
  'nviews'                          => '$1 {{PLURAL:$1|view|views}}',
  'nimagelinks'                     => 'Used on $1 {{PLURAL:$1|page|pages}}',
  '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
@@@ -2967,12 -2950,12 +2967,12 @@@ Future changes to this page and its ass
  'notvisiblerev'        => 'The last revision by a different user has been deleted',
  'watchlist-details'    => '{{PLURAL:$1|$1 page|$1 pages}} on your watchlist, not counting talk pages.',
  'wlheader-enotif'      => 'Email notification is enabled.',
 -'wlheader-showupdated' => "Pages that have been changed since you last visited them are shown in '''bold'''.",
 +'wlheader-showupdated' => "Pages that have been changed since you last visited them are shown in <strong>bold</strong>.",
  'watchmethod-recent'   => 'checking recent edits for watched pages',
  'watchmethod-list'     => 'checking watched pages for recent edits',
  'watchlistcontains'    => 'Your watchlist contains $1 {{PLURAL:$1|page|pages}}.',
  'iteminvalidname'      => 'Problem with item "$1", invalid name...',
 -'wlnote'               => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
 +'wlnote2'              => "Below are the changes in the last {{PLURAL:$1|hour|<strong>$1</strong> hours}}, as of $2, $3.",
  'wlshowlast'           => 'Show last $1 hours $2 days $3',
  'watchlist-options'    => 'Watchlist options',
  
@@@ -3035,10 -3018,9 +3035,10 @@@ Feedback and further assistance
  'exblank'                => 'page was empty',
  'delete-confirm'         => 'Delete "$1"',
  'delete-legend'          => 'Delete',
 -'historywarning'         => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
 +'historywarning'         => "<strong>Warning:</strong> 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 or transclude from the page you are about to delete.",
  'actioncomplete'         => 'Action complete',
  'actionfailed'           => 'Action failed',
  'deletedtext'            => '"$1" has been deleted.
@@@ -3109,13 -3091,13 +3109,13 @@@ See the [[Special:ProtectedPages|protec
  'protect_expiry_invalid'           => 'Expiry time is invalid.',
  'protect_expiry_old'               => 'Expiry time is in the past.',
  'protect-unchain-permissions'      => 'Unlock further protect options',
 -'protect-text'                     => "Here you may view and change the protection level for the page '''$1'''.",
 +'protect-text'                     => "Here you may view and change the protection level for the page <strong>$1</strong>.",
  'protect-locked-blocked'           => "You cannot change protection levels while blocked.
 -Here are the current settings for the page '''$1''':",
 +Here are the current settings for the page <strong>$1</strong>:",
  'protect-locked-dblock'            => "Protection levels cannot be changed due to an active database lock.
 -Here are the current settings for the page '''$1''':",
 +Here are the current settings for the page <strong>$1</strong>:",
  'protect-locked-access'            => "Your account does not have permission to change page protection levels.
 -Here are the current settings for the page '''$1''':",
 +Here are the current settings for the page <strong>$1</strong>:",
  'protect-cascadeon'                => "This page is currently protected because it is included in the following {{PLURAL:$1|page, which has|pages, which have}} cascading protection turned on.
  You can change this page's protection level, but it will not affect the cascading protection.",
  'protect-default'                  => 'Allow all users',
  'undelete'                     => 'View deleted pages',
  'undelete-summary'             => '', # do not translate or duplicate this message to other languages
  'undeletepage'                 => 'View and restore deleted pages',
 -'undeletepagetitle'            => "'''The following consists of deleted revisions of [[:$1|$1]]'''.",
 +'undeletepagetitle'            => "<strong>The following consists of deleted revisions of [[:$1|$1]]</strong>.",
  'viewdeletedpage'              => 'View deleted pages',
  'undeletepagetext'             => 'The following {{PLURAL:$1|page has been deleted but is|$1 pages have been deleted but are}} still in the archive and can be restored.
  The archive may be periodically cleaned out.',
  'undelete-fieldset-title'      => 'Restore revisions',
 -'undeleteextrahelp'            => "To restore the page's entire history, leave all checkboxes deselected and click '''''{{int:undeletebtn}}'''''.
 -To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click '''''{{int:undeletebtn}}'''''.",
 +'undeleteextrahelp'            => "To restore the page's entire history, leave all checkboxes deselected and click <strong><em>{{int:undeletebtn}}</em></strong>.
 +To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click <strong><em>{{int:undeletebtn}}</em></strong>.",
  'undeleterevisions'            => '$1 {{PLURAL:$1|revision|revisions}} archived',
  'undeletehistory'              => 'If you restore the page, all revisions will be restored to the history.
  If a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history.',
@@@ -3191,7 -3173,7 +3191,7 @@@ You may have a bad link, or the revisio
  'undeletedfiles'               => '{{PLURAL:$1|1 file|$1 files}} restored',
  'cannotundelete'               => 'Undelete failed:
  $1',
 -'undeletedpage'                => "'''$1 has been restored'''
 +'undeletedpage'                => "<strong>$1 has been restored</strong>
  
  Consult the [[Special:Log/delete|deletion log]] for a record of recent deletions and restorations.",
  'undelete-header'              => 'See [[Special:Log/delete|the deletion log]] for recently deleted pages.',
@@@ -3260,9 -3242,9 +3260,9 @@@ The latest block log entry is provided 
  'whatlinkshere-title'      => 'Pages that link to "$1"',
  'whatlinkshere-summary'    => '', # do not translate or duplicate this message to other languages
  'whatlinkshere-page'       => 'Page:',
 -'linkshere'                => "The following pages link to '''[[:$1]]''':",
 -'nolinkshere'              => "No pages link to '''[[:$1]]'''.",
 -'nolinkshere-ns'           => "No pages link to '''[[:$1]]''' in the chosen namespace.",
 +'linkshere'                => "The following pages link to <strong>[[:$1]]</strong>:",
 +'nolinkshere'              => "No pages link to <strong>[[:$1]]</strong>.",
 +'nolinkshere-ns'           => "No pages link to <strong>[[:$1]]</strong> in the chosen namespace.",
  'isredirect'               => 'redirect page',
  'istemplate'               => 'transclusion',
  'isimage'                  => 'file link',
@@@ -3314,7 -3296,6 +3314,7 @@@ Fill in a specific reason below (for ex
  See the [[Special:BlockList|block list]] to review blocks.',
  'ipb-blockingself'                => 'You are about to block yourself! Are you sure you want to do that?',
  'ipb-confirmhideuser'             => 'You are about to block a user with "hide user" enabled. This will suppress the user\'s name in all lists and log entries. Are you sure you want to do that?',
 +'ipb-confirmaction'               => 'If you are sure you really want to do it, please check the "{{int:ipb-confirm}}" field at the bottom.',
  'ipb-edit-dropdown'               => 'Edit block reasons',
  'ipb-unblock-addr'                => 'Unblock $1',
  'ipb-unblock'                     => 'Unblock a username or IP address',
  'contribslink'                    => 'contribs',
  'emaillink'                       => 'send email',
  'autoblocker'                     => 'Autoblocked because your IP address has been recently used by "[[User:$1|$1]]".
 -The reason given for $1\'s block is "\'\'$2\'\'"',
 +The reason given for $1\'s block is "<em>$2</em>"',
  'blocklogpage'                    => 'Block log',
  'blocklog-showlog'                => 'This user has been blocked previously.
  The block log is provided below for reference:',
@@@ -3380,8 -3361,8 +3380,8 @@@ See the [[Special:BlockList|block list]
  'range_block_disabled'            => 'The administrator ability to create range blocks is disabled.',
  '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_hide_invalid'                => 'Unable to suppress this account; it has more than {{PLURAL:$1|one edit|$1 edits}}.',
 +'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.',
@@@ -3396,12 -3377,12 +3396,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
@@@ -3436,10 -3417,10 +3436,10 @@@ You can update redirects that point to 
  If you choose not to, be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].
  You are responsible for making sure that links continue to point where they are supposed to go.
  
 -Note that the page will '''not''' be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.
 +Note that the page will <strong>not</strong> be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.
  This means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.
  
 -'''Warning!'''
 +<strong>Warning!</strong>
  This can be a drastic and unexpected change for a popular page;
  please be sure you understand the consequences of this before proceeding.",
  'movepagetext-noredirectfixer' => "Using the form below will rename a page, moving all of its history to the new name.
@@@ -3447,19 -3428,19 +3447,19 @@@ The old title will become a redirect pa
  Be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].
  You are responsible for making sure that links continue to point where they are supposed to go.
  
 -Note that the page will '''not''' be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.
 +Note that the page will <strong>not</strong> be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.
  This means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.
  
 -'''Warning!'''
 +<strong>Warning!</strong>
  This can be a drastic and unexpected change for a popular page;
  please be sure you understand the consequences of this before proceeding.",
 -'movepagetalktext'             => "The associated talk page will be automatically moved along with it '''unless:'''
 +'movepagetalktext'             => "The associated talk page will be automatically moved along with it <strong>unless:</strong>
  *A non-empty talk page already exists under the new name, or
  *You uncheck the box below.
  
  In those cases, you will have to move or merge the page manually if desired.",
  'movearticle'                  => 'Move page:',
 -'moveuserpage-warning'         => "'''Warning:''' You are about to move a user page. Please note that only the page will be moved and the user will ''not'' be renamed.",
 +'moveuserpage-warning'         => "<strong>Warning:</strong> You are about to move a user page. Please note that only the page will be moved and the user will <em>not</em> be renamed.",
  'movenologintext'              => 'You must be a registered user and [[Special:UserLogin|logged in]] to move a page.',
  'movenotallowed'               => 'You do not have permission to move pages.',
  'movenotallowedfile'           => 'You do not have permission to move files.',
  'move-watch'                   => 'Watch source page and target page',
  'movepagebtn'                  => 'Move page',
  'pagemovedsub'                 => 'Move succeeded',
 -'movepage-moved'               => '\'\'\'"$1" has been moved to "$2"\'\'\'',
 +'movepage-moved'               => '<strong>"$1" has been moved to "$2"</strong>',
  'movepage-moved-redirect'      => 'A redirect has been created.',
  'movepage-moved-noredirect'    => 'The creation of a redirect has been suppressed.',
  'articleexists'                => 'A page of that name already exists, or the name you have chosen is not valid.
@@@ -3510,9 -3491,9 +3510,9 @@@ cannot move a page over itself.'
  'imageinvalidfilename'         => 'The target filename is invalid',
  'fix-double-redirects'         => 'Update any redirects that point to the original title',
  'move-leave-redirect'          => 'Leave a redirect behind',
 -'protectedpagemovewarning'     => "'''Warning:''' This page has been protected so that only users with administrator privileges can move it.
 +'protectedpagemovewarning'     => "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can move it.
  The latest log entry is provided below for reference:",
 -'semiprotectedpagemovewarning' => "'''Note:''' This page has been protected so that only registered users can move it.
 +'semiprotectedpagemovewarning' => "<strong>Note:</strong> This page has been protected so that only registered users can move it.
  The latest log entry is provided below for reference:",
  'move-over-sharedrepo'         => '== File exists ==
  [[:$1]] exists on a shared repository. Moving a file to this title will override the shared file.',
@@@ -3531,7 -3512,7 +3531,7 @@@ In the latter case you can also use a l
  'exportall'         => 'Export all pages',
  'exportcuronly'     => 'Include only the current revision, not the full history',
  'exportnohistory'   => "----
 -'''Note:''' Exporting the full history of pages through this form has been disabled due to performance reasons.",
 +<strong>Note:</strong> Exporting the full history of pages through this form has been disabled due to performance reasons.",
  'exportlistauthors' => 'Include a full list of contributors for each page',
  'export-submit'     => 'Export',
  'export-addcattext' => 'Add pages from category:',
  'allmessagescurrent'            => 'Current message text',
  'allmessagestext'               => 'This is a list of system messages available in the MediaWiki namespace.
  Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
 -'allmessagesnotsupportedDB'     => "This page cannot be used because '''\$wgUseDatabaseMessages''' has been disabled.",
 +'allmessagesnotsupportedDB'     => "This page cannot be used because <strong>\$wgUseDatabaseMessages</strong> has been disabled.",
  'allmessages-filter-legend'     => 'Filter',
  'allmessages-filter'            => 'Filter by customization state:',
  'allmessages-filter-unmodified' => 'Unmodified',
  'allmessages-prefix'            => 'Filter by prefix:',
  'allmessages-language'          => 'Language:',
  'allmessages-filter-submit'     => 'Go',
 +'allmessages-filter-translate'  => 'Translate',
  
  # Thumbnails
  'thumbnail-more'           => 'Enlarge',
@@@ -3614,7 -3594,7 +3614,7 @@@ The file was only partially uploaded.'
  A temporary folder is missing.',
  'import-parse-failure'       => 'XML import parse failure',
  'import-noarticle'           => 'No page to import!',
- 'import-nonewrevisions'      => 'All revisions were previously imported.',
+ 'import-nonewrevisions'      => 'No revisions imported (all were either already present, or skipped due to errors).',
  'xml-error-string'           => '$1 at line $2, col $3 (byte $4): $5',
  'import-upload'              => 'Upload XML data',
  'import-token-mismatch'      => 'Loss of session data.
@@@ -3626,6 -3606,7 +3626,7 @@@ Please try again.'
  'import-error-special'       => 'Page "$1" is not imported because it belongs to a special namespace that does not allow pages.',
  'import-error-invalid'       => 'Page "$1" is not imported because its name is invalid.',
  'import-error-unserialize'   => 'Revision $2 of page "$1" could not be unserialized. The revision was reported to use content model $3 serialized as $4.',
+ 'import-error-bad-location'  => 'Revision $2 using content model $3 can not be stored on "$1" on this wiki, since that model is not supported on that page.',
  'import-options-wrong'       => 'Wrong {{PLURAL:$2|option|options}}: <nowiki>$1</nowiki>',
  'import-rootpage-invalid'    => 'Given root page is an invalid title.',
  'import-rootpage-nosubpage'  => 'Namespace "$1" of the root page does not allow subpages.',
  'accesskey-pt-watchlist'                => 'l', # do not translate or duplicate this message to other languages
  'accesskey-pt-mycontris'                => 'y', # do not translate or duplicate this message to other languages
  'accesskey-pt-login'                    => 'o', # do not translate or duplicate this message to other languages
 -'accesskey-pt-anonlogin'                => 'o', # do not translate or duplicate this message to other languages
  'accesskey-pt-logout'                   => '', # do not translate or duplicate this message to other languages
  'accesskey-ca-talk'                     => 't', # do not translate or duplicate this message to other languages
  'accesskey-ca-edit'                     => 'e', # do not translate or duplicate this message to other languages
  'tooltip-pt-watchlist'                => 'A list of pages you are monitoring for changes',
  'tooltip-pt-mycontris'                => 'A list of your contributions',
  'tooltip-pt-login'                    => 'You are encouraged to log in; however, it is not mandatory',
 -'tooltip-pt-anonlogin'                => 'You are encouraged to log in; however, it is not mandatory',
  'tooltip-pt-logout'                   => 'Log out',
  'tooltip-ca-talk'                     => 'Discussion about the content page',
  'tooltip-ca-edit'                     => 'You can edit this page. Please use the preview button before saving',
@@@ -3839,7 -3822,7 +3840,7 @@@ This is probably caused by a link to a 
  'spam_blanking'       => 'All revisions contained links to $1, blanking',
  'spam_deleting'       => 'All revisions contained links to $1, deleting',
  'simpleantispam-label' => "Anti-spam check.
 -Do '''NOT''' fill this in!",
 +Do <strong>NOT</strong> fill this in!",
  
  # Info page
  'pageinfo-header'                 => '-', # do not translate or duplicate this message to other languages
@@@ -3932,9 -3915,9 +3933,9 @@@ $1'
  'nextdiff'     => 'Newer edit â†’',
  
  # Media information
 -'mediawarning'                => "'''Warning:''' This file type may contain malicious code.
 +'mediawarning'                => "<strong>Warning:</strong> This file type may contain malicious code.
  By executing it, your system may be compromised.",
 -'imagemaxsize'                => "Image size limit:<br />''(for file description pages)''",
 +'imagemaxsize'                => "Image size limit:<br /><em>(for file description pages)</em>",
  'thumbsize'                   => 'Thumbnail size:',
  'widthheight'                 => '$1 Ã— $2', # only translate this message to other languages if you have to change it
  'widthheightpage'             => '$1 Ã— $2, $3 {{PLURAL:$3|page|pages}}',
  'file-info-png-looped'        => 'looped',
  'file-info-png-repeat'        => 'played $1 {{PLURAL:$1|time|times}}',
  'file-info-png-frames'        => '$1 {{PLURAL:$1|frame|frames}}',
 -'file-no-thumb-animation'     => "'''Note: Due to technical limitations, thumbnails of this file will not be animated.'''",
 -'file-no-thumb-animation-gif' => "'''Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.'''",
 +'file-no-thumb-animation'     => "<strong>Note: Due to technical limitations, thumbnails of this file will not be animated.</strong>",
 +'file-no-thumb-animation-gif' => "<strong>Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.</strong>",
  
  # Special:NewFiles
  'newimages'             => 'Gallery of new files',
 -'imagelisttext'         => "Below is a list of '''$1''' {{PLURAL:$1|file|files}} sorted $2.",
 +'imagelisttext'         => "Below is a list of <strong>$1</strong> {{PLURAL:$1|file|files}} sorted $2.",
  'newimages-summary'     => 'This special page shows the last uploaded files.',
  'newimages-legend'      => 'Filter',
  'newimages-label'       => 'Filename (or a part of it):',
@@@ -4080,7 -4063,7 +4081,7 @@@ Others will be hidden by default
  * gpslatitude
  * gpslongitude
  * gpsaltitude',
 -'metadata-langitem'         => "'''$2:''' $1", # only translate this message to other languages if you have to change it
 +'metadata-langitem'         => "<strong>$2:</strong> $1", # only translate this message to other languages if you have to change it
  'metadata-langitem-default' => '$1', # only translate this message to other languages if you have to change it
  
  # Exif tags
@@@ -4541,7 -4524,7 +4542,7 @@@ Please check your email address for inv
  Mailer returned: $1',
  'confirmemail_invalid'      => 'Invalid confirmation code.
  The code may have expired.',
 -'confirmemail_needlogin'    => 'You need to $1 to confirm your email address.',
 +'confirmemail_needlogin'    => 'Please $1 to confirm your email address.',
  'confirmemail_success'      => 'Your email address has been confirmed.
  You may now [[Special:UserLogin|log in]] and enjoy the wiki.',
  'confirmemail_loggedin'     => 'Your email address has now been confirmed.',
@@@ -4598,9 -4581,9 +4599,9 @@@ This confirmation code will expire at $
  'scarytranscludetoolong'           => '[URL is too long]',
  
  # Delete conflict
 -'deletedwhileediting'      => "'''Warning:''' This page was deleted after you started editing!",
 +'deletedwhileediting'      => "<strong>Warning:</strong> This page was deleted after you started editing!",
  'confirmrecreate'          => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
 -: ''$2''
 +: <em>$2</em>
  Please confirm that you really want to recreate this page.",
  'confirmrecreate-noreason' => 'User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing. Please confirm that you really want to recreate this page.',
  'recreate'                 => 'Recreate',
  
  '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
@@@ -4811,7 -4794,7 +4812,7 @@@ You can also [[Special:EditWatchlist|us
  
  # Core parser functions
  'unknown_extension_tag' => 'Unknown extension tag "$1"',
 -'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' Default sort key "$2" overrides earlier default sort key "$1".',
 +'duplicate-defaultsort' => '<strong>Warning:</strong> Default sort key "$2" overrides earlier default sort key "$1".',
  
  # Special:Version
  'version'                               => 'Version',
  'version-parser-function-hooks'         => 'Parser function hooks',
  'version-hook-name'                     => 'Hook name',
  'version-hook-subscribedby'             => 'Subscribed by',
 -'version-version'                       => '(Version $1)',
 -'version-svn-revision'                  => '(r$2)', # only translate this message to other languages if you have to change it
 -'version-license'                       => 'License',
 -'version-poweredby-credits'             => "This wiki is powered by '''[https://www.mediawiki.org/ MediaWiki]''', copyright Â© 2001-$1 $2.",
 +'version-version'                       => '($1)',
 +'version-svn-revision'                  => 'r$1', # only translate this message to other languages if you have to change it
 +'version-license'                       => 'MediaWiki License',
 +'version-license-title'                 => 'License for $1',
 +'version-license-not-found'             => 'No detailed license information was found for this extension.',
 +'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 <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright Â© 2001-$1 $2.",
  'version-poweredby-others'              => 'others',
  'version-poweredby-translators'         => 'translatewiki.net translators',
  'version-credits-summary'               => 'We would like to recognize the following persons for their contribution to [[Special:Version|MediaWiki]].',
@@@ -4855,13 -4828,6 +4856,13 @@@ You should have received [{{SERVER}}{{S
  'version-software'                      => 'Installed software',
  'version-software-product'              => 'Product',
  'version-software-version'              => 'Version',
 +'version-db-mysql-url'                  => 'http://www.mysql.com/', # do not translate or duplicate this message to other languages
 +'version-db-mariadb-url'                => 'http://mariadb.org/', # do not translate or duplicate this message to other languages
 +'version-db-percona-url'                => 'http://www.percona.com/software/percona-server', # do not translate or duplicate this message to other languages
 +'version-db-postgres-url'               => 'http://www.postgresql.org/', # do not translate or duplicate this message to other languages
 +'version-db-oracle-url'                 => 'http://www.oracle.com/database/', # do not translate or duplicate this message to other languages
 +'version-db-sqlite-url'                 => 'http://www.sqlite.org/', # do not translate or duplicate this message to other languages
 +'version-db-mssql-url'                  => 'http://www.microsoft.com/sql/', # do not translate or duplicate this message to other languages
  'version-entrypoints'                   => 'Entry point URLs',
  'version-entrypoints-header-entrypoint' => 'Entry point',
  'version-entrypoints-header-url'        => 'URL',
  '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',
  
@@@ -5110,7 -5075,6 +5111,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',
  );
@@@ -27,7 -27,6 +27,7 @@@
   * @author Boivie
   * @author Brest
   * @author BrokenArrow
 + * @author Byfserag
   * @author Byrial
   * @author BáthoryPéter
   * @author Claudia Hattitten
@@@ -58,9 -57,7 +58,9 @@@
   * @author Iniquity
   * @author Iwan Novirion
   * @author Jon Harald Søby
 + * @author Joseph
   * @author Karduelis
 + * @author Kazu89
   * @author Kghbln
   * @author Kizito
   * @author Klenje
@@@ -81,7 -78,6 +81,7 @@@
   * @author Matma Rex
   * @author MaxSem
   * @author McDutchie
 + * @author MegaAlex
   * @author Meno25
   * @author Metalhead64
   * @author MichaelFrey
   * @author PhiLiP
   * @author Piangpha
   * @author Platonides
 + * @author PleaseStand
   * @author Prima klasy4na
   * @author Prometheus.pyrphoros
   * @author Psubhashish
   * @author Sp5uhe
   * @author Srhat
   * @author Subhashkataria21.90
 + * @author TMg
   * @author Tedjuh10
   * @author Tgr
   * @author The Evil IP address
@@@ -181,8 -175,11 +181,8 @@@ Offers user to use alternative represen
  This is the toolbar: [[Image:Toolbar.png]]",
  'tog-editondblclick' => "{{Gender}}
  [[Special:Preferences]], tab 'Edit'. Offers user to open edit page on double click.",
 -'tog-editsection' => "[[Special:Preferences]], tab 'Edit'. Offers user to add links in sub headings for editing sections. {{Gender}}",
  'tog-editsectiononrightclick' => "{{Gender}}
  [[Special:Preferences]], tab 'Edit'. Offers user to edit a section by clicking on a section title.",
 -'tog-showtoc' => "[[Special:Preferences]], tab 'Misc'.
 -Offers user to show a table of contents automatically if a page has more than 3 headings (= 4 or more headings).",
  'tog-rememberpassword' => "{{Gender}}
  [[Special:Preferences]], tab 'User profile', section 'Change password'. Offers user remember login details.
  Parameters:
  'tog-minordefault' => "[[Special:Preferences]], tab 'Edit'. Offers user to mark all edits minor by default.  {{Gender}}",
  'tog-previewontop' => 'Toggle option used in [[Special:Preferences]]. {{Gender}}',
  'tog-previewonfirst' => 'Toggle option used in [[Special:Preferences]]. {{Gender}}',
 -'tog-nocache' => "[[Special:Preferences]], tab 'Misc.'. Offers the user the option of disabling caching of pages in the browser. {{Gender}}",
  'tog-enotifwatchlistpages' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}',
  'tog-enotifusertalkpages' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}',
  'tog-enotifminoredits' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}
@@@ -1294,8 -1292,8 +1294,8 @@@ See example: [[Special:UserLogin]]'
  
  See also:
  * {{msg-mw|Login}}
 -* {{msg-mw|Accesskey-pt-anonlogin}}
 -* {{msg-mw|Tooltip-pt-anonlogin}}
 +* {{msg-mw|Accesskey-pt-login}}
 +* {{msg-mw|Tooltip-pt-login}}
  {{Identical|Log in}}",
  'nav-login-createaccount' => "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg-mw|login}} is shown.
  {{Identical|Log in / create account}}",
@@@ -1331,6 -1329,7 +1331,6 @@@ See example: [[Special:UserLogin]]'
  {{Identical|Create an account}}',
  'createaccount' => 'Used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
  
 -It is also used on the submit button in the form/special page where you register a new account.
  {{doc-special|CreateAccount}}
  {{Identical|Create account}}',
  'gotaccount' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameter:
  'gotaccountlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.
  {{Identical|Log in}}',
  'userlogin-resetlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.',
 -'userlogin-resetpassword-link' => 'Used as link text on login form.
 +'userlogin-resetpassword-link' => 'Used as link text in the login form.
  
 -The link points to the local [[Special:PasswordReset]].
 +The link points to the local page [[Special:PasswordReset]].
  
  See example: [[Special:UserLogin]]
  
@@@ -1479,7 -1478,6 +1479,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}}',
@@@ -1555,7 -1553,7 +1555,7 @@@ Parameters
  * $3 - a password (randomly generated)
  * $4 - a URL to the wiki ('<' + server name + script name + '>')
  * $5 - (Unused) number of days to password expiry date",
 -'login-throttled' => 'Error message shown at [[Special:UserLogin]] after the user has tried to login with incorrect password too many times; also used by [[Special:ChangeEmail]] and [[Special:ChangePassword]].
 +'login-throttled' => 'Error message shown at [[Special:UserLogin]] after the user has tried to login with incorrect password too many times.
  
  The user has to wait a certain time before trying to log in again.
  
@@@ -1572,9 -1570,7 +1572,9 @@@ 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.
 +{{identical|Login throttled}}',
  '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}}.
@@@ -1597,39 -1593,13 +1597,39 @@@ Used on the account creation form when 
  'resetpass_header' => 'Header on box on special page [[Special:ChangePassword]].
  
  {{Identical|Reset password}}',
 -'oldpassword' => "Used on the 'User profile' tab of 'my preferences'. This is the text next to an entry box for the old password in the 'change password' section.",
 +'oldpassword' => "Used on the 'User profile' tab of 'my preferences'. This is the text next to an entry box for the old password in the 'change password' section.
 +{{Identical|Old password}}",
  'newpassword' => '{{Identical|New password}}',
  'retypenew' => "Appears on the 'User profile' tab of the 'Preferences' special page in the 'Change password' section. It appears next to the text box for entering the new password a second time.",
  'resetpass_submit' => 'Submit button on [[Special:ChangePassword]]',
  'changepassword-success' => 'Used in [[Special:ChangePassword]].',
 +'changepassword-throttled' => 'Error message shown at [[Special:ChangePassword]] after the user has tried to login with incorrect password too many times.
 +
 +The user has to wait a certain time before trying to log in again.
 +
 +Parameters:
 +* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:
 +** {{msg-mw|Duration-millennia}}
 +** {{msg-mw|Duration-centuries}}
 +** {{msg-mw|Duration-decades}}
 +** {{msg-mw|Duration-years}}
 +** {{msg-mw|Duration-weeks}}
 +** {{msg-mw|Duration-days}}
 +** {{msg-mw|Duration-hours}}
 +** {{msg-mw|Duration-minutes}}
 +** {{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]].
 +This message is used in html.
 +
 +See also:
 +* {{msg-mw|Changeemail-throttled}}',
  'resetpass_forbidden' => "Used as error message in changing password. Maybe the external auth plugin won't allow local password changes.",
 -'resetpass-no-info' => 'Error message for [[Special:ChangePassword]].',
 +'resetpass-no-info' => 'Error message for [[Special:ChangePassword]].
 +
 +Parameters:
 +* $1 (unused) - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
  'resetpass-submit-loggedin' => 'Button on [[Special:ResetPass]] to submit new password.
  
  {{Identical|Change password}}',
@@@ -1700,10 -1670,7 +1700,10 @@@ See also
  'changeemail' => 'Title of [[Special:ChangeEmail|special page]].',
  'changeemail-header' => 'Header on [[Special:ChangeEmail]].',
  'changeemail-text' => 'Text of [[Special:ChangeEmail]].',
 -'changeemail-no-info' => 'Error message for [[Special:ChangeEmail]].',
 +'changeemail-no-info' => 'Error message for [[Special:ChangeEmail]].
 +
 +Parameters:
 +* $1 (unused) - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
  'changeemail-oldemail' => 'Label for e-mail address field in [[Special:ChangeEmail]].',
  'changeemail-newemail' => 'Label for e-mail address field in [[Special:ChangeEmail]].',
  'changeemail-none' => "Probably appears in 'Current E-mail address' field when no address held, in [[Special:ChangeEmail]].
  'changeemail-cancel' => 'Cancel button on [[Special:ChangeEmail]]
  
  {{Identical|Cancel}}',
 +'changeemail-throttled' => 'Error message shown at [[Special:ChangeEmail]] after the user has tried to login with incorrect password too many times.
 +
 +The user has to wait a certain time before trying to log in again.
 +
 +Parameters:
 +* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:
 +** {{msg-mw|Duration-millennia}}
 +** {{msg-mw|Duration-centuries}}
 +** {{msg-mw|Duration-decades}}
 +** {{msg-mw|Duration-years}}
 +** {{msg-mw|Duration-weeks}}
 +** {{msg-mw|Duration-days}}
 +** {{msg-mw|Duration-hours}}
 +** {{msg-mw|Duration-minutes}}
 +** {{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]].
 +This message is used in html.
 +
 +See also:
 +* {{msg-mw|Changepassword-throttled}}',
  
  # Special:ResetTokens
  'resettokens' => '{{doc-special|ResetTokens}}
@@@ -1839,8 -1784,7 +1839,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}}
@@@ -1917,14 -1861,10 +1917,14 @@@ See also
  {{Identical|Login required}}',
  'loginreqlink' => 'Take a look on inflection. Used as <code>$1</code> in the following messages:
  * {{msg-mw|loginreqpagetext}}
 +* {{msg-mw|exception-nologin-text-manual}}
  * {{msg-mw|whitelistedittext}}
  * {{msg-mw|Uploadnologintext}}
 -* {{msg-mw|watchlistanontext‎}}
 -* {{msg-mw|Confirmemail needlogin}}
 +* {{msg-mw|watchlistanontext}}
 +* {{msg-mw|confirmemail_needlogin}}
 +* {{msg-mw|changeemail-no-info}}
 +* {{msg-mw|resetpass-no-info}}
 +* {{msg-mw|prefsnologintext2}}
  {{Identical|Log in}}',
  'loginreqpagetext' => 'This message is displayed if an anonymous reader attempts to access a page which is only available to logged-in users.
  
@@@ -2060,7 -2000,7 +2060,7 @@@ Parameters
  'semiprotectedpagewarning' => '{{Related|Semiprotectedpagewarning}}',
  'cascadeprotectedwarning' => 'Parameters:
  * $1 - number of pages, for PLURAL support',
 -'titleprotectedwarning' => 'Warning message above the edit form when editing a page that has been protected aginst creation.',
 +'titleprotectedwarning' => 'Warning message above the edit form when editing a page that has been protected against creation.',
  'templatesused' => 'Displayed below the page when editing it. It indicates a list of templates which are used on that page.
  
  Parameters:
@@@ -2182,10 -2122,6 +2182,10 @@@ Parameters
  'editwarning-warning' => "{{doc-important|Do ''not'' use <nowiki>{{int:prefs-editing}}</nowiki> for \"Editing\". It is forbidden in this message, see [[mwr:68405]].}}
  
  but you can see the text of that button here: {{msg-mw|Prefs-editing}}",
 +'editpage-notsupportedcontentformat-title' => 'Title of error page shown when using an incompatible format on EditPage',
 +'editpage-notsupportedcontentformat-text' => 'Error message shown when using an incompatible format on EditPage. Parameters:
 +* $1 - the format id
 +* $2 - the content model name',
  
  # Content models
  'content-model-wikitext' => 'Name for the wikitext content model, used when decribing what type of content a page contains.
@@@ -2315,17 -2251,10 +2315,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',
@@@ -2958,7 -2887,6 +2958,7 @@@ Parameters
  * \$1 - a link to the redirect to the page (so, \$1 is the page that the search result is redirected '''from''')",
  'search-section' => 'This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that section is more relevant than the rest of the page. $1 is a section title.
  {{Identical|Section}}',
 +'search-file-match' => 'This text will be shown on the search result listing after the page title of a result if the search engine got search results from the contents of files, rather than the pages.',
  'search-suggest' => 'Used for "Did you mean" suggestions:
  * $1 - suggested link',
  'search-interwiki-caption' => 'Used in [[Special:Search]], when showing search results from other wikis.',
@@@ -3090,6 -3018,7 +3090,6 @@@ When changing this message, please als
  'searchresultshead' => 'Replaced by {{msg-mw|prefs-searchoptions}}, though may still be used in some extensions. DEPRECATED.
  
  {{Identical|Search}}',
 -'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
  'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
  'stub-threshold-disabled' => 'Used in [[Special:Preferences]].
  {{Identical|Disabled}}',
@@@ -3284,7 -3213,6 +3284,7 @@@ Used in [[Special:Preferences]], tab "W
  The checkbox has the label {{msg-mw|Tog-prefershttps}}.
  
  See example: [[mw:Special:Preferences]].',
 +'prefs-tabs-navigation-hint' => 'Hint message that explains the arrow key navigation for the tabs on [[Special:Preferences]] to screenreader users.',
  
  # User preference: email validation using jQuery
  'email-address-validity-valid' => 'Used as hint for {{msg-mw|changeemail-newemail}} field in [[Special:ChangeEmail]], when the provided E-mail address is valid.',
@@@ -3652,11 -3580,8 +3652,11 @@@ 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.',
 +'recentchanges-legend-plusminus' => '{{optional}}
 +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.
  
  The corresponding message is {{msg-mw|Rclistfrom}} (without split of date and time, [[bugzilla:19104|Bug 19104]]).
@@@ -4091,14 -4016,7 +4091,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',
@@@ -4920,19 -4838,7 +4920,19 @@@ See also
  Parameters:
  * $1 - the number of interwiki links",
  'nlinks' => 'This appears in brackets after each entry on the special page [[Special:MostLinked]]. $1 is the number of wiki links.',
 -'nmembers' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]]. $1 is the number of members of the category.',
 +'nmembers' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]].
 +
 +Parameters:
 +* $1 - the number of members of the category
 +See also:
 +* {{msg-mw|Nmemberschanged}}',
 +'nmemberschanged' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]] if the number of pages in the category has changed since the list was last refreshed.
 +
 +Parameters:
 +* $1 - the original number of members of the category
 +* $2 - the current one
 +See also:
 +* {{msg-mw|Nmembers}}',
  'nrevisions' => 'Used as link text in [[Special:FewestRevisions]].
  
  The link points to the page history (action=history).
@@@ -4999,8 -4905,6 +4999,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.',
@@@ -5039,7 -4943,7 +5039,7 @@@ See also
  See also:
  * {{msg-mw|Notargettitle|title}}
  * {{msg-mw|Notargettext|text}}',
 -'nopagetitle' => 'Used as title of [[Special:MovePage]], when the oldtitle does not exist.
 +'nopagetitle' => 'Used as title on special pages like [[Special:MovePage]] (when the oldtitle does not exist) or [[Special:PermaLink]].
  
  The text is {{msg-mw|nopagetext}}.
  
@@@ -5133,8 -5037,7 +5133,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")',
@@@ -5464,12 -5367,13 +5464,12 @@@ See also
  * {{msg-mw|Watchlist-details}}',
  'iteminvalidname' => 'Parameters:
  * $1 - item name',
 -'wlnote' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
 +'wlnote2' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
  
  Parameters:
 -* $1 - the number of changes shown
 -* $2 - the number of hours for which the changes are shown
 -* $3 - a date alone
 -* $4 - a time alone',
 +* $1 - the number of hours for which the changes are shown
 +* $2 - a date alone
 +* $3 - a time alone',
  'wlshowlast' => 'Appears on [[Special:Watchlist]]. Parameters:
  * $1 - a choice of different numbers of hours ("1 | 2 | 6 | 12")
  * $2 - a choice of different numbers of days ("1 | 3 | 7")
@@@ -5658,7 -5562,6 +5658,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 at least one link to it or is transcluded in at least one page.',
  
  # Rollback
  'rollback' => '{{Identical|Rollback}}',
@@@ -6294,7 -6197,7 +6294,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]].
@@@ -6640,8 -6543,7 +6640,8 @@@ See also
  * {{msg-mw|Ip range toolarge}}',
  'ipb_expiry_invalid' => 'Used as error message in [[Special:Block]].',
  'ipb_expiry_temp' => 'Warning message displayed on [[Special:BlockIP]] if the option "hide username" is selected but the expiry time is not infinite.',
 -'ipb_hide_invalid' => 'Used as error message in [[Special:Block]].',
 +'ipb_hide_invalid' => 'Used as error message in [[Special:Block]].
 +* $1 - Number of edits (Value of [[mw:Manual:$wgHideUserContribLimit]])',
  'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
  'ipb-needreblock' => 'Used in [[Special:Block]].
  * $1 - target username',
@@@ -7191,7 -7093,6 +7191,7 @@@ See also
  'allmessages-filter-submit' => 'Used on [[Special:Allmessages]].
  
  {{Identical|Go}}',
 +'allmessages-filter-translate' => 'Used on [[Special:Allmessages]]. Label for a link to translatewiki.net for a message to translate.',
  
  # Thumbnails
  'thumbnail-more' => '[[Image:Yes.png|thumb|This:]]
@@@ -7378,7 -7279,8 +7378,8 @@@ See also
  See also:
  * {{msg-mw|Import-noarticle}}
  * {{msg-mw|Importbadinterwiki}}',
- 'import-nonewrevisions' => 'Used in [[Special:Import]].',
+ 'import-nonewrevisions' => 'Used in [[Special:Import]] to indicate that no revisions were imported.
+ This may be due to the revisions already being present, or to errors when importing them.',
  'xml-error-string' => 'Parameters:
  * $1 - Some kind of message, perhaps name of the error?
  * $2 - line number
@@@ -7426,6 -7328,17 +7427,17 @@@ Parameters
  
  This may happen if the content got corrupted or the serialization format is mis-reported.
  
+ Parameters:
+ * $1 - the name of the page the offending revision belongs to
+ * $2 - the ID of the offending revision, as reported in the dump that is being imported
+ * $3 - the content model reported for the offending revision in the dump that is being imported
+ * $4 - the serialization format reported for the offending revision in the dump that is being imported
+ {{Related|Import-error}}',
+ 'import-error-bad location' => 'Import error message displayed when trying to import a page to a title that is not allowed for this kind of content on this wiki.
+ This may happen for content models bound to specific namespaces or title patterns, if the configuration of the allowed namespaces
+ or titles differs from the configuration on the source wiki.
  Parameters:
  * $1 - the name of the page the offending revision belongs to
  * $2 - the ID of the offending revision, as reported in the dump that is being imported
@@@ -7528,6 -7441,12 +7540,6 @@@ See also
  * {{msg-mw|Accesskey-pt-mycontris}}
  * {{msg-mw|Tooltip-pt-mycontris}}',
  'tooltip-pt-login' => "Tooltip shown when hovering over the link 'Log in / create account' in the upper right corner show on all pages while not logged in.",
 -'tooltip-pt-anonlogin' => 'Used as tooltip for link {{msg-mw|Login}} in your personal toolbox (upper right side).
 -
 -See also:
 -* {{msg-mw|Login}}
 -* {{msg-mw|Accesskey-pt-anonlogin}}
 -* {{msg-mw|Tooltip-pt-anonlogin}}',
  'tooltip-pt-logout' => 'Tooltip shown when hovering over the {{msg-mw|Logout}} link in your personal toolbox (upper right side).
  
  See also:
@@@ -8055,8 -7974,7 +8067,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.
  
@@@ -8081,8 -7999,7 +8093,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]',
@@@ -8091,8 -8008,7 +8103,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]',
@@@ -8151,8 -8067,7 +8163,8 @@@ See also
  # Skin names
  'skinname-cologneblue' => '{{optional}}',
  'skinname-monobook' => '{{optional}}',
 -'skinname-modern' => '{{optional}}',
 +'skinname-modern' => '{{optional}}
 +{{Identical|Modern}}',
  'skinname-vector' => '{{optional}}',
  
  # Patrolling
@@@ -9498,9 -9413,7 +9510,9 @@@ See also
  * {{msg-mw|Confirmemail oncreate}}',
  'confirmemail_invalid' => 'Error message on [[Special:ConfirmEmail]] on error of confirmation.',
  'confirmemail_needlogin' => 'Used on [[Special:ConfirmEmail]] when you are logged out.
 -* $1 is a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
 +
 +Parameters:
 +* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
  'confirmemail_success' => 'Explanation on [[Special:ConfirmEmail]] on completion of confirmation.',
  'confirmemail_loggedin' => 'Explanation on [[Special:ConfirmEmail]] on completion of confirmation.',
  'confirmemail_subject' => 'Subject of the e-mail sent to user during e-mail address confirmation
@@@ -9605,9 -9518,7 +9617,9 @@@ Most languages use a space, but some As
  'percent' => '{{optional}}',
  'parentheses' => '{{optional}}',
  'brackets' => '{{Optional}}',
 -'quotation-marks' => 'Quotation marks, for quoting, sometimes titles etc., depending on the language.
 +'quotation-marks' => '{{optional}}
 +
 +Quotation marks, for quoting, sometimes titles etc., depending on the language.
  
  See: [[w:Non-English usage of quotation marks|Non-English usage of quotation marks on Wikipedia]].
  
@@@ -9992,50 -9903,18 +10004,50 @@@ This message is followed by the list o
  'version-parser-function-hooks' => 'Shown in [[Special:Version]]',
  'version-hook-name' => 'Shown in [[Special:Version]]',
  'version-hook-subscribedby' => 'Shown in [[Special:Version]]',
 -'version-version' => 'Used in [[Special:Version]].
 -
 -Preceded by the MediaWiki extension name.
 +'version-version' => '{{Optional}}
 +Used in [[Special:Version]]. Preceded by the MediaWiki extension name.
  
  Parameters:
 -* $1 - version number of the extension
 -{{Identical|Version}}',
 +* $1 - version number of the extension',
  'version-svn-revision' => '{{Identical|Revision}}{{optional}}
  Used in [[Special:Version]], preceeding the Subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345"). Parameters:
  * $1 - (Unused) directory revision number or empty string
  * $2 - checkout revision number',
 -'version-license' => '{{Identical|License}}',
 +'version-license' => 'Used specifically for the MediaWiki software.
 +
 +Used as heading in [[Special:Version]].',
 +'version-ext-license' => "Used in [[Special:Version]].
 +
 +Used as label for the link pointing to the extension's license page. e.g. [[Special:Version/License/Maps]]
 +{{Identical|License}}",
 +'version-ext-colheader-name' => 'Column header for the name of an extension.
 +{{Identical|Extension}}',
 +'version-ext-colheader-version' => 'Column header for describing an extensions version.
 +{{Identical|Version}}',
 +'version-ext-colheader-license' => 'Column header for describing an extensions license.
 +{{Identical|License}}',
 +'version-ext-colheader-description' => 'Column header for the description of an extension.
 +{{Identical|Description}}',
 +'version-ext-colheader-credits' => 'Column header for the list of authors and credits for an extension.
 +{{Identical|Author}}',
 +'version-license-title' => 'Page title for an extended license for a piece of software.
 +
 +Used as page title for the license page. e.g. [[Special:Version/License/Maps]].
 +
 +Parameters:
 +* $1 - the name of software',
 +'version-license-not-found' => 'Descriptive error used when detailed license text for a piece of software is not found.
 +
 +See example: [[Special:Version/License/Foo]]',
 +'version-credits-title' => 'Page title for an about/credits page for a MediaWiki extension.
 +
 +Used as heading in credits page. e.g. [[Special:Version/Credits]] and [[Special:Version/Credits/UniversalLanguageSelector]]
 +
 +Parameters:
 +* $1 - the name of the extension',
 +'version-credits-not-found' => 'Descriptive error used when detailed about/credits for an extension are not available.
 +
 +See example: [[Special:Version/Credits/Foo]]',
  'version-poweredby-credits' => 'Message shown on [[Special:Version]]. Parameters:
  * $1 - the current year
  * $2 - a list of selected MediaWiki authors',
@@@ -10064,7 -9943,7 +10076,7 @@@ A short description of the script path 
  
  # 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'''\".",
@@@ -10136,7 -10012,7 +10148,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}}',
@@@ -10160,7 -10036,7 +10172,7 @@@ See definition of [[w:Regular_expressio
  # Special:Tags
  'tags' => "Shown on [[Special:Specialpages]] for page listing the tags that the software may mark an edit with, and their meaning. For more information on tags see [[mw:Manual:Tags|MediaWiki]].
  
 -It appears that the word 'valid' describes 'tags', not 'change'. It also appears that you could use the term 'defined' instead of 'valid', or perhaps use a phrase meaning 'Change tags in use'.",
 +It appears that the word 'valid' describes 'tags', not 'change'. It also appears that you could use the term 'defined' instead of 'valid', or perhaps use a phrase meaning 'The change tags that are in use'.",
  'tag-filter' => 'Caption of a filter shown on lists of changes (e.g. [[Special:Log]], [[Special:Contributions]], [[Special:Newpages]], [[Special:Recentchanges]], [[Special:Recentchangeslinked]], page histories)',
  'tag-filter-submit' => 'Caption of the submit button displayed next to the tag filter on lists of changes (e.g. [[Special:Log]], [[Special:Contributions]], [[Special:Newpages]], [[Special:Recentchanges]], [[Special:Recentchangeslinked]], page histories)
  
@@@ -10525,7 -10401,6 +10537,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.
@@@ -10643,7 -10518,6 +10655,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]]
@@@ -10665,10 -10539,6 +10677,10 @@@ Ticked
  test
  </pre>",
  'expand_templates_generate_xml' => 'Used as checkbox label.',
 +'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
  'expand_templates_preview' => '{{Identical|Preview}}',
  
 +# Unknown messages
 +'createaccount-hook-aborted' => 'Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}',
 +'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
  );
@@@ -37,7 -37,9 +37,7 @@@ $wgMessageStructure = array
                'tog-numberheadings',
                'tog-showtoolbar',
                'tog-editondblclick',
 -              'tog-editsection',
                'tog-editsectiononrightclick',
 -              'tog-showtoc',
                'tog-rememberpassword',
                'tog-watchcreations',
                'tog-watchdefault',
@@@ -46,6 -48,7 +46,6 @@@
                'tog-minordefault',
                'tog-previewontop',
                'tog-previewonfirst',
 -              'tog-nocache',
                'tog-enotifwatchlistpages',
                'tog-enotifusertalkpages',
                'tog-enotifminoredits',
                'invalidemailaddress',
                'cannotchangeemail',
                'emaildisabled',
 +              'emailsender',
                'accountcreated',
                'accountcreatedtext',
                'createaccount-title',
                'retypenew',
                'resetpass_submit',
                'changepassword-success',
 +              'changepassword-throttled',
                'resetpass_forbidden',
                'resetpass-no-info',
                'resetpass-submit-loggedin',
                'changeemail-password',
                'changeemail-submit',
                'changeemail-cancel',
 +              'changeemail-throttled'
        ),
        'resettokens' => array(
                'resettokens',
                'invalid-content-data',
                'content-not-allowed-here',
                'editwarning-warning',
 +              'editpage-notsupportedcontentformat-title',
 +              'editpage-notsupportedcontentformat-text',
        ),
        'contentmodels' => array(
                'content-model-wikitext',
        'cantcreateaccount' => array(
                'cantcreateaccounttitle',
                'cantcreateaccount-text',
 +              'cantcreateaccount-range-text',
        ),
        'history' => array(
                'viewpagelogs',
                'search-result-score',
                'search-redirect',
                'search-section',
 +              'search-file-match',
                'search-suggest',
                'search-interwiki-caption',
                'search-interwiki-default',
                'rows',
                'columns',
                'searchresultshead',
 -              'resultsperpage',
                'stub-threshold',
                'stub-threshold-disabled',
                'recentchangesdays',
                'prefs-tokenwatchlist',
                'prefs-diffs',
                'prefs-help-prefershttps',
 +              'prefs-tabs-navigation-hint',
        ),
        'preferences-email' => array(
                'email-address-validity-valid',
                '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',
                'ninterwikis',
                'nlinks',
                'nmembers',
 +              'nmemberschanged',
                'nrevisions',
                'nviews',
                'nimagelinks',
                'protectedpages-indef',
                'protectedpages-summary',
                'protectedpages-cascade',
 +              'protectedpages-noredirect',
                'protectedpagesempty',
                'protectedtitles',
                'protectedtitles-summary',
                'watchmethod-list',
                'watchlistcontains',
                'iteminvalidname',
 -              'wlnote',
 +              'wlnote2',
                'wlshowlast',
                'watchlist-options',
        ),
                'delete-edit-reasonlist',
                'delete-toobig',
                'delete-warning-toobig',
 +              'deleting-backlinks-warning',
        ),
        'rollback' => array(
                'rollback',
                'blockipsuccesstext',
                'ipb-blockingself',
                'ipb-confirmhideuser',
 +              'ipb-confirmaction',
                'ipb-edit-dropdown',
                'ipb-unblock-addr',
                'ipb-unblock',
                'allmessages-prefix',
                'allmessages-language',
                'allmessages-filter-submit',
 +              'allmessages-filter-translate',
        ),
        'thumbnails' => array(
                'thumbnail-more',
                'import-error-special',
                'import-error-invalid',
                'import-error-unserialize',
+               'import-error-bad-location',
                'import-options-wrong',
                'import-rootpage-invalid',
                'import-rootpage-nosubpage',
                'accesskey-pt-watchlist',
                'accesskey-pt-mycontris',
                'accesskey-pt-login',
 -              'accesskey-pt-anonlogin',
                'accesskey-pt-logout',
                'accesskey-ca-talk',
                'accesskey-ca-edit',
                'tooltip-pt-watchlist',
                'tooltip-pt-mycontris',
                'tooltip-pt-login',
 -              'tooltip-pt-anonlogin',
                'tooltip-pt-logout',
                'tooltip-ca-talk',
                'tooltip-ca-edit',
                'version-version',
                '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',
 +              'version-credits-not-found',
                'version-poweredby-credits',
                'version-poweredby-others',
                'version-poweredby-translators',
                'version-software',
                'version-software-product',
                'version-software-version',
 +              'version-db-mysql-url',
 +              'version-db-mariadb-url',
 +              'version-db-percona-url',
 +              'version-db-postgres-url',
 +              'version-db-oracle-url',
 +              'version-db-sqlite-url',
 +              'version-db-mssql-url',
                'version-entrypoints',
                'version-entrypoints-header-entrypoint',
                'version-entrypoints-header-url',
                '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',
        ),
  );