/** * @param $msg string * @param $code string * @param $title Title * @param $makelink * @return string */ protected function doBox($msg, $code, $title = false, $makelink = false) { global $wgUser, $wgLang; $name = TranslateUtils::getLanguageName($code, false, $wgLang->getCode()); $code = wfBCP47($code); $skin = $wgUser->getSkin(); $attributes = array(); if (!$title) { $attributes['class'] = 'mw-sp-translate-in-other-big'; } elseif ($code === 'en') { $attributes['class'] = 'mw-sp-translate-edit-definition'; } else { $attributes['class'] = 'mw-sp-translate-edit-committed'; } if (mb_strlen($msg) < 100 && !$title) { $attributes['class'] = 'mw-sp-translate-in-other-small'; } $msg = TranslateUtils::convertWhiteSpaceToHTML($msg); if (!$title) { $title = "{$name} ({$code})"; } if ($makelink) { $linkTitle = Title::newFromText($makelink); $title = $skin->link($linkTitle, htmlspecialchars($title), array(), array('action' => 'edit')); } return TranslateUtils::fieldset($title, Html::element('span', null, $msg), $attributes); }
public function getDocumentationBox() { global $wgTranslateDocumentationLanguageCode; if (!$wgTranslateDocumentationLanguageCode) { throw new TranslationHelperException('Message documentation language code is not defined'); } $context = RequestContext::getMain(); $page = $this->handle->getKey(); $ns = $this->handle->getTitle()->getNamespace(); $title = Title::makeTitle($ns, $page . '/' . $wgTranslateDocumentationLanguageCode); $edit = self::ajaxEditLink($title, $context->msg('translate-edit-contribute')->escaped()); $info = TranslateUtils::getMessageContent($page, $wgTranslateDocumentationLanguageCode, $ns); $class = 'mw-sp-translate-edit-info'; // The information is most likely in English $divAttribs = array('dir' => 'ltr', 'lang' => 'en', 'class' => 'mw-content-ltr'); if (strval($info) === '') { $info = $context->msg('translate-edit-no-information')->text(); $class = 'mw-sp-translate-edit-noinfo'; $lang = $context->getLanguage(); // The message saying that there's no info, should be translated $divAttribs = array('dir' => $lang->getDir(), 'lang' => $lang->getCode()); } $class .= ' mw-sp-translate-message-documentation'; $contents = $context->getOutput()->parse($info); // Remove whatever block element wrapup the parser likes to add $contents = preg_replace('~^<([a-z]+)>(.*)</\\1>$~us', '\\2', $contents); return TranslateUtils::fieldset($context->msg('translate-edit-information')->rawParams($edit)->escaped(), Html::rawElement('div', $divAttribs, $contents), array('class' => $class)); }