function wfLanguageSelectorHTML(Title $title, $style = null, $class = null, $selectorstyle = null, $buttonstyle = null, $showCode = null) { global $wgLang, $wgContLang, $wgScript, $wgLanguageSelectorShowCode; if ($showCode === null) { $showCode = $wgLanguageSelectorShowCode; } static $id = 0; $id += 1; $code = $wgLang->getCode(); $html = ''; $html .= Xml::openElement('span', array('id' => 'languageselector-box-' . $id, 'class' => 'languageselector ' . $class, 'style' => $style)); $html .= Xml::openElement('form', array('name' => 'languageselector-form-' . $id, 'id' => 'languageselector-form-' . $id, 'method' => 'get', 'action' => $wgScript, 'style' => 'display:inline;')); $html .= Html::Hidden('title', $title->getPrefixedDBKey()); $html .= Xml::openElement('select', array('name' => 'setlang', 'id' => 'languageselector-select-' . $id, 'style' => $selectorstyle)); foreach (wfGetLanguageSelectorLanguages() as $ln) { $name = $wgContLang->getLanguageName($ln); if ($showCode) { $name = wfBCP47($ln) . ' - ' . $name; } $html .= Xml::option($name, $ln, $ln == $code); } $html .= Xml::closeElement('select'); $html .= Xml::submitButton(wfMsg('languageselector-setlang'), array('id' => 'languageselector-commit-' . $id, 'style' => $buttonstyle)); $html .= Xml::closeElement('form'); $html .= Xml::closeElement('span'); return $html; }
/** * @param $skin Skin * @param $tpl QuickTemplate * @return bool */ function wfLanguageSelectorSkinTemplateOutputPageBeforeExec(&$skin, &$tpl) { global $wgLanguageSelectorLocation; global $wgLang, $wgContLang; if ($wgLanguageSelectorLocation == LANGUAGE_SELECTOR_AS_PORTLET) { $code = $wgLang->getCode(); $lines = array(); foreach (wfGetLanguageSelectorLanguages() as $ln) { $lines[] = array($href = $skin->getTitle()->getFullURL('setlang=' . $ln), 'text' => $wgContLang->getLanguageName($ln), 'href' => $href, 'id' => 'n-languageselector', 'active' => $ln == $code); } $tpl->data['sidebar']['languageselector'] = $lines; return true; } $key = null; switch ($wgLanguageSelectorLocation) { case LANGUAGE_SELECTOR_INTO_SITENOTICE: $key = 'sitenotice'; break; case LANGUAGE_SELECTOR_INTO_TITLE: $key = 'title'; break; case LANGUAGE_SELECTOR_INTO_SUBTITLE: $key = 'subtitle'; break; case LANGUAGE_SELECTOR_INTO_CATLINKS: $key = 'catlinks'; break; } if ($key) { $html = wfLanguageSelectorHTML($skin->getTitle()); $tpl->set($key, $tpl->data[$key] . $html); } return true; }