{"master":{"name":"BlueSpiceTranslationTransfer","version":"5.0.0-alpha","license-name":"GPL-3.0-only","author":["[https:\/\/www.hallowelt.com Hallo Welt! GmbH]"],"url":"https:\/\/en.wiki.bluespice.com\/wiki\/Reference:BlueSpiceTranslationTransfer","descriptionmsg":"bs-translationtransfer-desc","requires":{"MediaWiki":">= 1.46.0","extensions":{"BlueSpiceFoundation":">= 5.0.0","BlueSpiceVisualEditorConnector":"*","ContentTransfer":"*","MergeArticles":"*","OOJSPlus":">= 3.0.0","VisualEditor":"*"}},"attributes":{"BlueSpiceFoundation":{"AlertProviderRegistry":{"translationtransfer-translation-banner":"BlueSpice\\TranslationTransfer\\AlertProvider\\TranslationBanner::factory"},"ConfigDefinitionRegistry":{"TranslateTransferNamespaces":"BlueSpice\\TranslationTransfer\\ConfigDefinition\\TranslateTransferNamespaces::getInstance","TranslateTransferTargetNamespaceMapping":"BlueSpice\\TranslationTransfer\\ConfigDefinition\\TranslateTransferTargetNamespaceMapping::getInstance"}},"BlueSpiceDiscovery":{"LangLinksProviderRegistry":{"translation-transfer":{"class":"BlueSpice\\TranslationTransfer\\LangLinksProvider\\TranslationTransfer","services":["LanguageNameUtils","TranslationTransferTargetRecognizer","ContentTransferTargetManager","DBLoadBalancer"]}}},"BlueSpiceTranslationTransfer":{"PluginModules":[]},"VisualEditor":{"PluginModules":["ext.translate.transfer.nodes"]}},"SpecialPages":{"TranslationOverview":"\\BlueSpice\\TranslationTransfer\\Special\\TranslationOverview","TranslationDictionary":"\\BlueSpice\\TranslationTransfer\\Special\\TranslationDictionary","TranslationGlossary":"\\BlueSpice\\TranslationTransfer\\Special\\TranslationGlossary"},"APIModules":{"bs-translation-transfer-tasks":"\\BlueSpice\\TranslationTransfer\\Api\\Task\\Translate","bs-translation-transfer-foreign-page-tasks":"\\BlueSpice\\TranslationTransfer\\Api\\Task\\ForeignPage","bs-translation-transfer-convert":{"class":"\\BlueSpice\\TranslationTransfer\\Api\\ParsoidConversion","services":["RevisionLookup","TempUserCreator","UserFactory","UserOptionsLookup","WatchlistManager","ContentTransformer","StatsdDataFactory","WikiPageFactory","IntroMessageBuilder","PreloadedContentBuilder","SpecialPageFactory","VisualEditor.ParsoidClientFactory"]}},"ServiceWiringFiles":["includes\/ServiceWiring.php"],"JobClasses":{"UpdateTranslationsReleaseTimestamp":"\\BlueSpice\\TranslationTransfer\\Job\\UpdateTranslationsReleaseTimestamp","UpdateTranslationTargetTimestamp":"\\BlueSpice\\TranslationTransfer\\Job\\UpdateTranslationTargetTimestamp"},"ExtensionMessagesFiles":{"TranslationTransferAliases":"languages\/TranslationTransfer.alias.php","TranslationTransferMagic":"languages\/TranslationTransfer.magic.i18n.php"},"config_prefix":"bsg","config":{"DeeplTranslateConversionConfig":{"description":"Configuration of translation behaviour","value":{"translatePageTitle":false,"addDisplayTitleToContent":true,"translateNamespaces":true,"namespaceMap":[],"translateMagicWords":true}},"TranslateTransferFilesToDraft":{"description":"If true, files will be included in the review process (pushed to draft NS first)","value":true},"TranslateTransferTargets":{"description":"Key is target language code and value is array containing information about target instance. 'key' - target instance ID as declared in ContentTransfer targets, 'url' - client URL of the instance","value":[]},"TranslateTransferNamespaces":{"description":"Configuration of per-namespace translation direction (if it takes place). Key is language code and value is an array with namespaces IDs. That means that articles can be translated from specified language only from specified namespaces","value":[]},"TranslateTransferTargetNamespaceMapping":{"description":"Defines the mapping of source and target namespaces for translation transfer. E.g. ['Dokumentation': ['en':'Documentation', 'it':'Documentazione']]","value":[]},"TranslateTransferLeadingLanguage":{"description":"False if there is no leading language in the wiki farm, otherwise language code of leading language. Dictionary and glossary special pages will work only for leading language.","value":false},"TranslateTransferBetaFeatures":{"description":"True if there is a need to enable features which are not fully in product yet. Currently that's improved templates processing.","value":false},"TranslateTransferUsePipeline":{"description":"When true, use the new placeholder-based translation pipeline instead of the legacy ignore_tags approach. The new pipeline sends only inline HTML fragments to DeepL, avoiding structural wikitext corruption. By default: true, as the legacy pipeline is deprecated and will eventually be removed. Set to false to temporarily disable the new pipeline if you encounter issues.","value":true},"TranslateTransferTemplateArgs":{"description":"Registry of template arguments that should be translated. Keys are template names, values are maps of argument name to translation method ('text' for regular DeepL translation, 'title' for wiki page title translation via TitleDictionary). Example: {\"Hint box\": {\"Note text\": \"text\"}, \"ButtonLink\": {\"label\": \"text\", \"target\": \"title\"}}","value":[]}},"Hooks":{"SkinTemplateNavigation::Universal":"add-translation-action","LoadExtensionSchemaUpdates":["add-translations-table","add-dictionary-table","add-glossary-tables"],"ParserFirstCallInit":"BlueSpice\\TranslationTransfer\\Hook\\ParserFirstCallInit\\AddContentTranslate::callback","BlueSpiceDiscoveryTemplateDataProviderAfterInit":"discovery-skin","PageMoveComplete":"update-translation-after-page-move","PageDeleteComplete":"remove-translation-record","PageSaveComplete":["update-translation-source-last-change","update-translation-target-last-change"],"MergeArticlesAfterMergePage":"update-translation-after-merge","GetDoubleUnderscoreIDs":"add-no-automatic-document-translate","BeforePageDisplay":["addModules","add-bootstrap"],"SpecialPage_initList":"hide-dictionary-and-glossary","MWStakeGenericTagHandlerInitTags":"registerTags"},"HookHandlers":{"discovery-skin":{"class":"BlueSpice\\TranslationTransfer\\Hook\\DiscoverySkin"},"add-translation-action":{"class":"BlueSpice\\TranslationTransfer\\Hook\\SkinTemplateNavigationUniversal\\AddTranslateAction","services":["ConfigFactory","PermissionManager","ContentTransferTargetManager","TranslationTransferTargetRecognizer","LanguageNameUtils","DBLoadBalancer"]},"add-translations-table":{"class":"BlueSpice\\TranslationTransfer\\Hook\\LoadExtensionSchemaUpdates\\AddTranslationsTable"},"add-dictionary-table":{"class":"BlueSpice\\TranslationTransfer\\Hook\\LoadExtensionSchemaUpdates\\AddDictionaryTable"},"add-glossary-tables":{"class":"BlueSpice\\TranslationTransfer\\Hook\\LoadExtensionSchemaUpdates\\AddGlossaryTables"},"update-translation-after-page-move":{"class":"BlueSpice\\TranslationTransfer\\Hook\\PageMoveComplete\\UpdateTranslationAfterMove","services":["DBLoadBalancer","TranslationTransferTargetRecognizer","NamespaceInfo"]},"update-translation-after-merge":{"class":"BlueSpice\\TranslationTransfer\\Hook\\MergeArticlesAfterMergePage\\UpdateTranslationAfterMerge","services":["DBLoadBalancer","TranslationTransferTargetRecognizer"]},"update-translation-source-last-change":{"class":"BlueSpice\\TranslationTransfer\\Hook\\PageContentSaveComplete\\UpdateTranslationSourceLastChange","services":["DBLoadBalancer","TranslationTransferTargetRecognizer"]},"update-translation-target-last-change":{"class":"BlueSpice\\TranslationTransfer\\Hook\\PageContentSaveComplete\\UpdateTranslationTargetLastChange","services":["DBLoadBalancer","TranslationTransferTargetRecognizer"]},"remove-translation-record":{"class":"BlueSpice\\TranslationTransfer\\Hook\\PageDeleteComplete\\RemoveTranslationRecord","services":["DBLoadBalancer","TranslationTransferTargetRecognizer","NamespaceInfo"]},"add-no-automatic-document-translate":{"class":"BlueSpice\\TranslationTransfer\\Hook\\GetDoubleUnderscoreIDs\\AddNoAutomaticDocumentTranslate"},"addModules":{"class":"BlueSpice\\TranslationTransfer\\Hook\\BeforePageDisplay\\AddModules"},"add-bootstrap":{"class":"BlueSpice\\TranslationTransfer\\Hook\\BeforePageDisplay\\AddBootstrap"},"hide-dictionary-and-glossary":{"class":"BlueSpice\\TranslationTransfer\\Hook\\SpecialPage_initList\\HideDictionaryAndGlossary","services":["ConfigFactory","MainConfig"]},"registerTags":{"class":"BlueSpice\\TranslationTransfer\\Hook\\RegisterTags"}},"RestRoutes":[{"path":"\/translations\/list","method":"GET","class":"BlueSpice\\TranslationTransfer\\Rest\\ListTranslations","services":["HookContainer","DBLoadBalancer","TranslationTransferTargetRecognizer"]},{"path":"\/translations\/ack\/{targetTitleId}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\AckTranslation","services":["DBLoadBalancer","UserGroupManager","TranslationTransferTargetRecognizer"]},{"path":"\/translations\/dictionary\/{langCodeTo}","method":"GET","class":"BlueSpice\\TranslationTransfer\\Rest\\Dictionary\\ListDictionaryEntries","services":["HookContainer","DBLoadBalancer","LanguageFactory","ContentLanguage","ConfigFactory","TitleFactory","TranslationTransferTargetRecognizer"]},{"path":"\/translations\/dictionary\/insert\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Dictionary\\InsertDictionaryEntry"},{"path":"\/translations\/dictionary\/update\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Dictionary\\ChangeDictionaryEntry","services":["TitleFactory","ContentTransferAuthenticatedRequestHandlerFactory","ContentTransferTargetManager","TranslationTransferTargetRecognizer"]},{"path":"\/translations\/dictionary\/remove\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Dictionary\\DeleteDictionaryEntry"},{"path":"\/translations\/dictionary\/affected_pages\/{targetLang}","method":"GET","class":"BlueSpice\\TranslationTransfer\\Rest\\Dictionary\\GetAffectedPages","services":["TitleFactory","ContentTransferAuthenticatedRequestHandlerFactory","ContentTransferTargetManager","TranslationTransferTargetRecognizer"]},{"path":"\/translations\/glossary\/list\/{targetLang}","method":"GET","class":"BlueSpice\\TranslationTransfer\\Rest\\Glossary\\ListGlossaryEntries","services":["HookContainer","DBLoadBalancer"]},{"path":"\/translations\/glossary\/insert\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Glossary\\InsertGlossaryEntry","services":["DBLoadBalancer"]},{"path":"\/translations\/glossary\/update\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Glossary\\UpdateGlossaryEntry","services":["DBLoadBalancer"]},{"path":"\/translations\/glossary\/remove\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Glossary\\DeleteGlossaryEntry","services":["DBLoadBalancer"]},{"path":"\/translations\/glossary\/sync\/{targetLang}","method":"POST","class":"BlueSpice\\TranslationTransfer\\Rest\\Glossary\\SyncRemoteGlossary","services":["DBLoadBalancer","ConfigFactory","HttpRequestFactory"]},{"path":"\/translations\/glossary\/languages","method":"GET","class":"BlueSpice\\TranslationTransfer\\Rest\\Glossary\\GetSupportedTargetLangs","services":["ConfigFactory","HttpRequestFactory"]}],"LogTypes":["bs-translation-transfer"],"LogActionsHandlers":{"bs-translation-transfer\/translate":"LogFormatter"},"repository":"https:\/\/gerrit.wikimedia.org\/r\/mediawiki\/extensions\/BlueSpiceTranslationTransfer"}}