diff options
Diffstat (limited to 'MLEB/Translate/Translate.php')
-rw-r--r-- | MLEB/Translate/Translate.php | 666 |
1 files changed, 666 insertions, 0 deletions
diff --git a/MLEB/Translate/Translate.php b/MLEB/Translate/Translate.php new file mode 100644 index 00000000..a0a94d46 --- /dev/null +++ b/MLEB/Translate/Translate.php @@ -0,0 +1,666 @@ +<?php +if ( !defined( 'MEDIAWIKI' ) ) { + die(); +} +/** + * An extension to ease the translation of Mediawiki and other projects. + * + * @file + * @ingroup Extensions + * + * @author Niklas Laxström + * @author Siebrand Mazeland + * @copyright Copyright © 2006-2014, Niklas Laxström, Siebrand Mazeland + * @license GPL-2.0+ + */ + +/** + * Version number used in extension credits and in other places where needed. + */ +define( 'TRANSLATE_VERSION', '2014-10-31' ); + +/** + * Extension credits properties. + */ +$GLOBALS['wgExtensionCredits']['specialpage'][] = array( + 'path' => __FILE__, + 'name' => 'Translate', + 'version' => '[https://www.mediawiki.org/wiki/MLEB MLEB 2014.11]', + 'author' => array( + 'Niklas Laxström', + 'Santhosh Thottingal', + 'Siebrand Mazeland' + ), + 'descriptionmsg' => 'translate-desc', + 'url' => 'https://www.mediawiki.org/wiki/Extension:Translate', +); + +/** + * @cond file_level_code + * Setup class autoloading. + */ +$dir = __DIR__; +require_once "$dir/Autoload.php"; +/** @endcond */ + +/** + * Registering various resources + * @cond file_level_code + */ + +$GLOBALS['wgMessagesDirs']['PageTranslation'] = __DIR__ . "/i18n/pagetranslation"; +$GLOBALS['wgMessagesDirs']['Translate'] = __DIR__ . "/i18n/core"; +$GLOBALS['wgMessagesDirs']['TranslateGroupDescriptions'] = __DIR__ . "/i18n/groupdescriptions"; +$GLOBALS['wgMessagesDirs']['TranslateSearch'] = __DIR__ . "/i18n/search"; +$GLOBALS['wgMessagesDirs']['TranslateSandbox'] = __DIR__ . "/i18n/sandbox"; +$GLOBALS['wgMessagesDirs']['TranslateApi'] = __DIR__ . "/i18n/api"; + +// Register extension messages and other localisation. +$GLOBALS['wgExtensionMessagesFiles']['Translate'] = "$dir/Translate.i18n.php"; +$GLOBALS['wgExtensionMessagesFiles']['PageTranslation'] = "$dir/PageTranslation.i18n.php"; +$GLOBALS['wgExtensionMessagesFiles']['TranslateGroupDescriptions'] = + "$dir/TranslateGroupDescriptions.i18n.php"; +$GLOBALS['wgExtensionMessagesFiles']['TranslateSearch'] = "$dir/TranslateSearch.i18n.php"; +$GLOBALS['wgExtensionMessagesFiles']['TranslateSandbox'] = "$dir/TranslateSandbox.i18n.php"; +$GLOBALS['wgExtensionMessagesFiles']['TranslateAlias'] = "$dir/Translate.alias.php"; +// Backwards compatibility: +// If Special:MyLanguage is not in core, load translations of its name +// from the Translate extension's code. +// See https://bugzilla.wikimedia.org/69461 +if ( !isset( $GLOBALS['wgAutoloadLocalClasses']['SpecialMyLanguage'] ) ) { + $GLOBALS['wgExtensionMessagesFiles']['TranslateMyLanguageAlias'] = + "$dir/Translate.MyLanguage.alias.php"; +} + +$GLOBALS['wgExtensionMessagesFiles']['TranslateMagic'] = "$dir/Translate.i18n.magic.php"; + +// Register initialization code +$GLOBALS['wgExtensionFunctions'][] = 'TranslateHooks::setupTranslate'; +$GLOBALS['wgHooks']['CanonicalNamespaces'][] = 'TranslateHooks::setupNamespaces'; +$GLOBALS['wgHooks']['UnitTestsList'][] = 'TranslateHooks::setupUnitTests'; +$GLOBALS['wgHooks']['LoadExtensionSchemaUpdates'][] = 'TranslateHooks::schemaUpdates'; +$GLOBALS['wgHooks']['ParserTestTables'][] = 'TranslateHooks::parserTestTables'; +$GLOBALS['wgHooks']['PageContentLanguage'][] = 'TranslateHooks::onPageContentLanguage'; + +// Register special pages into MediaWiki +$GLOBALS['wgSpecialPages']['Translate'] = 'SpecialTranslate'; +$GLOBALS['wgSpecialPages']['Translations'] = 'SpecialTranslations'; +// Disabled by default +// $GLOBALS['wgSpecialPages']['Magic'] = 'SpecialMagic'; +$GLOBALS['wgSpecialPages']['TranslationStats'] = 'SpecialTranslationStats'; +$GLOBALS['wgSpecialPages']['LanguageStats'] = 'SpecialLanguageStats'; +$GLOBALS['wgSpecialPages']['MessageGroupStats'] = 'SpecialMessageGroupStats'; +$GLOBALS['wgSpecialPages']['ImportTranslations'] = 'SpecialImportTranslations'; +$GLOBALS['wgSpecialPages']['ManageMessageGroups'] = 'SpecialManageGroups'; +$GLOBALS['wgSpecialPages']['SupportedLanguages'] = 'SpecialSupportedLanguages'; + +// Unlisted special page; does not need $wgSpecialPageGroups. +$GLOBALS['wgSpecialPages']['MyLanguage'] = 'SpecialMyLanguage'; +$GLOBALS['wgSpecialPages']['AggregateGroups'] = 'SpecialAggregateGroups'; +$GLOBALS['wgSpecialPages']['SearchTranslations'] = 'SpecialSearchTranslations'; +$GLOBALS['wgSpecialPages']['ManageTranslatorSandbox'] = 'SpecialManageTranslatorSandbox'; +$GLOBALS['wgSpecialPages']['TranslationStash'] = 'SpecialTranslationStash'; + +// API +$GLOBALS['wgAPIGeneratorModules']['messagecollection'] = 'ApiQueryMessageCollection'; +$GLOBALS['wgAPIListModules']['messagecollection'] = 'ApiQueryMessageCollection'; +$GLOBALS['wgAPIMetaModules']['languagestats'] = 'ApiQueryLanguageStats'; +$GLOBALS['wgAPIMetaModules']['messagegroups'] = 'ApiQueryMessageGroups'; +$GLOBALS['wgAPIMetaModules']['messagegroupstats'] = 'ApiQueryMessageGroupStats'; +$GLOBALS['wgAPIMetaModules']['messagetranslations'] = 'ApiQueryMessageTranslations'; +$GLOBALS['wgAPIModules']['aggregategroups'] = 'ApiAggregateGroups'; +$GLOBALS['wgAPIModules']['groupreview'] = 'ApiGroupReview'; +$GLOBALS['wgAPIModules']['hardmessages'] = 'ApiHardMessages'; +$GLOBALS['wgAPIModules']['translatesandbox'] = 'ApiTranslateSandbox'; +$GLOBALS['wgAPIModules']['translateuser'] = 'ApiTranslateUser'; +$GLOBALS['wgAPIModules']['translationaids'] = 'ApiTranslationAids'; +$GLOBALS['wgAPIModules']['translationreview'] = 'ApiTranslationReview'; +$GLOBALS['wgAPIModules']['translationstash'] = 'ApiTranslationStash'; +$GLOBALS['wgAPIModules']['ttmserver'] = 'ApiTTMServer'; +$GLOBALS['wgHooks']['ApiTokensGetTokenTypes'][] = 'ApiTranslationReview::injectTokenFunction'; +$GLOBALS['wgHooks']['ApiTokensGetTokenTypes'][] = 'ApiGroupReview::injectTokenFunction'; +$GLOBALS['wgHooks']['ApiTokensGetTokenTypes'][] = 'ApiAggregateGroups::injectTokenFunction'; +$GLOBALS['wgHooks']['ApiTokensGetTokenTypes'][] = 'ApiHardMessages::injectTokenFunction'; +$GLOBALS['wgHooks']['ApiTokensGetTokenTypes'][] = 'ApiTranslateSandbox::injectTokenFunction'; +$GLOBALS['wgHooks']['ApiTokensGetTokenTypes'][] = 'ApiTranslationStash::injectTokenFunction'; + +// Register hooks. +$GLOBALS['wgHooks']['EditPage::showEditForm:initial'][] = 'TranslateEditAddons::addTools'; +$GLOBALS['wgHooks']['AlternateEdit'][] = 'TranslateEditAddons::intro'; +$GLOBALS['wgHooks']['EditPageBeforeEditButtons'][] = 'TranslateEditAddons::buttonHack'; +$GLOBALS['wgHooks']['LanguageGetTranslatedLanguageNames'][] = + 'TranslateHooks::translateMessageDocumentationLanguage'; +$GLOBALS['wgHooks']['TranslateSupportedLanguages'][] = + 'TranslateHooks::translateMessageDocumentationLanguage'; +$GLOBALS['wgHooks']['ArticlePrepareTextForEdit'][] = 'TranslateEditAddons::disablePreSaveTransform'; +$GLOBALS['wgHooks']['ParserFirstCallInit'][] = 'TranslateHooks::setupTranslateParserFunction'; + +// Prevent translations creating bogus categories +$GLOBALS['wgHooks']['LinksUpdate'][] = 'TranslateHooks::preventCategorization'; +// Fuzzy tags for speed. +$GLOBALS['wgHooks']['PageContentSaveComplete'][] = 'TranslateEditAddons::onSave'; + +$GLOBALS['wgHooks']['Translate:newTranslation'][] = 'TranslateEditAddons::updateTransverTag'; + +$GLOBALS['wgHooks']['SkinTemplateNavigation::SpecialPage'][] = 'SpecialTranslate::tabify'; +$GLOBALS['wgHooks']['SkinTemplateNavigation::SpecialPage'][] = 'SpecialManageGroups::tabify'; + +// Custom preferences +$GLOBALS['wgDefaultUserOptions']['translate'] = 0; +$GLOBALS['wgDefaultUserOptions']['translate-editlangs'] = 'default'; +$GLOBALS['wgDefaultUserOptions']['translate-recent-groups'] = ''; +$GLOBALS['wgHooks']['GetPreferences'][] = 'TranslatePreferences::onGetPreferences'; +$GLOBALS['wgHooks']['GetPreferences'][] = 'TranslatePreferences::translationAssistLanguages'; + +// Recent changes filters +$GLOBALS['wgHooks']['SpecialRecentChangesQuery'][] = 'TranslateRcFilter::translationFilter'; +$GLOBALS['wgHooks']['SpecialRecentChangesPanel'][] = 'TranslateRcFilter::translationFilterForm'; +$GLOBALS['wgHooks']['SkinTemplateToolboxEnd'][] = 'TranslateToolbox::toolboxAllTranslations'; +$GLOBALS['wgHooks']['AbortEmailNotification'][] = 'TranslateHooks::onAbortEmailNotificationReview'; + +// Translation memory related +$GLOBALS['wgHooks']['ArticleDeleteComplete'][] = 'TTMServer::onDelete'; +$GLOBALS['wgHooks']['TranslateEventMessageMembershipChange'][] = 'TTMServer::onGroupChange'; + +// Translation display related +$GLOBALS['wgHooks']['ArticleContentOnDiff'][] = 'TranslateEditAddons::displayOnDiff'; + +// Search profile +$GLOBALS['wgHooks']['SpecialSearchProfiles'][] = 'TranslateHooks::searchProfile'; +$GLOBALS['wgHooks']['SpecialSearchProfileForm'][] = 'TranslateHooks::searchProfileForm'; +$GLOBALS['wgHooks']['SpecialSearchSetupEngine'][] = 'TranslateHooks::searchProfileSetupEngine'; + +$GLOBALS['wgHooks']['LinkBegin'][] = 'TranslateHooks::linkfix'; + +// Stats table manipulation +$GLOBALS['wgHooks']['Translate:MessageGroupStats:isIncluded'][] = + 'TranslateHooks::hideDiscouragedFromStats'; +$GLOBALS['wgHooks']['Translate:MessageGroupStats:isIncluded'][] = + 'TranslateHooks::hideRestrictedFromStats'; + +$GLOBALS['wgHooks']['MakeGlobalVariablesScript'][] = 'TranslateHooks::addConfig'; + +// Sandbox +$GLOBALS['wgDefaultUserOptions']['translate-sandbox'] = ''; +$GLOBALS['wgHooks']['GetPreferences'][] = 'TranslateSandbox::onGetPreferences'; +$GLOBALS['wgHooks']['UserGetRights'][] = 'TranslateSandbox::enforcePermissions'; +$GLOBALS['wgHooks']['ApiCheckCanExecute'][] = 'TranslateSandbox::onApiCheckCanExecute'; + +// Internal event listeners +$GLOBALS['wgHooks']['TranslateEventTranslationEdit'][] = 'MessageGroupStats::clear'; +$GLOBALS['wgHooks']['TranslateEventTranslationReview'][] = 'MessageGroupStats::clear'; +$GLOBALS['wgHooks']['TranslateEventTranslationEdit'][] = 'MessageGroupStatesUpdaterJob::onChange'; +$GLOBALS['wgHooks']['TranslateEventTranslationReview'][] = 'MessageGroupStatesUpdaterJob::onChange'; + +// Other extensions +$GLOBALS['wgHooks']['AdminLinks'][] = 'TranslateHooks::onAdminLinks'; +$GLOBALS['wgHooks']['MergeAccountFromTo'][] = 'TranslateHooks::onMergeAccountFromTo'; +$GLOBALS['wgHooks']['DeleteAccount'][] = 'TranslateHooks::onDeleteAccount'; + +// New rights +$GLOBALS['wgAvailableRights'][] = 'translate'; +$GLOBALS['wgAvailableRights'][] = 'translate-import'; +$GLOBALS['wgAvailableRights'][] = 'translate-manage'; +$GLOBALS['wgAvailableRights'][] = 'translate-messagereview'; +$GLOBALS['wgAvailableRights'][] = 'translate-groupreview'; +$GLOBALS['wgAvailableRights'][] = 'translate-sandboxmanage'; + +// Logs. More logs are defined in TranslateHooks::setupTranslate +$GLOBALS['wgLogTypes'][] = 'translationreview'; +$GLOBALS['wgLogActionsHandlers']['translationreview/message'] = 'TranslateLogFormatter'; +$GLOBALS['wgLogActionsHandlers']['translationreview/group'] = 'TranslateLogFormatter'; + +$GLOBALS['wgLogTypes'][] = 'translatorsandbox'; +$GLOBALS['wgLogActionsHandlers']['translatorsandbox/promoted'] = 'TranslateLogFormatter'; +$GLOBALS['wgLogActionsHandlers']['translatorsandbox/rejected'] = 'TranslateLogFormatter'; +$GLOBALS['wgLogActionsHandlers']['newusers/tsbpromoted'] = 'LogFormatter'; + +// New jobs +$GLOBALS['wgJobClasses']['MessageIndexRebuildJob'] = 'MessageIndexRebuildJob'; +$GLOBALS['wgJobClasses']['MessageUpdateJob'] = 'MessageUpdateJob'; +$GLOBALS['wgJobClasses']['MessageGroupStatesUpdaterJob'] = 'MessageGroupStatesUpdaterJob'; +$GLOBALS['wgJobClasses']['TTMServerMessageUpdateJob'] = 'TTMServerMessageUpdateJob'; +$GLOBALS['wgJobClasses']['TranslateSandboxEmailJob'] = 'TranslateSandboxEmailJob'; + +$GLOBALS['wgParserTestFiles'][] = "$dir/tests/parser/translateParserTests.txt"; + +require "$dir/Resources.php"; +/** @endcond */ + + +# == Configuration variables == + +# === Basic configuration === +# <source lang=php> +/** + * Language code for message documentation. Suggested values are qqq or info. + * If set to false (default), message documentation feature is disabled. + */ +$GLOBALS['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. + */ +$GLOBALS['wgTranslateFuzzyBotName'] = 'FuzzyBot'; + +/** + * Add a preference "Do not send me email newsletters" in the email preferences. + */ +$GLOBALS['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' ); + */ +$GLOBALS['wgTranslateLanguageFallbacks'] = array(); + +/** + * 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 + */ +$GLOBALS['wgTranslateTranslationServices'] = array(); +$GLOBALS['wgTranslateTranslationServices']['TTMServer'] = array( + 'database' => false, // Passed to wfGetDB + 'cutoff' => 0.75, + 'type' => 'ttmserver', + 'public' => false, +); +$GLOBALS['wgTranslateTranslationServices']['Microsoft'] = array( + 'url' => 'http://api.microsofttranslator.com/V2/Http.svc/Translate', + 'key' => null, + 'timeout' => 3, + 'type' => 'microsoft', +); +$GLOBALS['wgTranslateTranslationServices']['Apertium'] = array( + 'url' => 'http://api.apertium.org/json/translate', + 'pairs' => 'http://api.apertium.org/json/listPairs', + 'key' => null, + 'timeout' => 3, + 'type' => 'apertium', +); +$GLOBALS['wgTranslateTranslationServices']['Yandex'] = array( + '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' => array( 'en', 'ru', 'uk', 'de', 'fr', 'pl', 'it', 'es', 'tr' ), + 'langlimit' => 1, + 'type' => 'yandex', +); + +/** + * List of tasks in Special:Translate. If you are only using page translation + * feature, you might want to disable 'optional' task. Example: + * unset($wgTranslateTasks['optional']); + */ +$GLOBALS['wgTranslateTasks'] = array( + 'view' => 'ViewMessagesTask', + 'untranslated' => 'ViewUntranslatedTask', + 'optional' => 'ViewOptionalTask', + 'acceptqueue' => 'AcceptQueueMessagesTask', + 'reviewall' => 'ReviewAllMessagesTask', + 'export-as-po' => 'ExportasPoMessagesTask', + 'export-to-file' => 'ExportToFileMessagesTask', + 'custom' => 'CustomFilteredMessagesTask', +); + +/** + * Experimental support for Ask help button. + * Might change into hook later on. + * This is an array with keys page and params. + * - page is a title of a local wiki page + * - params is an array of key-value pairs of request params + * -- param value can contain variable %MESSAGE% which will be replaced with + * full page name. + * @since 2011-03-11 + */ +$GLOBALS['wgTranslateSupportUrl'] = false; + +/** + * 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. + */ +$GLOBALS['wgTranslatePermissionUrl'] = 'Project:Translator'; +$GLOBALS['wgTranslateSecondaryPermissionUrl'] = 'Project:Translator'; + +# </source> +# === Page translation feature === +# <source lang=php> +/** + * 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 + */ +$GLOBALS['wgEnablePageTranslation'] = true; + +/** + * Number for the Translations namespace. Change this if it conflicts with + * other namespace in your wiki. + */ +$GLOBALS['wgPageTranslationNamespace'] = 1198; + +/** + * 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 + */ +$GLOBALS['wgTranslatePageTranslationULS'] = false; + +# </source> +# === Message group configuration === +# <source lang=php> + +/** + * 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', + * ), + * ); + */ + +$GLOBALS['wgTranslateBlacklist'] = array(); + +/** + * 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 + */ +$GLOBALS['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. + */ +$GLOBALS['wgTranslateAuthorBlacklist'] = array(); +$GLOBALS['wgTranslateAuthorBlacklist'][] = array( 'black', '/^.*;.*;.*Bot$/Ui' ); + +/** + * List of namespace that contain messages. No talk namespaces. + * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Group_configuration + */ +$GLOBALS['wgTranslateMessageNamespaces'] = array(); + +/** + * 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. + */ +$GLOBALS['wgTranslateCC'] = array(); + +/** + * Location in the filesystem to which paths are relative in custom groups. + */ +$GLOBALS['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"; + */ +$GLOBALS['wgTranslateGroupFiles'] = array(); + +/** + * 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', + * ), + * ); + */ +$GLOBALS['wgTranslateWorkflowStates'] = false; + +# </source> +# === System setup related configuration === +# <source lang=php> +/** + * Set location of cache files. Defaults to $wgCacheDirectory. + */ +$GLOBALS['wgTranslateCacheDirectory'] = false; + +/** + * Configures how the message index is stored. + * The other backends need $wgCacheDirectory to be functional. + */ +$GLOBALS['wgTranslateMessageIndex'] = array( '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 + */ +$GLOBALS['wgTranslateDelayedMessageIndexRebuild'] = false; + +# </source> +# ==== PHPlot ==== +# <source lang=php> +/** + * For Special:TranslationStats PHPlot is needed to produce graphs. + * Set this the location of phplot.php. + */ +$GLOBALS['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. + */ +$GLOBALS['wgTranslatePHPlotFont'] = '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf'; + +# </source> +# ==== YAML driver ==== +# <source lang=php> +/** + * Currently supported YAML drivers are phpyaml, spyc and syck. + * + * For phpyaml see http://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. + */ +$GLOBALS['wgTranslateYamlLibrary'] = 'spyc'; + +# </source> +# ==== Sandbox ==== +# <source lang=php> + +/** + * 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. Only works with + * MediaWiki 1.22 or newer. + * @since 2013.04 + */ +$GLOBALS['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 + */ +$GLOBALS['wgTranslateSandboxPromotedGroup'] = false; + +/** + * List of page names to always suggest for sandboxed users. + * @since 2013.10 + */ +$GLOBALS['wgTranslateSandboxSuggestions'] = array(); + +/** + * Maximum number of translations a user can make in the sandbox. + * @since 2013.10 + */ +$GLOBALS['wgTranslateSandboxLimit'] = 20; + +# </source> +# === Unsorted === +# <source lang=php> +/** + * 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. + */ +$GLOBALS['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') + */ +$GLOBALS['wgTranslateRcFilterDefault'] = 'filter'; + +/** + * Set this to config like $wgTranslateTranslationServices if you want to run + * SolrTTMServer tests. + * @since 2013-01-04 + */ +$GLOBALS['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 + */ +$GLOBALS['wgTranslateTestUsers'] = array(); + +# </source> + +/** + * 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 $id \int Namespace number + * @param $name \string Name of the namespace + */ +function wfAddNamespace( $id, $name ) { + global $wgExtraNamespaces, $wgContentNamespaces, $wgTranslateMessageNamespaces, + $wgNamespaceProtection, $wgNamespacesWithSubpages, $wgNamespacesToBeSearchedDefault; + + $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] = array( 'translate' ); + + $wgNamespacesToBeSearchedDefault[$id] = true; +} + +/** @defgroup TranslateSpecialPage Special pages of Translate extension */ |