2declare( strict_types = 1 );
4namespace MediaWiki\Extension\Translate\TranslatorInterface;
6use MediaWiki\Context\RequestContext;
7use MediaWiki\Diff\DifferenceEngine;
8use MediaWiki\Diff\Hook\ArticleContentOnDiffHook;
9use MediaWiki\EditPage\EditPage;
12use MediaWiki\Hook\AlternateEditHook;
13use MediaWiki\Hook\EditPage__showEditForm_initialHook;
14use MediaWiki\Hook\TitleGetEditNoticesHook;
15use MediaWiki\Language\LanguageFactory;
16use MediaWiki\Output\OutputPage;
17use MediaWiki\Skin\Components\SkinComponentUtils;
18use MediaWiki\Skin\Hook\SidebarBeforeOutputHook;
19use MediaWiki\Skin\Hook\SkinTemplateNavigation__UniversalHook;
20use Wikimedia\ArrayUtils\ArrayUtils;
30 ArticleContentOnDiffHook,
31 EditPage__showEditForm_initialHook,
32 TitleGetEditNoticesHook,
33 SidebarBeforeOutputHook,
34 SkinTemplateNavigation__UniversalHook
37 public function __construct(
38 private readonly LanguageFactory $languageFactory,
48 if ( $handle->isValid() ) {
49 $editPage->suppressIntro =
true;
61 if ( !$handle->isValid() ) {
65 $context = $out->getContext();
66 $request = $context->getRequest();
68 if ( $editPage->firsttime && !$request->getCheck(
'oldid' ) &&
69 !$request->getCheck(
'undo' ) ) {
70 if ( $handle->isFuzzy() ) {
71 $editPage->textbox1 = MessageHandle::makeFuzzyString( $editPage->textbox1 );
79 if ( !$handle->isValid() ) {
85 $context = RequestContext::getMain();
88 $notices[] = $th->getBoxes();
97 $title = $diffEngine->getTitle();
100 if ( !$handle->isValid() ) {
105 $output->addHTML( $th->getBoxes() );
116 $title = $skin->getTitle();
119 if ( !$handle->isValid() ) {
123 $message = $title->getNsText() .
':' . $handle->getKey();
124 $url = SkinComponentUtils::makeSpecialUrl(
'Translations', [
'message' => $message ] );
127 $sidebar[
'TOOLBOX'][
'alltrans' ] = [
129 'id' =>
't-alltrans',
130 'msg' =>
'translate-sidebar-alltrans',
141 $title = $skin->getTitle();
144 if ( !$handle->isValid() ) {
149 $isSourceLanguage = $handle->getCode() === $handle->getGroup()->getSourceLanguage();
152 'text' => $skin->msg(
'tpt-tab-translate' )->text(),
153 'href' => Utilities::getEditorUrl(
155 action_source:
'message_page_tab',
156 includeLanguageParam: !$isSourceLanguage
160 $tabs[
'views'] = ArrayUtils::insertAfter( $tabs[
'views' ], [
'translate' => $tab ],
'view' );