diff options
33 files changed, 938 insertions, 564 deletions
diff --git a/DEVELOPERS.md b/DEVELOPERS.md index 19cf81f94fe7..00c54674045d 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -422,3 +422,7 @@ The permissions with the `cache/sqlite` directory have to be set manually on Win ```sh docker compose exec mediawiki chmod -R o+rwx cache/sqlite ``` + +### Linux users, "(Cannot access the database: No database connection (localhost))" + +Make sure you have the `MW_DOCKER_UID` and `MW_DOCKER_GID` set in your `.env` file (instructions above). diff --git a/Gruntfile.js b/Gruntfile.js index cd0fe8784f1f..bfbcc15e00fb 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -62,6 +62,7 @@ module.exports = function ( grunt ) { }, core: 'languages/i18n/', exif: 'languages/i18n/exif/', + preferences: 'languages/i18n/preferences/', api: 'includes/api/i18n/', rest: 'includes/Rest/i18n/', installer: 'includes/installer/i18n/', diff --git a/RELEASE-NOTES-1.43 b/RELEASE-NOTES-1.43 index d07744cfc28e..019c41e45f55 100644 --- a/RELEASE-NOTES-1.43 +++ b/RELEASE-NOTES-1.43 @@ -1,4 +1,4 @@ -= MediaWiki 1.43 = +=<<< MediaWiki 1.43 = == MediaWiki 1.43.0-PRERELEASE == @@ -188,6 +188,19 @@ because of Phabricator reports. warnings. Use ::getConnection() instead. * IDatabase::lockForUpdate is deprecated, use SelectQueryBuilder::acquireRowLocks instead. +* wfGetUrlUtils() is deprecated; instead, get a UrlUtils from services. +* DerivedPageDataUpdater::getPreparedEdit(), provided for back-compatibility, is + now deprecated; use the getters directly, instead. +* AuthManager::forcePrimaryAuthenticationProviders(), provided for back- + compatibility, is now deprecated. +* WikiPage::hasDifferencesOutsideMainSlot(), provided as a stop-gap before + refactoring to support MCR, is now deprecated. +* ChangesList::getTimestamp() has been deprecated; use ::revDateLink() instead. +* SiteConfig::variants() has been deprecated; use ::variantsFor(). +* ObjectCache::$instances and ::getInstance() have been deprecated; instead, use + ObjectCacheFactory::getInstance(). +* ApiTestCase::setExpectedApiException() has been deprecated; instead, use + ::expectApiErrorCode() to test error codes instead of messages. * User::isBlockedGlobally(), deprecated since 1.40, now emits deprecation warnings. * User::isBlockedFromEmailuser() and User::canSendEmail(), deprecated since diff --git a/composer.json b/composer.json index 57cff0d8afbc..477ba4f13d47 100644 --- a/composer.json +++ b/composer.json @@ -174,7 +174,7 @@ "phpunit:unit": "@phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit", "phpunit:integration": "@phpunit --colors=always --testsuite=core:integration,extensions:integration,skins:integration", "phpunit:coverage": "@phpunit --testsuite=core:unit --exclude-group Dump,Broken", - "phpunit:coverage-edit": "ComposerPhpunitXmlCoverageEdit::onEvent", + "phpunit:coverage-edit": "MediaWiki\\Composer\\ComposerPhpunitXmlCoverageEdit::onEvent", "phpunit:entrypoint": "@phpunit" }, "config": { diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index d64c960ca491..8c53af5a2af6 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -458,7 +458,7 @@ function wfAppendQuery( $url, $query ) { } /** - * @deprecated Get a UrlUtils from services, or construct your own + * @deprecated since 1.43; get a UrlUtils from services, or construct your own * @internal * @return UrlUtils from services if initialized, otherwise make one from globals */ @@ -1044,8 +1044,9 @@ function wfBacktrace( $raw = null ) { * wfGetCaller( 2 ) [default] is the caller of the function running wfGetCaller() * wfGetCaller( 3 ) is the parent of that. * + * The format will be the same as for {@see wfFormatStackFrame()}. * @param int $level - * @return string + * @return string function name or 'unknown' */ function wfGetCaller( $level = 2 ) { $backtrace = wfDebugBacktrace( $level + 1 ); @@ -1075,6 +1076,12 @@ function wfGetAllCallers( $limit = 3 ) { /** * Return a string representation of frame * + * Typically, the returned value will be in one of these formats: + * - method + * - Fully\Qualified\method + * - Fully\Qualified\Class->method + * - Fully\Qualified\Class::method + * * @param array $frame * @return string */ diff --git a/includes/Storage/DerivedPageDataUpdater.php b/includes/Storage/DerivedPageDataUpdater.php index d0b44050abd5..606f6e5ebf16 100644 --- a/includes/Storage/DerivedPageDataUpdater.php +++ b/includes/Storage/DerivedPageDataUpdater.php @@ -1402,7 +1402,7 @@ class DerivedPageDataUpdater implements LoggerAwareInterface, PreparedUpdate { } /** - * @deprecated This only exists for B/C, use the getters on DerivedPageDataUpdater directly! + * @deprecated since 1.43; This only exists for B/C, use the getters on DerivedPageDataUpdater directly! * @return PreparedEdit */ public function getPreparedEdit() { diff --git a/includes/api/ApiFeedContributions.php b/includes/api/ApiFeedContributions.php index 52a139e211d5..bcc4218efd07 100644 --- a/includes/api/ApiFeedContributions.php +++ b/includes/api/ApiFeedContributions.php @@ -36,7 +36,6 @@ use MediaWiki\Revision\SlotRecord; use MediaWiki\SpecialPage\SpecialPage; use MediaWiki\Title\NamespaceInfo; use MediaWiki\Title\Title; -use MediaWiki\Title\TitleParser; use MediaWiki\User\ExternalUserNames; use MediaWiki\User\UserFactory; use MediaWiki\User\UserRigorOptions; @@ -49,7 +48,6 @@ use Wikimedia\Rdbms\IConnectionProvider; class ApiFeedContributions extends ApiBase { private RevisionStore $revisionStore; - private TitleParser $titleParser; private LinkRenderer $linkRenderer; private LinkBatchFactory $linkBatchFactory; private HookContainer $hookContainer; @@ -63,7 +61,6 @@ class ApiFeedContributions extends ApiBase { * @param ApiMain $main * @param string $action * @param RevisionStore $revisionStore - * @param TitleParser $titleParser * @param LinkRenderer $linkRenderer * @param LinkBatchFactory $linkBatchFactory * @param HookContainer $hookContainer @@ -76,7 +73,6 @@ class ApiFeedContributions extends ApiBase { ApiMain $main, $action, RevisionStore $revisionStore, - TitleParser $titleParser, LinkRenderer $linkRenderer, LinkBatchFactory $linkBatchFactory, HookContainer $hookContainer, @@ -87,7 +83,6 @@ class ApiFeedContributions extends ApiBase { ) { parent::__construct( $main, $action ); $this->revisionStore = $revisionStore; - $this->titleParser = $titleParser; $this->linkRenderer = $linkRenderer; $this->linkBatchFactory = $linkBatchFactory; $this->hookContainer = $hookContainer; diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index 14777d699062..cbdc186aa258 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -190,7 +190,6 @@ class ApiMain extends ApiBase { 'class' => ApiFeedContributions::class, 'services' => [ 'RevisionStore', - 'TitleParser', 'LinkRenderer', 'LinkBatchFactory', 'HookContainer', diff --git a/includes/auth/AuthManager.php b/includes/auth/AuthManager.php index 2a9daf5c796f..136583a558b2 100644 --- a/includes/auth/AuthManager.php +++ b/includes/auth/AuthManager.php @@ -40,6 +40,7 @@ use MediaWiki\Permissions\PermissionStatus; use MediaWiki\Request\WebRequest; use MediaWiki\SpecialPage\SpecialPage; use MediaWiki\Status\Status; +use MediaWiki\StubObject\StubGlobalUser; use MediaWiki\User\BotPasswordStore; use MediaWiki\User\Options\UserOptionsManager; use MediaWiki\User\TempUser\TempUserCreator; @@ -309,11 +310,14 @@ class AuthManager implements LoggerAwareInterface { /** * Force certain PrimaryAuthenticationProviders - * @deprecated For backwards compatibility only + * + * @deprecated since 1.43; for backwards compatibility only * @param PrimaryAuthenticationProvider[] $providers * @param string $why */ public function forcePrimaryAuthenticationProviders( array $providers, $why ) { + wfDeprecated( __METHOD__, '1.43' ); + $this->logger->warning( "Overriding AuthManager primary authn because $why" ); if ( $this->primaryAuthenticationProviders !== null ) { @@ -972,6 +976,35 @@ class AuthManager implements LoggerAwareInterface { return array_keys( $ret ); } + /** + * Call this method to set the request context user for the current request + * from the context session user. + * + * Useful in cases where we need to make sure that a MediaWiki request outputs + * correct context data for a user who has just been logged-in. + * + * The method will also update the global language variable based on the + * session's user's context language. + * + * This won't affect objects which already made a copy of the user or the + * context, so it shouldn't be relied on too heavily, but can help to make the + * UI more consistent after changing the user. Typically used after a successful + * AuthManager action that changed the session user (e.g. + * AuthManager::autoCreateUser() with the login flag set). + */ + public function setRequestContextUserFromSessionUser(): void { + $context = RequestContext::getMain(); + $user = $context->getRequest()->getSession()->getUser(); + + StubGlobalUser::setUser( $user ); + $context->setUser( $user ); + + // phpcs:ignore MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage + global $wgLang; + // phpcs:ignore MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage + $wgLang = $context->getLanguage(); + } + // endregion -- end of Authentication /***************************************************************************/ diff --git a/includes/changes/ChangesList.php b/includes/changes/ChangesList.php index 9c000419bab7..51ee7378276b 100644 --- a/includes/changes/ChangesList.php +++ b/includes/changes/ChangesList.php @@ -671,7 +671,7 @@ class ChangesList extends ContextSource { * and a separator * * @param RecentChange $rc - * @deprecated use revDateLink instead. + * @deprecated since 1.43; use revDateLink instead. * @return string HTML fragment */ public function getTimestamp( $rc ) { diff --git a/includes/context/RequestContext.php b/includes/context/RequestContext.php index 2d4a8fe2525c..6527ab7b9357 100644 --- a/includes/context/RequestContext.php +++ b/includes/context/RequestContext.php @@ -44,6 +44,7 @@ use MediaWiki\Session\SessionManager; use MediaWiki\StubObject\StubGlobalUser; use MediaWiki\Title\Title; use MediaWiki\User\User; +use MediaWiki\User\UserRigorOptions; use MessageSpecifier; use RuntimeException; use Skin; @@ -697,14 +698,16 @@ class RequestContext implements IContextSource, MutableContext { throw new InvalidArgumentException( "Invalid client IP address '{$params['ip']}'." ); } + $userFactory = MediaWikiServices::getInstance()->getUserFactory(); + if ( $params['userId'] ) { // logged-in user - $user = User::newFromId( $params['userId'] ); + $user = $userFactory->newFromId( (int)$params['userId'] ); $user->load(); if ( !$user->isRegistered() ) { throw new InvalidArgumentException( "No user with ID '{$params['userId']}'." ); } } else { // anon user - $user = User::newFromName( $params['ip'], false ); + $user = $userFactory->newFromName( $params['ip'], UserRigorOptions::RIGOR_NONE ); } $importSessionFunc = static function ( User $user, array $params ) { @@ -756,6 +759,7 @@ class RequestContext implements IContextSource, MutableContext { $oUser = self::getMain()->getUser(); $oParams = self::getMain()->exportSession(); $oRequest = self::getMain()->getRequest(); + // @phan-suppress-next-line PhanTypeMismatchArgumentNullable exceptions triggered above prevent the null case $importSessionFunc( $user, $params ); // Set callback to save and close the new session and reload the old one @@ -792,7 +796,10 @@ class RequestContext implements IContextSource, MutableContext { } else { $context->setRequest( new FauxRequest( $request ) ); } - $context->user = User::newFromName( '127.0.0.1', false ); + $context->user = MediaWikiServices::getInstance()->getUserFactory()->newFromName( + '127.0.0.1', + UserRigorOptions::RIGOR_NONE + ); return $context; } diff --git a/includes/editpage/EditPage.php b/includes/editpage/EditPage.php index 4b0984a9896e..4c5c1c41b4e6 100644 --- a/includes/editpage/EditPage.php +++ b/includes/editpage/EditPage.php @@ -30,6 +30,7 @@ use ErrorPageError; use IDBAccessObject; use LogPage; use ManualLogEntry; +use MediaWiki\Auth\AuthManager; use MediaWiki\Block\BlockErrorFormatter; use MediaWiki\Cache\LinkBatchFactory; use MediaWiki\CommentStore\CommentStore; @@ -116,6 +117,7 @@ use Wikimedia\Assert\Assert; use Wikimedia\Message\MessageValue; use Wikimedia\ParamValidator\TypeDef\ExpiryDef; use Wikimedia\Rdbms\IConnectionProvider; +use Wikimedia\Rdbms\SelectQueryBuilder; use WikiPage; /** @@ -447,6 +449,7 @@ class EditPage implements IEditObject { private UserFactory $userFactory; private IConnectionProvider $connectionProvider; private BlockErrorFormatter $blockErrorFormatter; + private AuthManager $authManager; /** @var User|null */ private $placeholderTempUser; @@ -518,6 +521,7 @@ class EditPage implements IEditObject { $this->connectionProvider = $services->getConnectionProvider(); $this->blockErrorFormatter = $services->getFormatterFactory() ->getBlockErrorFormatter( $this->context ); + $this->authManager = $services->getAuthManager(); // XXX: Restore this deprecation as soon as TwoColConflict is fixed (T305028) // $this->deprecatePublicProperty( 'textbox2', '1.38', __CLASS__ ); @@ -823,6 +827,7 @@ class EditPage implements IEditObject { $this->placeholderTempUser = null; $this->unsavedTempUser = null; $this->savedTempUser = $status->getUser(); + $this->authManager->setRequestContextUserFromSessionUser(); $this->tempUserCreateDone = true; } return $status; @@ -3933,9 +3938,8 @@ class EditPage implements IEditObject { private function getLastDelete(): ?stdClass { $dbr = $this->connectionProvider->getReplicaDatabase(); $commentQuery = $this->commentStore->getJoin( 'log_comment' ); - $data = $dbr->selectRow( - array_merge( [ 'logging' ], $commentQuery['tables'], [ 'actor' ] ), - [ + $data = $dbr->newSelectQueryBuilder() + ->select( [ 'log_type', 'log_action', 'log_timestamp', @@ -3944,19 +3948,19 @@ class EditPage implements IEditObject { 'log_params', 'log_deleted', 'actor_name' - ] + $commentQuery['fields'], - [ + ] ) + ->from( 'logging' ) + ->join( 'actor', null, 'actor_id=log_actor' ) + ->where( [ 'log_namespace' => $this->mTitle->getNamespace(), 'log_title' => $this->mTitle->getDBkey(), 'log_type' => 'delete', 'log_action' => 'delete', - ], - __METHOD__, - [ 'ORDER BY' => [ 'log_timestamp DESC', 'log_id DESC' ] ], - [ - 'actor' => [ 'JOIN', 'actor_id=log_actor' ], - ] + $commentQuery['joins'] - ); + ] ) + ->orderBy( [ 'log_timestamp', 'log_id' ], SelectQueryBuilder::SORT_DESC ) + ->queryInfo( $commentQuery ) + ->caller( __METHOD__ ) + ->fetchRow(); // Quick paranoid permission checks... if ( $data !== false ) { if ( $data->log_deleted & LogPage::DELETED_USER ) { diff --git a/includes/language/LocalisationCache.php b/includes/language/LocalisationCache.php index 59693af102eb..0add4a8240f5 100644 --- a/includes/language/LocalisationCache.php +++ b/includes/language/LocalisationCache.php @@ -963,6 +963,7 @@ class LocalisationCache { return [ 'core' => "$IP/languages/i18n", 'exif' => "$IP/languages/i18n/exif", + 'preferences' => "$IP/languages/i18n/preferences", 'api' => "$IP/includes/api/i18n", 'rest' => "$IP/includes/Rest/i18n", 'oojs-ui' => "$IP/resources/lib/ooui/i18n", diff --git a/includes/mail/EmailNotification.php b/includes/mail/EmailNotification.php index 247e4daedf35..fe13963ef26e 100644 --- a/includes/mail/EmailNotification.php +++ b/includes/mail/EmailNotification.php @@ -446,7 +446,7 @@ class EmailNotification { // enotif_body_intro_restored, enotif_body_intro_changed $keys['$PAGEINTRO'] = wfMessage( 'enotif_body_intro_' . $this->pageStatus ) ->inContentLanguage() - ->params( $pageTitle, $keys['$PAGEEDITOR'], $pageTitleUrl ) + ->params( $pageTitle, $keys['$PAGEEDITOR'], "<{$pageTitleUrl}>" ) ->text(); $body = wfMessage( 'enotif_body' )->inContentLanguage()->plain(); diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php index b0872d883237..f69b9ec109ec 100644 --- a/includes/objectcache/ObjectCache.php +++ b/includes/objectcache/ObjectCache.php @@ -29,7 +29,7 @@ use MediaWiki\MediaWikiServices; */ class ObjectCache { /** - * @deprecated Use ObjectCacheFactory instead. + * @deprecated since 1.43; use ObjectCacheFactory instead. * @var BagOStuff[] Map of (id => BagOStuff) */ public static $instances = []; @@ -43,7 +43,7 @@ class ObjectCache { /** * Get a cached instance of the specified type of cache object. * - * @deprecated Use ObjectCacheFactory::getInstance instead. + * @deprecated since 1.43; use ObjectCacheFactory::getInstance instead. * * @param string|int $id A key in $wgObjectCaches. * @return BagOStuff diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index fbacea62f173..404aa8eac53c 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -1486,7 +1486,7 @@ class WikiPage implements Page, PageRecord { * * MCR migration note: this method should go away! * - * @deprecated Use only as a stop-gap before refactoring to support MCR. + * @deprecated since 1.43; Use only as a stop-gap before refactoring to support MCR. * * @param RevisionRecord $a * @param RevisionRecord $b diff --git a/includes/parser/Parsoid/Config/SiteConfig.php b/includes/parser/Parsoid/Config/SiteConfig.php index c0e8c73882cd..6b5ca57e6d7c 100644 --- a/includes/parser/Parsoid/Config/SiteConfig.php +++ b/includes/parser/Parsoid/Config/SiteConfig.php @@ -569,9 +569,14 @@ class SiteConfig extends ISiteConfig { * values are arrays with two fields: * - base: (string) Base language code (e.g. "zh") (MediaWiki-internal) * - fallbacks: (string[]) Fallback variants (MediaWiki-internal codes) - * @deprecated Use ::variantsFor() (T320662) + * @deprecated since 1.43; use ::variantsFor() (T320662) */ public function variants(): array { + // Deprecated for all external callers; to make private and remove this warning. + if ( wfGetCaller() !== __CLASS__ . '->variantsFor' ) { + wfDeprecated( __METHOD__, '1.43' ); + } + if ( $this->variants !== null ) { return $this->variants; } diff --git a/includes/specialpage/LoginSignupSpecialPage.php b/includes/specialpage/LoginSignupSpecialPage.php index 34e40ce082fc..c6829230dc21 100644 --- a/includes/specialpage/LoginSignupSpecialPage.php +++ b/includes/specialpage/LoginSignupSpecialPage.php @@ -44,7 +44,6 @@ use MediaWiki\Message\Message; use MediaWiki\Parser\Sanitizer; use MediaWiki\Session\SessionManager; use MediaWiki\Status\Status; -use MediaWiki\StubObject\StubGlobalUser; use MediaWiki\Title\Title; use MediaWiki\User\User; use PermissionsError; @@ -371,8 +370,14 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { } if ( !$this->proxyAccountCreation ) { + $context = RequestContext::getMain(); + $localContext = $this->getContext(); + if ( $context !== $localContext ) { + // remove AuthManagerSpecialPage context hack + $this->setContext( $context ); + } // Ensure that the context user is the same as the session user. - $this->setSessionUserForCurrentRequest(); + $this->getAuthManager()->setRequestContextUserFromSessionUser(); } $this->successfulAction( true ); @@ -505,30 +510,6 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { } /** - * Replace some globals to make sure the fact that the user has just been logged in is - * reflected in the current request. - */ - protected function setSessionUserForCurrentRequest() { - // phpcs:ignore MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage - global $wgLang; - - $context = RequestContext::getMain(); - $localContext = $this->getContext(); - if ( $context !== $localContext ) { - // remove AuthManagerSpecialPage context hack - $this->setContext( $context ); - } - - $user = $context->getRequest()->getSession()->getUser(); - - StubGlobalUser::setUser( $user ); - $context->setUser( $user ); - - // phpcs:ignore MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage - $wgLang = $context->getLanguage(); - } - - /** * @param AuthenticationRequest[] $requests A list of AuthorizationRequest objects, * used to generate the form fields. An empty array means a fatal error * (authentication cannot continue). diff --git a/includes/specials/SpecialBlockList.php b/includes/specials/SpecialBlockList.php index 8cb231871209..b4299afc4886 100644 --- a/includes/specials/SpecialBlockList.php +++ b/includes/specials/SpecialBlockList.php @@ -184,14 +184,12 @@ class SpecialBlockList extends SpecialPage { $readStage = $this->getConfig() ->get( MainConfigNames::BlockTargetMigrationStage ) & SCHEMA_COMPAT_READ_MASK; if ( $readStage === SCHEMA_COMPAT_READ_OLD ) { - $bl_deleted = 'ipb_deleted'; $bl_id = 'ipb_id'; $bt_auto = 'ipb_auto'; $bt_user = 'ipb_user'; $bl_expiry = 'ipb_expiry'; $bl_sitewide = 'ipb_sitewide'; } elseif ( $readStage === SCHEMA_COMPAT_READ_NEW ) { - $bl_deleted = 'bl_deleted'; $bl_id = 'bl_id'; $bt_auto = 'bt_auto'; $bt_user = 'bt_user'; diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php index 7a1bbe19e851..5ce276b5b6b2 100644 --- a/includes/specials/SpecialUpload.php +++ b/includes/specials/SpecialUpload.php @@ -362,6 +362,12 @@ class SpecialUpload extends SpecialPage { [ 'active' => true, 'msg' => 'upload-progress-processing' ] ); break; + default: + // unknown result, just show a generic error + $this->showUploadError( $this->getOutput()->parseAsInterface( + $status->getWikiText( false, false, $this->getLanguage() ) ) + ); + break; } break; case 'queued': @@ -381,6 +387,12 @@ class SpecialUpload extends SpecialPage { $status->getWikiText( false, false, $this->getLanguage() ) ) ); break; + default: + // unknown result, just show a generic error + $this->showUploadError( $this->getOutput()->parseAsInterface( + $status->getWikiText( false, false, $this->getLanguage() ) ) + ); + break; } break; default: diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php index 9e2efb18ddbe..c4380f1550b2 100644 --- a/includes/specials/pagers/BlockListPager.php +++ b/includes/specials/pagers/BlockListPager.php @@ -181,13 +181,18 @@ class BlockListPager extends TablePager { $language = $this->getLanguage(); - $formatted = ''; - $linkRenderer = $this->getLinkRenderer(); switch ( $name ) { case 'bl_timestamp': - $formatted = htmlspecialchars( $language->userTimeAndDate( $value, $this->getUser() ) ); + // Link the timestamp to the block ID. This allows users without permissions to change blocks + // to be able to generate a link to a specific block. + $formatted = $linkRenderer->makeKnownLink( + $this->specialPageFactory->getTitleForAlias( 'BlockList' ), + $language->userTimeAndDate( $value, $this->getUser() ), + [], + [ 'wpTarget' => "#{$row->bl_id}" ], + ); break; case 'target': @@ -578,7 +583,6 @@ class BlockListPager extends TablePager { $lb->setCaller( __METHOD__ ); $partialBlocks = []; - $userIds = []; foreach ( $result as $row ) { $target = $row->bt_address ?? $row->bt_user_text; if ( $target !== null ) { @@ -594,10 +598,6 @@ class BlockListPager extends TablePager { if ( !$row->bl_sitewide ) { $partialBlocks[] = (int)$row->bl_id; } - - if ( $row->bt_user ) { - $userIds[] = $row->bt_user; - } } if ( $partialBlocks ) { diff --git a/includes/title/Title.php b/includes/title/Title.php index 9dd6f8bb947b..34f5ca8736f3 100644 --- a/includes/title/Title.php +++ b/includes/title/Title.php @@ -3083,8 +3083,12 @@ class Title implements LinkTarget, PageIdentity { if ( $this->mEstimateRevisions === null ) { $dbr = $this->getDbProvider()->getReplicaDatabase(); - $this->mEstimateRevisions = $dbr->estimateRowCount( 'revision', '*', - [ 'rev_page' => $this->getArticleID() ], __METHOD__ ); + $this->mEstimateRevisions = $dbr->newSelectQueryBuilder() + ->select( '*' ) + ->from( 'revision' ) + ->where( [ 'rev_page' => $this->getArticleID() ] ) + ->caller( __METHOD__ ) + ->estimateRowCount(); } return $this->mEstimateRevisions; diff --git a/languages/i18n/en.json b/languages/i18n/en.json index e55c6061ce33..2088be8ec511 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -5,60 +5,6 @@ ] }, "sidebar": "\n* navigation\n** mainpage|mainpage-description\n** recentchanges-url|recentchanges\n** randompage-url|randompage\n** helppage|help-mediawiki\n* SEARCH\n* TOOLBOX\n* LANGUAGES", - "tog-underline": "Link underlining:", - "tog-hideminor": "Hide minor edits from recent changes", - "tog-hidepatrolled": "Hide patrolled edits from recent changes", - "tog-newpageshidepatrolled": "Hide patrolled pages from new page list", - "tog-hidecategorization": "Hide categorization of pages", - "tog-extendwatchlist": "Expand watchlist to show all changes, not just the most recent", - "tog-usenewrc": "Group changes by page in recent changes and watchlist", - "tog-editondblclick": "Edit pages on double click", - "tog-editsectiononrightclick": "Enable section editing by right clicking on section titles", - "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-watchmoves": "Add pages and files I move to my watchlist", - "tog-watchdeletion": "Add pages and files I delete to my watchlist", - "tog-watchuploads": "Add new files I upload to my watchlist", - "tog-watchrollback": "Add pages where I have performed a rollback to my watchlist", - "tog-minordefault": "Mark all edits minor by default", - "tog-previewontop": "Show preview before edit box", - "tog-previewonfirst": "Show preview when starting to edit", - "tog-enotifwatchlistpages": "Email me when a page or a 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", - "tog-enotifrevealaddr": "Reveal my email address in notification emails", - "tog-shownumberswatching": "Show the number of watching users", - "tog-oldsig": "Your existing signature:", - "tog-fancysig": "Treat signature as wikitext (without an automatic link to your user page)", - "tog-uselivepreview": "Show preview without reloading the page", - "tog-forceeditsummary": "Prompt me when entering a blank edit summary (or the default undo summary)", - "tog-watchlisthideown": "Hide my edits from the watchlist", - "tog-watchlisthidebots": "Hide bot edits from the watchlist", - "tog-watchlisthideminor": "Hide minor edits from the watchlist", - "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist", - "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)", - "tog-watchlistunwatchlinks": "Add direct unwatch/watch markers ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) to watched pages with changes (JavaScript required for toggle functionality)", - "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist", - "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist", - "tog-watchlisthidecategorization": "Hide categorization of pages", - "tog-ccmeonemails": "Send me copies of emails I send to other users", - "tog-diffonly": "Do not show page content below diffs", - "tog-showhiddencats": "Show hidden categories", - "tog-norollbackdiff": "Don't show diff after performing a rollback", - "tog-useeditwarning": "Warn me when I leave an edit page with unsaved changes", - "tog-prefershttps": "Always use a secure connection while logged in", - "tog-showrollbackconfirmation": "Show a confirmation prompt when clicking on a rollback link", - "tog-requireemail": "Send password reset emails only when both email address and username are provided.", - "tog-forcesafemode": "Always enable [[mw:Manual:Safemode|safe mode]]", - "tog-editrecovery": "Enable the [[Special:EditRecovery|{{int:editrecovery}}]] feature", - "tog-editrecovery-help": "You can give feedback on the [$1 project's talk page].", - "underline-always": "Always", - "underline-never": "Never", - "underline-default": "Skin or browser default", - "editfont-style": "Edit area font style:", - "editfont-monospace": "Monospaced font", - "editfont-sansserif": "Sans-serif font", - "editfont-serif": "Serif font", "sunday": "Sunday", "monday": "Monday", "tuesday": "Tuesday", @@ -417,8 +363,6 @@ "createacct-another-username-ph": "Enter the username", "createacct-helpusername": "", "createacct-username-help": "", - "yourpassword": "Password:", - "prefs-help-yourpassword": "Account recovery is enabled. See $1 for more settings.", "userlogin-yourpassword": "Password", "userlogin-yourpassword-ph": "Enter your password", "createacct-yourpassword-ph": "Enter a password", @@ -504,12 +448,6 @@ "fatalpassworderror": "$1\n\nFor security reasons, you cannot log in with this password. Please [$2 request a password reset email].", "wrongpassword": "Incorrect username or password entered.\nPlease try again.", "wrongpasswordempty": "Password entered was blank.\nPlease try again.", - "passwordtooshort": "Passwords must be at least {{PLURAL:$1|1 character|$1 characters}}.", - "passwordtoolong": "Passwords cannot be longer than {{PLURAL:$1|1 character|$1 characters}}.", - "passwordincommonlist": "The password entered is in a list of very commonly used passwords. Please choose a more unique password.", - "password-name-match": "Your password must be different from your username.", - "password-substring-username-match": "Your password must not appear within your username.", - "password-login-forbidden": "The use of this username and password has been forbidden.", "mailmypassword": "Reset password", "passwordremindertitle": "New temporary password for {{SITENAME}}", "passwordremindertext": "Someone (from IP address $1) requested a new\npassword for {{SITENAME}} ($4). A temporary password for user\n\"$2\" has been created and was set to \"$3\". If this was your\nintent, you will need to log in and choose a new password now.\nYour temporary password will expire in {{PLURAL:$5|one day|$5 days}}.\n\nIf someone else made this request, or if you have remembered your password,\nand you no longer wish to change it, you may ignore this message and\ncontinue using your old password.", @@ -524,10 +462,6 @@ "signupend-https": "", "mailerror": "Error sending mail: $1", "acct_creation_throttle_hit": "Visitors to this wiki using your IP address have created {{PLURAL:$1|1 account|$1 accounts}} in the last $2, which is the maximum allowed in this time period.\nAs a result, visitors using this IP address cannot create any more accounts at the moment.", - "emailauthenticated": "Your email address was confirmed on $2 at $3.", - "emailnotauthenticated": "Your email address is not yet confirmed.\nNo email will be sent for any of the following features.", - "noemailprefs": "Specify an email address in your preferences for these features to work.", - "emailconfirmlink": "Confirm your email address", "invalidemailaddress": "The email address cannot be accepted as it appears to have an invalid format.\nPlease 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.", @@ -1121,120 +1055,15 @@ "search-error": "An error has occurred while searching: $1", "search-warning": "A warning has occurred while searching: $1", "opensearch-desc": "{{SITENAME}} ({{CONTENTLANGUAGE}})", - "preferences": "Preferences", - "preferences-summary": "", "mypreferences": "Preferences", - "prefs-edits": "Number of edits:", - "prefsnologintext2": "Please log in to change your preferences.", - "prefs-skin": "Skin", - "prefs-skin-prefs": "Skin preferences", - "prefs-skin-responsive": "Enable responsive mode", - "prefs-help-skin-responsive": "Adapt layout to screen size on mobile.", - "skin-preview": "Preview", - "datedefault": "No preference", - "prefs-help-forcesafemode": "Disable on-wiki scripts and stylesheets.", "prefs-labs": "Labs features", - "prefs-user-pages": "User pages", - "prefs-personal": "User profile", - "prefs-rc": "Recent changes", - "prefs-watchlist": "Watchlist", - "prefs-editwatchlist": "Edit watchlist", - "prefs-editwatchlist-label": "Edit entries on your watchlist:", - "prefs-editwatchlist-edit": "View and remove titles on your watchlist", - "prefs-editwatchlist-raw": "Edit raw watchlist", - "prefs-editwatchlist-clear": "Clear your watchlist", - "prefs-watchlist-days": "Days to show in watchlist:", - "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}", - "prefs-watchlist-edits": "Maximum number of changes to show in watchlist:", - "prefs-watchlist-edits-max": "Maximum number: 1000", - "prefs-watchlist-token": "Watchlist token:", - "prefs-watchlist-managetokens": "Manage tokens", "prefs-misc": "Misc", - "prefs-resetpass": "Change password", - "prefs-changeemail": "Change or remove email address", - "prefs-setemail": "Set an email address", - "prefs-email": "Email options", - "prefs-rendering": "Appearance", - "prefs-searchmisc": "General", - "searchprefs": "Search preferences", - "searchprefs-noresults": "No results", - "searchprefs-results": "$1 {{PLURAL:$1|result|results}}", - "saveprefs": "Save", - "restoreprefs": "Restore all default settings", - "prefs-editing": "Editing", "searchresultshead": "Search", - "recentchangesdays": "Days to show in recent changes:", - "recentchangesdays-max": "Maximum $1 {{PLURAL:$1|day|days}}", - "recentchangescount": "Number of edits to show in recent changes, page histories, and in logs, by default:", - "prefs-back-title": "Back to preferences", - "prefs-description-personal": "Control how you appear, connect, and communicate.", - "prefs-description-rendering": "Configure skin, size, and reading options.", - "prefs-description-editing": "Customize how you make, track, and review edits.", - "prefs-description-rc": "Customise the recent changes feed.", - "prefs-description-watchlist": "Manage and personalize the list of pages you track.", - "prefs-description-searchoptions": "Choose how autocomplete and results work.", "prefs-description-misc": "Customize the table of contents.", - "prefs-help-recentchangescount": "Maximum number: 1000", "prefs-help-watchlist-token2": "This is the secret key to the web feed of your watchlist.\nAnyone who knows it will be able to read your watchlist, so do not share it.\nIf you need to, [[Special:ResetTokens|you can reset it]].", - "prefs-help-tokenmanagement": "You can see and reset the secret key for your account that can access the Web feed of your watchlist. Anyone who knows the key will be able to read your watchlist, so do not share it.", - "prefs-user-downloaddata-label": "Access account data:", - "prefs-user-downloaddata-info": "My account data from this project", - "prefs-user-downloaddata-help-message": "", - "prefs-user-restoreprefs-label": "Reset settings:", - "prefs-user-restoreprefs-info": "Restore all default preferences (in all sections)", - "savedprefs": "Your preferences have been saved.", "savedrights": "The user groups of {{GENDER:$1|$1}} have been saved.", - "timezonelegend": "Time zone:", - "localtime": "Local time:", - "timezoneuseserverdefault": "Use wiki default ($1)", - "timezoneuseoffset": "Other (time offset from UTC)", - "timezone-useoffset-placeholder": "Example values: \"-07:00\" or \"01:00\"", - "timezone-invalid": "Invalid time zone or time offset.", - "servertime": "Server time:", - "guesstimezone": "Fill in from browser", - "timezoneregion-africa": "Africa", - "timezoneregion-america": "America", - "timezoneregion-antarctica": "Antarctica", - "timezoneregion-arctic": "Arctic", - "timezoneregion-asia": "Asia", - "timezoneregion-atlantic": "Atlantic Ocean", - "timezoneregion-australia": "Australia", - "timezoneregion-europe": "Europe", - "timezoneregion-indian": "Indian Ocean", - "timezoneregion-pacific": "Pacific Ocean", - "allowemail": "Allow other users to email me", - "email-allow-new-users-label": "Allow emails from brand-new users", - "email-mutelist-label": "Prohibit these users from emailing me:", - "prefs-searchoptions": "Search", "prefs-namespaces": "Namespaces", "default": "default", - "prefs-files": "Files", - "prefs-custom-css": "Custom CSS", - "prefs-custom-js": "Custom JavaScript", - "prefs-custom-cssjs-safemode": "Custom CSS/JavaScript are currently unavailable as safe mode has been enabled. Please [[#mw-input-wpforcesafemode|disable safe mode]] to use custom CSS/JavaScript.", - "prefs-common-config": "Shared CSS/JavaScript for all skins:", - "prefs-reset-intro": "You can use this page to reset your preferences to the site defaults.\nThis cannot be undone.", - "prefs-reset-confirm": "Yes, I want to reset my preferences.", - "prefs-emailconfirm-label": "Email confirmation:", - "youremail": "Email:", - "username": "{{GENDER:$1|Username}}:", - "prefs-memberingroups": "{{GENDER:$2|Member}} of {{PLURAL:$1|group|groups}}:", - "prefs-memberingroups-type": "$1", - "group-membership-link-with-expiry": "$1 (until $2)", - "prefs-registration": "Registration time:", - "prefs-registration-date-time": "$1", - "yourrealname": "Real name:", - "yourlanguage": "Language:", - "yourvariant": "Content language variant:", - "prefs-help-variant": "Your preferred variant or orthography to display the content pages of this wiki in.", - "yournick": "New signature:", - "prefs-help-signature": "Comments on talk pages should be signed with \"<nowiki>~~~~</nowiki>\", which will be converted into your signature and a timestamp.", - "badsig": "Invalid raw signature.\nCheck HTML tags.", - "badsightml": "Your signature contains invalid or deprecated HTML syntax:", - "badsiglinks": "Your signature must include a link to your user page, talk page or contributions on this wiki. Please add it, for example: <code>$1</code>.", - "badsigsubst": "Your signature contains nested substitution (e.g. <code>subst:</code> or <code><nowiki>~~~~</nowiki></code>).", - "badsiglength": "Your signature is too long.\nIt must not be more than $1 {{PLURAL:$1|character|characters}} long.", - "badsiglinebreak": "Your signature must consist of a single line of wikitext.", "linterror-bogus-image-options": "Bogus file option", "linterror-deletable-table-tag": "Table tag that should be deleted", "linterror-fostered": "Fostered content", @@ -1257,47 +1086,7 @@ "linterror-tidy-whitespace-bug": "Whitespace parsing bug", "linterror-unclosed-quotes-in-heading": "Unclosed quote which leaks out of the table of contents", "linterror-wikilink-in-extlink": "Links in links", - "yourgender": "How do you prefer to be described?", - "gender-unknown": "When mentioning you, the software will use gender neutral words whenever possible", - "gender-notknown": "They edit wiki pages", - "gender-male": "He edits wiki pages", - "gender-female": "She edits wiki pages", - "prefs-help-gender": "Setting this preference is optional.\nThe software uses its value to address you and to mention you to others using the appropriate grammatical gender.\nThis information will be public.", "email": "Email", - "prefs-help-realname": "Real name is optional.\nIf provided, it may be used to give you attribution for your work.", - "prefs-help-email": "Email address is optional, but is needed for password resets, should you forget your password.", - "prefs-help-email-others": "You can also choose to let others contact you by email through a link on your user or talk page.\nYour email address is not revealed when other users contact you.", - "prefs-help-email-required": "Email address is required.", - "prefs-help-requireemail": "This improves privacy and helps prevent unsolicited emails.", - "prefs-info": "Basic information", - "prefs-i18n": "Internationalisation", - "prefs-signature": "Signature", - "prefs-signature-invalid-warning": "Your signature may cause problems with some tools.", - "prefs-signature-invalid-new": "Your current signature is invalid. Although you can still use it, you won't be able to change it until you correct it.", - "prefs-signature-invalid-disallow": "Your current signature is invalid. Until you correct it, the default signature will be used when signing your comments.", - "prefs-signature-highlight-error": "Show error location", - "prefs-signature-error-details": "Learn more", - "prefs-dateformat": "Date format", - "prefs-timeoffset": "Time offset", - "prefs-advancedediting": "General options", - "prefs-developertools": "Developer tools", - "prefs-editor": "Editor", - "prefs-discussion": "Discussion pages", - "prefs-preview": "Preview", - "prefs-advancedrc": "Advanced options", - "prefs-advancedrendering": "Advanced options", - "prefs-advancedsearchoptions": "Advanced options", - "prefs-advancedwatchlist": "Advanced options", - "prefs-displayrc": "Display options", - "prefs-displaywatchlist": "Display options", - "prefs-changesrc": "Changes shown", - "prefs-changeswatchlist": "Changes shown", - "prefs-pageswatchlist": "Watched pages", - "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.", - "prefs-sections-navigation-hint": "Tip: You can use the Tab and Shift + Tab keys to navigate between the preference sections.", "userrights": "User rights", "userrights-summary": "", "userrights-lookup-user": "Select a user", @@ -1726,10 +1515,6 @@ "rcfilters-watchlist-markseen-button": "Mark all changes as seen", "rcfilters-watchlist-edit-watchlist-button": "Edit your list of watched pages", "rcfilters-watchlist-showupdated": "Changes to pages you haven't visited since the changes occurred are in <strong>bold</strong>, with solid markers.", - "rcfilters-preference-label": "Use non-JavaScript interface", - "rcfilters-preference-help": "Loads [[{{#special:RecentChanges}}|recent changes]] and [[{{#special:RecentChangesLinked}}|related changes]] without the filtered search or the highlighting functionality.", - "rcfilters-watchlist-preference-label": "Use non-JavaScript interface", - "rcfilters-watchlist-preference-help": "Loads [[{{#special:Watchlist}}|watchlist]] without filters search or highlighting functionality.", "rcfilters-filter-showlinkedfrom-label": "Show changes on pages linked from", "rcfilters-filter-showlinkedfrom-option-label": "<strong>Pages linked from</strong> the selected page", "rcfilters-filter-showlinkedto-label": "Show changes on pages linking to", @@ -3360,7 +3145,6 @@ "tooltip-upload": "Start upload", "tooltip-rollback": "\"Rollback\" reverts the last contributor's edit(s) to this page in one click", "tooltip-undo": "\"Undo\" reverts this edit and opens the edit form in preview mode. It allows adding a reason in the summary.", - "tooltip-preferences-save": "Save preferences", "tooltip-summary": "Enter a short summary", "interlanguage-link-title": "$1 – $2", "interlanguage-link-title-langonly": "$1", @@ -3484,8 +3268,6 @@ "previousdiff": "← Older edit", "nextdiff": "Newer edit →", "mediawarning": "<strong>Warning:</strong> This file type may contain malicious code.\nBy executing it, your system may be compromised.", - "imagemaxsize": "Image size limit on file description pages:", - "thumbsize": "Thumbnail size:", "widthheight": "$1 × $2", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|page|pages}}", "file-info": "file size: $1, MIME type: $2", @@ -4255,10 +4037,6 @@ "searchsuggest-containing": "Search for pages containing", "search-match-redirect-label": "Go to exact match when searching", "search-match-redirect-help": "Select this to go to a page when that page title matches what you have searched for", - "search-thumbnail-extra-namespaces-label": "Show thumbnails in Special:Search on Desktop", - "search-thumbnail-extra-namespaces-message": "Displays thumbnails for $1 {{PLURAL:$2|namespace|namespaces}} results on the {{#special:search}} page", - "searchlimit-label": "Number of search results to show on each page:", - "searchlimit-help": "Maximum number: $1", "api-clientside-error-noconnect": "Could not connect to the server. Make sure you have a working internet connection and try again.", "api-clientside-error-http": "Server returned error: HTTP $1.", "api-clientside-error-timeout": "The server did not respond within the expected time.", diff --git a/languages/i18n/preferences/en.json b/languages/i18n/preferences/en.json new file mode 100644 index 000000000000..a8d45cad9e55 --- /dev/null +++ b/languages/i18n/preferences/en.json @@ -0,0 +1,229 @@ +{ + "@metadata": { + "authors": [ + "EpicPupper" + ] + }, + "preferences": "Preferences", + "preferences-summary": "", + "prefsnologintext2": "Please log in to change your preferences.", + "searchprefs": "Search preferences", + "searchprefs-noresults": "No results", + "searchprefs-results": "$1 {{PLURAL:$1|result|results}}", + "saveprefs": "Save", + "tooltip-preferences-save": "Save preferences", + "savedprefs": "Your preferences have been saved.", + "prefs-back-title": "Back to preferences", + "prefs-tabs-navigation-hint": "Tip: You can use the left and right arrow keys to navigate between the tabs in the tabs list.", + "prefs-sections-navigation-hint": "Tip: You can use the Tab and Shift + Tab keys to navigate between the preference sections.", + "prefs-personal": "User profile", + "prefs-description-personal": "Control how you appear, connect, and communicate.", + "prefs-info": "Basic information", + "username": "{{GENDER:$1|Username}}:", + "prefs-memberingroups": "{{GENDER:$2|Member}} of {{PLURAL:$1|group|groups}}:", + "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (until $2)", + "prefs-edits": "Number of edits:", + "prefs-registration": "Registration time:", + "prefs-registration-date-time": "$1", + "yourrealname": "Real name:", + "prefs-help-realname": "Real name is optional.\nIf provided, it may be used to give you attribution for your work.", + "yourpassword": "Password:", + "prefs-resetpass": "Change password", + "passwordtooshort": "Passwords must be at least {{PLURAL:$1|1 character|$1 characters}}.", + "passwordtoolong": "Passwords cannot be longer than {{PLURAL:$1|1 character|$1 characters}}.", + "password-substring-username-match": "Your password must not appear within your username.", + "password-name-match": "Your password must be different from your username.", + "password-login-forbidden": "The use of this username and password has been forbidden.", + "passwordincommonlist": "The password entered is in a list of very commonly used passwords. Please choose a more unique password.", + "prefs-help-yourpassword": "Account recovery is enabled. See $1 for more settings.", + "tog-prefershttps": "Always use a secure connection while logged in", + "prefs-help-prefershttps": "This preference will take effect on your next login.", + "prefs-user-downloaddata-label": "Access account data:", + "prefs-user-downloaddata-help-message": "", + "prefs-user-downloaddata-info": "My account data from this project", + "prefs-user-restoreprefs-label": "Reset settings:", + "prefs-user-restoreprefs-info": "Restore all default preferences (in all sections)", + "prefs-i18n": "Internationalisation", + "yourlanguage": "Language:", + "yourgender": "How do you prefer to be described?", + "gender-notknown": "They edit wiki pages", + "gender-unknown": "When mentioning you, the software will use gender neutral words whenever possible", + "gender-female": "She edits wiki pages", + "gender-male": "He edits wiki pages", + "prefs-help-gender": "Setting this preference is optional.\nThe software uses its value to address you and to mention you to others using the appropriate grammatical gender.\nThis information will be public.", + "yourvariant": "Content language variant:", + "prefs-help-variant": "Your preferred variant or orthography to display the content pages of this wiki in.", + "prefs-signature": "Signature", + "tog-oldsig": "Your existing signature:", + "yournick": "New signature:", + "tog-fancysig": "Treat signature as wikitext (without an automatic link to your user page)", + "prefs-help-signature": "Comments on talk pages should be signed with \"<nowiki>~~~~</nowiki>\", which will be converted into your signature and a timestamp.", + "prefs-signature-invalid-warning": "Your signature may cause problems with some tools.", + "prefs-signature-invalid-new": "Your current signature is invalid. Although you can still use it, you won't be able to change it until you correct it.", + "prefs-signature-invalid-disallow": "Your current signature is invalid. Until you correct it, the default signature will be used when signing your comments.", + "prefs-signature-highlight-error": "Show error location", + "prefs-signature-error-details": "Learn more", + "badsig": "Invalid raw signature.\nCheck HTML tags.", + "badsiglength": "Your signature is too long.\nIt must not be more than $1 {{PLURAL:$1|character|characters}} long.", + "badsigsubst": "Your signature contains nested substitution (e.g. <code>subst:</code> or <code><nowiki>~~~~</nowiki></code>).", + "badsightml": "Your signature contains invalid or deprecated HTML syntax:", + "badsiglinks": "Your signature must include a link to your user page, talk page or contributions on this wiki. Please add it, for example: <code>$1</code>.", + "badsiglinebreak": "Your signature must consist of a single line of wikitext.", + "prefs-email": "Email options", + "youremail": "Email:", + "prefs-setemail": "Set an email address", + "prefs-changeemail": "Change or remove email address", + "prefs-help-email": "Email address is optional, but is needed for password resets, should you forget your password.", + "prefs-help-email-required": "Email address is required.", + "prefs-help-email-others": "You can also choose to let others contact you by email through a link on your user or talk page.\nYour email address is not revealed when other users contact you.", + "tog-requireemail": "Send password reset emails only when both email address and username are provided.", + "prefs-help-requireemail": "This improves privacy and helps prevent unsolicited emails.", + "noemailprefs": "Specify an email address in your preferences for these features to work.", + "emailnotauthenticated": "Your email address is not yet confirmed.\nNo email will be sent for any of the following features.", + "emailconfirmlink": "Confirm your email address", + "prefs-emailconfirm-label": "Email confirmation:", + "emailauthenticated": "Your email address was confirmed on $2 at $3.", + "allowemail": "Allow other users to email me", + "email-allow-new-users-label": "Allow emails from brand-new users", + "tog-ccmeonemails": "Send me copies of emails I send to other users", + "email-mutelist-label": "Prohibit these users from emailing me:", + "tog-enotifwatchlistpages": "Email me when a page or a 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", + "tog-enotifrevealaddr": "Reveal my email address in notification emails", + "prefs-user-pages": "User pages", + "prefs-rendering": "Appearance", + "prefs-description-rendering": "Configure skin, size, and reading options.", + "prefs-skin": "Skin", + "skin-preview": "Preview", + "prefs-common-config": "Shared CSS/JavaScript for all skins:", + "prefs-custom-css": "Custom CSS", + "prefs-custom-js": "Custom JavaScript", + "prefs-custom-cssjs-safemode": "Custom CSS/JavaScript are currently unavailable as safe mode has been enabled. Please [[#mw-input-wpforcesafemode|disable safe mode]] to use custom CSS/JavaScript.", + "prefs-skin-prefs": "Skin preferences", + "prefs-skin-responsive": "Enable responsive mode", + "prefs-help-skin-responsive": "Adapt layout to screen size on mobile.", + "prefs-dateformat": "Date format", + "datedefault": "No preference", + "prefs-timeoffset": "Time offset", + "servertime": "Server time:", + "localtime": "Local time:", + "timezonelegend": "Time zone:", + "timezoneuseserverdefault": "Use wiki default ($1)", + "timezoneuseoffset": "Other (time offset from UTC)", + "timezone-useoffset-placeholder": "Example values: \"-07:00\" or \"01:00\"", + "timezone-invalid": "Invalid time zone or time offset.", + "guesstimezone": "Fill in from browser", + "timezoneregion-africa": "Africa", + "timezoneregion-america": "America", + "timezoneregion-antarctica": "Antarctica", + "timezoneregion-arctic": "Arctic", + "timezoneregion-asia": "Asia", + "timezoneregion-atlantic": "Atlantic Ocean", + "timezoneregion-australia": "Australia", + "timezoneregion-europe": "Europe", + "timezoneregion-indian": "Indian Ocean", + "timezoneregion-pacific": "Pacific Ocean", + "prefs-files": "Files", + "imagemaxsize": "Image size limit on file description pages:", + "thumbsize": "Thumbnail size:", + "prefs-diffs": "Diffs", + "tog-diffonly": "Do not show page content below diffs", + "tog-norollbackdiff": "Don't show diff after performing a rollback", + "prefs-advancedrendering": "Advanced options", + "tog-underline": "Link underlining:", + "underline-default": "Skin or browser default", + "underline-never": "Never", + "underline-always": "Always", + "tog-showhiddencats": "Show hidden categories", + "tog-showrollbackconfirmation": "Show a confirmation prompt when clicking on a rollback link", + "tog-forcesafemode": "Always enable [[mw:Manual:Safemode|safe mode]]", + "prefs-help-forcesafemode": "Disable on-wiki scripts and stylesheets.", + "prefs-editing": "Editing", + "prefs-description-editing": "Customize how you make, track, and review edits.", + "prefs-advancedediting": "General options", + "tog-editsectiononrightclick": "Enable section editing by right clicking on section titles", + "tog-editondblclick": "Edit pages on double click", + "prefs-editor": "Editor", + "editfont-style": "Edit area font style:", + "editfont-monospace": "Monospaced font", + "editfont-sansserif": "Sans-serif font", + "editfont-serif": "Serif font", + "tog-minordefault": "Mark all edits minor by default", + "tog-forceeditsummary": "Prompt me when entering a blank edit summary (or the default undo summary)", + "tog-editrecovery": "Enable the [[Special:EditRecovery|{{int:editrecovery}}]] feature", + "tog-editrecovery-help": "You can give feedback on the [$1 project's talk page].", + "tog-useeditwarning": "Warn me when I leave an edit page with unsaved changes", + "prefs-preview": "Preview", + "tog-previewonfirst": "Show preview when starting to edit", + "tog-previewontop": "Show preview before edit box", + "tog-uselivepreview": "Show preview without reloading the page", + "prefs-discussion": "Discussion pages", + "prefs-developertools": "Developer tools", + "prefs-rc": "Recent changes", + "prefs-description-rc": "Customise the recent changes feed.", + "prefs-displayrc": "Display options", + "recentchangesdays": "Days to show in recent changes:", + "recentchangesdays-max": "Maximum $1 {{PLURAL:$1|day|days}}", + "recentchangescount": "Number of edits to show in recent changes, page histories, and in logs, by default:", + "prefs-help-recentchangescount": "Maximum number: 1000", + "prefs-advancedrc": "Advanced options", + "tog-usenewrc": "Group changes by page in recent changes and watchlist", + "rcfilters-preference-label": "Use non-JavaScript interface", + "rcfilters-preference-help": "Loads [[{{#special:RecentChanges}}|recent changes]] and [[{{#special:RecentChangesLinked}}|related changes]] without the filtered search or the highlighting functionality.", + "prefs-changesrc": "Changes shown", + "tog-hideminor": "Hide minor edits from recent changes", + "tog-hidecategorization": "Hide categorization of pages", + "tog-hidepatrolled": "Hide patrolled edits from recent changes", + "tog-newpageshidepatrolled": "Hide patrolled pages from new page list", + "tog-shownumberswatching": "Show the number of watching users", + "prefs-watchlist": "Watchlist", + "prefs-description-watchlist": "Manage and personalize the list of pages you track.", + "prefs-editwatchlist": "Edit watchlist", + "prefs-editwatchlist-label": "Edit entries on your watchlist:", + "prefs-editwatchlist-edit": "View and remove titles on your watchlist", + "prefs-editwatchlist-raw": "Edit raw watchlist", + "prefs-editwatchlist-clear": "Clear your watchlist", + "prefs-displaywatchlist": "Display options", + "prefs-watchlist-days": "Days to show in watchlist:", + "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}", + "prefs-watchlist-edits": "Maximum number of changes to show in watchlist:", + "prefs-watchlist-edits-max": "Maximum number: 1000", + "prefs-advancedwatchlist": "Advanced options", + "tog-extendwatchlist": "Expand watchlist to show all changes, not just the most recent", + "tog-watchlistunwatchlinks": "Add direct unwatch/watch markers ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) to watched pages with changes (JavaScript required for toggle functionality)", + "rcfilters-watchlist-preference-label": "Use non-JavaScript interface", + "rcfilters-watchlist-preference-help": "Loads [[{{#special:Watchlist}}|watchlist]] without filters search or highlighting functionality.", + "prefs-changeswatchlist": "Changes shown", + "tog-watchlisthideminor": "Hide minor edits from the watchlist", + "tog-watchlisthidebots": "Hide bot edits from the watchlist", + "tog-watchlisthideown": "Hide my edits from the watchlist", + "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist", + "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist", + "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)", + "tog-watchlisthidecategorization": "Hide categorization of pages", + "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist", + "prefs-pageswatchlist": "Watched pages", + "tog-watchdefault": "Add pages and files I edit to my watchlist", + "tog-watchmoves": "Add pages and files I move to my watchlist", + "tog-watchdeletion": "Add pages and files I delete to my watchlist", + "tog-watchcreations": "Add pages I create and files I upload to my watchlist", + "tog-watchuploads": "Add new files I upload to my watchlist", + "tog-watchrollback": "Add pages where I have performed a rollback to my watchlist", + "prefs-tokenwatchlist": "Token", + "prefs-watchlist-token": "Watchlist token:", + "prefs-watchlist-managetokens": "Manage tokens", + "prefs-help-tokenmanagement": "You can see and reset the secret key for your account that can access the Web feed of your watchlist. Anyone who knows the key will be able to read your watchlist, so do not share it.", + "prefs-searchoptions": "Search", + "prefs-description-searchoptions": "Choose how autocomplete and results work.", + "prefs-searchmisc": "General", + "searchlimit-label": "Number of search results to show on each page:", + "searchlimit-help": "Maximum number: $1", + "search-thumbnail-extra-namespaces-label": "Show thumbnails in Special:Search on Desktop", + "search-thumbnail-extra-namespaces-message": "Displays thumbnails for $1 {{PLURAL:$2|namespace|namespaces}} results on the {{#special:search}} page", + "prefs-advancedsearchoptions": "Advanced options", + "prefs-reset-intro": "You can use this page to reset your preferences to the site defaults.\nThis cannot be undone.", + "prefs-reset-confirm": "Yes, I want to reset my preferences.", + "restoreprefs": "Restore all default settings" +} diff --git a/languages/i18n/preferences/qqq.json b/languages/i18n/preferences/qqq.json new file mode 100644 index 000000000000..9a443ddd9b10 --- /dev/null +++ b/languages/i18n/preferences/qqq.json @@ -0,0 +1,487 @@ +{ + "@metadata": { + "authors": [ + "*Surak*", + "1233qwer1234qwer4", + "127.0.0.1", + "20kdc", + "2axterix2", + "A2093064", + "Abanima", + "Acamicamacaraca", + "Ahonc", + "Ajeje Brazorf", + "Akapochtli", + "Aleator", + "AlexSm", + "Amahoney", + "Amire80", + "AnakngAraw", + "Ans", + "Antime", + "Aotake", + "Aursani", + "Avatar6", + "BaRaN6161 TURK", + "BadDog", + "Bagas Chrisara", + "Bangin", + "Bencemac", + "Bennylin", + "Benojan", + "Beta16", + "Bgo eiu", + "Bilalokms", + "Boivie", + "Bosogo", + "Brest", + "BrokenArrow", + "Byfserag", + "Byrial", + "BáthoryPéter", + "Chaduvari", + "Chadyka", + "Ciencia Al Poder", + "Claudia Hattitten", + "Codex Sinaiticus", + "Conquistador", + "Crt", + "Daimona Eaytoy", + "Dalibor Bosits", + "Darth Kule", + "Darzz", + "Deadelf", + "Dekel E", + "Dreamy Jazz", + "Dsvyas", + "Ed g2s", + "Eihel", + "Emilkris33", + "Erwin", + "Erwin85", + "EugeneZelenko", + "FRacco", + "Fitoschido", + "Freddy2001", + "Frigory", + "Fryed-peach", + "Garas", + "GerardM", + "Gombang", + "Guglani", + "Gustronico", + "Guycn2", + "Hamilton Abreu", + "Harsh4101991", + "Helix84", + "Holek", + "Huji", + "IAlex", + "INkubusse", + "Iketsi", + "Incnis Mrsi", + "Iniquity", + "Iwan Novirion", + "J. 'mach' wust", + "Jdforrester", + "Jeeputer", + "Jhertel", + "Joao Xavier", + "Jon Harald Søby", + "Joseph", + "Kaganer", + "Kambai Akau", + "Karduelis", + "Kazu89", + "Kghbln", + "Kizito", + "Kizule", + "Klenje", + "Klutzy", + "Krenair", + "Krinkle", + "Ktkaushik", + "Ktrst", + "Kwj2772", + "LaMagiaaa", + "Leinad", + "Lejonel", + "Li-sung", + "Liangent", + "Liuxinyu970226", + "Lloffiwr", + "MF-Warburg", + "MIKHEIL", + "MRidhaAJ", + "Macofe", + "Mainframe98", + "Malafaya", + "Mar(c)", + "MarcoAurelio", + "MarkvA", + "Matma Rex", + "Matěj Suchánek", + "MaxSem", + "Mazab IZW", + "McDutchie", + "MegaAlex", + "Meno25", + "Metalhead64", + "MichaelFrey", + "Mido", + "Mihai", + "MinecraftAustralia", + "Minh Nguyen", + "Moha", + "MongolWiki", + "Mormegil", + "Mpradeep", + "Msz2001", + "MuratTheTurkish", + "Murma174", + "MusikAnimal", + "Najami", + "Naudefj", + "Nemo bis", + "Nguyenphutrong2", + "Niels", + "Nike", + "Njardarlogar", + "Nnemo", + "No Sleep till Krupki", + "No se", + "Node ue", + "Octahedron80", + "Od1n", + "Okras", + "Onecountry", + "Opraco", + "Orlodrim", + "OsamaK", + "Patriot Kur", + "Pginer", + "PhiLiP", + "Piangpha", + "PiefPafPier", + "Pierpao", + "Pikne", + "Platonides", + "PleaseStand", + "Pols12", + "Ponor", + "Prima klasy4na", + "Prometheus.pyrphoros", + "Psubhashish", + "Psychoslave", + "Purodha", + "Pxos", + "Quiddity", + "Rancher", + "Raymond", + "Reedy", + "Robby", + "Robin van der Vliet", + "Robin0van0der0vliet", + "Rodney Araujo", + "Rotemliss", + "Ryan Schmidt", + "SPQRobin", + "Sanbec", + "Sandipan", + "Saurmandal", + "Sborsody", + "Scimonster", + "Se4598", + "Seb35", + "Sherbrooke", + "Shirayuki", + "Shisir 1945", + "Shushruth", + "Siddhartha Ghai", + "Siebrand", + "Singularity", + "Sionnach", + "Slomox", + "Sp5uhe", + "Srhat", + "Stjn", + "Stryn", + "Subhashkataria21.90", + "SunAfterRain", + "Sunny00217", + "Sunpriat", + "TMg", + "TTO", + "Tacsipacsi", + "Tedjuh10", + "Tgr", + "The Discoverer", + "The Evil IP address", + "TheSandDoctor", + "Thibaut120094", + "Titore", + "Toliño", + "Tomato Cream", + "Totosunarto", + "Trizek (WMF)", + "UV", + "Umherirrender", + "Urhixidur", + "Usarker", + "V.narsikar", + "Verdy p", + "Vinhtantran", + "Vivaelcelta", + "Vriullop", + "Waldir", + "Waldyrious", + "Wangombe", + "Whym", + "Winstonyin", + "Wladek92", + "Wnme", + "Wolfdietmann", + "Woytecr", + "Xiplus", + "YaThaWinTha", + "Yekrats", + "Ynwala", + "Yuriy Apostol", + "Yyy", + "Zabe", + "ZlyiLev", + "Zoranzoki21", + "marktraceur", + "Žekřil71pl", + "Ата", + "פוילישער", + "ديفيد", + "আফতাবুজ্জামান", + "គីមស៊្រុន", + "捍粵者", + "아라" + ] + }, + "preferences": "Title of the [[Special:Preferences]] page.\n{{Identical|Preferences}}", + "preferences-summary": "{{doc-specialpagesummary|preferences}}", + "prefsnologintext2": "Showed on Special:Userlogin when user tries to access their preferences before logging in", + "searchprefs": "'''Note that this means \"Search in the preferences\" and not \"Preferences of searching\".'''\n\nPlaceholder for the input users can use to search the preferences page.", + "searchprefs-noresults": "Message used when no results are found when searching the preferences page.", + "searchprefs-results": "Message used when results are found when searching the preferences page. Parameters:\n* $1 - number of results", + "saveprefs": "Button for saving changes in the preferences page.\n\nSee also:\n* {{msg-mw|Saveprefs}}\n* {{msg-mw|Accesskey-preferences-save}}\n* {{msg-mw|Tooltip-preferences-save}}\n{{Identical|Save}}", + "tooltip-preferences-save": "Used as tooltip for Save button.\n\nSee also:\n* {{msg-mw|Saveprefs}}\n* {{msg-mw|Accesskey-preferences-save}}\n* {{msg-mw|Tooltip-preferences-save}}", + "savedprefs": "This message appears after saving changes to your user preferences.", + "prefs-back-title": "Used in [[Special:Preferences]] as the title for a back button", + "prefs-tabs-navigation-hint": "Hint message that explains the arrow key navigation for the tabs on [[Special:Preferences]] to screenreader users.", + "prefs-sections-navigation-hint": "Hint message that explains the keyboard navigation for the mobile version of [[Special:Preferences]] to screenreader users.", + "prefs-personal": "Title of a tab in [[Special:Preferences]].\n{{Identical|User profile}}", + "prefs-description-personal": "Used in [[Special:Preferences]] for mobile to describe the User Profile section.", + "prefs-info": "Header for the box giving basic information on the user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.\n{{Identical|Basic information}}", + "username": "Username field in [[Special:Preferences]]. $1 is the current username for GENDER distinction (depends on grammatical gender setting).\n\n{{Identical|Username}}", + "prefs-memberingroups": "This message is shown on [[Special:Preferences]], first tab.\n\nParameters:\n* $1 - number of user groups\n* $2 - the username for GENDER\nSee also:\n* {{msg-mw|Prefs-memberingroups-type}} (you can place text after the list of groups here)", + "prefs-memberingroups-type": "{{optional}}\nParameters:\n* $1 - list of group names\n* $2 - list of group member names. Label for these is {{msg-mw|Prefs-memberingroups}}", + "group-membership-link-with-expiry": "Used as part of a list of user groups, to show the time and date when a user's membership of a group expires. That is, they are a member of that group \"until\" the specified date and time.\n\nParameters:\n* $1 - group name\n* $2 - time and date of expiry\n* $3 - date of expiry\n* $4 - time of expiry", + "prefs-edits": "In user preferences.\n{{Identical|Number of edits}}", + "prefs-registration": "Used in [[Special:Preferences]].", + "prefs-registration-date-time": "{{optional}}\nUsed in [[Special:Preferences]]. Parameters are:\n* $1 date and time of registration\n* $2 date of registration\n* $3 time of registration", + "yourrealname": "Used in [[Special:Preferences]], first tab.\n{{Identical|Real name}}", + "prefs-help-realname": "In user preferences.\n{{Identical|Real name attribution}}", + "yourpassword": "In user preferences\n\n{{Identical|Password}}", + "prefs-resetpass": "Button on user data tab in user preferences. When you click the button you go to the special page [[Special:ResetPass]].\n\n{{Identical|Change password}}", + "passwordtooshort": "This message is shown in [[Special:Preferences]] and [[Special:CreateAccount]].\n\nParameters:\n* $1 - the minimum number of characters in the password", + "passwordtoolong": "This message is shown in [[Special:Preferences]], [[Special:CreateAccount]], and [[Special:Userlogin]].\n\nParameters:\n* $1 - the maximum number of characters in the password", + "password-substring-username-match": "Used as error message when password validity check failed.", + "password-name-match": "Used as error message when password validity check failed.", + "password-login-forbidden": "Error message shown when the user has tried to log in using one of the special username/password combinations used for MediaWiki testing. (See [[mwr:75589]], [[mwr:75605]].)", + "passwordincommonlist": "Shown if the user chooses a very common password.", + "prefs-help-yourpassword": "Used in [[Special:Preferences]], tab \"User profile\". Parameters:\n* $1 - is the link to [[#mw-prefsection-personal-email|{{int:prefs-email}}]] section.", + "tog-prefershttps": "Toggle option used in [[Special:Preferences]] that indicates if the user wants to use a secure connection when logged in", + "prefs-help-prefershttps": "Used as help text for the checkbox in [[Special:Preferences]].\n\nThe checkbox has the label {{msg-mw|Tog-prefershttps}}.\n\nSee example: [[mw:Special:Preferences]].", + "prefs-user-downloaddata-label": "Used in [[Special:Preferences]], tab \"User profile\".", + "prefs-user-downloaddata-help-message": "Used in [[Special:Preferences]], optional message for user data download help.\n* $1 - The username with spaces replaced by underscores, for including in links", + "prefs-user-downloaddata-info": "This message shows where to view the user's data from this wiki", + "prefs-user-restoreprefs-label": "Used as a label introducing the link to [[Special:Preferences/reset]]", + "prefs-user-restoreprefs-info": "Used as link text to link to [[Special:Preferences/reset]]", + "prefs-i18n": "Field set legend for user preferences regarding the interface language. [https://en.wikipedia.org/wiki/Special:Preferences#mw-prefsection-personal-i18n Context][[User:Iketsi/context|+]]", + "yourlanguage": "Used in [[Special:Preferences]], first tab.\n{{Identical|Language}}", + "yourgender": "Used in [[Special:Preferences]], first tab, in the Internationalisation section.\nThis may be customized for other languages. This should sound like a question, the answer to which can be selected in one of these:\n* {{msg-mw|gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|gender-male}}\n* {{msg-mw|gender-female}}\nThe idea is that this preference is used for speaking to the user and about the user, and the label and the preference are supposed to demonstrate it.\n\nSee also {{msg-mw|Prefs-help-gender}}.", + "gender-notknown": "Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt. Choosing it indicates that the grammatical gender of the username is gender-neutral or unknown.\n\nThis may be appropriately customized for your language. It should sound like a reply to {{msg-mw|yourgender}} and be consistent with the two other options (see below).\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", + "gender-unknown": "Used in [[Special:Preferences]], first tab, as additional context for {{msg-mw|gender-notknown}} if needed. If unneeded, set to the '-' character.\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", + "gender-female": "Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt.\nChoosing it indicates that the grammatical gender of the username should be \"female\" for those languages having a \"normal\" female grammatical gender.\n\nYou have to customize this example for your language if needed to have a sentence which varies depending on the grammatical gender.\nThe wording must demonstrate the actual usage of the option. It should sound like a reply to {{msg-mw|Yourgender}}.\n\nFor example, if the verb \"I edit\" in your language is different in masculine and feminine, translate \"I edit\" in feminine here.\nIf your language does not make a distinction at all, use sentences like \"she is female/woman\".\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", + "gender-male": "Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt.\nChoosing it indicates that the grammatical gender of the username should be \"male\" for those languages having a \"normal\" male grammatical gender.\n\nYou have to customize this example for your language if needed to have a sentence which varies depending on the grammatical gender.\nThe wording must demonstrate the actual usage of the option. It should sound like a reply to {{msg-mw|Yourgender}}.\n\nFor example, if the verb \"I edit\" in your language is different in masculine and feminine, translate \"I edit\" in masculine here.\nIf your language does not make a distinction at all, use sentences like \"he is male/a man\".\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", + "prefs-help-gender": "Used as additional description for {{msg-mw|yourgender}} field in [[Special:Preferences]], section {{msg-mw|prefs-i18n}}.\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", + "yourvariant": "Used in [[Special:Preferences]], first tab, when the wiki content language has variants only.", + "prefs-help-variant": "Explanation of the LanguageConverter feature. It is shown next to a dropdown box where you can choose a variant to convert content to (e.g. Serbian Latin vs. Serbian Cyrillic, or Chinese Traditional vs. Chinese Simplified).", + "prefs-signature": "{{Identical|Signature}}", + "tog-oldsig": "Used in [[Special:Preferences]], tab User profile. {{Gender}}", + "yournick": "Used in [[Special:Preferences]], first tab.\n\n{{Identical|Signature}}", + "tog-fancysig": "In user preferences under the signature box.\n\n{{Gender}}", + "prefs-help-signature": "Used in [[Special:Preferences]], tab User profile.", + "prefs-signature-invalid-warning": "Used on [[Special:Preferences]]. This is a message shown below {{msg-mw|tog-oldsig}} if the current signature doesn't meet new validity requirements.", + "prefs-signature-invalid-new": "Used on [[Special:Preferences]]. This is a message shown below {{msg-mw|tog-oldsig}} if the current signature doesn't meet new validity requirements.", + "prefs-signature-invalid-disallow": "Used on [[Special:Preferences]]. This is a message shown below {{msg-mw|tog-oldsig}} if the current signature doesn't meet new validity requirements.", + "prefs-signature-highlight-error": "Used on [[Special:Preferences]]. This is a button text to select the problematic part of your signature when it's invalid.", + "prefs-signature-error-details": "Used on [[Special:Preferences]]. This is a button text to open the documentation page about a signature validity problem.", + "badsig": "Error message displayed when entering invalid signature in user preferences", + "badsiglength": "Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that is too long.\n\nParameters\n* $1 - the maximum number of characters that is allowed in a signature (multi-byte characters are counted as one character)", + "badsigsubst": "Error message used on [[Special:Preferences]].\n\nParameters:\n* $1 - example valid syntax, using the message {{msg-mw|signature}}", + "badsightml": "Error message used on [[Special:Preferences]]. Followed by a bullet list of issues, each using a message like {{msg-mw|linter-category-missing-end-tag}}.", + "badsiglinks": "Error message used on [[Special:Preferences]].", + "badsiglinebreak": "Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that contains a line break.", + "prefs-email": "Used as section name in [[Special:Preferences]].", + "youremail": "Label of the e-mail text box of the \"E-mail options\" section of [[Special:Preferences]].\nAlso used on create account form.\n\n{{Identical|E-mail}}", + "prefs-setemail": "Used as link title in [[Special:Preferences]], if the user has not set E-mail address yet.\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}", + "prefs-changeemail": "Link on [[Special:Preferences]] to [[Special:ChangeEmail]]. [[Special:ChangeEmail]] also allows removing email address. \n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-setemail|link title}}", + "prefs-help-email": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", + "prefs-help-email-required": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also:\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", + "prefs-help-email-others": "This text is shown on account creation, below the description of the e-mail address field (which is optional).\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", + "tog-requireemail": "Toggle option used in [[Special:Preferences]]. Should be only visible to users who have confirmed their email address.\n\nSee also: {{msg-mw|prefs-help-requireemail}}", + "prefs-help-requireemail": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also: {{msg-mw|tog-requireemail}}", + "noemailprefs": "Message appearing in the \"Email options\" section of the \"User profile\" page in [[Special:Preferences|Preferences]], when no user email address has been entered.", + "emailnotauthenticated": "Message in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nIt appears after saving your email address but before you confirm it.", + "emailconfirmlink": "Link to [[Special:ConfirmEmail]].\n\nAppears in [[Special:Preferences]] > <bdi>{{int:prefs-personal}}</bdi> > <bdi>{{int:email}}</bdi> after saving your email address but before it has been authenticated.", + "prefs-emailconfirm-label": "Sub-heading in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.", + "emailauthenticated": "In user preferences ([[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}) and on [[Special:ConfirmEmail]].\n\nParameters:\n* $1 - (Unused) obsolete, date and time\n* $2 - date\n* $3 - time", + "allowemail": "Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.", + "email-allow-new-users-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", + "tog-ccmeonemails": "Option in [[Special:Preferences]] > <bdi>{{int:prefs-personal}}</bdi> > {{int:email}}. {{Gender}}", + "email-mutelist-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", + "tog-enotifwatchlistpages": "Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}", + "tog-enotifusertalkpages": "Option in [[Special:Preferences]] > <bdi>{{int:prefs-personal}}</bdi> > {{int:email}}.\n\n{{Gender}}", + "tog-enotifminoredits": "Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nShown only if {{msg-mw|tog-enotifusertalkpages}} or {{msg-mw|tog-enotifwatchlistpages}} are shown.\n\n\"minor edits\" as in {{msg-mw|Minoredit}}\n\n{{Gender}}", + "tog-enotifrevealaddr": "Toggle option used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}", + "prefs-user-pages": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-misc}}'', listing features that are related to user pages\n{{Identical|User page}}", + "prefs-rendering": "Title of tab in [[Special:Preferences]].\n{{Identical|Appearance}}", + "prefs-description-rendering": "Used in [[Special:Preferences]] for mobile to describe the Appearance section.", + "prefs-skin": "Used in user preferences. Refers to the design or the theme of the MediaWiki installation: fonts, placement of buttons, colors, etc.\n\n{{Identical|Skin}}", + "skin-preview": "{{doc-actionlink}}\nThe link beside each skin name in [[Special:Preferences|your user preferences]], tab \"skin\".\n{{Identical|Preview}}", + "prefs-common-config": "Used as label in [[Special:Preferences#mw-prefsection-rendering|preferences]], tab \"Appearance\", section \"Skin\".\n\nSee also:\n* {{msg-mw|Globalcssjs-custom-css-js}}", + "prefs-custom-css": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom CSS}}", + "prefs-custom-js": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom JavaScript}}", + "prefs-custom-cssjs-safemode": "Shown on [[Special:Preferences]] -[Skins] when safe mode is enabled (thus custom CSS/JS are disabled).", + "prefs-skin-prefs": "Title for skin specific user preferences shown on Special:Preferences if available.", + "prefs-skin-responsive": "Used in [[Special:Preferences]]", + "prefs-help-skin-responsive": "Help message used on [[Special:Preferences]].\n\nSee also:\n* {{msg-mw|Mypreferences}}", + "prefs-dateformat": "Used in [[Special:Preferences#mw-prefsection-datetime|Special:Preferences]], tab \"Appearance\".\n{{Identical|Date format}}", + "datedefault": "Used as checkbox label in [[Special:Preferences#mw-prefsection-rendering|user preferences]], {{msg-mw|prefs-rendering}} tab.\n\nThis message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).", + "prefs-timeoffset": "Used in [[Special:Preferences]], tab \"Date and time\".", + "servertime": "Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].", + "localtime": "Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].", + "timezonelegend": "{{Identical|Time zone}}", + "timezoneuseserverdefault": "Option in timezone selector form fields.\n\nThis option lets your time zone setting use the one that is used on the wiki (often UTC).\n\nParameters:\n* $1 - timezone name, or timezone offset (in \"%+03d:%02d\" format)", + "timezoneuseoffset": "Option in timezone selector form fields that lets the user manually enter an offset from UTC.", + "timezone-useoffset-placeholder": "Placeholder of the text input in timezone selector form fields.", + "timezone-invalid": "Error message shown in preferences.", + "guesstimezone": "Option in timezone selector form fields to fill in the timezone from the browser setting", + "timezoneregion-africa": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-america": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-antarctica": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-arctic": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-asia": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-atlantic": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-australia": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}\n{{Identical|Australia}}", + "timezoneregion-europe": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-indian": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "timezoneregion-pacific": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", + "prefs-files": "Title of a tab in [[Special:Preferences]].\n{{Identical|File}}", + "imagemaxsize": "This is used in [[Special:Preferences]], under Files.\n\nSee also:\n* {{msg-mw|Thumbsize}}", + "thumbsize": "Used as label.\n\nSee also:\n* {{msg-mw|Imagemaxsize}}", + "prefs-diffs": "Used in [[Special:Preferences]], tab \"Misc\".\n{{Identical|Diff}}", + "tog-diffonly": "Toggle option used in [[Special:Preferences]]. {{Gender}}", + "tog-norollbackdiff": "Option in [[Special:Preferences]], 'Misc' tab. Only shown for users with the rollback right. By default, a diff is shown below the return screen of a rollback. Checking this preference toggle will suppress that. {{Gender}}\n{{Identical|Rollback}}", + "prefs-advancedrendering": "Used in [[Special:Preferences]], tab \"Appearance\".\n{{Identical|Advanced options}}", + "tog-underline": "[[Special:Preferences]], tab 'Misc'. Offers user a choice how to underline links.", + "underline-default": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"underline links as in your user skin or your browser\", there are also options {{msg-mw|Underline-never}} and {{msg-mw|Underline-always}}.\n\n{{Gender}}\n{{Identical|Browser default}}", + "underline-never": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"never underline links\", there are also options {{msg-mw|Underline-always}} and {{msg-mw|Underline-default}}.\n\n{{Gender}}\n{{Identical|Never}}", + "underline-always": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"always underline links\", there are also options {{msg-mw|Underline-never}} and {{msg-mw|Underline-default}}.\n\n{{Gender}}\n{{Identical|Always}}", + "tog-showhiddencats": "Toggle option used in [[Special:Preferences]]. {{Gender}}", + "tog-showrollbackconfirmation": "Toggle option used in [[Special:Preferences]] to enable/disable rollback confirmation prompt. Should be visible only to users with rollback rights.", + "tog-forcesafemode": "Toggle option used in [[Special:Preferences]] to always enable safe mode.", + "prefs-help-forcesafemode": "Used in [[Special:Preferences]], tab ''{{int:prefs-rendering}}'', section ''{{int:prefs-advancedrendering}}''.", + "prefs-editing": "Title of a tab in [[Special:Preferences]].\n{{Identical|Editing}}", + "prefs-description-editing": "Used in [[Special:Preferences]] for mobile to describe the Editing section.", + "prefs-advancedediting": "Used in [[Special:Preferences]], tab \"Editing\".\nThis used to say \"Advanced options\", the key name is a left over from that.", + "tog-editsectiononrightclick": "[[Special:Preferences]], tab 'Edit'. Offers user to edit a section by clicking on a section title.", + "tog-editondblclick": "[[Special:Preferences]], tab 'Edit'. Offers user to open edit page on double click.", + "prefs-editor": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\n{{Identical|Editor}}", + "editfont-style": "Used in [[Special:Preferences]], tab Editing.", + "editfont-monospace": "Option used in [[Special:Preferences]], tab Editing.", + "editfont-sansserif": "Option used in [[Special:Preferences]], tab Editing.", + "editfont-serif": "Option used in [[Special:Preferences]], tab Editing.", + "tog-minordefault": "[[Special:Preferences]], tab 'Edit'. Offers user to mark all edits minor by default.\n\n{{Gender}}", + "tog-forceeditsummary": "Toggle option used in [[Special:Preferences]] to force an edit ''{{msg-mw|summary}}''. {{Gender}}", + "tog-editrecovery": "Toggle option used in [[Special:Preferences]] to enable/disable the edit recovery feature. See also {{msg-mw|editrecovery}}.", + "tog-editrecovery-help": "Help text shown below {{msg-mw|tog-editrecovery}}.\n\nParameters:\n\n* $1 — The URL of the Edit Recovery project talk page.", + "tog-useeditwarning": "Used as label for the checkbox in [[Special:Preferences#mw-prefsection-editing|Special:Preferences]].", + "prefs-preview": "Used in [[Special:Preferences]], tab \"Editing\".\n{{Identical|Preview}}", + "tog-previewonfirst": "Toggle option used in [[Special:Preferences]].\n\n{{Gender}}", + "tog-previewontop": "Toggle option used in [[Special:Preferences]].\n\n{{Gender}}", + "tog-uselivepreview": "{{Gender}}\nToggle option used in [[Special:Preferences]].\n\nLive preview is a feature to use edit preview without loading the page again.", + "prefs-discussion": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\nThis should use label we use for talk/discussion pages: {{msg-mw|talk}}", + "prefs-developertools": "Used in [[Special:Preferences]], tab \"Editing\".", + "prefs-rc": "Used in user preferences.\n\n{{Identical|Recent changes}}", + "prefs-description-rc": "Used in [[Special:Preferences]] for mobile to describe the Recent Changes section.", + "prefs-displayrc": "\"Display\" is an adjective that specifies the kind of \"options\". So translate as \"options about display\", not as \"display the options\".\n\nUsed in [[Special:Preferences]], tab \"Recent changes\". The display options refer to:\n* {{msg-mw|Recentchangesdays}}\n* {{msg-mw|Recentchangescount}}", + "recentchangesdays": "Used in [[Special:Preferences]], tab \"Recent changes\".", + "recentchangesdays-max": "Shown as hint in [[Special:Preferences]], tab \"Recent changes\". Parameters:\n* $1 - number of days\nSee also:\n* {{msg-mw|Prefs-watchlist-days-max}}", + "recentchangescount": "Used in [[Special:Preferences]], tab \"Recent changes\".", + "prefs-help-recentchangescount": "Used in [[Special:Preferences]], tab \"Recent changes\".", + "prefs-advancedrc": "Used in [[Special:Preferences]], tab \"Recent changes\".\n{{Identical|Advanced options}}", + "tog-usenewrc": "{{Gender}}\nUsed as label for the checkbox in [[Special:Preferences]], tab \"Recent changes\".\n\nOffers user to use alternative representation of [[Special:RecentChanges]] and watchlist.", + "rcfilters-preference-label": "Option in RecentChanges tab of [[Special:Preferences]].", + "rcfilters-preference-help": "Explanation for the option in the RecentChanges tab of [[Special:Preferences]].\n\n* \"Recent changes\" is {{msg-mw|recentchanges}}\n* \"Related changes\" is {{msg-mw|recentchangeslinked}}", + "prefs-changesrc": "Section heading in [[Special:Preferences]], tab \"Recent changes\". Describes the types of changes/edits that will be shown on Special:RecentChanges (the heading is followed by a list of checkboxes).", + "tog-hideminor": "[[Special:Preferences]], tab 'Recent changes'. Offers user to hide minor edits in recent changes or not. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-hidecategorization": "Option in \"Recent changes\" tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to messages such as {{msg-mw|tog-hideminor}}.", + "tog-hidepatrolled": "Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-newpageshidepatrolled": "Toggle in [[Special:Preferences]], section \"Recent changes\" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}", + "tog-shownumberswatching": "Toggle option used in [[Special:Preferences]], in the section for recent changes. When this option is activated, the entries in recent changes includes the number of users who watch pages. {{Gender}}", + "prefs-watchlist": "Used in user preferences.\n{{Identical|Watchlist}}", + "prefs-description-watchlist": "Used in [[Special:Preferences]] for mobile to describe the Watchlist section.", + "prefs-editwatchlist": "Used in [[Special:Preferences]], tab \"Watchlist\".", + "prefs-editwatchlist-label": "Used in [[Special:Preferences]], tab \"Watchlist\".", + "prefs-editwatchlist-edit": "Used in [[Special:Preferences]], tab \"Watchlist\". Link to [[Special:EditWatchlist]]\n\nSee also:\n* {{msg-mw|prefs-editwatchlist-clear}}\n* {{msg-mw|prefs-editwatchlist-raw}}", + "prefs-editwatchlist-raw": "Used in [[Special:Preferences]], tab \"Watchlist\". Link to [[Special:EditWatchlist/raw]].\n\nSee also:\n* {{msg-mw|prefs-editwatchlist-edit}}\n* {{msg-mw|prefs-editwatchlist-clear}}\n{{Identical|Edit raw watchlist}}", + "prefs-editwatchlist-clear": "Used in [[Special:Preferences]], tab \"Watchlist\". Link to [[Special:EditWatchlist/clear]].\n\nSee also:\n* {{msg-mw|prefs-editwatchlist-edit}}\n* {{msg-mw|prefs-editwatchlist-raw}}\n{{Identical|Clear watchlist}}", + "prefs-displaywatchlist": "\"Display\" is a noun that specifies the kind of \"options\". So translate as \"options about display\", not as \"display the options\".\n\nUsed in [[Special:Preferences]], tab \"Watchlist\". The display options refer to:\n* {{msg-mw|Prefs-watchlist-days}}\n* {{msg-mw|Prefs-watchlist-edits}}", + "prefs-watchlist-days": "Used in [[Special:Preferences]], tab \"Watchlist\".", + "prefs-watchlist-days-max": "Shown as hint in [[Special:Preferences]], tab \"Watchlist\". Parameters:\n* $1 - number of days\nSee also:\n* {{msg-mw|Recentchangesdays-max}}", + "prefs-watchlist-edits": "Used in [[Special:Preferences]], tab \"Watchlist\".", + "prefs-watchlist-edits-max": "Shown as hint in [[Special:Preferences]], tab \"Watchlist\"", + "prefs-advancedwatchlist": "Used in [[Special:Preferences]], tab \"Watchlist\".\n{{Identical|Advanced options}}", + "tog-extendwatchlist": "[[Special:Preferences]], tab 'Watchlist'. Offers user to show all applicable changes in watchlist (by default only the last change to a page on the watchlist is shown). {{Gender}}", + "tog-watchlistunwatchlinks": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add an unwatch/watch toggle link to watchlist entries.", + "rcfilters-watchlist-preference-label": "Option in Watchlist tab of [[Special:Preferences]].", + "rcfilters-watchlist-preference-help": "Explanation for the option in the Watchlist tab of [[Special:Preferences]].", + "prefs-changeswatchlist": "Section heading in [[Special:Preferences]], tab \"Watchlist\". Describes the types of changes/edits that will be shown on Special:Watchlist (the heading is followed by a list of checkboxes).", + "tog-watchlisthideminor": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide minor edits from watchlist.\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-watchlisthidebots": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide bot edits from watchlist. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-watchlisthideown": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide own edits from watchlist.\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-watchlisthideanons": "Option in tab 'Watchlist' of [[Special:Preferences]].\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-watchlisthideliu": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "tog-watchlistreloadautomatically": "[[Special:Preferences]], tab 'Watchlist'. Offers user to automatically refresh the watchlist page, when a filter is changed.", + "tog-watchlisthidecategorization": "Option in Watchlist tab of [[Special:Preferences]]. Offers user to hide/show edits that categorize pages in their watclist. Appears next to checkboxes with labels such as {{msg-mw|tog-watchlisthideminor}}.", + "tog-watchlisthidepatrolled": "Option in Watchlist tab of [[Special:Preferences]].\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", + "prefs-pageswatchlist": "Section heading in [[Special:Preferences]], tab \"Watchlist\". Describes the types of pages that will be automatically added to the watchlist (the heading is followed by a list of checkboxes).", + "tog-watchdefault": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add edited pages to watchlist.\n\n{{Gender}}", + "tog-watchmoves": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add moved pages to watchlist.\n\n{{Gender}}", + "tog-watchdeletion": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add deleted pages to watchlist.\n\n{{Gender}}", + "tog-watchcreations": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add created pages to watchlist.\n\n{{Gender}}", + "tog-watchuploads": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add their uploaded files to watchlist.\n\n{{Gender}}", + "tog-watchrollback": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add pages where the user has rollbacked an edit to watchlist. {{Gender}}\n\nSee also {{msg-mw|tog-watchdefault}}, {{msg-mw|tog-watchcreations}}.", + "prefs-tokenwatchlist": "Section heading.\nUsed in [[Special:Preferences]], tab \"Watchlist\".\n{{Identical|Token}}", + "prefs-watchlist-token": "Used in [[Special:Preferences]], tab Watchlist.", + "prefs-watchlist-managetokens": "Label for the button to see and reset the user's private tokens", + "prefs-help-tokenmanagement": "Used in [[Special:Preferences]], Watchlist tab.", + "prefs-searchoptions": "Noun\n{{Identical|Search}}", + "prefs-description-searchoptions": "Used in [[Special:Preferences]] for mobile to describe the Search section.", + "prefs-searchmisc": "Title of general search options section in search tab", + "searchlimit-label": "Used in [[Special:Preferences]], tab \"Search\".", + "searchlimit-help": "Shown as hint in [[Special:Preferences]], tab \"Search\".\nShown under [[Special:Preferences#mw-prefsection-lqt]]. $1 - The current maximum limit", + "search-thumbnail-extra-namespaces-label": "Label for user preference to enable thumbnails for additional namespaces", + "search-thumbnail-extra-namespaces-message": "{{doc-important|1=Do not translate the <code><nowiki>{{#special:search}}</nowiki></code> parser function in this message.}}\nHelp text for user preference to enable thumbnails for additional namespaces. Parameters:\n* $1 - formatted list of extra namespaces for which thumbnails can be enabled\n* $2 - number of extra namespaces, used for PLURAL", + "prefs-advancedsearchoptions": "Used in [[Special:Preferences]], tab \"Search options\".\n{{Identical|Advanced options}}", + "prefs-reset-intro": "Used in [[Special:Preferences/reset]].", + "prefs-reset-confirm": "Used as a checkbox label on [[Special:Preferences/reset]].", + "restoreprefs": "Used as label for the Submit button in [[Special:Preferences/reset]]." +} diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index b2662f0774cb..e75c5511c6a0 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -263,60 +263,6 @@ ] }, "sidebar": "{{notranslate}}", - "tog-underline": "[[Special:Preferences]], tab 'Misc'. Offers user a choice how to underline links.", - "tog-hideminor": "[[Special:Preferences]], tab 'Recent changes'. Offers user to hide minor edits in recent changes or not. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-hidepatrolled": "Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-newpageshidepatrolled": "Toggle in [[Special:Preferences]], section \"Recent changes\" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}", - "tog-hidecategorization": "Option in \"Recent changes\" tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to messages such as {{msg-mw|tog-hideminor}}.", - "tog-extendwatchlist": "[[Special:Preferences]], tab 'Watchlist'. Offers user to show all applicable changes in watchlist (by default only the last change to a page on the watchlist is shown). {{Gender}}", - "tog-usenewrc": "{{Gender}}\nUsed as label for the checkbox in [[Special:Preferences]], tab \"Recent changes\".\n\nOffers user to use alternative representation of [[Special:RecentChanges]] and watchlist.", - "tog-editondblclick": "[[Special:Preferences]], tab 'Edit'. Offers user to open edit page on double click.", - "tog-editsectiononrightclick": "[[Special:Preferences]], tab 'Edit'. Offers user to edit a section by clicking on a section title.", - "tog-watchcreations": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add created pages to watchlist.\n\n{{Gender}}", - "tog-watchdefault": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add edited pages to watchlist.\n\n{{Gender}}", - "tog-watchmoves": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add moved pages to watchlist.\n\n{{Gender}}", - "tog-watchdeletion": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add deleted pages to watchlist.\n\n{{Gender}}", - "tog-watchuploads": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add their uploaded files to watchlist.\n\n{{Gender}}", - "tog-watchrollback": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add pages where the user has rollbacked an edit to watchlist. {{Gender}}\n\nSee also {{msg-mw|tog-watchdefault}}, {{msg-mw|tog-watchcreations}}.", - "tog-minordefault": "[[Special:Preferences]], tab 'Edit'. Offers user to mark all edits minor by default.\n\n{{Gender}}", - "tog-previewontop": "Toggle option used in [[Special:Preferences]].\n\n{{Gender}}", - "tog-previewonfirst": "Toggle option used in [[Special:Preferences]].\n\n{{Gender}}", - "tog-enotifwatchlistpages": "Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}", - "tog-enotifusertalkpages": "Option in [[Special:Preferences]] > <bdi>{{int:prefs-personal}}</bdi> > {{int:email}}.\n\n{{Gender}}", - "tog-enotifminoredits": "Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nShown only if {{msg-mw|tog-enotifusertalkpages}} or {{msg-mw|tog-enotifwatchlistpages}} are shown.\n\n\"minor edits\" as in {{msg-mw|Minoredit}}\n\n{{Gender}}", - "tog-enotifrevealaddr": "Toggle option used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}", - "tog-shownumberswatching": "Toggle option used in [[Special:Preferences]], in the section for recent changes. When this option is activated, the entries in recent changes includes the number of users who watch pages. {{Gender}}", - "tog-oldsig": "Used in [[Special:Preferences]], tab User profile. {{Gender}}", - "tog-fancysig": "In user preferences under the signature box.\n\n{{Gender}}", - "tog-uselivepreview": "{{Gender}}\nToggle option used in [[Special:Preferences]].\n\nLive preview is a feature to use edit preview without loading the page again.", - "tog-forceeditsummary": "Toggle option used in [[Special:Preferences]] to force an edit ''{{msg-mw|summary}}''. {{Gender}}", - "tog-watchlisthideown": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide own edits from watchlist.\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlisthidebots": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide bot edits from watchlist. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlisthideminor": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide minor edits from watchlist.\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlisthideliu": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlistreloadautomatically": "[[Special:Preferences]], tab 'Watchlist'. Offers user to automatically refresh the watchlist page, when a filter is changed.", - "tog-watchlistunwatchlinks": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add an unwatch/watch toggle link to watchlist entries.", - "tog-watchlisthideanons": "Option in tab 'Watchlist' of [[Special:Preferences]].\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlisthidepatrolled": "Option in Watchlist tab of [[Special:Preferences]].\n\n{{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlisthidecategorization": "Option in Watchlist tab of [[Special:Preferences]]. Offers user to hide/show edits that categorize pages in their watclist. Appears next to checkboxes with labels such as {{msg-mw|tog-watchlisthideminor}}.", - "tog-ccmeonemails": "Option in [[Special:Preferences]] > <bdi>{{int:prefs-personal}}</bdi> > {{int:email}}. {{Gender}}", - "tog-diffonly": "Toggle option used in [[Special:Preferences]]. {{Gender}}", - "tog-showhiddencats": "Toggle option used in [[Special:Preferences]]. {{Gender}}", - "tog-norollbackdiff": "Option in [[Special:Preferences]], 'Misc' tab. Only shown for users with the rollback right. By default, a diff is shown below the return screen of a rollback. Checking this preference toggle will suppress that. {{Gender}}\n{{Identical|Rollback}}", - "tog-useeditwarning": "Used as label for the checkbox in [[Special:Preferences#mw-prefsection-editing|Special:Preferences]].", - "tog-prefershttps": "Toggle option used in [[Special:Preferences]] that indicates if the user wants to use a secure connection when logged in", - "tog-showrollbackconfirmation": "Toggle option used in [[Special:Preferences]] to enable/disable rollback confirmation prompt. Should be visible only to users with rollback rights.", - "tog-requireemail": "Toggle option used in [[Special:Preferences]]. Should be only visible to users who have confirmed their email address.\n\nSee also: {{msg-mw|prefs-help-requireemail}}", - "tog-forcesafemode": "Toggle option used in [[Special:Preferences]] to always enable safe mode.", - "tog-editrecovery": "Toggle option used in [[Special:Preferences]] to enable/disable the edit recovery feature. See also {{msg-mw|editrecovery}}.", - "tog-editrecovery-help": "Help text shown below {{msg-mw|tog-editrecovery}}.\n\nParameters:\n\n* $1 — The URL of the Edit Recovery project talk page.", - "underline-always": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"always underline links\", there are also options {{msg-mw|Underline-never}} and {{msg-mw|Underline-default}}.\n\n{{Gender}}\n{{Identical|Always}}", - "underline-never": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"never underline links\", there are also options {{msg-mw|Underline-always}} and {{msg-mw|Underline-default}}.\n\n{{Gender}}\n{{Identical|Never}}", - "underline-default": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"underline links as in your user skin or your browser\", there are also options {{msg-mw|Underline-never}} and {{msg-mw|Underline-always}}.\n\n{{Gender}}\n{{Identical|Browser default}}", - "editfont-style": "Used in [[Special:Preferences]], tab Editing.", - "editfont-monospace": "Option used in [[Special:Preferences]], tab Editing.", - "editfont-sansserif": "Option used in [[Special:Preferences]], tab Editing.", - "editfont-serif": "Option used in [[Special:Preferences]], tab Editing.", "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}}", @@ -675,8 +621,6 @@ "createacct-another-username-ph": "Placeholder text in create account form field when one user creates an account for another.", "createacct-helpusername": "{{Optional}} Optional message in new create account form providing guidance for username.\n\nThis should be very short (typically a link); it will be displayed right after the field label.\n\nBlank by default.", "createacct-username-help": "{{Optional}} Optional message in new create account form providing guidance for username.\n\nThis is rendered as normal form help text.\n\nBlank by default.", - "yourpassword": "In user preferences\n\n{{Identical|Password}}", - "prefs-help-yourpassword": "Used in [[Special:Preferences]], tab \"User profile\". Parameters:\n* $1 - is the link to [[#mw-prefsection-personal-email|{{int:prefs-email}}]] section.", "userlogin-yourpassword": "In login & create account forms, label for password field.\n\nSee examples: [[Special:UserLogin]] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Password}}", "userlogin-yourpassword-ph": "Placeholder text in login form for password field.\n\nSee examples: [[Special:UserLogin]] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Enter password}}", "createacct-yourpassword-ph": "Placeholder text in create account form for password field.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Enter password}}", @@ -762,12 +706,6 @@ "fatalpassworderror": "Used as clarification when a password error blocks login.\n\nParameters:\n* $1 - the original error message (or bullet list of messages).\n* $2 - URL of the password reset form.", "wrongpassword": "Used as error message when the provided password is wrong.\nThis message is used in html.\n{{Identical|Please try again}}", "wrongpasswordempty": "Error message displayed when entering a blank password.\n{{Identical|Please try again}}", - "passwordtooshort": "This message is shown in [[Special:Preferences]] and [[Special:CreateAccount]].\n\nParameters:\n* $1 - the minimum number of characters in the password", - "passwordtoolong": "This message is shown in [[Special:Preferences]], [[Special:CreateAccount]], and [[Special:Userlogin]].\n\nParameters:\n* $1 - the maximum number of characters in the password", - "passwordincommonlist": "Shown if the user chooses a very common password.", - "password-name-match": "Used as error message when password validity check failed.", - "password-substring-username-match": "Used as error message when password validity check failed.", - "password-login-forbidden": "Error message shown when the user has tried to log in using one of the special username/password combinations used for MediaWiki testing. (See [[mwr:75589]], [[mwr:75605]].)", "mailmypassword": "Used as label for Submit button in [[Special:PasswordReset]].\n{{Identical|Reset password}}", "passwordremindertitle": "Title of email which contains temporary password", "passwordremindertext": "This text is used in an email sent when a user requests a new temporary password (he has forgotten his password) or when an sysop creates a new user account choosing to have password and username sent to the new user by email.\n\nParameters:\n* $1 - an IP address. Example: 123.123.123.123\n* $2 - a username. Example: Joe\n* $3 - a password. Example: er##@fdas!\n* $4 - a URL. Example: http://wiki.example.com\n* $5 - a number of days in which the temporary password will expire", @@ -782,10 +720,6 @@ "signupend-https": "{{notranslate}}", "mailerror": "Used as error message in sending confirmation mail to user. Parameters:\n* $1 - new mail address", "acct_creation_throttle_hit": "Error message at [[Special:CreateAccount]].\n\nParameters:\n* $1 - number of accounts\n* $2 - period", - "emailauthenticated": "In user preferences ([[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}) and on [[Special:ConfirmEmail]].\n\nParameters:\n* $1 - (Unused) obsolete, date and time\n* $2 - date\n* $3 - time", - "emailnotauthenticated": "Message in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nIt appears after saving your email address but before you confirm it.", - "noemailprefs": "Message appearing in the \"Email options\" section of the \"User profile\" page in [[Special:Preferences|Preferences]], when no user email address has been entered.", - "emailconfirmlink": "Link to [[Special:ConfirmEmail]].\n\nAppears in [[Special:Preferences]] > <bdi>{{int:prefs-personal}}</bdi> > <bdi>{{int:email}}</bdi> after saving your email address but before it has been authenticated.", "invalidemailaddress": "Shown as a warning when written an invalid email address in [[Special:Preferences]] and {{fullurl:Special:UserLogin|type=signup}} page", "cannotchangeemail": "Error message shown when user goes to [[Special:ChangeEmail]] but email addresses cannot be changed on the site.", "emaildisabled": "Error message shown when user tries to set an email address but email features are disabled.", @@ -1379,120 +1313,15 @@ "search-error": "Shown when an error has occurred when performing a search. Parameters:\n* $1 - the localized error that was returned", "search-warning": "Shown when a warning has occurred when performing a search. Parameters:\n* $1 - the localized warning that was returned.", "opensearch-desc": "{{ignored}}Link description of the [www.opensearch.org/ OpenSearch] link in the HTML head of pages.", - "preferences": "Title of the [[Special:Preferences]] page.\n{{Identical|Preferences}}", - "preferences-summary": "{{doc-specialpagesummary|preferences}}", "mypreferences": "Action link label that leads to [[Special:Preferences]]; appears in the top menu (e.g. \"Username Talk Preferences Watchlist Contributions Log out\").\n\nSee also:\n* {{msg-mw|Mypreferences}}\n* {{msg-mw|Accesskey-pt-preferences}}\n* {{msg-mw|Tooltip-pt-preferences}}\n{{Identical|Preferences}}", - "prefs-edits": "In user preferences.\n{{Identical|Number of edits}}", - "prefsnologintext2": "Showed on Special:Userlogin when user tries to access their preferences before logging in", - "prefs-skin": "Used in user preferences. Refers to the design or the theme of the MediaWiki installation: fonts, placement of buttons, colors, etc.\n\n{{Identical|Skin}}", - "prefs-skin-prefs": "Title for skin specific user preferences shown on Special:Preferences if available.", - "prefs-skin-responsive": "Used in [[Special:Preferences]]", - "prefs-help-skin-responsive": "Help message used on [[Special:Preferences]].\n\nSee also:\n* {{msg-mw|Mypreferences}}", - "skin-preview": "{{doc-actionlink}}\nThe link beside each skin name in [[Special:Preferences|your user preferences]], tab \"skin\".\n{{Identical|Preview}}", - "datedefault": "Used as checkbox label in [[Special:Preferences#mw-prefsection-rendering|user preferences]], {{msg-mw|prefs-rendering}} tab.\n\nThis message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).", - "prefs-help-forcesafemode": "Used in [[Special:Preferences]], tab ''{{int:prefs-rendering}}'', section ''{{int:prefs-advancedrendering}}''.", "prefs-labs": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are experimental", - "prefs-user-pages": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-misc}}'', listing features that are related to user pages\n{{Identical|User page}}", - "prefs-personal": "Title of a tab in [[Special:Preferences]].\n{{Identical|User profile}}", - "prefs-rc": "Used in user preferences.\n\n{{Identical|Recent changes}}", - "prefs-watchlist": "Used in user preferences.\n{{Identical|Watchlist}}", - "prefs-editwatchlist": "Used in [[Special:Preferences]], tab \"Watchlist\".", - "prefs-editwatchlist-label": "Used in [[Special:Preferences]], tab \"Watchlist\".", - "prefs-editwatchlist-edit": "Used in [[Special:Preferences]], tab \"Watchlist\". Link to [[Special:EditWatchlist]]\n\nSee also:\n* {{msg-mw|prefs-editwatchlist-clear}}\n* {{msg-mw|prefs-editwatchlist-raw}}", - "prefs-editwatchlist-raw": "Used in [[Special:Preferences]], tab \"Watchlist\". Link to [[Special:EditWatchlist/raw]].\n\nSee also:\n* {{msg-mw|prefs-editwatchlist-edit}}\n* {{msg-mw|prefs-editwatchlist-clear}}\n{{Identical|Edit raw watchlist}}", - "prefs-editwatchlist-clear": "Used in [[Special:Preferences]], tab \"Watchlist\". Link to [[Special:EditWatchlist/clear]].\n\nSee also:\n* {{msg-mw|prefs-editwatchlist-edit}}\n* {{msg-mw|prefs-editwatchlist-raw}}\n{{Identical|Clear watchlist}}", - "prefs-watchlist-days": "Used in [[Special:Preferences]], tab \"Watchlist\".", - "prefs-watchlist-days-max": "Shown as hint in [[Special:Preferences]], tab \"Watchlist\". Parameters:\n* $1 - number of days\nSee also:\n* {{msg-mw|Recentchangesdays-max}}", - "prefs-watchlist-edits": "Used in [[Special:Preferences]], tab \"Watchlist\".", - "prefs-watchlist-edits-max": "Shown as hint in [[Special:Preferences]], tab \"Watchlist\"", - "prefs-watchlist-token": "Used in [[Special:Preferences]], tab Watchlist.", - "prefs-watchlist-managetokens": "Label for the button to see and reset the user's private tokens", "prefs-misc": "Tab used on the [[Special:Preferences|user preferences]] special page.", - "prefs-resetpass": "Button on user data tab in user preferences. When you click the button you go to the special page [[Special:ResetPass]].\n\n{{Identical|Change password}}", - "prefs-changeemail": "Link on [[Special:Preferences]] to [[Special:ChangeEmail]]. [[Special:ChangeEmail]] also allows removing email address. \n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-setemail|link title}}", - "prefs-setemail": "Used as link title in [[Special:Preferences]], if the user has not set E-mail address yet.\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}", - "prefs-email": "Used as section name in [[Special:Preferences]].", - "prefs-rendering": "Title of tab in [[Special:Preferences]].\n{{Identical|Appearance}}", - "prefs-searchmisc": "Title of general search options section in search tab", - "searchprefs": "'''Note that this means \"Search in the preferences\" and not \"Preferences of searching\".'''\n\nPlaceholder for the input users can use to search the preferences page.", - "searchprefs-noresults": "Message used when no results are found when searching the preferences page.", - "searchprefs-results": "Message used when results are found when searching the preferences page. Parameters:\n* $1 - number of results", - "saveprefs": "Button for saving changes in the preferences page.\n\nSee also:\n* {{msg-mw|Saveprefs}}\n* {{msg-mw|Accesskey-preferences-save}}\n* {{msg-mw|Tooltip-preferences-save}}\n{{Identical|Save}}", - "restoreprefs": "Used as label for the Submit button in [[Special:Preferences/reset]].", - "prefs-editing": "Title of a tab in [[Special:Preferences]].\n{{Identical|Editing}}", "searchresultshead": "Replaced by {{msg-mw|prefs-searchoptions}}, though may still be used in some extensions. DEPRECATED.\n\n{{Identical|Search}}", - "recentchangesdays": "Used in [[Special:Preferences]], tab \"Recent changes\".", - "recentchangesdays-max": "Shown as hint in [[Special:Preferences]], tab \"Recent changes\". Parameters:\n* $1 - number of days\nSee also:\n* {{msg-mw|Prefs-watchlist-days-max}}", - "recentchangescount": "Used in [[Special:Preferences]], tab \"Recent changes\".", - "prefs-back-title": "Used in [[Special:Preferences]] as the title for a back button", - "prefs-description-personal": "Used in [[Special:Preferences]] for mobile to describe the User Profile section.", - "prefs-description-rendering": "Used in [[Special:Preferences]] for mobile to describe the Appearance section.", - "prefs-description-editing": "Used in [[Special:Preferences]] for mobile to describe the Editing section.", - "prefs-description-rc": "Used in [[Special:Preferences]] for mobile to describe the Recent Changes section.", - "prefs-description-watchlist": "Used in [[Special:Preferences]] for mobile to describe the Watchlist section.", - "prefs-description-searchoptions": "Used in [[Special:Preferences]] for mobile to describe the Search section.", "prefs-description-misc": "Used in [[Special:Preferences]] for mobile to describe the Misc section.", - "prefs-help-recentchangescount": "Used in [[Special:Preferences]], tab \"Recent changes\".", "prefs-help-watchlist-token2": "Used in [[Special:Preferences]], tab Watchlist. (Formerly in {{msg-mw|prefs-help-watchlist-token}}.)", - "prefs-help-tokenmanagement": "Used in [[Special:Preferences]], Watchlist tab.", - "prefs-user-downloaddata-label": "Used in [[Special:Preferences]], tab \"User profile\".", - "prefs-user-downloaddata-info": "This message shows where to view the user's data from this wiki", - "prefs-user-downloaddata-help-message": "Used in [[Special:Preferences]], optional message for user data download help.\n* $1 - The username with spaces replaced by underscores, for including in links", - "prefs-user-restoreprefs-label": "Used as a label introducing the link to [[Special:Preferences/reset]]", - "prefs-user-restoreprefs-info": "Used as link text to link to [[Special:Preferences/reset]]", - "savedprefs": "This message appears after saving changes to your user preferences.", "savedrights": "This message appears after saving the user groups on [[Special:UserRights]].\n* $1 - The username of the user which groups was saved.", - "timezonelegend": "{{Identical|Time zone}}", - "localtime": "Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].", - "timezoneuseserverdefault": "Option in timezone selector form fields.\n\nThis option lets your time zone setting use the one that is used on the wiki (often UTC).\n\nParameters:\n* $1 - timezone name, or timezone offset (in \"%+03d:%02d\" format)", - "timezoneuseoffset": "Option in timezone selector form fields that lets the user manually enter an offset from UTC.", - "timezone-useoffset-placeholder": "Placeholder of the text input in timezone selector form fields.", - "timezone-invalid": "Error message shown in preferences.", - "servertime": "Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].", - "guesstimezone": "Option in timezone selector form fields to fill in the timezone from the browser setting", - "timezoneregion-africa": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-america": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-antarctica": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-arctic": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-asia": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-atlantic": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-australia": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}\n{{Identical|Australia}}", - "timezoneregion-europe": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-indian": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "timezoneregion-pacific": "Used in timezone selector form fields.\n{{Related|Timezoneregion}}", - "allowemail": "Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.", - "email-allow-new-users-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", - "email-mutelist-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", - "prefs-searchoptions": "Noun\n{{Identical|Search}}", "prefs-namespaces": "Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]\n{{Identical|Namespace}}", "default": "{{Identical|Default}}", - "prefs-files": "Title of a tab in [[Special:Preferences]].\n{{Identical|File}}", - "prefs-custom-css": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom CSS}}", - "prefs-custom-js": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom JavaScript}}", - "prefs-custom-cssjs-safemode": "Shown on [[Special:Preferences]] -[Skins] when safe mode is enabled (thus custom CSS/JS are disabled).", - "prefs-common-config": "Used as label in [[Special:Preferences#mw-prefsection-rendering|preferences]], tab \"Appearance\", section \"Skin\".\n\nSee also:\n* {{msg-mw|Globalcssjs-custom-css-js}}", - "prefs-reset-intro": "Used in [[Special:Preferences/reset]].", - "prefs-reset-confirm": "Used as a checkbox label on [[Special:Preferences/reset]].", - "prefs-emailconfirm-label": "Sub-heading in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.", - "youremail": "Label of the e-mail text box of the \"E-mail options\" section of [[Special:Preferences]].\nAlso used on create account form.\n\n{{Identical|E-mail}}", - "username": "Username field in [[Special:Preferences]]. $1 is the current username for GENDER distinction (depends on grammatical gender setting).\n\n{{Identical|Username}}", - "prefs-memberingroups": "This message is shown on [[Special:Preferences]], first tab.\n\nParameters:\n* $1 - number of user groups\n* $2 - the username for GENDER\nSee also:\n* {{msg-mw|Prefs-memberingroups-type}} (you can place text after the list of groups here)", - "prefs-memberingroups-type": "{{optional}}\nParameters:\n* $1 - list of group names\n* $2 - list of group member names. Label for these is {{msg-mw|Prefs-memberingroups}}", - "group-membership-link-with-expiry": "Used as part of a list of user groups, to show the time and date when a user's membership of a group expires. That is, they are a member of that group \"until\" the specified date and time.\n\nParameters:\n* $1 - group name\n* $2 - time and date of expiry\n* $3 - date of expiry\n* $4 - time of expiry", - "prefs-registration": "Used in [[Special:Preferences]].", - "prefs-registration-date-time": "{{optional}}\nUsed in [[Special:Preferences]]. Parameters are:\n* $1 date and time of registration\n* $2 date of registration\n* $3 time of registration", - "yourrealname": "Used in [[Special:Preferences]], first tab.\n{{Identical|Real name}}", - "yourlanguage": "Used in [[Special:Preferences]], first tab.\n{{Identical|Language}}", - "yourvariant": "Used in [[Special:Preferences]], first tab, when the wiki content language has variants only.", - "prefs-help-variant": "Explanation of the LanguageConverter feature. It is shown next to a dropdown box where you can choose a variant to convert content to (e.g. Serbian Latin vs. Serbian Cyrillic, or Chinese Traditional vs. Chinese Simplified).", - "yournick": "Used in [[Special:Preferences]], first tab.\n\n{{Identical|Signature}}", - "prefs-help-signature": "Used in [[Special:Preferences]], tab User profile.", - "badsig": "Error message displayed when entering invalid signature in user preferences", - "badsightml": "Error message used on [[Special:Preferences]]. Followed by a bullet list of issues, each using a message like {{msg-mw|linter-category-missing-end-tag}}.", - "badsiglinks": "Error message used on [[Special:Preferences]].", - "badsigsubst": "Error message used on [[Special:Preferences]].\n\nParameters:\n* $1 - example valid syntax, using the message {{msg-mw|signature}}", - "badsiglength": "Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that is too long.\n\nParameters\n* $1 - the maximum number of characters that is allowed in a signature (multi-byte characters are counted as one character)", - "badsiglinebreak": "Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that contains a line break.", "linterror-bogus-image-options": "Error message, follows {{msg-mw|badsightml}}.\n\nSee also {{msg-mw|linter-pager-bogus-image-options-details}}.", "linterror-deletable-table-tag": "Error message, follows {{msg-mw|badsightml}}.\n\nSee also {{msg-mw|linter-pager-deletable-table-tag-details}}.", "linterror-fostered": "Error message, follows {{msg-mw|badsightml}}.\n\nSee also {{msg-mw|linter-category-fostered}}.", @@ -1515,47 +1344,7 @@ "linterror-tidy-whitespace-bug": "Error message, follows {{msg-mw|badsightml}}. For information about the bug, see the commit message https://gerrit.wikimedia.org/r/#/c/371068 .\n\nSee also {{msg-mw|linter-pager-tidy-whitespace-bug-details}}.", "linterror-unclosed-quotes-in-heading": "Error message, follows {{msg-mw|badsightml}}. See [[:mw:Help:Extension:Linter/unclosed-quote-in-heading]].\n\nSee also {{msg-mw|linter-pager-unclosed-quotes-in-heading-details}}.", "linterror-wikilink-in-extlink": "Error message, follows {{msg-mw|badsightml}}.\n\nSee also {{msg-mw|linter-pager-wikilink-in-extlink-details}}.", - "yourgender": "Used in [[Special:Preferences]], first tab, in the Internationalisation section.\nThis may be customized for other languages. This should sound like a question, the answer to which can be selected in one of these:\n* {{msg-mw|gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|gender-male}}\n* {{msg-mw|gender-female}}\nThe idea is that this preference is used for speaking to the user and about the user, and the label and the preference are supposed to demonstrate it.\n\nSee also {{msg-mw|Prefs-help-gender}}.", - "gender-unknown": "Used in [[Special:Preferences]], first tab, as additional context for {{msg-mw|gender-notknown}} if needed. If unneeded, set to the '-' character.\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", - "gender-notknown": "Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt. Choosing it indicates that the grammatical gender of the username is gender-neutral or unknown.\n\nThis may be appropriately customized for your language. It should sound like a reply to {{msg-mw|yourgender}} and be consistent with the two other options (see below).\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", - "gender-male": "Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt.\nChoosing it indicates that the grammatical gender of the username should be \"male\" for those languages having a \"normal\" male grammatical gender.\n\nYou have to customize this example for your language if needed to have a sentence which varies depending on the grammatical gender.\nThe wording must demonstrate the actual usage of the option. It should sound like a reply to {{msg-mw|Yourgender}}.\n\nFor example, if the verb \"I edit\" in your language is different in masculine and feminine, translate \"I edit\" in masculine here.\nIf your language does not make a distinction at all, use sentences like \"he is male/a man\".\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", - "gender-female": "Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt.\nChoosing it indicates that the grammatical gender of the username should be \"female\" for those languages having a \"normal\" female grammatical gender.\n\nYou have to customize this example for your language if needed to have a sentence which varies depending on the grammatical gender.\nThe wording must demonstrate the actual usage of the option. It should sound like a reply to {{msg-mw|Yourgender}}.\n\nFor example, if the verb \"I edit\" in your language is different in masculine and feminine, translate \"I edit\" in feminine here.\nIf your language does not make a distinction at all, use sentences like \"she is female/woman\".\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", - "prefs-help-gender": "Used as additional description for {{msg-mw|yourgender}} field in [[Special:Preferences]], section {{msg-mw|prefs-i18n}}.\n\nAppears in a group with:\n* {{msg-mw|Yourgender}}\n* {{msg-mw|Gender-unknown}}\n* {{msg-mw|Gender-notknown}}\n* {{msg-mw|Gender-male}}\n* {{msg-mw|Gender-female}}\n* {{msg-mw|Prefs-help-gender}}", "email": "{{Identical|E-mail}}", - "prefs-help-realname": "In user preferences.\n{{Identical|Real name attribution}}", - "prefs-help-email": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", - "prefs-help-email-others": "This text is shown on account creation, below the description of the e-mail address field (which is optional).\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", - "prefs-help-email-required": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also:\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", - "prefs-help-requireemail": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also: {{msg-mw|tog-requireemail}}", - "prefs-info": "Header for the box giving basic information on the user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.\n{{Identical|Basic information}}", - "prefs-i18n": "Field set legend for user preferences regarding the interface language. [https://en.wikipedia.org/wiki/Special:Preferences#mw-prefsection-personal-i18n Context][[User:Iketsi/context|+]]", - "prefs-signature": "{{Identical|Signature}}", - "prefs-signature-invalid-warning": "Used on [[Special:Preferences]]. This is a message shown below {{msg-mw|tog-oldsig}} if the current signature doesn't meet new validity requirements.", - "prefs-signature-invalid-new": "Used on [[Special:Preferences]]. This is a message shown below {{msg-mw|tog-oldsig}} if the current signature doesn't meet new validity requirements.", - "prefs-signature-invalid-disallow": "Used on [[Special:Preferences]]. This is a message shown below {{msg-mw|tog-oldsig}} if the current signature doesn't meet new validity requirements.", - "prefs-signature-highlight-error": "Used on [[Special:Preferences]]. This is a button text to select the problematic part of your signature when it's invalid.", - "prefs-signature-error-details": "Used on [[Special:Preferences]]. This is a button text to open the documentation page about a signature validity problem.", - "prefs-dateformat": "Used in [[Special:Preferences#mw-prefsection-datetime|Special:Preferences]], tab \"Appearance\".\n{{Identical|Date format}}", - "prefs-timeoffset": "Used in [[Special:Preferences]], tab \"Date and time\".", - "prefs-advancedediting": "Used in [[Special:Preferences]], tab \"Editing\".\nThis used to say \"Advanced options\", the key name is a left over from that.", - "prefs-developertools": "Used in [[Special:Preferences]], tab \"Editing\".", - "prefs-editor": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\n{{Identical|Editor}}", - "prefs-discussion": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\nThis should use label we use for talk/discussion pages: {{msg-mw|talk}}", - "prefs-preview": "Used in [[Special:Preferences]], tab \"Editing\".\n{{Identical|Preview}}", - "prefs-advancedrc": "Used in [[Special:Preferences]], tab \"Recent changes\".\n{{Identical|Advanced options}}", - "prefs-advancedrendering": "Used in [[Special:Preferences]], tab \"Appearance\".\n{{Identical|Advanced options}}", - "prefs-advancedsearchoptions": "Used in [[Special:Preferences]], tab \"Search options\".\n{{Identical|Advanced options}}", - "prefs-advancedwatchlist": "Used in [[Special:Preferences]], tab \"Watchlist\".\n{{Identical|Advanced options}}", - "prefs-displayrc": "\"Display\" is an adjective that specifies the kind of \"options\". So translate as \"options about display\", not as \"display the options\".\n\nUsed in [[Special:Preferences]], tab \"Recent changes\". The display options refer to:\n* {{msg-mw|Recentchangesdays}}\n* {{msg-mw|Recentchangescount}}", - "prefs-displaywatchlist": "\"Display\" is a noun that specifies the kind of \"options\". So translate as \"options about display\", not as \"display the options\".\n\nUsed in [[Special:Preferences]], tab \"Watchlist\". The display options refer to:\n* {{msg-mw|Prefs-watchlist-days}}\n* {{msg-mw|Prefs-watchlist-edits}}", - "prefs-changesrc": "Section heading in [[Special:Preferences]], tab \"Recent changes\". Describes the types of changes/edits that will be shown on Special:RecentChanges (the heading is followed by a list of checkboxes).", - "prefs-changeswatchlist": "Section heading in [[Special:Preferences]], tab \"Watchlist\". Describes the types of changes/edits that will be shown on Special:Watchlist (the heading is followed by a list of checkboxes).", - "prefs-pageswatchlist": "Section heading in [[Special:Preferences]], tab \"Watchlist\". Describes the types of pages that will be automatically added to the watchlist (the heading is followed by a list of checkboxes).", - "prefs-tokenwatchlist": "Section heading.\nUsed in [[Special:Preferences]], tab \"Watchlist\".\n{{Identical|Token}}", - "prefs-diffs": "Used in [[Special:Preferences]], tab \"Misc\".\n{{Identical|Diff}}", - "prefs-help-prefershttps": "Used as help text for the checkbox in [[Special:Preferences]].\n\nThe checkbox has the label {{msg-mw|Tog-prefershttps}}.\n\nSee 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.", - "prefs-sections-navigation-hint": "Hint message that explains the keyboard navigation for the mobile version of [[Special:Preferences]] to screenreader users.", "userrights": "Page title of [[Special:UserRights]].", "userrights-summary": "{{doc-specialpagesummary|userrights}}", "userrights-lookup-user": "Label text when managing user rights ([[Special:UserRights]])", @@ -1984,10 +1773,6 @@ "rcfilters-watchlist-markseen-button": "Label for the button to mark all changes as seen on [[Special:Watchlist]] when using the structured filters interface.", "rcfilters-watchlist-edit-watchlist-button": "Label for the button to edit the watched pages on [[Special:Watchlist]] when using the structured filters interface.\n\nCf. {{msg-mw|watchlisttools-edit}}.", "rcfilters-watchlist-showupdated": "Message at the top of [[Special:Watchlist]] when the Structured filters are enabled that describes what unseen changes look like.\n\nCf. {{msg-mw|wlheader-showupdated}}", - "rcfilters-preference-label": "Option in RecentChanges tab of [[Special:Preferences]].", - "rcfilters-preference-help": "Explanation for the option in the RecentChanges tab of [[Special:Preferences]].\n\n* \"Recent changes\" is {{msg-mw|recentchanges}}\n* \"Related changes\" is {{msg-mw|recentchangeslinked}}", - "rcfilters-watchlist-preference-label": "Option in Watchlist tab of [[Special:Preferences]].", - "rcfilters-watchlist-preference-help": "Explanation for the option in the Watchlist tab of [[Special:Preferences]].", "rcfilters-filter-showlinkedfrom-label": "Label that indicates that the page is showing changes that link FROM the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.", "rcfilters-filter-showlinkedfrom-option-label": "Menu option to show changes FROM the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.", "rcfilters-filter-showlinkedto-label": "Label that indicates that the page is showing changes that link TO the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.", @@ -3618,7 +3403,6 @@ "tooltip-upload": "Used as tooltip for Upload button.\n\nSee also:\n* {{msg-mw|Uploadbtn}}\n* {{msg-mw|Accesskey-upload}}\n* {{msg-mw|Tooltip-upload}}", "tooltip-rollback": "Tooltip of the rollback link on the history page and the diff view {{msg-mw|rollbacklinkcount}}\n\nThe word \"Rollback\" must be the same as in the message {{msg-mw|rollbacklink}}.\n\n{{Identical|Rollback}}\n{{Identical|Revert}}", "tooltip-undo": "Tooltip of the undo link on the history page and the diff view {{msg-mw|editundo}}\n{{Identical|Undo}}{{Identical|Revert}}", - "tooltip-preferences-save": "Used as tooltip for Save button.\n\nSee also:\n* {{msg-mw|Saveprefs}}\n* {{msg-mw|Accesskey-preferences-save}}\n* {{msg-mw|Tooltip-preferences-save}}", "tooltip-summary": "Used as tooltip for Summary input box in Editor page.\n\nSee also:\n* {{msg-mw|Summary}}\n* {{msg-mw|Accesskey-summary}}\n* {{msg-mw|Tooltip-summary}}", "interlanguage-link-title": "{{Optional}}\nFormat of a sidebar interwiki link tooltip. Parameters:\n* $1 - page name in the target wiki\n* $2 - target wiki language autonym", "interlanguage-link-title-langonly": "{{ignored}}Interlanguage link title. Parameters: $1 replaced with a language name.", @@ -3742,8 +3526,6 @@ "previousdiff": "Used when viewing the difference between edits.\n\nSee also:\n* {{msg-mw|Nextdiff}}", "nextdiff": "Used when viewing the difference between edits.\n\nSee also:\n* {{msg-mw|Previousdiff}}", "mediawarning": "Shows up on file description pages if the file type is not listed in [[mw:Manual:$wgTrustedMediaFormats|Manual:$wgTrustedMediaFormats]].", - "imagemaxsize": "This is used in [[Special:Preferences]], under Files.\n\nSee also:\n* {{msg-mw|Thumbsize}}", - "thumbsize": "Used as label.\n\nSee also:\n* {{msg-mw|Imagemaxsize}}", "widthheight": "{{optional}}\nParameters:\n* $1 - width\n* $2 - height", "widthheightpage": "This message is used on image pages in the dimensions column in the file history section for images with more than one page.\n\nParameters:\n* $1 - the width of the image pages in pixels\n* $2 - the height of the image pages in pixels\n* $3 - the number of pages in the file", "file-info": "File info displayed on file description page. Parameters:\n* $1 - filesize\n* $2 - MIME type", @@ -4513,10 +4295,6 @@ "searchsuggest-containing": "Label used in the special item of the search suggestions list which gives the user an option to perform a full text search for the term.", "search-match-redirect-label": "Label for user preference to force redirect to a page during search if the page's title matches a search term", "search-match-redirect-help": "Help text for user preference to force redirect to a page during search if the page's title matches a search term", - "search-thumbnail-extra-namespaces-label": "Label for user preference to enable thumbnails for additional namespaces", - "search-thumbnail-extra-namespaces-message": "{{doc-important|1=Do not translate the <code><nowiki>{{#special:search}}</nowiki></code> parser function in this message.}}\nHelp text for user preference to enable thumbnails for additional namespaces. Parameters:\n* $1 - formatted list of extra namespaces for which thumbnails can be enabled\n* $2 - number of extra namespaces, used for PLURAL", - "searchlimit-label": "Used in [[Special:Preferences]], tab \"Search\".", - "searchlimit-help": "Shown as hint in [[Special:Preferences]], tab \"Search\".\nShown under [[Special:Preferences#mw-prefsection-lqt]]. $1 - The current maximum limit", "api-clientside-error-noconnect": "Error shown when an API response fails to load due to a connection issue.", "api-clientside-error-http": "Error shown when an API response fails to load due to a HTTP error.", "api-clientside-error-timeout": "Error shown when an API request takes longer than the limit (it times out).", diff --git a/languages/messages/MessagesHa.php b/languages/messages/MessagesHa.php new file mode 100644 index 000000000000..c6b15a7c101d --- /dev/null +++ b/languages/messages/MessagesHa.php @@ -0,0 +1,27 @@ +<?php +/** Hausa (Hausa) + * + * @file + * @ingroup Languages + */ + +$namespaceNames = [ + NS_MEDIA => 'Midiya', + NS_SPECIAL => 'Musamman', + NS_TALK => 'Tattaunawa', + NS_USER => 'User', + NS_USER_TALK => 'Tattaunawar_user', + NS_PROJECT_TALK => 'Tattaunawar_$1', + NS_FILE => 'Fayil', + NS_FILE_TALK => 'Tattaunawar_fayil', + NS_MEDIAWIKI => 'MediaWiki', + NS_MEDIAWIKI_TALK => 'Tattaunawar_MediaWiki', + NS_TEMPLATE => 'Samfuri', + NS_TEMPLATE_TALK => 'Tattaunawar_samfuri', + NS_HELP => 'Taimako', + NS_HELP_TALK => 'Tattaunawar_taimako', + NS_CATEGORY => 'Rukuni', + NS_CATEGORY_TALK => 'Tattaunawar_rukuni', +]; + +$linkTrail = '/^([a-zƁɓƊɗƘƙR̃r̃Ƴƴ]+)(.*)$/sDu'; diff --git a/resources/src/mediawiki.special.userlogin.common.styles/userlogin.less b/resources/src/mediawiki.special.userlogin.common.styles/userlogin.less index 8813e3bd616a..aa9bde29c65b 100644 --- a/resources/src/mediawiki.special.userlogin.common.styles/userlogin.less +++ b/resources/src/mediawiki.special.userlogin.common.styles/userlogin.less @@ -42,14 +42,9 @@ font-size: 0.8em; } -/* Put some space under template's header, which may contain CAPTCHA HTML. */ -section.mw-form-header { - margin-bottom: 10px; -} - /* shuffled CAPTCHA */ -#wpCaptchaWord { - margin-top: 6px; +#mw-input-captchaWord { + margin-top: 0.5em; } /* FIXME: These should be namespaced to mw-ext-confirmedit-fancycaptcha-, and really shouldn't be in core at all */ @@ -73,9 +68,8 @@ section.mw-form-header { .fancycaptcha-captcha-and-reload { border: @border-subtle; border-radius: @border-radius-base @border-radius-base 0 0; - /* Other display formats end up too wide */ - display: table-cell; - width: 270px; + width: 100%; + box-sizing: border-box; background-color: @background-color-base; } @@ -100,6 +94,7 @@ section.mw-form-header { .mw-login-flush-right { float: right; + text-align: right; padding-right: 0; margin-right: 0; } diff --git a/resources/src/mediawiki.special.userlogin.signup.styles/signup.less b/resources/src/mediawiki.special.userlogin.signup.styles/signup.less index 9cbf485c28db..086425439c36 100644 --- a/resources/src/mediawiki.special.userlogin.signup.styles/signup.less +++ b/resources/src/mediawiki.special.userlogin.signup.styles/signup.less @@ -1,30 +1,20 @@ @import 'mediawiki.skin.variables.less'; -@import 'mediawiki.mixins.less'; .mw-ui-container { - .mixin-clearfix(); + /* Benefits column CSS to the right (if it fits) of the form, otherwise below. */ + display: flex; + flex-wrap: wrap; + column-gap: 100px; + row-gap: 50px; /* Disable the underline that Vector puts on h2 headings, and bold them. */ h2 { border: 0; font-weight: bold; } - - /* Benefits column CSS to the right (if it fits) of the form. */ - #userloginForm { - float: left; - /* Override the right margin of the form to give space in case a benefits - * column appears to the side. */ - margin-right: 100px; - /* Override `.mw-body-content` to ensure useful, readable paragraphs */ - line-height: 1.4; - } } .mw-createacct-benefits-container { - /* Keeps this column compact and close to the form, but tends to squish contents. */ - float: left; - h2 { margin-bottom: 30px; } @@ -56,7 +46,7 @@ color: @color-base; margin: 0; padding: 0; - font-family: 'Linux Libertine', 'Georgia', 'Times', serif; + font-family: @font-family-serif; font-weight: normal; font-size: 2.2em; line-height: 1.2; diff --git a/tests/phpunit/includes/api/ApiTestCase.php b/tests/phpunit/includes/api/ApiTestCase.php index b3eeb67d5340..6137f438142c 100644 --- a/tests/phpunit/includes/api/ApiTestCase.php +++ b/tests/phpunit/includes/api/ApiTestCase.php @@ -246,7 +246,8 @@ abstract class ApiTestCase extends MediaWikiLangTestCase { * ApiUsageException::newWithMessage()'s parameters. This allows checking for an exception * whose text is given by a message key instead of text, so as not to hard-code the message's * text into test code. - * @deprecated Use expectApiErrorCode() instead, it's better to test error codes than messages + * + * @deprecated since 1.43; use expectApiErrorCode() instead, it's better to test error codes than messages * @param string|array|Message $msg * @param string|null $code * @param array|null $data diff --git a/tests/phpunit/includes/auth/AuthManagerTest.php b/tests/phpunit/includes/auth/AuthManagerTest.php index d3b6fbffb064..12e143319880 100644 --- a/tests/phpunit/includes/auth/AuthManagerTest.php +++ b/tests/phpunit/includes/auth/AuthManagerTest.php @@ -825,6 +825,7 @@ class AuthManagerTest extends MediaWikiIntegrationTestCase { // Test without first initializing the configured providers $this->initializeManager(); + $this->expectDeprecationAndContinue( '/AuthManager::forcePrimaryAuthenticationProviders/' ); $this->manager->forcePrimaryAuthenticationProviders( [ $mockB ], 'testing' ); $this->assertSame( [ 'B' => $mockB ], $this->managerPriv->getPrimaryAuthenticationProviders() @@ -842,6 +843,7 @@ class AuthManagerTest extends MediaWikiIntegrationTestCase { $this->assertSame( null, $this->managerPriv->getAuthenticationProvider( 'B' ) ); $this->request->getSession()->setSecret( AuthManager::AUTHN_STATE, 'test' ); $this->request->getSession()->setSecret( AuthManager::ACCOUNT_CREATION_STATE, 'test' ); + $this->expectDeprecationAndContinue( '/AuthManager::forcePrimaryAuthenticationProviders/' ); $this->manager->forcePrimaryAuthenticationProviders( [ $mockB ], 'testing' ); $this->assertSame( [ 'B' => $mockB ], $this->managerPriv->getPrimaryAuthenticationProviders() @@ -864,6 +866,7 @@ class AuthManagerTest extends MediaWikiIntegrationTestCase { // Test duplicate IDs $this->initializeManager(); try { + $this->expectDeprecationAndContinue( '/AuthManager::forcePrimaryAuthenticationProviders/' ); $this->manager->forcePrimaryAuthenticationProviders( [ $mockB, $mockB2 ], 'testing' ); $this->fail( 'Expected exception not thrown' ); } catch ( RuntimeException $ex ) { @@ -3978,4 +3981,22 @@ class AuthManagerTest extends MediaWikiIntegrationTestCase { ], ]; } + + public function testSetRequestContextUserFromSessionUser() { + $user = $this->getTestUser()->getUser(); + $context = RequestContext::getMain(); + $context->setUser( $this->getTestUser()->getUser() ); + $context->getRequest()->getSession()->setUser( $user ); + $this->assertSame( $context->getRequest()->getSession()->getUser()->getName(), $context->getUser()->getName() ); + + // Update the session with a new user, but leave the context user as the old user + $newSessionUser = $this->getTestUser( 'sysop' )->getUser(); + $context->getRequest()->getSession()->setUser( $newSessionUser ); + $this->assertNotSame( $newSessionUser->getName(), $context->getUser()->getName() ); + + $authManager = $this->getServiceContainer()->getAuthManager(); + $authManager->setRequestContextUserFromSessionUser(); + $this->assertSame( $context->getRequest()->getSession()->getUser()->getName(), $newSessionUser->getName() ); + $this->assertSame( $context->getRequest()->getSession()->getUser()->getName(), $context->getUser()->getName() ); + } } diff --git a/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php b/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php index 5b8f5b015d06..bd2500928149 100644 --- a/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php +++ b/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php @@ -95,14 +95,25 @@ class BlockListPagerTest extends MediaWikiIntegrationTestCase { * @dataProvider formatValueEmptyProvider * @dataProvider formatValueDefaultProvider */ - public function testFormatValue( $name, $expected = null, $row = null ) { + public function testFormatValue( $name, $expected, $row ) { // Set the time to now so it does not get off during the test. - MWTimestamp::setFakeTime( MWTimestamp::time() ); - - $value = $name === 'bl_timestamp' ? MWTimestamp::time() : ''; - $expected ??= MWTimestamp::getInstance()->format( 'H:i, j F Y' ); + MWTimestamp::setFakeTime( '20230405060708' ); + + $value = $row->$name ?? null; + + if ( $name === 'bl_timestamp' ) { + // Wrap the expected timestamp in a string with the timestamp in the format + // used by the BlockListPager. + $linkRenderer = $this->getServiceContainer()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( + $this->specialPageFactory->getTitleForAlias( 'BlockList' ), + MWTimestamp::getInstance( $value )->format( 'H:i, j F Y' ), + [], + [ 'wpTarget' => "#{$row->bl_id}" ], + ); + $expected = $link; + } - $row = $row ?: (object)[]; $pager = $this->getBlockListPager(); $wrappedPager = TestingAccessWrapper::newFromObject( $pager ); $wrappedPager->mCurrentRow = $row; @@ -115,18 +126,14 @@ class BlockListPagerTest extends MediaWikiIntegrationTestCase { * Test empty values. */ public static function formatValueEmptyProvider() { + $row = (object)[ + 'bl_id' => 1, + ]; + return [ - [ - 'test', - 'Unable to format test', - ], - [ - 'bl_timestamp', - ], - [ - 'bl_expiry', - 'infinite<br />0 minutes left', - ], + [ 'test', 'Unable to format test', $row ], + [ 'bl_timestamp', null, $row ], + [ 'bl_expiry', 'infinite<br />0 minutes left', $row ], ]; } @@ -138,6 +145,7 @@ class BlockListPagerTest extends MediaWikiIntegrationTestCase { 'bt_user' => 0, 'bt_user_text' => null, 'bt_address' => '127.0.0.1', + 'bl_id' => 1, 'bl_by_text' => 'Admin', 'bt_auto' => 0, 'bl_anon_only' => 0, @@ -157,7 +165,7 @@ class BlockListPagerTest extends MediaWikiIntegrationTestCase { ], [ 'bl_timestamp', - null, + '20230405060708', $row, ], [ diff --git a/tests/phpunit/integration/includes/Rest/Handler/PageRedirectHandlerTest.php b/tests/phpunit/integration/includes/Rest/Handler/PageRedirectHandlerTest.php index cf7a66310c2e..d097ceb43fce 100644 --- a/tests/phpunit/integration/includes/Rest/Handler/PageRedirectHandlerTest.php +++ b/tests/phpunit/integration/includes/Rest/Handler/PageRedirectHandlerTest.php @@ -21,8 +21,6 @@ class PageRedirectHandlerTest extends MediaWikiIntegrationTestCase { private const WIKITEXT = 'Hello \'\'\'World\'\'\''; - private const HTML = '<p>Hello <b>World</b></p>'; - /** @var HashBagOStuff */ private $parserCacheBagOStuff; @@ -35,11 +33,9 @@ class PageRedirectHandlerTest extends MediaWikiIntegrationTestCase { private function getHandler( $name, RequestInterface $request ) { switch ( $name ) { case 'source': - return $this->newPageSourceHandler(); case 'bare': return $this->newPageSourceHandler(); case 'html': - return $this->newPageHtmlHandler( $request ); case 'with_html': return $this->newPageHtmlHandler( $request ); case 'history': |