* redirect.php was removed. It was unused.
* ClickTracking integration was dropped from the mediaWiki.user.bucket
JavaScript function. The 'tracked' option is now ignored.
-* BREAKING CHANGE: Legacy skins Simple, MySkin and Standard were all removed.
- Nostalgia was moved to an extension.
+* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
+ were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
+ LegacyTemplate classes that supported them were removed as well and are now a
+ part of the Nostalgia extension.
* Event namespace used by jquery.makeCollapsible has been changed from
'mw-collapse' to 'mw-collapsible' for consistency with the module name.
* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
feature, and improper configuration can actually prevent a user from editing
* Calling Linker methods using a skin will now output deprecation warnings.
* (bug 46680) "Return to" links are no longer tagged with rel="next".
-* The Special:ActiveUsers special page was removed.
* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
accesskey character is now $6 instead of $5.
* A new Special:Redirect page was added, providing lookup by revision ID,
'SiteStore' => 'includes/site/SiteStore.php',
# includes/specials
+ 'ActiveUsersPager' => 'includes/specials/SpecialActiveusers.php',
'AllmessagesTablePager' => 'includes/specials/SpecialAllmessages.php',
'AncientPagesPage' => 'includes/specials/SpecialAncientpages.php',
'BlockListPager' => 'includes/specials/SpecialBlockList.php',
'ProtectedTitlesPager' => 'includes/specials/SpecialProtectedtitles.php',
'RandomPage' => 'includes/specials/SpecialRandompage.php',
'ShortPagesPage' => 'includes/specials/SpecialShortpages.php',
+ 'SpecialActiveUsers' => 'includes/specials/SpecialActiveusers.php',
'SpecialAllmessages' => 'includes/specials/SpecialAllmessages.php',
'SpecialAllpages' => 'includes/specials/SpecialAllpages.php',
'SpecialBlankpage' => 'includes/specials/SpecialBlankpage.php',
+++ /dev/null
-<?php
-/**
- * Base class for legacy skins.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-class SkinLegacy extends SkinTemplate {
- var $useHeadElement = true;
- protected $mWatchLinkNum = 0; // Appended to end of watch link id's
-
- /**
- * Add skin specific stylesheets
- * @param $out OutputPage
- */
- function setupSkinUserCss( OutputPage $out ) {
- $out->addModuleStyles( 'mediawiki.legacy.shared' );
- $out->addModuleStyles( 'mediawiki.legacy.oldshared' );
- }
-
- public function commonPrintStylesheet() {
- return true;
- }
-}
-
-class LegacyTemplate extends BaseTemplate {
-
- // How many search boxes have we made? Avoid duplicate id's.
- protected $searchboxes = '';
-
- function execute() {
- $this->html( 'headelement' );
- echo $this->beforeContent();
- $this->html( 'bodytext' );
- echo "\n";
- echo $this->afterContent();
- $this->html( 'dataAfterContent' );
- $this->printTrail();
- echo "\n</body></html>";
- }
-
- /**
- * This will be called immediately after the "<body>" tag. Split into
- * two functions to make it easier to subclass.
- * @return string
- */
- function beforeContent() {
- return $this->doBeforeContent();
- }
-
- function doBeforeContent() {
- global $wgLang;
- wfProfileIn( __METHOD__ );
-
- $s = '';
-
- $langlinks = $this->otherLanguages();
- if ( $langlinks ) {
- $rows = 2;
- $borderhack = '';
- } else {
- $rows = 1;
- $langlinks = false;
- $borderhack = 'class="top"';
- }
-
- $s .= "\n<div id='content'>\n<div id='topbar'>\n" .
- "<table cellspacing='0' style='width: 100%;'>\n<tr>\n";
-
- if ( $this->getSkin()->qbSetting() == 0 ) {
- $s .= "<td class='top' style='text-align: left; vertical-align: top;' rowspan='{$rows}'>\n" .
- $this->getSkin()->logoText( $wgLang->alignStart() ) . '</td>';
- }
-
- $l = $wgLang->alignStart();
- $s .= "<td {$borderhack} style='text-align: $l; vertical-align: top;'>\n";
-
- $s .= $this->topLinks();
- $s .= '<p class="subtitle">' . $this->pageTitleLinks() . "</p>\n";
-
- $r = $wgLang->alignEnd();
- $s .= "</td>\n<td {$borderhack} style='text-align: $r; vertical-align: top;' nowrap='nowrap'>";
- $s .= $this->nameAndLogin();
- $s .= "\n<br />" . $this->searchForm() . '</td>';
-
- if ( $langlinks ) {
- $s .= "</tr>\n<tr>\n<td class='top' colspan=\"2\">$langlinks</td>\n";
- }
-
- $s .= "</tr>\n</table>\n</div>\n";
- $s .= "\n<div id='article'>\n";
-
- $notice = $this->getSkin()->getSiteNotice();
-
- if ( $notice ) {
- $s .= "\n<div id='siteNotice'>$notice</div>\n";
- }
- $s .= $this->pageTitle();
- $s .= $this->pageSubtitle();
- $s .= $this->getSkin()->getCategories();
-
- wfProfileOut( __METHOD__ );
- return $s;
- }
-
- /**
- * This gets called shortly before the "</body>" tag.
- * @return String HTML to be put before "</body>"
- */
- function afterContent() {
- return $this->doAfterContent();
- }
-
- /** overloaded by derived classes
- * @return string
- */
- function doAfterContent() {
- return '</div></div>';
- }
-
- function searchForm() {
- global $wgRequest, $wgUseTwoButtonsSearchForm;
-
- $search = $wgRequest->getText( 'search' );
-
- $s = '<form id="searchform' . $this->searchboxes . '" name="search" class="inline" method="post" action="'
- . $this->getSkin()->escapeSearchLink() . "\">\n"
- . '<input type="text" id="searchInput' . $this->searchboxes . '" name="search" size="19" value="'
- . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" />\n"
- . '<input type="submit" name="go" value="' . wfMessage( 'searcharticle' )->text() . '" />';
-
- if ( $wgUseTwoButtonsSearchForm ) {
- $s .= ' <input type="submit" name="fulltext" value="' . wfMessage( 'searchbutton' )->text() . "\" />\n";
- } else {
- $s .= ' <a href="' . $this->getSkin()->escapeSearchLink() . '" rel="search">' . wfMessage( 'powersearch-legend' )->text() . "</a>\n";
- }
-
- $s .= '</form>';
-
- // Ensure unique id's for search boxes made after the first
- $this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1;
-
- return $s;
- }
-
- function pageStats() {
- $ret = array();
- $items = array( 'viewcount', 'credits', 'lastmod', 'numberofwatchingusers', 'copyright' );
-
- foreach ( $items as $item ) {
- if ( $this->data[$item] !== false ) {
- $ret[] = $this->data[$item];
- }
- }
-
- return implode( ' ', $ret );
- }
-
- function topLinks() {
- global $wgOut;
-
- $s = array(
- $this->getSkin()->mainPageLink(),
- Linker::specialLink( 'Recentchanges' )
- );
-
- if ( $wgOut->isArticleRelated() ) {
- $s[] = $this->editThisPage();
- $s[] = $this->historyLink();
- }
-
- # Many people don't like this dropdown box
- # $s[] = $this->specialPagesList();
-
- if ( $this->variantLinks() ) {
- $s[] = $this->variantLinks();
- }
-
- if ( $this->extensionTabLinks() ) {
- $s[] = $this->extensionTabLinks();
- }
-
- // @todo FIXME: Is using Language::pipeList impossible here? Do not quite understand the use of the newline
- return implode( $s, wfMessage( 'pipe-separator' )->escaped() . "\n" );
- }
-
- /**
- * Language/charset variant links for classic-style skins
- * @return string
- */
- function variantLinks() {
- $s = '';
-
- /* show links to different language variants */
- global $wgDisableLangConversion, $wgLang;
-
- $title = $this->getSkin()->getTitle();
- $lang = $title->getPageLanguage();
- $variants = $lang->getVariants();
-
- if ( !$wgDisableLangConversion && count( $variants ) > 1
- && !$title->isSpecialPage() ) {
- foreach ( $variants as $code ) {
- $varname = $lang->getVariantname( $code );
-
- $s = $wgLang->pipeList( array(
- $s,
- '<a href="' . htmlspecialchars( $title->getLocalURL( array( 'variant' => $code ) ) ) . '" lang="' . $code . '" hreflang="' . $code . '">' . htmlspecialchars( $varname ) . '</a>'
- ) );
- }
- }
-
- return $s;
- }
-
- /**
- * Compatibility for extensions adding functionality through tabs.
- * Eventually these old skins should be replaced with SkinTemplate-based
- * versions, sigh...
- * @return string
- * @todo Exterminate! ...that, and replace it with normal SkinTemplate stuff
- */
- function extensionTabLinks() {
- $tabs = array();
- $out = '';
- $s = array();
- wfRunHooks( 'SkinTemplateTabs', array( $this->getSkin(), &$tabs ) );
- foreach ( $tabs as $tab ) {
- $s[] = Xml::element( 'a',
- array( 'href' => $tab['href'] ),
- $tab['text'] );
- }
-
- if ( count( $s ) ) {
- global $wgLang;
-
- $out = wfMessage( 'pipe-separator' )->escaped();
- $out .= $wgLang->pipeList( $s );
- }
-
- return $out;
- }
-
- function bottomLinks() {
- global $wgOut, $wgUser;
- $sep = wfMessage( 'pipe-separator' )->escaped() . "\n";
-
- $s = '';
- if ( $wgOut->isArticleRelated() ) {
- $element[] = '<strong>' . $this->editThisPage() . '</strong>';
-
- if ( $wgUser->isLoggedIn() ) {
- $element[] = $this->watchThisPage();
- }
-
- $element[] = $this->talkLink();
- $element[] = $this->historyLink();
- $element[] = $this->whatLinksHere();
- $element[] = $this->watchPageLinksLink();
-
- $title = $this->getSkin()->getTitle();
-
- if (
- $title->getNamespace() == NS_USER ||
- $title->getNamespace() == NS_USER_TALK
- ) {
- $id = User::idFromName( $title->getText() );
- $ip = User::isIP( $title->getText() );
-
- # Both anons and non-anons have contributions list
- if ( $id || $ip ) {
- $element[] = $this->userContribsLink();
- }
-
- if ( $this->getSkin()->showEmailUser( $id ) ) {
- $element[] = $this->emailUserLink();
- }
- }
-
- $s = implode( $element, $sep );
-
- if ( $title->getArticleID() ) {
- $s .= "\n<br />";
-
- // Delete/protect/move links for privileged users
- if ( $wgUser->isAllowed( 'delete' ) ) {
- $s .= $this->deleteThisPage();
- }
-
- if ( $wgUser->isAllowed( 'protect' ) && $title->getRestrictionTypes() ) {
- $s .= $sep . $this->protectThisPage();
- }
-
- if ( $wgUser->isAllowed( 'move' ) ) {
- $s .= $sep . $this->moveThisPage();
- }
- }
-
- $s .= "<br />\n" . $this->otherLanguages();
- }
-
- return $s;
- }
-
- function otherLanguages() {
- global $wgOut, $wgLang, $wgHideInterlanguageLinks;
-
- if ( $wgHideInterlanguageLinks ) {
- return '';
- }
-
- $a = $wgOut->getLanguageLinks();
-
- if ( 0 == count( $a ) ) {
- return '';
- }
-
- $s = wfMessage( 'otherlanguages' )->text() . wfMessage( 'colon-separator' )->text();
- $first = true;
-
- if ( $wgLang->isRTL() ) {
- $s .= '<span dir="ltr">';
- }
-
- foreach ( $a as $l ) {
- if ( !$first ) {
- $s .= wfMessage( 'pipe-separator' )->escaped();
- }
-
- $first = false;
-
- $nt = Title::newFromText( $l );
- $text = Language::fetchLanguageName( $nt->getInterwiki() );
-
- $s .= Html::element( 'a',
- array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => "external" ),
- $text == '' ? $l : $text );
- }
-
- if ( $wgLang->isRTL() ) {
- $s .= '</span>';
- }
-
- return $s;
- }
-
- /**
- * Show a drop-down box of special pages
- * @return string
- */
- function specialPagesList() {
- global $wgScript;
-
- $select = new XmlSelect( 'title' );
- $pages = SpecialPageFactory::getUsablePages();
- array_unshift( $pages, SpecialPageFactory::getPage( 'SpecialPages' ) );
- foreach ( $pages as $obj ) {
- $select->addOption( $obj->getDescription(),
- $obj->getTitle()->getPrefixedDBkey() );
- }
-
- return Html::rawElement( 'form',
- array( 'id' => 'specialpages', 'method' => 'get', 'action' => $wgScript ),
- $select->getHTML() . Xml::submitButton( wfMessage( 'go' )->text() ) );
- }
-
- function pageTitleLinks() {
- global $wgOut, $wgUser, $wgRequest, $wgLang;
-
- $oldid = $wgRequest->getVal( 'oldid' );
- $diff = $wgRequest->getVal( 'diff' );
- $action = $wgRequest->getText( 'action' );
-
- $skin = $this->getSkin();
- $title = $skin->getTitle();
-
- $s[] = $this->printableLink();
- $disclaimer = $skin->disclaimerLink(); # may be empty
-
- if ( $disclaimer ) {
- $s[] = $disclaimer;
- }
-
- $privacy = $skin->privacyLink(); # may be empty too
-
- if ( $privacy ) {
- $s[] = $privacy;
- }
-
- if ( $wgOut->isArticleRelated() ) {
- if ( $title->getNamespace() == NS_FILE ) {
- $image = wfFindFile( $title );
-
- if ( $image ) {
- $href = $image->getURL();
- $s[] = Html::element( 'a', array( 'href' => $href,
- 'title' => $href ), $title->getText() );
-
- }
- }
- }
-
- if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
- $s[] .= Linker::linkKnown(
- $title,
- wfMessage( 'currentrev' )->text()
- );
- }
-
- if ( $wgUser->getNewtalk() ) {
- # do not show "You have new messages" text when we are viewing our
- # own talk page
- if ( !$title->equals( $wgUser->getTalkPage() ) ) {
- $tl = Linker::linkKnown(
- $wgUser->getTalkPage(),
- wfMessage( 'newmessageslink' )->escaped(),
- array(),
- array( 'redirect' => 'no' )
- );
-
- $dl = Linker::linkKnown(
- $wgUser->getTalkPage(),
- wfMessage( 'newmessagesdifflink' )->escaped(),
- array(),
- array( 'diff' => 'cur' )
- );
- $s[] = '<strong>' . wfMessage( 'youhavenewmessages', $tl, $dl )->text() . '</strong>';
- # disable caching
- $wgOut->setSquidMaxage( 0 );
- $wgOut->enableClientCache( false );
- }
- }
-
- $undelete = $skin->getUndeleteLink();
-
- if ( !empty( $undelete ) ) {
- $s[] = $undelete;
- }
-
- return $wgLang->pipeList( $s );
- }
-
- /**
- * Gets the h1 element with the page title.
- * @return string
- */
- function pageTitle() {
- global $wgOut;
- $s = '<h1 class="pagetitle"><span dir="auto">' . $wgOut->getPageTitle() . '</span></h1>';
- return $s;
- }
-
- function pageSubtitle() {
- global $wgOut;
-
- $sub = $wgOut->getSubtitle();
-
- if ( $sub == '' ) {
- global $wgExtraSubtitle;
- $sub = wfMessage( 'tagline' )->parse() . $wgExtraSubtitle;
- }
-
- $subpages = $this->getSkin()->subPageSubtitle();
- $sub .= !empty( $subpages ) ? "</p><p class='subpages'>$subpages" : '';
- $s = "<p class='subtitle'>{$sub}</p>\n";
-
- return $s;
- }
-
- function printableLink() {
- global $wgOut, $wgRequest, $wgLang;
-
- $s = array();
-
- if ( !$wgOut->isPrintable() ) {
- $printurl = htmlspecialchars( $this->getSkin()->getTitle()->getLocalURL(
- $wgRequest->appendQueryValue( 'printable', 'yes', true ) ) );
- $s[] = "<a href=\"$printurl\" rel=\"alternate\">"
- . wfMessage( 'printableversion' )->text() . '</a>';
- }
-
- if ( $wgOut->isSyndicated() ) {
- foreach ( $wgOut->getSyndicationLinks() as $format => $link ) {
- $feedurl = htmlspecialchars( $link );
- $s[] = "<a href=\"$feedurl\" rel=\"alternate\" type=\"application/{$format}+xml\""
- . " class=\"feedlink\">" . wfMessage( "feed-$format" )->escaped() . "</a>";
- }
- }
- return $wgLang->pipeList( $s );
- }
-
- /**
- * @deprecated in 1.19
- * @return string
- */
- function getQuickbarCompensator( $rows = 1 ) {
- wfDeprecated( __METHOD__, '1.19' );
- return "<td style='width: 152px;' rowspan='{$rows}'> </td>";
- }
-
- function editThisPage() {
- global $wgOut;
-
- if ( !$wgOut->isArticleRelated() ) {
- $s = wfMessage( 'protectedpage' )->text();
- } else {
- $title = $this->getSkin()->getTitle();
- if ( $title->quickUserCan( 'edit' ) && $title->exists() ) {
- $t = wfMessage( 'editthispage' )->text();
- } elseif ( $title->quickUserCan( 'create' ) && !$title->exists() ) {
- $t = wfMessage( 'create-this-page' )->text();
- } else {
- $t = wfMessage( 'viewsource' )->text();
- }
-
- $s = Linker::linkKnown(
- $title,
- $t,
- array(),
- $this->getSkin()->editUrlOptions()
- );
- }
-
- return $s;
- }
-
- function deleteThisPage() {
- global $wgUser, $wgRequest;
-
- $diff = $wgRequest->getVal( 'diff' );
- $title = $this->getSkin()->getTitle();
-
- if ( $title->getArticleID() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
- $t = wfMessage( 'deletethispage' )->text();
-
- $s = Linker::linkKnown(
- $title,
- $t,
- array(),
- array( 'action' => 'delete' )
- );
- } else {
- $s = '';
- }
-
- return $s;
- }
-
- function protectThisPage() {
- global $wgUser, $wgRequest;
-
- $diff = $wgRequest->getVal( 'diff' );
- $title = $this->getSkin()->getTitle();
-
- if ( $title->getArticleID() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) && $title->getRestrictionTypes() ) {
- if ( $title->isProtected() ) {
- $text = wfMessage( 'unprotectthispage' )->text();
- $query = array( 'action' => 'unprotect' );
- } else {
- $text = wfMessage( 'protectthispage' )->text();
- $query = array( 'action' => 'protect' );
- }
-
- $s = Linker::linkKnown(
- $title,
- $text,
- array(),
- $query
- );
- } else {
- $s = '';
- }
-
- return $s;
- }
-
- function watchThisPage() {
- global $wgOut, $wgUser;
- ++$this->mWatchLinkNum;
-
- // Cache
- $title = $this->getSkin()->getTitle();
-
- if ( $wgOut->isArticleRelated() ) {
- if ( $wgUser->isWatched( $title ) ) {
- $text = wfMessage( 'unwatchthispage' )->text();
- $query = array(
- 'action' => 'unwatch',
- 'token' => UnwatchAction::getUnwatchToken( $title, $wgUser ),
- );
- $id = 'mw-unwatch-link' . $this->mWatchLinkNum;
- } else {
- $text = wfMessage( 'watchthispage' )->text();
- $query = array(
- 'action' => 'watch',
- 'token' => WatchAction::getWatchToken( $title, $wgUser ),
- );
- $id = 'mw-watch-link' . $this->mWatchLinkNum;
- }
-
- $s = Linker::linkKnown(
- $title,
- $text,
- array( 'id' => $id ),
- $query
- );
- } else {
- $s = wfMessage( 'notanarticle' )->text();
- }
-
- return $s;
- }
-
- function moveThisPage() {
- if ( $this->getSkin()->getTitle()->quickUserCan( 'move' ) ) {
- return Linker::linkKnown(
- SpecialPage::getTitleFor( 'Movepage' ),
- wfMessage( 'movethispage' )->text(),
- array(),
- array( 'target' => $this->getSkin()->getTitle()->getPrefixedDBkey() )
- );
- } else {
- // no message if page is protected - would be redundant
- return '';
- }
- }
-
- function historyLink() {
- return Linker::link(
- $this->getSkin()->getTitle(),
- wfMessage( 'history' )->escaped(),
- array( 'rel' => 'archives' ),
- array( 'action' => 'history' )
- );
- }
-
- function whatLinksHere() {
- return Linker::linkKnown(
- SpecialPage::getTitleFor( 'Whatlinkshere', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
- wfMessage( 'whatlinkshere' )->escaped()
- );
- }
-
- function userContribsLink() {
- return Linker::linkKnown(
- SpecialPage::getTitleFor( 'Contributions', $this->getSkin()->getTitle()->getDBkey() ),
- wfMessage( 'contributions' )->escaped()
- );
- }
-
- function emailUserLink() {
- return Linker::linkKnown(
- SpecialPage::getTitleFor( 'Emailuser', $this->getSkin()->getTitle()->getDBkey() ),
- wfMessage( 'emailuser' )->escaped()
- );
- }
-
- function watchPageLinksLink() {
- global $wgOut;
-
- if ( !$wgOut->isArticleRelated() ) {
- return wfMessage( 'parentheses', wfMessage( 'notanarticle' )->text() )->escaped();
- } else {
- return Linker::linkKnown(
- SpecialPage::getTitleFor( 'Recentchangeslinked', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
- wfMessage( 'recentchangeslinked-toolbox' )->escaped()
- );
- }
- }
-
- function talkLink() {
- $title = $this->getSkin()->getTitle();
- if ( NS_SPECIAL == $title->getNamespace() ) {
- # No discussion links for special pages
- return '';
- }
-
- $linkOptions = array();
-
- if ( $title->isTalkPage() ) {
- $link = $title->getSubjectPage();
- switch ( $link->getNamespace() ) {
- case NS_MAIN:
- $text = wfMessage( 'articlepage' );
- break;
- case NS_USER:
- $text = wfMessage( 'userpage' );
- break;
- case NS_PROJECT:
- $text = wfMessage( 'projectpage' );
- break;
- case NS_FILE:
- $text = wfMessage( 'imagepage' );
- # Make link known if image exists, even if the desc. page doesn't.
- if ( wfFindFile( $link ) ) {
- $linkOptions[] = 'known';
- }
- break;
- case NS_MEDIAWIKI:
- $text = wfMessage( 'mediawikipage' );
- break;
- case NS_TEMPLATE:
- $text = wfMessage( 'templatepage' );
- break;
- case NS_HELP:
- $text = wfMessage( 'viewhelppage' );
- break;
- case NS_CATEGORY:
- $text = wfMessage( 'categorypage' );
- break;
- default:
- $text = wfMessage( 'articlepage' );
- }
- } else {
- $link = $title->getTalkPage();
- $text = wfMessage( 'talkpage' );
- }
-
- $s = Linker::link( $link, $text->text(), array(), array(), $linkOptions );
-
- return $s;
- }
-
- function commentLink() {
- global $wgOut;
-
- $title = $this->getSkin()->getTitle();
- if ( $title->isSpecialPage() ) {
- return '';
- }
-
- # __NEWSECTIONLINK___ changes behavior here
- # If it is present, the link points to this page, otherwise
- # it points to the talk page
- if ( !$title->isTalkPage() && !$wgOut->showNewSectionLink() ) {
- $title = $title->getTalkPage();
- }
-
- return Linker::linkKnown(
- $title,
- wfMessage( 'postcomment' )->text(),
- array(),
- array(
- 'action' => 'edit',
- 'section' => 'new'
- )
- );
- }
-
- function getUploadLink() {
- global $wgUploadNavigationUrl;
-
- if ( $wgUploadNavigationUrl ) {
- # Using an empty class attribute to avoid automatic setting of "external" class
- return Linker::makeExternalLink( $wgUploadNavigationUrl,
- wfMessage( 'upload' )->escaped(),
- false, null, array( 'class' => '' ) );
- } else {
- return Linker::linkKnown(
- SpecialPage::getTitleFor( 'Upload' ),
- wfMessage( 'upload' )->escaped()
- );
- }
- }
-
- function nameAndLogin() {
- global $wgUser, $wgLang, $wgRequest;
-
- $returnTo = $this->getSkin()->getTitle();
- $ret = '';
-
- if ( $wgUser->isAnon() ) {
- if ( $this->getSkin()->showIPinHeader() ) {
- $name = $wgRequest->getIP();
-
- $talkLink = Linker::link( $wgUser->getTalkPage(),
- $wgLang->getNsText( NS_TALK ) );
- $talkLink = wfMessage( 'parentheses' )->rawParams( $talkLink )->escaped();
-
- $ret .= "$name $talkLink";
- } else {
- $ret .= wfMessage( 'notloggedin' )->text();
- }
-
- $query = array();
-
- if ( !$returnTo->isSpecial( 'Userlogout' ) ) {
- $query['returnto'] = $returnTo->getPrefixedDBkey();
- }
-
- $loginlink = $wgUser->isAllowed( 'createaccount' )
- ? 'nav-login-createaccount'
- : 'login';
- $ret .= "\n<br />" . Linker::link(
- SpecialPage::getTitleFor( 'Userlogin' ),
- wfMessage( $loginlink )->text(), array(), $query
- );
- } else {
- $talkLink = Linker::link( $wgUser->getTalkPage(),
- $wgLang->getNsText( NS_TALK ) );
- $talkLink = wfMessage( 'parentheses' )->rawParams( $talkLink )->escaped();
-
- $ret .= Linker::link( $wgUser->getUserPage(),
- htmlspecialchars( $wgUser->getName() ) );
- $ret .= " $talkLink<br />";
- $ret .= $wgLang->pipeList( array(
- Linker::link(
- SpecialPage::getTitleFor( 'Userlogout' ), wfMessage( 'logout' )->text(),
- array(), array( 'returnto' => $returnTo->getPrefixedDBkey() )
- ),
- Linker::specialLink( 'Preferences' ),
- ) );
- }
-
- $ret = $wgLang->pipeList( array(
- $ret,
- Linker::link(
- Title::newFromText( wfMessage( 'helppage' )->inContentLanguage()->text() ),
- wfMessage( 'help' )->text()
- ),
- ) );
-
- return $ret;
- }
-}
'Listusers' => 'SpecialListUsers',
'Listadmins' => 'SpecialListAdmins',
'Listbots' => 'SpecialListBots',
+ 'Activeusers' => 'SpecialActiveUsers',
'Userrights' => 'UserrightsPage',
'EditWatchlist' => 'SpecialEditWatchlist',
/**
* Change the table prefix on all open DB connections/
*
- * @param $prefix
+ * @param $prefix
* @return void
*/
public static function changePrefix( $prefix ) {
}
/**
- * @param $lb LoadBalancer
- * @param $prefix
+ * @param $lb LoadBalancer
+ * @param $prefix
* @return void
*/
public static function changeLBPrefix( $lb, $prefix ) {
}
/**
- * @param $db DatabaseBase
- * @param $prefix
+ * @param $db DatabaseBase
+ * @param $prefix
* @return void
*/
public static function changeDBPrefix( $db, $prefix ) {
/**
* @param $errno
* @param $errstr
+ * @access private
*/
- protected function connectionErrorHandler( $errno, $errstr ) {
+ public function connectionErrorHandler( $errno, $errstr ) {
$this->mPHPError = $errstr;
}
* @param $errno integer
* @param $errstr string
* @return bool
+ * @access private
*/
- private function handleWarning( $errno, $errstr ) {
+ public function handleWarning( $errno, $errstr ) {
wfDebugLog( 'FSFileBackend', $errstr ); // more detailed error logging
$this->hadWarningErrors[count( $this->hadWarningErrors ) - 1] = true;
return true; // suppress from PHP handler
* @author Ciencia Al Poder
* @author Crazymadlover
* @author Danke7
+ * @author Fitoschido
* @author Locos epraix
* @author Od1n
* @author Platonides
'config-mod-security' => "''' Advertencia ''': Su servidor web tiene [http://modsecurity.org/ mod_security] habilitado. Si la configuración es incorrecta, puede causar problemas a MediaWiki u otro software que permita a los usuarios publicar contenido arbitrarios.
Consulte la [http://modsecurity.org/documentation/ documentación de mod_security] o contacte con el soporte de su servidor (''host'') si encuentra errores aleatorios.",
'config-diff3-bad' => 'GNU diff3 no se encuentra.',
+ 'config-git-bad' => 'No se encontró el software de control de versiones Git.',
'config-imagemagick' => 'ImageMagick encontrado: <code>$1</code>.
La miniaturización de imágenes se habilitará si habilitas las cargas.',
'config-gd' => 'Se ha encontrado una biblioteca de gráficos GD integrada.
--- /dev/null
+<?php
+/**
+ * Implements Special:Activeusers
+ *
+ * Copyright © 2008 Aaron Schulz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * This class is used to get a list of active users. The ones with specials
+ * rights (sysop, bureaucrat, developer) will have them displayed
+ * next to their names.
+ *
+ * @ingroup SpecialPage
+ */
+class ActiveUsersPager extends UsersPager {
+
+ /**
+ * @var FormOptions
+ */
+ protected $opts;
+
+ /**
+ * @var Array
+ */
+ protected $hideGroups = array();
+
+ /**
+ * @var Array
+ */
+ protected $hideRights = array();
+
+ /**
+ * @param $context IContextSource
+ * @param $group null Unused
+ * @param string $par Parameter passed to the page
+ */
+ function __construct( IContextSource $context = null, $group = null, $par = null ) {
+ global $wgActiveUserDays;
+
+ parent::__construct( $context );
+
+ $this->RCMaxAge = $wgActiveUserDays;
+ $un = $this->getRequest()->getText( 'username', $par );
+ $this->requestedUser = '';
+ if ( $un != '' ) {
+ $username = Title::makeTitleSafe( NS_USER, $un );
+ if( !is_null( $username ) ) {
+ $this->requestedUser = $username->getText();
+ }
+ }
+
+ $this->setupOptions();
+ }
+
+ public function setupOptions() {
+ $this->opts = new FormOptions();
+
+ $this->opts->add( 'hidebots', false, FormOptions::BOOL );
+ $this->opts->add( 'hidesysops', false, FormOptions::BOOL );
+
+ $this->opts->fetchValuesFromRequest( $this->getRequest() );
+
+ if ( $this->opts->getValue( 'hidebots' ) == 1 ) {
+ $this->hideRights[] = 'bot';
+ }
+ if ( $this->opts->getValue( 'hidesysops' ) == 1 ) {
+ $this->hideGroups[] = 'sysop';
+ }
+ }
+
+ function getIndexField() {
+ return 'rc_user_text';
+ }
+
+ function getQueryInfo() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $conds = array( 'rc_user > 0' ); // Users - no anons
+ if( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+ $conds[] = 'ipb_deleted IS NULL OR ipb_deleted = 0'; // don't show hidden names
+ }
+ $conds[] = 'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' );
+ $conds[] = 'rc_timestamp >= ' . $dbr->addQuotes(
+ $dbr->timestamp( wfTimestamp( TS_UNIX ) - $this->RCMaxAge*24*3600 ) );
+
+ if( $this->requestedUser != '' ) {
+ $conds[] = 'rc_user_text >= ' . $dbr->addQuotes( $this->requestedUser );
+ }
+
+ return array(
+ 'tables' => array( 'recentchanges', 'ipblocks' ),
+ 'fields' => array(
+ 'user_name' => 'rc_user_text', // for Pager inheritance
+ 'rc_user_text', // for Pager
+ 'user_id' => 'rc_user',
+ 'recentedits' => 'COUNT(*)',
+ 'ipb_deleted' => 'MAX(ipb_deleted)'
+ ),
+ 'options' => array(
+ 'GROUP BY' => array( 'rc_user_text', 'user_id' ),
+ 'USE INDEX' => array( 'recentchanges' => 'rc_user_text' )
+ ),
+ 'join_conds' => array( // check for suppression blocks
+ 'ipblocks' => array( 'LEFT JOIN', array(
+ 'rc_user=ipb_user',
+ 'ipb_auto' => 0 # avoid duplicate blocks
+ )),
+ ),
+ 'conds' => $conds
+ );
+ }
+
+ function formatRow( $row ) {
+ $userName = $row->user_name;
+
+ $ulinks = Linker::userLink( $row->user_id, $userName );
+ $ulinks .= Linker::userToolLinks( $row->user_id, $userName );
+
+ $lang = $this->getLanguage();
+
+ $list = array();
+ $user = User::newFromId( $row->user_id );
+
+ // User right filter
+ foreach( $this->hideRights as $right ) {
+ // Calling User::getRights() within the loop so that
+ // if the hideRights() filter is empty, we don't have to
+ // trigger the lazy-init of the big userrights array in the
+ // User object
+ if ( in_array( $right, $user->getRights() ) ) {
+ return '';
+ }
+ }
+
+ // User group filter
+ // Note: This is a different loop than for user rights,
+ // because we're reusing it to build the group links
+ // at the same time
+ foreach( $user->getGroups() as $group ) {
+ if ( in_array( $group, $this->hideGroups ) ) {
+ return '';
+ }
+ $list[] = self::buildGroupLink( $group, $userName );
+ }
+
+ $groups = $lang->commaList( $list );
+
+ $item = $lang->specialList( $ulinks, $groups );
+ if( $row->ipb_deleted ) {
+ $item = "<span class=\"deleted\">$item</span>";
+ }
+ $count = $this->msg( 'activeusers-count' )->numParams( $row->recentedits )
+ ->params( $userName )->numParams( $this->RCMaxAge )->escaped();
+ $blocked = !is_null( $row->ipb_deleted ) ? ' ' . $this->msg( 'listusers-blocked', $userName )->escaped() : '';
+
+ return Html::rawElement( 'li', array(), "{$item} [{$count}]{$blocked}" );
+ }
+
+ function getPageHeader() {
+ global $wgScript;
+
+ $self = $this->getTitle();
+ $limit = $this->mLimit ? Html::hidden( 'limit', $this->mLimit ) : '';
+
+ $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ); # Form tag
+ $out .= Xml::fieldset( $this->msg( 'activeusers' )->text() ) . "\n";
+ $out .= Html::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
+
+ $out .= Xml::inputLabel( $this->msg( 'activeusers-from' )->text(),
+ 'username', 'offset', 20, $this->requestedUser ) . '<br />';# Username field
+
+ $out .= Xml::checkLabel( $this->msg( 'activeusers-hidebots' )->text(),
+ 'hidebots', 'hidebots', $this->opts->getValue( 'hidebots' ) );
+
+ $out .= Xml::checkLabel( $this->msg( 'activeusers-hidesysops' )->text(),
+ 'hidesysops', 'hidesysops', $this->opts->getValue( 'hidesysops' ) ) . '<br />';
+
+ $out .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) . "\n";# Submit button and form bottom
+ $out .= Xml::closeElement( 'fieldset' );
+ $out .= Xml::closeElement( 'form' );
+
+ return $out;
+ }
+}
+
+/**
+ * @ingroup SpecialPage
+ */
+class SpecialActiveUsers extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ parent::__construct( 'Activeusers' );
+ }
+
+ /**
+ * Show the special page
+ *
+ * @param $par Mixed: parameter passed to the page or null
+ */
+ public function execute( $par ) {
+ global $wgActiveUserDays;
+
+ $this->setHeaders();
+ $this->outputHeader();
+
+ $out = $this->getOutput();
+ $out->wrapWikiMsg( "<div class='mw-activeusers-intro'>\n$1\n</div>",
+ array( 'activeusers-intro', $this->getLanguage()->formatNum( $wgActiveUserDays ) ) );
+
+ $up = new ActiveUsersPager( $this->getContext(), null, $par );
+
+ # getBody() first to check, if empty
+ $usersbody = $up->getBody();
+
+ $out->addHTML( $up->getPageHeader() );
+ if ( $usersbody ) {
+ $out->addHTML(
+ $up->getNavigationBar() .
+ Html::rawElement( 'ul', array(), $usersbody ) .
+ $up->getNavigationBar()
+ );
+ } else {
+ $out->addWikiMsg( 'activeusers-noresult' );
+ }
+ }
+
+ protected function getGroupName() {
+ return 'users';
+ }
+}
$this->formatRow( $this->msg( 'statistics-users' )->parse(),
$this->getLanguage()->formatNum( $this->users ),
array( 'class' => 'mw-statistics-users' ) ) .
- $this->formatRow( $this->msg( 'statistics-users-active' )->parse(),
+ $this->formatRow( $this->msg( 'statistics-users-active' )->parse() . ' ' .
+ Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Activeusers' ),
+ $this->msg( 'listgrouprights-members' )->escaped()
+ ),
$this->getLanguage()->formatNum( $this->activeUsers ),
array( 'class' => 'mw-statistics-users-active' ),
'statistics-users-active-desc',
}
}
+ /**
+ * Similar to getRuleConvertedStr(), but this prefers to use original
+ * page title if $variant === $this->mConverter->mMainLanguageCode
+ * and may return false in this case (so this title conversion rule
+ * will be ignored and the original title is shown).
+ *
+ * @since 1.20
+ * @param $variant The variant code to display page title in
+ * @return String|false The converted title or false if just page name
+ */
+ function getRuleConvertedTitle( $variant ) {
+ if ( $variant === $this->mConverter->mMainLanguageCode ) {
+ // If a string targeting exactly this variant is set,
+ // use it. Otherwise, just return false, so the real
+ // page name can be shown (and because variant === main,
+ // there'll be no further automatic conversion).
+ $disp = $this->getTextInBidtable( $variant );
+ if ( $disp ) {
+ return $disp;
+ }
+ if ( array_key_exists( $variant, $this->mUnidtable ) ) {
+ $disp = array_values( $this->mUnidtable[$variant] );
+ $disp = $disp[0];
+ }
+ // Assigned above or still false.
+ return $disp;
+ } else {
+ return $this->getRuleConvertedStr( $variant );
+ }
+ }
+
/**
* Generate conversion table for all text.
* @private
$this->mRuleDisplay = $this->getRuleConvertedStr( $variant );
break;
case 'T':
- $this->mRuleTitle = $this->getRuleConvertedStr( $variant );
+ $this->mRuleTitle = $this->getRuleConvertedTitle( $variant );
$this->mRuleDisplay = '';
break;
default:
'tog-shownumberswatching' => 'Peuleumah jumeulah ureueng kalon',
'tog-oldsig' => 'Tanda jaroe jinoe:',
'tog-fancysig' => 'Peujeuet tanda jaroe sibagoe naseukah wiki (hana hubong keudroe)',
-'tog-externaleditor' => 'Nguy editor eksternal nyang ka na (keu nyang utoih khong, peureulee neuato kusuih bak kompute droeneuh.
-
-[//www.mediawiki.org/wiki/Manual:External_editors Haba leubeh leungkap.])',
-'tog-externaldiff' => 'Nguy diff eksternal nyang ka na (keu nyang utoih mantong, peureulee neuato kusuih bak kompute droeneuh
-[//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => 'Peuudep hubong keu ngon bantu "langsong u"',
'tog-uselivepreview' => 'Nguy peuleumah hase langsong (JavaScript) (baci)',
'tog-forceeditsummary' => 'Peuingat lon meunyo plok neuringkaih neuandam mantong soh',
'august' => 'Buleuën Lapan',
'september' => 'Buleuën Sikureuëng',
'october' => 'Buleuën Siplôh',
-'november' => 'Buleuën Siblah',
-'december' => 'Buleuën Duwa Blah',
+'november' => 'Buleuën Siblaih',
+'december' => 'Buleuën Duwa Blaih',
'january-gen' => 'Buleuën Sa',
'february-gen' => 'Buleuën Duwa',
'march-gen' => 'Buleuën Lhèë',
'august-gen' => 'Buleuën Lapan',
'september-gen' => 'Buleuën Sikureuëng',
'october-gen' => 'Buleuën Siplôh',
-'november-gen' => 'Buleuën Siblah',
-'december-gen' => 'Buleuën Duwa Blah',
+'november-gen' => 'Buleuën Siblaih',
+'december-gen' => 'Buleuën Duwa Blaih',
'jan' => 'Sa',
'feb' => 'Duwa',
'mar' => 'Lhèë',
'apr' => 'Peuët',
-'may' => 'Lim',
+'may' => 'Limong',
'jun' => 'Nam',
-'jul' => 'Tuj',
-'aug' => 'Lap',
-'sep' => 'Sik',
-'oct' => 'Sip',
-'nov' => 'Sib',
-'dec' => 'Dub',
+'jul' => 'Tujôh',
+'aug' => 'Lapan',
+'sep' => 'Sikureuëng',
+'oct' => 'Siplôh',
+'nov' => 'Siblaih',
+'dec' => 'Duwa Blaih',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Kawan|Kawan}}',
'category_header' => 'Teunuléh lam kawan "$1"',
'subcategories' => 'Aneuk kawan',
-'category-media-header' => 'Alat lam kawan "$1"',
+'category-media-header' => 'Peukakaih lam kawan "$1"',
'category-empty' => "''Kawan nyoë jinoë hat hana teunuléh atawa media.''",
'hidden-categories' => '{{PLURAL:$1|Kawan teusom|Kawan teusom}}',
'hidden-category-category' => 'Kawan teusom',
'noindex-category' => 'On nyang hana geuindex',
'broken-file-category' => 'On ngon gamba reuloh',
-'about' => 'Bhah',
+'about' => 'Bhaih',
'article' => 'Teunuléh',
'newwindow' => '(peuhah bak tingkap barô)',
'cancel' => 'Peubateuë',
'vector-view-history' => 'Atra u likôt',
'vector-view-view' => 'Beuët',
'vector-view-viewsource' => 'Eu nè',
-'actions' => 'Buet',
+'actions' => 'Buët',
'namespaces' => 'Ruweuëng nan',
'variants' => 'Ragam',
'history' => 'Atra u likot',
'history_short' => 'Atra u likôt',
'updatedmarker' => 'geuubah yoh seunaweue keuneulheueh lon phon kon',
-'printableversion' => 'Seunalén citak',
+'printableversion' => 'Seunalén rakam',
'permalink' => 'Neuhubông teutap',
'print' => 'Rakam',
'view' => 'Beuet',
'talkpage' => 'Peugah haba bhah ôn nyoë',
'talkpagelinktext' => 'Marit',
'specialpage' => 'Ôn kusuih',
-'personaltools' => 'Alat droë',
+'personaltools' => 'Peukakaih droë',
'postcomment' => 'Beunagi baro',
'articlepage' => 'Eu ôn asoë',
'talk' => 'Peugah haba',
'ok' => 'Ka göt',
'retrievedfrom' => 'Geurumpok nibak "$1"',
-'youhavenewmessages' => 'Droëneuh na $1 ($2).',
+'youhavenewmessages' => 'Droëneuh na $1 ($2).',
'newmessageslink' => 'peusan barô',
'newmessagesdifflink' => 'neuubah keuneulheuëh',
'youhavenewmessagesfromusers' => "Droeneuh na $1 nibak {{PLURAL:$3|ureueng nguy la'en|$3 ureueng nguy}} ($2).",
'nstab-media' => 'Ôn media',
'nstab-special' => 'Kusuih',
'nstab-project' => 'Buët ôn',
-'nstab-image' => 'Beureukah',
+'nstab-image' => 'Beureukaih',
'nstab-mediawiki' => 'Peusan',
'nstab-template' => 'Seunaleuëk',
'nstab-help' => 'Beunantu',
'retypenew' => 'Pasoë teuma lageuëm barô:',
# Edit page toolbar
-'bold_sample' => 'Citak teubay naseukah nyoë',
+'bold_sample' => 'Rakam teubay naseukah nyoë',
'bold_tip' => 'Citak teubay',
-'italic_sample' => 'Citak singèt naseukah nyoë',
-'italic_tip' => 'Citak singèt',
+'italic_sample' => 'Rakam singèt naseukah nyoë',
+'italic_tip' => 'Rakam singèt',
'link_sample' => 'Nan hubông',
'link_tip' => 'Hubông dalam',
-'extlink_sample' => 'http://www.example.com nan hubông',
+'extlink_sample' => 'http://www.example.com nan neuhubông',
'extlink_tip' => 'Hubông luwa (bèk tuwoë bôh http:// bak away)',
'headline_sample' => 'Naseukah nan',
'headline_tip' => 'Aneuk beunagi tingkat 1',
'nowiki_sample' => 'Bèk format naseukah nyoë',
'nowiki_tip' => 'Bèk seutot beuntuk wiki',
-'image_tip' => 'Pasoë beureukah',
+'image_tip' => 'Pasoë beureukaih',
'media_tip' => 'Hubông beureukah alat',
-'sig_tip' => 'Tanda jaroë Droëneuh ngön tanda watèë',
+'sig_tip' => 'Tanda jaroë Droëneuh ngön tanda watèë',
'hr_tip' => 'Garéh data',
# Edit pages
Log seunampôh ngon log peuninah ôn nyoë geupeuseudiya di yup nyoe keu keuneubah.',
# Parser/template warnings
-'post-expand-template-inclusion-warning' => "'''Ingat:''' Seunipat seunaleuek nyang neunguy rayek that.
-Ladom seunaleuek hana geupeuroh",
-'post-expand-template-inclusion-category' => 'On ngon seunipat seunaleuek nyang leubeh bataih',
+'post-expand-template-inclusion-warning' => "'''Ingat:''' Seunipat seunaleuëk nyang neunguy rayek that.
+Ladôm seunaleuëk hana geupeurôh",
+'post-expand-template-inclusion-category' => 'Ôn ngön seunipat seunaleuëk nyang leubèh bataih',
'post-expand-template-argument-warning' => "'''Ingat:''' On nyoe na paleng h'an saboh alasan seunaleuek nyang na sunipat ekspansi nyang raya that.
Alasan-alasan nyan hana geupeureumeuen.",
'post-expand-template-argument-category' => 'On ngon alasan seunaleuek nyang hana geupeureumeuen',
# History pages
'viewpagelogs' => 'Eu log ôn nyoë',
'currentrev' => 'Geunantoë jinoë',
-'currentrev-asof' => 'Geunantoë paléng barô bak $1',
+'currentrev-asof' => 'Geunantoë barô bak $1',
'revisionasof' => 'Gantoë tiëp $1',
'revision-info' => 'Geunantoë tiëp $1; $2',
'previousrevision' => '←Geunantoë sigohlomjih',
# Revision deletion
'rev-delundel' => 'peuleumah/peusom',
-'revdel-restore' => 'Ubah leumah',
-'revdel-restore-deleted' => 'geunantoe nyang ka geusampoh',
+'revdel-restore' => 'Ubah neuleumah',
+'revdel-restore-deleted' => 'geunantoe nyang ka geusampôh',
'revdel-restore-visible' => 'geunantoe nyang leumah',
# Merge log
'prevn' => '{{PLURAL:$1|$1}} sigohlomjih',
'nextn' => '{{PLURAL:$1|$1}} lheuëh nyan',
'prevn-title' => '$1 {{PLURAL:$1|hasé|hasé}} sigohlomjih',
-'nextn-title' => '$1 {{PLURAL:$1|hase|hase}} lheueh nyan',
-'shown-title' => 'Peuleumah $1 {{PLURAL:$1|hasé|hasé}} tiëp halaman',
+'nextn-title' => '$1 {{PLURAL:$1|hasé}} lheuëh nyan',
+'shown-title' => 'Peuleumah $1 {{PLURAL:$1|hasé}} tiëp ôn',
'viewprevnext' => 'Eu ($1 {{int:pipe-separator}} $2)($3)',
'searchmenu-exists' => "'''Na on ngon nan \"[[:\$1]]\" bak wiki nyoe.'''",
-'searchmenu-new' => "'''Peugot on \"[[:\$1]]\" bak wiki nyoe!'''",
+'searchmenu-new' => "'''Peugöt ôn \"[[:\$1]]\" bak wiki nyoë!'''",
'searchhelp-url' => 'Help:Asoë',
-'searchprofile-articles' => 'On asoe',
-'searchprofile-project' => 'On Beunantu ngon Buet',
+'searchprofile-articles' => 'Ôn asoë',
+'searchprofile-project' => 'Ôn Beunantu ngön Buët',
'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Ban dum',
'searchprofile-advanced' => 'Tingkat lanjut',
'searchprofile-project-tooltip' => 'Mita bak $1',
'searchprofile-images-tooltip' => 'Mita beureukaih',
'searchprofile-everything-tooltip' => 'Mita ban dum ôn asoë (rôh ôn marit)',
-'searchprofile-advanced-tooltip' => 'Mita bak ruweueng nan meupat-pat',
+'searchprofile-advanced-tooltip' => 'Mita bak ruweuëng nan meupat-pat',
'search-result-size' => '$1 ({{PLURAL:$2|1 narit|$2 narit}})',
'search-result-category-size' => '{{PLURAL:$1|1 anggeeta|$1 anggeeta}} ({{PLURAL:$2|1 aneuk kawan|$2 aneuk kawan}}, {{PLURAL:$3|1 beureukaih|$3 beureukaih}})',
'search-redirect' => '(peuninah $1)',
-'search-section' => '(bagian $1)',
+'search-section' => '(beunagi $1)',
'search-suggest' => 'Kadang meukeusud Droëneuh nakeuh: $1',
'search-interwiki-caption' => 'Buët la’én',
'search-interwiki-default' => 'Hasé $1:',
'yourrealname' => 'Nan aseuli:',
'prefs-help-realname' => '* Nan aseuli hana meucéh neupasoë.
Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë nyang tuléh.',
-'prefs-help-email' => 'Alamat surat-e hana meuceh na, tapi geupeureulee keu peugot ulang lageuem, meunyo droeneuh tuwoe lageuem.',
+'prefs-help-email' => 'Alamat surat-e hana meuceh na, tapi geupeureulee keu seumeugot ulang lageuem, meunyo droeneuh tuwoe lageuem.',
'prefs-help-email-others' => "Droeneuh jeuet cit neupileh neupubiyeue ureueng la'en geupeu'et surat keu droeneuh rot surat-e rot seunambat bak on ureueng nguy atawa on marit.
Surat-e droeneuh h'an geupeugah keu ureueng nyan.",
'recentchanges-summary' => "Di yup nyoë nakeuh neuubah barô nyang na bak Wikipèdia nyoë.
Ceunatat: (bida) = neuubah, (riwayat) = riwayat teumuléh, '''B''' = ôn barô, '''u''' = neuandam ubeut, '''b''' = neuandam bot, (± ''bit'') = jumeulah asoë meutamah/meukureuëng, → = neuandam beunagi, ← = mohtasa otomatis.
----",
-'recentchanges-feed-description' => 'Peutumèë neu’ubah paléng barô lam wiki bak eumpeuën nyoë.',
+'recentchanges-feed-description' => 'Peuteumèë neu’ubah barô lam wiki bak umpeuën nyoë.',
'recentchanges-label-newpage' => 'Neuandam nyoe jipeugot on baro',
'recentchanges-label-minor' => 'Nyoe neuandam ubeut',
'recentchanges-label-bot' => 'Neuandam nyoe geupubuet le bot',
'recentchanges-label-unpatrolled' => 'Neuandam nyoe goh lom geukalon',
-'rcnote' => "Di yup nyoë nakeuh {{PLURAL:$1|nakeuh '''1''' neu’ubah paléng barô |nakeuh '''$1''' neu’ubah paléng barô}} lam {{PLURAL:$2|'''1''' uroë|'''$2''' uroë}} nyoë, trôk ‘an $5, $4.",
+'rcnote' => "Di yup nyoë nakeuh {{PLURAL:$1|nakeuh '''1''' neu’ubah barô |nakeuh '''$1''' neu’ubah barô}} lam {{PLURAL:$2|'''1''' uroë|'''$2''' uroë}} nyoë, trôk ‘an $5, $4.",
'rcnotefrom' => 'Di yup nyoë nakeuh neu’ubah yôh <strong>$2</strong> (geupeuleumah trôh ‘an <strong>$1</strong> neu’ubah).',
'rclistfrom' => 'Peuleumah neuubah paléng barô yôh $1 kön',
'rcshowhideminor' => '$1 andam bacut',
'listfiles' => 'Dapeuta beureukah',
# File description page
-'file-anchor-link' => 'Beureukah',
-'filehist' => 'Riwayat beureukah',
-'filehist-help' => 'Teugon bak tanggay/watèë keu eu beureukah nyoë ‘oh watèë nyan.',
+'file-anchor-link' => 'Beureukaih',
+'filehist' => 'Riwayat beureukaih',
+'filehist-help' => 'Teugon bak uroë buleuën/watèë keu eu beureukaih nyoë ‘oh watèë nyan.',
'filehist-revert' => 'peuriwang',
'filehist-current' => 'jinoë hat',
-'filehist-datetime' => 'Tanggay/Watèë',
+'filehist-datetime' => 'Uroë buleuën/Watèë',
'filehist-thumb' => 'Beuntuk ubeut',
'filehist-thumbtext' => 'Beuntuk ubeut keu seunalén tiëp $1',
'filehist-user' => 'Ureuëng nguy',
'filehist-dimensions' => 'Dimènsi',
'filehist-filesize' => 'Rayek beureukah',
'filehist-comment' => 'Tapeusé',
-'imagelinks' => 'Meuneunguy beureukaih',
+'imagelinks' => 'Neunguy beureukaih',
'linkstoimage' => 'Ôn di yup nyoë na {{PLURAL:$1|hubông|$1 hubông}} u beureukah nyoë:',
'nolinkstoimage' => 'Hana ôn nyang na hubông u beureukah nyoë.',
'sharedupload' => 'Beureukah nyoë dari $1 ngön kadang geunguy lé buët-buët la’én.',
# Special:ListGroupRights
'listgrouprights-members' => '(dapeuta anggèëta)',
-# E-mail user
+# Email user
'emailuser' => 'Surat-e ureuëng nguy',
# Watchlist
'blanknamespace' => '(Keuë)',
# Contributions
-'contributions' => 'Peuneugöt {{GENDER:$1|ureuëng nguy}}',
-'contributions-title' => 'Peuneugöt ureuëng nguy keu $1',
-'mycontris' => 'Peuneugöt',
+'contributions' => 'Beuneuri {{GENDER:$1|ureuëng nguy}}',
+'contributions-title' => 'Beuneuri ureuëng nguy keu $1',
+'mycontris' => 'Beuneuri',
'contribsub2' => 'Keu $1 ($2)',
'uctop' => '(ateuëh)',
'month' => 'Yôh buleuën (ngön yôh goh lom nyan)',
'year' => 'Yôh thôn (ngön yôh goh lom nyan)',
-'sp-contributions-newbies' => 'Keu ureuëng-ureuëng nyang ban nguy mantöng',
+'sp-contributions-newbies' => 'Keu ureuëng ban dapeuta mantöng',
'sp-contributions-newbies-sub' => 'Keu ureuëng nguy barô',
'sp-contributions-blocklog' => 'Log peutheun',
'sp-contributions-uploads' => 'peunasoe',
# What links here
'whatlinkshere' => 'Neuhubông balék',
-'whatlinkshere-title' => 'Ôn nyang na hubông u $1',
+'whatlinkshere-title' => 'Ôn nyang na neuhubông u $1',
'whatlinkshere-page' => 'Ôn:',
'linkshere' => "Ôn-ôn nyoë meuhubông u '''[[:$1]]''':",
'nolinkshere' => "Hana ôn nyang teuhubông u '''[[:$1]]'''.",
'isredirect' => 'ôn peupinah',
-'istemplate' => 'deungön seunaleuëk',
+'istemplate' => 'ngön seunaleuëk',
'isimage' => 'hubông beureukaih',
'whatlinkshere-prev' => '$1 {{PLURAL:$1|sigohlomjih|sigohlomjih}}',
'whatlinkshere-next' => '$1 {{PLURAL:$1|lheuëh nyan|lheuëh nyan}}',
'blocklink' => 'theun',
'unblocklink' => 'peugadöh theun',
'change-blocklink' => 'ubah theun',
-'contribslink' => 'peuneugöt',
+'contribslink' => 'beuneuri',
'blocklogpage' => 'Log peutheun',
'blocklogentry' => 'theun [[$1]] ngön watèë maté tanggay $2 $3',
'unblocklogentry' => 'peugadöh theun "$1"',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Ôn ureuëng nguy Droëneuh',
-'tooltip-pt-mytalk' => 'Ôn peugah haba Droëneuh',
+'tooltip-pt-mytalk' => 'Ôn marit Droëneuh',
'tooltip-pt-preferences' => 'Atô',
'tooltip-pt-watchlist' => 'Dapeuta ôn nyang lôn kalön',
-'tooltip-pt-mycontris' => 'Dapeuta peuneugöt Droëneuh',
+'tooltip-pt-mycontris' => 'Dapeuta beuneuri Droëneuh',
'tooltip-pt-login' => 'Droëneuh geupadan keu tamong log, bah pih nyan hana geupeuwajéb.',
'tooltip-pt-logout' => 'Teubiët',
-'tooltip-ca-talk' => 'Peugah haba ôn asoë',
+'tooltip-ca-talk' => 'Marit ôn asoë',
'tooltip-ca-edit' => 'Droëneuh jeuët neuandam ôn nyoë. Neunguy tumbôy eu dilèë yôh goh neukeubah.',
'tooltip-ca-addsection' => 'Puphôn beunagi barô',
'tooltip-ca-viewsource' => 'Ôn nyoë geupeulindông.
'tooltip-n-randompage' => 'Peuleumah beurangkari ôn',
'tooltip-n-help' => 'Bak mita bantu.',
'tooltip-t-whatlinkshere' => 'Dapeuta ban dum ôn wiki nyang na neuhubông u ôn nyoë',
-'tooltip-t-recentchangeslinked' => 'Neuubah barô ôn-ôn nyang na hubông u ôn nyoë',
+'tooltip-t-recentchangeslinked' => 'Neuubah barô ôn-ôn nyang na neuhubông u ôn nyoë',
'tooltip-feed-rss' => 'Umpeuën RSS keu ôn nyoë',
'tooltip-feed-atom' => 'Umpeuën Atom keu ôn nyoë',
'tooltip-t-contributions' => 'Eu dapeuta nyang ka geutuléh lé ureuëng nguy nyoë',
-'tooltip-t-emailuser' => 'Kirém surat-e u ureuëng nguy nyoë',
+'tooltip-t-emailuser' => "Peu'ét surat-e u ureuëng nguy nyoë",
'tooltip-t-upload' => 'Peutamong beureukaih',
'tooltip-t-specialpages' => 'Dapeuta ban dum ôn kusuih',
-'tooltip-t-print' => 'Seunalén citak ôn nyoë',
-'tooltip-t-permalink' => '
-Hubông teutap keu revisi ôn nyoë',
+'tooltip-t-print' => 'Seunalén rakam ôn nyoë',
+'tooltip-t-permalink' => 'Neuhubông teutap keu geunantoë ôn nyoë',
'tooltip-ca-nstab-main' => 'Eu ôn asoë',
'tooltip-ca-nstab-user' => 'Eu ôn ureuëng nguy',
'tooltip-ca-nstab-special' => 'Nyoë nakeuh ôn kusuih nyang h’an jeuët geu’andam.',
'tooltip-ca-nstab-project' => 'Eu ôn buët',
-'tooltip-ca-nstab-image' => 'Eu ôn beureukah',
-'tooltip-ca-nstab-template' => 'Eu templat',
+'tooltip-ca-nstab-image' => 'Eu ôn beureukaih',
+'tooltip-ca-nstab-template' => 'Eu seunaleuëk',
'tooltip-ca-nstab-help' => 'Eu ôn beunantu',
'tooltip-ca-nstab-category' => 'Eu ôn kawan',
'tooltip-minoredit' => 'Bôh tanda keu nyoë sibagoë andam bacut',
'tooltip-watch' => 'Peutamah ôn nyoë u dapeuta keunalön Droëneuh',
'tooltip-rollback' => 'Peuriwang neu’andam-neu’andam bak ôn nyoë u nyang tuléh keuneulheuëh lam sigo teugön',
'tooltip-undo' => 'Peuriwang geunantoë nyoë ngön peuhah plôk neu’andam ngön cara eu dilèë. Choë jeuët geupeutamah bak plôk ehtisa.',
-'tooltip-summary' => 'Pasoe ehtisa paneuk',
+'tooltip-summary' => 'Pasoë éhtisa paneuk',
# Browsing diffs
'previousdiff' => '← Bida away',
'nextdiff' => 'Geunantoë lheuëh nyan →',
# Media information
-'file-info-size' => '$1 × $2 piksel, rayek beureukah: $3, MIME jeunèh: $4',
+'file-info-size' => '$1 × $2 piksel, rayek beureukaih: $3, MIME jeunèh: $4',
'file-nohires' => 'Hana resolusi nyang leubèh manyang.',
'svg-long-desc' => 'Beureukah SVG, nominal $1 x $2 piksel, rayek beureukah: $3',
'show-big-image' => 'Resolusi peunoh',
# Bad image list
'bad_image_list' => 'Beuntukjih lagèë di miyub nyoë:
-Cit buté dapeuta (baréh nyang geupeuphôn ngon tanda *) nyang geukira. Hubông phôn bak saboh baréh beukeu hubông u beureukah nyang brôk.
-Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, nakeu teunuléh nyang jeuët peuleumah beureukah nyan.',
+Cit buté dapeuta (baréh nyang geupeuphôn ngon tanda *) nyang geukira. Hubông phôn bak saboh baréh beukeuh hubông u beureukaih nyang brôk.
+Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, nakeuh teunuléh nyang jeuët peuleumah beureukaih nyan.',
# Metadata
'metadata' => 'Metadata',
'underline-always' => 'Altyd',
'underline-never' => 'Nooit',
-'underline-default' => 'Standaard in u omslag of webblaaier',
+'underline-default' => 'Omslag of webblaaier se verstekwaarde',
# Font style option in Special:Preferences
'editfont-style' => 'Lettertipe vir wysigingsvenster:',
'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en teks "$3"',
'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekende naamruimtenummer $1 en teks "$2"',
'exception-nologin' => 'Nie aangeteken nie',
-'exception-nologin-text' => 'U moet eers op hierdie wiki aanteken alvorens u hierdie bladsy kan sien of handeling kan uitvoer.',
+'exception-nologin-text' => 'U moet eers op hierdie wiki aanmeld alvorens u hierdie bladsy kan sien of die handeling kan uitvoer.',
# Virus scanner
'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
# Special:Log
'specialloguserlabel' => 'Uitvoerende gebruiker:',
-'speciallogtitlelabel' => 'Doel (bladsynaam of gebruiker):',
+'speciallogtitlelabel' => 'Teiken (bladsy of gebruiker):',
'log' => 'Logboeke',
'all-logs-page' => 'Alle openbare logboeke',
'alllogstext' => "Vertoon 'n samestelling van alle boekstawings van {{SITENAME}}.
$messages = array(
# User preference toggles
'tog-underline' => 'Mearc under hlencan:',
-'tog-justify' => 'Macian cwidfloccas riht',
+'tog-justify' => 'Macian cwidfloccas rihte',
'tog-hideminor' => 'Hȳdan lytela adihtunga in nīwra wendinga getæle',
-'tog-hidepatrolled' => 'Hȳdan weardoda adihtunga in nīwra wendinga getæle',
-'tog-newpageshidepatrolled' => 'Hȳdan weardode trametas in nīwra wendinga getæle',
-'tog-extendwatchlist' => 'Sprǣdan wæccgetæl tō īwenne ealla wendinga, nā synderlīce þā nīwostan',
+'tog-hidepatrolled' => 'Hȳdan weardoda adihtunga in nīwra andwendinga getæle',
+'tog-newpageshidepatrolled' => 'Hȳdan weardode trametas in nīwra andwendinga getæle',
+'tog-extendwatchlist' => 'Sprǣdan wæccgetæl tō īwenne ealla andwendinga, nā synderlīce þā nīwostan',
'tog-usenewrc' => 'Settan andwendunge on hēapas æfter tramete on nīwra andwendunga getæle and wæccgetæle (þearf JavaScript)',
'tog-numberheadings' => 'Settan rīm on fōrecwidas selflīce',
'tog-showtoolbar' => 'Īwan þā adihtunge tōlmearce (þearf JavaScript)',
'brokenredirects-edit' => 'adihtan',
'brokenredirects-delete' => 'forlēosan',
-'withoutinterwiki' => 'Trametas būtan sprǣcbendum',
+'withoutinterwiki' => 'Trametas būtan sprǣchlencum',
'withoutinterwiki-summary' => 'Þā folgendan trametas nabbaþ hlencan tō ōðrum sprǣcfadungum.',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|lytelbita|lytelbitena}}',
+'nbytes' => '$1 {{PLURAL:$1|bita|bitena}}',
'ncategories' => '$1 {{PLURAL:$1|flocca|flocca}}',
'nlinks' => '$1 {{PLURAL:$1|hlenca|hlencena}}',
-'nmembers' => '$1 {{PLURAL:$1|ȝesīþ|ȝesīðas}}',
+'nmembers' => '$1 {{PLURAL:$1|gesīþ|gesīða}}',
'specialpage-empty' => 'Nis þǣr nāht þe āh cȳðan þes tramet.',
'lonelypages' => 'Ealdorlēase trametas',
'unusedimages' => 'Īdela ymelan',
'popularpages' => 'Folclīce trametas',
'wantedcategories' => 'Gewilnode floccas',
'wantedpages' => 'Gewilnode trametas',
-'mostlinked' => 'Trametas mid þǣm mǣstum hlencum',
-'mostlinkedcategories' => 'Floccas mid þǣm mǣstum hlencum',
-'mostlinkedtemplates' => 'Bysena mid þǣm mǣstum hlencum',
+'mostlinked' => 'Trametas mid þǣm mǣstan rīme hlencena',
+'mostlinkedcategories' => 'Floccas mid þǣm mǣstan rīme hlencena',
+'mostlinkedtemplates' => 'Bysena mid þǣm mǣstan rīme hlencena',
'prefixindex' => 'Ealle trametas mid fōredǣle',
'shortpages' => 'Scorte trametas',
'longpages' => 'Lange trametas',
'booksources' => 'Bōcfruman',
'booksources-search-legend' => 'Sēcan bōcfruman',
'booksources-go' => 'Gān',
-'booksources-text' => 'Niðer is getæl hlencena tō ōðrum webstedum þe cīpaþ nīwa and gebrocena bēc, and ƿeninga hæbben ēac mā cȳþþu ymbe bēc þe þu sēcst:',
+'booksources-text' => 'Niðer is getæl hlencena tō ōðrum webstedum þe cīpaþ nīwa and gebrocena bēc, and wēninga hæbben ēac mā cȳþþu ymbe bēc þe þu sēcst:',
# Special:Log
'specialloguserlabel' => 'Gelǣstende brūcend:',
# Special:AllPages
'allpages' => 'Ealle trametas',
-'alphaindexline' => '$1 tō $2',
+'alphaindexline' => '$1 oþ $2',
'nextpage' => 'Nīehst tramet ($1)',
'prevpage' => 'Ǣrra tramet ($1)',
'allpagesfrom' => 'Īwan trametas fram:',
# Special:Categories
'categories' => 'Floccas',
-'categoriespagetext' => '{{PLURAL:$1|Se folgienda flocc befēhþ|Þā folgiendan floccas befōþ}} trametas oþþe missenendebyrdmessa. [[Special:UnusedCategories|Nā gebrocene floccas]] ne sind geīwde hēr. Ēac seoh [[Special:WantedCategories|wȳscte floccas]].',
+'categoriespagetext' => '{{PLURAL:$1|Se folgienda flocc befēhþ|Þā folgiendan floccas befōþ}} trametas oþþe missenendebyrdmessa. [[Special:UnusedCategories|Nā gebrocene floccas]] ne sind geīwde hēr. Ēac seoh [[Special:WantedCategories|gewilnode floccas]].',
# Special:DeletedContributions
'sp-deletedcontributions-contribs' => 'forðunga',
'linksearch-ok' => 'Sēċan',
# Special:ListUsers
-'listusers-noresult' => 'Nǣnne brūcend gefundenne.',
+'listusers-noresult' => 'Nān brūcend wæs gefunden.',
# Special:ListGroupRights
-'listgrouprights-group' => 'Clīeƿen',
+'listgrouprights-group' => 'Hēap',
'listgrouprights-rights' => 'Riht',
-'listgrouprights-helppage' => 'Help:Clīeƿenes riht',
-'listgrouprights-members' => '(ȝesīða ȝetalu)',
-'listgrouprights-removegroup' => '{{PLURAL:$2|Clīeƿen|Clīeƿenas}} forniman: $1',
-'listgrouprights-addgroup-all' => 'Eall clīeƿenas ēacian',
-'listgrouprights-removegroup-all' => 'Ealle clīeƿenas forniman',
+'listgrouprights-helppage' => 'Help:Hēapes riht',
+'listgrouprights-members' => '(getæl gesīða)',
+'listgrouprights-removegroup' => 'Animan {{PLURAL:$2|þisne hēap|þās hēapas}}: $1',
+'listgrouprights-addgroup-all' => 'Ēacnian mid eallum hēapum',
+'listgrouprights-removegroup-all' => 'Animan ealle hēapas',
# Email user
-'emailuser' => 'To þissum brūcende ƿrītan',
+'emailuser' => 'Wrītan spearcǣrend þissum brūcende',
'emailfrom' => 'Fram:',
'emailto' => 'Tō:',
-'emailsubject' => 'Forþsetendness:',
-'emailmessage' => 'Ǣrendȝeƿrit',
-'emailsend' => 'Ǣrendian',
-'emailsent' => 'Ǣrendȝeƿrit sended',
-'emailsenttext' => 'Þīn e-mail ǣrendȝeƿrit ƿearþ ȝesend.',
+'emailsubject' => 'Forþsetedness:',
+'emailmessage' => 'Ǣrendgewrit:',
+'emailsend' => 'Sendan',
+'emailsent' => 'Ǣrendgewrit wæs gesend',
+'emailsenttext' => 'Þīn ǣrendgewrit wæs gesend on spearcǣrende.',
# Watchlist
-'watchlist' => 'Mīn wæccgetæl',
-'mywatchlist' => 'Mīn wæccgetæl',
-'removedwatchtext' => 'Se tramet "[[:$1]]" wæs fram [[Special:Watchlist|þīnum wæccgetæle]] anumen.',
-'watch' => 'Wæccan',
-'watchthispage' => 'Wæccan ymbe þisne tramet',
-'unwatch' => 'Unƿæccan',
-'unwatchthispage' => 'Ablinnan wæccan',
-'watchlist-details' => '{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum wæccgetæle, nā arīmedum mōtungum.',
+'watchlist' => 'Mīn behealdunggetæl',
+'mywatchlist' => 'Mīn behealdunggetæl',
+'removedwatchtext' => 'Se tramet "[[:$1]]" wæs fram [[Special:Watchlist|þīnum behealdunggetæle]] anumen.',
+'watch' => 'Behealdan',
+'watchthispage' => 'Behealdan þisne tramet',
+'unwatch' => 'Ablinnan behealdunge',
+'unwatchthispage' => 'Ablinnan behealdunge',
+'watchlist-details' => '{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum behealdunggetæle, nā arīmedum mōtungum.',
'watchlistcontains' => 'Þīn behealdungtæl hæfþ $1 {{PLURAL:$1|tramet|trameta}}.',
-'wlnote' => "Niðer {{PLURAL:$1|is sēo nīwoste andwendung|sind þā nīwostan '''$1''' andwendunga}} in {{PLURAL:$2|þǣre latostan tīde|þǣm latostan '''$2''' tīda}}. Genge: $3, $4.",
-'wlshowlast' => 'Īewan æftemestan $1 stunda $2 daga $3',
-'watchlist-options' => 'Ƿæccȝetale forebearƿan',
+'wlnote' => "Niðer {{PLURAL:$1|is sēo nīwoste andwendung|sind þā nīwostan '''$1''' andwendunga}} in {{PLURAL:$2|þǣre latostan tīde|þǣm latostan '''$2''' tīda}}, fram: $3, $4.",
+'wlshowlast' => 'Īwan þā latostan $1 tīda $2 daga $3',
+'watchlist-options' => 'Behealdungtæles cyras',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ƿæccende...',
-'unwatching' => 'Unƿæccende...',
+'watching' => 'Behealdende...',
+'unwatching' => 'Ablinnende behealdunge...',
'enotif_impersonal_salutation' => '{{SITENAME}} brūcend',
-'enotif_lastvisited' => 'Sēo $1 for eall hƿearfas siþþan þīn læst cyme.',
-'enotif_lastdiff' => 'Sēo $1 to sēonne þisne hƿearf.',
+'enotif_lastvisited' => 'Sēon $1 for eallum andwendungum fram þīnum latostan cyme.',
+'enotif_lastdiff' => 'Sēon $1 to sēonne þās andwendunge.',
'enotif_anon_editor' => 'uncūþ brūcend $1',
'created' => 'ȝescapen',
'changed' => 'hƿorfen',
# Delete
-'deletepage' => 'Sīdan āfeorsian',
-'excontent' => "innung ƿæs: '$1'",
-'excontentauthor' => "innung ƿæs: '$1' (and se āna forðiend ƿæs '[[Special:Contributions/$2|$2]]')",
-'exblank' => 'tramet wæs ǣmtig',
-'historywarning' => 'Warnung: Se tramet þe þū wilt forlēosan hafaþ stǣr mid nēan $1 {{PLURAL:$1|fadunge|fadunga}}:',
-'actioncomplete' => 'Ƿeorcdǣd fuldōn',
-'dellogpage' => 'Āfeorsunge ƿīsbōc',
-'deletionlog' => 'āfeorsunge wisbōc',
+'deletepage' => 'Forlēosan tramet',
+'excontent' => 'innung wæs: "$1"',
+'excontentauthor' => 'innung wæs: \'$1\' (and se āna forðiend wæs "[[Special:Contributions/$2|$2]")',
+'exblank' => 'tramet wæs æmettig',
+'historywarning' => "'''Warnung''': Se tramet þe þū wilt forlēosan hafaþ stǣr mid nēan $1 {{PLURAL:$1|fadunge|fadunga}}:",
+'actioncomplete' => 'Dǣd is fulfyled',
+'dellogpage' => 'Forlēosunge ealdhord',
+'deletionlog' => 'forlēosunge ealdhord',
'deletecomment' => 'Racu:',
-'deleteotherreason' => 'Ōðra/ēaca racu:',
+'deleteotherreason' => 'Ōðra/nīehst racu:',
'deletereasonotherlist' => 'Ōðru racu',
# Rollback
-'rollback_short' => 'Edhƿeorfan',
-'rollbacklink' => 'Edhƿeorfan',
-'rollbackfailed' => 'Edhƿeorf misfangen',
+'rollback_short' => 'Settan on bæc',
+'rollbacklink' => 'settan on bæc',
+'rollbackfailed' => 'Bæcsettung tōsǣlde',
'editcomment' => "Þǣre adihtunge se cwide wæs: \"''\$1''\".",
-'revertpage' => 'Ācierde ādihtunga fram [[Special:Contributions/$2|$2]] ([[User talk:$2|Gesprec]]); wendede on bæc tō ǣrran fadunge fram [[User:$1|$1]]',
+'revertpage' => 'Onhwearf adihtunga fram [[Special:Contributions/$2|$2]] ([[User talk:$2|mōtung]]); wendede on bæc tō ǣrran fadunge fram [[User:$1|$1]]',
# Protect
-'protectlogpage' => 'Beorges ƿīsbōc',
-'protectedarticle' => 'borgen "[[$1]]"',
+'protectlogpage' => 'Beorges ealdhord',
+'protectedarticle' => 'bearg "[[$1]]"',
'unprotectedarticle' => 'anōm beorgunge fram "[[$1]]"',
-'protect-title' => 'Beorges emnet hƿeorfan for "$1"',
-'prot_1movedto2' => '[[$1]] ȝefered tō [[$2]]',
+'protect-title' => 'Andwendan beorges emnet for "$1"',
+'prot_1movedto2' => 'Wæg [[$1]] tō [[$2]]',
'protectcomment' => 'Racu:',
'protectexpiry' => 'Endaþ:',
-'protect_expiry_invalid' => 'Endende tīde is unriht.',
-'protect_expiry_old' => 'Endende tīde is in ȝēara dagum.',
+'protect_expiry_invalid' => 'Endes tīd is unriht.',
+'protect_expiry_old' => 'Endes tīd is in gēardagum.',
'protect-text' => "Þū meaht þæt beorges emnet sēon and hƿeorfan hēr for þǣre sīdan '''$1'''.",
'protect-default' => 'Eall brūcendas þafian',
'protect-fallback' => 'Synderlīce līefan brūcendum þā habbaþ "$1" lēafe',
'nchanges' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
'recentchanges' => 'Керла нисдарш',
'recentchanges-legend' => 'Гlирс нисбарна керла нисдарш',
-'recentchanges-summary' => 'Лахахьа гайтина хронологин къепехь тӀаьхьара бина хийцам Википедин агӀонашках',
+'recentchanges-summary' => 'Лахахьа гайтина хронологин къепехь тӀаьхьара бина хийцамаш Википедин агӀонашкахь',
'recentchanges-feed-description' => 'Тергам бе тlаьхьара вики хийцаман хlокху ларца.',
'recentchanges-label-newpage' => 'Оцу нисдарца кхоллина керла агlо.',
'recentchanges-label-minor' => 'Хlара нисдинарг къастийна жимо долушсан',
'protectlogpage' => 'Гlаролли тептар',
'protectedarticle' => 'гlаролла дина агlо «[[$1]]»',
'modifiedarticleprotection' => 'агlонан гlаролли локхалла хийцина «[[$1]]»',
+'movedarticleprotection' => 'гӀаролла дехьадаккха тӀера «[[$2]]» цуна тӀе «[[$1]]»',
'prot_1movedto2' => '«[[$1]]» цlе хийцина оцу «[[$2]]»',
'protectcomment' => 'Бахьан:',
'protectexpiry' => 'Чекхйолу:',
'dberr-usegoogle' => 'Цlачун хьо хьажа лаха гlонца Google.',
'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
+# New logging system
+'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
+
);
* @author Kaganer
* @author Kuvaly
* @author Li-sung
+ * @author Littledogboy
* @author Martin Kozák
* @author Matěj Grabovský
* @author Mercy
'qbbrowse' => 'Listování',
'qbedit' => 'Editování',
'qbpageoptions' => 'Tato stránka',
-'qbmyoptions' => 'Moje volby',
+'qbmyoptions' => 'Moje stránky',
'qbspecialpages' => 'Speciální stránky',
'faq' => 'Často kladené otázky',
'faqpage' => 'Project:Často kladené otázky',
'yourpassword' => 'Eich cyfrinair:',
'userlogin-yourpassword' => 'Cyfrinair',
'userlogin-yourpassword-ph' => 'Teipiwch eich cyfrinair',
+'createacct-yourpassword-ph' => 'Rhowch gyfrinair',
'yourpasswordagain' => 'Ail-deipiwch y cyfrinair:',
+'createacct-yourpasswordagain' => 'Gwirwch eich cyfrinair',
+'createacct-yourpasswordagain-ph' => 'Rhowch eich cyfrinair eto',
'remembermypassword' => "Y porwr hwn i gofio'r manylion mewngofnodi (am hyd at $1 {{PLURAL:$1||diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}})",
'userlogin-remembermypassword' => 'Cofio fi',
'userlogin-signwithsecure' => 'Mewngofnodi drwy weinydd diogel',
'userlogin-resetlink' => 'Ydych chi wedi anghofio eich manylion mewngofnodi?',
'helplogin-url' => 'Help:Mewngofnodi',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Cymorth i fewngofnodi]]',
+'createacct-join' => 'Rhowch eich gwybodaeth isod',
+'createacct-emailrequired' => 'Cyfeiriad ebost',
+'createacct-emailoptional' => 'Cyfeiriad ebost (dewisol)',
+'createacct-email-ph' => 'Rhowch eich cyfeiriad ebost',
'createaccountmail' => "Defnyddier cyfrinair ar hap dros dro a'i anfon i'r cyfeiriad e-bost isod",
+'createacct-realname' => 'Enw cywir (dewisiol)',
'createaccountreason' => 'Rheswm:',
+'createacct-reason' => 'Rheswm',
+'createacct-reason-ph' => 'Pam ydych yn creu cyfrif arall?',
+'createacct-captcha' => 'Gwiriad diogelwch',
+'createacct-captcha-help-url' => '{{ns:Project}}:Ymholi am gyfri',
+'createacct-imgcaptcha-help' => 'Methu gweld y ddelwedd? [[{{MediaWiki:createacct-captcha-help-url}}|Holwch am gyfrif]]',
+'createacct-imgcaptcha-ph' => 'Nodwch y testun a welwch uchod',
+'createacct-submit' => 'Crëwch gyfrif',
+'createacct-benefit-heading' => 'Mae {{SITENAME}} yn cael ei greu gan bobl fel chi.',
+'createacct-benefit-body1' => 'golygiadau',
+'createacct-benefit-body2' => 'tudalennau',
+'createacct-benefit-body3' => 'cyfrannwyr diweddar',
'badretype' => "Nid yw'r cyfrineiriau'n union yr un fath.",
'userexists' => 'Mae rhywun arall wedi dewis yr enw defnyddiwr hwn.
Dewiswch un arall os gwelwch yn dda.',
'loginerror' => 'Problem mewngofnodi',
+'createacct-error' => 'Nam wrth greu cyfrif',
'createaccounterror' => "Ni lwyddwyd i greu'r cyfrif: $1",
'nocookiesnew' => "Mae'r cyfrif defnyddiwr wedi cael ei greu, ond nid ydych wedi mewngofnodi. Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Mewngofnodwch eto gyda'ch enw defnyddiwr a'ch cyfrinair newydd os gwelwch yn dda, ar ôl galluogi cwcis.",
'nocookieslogin' => 'Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Trïwch eto os gwelwch yn dda, ar ôl galluogi cwcis.',
'resetpass-wrong-oldpass' => "Mae'r cyfrinair dros dro neu gyfredol yn annilys.
Gall fod eich bod wedi llwyddo newid eich cyfrinair eisoes neu eich bod wedi gofyn am gyfrinair dros dro newydd.",
'resetpass-temp-password' => 'Cyfrinair dros dro:',
+'resetpass-abort-generic' => 'Mae estyniad wedi atal newid y cyfrinair.',
# Special:PasswordReset
'passwordreset' => 'Ailosod cyfrinair',
'userrights-notallowed' => 'Nid oes gan eich cyfrif y caniatâd priodol i ychwanegu neu dynnu hawliau defnyddwyr.',
'userrights-changeable-col' => 'Grwpiau y gallwch eu newid',
'userrights-unchangeable-col' => 'Grwpiau na allwch eu newid',
+'userrights-conflict' => 'Gwrthdaro gyda hawliau defnyddiwr! Gwnewch eich newidiadau eto.',
# Groups
'group' => 'Grŵp:',
'minutes' => '{{PLURAL:$1||$1 munud|$1 funud|$1 munud|$1 munud|$1 munud}}',
'hours' => '{{PLURAL:$1|$1 awr}}',
'days' => '{{PLURAL:$1||$1 diwrnod|$1 ddiwrnod|$1 diwrnod|$1 diwrnod|$1 diwrnod}}',
+'weeks' => '{{PLURAL:$1|$1 wythnos|$1 wythnosau}}',
'months' => '{{PLURAL:$1|$1 mis|mis|deufis|$1 mis}}',
'years' => '{{PLURAL:$1|$1 blwyddyn|blwyddyn|$1 flynedd|$1 blynedd|$1 blynedd|$1 mlynedd}}',
'ago' => '$1 yn ôl',
'just-now' => 'nawr',
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|awr|awr}} yn ôl',
+'minutes-ago' => '$1 {{PLURAL:$1|munud|munud}} yn ôl',
+'seconds-ago' => '$1 {{PLURAL:$1|eiliad|eiliad}} yn ôl',
+'monday-at' => 'Dydd Llun am $1',
+'tuesday-at' => 'Dydd Mawrth am $1',
+'wednesday-at' => 'Dydd Mercher am $1',
+'thursday-at' => 'Dydd Iau am $1',
+'friday-at' => 'Dydd Gwener am $1',
+'saturday-at' => 'Dydd Sadwrn am $1',
+'sunday-at' => 'Dydd Sul am $1',
+'yesterday-at' => 'Ddoe am $1',
+
# Bad image list
'bad_image_list' => "Dyma'r fformat:
'version-entrypoints-header-entrypoint' => 'Man cyflwyno',
'version-entrypoints-header-url' => 'URL',
+'redirect' => 'Ailgyfeiriwyd gan ffeil, defnyddiwr neu adolygiad ID',
+'redirect-legend' => 'Ailgyfeiriad i ffeil newu dudalen',
+
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Chwilio am ffeiliau dyblyg',
'fileduplicatesearch-summary' => 'Chwilier am ffeiliau dyblyg ar sail ei werth stwnsh.',
* hook.
*/
$specialPageAliases = array(
+ 'Activeusers' => array( 'ActiveUsers' ),
'Allmessages' => array( 'AllMessages' ),
'Allpages' => array( 'AllPages' ),
'Ancientpages' => array( 'AncientPages' ),
'listusers-noresult' => 'No user found.',
'listusers-blocked' => '(blocked)',
+# Special:ActiveUsers
+'activeusers' => 'Active users list',
+'activeusers-summary' => '', # do not translate or duplicate this message to other languages
+'activeusers-intro' => 'This is a list of users who had some kind of activity within the last $1 {{PLURAL:$1|day|days}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|action|actions}} in the last {{PLURAL:$3|day|$3 days}}',
+'activeusers-from' => 'Display users starting at:',
+'activeusers-hidebots' => 'Hide bots',
+'activeusers-hidesysops' => 'Hide administrators',
+'activeusers-noresult' => 'No users found.',
+
# Special:ListGroupRights
'listgrouprights' => 'User group rights',
'listgrouprights-summary' => 'The following is a list of user groups defined on this wiki, with their associated access rights.
'yourname' => 'Nombre de usuario:',
'userlogin-yourname' => 'Nombre de usuario',
'userlogin-yourname-ph' => 'Escribe tu nombre de usuario',
+'createacct-helpusername-url' => '{{ns:Project}}:Política_de_nombres_de_usuario',
'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(ayúdame a elegir)]]',
'yourpassword' => 'Contraseña:',
'userlogin-yourpassword' => 'Contraseña',
'createacct-yourpasswordagain' => 'Confirma la contraseña',
'createacct-yourpasswordagain-ph' => 'Repite la contraseña',
'remembermypassword' => 'Mantenerme conectado en este navegador (hasta $1 {{PLURAL:$1|día|días}})',
-'userlogin-remembermypassword' => 'Recordarme',
+'userlogin-remembermypassword' => 'Mantener mi sesión iniciada',
'userlogin-signwithsecure' => 'Idetificarse mediante servidor seguro',
'securelogin-stick-https' => 'Permanecer conectado a HTTPS después de iniciar sesión',
'yourdomainname' => 'Dominio',
'gotaccount' => '¿Ya tienes una cuenta? $1.',
'gotaccountlink' => 'Entrar',
'userlogin-resetlink' => '¿Olvidaste tus datos de acceso?',
+'helplogin-url' => 'Help:Inicio de sesión',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ayuda para identificarse]]',
'createacct-join' => 'Introduce tus datos debajo.',
'createacct-emailrequired' => 'Dirección de correo electrónico',
'createacct-realname' => 'Nombre real (opcional)',
'createaccountreason' => 'Motivo:',
'createacct-reason' => 'Motivo',
+'createacct-reason-ph' => 'Por qué estás creando otra cuenta',
'createacct-captcha' => 'Comprobación de seguridad',
'createacct-captcha-help-url' => '{{ns:Project}}:Solicitar una cuenta',
'createacct-imgcaptcha-help' => '¿No ves la imagen? [[{{MediaWiki:createacct-captcha-help-url}}|Solicitar una cuenta]]',
'createacct-imgcaptcha-ph' => 'Escribe el texto de arriba',
+'createacct-submit' => 'Crea tu cuenta',
'createacct-benefit-heading' => '{{SITENAME}} lo construye gente como tú.',
'createacct-benefit-body1' => 'ediciones',
'createacct-benefit-body2' => 'páginas',
-'createacct-benefit-body3' => 'contribuyentes este mes',
+'createacct-benefit-body3' => 'colaboradores recientes',
'badretype' => 'Las contraseñas no coinciden.',
'userexists' => 'El nombre de usuario indicado ya está en uso.
Por favor escoge un nombre diferente.',
'resetpass-wrong-oldpass' => 'La contraseña antigua no es correcta.
Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
'resetpass-temp-password' => 'Contraseña temporal:',
+'resetpass-abort-generic' => 'Una extensión ha cancelado el cambio de la contraseña.',
# Special:PasswordReset
'passwordreset' => 'Restablecimiento de contraseña',
'userrights-notallowed' => 'Tu cuenta no tiene permiso para añadir o retirar permisos de usuario.',
'userrights-changeable-col' => 'Grupos que puedes cambiar',
'userrights-unchangeable-col' => 'Grupos que no puedes cambiar',
+'userrights-conflict' => 'Hay un conflicto de permisos de usuario. Aplica tus cambios de nuevo.',
# Groups
'group' => 'Grupo:',
'version-poweredby-credits' => "Este wiki funciona gracias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otros',
'version-credits-summary' => 'Queremos reconocer a las siguientes personas por su contribución a [[Special:Version|MediaWiki]].',
-'version-license-info' => 'MediaWiki es software libre; puedes redistribuírlo y/o modificarlo bajo los términos de la Licencia General Pública GNU publicada por la Fundación del Software Libre; ya sea la versión 2 de la licencia, o (a tu elección) cualquier versión posterior.
+'version-license-info' => 'MediaWiki es software libre; puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia General Pública de GNU como la publica la Free Software Foundation; ya sea la versión 2 de la licencia, o (a tu elección) cualquier versión posterior.
-MediaWiki es distribuído con la esperanza de que será útil, pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía implícita de COMERCIALIZACIÓN ó ADAPTACIÓN A UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General GNU para mayores detalles.
+MediaWiki se distribuye con la esperanza de que será útil, pero SIN NINGUNA GARANTÍA; sin siquiera con la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulta la Licencia Pública General de GNU para más detalles.
-Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública General GNU] junto a este programa; si no es así, escríbale a la Fundación del Software Libre, Inc., Calle Franklin 51, Quinto Piso, Boston, MA 02110-1301, EE.UU. ó [//www.gnu.org/licenses/old-licenses/gpl-2.0.html léela en línea].',
+Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública General de GNU] junto a este programa; si no es así, escríbele a la Free Software Foundation, Inc., Calle Franklin 51, quinto piso, Boston, MA 02110-1301, EE. UU. o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html léela en línea].',
'version-software' => 'Software instalado',
'version-software-product' => 'Producto',
'version-software-version' => 'Versión',
'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Ruta del artículo]',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta de la secuencia de comandos (script)]',
+'redirect' => 'Redirigir por archivo, usuario o ID de revisión',
+'redirect-legend' => 'Redirigir a un archivo o página',
'redirect-summary' => 'Esta página especial redirige a un fichero (dado un nombre de fichero), a una página (dado un identificador de revisión) o a una página de usuario (dado en identificador numérico de usuario).',
+'redirect-submit' => 'Ir',
+'redirect-lookup' => 'Buscar:',
+'redirect-value' => 'Valor:',
+'redirect-user' => 'ID del usuario',
+'redirect-revision' => 'Revisión de página',
'redirect-file' => 'Nombre de fichero',
+'redirect-not-exists' => 'No se encontró el valor',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Búsqueda de archivos duplicados',
'createacct-yourpasswordagain' => 'Vahvista salasana',
'createacct-yourpasswordagain-ph' => 'Kirjoita salasana uudelleen',
'remembermypassword' => 'Muista minut (enintään $1 {{PLURAL:$1|päivä|päivää}})',
-'userlogin-remembermypassword' => 'Muista minut',
+'userlogin-remembermypassword' => 'Pidä minut kirjautuneena',
'userlogin-signwithsecure' => 'Kirjaudu sisään salatun yhteyden yli',
'securelogin-stick-https' => 'Jatka salatun yhteyden käyttämistä sisäänkirjautumisen jälkeen',
'yourdomainname' => 'Verkkonimi',
'createacct-realname' => 'Oikea nimi (valinnainen)',
'createaccountreason' => 'Syy',
'createacct-reason' => 'Syy',
+'createacct-reason-ph' => 'Tunnuksen luomisen syy',
'createacct-captcha' => 'Turvatarkastus',
'createacct-captcha-help-url' => '{{ns:Project}}:Pyydä tunnusta',
'createacct-imgcaptcha-help' => 'Et näe kuvaa? [[{{MediaWiki:createacct-captcha-help-url}}|Pyydä tunnusta]]',
'createacct-imgcaptcha-ph' => 'Kirjoita teksti, jonka näet edellä',
-'createacct-benefit-heading' => 'Sivun {{SITENAME}} ovat tehneet ihmiset kuten sinä.',
+'createacct-submit' => 'Luo tunnus',
+'createacct-benefit-heading' => '{{SITENAME}} on sinun kaltaisesi ihmisten tekemä.',
'createacct-benefit-body1' => 'muokkausta',
'createacct-benefit-body2' => 'sivua',
'createacct-benefit-body3' => 'viimeaikaiset muokkaajat',
'version-entrypoints-header-entrypoint' => 'Aloituskohta',
'version-entrypoints-header-url' => 'URL',
+'redirect-submit' => 'Siirry',
+'redirect-file' => 'Tiedostonimi',
+
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Kaksoiskappaleiden haku',
'fileduplicatesearch-summary' => 'Etsii tiedoston kaksoiskappaleita hajautusarvon perusteella.',
'nohistory' => 'Mò-yû pún-chông ke siû-thin ki-liu̍k.',
'currentrev' => 'Tông-chhièn siû-thin pán-pún',
'currentrev-asof' => 'Chhai $1-ke tông-sṳ̀ siù-tsho pán-pún.',
-'revisionasof' => 'Chhai $1 só-cho ke siû-thin pán-pún',
+'revisionasof' => '$1嘅修訂版本',
'revision-info' => 'Chhai $1 yù $2 só-cho ke siû-thin pán-pún',
'previousrevision' => '←Sông yit siû-thin',
'nextrevision' => 'Hâ-yit-ke siû-cháng →',
# Diffs
'history-title' => '"$1" ke siû-thin li̍t-sṳ́',
-'lineno' => 'Thi $1-hàng:',
+'lineno' => '第$1行:',
'compareselectedversions' => 'Pí-káu sién-thin ke pán-pún',
'editundo' => '撤銷',
'diff-multi' => '({{PLURAL:$2|1 miàng yung-fu|$2 miàng yung-fu}}
chok-chhut ke {{PLURAL:$1|yit-ke chûng-thù siû-thin pán-pún|$1-ke chûng-thù siû-thin pán-pún}}hàn-mò pûn hién-sṳ)',
# Search results
-'searchresults' => 'Chhìm-cháu kiet-kó',
-'searchresults-title' => 'Tui "$1" ke sêu-chhà kiet-kó',
+'searchresults' => '搜尋結果',
+'searchresults-title' => '搜尋"$1"嘅結果',
'searchresulttext' => 'Yû-kôan chhìm-cháu {{SITENAME}} ke kien-tô siòng-se chhìn-khóng, chhâm-kháu [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Chhà-sûn $1 (só-yû yî "$1" khôi-thèu ke ya̍p • só-yû lièn-chiap to "$1" ke ya̍p)',
'searchsubtitleinvalid' => 'Chhà-chhìm "$1"',
'nextn' => 'hâ {{PLURAL:$1|$1}}-ke',
'prevn-title' => 'Chhièn $1-ke kiet-kó',
'nextn-title' => 'Heu $1-ke kiet-kó',
-'shown-title' => 'Mî-ya̍p hién-sṳ $1-hong kiet-kó',
-'viewprevnext' => 'Kiám-sṳ ($1) ($2) ($3).',
+'shown-title' => '每頁展示$1項結果',
+'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
'searchmenu-exists' => "'''Pún wiki sông yû-miàng chhṳ̂n-cho “[[:$1]]” ke ya̍p-mien'''",
'searchmenu-new' => "'''Chhai liá-ke wiki sông kien-li̍p liá-ke ya̍p-mien \"[[:\$1]]\"!'''",
'searchhelp-url' => 'Help:Pông-chhu',
-'searchprofile-articles' => 'Nui-yùng ya̍p-mien',
-'searchprofile-project' => 'Pông-chhu lâu Kie-va̍k ya̍p-mien',
-'searchprofile-images' => 'Tô-mòi-thí',
-'searchprofile-everything' => 'Chhiòn-phu',
-'searchprofile-advanced' => 'Kô-kip',
-'searchprofile-articles-tooltip' => 'Chhai $1 chûng sêu-chhìm',
-'searchprofile-project-tooltip' => 'Chhai $1 chûng sêu-chhìm',
-'searchprofile-images-tooltip' => 'Sêu-sò vùn-khien',
+'searchprofile-articles' => '內容頁面',
+'searchprofile-project' => '幫助撈計劃頁面',
+'searchprofile-images' => '多媒體',
+'searchprofile-everything' => '全部',
+'searchprofile-advanced' => '高級',
+'searchprofile-articles-tooltip' => '在$1肚搜尋',
+'searchprofile-project-tooltip' => '在$1肚搜尋',
+'searchprofile-images-tooltip' => '搜尋文件',
'searchprofile-everything-tooltip' => '搜索全部(包括討論頁面)',
-'searchprofile-advanced-tooltip' => 'Chhai chhṳ-thin miàng-sṳ khûng-kiên chûng sêu-chhìm',
+'searchprofile-advanced-tooltip' => '在用戶安名空間肚搜尋',
'search-result-size' => '$1 ($2隻字)',
'search-result-category-size' => '{{PLURAL:$1|1-ke sṳ̀n-yèn|$1-ke sṳ̀n-yèn}} ({{PLURAL:$2|1-ke chṳ́ fûn-lui|$2-ke chṳ́ fûn-lui}}, {{PLURAL:$3|1-ke tóng-on|$3-ke tóng-on}})',
'search-redirect' => '(chhùng-thin-hiong $1)',
-'search-section' => '(thon-lo̍k $1)',
+'search-section' => '(段落 $1)',
'search-suggest' => 'Ngì shì-féu kié: $1',
'search-interwiki-caption' => 'Chí-moi kie-va̍k',
'search-interwiki-default' => '$1 kiet-kó:',
'search-interwiki-more' => '(kien-tô)',
'searchrelated' => 'siông-kôan',
-'searchall' => 'chhiòn-phu',
+'searchall' => '全部',
'showingresults' => "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$1'''-thiàu kiet-kó:",
'showingresultsnum' => "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$3'''-thiàu kiet-kó:",
'showingresultsheader' => "Tui '''$4''' ke {{PLURAL:$5|thi'''$1''' chṳ thi '''$3'''-ke kiet-kó|thi '''$1 - $2'''-hong, khiung '''$3'''-ke kiet-kó}}",
'rcshowhidepatr' => '$1 kiám-chhà-ko ke phiên-siá',
'rcshowhidemine' => '$1 ngô-ke phiên-siá',
'rclinks' => 'Hién-sṳ chui-khiûn $2 thiên-nui ke chui-sîn ke $1-chhṳ kói-thung. <br />$3',
-'diff' => 'chhâ-yi',
-'hist' => 'Li̍t-sṳ́',
+'diff' => '毋同',
+'hist' => '歷史',
'hide' => 'Yún-chhòng',
'show' => 'Hién-sṳ',
'minoreditletter' => 'séu',
# Recent changes linked
'recentchangeslinked' => 'Lièn-chhut kiên-kói',
'recentchangeslinked-feed' => 'Lièn-chhut kiên-kói',
-'recentchangeslinked-toolbox' => 'Lièn-chhut kiên-kói',
+'recentchangeslinked-toolbox' => '相關更改',
'recentchangeslinked-title' => 'Tui-yî "$1" yû-kôan ke lièn-chhut kiên-kói',
'recentchangeslinked-noresult' => 'Chhai liá yit-thon sṳ̀-kiên chûng lièn-kiet ke hong-mien pin-mò kiên-kói.',
'recentchangeslinked-summary' => "Liá-ke thi̍t-sû-ya̍p lie̍t-sṳ ''yù'' só pûn-chhut ke yit-ke ya̍p chṳ̂ lièn-kiet to ya̍p ke chui-khiûn kiên-kói (fe̍t-chá he tui-yî chṳ́-thin fûn-lui ke sṳ̀n-yèn).
'recentchangeslinked-to' => 'Hién-sṳ lièn-to só pûn-chhut ke ya̍p',
# Upload
-'upload' => 'Sông-chhòn tóng-on',
+'upload' => '上傳文件',
'uploadbtn' => '上傳文件',
'reuploaddesc' => '取消上載並返回上載表單',
'uploadnologin' => 'Hàn-mò tên-ngi̍p',
'protectedpagesempty' => 'Chhai liá-ke chhâm-su hâ mò-yû vùn-chông chang-chhai pó-fu.',
'listusers' => 'Yung-fu lie̍t-péu',
'usercreated' => '$1 $2{{GENDER:$3|chhóng-kien}}',
-'newpages' => 'Chui-sîn ke vùn-chông',
+'newpages' => '新頁面',
'newpages-username' => 'Yung-fu-miàng:',
'ancientpages' => 'Chui-khiu ke hong-mien',
'move' => 'Yì-thung',
# Rollback
'rollback' => 'Fî-fu̍k',
'rollback_short' => 'Fî-fu̍k',
-'rollbacklink' => 'fî-fu̍k',
+'rollbacklink' => '打轉頭',
'rollbackfailed' => 'Mò-fap fî-fu̍k',
'cantrollback' => 'Vù-fap fî-fu̍k phiên-cho; chui-heu ke kung-hien-chá he pún vùn-chông ke vì-thu̍k chok-chá.',
'alreadyrolled' => 'Mò-fap fî-fu̍k yù [[User:$2|$2]] ([[User talk:$2|thó-lun]]) chin-hàng ke [[$1]] ke chui-heu phiên-si̍p; khì-thâ ngìn yí-kîn phiên-siá fe̍t-he fî-fu̍k liáu ke-hong. Chui-heu phiên-si̍p-chá: [[User:$3|$3]] ([[User talk:$3|Thó-lun]])。',
'sp-contributions-submit' => 'Chhìm-cháu',
# What links here
-'whatlinkshere' => 'Lièn-ngi̍p to liá-chham',
+'whatlinkshere' => '鏈接入頁面',
'whatlinkshere-title' => 'Lièn-chiap to "$1" ke ya̍p',
'whatlinkshere-page' => 'Vùn-chông:',
'linkshere' => 'Yî-ha vùn-chông lièn-kiet to [[:$1]]:',
'createaccountblock' => 'Kim-chṳ́ chhóng-kien chong-ho',
'ipblocklist-empty' => 'Chhà-fûng lie̍t-péu he khûng-hî.',
'ipblocklist-no-results' => 'Só yêu-khiù ke IP thi-tiám/yung-fu-miàng mò-yû pûn chhà-fûng.',
-'blocklink' => 'Kim-fûng',
+'blocklink' => '查封',
'unblocklink' => 'kié-chhù kim-fûng',
'change-blocklink' => 'kiên-kói fûng-kim',
'contribslink' => '貢獻',
'allmessagesnotsupportedDB' => 'Ne-thúng kie-mien kûng-yung chhu-yî kôan-pit chong-thai (wgUseDatabaseMessages)。',
# Thumbnails
-'thumbnail-more' => 'Fong-thai',
+'thumbnail-more' => '放大',
'filemissing' => 'Mò-fap cháu-to tóng-on',
'thumbnail_error' => 'Chhóng-kien suk-thù chho-ngu: $1',
'djvu_page_error' => 'DjVu hong-mien chhêu-chhut fam-vì',
Kien-ngi ngì tên-ki, than-he pin-fî pit-sî.',
'tooltip-pt-anonlogin' => 'Kien-ngi ngì tên-ki, than-he pin-fî pit-sî.',
'tooltip-pt-logout' => 'Tên-chhut',
-'tooltip-ca-talk' => 'Kôan-yî thiàu-muk chang-vùn ke thó-lun',
-'tooltip-ca-edit' => 'Ngì khó-yî phiên-siá chhṳ́-chông, chhiáng chhai pó-chhùn chṳ̂-chhièn siên yi-liau yit-ha-é.',
+'tooltip-ca-talk' => '關於頁面正文嘅討論',
+'tooltip-ca-edit' => '汝做得編寫邇頁,請在保存前用預覽撳掣。',
'tooltip-ca-addsection' => '開始一隻新段落',
-'tooltip-ca-viewsource' => 'Ke-vùn-chông yí-kîn pûn pó-fu. Ngì khó-yî chhà-kháu ke-chông ngièn-sṳ́ me̍t.',
-'tooltip-ca-history' => 'Pún vùn-chông ke chó-chhièn pán-pún.',
+'tooltip-ca-viewsource' => '本頁面受到保護。
+汝做得查看其嘅源碼。',
+'tooltip-ca-history' => '本頁面早先嘅修訂版本',
'tooltip-ca-protect' => 'Pó-fu ke-vùn-chông',
'tooltip-ca-delete' => 'Chhù-hi pún-chông',
'tooltip-ca-undelete' => 'Chiông liá-ke vùn-chông fî-fu̍k to pûn chhù-hi yî-chhièn ke chhong-khóng',
'tooltip-search-go' => 'Van-yit yû siông-thùng ke phêu-thì chhùn-chhai, tshṳ̍t-tsiap chhièn-vông liá-ya̍p',
'tooltip-search-fulltext' => '搜查包含邇兜文字嘅頁',
'tooltip-p-logo' => '訪問頭頁',
-'tooltip-n-mainpage' => 'Fóng-mun Thèu Ya̍p',
-'tooltip-n-mainpage-description' => 'Fóng-mun Thèu Ya̍p',
+'tooltip-n-mainpage' => '探訪頭頁',
+'tooltip-n-mainpage-description' => '探訪頭頁',
'tooltip-n-portal' => '關於本計劃,汝可以做麼嘅,應該愛樣般做',
-'tooltip-n-currentevents' => 'Thì-kiûng tông-chhièn sîn-vùn sṳ-khien ke poi-kín chṳ̂-liau',
+'tooltip-n-currentevents' => '提供當前新聞事件嘅背景信息',
'tooltip-n-recentchanges' => '列出網站肚嘅最近修改
Lie̍t-chhut ke-mióng-chham chûng ke chui-khiûn siû-kói',
'tooltip-n-randompage' => '隨機載入一隻頁面',
'tooltip-n-help' => '尋找幫手',
-'tooltip-t-whatlinkshere' => 'Lie̍t-chhut só-yû lâu pún-chông siông-lièn ke vùn-chông',
-'tooltip-t-recentchangeslinked' => 'Vùn-chông lièn-chhut só-yû vùn-chông ke kiên-kói',
+'tooltip-t-whatlinkshere' => '全部鏈接入本頁嘅維基頁面列表',
+'tooltip-t-recentchangeslinked' => '頁面鏈接出嘅所有頁面嘅更改',
'tooltip-feed-rss' => 'Chṳ́-thin pún vùn-chông li̍t-sṳ́ ke RSS chṳ̂-liau',
'tooltip-feed-atom' => 'Chṳ́-thin pún vùn-chông li̍t-sṳ́ ke Atom sêu-sit',
'tooltip-t-contributions' => 'Chhà-khon ke-yung-fu ke kung-hien lie̍t-péu',
'tooltip-t-emailuser' => 'Hiong ke-yung-fu fat-sung sin-sit',
-'tooltip-t-upload' => 'Sông-chhòn tóng-on',
+'tooltip-t-upload' => '上傳文件',
'tooltip-t-specialpages' => '全部特殊文章嘅列表',
-'tooltip-t-print' => 'Liá-ke vùn-chông ke hí-khó lie̍t-yin pán-pún',
-'tooltip-t-permalink' => 'Liá-ke vùn-chông pán-pún ke yún-kiú lièn-kiet',
-'tooltip-ca-nstab-main' => 'Chhà-khon vùn-chông nui-yùng',
+'tooltip-t-print' => '本頁面做得打印嘅版本',
+'tooltip-t-permalink' => '邇隻頁面修訂版本嘅永久鏈接',
+'tooltip-ca-nstab-main' => '查看內容頁',
'tooltip-ca-nstab-user' => 'Chhà-khon yung-fu-chông',
'tooltip-ca-nstab-media' => 'Chhà-khon hìn-thí-chông',
'tooltip-ca-nstab-special' => 'pún vùn-chông voi sùi-tén chṳ̂-liau-khu ke su-kí kiên-sîn, ngim-hò ngìn put-nèn chhṳ̍t-chiap phiên-cho',
'tooltip-compareselectedversions' => 'Chhà-khon pún-chông pûn tiám-sién ke lióng-ke pán-pún kiê ke chhâ-yi.',
'tooltip-watch' => 'Chiông chhṳ́-chông kâ-ngi̍p ngì-ke kam-sṳ lie̍t-péu',
'tooltip-recreate' => 'Chhùng-kien ke-vùn-chông, mò-lun he-feu pûn chhù-chhîn',
-'tooltip-rollback' => '"Fán-chón" khó-yî yit-on fî-fu̍k sông yit-vi kung-hien-chá tui liá-ya̍p ke phiên-chho',
-'tooltip-undo' => '"Fu̍k-ngièn" khó-yî chhai phiên-sip mù-sṳt sông khôi-khí phiên-sip péu-kak fu̍k-ngièn. Kì yùng-chún chhai chak-yeu chûng kâ-ngi̍p ngièn-yîn.',
+'tooltip-rollback' => '撳“打轉頭”恢復上一位貢獻人對本頁面嘅編寫',
+'tooltip-undo' => '“撤銷”做得在編寫模式上開啟編輯寫表格來方便復原。其允許在摘要肚加入原因。',
'tooltip-summary' => 'Sû-ngi̍p yit-ke kién-tón ke chak-yeu',
# Stylesheets
'right-unblockself' => '自身に対するブロックを解除',
'right-protect' => '保護レベルを変更し、保護されたページを編集',
'right-editprotected' => '保護ページ (カスケード保護を除く) を編集',
-'right-editinterface' => 'ã\83¦ã\83¼ã\82¶ã\83¼ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤スを編集',
+'right-editinterface' => 'ã\83¦ã\83¼ã\82¶ã\83¼ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼スを編集',
'right-editusercssjs' => '他の利用者のCSSファイル/JavaScriptファイルを編集',
'right-editusercss' => '他の利用者のCSSファイルを編集',
'right-edituserjs' => '他の利用者のJavaScriptファイルを編集',
'deletepage' => 'Бетни кетер',
'confirm' => 'Къабыл эт',
'excontent' => 'ичиндеги: $1',
-'excontentauthor' => "ичиндеги: '$1' ('[[Special:Contributions/$2|$2]] юлюш къошхан джангыз къошулуучу болгъанды)",
+'excontentauthor' => 'ичиндеги: «$1» (юлюш къошхан джангыз къошулуучу [[Special:Contributions/$2|$2]] эди)',
'exbeforeblank' => "Кетериуню алындагъы ичи: '$1'",
'exblank' => 'бет бош эди',
'delete-confirm' => '«$1» — кетериу',
'september' => 'stèmber',
'october' => 'otóber',
'november' => 'novèmber',
-'december' => 'Dzèmber',
-'january-gen' => 'Gené',
+'december' => 'dzèmber',
+'january-gen' => 'gené',
'february-gen' => 'Fërvé',
'march-gen' => 'Mars',
'april-gen' => 'Avril',
'filedeleteerror' => 'Não foi possível eliminar o arquivo "$1".',
'directorycreateerror' => 'Não foi possível criar o diretório "$1".',
'filenotfound' => 'Não foi possível encontrar o arquivo "$1".',
-'fileexistserror' => 'Não foi possível gravar no arquivo "$1": ele já existe',
+'fileexistserror' => 'Não foi possível escrever no arquivo "$1": ele já existe',
'unexpected' => 'Valor não esperado: "$1"="$2".',
'formerror' => 'Erro: Não foi possível enviar o formulário',
'badarticleerror' => 'Esta ação não pode ser realizada nesta página.',
'copyright' => 'Qoraalka wuxuu ku salaysanyahay $1.',
'copyrightpage' => '{{ns:project}}: Ogolaashada koobiga',
'currentevents' => 'Dhacdooyinka cusub',
-'currentevents-url' => 'Project:Maxaa cusub',
+'currentevents-url' => 'Project:Dhacdooyinka Hadda',
'disclaimers' => "Masuul la'aan",
'disclaimerpage' => "Project:Masuul la'aan guud",
'edithelp' => 'Caawinaada wax ka bedelka',
# Special:Version
'version-poweredby-others' => 'kuwa kale',
-# Special:FilePath
-'filepath-page' => 'Fayl:',
-'filepath-submit' => 'Soco',
-
# Special:FileDuplicateSearch
'fileduplicatesearch-legend' => 'Raadi mid tusaale ah',
'fileduplicatesearch-submit' => 'Raadi',
'version-software' => 'Installerad programvara',
'version-software-product' => 'Produkt',
'version-software-version' => 'Version',
-'version-entrypoints' => 'StartpunktsURLer',
-'version-entrypoints-header-entrypoint' => 'Ingångspunkt',
+'version-entrypoints' => 'Startpunkts-URL:er',
+'version-entrypoints-header-entrypoint' => 'Startpunkt',
'version-entrypoints-header-url' => 'URL',
-'redirect' => 'Omdirigering av fil, användare eller versions-ID',
+'redirect' => 'Omdirigering efter filnamn, användar-ID eller versions-ID',
'redirect-legend' => 'Omdirigera till en fil eller sida',
-'redirect-submit' => 'Gå',
-'redirect-lookup' => 'Kolla upp:',
+'redirect-summary' => 'Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter versions-id) eller en användarsida (efter användar-id).',
+'redirect-submit' => 'Kör',
+'redirect-lookup' => 'Slå upp:',
'redirect-value' => 'Värde:',
'redirect-user' => 'Användar-ID',
'redirect-revision' => 'Sidversion',
'policy-url' => 'Project:Quy định và hướng dẫn',
'portal' => 'Cộng đồng',
'portal-url' => 'Project:Cộng đồng',
-'privacy' => 'Quy định quyền riêng tư',
+'privacy' => 'Quy định về quyền riêng tư',
'privacypage' => 'Project:Quy định quyền riêng tư',
'badaccess' => 'Lỗi về quyền truy cập',
'createacct-realname' => 'Tên thật (tùy chọn)',
'createaccountreason' => 'Lý do:',
'createacct-reason' => 'Lý do',
-'createacct-reason-ph' => 'Tại sao bạn tao một tài khoản khác?',
+'createacct-reason-ph' => 'Nhập lý do tạo một tài khoản khác',
'createacct-captcha' => 'Kiểm tra an toàn',
'createacct-captcha-help-url' => '{{ns:Project}}:Yêu cầu tạo tài khoản',
'createacct-imgcaptcha-help' => 'Bạn không thấy hình ảnh? [[{{MediaWiki:createacct-captcha-help-url}}|Yêu cầu có tài khoản]]',
'logentry-patrol-patrol-auto' => '$1自动{{GENDER:$2|标记}}页面$3的版本$4为已巡查',
'logentry-newusers-newusers' => '已{{GENDER:$2|创建}}用户帐户$1',
'logentry-newusers-create' => '{{GENDER:$2|创建}}用户帐户$1',
-'logentry-newusers-create2' => '创建用户帐户 $3 由 $1',
+'logentry-newusers-create2' => '用户帐户 $3 由 $1 创建',
'logentry-newusers-byemail' => '$1创建用户$3,并且密码已通过电子邮件发送',
'logentry-newusers-autocreate' => '用户帐户$1已被自动{{GENDER:$2|创建}}',
'logentry-rights-rights' => '$1将$3的用户组从$4改为$5',
'fewestrevisions-summary',
'upload-summary',
'wantedtemplates-summary',
+ 'activeusers-summary',
'search-summary',
'editpage-head-copy-warn',
'editpage-tos-summary',
'listusers-noresult',
'listusers-blocked',
),
+ 'activeusers' => array(
+ 'activeusers',
+ 'activeusers-summary',
+ 'activeusers-intro',
+ 'activeusers-count',
+ 'activeusers-from',
+ 'activeusers-hidebots',
+ 'activeusers-hidesysops',
+ 'activeusers-submit',
+ 'activeusers-noresult',
+ ),
'listgrouprights' => array(
'listgrouprights',
'listgrouprights-summary',
'deletedcontribs' => 'Special:DeletedContributions',
'linksearch' => 'Special:LinkSearch',
'listusers' => 'Special:ListUsers',
+ 'activeusers' => 'Special:ActiveUsers',
'newuserlog' => 'Special:Log/newusers',
'listgrouprights' => 'Special:ListGroupRights',
'emailuser' => 'Email user',
$this->addOption( 'posdir', 'Directory to read/record journal positions', false, true );
$this->addOption( 'posdump', 'Just dump current journal position into the position dir.' );
$this->addOption( 'postime', 'For position dumps, get the ID at this time', false, true );
+ $this->addOption( 'backoff', 'Stop at entries younger than this age (sec).', false, true );
$this->addOption( 'verbose', 'Verbose mode', false, false, 'v' );
$this->setBatchSize( 50 );
}
} else {
$startFromPosFile = false;
}
- $end = $this->getOption( 'end', INF );
+
+ if ( $this->hasOption( 'backoff' ) ) {
+ $time = time() - $this->getOption( 'backoff', 0 );
+ $end = (int)$src->getJournal()->getPositionAtTime( $time );
+ } else {
+ $end = $this->getOption( 'end', INF );
+ }
$this->output( "Synchronizing backend '{$dst->getName()}' to '{$src->getName()}'...\n" );
$this->output( "Starting journal position is $start.\n" );
</p>
!! end
+!! test
+Partly disable title conversion if variant == main language code
+!! options
+language=zh variant=zh title=[[ZH]] showtitle
+!! input
+-{T|zh-cn:CN;zh-tw:TW}-
+!! result
+ZH
+<p>
+</p>
+!! end
+
+!! test
+Partly disable title conversion if variant == main language code, more
+!! options
+language=zh variant=zh title=[[ZH]] showtitle
+!! input
+-{T|TW}-
+!! result
+ZH
+<p>
+</p>
+!! end
+
!! test
Raw output of variant escape tags (R flag)
!! options