/** * Language code for message documentation. Suggested values are qqq or info. * If set to false (default), message documentation feature is disabled. */ $wgTranslateDocumentationLanguageCode = false; /** * Name of the bot which will invalidate translations and do maintenance * for page translation feature. Also used for importing messages from external * sources. */ $wgTranslateFuzzyBotName = 'FuzzyBot'; /** * Add a preference "Do not send me email newsletters" in the email preferences. */ $wgTranslateNewsletterPreference = false; /** * Default values for list of languages to show translators as an aid when * translating. Each user can override this setting in their preferences. * Example: * $wgTranslateLanguageFallbacks['fi'] = 'sv'; * $wgTranslateLanguageFallbacks['sv'] = array( 'da', 'no', 'nn' ); */ $wgTranslateLanguageFallbacks = []; /** * Text that will be shown in translations if the translation is outdated. * Must be something that does not conflict with actual content. */ if ( !defined( 'TRANSLATE_FUZZY' ) ) { define( 'TRANSLATE_FUZZY', '!!FUZZY!!' ); } /** * 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 * - clients ip address encrypted with $wgProxyKey * - source text to translate * - private API key if provided */ $wgTranslateTranslationDefaultService = 'TTMServer'; $wgTranslateTranslationServices = []; $wgTranslateTranslationServices['TTMServer'] = [ 'database' => false, // Passed to wfGetDB 'cutoff' => 0.75, 'type' => 'ttmserver', 'public' => false, ]; $wgTranslateTranslationServices['Microsoft'] = [ 'url' => 'https://api.cognitive.microsofttranslator.com', 'key' => null, 'timeout' => 3, 'type' => 'microsoft', ]; $wgTranslateTranslationServices['Apertium'] = [ 'url' => 'http://apy.projectjj.com/translate', 'pairs' => 'http://apy.projectjj.com/listPairs', 'key' => null, 'timeout' => 3, 'type' => 'apertium', ]; $wgTranslateTranslationServices['Yandex'] = [ 'url' => 'https://translate.yandex.net/api/v1.5/tr.json/translate', 'key' => null, 'pairs' => 'https://translate.yandex.net/api/v1.5/tr.json/getLangs', 'timeout' => 3, 'langorder' => [ 'en', 'ru', 'uk', 'de', 'fr', 'pl', 'it', 'es', 'tr' ], 'langlimit' => 1, 'type' => 'yandex', ]; /** * Experimental support 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. * @since 2011-03-11 */ $wgTranslateSupportUrl = false; /** * 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 */ $wgTranslateSupportUrlNamespace = []; /** * 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. */ $wgTranslatePermissionUrl = 'Project:Translator'; $wgTranslateSecondaryPermissionUrl = 'Project:Translator'; # # === Page translation feature === # /** * Enable page translation feature. * * Page translation feature allows structured translation of wiki pages * with simple markup and automatic tracking of changes. * * @defgroup PageTranslation Page Translation * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Page_translation_administration */ $wgEnablePageTranslation = true; /** * 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 */ $wgTranslatePageTranslationULS = false; /** * 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 */ $wgTranslateKeepOutdatedTranslations = true; /** * How language list for translatable pages is shown. Allowed values: * tag-only: Only display languages with the \ 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 */ $wgPageTranslationLanguageList = 'tag-only'; # # === Message group configuration === # /** * 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: * $wgTranslateBlacklist = array( * '*' => array( // All groups * 'en' => 'English is the source language.', * ), * 'core' => array( // Exact group * 'mul' => 'Not a real language.', * ), * 'ext' => array( // Wildcard-like group * 'mul' => 'Not a real language', * ), * ); */ $wgTranslateBlacklist = []; /** * File containing checks that are to be skipped. See * https://gerrit.wikimedia.org/r/gitweb?p=translatewiki.git;a=blob;f=check-blacklist.php;hb=HEAD * for example. * * @since 2012-10-15 */ $wgTranslateCheckBlacklist = false; /** * Two-dimensional array of rules that blacklists 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: white or black. Whitelisting * always overrules blacklisting. 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 by default we have rule that ignores all authors whose name * ends in a bot for all languages and all groups. */ $wgTranslateAuthorBlacklist = []; $wgTranslateAuthorBlacklist[] = [ 'black', '/^.*;.*;.*Bot$/Ui' ]; /** * List of namespace that contain messages. No talk namespaces. * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Group_configuration */ $wgTranslateMessageNamespaces = []; /** * CC = Custom classes. * Custom classes can register themselves here. * Key is always the group id, while the value is an message group object * or callable function. * @deprecated Use TranslatePostInitGroups hook instead. */ $wgTranslateCC = []; /** * Location in the filesystem to which paths are relative in custom groups. */ $wgTranslateGroupRoot = '/var/www/externals'; /** * The newest and recommended way of adding custom groups is YAML files. * See examples under Translate/groups * Usage example: * $wgTranslateGroupFiles[] = "$IP/extensions/Translate/groups/Shapado/Shapado.yml"; */ $wgTranslateGroupFiles = []; /** * 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. * * right: 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: * $wgTranslateWorkflowStates = array( * 'new' => array( 'color' => 'FF0000' ), // red * 'needs_proofreading' => array( 'color' => '0000FF' ), // blue * 'ready' => array( 'color' => 'FFFF00' ), // yellow * 'published' => array( * 'color' => '00FF00', // green * 'right' => 'centralnotice-admin', * ), * ); */ $wgTranslateWorkflowStates = false; /** * Map from deprecated group IDs to their current ID * Example value: array( 'core' => 'mediawiki-core' ) */ $wgTranslateGroupAliases = []; # # === System setup related configuration === # /** * Set location of cache files. Defaults to $wgCacheDirectory. */ $wgTranslateCacheDirectory = false; /** * Configures how the message index is stored. * The other backends need $wgCacheDirectory to be functional. */ $wgTranslateMessageIndex = [ 'DatabaseMessageIndex' ]; // $wgTranslateMessageIndex = array( 'SerializedMessageIndex' ); // $wgTranslateMessageIndex = array( 'CDBMessageIndex' ); /** * If you have lots of message groups, especially file based ones, and the * message index rebuilding gets slow, set this to true to delay the rebuilding * via JobQueue. This only makes sense if you have configured jobs to be * processed outside of requests via cron or similar. * @since 2012-05-03 */ $wgTranslateDelayedMessageIndexRebuild = false; # # ==== PHPlot ==== # /** * For Special:TranslationStats PHPlot is needed to produce graphs. * Set this the location of phplot.php. */ $wgTranslatePHPlot = false; /** * The default font for PHPlot for drawing text. Only used if the automatic * best font selection fails. The automatic best font selector uses language * code to call fc-match program. If you have open_basedir restriction or * safe-mode, using the found font is likely to fail. In this case you need * to change the code to use hard-coded font, or copy fonts to location PHP * can access them, and make sure fc-match returns only those fonts. */ $wgTranslatePHPlotFont = '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf'; # # ==== YAML driver ==== # /** * Currently supported YAML drivers are phpyaml, spyc and syck. * * For phpyaml see https://secure.php.net/manual/en/book.yaml.php. * * For syck we're shelling out to perl. So you need: * * * At least perl 5.8 (find out what you have by running "perl -v") * * Install these modules from CPAN * * YAML::Syck * * PHP::Serialization. * * File::Slurp * * You should be able to do this with: * for module in 'YAML::Syck' 'PHP::Serialization' 'File::Slurp'; do cpanp -i $module; done * * For the shell to work, you also need an en.UTF-8 locale installed on your system. * add a line "en.UTF-8" to your /etc/locale.gen or uncomment an existing one and run locale-gen * if you do not have it already. * * phpyaml is the fastest and based on libyaml so the output should be most * compatible. spyc output format is least compatible. syck is slowest but * almost as good as phpyaml. * * spyc needs to be installed using composer. See https://www.mediawiki.org/wiki/Composer */ $wgTranslateYamlLibrary = function_exists( 'yaml_parse' ) ? 'phpyaml' : 'spyc'; # # ==== Sandbox ==== # /** * 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. * @since 2013.04 */ $wgTranslateUseSandbox = false; /** * To which group the translators are promoted. If left at false, they will just * be removed from sandbox and become normal users. * @since 2013.04 */ $wgTranslateSandboxPromotedGroup = false; /** * List of page names to always suggest for sandboxed users. * @since 2013.10 */ $wgTranslateSandboxSuggestions = []; /** * Maximum number of translations a user can make in the sandbox. * @since 2013.10 */ $wgTranslateSandboxLimit = 20; # # === Unsorted === # /** * 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. */ $wgTranslateUsePreSaveTransform = false; /** * Default action for the RecentChanges filter, which makes it possible to filter * translations away or show them only. * Possible values: ('noaction', 'only', 'filter', 'site') */ $wgTranslateRcFilterDefault = 'filter'; /** * Set this to config like $wgTranslateTranslationServices if you want to run * SolrTTMServer tests. * @since 2013-01-04 */ $wgTranslateTestTTMServer = null; /** * List of user names that are allowed to alter their privileges and do other * things. Used for supporting integration testing. * @since 2013.10 */ $wgTranslateTestUsers = []; # /** * Helper function for adding namespace for message groups. * * It defines constants for the namespace (and talk namespace) and sets up * restrictions and some other configuration. * @param int $id Namespace number * @param string $name Name of the namespace * @param string|null $constant (optional) name of namespace constant, defaults to * NS_ followed by upper case version of $name, e.g., NS_MEDIAWIKI */ function wfAddNamespace( $id, $name, $constant = null ) { global $wgExtraNamespaces, $wgContentNamespaces, $wgTranslateMessageNamespaces, $wgNamespaceProtection, $wgNamespacesWithSubpages, $wgNamespacesToBeSearchedDefault; if ( is_null( $constant ) ) { $constant = strtoupper( "NS_$name" ); } define( $constant, $id ); define( $constant . '_TALK', $id + 1 ); $wgExtraNamespaces[$id] = $name; $wgExtraNamespaces[$id + 1] = $name . '_talk'; $wgContentNamespaces[] = $id; $wgTranslateMessageNamespaces[] = $id; $wgNamespacesWithSubpages[$id] = true; $wgNamespacesWithSubpages[$id + 1] = true; $wgNamespaceProtection[$id] = [ 'translate' ]; $wgNamespacesToBeSearchedDefault[$id] = true; } /** @defgroup TranslateSpecialPage Special pages of Translate extension */