Merge "Create Special:NewSection special page"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 7 Aug 2019 20:24:41 +0000 (20:24 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 7 Aug 2019 20:24:41 +0000 (20:24 +0000)
1  2 
RELEASE-NOTES-1.34
autoload.php
includes/specialpage/SpecialPageFactory.php
languages/i18n/en.json
languages/i18n/qqq.json

diff --combined RELEASE-NOTES-1.34
@@@ -36,9 -36,6 +36,9 @@@ For notes on 1.33.x and older releases
  * $wgEnableSpecialMute (T218265) - This configuration controls whether
    Special:Mute is available and whether to include a link to it on emails
    originating from Special:Email.
 +* editmyuserjsredirect user right – users without this right now cannot edit JS
 +  redirects in their userspace unless the target of the redirect is also in
 +  their userspace. By default, this right is given to everyone.
  
  ==== Changed configuration ====
  * $wgUseCdn, $wgCdnServers, $wgCdnServersNoPurge, and $wgCdnMaxAge – These four
  * Introduced $wgVerifyMimeTypeIE to allow disabling the MSIE 6/7 file type
    detection heuristic on upload, which is more conservative than the checks
    that were changed above.
 +* $wgSkipSkin — Setting this instead of $wgSkipSkins, deprecated in 1.23, is now
 +  hard-deprecated.
 +* $wgLocalInterwiki — Setting this instead of $wgLocalInterwikis, deprecated in
 +  1.23, is now hard-deprecated.
 +* $wgProfileOnly — Setting this, deprecated in 1.23, is now hard-deprecated.
 +  Instead, set the log file in $wgDebugLogGroups['profileoutput'].
 +* $wgProxyList — Setting this to an array with IP addresses in the array keys,
 +  which was deprecated in 1.30, no longer works. Instead, $wgProxyList should be
 +  an array with IP addresses as the values, or a string path to a file
 +  containing one IP address per line.
  * …
  
  ==== Removed configuration ====
  * $wgWikiDiff2MovedParagraphDetectionCutoff — If you still want a custom change
    size threshold, please specify in php.ini, using the configuration variable
    wikidiff2.moved_paragraph_detection_cutoff.
 +* $wgDebugPrintHttpHeaders - The default of including HTTP headers in the
 +  debug log channel is no longer configurable. The debug log itself remains
 +  configurable via $wgDebugLogFile.
 +* $wgPasswordSalt – This setting, used for migrating exceptionally old, insecure
 +  password setups and deprecated since 1.24, is now removed.
 +* $wgDBOracleDRCP - If you must use persistent connections, set DBO_PERSISTENT
 +  in the 'flags' field for servers in $wgDBServers (or $wgLBFactoryConf).
  
  === New user-facing features in 1.34 ===
  * Special:Mute has been added as a quick way for users to block unwanted emails
    from other users originating from Special:EmailUser.
+ * (T207577) Special:NewSection has been created as a shortcut to creating a new
+   section on a page. When linked to, its subpage is used as the target
+   ([[Special:NewSection/Test]] redirects to creating a new section in "Test").
+   Otherwise, it displays a basic interface to allow the end user to specify
+   the target manually.
  
  === New developer features in 1.34 ===
 +* The ImgAuthModifyHeaders hook was added to img_auth.php to allow modification
 +  of headers in private wikis.
  * Language::formatTimePeriod now supports the new 'avoidhours' option to output
    strings like "5 days ago" instead of "5 days 13 hours ago".
 +* (T220163) Added SpecialMuteModifyFormFields hook to allow extensions
 +  to add fields to Special:Mute.
 +* (T100896) Skin authors can define custom OOUI themes using OOUIThemePaths.
 +  See <https://www.mediawiki.org/wiki/OOUI/Themes> for details.
  
  === External library changes in 1.34 ===
  
  
  ==== Changed external libraries ====
  * Updated Mustache from 1.0.0 to v3.0.1.
 -* Updated OOUI from v0.31.3 to v0.32.1.
 +* Updated OOUI from v0.31.3 to v0.33.4.
  * Updated composer/semver from 1.4.2 to 1.5.0.
  * Updated composer/spdx-licenses from 1.4.0 to 1.5.1 (dev-only).
  * Updated mediawiki/codesniffer from 25.0.0 to 26.0.0 (dev-only).
  * Updated wikimedia/at-ease from 1.2.0 to 2.0.0.
  * Updated wikimedia/remex-html from 2.0.1 to 2.0.3.
  * Updated monolog/monolog from 1.22.1 to 1.24.0 (dev-only).
 -* Updated wikimedia/object-factory from 1.0.0 to 2.0.0.
 +* Updated wikimedia/object-factory from 1.0.0 to 2.1.0.
  * Updated wikimedia/timestamp from 2.2.0 to 3.0.0.
  * Updated wikimedia/xmp-reader from 0.6.2 to 0.6.3.
 +* Updated mediawiki/mediawiki-phan-config from 0.6.0 to 0.6.1 (dev-only).
  * …
  
  ==== Removed external libraries ====
@@@ -245,8 -223,6 +250,8 @@@ because of Phabricator reports
    specified, deprecated in 1.30, have been removed.
  * BufferingStatsdDataFactory::getBuffer(), deprecated in 1.30, has been removed.
  * The constant DB_SLAVE, deprecated in 1.28, has been removed. Use DB_REPLICA.
 +* The constants NS_IMAGE and NS_IMAGE_TALK, deprecated in 1.14, have been
 +  removed. Use NS_FILE and NS_FILE_TALK respectively.
  * Replacer, DoubleReplacer, HashtableReplacer and RegexlikeReplacer
    (deprecated in 1.32) have been removed. Closures should be used instead.
  * OutputPage::addWikiText(), ::addWikiTextWithTitle(), ::addWikiTextTitleTidy(),
    Use MediaWiki\Session\SessionManager instead.
  * The wfGetLBFactory global function, deprecated in 1.27, has been removed.
    Use MediaWikiServices::getInstance()->getDBLoadBalancerFactory().
 +* The internal method OutputPage->addScriptFile() will no longer silently drop
 +  calls that use an invalid path (i.e., something other than an absolute path,
 +  protocol-relative URL, or full scheme URL), and will instead pass them to the
 +  client where they will likely 404. This usage was deprecated in 1.24.
 +* Database::reportConnectionError, deprecated in 1.32, has been removed.
 +* APIEditBeforeSave hook, deprecated in 1.28, has been removed. Please see
 +  EditFilterMergedContent hook for an alternative way to use this feature.
 +* API module methods getDescription(), getParamDescription(), & getExamples(),
 +  all deprecated in 1.25 and ignored, have been removed.
 +* The API module method getDescriptionMessage(), deprecated in 1.30, has been
 +  removed.
 +* The JavaScript global variable wgLoadScript has been removed. Use
 +  mw.util.wikiScript( 'load' ) instead.
 +* ResourceLoader no longer creates the 'mw.legacy' placeholder object. It has
 +  been unused since 1.16 and was deprecated in 1.22. To deprecate a property
 +  in JavaScript, use mw.log.deprecate() instead.
 +* The 'user.groups' module, deprecated in 1.28, was removed.
 +  Use the 'user' module instead.
 +* The ResourceLoaderContext::expandModuleNames method, deprecated in 1.33, was
 +  removed. Use ResourceLoader::expandModuleNames instead.
 +* The ability to override User::$mRights has been removed. Use
 +  PermissionManager::addTemporaryUserRights() instead.
 +* Previously, when iterating ResultWrapper with foreach() or a similar
 +  construct, the range of the index was 1..numRows. This has been fixed to be
 +  0..(numRows-1).
 +* The ChangePasswordForm hook, deprecated in 1.27, has been removed. Use the
 +  AuthChangeFormFields hook or security levels instead.
 +* WikiMap::getWikiIdFromDomain(), deprecated in 1.33, has been removed.
 +  Use WikiMap::getWikiIdFromDbDomain() instead.
 +* The config variables $wgHtml5, $wgJsMimeType, and $wgXhtmlDefaultNamespace,
 +  which were deprecated and ignored by core since 1.22, are no longer set to any
 +  value, and SkinTemplate no longer emits a 'jsmimetype' key. Any extensions not
 +  updated since 2013 to cope with this deprecation may now break.
 +* (T222637) Passing ResourceLoaderModule objects to ResourceLoader::register()
 +  or $wgResourceModules is no longer supported.
 +  Use the 'class' or 'factory' option of the array format instead.
 +* The parameter $lang of the functions generateTOC and tocList in Linker and
 +  DummyLinker must be in type Language when present. Other types are
 +  deprecated since 1.33.
 +* The static properties mw.Api.errors and mw.Api.warnings, deprecated in 1.29,
 +  have been removed.
 +* ParserOption::getSpeculativeRevIdCallback(), deprecated in 1.28, has been
 +  removed.
 +* The UploadVerification hook, deprecated in 1.28, has been removed. Instead,
 +  use the UploadVerifyFile hook.
 +* UploadBase:: and UploadFromChunks::stashFileGetKey() and stashSession(),
 +  deprecated in 1.28, have been removed. Instead, please use the getFileKey()
 +  method on the response from doStashFile().
 +* LBFactory::setDomainPrefix() and LoadBalancer::setDomainPrefix(), deprecated
 +  in 1.33, have been removed. Use setLocalDomainPrefix() instead.
 +* IDatabase::implicitGroupby(), deprecated in 1.30, has been removed.
 +* IDatabase::doneWrites(), deprecated in 1.31, has been removed.
 +  Use IDatabase::lastDoneWrites() instead.
 +* Database::reportConnectionError(), deprecated in 1.32, has been removed.
 +* LoadBalancer::laggedSlaveUsed(), deprecated in 1.28, has been removed.
 +  Use LoadBalancer::laggedReplicaUsed() instead.
 +* Database::getProperty(), deprecated in 1.28, has been removed.
 +* IDatabase::getWikiId(), deprecated in 1.30, has been removed.
 +  Use IDatabase::getDomainID() instead.
  * …
  
  === Deprecations in 1.34 ===
    instead.
  * Sanitizer::attributeWhitelist() and Sanitizer::setupAttributeWhitelist()
    have been deprecated; they will be made private in the future.
 +* SearchResult::termMatches() method is deprecated. It was unreliable because
 +  only populated by few search engine implementations. Use
 +  SqlSearchResult::getTermMatches() if really needed.
 +* SearchResult::getTextSnippet( $terms ) the $terms param is being deprecated
 +  and should no longer be passed. Search engine implemenations should be
 +  responsible for carrying relevant information needed for highlighting with
 +  their own SearchResultSet/SearchResult sub-classes.
 +* SearchResultSet::free() method is deprecated.
 +* SearchEngine::$searchTerms protected field is deprecated. Moved to
 +  SearchDatabase.
 +* The use of the $terms param in the ShowSearchHit and ShowSearchHitTitle
 +  hooks is highly discouraged as it's only populated by SearchDatabase search
 +  engines.
 +* Skin::escapeSearchLink() is deprecated. Use Skin::getSearchLink() or the skin
 +  template option 'searchaction' instead.
 +* LoadBalancer::haveIndex() and LoadBalancer::isNonZeroLoad() have
 +  been deprecated.
 +* FileBackend::getWikiId() has been deprecated.
 +  Use FileBackend::getDomainId() instead.
 +* User::getRights() and User::$mRights have been deprecated. Use
 +  PermissionManager::getUserPermissions() instead.
 +* The LocalisationCacheRecache hook no longer allows purging of message blobs
 +  to be prevented. Modifying the $purgeBlobs parameter now has no effect.
 +* SVGMetadataExtractor::getMetadata has been deprecated. Instead, you should
 +  use SVGReader->getMetadata() directly.
 +* The following public properties on AbstractBlock are deprecated: $mReason,
 +  $mTimestamp, $mExpiry, $mHideName. Use the getters/setters instead.
 +* The following public properties on DatabaseBlock are deprecated: $mAuto,
 +  $mParentBlockId. To check for an autoblock use DatabaseBlock::getType; to
 +  check for the parent ID, use DatabaseBlock::getParentBlockId.
 +* SearchEngine::userHighlightPrefs() is deprecated, simply stop passing
 +  $contextlines and $contextchars to the SearchHighlighter methods, they will
 +  use proper defaults defined in SearchHighlighter::DEFAULT_CONTEXT_LINES and
 +  DEFAULT_CONTEXT_CHARS.
 +* SearchUpdate constructor: passing a string as the title param and or a boolean
 +  or a string as the content will produce a deprecation warning.
 +* SearchEngine::getTextFromContent() is deprecated, use getTextForSearchIndex()
 +  directly from the Content object.
 +* SearchEngine::textAlreadyUpdatedForIndex() is deprecated, given the
 +  deprecation above this method is no longer needed/called and should not be
 +  implemented by SearchEngine implementation.
  
  === Other changes in 1.34 ===
  * …
diff --combined autoload.php
@@@ -181,7 -181,6 +181,7 @@@ $wgAutoloadLocalClasses = 
        'BadTitleError' => __DIR__ . '/includes/exception/BadTitleError.php',
        'BagOStuff' => __DIR__ . '/includes/libs/objectcache/BagOStuff.php',
        'BaseDump' => __DIR__ . '/includes/export/BaseDump.php',
 +      'BaseSearchResultSet' => __DIR__ . '/includes/search/BaseSearchResultSet.php',
        'BaseTemplate' => __DIR__ . '/includes/skins/BaseTemplate.php',
        'BashkirUppercaseCollation' => __DIR__ . '/includes/collation/BashkirUppercaseCollation.php',
        'BatchRowIterator' => __DIR__ . '/includes/utils/BatchRowIterator.php',
        'ExtensionProcessor' => __DIR__ . '/includes/registration/ExtensionProcessor.php',
        'ExtensionRegistry' => __DIR__ . '/includes/registration/ExtensionRegistry.php',
        'ExternalStore' => __DIR__ . '/includes/externalstore/ExternalStore.php',
 +      'ExternalStoreAccess' => __DIR__ . '/includes/externalstore/ExternalStoreAccess.php',
        'ExternalStoreDB' => __DIR__ . '/includes/externalstore/ExternalStoreDB.php',
 +      'ExternalStoreException' => __DIR__ . '/includes/externalstore/ExternalStoreException.php',
        'ExternalStoreFactory' => __DIR__ . '/includes/externalstore/ExternalStoreFactory.php',
        'ExternalStoreHttp' => __DIR__ . '/includes/externalstore/ExternalStoreHttp.php',
        'ExternalStoreMedium' => __DIR__ . '/includes/externalstore/ExternalStoreMedium.php',
 +      'ExternalStoreMemory' => __DIR__ . '/includes/externalstore/ExternalStoreMemory.php',
        'ExternalStoreMwstore' => __DIR__ . '/includes/externalstore/ExternalStoreMwstore.php',
        'ExternalUserNames' => __DIR__ . '/includes/user/ExternalUserNames.php',
        'FSFile' => __DIR__ . '/includes/libs/filebackend/fsfile/FSFile.php',
        'IP' => __DIR__ . '/includes/libs/IP.php',
        'IPTC' => __DIR__ . '/includes/media/IPTC.php',
        'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
 +      'ISearchResultSet' => __DIR__ . '/includes/search/ISearchResultSet.php',
 +      'IStoreKeyEncoder' => __DIR__ . '/includes/libs/objectcache/IStoreKeyEncoder.php',
        'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php',
        'IdentityCollation' => __DIR__ . '/includes/collation/IdentityCollation.php',
        'ImageBuilder' => __DIR__ . '/maintenance/rebuildImages.php',
        'MediaWiki\\Diff\\WordAccumulator' => __DIR__ . '/includes/diff/WordAccumulator.php',
        'MediaWiki\\HeaderCallback' => __DIR__ . '/includes/HeaderCallback.php',
        'MediaWiki\\Http\\HttpRequestFactory' => __DIR__ . '/includes/http/HttpRequestFactory.php',
 +      'MediaWiki\\Installer\\InstallException' => __DIR__ . '/includes/installer/InstallException.php',
        'MediaWiki\\Interwiki\\ClassicInterwikiLookup' => __DIR__ . '/includes/interwiki/ClassicInterwikiLookup.php',
        'MediaWiki\\Interwiki\\InterwikiLookup' => __DIR__ . '/includes/interwiki/InterwikiLookup.php',
        'MediaWiki\\Interwiki\\InterwikiLookupAdapter' => __DIR__ . '/includes/interwiki/InterwikiLookupAdapter.php',
        'MediaWiki\\Widget\\TitlesMultiselectWidget' => __DIR__ . '/includes/widget/TitlesMultiselectWidget.php',
        'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
        'MediaWiki\\Widget\\UsersMultiselectWidget' => __DIR__ . '/includes/widget/UsersMultiselectWidget.php',
 +      'MediumSpecificBagOStuff' => __DIR__ . '/includes/libs/objectcache/MediumSpecificBagOStuff.php',
        'MemcLockManager' => __DIR__ . '/includes/libs/lockmanager/MemcLockManager.php',
        'MemcachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedBagOStuff.php',
        'MemcachedClient' => __DIR__ . '/includes/libs/objectcache/MemcachedClient.php',
        'MssqlInstaller' => __DIR__ . '/includes/installer/MssqlInstaller.php',
        'MssqlUpdater' => __DIR__ . '/includes/installer/MssqlUpdater.php',
        'MultiConfig' => __DIR__ . '/includes/config/MultiConfig.php',
 -      'MultiHttpClient' => __DIR__ . '/includes/libs/MultiHttpClient.php',
 +      'MultiHttpClient' => __DIR__ . '/includes/libs/http/MultiHttpClient.php',
        'MultiWriteBagOStuff' => __DIR__ . '/includes/libs/objectcache/MultiWriteBagOStuff.php',
        'MutableConfig' => __DIR__ . '/includes/config/MutableConfig.php',
        'MutableContext' => __DIR__ . '/includes/context/MutableContext.php',
        'SearchPostgres' => __DIR__ . '/includes/search/SearchPostgres.php',
        'SearchResult' => __DIR__ . '/includes/search/SearchResult.php',
        'SearchResultSet' => __DIR__ . '/includes/search/SearchResultSet.php',
 +      'SearchResultSetTrait' => __DIR__ . '/includes/search/SearchResultSetTrait.php',
        'SearchSqlite' => __DIR__ . '/includes/search/SearchSqlite.php',
        'SearchSuggestion' => __DIR__ . '/includes/search/SearchSuggestion.php',
        'SearchSuggestionSet' => __DIR__ . '/includes/search/SearchSuggestionSet.php',
        'SpecialMytalk' => __DIR__ . '/includes/specials/redirects/SpecialMytalk.php',
        'SpecialMyuploads' => __DIR__ . '/includes/specials/redirects/SpecialMyuploads.php',
        'SpecialNewFiles' => __DIR__ . '/includes/specials/SpecialNewimages.php',
+       'SpecialNewSection' => __DIR__ . '/includes/specials/SpecialNewSection.php',
        'SpecialNewpages' => __DIR__ . '/includes/specials/SpecialNewpages.php',
        'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
        'SpecialPageAction' => __DIR__ . '/includes/actions/SpecialPageAction.php',
        'SpecialWatchlist' => __DIR__ . '/includes/specials/SpecialWatchlist.php',
        'SpecialWhatLinksHere' => __DIR__ . '/includes/specials/SpecialWhatLinksHere.php',
        'SqlBagOStuff' => __DIR__ . '/includes/objectcache/SqlBagOStuff.php',
 +      'SqlSearchResult' => __DIR__ . '/includes/search/SqlSearchResult.php',
        'SqlSearchResultSet' => __DIR__ . '/includes/search/SqlSearchResultSet.php',
        'Sqlite' => __DIR__ . '/maintenance/sqlite.inc',
        'SqliteInstaller' => __DIR__ . '/includes/installer/SqliteInstaller.php',
        'UploadStashWrongOwnerException' => __DIR__ . '/includes/upload/exception/UploadStashWrongOwnerException.php',
        'UploadStashZeroLengthFileException' => __DIR__ . '/includes/upload/exception/UploadStashZeroLengthFileException.php',
        'UppercaseCollation' => __DIR__ . '/includes/collation/UppercaseCollation.php',
 +      'UppercaseTitlesForUnicodeTransition' => __DIR__ . '/maintenance/uppercaseTitlesForUnicodeTransition.php',
        'User' => __DIR__ . '/includes/user/User.php',
        'UserArray' => __DIR__ . '/includes/user/UserArray.php',
        'UserArrayFromResult' => __DIR__ . '/includes/user/UserArrayFromResult.php',
        'VirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTService.php',
        'VirtualRESTServiceClient' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTServiceClient.php',
        'WANCacheReapUpdate' => __DIR__ . '/includes/deferred/WANCacheReapUpdate.php',
 -      'WANObjectCache' => __DIR__ . '/includes/libs/objectcache/WANObjectCache.php',
 -      'WANObjectCacheReaper' => __DIR__ . '/includes/libs/objectcache/WANObjectCacheReaper.php',
 +      'WANObjectCache' => __DIR__ . '/includes/libs/objectcache/wancache/WANObjectCache.php',
 +      'WANObjectCacheReaper' => __DIR__ . '/includes/libs/objectcache/wancache/WANObjectCacheReaper.php',
        'WantedCategoriesPage' => __DIR__ . '/includes/specials/SpecialWantedcategories.php',
        'WantedFilesPage' => __DIR__ . '/includes/specials/SpecialWantedfiles.php',
        'WantedPagesPage' => __DIR__ . '/includes/specials/SpecialWantedpages.php',
@@@ -200,6 -200,7 +200,7 @@@ class SpecialPageFactory 
                'Mytalk' => \SpecialMytalk::class,
                'Myuploads' => \SpecialMyuploads::class,
                'AllMyUploads' => \SpecialAllMyUploads::class,
+               'NewSection' => \SpecialNewSection::class,
                'PermanentLink' => \SpecialPermanentLink::class,
                'Redirect' => \SpecialRedirect::class,
                'Revisiondelete' => \SpecialRevisionDelete::class,
         *
         * @var array
         * @since 1.33
 -       * */
 +       */
        public static $constructorOptions = [
                'ContentHandlerUseDB',
                'DisableInternalSearch',
diff --combined languages/i18n/en.json
        "autoblockedtext": "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.\nThe reason given is:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nYou may contact $1 or one of the other [[{{MediaWiki:Grouppage-sysop}}|administrators]] to discuss the block.\n\nNote that you may not use the \"{{int:emailuser}}\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it.\n\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.",
        "systemblockedtext": "Your username or IP address has been automatically blocked by MediaWiki.\nThe reason given is:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nYour current IP address is $3.\nPlease include all above details in any queries you make.",
        "blockednoreason": "no reason given",
 -      "blockedtext-composite": "<strong>Your username or IP address has been blocked.</strong>\n\nThe reason given is:\n\n:<em>$2</em>.\n\n* Start of block: $8\n* Expiration of longest block: $6\n\nYour current IP address is $3.\nPlease include all above details in any queries you make.",
 +      "blockedtext-composite": "<strong>Your username or IP address has been blocked.</strong>\n\nThe reason given is:\n\n:<em>$2</em>.\n\n* Start of block: $8\n* Expiration of longest block: $6\n\n* $5\n\nYour current IP address is $3.\nPlease include all above details in any queries you make.",
 +      "blockedtext-composite-ids": "Relevant block IDs: $1 (your IP address may also be blacklisted)",
 +      "blockedtext-composite-no-ids": "Your IP address appears in multiple blacklists",
        "blockedtext-composite-reason": "There are multiple blocks against your account and/or IP address",
        "whitelistedittext": "Please $1 to edit pages.",
        "confirmedittext": "You must confirm your email address before editing pages.\nPlease set and validate your email address through your [[Special:Preferences|user preferences]].",
        "search-interwiki-more": "(more)",
        "search-interwiki-more-results": "more results",
        "search-relatedarticle": "Related",
 +      "search-invalid-sort-order": "Sort order of $1 is unrecognized, default sorting will be applied. Valid sort orders are: $2",
 +      "search-unknown-profile": "Search profile of $1 is unrecognized, default search profile will be applied.",
        "searchrelated": "related",
        "searchall": "all",
        "showingresults": "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.",
        "right-editmyusercss": "Edit your own user CSS files",
        "right-editmyuserjson": "Edit your own user JSON files",
        "right-editmyuserjs": "Edit your own user JavaScript files",
 +      "right-editmyuserjsredirect": "Edit your own user JavaScript files that are redirects",
        "right-viewmywatchlist": "View your own watchlist",
        "right-editmywatchlist": "Edit your own watchlist. Note some actions will still add pages even without this right.",
        "right-viewmyprivateinfo": "View your own private data (e.g. email address, real name)",
        "action-editmyusercss": "edit your own user CSS files",
        "action-editmyuserjson": "edit your own user JSON files",
        "action-editmyuserjs": "edit your own user JavaScript files",
 +      "action-editmyuserjsredirect": "edit your own user JavaScript files that are redirects",
        "action-viewsuppressed": "view revisions hidden from any user",
        "action-hideuser": "block a username, hiding it from the public",
        "action-ipblock-exempt": "bypass IP blocks, auto-blocks and range blocks",
        "rcfilters-clear-all-filters": "Clear all filters",
        "rcfilters-show-new-changes": "View new changes since $1",
        "rcfilters-search-placeholder": "Filter changes (use menu or search for filter name)",
 +      "rcfilters-search-placeholder-mobile": "Filters",
        "rcfilters-invalid-filter": "Invalid filter",
        "rcfilters-empty-filter": "No active filters. All contributions are shown.",
        "rcfilters-filterlist-title": "Filters",
        "changecontentmodel" : "Change content model of a page",
        "changecontentmodel-legend": "Change content model",
        "changecontentmodel-title-label": "Page title",
 +      "changecontentmodel-current-label": "Current content model:",
        "changecontentmodel-model-label": "New content model",
        "changecontentmodel-reason-label": "Reason:",
        "changecontentmodel-submit": "Change",
        "block-log-flags-angry-autoblock": "enhanced autoblock enabled",
        "block-log-flags-hiddenname": "username hidden",
        "range_block_disabled": "The administrator ability to create range blocks is disabled.",
 +      "ipb-prevent-user-talk-edit": "Editing their own talk page must be allowed for a partial block, unless it includes a restriction on the User Talk namespace.",
        "ipb_expiry_invalid": "Expiry time invalid.",
        "ipb_expiry_old": "Expiry time is in the past.",
        "ipb_expiry_temp": "Hidden username blocks must be permanent.",
        "move-page-legend": "Move page",
        "movepagetext": "Using the form below will rename a page, moving all of its history to the new name.\nThe old title will become a redirect page to the new title.\nYou can update redirects that point to the original title automatically.\nIf you choose not to, be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote 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.\nThis 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.\n\n<strong>Note:</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease 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.\nThe old title will become a redirect page to the new title.\nBe sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote 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.\nThis 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.\n\n<strong>Note:</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease be sure you understand the consequences of this before proceeding.",
 +      "movepagetext-noredirectsupport": "Using the form below will rename a page, moving all of its history to the new name.\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote that the page will <strong>not</strong> be moved if there is already a page at the new title.\nThis 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.\n\n<strong>Note:</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease be sure you understand the consequences of this before proceeding.",
        "movepagetalktext": "If you check this box, the associated talk page will be automatically moved to new title, unless a non-empty talk page already exists there.\n\nIn this case, you will have to move or merge the page manually if desired.",
        "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.",
        "movecategorypage-warning": "<strong>Warning:</strong> You are about to move a category page. Please note that only the page will be moved and any pages in the old category will <em>not</em> be recategorized into the new one.",
        "parentheses-start": "(",
        "parentheses-end": ")",
        "brackets": "[$1]",
 +      "brackets-start": "[",
 +      "brackets-end": "]",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← previous page",
        "imgmultipagenext": "next page →",
        "permanentlink-revid": "Revision ID",
        "permanentlink-submit": "Go to revision",
        "permanentlink-summary": "",
+       "newsection": "New section",
+       "newsection-page": "Target page",
+       "newsection-submit": "Go to page",
+       "newsection-summary": "",
        "dberr-problems": "Sorry! This site is experiencing technical difficulties.",
        "dberr-again": "Try waiting a few minutes and reloading.",
        "dberr-info": "(Cannot access the database: $1)",
        "linkaccounts": "Link accounts",
        "linkaccounts-success-text": "The account was linked.",
        "linkaccounts-submit": "Link accounts",
 +      "cannotunlink-no-provider-title": "There are no linked accounts to unlink",
 +      "cannotunlink-no-provider": "There are no linked accounts that can be unlinked.",
        "unlinkaccounts": "Unlink accounts",
        "unlinkaccounts-success": "The account was unlinked.",
        "authenticationdatachange-ignored": "The authentication data change was not handled. Maybe no provider was configured?",
        "edit-error-short": "Error: $1",
        "edit-error-long": "Errors:\n\n$1",
        "specialmute": "Mute",
 -      "specialmute-success": "Your mute preferences have been successfully updated. See all muted users in [[Special:Preferences]].",
 +      "specialmute-success": "Your mute preferences have been updated. See all muted users in [[Special:Preferences|your preferences]].",
        "specialmute-submit": "Confirm",
        "specialmute-label-mute-email": "Mute emails from this user",
 -      "specialmute-header": "Please select your mute preferences for {{BIDI:[[User:$1]]}}.",
 +      "specialmute-header": "Please select your mute preferences for user <b>{{BIDI:[[User:$1|$1]]}}</b>.",
        "specialmute-error-invalid-user": "The username requested could not be found.",
 -      "specialmute-error-email-blacklist-disabled": "Muting users from sending you emails is not enabled.",
 -      "specialmute-error-email-preferences": "You must confirm your email address before you can mute a user. You may do so from [[Special:Preferences]].",
 -      "specialmute-email-footer": "[$1 Manage email preferences for {{BIDI:$2}}.]",
 +      "specialmute-error-no-options": "Mute features are unavailable. This might be because: you haven't confirmed your email address or the wiki administrator has disabled email features and/or email blacklist for this wiki.",
 +      "specialmute-email-footer": "To manage email preferences for user {{BIDI:$2}} please visit <$1>.",
        "specialmute-login-required": "Please log in to change your mute preferences.",
 +      "mute-preferences": "Mute preferences",
        "revid": "revision $1",
        "pageid": "page ID $1",
        "interfaceadmin-info": "$1\n\nPermissions for editing of sitewide CSS/JS/JSON files were recently separated from the <code>editinterface</code> right. If you do not understand why you are getting this error, see [[mw:MediaWiki_1.32/interface-admin]].",
        "passwordpolicies-policy-passwordnotinlargeblacklist": "Password cannot be in the list of 100,000 most commonly used passwords.",
        "passwordpolicies-policyflag-forcechange": "must change on login",
        "passwordpolicies-policyflag-suggestchangeonlogin": "suggest change on login",
 +      "mycustomjsredirectprotected": "You do not have permission to edit this JavaScript page because it is a redirect and it does not point inside your userspace.",
        "easydeflate-invaliddeflate": "Content provided is not properly deflated",
        "unprotected-js": "For security reasons JavaScript cannot be loaded from unprotected pages. Please only create javascript in the MediaWiki: namespace or as a User subpage",
        "userlogout-continue": "Do you want to log out?"
diff --combined languages/i18n/qqq.json
                        "Zoranzoki21",
                        "Woytecr",
                        "PiefPafPier",
 -                      "Bagas Chrisara"
 +                      "Bagas Chrisara",
 +                      "Waldyrious"
                ]
        },
        "sidebar": "{{notranslate}}",
        "editfont-monospace": "Option used in [[Special:Preferences]], tab Editing. {{Gender}}",
        "editfont-sansserif": "Option used in [[Special:Preferences]], tab Editing. {{Gender}}",
        "editfont-serif": "Option used in [[Special:Preferences]], tab Editing. {{Gender}}",
 -      "sunday": "Name of the day of the week.\n{{Identical|Sunday}}",
 -      "monday": "Name of the day of the week.\n{{Identical|Monday}}",
 -      "tuesday": "Name of the day of the week.\n{{Identical|Tuesday}}",
 -      "wednesday": "Name of the day of the week.\n{{Identical|Wednesday}}",
 -      "thursday": "Name of the day of the week.\n{{Identical|Thursday}}",
 -      "friday": "Name of the day of the week.\n{{Identical|Friday}}",
 -      "saturday": "Name of the day of the week.\n{{Identical|Saturday}}",
 -      "sun": "Abbreviation for Sunday, a day of the week.",
 -      "mon": "Abbreviation for Monday, a day of the week.",
 -      "tue": "Abbreviation for Tuesday, a day of the week.",
 -      "wed": "Abbreviation for Wednesday, a day of the week.",
 -      "thu": "Abbreviation for Thursday, a day of the week.",
 -      "fri": "Abbreviation for Friday, a day of the week.",
 -      "sat": "Abbreviation for Saturday, a day of the week.",
 +      "sunday": "{{doc-weekdays}}\n{{Identical|Sunday}}",
 +      "monday": "{{Doc-weekdays}}\nName of the day of the week.\n{{Identical|Monday}}",
 +      "tuesday": "{{Doc-weekdays}}\nName of the day of the week.\n{{Identical|Tuesday}}",
 +      "wednesday": "{{Doc-weekdays}}\nName of the day of the week.\n{{Identical|Wednesday}}",
 +      "thursday": "{{doc-weekdays}}\n{{Identical|Thursday}}",
 +      "friday": "{{doc-weekdays}}\n{{Identical|Friday}}",
 +      "saturday": "{{doc-weekdays}}\n{{Identical|Saturday}}",
 +      "sun": "{{doc-weekdays}}",
 +      "mon": "{{doc-weekdays}}",
 +      "tue": "{{doc-weekdays}}",
 +      "wed": "{{doc-weekdays}}",
 +      "thu": "{{doc-weekdays}}",
 +      "fri": "{{doc-weekdays}}",
 +      "sat": "{{doc-weekdays}}",
        "january": "{{doc-months|1}}\n{{Identical|January}}",
        "february": "{{doc-months|2}}\n{{Identical|February}}",
        "march": "{{doc-months|3}}\n{{Identical|March}}",
        "autoblockedtext": "Text displayed to automatically blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block (in case of autoblocks: {{msg-mw|autoblocker}})\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link). Use it for GENDER.\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Blockedtext|notext=1}}\n* {{msg-mw|Systemblockedtext|notext=1}}",
        "systemblockedtext": "Text displayed to requests blocked by MediaWiki configuration.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - (Unused) A dummy user attributed as the blocker, possibly as a link to a user page.\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the dummy blocking user's username (plain text, without the link).\n* $5 - A short string indicating the type of system block.\n* $6 - the expiry of the block\n* $7 - the intended target of the block\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Blockedtext|notext=1}}\n* {{msg-mw|Autoblockedtext|notext=1}}",
        "blockednoreason": "Substituted with <code>$2</code> in the following message if the reason is not given:\n* {{msg-mw|cantcreateaccount-text}}.\n{{Identical|No reason given}}",
 -      "blockedtext-composite": "Text displayed to requests blocked by more than one block.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - (Unused) A dummy user attributed as the blocker, possibly as a link to a user page.\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the dummy blocking user's username (plain text, without the link).\n* $5 - (Unused) placeholder for the block ID.\n* $6 - the expiry of the block with the longest duration\n* $7 - (Unused) the intended target of the block\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Systemblockedtext|notext=1}}",
 +      "blockedtext-composite": "Text displayed to requests blocked by more than one block.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - (Unused) A dummy user attributed as the blocker, possibly as a link to a user page.\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the dummy blocking user's username (plain text, without the link).\n* $5 - details of the individual blocks that this block is made from\n* $6 - the expiry of the block with the longest duration\n* $7 - (Unused) the intended target of the block\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Systemblockedtext|notext=1}}",
 +      "blockedtext-composite-ids": "Text displayed when a user is blocked by multiple blocks, if at least one block comes from the database.\n\nParameters:\n* $1 - IDs of the blocks from the database",
 +      "blockedtext-composite-no-ids": "Text displayed when a user is blocked by multiple blocks, if all the blocks are due to the IP being blacklisted.",
        "blockedtext-composite-reason": "Reason given to blocked users who are affected by more than one block.\n\nSee also:\n* {{msg-mw|blockedtext-composite}}",
        "whitelistedittext": "Used as error message. Parameters:\n* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description\n* $2 - an URL to the same\n\nSee also:\n* {{msg-mw|Nocreatetext}}\n* {{msg-mw|Uploadnologintext}}\n* {{msg-mw|Loginreqpagetext}}",
        "confirmedittext": "Used as error message.",
        "search-interwiki-more": "{{Identical|More}}",
        "search-interwiki-more-results": "Label for a link that leads to more search results from a given wiki.",
        "search-relatedarticle": "This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is \"More Like This\" functionality. Microsoft glossary defines MLT as \"A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry.\"[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]\n{{Identical|Related}}",
 +      "search-invalid-sort-order": "Warning displayed on Special:Search when an unrecognized sorting order is requested.",
 +      "search-unknown-profile": "Warning displayed on Special:Search when an unrecognized search profile is requested.",
        "searchrelated": "This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is \"More Like This\" functionality. Microsoft glossary defines MLT as \"A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry.\"[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]\n{{Identical|Related}}",
        "searchall": "{{Identical|All}}",
        "showingresults": "This message is used on some special pages such as [[Special:WantedCategories]]. Parameters:\n* $1 - the total number of results in the batch shown\n* $2 - the number of the first item listed\nSee also:\n* {{msg-mw|Showingresultsnum}}",
        "right-editsitejs": "{{doc-right|editsitejs}}",
        "right-editmyusercss": "{{doc-right|editmyusercss}}\nSee also:\n* {{msg-mw|Right-editusercss}}",
        "right-editmyuserjson": "{{doc-right|editmyuserjson}}\nSee also:\n* {{msg-mw|Right-edituserjson}}",
 -      "right-editmyuserjs": "{{doc-right|editmyuserjs}}\nSee also:\n* {{msg-mw|Right-edituserjs}}",
 +      "right-editmyuserjs": "{{doc-right|editmyuserjs}}\nSee also:\n* {{msg-mw|Right-edituserjs}}\n* {{msg-mw|Right-editmyuserjsredirect}}",
 +      "right-editmyuserjsredirect": "{{doc-right|editmyuserjsredirect}}\nSame as {{msg-mw|Right-editmyuserjs}} except if page is a redirect.\n\nSee also:\n* {{msg-mw|Right-edituserjs}}",
        "right-viewmywatchlist": "{{doc-right|viewmywatchlist}}",
        "right-editmywatchlist": "{{doc-right|editmywatchlist}}",
        "right-viewmyprivateinfo": "{{doc-right|viewmyprivateinfo}}",
        "action-editmyusercss": "{{doc-action|editmyusercss}}",
        "action-editmyuserjson": "{{doc-action|editmyuserjson}}",
        "action-editmyuserjs": "{{doc-action|editmyuserjs}}",
 +      "action-editmyuserjsredirect": "{{doc-action|editmyuserjsredirect}}",
        "action-viewsuppressed": "{{doc-action|viewsuppressed}}",
        "action-hideuser": "{{doc-action|hideuser}}",
        "action-ipblock-exempt": "{{doc-action|ipblock-exempt}}",
        "rcfilters-clear-all-filters": "Title for the button that clears all filters",
        "rcfilters-show-new-changes": "Label for the button to show new changes. Parameters:\n* $1 - timestamp from which new changes are available. It indicates that clicking the refresh link will bring changes newer than (or equal to) this timestamp. It is formatted according to the user's date, time and timezone preferences",
        "rcfilters-search-placeholder": "Placeholder for the filter search input. The first \"Filter\" is a verb, and the second \"filter\" is a noun.",
 +      "rcfilters-search-placeholder-mobile": "Placeholder for the filter search input for mobile devices.\n{{Identical|Filter}}",
        "rcfilters-invalid-filter": "A label for an invalid filter.",
        "rcfilters-empty-filter": "Placeholder for the filter list when no filters were chosen.",
        "rcfilters-filterlist-title": "Title for the filters list.\n{{Identical|Filter}}",
        "listgrouprights-members": "Used on [[Special:ListGroupRights]] and [[Special:Statistics]] as a link to [[Special:ListUsers|Special:ListUsers/\"group\"]], a list of members in that group.",
        "listgrouprights-right-display": "{{optional}}\nParameters:\n* $1 - the text from the \"right-...\" messages, i.e. {{msg-mw|Right-edit}}\n* $2 - the codename of this right",
        "listgrouprights-right-revoked": "{{optional}}\nParameters:\n* $1 - the text from the \"right-...\" messages, i.e. {{msg-mw|Right-edit}}\n* $2 - the codename of this right",
 -      "listgrouprights-addgroup": "This is an individual right for groups, used on [[Special:ListGroupRights]].\n* $1 - an enumeration of group names\n* $2 - the number of group names in $1\nSee also:\n* {{msg-mw|listgrouprights-removegroup}}\n{{Related|Listgrouprights}}",
 +      "listgrouprights-addgroup": "This is the individual right to add users to groups, used on [[Special:ListGroupRights]].\n* $1 - an enumeration of group names\n* $2 - the number of group names in $1\nSee also:\n* {{msg-mw|listgrouprights-removegroup}}\n{{Related|Listgrouprights}}",
        "listgrouprights-removegroup": "This is an individual right for groups, used on [[Special:ListGroupRights]].\n* $1 - an enumeration of group names\n* $2 - the number of group names in $1\nSee also:\n* {{msg-mw|listgrouprights-addgroup}}",
        "listgrouprights-addgroup-all": "Used on [[Special:ListGroupRights]].\n{{Related|Listgrouprights}}",
        "listgrouprights-removegroup-all": "Used on [[Special:ListGroupRights]].\n{{Related|Listgrouprights}}",
        "changecontentmodel": "Title of the change content model special page",
        "changecontentmodel-legend": "Legend of the fieldset on the change content model special page",
        "changecontentmodel-title-label": "Label for the input field where the target page title should be entered\n{{Identical|Page title}}",
 +      "changecontentmodel-current-label": "Label for the current content model",
        "changecontentmodel-model-label": "Label of the dropdown listing available content model types the user can change a page to",
        "changecontentmodel-reason-label": "{{Identical|Reason}}",
        "changecontentmodel-submit": "Label of the form \"submit\" button for [[Special:ChangeContentModel]]\n{{Identical|Change}}",
        "contributions": "Display name for the 'User contributions', shown in the sidebar menu of all user pages and user talk pages.\n\nAlso the page name of the target page.\n\nThe target page shows an overview of the most recent contributions by a user.\n\nParameters:\n* $1 - username\n\nSee also:\n* {{msg-mw|Contributions}}\n* {{msg-mw|Accesskey-t-contributions}}\n* {{msg-mw|Tooltip-t-contributions}}",
        "contributions-summary": "{{doc-specialpagesummary|contributions}}",
        "contributions-title": "{{Gender}}\nThe page title in your browser bar, but not the page title.\n\nParameters:\n* $1 - the username\nSee also:\n* {{msg-mw|Contributions}}",
 -      "mycontris": "In the personal urls page section - right upper corner.\n\nSee also:\n* {{msg-mw|Mycontris}}\n* {{msg-mw|Accesskey-pt-mycontris}}\n* {{msg-mw|Tooltip-pt-mycontris}}\n{{Identical|Contribution}}",
 +      "mycontris": "Link to the current user's own contributions, in the personal account links area, at the upper right corner of the page.\n\nSee also:\n* {{msg-mw|Mycontris}}\n* {{msg-mw|Accesskey-pt-mycontris}}\n* {{msg-mw|Tooltip-pt-mycontris}}\n{{Identical|Contribution}}",
        "anoncontribs": "Same as {{msg-mw|mycontris}} but used for non-logged-in users.\n\nSee also:\n* {{msg-mw|Accesskey-pt-anoncontribs}}\n* {{msg-mw|Tooltip-pt-anoncontribs}}\n{{Identical|Contribution}}",
        "contribsub2": "Contributions for \"user\" (links). Parameters:\n* $1 is an IP address or a username, with a link which points to the user page (if registered user).\n* $2 is list of tool links. The list contains a link which has text {{msg-mw|Sp-contributions-talk}}.\n* $3 is a plain text username used for GENDER.\n{{Identical|For $1}}",
        "contributions-subtitle": "Successor to {{msg-mw|contribsub2}}. Contributions for \"user\". Parameters:\n* $1 is an IP address or a username, with a link which points to the user page (if registered user).",
        "block-log-flags-angry-autoblock": "Used as a block log flag in [[Special:Log/block]].\n{{Related|Block-log-flags}}",
        "block-log-flags-hiddenname": "Used as a block log flag in [[Special:Log/block]] and in [[Special:Block]].\n\n{{Related|Block-log-flags}}",
        "range_block_disabled": "Used as error message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
 +      "ipb-prevent-user-talk-edit": "Used as error message in [[Special:Block]] if invalid options are selected regarding \"Edit own user talk\".\n\nSee also:\n{{msg-mw|ipb-disableusertalk}}",
        "ipb_expiry_invalid": "Used as error message in [[Special:Block]].",
        "ipb_expiry_old": "Used as error message in [[Special:Block]], if the expiry time is in the past.\n{{Identical|protect_expiry_old}}",
        "ipb_expiry_temp": "Warning message displayed on [[Special:Block]] if the option \"hide username\" is selected but the expiry time is not infinite.",
        "move-page-legend": "Legend of the fieldset around the input form of [[Special:MovePage/testpage]].\n\nSee also:\n* {{msg-mw|newtitle|label for new title}}\n* {{msg-mw|movereason|label for textarea}}\n* {{msg-mw|movetalk|label for checkbox}}\n* {{msg-mw|move-leave-redirect|label for checkbox}}\n* {{msg-mw|fix-double-redirects|label for checkbox}}\n* {{msg-mw|move-subpages|label for checkbox}}\n* {{msg-mw|move-talk-subpages|label for checkbox}}\n* {{msg-mw|move-watch|label for checkbox}}\n{{Identical|Move page}}",
        "movepagetext": "Introduction shown when moving a page ([[Special:MovePage]]).\n\nSpecial pages mentioned: {{msg-mw|Doubleredirects}}, {{msg-mw|Brokenredirects}}\n\nSee also:\n* {{msg-mw|Movepagetext-noredirectfixer}}",
        "movepagetext-noredirectfixer": "A variant of the following message ''Movepagetext'' displayed when the automatic redirect fixer is not enabled.\n\nSpecial pages mentioned: {{msg-mw|Doubleredirects}}, {{msg-mw|Brokenredirects}}\n\nSee also:\n* {{msg-mw|Movepagetext}}",
 +      "movepagetext-noredirectsupport": "A variant of the following message ''Movepagetext'' displayed when the content model of the page being moved does not support redirects.\n\nSee also:\n* {{msg-mw|Movepagetext}}",
        "movepagetalktext": "Text on the special 'Move page'. This text only appears if the talk page is not empty.",
        "moveuserpage-warning": "Used as warning in [[Special:MovePage]], when moving a user page.",
        "movecategorypage-warning": "Used as warning in [[Special:MovePage]], when moving a category page.",
        "parentheses-start": "{{optional}}",
        "parentheses-end": "{{optional}}",
        "brackets": "{{Optional}}\n{{Format|plain}}",
 +      "brackets-start": "{{optional}}\n{{Format|plain}}",
 +      "brackets-end": "{{optional}}\n{{Format|plain}}",
        "quotation-marks": "Quotation marks, for quoting, sometimes titles etc., depending on the language.\n\nSee: [[w:Quotation mark#Summary table|Non-English usage of quotation marks on Wikipedia]].\n\nParameters:\n* $1 - text to be wrapped in quotation marks",
        "imgmultipageprev": "{{Identical|Previous page}}",
        "imgmultipagenext": "{{Identical|Next page}}",
        "permanentlink-revid": "Label for the field for the revision ID in [[Special:PermanentLink]]\n{{Identical|Revision ID}}",
        "permanentlink-submit": "Submit button on [[Special:PermanentLink]]",
        "permanentlink-summary": "{{doc-specialpagesummary|permanentlink}}",
