60 $this->outputHeader();
62 $out = $this->getOutput();
63 $out->addModuleStyles(
'ext.translate.specialpages.styles' );
67 if ( $this->including() ) {
68 $title = Title::newFromText( $par );
70 $out->addWikiMsg(
'translate-translations-including-no-param' );
81 $request = $this->getRequest();
82 $message = $request->getText(
'message' );
83 $namespace = $request->getInt(
'namespace', NS_MAIN );
85 if ( $message !==
'' ) {
86 $title = Title::newFromText( $message, $namespace );
88 $title = Title::newFromText( $par, $namespace );
92 'Help:Extension:Translate/Statistics_and_reporting#Translations_in_all_languages'
96 $title = Title::makeTitle( NS_MEDIAWIKI,
'' );
100 $out->addHTML(
'<br />' );
114 $options[ $text ] = $index;
122 'label-message' =>
'translate-translations-messagename',
124 'default' => $title->getText(),
128 'name' =>
'namespace',
130 'label-message' =>
'translate-translations-project',
131 'options' => $options,
132 'default' => $title->getNamespace(),
136 $context =
new DerivativeContext( $this->getContext() );
137 $context->setTitle( $this->getPageTitle() );
139 HTMLForm::factory(
'ooui', $formDescriptor, $context )
141 ->setSubmitTextMsg(
'allpagessubmit' )
142 ->setWrapperLegendMsg(
'translate-translations-fieldset-title' )
144 ->displayForm(
false );
171 $namespace = $title->getNamespace();
172 $message = $handle->getKey();
174 if ( !$handle->isValid() ) {
175 $this->getOutput()->addWikiMsg(
'translate-translations-no-message', $title->getPrefixedText() );
180 $dbr = $this->loadBalancer->getConnection( DB_REPLICA );
181 $res = $dbr->newSelectQueryBuilder()
182 ->select( [
'page_namespace',
'page_title' ] )
185 'page_namespace' => $namespace,
186 'page_title ' . $dbr->buildLike(
"$message/", $dbr->anyString() ),
188 ->caller( __METHOD__ )
189 ->orderBy(
'page_title' )
192 if ( !$res->numRows() ) {
193 $this->getOutput()->addWikiMsg(
194 'translate-translations-no-message',
195 $title->getPrefixedText()
200 $this->getOutput()->addWikiMsg(
201 'translate-translations-count',
202 $this->getLanguage()->formatNum( $res->numRows() )
209 foreach ( $res as $s ) {
210 $titles[] = $s->page_title;
213 $pageInfo = Utilities::getContents( $titles, $namespace );
215 $tableheader = Xml::openElement(
'table', [
216 'class' =>
'mw-sp-translate-table sortable wikitable'
219 $tableheader .= Xml::openElement(
'tr' );
220 $tableheader .= Xml::element(
'th',
null, $this->msg(
'allmessagesname' )->text() );
221 $tableheader .= Xml::element(
'th',
null, $this->msg(
'allmessagescurrent' )->text() );
222 $tableheader .= Xml::closeElement(
'tr' );
227 $historyText =
"\u{00A0}<sup>" .
228 $this->msg(
'translate-translations-history-short' )->escaped() .
230 $separator = $this->msg(
'word-separator' )->plain();
233 foreach ( $res as $s ) {
234 $key = $s->page_title;
235 $tTitle = Title::makeTitle( $s->page_namespace, $key );
236 $tHandle =
new MessageHandle( $tTitle );
238 $code = $tHandle->getCode();
240 $text = Utilities::getLanguageName( $code, $this->getLanguage()->getCode() );
242 $text .= $this->msg(
'parentheses' )->params( $code )->plain();
243 $tools[
'edit'] = Html::element(
245 [
'href' => Utilities::getEditorUrl( $tHandle ) ],
249 $tools[
'history'] = $this->getLinkRenderer()->makeLink(
251 new HtmlArmor( $historyText ),
253 'title' => $this->msg(
'history-title', $tTitle->getPrefixedDBkey() )->text()
255 [
'action' =>
'history' ]
259 if ( MessageHandle::hasFuzzyString( $pageInfo[$key][0] ) || $tHandle->isFuzzy() ) {
260 $class =
'mw-sp-translate-fuzzy';
263 $languageAttributes = [];
264 if ( $this->languageNameUtils->isKnownLanguageTag( $code ) ) {
265 $language = $tHandle->getEffectiveLanguage();
266 $languageAttributes = [
267 'lang' => $language->getHtmlCode(),
268 'dir' => $language->getDir(),
272 $formattedContent = Utilities::convertWhiteSpaceToHTML( $pageInfo[$key][0] );
274 $leftColumn = $tools[
'history'] . $tools[
'edit'];
275 $out .= Xml::tags(
'tr', [
'class' => $class ],
276 Xml::tags(
'td',
null, $leftColumn ) .
277 Xml::tags(
'td', $languageAttributes, $formattedContent )
281 $out .= Xml::closeElement(
'table' );
282 $this->getOutput()->addHTML( $out );