+       "newsection": "The title of [[Special:NewSection]]",
+       "newsection-page": "Label for the field for the target page in [[Special:NewSection]]",
+       "newsection-submit": "Submit button on [[Special:NewSection]]",
+       "newsection-summary": "{{doc-specialpagessummary|newsection}}",
        "dberr-problems": "This message does not allow any wiki nor html markup.",
        "dberr-again": "This message does not allow any wiki nor html markup.",
        "dberr-info": "This message does not allow any wiki nor html markup. Parameters:\n* $1 - database server name\nSee also:\n* {{msg-mw|Dberr-info-hidden}} - hides database server name",
        "linkaccounts": "Title of the special page [[Special:LinkAccounts]] which allows the user to connect the local user accounts with external ones such as Google or Facebook.",
        "linkaccounts-success-text": "Text shown on top of the form after a successful action.",
        "linkaccounts-submit": "Text of the main submit button on [[Special:LinkAccounts]] (when there is one)",
 +      "cannotunlink-no-provider-title": "Error page title shown when the user visits [[Special:UnlinkAccounts]] but there is no external account that could be unlinked.",
 +      "cannotunlink-no-provider": "Error message shown when the user visits [[Special:UnlinkAccounts]] but there is no external account that could be unlinked.",
        "unlinkaccounts": "Title of the special page [[Special:UnlinkAccounts]] which allows the user to remove linked remote accounts.",
        "unlinkaccounts-success": "Account unlinking form success message",
        "authenticationdatachange-ignored": "Shown when authentication data change was unsuccessful due to configuration problems.\n\nCf. e.g. {{msg-mw|Passwordreset-ignored}}.",
        "specialmute-label-mute-email": "Label for the checkbox that mutes/unmutes emails from the specified user.",
        "specialmute-header": "Used as header text on [[Special:Mute]]. Shown before the form with the muting options.\n* $1 - User selected for muting",
        "specialmute-error-invalid-user": "Error displayed when the username cannot be found.",
 -      "specialmute-error-email-blacklist-disabled": "Error displayed when email blacklist is not enabled.",
 -      "specialmute-error-email-preferences": "Error displayed when the user has not confirmed their email address.",
 -      "specialmute-email-footer": "Email footer linking to [[Special:Mute]] preselecting the sender to manage muting options.\n* $1 - Url linking to [[Special:Mute]].\n* $2 - The user sending the email.",
 +      "specialmute-error-no-options": "Error displayed when there are no options available to mute on [[Special:Mute]].",
 +      "specialmute-email-footer": "Email footer in plain text linking to [[Special:Mute]] preselecting the sender to manage muting options.\n* $1 - Url linking to [[Special:Mute]].\n* $2 - The user sending the email.",
        "specialmute-login-required": "Error displayed when a user tries to access [[Special:Mute]] before logging in.",
 +      "mute-preferences": "Link in the sidebar to manage muting preferences for a user. It links to [[Special:Mute]] with the user in context as the subpage.",
        "revid": "Used to format a revision ID number in text. Parameters:\n* $1 - Revision ID number.\n{{Identical|Revision}}",
        "pageid": "Used to format a page ID number in text. Parameters:\n* $1 - Page ID number.",
        "interfaceadmin-info": "Part of the error message shown when someone with the <code>editinterface</code> right but without the appropriate <code>editsite*</code> right tries to edit a sitewide CSS/JSON/JS page.",
        "passwordpolicies-policy-passwordnotinlargeblacklist": "Password policy that enforces that a password is not in a list of 100,000 number of \"popular\" passwords.",
        "passwordpolicies-policyflag-forcechange": "Password policy flag that enforces changing invalid passwords on login.",
        "passwordpolicies-policyflag-suggestchangeonlogin": "Password policy flag that suggests changing invalid passwords on login.",
 +      "mycustomjsredirectprotected": "Error message shown when user tries to edit their own JS page that is a foreign redirect without the 'mycustomjsredirectprotected' right. See also {{msg-mw|mycustomjsprotected}}.",
        "easydeflate-invaliddeflate": "Error message if the content passed to easydeflate was not deflated (compressed) properly",
        "unprotected-js": "Error message shown when trying to load javascript via action=raw that is not protected",
        "userlogout-continue": "Shown if user attempted to log out without a token specified. Probably the user clicked on an old link that hasn't been updated to use the new system. $1 - url that user should click on in order to log out."