* (bug 56033) Add content model to the page information.
* Added Article::MissingArticleConditions hook to give extensions a chance to
hide their (unrelated) log entries.
+* Added $wgOpenSearchDefaultLimit defining the default number of entries to show
+ on action=opensearch API call.
=== Bug fixes in 1.23 ===
* (bug 41759) The "updated since last visit" markers (on history pages, recent
when the email address is already confirmed. Also, consistently use
"confirmed", rather than "authenticated", when messaging whether or not the
user has confirmed an email address.
-* (bug 19415) action=render no longer shows section edit links. This affects
- behavior of several other features where (bogus) section edit links will
- disappear, such as file description pages loaded via $wgUseInstantCommons or
- pages transcluded cross-wiki via $wgEnableScaryTranscluding.
+* (bug 56912) Show correct link color on cached result of Special:DeadendPages.
+* Classes TitleListDependency and TitleDependency have been removed, as they
+ have been found unused in core and extensions for a long time.
+* (bug 57098) SpecialPasswordReset now obeys returnto parameter
=== API changes in 1.23 ===
* (bug 54884) action=parse&prop=categories now indicates hidden and missing
categories.
+* action=query&meta=filerepoinfo now returns additional information for each
+ repo.
+* EditPage::spamPage() was deprecated since 1.17 and has been removed.
=== Languages updated in 1.23===
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Bugzilla reports.
+* Support was added for Northern Luri (lrc)
+
=== Other changes in 1.23 ===
* The rc_type field in the recentchanges table has been superseded by a new
rc_source field. The rc_source field is a string representation of the
* The global variable $wgArticle has been removed after a lengthy deprecation.
* The global functions addButton and insertTags (for mw.toolbar.addButton and
mw.toolbar.insertTags) now emits mw.log.warn when accessed.
+* User::getPageRenderingHash() was deprecated since 1.17 and has been removed.
== Compatibility ==
'DoEditSectionLink': Override the HTML generated for section edit links
$skin: Skin object rendering the UI
$title: Title object for the title being linked to (may not be the same as
- $wgTitle, if the section is included from a template)
+ the page title, if the section is included from a template)
$section: The designation of the section being pointed to, to be included in
the link, like "§ion=$section"
$tooltip: The default tooltip. Escape before using.
&$pageInfo: Array of information
'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect.
-$title: Title object ($wgTitle)
+$title: Title object for the current page
$request: WebRequest
$ignoreRedirect: boolean to skip redirect check
$target: Title/string of redirect target
before ordinary actions take place.
$output: $wgOut
$article: Article on which the action will be performed
-$title: $wgTitle
+$title: Title on which the action will be performed
$user: $wgUser
$request: $wgRequest
$mediaWiki: The $mediawiki object
my talk page, my contributions" etc).
&$personal_urls: Array of link specifiers (see SkinTemplate.php)
&$title: Title object representing the current page
+$skin: Skin object providing context (e.g. to check if the user is logged in, etc.)
'PingLimiter': Allows extensions to override the results of User::pingLimiter().
&$user : User performing the action
final public function getContext() {
if ( $this->context instanceof IContextSource ) {
return $this->context;
- } else if ( $this->page instanceof Article ) {
+ } elseif ( $this->page instanceof Article ) {
// NOTE: $this->page can be a WikiPage, which does not have a context.
wfDebug( __METHOD__ . ': no context known, falling back to Article\'s context.' );
return $this->page->getContext();
*/
public function render() {
$this->getContext()->getOutput()->setArticleBodyOnly( true );
- $this->getContext()->getOutput()->enableSectionEditLinks( false );
$this->view();
}
'IndexPager' => 'includes/Pager.php',
'Interwiki' => 'includes/interwiki/Interwiki.php',
'LCStore' => 'includes/cache/LocalisationCache.php',
- 'LCStore_Accel' => 'includes/cache/LocalisationCache.php',
- 'LCStore_CDB' => 'includes/cache/LocalisationCache.php',
- 'LCStore_DB' => 'includes/cache/LocalisationCache.php',
- 'LCStore_Null' => 'includes/cache/LocalisationCache.php',
+ 'LCStoreAccel' => 'includes/cache/LocalisationCache.php',
+ 'LCStoreCDB' => 'includes/cache/LocalisationCache.php',
+ 'LCStoreDB' => 'includes/cache/LocalisationCache.php',
+ 'LCStoreNull' => 'includes/cache/LocalisationCache.php',
'License' => 'includes/Licenses.php',
'Licenses' => 'includes/Licenses.php',
'Linker' => 'includes/Linker.php',
'LinkFilter' => 'includes/LinkFilter.php',
'LocalisationCache' => 'includes/cache/LocalisationCache.php',
- 'LocalisationCache_BulkLoad' => 'includes/cache/LocalisationCache.php',
+ 'LocalisationCacheBulkLoad' => 'includes/cache/LocalisationCache.php',
'MagicWord' => 'includes/MagicWord.php',
'MagicWordArray' => 'includes/MagicWord.php',
'MailAddress' => 'includes/UserMailer.php',
'ObjectFileCache' => 'includes/cache/ObjectFileCache.php',
'ProcessCacheLRU' => 'includes/cache/ProcessCacheLRU.php',
'ResourceFileCache' => 'includes/cache/ResourceFileCache.php',
- 'TitleDependency' => 'includes/cache/CacheDependency.php',
- 'TitleListDependency' => 'includes/cache/CacheDependency.php',
# includes/changes
'ChangesList' => 'includes/changes/ChangesList.php',
# includes/diff
'DiffEngine' => 'includes/diff/DairikiDiff.php',
'DiffOp' => 'includes/diff/DairikiDiff.php',
- 'DiffOp_Add' => 'includes/diff/DairikiDiff.php',
- 'DiffOp_Change' => 'includes/diff/DairikiDiff.php',
- 'DiffOp_Copy' => 'includes/diff/DairikiDiff.php',
- 'DiffOp_Delete' => 'includes/diff/DairikiDiff.php',
- 'HWLDF_WordAccumulator' => 'includes/diff/DairikiDiff.php',
+ 'DiffOpAdd' => 'includes/diff/DairikiDiff.php',
+ 'DiffOpChange' => 'includes/diff/DairikiDiff.php',
+ 'DiffOpCopy' => 'includes/diff/DairikiDiff.php',
+ 'DiffOpDelete' => 'includes/diff/DairikiDiff.php',
+ 'HWLDFWordAccumulator' => 'includes/diff/DairikiDiff.php',
'ArrayDiffFormatter' => 'includes/diff/ArrayDiffFormatter.php',
'Diff' => 'includes/diff/DairikiDiff.php',
'DifferenceEngine' => 'includes/diff/DifferenceEngine.php',
return null;
}
-
/**
* Get all blocks that match any IP from an array of IP addresses
*
throw new MWException( 'Unable to determine appropriate JOIN condition for tagging.' );
}
- // JOIN on tag_summary
- $tables[] = 'tag_summary';
- $join_conds['tag_summary'] = array( 'LEFT JOIN', "ts_$join_cond=$join_cond" );
- $fields[] = 'ts_tags';
+ $fields['ts_tags'] = wfGetDB( DB_SLAVE )->buildGroupConcatField(
+ ',', 'change_tag', 'ct_tag', "ct_$join_cond=$join_cond"
+ );
if ( $wgUseTagFilter && $filter_tag ) {
// Somebody wants to filter on a tag.
// Add an INNER JOIN on change_tag
- // FORCE INDEX -- change_tags will almost ALWAYS be the correct query plan.
- $options['USE INDEX'] = array( 'change_tag' => 'change_tag_tag_id' );
- unset( $options['FORCE INDEX'] );
$tables[] = 'change_tag';
$join_conds['change_tag'] = array( 'INNER JOIN', "ct_$join_cond=$join_cond" );
$conds['ct_tag'] = $filter_tag;
* - user: DB user
* - password: DB password
* - type: "mysql" or "postgres"
- * - load: ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0
+ *
+ * - load: Ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0.
+ * If this is zero for any given server, no normal query traffic will be
+ * sent to it. It will be excluded from lag checks in maintenance scripts.
+ * The only way it can receive traffic is if groupLoads is used.
+ *
* - groupLoads: array of load ratios, the key is the query group name. A query may belong
* to several groups, the most specific group defined here is used.
*
*
* CAUTION: Access to database might lead to code execution
*/
-$wgExternalStores = false;
+$wgExternalStores = array();
/**
* An array of external MySQL servers.
/**
* This will cache static pages for non-logged-in users to reduce
* database traffic on public sites.
- * Must set $wgShowIPinHeader = false
+ * Automatically sets $wgShowIPinHeader = false
* ResourceLoader requests to default language and skins are cached
* as well as single module requests.
*/
* Host for UDP profiler.
*
* The host should be running a daemon which can be obtained from MediaWiki
- * Git at:
+ * Git at:
* http://git.wikimedia.org/tree/operations%2Fsoftware.git/master/udpprofile
*/
$wgUDPProfilerHost = '127.0.0.1';
*/
$wgEnableOpenSearchSuggest = true;
+/**
+ * Integer defining default number of entries to show on
+ * OpenSearch call.
+ */
+$wgOpenSearchDefaultLimit = 10;
+
/**
* Expiry time for search suggestion responses
*/
* @throws UserBlockedError|ReadOnlyError|ThrottledError|PermissionsError
* @return bool false if output is done, true if the rest of the form should be displayed
*/
- function attemptSave() {
- global $wgUser, $wgOut;
+ public function attemptSave() {
+ global $wgUser;
$resultDetails = false;
# Allow bots to exempt some edits from bot flagging
$bot = $wgUser->isAllowed( 'bot' ) && $this->bot;
$status = $this->internalAttemptSave( $resultDetails, $bot );
+
+ return $this->handleStatus( $status, $resultDetails );
+ }
+
+ /**
+ * Handle status, such as after attempt save
+ *
+ * @param Status $status
+ * @param array|bool $resultDetails
+ *
+ * @throws ErrorPageError
+ * return bool false, if output is done, true if rest of the form should be displayed
+ */
+ private function handleStatus( Status $status, $resultDetails ) {
+ global $wgUser, $wgOut;
+
// FIXME: once the interface for internalAttemptSave() is made nicer, this should use the message in $status
if ( $status->value == self::AS_SUCCESS_UPDATE || $status->value == self::AS_SUCCESS_NEW_ARTICLE ) {
$this->didSave = true;
return $previewHTML;
}
+ # provide a anchor link to the editform
+ $continueEditing = '<span class="mw-continue-editing">' .
+ '[[#' . self::EDITFORM_ID . '|' . $wgLang->getArrow() . ' ' .
+ wfMessage( 'continue-editing' )->text() . ']]</span>';
if ( $this->mTriedSave && !$this->mTokenOk ) {
if ( $this->mTokenOkExceptSuffix ) {
$note = wfMessage( 'token_suffix_mismatch' )->plain();
} elseif ( $this->incompleteForm ) {
$note = wfMessage( 'edit_form_incomplete' )->plain();
} else {
- $note = wfMessage( 'previewnote' )->plain() .
- ' [[#' . self::EDITFORM_ID . '|' . $wgLang->getArrow() . ' ' . wfMessage( 'continue-editing' )->text() . ']]';
+ $note = wfMessage( 'previewnote' )->plain() . ' ' . $continueEditing;
}
$parserOptions = $this->mArticle->makeParserOptions( $this->mArticle->getContext() );
# Used messages to make sure grep find them:
# Messages: usercsspreview, userjspreview, sitecsspreview, sitejspreview
if ( $level && $format ) {
- $note = "<div id='mw-{$level}{$format}preview'>" . wfMessage( "{$level}{$format}preview" )->text() . "</div>";
+ $note = "<div id='mw-{$level}{$format}preview'>" .
+ wfMessage( "{$level}{$format}preview" )->text() .
+ ' ' . $continueEditing . "</div>";
}
}
$wgOut->returnToMain( false, $this->mTitle );
}
- /**
- * Produce the stock "your edit contains spam" page
- *
- * @param string|bool $match Text which triggered one or more filters
- * @deprecated since 1.17 Use method spamPageWithContent() instead
- */
- static function spamPage( $match = false ) {
- wfDeprecated( __METHOD__, '1.17' );
-
- global $wgOut, $wgTitle;
-
- $wgOut->prepareErrorPage( wfMessage( 'spamprotectiontitle' ) );
-
- $wgOut->addHTML( '<div id="spamprotected">' );
- $wgOut->addWikiMsg( 'spamprotectiontext' );
- if ( $match ) {
- $wgOut->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) );
- }
- $wgOut->addHTML( '</div>' );
-
- $wgOut->returnToMain( false, $wgTitle );
- }
-
/**
* Show "your edit contains spam" page with your diff and text
*
*/
function wfExpandUrl( $url, $defaultProto = PROTO_CURRENT ) {
global $wgServer, $wgCanonicalServer, $wgInternalServer, $wgRequest;
- $serverUrl = $wgServer;
if ( $defaultProto === PROTO_CANONICAL ) {
$serverUrl = $wgCanonicalServer;
- }
- // Make $wgInternalServer fall back to $wgServer if not set
- if ( $defaultProto === PROTO_INTERNAL && $wgInternalServer !== false ) {
+ } elseif ( $defaultProto === PROTO_INTERNAL && $wgInternalServer !== false ) {
+ // Make $wgInternalServer fall back to $wgServer if not set
$serverUrl = $wgInternalServer;
- }
- if ( $defaultProto === PROTO_CURRENT ) {
- $defaultProto = $wgRequest->getProtocol() . '://';
+ } else {
+ $serverUrl = $wgServer;
+ if ( $defaultProto === PROTO_CURRENT ) {
+ $defaultProto = $wgRequest->getProtocol() . '://';
+ }
}
// Analyze $serverUrl to obtain its protocol
* @param array $limits optional array with limits(filesize, memory, time, walltime)
* this overwrites the global wgShellMax* limits.
* @param array $options Array of options:
- * - duplicateStderr: Set this to true to duplicate stderr to stdout,
+ * - duplicateStderr: Set this to true to duplicate stderr to stdout,
* including errors from limit.sh
- *
+ *
* @return string collected stdout as a string
*/
function wfShellExec( $cmd, &$retval = null, $environ = array(),
$logMsg = false;
// According to the documentation, it is possible for stream_select()
- // to fail due to EINTR. I haven't managed to induce this in testing
- // despite sending various signals. If it did happen, the error
- // message would take the form:
+ // to fail due to EINTR. I haven't managed to induce this in testing
+ // despite sending various signals. If it did happen, the error
+ // message would take the form:
//
// stream_select(): unable to select [4]: Interrupted system call (max_fd=5)
//
wfRunHooks( 'ResetSessionID', array( $oldSessionId, $newSessionId ) );
}
-
/**
* Initialise php session
*
* @param string|bool $cluster Cluster name accepted by LBFactory. Default: false.
*/
function wfWaitForSlaves( $maxLag = false, $wiki = false, $cluster = false ) {
- if( $cluster !== false ) {
+ if ( $cluster !== false ) {
$lb = wfGetLBFactory()->getExternalLB( $cluster );
} else {
$lb = wfGetLB( $wiki );
$attribs['class'] = array( 'mw-htmlform-submit' );
if ( $this->isVForm() ) {
- // mw-ui-block is necessary because the buttons aren't necessarily in an
+ // mw-ui-block is necessary because the buttons aren't necessarily in an
// immediate child div of the vform.
array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-big', 'mw-ui-primary', 'mw-ui-block' );
}
$subsectionHtml = '';
$hasLabel = false;
- switch( $displayFormat ) {
+ switch ( $displayFormat ) {
case 'table':
$getFieldHtmlMethod = 'getTableRow';
break;
$params['width'] = $width;
$params['height'] = $height;
$thumbnail = $this->displayImg->transform( $params );
+ Linker::processResponsiveImages( $this->displayImg, $thumbnail, $params );
$anchorclose = Html::rawElement( 'div', array( 'class' => 'mw-filepage-resolutioninfo' ), $msgsmall );
* @param MediaOutput $thumb
* @param array $hp image parameters
*/
- protected static function processResponsiveImages( $file, $thumb, $hp ) {
+ public static function processResponsiveImages( $file, $thumb, $hp ) {
global $wgResponsiveImages;
if ( $wgResponsiveImages ) {
$hp15 = $hp;
private $mTarget = null;
/**
- * @var bool: Whether parser output should contain table of contents
+ * @var bool: Whether output should contain table of contents
*/
private $mEnableTOC = true;
- /**
- * @var bool: Whether parser output should contain section edit links
- */
- private $mEnableSectionEditLinks = true;
-
/**
* Constructor for OutputPage. This should not be called directly.
* Instead a new RequestContext should be created and it will implicitly create
function addParserOutput( &$parserOutput ) {
$this->addParserOutputNoText( $parserOutput );
$parserOutput->setTOCEnabled( $this->mEnableTOC );
- $parserOutput->setEditSectionTokens( $this->mEnableSectionEditLinks );
$text = $parserOutput->getText();
wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) );
$this->addHTML( $text );
* @param $template QuickTemplate
*/
public function addTemplate( &$template ) {
- ob_start();
- $template->execute();
- $this->addHTML( ob_get_contents() );
- ob_end_clean();
+ $this->addHTML( $template->getHTML() );
}
/**
public function isTOCEnabled() {
return $this->mEnableTOC;
}
-
- /**
- * Enables/disables section edit links, doesn't override __NOEDITSECTION__
- * @param bool $flag
- * @since 1.23
- */
- public function enableSectionEditLinks( $flag = true ) {
- $this->mEnableSectionEditLinks = $flag;
- }
-
- /**
- * @return bool
- * @since 1.23
- */
- public function sectionEditLinksEnabled() {
- return $this->mEnableSectionEditLinks;
- }
}
* @ingroup SpecialPage
*/
abstract class PageQueryPage extends QueryPage {
+ /**
+ * Run a LinkBatch to pre-cache LinkCache information,
+ * like page existence and information for stub color and redirect hints.
+ * This should be done for live data and cached data.
+ *
+ * @param $db DatabaseBase connection
+ * @param ResultWrapper $res
+ */
+ public function preprocessResults( $db, $res ) {
+ if ( !$res->numRows() ) {
+ return;
+ }
+
+ $batch = new LinkBatch();
+ foreach ( $res as $row ) {
+ $batch->add( $row->namespace, $row->title );
+ }
+ $batch->execute();
+
+ $res->seek( 0 );
+ }
+
/**
* Format the result as a simple link to the page
*
if ( $title instanceof Title ) {
$text = $wgContLang->convert( $title->getPrefixedText() );
- return Linker::linkKnown( $title, htmlspecialchars( $text ) );
+ return Linker::link( $title, htmlspecialchars( $text ) );
} else {
return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
Linker::getInvalidTitleDescription( $this->getContext(), $row->namespace, $row->title ) );
$wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
}
-
// Default value is either the suhosin limit or -1 for unlimited
if ( $wgResourceLoaderMaxQueryLength === false ) {
$maxValueLength = ini_get( 'suhosin.get.max_value_length' );
// Singular if no revision -> diff link will show latest change only in any case
$plural = false;
}
- $plural = $plural ? 2 : 1;
- // 2 signifies "more than one revision". We don't know how many, and even if we did,
+ $plural = $plural ? 999 : 1;
+ // 999 signifies "more than one revision". We don't know how many, and even if we did,
// the number of revisions or authors is not necessarily the same as the number of
// "messages".
$newMessagesLink = Linker::linkKnown(
// otherwise we'll end up with the autonym again.
$ilLangLocalName = Language::fetchLanguageName( $ilInterwikiCode, $userLang->getCode() );
+ if ( $languageLinkTitle->getText() === '' ) {
+ $ilTitle = wfMessage( 'interlanguage-link-title-langonly', $ilLangLocalName )->text();
+ } else {
+ $ilTitle = wfMessage( 'interlanguage-link-title', $languageLinkTitle->getText(),
+ $ilLangLocalName )->text();
+ }
+
$language_urls[] = array(
'href' => $languageLinkTitle->getFullURL(),
'text' => $ilLangName,
- 'title' => wfMessage( 'interlanguage-link-title', $languageLinkTitle->getText(), $ilLangLocalName )->text(),
+ 'title' => $ilTitle,
'class' => $class,
'lang' => wfBCP47( $ilInterwikiCode ),
'hreflang' => wfBCP47( $ilInterwikiCode ),
$personal_urls[$login_id] = $login_url;
}
- wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title ) );
+ wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title, $this ) );
wfProfileOut( __METHOD__ );
return $personal_urls;
}
public function getSkin() {
return $this->data['skin'];
}
+
+ /**
+ * Fetch the output of a QuickTemplate and return it
+ *
+ * @since 1.23
+ * @return String
+ */
+ public function getHTML() {
+ ob_start();
+ $this->execute();
+ $html = ob_get_contents();
+ ob_end_clean();
+ return $html;
+ }
}
/**
*/
public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
- if ( $name ) {
- return Title::makeTitle( NS_SPECIAL, $name, $fragment );
- } else {
- throw new MWException( "Invalid special page name \"$name\"" );
- }
+ return Title::makeTitle( NS_SPECIAL, $name, $fragment );
}
/**
}
}
+ /**
+ * If the user is not logged in, throws UserNotLoggedIn error.
+ *
+ * Default error message includes a link to Special:Userlogin with properly set 'returnto' query
+ * parameter.
+ *
+ * @since 1.23
+ * @param string|Message $reasonMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
+ * will be used as message keys. If a string is given, the message will also receive a
+ * formatted login link (generated using the 'loginreqlink' message) as first parameter. If a
+ * Message is given, it will be passed on verbatim.
+ * @param string|Message $titleMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
+ * will be used as message keys.
+ * @throws UserNotLoggedIn
+ */
+ public function requireLogin( $reasonMsg = null, $titleMsg = null ) {
+ if ( $this->getUser()->isAnon() ) {
+ // Use default messages if not given or explicit null passed
+ if ( !$reasonMsg ) {
+ $reasonMsg = 'exception-nologin-text-manual';
+ }
+ if ( !$titleMsg ) {
+ $titleMsg = 'exception-nologin';
+ }
+
+ // Convert to Messages with current context
+ if ( is_string( $reasonMsg ) ) {
+ $loginreqlink = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Userlogin' ),
+ $this->msg( 'loginreqlink' )->escaped(),
+ array(),
+ array( 'returnto' => $this->getTitle()->getPrefixedText() )
+ );
+ $reasonMsg = $this->msg( $reasonMsg )->rawParams( $loginreqlink );
+ }
+ if ( is_string( $titleMsg ) ) {
+ $titleMsg = $this->msg( $titleMsg );
+ }
+
+ throw new UserNotLoggedIn( $reasonMsg, $titleMsg );
+ }
+ }
+
/**
* Sets headers - this should be called from the execute() method of all derived classes!
*/
* @see wfMessage
*/
public function msg( /* $args */ ) {
- // Note: can't use func_get_args() directly as second or later item in
- // a parameter list until PHP 5.3 or you get a fatal error.
- // Works fine as the first parameter, which appears elsewhere in the
- // code base. Sighhhh.
- $args = func_get_args();
- $message = call_user_func_array( array( $this->getContext(), 'msg' ), $args );
+ $message = call_user_func_array(
+ array( $this->getContext(), 'msg' ),
+ func_get_args()
+ );
// RequestContext passes context to wfMessage, and the language is set from
// the context, but setting the language for Message class removes the
// interface message status, which breaks for example usernameless gender
public function getFinalGroupName() {
global $wgSpecialPageGroups;
$name = $this->getName();
- $group = '-';
// Allow overbidding the group from the wiki side
$msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
}
}
-
/**
* Redirect from Special:PermanentLink/### to index.php?oldid=###
*/
* @param $ok Boolean: whether the operation completed
* @param $value Mixed
*/
- function setResult( $ok, $value = null ) {
+ public function setResult( $ok, $value = null ) {
$this->ok = $ok;
$this->value = $value;
}
*
* @return Boolean
*/
- function isGood() {
+ public function isGood() {
return $this->ok && !$this->errors;
}
*
* @return Boolean
*/
- function isOK() {
+ public function isOK() {
return $this->ok;
}
*
* @param string|Message $message message name or object
*/
- function warning( $message /*, parameters... */ ) {
+ public function warning( $message /*, parameters... */ ) {
$params = array_slice( func_get_args(), 1 );
$this->errors[] = array(
'type' => 'warning',
*
* @param string|Message $message message name or object
*/
- function error( $message /*, parameters... */ ) {
+ public function error( $message /*, parameters... */ ) {
$params = array_slice( func_get_args(), 1 );
$this->errors[] = array(
'type' => 'error',
*
* @param string|Message $message message name or object
*/
- function fatal( $message /*, parameters... */ ) {
+ public function fatal( $message /*, parameters... */ ) {
$params = array_slice( func_get_args(), 1 );
$this->errors[] = array(
'type' => 'error',
/**
* Sanitize the callback parameter on wakeup, to avoid arbitrary execution.
*/
- function __wakeup() {
+ public function __wakeup() {
$this->cleanCallback = false;
}
* @param string $longContext a long enclosing context message name, for a list
* @return String
*/
- function getWikiText( $shortContext = false, $longContext = false ) {
+ public function getWikiText( $shortContext = false, $longContext = false ) {
if ( count( $this->errors ) == 0 ) {
if ( $this->ok ) {
$this->fatal( 'internalerror_info',
* @param string $longContext a long enclosing context message name, for a list
* @return Message
*/
- function getMessage( $shortContext = false, $longContext = false ) {
+ public function getMessage( $shortContext = false, $longContext = false ) {
if ( count( $this->errors ) == 0 ) {
if ( $this->ok ) {
$this->fatal( 'internalerror_info',
$s = wfMessage( $longContext, $wrapper );
}
} else {
- $msgs = $this->getErrorMessageArray( $this->errors );
+ $msgs = $this->getErrorMessageArray( $this->errors );
$msgCount = count( $msgs );
if ( $shortContext ) {
* @param $other Status Other Status object
* @param $overwriteValue Boolean: whether to override the "value" member
*/
- function merge( $other, $overwriteValue = false ) {
+ public function merge( $other, $overwriteValue = false ) {
$this->errors = array_merge( $this->errors, $other->errors );
$this->ok = $this->ok && $other->ok;
if ( $overwriteValue ) {
* @return array A list in which each entry is an array with a message key as its first element.
* The remaining array elements are the message parameters.
*/
- function getErrorsArray() {
+ public function getErrorsArray() {
return $this->getStatusArray( "error" );
}
* @return array A list in which each entry is an array with a message key as its first element.
* The remaining array elements are the message parameters.
*/
- function getWarningsArray() {
+ public function getWarningsArray() {
return $this->getStatusArray( "warning" );
}
* @param string $msg message name
* @return Boolean
*/
- function hasMessage( $msg ) {
+ public function hasMessage( $msg ) {
foreach ( $this->errors as $error ) {
if ( $error['message'] === $msg ) {
return true;
* @param $dest Message|String: Replacement message key or object
* @return bool Return true if the replacement was done, false otherwise.
*/
- function replaceMessage( $source, $dest ) {
+ public function replaceMessage( $source, $dest ) {
$replaced = false;
foreach ( $this->errors as $index => $error ) {
if ( $error['message'] === $source ) {
/**
* Make a Title object from a DB row
*
- * @param $row Object database row (needs at least page_title,page_namespace)
+ * @param stdClass $row Object database row (needs at least page_title,page_namespace)
* @return Title corresponding Title
*/
public static function newFromRow( $row ) {
* Load Title object fields from a DB row.
* If false is given, the title will be treated as non-existing.
*
- * @param $row Object|bool database row
+ * @param $row stdClass|bool database row
*/
public function loadFromRow( $row ) {
if ( $row ) { // page found
$langObj = wfGetLangObj( $contentHandler->getPageLanguage( $this ) );
$this->mPageLanguage = array( $langObj->getCode(), $wgLanguageCode );
} else {
- $langObj = wfGetLangObj( $this->mPageLanguage[0] );
+ $langObj = wfGetLangObj( $this->mPageLanguage[0] );
}
wfProfileOut( __METHOD__ );
return $langObj;
/**
* Set the password for a password reminder or new account email
*
- * @param string $str New password to set
+ * @param $str New password to set or null to set an invalid
+ * password hash meaning that the user will not be able to use it
* @param bool $throttle If true, reset the throttle timestamp to the present
*/
public function setNewpassword( $str, $throttle = true ) {
$this->load();
- $this->mNewpassword = self::crypt( $str );
- if ( $throttle ) {
- $this->mNewpassTime = wfTimestampNow();
+
+ if ( $str === null ) {
+ $this->mNewpassword = '';
+ $this->mNewpassTime = null;
+ } else {
+ $this->mNewpassword = self::crypt( $str );
+ if ( $throttle ) {
+ $this->mNewpassTime = wfTimestampNow();
+ }
}
}
return (bool)$userblock->doAutoblock( $this->getRequest()->getIP() );
}
- /**
- * Generate a string which will be different for any combination of
- * user options which would produce different parser output.
- * This will be used as part of the hash key for the parser cache,
- * so users with the same options can share the same cached data
- * safely.
- *
- * Extensions which require it should install 'PageRenderingHash' hook,
- * which will give them a chance to modify this key based on their own
- * settings.
- *
- * @deprecated since 1.17 use the ParserOptions object to get the relevant options
- * @return string Page rendering hash
- */
- public function getPageRenderingHash() {
- wfDeprecated( __METHOD__, '1.17' );
-
- global $wgRenderHashAppend, $wgLang, $wgContLang;
- if ( $this->mHash ) {
- return $this->mHash;
- }
-
- // stubthreshold is only included below for completeness,
- // since it disables the parser cache, its value will always
- // be 0 when this function is called by parsercache.
-
- $confstr = $this->getOption( 'math' );
- $confstr .= '!' . $this->getStubThreshold();
- $confstr .= '!' . ( $this->getOption( 'numberheadings' ) ? '1' : '' );
- $confstr .= '!' . $wgLang->getCode();
- $confstr .= '!' . $this->getOption( 'thumbsize' );
- // add in language specific options, if any
- $extra = $wgContLang->getExtraHashOptions();
- $confstr .= $extra;
-
- // Since the skin could be overloading link(), it should be
- // included here but in practice, none of our skins do that.
-
- $confstr .= $wgRenderHashAppend;
-
- // Give a chance for extensions to modify the hash, if they have
- // extra options or other effects on the parser cache.
- wfRunHooks( 'PageRenderingHash', array( &$confstr ) );
-
- // Make it a valid memcached key fragment
- $confstr = str_replace( ' ', '_', $confstr );
- $this->mHash = $confstr;
- return $confstr;
- }
-
/**
* Get whether the user is explicitly blocked from account creation.
* @return bool|Block
* Cached URL protocol
* @var string
*/
- private $protocol;
+ protected $protocol;
public function __construct() {
/// @todo FIXME: This preemptive de-quoting can interfere with other web libraries
class DerivativeRequest extends FauxRequest {
private $base;
+ /**
+ * @param WebRequest $base
+ * @param array $data Array of *non*-urlencoded key => value pairs, the
+ * fake GET/POST values
+ * @param bool $wasPosted Whether to treat the data as POST
+ */
public function __construct( WebRequest $base, $data, $wasPosted = false ) {
$this->base = $base;
parent::__construct( $data, $wasPosted );
}
return parent::doPurge();
}
+
+ /**
+ * Get the categories this file is a member of on the wiki where it was uploaded.
+ * For local files, this is the same as getCategories().
+ * For foreign API files (InstantCommons), this is not supported currently.
+ * Results will include hidden categories.
+ *
+ * @return TitleArray|Title[]
+ * @since 1.23
+ */
+ public function getForeignCategories() {
+ $this->loadFile();
+ $title = $this->mTitle;
+ $file = $this->mFile;
+
+ if ( ! $file instanceof LocalFile ) {
+ wfDebug( __CLASS__ . '::' . __METHOD__ . ' is not supported for this file' );
+ return TitleArray::newFromResult( new FakeResultWrapper( array() ) );
+ }
+
+ /** @var LocalRepo $repo */
+ $repo = $file->getRepo();
+ $dbr = $repo->getSlaveDB();
+
+ $res = $dbr->select(
+ array( 'page', 'categorylinks' ),
+ array(
+ 'page_title' => 'cl_to',
+ 'page_namespace' => NS_CATEGORY,
+ ),
+ array(
+ 'page_namespace' => $title->getNamespace(),
+ 'page_title' => $title->getDBkey(),
+ ),
+ __METHOD__,
+ array(),
+ array( 'categorylinks' => array( 'INNER JOIN', 'page_id = cl_from' ) )
+ );
+
+ return TitleArray::newFromResult( $res );
+ }
}
$this->mIsRedirect = false;
$this->mLatest = false;
// Bug 57026: do not clear mPreparedEdit since prepareTextForEdit() already checks
- // the requested rev ID and immutable content against the cached one.
+ // the requested rev ID and content against the cached one for equality. For most
+ // content types, the output should not change during the lifetime of this cache.
// Clearing it can cause extra parses on edit for no reason.
}
+ /**
+ * Clear the mPreparedEdit cache field, as may be needed by mutable content types
+ * @return void
+ * @since 1.23
+ */
+ public function clearPreparedEdit() {
+ $this->mPreparedEdit = false;
+ }
+
/**
* Return the list of revision fields that should be selected to create
* a new page.
* @return Status
*/
public function doUpdateRestrictions( array $limit, array $expiry, &$cascade, $reason, User $user ) {
- global $wgCascadingRestrictionLevels;
+ global $wgCascadingRestrictionLevels, $wgContLang;
if ( wfReadOnly() ) {
return Status::newFatal( 'readonlytext', wfReadOnlyReason() );
$logAction = 'protect';
}
+ // Truncate for whole multibyte characters
+ $reason = $wgContLang->truncate( $reason, 255 );
+
if ( $id ) { // Protection of existing page
if ( !wfRunHooks( 'ArticleProtect', array( &$this, &$user, $limit, $reason ) ) ) {
return Status::newGood();
'pt_namespace' => $this->mTitle->getNamespace(),
'pt_title' => $this->mTitle->getDBkey(),
'pt_create_perm' => $limit['create'],
- 'pt_timestamp' => $dbw->encodeExpiry( wfTimestampNow() ),
+ 'pt_timestamp' => $dbw->timestamp(),
'pt_expiry' => $dbw->encodeExpiry( $expiry['create'] ),
'pt_user' => $user->getId(),
'pt_reason' => $reason,
// Update the protection log
$log = new LogPage( 'protect' );
- $log->addEntry( $logAction, $this->mTitle, trim( $reason ), $params, $user );
+ $log->addEntry( $logAction, $this->mTitle, $reason, $params, $user );
return Status::newGood();
}
public function show() {
$special = SpecialPageFactory::getPage( 'Revisiondelete' );
$special->setContext( $this->getContext() );
+ $special->getContext()->setTitle( $special->getTitle() );
$special->run( '' );
}
}
* @ingroup API
*/
abstract class ApiBase extends ContextSource {
-
// These constants allow modules to specify exactly how to treat incoming parameters.
- const PARAM_DFLT = 0; // Default value of the parameter
- const PARAM_ISMULTI = 1; // Boolean, do we accept more than one item for this parameter (e.g.: titles)?
- const PARAM_TYPE = 2; // Can be either a string type (e.g.: 'integer') or an array of allowed values
- const PARAM_MAX = 3; // Max value allowed for a parameter. Only applies if TYPE='integer'
- const PARAM_MAX2 = 4; // Max value allowed for a parameter for bots and sysops. Only applies if TYPE='integer'
- const PARAM_MIN = 5; // Lowest value allowed for a parameter. Only applies if TYPE='integer'
- const PARAM_ALLOW_DUPLICATES = 6; // Boolean, do we allow the same value to be set more than once when ISMULTI=true
- const PARAM_DEPRECATED = 7; // Boolean, is the parameter deprecated (will show a warning)
+ // Default value of the parameter
+ const PARAM_DFLT = 0;
+ // Boolean, do we accept more than one item for this parameter (e.g.: titles)?
+ const PARAM_ISMULTI = 1;
+ // Can be either a string type (e.g.: 'integer') or an array of allowed values
+ const PARAM_TYPE = 2;
+ // Max value allowed for a parameter. Only applies if TYPE='integer'
+ const PARAM_MAX = 3;
+ // Max value allowed for a parameter for bots and sysops. Only applies if TYPE='integer'
+ const PARAM_MAX2 = 4;
+ // Lowest value allowed for a parameter. Only applies if TYPE='integer'
+ const PARAM_MIN = 5;
+ // Boolean, do we allow the same value to be set more than once when ISMULTI=true
+ const PARAM_ALLOW_DUPLICATES = 6;
+ // Boolean, is the parameter deprecated (will show a warning)
+ const PARAM_DEPRECATED = 7;
/// @since 1.17
const PARAM_REQUIRED = 8; // Boolean, is the parameter required?
/// @since 1.17
- const PARAM_RANGE_ENFORCE = 9; // Boolean, if MIN/MAX are set, enforce (die) these? Only applies if TYPE='integer' Use with extreme caution
-
- const PROP_ROOT = 'ROOT'; // Name of property group that is on the root element of the result, i.e. not part of a list
- const PROP_LIST = 'LIST'; // Boolean, is the result multiple items? Defaults to true for query modules, to false for other modules
+ // Boolean, if MIN/MAX are set, enforce (die) these?
+ // Only applies if TYPE='integer' Use with extreme caution
+ const PARAM_RANGE_ENFORCE = 9;
+
+ // Name of property group that is on the root element of the result,
+ // i.e. not part of a list
+ const PROP_ROOT = 'ROOT';
+ // Boolean, is the result multiple items? Defaults to true for query modules,
+ // to false for other modules
+ const PROP_LIST = 'LIST';
const PROP_TYPE = 0; // Type of the property, uses same format as PARAM_TYPE
- const PROP_NULLABLE = 1; // Boolean, can the property be not included in the result? Defaults to false
+ // Boolean, can the property be not included in the result? Defaults to false
+ const PROP_NULLABLE = 1;
const LIMIT_BIG1 = 500; // Fast query, std user limit
const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
public function getModuleProfileName( $db = false ) {
if ( $db ) {
return 'API:' . $this->mModuleName . '-DB';
- } else {
- return 'API:' . $this->mModuleName;
}
+
+ return 'API:' . $this->mModuleName;
}
/**
//handle missing type
if ( !isset( $paramSettings[ApiBase::PARAM_TYPE] ) ) {
- $dflt = isset( $paramSettings[ApiBase::PARAM_DFLT] ) ? $paramSettings[ApiBase::PARAM_DFLT] : null;
+ $dflt = isset( $paramSettings[ApiBase::PARAM_DFLT] )
+ ? $paramSettings[ApiBase::PARAM_DFLT]
+ : null;
if ( is_bool( $dflt ) ) {
$paramSettings[ApiBase::PARAM_TYPE] = 'boolean';
} elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
}
}
- if ( isset( $paramSettings[self::PARAM_DEPRECATED] ) && $paramSettings[self::PARAM_DEPRECATED] ) {
+ if ( isset( $paramSettings[self::PARAM_DEPRECATED] )
+ && $paramSettings[self::PARAM_DEPRECATED]
+ ) {
$desc = "DEPRECATED! $desc";
}
- if ( isset( $paramSettings[self::PARAM_REQUIRED] ) && $paramSettings[self::PARAM_REQUIRED] ) {
+ if ( isset( $paramSettings[self::PARAM_REQUIRED] )
+ && $paramSettings[self::PARAM_REQUIRED]
+ ) {
$desc .= $paramPrefix . "This parameter is required";
}
- $type = isset( $paramSettings[self::PARAM_TYPE] ) ? $paramSettings[self::PARAM_TYPE] : null;
+ $type = isset( $paramSettings[self::PARAM_TYPE] )
+ ? $paramSettings[self::PARAM_TYPE]
+ : null;
if ( isset( $type ) ) {
$hintPipeSeparated = true;
- $multi = isset( $paramSettings[self::PARAM_ISMULTI] ) ? $paramSettings[self::PARAM_ISMULTI] : false;
+ $multi = isset( $paramSettings[self::PARAM_ISMULTI] )
+ ? $paramSettings[self::PARAM_ISMULTI]
+ : false;
if ( $multi ) {
$prompt = 'Values (separate with \'|\'): ';
} else {
} else {
switch ( $type ) {
case 'namespace':
- // Special handling because namespaces are type-limited, yet they are not given
+ // Special handling because namespaces are
+ // type-limited, yet they are not given
$desc .= $paramPrefix . $prompt;
$desc .= wordwrap( implode( ', ', MWNamespace::getValidNamespaces() ),
100, $descWordwrap );
$hasMax = isset( $paramSettings[self::PARAM_MAX] );
if ( $hasMin || $hasMax ) {
if ( !$hasMax ) {
- $intRangeStr = "The value$s must be no less than {$paramSettings[self::PARAM_MIN]}";
+ $intRangeStr = "The value$s must be no less than " .
+ "{$paramSettings[self::PARAM_MIN]}";
} elseif ( !$hasMin ) {
- $intRangeStr = "The value$s must be no more than {$paramSettings[self::PARAM_MAX]}";
+ $intRangeStr = "The value$s must be no more than " .
+ "{$paramSettings[self::PARAM_MAX]}";
} else {
- $intRangeStr = "The value$s must be between {$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
+ $intRangeStr = "The value$s must be between " .
+ "{$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
}
$desc .= $paramPrefix . $intRangeStr;
}
return $msg;
- } else {
- return false;
}
+
+ return false;
}
/**
array( $this, "parameterNotEmpty" ) ) ), $required );
if ( count( $intersection ) > 1 ) {
- $this->dieUsage( "The parameters {$p}" . implode( ", {$p}", $intersection ) . ' can not be used together', 'invalidparammix' );
+ $this->dieUsage(
+ "The parameters {$p}" . implode( ", {$p}", $intersection ) . ' can not be used together',
+ 'invalidparammix' );
} elseif ( count( $intersection ) == 0 ) {
- $this->dieUsage( "One of the parameters {$p}" . implode( ", {$p}", $required ) . ' is required', 'missingparam' );
+ $this->dieUsage(
+ "One of the parameters {$p}" . implode( ", {$p}", $required ) . ' is required',
+ 'missingparam'
+ );
}
}
$params = implode( ", {$p}", $params );
return array(
- array( 'code' => "{$p}missingparam", 'info' => "One of the parameters {$p}{$params} is required" ),
- array( 'code' => "{$p}invalidparammix", 'info' => "The parameters {$p}{$params} can not be used together" )
+ array(
+ 'code' => "{$p}missingparam",
+ 'info' => "One of the parameters {$p}{$params} is required"
+ ),
+ array(
+ 'code' => "{$p}invalidparammix",
+ 'info' => "The parameters {$p}{$params} can not be used together"
+ )
);
}
array( $this, "parameterNotEmpty" ) ) ), $required );
if ( count( $intersection ) > 1 ) {
- $this->dieUsage( "The parameters {$p}" . implode( ", {$p}", $intersection ) . ' can not be used together', 'invalidparammix' );
+ $this->dieUsage(
+ "The parameters {$p}" . implode( ", {$p}", $intersection ) . ' can not be used together',
+ 'invalidparammix'
+ );
}
}
$params = implode( ", {$p}", $params );
return array(
- array( 'code' => "{$p}invalidparammix", 'info' => "The parameters {$p}{$params} can not be used together" )
+ array(
+ 'code' => "{$p}invalidparammix",
+ 'info' => "The parameters {$p}{$params} can not be used together"
+ )
);
}
$deprecated = false;
$required = false;
} else {
- $default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
- $multi = isset( $paramSettings[self::PARAM_ISMULTI] ) ? $paramSettings[self::PARAM_ISMULTI] : false;
- $type = isset( $paramSettings[self::PARAM_TYPE] ) ? $paramSettings[self::PARAM_TYPE] : null;
- $dupes = isset( $paramSettings[self::PARAM_ALLOW_DUPLICATES] ) ? $paramSettings[self::PARAM_ALLOW_DUPLICATES] : false;
- $deprecated = isset( $paramSettings[self::PARAM_DEPRECATED] ) ? $paramSettings[self::PARAM_DEPRECATED] : false;
- $required = isset( $paramSettings[self::PARAM_REQUIRED] ) ? $paramSettings[self::PARAM_REQUIRED] : false;
+ $default = isset( $paramSettings[self::PARAM_DFLT] )
+ ? $paramSettings[self::PARAM_DFLT]
+ : null;
+ $multi = isset( $paramSettings[self::PARAM_ISMULTI] )
+ ? $paramSettings[self::PARAM_ISMULTI]
+ : false;
+ $type = isset( $paramSettings[self::PARAM_TYPE] )
+ ? $paramSettings[self::PARAM_TYPE]
+ : null;
+ $dupes = isset( $paramSettings[self::PARAM_ALLOW_DUPLICATES] )
+ ? $paramSettings[self::PARAM_ALLOW_DUPLICATES]
+ : false;
+ $deprecated = isset( $paramSettings[self::PARAM_DEPRECATED] )
+ ? $paramSettings[self::PARAM_DEPRECATED]
+ : false;
+ $required = isset( $paramSettings[self::PARAM_REQUIRED] )
+ ? $paramSettings[self::PARAM_REQUIRED]
+ : false;
// When type is not given, and no choices, the type is the same as $default
if ( !isset( $type ) ) {
if ( $type == 'boolean' ) {
if ( isset( $default ) && $default !== false ) {
// Having a default value of anything other than 'false' is not allowed
- ApiBase::dieDebug( __METHOD__, "Boolean param $encParamName's default is set to '$default'. Boolean parameters must default to false." );
+ ApiBase::dieDebug(
+ __METHOD__,
+ "Boolean param $encParamName's default is set to '$default'. " .
+ "Boolean parameters must default to false."
+ );
}
$value = $this->getMain()->getCheck( $encParamName );
} elseif ( $type == 'upload' ) {
if ( isset( $default ) ) {
// Having a default value is not allowed
- ApiBase::dieDebug( __METHOD__, "File upload param $encParamName's default is set to '$default'. File upload parameters may not have a default." );
+ ApiBase::dieDebug(
+ __METHOD__,
+ "File upload param $encParamName's default is set to " .
+ "'$default'. File upload parameters may not have a default." );
}
if ( $multi ) {
ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
if ( $value !== null ) {
$this->dieUsage(
"File upload param $encParamName is not a file upload; " .
- "be sure to use multipart/form-data for your POST and include " .
- "a filename in the Content-Disposition header.",
+ "be sure to use multipart/form-data for your POST and include " .
+ "a filename in the Content-Disposition header.",
"badupload_{$encParamName}"
);
}
}
if ( isset( $value ) && ( $multi || is_array( $type ) ) ) {
- $value = $this->parseMultiValue( $encParamName, $value, $multi, is_array( $type ) ? $type : null );
+ $value = $this->parseMultiValue(
+ $encParamName,
+ $value,
+ $multi,
+ is_array( $type ) ? $type : null
+ );
}
// More validation only when choices were not given
// Don't do any validation whatsoever
break;
}
- if ( !isset( $paramSettings[self::PARAM_MAX] ) || !isset( $paramSettings[self::PARAM_MAX2] ) ) {
- ApiBase::dieDebug( __METHOD__, "MAX1 or MAX2 are not defined for the limit $encParamName" );
+ if ( !isset( $paramSettings[self::PARAM_MAX] )
+ || !isset( $paramSettings[self::PARAM_MAX2] )
+ ) {
+ ApiBase::dieDebug(
+ __METHOD__,
+ "MAX1 or MAX2 are not defined for the limit $encParamName"
+ );
}
if ( $multi ) {
ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
}
$min = isset( $paramSettings[self::PARAM_MIN] ) ? $paramSettings[self::PARAM_MIN] : 0;
if ( $value == 'max' ) {
- $value = $this->getMain()->canApiHighLimits() ? $paramSettings[self::PARAM_MAX2] : $paramSettings[self::PARAM_MAX];
+ $value = $this->getMain()->canApiHighLimits()
+ ? $paramSettings[self::PARAM_MAX2]
+ : $paramSettings[self::PARAM_MAX];
$this->getResult()->setParsedLimit( $this->getModuleName(), $value );
} else {
$value = intval( $value );
- $this->validateLimit( $paramName, $value, $min, $paramSettings[self::PARAM_MAX], $paramSettings[self::PARAM_MAX2] );
+ $this->validateLimit(
+ $paramName,
+ $value,
+ $min,
+ $paramSettings[self::PARAM_MAX],
+ $paramSettings[self::PARAM_MAX2]
+ );
}
break;
case 'boolean':
return array();
}
- // This is a bit awkward, but we want to avoid calling canApiHighLimits() because it unstubs $wgUser
+ // This is a bit awkward, but we want to avoid calling canApiHighLimits()
+ // because it unstubs $wgUser
$valuesList = explode( '|', $value, self::LIMIT_SML2 + 1 );
- $sizeLimit = count( $valuesList ) > self::LIMIT_SML1 && $this->mMainModule->canApiHighLimits() ?
- self::LIMIT_SML2 : self::LIMIT_SML1;
+ $sizeLimit = count( $valuesList ) > self::LIMIT_SML1 && $this->mMainModule->canApiHighLimits()
+ ? self::LIMIT_SML2
+ : self::LIMIT_SML1;
if ( self::truncateArray( $valuesList, $sizeLimit ) ) {
- $this->setWarning( "Too many values supplied for parameter '$valueName': the limit is $sizeLimit" );
+ $this->setWarning( "Too many values supplied for parameter '$valueName': " .
+ "the limit is $sizeLimit" );
}
if ( !$allowMultiple && count( $valuesList ) != 1 ) {
return $value;
}
- $possibleValues = is_array( $allowedValues ) ? "of '" . implode( "', '", $allowedValues ) . "'" : '';
- $this->dieUsage( "Only one $possibleValues is allowed for parameter '$valueName'", "multival_$valueName" );
+ $possibleValues = is_array( $allowedValues )
+ ? "of '" . implode( "', '", $allowedValues ) . "'"
+ : '';
+ $this->dieUsage(
+ "Only one $possibleValues is allowed for parameter '$valueName'",
+ "multival_$valueName"
+ );
}
if ( is_array( $allowedValues ) ) {
$vals = implode( ", ", $unknown );
$this->setWarning( "Unrecognized value$s for parameter '$valueName': $vals" );
} else {
- $this->dieUsage( "Unrecognized value for parameter '$valueName': {$valuesList[0]}", "unknown_$valueName" );
+ $this->dieUsage(
+ "Unrecognized value for parameter '$valueName': {$valuesList[0]}",
+ "unknown_$valueName"
+ );
}
}
// Now throw them out
$value = $min;
}
- // Minimum is always validated, whereas maximum is checked only if not running in internal call mode
+ // Minimum is always validated, whereas maximum is checked only if not
+ // running in internal call mode
if ( $this->getMain()->isInternalMode() ) {
return;
}
if ( !is_null( $max ) && $value > $max ) {
if ( !is_null( $botMax ) && $this->getMain()->canApiHighLimits() ) {
if ( $value > $botMax ) {
- $msg = $this->encodeParamName( $paramName ) . " may not be over $botMax (set to $value) for bots or sysops";
+ $msg = $this->encodeParamName( $paramName ) .
+ " may not be over $botMax (set to $value) for bots or sysops";
$this->warnOrDie( $msg, $enforceLimits );
$value = $botMax;
}
function validateTimestamp( $value, $encParamName ) {
$unixTimestamp = wfTimestamp( TS_UNIX, $value );
if ( $unixTimestamp === false ) {
- $this->dieUsage( "Invalid value '$value' for timestamp parameter $encParamName", "badtimestamp_{$encParamName}" );
+ $this->dieUsage(
+ "Invalid value '$value' for timestamp parameter $encParamName",
+ "badtimestamp_{$encParamName}"
+ );
}
return wfTimestamp( TS_MW, $unixTimestamp );
private function validateUser( $value, $encParamName ) {
$title = Title::makeTitleSafe( NS_USER, $value );
if ( $title === null ) {
- $this->dieUsage( "Invalid value '$value' for user parameter $encParamName", "baduser_{$encParamName}" );
+ $this->dieUsage(
+ "Invalid value '$value' for user parameter $encParamName",
+ "baduser_{$encParamName}"
+ );
}
return $title->getText();
private function warnOrDie( $msg, $enforceLimits = false ) {
if ( $enforceLimits ) {
$this->dieUsage( $msg, 'integeroutofrange' );
- } else {
- $this->setWarning( $msg );
}
+
+ $this->setWarning( $msg );
}
/**
*/
public function dieUsage( $description, $errorCode, $httpRespCode = 0, $extradata = null ) {
Profiler::instance()->close();
- throw new UsageException( $description, $this->encodeParamName( $errorCode ), $httpRespCode, $extradata );
+ throw new UsageException(
+ $description,
+ $this->encodeParamName( $errorCode ),
+ $httpRespCode,
+ $extradata
+ );
}
/**
*
* @since 1.22
* @param Status $status Status object
- * @throws UsageException
+ * @throws MWException
*/
public function dieStatus( $status ) {
if ( $status->isGood() ) {
$this->dieUsage( $msg->inLanguage( 'en' )->useDatabase( false )->plain(), $code );
}
+ // @codingStandardsIgnoreStart Allow long lines. Cannot split these.
/**
* Array that maps message keys to error messages. $1 and friends are replaced.
*/
'unknownerror-nocode' => array( 'code' => 'unknownerror', 'info' => 'Unknown error' ),
// Messages from Title::getUserPermissionsErrors()
- 'ns-specialprotected' => array( 'code' => 'unsupportednamespace', 'info' => "Pages in the Special namespace can't be edited" ),
- 'protectedinterface' => array( 'code' => 'protectednamespace-interface', 'info' => "You're not allowed to edit interface messages" ),
- 'namespaceprotected' => array( 'code' => 'protectednamespace', 'info' => "You're not allowed to edit pages in the \"\$1\" namespace" ),
- 'customcssprotected' => array( 'code' => 'customcssprotected', 'info' => "You're not allowed to edit custom CSS pages" ),
- 'customjsprotected' => array( 'code' => 'customjsprotected', 'info' => "You're not allowed to edit custom JavaScript pages" ),
- 'cascadeprotected' => array( 'code' => 'cascadeprotected', 'info' => "The page you're trying to edit is protected because it's included in a cascade-protected page" ),
- 'protectedpagetext' => array( 'code' => 'protectedpage', 'info' => "The \"\$1\" right is required to edit this page" ),
- 'protect-cantedit' => array( 'code' => 'cantedit', 'info' => "You can't protect this page because you can't edit it" ),
- 'badaccess-group0' => array( 'code' => 'permissiondenied', 'info' => "Permission denied" ), // Generic permission denied message
- 'badaccess-groups' => array( 'code' => 'permissiondenied', 'info' => "Permission denied" ),
- 'titleprotected' => array( 'code' => 'protectedtitle', 'info' => "This title has been protected from creation" ),
- 'nocreate-loggedin' => array( 'code' => 'cantcreate', 'info' => "You don't have permission to create new pages" ),
- 'nocreatetext' => array( 'code' => 'cantcreate-anon', 'info' => "Anonymous users can't create new pages" ),
- 'movenologintext' => array( 'code' => 'cantmove-anon', 'info' => "Anonymous users can't move pages" ),
- 'movenotallowed' => array( 'code' => 'cantmove', 'info' => "You don't have permission to move pages" ),
- 'confirmedittext' => array( 'code' => 'confirmemail', 'info' => "You must confirm your email address before you can edit" ),
- 'blockedtext' => array( 'code' => 'blocked', 'info' => "You have been blocked from editing" ),
- 'autoblockedtext' => array( 'code' => 'autoblocked', 'info' => "Your IP address has been blocked automatically, because it was used by a blocked user" ),
+ 'ns-specialprotected' => array(
+ 'code' => 'unsupportednamespace',
+ 'info' => "Pages in the Special namespace can't be edited"
+ ),
+ 'protectedinterface' => array(
+ 'code' => 'protectednamespace-interface',
+ 'info' => "You're not allowed to edit interface messages"
+ ),
+ 'namespaceprotected' => array(
+ 'code' => 'protectednamespace',
+ 'info' => "You're not allowed to edit pages in the \"\$1\" namespace"
+ ),
+ 'customcssprotected' => array(
+ 'code' => 'customcssprotected',
+ 'info' => "You're not allowed to edit custom CSS pages"
+ ),
+ 'customjsprotected' => array(
+ 'code' => 'customjsprotected',
+ 'info' => "You're not allowed to edit custom JavaScript pages"
+ ),
+ 'cascadeprotected' => array(
+ 'code' => 'cascadeprotected',
+ 'info' => "The page you're trying to edit is protected because it's included in a cascade-protected page"
+ ),
+ 'protectedpagetext' => array(
+ 'code' => 'protectedpage',
+ 'info' => "The \"\$1\" right is required to edit this page"
+ ),
+ 'protect-cantedit' => array(
+ 'code' => 'cantedit',
+ 'info' => "You can't protect this page because you can't edit it"
+ ),
+ 'badaccess-group0' => array(
+ 'code' => 'permissiondenied',
+ 'info' => "Permission denied"
+ ), // Generic permission denied message
+ 'badaccess-groups' => array(
+ 'code' => 'permissiondenied',
+ 'info' => "Permission denied"
+ ),
+ 'titleprotected' => array(
+ 'code' => 'protectedtitle',
+ 'info' => "This title has been protected from creation"
+ ),
+ 'nocreate-loggedin' => array(
+ 'code' => 'cantcreate',
+ 'info' => "You don't have permission to create new pages"
+ ),
+ 'nocreatetext' => array(
+ 'code' => 'cantcreate-anon',
+ 'info' => "Anonymous users can't create new pages"
+ ),
+ 'movenologintext' => array(
+ 'code' => 'cantmove-anon',
+ 'info' => "Anonymous users can't move pages"
+ ),
+ 'movenotallowed' => array(
+ 'code' => 'cantmove',
+ 'info' => "You don't have permission to move pages"
+ ),
+ 'confirmedittext' => array(
+ 'code' => 'confirmemail',
+ 'info' => "You must confirm your email address before you can edit"
+ ),
+ 'blockedtext' => array(
+ 'code' => 'blocked',
+ 'info' => "You have been blocked from editing"
+ ),
+ 'autoblockedtext' => array(
+ 'code' => 'autoblocked',
+ 'info' => "Your IP address has been blocked automatically, because it was used by a blocked user"
+ ),
// Miscellaneous interface messages
- 'actionthrottledtext' => array( 'code' => 'ratelimited', 'info' => "You've exceeded your rate limit. Please wait some time and try again" ),
- 'alreadyrolled' => array( 'code' => 'alreadyrolled', 'info' => "The page you tried to rollback was already rolled back" ),
- 'cantrollback' => array( 'code' => 'onlyauthor', 'info' => "The page you tried to rollback only has one author" ),
- 'readonlytext' => array( 'code' => 'readonly', 'info' => "The wiki is currently in read-only mode" ),
- 'sessionfailure' => array( 'code' => 'badtoken', 'info' => "Invalid token" ),
- 'cannotdelete' => array( 'code' => 'cantdelete', 'info' => "Couldn't delete \"\$1\". Maybe it was deleted already by someone else" ),
- 'notanarticle' => array( 'code' => 'missingtitle', 'info' => "The page you requested doesn't exist" ),
- 'selfmove' => array( 'code' => 'selfmove', 'info' => "Can't move a page to itself" ),
- 'immobile_namespace' => array( 'code' => 'immobilenamespace', 'info' => "You tried to move pages from or to a namespace that is protected from moving" ),
- 'articleexists' => array( 'code' => 'articleexists', 'info' => "The destination article already exists and is not a redirect to the source article" ),
- 'protectedpage' => array( 'code' => 'protectedpage', 'info' => "You don't have permission to perform this move" ),
- 'hookaborted' => array( 'code' => 'hookaborted', 'info' => "The modification you tried to make was aborted by an extension hook" ),
- 'cantmove-titleprotected' => array( 'code' => 'protectedtitle', 'info' => "The destination article has been protected from creation" ),
- 'imagenocrossnamespace' => array( 'code' => 'nonfilenamespace', 'info' => "Can't move a file to a non-file namespace" ),
- 'imagetypemismatch' => array( 'code' => 'filetypemismatch', 'info' => "The new file extension doesn't match its type" ),
+ 'actionthrottledtext' => array(
+ 'code' => 'ratelimited',
+ 'info' => "You've exceeded your rate limit. Please wait some time and try again"
+ ),
+ 'alreadyrolled' => array(
+ 'code' => 'alreadyrolled',
+ 'info' => "The page you tried to rollback was already rolled back"
+ ),
+ 'cantrollback' => array(
+ 'code' => 'onlyauthor',
+ 'info' => "The page you tried to rollback only has one author"
+ ),
+ 'readonlytext' => array(
+ 'code' => 'readonly',
+ 'info' => "The wiki is currently in read-only mode"
+ ),
+ 'sessionfailure' => array(
+ 'code' => 'badtoken',
+ 'info' => "Invalid token" ),
+ 'cannotdelete' => array(
+ 'code' => 'cantdelete',
+ 'info' => "Couldn't delete \"\$1\". Maybe it was deleted already by someone else"
+ ),
+ 'notanarticle' => array(
+ 'code' => 'missingtitle',
+ 'info' => "The page you requested doesn't exist"
+ ),
+ 'selfmove' => array( 'code' => 'selfmove', 'info' => "Can't move a page to itself"
+ ),
+ 'immobile_namespace' => array(
+ 'code' => 'immobilenamespace',
+ 'info' => "You tried to move pages from or to a namespace that is protected from moving"
+ ),
+ 'articleexists' => array(
+ 'code' => 'articleexists',
+ 'info' => "The destination article already exists and is not a redirect to the source article"
+ ),
+ 'protectedpage' => array(
+ 'code' => 'protectedpage',
+ 'info' => "You don't have permission to perform this move"
+ ),
+ 'hookaborted' => array(
+ 'code' => 'hookaborted',
+ 'info' => "The modification you tried to make was aborted by an extension hook"
+ ),
+ 'cantmove-titleprotected' => array(
+ 'code' => 'protectedtitle',
+ 'info' => "The destination article has been protected from creation"
+ ),
+ 'imagenocrossnamespace' => array(
+ 'code' => 'nonfilenamespace',
+ 'info' => "Can't move a file to a non-file namespace"
+ ),
+ 'imagetypemismatch' => array(
+ 'code' => 'filetypemismatch',
+ 'info' => "The new file extension doesn't match its type"
+ ),
// 'badarticleerror' => shouldn't happen
// 'badtitletext' => shouldn't happen
'ip_range_invalid' => array( 'code' => 'invalidrange', 'info' => "Invalid IP range" ),
- 'range_block_disabled' => array( 'code' => 'rangedisabled', 'info' => "Blocking IP ranges has been disabled" ),
- 'nosuchusershort' => array( 'code' => 'nosuchuser', 'info' => "The user you specified doesn't exist" ),
+ 'range_block_disabled' => array(
+ 'code' => 'rangedisabled',
+ 'info' => "Blocking IP ranges has been disabled"
+ ),
+ 'nosuchusershort' => array(
+ 'code' => 'nosuchuser',
+ 'info' => "The user you specified doesn't exist"
+ ),
'badipaddress' => array( 'code' => 'invalidip', 'info' => "Invalid IP address specified" ),
'ipb_expiry_invalid' => array( 'code' => 'invalidexpiry', 'info' => "Invalid expiry time" ),
- 'ipb_already_blocked' => array( 'code' => 'alreadyblocked', 'info' => "The user you tried to block was already blocked" ),
- 'ipb_blocked_as_range' => array( 'code' => 'blockedasrange', 'info' => "IP address \"\$1\" was blocked as part of range \"\$2\". You can't unblock the IP individually, but you can unblock the range as a whole." ),
- 'ipb_cant_unblock' => array( 'code' => 'cantunblock', 'info' => "The block you specified was not found. It may have been unblocked already" ),
- 'mailnologin' => array( 'code' => 'cantsend', 'info' => "You are not logged in, you do not have a confirmed email address, or you are not allowed to send email to other users, so you cannot send email" ),
- 'ipbblocked' => array( 'code' => 'ipbblocked', 'info' => 'You cannot block or unblock users while you are yourself blocked' ),
- 'ipbnounblockself' => array( 'code' => 'ipbnounblockself', 'info' => 'You are not allowed to unblock yourself' ),
- 'usermaildisabled' => array( 'code' => 'usermaildisabled', 'info' => "User email has been disabled" ),
- 'blockedemailuser' => array( 'code' => 'blockedfrommail', 'info' => "You have been blocked from sending email" ),
- 'notarget' => array( 'code' => 'notarget', 'info' => "You have not specified a valid target for this action" ),
- 'noemail' => array( 'code' => 'noemail', 'info' => "The user has not specified a valid email address, or has chosen not to receive email from other users" ),
- 'rcpatroldisabled' => array( 'code' => 'patroldisabled', 'info' => "Patrolling is disabled on this wiki" ),
- 'markedaspatrollederror-noautopatrol' => array( 'code' => 'noautopatrol', 'info' => "You don't have permission to patrol your own changes" ),
- 'delete-toobig' => array( 'code' => 'bigdelete', 'info' => "You can't delete this page because it has more than \$1 revisions" ),
- 'movenotallowedfile' => array( 'code' => 'cantmovefile', 'info' => "You don't have permission to move files" ),
- 'userrights-no-interwiki' => array( 'code' => 'nointerwikiuserrights', 'info' => "You don't have permission to change user rights on other wikis" ),
- 'userrights-nodatabase' => array( 'code' => 'nosuchdatabase', 'info' => "Database \"\$1\" does not exist or is not local" ),
+ 'ipb_already_blocked' => array(
+ 'code' => 'alreadyblocked',
+ 'info' => "The user you tried to block was already blocked"
+ ),
+ 'ipb_blocked_as_range' => array(
+ 'code' => 'blockedasrange',
+ 'info' => "IP address \"\$1\" was blocked as part of range \"\$2\". You can't unblock the IP individually, but you can unblock the range as a whole."
+ ),
+ 'ipb_cant_unblock' => array(
+ 'code' => 'cantunblock',
+ 'info' => "The block you specified was not found. It may have been unblocked already"
+ ),
+ 'mailnologin' => array(
+ 'code' => 'cantsend',
+ 'info' => "You are not logged in, you do not have a confirmed email address, or you are not allowed to send email to other users, so you cannot send email"
+ ),
+ 'ipbblocked' => array(
+ 'code' => 'ipbblocked',
+ 'info' => 'You cannot block or unblock users while you are yourself blocked'
+ ),
+ 'ipbnounblockself' => array(
+ 'code' => 'ipbnounblockself',
+ 'info' => 'You are not allowed to unblock yourself'
+ ),
+ 'usermaildisabled' => array(
+ 'code' => 'usermaildisabled',
+ 'info' => "User email has been disabled"
+ ),
+ 'blockedemailuser' => array(
+ 'code' => 'blockedfrommail',
+ 'info' => "You have been blocked from sending email"
+ ),
+ 'notarget' => array(
+ 'code' => 'notarget',
+ 'info' => "You have not specified a valid target for this action"
+ ),
+ 'noemail' => array(
+ 'code' => 'noemail',
+ 'info' => "The user has not specified a valid email address, or has chosen not to receive email from other users"
+ ),
+ 'rcpatroldisabled' => array(
+ 'code' => 'patroldisabled',
+ 'info' => "Patrolling is disabled on this wiki"
+ ),
+ 'markedaspatrollederror-noautopatrol' => array(
+ 'code' => 'noautopatrol',
+ 'info' => "You don't have permission to patrol your own changes"
+ ),
+ 'delete-toobig' => array(
+ 'code' => 'bigdelete',
+ 'info' => "You can't delete this page because it has more than \$1 revisions"
+ ),
+ 'movenotallowedfile' => array(
+ 'code' => 'cantmovefile',
+ 'info' => "You don't have permission to move files"
+ ),
+ 'userrights-no-interwiki' => array(
+ 'code' => 'nointerwikiuserrights',
+ 'info' => "You don't have permission to change user rights on other wikis"
+ ),
+ 'userrights-nodatabase' => array(
+ 'code' => 'nosuchdatabase',
+ 'info' => "Database \"\$1\" does not exist or is not local"
+ ),
'nouserspecified' => array( 'code' => 'invaliduser', 'info' => "Invalid username \"\$1\"" ),
'noname' => array( 'code' => 'invaliduser', 'info' => "Invalid username \"\$1\"" ),
'summaryrequired' => array( 'code' => 'summaryrequired', 'info' => 'Summary required' ),
- 'import-rootpage-invalid' => array( 'code' => 'import-rootpage-invalid', 'info' => 'Root page is an invalid title' ),
- 'import-rootpage-nosubpage' => array( 'code' => 'import-rootpage-nosubpage', 'info' => 'Namespace "$1" of the root page does not allow subpages' ),
+ 'import-rootpage-invalid' => array(
+ 'code' => 'import-rootpage-invalid',
+ 'info' => 'Root page is an invalid title'
+ ),
+ 'import-rootpage-nosubpage' => array(
+ 'code' => 'import-rootpage-nosubpage',
+ 'info' => 'Namespace "$1" of the root page does not allow subpages'
+ ),
// API-specific messages
- 'readrequired' => array( 'code' => 'readapidenied', 'info' => "You need read permission to use this module" ),
- 'writedisabled' => array( 'code' => 'noapiwrite', 'info' => "Editing of this wiki through the API is disabled. Make sure the \$wgEnableWriteAPI=true; statement is included in the wiki's LocalSettings.php file" ),
- 'writerequired' => array( 'code' => 'writeapidenied', 'info' => "You're not allowed to edit this wiki through the API" ),
+ 'readrequired' => array(
+ 'code' => 'readapidenied',
+ 'info' => "You need read permission to use this module"
+ ),
+ 'writedisabled' => array(
+ 'code' => 'noapiwrite',
+ 'info' => "Editing of this wiki through the API is disabled. Make sure the \$wgEnableWriteAPI=true; statement is included in the wiki's LocalSettings.php file"
+ ),
+ 'writerequired' => array(
+ 'code' => 'writeapidenied',
+ 'info' => "You're not allowed to edit this wiki through the API"
+ ),
'missingparam' => array( 'code' => 'no$1', 'info' => "The \$1 parameter must be set" ),
'invalidtitle' => array( 'code' => 'invalidtitle', 'info' => "Bad title \"\$1\"" ),
'nosuchpageid' => array( 'code' => 'nosuchpageid', 'info' => "There is no page with ID \$1" ),
'invaliduser' => array( 'code' => 'invaliduser', 'info' => "Invalid username \"\$1\"" ),
'invalidexpiry' => array( 'code' => 'invalidexpiry', 'info' => "Invalid expiry time \"\$1\"" ),
'pastexpiry' => array( 'code' => 'pastexpiry', 'info' => "Expiry time \"\$1\" is in the past" ),
- 'create-titleexists' => array( 'code' => 'create-titleexists', 'info' => "Existing titles can't be protected with 'create'" ),
- 'missingtitle-createonly' => array( 'code' => 'missingtitle-createonly', 'info' => "Missing titles can only be protected with 'create'" ),
- 'cantblock' => array( 'code' => 'cantblock', 'info' => "You don't have permission to block users" ),
- 'canthide' => array( 'code' => 'canthide', 'info' => "You don't have permission to hide user names from the block log" ),
- 'cantblock-email' => array( 'code' => 'cantblock-email', 'info' => "You don't have permission to block users from sending email through the wiki" ),
- 'unblock-notarget' => array( 'code' => 'notarget', 'info' => "Either the id or the user parameter must be set" ),
- 'unblock-idanduser' => array( 'code' => 'idanduser', 'info' => "The id and user parameters can't be used together" ),
- 'cantunblock' => array( 'code' => 'permissiondenied', 'info' => "You don't have permission to unblock users" ),
- 'cannotundelete' => array( 'code' => 'cantundelete', 'info' => "Couldn't undelete: the requested revisions may not exist, or may have been undeleted already" ),
- 'permdenied-undelete' => array( 'code' => 'permissiondenied', 'info' => "You don't have permission to restore deleted revisions" ),
- 'createonly-exists' => array( 'code' => 'articleexists', 'info' => "The article you tried to create has been created already" ),
- 'nocreate-missing' => array( 'code' => 'missingtitle', 'info' => "The article you tried to edit doesn't exist" ),
- 'nosuchrcid' => array( 'code' => 'nosuchrcid', 'info' => "There is no change with rcid \"\$1\"" ),
- 'protect-invalidaction' => array( 'code' => 'protect-invalidaction', 'info' => "Invalid protection type \"\$1\"" ),
- 'protect-invalidlevel' => array( 'code' => 'protect-invalidlevel', 'info' => "Invalid protection level \"\$1\"" ),
- 'toofewexpiries' => array( 'code' => 'toofewexpiries', 'info' => "\$1 expiry timestamps were provided where \$2 were needed" ),
- 'cantimport' => array( 'code' => 'cantimport', 'info' => "You don't have permission to import pages" ),
- 'cantimport-upload' => array( 'code' => 'cantimport-upload', 'info' => "You don't have permission to import uploaded pages" ),
+ 'create-titleexists' => array(
+ 'code' => 'create-titleexists',
+ 'info' => "Existing titles can't be protected with 'create'"
+ ),
+ 'missingtitle-createonly' => array(
+ 'code' => 'missingtitle-createonly',
+ 'info' => "Missing titles can only be protected with 'create'"
+ ),
+ 'cantblock' => array( 'code' => 'cantblock',
+ 'info' => "You don't have permission to block users"
+ ),
+ 'canthide' => array(
+ 'code' => 'canthide',
+ 'info' => "You don't have permission to hide user names from the block log"
+ ),
+ 'cantblock-email' => array(
+ 'code' => 'cantblock-email',
+ 'info' => "You don't have permission to block users from sending email through the wiki"
+ ),
+ 'unblock-notarget' => array(
+ 'code' => 'notarget',
+ 'info' => "Either the id or the user parameter must be set"
+ ),
+ 'unblock-idanduser' => array(
+ 'code' => 'idanduser',
+ 'info' => "The id and user parameters can't be used together"
+ ),
+ 'cantunblock' => array(
+ 'code' => 'permissiondenied',
+ 'info' => "You don't have permission to unblock users"
+ ),
+ 'cannotundelete' => array(
+ 'code' => 'cantundelete',
+ 'info' => "Couldn't undelete: the requested revisions may not exist, or may have been undeleted already"
+ ),
+ 'permdenied-undelete' => array(
+ 'code' => 'permissiondenied',
+ 'info' => "You don't have permission to restore deleted revisions"
+ ),
+ 'createonly-exists' => array(
+ 'code' => 'articleexists',
+ 'info' => "The article you tried to create has been created already"
+ ),
+ 'nocreate-missing' => array(
+ 'code' => 'missingtitle',
+ 'info' => "The article you tried to edit doesn't exist"
+ ),
+ 'nosuchrcid' => array(
+ 'code' => 'nosuchrcid',
+ 'info' => "There is no change with rcid \"\$1\""
+ ),
+ 'protect-invalidaction' => array(
+ 'code' => 'protect-invalidaction',
+ 'info' => "Invalid protection type \"\$1\""
+ ),
+ 'protect-invalidlevel' => array(
+ 'code' => 'protect-invalidlevel',
+ 'info' => "Invalid protection level \"\$1\""
+ ),
+ 'toofewexpiries' => array(
+ 'code' => 'toofewexpiries',
+ 'info' => "\$1 expiry timestamps were provided where \$2 were needed"
+ ),
+ 'cantimport' => array(
+ 'code' => 'cantimport',
+ 'info' => "You don't have permission to import pages"
+ ),
+ 'cantimport-upload' => array(
+ 'code' => 'cantimport-upload',
+ 'info' => "You don't have permission to import uploaded pages"
+ ),
'importnofile' => array( 'code' => 'nofile', 'info' => "You didn't upload a file" ),
- 'importuploaderrorsize' => array( 'code' => 'filetoobig', 'info' => 'The file you uploaded is bigger than the maximum upload size' ),
- 'importuploaderrorpartial' => array( 'code' => 'partialupload', 'info' => 'The file was only partially uploaded' ),
- 'importuploaderrortemp' => array( 'code' => 'notempdir', 'info' => 'The temporary upload directory is missing' ),
- 'importcantopen' => array( 'code' => 'cantopenfile', 'info' => "Couldn't open the uploaded file" ),
- 'import-noarticle' => array( 'code' => 'badinterwiki', 'info' => 'Invalid interwiki title specified' ),
- 'importbadinterwiki' => array( 'code' => 'badinterwiki', 'info' => 'Invalid interwiki title specified' ),
- 'import-unknownerror' => array( 'code' => 'import-unknownerror', 'info' => "Unknown error on import: \"\$1\"" ),
- 'cantoverwrite-sharedfile' => array( 'code' => 'cantoverwrite-sharedfile', 'info' => 'The target file exists on a shared repository and you do not have permission to override it' ),
- 'sharedfile-exists' => array( 'code' => 'fileexists-sharedrepo-perm', 'info' => 'The target file exists on a shared repository. Use the ignorewarnings parameter to override it.' ),
- 'mustbeposted' => array( 'code' => 'mustbeposted', 'info' => "The \$1 module requires a POST request" ),
- 'show' => array( 'code' => 'show', 'info' => 'Incorrect parameter - mutually exclusive values may not be supplied' ),
- 'specialpage-cantexecute' => array( 'code' => 'specialpage-cantexecute', 'info' => "You don't have permission to view the results of this special page" ),
- 'invalidoldimage' => array( 'code' => 'invalidoldimage', 'info' => 'The oldimage parameter has invalid format' ),
- 'nodeleteablefile' => array( 'code' => 'nodeleteablefile', 'info' => 'No such old version of the file' ),
- 'fileexists-forbidden' => array( 'code' => 'fileexists-forbidden', 'info' => 'A file with name "$1" already exists, and cannot be overwritten.' ),
- 'fileexists-shared-forbidden' => array( 'code' => 'fileexists-shared-forbidden', 'info' => 'A file with name "$1" already exists in the shared file repository, and cannot be overwritten.' ),
- 'filerevert-badversion' => array( 'code' => 'filerevert-badversion', 'info' => 'There is no previous local version of this file with the provided timestamp.' ),
+ 'importuploaderrorsize' => array(
+ 'code' => 'filetoobig',
+ 'info' => 'The file you uploaded is bigger than the maximum upload size'
+ ),
+ 'importuploaderrorpartial' => array(
+ 'code' => 'partialupload',
+ 'info' => 'The file was only partially uploaded'
+ ),
+ 'importuploaderrortemp' => array(
+ 'code' => 'notempdir',
+ 'info' => 'The temporary upload directory is missing'
+ ),
+ 'importcantopen' => array(
+ 'code' => 'cantopenfile',
+ 'info' => "Couldn't open the uploaded file"
+ ),
+ 'import-noarticle' => array(
+ 'code' => 'badinterwiki',
+ 'info' => 'Invalid interwiki title specified'
+ ),
+ 'importbadinterwiki' => array(
+ 'code' => 'badinterwiki',
+ 'info' => 'Invalid interwiki title specified'
+ ),
+ 'import-unknownerror' => array(
+ 'code' => 'import-unknownerror',
+ 'info' => "Unknown error on import: \"\$1\""
+ ),
+ 'cantoverwrite-sharedfile' => array(
+ 'code' => 'cantoverwrite-sharedfile',
+ 'info' => 'The target file exists on a shared repository and you do not have permission to override it'
+ ),
+ 'sharedfile-exists' => array(
+ 'code' => 'fileexists-sharedrepo-perm',
+ 'info' => 'The target file exists on a shared repository. Use the ignorewarnings parameter to override it.'
+ ),
+ 'mustbeposted' => array(
+ 'code' => 'mustbeposted',
+ 'info' => "The \$1 module requires a POST request"
+ ),
+ 'show' => array(
+ 'code' => 'show',
+ 'info' => 'Incorrect parameter - mutually exclusive values may not be supplied'
+ ),
+ 'specialpage-cantexecute' => array(
+ 'code' => 'specialpage-cantexecute',
+ 'info' => "You don't have permission to view the results of this special page"
+ ),
+ 'invalidoldimage' => array(
+ 'code' => 'invalidoldimage',
+ 'info' => 'The oldimage parameter has invalid format'
+ ),
+ 'nodeleteablefile' => array(
+ 'code' => 'nodeleteablefile',
+ 'info' => 'No such old version of the file'
+ ),
+ 'fileexists-forbidden' => array(
+ 'code' => 'fileexists-forbidden',
+ 'info' => 'A file with name "$1" already exists, and cannot be overwritten.'
+ ),
+ 'fileexists-shared-forbidden' => array(
+ 'code' => 'fileexists-shared-forbidden',
+ 'info' => 'A file with name "$1" already exists in the shared file repository, and cannot be overwritten.'
+ ),
+ 'filerevert-badversion' => array(
+ 'code' => 'filerevert-badversion',
+ 'info' => 'There is no previous local version of this file with the provided timestamp.'
+ ),
// ApiEditPage messages
- 'noimageredirect-anon' => array( 'code' => 'noimageredirect-anon', 'info' => "Anonymous users can't create image redirects" ),
- 'noimageredirect-logged' => array( 'code' => 'noimageredirect', 'info' => "You don't have permission to create image redirects" ),
- 'spamdetected' => array( 'code' => 'spamdetected', 'info' => "Your edit was refused because it contained a spam fragment: \"\$1\"" ),
- 'contenttoobig' => array( 'code' => 'contenttoobig', 'info' => "The content you supplied exceeds the article size limit of \$1 kilobytes" ),
+ 'noimageredirect-anon' => array(
+ 'code' => 'noimageredirect-anon',
+ 'info' => "Anonymous users can't create image redirects"
+ ),
+ 'noimageredirect-logged' => array(
+ 'code' => 'noimageredirect',
+ 'info' => "You don't have permission to create image redirects"
+ ),
+ 'spamdetected' => array(
+ 'code' => 'spamdetected',
+ 'info' => "Your edit was refused because it contained a spam fragment: \"\$1\""
+ ),
+ 'contenttoobig' => array(
+ 'code' => 'contenttoobig',
+ 'info' => "The content you supplied exceeds the article size limit of \$1 kilobytes"
+ ),
'noedit-anon' => array( 'code' => 'noedit-anon', 'info' => "Anonymous users can't edit pages" ),
'noedit' => array( 'code' => 'noedit', 'info' => "You don't have permission to edit pages" ),
- 'wasdeleted' => array( 'code' => 'pagedeleted', 'info' => "The page has been deleted since you fetched its timestamp" ),
- 'blankpage' => array( 'code' => 'emptypage', 'info' => "Creating new, empty pages is not allowed" ),
+ 'wasdeleted' => array(
+ 'code' => 'pagedeleted',
+ 'info' => "The page has been deleted since you fetched its timestamp"
+ ),
+ 'blankpage' => array(
+ 'code' => 'emptypage',
+ 'info' => "Creating new, empty pages is not allowed"
+ ),
'editconflict' => array( 'code' => 'editconflict', 'info' => "Edit conflict detected" ),
'hashcheckfailed' => array( 'code' => 'badmd5', 'info' => "The supplied MD5 hash was incorrect" ),
- 'missingtext' => array( 'code' => 'notext', 'info' => "One of the text, appendtext, prependtext and undo parameters must be set" ),
- 'emptynewsection' => array( 'code' => 'emptynewsection', 'info' => 'Creating empty new sections is not possible.' ),
- 'revwrongpage' => array( 'code' => 'revwrongpage', 'info' => "r\$1 is not a revision of \"\$2\"" ),
- 'undo-failure' => array( 'code' => 'undofailure', 'info' => 'Undo failed due to conflicting intermediate edits' ),
+ 'missingtext' => array(
+ 'code' => 'notext',
+ 'info' => "One of the text, appendtext, prependtext and undo parameters must be set"
+ ),
+ 'emptynewsection' => array(
+ 'code' => 'emptynewsection',
+ 'info' => 'Creating empty new sections is not possible.'
+ ),
+ 'revwrongpage' => array(
+ 'code' => 'revwrongpage',
+ 'info' => "r\$1 is not a revision of \"\$2\""
+ ),
+ 'undo-failure' => array(
+ 'code' => 'undofailure',
+ 'info' => 'Undo failed due to conflicting intermediate edits'
+ ),
// Messages from WikiPage::doEit()
- 'edit-hook-aborted' => array( 'code' => 'edit-hook-aborted', 'info' => "Your edit was aborted by an ArticleSave hook" ),
- 'edit-gone-missing' => array( 'code' => 'edit-gone-missing', 'info' => "The page you tried to edit doesn't seem to exist anymore" ),
+ 'edit-hook-aborted' => array(
+ 'code' => 'edit-hook-aborted',
+ 'info' => "Your edit was aborted by an ArticleSave hook"
+ ),
+ 'edit-gone-missing' => array(
+ 'code' => 'edit-gone-missing',
+ 'info' => "The page you tried to edit doesn't seem to exist anymore"
+ ),
'edit-conflict' => array( 'code' => 'editconflict', 'info' => "Edit conflict detected" ),
- 'edit-already-exists' => array( 'code' => 'edit-already-exists', 'info' => "It seems the page you tried to create already exist" ),
+ 'edit-already-exists' => array(
+ 'code' => 'edit-already-exists',
+ 'info' => 'It seems the page you tried to create already exist'
+ ),
// uploadMsgs
'invalid-file-key' => array( 'code' => 'invalid-file-key', 'info' => 'Not a valid file key' ),
'nouploadmodule' => array( 'code' => 'nouploadmodule', 'info' => 'No upload module set' ),
- 'uploaddisabled' => array( 'code' => 'uploaddisabled', 'info' => 'Uploads are not enabled. Make sure $wgEnableUploads is set to true in LocalSettings.php and the PHP ini setting file_uploads is true' ),
- 'copyuploaddisabled' => array( 'code' => 'copyuploaddisabled', 'info' => 'Uploads by URL is not enabled. Make sure $wgAllowCopyUploads is set to true in LocalSettings.php.' ),
- 'copyuploadbaddomain' => array( 'code' => 'copyuploadbaddomain', 'info' => 'Uploads by URL are not allowed from this domain.' ),
- 'copyuploadbadurl' => array( 'code' => 'copyuploadbadurl', 'info' => 'Upload not allowed from this URL.' ),
-
- 'filename-tooshort' => array( 'code' => 'filename-tooshort', 'info' => 'The filename is too short' ),
+ 'uploaddisabled' => array(
+ 'code' => 'uploaddisabled',
+ 'info' => 'Uploads are not enabled. Make sure $wgEnableUploads is set to true in LocalSettings.php and the PHP ini setting file_uploads is true'
+ ),
+ 'copyuploaddisabled' => array(
+ 'code' => 'copyuploaddisabled',
+ 'info' => 'Uploads by URL is not enabled. Make sure $wgAllowCopyUploads is set to true in LocalSettings.php.'
+ ),
+ 'copyuploadbaddomain' => array(
+ 'code' => 'copyuploadbaddomain',
+ 'info' => 'Uploads by URL are not allowed from this domain.'
+ ),
+ 'copyuploadbadurl' => array(
+ 'code' => 'copyuploadbadurl',
+ 'info' => 'Upload not allowed from this URL.'
+ ),
+
+ 'filename-tooshort' => array(
+ 'code' => 'filename-tooshort',
+ 'info' => 'The filename is too short'
+ ),
'filename-toolong' => array( 'code' => 'filename-toolong', 'info' => 'The filename is too long' ),
- 'illegal-filename' => array( 'code' => 'illegal-filename', 'info' => 'The filename is not allowed' ),
- 'filetype-missing' => array( 'code' => 'filetype-missing', 'info' => 'The file is missing an extension' ),
+ 'illegal-filename' => array(
+ 'code' => 'illegal-filename',
+ 'info' => 'The filename is not allowed'
+ ),
+ 'filetype-missing' => array(
+ 'code' => 'filetype-missing',
+ 'info' => 'The file is missing an extension'
+ ),
'mustbeloggedin' => array( 'code' => 'mustbeloggedin', 'info' => 'You must be logged in to $1.' )
);
+ // @codingStandardsIgnoreEnd
/**
* Helper function for readonly errors
global $wgDebugAPI;
if ( $wgDebugAPI !== true ) {
$this->dieUsageMsg( $error );
- } else {
- if ( is_string( $error ) ) {
- $error = array( $error );
- }
- $parsed = $this->parseMsg( $error );
- $this->setWarning( '$wgDebugAPI: ' . $parsed['code']
- . ' - ' . $parsed['info'] );
}
+
+ if ( is_string( $error ) ) {
+ $error = array( $error );
+ }
+
+ $parsed = $this->parseMsg( $error );
+ $this->setWarning( '$wgDebugAPI: ' . $parsed['code'] . ' - ' . $parsed['info'] );
}
/**
- * Die with the $prefix.'badcontinue' error. This call is common enough to make it into the base method.
+ * Die with the $prefix.'badcontinue' error. This call is common enough to
+ * make it into the base method.
* @param $condition boolean will only die if this value is true
* @since 1.21
*/
* Internal code errors should be reported with this method
* @param string $method Method or function name
* @param string $message Error message
+ * @throws MWException
*/
protected static function dieDebug( $method, $message ) {
throw new MWException( "Internal error in $method: $message" );
}
$token = $user->getOption( 'watchlisttoken' );
if ( $token == '' || $token != $params['token'] ) {
- $this->dieUsage( 'Incorrect watchlist token provided -- please set a correct token in Special:Preferences', 'bad_wltoken' );
+ $this->dieUsage(
+ 'Incorrect watchlist token provided -- please set a correct token in Special:Preferences',
+ 'bad_wltoken'
+ );
}
} else {
if ( !$this->getUser()->isLoggedIn() ) {
}
/**
- * @return bool|string|array Returns a false if the module has no help url, else returns a (array of) string
+ * @return bool|string|array Returns a false if the module has no help URL,
+ * else returns a (array of) string
*/
public function getHelpUrls() {
return false;
* Don't call this function directly: use getFinalPossibleErrors() to allow
* hooks to modify parameters as needed.
*
- * @return array in the format of array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
+ * @return array in the format of array( key, param1, param2, ... )
+ * or array( 'code' => ..., 'info' => ... )
*/
public function getPossibleErrors() {
$ret = array();
$params = $this->getFinalParams();
if ( $params ) {
foreach ( $params as $paramName => $paramSettings ) {
- if ( isset( $paramSettings[ApiBase::PARAM_REQUIRED] ) && $paramSettings[ApiBase::PARAM_REQUIRED] ) {
+ if ( isset( $paramSettings[ApiBase::PARAM_REQUIRED] )
+ && $paramSettings[ApiBase::PARAM_REQUIRED]
+ ) {
$ret[] = array( 'missingparam', $paramName );
}
}
if ( array_key_exists( 'continue', $params ) ) {
$ret[] = array(
'code' => 'badcontinue',
- 'info' => 'Invalid continue param. You should pass the original value returned by the previous query'
+ 'info' => 'Invalid continue param. You should pass the ' .
+ 'original value returned by the previous query'
);
}
}
/**
* Parses a list of errors into a standardised format
- * @param array $errors List of errors. Items can be in the for array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
+ * @param array $errors List of errors. Items can be in the for
+ * array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
* @return array Parsed list of errors with items in the form array( 'code' => ..., 'info' => ... )
*/
public function parseErrors( $errors ) {
*/
public function profileIn() {
if ( $this->mTimeIn !== 0 ) {
- ApiBase::dieDebug( __METHOD__, 'called twice without calling profileOut()' );
+ ApiBase::dieDebug( __METHOD__, 'Called twice without calling profileOut()' );
}
$this->mTimeIn = microtime( true );
wfProfileIn( $this->getModuleProfileName() );
*/
public function profileOut() {
if ( $this->mTimeIn === 0 ) {
- ApiBase::dieDebug( __METHOD__, 'called without calling profileIn() first' );
+ ApiBase::dieDebug( __METHOD__, 'Called without calling profileIn() first' );
}
if ( $this->mDBTimeIn !== 0 ) {
- ApiBase::dieDebug( __METHOD__, 'must be called after database profiling is done with profileDBOut()' );
+ ApiBase::dieDebug(
+ __METHOD__,
+ 'Must be called after database profiling is done with profileDBOut()'
+ );
}
$this->mModuleTime += microtime( true ) - $this->mTimeIn;
*/
public function getProfileTime() {
if ( $this->mTimeIn !== 0 ) {
- ApiBase::dieDebug( __METHOD__, 'called without calling profileOut() first' );
+ ApiBase::dieDebug( __METHOD__, 'Called without calling profileOut() first' );
}
return $this->mModuleTime;
*/
public function profileDBIn() {
if ( $this->mTimeIn === 0 ) {
- ApiBase::dieDebug( __METHOD__, 'must be called while profiling the entire module with profileIn()' );
+ ApiBase::dieDebug(
+ __METHOD__,
+ 'Must be called while profiling the entire module with profileIn()'
+ );
}
if ( $this->mDBTimeIn !== 0 ) {
- ApiBase::dieDebug( __METHOD__, 'called twice without calling profileDBOut()' );
+ ApiBase::dieDebug( __METHOD__, 'Called twice without calling profileDBOut()' );
}
$this->mDBTimeIn = microtime( true );
wfProfileIn( $this->getModuleProfileName( true ) );
*/
public function profileDBOut() {
if ( $this->mTimeIn === 0 ) {
- ApiBase::dieDebug( __METHOD__, 'must be called while profiling the entire module with profileIn()' );
+ ApiBase::dieDebug( __METHOD__, 'Must be called while profiling ' .
+ 'the entire module with profileIn()' );
}
if ( $this->mDBTimeIn === 0 ) {
- ApiBase::dieDebug( __METHOD__, 'called without calling profileDBIn() first' );
+ ApiBase::dieDebug( __METHOD__, 'Called without calling profileDBIn() first' );
}
$time = microtime( true ) - $this->mDBTimeIn;
*/
public function getProfileDBTime() {
if ( $this->mDBTimeIn !== 0 ) {
- ApiBase::dieDebug( __METHOD__, 'called without calling profileDBOut() first' );
+ ApiBase::dieDebug( __METHOD__, 'Called without calling profileDBOut() first' );
}
return $this->mDBTime;
}
$target = User::newFromName( $params['user'] );
- // Bug 38633 - if the target is a user (not an IP address), but it doesn't exist or is unusable, error.
- if ( $target instanceof User && ( $target->isAnon() /* doesn't exist */ || !User::isUsableName( $target->getName() ) ) ) {
+ // Bug 38633 - if the target is a user (not an IP address), but it
+ // doesn't exist or is unusable, error.
+ if ( $target instanceof User &&
+ ( $target->isAnon() /* doesn't exist */ || !User::isUsableName( $target->getName() ) )
+ ) {
$this->dieUsageMsg( array( 'nosuchuser', $params['user'] ) );
}
return array(
'user' => 'Username, IP address or IP range you want to block',
'token' => 'A block token previously obtained through prop=info',
- 'expiry' => 'Relative expiry time, e.g. \'5 months\' or \'2 weeks\'. If set to \'infinite\', \'indefinite\' or \'never\', the block will never expire.',
+ 'expiry' => 'Relative expiry time, e.g. \'5 months\' or \'2 weeks\'. ' .
+ 'If set to \'infinite\', \'indefinite\' or \'never\', the block will never expire.',
'reason' => 'Reason for block',
'anononly' => 'Block anonymous users only (i.e. disable anonymous edits for this IP)',
'nocreate' => 'Prevent account creation',
- 'autoblock' => 'Automatically block the last used IP address, and any subsequent IP addresses they try to login from',
- 'noemail' => 'Prevent user from sending email through the wiki. (Requires the "blockemail" right.)',
+ 'autoblock' => 'Automatically block the last used IP address, and ' .
+ 'any subsequent IP addresses they try to login from',
+ 'noemail'
+ => 'Prevent user from sending email through the wiki. (Requires the "blockemail" right.)',
'hidename' => 'Hide the username from the block log. (Requires the "hideuser" right.)',
- 'allowusertalk' => 'Allow the user to edit their own talk page (depends on $wgBlockAllowsUTEdit)',
+ 'allowusertalk'
+ => 'Allow the user to edit their own talk page (depends on $wgBlockAllowsUTEdit)',
'reblock' => 'If the user is already blocked, overwrite the existing block',
'watchuser' => 'Watch the user/IP\'s user and talk pages',
);
$difftext = $de->getDiffBody();
if ( $difftext === false ) {
- $this->dieUsage( 'The diff cannot be retrieved. ' .
- 'Maybe one or both revisions do not exist or you do not have permission to view them.', 'baddiff' );
- } else {
- ApiResult::setContent( $vals, $difftext );
+ $this->dieUsage(
+ 'The diff cannot be retrieved. Maybe one or both revisions do ' .
+ 'not exist or you do not have permission to view them.',
+ 'baddiff'
+ );
}
+ ApiResult::setContent( $vals, $difftext );
+
$this->getResult()->addValue( null, $this->getModuleName(), $vals );
}
return $title->getLatestRevID();
}
- $this->dieUsage( 'inputneeded', 'A title, a page ID, or a revision number is needed for both the from and the to parameters' );
+ $this->dieUsage(
+ 'A title, a page ID, or a revision number is needed for both the from and the to parameters',
+ 'inputneeded'
+ );
}
public function getAllowedParams() {
array( 'code' => 'inputneeded', 'info' => 'A title or a revision is needed' ),
array( 'invalidtitle', 'title' ),
array( 'nosuchpageid', 'pageid' ),
- array( 'code' => 'baddiff', 'info' => 'The diff cannot be retrieved. Maybe one or both revisions do not exist or you do not have permission to view them.' ),
+ array(
+ 'code' => 'baddiff',
+ 'info' => 'The diff cannot be retrieved. Maybe one or both ' .
+ 'revisions do not exist or you do not have permission to view them.'
+ ),
) );
}
// Use userCan in order to hit GlobalBlock checks (according to Special:userlogin)
$loginTitle = SpecialPage::getTitleFor( 'Userlogin' );
if ( !$loginTitle->userCan( 'createaccount', $this->getUser() ) ) {
- $this->dieUsage( 'You do not have the right to create a new account', 'permdenied-createaccount' );
+ $this->dieUsage(
+ 'You do not have the right to create a new account',
+ 'permdenied-createaccount'
+ );
}
if ( $this->getUser()->isBlockedFromCreateAccount() ) {
$this->dieUsage( 'You cannot create a new account because you are blocked', 'blocked' );
if ( $params['mailpassword'] ) {
// If mailpassword was set, disable the password and send an email.
$user->setPassword( null );
- $status->merge( $loginForm->mailPasswordInternal( $user, false, 'createaccount-title', 'createaccount-text' ) );
+ $status->merge( $loginForm->mailPasswordInternal(
+ $user,
+ false,
+ 'createaccount-title',
+ 'createaccount-text'
+ ) );
} elseif ( $wgEmailAuthentication && Sanitizer::validateEmail( $user->getEmail() ) ) {
// Send out an email authentication message if needed
$status->merge( $user->sendConfirmationMail() );
'realname' => 'Real name of user (optional)',
'mailpassword' => 'If set to any value, a random password will be emailed to the user',
'reason' => 'Optional reason for creating the account to be put in the logs',
- 'language' => 'Language code to set as default for the user (optional, defaults to content language)'
+ 'language'
+ => 'Language code to set as default for the user (optional, defaults to content language)'
);
}
$errors = parent::getPossibleErrors();
// All local errors are from LoginForm, which means they're actually message keys.
foreach ( $localErrors as $error ) {
- $errors[] = array( 'code' => $error, 'info' => wfMessage( $error )->inLanguage( 'en' )->useDatabase( false )->parse() );
+ $errors[] = array(
+ 'code' => $error,
+ 'info' => wfMessage( $error )->inLanguage( 'en' )->useDatabase( false )->parse()
+ );
}
$errors[] = array(
global $wgMinimalPasswordLength;
$errors[] = array(
'code' => 'passwordtooshort',
- 'info' => wfMessage( 'passwordtooshort', $wgMinimalPasswordLength )->inLanguage( 'en' )->useDatabase( false )->parse()
+ 'info' => wfMessage( 'passwordtooshort', $wgMinimalPasswordLength )
+ ->inLanguage( 'en' )->useDatabase( false )->parse()
);
return $errors;
* @ingroup API
*/
class ApiDelete extends ApiBase {
-
/**
* Extracts the title, token, and reason from the request parameters and invokes
* the local delete() function with these as arguments. It does not make use of
$user = $this->getUser();
if ( $titleObj->getNamespace() == NS_FILE ) {
- $status = self::deleteFile( $pageObj, $user, $params['token'], $params['oldimage'], $reason, false );
+ $status = self::deleteFile(
+ $pageObj,
+ $user,
+ $params['token'],
+ $params['oldimage'],
+ $reason,
+ false
+ );
} else {
$status = self::delete( $pageObj, $user, $params['token'], $reason );
}
}
/**
- * @param $page WikiPage|Page object to work on
- * @param $user User doing the action
- * @param $token
- * @param $oldimage
- * @param $reason
- * @param $suppress bool
+ * @param Page $page Object to work on
+ * @param User $user User doing the action
+ * @param string $token Delete token (same as edit token)
+ * @param string $oldimage Archive name
+ * @param string $reason Reason for the deletion. Autogenerated if null.
+ * @param bool $suppress Whether to mark all deleted versions as restricted
* @return Status|array
*/
- public static function deleteFile( Page $page, User $user, $token, $oldimage, &$reason = null, $suppress = false ) {
+ public static function deleteFile( Page $page, User $user, $token, $oldimage,
+ &$reason = null, $suppress = false
+ ) {
$title = $page->getTitle();
$errors = self::getPermissionsError( $title, $user, $token );
if ( count( $errors ) ) {
'title' => "Title of the page you want to delete. Cannot be used together with {$p}pageid",
'pageid' => "Page ID of the page you want to delete. Cannot be used together with {$p}title",
'token' => 'A delete token previously retrieved through prop=info',
- 'reason' => 'Reason for the deletion. If not set, an automatically generated reason will be used',
+ 'reason'
+ => 'Reason for the deletion. If not set, an automatically generated reason will be used',
'watch' => 'Add the page to your watchlist',
- 'watchlist' => 'Unconditionally add or remove the page from your watchlist, use preferences or do not change watch',
+ 'watchlist' => 'Unconditionally add or remove the page from your ' .
+ 'watchlist, use preferences or do not change watch',
'unwatch' => 'Remove the page from your watchlist',
'oldimage' => 'The name of the old image to delete as provided by iiprop=archivename'
);
public function getExamples() {
return array(
'api.php?action=delete&title=Main%20Page&token=123ABC' => 'Delete the Main Page',
- 'api.php?action=delete&title=Main%20Page&token=123ABC&reason=Preparing%20for%20move' => 'Delete the Main Page with the reason "Preparing for move"',
+ 'api.php?action=delete&title=Main%20Page&token=123ABC&reason=Preparing%20for%20move'
+ => 'Delete the Main Page with the reason "Preparing for move"',
);
}
* @ingroup API
*/
class ApiEditPage extends ApiBase {
-
public function execute() {
$user = $this->getUser();
$params = $this->extractRequestParams();
$contentHandler = ContentHandler::getForModelID( $params['contentmodel'] );
}
- // @todo ask handler whether direct editing is supported at all! make allowFlatEdit() method or some such
+ // @todo Ask handler whether direct editing is supported at all! make
+ // allowFlatEdit() method or some such
if ( !isset( $params['contentformat'] ) || $params['contentformat'] == '' ) {
$params['contentformat'] = $contentHandler->getDefaultFormat();
if ( !is_null( $params['section'] ) ) {
if ( !$contentHandler->supportsSections() ) {
$modelName = $contentHandler->getModelID();
- $this->dieUsage( "Sections are not supported for this content model: $modelName.", 'sectionsnotsupported' );
+ $this->dieUsage(
+ "Sections are not supported for this content model: $modelName.",
+ 'sectionsnotsupported'
+ );
}
if ( $params['section'] == 'new' ) {
}
if ( $undoRev->getPage() != $pageObj->getID() ) {
- $this->dieUsageMsg( array( 'revwrongpage', $undoRev->getID(), $titleObj->getPrefixedText() ) );
+ $this->dieUsageMsg( array( 'revwrongpage', $undoRev->getID(),
+ $titleObj->getPrefixedText() ) );
}
if ( $undoafterRev->getPage() != $pageObj->getID() ) {
- $this->dieUsageMsg( array( 'revwrongpage', $undoafterRev->getID(), $titleObj->getPrefixedText() ) );
+ $this->dieUsageMsg( array( 'revwrongpage', $undoafterRev->getID(),
+ $titleObj->getPrefixedText() ) );
}
- $newContent = $contentHandler->getUndoContent( $pageObj->getRevision(), $undoRev, $undoafterRev );
+ $newContent = $contentHandler->getUndoContent(
+ $pageObj->getRevision(),
+ $undoRev,
+ $undoafterRev
+ );
if ( !$newContent ) {
$this->dieUsageMsg( 'undo-failure' );
// If no summary was given and we only undid one rev,
// use an autosummary
- if ( is_null( $params['summary'] ) && $titleObj->getNextRevisionID( $undoafterRev->getID() ) == $params['undo'] ) {
- $params['summary'] = wfMessage( 'undo-summary', $params['undo'], $undoRev->getUserText() )->inContentLanguage()->text();
+ if ( is_null( $params['summary'] ) &&
+ $titleObj->getNextRevisionID( $undoafterRev->getID() ) == $params['undo']
+ ) {
+ $params['summary'] = wfMessage( 'undo-summary' )
+ ->params ( $params['undo'], $undoRev->getUserText() )->inContentLanguage()->text();
}
}
// The following is needed to give the hook the full content of the
// new revision rather than just the current section. (Bug 52077)
- if ( !is_null( $params['section'] ) && $contentHandler->supportsSections() && $titleObj->exists() ) {
-
- $sectionTitle = '';
+ if ( !is_null( $params['section'] ) &&
+ $contentHandler->supportsSections() && $titleObj->exists()
+ ) {
// If sectiontitle is set, use it, otherwise use the summary as the section title (for
// backwards compatibility with old forms/bots).
if ( $ep->sectiontitle !== '' ) {
$contentObj = $contentHandler->unserializeContent( $content, $contentFormat );
- $fullContentObj = $articleObject->replaceSectionContent( $params['section'], $contentObj, $sectionTitle );
+ $fullContentObj = $articleObject->replaceSectionContent(
+ $params['section'],
+ $contentObj,
+ $sectionTitle
+ );
if ( $fullContentObj ) {
$content = $fullContentObj->serialize( $contentFormat );
} else {
$apiResult->addValue( null, $this->getModuleName(), $r );
return;
- } else {
- $this->dieUsageMsg( 'hookaborted' );
}
+
+ $this->dieUsageMsg( 'hookaborted' );
}
// Do the actual save
array( 'emptynewsection' ),
array( 'unknownerror', 'retval' ),
array( 'code' => 'nosuchsection', 'info' => 'There is no section section.' ),
- array( 'code' => 'invalidsection', 'info' => 'The section parameter must be set to an integer or \'new\'' ),
- array( 'code' => 'sectionsnotsupported', 'info' => 'Sections are not supported for this type of page.' ),
- array( 'code' => 'editnotsupported', 'info' => 'Editing of this type of page is not supported using '
- . 'the text based edit API.' ),
- array( 'code' => 'appendnotsupported', 'info' => 'This type of page can not be edited by appending '
- . 'or prepending text.' ),
- array( 'code' => 'badformat', 'info' => 'The requested serialization format can not be applied to '
- . 'the page\'s content model' ),
+ array(
+ 'code' => 'invalidsection',
+ 'info' => 'The section parameter must be set to an integer or \'new\''
+ ),
+ array(
+ 'code' => 'sectionsnotsupported',
+ 'info' => 'Sections are not supported for this type of page.'
+ ),
+ array(
+ 'code' => 'editnotsupported',
+ 'info' => 'Editing of this type of page is not supported using the text based edit API.'
+ ),
+ array(
+ 'code' => 'appendnotsupported',
+ 'info' => 'This type of page can not be edited by appending or prepending text.' ),
+ array(
+ 'code' => 'badformat',
+ 'info' => 'The requested serialization format can not be applied to the page\'s content model'
+ ),
array( 'customcssprotected' ),
array( 'customjsprotected' ),
)
'section' => 'Section number. 0 for the top section, \'new\' for a new section',
'sectiontitle' => 'The title for a new section',
'text' => 'Page content',
- 'token' => array( 'Edit token. You can get one of these through prop=info.',
- "The token should always be sent as the last parameter, or at least, after the {$p}text parameter"
+ 'token' => array(
+ 'Edit token. You can get one of these through prop=info.',
+ "The token should always be sent as the last parameter, or at " .
+ "least, after the {$p}text parameter"
),
- 'summary' => "Edit summary. Also section title when {$p}section=new and {$p}sectiontitle is not set",
+ 'summary'
+ => "Edit summary. Also section title when {$p}section=new and {$p}sectiontitle is not set",
'minor' => 'Minor edit',
'notminor' => 'Non-minor edit',
'bot' => 'Mark this edit as bot',
- 'basetimestamp' => array( 'Timestamp of the base revision (obtained through prop=revisions&rvprop=timestamp).',
+ 'basetimestamp' => array(
+ 'Timestamp of the base revision (obtained through prop=revisions&rvprop=timestamp).',
'Used to detect edit conflicts; leave unset to ignore conflicts'
),
- 'starttimestamp' => array( 'Timestamp when you obtained the edit token.',
+ 'starttimestamp' => array(
+ 'Timestamp when you obtained the edit token.',
'Used to detect edit conflicts; leave unset to ignore conflicts'
),
'recreate' => 'Override any errors about the article having been deleted in the meantime',
'nocreate' => 'Throw an error if the page doesn\'t exist',
'watch' => 'Add the page to your watchlist',
'unwatch' => 'Remove the page from your watchlist',
- 'watchlist' => 'Unconditionally add or remove the page from your watchlist, use preferences or do not change watch',
- 'md5' => array( "The MD5 hash of the {$p}text parameter, or the {$p}prependtext and {$p}appendtext parameters concatenated.",
- 'If set, the edit won\'t be done unless the hash is correct' ),
+ 'watchlist' => 'Unconditionally add or remove the page from your ' .
+ 'watchlist, use preferences or do not change watch',
+ 'md5' => array(
+ "The MD5 hash of the {$p}text parameter, or the {$p}prependtext " .
+ "and {$p}appendtext parameters concatenated.",
+ 'If set, the edit won\'t be done unless the hash is correct'
+ ),
'prependtext' => "Add this text to the beginning of the page. Overrides {$p}text",
'appendtext' => array( "Add this text to the end of the page. Overrides {$p}text.",
"Use {$p}section=new to append a new section" ),
public function getExamples() {
return array(
- 'api.php?action=edit&title=Test&summary=test%20summary&text=article%20content&basetimestamp=20070824123454&token=%2B\\'
+ 'api.php?action=edit&title=Test&summary=test%20summary&' .
+ 'text=article%20content&basetimestamp=20070824123454&token=%2B\\'
=> 'Edit a page (anonymous user)',
- 'api.php?action=edit&title=Test&summary=NOTOC&minor=&prependtext=__NOTOC__%0A&basetimestamp=20070824123454&token=%2B\\'
+ 'api.php?action=edit&title=Test&summary=NOTOC&minor=&' .
+ 'prependtext=__NOTOC__%0A&basetimestamp=20070824123454&token=%2B\\'
=> 'Prepend __NOTOC__ to a page (anonymous user)',
- 'api.php?action=edit&title=Test&undo=13585&undoafter=13579&basetimestamp=20070824123454&token=%2B\\'
+ 'api.php?action=edit&title=Test&undo=13585&undoafter=13579&' .
+ 'basetimestamp=20070824123454&token=%2B\\'
=> 'Undo r13579 through r13585 with autosummary (anonymous user)',
);
}
public function getExamples() {
return array(
- 'api.php?action=emailuser&target=WikiSysop&text=Content' => 'Send an email to the User "WikiSysop" with the text "Content"',
+ 'api.php?action=emailuser&target=WikiSysop&text=Content'
+ => 'Send an email to the User "WikiSysop" with the text "Content"',
);
}
$feedTitle = $wgSitename . ' - ' . $msg . ' [' . $wgLanguageCode . ']';
$feedUrl = SpecialPage::getTitleFor( 'Watchlist' )->getFullURL();
- $feed = new $wgFeedClasses[$params['feedformat']] ( $feedTitle, htmlspecialchars( $msg ), $feedUrl );
+ $feed = new $wgFeedClasses[$params['feedformat']] (
+ $feedTitle,
+ htmlspecialchars( $msg ),
+ $feedUrl
+ );
ApiFormatFeedWrapper::setResult( $this->getResult(), $feed, $feedItems );
} catch ( Exception $e ) {
-
// Error results should not be cached
$this->getMain()->setCacheMaxAge( 0 );
- $feedTitle = $wgSitename . ' - Error - ' . wfMessage( 'watchlist' )->inContentLanguage()->text() . ' [' . $wgLanguageCode . ']';
+ // @todo FIXME: Localise brackets
+ $feedTitle = $wgSitename . ' - Error - ' .
+ wfMessage( 'watchlist' )->inContentLanguage()->text() .
+ ' [' . $wgLanguageCode . ']';
$feedUrl = SpecialPage::getTitleFor( 'Watchlist' )->getFullURL();
$feedFormat = isset( $params['feedformat'] ) ? $params['feedformat'] : 'rss';
// The anchor won't work for sections that have dupes on page
// as there's no way to strip that info from ApiWatchlist (apparently?).
// RegExp in the line below is equal to Linker::formatAutocomments().
- if ( $this->linkToSections && $comment !== null && preg_match( '!(.*)/\*\s*(.*?)\s*\*/(.*)!', $comment, $matches ) ) {
+ if ( $this->linkToSections && $comment !== null &&
+ preg_match( '!(.*)/\*\s*(.*?)\s*\*/(.*)!', $comment, $matches )
+ ) {
global $wgParser;
+
$sectionTitle = $wgParser->stripSectionName( $matches[2] );
$sectionTitle = Sanitizer::normalizeSectionNameWhitespace( $sectionTitle );
$titleUrl .= Title::newFromText( '#' . $sectionTitle )->getFragmentForURL();
$this->checkPermissions( $this->getUser() );
$sourceUrl = $this->file->getArchiveVirtualUrl( $this->archiveName );
- $status = $this->file->upload( $sourceUrl, $this->params['comment'], $this->params['comment'], 0, false, false, $this->getUser() );
+ $status = $this->file->upload(
+ $sourceUrl,
+ $this->params['comment'],
+ $this->params['comment'],
+ 0,
+ false,
+ false,
+ $this->getUser()
+ );
if ( $status->isGood() ) {
$result = array( 'result' => 'Success' );
public function getExamples() {
return array(
- 'api.php?action=filerevert&filename=Wiki.png&comment=Revert&archivename=20110305152740!Wiki.png&token=123ABC'
+ 'api.php?action=filerevert&filename=Wiki.png&comment=Revert&' .
+ 'archivename=20110305152740!Wiki.png&token=123ABC'
=> 'Revert Wiki.png to the version of 20110305152740',
);
}
* @ingroup API
*/
abstract class ApiFormatBase extends ApiBase {
-
private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp, $mCleared;
private $mBufferResult = false, $mBuffer, $mDisabled = false;
<!DOCTYPE HTML>
<html>
<head>
-<?php if ( $this->mUnescapeAmps ) {
+<?php
+ if ( $this->mUnescapeAmps ) {
?> <title>MediaWiki API</title>
-<?php } else {
+<?php
+ } else {
?> <title>MediaWiki API Result</title>
-<?php } ?>
+<?php
+ }
+?>
</head>
<body>
<?php
-
-
if ( !$isHelpScreen ) {
+// @codingStandardsIgnoreStart Exclude long line from CodeSniffer checks
?>
<br />
<small>
</small>
<pre style='white-space: pre-wrap;'>
<?php
-
-
- } else { // don't wrap the contents of the <pre> for help screens
- // because these are actually formatted to rely on
- // the monospaced font for layout purposes
+// @codingStandardsIgnoreEnd
+ // don't wrap the contents of the <pre> for help screens
+ // because these are actually formatted to rely on
+ // the monospaced font for layout purposes
+ } else {
?>
<pre>
<?php
-
}
}
}
</body>
</html>
<?php
-
-
}
}
// identify URLs
$protos = wfUrlProtocolsWithoutProtRel();
// This regex hacks around bug 13218 (" included in the URL)
- $text = preg_replace( "#(((?i)$protos).*?)(")?([ \\'\"<>\n]|<|>|")#", '<a href="\\1">\\1</a>\\3\\4', $text );
+ $text = preg_replace(
+ "#(((?i)$protos).*?)(")?([ \\'\"<>\n]|<|>|")#",
+ '<a href="\\1">\\1</a>\\3\\4',
+ $text
+ );
/**
* Temporary fix for bad links in help messages. As a special case,
public function getParamDescription() {
return array(
- 'callback' => 'If specified, wraps the output into a given function call. For safety, all user-specific data will be restricted.',
- 'utf8' => 'If specified, encodes most (but not all) non-ASCII characters as UTF-8 instead of replacing them with hexadecimal escape sequences.',
+ 'callback' => 'If specified, wraps the output into a given function ' .
+ 'call. For safety, all user-specific data will be restricted.',
+ 'utf8' => 'If specified, encodes most (but not all) non-ASCII ' .
+ 'characters as UTF-8 instead of replacing them with hexadecimal escape sequences.',
);
}
public function getDescription() {
if ( $this->mIsRaw ) {
return 'Output data with the debugging elements in JSON format' . parent::getDescription();
- } else {
- return 'Output data in JSON format' . parent::getDescription();
}
+
+ return 'Output data in JSON format' . parent::getDescription();
}
}
// Some versions of PHP have a broken wddx_serialize_value, see
// PHP bug 45314. Test encoding an affected character (U+00A0)
// to avoid this.
- $expected = "<wddxPacket version='1.0'><header/><data><string>\xc2\xa0</string></data></wddxPacket>";
+ $expected =
+ "<wddxPacket version='1.0'><header/><data><string>\xc2\xa0</string></data></wddxPacket>";
if ( function_exists( 'wddx_serialize_value' )
&& !$this->getIsHtml()
&& wddx_serialize_value( "\xc2\xa0" ) == $expected
}
if ( is_null( $subElemIndName ) && count( $indElements ) ) {
- ApiBase::dieDebug( __METHOD__, "($elemName, ...) has integer keys without _element value. Use ApiResult::setIndexedTagName()." );
+ ApiBase::dieDebug( __METHOD__, "($elemName, ...) has integer keys " .
+ "without _element value. Use ApiResult::setIndexedTagName()." );
}
if ( count( $subElements ) && count( $indElements ) && !is_null( $subElemContent ) ) {
return;
}
- $this->printText( '<?xml-stylesheet href="' . htmlspecialchars( $nt->getLocalURL( 'action=raw' ) ) . '" type="text/xsl" ?>' );
+ $this->printText( '<?xml-stylesheet href="' .
+ htmlspecialchars( $nt->getLocalURL( 'action=raw' ) ) . '" type="text/xsl" ?>' );
}
public function getAllowedParams() {
* @ingroup API
*/
class ApiHelp extends ApiBase {
-
/**
* Module for displaying help
*/
// In case the '+' was typed into URL, it resolves as a space
$subNames = explode( ' ', $m );
}
+
$module = $this->getMain();
- for ( $i = 0; $i < count( $subNames ); $i++ ) {
+ $subNamesCount = count( $subNames );
+ for ( $i = 0; $i < $subNamesCount; $i++ ) {
$subs = $module->getModuleManager();
if ( $subs === null ) {
$module = null;
} else {
$module = $subs->getModule( $subNames[$i] );
}
+
if ( $module === null ) {
if ( count( $subNames ) === 2
&& $i === 1
$type = $subs->getModuleGroup( $subNames[$i] );
}
}
+
if ( $module !== null ) {
$r[] = $this->buildModuleHelp( $module, $type );
}
public function getParamDescription() {
return array(
- 'modules' => 'List of module names (value of the action= parameter). Can specify submodules with a \'+\'',
- 'querymodules' => 'Use modules=query+value instead. List of query module names (value of prop=, meta= or list= parameter)',
+ 'modules' => 'List of module names (value of the action= parameter). ' .
+ 'Can specify submodules with a \'+\'',
+ 'querymodules' => 'Use modules=query+value instead. List of query ' .
+ 'module names (value of prop=, meta= or list= parameter)',
);
}
return array(
'api.php?action=help' => 'Whole help page',
'api.php?action=help&modules=protect' => 'Module (action) help page',
- 'api.php?action=help&modules=query+categorymembers' => 'Help for the query/categorymembers module',
- 'api.php?action=help&modules=login|query+info' => 'Help for the login and query/info modules',
+ 'api.php?action=help&modules=query+categorymembers'
+ => 'Help for the query/categorymembers module',
+ 'api.php?action=help&modules=login|query+info'
+ => 'Help for the login and query/info modules',
);
}
class ApiImageRotate extends ApiBase {
private $mPageSet = null;
- public function __construct( $main, $action ) {
- parent::__construct( $main, $action );
- }
-
/**
* Add all items from $values into the result
* @param array $result output
public function getExamples() {
return array(
- 'api.php?action=import&interwikisource=meta&interwikipage=Help:ParserFunctions&namespace=100&fullhistory=&token=123ABC'
+ 'api.php?action=import&interwikisource=meta&interwikipage=Help:ParserFunctions&' .
+ 'namespace=100&fullhistory=&token=123ABC'
=> 'Import [[meta:Help:Parserfunctions]] to namespace 100 with full history',
);
}
$result['result'] = 'NotExists';
break;
- case LoginForm::RESET_PASS: // bug 20223 - Treat a temporary password as wrong. Per SpecialUserLogin - "The e-mailed temporary password should not be used for actual logins;"
+ // bug 20223 - Treat a temporary password as wrong. Per SpecialUserLogin:
+ // The e-mailed temporary password should not be used for actual logins.
+ case LoginForm::RESET_PASS:
case LoginForm::WRONG_PASS:
$result['result'] = 'WrongPass';
break;
public function getDescription() {
return array(
'Log in and get the authentication tokens.',
- 'In the event of a successful log-in, a cookie will be attached',
- 'to your session. In the event of a failed log-in, you will not',
- 'be able to attempt another log-in through this method for 5 seconds.',
- 'This is to prevent password guessing by automated password crackers'
+ 'In the event of a successful log-in, a cookie will be attached to your session.',
+ 'In the event of a failed log-in, you will not be able to attempt another log-in',
+ 'through this method for 5 seconds. This is to prevent password guessing by',
+ 'automated password crackers'
);
}
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'NeedToken', 'info' => 'You need to resubmit your login with the specified token. See https://bugzilla.wikimedia.org/show_bug.cgi?id=23076' ),
+ array(
+ 'code' => 'NeedToken', 'info' => 'You need to resubmit your ' .
+ 'login with the specified token. See ' .
+ 'https://bugzilla.wikimedia.org/show_bug.cgi?id=23076'
+ ),
array( 'code' => 'WrongToken', 'info' => 'You specified an invalid token' ),
array( 'code' => 'NoName', 'info' => 'You didn\'t set the lgname parameter' ),
array( 'code' => 'Illegal', 'info' => 'You provided an illegal username' ),
array( 'code' => 'NotExists', 'info' => 'The username you provided doesn\'t exist' ),
- array( 'code' => 'EmptyPass', 'info' => 'You didn\'t set the lgpassword parameter or you left it empty' ),
+ array(
+ 'code' => 'EmptyPass',
+ 'info' => 'You didn\'t set the lgpassword parameter or you left it empty'
+ ),
array( 'code' => 'WrongPass', 'info' => 'The password you provided is incorrect' ),
- array( 'code' => 'WrongPluginPass', 'info' => 'Same as "WrongPass", returned when an authentication plugin rather than MediaWiki itself rejected the password' ),
- array( 'code' => 'CreateBlocked', 'info' => 'The wiki tried to automatically create a new account for you, but your IP address has been blocked from account creation' ),
+ array(
+ 'code' => 'WrongPluginPass',
+ 'info' => 'Same as "WrongPass", returned when an authentication ' .
+ 'plugin rather than MediaWiki itself rejected the password'
+ ),
+ array(
+ 'code' => 'CreateBlocked',
+ 'info' => 'The wiki tried to automatically create a new account ' .
+ 'for you, but your IP address has been blocked from account creation'
+ ),
array( 'code' => 'Throttled', 'info' => 'You\'ve logged in too many times in a short time' ),
array( 'code' => 'Blocked', 'info' => 'User is blocked' ),
) );
'none' => 'ApiFormatNone',
);
+ // @codingStandardsIgnoreStart String contenation on "msg" not allowed to break long line
/**
* List of user roles that are specifically relevant to the API.
* array( 'right' => array ( 'msg' => 'Some message with a $1',
'params' => array( ApiBase::LIMIT_SML2, ApiBase::LIMIT_BIG2 )
)
);
+ // @codingStandardsIgnoreEnd
/**
* @var ApiFormatBase
/**
* Constructs an instance of ApiMain that utilizes the module and format specified by $request.
*
- * @param $context IContextSource|WebRequest - if this is an instance of FauxRequest, errors are thrown and no printing occurs
+ * @param $context IContextSource|WebRequest - if this is an instance of
+ * FauxRequest, errors are thrown and no printing occurs
* @param bool $enableWrite should be set to true if the api may modify data
*/
public function __construct( $context = null, $enableWrite = false ) {
} else {
$origins = explode( ' ', $originHeader );
}
+
if ( !in_array( $originParam, $origins ) ) {
// origin parameter set but incorrect
// Send a 403 response
return false;
}
- if ( self::matchOrigin( $originParam, $wgCrossSiteAJAXdomains, $wgCrossSiteAJAXdomainExceptions ) ) {
+
+ $matchOrigin = self::matchOrigin(
+ $originParam,
+ $wgCrossSiteAJAXdomains,
+ $wgCrossSiteAJAXdomainExceptions
+ );
+
+ if ( $matchOrigin ) {
$response->header( "Access-Control-Allow-Origin: $originParam" );
$response->header( 'Access-Control-Allow-Credentials: true' );
$this->getOutput()->addVaryHeader( 'Origin' );
* @param string $value Origin header
* @param array $rules Set of wildcard rules
* @param array $exceptions Set of wildcard rules
- * @return bool True if $value matches a rule in $rules and doesn't match any rules in $exceptions, false otherwise
+ * @return bool True if $value matches a rule in $rules and doesn't match
+ * any rules in $exceptions, false otherwise
*/
protected static function matchOrigin( $value, $rules, $exceptions ) {
foreach ( $rules as $rule ) {
'code' => 'internal_api_error_' . get_class( $e ),
'info' => $info,
);
- ApiResult::setContent( $errMessage, $wgShowExceptionDetails ? "\n\n{$e->getTraceAsString()}\n\n" : '' );
+ ApiResult::setContent(
+ $errMessage,
+ $wgShowExceptionDetails ? "\n\n{$e->getTraceAsString()}\n\n" : ''
+ );
}
// Remember all the warnings to re-add them later
if ( $salt !== false ) {
if ( !isset( $moduleParams['token'] ) ) {
$this->dieUsageMsg( array( 'missingparam', 'token' ) );
- } else {
- if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() ) ) {
- $this->dieUsageMsg( 'sessionfailure' );
- }
+ }
+
+ if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() ) ) {
+ $this->dieUsageMsg( 'sessionfailure' );
}
}
if ( $wgShowHostnames ) {
$this->dieUsage( "Waiting for $host: $lag seconds lagged", 'maxlag' );
- } else {
- $this->dieUsage( "Waiting for a database server: $lag seconds lagged", 'maxlag' );
}
- return false;
+ $this->dieUsage( "Waiting for a database server: $lag seconds lagged", 'maxlag' );
}
}
/**
* Log the preceding request
- * @param $time Time in seconds
+ * @param int $time Time in seconds
*/
protected function logRequest( $time ) {
$request = $this->getRequest();
static $table;
if ( !$table ) {
$chars = ';@$!*(),/:';
- for ( $i = 0; $i < strlen( $chars ); $i++ ) {
+ $numChars = strlen( $chars );
+ for ( $i = 0; $i < $numChars; $i++ ) {
$table[rawurlencode( $chars[$i] )] = $chars[$i];
}
}
'smaxage' => 'Set the s-maxage header to this many seconds. Errors are never cached',
'maxage' => 'Set the max-age header to this many seconds. Errors are never cached',
'requestid' => 'Request ID to distinguish requests. This will just be output back to you',
- 'servedby' => 'Include the hostname that served the request in the results. Unconditionally shown on error',
+ 'servedby' => 'Include the hostname that served the request in the ' .
+ 'results. Unconditionally shown on error',
'origin' => array(
- 'When accessing the API using a cross-domain AJAX request (CORS), set this to the originating domain.',
- 'This must be included in any pre-flight request, and therefore must be part of the request URI (not the POST body).',
- 'This must match one of the origins in the Origin: header exactly, so it has to be set to something like http://en.wikipedia.org or https://meta.wikimedia.org .',
- 'If this parameter does not match the Origin: header, a 403 response will be returned.',
- 'If this parameter matches the Origin: header and the origin is whitelisted, an Access-Control-Allow-Origin header will be set.',
+ 'When accessing the API using a cross-domain AJAX request (CORS), set this to the',
+ 'originating domain. This must be included in any pre-flight request, and',
+ 'therefore must be part of the request URI (not the POST body). This must match',
+ 'one of the origins in the Origin: header exactly, so it has to be set to ',
+ 'something like http://en.wikipedia.org or https://meta.wikimedia.org . If this',
+ 'parameter does not match the Origin: header, a 403 response will be returned. If',
+ 'this parameter matches the Origin: header and the origin is whitelisted, an',
+ 'Access-Control-Allow-Origin header will be set.',
),
);
}
return array(
'',
'',
- '**********************************************************************************************************',
- '** **',
- '** This is an auto-generated MediaWiki API documentation page **',
- '** **',
- '** Documentation and Examples: **',
- '** https://www.mediawiki.org/wiki/API **',
- '** **',
- '**********************************************************************************************************',
+ '**********************************************************************************************',
+ '** **',
+ '** This is an auto-generated MediaWiki API documentation page **',
+ '** **',
+ '** Documentation and Examples: **',
+ '** https://www.mediawiki.org/wiki/API **',
+ '** **',
+ '**********************************************************************************************',
'',
'Status: All features shown on this page should be working, but the API',
' is still in active development, and may change at any time.',
' In the case of an invalid action being passed, these will have a value',
' of "unknown_action"',
'',
- ' For more information see https://www.mediawiki.org/wiki/API:Errors_and_warnings',
+ ' For more information see https://www.mediawiki.org' .
+ '/wiki/API:Errors_and_warnings',
'',
'Documentation: https://www.mediawiki.org/wiki/API:Main_page',
'FAQ https://www.mediawiki.org/wiki/API:FAQ',
'Mailing list: https://lists.wikimedia.org/mailman/listinfo/mediawiki-api',
'Api Announcements: https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce',
- 'Bugs & Requests: https://bugzilla.wikimedia.org/buglist.cgi?component=API&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.delta_ts',
+ 'Bugs & Requests: https://bugzilla.wikimedia.org/buglist.cgi?component=API&' .
+ 'bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.delta_ts',
'',
'',
'',
protected function getCredits() {
return array(
'API developers:',
- ' Roan Kattouw "<Firstname>.<Lastname>@gmail.com" (lead developer Sep 2007-2009)',
+ ' Roan Kattouw - roan . kattouw @ gmail . com (lead developer Sep 2007-2009)',
' Victor Vasiliev - vasilvv @ gmail . com',
' Bryan Tong Minh - bryan . tongminh @ gmail . com',
' Sam Reed - sam @ reedyboy . net',
- ' Yuri Astrakhan "<Firstname><Lastname>@gmail.com" (creator, lead developer Sep 2006-Sep 2007, 2012-present)',
+ ' Yuri Astrakhan - yuri . astrakhan @ gmail . com (creator, lead ' .
+ 'developer Sep 2006-Sep 2007, 2012-present)',
'',
'Please send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org',
'or file a bug report at https://bugzilla.wikimedia.org/'
/**
* @param $module ApiBase
- * @param string $paramName What type of request is this? e.g. action, query, list, prop, meta, format
+ * @param string $paramName What type of request is this? e.g. action,
+ * query, list, prop, meta, format
* @return string
*/
public static function makeHelpMsgHeader( $module, $paramName ) {
public function isDefined( $moduleName, $group = null ) {
if ( isset( $this->mModules[$moduleName] ) ) {
return $group === null || $this->mModules[$moduleName][0] === $group;
- } else {
- return false;
}
+
+ return false;
}
/**
public function getModuleGroup( $moduleName ) {
if ( isset( $this->mModules[$moduleName] ) ) {
return $this->mModules[$moduleName][0];
- } else {
- return null;
}
+
+ return null;
}
/**
$this->dieUsageMsg( reset( $retval ) );
}
- $r = array( 'from' => $fromTitle->getPrefixedText(), 'to' => $toTitle->getPrefixedText(), 'reason' => $params['reason'] );
+ $r = array(
+ 'from' => $fromTitle->getPrefixedText(),
+ 'to' => $toTitle->getPrefixedText(),
+ 'reason' => $params['reason']
+ );
if ( $fromTitle->exists() ) {
//NOTE: we assume that if the old title exists, it's because it was re-created as
$success = $fromTitle->moveSubpages( $toTitle, true, $reason, !$noredirect );
if ( isset( $success[0] ) ) {
return array( 'error' => $this->parseMsg( $success ) );
- } else {
- // At least some pages could be moved
- // Report each of them separately
- foreach ( $success as $oldTitle => $newTitle ) {
- $r = array( 'from' => $oldTitle );
- if ( is_array( $newTitle ) ) {
- $r['error'] = $this->parseMsg( reset( $newTitle ) );
- } else {
- // Success
- $r['to'] = $newTitle;
- }
- $retval[] = $r;
+ }
+
+ // At least some pages could be moved
+ // Report each of them separately
+ foreach ( $success as $oldTitle => $newTitle ) {
+ $r = array( 'from' => $oldTitle );
+ if ( is_array( $newTitle ) ) {
+ $r['error'] = $this->parseMsg( reset( $newTitle ) );
+ } else {
+ // Success
+ $r['to'] = $newTitle;
}
+ $retval[] = $r;
}
return $retval;
'noredirect' => 'Don\'t create a redirect',
'watch' => 'Add the page and the redirect to your watchlist',
'unwatch' => 'Remove the page and the redirect from your watchlist',
- 'watchlist' => 'Unconditionally add or remove the page from your watchlist, use preferences or do not change watch',
+ 'watchlist' => 'Unconditionally add or remove the page from your ' .
+ 'watchlist, use preferences or do not change watch',
'ignorewarnings' => 'Ignore any warnings'
);
}
public function getExamples() {
return array(
- 'api.php?action=move&from=Badtitle&to=Goodtitle&token=123ABC&reason=Misspelled%20title&movetalk=&noredirect='
+ 'api.php?action=move&from=Badtitle&to=Goodtitle&token=123ABC&' .
+ 'reason=Misspelled%20title&movetalk=&noredirect='
);
}
}
public function getAllowedParams() {
+ global $wgOpenSearchDefaultLimit;
+
return array(
'search' => null,
'limit' => array(
- ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_DFLT => $wgOpenSearchDefaultLimit,
ApiBase::PARAM_TYPE => 'limit',
ApiBase::PARAM_MIN => 1,
ApiBase::PARAM_MAX => 100,
* @ingroup API
*/
class ApiOptions extends ApiBase {
-
/**
* Changes preferences of the current user.
*/
'token' => 'An options token previously obtained through the action=tokens',
'reset' => 'Resets preferences to the site defaults',
'resetkinds' => 'List of types of options to reset when the "reset" option is set',
- 'change' => 'List of changes, formatted name=value (e.g. skin=vector), value cannot contain pipe characters. If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value',
+ 'change' => 'List of changes, formatted name=value (e.g. skin=vector), ' .
+ 'value cannot contain pipe characters. If no value is given (not ' .
+ 'even an equals sign), e.g., optionname|otheroption|..., the ' .
+ 'option will be reset to its default value',
'optionname' => 'A name of a option which should have an optionvalue set',
- 'optionvalue' => 'A value of the option specified by the optionname, can contain pipe characters',
+ 'optionvalue' => 'A value of the option specified by the optionname, ' .
+ 'can contain pipe characters',
);
}
return array(
'Change preferences of the current user',
'Only options which are registered in core or in one of installed extensions,',
- 'or as options with keys prefixed with \'userjs-\' (intended to be used by user scripts), can be set.'
+ 'or as options with keys prefixed with \'userjs-\' (intended to be used by user',
+ 'scripts), can be set.'
);
}
return array(
'api.php?action=options&reset=&token=123ABC',
'api.php?action=options&change=skin=vector|hideminor=1&token=123ABC',
- 'api.php?action=options&reset=&change=skin=monobook&optionname=nickname&optionvalue=[[User:Beau|Beau]]%20([[User_talk:Beau|talk]])&token=123ABC',
+ 'api.php?action=options&reset=&change=skin=monobook&optionname=nickname&' .
+ 'optionvalue=[[User:Beau|Beau]]%20([[User_talk:Beau|talk]])&token=123ABC',
);
}
}
/**
* Extract all requested fields from the row received from the database
- * @param $row Result row
+ * @param stdClass $row Result row
*/
public function processDbRow( $row ) {
// Store Title object in various data structures
if ( $this->section !== false && $this->content !== null ) {
$this->content = $this->getSectionContent(
$this->content,
- !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getText() );
+ !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getText()
+ );
// Not cached (save or load)
return $this->content->getParserOutput( $page->getTitle(), null, $popts );
- } else {
- // Try the parser cache first
- // getParserOutput will save to Parser cache if able
- $pout = $page->getParserOutput( $popts );
- if ( !$pout ) {
- $this->dieUsage( "There is no revision ID {$page->getLatest()}", 'missingrev' );
- }
- if ( $getWikitext ) {
- $this->content = $page->getContent( Revision::RAW );
- }
+ }
- return $pout;
+ // Try the parser cache first
+ // getParserOutput will save to Parser cache if able
+ $pout = $page->getParserOutput( $popts );
+ if ( !$pout ) {
+ $this->dieUsage( "There is no revision ID {$page->getLatest()}", 'missingrev' );
+ }
+ if ( $getWikitext ) {
+ $this->content = $page->getContent( Revision::RAW );
}
+
+ return $pout;
}
private function getSectionContent( Content $content, $what ) {
/**
* @deprecated since 1.18 No modern skin generates language links this way,
- * please use language links
- * data to generate your own HTML.
+ * please use language links data to generate your own HTML.
* @param $languages array
* @return string
*/
'meta' => 'Which metadata to get about the site. Module help is available below',
'indexpageids' => 'Include an additional pageids section listing all returned page IDs',
'export' => 'Export the current revisions of all given or generated pages',
- 'exportnowrap' => 'Return the export XML without wrapping it in an '.
+ 'exportnowrap' => 'Return the export XML without wrapping it in an ' .
'XML result (same format as Special:Export). Can only be used with export',
'iwurl' => 'Whether to get the full URL if the title is an interwiki link',
'continue' => array(
* @return void
*/
public function showHiddenUsersAddBlockInfo( $showBlockInfo ) {
- $userCanViewHiddenUsers = $this->getUser()->isAllowed( 'hideuser' );
-
- if ( $showBlockInfo || !$userCanViewHiddenUsers ) {
- $this->addTables( 'ipblocks' );
- $this->addJoinConds( array(
- 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
- ) );
+ $this->addTables( 'ipblocks' );
+ $this->addJoinConds( array(
+ 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
+ ) );
- $this->addFields( 'ipb_deleted' );
+ $this->addFields( 'ipb_deleted' );
- if ( $showBlockInfo ) {
- $this->addFields( array( 'ipb_id', 'ipb_by', 'ipb_by_text', 'ipb_reason', 'ipb_expiry' ) );
- }
+ if ( $showBlockInfo ) {
+ $this->addFields( array( 'ipb_id', 'ipb_by', 'ipb_by_text', 'ipb_reason', 'ipb_expiry' ) );
+ }
- // Don't show hidden names
- if ( !$userCanViewHiddenUsers ) {
- $this->addWhere( 'ipb_deleted = 0 OR ipb_deleted IS NULL' );
- }
+ // Don't show hidden names
+ if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+ $this->addWhere( 'ipb_deleted = 0 OR ipb_deleted IS NULL' );
}
}
}
public function getParamDescription() {
- $p = $this->getModulePrefix();
-
return array(
'prop' => array(
'Which repository properties to get (there may be more available on some wikis):',
' apiurl - URL to the repository API - helpful for getting image info from the host.',
' name - The key of the repository - used in e.g. ' .
- '$wgForeignFileRepos and imageinfo return values.',
+ '$wgForeignFileRepos and imageinfo return values.',
' displayname - The human-readable name of the repository wiki.',
' rooturl - Root URL for image paths.',
' local - Whether that repository is the local one or not.',
* @param array $prop of properties to get (in the keys)
* @param $result ApiResult object
* @param array $thumbParams containing 'width' and 'height' items, or null
- * @param string|array $metadataOpts Options for metadata fetching.
+ * @param array|bool|string $metadataOpts Options for metadata fetching.
* This is an array consisting of the keys:
* 'version': The metadata version for the metadata option
* 'language': The language for extmetadata property
=>'If translations for extmetadata property are available, fetch all of them.',
'extmetadatafilter'
=> "If specified and non-empty, only these keys will be returned for {$p}prop=extmetadata",
- 'continue' => 'If the query response includes a continue value, use it here to get another page of results',
+ 'continue' => 'If the query response includes a continue value, ' .
+ 'use it here to get another page of results',
'localonly' => 'Look only for files in the local repository',
);
}
}
/**
- * @param $resultPageSet ApiPageSet
- * @return
+ * @param ApiPageSet $resultPageSet
*/
private function run( $resultPageSet = null ) {
if ( $this->getPageSet()->getGoodTitleCount() == 0 ) {
* @param $pageid
* @param $title
* @param $rc RecentChange (optional)
- * @return bool|String
+ * @return bool|string
*/
public static function getPatrolToken( $pageid, $title, $rc = null ) {
global $wgUser;
) {
$validTokenUser = true;
}
- } else {
- if ( $wgUser->useRCPatrol() || $wgUser->useNPPatrol() ) {
- $validTokenUser = true;
- }
+ } elseif ( $wgUser->useRCPatrol() || $wgUser->useNPPatrol() ) {
+ $validTokenUser = true;
}
if ( $validTokenUser ) {
// The patrol token is always the same, let's exploit that
static $cachedPatrolToken = null;
+
if ( is_null( $cachedPatrolToken ) ) {
$cachedPatrolToken = $wgUser->getEditToken( 'patrol' );
}
return $cachedPatrolToken;
- } else {
- return false;
}
+
+ return false;
}
/**
|| ( isset( $show['anon'] ) && isset( $show['!anon'] ) )
|| ( isset( $show['redirect'] ) && isset( $show['!redirect'] ) )
|| ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) )
+ || ( isset( $show['patrolled'] ) && isset( $show['unpatrolled'] ) )
+ || ( isset( $show['!patrolled'] ) && isset( $show['unpatrolled'] ) )
) {
$this->dieUsageMsg( 'show' );
}
// Check permissions
- if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ) {
+ if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) || isset( $show['unpatrolled'] ) ) {
if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
$this->dieUsage(
'You need the patrol right to request the patrolled flag',
$this->addWhereIf( 'rc_patrolled != 0', isset( $show['patrolled'] ) );
$this->addWhereIf( 'page_is_redirect = 1', isset( $show['redirect'] ) );
+ if ( isset( $show['unpatrolled'] ) ) {
+ // See ChangesList:isUnpatrolled
+ if ( $user->useRCPatrol() ) {
+ $this->addWhere( 'rc_patrolled = 0' );
+ } elseif ( $user->useNPPatrol() ) {
+ $this->addWhere( 'rc_patrolled = 0' );
+ $this->addWhereFld( 'rc_type', RC_NEW );
+ }
+ }
+
// Don't throw log entries out the window here
$this->addWhereIf(
'page_is_redirect = 0 OR page_is_redirect IS NULL',
'redirect',
'!redirect',
'patrolled',
- '!patrolled'
+ '!patrolled',
+ 'unpatrolled'
)
),
'limit' => array(
}
public function getCacheMode( $params ) {
- if ( isset( $params['token'] ) ) {
- return 'private';
- } else {
- return 'anon-public-user-private';
- }
+ return isset( $params['token'] ) ? 'private' : 'anon-public-user-private';
}
public function getAllowedParams() {
if ( $permission !== true ) {
if ( !$user->isLoggedIn() ) {
$this->dieUsageMsg( array( 'mustbeloggedin', 'upload' ) );
- } else {
- $this->dieUsageMsg( 'badaccess-groups' );
}
+
+ $this->dieUsageMsg( 'badaccess-groups' );
}
}
'result' => 'Queued',
'statuskey' => $error[0][1],
);
- } else {
- $this->getResult()->setIndexedTagName( $error, 'error' );
-
- $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
}
+
+ $this->getResult()->setIndexedTagName( $error, 'error' );
+ $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
}
$result['result'] = 'Success';
}
$form->setContext( $this->getContext() );
$r['user'] = $user->getName();
$r['userid'] = $user->getId();
- list( $r['added'], $r['removed'] ) =
- $form->doSaveUserGroups(
- $user, (array)$params['add'],
- (array)$params['remove'], $params['reason'] );
+ list( $r['added'], $r['removed'] ) = $form->doSaveUserGroups(
+ $user, (array)$params['add'],
+ (array)$params['remove'], $params['reason']
+ );
$result = $this->getResult();
$result->setIndexedTagName( $r['added'], 'group' );
$status = $form->fetchUser( $params['user'] );
if ( !$status->isOK() ) {
$this->dieStatus( $status );
- } else {
- $user = $status->value;
}
- $this->mUser = $user;
+ $this->mUser = $status->value;
- return $user;
+ return $status->value;
}
public function mustBePosted() {
if ( !self::$cache->has( $dbKey, 'obj', 3600 ) ) {
self::$cache->set( $dbKey, 'obj', new self( $title ) );
}
+
return self::$cache->get( $dbKey, 'obj' );
}
if ( !isset( $this->db ) ) {
$this->db = wfGetDB( DB_SLAVE );
}
+
return $this->db;
}
$fromField = $this->getPrefix( $table ) . '_from';
if ( !$startId && !$endId && is_infinite( $max )
- && isset( $this->fullResultCache[$table] ) )
- {
+ && isset( $this->fullResultCache[$table] )
+ ) {
wfDebug( __METHOD__ . ": got results from cache\n" );
$res = $this->fullResultCache[$table];
} else {
$res = $this->getDB()->select(
$table,
array( $this->getPrefix( $table ) . '_from AS page_id' ),
- array_filter( $conds, function( $clause ) { // kind of janky
+ array_filter( $conds, function ( $clause ) { // kind of janky
return !preg_match( '/(\b|=)page_id(\b|=)/', $clause );
} ),
__METHOD__,
);
}
- if ( !$startId && !$endId && $res->numRows() < $max ) {
+ if ( $select === 'all' && !$startId && !$endId && $res->numRows() < $max ) {
// The full results fit within the limit, so cache them
$this->fullResultCache[$table] = $res;
} else {
}
wfProfileOut( __METHOD__ );
+
return $res;
}
// 1) try partition cache ...
if ( isset( $this->partitionCache[$table] ) ) {
$entry = reset( $this->partitionCache[$table] );
+
return min( $max, $entry['numRows'] );
}
// 1) try partition cache ...
if ( isset( $this->partitionCache[$table][$batchSize] ) ) {
wfDebug( __METHOD__ . ": got from partition cache\n" );
+
return $this->partitionCache[$table][$batchSize]['batches'];
}
if ( isset( $this->fullResultCache[$table] ) ) {
$cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
wfDebug( __METHOD__ . ": got from full result cache\n" );
+
return $cacheEntry['batches'];
}
if ( is_array( $memcValue ) ) {
$cacheEntry = $memcValue;
wfDebug( __METHOD__ . ": got from memcached $memcKey\n" );
+
return $cacheEntry['batches'];
}
$wgMemc->set( $memcKey, $cacheEntry['numRows'], self::CACHE_EXPIRY );
wfDebug( __METHOD__ . ": got from database\n" );
+
return $cacheEntry['batches'];
}
* @ingroup Cache
*/
class DependencyWrapper {
- var $value;
- var $deps;
+ private $value;
+ private $deps;
/**
* Create an instance.
* callback was defined.
*/
static function getValueFromCache( $cache, $key, $expiry = 0, $callback = false,
- $callbackParams = array(), $deps = array() )
- {
+ $callbackParams = array(), $deps = array()
+ ) {
$obj = $cache->get( $key );
if ( is_object( $obj ) && $obj instanceof DependencyWrapper && !$obj->isExpired() ) {
/**
* Hook to perform any expensive pre-serialize loading of dependency values.
*/
- function loadDependencyValues() { }
+ function loadDependencyValues() {
+ }
}
/**
* @ingroup Cache
*/
class FileDependency extends CacheDependency {
- var $filename, $timestamp;
+ private $filename;
+ private $timestamp;
/**
* Create a file dependency
*/
function __sleep() {
$this->loadDependencyValues();
+
return array( 'filename', 'timestamp' );
}
} else {
# Deleted
wfDebug( "Dependency triggered: {$this->filename} deleted.\n" );
+
return true;
}
} else {
if ( $lastmod > $this->timestamp ) {
# Modified or created
wfDebug( "Dependency triggered: {$this->filename} changed.\n" );
+
return true;
} else {
# Not modified
}
}
-/**
- * @ingroup Cache
- */
-class TitleDependency extends CacheDependency {
- var $titleObj;
- var $ns, $dbk;
- var $touched;
-
- /**
- * Construct a title dependency
- * @param $title Title
- */
- function __construct( Title $title ) {
- $this->titleObj = $title;
- $this->ns = $title->getNamespace();
- $this->dbk = $title->getDBkey();
- }
-
- function loadDependencyValues() {
- $this->touched = $this->getTitle()->getTouched();
- }
-
- /**
- * Get rid of bulky Title object for sleep
- *
- * @return array
- */
- function __sleep() {
- return array( 'ns', 'dbk', 'touched' );
- }
-
- /**
- * @return Title
- */
- function getTitle() {
- if ( !isset( $this->titleObj ) ) {
- $this->titleObj = Title::makeTitle( $this->ns, $this->dbk );
- }
-
- return $this->titleObj;
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- $touched = $this->getTitle()->getTouched();
-
- if ( $this->touched === false ) {
- if ( $touched === false ) {
- # Still missing
- return false;
- } else {
- # Created
- return true;
- }
- } elseif ( $touched === false ) {
- # Deleted
- return true;
- } elseif ( $touched > $this->touched ) {
- # Updated
- return true;
- } else {
- # Unmodified
- return false;
- }
- }
-}
-
-/**
- * @ingroup Cache
- */
-class TitleListDependency extends CacheDependency {
- var $linkBatch;
- var $timestamps;
-
- /**
- * Construct a dependency on a list of titles
- * @param $linkBatch LinkBatch
- */
- function __construct( LinkBatch $linkBatch ) {
- $this->linkBatch = $linkBatch;
- }
-
- /**
- * @return array
- */
- function calculateTimestamps() {
- # Initialise values to false
- $timestamps = array();
-
- foreach ( $this->getLinkBatch()->data as $ns => $dbks ) {
- if ( count( $dbks ) > 0 ) {
- $timestamps[$ns] = array();
-
- foreach ( $dbks as $dbk => $value ) {
- $timestamps[$ns][$dbk] = false;
- }
- }
- }
-
- # Do the query
- if ( count( $timestamps ) ) {
- $dbr = wfGetDB( DB_SLAVE );
- $where = $this->getLinkBatch()->constructSet( 'page', $dbr );
- $res = $dbr->select(
- 'page',
- array( 'page_namespace', 'page_title', 'page_touched' ),
- $where,
- __METHOD__
- );
-
- foreach ( $res as $row ) {
- $timestamps[$row->page_namespace][$row->page_title] = $row->page_touched;
- }
- }
-
- return $timestamps;
- }
-
- function loadDependencyValues() {
- $this->timestamps = $this->calculateTimestamps();
- }
-
- /**
- * @return array
- */
- function __sleep() {
- return array( 'timestamps' );
- }
-
- /**
- * @return LinkBatch
- */
- function getLinkBatch() {
- if ( !isset( $this->linkBatch ) ) {
- $this->linkBatch = new LinkBatch;
- $this->linkBatch->setArray( $this->timestamps );
- }
- return $this->linkBatch;
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- $newTimestamps = $this->calculateTimestamps();
-
- foreach ( $this->timestamps as $ns => $dbks ) {
- foreach ( $dbks as $dbk => $oldTimestamp ) {
- $newTimestamp = $newTimestamps[$ns][$dbk];
-
- if ( $oldTimestamp === false ) {
- if ( $newTimestamp === false ) {
- # Still missing
- } else {
- # Created
- return true;
- }
- } elseif ( $newTimestamp === false ) {
- # Deleted
- return true;
- } elseif ( $newTimestamp > $oldTimestamp ) {
- # Updated
- return true;
- } else {
- # Unmodified
- }
- }
- }
-
- return false;
- }
-}
-
/**
* @ingroup Cache
*/
class GlobalDependency extends CacheDependency {
- var $name, $value;
+ private $name;
+ private $value;
function __construct( $name ) {
$this->name = $name;
if ( !isset( $GLOBALS[$this->name] ) ) {
return true;
}
+
return $GLOBALS[$this->name] != $this->value;
}
}
* @ingroup Cache
*/
class ConstantDependency extends CacheDependency {
- var $name, $value;
+ private $name;
+ private $value;
function __construct( $name ) {
$this->name = $name;
*/
final protected function baseCacheDirectory() {
global $wgFileCacheDirectory;
+
return $wgFileCacheDirectory;
}
if ( $this->mCached === null ) {
$this->mCached = file_exists( $this->cachePath() );
}
+
return $this->mCached;
}
*/
public function cacheTimestamp() {
$timestamp = filemtime( $this->cachePath() );
+
return ( $timestamp !== false )
? wfTimestamp( TS_MW, $timestamp )
: false;
$cachetime = $this->cacheTimestamp();
$good = ( $timestamp <= $cachetime && $wgCacheEpoch <= $cachetime );
- wfDebug( __METHOD__ . ": cachetime $cachetime, touched '{$timestamp}' epoch {$wgCacheEpoch}, good $good\n" );
+ wfDebug( __METHOD__ .
+ ": cachetime $cachetime, touched '{$timestamp}' epoch {$wgCacheEpoch}, good $good\n" );
return $good;
}
public function fetchText() {
if ( $this->useGzip() ) {
$fh = gzopen( $this->cachePath(), 'rb' );
+
return stream_get_contents( $fh );
} else {
return file_get_contents( $this->cachePath() );
if ( !file_put_contents( $this->cachePath(), $text, LOCK_EX ) ) {
wfDebug( __METHOD__ . "() failed saving " . $this->cachePath() . "\n" );
$this->mCached = null;
+
return false;
}
$this->mCached = true;
+
return $text;
}
*/
public function getMissesRecent() {
global $wgMemc;
+
return self::MISS_FACTOR * $wgMemc->get( $this->cacheMissKey() );
}
if ( $that === null ) {
$that = new self();
}
+
return $that;
}
- protected function __construct() {}
+ protected function __construct() {
+ }
/**
* Returns the default gender option in this wiki.
if ( $this->default === null ) {
$this->default = User::getDefaultOption( 'gender' );
}
+
return $this->default;
}
$this->misses++;
wfDebug( __METHOD__ . ": too many misses, returning default onwards\n" );
}
- return $this->getDefault();
+ return $this->getDefault();
} else {
$this->misses++;
$this->doQuery( $username, $caller );
if ( $indexSlash !== false ) {
$username = substr( $username, 0, $indexSlash );
}
+
// normalize underscore/spaces
return strtr( $username, '_', ' ' );
}
}
if ( $wgShowIPinHeader || $wgDebugToolbar ) {
wfDebug( "HTML file cache skipped. Either \$wgShowIPinHeader and/or \$wgDebugToolbar on\n" );
+
return false;
}
} elseif ( $query === 'maxage' || $query === 'smaxage' ) {
continue;
}
+
return false;
}
$user = $context->getUser();
// and extensions for auto-detecting user language.
$ulang = $context->getLanguage()->getCode();
$clang = $wgContLang->getCode();
+
// Check that there are no other sources of variation
return !$user->getId() && !$user->getNewtalk() && $ulang == $clang;
}
// @todo Ugly wfClientAcceptsGzip() function - use context!
if ( wfClientAcceptsGzip() ) {
header( 'Content-Encoding: gzip' );
+
return $compressed;
} else {
return $text;
/**
* 2-d array, first index namespace, second index dbkey, value arbitrary
*/
- var $data = array();
+ public $data = array();
/**
* For debugging which method is using this class.
*/
public function execute() {
$linkCache = LinkCache::singleton();
+
return $this->executeInto( $linkCache );
}
$this->doGenderQuery();
$ids = $this->addResultToCache( $cache, $res );
wfProfileOut( __METHOD__ );
+
return $ids;
}
$ids[$title->getPrefixedDBkey()] = 0;
}
}
+
return $ids;
}
}
$res = $dbr->select( $table, $fields, $conds, $caller );
wfProfileOut( __METHOD__ );
+
return $res;
}
$genderCache = GenderCache::singleton();
$genderCache->doLinkBatch( $this->data, $this->caller );
+
return true;
}
return self::$instance;
}
self::$instance = new LinkCache;
+
return self::$instance;
}
/**
* Add a link for the title to the link cache
*
- * @param $id Integer: page's ID
- * @param $title Title object
- * @param $len Integer: text's length
- * @param $redir Integer: whether the page is a redirect
- * @param $revision Integer: latest revision's ID
- * @param $model Integer: latest revision's content model ID
+ * @param int $id Page's ID
+ * @param Title $title
+ * @param int $len Text's length
+ * @param int $redir Whether the page is a redirect
+ * @param int $revision Latest revision's ID
+ * @param int $model Latest revision's content model ID
*/
- public function addGoodLinkObj( $id, $title, $len = -1, $redir = null, $revision = false, $model = false ) {
+ public function addGoodLinkObj( $id, $title, $len = -1, $redir = null,
+ $revision = 0, $model = 0
+ ) {
$dbkey = $title->getPrefixedDBkey();
- $this->mGoodLinks[$dbkey] = intval( $id );
+ $this->mGoodLinks[$dbkey] = (int)$id;
$this->mGoodLinkFields[$dbkey] = array(
- 'length' => intval( $len ),
- 'redirect' => intval( $redir ),
- 'revision' => intval( $revision ),
- 'model' => intval( $model ) );
+ 'length' => (int)$len,
+ 'redirect' => (int)$redir,
+ 'revision' => (int)$revision,
+ 'model' => (int)$model
+ );
}
/**
$key = $nt->getPrefixedDBkey();
if ( $this->isBadLink( $key ) || $nt->isExternal() ) {
wfProfileOut( __METHOD__ );
+
return 0;
}
$id = $this->getGoodLinkID( $key );
if ( $id != 0 ) {
wfProfileOut( __METHOD__ );
+
return $id;
}
if ( $key === '' ) {
wfProfileOut( __METHOD__ );
+
return 0;
}
}
wfProfileOut( __METHOD__ );
+
return $id;
}
*/
class LocalisationCache {
/** Configuration associative array */
- var $conf;
+ private $conf;
/**
* True if recaching should only be done on an explicit call to recache().
* Setting this reduces the overhead of cache freshness checking, which
* requires doing a stat() for every extension i18n file.
*/
- var $manualRecache = false;
+ private $manualRecache = false;
/**
* True to treat all files as expired until they are regenerated by this object.
*/
- var $forceRecache = false;
+ private $forceRecache = false;
/**
* The cache data. 3-d array, where the first key is the language code,
* an item specific subkey index. Some items are not arrays and so for those
* items, there are no subkeys.
*/
- var $data = array();
+ protected $data = array();
/**
* The persistent store object. An instance of LCStore.
*
* @var LCStore
*/
- var $store;
+ private $store;
/**
* A 2-d associative array, code/key, where presence indicates that the item
* For split items, if set, this indicates that all of the subitems have been
* loaded.
*/
- var $loadedItems = array();
+ private $loadedItems = array();
/**
* A 3-d associative array, code/key/subkey, where presence indicates that
* the subitem is loaded. Only used for the split items, i.e. messages.
*/
- var $loadedSubitems = array();
+ private $loadedSubitems = array();
/**
* An array where presence of a key indicates that that language has been
* initialised. Initialisation includes checking for cache expiry and doing
* any necessary updates.
*/
- var $initialisedLangs = array();
+ private $initialisedLangs = array();
/**
* An array mapping non-existent pseudo-languages to fallback languages. This
* is filled by initShallowFallback() when data is requested from a language
* that lacks a Messages*.php file.
*/
- var $shallowFallbacks = array();
+ private $shallowFallbacks = array();
/**
* An array where the keys are codes that have been recached by this instance.
*/
- var $recachedLangs = array();
+ private $recachedLangs = array();
/**
* All item keys
* Associative array of cached plural rules. The key is the language code,
* the value is an array of plural rules for that language.
*/
- var $pluralRules = null;
+ private $pluralRules = null;
/**
* Associative array of cached plural rule types. The key is the language
* example, {{plural:count|wordform1|wordform2|wordform3}}, rather than
* {{plural:count|one=wordform1|two=wordform2|many=wordform3}}.
*/
- var $pluralRuleTypes = null;
+ private $pluralRuleTypes = null;
- var $mergeableKeys = null;
+ private $mergeableKeys = null;
/**
* Constructor.
switch ( $conf['store'] ) {
case 'files':
case 'file':
- $storeClass = 'LCStore_CDB';
+ $storeClass = 'LCStoreCDB';
break;
case 'db':
- $storeClass = 'LCStore_DB';
+ $storeClass = 'LCStoreDB';
break;
case 'accel':
- $storeClass = 'LCStore_Accel';
+ $storeClass = 'LCStoreAccel';
break;
case 'detect':
- $storeClass = $wgCacheDirectory ? 'LCStore_CDB' : 'LCStore_DB';
+ $storeClass = $wgCacheDirectory ? 'LCStoreCDB' : 'LCStoreDB';
break;
default:
throw new MWException(
self::$magicWordKeys
) );
}
+
return isset( $this->mergeableKeys[$key] );
}
*/
public function getSubitem( $code, $key, $subkey ) {
if ( !isset( $this->loadedSubitems[$code][$key][$subkey] ) &&
- !isset( $this->loadedItems[$code][$key] ) ) {
+ !isset( $this->loadedItems[$code][$key] )
+ ) {
wfProfileIn( __METHOD__ . '-load' );
$this->loadSubitem( $code, $key, $subkey );
wfProfileOut( __METHOD__ . '-load' );
if ( isset( $this->shallowFallbacks[$code] ) ) {
$this->loadItem( $this->shallowFallbacks[$code], $key );
+
return;
}
protected function loadSubitem( $code, $key, $subkey ) {
if ( !in_array( $key, self::$splitKeys ) ) {
$this->loadItem( $code, $key );
+
return;
}
// Check to see if initLanguage() loaded it for us
if ( isset( $this->loadedItems[$code][$key] ) ||
- isset( $this->loadedSubitems[$code][$key][$subkey] ) ) {
+ isset( $this->loadedSubitems[$code][$key][$subkey] )
+ ) {
return;
}
if ( isset( $this->shallowFallbacks[$code] ) ) {
$this->loadSubitem( $this->shallowFallbacks[$code], $key, $subkey );
+
return;
}
public function isExpired( $code ) {
if ( $this->forceRecache && !isset( $this->recachedLangs[$code] ) ) {
wfDebug( __METHOD__ . "($code): forced reload\n" );
+
return true;
}
$deps = $this->store->get( $code, 'deps' );
$keys = $this->store->get( $code, 'list' );
$preload = $this->store->get( $code, 'preload' );
- // Different keys may expire separately, at least in LCStore_Accel
+ // Different keys may expire separately, at least in LCStoreAccel
if ( $deps === null || $keys === null || $preload === null ) {
wfDebug( __METHOD__ . "($code): cache missing, need to make one\n" );
+
return true;
}
if ( !$dep instanceof CacheDependency || $dep->isExpired() ) {
wfDebug( __METHOD__ . "($code): cache for $code expired due to " .
get_class( $dep ) . "\n" );
+
return true;
}
}
# If the code is of the wrong form for a Messages*.php file, do a shallow fallback
if ( !Language::isValidBuiltInCode( $code ) ) {
$this->initShallowFallback( $code, 'en' );
+
return;
}
} else {
$this->initShallowFallback( $code, 'en' );
}
+
return;
}
'Please run maintenance/rebuildLocalisationCache.php.' );
}
$this->initShallowFallback( $code, 'en' );
+
return;
} else {
throw new MWException( 'Invalid or missing localisation cache.' );
throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
}
wfProfileOut( __METHOD__ );
+
return $data;
}
$compiledRules = CLDRPluralRuleEvaluator::compile( $rules );
} catch ( CLDRPluralRuleError $e ) {
wfDebugLog( 'l10n', $e->getMessage() . "\n" );
+
return array();
}
+
return $compiledRules;
}
$fileName = Language::getMessagesFileName( $code );
if ( !file_exists( $fileName ) ) {
wfProfileOut( __METHOD__ );
+
return false;
}
$deps['plurals-mw'] = new FileDependency( "$IP/languages/data/plurals-mediawiki.xml" );
wfProfileOut( __METHOD__ );
+
return $data;
}
foreach ( $data as $key => $value ) {
$this->mergeItem( $key, $coreData[$key], $value );
}
-
}
# Fill in the fallback if it's not there already
# Clear out the MessageBlobStore
# HACK: If using a null (i.e. disabled) storage backend, we
# can't write to the MessageBlobStore either
- if ( !$this->store instanceof LCStore_Null ) {
+ if ( !$this->store instanceof LCStoreNull ) {
MessageBlobStore::clear();
}
* Disable the storage backend
*/
public function disableBackend() {
- $this->store = new LCStore_Null;
+ $this->store = new LCStoreNull;
$this->manualRecache = false;
}
}
* This will work if one of XCache, WinCache or APC cacher is configured.
* (See ObjectCache.php)
*/
-class LCStore_Accel implements LCStore {
- var $currentLang;
- var $keys;
+class LCStoreAccel implements LCStore {
+ private $currentLang;
+ private $keys;
public function __construct() {
$this->cache = wfGetCache( CACHE_ACCEL );
public function get( $code, $key ) {
$k = wfMemcKey( 'l10n', $code, 'k', $key );
$r = $this->cache->get( $k );
+
return $r === false ? null : $r;
}
* LCStore implementation which uses the standard DB functions to store data.
* This will work on any MediaWiki installation.
*/
-class LCStore_DB implements LCStore {
- var $currentLang;
- var $writesDone = false;
+class LCStoreDB implements LCStore {
+ private $currentLang;
+ private $writesDone = false;
/**
* @var DatabaseBase
*/
- var $dbw;
- var $batch;
- var $readOnly = false;
+ private $dbw;
+ private $batch;
+ private $readOnly = false;
public function get( $code, $key ) {
if ( $this->writesDone ) {
if ( $this->dbw->wasReadOnlyError() ) {
$this->readOnly = true;
$this->dbw->rollback( __METHOD__ );
+
return;
} else {
throw $e;
*
* See Cdb.php and http://cr.yp.to/cdb.html
*/
-class LCStore_CDB implements LCStore {
- var $readers, $writer, $currentLang, $directory;
+class LCStoreCDB implements LCStore {
+ private $readers;
+ private $writer;
+ private $currentLang;
+ private $directory;
function __construct( $conf = array() ) {
global $wgCacheDirectory;
if ( $value === false ) {
return null;
}
+
return unserialize( $value );
}
}
if ( strval( $code ) === '' || strpos( $code, '/' ) !== false ) {
throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
}
+
return "{$this->directory}/l10n_cache-$code.cdb";
}
}
/**
* Null store backend, used to avoid DB errors during install
*/
-class LCStore_Null implements LCStore {
+class LCStoreNull implements LCStore {
public function get( $code, $key ) {
return null;
}
- public function startWrite( $code ) {}
- public function finishWrite() {}
- public function set( $key, $value ) {}
+ public function startWrite( $code ) {
+ }
+
+ public function finishWrite() {
+ }
+
+ public function set( $key, $value ) {
+ }
}
/**
* A localisation cache optimised for loading large amounts of data for many
* languages. Used by rebuildLocalisationCache.php.
*/
-class LocalisationCache_BulkLoad extends LocalisationCache {
+class LocalisationCacheBulkLoad extends LocalisationCache {
/**
* A cache of the contents of data files.
* Core files are serialized to avoid using ~1GB of RAM during a recache.
*/
- var $fileCache = array();
+ private $fileCache = array();
/**
* Most recently used languages. Uses the linked-list aspect of PHP hashtables
* to keep the most recently used language codes at the end of the array, and
* the language codes that are ready to be deleted at the beginning.
*/
- var $mruLangs = array();
+ private $mruLangs = array();
/**
* Maximum number of languages that may be loaded into $this->data
*/
- var $maxLoadedLangs = 10;
+ private $maxLoadedLangs = 10;
/**
* @param $fileName
public function getItem( $code, $key ) {
unset( $this->mruLangs[$code] );
$this->mruLangs[$code] = true;
+
return parent::getItem( $code, $key );
}
public function getSubitem( $code, $key, $subkey ) {
unset( $this->mruLangs[$code] );
$this->mruLangs[$code] = true;
+
return parent::getSubitem( $code, $key, $subkey );
}
$wgMsgCacheExpiry
);
}
+
return self::$instance;
}
$this->mParserOptions = new ParserOptions;
$this->mParserOptions->setEditSection( false );
}
+
return $this->mParserOptions;
}
$serialized .= fread( $file, 100000 );
}
fclose( $file );
+
return unserialize( $serialized );
} else {
fclose( $file );
+
return false; // Wrong hash
}
}
if ( !$file ) {
wfDebug( "Unable to open local cache file for writing\n" );
+
return;
}
wfDebug( __METHOD__ . ": disabled\n" );
$shownDisabled = true;
}
+
return true;
}
$info = implode( ', ', $where );
wfDebug( __METHOD__ . ": Loading $code... $info\n" );
wfProfileOut( __METHOD__ );
+
return $success;
}
$cache['VERSION'] = MSG_CACHE_VERSION;
$cache['EXPIRY'] = wfTimestamp( TS_MW, time() + $this->mExpiry );
wfProfileOut( __METHOD__ );
+
return $cache;
}
if ( $this->mDisable ) {
wfProfileOut( __METHOD__ );
+
return;
}
if ( wfTimestampNow() >= $cache['EXPIRY'] ) {
return true;
}
+
return false;
}
}
wfProfileOut( __METHOD__ );
+
return $success;
}
* "msg/lang".
*
* @throws MWException when given an invalid key
- * @return string|bool False if the message doesn't exist, otherwise the message (which can be empty)
+ * @return string|bool False if the message doesn't exist, otherwise the
+ * message (which can be empty)
*/
function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
global $wgContLang;
// Loop through each language in the fallback list until we find something useful
$lang = wfGetLangObj( $langcode );
- $message = $this->getMessageFromFallbackChain( $lang, $lckey, $uckey, !$this->mDisable && $useDB );
+ $message = $this->getMessageFromFallbackChain(
+ $lang,
+ $lckey,
+ $uckey,
+ !$this->mDisable && $useDB
+ );
// If we still have no message, maybe the key was in fact a full key so try that
if ( $message === false ) {
return $message;
}
- list( $fallbackChain, $siteFallbackChain ) = Language::getFallbacksIncludingSiteLanguage( $langcode );
+ list( $fallbackChain, $siteFallbackChain ) =
+ Language::getFallbacksIncludingSiteLanguage( $langcode );
// Next try checking the database for all of the fallback languages of the requested language.
if ( $useDB ) {
if ( $entry ) {
if ( substr( $entry, 0, 1 ) === ' ' ) {
$this->mCache[$code][$title] = $entry;
+
// The message exists, so make sure a string
// is returned.
return (string)substr( $entry, 1 );
} elseif ( $entry === '!NONEXISTENT' ) {
$this->mCache[$code][$title] = '!NONEXISTENT';
+
return false;
} else {
# Corrupt/obsolete entry, delete it
$this->mInParser = false;
$popts->setUserLang( $userlang );
}
+
return $message;
}
$this->mParser = clone $wgParser;
}
}
+
return $this->mParser;
}
$this->mInParser = false;
wfProfileOut( __METHOD__ );
+
return $res;
}
}
$message = implode( '/', $pieces );
+
return array( $message, $lang );
}
unset( $cache['EXPIRY'] );
// Remove any !NONEXISTENT keys
$cache = array_diff( $cache, array( '!NONEXISTENT' ) );
+
// Keys may appear with a capital first letter. lcfirst them.
return array_map( array( $wgContLang, 'lcfirst' ), array_keys( $cache ) );
}
if ( isset( $this->cache[$key][$prop] ) ) {
return ( $maxAge <= 0 || ( time() - $this->cacheTimes[$key][$prop] ) <= $maxAge );
}
+
return false;
}
} elseif ( $query === 'debug' && $val === 'false' ) {
continue;
}
+
return false;
}
+
return true; // cacheable
}
$this->getMissesRecent() >= self::MISS_THRESHOLD // many misses
);
}
+
return $this->mCacheWorthy;
}
}
if ( $instance === null ) {
$instance = new self();
}
+
return $instance;
}
- protected function __construct() {}
+ protected function __construct() {
+ }
/**
* Get a property of a user based on their user ID
wfDebug( __METHOD__ . ": querying DB for prop '$prop' for user ID '$userId'.\n" );
$this->doQuery( array( $userId ) ); // cache miss
}
+
return isset( $this->cache[$userId][$prop] )
? $this->cache[$userId][$prop]
: false; // user does not exist?
*/
class ChangesList extends ContextSource {
-
/**
* @var Skin
*/
public $skin;
protected $watchlist = false;
-
+ protected $lastdate;
protected $message;
+ protected $rc_cache;
+ protected $rcCacheIndex;
+ protected $rclistOpen;
+ protected $rcMoveIndex;
/**
* Changeslist constructor
*
- * @param $obj Skin or IContextSource
+ * @param Skin|IContextSource $obj
*/
public function __construct( $obj ) {
if ( $obj instanceof IContextSource ) {
* Fetch an appropriate changes list class for the specified context
* Some users might want to use an enhanced list format, for instance
*
- * @param $context IContextSource to use
- * @return ChangesList|EnhancedChangesList|OldChangesList derivative
+ * @param IContextSource $context
+ * @return ChangesList derivative
*/
public static function newFromContext( IContextSource $context ) {
$user = $context->getUser();
$list = null;
if ( wfRunHooks( 'FetchChangesList', array( $user, &$sk, &$list ) ) ) {
$new = $context->getRequest()->getBool( 'enhanced', $user->getOption( 'usenewrc' ) );
+
return $new ? new EnhancedChangesList( $context ) : new OldChangesList( $context );
} else {
return $list;
* Returns the appropriate flags for new page, minor change and patrolling
* @param array $flags Associative array of 'flag' => Bool
* @param string $nothing to use for empty space
- * @return String
+ * @return string
*/
public function recentChangesFlags( $flags, $nothing = ' ' ) {
global $wgRecentChangesFlags;
? self::flag( $flag )
: $nothing;
}
+
return $f;
}
* "!" respectively, plus it will have an appropriate title and class.
*
* @param string $flag One key of $wgRecentChangesFlags
- * @return String: Raw HTML
+ * @return string Raw HTML
*/
public static function flag( $flag ) {
static $flagInfos = null;
$flag = $map[$flag];
}
- return "<abbr class='" . $flagInfos[$flag]['class'] . "' title='" . $flagInfos[$flag]['title'] . "'>" .
- $flagInfos[$flag]['letter'] .
+ return "<abbr class='" . $flagInfos[$flag]['class'] . "' title='" .
+ $flagInfos[$flag]['title'] . "'>" . $flagInfos[$flag]['letter'] .
'</abbr>';
}
/**
* Returns text for the start of the tabular part of RC
- * @return String
+ * @return string
*/
public function beginRecentChangesList() {
$this->rc_cache = array();
$this->lastdate = '';
$this->rclistOpen = false;
$this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' );
+
return '';
}
/**
* Show formatted char difference
- * @param $old Integer: bytes
- * @param $new Integer: bytes
- * @param $context IContextSource context to use
- * @return String
+ * @param int $old Number of bytes
+ * @param int $new Number of bytes
+ * @param IContextSource $context
+ * @return string
*/
public static function showCharacterDifference( $old, $new, IContextSource $context = null ) {
global $wgRCChangedSizeThreshold, $wgMiserMode;
if ( $szdiff === 0 ) {
$formattedSizeClass = 'mw-plusminus-null';
- }
- if ( $szdiff > 0 ) {
+ } elseif ( $szdiff > 0 ) {
$formattedSize = '+' . $formattedSize;
$formattedSizeClass = 'mw-plusminus-pos';
- }
- if ( $szdiff < 0 ) {
+ } else {
$formattedSizeClass = 'mw-plusminus-neg';
}
'action' => 'history'
)
);
- $s .= $this->msg( 'parentheses' )->rawParams( $diffhist )->escaped() . ' <span class="mw-changeslist-separator">. .</span> ';
+ // @todo FIXME: Hard coded ". .". Is there a message for this? Should there be?
+ $s .= $this->msg( 'parentheses' )->rawParams( $diffhist )->escaped() .
+ ' <span class="mw-changeslist-separator">. .</span> ';
}
/**
* @return string HTML fragment
*/
public function getTimestamp( $rc ) {
+ // @todo FIXME: Hard coded ". .". Is there a message for this? Should there be?
return $this->message['semicolon-separator'] . '<span class="mw-changeslist-date">' .
- $this->getLanguage()->userTime( $rc->mAttribs['rc_timestamp'], $this->getUser() ) . '</span> <span class="mw-changeslist-separator">. .</span> ';
+ $this->getLanguage()->userTime(
+ $rc->mAttribs['rc_timestamp'],
+ $this->getUser()
+ ) . '</span> <span class="mw-changeslist-separator">. .</span> ';
}
/**
*/
public function insertUserRelatedLinks( &$s, &$rc ) {
if ( $this->isDeleted( $rc, Revision::DELETED_USER ) ) {
- $s .= ' <span class="history-deleted">' . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
+ $s .= ' <span class="history-deleted">' .
+ $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
} else {
$s .= $this->getLanguage()->getDirMark() . Linker::userLink( $rc->mAttribs['rc_user'],
$rc->mAttribs['rc_user_text'] );
$formatter->setContext( $this->getContext() );
$formatter->setShowUserToolLinks( true );
$mark = $this->getLanguage()->getDirMark();
+
return $formatter->getActionText() . " $mark" . $formatter->getComment();
}
public function insertComment( $rc ) {
if ( $rc->mAttribs['rc_type'] != RC_MOVE && $rc->mAttribs['rc_type'] != RC_MOVE_OVER_REDIRECT ) {
if ( $this->isDeleted( $rc, Revision::DELETED_COMMENT ) ) {
- return ' <span class="history-deleted">' . $this->msg( 'rev-deleted-comment' )->escaped() . '</span>';
+ return ' <span class="history-deleted">' .
+ $this->msg( 'rev-deleted-comment' )->escaped() . '</span>';
} else {
return Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() );
}
}
+
return '';
}
/**
* Returns the string which indicates the number of watching users
+ * @param int $count Number of user watching a page
* @return string
*/
protected function numberofWatchingusers( $count ) {
static $cache = array();
if ( $count > 0 ) {
if ( !isset( $cache[$count] ) ) {
- $cache[$count] = $this->msg( 'number_of_watching_users_RCview' )->numParams( $count )->escaped();
+ $cache[$count] = $this->msg( 'number_of_watching_users_RCview' )
+ ->numParams( $count )->escaped();
}
+
return $cache[$count];
} else {
return '';
/**
* Determine if said field of a revision is hidden
- * @param $rc RCCacheEntry
- * @param $field Integer: one of DELETED_* bitfield constants
- * @return Boolean
+ * @param RCCacheEntry|RecentChange $rc
+ * @param int $field One of DELETED_* bitfield constants
+ * @return bool
*/
public static function isDeleted( $rc, $field ) {
return ( $rc->mAttribs['rc_deleted'] & $field ) == $field;
/**
* Determine if the current user is allowed to view a particular
* field of this revision, if it's marked as deleted.
- * @param $rc RCCacheEntry
- * @param $field Integer
- * @param $user User object to check, or null to use $wgUser
- * @return Boolean
+ * @param RCCacheEntry|RecentChange $rc
+ * @param int $field
+ * @param User $user User object to check, or null to use $wgUser
+ * @return bool
*/
public static function userCan( $rc, $field, User $user = null ) {
if ( $rc->mAttribs['rc_type'] == RC_LOG ) {
* @param $rc RecentChange
*/
public function insertRollback( &$s, &$rc ) {
- if ( $rc->mAttribs['rc_type'] == RC_EDIT && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) {
+ if ( $rc->mAttribs['rc_type'] == RC_EDIT
+ && $rc->mAttribs['rc_this_oldid']
+ && $rc->mAttribs['rc_cur_id']
+ ) {
$page = $rc->getTitle();
/** Check for rollback and edit permissions, disallow special pages, and only
- * show a link on the top-most revision */
- if ( $this->getUser()->isAllowed( 'rollback' ) && $rc->mAttribs['page_latest'] == $rc->mAttribs['rc_this_oldid'] )
- {
+ * show a link on the top-most revision */
+ if ( $this->getUser()->isAllowed( 'rollback' )
+ && $rc->mAttribs['page_latest'] == $rc->mAttribs['rc_this_oldid']
+ ) {
$rev = new Revision( array(
'title' => $page,
'id' => $rc->mAttribs['rc_this_oldid'],
return;
}
- list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow( $rc->mAttribs['ts_tags'], 'changeslist' );
+ list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
+ $rc->mAttribs['ts_tags'],
+ 'changeslist'
+ );
$classes = array_merge( $classes, $newClasses );
$s .= ' ' . $tagSummary;
}
$logtitle = SpecialPage::getTitleFor( 'Log', $logType );
$logpage = new LogPage( $logType );
$logname = $logpage->getName()->escaped();
- $clink = $this->msg( 'parentheses' )->rawParams( Linker::linkKnown( $logtitle, $logname ) )->escaped();
+ $clink = $this->msg( 'parentheses' )
+ ->rawParams( Linker::linkKnown( $logtitle, $logname ) )->escaped();
} else {
$clink = Linker::link( $cacheEntry->getTitle() );
}
# Make user links
if ( $this->isDeleted( $cacheEntry, Revision::DELETED_USER ) ) {
- $cacheEntry->userlink = ' <span class="history-deleted">' . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
+ $cacheEntry->userlink = ' <span class="history-deleted">' .
+ $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
} else {
$cacheEntry->userlink = Linker::userLink(
$cacheEntry->mAttribs['rc_user'],
if ( $block[0]->mAttribs['rc_log_type'] ) {
# Log entry
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
- . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
+ . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
} else {
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
- . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
+ . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
}
$classes[] = $block[0]->watched && $block[0]->mAttribs['rc_timestamp'] >= $block[0]->watched
? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
$text = $userlink;
$text .= $this->getLanguage()->getDirMark();
if ( $count > 1 ) {
- $text .= ' ' . $this->msg( 'parentheses' )->rawParams( $this->getLanguage()->formatNum( $count ) . '×' )->escaped();
+ // @todo FIXME: Hardcoded '×'. Should be a message.
+ $formattedCount = $this->getLanguage()->formatNum( $count ) . '×';
+ $text .= ' ' . $this->msg( 'parentheses' )->rawParams( $formattedCount )->escaped();
}
array_push( $users, $text );
}
implode( $this->message['semicolon-separator'], $users )
)->escaped() . '</span>';
- $tl = '<span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space"></span>';
+ $tl = '<span class="mw-collapsible-toggle mw-collapsible-arrow ' .
+ 'mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space"></span>';
$r .= "<td>$tl</td>";
# Main line
# Article link
if ( $namehidden ) {
- $r .= ' <span class="history-deleted">' . $this->msg( 'rev-deleted-event' )->escaped() . '</span>';
+ $r .= ' <span class="history-deleted">' .
+ $this->msg( 'rev-deleted-event' )->escaped() . '</span>';
} elseif ( $allLogs ) {
$r .= $this->maybeWatchedLink( $block[0]->link, $block[0]->watched );
} else {
} else {
$link = Linker::linkKnown(
- $rcObj->getTitle(),
- $rcObj->timestamp,
- array(),
- $params
- );
+ $rcObj->getTitle(),
+ $rcObj->timestamp,
+ array(),
+ $params
+ );
if ( $this->isDeleted( $rcObj, Revision::DELETED_TEXT ) ) {
$link = '<span class="history-deleted">' . $link . '</span> ';
}
$r .= $link . '</span>';
if ( !$type == RC_LOG || $type == RC_NEW ) {
- $r .= ' ' . $this->msg( 'parentheses' )->rawParams( $rcObj->curlink . $this->message['pipe-separator'] . $rcObj->lastlink )->escaped();
+ $r .= ' ' . $this->msg( 'parentheses' )->rawParams(
+ $rcObj->curlink .
+ $this->message['pipe-separator'] .
+ $rcObj->lastlink
+ )->escaped();
}
$r .= ' <span class="mw-changeslist-separator">. .</span> ';
$encUrl = htmlspecialchars( $wgStylePath . '/common/images/Arr_' . $dir . '.png' );
$encAlt = htmlspecialchars( $alt );
$encTitle = htmlspecialchars( $title );
+
return "<img src=\"$encUrl\" width=\"12\" height=\"12\" alt=\"$encAlt\" title=\"$encTitle\" />";
}
*/
protected function sideArrow() {
$dir = $this->getLanguage()->isRTL() ? 'l' : 'r';
+
return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() );
}
if ( $logType ) {
# Log entry
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
- . $logType . '-' . $rcObj->mAttribs['rc_title'] );
+ . $logType . '-' . $rcObj->mAttribs['rc_title'] );
} else {
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
- $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
+ $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
}
$classes[] = $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched
? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
$logPage = new LogPage( $logType );
$logTitle = SpecialPage::getTitleFor( 'Log', $logType );
$logName = $logPage->getName()->escaped();
- $r .= $this->msg( 'parentheses' )->rawParams( Linker::linkKnown( $logTitle, $logName ) )->escaped();
+ $r .= $this->msg( 'parentheses' )
+ ->rawParams( Linker::linkKnown( $logTitle, $logName ) )->escaped();
} else {
$this->insertArticleLink( $r, $rcObj, $rcObj->unpatrolled, $rcObj->watched );
}
# Diff and hist links
if ( $type != RC_LOG ) {
$query['action'] = 'history';
- $r .= ' ' . $this->msg( 'parentheses' )->rawParams( $rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
- $rcObj->getTitle(),
- $this->message['hist'],
- array(),
- $query
- ) )->escaped();
+ $r .= ' ' . $this->msg( 'parentheses' )
+ ->rawParams( $rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
+ $rcObj->getTitle(),
+ $this->message['hist'],
+ array(),
+ $query
+ ) )->escaped();
}
$r .= ' <span class="mw-changeslist-separator">. .</span> ';
# Character diff
* @return string
*/
protected function recentChangesBlock() {
- if ( count ( $this->rc_cache ) == 0 ) {
+ if ( count( $this->rc_cache ) == 0 ) {
return '';
}
public function endRecentChangesList() {
return $this->recentChangesBlock() . parent::endRecentChangesList();
}
-
}
* @file
*/
class OldChangesList extends ChangesList {
-
/**
* Format a line using the old system (aka without any javascript).
*
- * @param $rc RecentChange, passed by reference
+ * @param RecentChange $rc Passed by reference
* @param bool $watched (default false)
* @param int $linenumber (default null)
*
}
if ( $this->watchlist ) {
- $classes[] = Sanitizer::escapeClass( 'watchlist-' . $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
+ $classes[] = Sanitizer::escapeClass( 'watchlist-' .
+ $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
}
if ( !wfRunHooks( 'OldChangesListRecentChangesLine', array( &$this, &$s, $rc, &$classes ) ) ) {
wfProfileOut( __METHOD__ );
+
return false;
}
wfProfileOut( __METHOD__ );
+
return "$dateheader<li class=\"" . implode( ' ', $classes ) . "\">" . $s . "</li>\n";
}
}
* @file
*/
class RCCacheEntry extends RecentChange {
- var $secureName, $link;
- var $curlink, $difflink, $lastlink, $usertalklink, $versionlink;
- var $userlink, $timestamp, $watched;
+ public $curlink;
+ public $difflink;
+ public $lastlink;
+ public $link;
+ public $timestamp;
+ public $unpatrolled;
+ public $userlink;
+ public $usertalklink;
+ public $watched;
/**
* @param $rc RecentChange
$rc2 = new RCCacheEntry;
$rc2->mAttribs = $rc->mAttribs;
$rc2->mExtra = $rc->mExtra;
+
return $rc2;
}
}
* @todo document functions and variables
*/
class RecentChange {
-
// Constants for the rc_source field. Extensions may also have
// their own source constants.
const SRC_EDIT = 'mw.edit';
const SRC_LOG = 'mw.log';
const SRC_EXTERNAL = 'mw.external'; // obsolete
- var $mAttribs = array(), $mExtra = array();
+ public $mAttribs = array();
+ public $mExtra = array();
/**
* @var Title
*/
- var $mTitle = false;
+ public $mTitle = false;
/**
* @var User
*/
private $mPerformer = false;
+ public $numberofWatchingusers = 0; # Dummy to prevent error message in SpecialRecentchangeslinked
+ public $notificationtimestamp;
+
/**
- * @var Title
+ * @var int Line number of recent change. Default -1.
*/
- var $mMovedToTitle = false;
- var $numberofWatchingusers = 0; # Dummy to prevent error message in SpecialRecentchangeslinked
- var $notificationtimestamp;
+ public $counter = -1;
# Factory methods
public static function newFromRow( $row ) {
$rc = new RecentChange;
$rc->loadFromRow( $row );
+
return $rc;
}
/**
+ * No uses left in Gerrit on 2013-11-19.
* @deprecated in 1.22
* @param $row
* @return RecentChange
$rc->loadFromCurRow( $row );
$rc->notificationtimestamp = false;
$rc->numberofWatchingusers = false;
+
return $rc;
}
if ( $this->mTitle === false ) {
$this->mTitle = Title::makeTitle( $this->mAttribs['rc_namespace'], $this->mAttribs['rc_title'] );
}
+
return $this->mTitle;
}
$this->mPerformer = User::newFromName( $this->mAttribs['rc_user_text'], false );
}
}
+
return $this->mPerformer;
}
'add_interwiki_prefix' => $wgRC2UDPInterwikiPrefix,
);
- return $engine->send( $feed, $line );
+ $engine->send( $feed, $line );
}
/**
continue;
}
+ /** @var $formatter RCFeedFormatter */
$formatter = new $feed['formatter']();
$line = $formatter->getLine( $feed, $this, $actionComment );
/**
* Gets the stream engine object for a given URI from $wgRCEngines
*
- * @param $uri string URI to get the engine object for
+ * @param string $uri URI to get the engine object for
+ * @throws MWException
* @return object The engine object
*/
private static function getEngine( $uri ) {
*/
public static function cleanupForIRC( $text ) {
wfDeprecated( __METHOD__, '1.22' );
+
return IRCColourfulRCFeedFormatter::cleanupForIRC( $text );
}
if ( !$change instanceof RecentChange ) {
return null;
}
+
return $change->doMarkPatrolled( $wgUser, $auto );
}
/**
* Mark this RecentChange as patrolled
*
- * NOTE: Can also return 'rcpatroldisabled', 'hookaborted' and 'markedaspatrollederror-noautopatrol' as errors
+ * NOTE: Can also return 'rcpatroldisabled', 'hookaborted' and
+ * 'markedaspatrollederror-noautopatrol' as errors
* @param $user User object doing the action
* @param $auto Boolean: for automatic patrol
* @return array of permissions errors, see Title::getUserPermissionsErrors()
}
// Users without the 'autopatrol' right can't patrol their
// own revisions
- if ( $user->getName() == $this->getAttribute( 'rc_user_text' ) && !$user->isAllowed( 'autopatrol' ) ) {
+ if ( $user->getName() == $this->getAttribute( 'rc_user_text' )
+ && !$user->isAllowed( 'autopatrol' )
+ ) {
$errors[] = array( 'markedaspatrollederror-noautopatrol' );
}
if ( $errors ) {
// Log this patrol event
PatrolLog::record( $this, $auto, $user );
wfRunHooks( 'MarkPatrolledComplete', array( $this->getAttribute( 'rc_id' ), &$user, false ) );
+
return array();
}
// Invalidate the page cache after the page has been patrolled
// to make sure that the Patrol link isn't visible any longer!
$this->getTitle()->invalidateCache();
+
return $dbw->affectedRows();
}
$rc->mTitle = $title;
$rc->mPerformer = $user;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_namespace' => $title->getNamespace(),
- 'rc_title' => $title->getDBkey(),
- 'rc_type' => RC_EDIT,
- 'rc_source' => self::SRC_EDIT,
- 'rc_minor' => $minor ? 1 : 0,
- 'rc_cur_id' => $title->getArticleID(),
- 'rc_user' => $user->getId(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $comment,
+ 'rc_timestamp' => $timestamp,
+ 'rc_namespace' => $title->getNamespace(),
+ 'rc_title' => $title->getDBkey(),
+ 'rc_type' => RC_EDIT,
+ 'rc_source' => self::SRC_EDIT,
+ 'rc_minor' => $minor ? 1 : 0,
+ 'rc_cur_id' => $title->getArticleID(),
+ 'rc_user' => $user->getId(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $comment,
'rc_this_oldid' => $newId,
'rc_last_oldid' => $oldId,
- 'rc_bot' => $bot ? 1 : 0,
- 'rc_ip' => self::checkIPAddress( $ip ),
- 'rc_patrolled' => intval( $patrol ),
- 'rc_new' => 0, # obsolete
- 'rc_old_len' => $oldSize,
- 'rc_new_len' => $newSize,
- 'rc_deleted' => 0,
- 'rc_logid' => 0,
- 'rc_log_type' => null,
+ 'rc_bot' => $bot ? 1 : 0,
+ 'rc_ip' => self::checkIPAddress( $ip ),
+ 'rc_patrolled' => intval( $patrol ),
+ 'rc_new' => 0, # obsolete
+ 'rc_old_len' => $oldSize,
+ 'rc_new_len' => $newSize,
+ 'rc_deleted' => 0,
+ 'rc_logid' => 0,
+ 'rc_log_type' => null,
'rc_log_action' => '',
- 'rc_params' => ''
+ 'rc_params' => ''
);
$rc->mExtra = array(
'prefixedDBkey' => $title->getPrefixedDBkey(),
'lastTimestamp' => $lastTimestamp,
- 'oldSize' => $oldSize,
- 'newSize' => $newSize,
- 'pageStatus' => 'changed'
+ 'oldSize' => $oldSize,
+ 'newSize' => $newSize,
+ 'pageStatus' => 'changed'
);
$rc->save();
+
return $rc;
}
$rc->mTitle = $title;
$rc->mPerformer = $user;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_namespace' => $title->getNamespace(),
- 'rc_title' => $title->getDBkey(),
- 'rc_type' => RC_NEW,
- 'rc_source' => self::SRC_NEW,
- 'rc_minor' => $minor ? 1 : 0,
- 'rc_cur_id' => $title->getArticleID(),
- 'rc_user' => $user->getId(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $comment,
- 'rc_this_oldid' => $newId,
- 'rc_last_oldid' => 0,
- 'rc_bot' => $bot ? 1 : 0,
- 'rc_ip' => self::checkIPAddress( $ip ),
- 'rc_patrolled' => intval( $patrol ),
- 'rc_new' => 1, # obsolete
- 'rc_old_len' => 0,
- 'rc_new_len' => $size,
- 'rc_deleted' => 0,
- 'rc_logid' => 0,
- 'rc_log_type' => null,
- 'rc_log_action' => '',
- 'rc_params' => ''
+ 'rc_timestamp' => $timestamp,
+ 'rc_namespace' => $title->getNamespace(),
+ 'rc_title' => $title->getDBkey(),
+ 'rc_type' => RC_NEW,
+ 'rc_source' => self::SRC_NEW,
+ 'rc_minor' => $minor ? 1 : 0,
+ 'rc_cur_id' => $title->getArticleID(),
+ 'rc_user' => $user->getId(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $comment,
+ 'rc_this_oldid' => $newId,
+ 'rc_last_oldid' => 0,
+ 'rc_bot' => $bot ? 1 : 0,
+ 'rc_ip' => self::checkIPAddress( $ip ),
+ 'rc_patrolled' => intval( $patrol ),
+ 'rc_new' => 1, # obsolete
+ 'rc_old_len' => 0,
+ 'rc_new_len' => $size,
+ 'rc_deleted' => 0,
+ 'rc_logid' => 0,
+ 'rc_log_type' => null,
+ 'rc_log_action' => '',
+ 'rc_params' => ''
);
$rc->mExtra = array(
'pageStatus' => 'created'
);
$rc->save();
+
return $rc;
}
* @return bool
*/
public static function notifyLog( $timestamp, &$title, &$user, $actionComment, $ip, $type,
- $action, $target, $logComment, $params, $newId = 0, $actionCommentIRC = '' )
- {
+ $action, $target, $logComment, $params, $newId = 0, $actionCommentIRC = ''
+ ) {
global $wgLogRestrictions;
+
# Don't add private logs to RC!
if ( isset( $wgLogRestrictions[$type] ) && $wgLogRestrictions[$type] != '*' ) {
return false;
$rc = self::newLogEntry( $timestamp, $title, $user, $actionComment, $ip, $type, $action,
$target, $logComment, $params, $newId, $actionCommentIRC );
$rc->save();
+
return true;
}
$rc->mTitle = $target;
$rc->mPerformer = $user;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_namespace' => $target->getNamespace(),
- 'rc_title' => $target->getDBkey(),
- 'rc_type' => RC_LOG,
- 'rc_source' => self::SRC_LOG,
- 'rc_minor' => 0,
- 'rc_cur_id' => $target->getArticleID(),
- 'rc_user' => $user->getId(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $logComment,
+ 'rc_timestamp' => $timestamp,
+ 'rc_namespace' => $target->getNamespace(),
+ 'rc_title' => $target->getDBkey(),
+ 'rc_type' => RC_LOG,
+ 'rc_source' => self::SRC_LOG,
+ 'rc_minor' => 0,
+ 'rc_cur_id' => $target->getArticleID(),
+ 'rc_user' => $user->getId(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $logComment,
'rc_this_oldid' => 0,
'rc_last_oldid' => 0,
- 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot', true ) : 0,
- 'rc_ip' => self::checkIPAddress( $ip ),
- 'rc_patrolled' => 1,
- 'rc_new' => 0, # obsolete
- 'rc_old_len' => null,
- 'rc_new_len' => null,
- 'rc_deleted' => 0,
- 'rc_logid' => $newId,
- 'rc_log_type' => $type,
+ 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot', true ) : 0,
+ 'rc_ip' => self::checkIPAddress( $ip ),
+ 'rc_patrolled' => 1,
+ 'rc_new' => 0, # obsolete
+ 'rc_old_len' => null,
+ 'rc_new_len' => null,
+ 'rc_deleted' => 0,
+ 'rc_logid' => $newId,
+ 'rc_log_type' => $type,
'rc_log_action' => $action,
- 'rc_params' => $params
+ 'rc_params' => $params
);
$rc->mExtra = array(
'prefixedDBkey' => $title->getPrefixedDBkey(),
'lastTimestamp' => 0,
'actionComment' => $actionComment, // the comment appended to the action, passed from LogPage
- 'pageStatus' => $pageStatus,
+ 'pageStatus' => $pageStatus,
'actionCommentIRC' => $actionCommentIRC
);
+
return $rc;
}
} else {
$trail = '';
}
+
return $trail;
}
if ( $old === null || $new === null ) {
return '';
}
+
return ChangesList::showCharacterDifference( $old, $new );
}
$method = __METHOD__;
$dbw = wfGetDB( DB_MASTER );
- $dbw->onTransactionIdle( function() use ( $dbw, $method ) {
+ $dbw->onTransactionIdle( function () use ( $dbw, $method ) {
global $wgRCMaxAge;
$cutoff = $dbw->timestamp( time() - $wgRCMaxAge );
global $wgRequest;
if ( $ip ) {
if ( !IP::isIPAddress( $ip ) ) {
- throw new MWException( "Attempt to write \"" . $ip . "\" as an IP address into recent changes" );
+ throw new MWException( "Attempt to write \"" . $ip .
+ "\" as an IP address into recent changes" );
}
} else {
$ip = $wgRequest->getIP();
$ip = '';
}
}
+
return $ip;
}
*/
public static function isInRCLifespan( $timestamp, $tolerance = 0 ) {
global $wgRCMaxAge;
+
return wfTimestamp( TS_UNIX, $timestamp ) > time() - $tolerance - $wgRCMaxAge;
}
}
protected $serializer;
/** @} */
- /** @var integer Current idle pool size */
+ /** @var int Current idle pool size */
protected $idlePoolSize = 0;
- /** @var Array (server name => ((connection info array),...) */
+ /** @var array (server name => ((connection info array),...) */
protected $connections = array();
- /** @var Array (server name => UNIX timestamp) */
+ /** @var array (server name => UNIX timestamp) */
protected $downServers = array();
- /** @var Array (pool ID => RedisConnectionPool) */
+ /** @var array (pool ID => RedisConnectionPool) */
protected static $instances = array();
/** integer; seconds to cache servers as "down". */
/**
* @param array $options
+ * @throws MWException
*/
protected function __construct( array $options ) {
if ( !class_exists( 'Redis' ) ) {
}
/**
- * @param $options Array
- * @return Array
+ * @param array $options
+ * @return array
*/
protected static function applyDefaultConfig( array $options ) {
if ( !isset( $options['connectTimeout'] ) ) {
if ( !isset( $options['password'] ) ) {
$options['password'] = null;
}
+
return $options;
}
/**
- * @param $options Array
+ * @param array $options
* $options include:
* - connectTimeout : The timeout for new connections, in seconds.
* Optional, default is 1 second.
self::$instances[$id] = new self( $options );
wfDebug( "Creating a new " . __CLASS__ . " instance with id $id." );
}
+
return self::$instances[$id];
}
// Server is dead
wfDebug( "server $server is marked down for another " .
( $this->downServers[$server] - $now ) . " seconds, can't get connection" );
+
return false;
}
}
if ( $connection['free'] ) {
$connection['free'] = false;
--$this->idlePoolSize;
+
return new RedisConnRef( $this, $server, $connection['conn'] );
}
}
wfDebugLog( 'redis', "Could not connect to server $server" );
// Mark server down for some time to avoid further timeouts
$this->downServers[$server] = time() + self::SERVER_DOWN_TTL;
+
return false;
}
if ( $this->password !== null ) {
} catch ( RedisException $e ) {
$this->downServers[$server] = time() + self::SERVER_DOWN_TTL;
wfDebugLog( 'redis', "Redis exception: " . $e->getMessage() . "\n" );
+
return false;
}
if ( $conn ) {
$conn->setOption( Redis::OPT_SERIALIZER, $this->serializer );
$this->connections[$server][] = array( 'conn' => $conn, 'free' => false );
+
return new RedisConnRef( $this, $server, $conn );
} else {
return false;
/**
* Mark a connection to a server as free to return to the pool
*
- * @param $server string
- * @param $conn Redis
- * @return boolean
+ * @param string $server
+ * @param Redis $conn
+ * @return bool
*/
public function freeConnection( $server, Redis $conn ) {
$found = false;
/**
* Close any extra idle connections if there are more than the limit
- *
- * @return void
*/
protected function closeExcessIdleConections() {
if ( $this->idlePoolSize <= count( $this->connections ) ) {
return; // nothing to do (no more connections than servers)
}
- foreach ( $this->connections as $server => &$serverConnections ) {
+ foreach ( $this->connections as &$serverConnections ) {
foreach ( $serverConnections as $key => &$connection ) {
if ( $connection['free'] ) {
unset( $serverConnections[$key] );
* not. The safest response for us is to explicitly destroy the connection
* object and let it be reopened during the next request.
*
- * @param $server string
- * @param $cref RedisConnRef
- * @param $e RedisException
- * @return void
+ * @param string $server
+ * @param RedisConnRef $cref
+ * @param RedisException $e
*/
public function handleException( $server, RedisConnRef $cref, RedisException $e ) {
wfDebugLog( 'redis', "Redis exception on server $server: " . $e->getMessage() . "\n" );
if ( $this->password !== null ) {
if ( !$conn->auth( $this->password ) ) {
wfDebugLog( 'redis', "Authentication error connecting to $server" );
+
return false;
}
}
+
return true;
}
+
+ /**
+ * Make sure connections are closed for sanity
+ */
+ function __destruct() {
+ foreach ( $this->connections as $server => &$serverConnections ) {
+ foreach ( $serverConnections as $key => &$connection ) {
+ $connection['conn']->close();
+ }
+ }
+ }
}
/**
* Helper class to handle automatically marking connectons as reusable (via RAII pattern)
*
+ * This class simply wraps the Redis class and can be used the same way
+ *
* @ingroup Redis
* @since 1.21
*/
protected $lastError; // string
/**
- * @param $pool RedisConnectionPool
- * @param $server string
- * @param $conn Redis
+ * @param RedisConnectionPool $pool
+ * @param string $server
+ * @param Redis $conn
*/
public function __construct( RedisConnectionPool $pool, $server, Redis $conn ) {
$this->pool = $pool;
$this->conn = $conn;
}
+ /**
+ * @return string
+ * @since 1.23
+ */
+ public function getServer() {
+ return $this->server;
+ }
+
public function getLastError() {
return $this->lastError;
}
}
/**
- * @param RedisConnRef $conn
+ * @param Redis $conn
* @return bool
*/
public function isConnIdentical( Redis $conn ) {
* @ingroup Content
*/
abstract class AbstractContent implements Content {
-
/**
* Name of the content model this Content object represents.
* Use with CONTENT_MODEL_XXX constants
break;
}
// Redirects to some special pages are not permitted
- if ( $newtitle instanceOf Title && $newtitle->isValidRedirectTarget() ) {
+ if ( $newtitle instanceof Title && $newtitle->isValidRedirectTarget() ) {
// The new title passes the checks, so make that our current
// title so that further recursion can be checked
$title = $newtitle;
break;
}
}
+
return $titles;
}
*/
public function getUltimateRedirectTarget() {
$titles = $this->getRedirectChain();
+
return $titles ? array_pop( $titles ) : null;
}
* database after deletion.
*/
public function getDeletionUpdates( WikiPage $page,
- ParserOutput $parserOutput = null )
- {
+ ParserOutput $parserOutput = null
+ ) {
return array(
new LinksDeletionUpdate( $page ),
);
}
/**
- * This default implementation always returns false. Subclasses may override this to supply matching logic.
+ * This default implementation always returns false. Subclasses may override
+ * this to supply matching logic.
*
* @see Content::matchMagicWord
*
* This base implementation calls the hook ConvertContent to enable custom conversions.
* Subclasses may override this to implement conversion for "their" content model.
*
- * @param string $toModel the desired content model, use the CONTENT_MODEL_XXX flags.
- * @param string $lossy flag, set to "lossy" to allow lossy conversion. If lossy conversion is
+ * @param string $toModel the desired content model, use the CONTENT_MODEL_XXX flags.
+ * @param string $lossy flag, set to "lossy" to allow lossy conversion. If lossy conversion is
* not allowed, full round-trip conversion is expected to work without losing information.
*
* @return Content|bool A content object with the content model $toModel, or false if
$result = false;
wfRunHooks( 'ConvertContent', array( $this, $toModel, $lossy, &$result ) );
+
return $result;
}
}
* @ingroup Content
*/
interface Content {
-
/**
* @since 1.21
*
public function getParserOutput( Title $title,
$revId = null,
ParserOptions $options = null, $generateHtml = true );
+
// TODO: make RenderOutput and RenderOptions base classes
/**
*
* @param Title $target the new redirect target
*
- * @return Content a new Content object with the updated redirect (or $this if this Content object isn't a redirect)
+ * @return Content a new Content object with the updated redirect (or $this
+ * if this Content object isn't a redirect)
*/
public function updateRedirect( Title $target );
* This may be used to check the content's consistency with global state. This function should
* NOT write any information to the database.
*
- * Note that this method will usually be called inside the same transaction bracket that will be used
- * to save the new revision.
+ * Note that this method will usually be called inside the same transaction
+ * bracket that will be used to save the new revision.
*
- * Note that this method is called before any update to the page table is performed. This means that
- * $page may not yet know a page ID.
+ * Note that this method is called before any update to the page table is
+ * performed. This means that $page may not yet know a page ID.
*
* @since 1.21
*
* @param WikiPage $page The page to be saved.
- * @param int $flags bitfield for use with EDIT_XXX constants, see WikiPage::doEditContent()
- * @param int $baseRevId the ID of the current revision
- * @param User $user
+ * @param int $flags bitfield for use with EDIT_XXX constants, see WikiPage::doEditContent()
+ * @param int $baseRevId the ID of the current revision
+ * @param User $user
*
- * @return Status A status object indicating whether the content was successfully prepared for saving.
- * If the returned status indicates an error, a rollback will be performed and the
- * transaction aborted.
+ * @return Status A status object indicating whether the content was
+ * successfully prepared for saving. If the returned status indicates
+ * an error, a rollback will be performed and the transaction aborted.
*
* @see see WikiPage::doEditContent()
*/
* Converts this content object into another content object with the given content model,
* if that is possible.
*
- * @param string $toModel the desired content model, use the CONTENT_MODEL_XXX flags.
- * @param string $lossy flag, set to "lossy" to allow lossy conversion. If lossy conversion is
+ * @param string $toModel the desired content model, use the CONTENT_MODEL_XXX flags.
+ * @param string $lossy flag, set to "lossy" to allow lossy conversion. If lossy conversion is
* not allowed, full round-trip conversion is expected to work without losing information.
*
* @return Content|bool A content object with the content model $toModel, or false if
* that conversion is not supported.
*/
public function convert( $toModel, $lossy = '' );
-
- // TODO: ImagePage and CategoryPage interfere with per-content action handlers
- // TODO: nice&sane integration of GeSHi syntax highlighting
+ // @todo ImagePage and CategoryPage interfere with per-content action handlers
+ // @todo nice&sane integration of GeSHi syntax highlighting
// [11:59] <vvv> Hooks are ugly; make CodeHighlighter interface and a
// config to set the class which handles syntax highlighting
// [12:00] <vvv> And default it to a DummyHighlighter
* @ingroup Content
*/
class MWContentSerializationException extends MWException {
-
}
/**
* @ingroup Content
*/
abstract class ContentHandler {
-
/**
* Switch for enabling deprecation warnings. Used by ContentHandler::deprecated()
* and ContentHandler::runLegacyHooks().
* not be unserialized using $format.
*/
public static function makeContent( $text, Title $title = null,
- $modelId = null, $format = null )
- {
+ $modelId = null, $format = null
+ ) {
if ( is_null( $modelId ) ) {
if ( is_null( $title ) ) {
throw new MWException( "Must provide a Title object or a content model ID." );
}
$handler = ContentHandler::getForModelID( $modelId );
+
return $handler->unserializeContent( $text, $format );
}
*/
public static function getForTitle( Title $title ) {
$modelId = $title->getContentModel();
+
return ContentHandler::getForModelID( $modelId );
}
*/
public static function getForContent( Content $content ) {
$modelId = $content->getModel();
+
return ContentHandler::getForModelID( $modelId );
}
/**
- * @var Array A Cache of ContentHandler instances by model id
+ * @var array A Cache of ContentHandler instances by model id
*/
- static $handlers;
+ protected static $handlers;
/**
* Returns the ContentHandler singleton for the given model ID. Use the
$handler = new $class( $modelId );
if ( !( $handler instanceof ContentHandler ) ) {
- throw new MWException( "$class from \$wgContentHandlers is not compatible with ContentHandler" );
+ throw new MWException( "$class from \$wgContentHandlers is not " .
+ "compatible with ContentHandler" );
}
}
wfDebugLog( 'ContentHandler', 'Created handler for ' . $modelId
- . ': ' . get_class( $handler ) );
+ . ': ' . get_class( $handler ) );
ContentHandler::$handlers[$modelId] = $handler;
+
return ContentHandler::$handlers[$modelId];
}
}
$formats = array_unique( $formats );
+
return $formats;
}
/**
* Get the language in which the content of the given page is written.
*
- * This default implementation just returns $wgContLang (except for pages in the MediaWiki namespace)
+ * This default implementation just returns $wgContLang (except for pages
+ * in the MediaWiki namespace)
*
- * Note that the pages language is not cacheable, since it may in some cases depend on user settings.
+ * Note that the pages language is not cacheable, since it may in some
+ * cases depend on user settings.
*
* Also note that the page language may or may not depend on the actual content of the page,
* that is, this method may load the content in order to determine the language.
*
* @since 1.21
*
- * @param Title $title the page to determine the language for.
+ * @param Title $title the page to determine the language for.
* @param Content|null $content the page's content, if you have it handy, to avoid reloading it.
*
* @return Language the page's language
}
wfRunHooks( 'PageContentLanguage', array( $title, &$pageLang, $wgLang ) );
+
return wfGetLangObj( $pageLang );
}
*
* @since 1.21
*
- * @param Title $title the page to determine the language for.
+ * @param Title $title the page to determine the language for.
* @param Content|null $content the page's content, if you have it handy, to avoid reloading it.
*
* @return Language the page's language for viewing
if ( is_object( $rt ) ) {
if ( !is_object( $ot )
|| !$rt->equals( $ot )
- || $ot->getFragment() != $rt->getFragment() )
- {
+ || $ot->getFragment() != $rt->getFragment()
+ ) {
$truncatedtext = $newContent->getTextForSummary(
250
- - strlen( wfMessage( 'autoredircomment' )->inContentLanguage()->text() )
- - strlen( $rt->getFullText() ) );
+ - strlen( wfMessage( 'autoredircomment' )->inContentLanguage()->text() )
+ - strlen( $rt->getFullText() ) );
return wfMessage( 'autoredircomment', $rt->getFullText() )
- ->rawParams( $truncatedtext )->inContentLanguage()->text();
+ ->rawParams( $truncatedtext )->inContentLanguage()->text();
}
}
200 - strlen( wfMessage( 'autosumm-new' )->inContentLanguage()->text() ) );
return wfMessage( 'autosumm-new' )->rawParams( $truncatedtext )
- ->inContentLanguage()->text();
+ ->inContentLanguage()->text();
}
// Blanking auto-summaries
return wfMessage( 'autosumm-blank' )->inContentLanguage()->text();
} elseif ( !empty( $oldContent )
&& $oldContent->getSize() > 10 * $newContent->getSize()
- && $newContent->getSize() < 500 )
- {
+ && $newContent->getSize() < 500
+ ) {
// Removing more than 90% of the article
$truncatedtext = $newContent->getTextForSummary(
200 - strlen( wfMessage( 'autosumm-replace' )->inContentLanguage()->text() ) );
return wfMessage( 'autosumm-replace' )->rawParams( $truncatedtext )
- ->inContentLanguage()->text();
+ ->inContentLanguage()->text();
}
// If we reach this point, there's no applicable auto-summary for our
* Logs a deprecation warning, visible if $wgDevelopmentWarnings, but only if
* self::$enableDeprecationWarnings is set to true.
*
- * @param string $func The name of the deprecated function
- * @param string $version The version since the method is deprecated. Usually 1.21
- * for ContentHandler related stuff.
- * @param string|bool $component: Component to which the function belongs.
- * If false, it is assumed the function is in MediaWiki core.
+ * @param string $func The name of the deprecated function
+ * @param string $version The version since the method is deprecated. Usually 1.21
+ * for ContentHandler related stuff.
+ * @param string|bool $component : Component to which the function belongs.
+ * If false, it is assumed the function is in MediaWiki core.
*
* @see ContentHandler::$enableDeprecationWarnings
* @see wfDeprecated
* @see ContentHandler::$enableDeprecationWarnings
*/
public static function runLegacyHooks( $event, $args = array(),
- $warn = null ) {
+ $warn = null
+ ) {
if ( $warn === null ) {
$warn = self::$enableDeprecationWarnings;
wfRestoreWarnings();
- wfWarn( "Using obsolete hook $event via ContentHandler::runLegacyHooks()! Handlers: " . implode( ', ', $handlerInfo ), 2 );
+ wfWarn( "Using obsolete hook $event via ContentHandler::runLegacyHooks()! Handlers: " .
+ implode( ', ', $handlerInfo ), 2 );
}
// convert Content objects to text
* @ingroup Content
*/
class CssContentHandler extends TextContentHandler {
-
public function __construct( $modelId = CONTENT_MODEL_CSS ) {
parent::__construct( $modelId, array( CONTENT_FORMAT_CSS ) );
}
/**
* Returns the english language, because CSS is english, and should be handled as such.
*
+ * @param Title $title
+ * @param Content $content
* @return Language wfGetLangObj( 'en' )
*
* @see ContentHandler::getPageLanguage()
/**
* Returns the english language, because CSS is english, and should be handled as such.
*
+ * @param Title $title
+ * @param Content $content
* @return Language wfGetLangObj( 'en' )
*
* @see ContentHandler::getPageViewLanguage()
* @todo make ScriptContentHandler base class, do highlighting stuff there?
*/
class JavaScriptContentHandler extends TextContentHandler {
-
public function __construct( $modelId = CONTENT_MODEL_JAVASCRIPT ) {
parent::__construct( $modelId, array( CONTENT_FORMAT_JAVASCRIPT ) );
}
/**
* Returns the english language, because JS is english, and should be handled as such.
*
+ * @param Title $title
+ * @param Content $content
* @return Language wfGetLangObj( 'en' )
*
* @see ContentHandler::getPageLanguage()
/**
* Returns the english language, because JS is english, and should be handled as such.
*
+ * @param Title $title
+ * @param Content $content
* @return Language wfGetLangObj( 'en' )
*
* @see ContentHandler::getPageViewLanguage()
* @ingroup Content
*/
class MessageContent extends AbstractContent {
-
/**
* @var Message
*/
protected $mMessage;
/**
- * @param Message|String $msg A Message object, or a message key
- * @param array|null $params An optional array of message parameters
+ * @param Message|String $msg A Message object, or a message key
+ * @param array|null $params An optional array of message parameters
*/
public function __construct( $msg, $params = null ) {
# XXX: messages may be wikitext, html or plain text! and maybe even something else entirely.
/**
* @see Content::isCountable
*
+ * @param bool $hasLinks
* @return bool false
*/
public function isCountable( $hasLinks = null ) {
/**
* @see Content::getParserOutput
*
+ * @param Title $title
+ * @param int $revId Optional revision ID
+ * @param ParserOptions $options
+ * @param bool $generateHtml Wether to generate HTML
* @return ParserOutput
*/
public function getParserOutput(
}
$po = new ParserOutput( $html );
+
return $po;
}
}
* @ingroup Content
*/
class TextContent extends AbstractContent {
-
public function __construct( $text, $model_id = CONTENT_MODEL_TEXT ) {
parent::__construct( $model_id );
if ( $text === null || $text === false ) {
wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
- . "This may indicate an error in the caller's scope." );
+ . "This may indicate an error in the caller's scope." );
$text = '';
}
*/
public function getSize() {
$text = $this->getNativeData();
+
return strlen( $text );
}
*/
public function getNativeData() {
$text = $this->mText;
+
return $text;
}
/**
* Diff this content object with another content object.
*
- * @since 1.21diff
+ * @since 1.21
*
* @param $that Content: The other content object to compare this content
* object to.
* @param $lang Language: The language object to use for text segmentation.
* If not given, $wgContentLang is used.
*
- * @return DiffResult: A diff representing the changes that would have to be
+ * @return Diff A diff representing the changes that would have to be
* made to this content object to make it equal to $that.
*/
public function diff( Content $that, Language $lang = null ) {
}
$otext = $this->getNativeData();
- $ntext = $this->getNativeData();
+ $ntext = $that->getNativeData();
# Note: Use native PHP diff, external engines don't give us abstract output
$ota = explode( "\n", $lang->segmentForDiff( $otext ) );
$nta = explode( "\n", $lang->segmentForDiff( $ntext ) );
$diff = new Diff( $ota, $nta );
+
return $diff;
}
}
$po->setText( $html );
+
return $po;
}
* This implementation provides lossless conversion between content models based
* on TextContent.
*
- * @param string $toModel the desired content model, use the CONTENT_MODEL_XXX flags.
- * @param string $lossy flag, set to "lossy" to allow lossy conversion. If lossy conversion is
+ * @param string $toModel the desired content model, use the CONTENT_MODEL_XXX flags.
+ * @param string $lossy flag, set to "lossy" to allow lossy conversion. If lossy conversion is
* not allowed, full round-trip conversion is expected to work without losing information.
*
* @return Content|bool A content object with the content model $toModel, or false if
* @ingroup Content
*/
class TextContentHandler extends ContentHandler {
-
- public function __construct( $modelId = CONTENT_MODEL_TEXT, $formats = array( CONTENT_FORMAT_TEXT ) ) {
+ public function __construct( $modelId = CONTENT_MODEL_TEXT,
+ $formats = array( CONTENT_FORMAT_TEXT )
+ ) {
parent::__construct( $modelId, $formats );
}
*/
public function serializeContent( Content $content, $format = null ) {
$this->checkFormat( $format );
+
return $content->getNativeData();
}
}
$mergedContent = $this->unserializeContent( $result, $format );
+
return $mergedContent;
}
* @ingroup Content
*/
class WikitextContent extends TextContent {
-
public function __construct( $text ) {
parent::__construct( $text, CONTENT_MODEL_WIKITEXT );
}
if ( $section === '' ) {
wfProfileOut( __METHOD__ );
+
return $with; # XXX: copy first?
- } if ( $section == 'new' ) {
+ }
+
+ if ( $section == 'new' ) {
# Inserting a new section
$subject = $sectionTitle ? wfMessage( 'newsectionheaderdefaultlevel' )
- ->rawParams( $sectionTitle )->inContentLanguage()->text() . "\n\n" : '';
+ ->rawParams( $sectionTitle )->inContentLanguage()->text() . "\n\n" : '';
if ( wfRunHooks( 'PlaceNewSection', array( $this, $oldtext, $subject, &$text ) ) ) {
$text = strlen( trim( $oldtext ) ) > 0
? "{$oldtext}\n\n{$subject}{$text}"
$newContent = new WikitextContent( $text );
wfProfileOut( __METHOD__ );
+
return $newContent;
}
if ( !$title instanceof Title || !$title->isValidRedirectTarget() ) {
return null;
}
+
return $title;
}
}
+
return null;
}
/**
- * @see Content::updateRedirect()
+ * @see Content::updateRedirect()
*
* This implementation replaces the first link on the page with the given new target
* if this Content object is a redirect. Otherwise, this method returns $this.
*
* @param Title $target
*
- * @return Content a new Content object with the updated redirect (or $this if this Content object isn't a redirect)
+ * @return Content a new Content object with the updated redirect (or $this
+ * if this Content object isn't a redirect)
*/
public function updateRedirect( Title $target ) {
if ( !$this->isRedirect() ) {
* Returns true if this content is not a redirect, and this content's text
* is countable according to the criteria defined by $wgArticleCountMethod.
*
- * @param bool $hasLinks if it is known whether this content contains
+ * @param bool $hasLinks if it is known whether this content contains
* links, provide this information here, to avoid redundant parsing to
* find out (default: null).
* @param $title Title: (default: null)
}
$po = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+
return $po;
}
* @ingroup Content
*/
class WikitextContentHandler extends TextContentHandler {
-
public function __construct( $modelId = CONTENT_MODEL_WIKITEXT ) {
parent::__construct( $modelId, array( CONTENT_FORMAT_WIKITEXT ) );
}
}
$mwRedir = MagicWord::get( 'redirect' );
- $redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $optionalColon . $destination->getFullText() . ']]';
+ $redirectText = $mwRedir->getSynonym( 0 ) .
+ ' [[' . $optionalColon . $destination->getFullText() . ']]';
+
if ( $text != '' ) {
$redirectText .= "\n" . $text;
}
public function getContext() {
if ( $this->context === null ) {
$class = get_class( $this );
- wfDebug( __METHOD__ . " ($class): called and \$context is null. Using RequestContext::getMain() for sanity\n" );
+ wfDebug( __METHOD__ . " ($class): called and \$context is null. " .
+ "Using RequestContext::getMain() for sanity\n" );
$this->context = RequestContext::getMain();
}
+
return $this->context;
}
*/
public function getLang() {
wfDeprecated( __METHOD__, '1.19' );
+
return $this->getLanguage();
}
*/
public function msg( /* $args */ ) {
$args = func_get_args();
+
return call_user_func_array( array( $this->getContext(), 'msg' ), $args );
}
* Set the Title object
*
* @param Title $t
+ * @throws MWException
*/
public function setTitle( $t ) {
if ( $t !== null && !$t instanceof Title ) {
*/
public function msg() {
$args = func_get_args();
+
return call_user_func_array( 'wfMessage', $args )->setContext( $this );
}
}
global $wgRequest; # fallback to $wg till we can improve this
$this->request = $wgRequest;
}
+
return $this->request;
}
* Set the Title object
*
* @param Title $t
+ * @throws MWException
*/
public function setTitle( $t ) {
if ( $t !== null && !$t instanceof Title ) {
global $wgTitle; # fallback to $wg till we can improve this
$this->title = $wgTitle;
}
+
return $this->title;
}
}
$this->wikipage = WikiPage::factory( $title );
}
+
return $this->wikipage;
}
if ( $this->output === null ) {
$this->output = new OutputPage( $this );
}
+
return $this->output;
}
if ( $this->user === null ) {
$this->user = User::newFromSession( $this->getRequest() );
}
+
return $this->user;
}
*/
public function getLang() {
wfDeprecated( __METHOD__, '1.19' );
+
return $this->getLanguage();
}
$this->skin->setContext( $this );
wfProfileOut( __METHOD__ . '-createskin' );
}
+
return $this->skin;
}
*/
public function msg() {
$args = func_get_args();
+
return call_user_func_array( 'wfMessage', $args )->setContext( $this );
}
if ( $instance === null ) {
$instance = new self;
}
+
return $instance;
}
$user = User::newFromName( $params['ip'], false );
}
- $importSessionFunction = function( User $user, array $params ) {
+ $importSessionFunction = function ( User $user, array $params ) {
global $wgRequest, $wgUser;
$context = RequestContext::getMain();
$importSessionFunction( $user, $params );
// Set callback to save and close the new session and reload the old one
- return new ScopedCallback( function() use ( $importSessionFunction, $oUser, $oParams ) {
+ return new ScopedCallback( function () use ( $importSessionFunction, $oUser, $oParams ) {
$importSessionFunction( $oUser, $oParams );
} );
}
$context->setRequest( new FauxRequest( $request ) );
}
$context->user = User::newFromName( '127.0.0.1', false );
+
return $context;
}
}
* @author Daniel Kinzler
*/
abstract class DBAccessBase implements IDBAccessObject {
-
/**
* @var String|bool $wiki The target wiki's name. This must be an ID
* that LBFactory can understand.
*/
protected function getConnection( $id, $groups = array() ) {
$loadBalancer = wfGetLB( $this->wiki );
+
return $loadBalancer->getConnection( $id, $groups, $this->wiki );
}
*
* @since 1.21
*
- * @param DatabaseBase $db the database connection to release.
+ * @param DatabaseBase $db the database connection to release.
*/
protected function releaseConnection( DatabaseBase $db ) {
if ( $this->wiki !== false ) {
$info = $lb->parentInfo();
if ( !$db || !$db->doneWrites() ) {
wfDebug( __METHOD__ . ": LB {$info['id']}, no writes done\n" );
+
return;
}
$pos = $db->getMasterPos();
*/
class CloneDatabase {
-
/**
* Table prefix for cloning
* @var String
* @param $dropCurrentTables bool
*/
public function __construct( DatabaseBase $db, array $tablesToClone,
- $newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true )
- {
+ $newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true
+ ) {
$this->db = $db;
$this->tablesToClone = $tablesToClone;
$this->newTablePrefix = $newTablePrefix;
self::changePrefix( $this->newTablePrefix );
$newTableName = $this->db->tableName( $tbl, 'raw' );
- if ( $this->dropCurrentTables && !in_array( $this->db->getType(), array( 'postgres', 'oracle' ) ) ) {
+ if ( $this->dropCurrentTables
+ && !in_array( $this->db->getType(), array( 'postgres', 'oracle' ) )
+ ) {
$this->db->dropTable( $tbl, __METHOD__ );
wfDebug( __METHOD__ . " dropping {$newTableName}\n", true );
//Dropping the oldTable because the prefix was changed
* Interface for classes that implement or wrap DatabaseBase
* @ingroup Database
*/
-interface IDatabase {}
+interface IDatabase {
+}
/**
* Database abstraction object
/**
* Clear a flag for this connection
*
- * @param $flag: same as setFlag()'s $flag param
+ * @param $flag : same as setFlag()'s $flag param
*/
public function clearFlag( $flag ) {
global $wgDebugDBTransactions;
/**
* Returns a boolean whether the flag $flag is set for this connection
*
- * @param $flag: same as setFlag()'s $flag param
+ * @param $flag : same as setFlag()'s $flag param
* @return Boolean
*/
public function getFlag( $flag ) {
* not restored on unserialize.
*/
public function __sleep() {
- throw new MWException( 'Database serialization may cause problems, since the connection is not restored on wakeup.' );
+ throw new MWException( 'Database serialization may cause problems, since ' .
+ 'the connection is not restored on wakeup.' );
}
/**
* Given a DB type, construct the name of the appropriate child class of
* DatabaseBase. This is designed to replace all of the manual stuff like:
- * $class = 'Database' . ucfirst( strtolower( $dbType ) );
+ * $class = 'Database' . ucfirst( strtolower( $dbType ) );
* as well as validate against the canonical list of DB types we have
*
* This factory function is mostly useful for when you need to connect to a
*/
final public static function factory( $dbType, $p = array() ) {
$canonicalDBTypes = array(
- 'mysql' => array( 'mysqli', 'mysql' ),
+ 'mysql' => array( 'mysqli', 'mysql' ),
'postgres' => array(),
- 'sqlite' => array(),
- 'oracle' => array(),
- 'mssql' => array(),
+ 'sqlite' => array(),
+ 'oracle' => array(),
+ 'mssql' => array(),
);
$driver = false;
'tablePrefix' => isset( $p['tablePrefix'] ) ? $p['tablePrefix'] : 'get from global',
'foreign' => isset( $p['foreign'] ) ? $p['foreign'] : false
);
+
return new $class( $params );
} else {
return null;
if ( $this->mPHPError ) {
$error = preg_replace( '!\[<a.*</a>\]!', '', $this->mPHPError );
$error = preg_replace( '!^.*?:\s?(.*)$!', '$1', $error );
+
return $error;
} else {
return false;
$ret = $this->closeConnection();
$this->mConn = false;
+
return $ret;
} else {
return true;
# If DBO_TRX is set, start a transaction
if ( ( $this->mFlags & DBO_TRX ) && !$this->mTrxLevel &&
- $sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK' )
- {
+ $sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK'
+ ) {
# Avoid establishing transactions for SHOW and SET statements too -
# that would delay transaction initializations to once connection
# is really used by application
wfDebug( "SQL ERROR (ignored): $error\n" );
$this->ignoreErrors( $ignore );
} else {
- $sql1line = str_replace( "\n", "\\n", $sql );
+ $sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5*1024 );
wfLogDBError( "$fname\t{$this->mServer}\t$errno\t$error\t$sql1line\n" );
wfDebug( "SQL ERROR: " . $error . "\n" );
throw new DBQueryError( $this, $error, $errno, $sql, $fname );
return $arg;
case '&':
# return $this->addQuotes( file_get_contents( $arg ) );
- throw new DBUnexpectedError( $this, '& mode is not implemented. If it\'s really needed, uncomment the line above.' );
+ throw new DBUnexpectedError(
+ $this,
+ '& mode is not implemented. If it\'s really needed, uncomment the line above.'
+ );
default:
- throw new DBUnexpectedError( $this, 'Received invalid match. This should never happen!' );
+ throw new DBUnexpectedError(
+ $this,
+ 'Received invalid match. This should never happen!'
+ );
}
}
: $options['HAVING'];
$sql .= ' HAVING ' . $having;
}
+
return $sql;
}
$ob = is_array( $options['ORDER BY'] )
? implode( ',', $options['ORDER BY'] )
: $options['ORDER BY'];
+
return ' ORDER BY ' . $ob;
}
+
return '';
}
* @see DatabaseBase::select()
*/
public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
- $options = array(), $join_conds = array() )
- {
+ $options = array(), $join_conds = array()
+ ) {
if ( is_array( $vars ) ) {
$vars = implode( ',', $this->fieldNamesWithAlias( $vars ) );
}
* @return object|bool
*/
public function selectRow( $table, $vars, $conds, $fname = __METHOD__,
- $options = array(), $join_conds = array() )
- {
+ $options = array(), $join_conds = array()
+ ) {
$options = (array)$options;
$options['LIMIT'] = 1;
$res = $this->select( $table, $vars, $conds, $fname, $options, $join_conds );
* @return Integer: row count
*/
public function estimateRowCount( $table, $vars = '*', $conds = '',
- $fname = __METHOD__, $options = array() )
- {
+ $fname = __METHOD__, $options = array()
+ ) {
$rows = 0;
$res = $this->select( $table, array( 'rowcount' => 'COUNT(*)' ), $conds, $fname, $options );
* @param $table String name of the table to UPDATE. This will be passed through
* DatabaseBase::tableName().
*
- * @param array $values An array of values to SET. For each array element,
+ * @param array $values An array of values to SET. For each array element,
* the key gives the field name, and the value gives the data
* to set that field to. The data will be quoted by
* DatabaseBase::addQuotes().
return 'CONCAT(' . implode( ',', $stringList ) . ')';
}
+ /**
+ * Build a GROUP_CONCAT or equivalent statement for a query.
+ *
+ * This is useful for combining a field for several rows into a single string.
+ * NULL values will not appear in the output, duplicated values will appear,
+ * and the resulting delimiter-separated values have no defined sort order.
+ * Code using the results may need to use the PHP unique() or sort() methods.
+ *
+ * @param string $delim Glue to bind the results together
+ * @param string|array $table Table name
+ * @param string $field Field name
+ * @param string|array $conds Conditions
+ * @param string|array $join_conds Join conditions
+ * @return String SQL text
+ * @since 1.23
+ */
+ public function buildGroupConcatField(
+ $delim, $table, $field, $conds = '', $join_conds = array()
+ ) {
+ $fld = "GROUP_CONCAT($field SEPARATOR " . $this->addQuotes( $delim ) . ')';
+
+ return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
+ }
+
/**
* Change the current database
*
# if your database engine supports a concept similar to MySQL's
# databases you may as well.
$this->mDBname = $db;
+
return true;
}
list( $table ) = $dbDetails;
if ( $wgSharedDB !== null # We have a shared database
&& $this->mForeign == false # We're not working on a foreign database
- && !$this->isQuotedIdentifier( $table ) # Paranoia check to prevent shared tables listing '`table`'
+ && !$this->isQuotedIdentifier( $table ) # Prevent shared tables listing '`table`'
&& in_array( $table, $wgSharedTables ) # A shared table is selected
) {
$database = $wgSharedDB;
}
$retval[] = $this->tableNameWithAlias( $table, $alias );
}
+
return $retval;
}
}
$retval[] = $this->fieldNameWithAlias( $field, $alias );
}
+
return $retval;
}
}
/**
- * LIKE statement wrapper, receives a variable-length argument list with parts of pattern to match
- * containing either string literals that will be escaped or tokens returned by anyChar() or anyString().
- * Alternatively, the function could be provided with an array of aforementioned parameters.
+ * LIKE statement wrapper, receives a variable-length argument list with
+ * parts of pattern to match containing either string literals that will be
+ * escaped or tokens returned by anyChar() or anyString(). Alternatively,
+ * the function could be provided with an array of aforementioned
+ * parameters.
*
- * Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns a LIKE clause that searches
- * for subpages of 'My page title'.
- * Alternatively: $pattern = array( 'My_page_title/', $dbr->anyString() ); $query .= $dbr->buildLike( $pattern );
+ * Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns
+ * a LIKE clause that searches for subpages of 'My page title'.
+ * Alternatively:
+ * $pattern = array( 'My_page_title/', $dbr->anyString() );
+ * $query .= $dbr->buildLike( $pattern );
*
* @since 1.16
* @return String: fully built LIKE statement
* @throws DBUnexpectedError
*/
public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds,
- $fname = __METHOD__ )
- {
+ $fname = __METHOD__
+ ) {
if ( !$conds ) {
throw new DBUnexpectedError( $this,
'DatabaseBase::deleteJoin() called with empty $conds' );
*/
public function insertSelect( $destTable, $srcTable, $varMap, $conds,
$fname = __METHOD__,
- $insertOptions = array(), $selectOptions = array() )
- {
+ $insertOptions = array(), $selectOptions = array()
+ ) {
$destTable = $this->tableName( $destTable );
if ( is_array( $insertOptions ) ) {
if ( !is_numeric( $limit ) ) {
throw new DBUnexpectedError( $this, "Invalid non-numeric limit passed to limitResult()\n" );
}
+
return "$sql LIMIT "
. ( ( is_numeric( $offset ) && $offset != 0 ) ? "{$offset}," : "" )
. "{$limit} ";
*/
public function unionQueries( $sqls, $all ) {
$glue = $all ? ') UNION ALL (' : ') UNION (';
+
return '(' . implode( $glue, $sqls ) . ')';
}
if ( is_array( $cond ) ) {
$cond = $this->makeList( $cond, LIST_AND );
}
+
return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
}
if ( $tries <= 0 ) {
$this->rollback( __METHOD__ );
$this->reportQueryError( $error, $errno, $sql, $fname );
+
return false;
} else {
$this->commit( __METHOD__ );
+
return $retVal;
}
}
if ( $wait > $timeout * 1e6 ) {
wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
wfProfileOut( __METHOD__ );
+
return -1;
} elseif ( $wait > 0 ) {
wfDebug( "Fake slave waiting $wait us\n" );
usleep( $wait );
wfProfileOut( __METHOD__ );
+
return 1;
} else {
wfDebug( "Fake slave up to date ($wait us)\n" );
wfProfileOut( __METHOD__ );
+
return 0;
}
}
if ( !is_null( $this->mFakeSlaveLag ) ) {
$pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
+
return $pos;
} else {
# Stub
$this->clearFlag( DBO_TRX ); // make each query its own transaction
call_user_func( $phpCallback );
$this->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore automatic begin()
- } catch ( Exception $e ) {}
+ } catch ( Exception $e ) {
+ }
}
} while ( count( $this->mTrxIdleCallbacks ) );
try {
list( $phpCallback ) = $callback;
call_user_func( $phpCallback );
- } catch ( Exception $e ) {}
+ } catch ( Exception $e ) {
+ }
}
} while ( count( $this->mTrxPreCommitCallbacks ) );
}
/**
- * Begin a transaction. If a transaction is already in progress, that transaction will be committed before the
- * new transaction is started.
+ * Begin a transaction. If a transaction is already in progress,
+ * that transaction will be committed before the new transaction is started.
*
- * Note that when the DBO_TRX flag is set (which is usually the case for web requests, but not for maintenance scripts),
- * any previous database query will have started a transaction automatically.
+ * Note that when the DBO_TRX flag is set (which is usually the case for web
+ * requests, but not for maintenance scripts), any previous database query
+ * will have started a transaction automatically.
*
- * Nesting of transactions is not supported. Attempts to nest transactions will cause a warning, unless the current
- * transaction was started automatically because of the DBO_TRX flag.
+ * Nesting of transactions is not supported. Attempts to nest transactions
+ * will cause a warning, unless the current transaction was started
+ * automatically because of the DBO_TRX flag.
*
* @param $fname string
* @throws DBError
* Nesting of transactions is not supported.
*
* @param $fname string
- * @param string $flush Flush flag, set to 'flush' to disable warnings about explicitly committing implicit
- * transactions, or calling commit when no transaction is in progress.
- * This will silently break any ongoing explicit transaction. Only set the flush flag if you are sure
- * that it is safe to ignore these warnings in your context.
+ * @param string $flush Flush flag, set to 'flush' to disable warnings about
+ * explicitly committing implicit transactions, or calling commit when no
+ * transaction is in progress. This will silently break any ongoing
+ * explicit transaction. Only set the flush flag if you are sure that it
+ * is safe to ignore these warnings in your context.
*/
final public function commit( $fname = __METHOD__, $flush = '' ) {
if ( !$this->mTrxAtomicLevels->isEmpty() ) {
// There are still atomic sections open. This cannot be ignored
- throw new DBUnexpectedError( $this, "Attempted to commit transaction while atomic sections are still open" );
+ throw new DBUnexpectedError(
+ $this,
+ "Attempted to commit transaction while atomic sections are still open"
+ );
}
if ( $flush != 'flush' ) {
* For caching purposes the list of all views should be stored in
* $this->allViews. The process cache can be cleared with clearViewsCache()
*
- * @param string $prefix Only show VIEWs with this prefix, eg. unit_test_
- * @param string $fname Name of calling function
+ * @param string $prefix Only show VIEWs with this prefix, eg. unit_test_
+ * @param string $fname Name of calling function
* @throws MWException
* @since 1.22
*/
* @param bool|callable $lineCallback Optional function called before reading each line
* @param bool|callable $resultCallback Optional function called for each MySQL result
* @param bool|string $fname Calling function name or false if name should be
- * generated dynamically using $filename
- * @param bool|callable $inputCallback Callback: Optional function called for each complete line sent
+ * generated dynamically using $filename
+ * @param bool|callable $inputCallback Callback: Optional function called
+ * for each complete line sent
* @throws MWException
* @throws Exception|MWException
* @return bool|string
try {
$error = $this->sourceStream( $fp, $lineCallback, $resultCallback, $fname, $inputCallback );
- }
- catch ( MWException $e ) {
+ } catch ( MWException $e ) {
fclose( $fp );
throw $e;
}
* @return bool|string
*/
public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
- $fname = __METHOD__, $inputCallback = false )
- {
+ $fname = __METHOD__, $inputCallback = false
+ ) {
$cmd = '';
while ( !feof( $fp ) ) {
if ( false === $res ) {
$err = $this->lastError();
+
return "Query \"{$cmd}\" failed with error code \"$err\".\n";
}
}
return true;
}
}
+
return false;
}
// replace /*$var*/
$ins = str_replace( '/*$' . $var . '*/', $this->strencode( $value ), $ins );
}
+
return $ins;
}
if ( $this->cascadingDeletes() ) {
$sql .= " CASCADE";
}
+
return $this->query( $sql, $fName );
}
$callers = array();
foreach ( $this->mTrxIdleCallbacks as $callbackInfo ) {
$callers[] = $callbackInfo[1];
-
}
$callers = implode( ', ', $callers );
trigger_error( "DB transaction callbacks still pending (from $callers)." );
* @ingroup Database
*/
class DBError extends MWException {
-
/**
* @var DatabaseBase
*/
} else {
$message = $fallback;
}
+
return wfMsgReplaceArgs( $message, $args );
}
function getHTML() {
global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors;
- $sorry = htmlspecialchars( $this->msg( 'dberr-problems', 'Sorry! This site is experiencing technical difficulties.' ) );
- $again = htmlspecialchars( $this->msg( 'dberr-again', 'Try waiting a few minutes and reloading.' ) );
+ $sorry = htmlspecialchars( $this->msg(
+ 'dberr-problems',
+ 'Sorry! This site is experiencing technical difficulties.'
+ ) );
+ $again = htmlspecialchars( $this->msg(
+ 'dberr-again',
+ 'Try waiting a few minutes and reloading.'
+ ) );
if ( $wgShowHostnames || $wgShowSQLErrors ) {
$info = str_replace(
htmlspecialchars( $this->msg( 'dberr-info', '(Cannot contact the database server: $1)' ) )
);
} else {
- $info = htmlspecialchars( $this->msg( 'dberr-info-hidden', '(Cannot contact the database server)' ) );
+ $info = htmlspecialchars( $this->msg(
+ 'dberr-info-hidden',
+ '(Cannot contact the database server)'
+ ) );
}
# No database access
// Output cached page with notices on bottom and re-close body
echo "{$cache}<hr />{$this->getHTML()}</body></html>";
+
return;
}
} catch ( MWException $e ) {
function searchForm() {
global $wgSitename, $wgCanonicalServer, $wgRequest;
- $usegoogle = htmlspecialchars( $this->msg( 'dberr-usegoogle', 'You can try searching via Google in the meantime.' ) );
- $outofdate = htmlspecialchars( $this->msg( 'dberr-outofdate', 'Note that their indexes of our content may be out of date.' ) );
+ $usegoogle = htmlspecialchars( $this->msg(
+ 'dberr-usegoogle',
+ 'You can try searching via Google in the meantime.'
+ ) );
+ $outofdate = htmlspecialchars( $this->msg(
+ 'dberr-outofdate',
+ 'Note that their indexes of our content may be out of date.'
+ ) );
$googlesearch = htmlspecialchars( $this->msg( 'searchbutton', 'Search' ) );
$search = htmlspecialchars( $wgRequest->getVal( 'search' ) );
</p>
</form>
EOT;
+
return $trygoogle;
}
* @param $fname string
*/
function __construct( DatabaseBase $db, $error, $errno, $sql, $fname ) {
- $message = "A database error has occurred. Did you forget to run maintenance/update.php after upgrading? See: https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
+ $message = "A database error has occurred. Did you forget to run " .
+ "maintenance/update.php after upgrading? See: " .
+ "https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
"Query: $sql\n" .
"Function: $fname\n" .
"Error: $errno $error\n";
'databaseerror-function' => 'Function: $1',
'databaseerror-error' => 'Error: $1',
);
+
return $messages[$key];
}
-
}
/**
* @ingroup Database
*/
-class DBUnexpectedError extends DBError {}
+class DBUnexpectedError extends DBError {
+}
function open( $server, $user, $password, $dbName ) {
# Test for driver support, to avoid suppressed fatal error
if ( !function_exists( 'sqlsrv_connect' ) ) {
- throw new DBConnectionError( $this, "MS Sql Server Native (sqlsrv) functions missing. You can download the driver from: http://go.microsoft.com/fwlink/?LinkId=123470\n" );
+ throw new DBConnectionError(
+ $this,
+ "MS Sql Server Native (sqlsrv) functions missing. You can download " .
+ "the driver from: http://go.microsoft.com/fwlink/?LinkId=123470\n" );
}
global $wgDBport;
- if ( !strlen( $user ) ) { # e.g. the class is being loaded
+ # e.g. the class is being loaded
+ if ( !strlen( $user ) ) {
return;
}
// Start NT Auth Hack
// Quick and dirty work around to provide NT Auth designation support.
- // Current solution requires installer to know to input 'ntauth' for both username and password
- // to trigger connection via NT Auth. - ugly, ugly, ugly
- // TO-DO: Make this better and add NT Auth choice to MW installer when SQL Server option is chosen.
+ // Current solution requires installer to know to input 'ntauth' for
+ // both username and password to trigger connection via NT Auth. Ugly,
+ // ugly, ugly!
+ // @todo Make this better and add NT Auth choice to MW installer when
+ // SQL Server option is chosen.
$ntAuthUserTest = strtolower( $user );
$ntAuthPassTest = strtolower( $password );
if ( $this->mConn === false ) {
wfDebug( "DB connection error\n" );
- wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+ wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " .
+ substr( $password, 0, 3 ) . "...\n" );
wfDebug( $this->lastError() . "\n" );
+
return false;
}
$this->mOpened = true;
+
return $this->mConn;
}
wfDebug( "SQL: [$sql]\n" );
$this->offset = 0;
- // several extensions seem to think that all databases support limits via LIMIT N after the WHERE clause
- // well, MSSQL uses SELECT TOP N, so to catch any of those extensions we'll do a quick check for a LIMIT
- // clause and pass $sql through $this->LimitToTopN() which parses the limit clause and passes the result to
- // $this->limitResult();
+ // several extensions seem to think that all databases support limits
+ // via LIMIT N after the WHERE clause well, MSSQL uses SELECT TOP N,
+ // so to catch any of those extensions we'll do a quick check for a
+ // LIMIT clause and pass $sql through $this->LimitToTopN() which parses
+ // the limit clause and passes the result to $this->limitResult();
if ( preg_match( '/\bLIMIT\s*/i', $sql ) ) {
// massage LIMIT -> TopN
$sql = $this->LimitToTopN( $sql );
// perform query
$stmt = sqlsrv_query( $this->mConn, $sql );
if ( $stmt == false ) {
- $message = "A database error has occurred. Did you forget to run maintenance/update.php after upgrading? See: http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
+ $message = "A database error has occurred. Did you forget " .
+ "to run maintenance/update.php after upgrading? See: " .
+ "http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
"Query: " . htmlentities( $sql ) . "\n" .
"Function: " . __METHOD__ . "\n";
// process each error (our driver will give us an array of errors unlike other providers)
// remember number of rows affected
$this->mAffectedRows = sqlsrv_rows_affected( $stmt );
- // if it is a SELECT statement, or an insert with a request to output something we want to return a row.
+ // if it is a SELECT statement, or an insert with a request to output
+ // something we want to return a row.
if ( ( preg_match( '#\bSELECT\s#i', $sql ) ) ||
- ( preg_match( '#\bINSERT\s#i', $sql ) && preg_match( '#\bOUTPUT\s+INSERTED\b#i', $sql ) ) ) {
+ ( preg_match( '#\bINSERT\s#i', $sql ) && preg_match( '#\bOUTPUT\s+INSERTED\b#i', $sql ) )
+ ) {
// this is essentially a rowset, but Mediawiki calls these 'result'
// the rowset owns freeing the statement
$res = new MssqlResult( $stmt );
// otherwise we simply return it was successful, failure throws an exception
$res = true;
}
+
return $res;
}
$res = $res->result;
}
$row = $res->fetch( 'OBJECT' );
+
return $row;
}
} else {
$strRet = "No errors found";
}
+
return $strRet;
}
$res = $res->result;
}
$row = $res->fetch( SQLSRV_FETCH_BOTH );
+
return $row;
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return ( $res ) ? $res->numrows() : 0;
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return ( $res ) ? $res->numfields() : 0;
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return ( $res ) ? $res->fieldname( $n ) : 0;
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return ( $res ) ? $res->seek( $row ) : false;
}
* @param $vars Mixed: array or string, field name(s) to be retrieved
* @param $conds Mixed: array or string, condition(s) for WHERE
* @param $fname String: calling function name (use __METHOD__) for logs/profiling
- * @param array $options associative array of options (e.g. array('GROUP BY' => 'page_title')),
- * see Database::makeSelectOptions code for list of supported stuff
- * @param $join_conds Array: Associative array of table join conditions (optional)
- * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
- * @return Mixed: database result resource (feed to Database::fetchObject or whatever), or false on failure
+ * @param array $options associative array of options (e.g.
+ * array('GROUP BY' => 'page_title')), see Database::makeSelectOptions
+ * code for list of supported stuff
+ * @param $join_conds Array: Associative array of table join conditions
+ * (optional) (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+ * @return Mixed: database result resource (feed to Database::fetchObject
+ * or whatever), or false on failure
*/
- function select( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() )
- {
+ function select( $table, $vars, $conds = '', $fname = __METHOD__,
+ $options = array(), $join_conds = array()
+ ) {
$sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
if ( isset( $options['EXPLAIN'] ) ) {
sqlsrv_query( $this->mConn, "SET SHOWPLAN_ALL ON;" );
$ret = $this->query( $sql, $fname );
sqlsrv_query( $this->mConn, "SET SHOWPLAN_ALL OFF;" );
+
return $ret;
}
+
return $this->query( $sql, $fname );
}
* @param $vars Mixed: Array or string, field name(s) to be retrieved
* @param $conds Mixed: Array or string, condition(s) for WHERE
* @param $fname String: Calling function name (use __METHOD__) for logs/profiling
- * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
+ * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
* see Database::makeSelectOptions code for list of supported stuff
* @param $join_conds Array: Associative array of table join conditions (optional)
* (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
* @return string, the SQL text
*/
- function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+ function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
+ $options = array(), $join_conds = array()
+ ) {
if ( isset( $options['EXPLAIN'] ) ) {
unset( $options['EXPLAIN'] );
}
+
return parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
}
* Takes same arguments as Database::select()
* @return int
*/
- function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
- $options['EXPLAIN'] = true;// http://msdn2.microsoft.com/en-us/library/aa259203.aspx
+ function estimateRowCount( $table, $vars = '*', $conds = '',
+ $fname = __METHOD__, $options = array()
+ ) {
+ // http://msdn2.microsoft.com/en-us/library/aa259203.aspx
+ $options['EXPLAIN'] = true;
$res = $this->select( $table, $vars, $conds, $fname, $options );
$rows = -1;
$rows = $row['EstimateRows'];
}
}
+
return $rows;
}
* @return array|bool|null
*/
function indexInfo( $table, $index, $fname = __METHOD__ ) {
- # This does not return the same info as MYSQL would, but that's OK because MediaWiki never uses the
- # returned value except to check for the existance of indexes.
+ # This does not return the same info as MYSQL would, but that's OK
+ # because MediaWiki never uses the returned value except to check for
+ # the existance of indexes.
$sql = "sp_helpindex '" . $table . "'";
$res = $this->query( $sql, $fname );
if ( !$res ) {
}
}
}
+
return empty( $result ) ? false : $result;
}
$table = $this->tableName( $table );
- if ( !( isset( $arrToInsert[0] ) && is_array( $arrToInsert[0] ) ) ) {// Not multi row
- $arrToInsert = array( 0 => $arrToInsert );// make everything multi row compatible
+ if ( !( isset( $arrToInsert[0] ) && is_array( $arrToInsert[0] ) ) ) { // Not multi row
+ $arrToInsert = array( 0 => $arrToInsert ); // make everything multi row compatible
}
$allOk = true;
// We know the table we're inserting into, get its identity column
$identity = null;
- $tableRaw = preg_replace( '#\[([^\]]*)\]#', '$1', $table ); // strip matching square brackets from table name
- $res = $this->doQuery( "SELECT NAME AS idColumn FROM SYS.IDENTITY_COLUMNS WHERE OBJECT_NAME(OBJECT_ID)='{$tableRaw}'" );
+ // strip matching square brackets from table name
+ $tableRaw = preg_replace( '#\[([^\]]*)\]#', '$1', $table );
+ $res = $this->doQuery(
+ "SELECT NAME AS idColumn FROM SYS.IDENTITY_COLUMNS " .
+ "WHERE OBJECT_NAME(OBJECT_ID)='{$tableRaw}'"
+ );
if ( $res && $res->numrows() ) {
// There is an identity for this table.
$identity = array_pop( $res->fetch( SQLSRV_FETCH_ASSOC ) );
unset( $res );
foreach ( $arrToInsert as $a ) {
- // start out with empty identity column, this is so we can return it as a result of the insert logic
+ // start out with empty identity column, this is so we can return
+ // it as a result of the insert logic
$sqlPre = '';
$sqlPost = '';
$identityClause = '';
// there is a value being passed to us, we need to turn on and off inserted identity
$sqlPre = "SET IDENTITY_INSERT $table ON;";
$sqlPost = ";SET IDENTITY_INSERT $table OFF;";
-
} else {
// we can't insert NULL into an identity column, so remove the column from the insert.
unset( $a[$k] );
}
}
}
- $identityClause = "OUTPUT INSERTED.$identity "; // we want to output an identity column as result
+
+ // we want to output an identity column as result
+ $identityClause = "OUTPUT INSERTED.$identity ";
}
$keys = array_keys( $a );
// translate MySQL INSERT IGNORE to something SQL Server can use
// example:
// MySQL: INSERT IGNORE INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
- // MSSQL: IF NOT EXISTS (SELECT * FROM user_groups WHERE ug_user = '1') INSERT INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
+ // MSSQL: IF NOT EXISTS (SELECT * FROM user_groups WHERE ug_user = '1')
+ // INSERT INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
if ( $ignoreClause ) {
$prival = $a[$keys[0]];
$sqlPre .= "IF NOT EXISTS (SELECT * FROM $table WHERE $keys[0] = '$prival')";
}
$allOk = false;
}
+
return $allOk;
}
/**
* INSERT SELECT wrapper
* $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
- * Source items may be literals rather than field names, but strings should be quoted with Database::addQuotes()
- * $conds may be "*" to copy the whole table
- * srcTable may be an array of tables.
+ * Source items may be literals rather than field names, but strings should
+ * be quoted with Database::addQuotes().
* @param string $destTable
- * @param array|string $srcTable
+ * @param array|string $srcTable May be an array of tables.
* @param array $varMap
- * @param array $conds
+ * @param array $conds May be "*" to copy the whole table.
* @param string $fname
* @param array $insertOptions
* @param array $selectOptions
*/
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
$insertOptions = array(), $selectOptions = array() ) {
- $ret = parent::insertSelect( $destTable, $srcTable, $varMap, $conds, $fname, $insertOptions, $selectOptions );
+ $ret = parent::insertSelect(
+ $destTable,
+ $srcTable,
+ $varMap,
+ $conds,
+ $fname,
+ $insertOptions,
+ $selectOptions
+ );
if ( $ret === false ) {
throw new DBQueryError( $this, $this->getErrors(), $this->lastErrno(), /*$sql*/ '', $fname );
} elseif ( $ret != null ) {
// remember number of rows affected
$this->mAffectedRows = sqlsrv_rows_affected( $ret );
+
return $ret;
}
+
return null;
}
*/
function nextSequenceValue( $seqName ) {
if ( !$this->tableExists( 'sequence_' . $seqName ) ) {
- sqlsrv_query( $this->mConn, "CREATE TABLE [sequence_$seqName] (id INT NOT NULL IDENTITY PRIMARY KEY, junk varchar(10) NULL)" );
+ sqlsrv_query(
+ $this->mConn,
+ "CREATE TABLE [sequence_$seqName] (id INT NOT NULL IDENTITY PRIMARY KEY, junk varchar(10) NULL)"
+ );
}
sqlsrv_query( $this->mConn, "INSERT INTO [sequence_$seqName] (junk) VALUES ('')" );
$ret = sqlsrv_query( $this->mConn, "SELECT TOP 1 id FROM [sequence_$seqName] ORDER BY id DESC" );
- $row = sqlsrv_fetch_array( $ret, SQLSRV_FETCH_ASSOC );// KEEP ASSOC THERE, weird weird bug dealing with the return value if you don't
+ // KEEP ASSOC THERE, weird weird bug dealing with the return value if you don't
+ $row = sqlsrv_fetch_array( $ret, SQLSRV_FETCH_ASSOC );
sqlsrv_free_stmt( $ret );
$this->mInsertId = $row['id'];
+
return $row['id'];
}
if ( $ret !== false ) {
$row = sqlsrv_fetch_array( $ret );
sqlsrv_free_stmt( $ret );
+
return $row['id'];
} else {
return $this->nextSequenceValue( $seqName );
if ( strtolower( $row['DATA_TYPE'] ) != 'text' ) {
$size = $row['CHARACTER_MAXIMUM_LENGTH'];
}
+
return $size;
}
) as sub2
) AS sub3
WHERE line3 BETWEEN ' . ( $offset + 1 ) . ' AND ' . ( $offset + $limit );
+
return $sql;
}
}
- // If there is a limit clause, parse it, strip it, and pass the remaining sql through limitResult()
- // with the appropriate parameters. Not the prettiest solution, but better than building a whole new parser.
- // This exists becase there are still too many extensions that don't use dynamic sql generation.
+ // If there is a limit clause, parse it, strip it, and pass the remaining
+ // SQL through limitResult() with the appropriate parameters. Not the
+ // prettiest solution, but better than building a whole new parser. This
+ // exists becase there are still too many extensions that don't use dynamic
+ // sql generation.
function LimitToTopN( $sql ) {
// Matches: LIMIT {[offset,] row_count | row_count OFFSET offset}
$pattern = '/\bLIMIT\s+((([0-9]+)\s*,\s*)?([0-9]+)(\s+OFFSET\s+([0-9]+))?)/i';
$row_count = $matches[4];
// offset = $matches[3] OR $matches[6]
$offset = $matches[3] or
- $offset = $matches[6] or
- $offset = false;
+ $offset = $matches[6] or
+ $offset = false;
// strip the matching LIMIT clause out
$sql = str_replace( $matches[0], '', $sql );
+
return $this->limitResult( $sql, $row_count, $offset );
}
+
return $sql;
}
if ( isset( $server_info['SQLServerVersion'] ) ) {
$version = $server_info['SQLServerVersion'];
}
+
return $version;
}
WHERE table_type='BASE TABLE' AND table_name = '$table'" );
if ( $res === false ) {
print "Error in tableExists query: " . $this->getErrors();
+
return false;
}
if ( sqlsrv_fetch( $res ) ) {
WHERE TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" );
if ( $res === false ) {
print "Error in fieldExists query: " . $this->getErrors();
+
return false;
}
if ( sqlsrv_fetch( $res ) ) {
WHERE TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" );
if ( $res === false ) {
print "Error in fieldInfo query: " . $this->getErrors();
+
return false;
}
$meta = $this->fetchRow( $res );
if ( $meta ) {
return new MssqlField( $meta );
}
+
return false;
}
throw new MWException( "The identifier '$identifier' is too long (max. 128)" );
}
if ( ( strpos( $identifier, '[' ) !== false ) || ( strpos( $identifier, ']' ) !== false ) ) {
- // It may be allowed if you quoted with double quotation marks, but that would break if QUOTED_IDENTIFIER is OFF
+ // It may be allowed if you quoted with double quotation marks, but
+ // that would break if QUOTED_IDENTIFIER is OFF
throw new MWException( "You can't use square brackers in the identifier '$identifier'" );
}
+
return "[$identifier]";
}
}
function encodeBlob( $b ) {
- // we can't have zero's and such, this is a simple encoding to make sure we don't barf
+ // we can't have zero's and such, this is a simple encoding to make sure we don't barf
return base64_encode( $b );
}
function decodeBlob( $b ) {
- // we can't have zero's and such, this is a simple encoding to make sure we don't barf
- return base64_decode( $b );
+ // we can't have zero's and such, this is a simple encoding to make sure we don't barf
+ return base64_decode( $b );
}
/**
// We can't separate explicit JOIN clauses with ',', use ' ' for those
$straightJoins = !empty( $ret ) ? implode( ',', $ret ) : "";
$otherJoins = !empty( $retJOIN ) ? implode( ' ', $retJOIN ) : "";
+
// Compile our final table clause
return implode( ' ', array( $straightJoins, $otherJoins ) );
}
public function getInfinity() {
return '3000-01-31 00:00:00.000';
}
-
} // end DatabaseMssql class
/**
*/
class MssqlField implements Field {
private $name, $tablename, $default, $max_length, $nullable, $type;
+
function __construct( $info ) {
$this->name = $info['COLUMN_NAME'];
$this->tablename = $info['TABLE_NAME'];
}
/**
- * The MSSQL PHP driver doesn't support sqlsrv_num_rows, so we recall all rows into an array and maintain our
- * own cursor index into that array...This is similar to the way the Oracle driver handles this same issue
+ * The MSSQL PHP driver doesn't support sqlsrv_num_rows, so we recall all rows
+ * into an array and maintain our own cursor index into that array... This is
+ * similar to the way the Oracle driver handles this same issue
*
* @ingroup Database
*/
foreach ( $rows as $row ) {
if ( $row !== null ) {
foreach ( $row as $k => $v ) {
- if ( is_object( $v ) && method_exists( $v, 'format' ) ) {// DateTime Object
+ if ( is_object( $v ) && method_exists( $v, 'format' ) ) { // DateTime Object
$row[$k] = $v->format( "Y-m-d\TH:i:s\Z" );
}
}
- $this->mRows[] = $row;// read results into memory, cursors are not supported
+ $this->mRows[] = $row; // read results into memory, cursors are not supported
}
}
$this->mRowCount = count( $this->mRows );
}
}
}
+
return $obj;
}
}
$this->mCursor++;
+
return $ret;
}
public function fieldname( $nr ) {
$arrKeys = array_keys( $this->mRows[0] );
+
return $arrKeys[$nr];
}
default:
$strType = $intType;
}
+
return $strType;
}
* @see Database
*/
class DatabaseMysql extends DatabaseMysqlBase {
-
/**
* @param $sql string
* @return resource
} else {
$ret = mysql_unbuffered_query( $sql, $this->mConn );
}
+
return $ret;
}
# Fail now
# Otherwise we get a suppressed fatal error, which is very hard to track down
if ( !extension_loaded( 'mysql' ) ) {
- throw new DBConnectionError( $this, "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
+ throw new DBConnectionError(
+ $this,
+ "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n"
+ );
}
$connFlags = 0;
return $conn;
}
+ /**
+ * @return bool
+ */
+ protected function mysqlSetCharset( $charset ) {
+ if ( function_exists( 'mysql_set_charset' ) ) {
+ return mysql_set_charset( $charset, $this->mConn );
+ } else {
+ return $this->query( 'SET NAMES ' . $charset, __METHOD__ );
+ }
+ }
+
/**
* @return bool
*/
*/
function selectDB( $db ) {
$this->mDBname = $db;
+
return mysql_select_db( $db, $this->mConn );
}
substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
wfProfileOut( __METHOD__ );
+
return $this->reportConnectionError( $error );
}
"from client host " . wfHostname() . "\n" );
wfProfileOut( __METHOD__ );
+
return $this->reportConnectionError( "Error selecting database $dbName" );
}
}
// Tell the server we're communicating with it in UTF-8.
// This may engage various charset conversions.
if ( $wgDBmysql5 ) {
- $this->query( 'SET NAMES utf8', __METHOD__ );
+ $this->mysqlSetCharset( 'utf8' );
} else {
- $this->query( 'SET NAMES binary', __METHOD__ );
+ $this->mysqlSetCharset( 'binary' );
}
// Set SQL mode, default is turning them all off, can be overridden or skipped with null
if ( is_string( $wgSQLMode ) ) {
$mode = $this->addQuotes( $wgSQLMode );
- $this->query( "SET sql_mode = $mode", __METHOD__ );
+ // Use doQuery() to avoid opening implicit transactions (DBO_TRX)
+ $success = $this->doQuery( "SET sql_mode = $mode", __METHOD__ );
+ if ( !$success ) {
+ wfLogDBError( "Error setting sql_mode to $mode on server {$this->mServer}" );
+ return $this->reportConnectionError( "Error setting sql_mode to $mode" );
+ }
}
$this->mOpened = true;
wfProfileOut( __METHOD__ );
+
return true;
}
*/
abstract protected function mysqlConnect( $realServer );
+ /**
+ * Set the character set of the MySQL link
+ *
+ * @param string $charset
+ * @return bool
+ */
+ abstract protected function mysqlSetCharset( $charset );
+
/**
* @param $res ResultWrapper
* @throws DBUnexpectedError
// these are the only errors mysql_fetch_object can cause.
// See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
if ( $errno == 2000 || $errno == 2013 ) {
- throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
+ throw new DBUnexpectedError(
+ $this,
+ 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() )
+ );
}
+
return $row;
}
// these are the only errors mysql_fetch_array can cause.
// See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
if ( $errno == 2000 || $errno == 2013 ) {
- throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
+ throw new DBUnexpectedError(
+ $this,
+ 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() )
+ );
}
+
return $row;
}
wfSuppressWarnings();
$n = $this->mysqlNumRows( $res );
wfRestoreWarnings();
+
// Unfortunately, mysql_num_rows does not reset the last errno.
// We are not checking for any errors here, since
// these are no errors mysql_num_rows can cause.
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return $this->mysqlNumFields( $res );
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return $this->mysqlFieldName( $res, $n );
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return $this->mysqlDataSeek( $res, $row );
}
if ( $error ) {
$error .= ' (' . $this->mServer . ')';
}
+
return $error;
}
* @param $options string|array
* @return int
*/
- public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
+ public function estimateRowCount( $table, $vars = '*', $conds = '',
+ $fname = __METHOD__, $options = array()
+ ) {
$options['EXPLAIN'] = true;
$res = $this->select( $table, $vars, $conds, $fname, $options );
if ( $res === false ) {
foreach ( $res as $plan ) {
$rows *= $plan->rows > 0 ? $plan->rows : 1; // avoid resetting to zero
}
+
return $rows;
}
return new MySQLField( $meta );
}
}
+
return false;
}
$result[] = $row;
}
}
+
return empty( $result ) ? false : $result;
}
$this->ping();
$sQuoted = $this->mysqlRealEscapeString( $s );
}
+
return $sQuoted;
}
public function addIdentifierQuotes( $s ) {
// Characters in the range \u0001-\uFFFF are valid in a quoted identifier
// Remove NUL bytes and escape backticks by doubling
- return '`' . str_replace( array( "\0", '`' ), array( '', '``' ), $s ) . '`';
+ return '`' . str_replace( array( "\0", '`' ), array( '', '``' ), $s ) . '`';
}
/**
$this->mOpened = false;
$this->mConn = false;
$this->open( $this->mServer, $this->mUser, $this->mPassword, $this->mDBname );
+
return true;
}
function getLag() {
if ( !is_null( $this->mFakeSlaveLag ) ) {
wfDebug( "getLag: fake slave lagged {$this->mFakeSlaveLag} seconds\n" );
+
return $this->mFakeSlaveLag;
}
$row->State != 'Waiting to reconnect after a failed master event read' &&
$row->State != 'Reconnecting after a failed master event read' &&
$row->State != 'Registering slave on master'
- ) {
+ ) {
# This is it, return the time (except -ve)
if ( $row->Time > 0x7fffffff ) {
return false;
}
}
}
+
return false;
}
if ( !is_null( $this->mFakeSlaveLag ) ) {
$status = parent::masterPosWait( $pos, $timeout );
wfProfileOut( __METHOD__ );
+
return $status;
}
}
wfProfileOut( __METHOD__ );
+
return $status;
}
$row = $this->fetchObject( $res );
if ( $row ) {
- $pos = isset( $row->Exec_master_log_pos ) ? $row->Exec_master_log_pos : $row->Exec_Master_Log_Pos;
+ $pos = isset( $row->Exec_master_log_pos )
+ ? $row->Exec_master_log_pos
+ : $row->Exec_Master_Log_Pos;
+
return new MySQLMasterPos( $row->Relay_Master_Log_File, $pos );
} else {
return false;
$this->delimiter = $m[1];
$newLine = '';
}
+
return parent::streamStatementEnd( $sql, $newLine );
}
$lockName = $this->addQuotes( $lockName );
$result = $this->query( "SELECT IS_FREE_LOCK($lockName) AS lockstatus", $method );
$row = $this->fetchObject( $result );
+
return ( $row->lockstatus == 1 );
}
return true;
} else {
wfDebug( __METHOD__ . " failed to acquire lock\n" );
+
return false;
}
}
/**
- * FROM MYSQL DOCS: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
+ * FROM MYSQL DOCS:
+ * http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
* @param $lockName string
* @param $method string
* @return bool
$lockName = $this->addQuotes( $lockName );
$result = $this->query( "SELECT RELEASE_LOCK($lockName) as lockstatus", $method );
$row = $this->fetchObject( $result );
+
return ( $row->lockstatus == 1 );
}
foreach ( $write as $table ) {
$tbl = $this->tableName( $table ) .
- ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
- ' WRITE';
+ ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
+ ' WRITE';
$items[] = $tbl;
}
foreach ( $read as $table ) {
}
$sql = "LOCK TABLES " . implode( ',', $items );
$this->query( $sql, $method );
+
return true;
}
*/
public function unlockTables( $method ) {
$this->query( "UNLOCK TABLES", $method );
+
return true;
}
*/
function getServerUptime() {
$vars = $this->getMysqlStatus( 'Uptime' );
+
return (int)$vars['Uptime'];
}
if ( !$this->tableExists( $tableName, $fName ) ) {
return false;
}
+
return $this->query( "DROP TABLE IF EXISTS " . $this->tableName( $tableName ), $fName );
}
protected function getDefaultSchemaVars() {
$vars = parent::getDefaultSchemaVars();
$vars['wgDBTableOptions'] = str_replace( 'TYPE', 'ENGINE', $GLOBALS['wgDBTableOptions'] );
- $vars['wgDBTableOptions'] = str_replace( 'CHARSET=mysql4', 'CHARSET=binary', $vars['wgDBTableOptions'] );
+ $vars['wgDBTableOptions'] = str_replace(
+ 'CHARSET=mysql4',
+ 'CHARSET=binary',
+ $vars['wgDBTableOptions']
+ );
+
return $vars;
}
/**
* Lists VIEWs in the database
*
- * @param string $prefix Only show VIEWs with this prefix, eg.
+ * @param string $prefix Only show VIEWs with this prefix, eg.
* unit_test_, or $wgDBprefix. Default: null, would return all views.
- * @param string $fname Name of calling function
+ * @param string $fname Name of calling function
* @return array
* @since 1.22
*/
// Query for the VIEWS
$result = $this->query( 'SHOW FULL TABLES WHERE TABLE_TYPE = "VIEW"' );
$this->allViews = array();
- while ( ($row = $this->fetchRow($result)) !== false ) {
+ while ( ( $row = $this->fetchRow( $result ) ) !== false ) {
array_push( $this->allViews, $row[$propertyName] );
}
}
- if ( is_null($prefix) || $prefix === '' ) {
+ if ( is_null( $prefix ) || $prefix === '' ) {
return $this->allViews;
}
array_push( $filteredViews, $viewName );
}
}
+
return $filteredViews;
}
public function isView( $name, $prefix = null ) {
return in_array( $name, $this->listViews( $prefix ) );
}
-
}
-
-
/**
* Utility class.
* @ingroup Database
if ( preg_match( '!\.(\d+)/(\d+)$!', (string)$this, $m ) ) {
return array( (int)$m[1], (int)$m[2] );
}
+
return false;
}
function hasReached( MySQLMasterPos $pos ) {
$thisPos = $this->getCoordinates();
$thatPos = $pos->getCoordinates();
+
return ( $thisPos && $thatPos && $thisPos >= $thatPos );
}
}
* @see Database
*/
class DatabaseMysqli extends DatabaseMysqlBase {
-
/**
* @param $sql string
* @return resource
} else {
$ret = $this->mConn->query( $sql, MYSQLI_USE_RESULT );
}
+
return $ret;
}
usleep( 1000 );
}
if ( $mysqli->real_connect( $realServer, $this->mUser,
- $this->mPassword, $this->mDBname, null, null, $connFlags ) )
- {
+ $this->mPassword, $this->mDBname, null, null, $connFlags )
+ ) {
return $mysqli;
}
}
return false;
}
+ /**
+ * @return bool
+ */
+ protected function mysqlSetCharset( $charset ) {
+ if ( method_exists( $this->mConn, 'set_charset' ) ) {
+ return $this->mConn->set_charset( $charset );
+ } else {
+ return $this->query( 'SET NAMES ' . $charset, __METHOD__ );
+ }
+ }
+
/**
* @return bool
*/
*/
function selectDB( $db ) {
$this->mDBname = $db;
+
return $this->mConn->select_db( $db );
}
protected function mysqlFreeResult( $res ) {
$res->free_result();
+
return true;
}
if ( $object === null ) {
return false;
}
+
return $object;
}
if ( $array === null ) {
return false;
}
+
return $array;
}
$field->unique_key = $field->flags & MYSQLI_UNIQUE_KEY_FLAG;
$field->multiple_key = $field->flags & MYSQLI_MULTIPLE_KEY_FLAG;
$field->binary = $field->flags & MYSQLI_BINARY_FLAG;
+
return $field;
}
protected function mysqlFieldName( $res, $n ) {
$field = $res->fetch_field_direct( $n );
+
return $field->name;
}
}
protected function mysqlError( $conn = null ) {
- if ($conn === null) {
+ if ( $conn === null ) {
return mysqli_connect_error();
} else {
return $conn->error;
protected function mysqlPing() {
return $this->mConn->ping();
}
-
}
function __construct( &$db, $stmt, $unique = false ) {
$this->db =& $db;
- if ( ( $this->nrows = oci_fetch_all( $stmt, $this->rows, 0, - 1, OCI_FETCHSTATEMENT_BY_ROW | OCI_NUM ) ) === false ) {
+ $this->nrows = oci_fetch_all( $stmt, $this->rows, 0, -1, OCI_FETCHSTATEMENT_BY_ROW | OCI_NUM );
+ if ( $this->nrows === false ) {
$e = oci_error( $stmt );
$db->reportQueryError( $e['message'], $e['code'], '', __METHOD__ );
$this->free();
+
return;
}
$ret[$lc] = $v;
$ret[$k] = $v;
}
+
return $ret;
}
}
function cascadingDeletes() {
return true;
}
+
function cleanupTriggers() {
return true;
}
+
function strictIPs() {
return true;
}
+
function realTimestamps() {
return true;
}
+
function implicitGroupby() {
return false;
}
+
function implicitOrderby() {
return false;
}
+
function searchableIPs() {
return true;
}
function open( $server, $user, $password, $dbName ) {
global $wgDBOracleDRCP;
if ( !function_exists( 'oci_connect' ) ) {
- throw new DBConnectionError( $this, "Oracle functions missing, have you compiled PHP with the --with-oci8 option?\n (Note: if you recently installed PHP, you may need to restart your webserver and database)\n" );
+ throw new DBConnectionError(
+ $this,
+ "Oracle functions missing, have you compiled PHP with the --with-oci8 option?\n " .
+ "(Note: if you recently installed PHP, you may need to restart your webserver\n " .
+ "and database)\n" );
}
$this->close();
wfSuppressWarnings();
if ( $this->mFlags & DBO_PERSISTENT ) {
- $this->mConn = oci_pconnect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
+ $this->mConn = oci_pconnect(
+ $this->mUser,
+ $this->mPassword,
+ $this->mServer,
+ $this->defaultCharset,
+ $session_mode
+ );
} elseif ( $this->mFlags & DBO_DEFAULT ) {
- $this->mConn = oci_new_connect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
+ $this->mConn = oci_new_connect(
+ $this->mUser,
+ $this->mPassword,
+ $this->mServer,
+ $this->defaultCharset,
+ $session_mode
+ );
} else {
- $this->mConn = oci_connect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
+ $this->mConn = oci_connect(
+ $this->mUser,
+ $this->mPassword,
+ $this->mServer,
+ $this->defaultCharset,
+ $session_mode
+ );
}
wfRestoreWarnings();
$this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
$this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
$this->doQuery( 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=\'.,\'' );
+
return $this->mConn;
}
// you have to select data from plan table after explain
$explain_id = MWTimestamp::getLocalInstance()->format( 'dmYHis' );
- $sql = preg_replace( '/^EXPLAIN /', 'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR', $sql, 1, $explain_count );
+ $sql = preg_replace(
+ '/^EXPLAIN /',
+ 'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR',
+ $sql,
+ 1,
+ $explain_count
+ );
wfSuppressWarnings();
if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
$e = oci_error( $this->mConn );
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
}
$e = oci_error( $stmt );
if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
}
}
wfRestoreWarnings();
if ( $explain_count > 0 ) {
- return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table WHERE statement_id = \'' . $explain_id . '\'' );
+ return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table ' .
+ 'WHERE statement_id = \'' . $explain_id . '\'' );
} elseif ( oci_statement_type( $stmt ) == 'SELECT' ) {
return new ORAResult( $this, $stmt, $union_unique );
} else {
$this->mAffectedRows = oci_num_rows( $stmt );
+
return true;
}
}
} else {
$e = oci_error( $this->mConn );
}
+
return $e['message'];
}
} else {
$e = oci_error( $this->mConn );
}
+
return $e['code'];
}
if ( is_numeric( $col ) ) {
$bind = $val;
$val = null;
+
return $bind;
} elseif ( $includeCol ) {
$bind = "$col = ";
if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
$e = oci_error( $this->mConn );
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
}
foreach ( $row as $col => &$val ) {
if ( oci_bind_by_name( $stmt, ":$col", $val, -1, SQLT_CHR ) === false ) {
$e = oci_error( $stmt );
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
}
} else {
if ( $col_type == 'BLOB' ) {
$lob[$col]->writeTemporary( $val, OCI_TEMP_BLOB );
- oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_BLOB );
+ oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, OCI_B_BLOB );
} else {
$lob[$col]->writeTemporary( $val, OCI_TEMP_CLOB );
- oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_CLOB );
+ oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, OCI_B_CLOB );
}
}
}
$e = oci_error( $stmt );
if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
} else {
$this->mAffectedRows = oci_num_rows( $stmt );
}
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
- $insertOptions = array(), $selectOptions = array() )
- {
+ $insertOptions = array(), $selectOptions = array()
+ ) {
$destTable = $this->tableName( $destTable );
if ( !is_array( $selectOptions ) ) {
$selectOptions = array( $selectOptions );
}
if ( ( $sequenceData = $this->getSequenceData( $destTable ) ) !== false &&
- !isset( $varMap[$sequenceData['column']] ) )
- {
+ !isset( $varMap[$sequenceData['column']] )
+ ) {
$varMap[$sequenceData['column']] = 'GET_SEQUENCE_VALUE(\'' . $sequenceData['sequence'] . '\')';
}
function tableNameInternal( $name ) {
$name = $this->tableName( $name );
+
return preg_replace( '/.*\.(.*)/', '$1', $name );
}
+
/**
* Return the next in a sequence, save the value for retrieval via insertId()
* @return null
$res = $this->query( "SELECT $seqName.nextval FROM dual" );
$row = $this->fetchRow( $res );
$this->mInsertId = $row[0];
+
return $this->mInsertId;
}
private function getSequenceData( $table ) {
if ( $this->sequenceData == null ) {
$result = $this->doQuery( "SELECT lower(asq.sequence_name),
- lower(atc.table_name),
- lower(atc.column_name)
- FROM all_sequences asq, all_tab_columns atc
- WHERE decode(atc.table_name, '{$this->mTablePrefix}MWUSER', '{$this->mTablePrefix}USER', atc.table_name) || '_' ||
- atc.column_name || '_SEQ' = '{$this->mTablePrefix}' || asq.sequence_name
- AND asq.sequence_owner = upper('{$this->mDBname}')
- AND atc.owner = upper('{$this->mDBname}')" );
+ lower(atc.table_name),
+ lower(atc.column_name)
+ FROM all_sequences asq, all_tab_columns atc
+ WHERE decode(
+ atc.table_name,
+ '{$this->mTablePrefix}MWUSER',
+ '{$this->mTablePrefix}USER',
+ atc.table_name
+ ) || '_' ||
+ atc.column_name || '_SEQ' = '{$this->mTablePrefix}' || asq.sequence_name
+ AND asq.sequence_owner = upper('{$this->mDBname}')
+ AND atc.owner = upper('{$this->mDBname}')" );
while ( ( $row = $result->fetchRow() ) !== false ) {
$this->sequenceData[$row[1]] = array(
}
}
$table = strtolower( $this->removeIdentifierQuotes( $this->tableName( $table ) ) );
+
return ( isset( $this->sequenceData[$table] ) ) ? $this->sequenceData[$table] : false;
}
# Returns the size of a text field, or -1 for "unlimited"
function textFieldSize( $table, $field ) {
$fieldInfoData = $this->fieldInfo( $table, $field );
+
return $fieldInfoData->maxLength();
}
if ( $offset === false ) {
$offset = 0;
}
+
return "SELECT * FROM ($sql) WHERE rownum >= (1 + $offset) AND rownum < (1 + $limit + $offset)";
}
if ( $b instanceof Blob ) {
$b = $b->fetch();
}
+
return $b;
}
function unionQueries( $sqls, $all ) {
$glue = ' UNION ALL ';
- return 'SELECT * ' . ( $all ? '' : '/* UNION_UNIQUE */ ' ) . 'FROM (' . implode( $glue, $sqls ) . ')';
+
+ return 'SELECT * ' . ( $all ? '' : '/* UNION_UNIQUE */ ' ) .
+ 'FROM (' . implode( $glue, $sqls ) . ')';
}
function wasDeadlock() {
return $this->lastErrno() == 'OCI-00060';
}
- function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
+ function duplicateTableStructure( $oldName, $newName, $temporary = false,
+ $fname = __METHOD__
+ ) {
$temporary = $temporary ? 'TRUE' : 'FALSE';
$newName = strtoupper( $newName );
$oldPrefix = substr( $oldName, 0, strlen( $oldName ) - strlen( $tabName ) );
$newPrefix = strtoupper( $this->mTablePrefix );
- return $this->doQuery( "BEGIN DUPLICATE_TABLE( '$tabName', '$oldPrefix', '$newPrefix', $temporary ); END;" );
+ return $this->doQuery( "BEGIN DUPLICATE_TABLE( '$tabName', " .
+ "'$oldPrefix', '$newPrefix', $temporary ); END;" );
}
function listTables( $prefix = null, $fname = __METHOD__ ) {
}
$owner = strtoupper( $this->mDBname );
- $result = $this->doQuery( "SELECT table_name FROM all_tables WHERE owner='$owner' AND table_name NOT LIKE '%!_IDX\$_' ESCAPE '!' $listWhere" );
+ $result = $this->doQuery( "SELECT table_name FROM all_tables " .
+ "WHERE owner='$owner' AND table_name NOT LIKE '%!_IDX\$_' ESCAPE '!' $listWhere" );
// dirty code ... i know
$endArray = array();
*/
function getServerVersion() {
//better version number, fallback on driver
- $rset = $this->doQuery( 'SELECT version FROM product_component_version WHERE UPPER(product) LIKE \'ORACLE DATABASE%\'' );
+ $rset = $this->doQuery(
+ 'SELECT version FROM product_component_version ' .
+ 'WHERE UPPER(product) LIKE \'ORACLE DATABASE%\''
+ );
if ( !( $row = $rset->fetchRow() ) ) {
return oci_server_version( $this->mConn );
}
+
return $row['version'];
}
} else {
$count = 0;
}
+
return $count != 0;
}
}
$res->free();
+
return $exists;
}
$tableWhere = '= \'' . $table . '\'';
}
- $fieldInfoStmt = oci_parse( $this->mConn, 'SELECT * FROM wiki_field_info_full WHERE table_name ' . $tableWhere . ' and column_name = \'' . $field . '\'' );
+ $fieldInfoStmt = oci_parse(
+ $this->mConn,
+ 'SELECT * FROM wiki_field_info_full WHERE table_name ' .
+ $tableWhere . ' and column_name = \'' . $field . '\''
+ );
if ( oci_execute( $fieldInfoStmt, $this->execFlags() ) === false ) {
$e = oci_error( $fieldInfoStmt );
$this->reportQueryError( $e['message'], $e['code'], 'fieldInfo QUERY', __METHOD__ );
+
return false;
}
$res = new ORAResult( $this, $fieldInfoStmt );
$this->mFieldInfoCache["$table.$field"] = $fieldInfoTemp;
}
$res->free();
+
return $fieldInfoTemp;
}
if ( is_array( $table ) ) {
throw new DBUnexpectedError( $this, 'DatabaseOracle::fieldInfo called with table array!' );
}
+
return $this->fieldInfoMulti( $table, $field );
}
$replacements = array();
- while ( ! feof( $fp ) ) {
+ while ( !feof( $fp ) ) {
if ( $lineCallback ) {
call_user_func( $lineCallback );
}
if ( $sl < 0 ) {
continue;
}
- if ( '-' == $line { 0 } && '-' == $line { 1 } ) {
+ if ( '-' == $line{0} && '-' == $line{1} ) {
continue;
}
$dollarquote = true;
}
} elseif ( !$dollarquote ) {
- if ( ';' == $line { $sl } && ( $sl < 2 || ';' != $line { $sl - 1 } ) ) {
+ if ( ';' == $line{$sl} && ( $sl < 2 || ';' != $line{$sl - 1} ) ) {
$done = true;
$line = substr( $line, 0, $sl );
}
if ( false === $res ) {
$err = $this->lastError();
+
return "Query \"{$cmd}\" failed with error code \"$err\".\n";
}
}
$done = false;
}
}
+
return true;
}
if ( $e['code'] != '1435' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
}
+
return false;
}
+
return true;
}
if ( isset( $wgContLang->mLoaded ) && $wgContLang->mLoaded ) {
$s = $wgContLang->checkTitleEncoding( $s );
}
+
return "'" . $this->strencode( $s ) . "'";
}
if ( !$this->getFlag( DBO_DDLMODE ) ) {
$s = '/*Q*/' . $s;
}
+
return $s;
}
$conds2[$col] = $val;
}
}
+
return $conds2;
}
- function selectRow( $table, $vars, $conds, $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+ function selectRow( $table, $vars, $conds, $fname = __METHOD__,
+ $options = array(), $join_conds = array()
+ ) {
if ( is_array( $conds ) ) {
$conds = $this->wrapConditionsForWhere( $table, $conds );
}
+
return parent::selectRow( $table, $vars, $conds, $fname, $options, $join_conds );
}
$startOpts .= 'DISTINCT';
}
- if ( isset( $options['USE INDEX'] ) && ! is_array( $options['USE INDEX'] ) ) {
+ if ( isset( $options['USE INDEX'] ) && !is_array( $options['USE INDEX'] ) ) {
$useIndex = $this->useIndexClause( $options['USE INDEX'] );
} else {
$useIndex = '';
// all deletions on these tables have transactions so final failure rollbacks these updates
$table = $this->tableName( $table );
if ( $table == $this->tableName( 'user' ) ) {
- $this->update( 'archive', array( 'ar_user' => 0 ), array( 'ar_user' => $conds['user_id'] ), $fname );
- $this->update( 'ipblocks', array( 'ipb_user' => 0 ), array( 'ipb_user' => $conds['user_id'] ), $fname );
- $this->update( 'image', array( 'img_user' => 0 ), array( 'img_user' => $conds['user_id'] ), $fname );
- $this->update( 'oldimage', array( 'oi_user' => 0 ), array( 'oi_user' => $conds['user_id'] ), $fname );
- $this->update( 'filearchive', array( 'fa_deleted_user' => 0 ), array( 'fa_deleted_user' => $conds['user_id'] ), $fname );
- $this->update( 'filearchive', array( 'fa_user' => 0 ), array( 'fa_user' => $conds['user_id'] ), $fname );
- $this->update( 'uploadstash', array( 'us_user' => 0 ), array( 'us_user' => $conds['user_id'] ), $fname );
- $this->update( 'recentchanges', array( 'rc_user' => 0 ), array( 'rc_user' => $conds['user_id'] ), $fname );
- $this->update( 'logging', array( 'log_user' => 0 ), array( 'log_user' => $conds['user_id'] ), $fname );
+ $this->update( 'archive', array( 'ar_user' => 0 ),
+ array( 'ar_user' => $conds['user_id'] ), $fname );
+ $this->update( 'ipblocks', array( 'ipb_user' => 0 ),
+ array( 'ipb_user' => $conds['user_id'] ), $fname );
+ $this->update( 'image', array( 'img_user' => 0 ),
+ array( 'img_user' => $conds['user_id'] ), $fname );
+ $this->update( 'oldimage', array( 'oi_user' => 0 ),
+ array( 'oi_user' => $conds['user_id'] ), $fname );
+ $this->update( 'filearchive', array( 'fa_deleted_user' => 0 ),
+ array( 'fa_deleted_user' => $conds['user_id'] ), $fname );
+ $this->update( 'filearchive', array( 'fa_user' => 0 ),
+ array( 'fa_user' => $conds['user_id'] ), $fname );
+ $this->update( 'uploadstash', array( 'us_user' => 0 ),
+ array( 'us_user' => $conds['user_id'] ), $fname );
+ $this->update( 'recentchanges', array( 'rc_user' => 0 ),
+ array( 'rc_user' => $conds['user_id'] ), $fname );
+ $this->update( 'logging', array( 'log_user' => 0 ),
+ array( 'log_user' => $conds['user_id'] ), $fname );
} elseif ( $table == $this->tableName( 'image' ) ) {
- $this->update( 'oldimage', array( 'oi_name' => 0 ), array( 'oi_name' => $conds['img_name'] ), $fname );
+ $this->update( 'oldimage', array( 'oi_name' => 0 ),
+ array( 'oi_name' => $conds['img_name'] ), $fname );
}
+
return parent::delete( $table, $conds, $fname );
}
if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
$e = oci_error( $this->mConn );
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
}
foreach ( $values as $col => &$val ) {
if ( oci_bind_by_name( $stmt, ":$col", $val ) === false ) {
$e = oci_error( $stmt );
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
}
} else {
if ( $col_type == 'BLOB' ) {
$lob[$col]->writeTemporary( $val );
- oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, SQLT_BLOB );
+ oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, SQLT_BLOB );
} else {
$lob[$col]->writeTemporary( $val );
- oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_CLOB );
+ oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, OCI_B_CLOB );
}
}
}
$e = oci_error( $stmt );
if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
return false;
} else {
$this->mAffectedRows = oci_num_rows( $stmt );
return $this->mServer;
}
+ public function buildGroupConcatField(
+ $delim, $table, $field, $conds = '', $join_conds = array()
+ ) {
+ $fld = "LISTAGG($field," . $this->addQuotes( $delim ) . ") WITHIN GROUP (ORDER BY $field)";
+
+ return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
+ }
+
public function getSearchEngine() {
return 'SearchOracle';
}
public function getInfinity() {
return '31-12-2030 12:00:00.000000';
}
-
} // end DatabaseOracle class
$n->conname = $row->conname;
$n->has_default = ( $row->atthasdef === 't' );
$n->default = $row->adsrc;
+
return $n;
}
function conname() {
return $this->conname;
}
+
/**
* @since 1.19
*/
return false;
}
}
-
}
/**
}
$old = next( $this->mCurrentState );
$new = next( $this->mNewState );
-
}
}
}
$this->didbegin = false;
/* If we are not in a transaction, we need to be for savepoint trickery */
if ( !$dbw->trxLevel() ) {
- $dbw->begin( "FOR SAVEPOINT" );
- $this->didbegin = true;
+ $dbw->begin( "FOR SAVEPOINT" );
+ $this->didbegin = true;
}
}
global $wgDebugDBTransactions;
if ( $this->dbw->doQuery( $keyword . " " . $this->id ) !== false ) {
if ( $wgDebugDBTransactions ) {
- wfDebug( sprintf ( $msg_ok, $this->id ) );
+ wfDebug( sprintf( $msg_ok, $this->id ) );
}
} else {
- wfDebug( sprintf ( $msg_failed, $this->id ) );
+ wfDebug( sprintf( $msg_failed, $this->id ) );
}
}
function cascadingDeletes() {
return true;
}
+
function cleanupTriggers() {
return true;
}
+
function strictIPs() {
return true;
}
+
function realTimestamps() {
return true;
}
+
function implicitGroupby() {
return false;
}
+
function implicitOrderby() {
return false;
}
+
function searchableIPs() {
return true;
}
+
function functionalIndexes() {
return true;
}
function hasConstraint( $name ) {
- $SQL = "SELECT 1 FROM pg_catalog.pg_constraint c, pg_catalog.pg_namespace n WHERE c.connamespace = n.oid AND conname = '" .
- pg_escape_string( $this->mConn, $name ) . "' AND n.nspname = '" . pg_escape_string( $this->mConn, $this->getCoreSchema() ) . "'";
+ $SQL = "SELECT 1 FROM pg_catalog.pg_constraint c, pg_catalog.pg_namespace n " .
+ "WHERE c.connamespace = n.oid AND conname = '" .
+ pg_escape_string( $this->mConn, $name ) . "' AND n.nspname = '" .
+ pg_escape_string( $this->mConn, $this->getCoreSchema() ) . "'";
$res = $this->doQuery( $SQL );
+
return $this->numRows( $res );
}
function open( $server, $user, $password, $dbName ) {
# Test for Postgres support, to avoid suppressed fatal error
if ( !function_exists( 'pg_connect' ) ) {
- throw new DBConnectionError( $this, "Postgres functions missing, have you compiled PHP with the --with-pgsql option?\n (Note: if you recently installed PHP, you may need to restart your webserver and database)\n" );
+ throw new DBConnectionError(
+ $this,
+ "Postgres functions missing, have you compiled PHP with the --with-pgsql\n" .
+ "option? (Note: if you recently installed PHP, you may need to restart your\n" .
+ "webserver and database)\n"
+ );
}
global $wgDBport;
if ( !$this->mConn ) {
wfDebug( "DB connection error\n" );
- wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+ wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " .
+ substr( $password, 0, 3 ) . "...\n" );
wfDebug( $this->lastError() . "\n" );
throw new DBConnectionError( $this, str_replace( "\n", ' ', $phpError ) );
}
foreach ( $vars as $name => $value ) {
$s .= "$name='" . str_replace( "'", "\\'", $value ) . "' ";
}
+
return $s;
}
if ( pg_result_error( $this->mLastResult ) ) {
return false;
}
+
return $this->mLastResult;
}
protected function dumpError() {
- $diags = array( PGSQL_DIAG_SEVERITY,
- PGSQL_DIAG_SQLSTATE,
- PGSQL_DIAG_MESSAGE_PRIMARY,
- PGSQL_DIAG_MESSAGE_DETAIL,
- PGSQL_DIAG_MESSAGE_HINT,
- PGSQL_DIAG_STATEMENT_POSITION,
- PGSQL_DIAG_INTERNAL_POSITION,
- PGSQL_DIAG_INTERNAL_QUERY,
- PGSQL_DIAG_CONTEXT,
- PGSQL_DIAG_SOURCE_FILE,
- PGSQL_DIAG_SOURCE_LINE,
- PGSQL_DIAG_SOURCE_FUNCTION );
+ $diags = array(
+ PGSQL_DIAG_SEVERITY,
+ PGSQL_DIAG_SQLSTATE,
+ PGSQL_DIAG_MESSAGE_PRIMARY,
+ PGSQL_DIAG_MESSAGE_DETAIL,
+ PGSQL_DIAG_MESSAGE_HINT,
+ PGSQL_DIAG_STATEMENT_POSITION,
+ PGSQL_DIAG_INTERNAL_POSITION,
+ PGSQL_DIAG_INTERNAL_QUERY,
+ PGSQL_DIAG_CONTEXT,
+ PGSQL_DIAG_SOURCE_FILE,
+ PGSQL_DIAG_SOURCE_LINE,
+ PGSQL_DIAG_SOURCE_FUNCTION
+ );
foreach ( $diags as $d ) {
- wfDebug( sprintf( "PgSQL ERROR(%d): %s\n", $d, pg_result_error_field( $this->mLastResult, $d ) ) );
+ wfDebug( sprintf( "PgSQL ERROR(%d): %s\n",
+ $d, pg_result_error_field( $this->mLastResult, $d ) ) );
}
}
/* Check for constraint violation */
if ( $errno === '23505' ) {
parent::reportQueryError( $error, $errno, $sql, $fname, $tempIgnore );
+
return;
}
}
# @todo hashar: not sure if the following test really trigger if the object
# fetching failed.
if ( pg_last_error( $this->mConn ) ) {
- throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
+ throw new DBUnexpectedError(
+ $this,
+ 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) )
+ );
}
+
return $row;
}
$row = pg_fetch_array( $res );
wfRestoreWarnings();
if ( pg_last_error( $this->mConn ) ) {
- throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
+ throw new DBUnexpectedError(
+ $this,
+ 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) )
+ );
}
+
return $row;
}
$n = pg_num_rows( $res );
wfRestoreWarnings();
if ( pg_last_error( $this->mConn ) ) {
- throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
+ throw new DBUnexpectedError(
+ $this,
+ 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) )
+ );
}
+
return $n;
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return pg_num_fields( $res );
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return pg_field_name( $res, $n );
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return pg_result_seek( $res, $row );
}
return 'No database connection';
}
}
+
function lastErrno() {
if ( $this->mLastResult ) {
return pg_result_error_field( $this->mLastResult, PGSQL_DIAG_SQLSTATE );
if ( empty( $this->mLastResult ) ) {
return 0;
}
+
return pg_affected_rows( $this->mLastResult );
}
* Takes same arguments as Database::select()
* @return int
*/
- function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
+ function estimateRowCount( $table, $vars = '*', $conds = '',
+ $fname = __METHOD__, $options = array()
+ ) {
$options['EXPLAIN'] = true;
$res = $this->select( $table, $vars, $conds, $fname, $options );
$rows = -1;
$rows = $count[1];
}
}
+
return $rows;
}
return $row;
}
}
+
return false;
}
} else {
return null;
}
+
return $a;
}
foreach ( $res as $row ) {
return true;
}
+
return false;
}
/**
* INSERT SELECT wrapper
* $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
- * Source items may be literals rather then field names, but strings should be quoted with Database::addQuotes()
+ * Source items may be literals rather then field names, but strings should
+ * be quoted with Database::addQuotes()
* $conds may be "*" to copy the whole table
* srcTable may be an array of tables.
* @todo FIXME: Implement this a little better (seperate select/insert)?
* @return bool
*/
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
- $insertOptions = array(), $selectOptions = array() )
- {
+ $insertOptions = array(), $selectOptions = array() ) {
$destTable = $this->tableName( $destTable );
if ( !is_array( $insertOptions ) ) {
}
$sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
- " SELECT $startOpts " . implode( ',', $varMap ) .
- " FROM $srcTable $useIndex";
+ " SELECT $startOpts " . implode( ',', $varMap ) .
+ " FROM $srcTable $useIndex";
if ( $conds != '*' ) {
$sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
$res = $this->query( "SELECT nextval('$safeseq')" );
$row = $this->fetchRow( $res );
$this->mInsertId = $row[0];
+
return $this->mInsertId;
}
$res = $this->query( "SELECT currval('$safeseq')" );
$row = $this->fetchRow( $res );
$currval = $row[0];
+
return $currval;
}
} else {
$size = $row->size;
}
+
return $size;
}
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
$newName = $this->addIdentifierQuotes( $newName );
$oldName = $this->addIdentifierQuotes( $oldName );
- return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName (LIKE $oldName INCLUDING DEFAULTS)", $fname );
+
+ return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName " .
+ "(LIKE $oldName INCLUDING DEFAULTS)", $fname );
}
function listTables( $prefix = null, $fname = __METHOD__ ) {
$text, $match, 0, $offset );
$offset += strlen( $match[0] );
$output[] = ( '"' != $match[1][0]
- ? $match[1]
- : stripcslashes( substr( $match[1], 1, -1 ) ) );
+ ? $match[1]
+ : stripcslashes( substr( $match[1], 1, -1 ) ) );
if ( '},' == $match[3] ) {
return $output;
}
$offset = $this->pg_array_parse( $text, $output, $limit, $offset + 1 );
}
} while ( $limit > $offset );
+
return $output;
}
function getCurrentSchema() {
$res = $this->query( "SELECT current_schema()", __METHOD__ );
$row = $this->fetchRow( $res );
+
return $row[0];
}
$res = $this->query( "SELECT current_schemas(false)", __METHOD__ );
$row = $this->fetchRow( $res );
$schemas = array();
+
/* PHP pgsql support does not support array type, "{a,b}" string is returned */
+
return $this->pg_array_parse( $row[0], $schemas );
}
function getSearchPath() {
$res = $this->query( "SHOW search_path", __METHOD__ );
$row = $this->fetchRow( $res );
+
/* PostgreSQL returns SHOW values as strings */
+
return explode( ",", $row[0] );
}
*/
$search_path = $this->getSearchPath();
array_unshift( $search_path,
- $this->addIdentifierQuotes( $desired_schema ));
+ $this->addIdentifierQuotes( $desired_schema ) );
$this->setSearchPath( $search_path );
$this->mCoreSchema = $desired_schema;
wfDebug( "Schema \"" . $desired_schema . "\" added to the search path\n" );
}
} else {
$this->mCoreSchema = $this->getCurrentSchema();
- wfDebug( "Schema \"" . $desired_schema . "\" not found, using current \"" . $this->mCoreSchema . "\"\n" );
+ wfDebug( "Schema \"" . $desired_schema . "\" not found, using current \"" .
+ $this->mCoreSchema . "\"\n" );
}
/* Commit SET otherwise it will be rollbacked on error or IGNORE SELECT */
$this->commit( __METHOD__ );
$this->numeric_version = pg_parameter_status( $this->mConn, 'server_version' );
}
}
+
return $this->numeric_version;
}
. "AND c.relkind IN ('" . implode( "','", $types ) . "')";
$res = $this->query( $SQL );
$count = $res ? $res->numRows() : 0;
+
return (bool)$count;
}
return null;
}
$rows = $res->numRows();
+
return $rows;
}
'schemaname' => $this->getCoreSchema()
)
);
+
return $exists === $rule;
}
function constraintExists( $table, $constraint ) {
$SQL = sprintf( "SELECT 1 FROM information_schema.table_constraints " .
- "WHERE constraint_schema = %s AND table_name = %s AND constraint_name = %s",
+ "WHERE constraint_schema = %s AND table_name = %s AND constraint_name = %s",
$this->addQuotes( $this->getCoreSchema() ),
$this->addQuotes( $table ),
$this->addQuotes( $constraint )
return null;
}
$rows = $res->numRows();
+
return $rows;
}
function schemaExists( $schema ) {
$exists = $this->selectField( '"pg_catalog"."pg_namespace"', 1,
array( 'nspname' => $schema ), __METHOD__ );
+
return (bool)$exists;
}
function roleExists( $roleName ) {
$exists = $this->selectField( '"pg_catalog"."pg_roles"', 1,
array( 'rolname' => $roleName ), __METHOD__ );
+
return (bool)$exists;
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
return pg_field_type( $res, $index );
}
if ( $b instanceof Blob ) {
$b = $b->fetch();
}
+
return pg_unescape_bytea( $b );
}
} elseif ( $s instanceof Blob ) {
return "'" . $s->fetch( $s ) . "'";
}
+
return "'" . pg_escape_string( $this->mConn, $s ) . "'";
}
return implode( ' || ', $stringList );
}
+ public function buildGroupConcatField(
+ $delimiter, $table, $field, $conds = '', $options = array(), $join_conds = array()
+ ) {
+ $fld = "array_to_string(array_agg($field)," . $this->addQuotes( $delimiter ) . ')';
+
+ return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
+ }
+
public function getSearchEngine() {
return 'SearchPostgres';
}
if ( substr( $newLine, 0, 4 ) == '$mw$' ) {
if ( $this->delimiter ) {
$this->delimiter = false;
- }
- else {
+ } else {
$this->delimiter = ';';
}
}
+
return parent::streamStatementEnd( $sql, $newLine );
}
$result = $this->query( "SELECT (CASE(pg_try_advisory_lock($key))
WHEN 'f' THEN 'f' ELSE pg_advisory_unlock($key) END) AS lockstatus", $method );
$row = $this->fetchObject( $result );
+
return ( $row->lockstatus === 't' );
}
}
}
wfDebug( __METHOD__ . " failed to acquire lock\n" );
+
return false;
}
/**
- * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKSFROM PG DOCS: http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
+ * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKSFROM
+ * PG DOCS: http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
* @param $lockName string
* @param $method string
* @return bool
$key = $this->addQuotes( $this->bigintFromLockName( $lockName ) );
$result = $this->query( "SELECT pg_advisory_unlock($key) as lockstatus", $method );
$row = $this->fetchObject( $result );
+
return ( $row->lockstatus === 't' );
}
* @ingroup Database
*/
class DatabaseSqlite extends DatabaseBase {
-
private static $fulltextEnabled = null;
var $mAffectedRows;
throw new DBConnectionError( $this, "SQLite database not accessible" );
}
$this->openFile( $fileName );
+
return $this->mConn;
}
$this->mConn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
# Enforce LIKE to be case sensitive, just like MySQL
$this->query( 'PRAGMA case_sensitive_like = 1' );
+
return true;
}
}
*/
protected function closeConnection() {
$this->mConn = null;
+
return true;
}
self::$fulltextEnabled = stristr( $row['sql'], 'fts' ) !== false;
}
}
+
return self::$fulltextEnabled;
}
$cachedResult = 'FTS3';
}
$db->close();
+
return $cachedResult;
}
* Attaches external database to our connection, see http://sqlite.org/lang_attach.html
* for details.
*
- * @param string $name database name to be used in queries like SELECT foo FROM dbname.table
- * @param string $file database file name. If omitted, will be generated using $name and $wgSQLiteDataDir
+ * @param string $name database name to be used in queries like
+ * SELECT foo FROM dbname.table
+ * @param string $file database file name. If omitted, will be generated
+ * using $name and $wgSQLiteDataDir
* @param string $fname calling function name
*
* @return ResultWrapper
$file = self::generateFileName( $wgSQLiteDataDir, $name );
}
$file = $this->addQuotes( $file );
+
return $this->query( "ATTACH DATABASE $file AS $name", $fname );
}
$this->mAffectedRows = $r->rowCount();
$res = new ResultWrapper( $this, $r->fetchAll() );
}
+
return $res;
}
return $obj;
}
+
return false;
}
$cur = current( $r );
if ( is_array( $cur ) ) {
next( $r );
+
return $cur;
}
+
return false;
}
*/
function numRows( $res ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
+
return count( $r );
}
*/
function numFields( $res ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
+
return is_array( $r ) ? count( $r[0] ) : 0;
}
$r = $res instanceof ResultWrapper ? $res->result : $res;
if ( is_array( $r ) ) {
$keys = array_keys( $r[0] );
+
return $keys[$n];
}
+
return false;
}
if ( strpos( $name, 'sqlite_' ) === 0 ) {
return $name;
}
+
return str_replace( '"', '', parent::tableName( $name, $format ) );
}
return "Cannot return last error, no db connection";
}
$e = $this->mConn->errorInfo();
+
return isset( $e[2] ) ? $e[2] : '';
}
return "Cannot return last error, no db connection";
} else {
$info = $this->mConn->errorInfo();
+
return $info[1];
}
}
foreach ( $res as $row ) {
$info[] = $row->name;
}
+
return $info;
}
}
$firstPart = substr( $row->sql, 0, $indexPos );
$options = explode( ' ', $firstPart );
+
return in_array( 'UNIQUE', $options );
}
$options[$k] = '';
}
}
+
return parent::makeSelectOptions( $options );
}
*/
function makeUpdateOptions( $options ) {
$options = self::fixIgnore( $options );
+
return parent::makeUpdateOptions( $options );
}
$options[$k] = 'OR IGNORE';
}
}
+
return $options;
}
*/
function makeInsertOptions( $options ) {
$options = self::fixIgnore( $options );
+
return parent::makeInsertOptions( $options );
}
*/
function unionQueries( $sqls, $all ) {
$glue = $all ? ' UNION ALL ' : ' UNION ';
+
return implode( $glue, $sqls );
}
*/
function getServerVersion() {
$ver = $this->mConn->getAttribute( PDO::ATTR_SERVER_VERSION );
+
return $ver;
}
* @return string User-friendly database information
*/
public function getServerInfo() {
- return wfMessage( self::getFulltextSearchModule() ? 'sqlite-has-fts' : 'sqlite-no-fts', $this->getServerVersion() )->text();
+ return wfMessage( self::getFulltextSearchModule()
+ ? 'sqlite-has-fts'
+ : 'sqlite-no-fts', $this->getServerVersion() )->text();
}
/**
return new SQLiteField( $row, $tableName );
}
}
+
return false;
}
* @return string
*/
function strencode( $s ) {
- return substr( $this->addQuotes( $s ), 1, - 1 );
+ return substr( $this->addQuotes( $s ), 1, -1 );
}
/**
if ( $b instanceof Blob ) {
$b = $b->fetch();
}
+
return $b;
}
if ( count( $params ) > 0 && is_array( $params[0] ) ) {
$params = $params[0];
}
+
return parent::buildLike( $params ) . "ESCAPE '\' ";
}
public function deadlockLoop( /*...*/ ) {
$args = func_get_args();
$function = array_shift( $args );
+
return call_user_func_array( $function, $args );
}
// INT -> INTEGER
$s = preg_replace( '/\b(tiny|small|medium|big|)int(\s*\(\s*\d+\s*\)|\b)/i', 'INTEGER', $s );
// floating point types -> REAL
- $s = preg_replace( '/\b(float|double(\s+precision)?)(\s*\(\s*\d+\s*(,\s*\d+\s*)?\)|\b)/i', 'REAL', $s );
+ $s = preg_replace(
+ '/\b(float|double(\s+precision)?)(\s*\(\s*\d+\s*(,\s*\d+\s*)?\)|\b)/i',
+ 'REAL',
+ $s
+ );
// varchar -> TEXT
$s = preg_replace( '/\b(var)?char\s*\(.*?\)/i', 'TEXT', $s );
// TEXT normalization
// DROP INDEX is database-wide, not table-specific, so no ON <table> clause.
$s = preg_replace( '/\sON\s+[^\s]*/i', '', $s );
}
+
return $s;
}
return '(' . implode( ') || (', $stringList ) . ')';
}
+ public function buildGroupConcatField(
+ $delim, $table, $field, $conds = '', $join_conds = array()
+ ) {
+ $fld = "group_concat($field," . $this->addQuotes( $delim ) . ')';
+
+ return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
+ }
+
/**
* @throws MWException
* @param $oldName
* @return bool|ResultWrapper
*/
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
- $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name=" . $this->addQuotes( $oldName ) . " AND type='table'", $fname );
+ $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name=" .
+ $this->addQuotes( $oldName ) . " AND type='table'", $fname );
$obj = $this->fetchObject( $res );
if ( !$obj ) {
throw new MWException( "Couldn't retrieve structure for table $oldName" );
}
$sql = $obj->sql;
- $sql = preg_replace( '/(?<=\W)"?' . preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ) ) . '"?(?=\W)/', $this->addIdentifierQuotes( $newName ), $sql, 1 );
+ $sql = preg_replace(
+ '/(?<=\W)"?' . preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ) ) . '"?(?=\W)/',
+ $this->addIdentifierQuotes( $newName ),
+ $sql,
+ 1
+ );
if ( $temporary ) {
if ( preg_match( '/^\\s*CREATE\\s+VIRTUAL\\s+TABLE\b/i', $sql ) ) {
wfDebug( "Table $oldName is virtual, can't create a temporary duplicate.\n" );
$sql = str_replace( 'CREATE TABLE', 'CREATE TEMPORARY TABLE', $sql );
}
}
+
return $this->query( $sql, $fname );
}
if ( strpos( $table, 'sqlite_' ) !== 0 ) {
$endArray[] = $table;
}
-
}
}
return $endArray;
}
-
} // end DatabaseSqlite class
/**
*/
class SQLiteField implements Field {
private $info, $tableName;
+
function __construct( $info, $tableName ) {
$this->info = $info;
$this->tableName = $tableName;
return str_replace( "''", "'", $this->info->dflt_value );
}
}
+
return $this->info->dflt_value;
}
function type() {
return $this->info->type;
}
-
} // end SQLiteField
if ( is_null( $this->currentRow ) ) {
$this->next();
}
+
return $this->currentRow;
}
function next() {
$this->pos++;
$this->currentRow = $this->fetchObject();
+
return $this->currentRow;
}
}
/**
- * Used by DatabaseBase::buildLike() to represent characters that have special meaning in SQL LIKE clauses
- * and thus need no escaping. Don't instantiate it manually, use DatabaseBase::anyChar() and anyString() instead.
+ * Used by DatabaseBase::buildLike() to represent characters that have special
+ * meaning in SQL LIKE clauses and thus need no escaping. Don't instantiate it
+ * manually, use DatabaseBase::anyChar() and anyString() instead.
*/
class LikeMatch {
private $str;
*/
interface IORMRow {
-
/**
* Load the specified fields from the database.
*
* @return IORMTable
*/
public function getTable();
-
}
*/
interface IORMTable {
-
/**
* Returns the name of the database table objects of this type are stored in.
*
* * array
* * blob
*
- * TODO: get rid of the id field. Every row instance needs to have
- * one so this is just causing hassle at various locations by requiring an extra check for field name.
+ * @todo Get rid of the id field. Every row instance needs to have one so
+ * this is just causing hassle at various locations by requiring an extra
+ * check for field name.
*
* @since 1.20
*
* @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode)
*/
public function select( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null );
+ array $options = array(), $functionName = null );
/**
* Selects the the specified fields of the records matching the provided
* @return array of self
*/
public function selectObjects( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null );
+ array $options = array(), $functionName = null );
/**
* Do the actual select.
* @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode)
*/
public function rawSelect( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null );
+ array $options = array(), $functionName = null );
/**
* Selects the the specified fields of the records matching the provided
* @return array of array
*/
public function selectFields( $fields = null, array $conditions = array(),
- array $options = array(), $collapse = true, $functionName = null );
+ array $options = array(), $collapse = true, $functionName = null );
/**
* Selects the the specified fields of the first matching record.
* @return IORMRow|bool False on failure
*/
public function selectRow( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null );
+ array $options = array(), $functionName = null );
/**
* Selects the the specified fields of the records matching the provided
* @return ResultWrapper
*/
public function rawSelectRow( array $fields, array $conditions = array(),
- array $options = array(), $functionName = null );
+ array $options = array(), $functionName = null );
/**
* Selects the the specified fields of the first record matching the provided
* @return mixed|array|bool False on failure
*/
public function selectFieldsRow( $fields = null, array $conditions = array(),
- array $options = array(), $collapse = true, $functionName = null );
+ array $options = array(), $collapse = true, $functionName = null );
/**
* Returns if there is at least one record matching the provided conditions.
*
* @since 1.20
*
- * @return String|bool The target wiki, in a form that LBFactory understands (or false if the local wiki is used)
+ * @return String|bool The target wiki, in a form that LBFactory
+ * understands (or false if the local wiki is used)
*/
public function getTargetWiki();
/**
* Set the ID of the any foreign wiki to use as a target for database operations
*
- * @param string|bool $wiki The target wiki, in a form that LBFactory understands (or false if the local wiki shall be used)
+ * @param string|bool $wiki The target wiki, in a form that LBFactory
+ * understands (or false if the local wiki shall be used)
*
* @since 1.20
*/
* @return boolean
*/
public function canHaveField( $name );
-
}
* @ingroup Database
*/
abstract class LBFactory {
-
/**
* @var LBFactory
*/
$class = $wgLBFactoryConf['class'];
self::$instance = new $class( $wgLBFactoryConf );
}
+
return self::$instance;
}
'type' => $wgDBtype,
'load' => 1,
'flags' => $flags
- ));
+ ) );
}
return new LoadBalancer( array(
'servers' => $servers,
'masterWaitTimeout' => $wgMasterWaitTimeout
- ));
+ ) );
}
/**
$this->mainLB->parentInfo( array( 'id' => 'main' ) );
$this->chronProt->initLB( $this->mainLB );
}
+
return $this->mainLB;
}
if ( !isset( $wgExternalServers[$cluster] ) ) {
throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
}
+
return new LoadBalancer( array(
'servers' => $wgExternalServers[$cluster]
- ));
+ ) );
}
/**
$this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
$this->chronProt->initLB( $this->extLBs[$cluster] );
}
+
return $this->extLBs[$cluster];
}
*/
class DBAccessError extends MWException {
function __construct() {
- parent::__construct( "Mediawiki tried to access the database via wfGetDB(). This is not allowed." );
+ parent::__construct( "Mediawiki tried to access the database via wfGetDB(). " .
+ "This is not allowed." );
}
}
* Configuration:
* sectionsByDB A map of database names to section names
*
- * sectionLoads A 2-d map. For each section, gives a map of server names to load ratios.
- * For example: array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
+ * sectionLoads A 2-d map. For each section, gives a map of server names to
+ * load ratios. For example:
+ * array(
+ * 'section1' => array(
+ * 'db1' => 100,
+ * 'db2' => 100
+ * )
+ * )
*
- * serverTemplate A server info associative array as documented for $wgDBservers. The host,
- * hostName and load entries will be overridden.
+ * serverTemplate A server info associative array as documented for $wgDBservers.
+ * The host, hostName and load entries will be overridden.
*
- * groupLoadsBySection A 3-d map giving server load ratios for each section and group. For example:
- * array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
+ * groupLoadsBySection A 3-d map giving server load ratios for each section and group.
+ * For example:
+ * array(
+ * 'section1' => array(
+ * 'group1' => array(
+ * 'db1' => 100,
+ * 'db2' => 100
+ * )
+ * )
+ * )
*
* groupLoadsByDB A 3-d map giving server load ratios by DB name.
*
*
* externalLoads A map of external storage cluster name to server load map
*
- * externalTemplateOverrides A set of server info keys overriding serverTemplate for external storage
+ * externalTemplateOverrides A set of server info keys overriding serverTemplate for external
+ * storage
*
- * templateOverridesByServer A 2-d map overriding serverTemplate and externalTemplateOverrides on a
- * server-by-server basis. Applies to both core and external storage.
+ * templateOverridesByServer A 2-d map overriding serverTemplate and
+ * externalTemplateOverrides on a server-by-server basis. Applies
+ * to both core and external storage.
*
* templateOverridesByCluster A 2-d map overriding the server info by external storage cluster
*
* masterTemplateOverrides An override array for all master servers.
*
- * readOnlyBySection A map of section name to read-only message. Missing or false for read/write.
+ * readOnlyBySection A map of section name to read-only message.
+ * Missing or false for read/write.
*
* @ingroup Database
*/
}
$this->lastSection = $section;
$this->lastWiki = $wiki;
+
return $section;
}
if ( isset( $this->groupLoadsByDB[$dbName] ) ) {
$groupLoads = $this->groupLoadsByDB[$dbName];
}
+
if ( isset( $this->groupLoadsBySection[$section] ) ) {
$groupLoads = array_merge_recursive( $groupLoads, $this->groupLoadsBySection[$section] );
}
- return $this->newLoadBalancer( $this->serverTemplate, $this->sectionLoads[$section], $groupLoads );
+
+ return $this->newLoadBalancer(
+ $this->serverTemplate,
+ $this->sectionLoads[$section],
+ $groupLoads
+ );
}
/**
$this->chronProt->initLB( $lb );
$this->mainLBs[$section] = $lb;
}
+
return $this->mainLBs[$section];
}
if ( isset( $this->templateOverridesByCluster[$cluster] ) ) {
$template = $this->templateOverridesByCluster[$cluster] + $template;
}
+
return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
}
$this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
$this->chronProt->initLB( $this->extLBs[$cluster] );
}
+
return $this->extLBs[$cluster];
}
$lb = new LoadBalancer( array(
'servers' => $servers,
'masterWaitTimeout' => $wgMasterWaitTimeout
- ));
+ ) );
+
return $lb;
}
$serverInfo['load'] = $load;
$servers[] = $serverInfo;
}
+
return $servers;
}
$reindexed[$server][$group] = $load;
}
}
+
return $reindexed;
}
function getDBNameAndPrefix( $wiki = false ) {
if ( $wiki === false ) {
global $wgDBname, $wgDBprefix;
+
return array( $wgDBname, $wgDBprefix );
} else {
return wfSplitWikiID( $wiki );
$class = $this->mLoadMonitorClass;
$this->mLoadMonitor = new $class( $this );
}
+
return $this->mLoadMonitor;
}
# No loads for this group, return false and the caller can use some other group
wfDebug( __METHOD__ . ": no loads for group $group\n" );
wfProfileOut( __METHOD__ );
+
return false;
}
} else {
# wants us to return false.
wfDebugLog( 'connect', __METHOD__ . ": pickRandom() returned false\n" );
wfProfileOut( __METHOD__ );
+
return false;
}
}
}
wfProfileOut( __METHOD__ );
+
return $i;
}
wfDebug( __METHOD__ . ": waiting $t us\n" );
usleep( $t );
wfProfileOut( __METHOD__ );
+
return $t;
}
public function waitForAll( $pos ) {
wfProfileIn( __METHOD__ );
$this->mWaitForPos = $pos;
- for ( $i = 1; $i < count( $this->mServers ); $i++ ) {
- $this->doWait( $i, true );
+ $serverCount = count( $this->mServers );
+ for ( $i = 1; $i < $serverCount; $i++ ) {
+ if ( $this->mLoads[$i] > 0 ) {
+ $this->doWait( $i, true );
+ }
}
wfProfileOut( __METHOD__ );
}
return reset( $conns[$i] );
}
}
+
return false;
}
if ( !$conn ) {
if ( !$open ) {
wfDebug( __METHOD__ . ": no connection open\n" );
+
return false;
} else {
$conn = $this->openConnection( $index, '' );
if ( !$conn ) {
wfDebug( __METHOD__ . ": failed to open connection\n" );
+
return false;
}
}
if ( $result == -1 || is_null( $result ) ) {
# Timed out waiting for slave, use master instead
wfDebug( __METHOD__ . ": Timed out waiting for slave #$index pos {$this->mWaitForPos}\n" );
+
return false;
} else {
wfDebug( __METHOD__ . ": Done\n" );
+
return true;
}
}
if ( $i == DB_LAST ) {
wfProfileOut( __METHOD__ );
- throw new MWException( 'Attempt to call ' . __METHOD__ . ' with deprecated server index DB_LAST' );
+ throw new MWException( 'Attempt to call ' . __METHOD__ .
+ ' with deprecated server index DB_LAST' );
} elseif ( $i === null || $i === false ) {
wfProfileOut( __METHOD__ );
- throw new MWException( 'Attempt to call ' . __METHOD__ . ' with invalid server index' );
+ throw new MWException( 'Attempt to call ' . __METHOD__ .
+ ' with invalid server index' );
}
if ( $wiki === wfWikiID() ) {
if ( $i === false ) {
$this->mLastError = 'No working slave server: ' . $this->mLastError;
wfProfileOut( __METHOD__ );
+
return $this->reportConnectionError();
}
}
$conn = $this->openConnection( $i, $wiki );
if ( !$conn ) {
wfProfileOut( __METHOD__ );
+
return $this->reportConnectionError();
}
wfProfileOut( __METHOD__ );
+
return $conn;
}
}
if ( $serverIndex === null || $refCount === null ) {
wfDebug( __METHOD__ . ": this connection was not opened as a foreign connection\n" );
+
/**
* This can happen in code like:
* foreach ( $dbs as $db ) {
* When a connection to the local DB is opened in this way, reuseConnection()
* should be ignored
*/
+
return;
}
if ( $this->mConns['foreignUsed'][$serverIndex][$wiki] !== $conn ) {
- throw new MWException( __METHOD__ . ": connection not found, has the connection been freed already?" );
+ throw new MWException( __METHOD__ . ": connection not found, has " .
+ "the connection been freed already?" );
}
$conn->setLBInfo( 'foreignPoolRefCount', --$refCount );
if ( $refCount <= 0 ) {
if ( $wiki !== false ) {
$conn = $this->openForeignConnection( $i, $wiki );
wfProfileOut( __METHOD__ );
+
return $conn;
}
if ( isset( $this->mConns['local'][$i][0] ) ) {
}
}
wfProfileOut( __METHOD__ );
+
return $conn;
}
$conn->setLBInfo( 'foreignPoolRefCount', $refCount + 1 );
}
wfProfileOut( __METHOD__ );
+
return $conn;
}
if ( !is_integer( $index ) ) {
return false;
}
+
return (bool)$this->getAnyOpenConnection( $index );
}
if ( isset( $server['fakeMaster'] ) ) {
$db->setFakeMaster( true );
}
+
return $db;
}
wfLogDBError( "Connection error: {$this->mLastError} ({$server})\n" );
$conn->reportConnectionError( "{$this->mLastError} ({$server})" ); // throws DBConnectionError
}
+
return false; /* not reached */
}
}
/**
- * Sets the server info structure for the given index. Entry at index $i is created if it doesn't exist
+ * Sets the server info structure for the given index. Entry at index $i
+ * is created if it doesn't exist
* @param $i
* @param $serverInfo
*/
# master (however unlikely that may be), then we can fetch the position from the slave.
$masterConn = $this->getAnyOpenConnection( 0 );
if ( !$masterConn ) {
- for ( $i = 1; $i < count( $this->mServers ); $i++ ) {
+ $serverCount = count( $this->mServers );
+ for ( $i = 1; $i < $serverCount; $i++ ) {
$conn = $this->getAnyOpenConnection( $i );
if ( $conn ) {
wfDebug( "Master pos fetched from slave\n" );
+
return $conn->getSlavePos();
}
}
} else {
wfDebug( "Master pos fetched from master\n" );
+
return $masterConn->getMasterPos();
}
+
return false;
}
return $this->mAllowLagged;
}
$this->mAllowLagged = $mode;
+
return $this->mAllowLagged;
}
}
}
}
+
return $success;
}
}
}
}
+
return array( $host, $maxLag, $maxIndex );
}
$this->mLagTimes = $this->getLoadMonitor()->getLagTimes(
array_keys( $this->mServers ), $wiki );
}
+
return $this->mLagTimes;
}
list( $db, $groups, $wiki ) = $this->params;
$this->conn = $this->lb->getConnection( $db, $groups, $wiki );
}
+
return call_user_func_array( array( $this->conn, $name ), $arguments );
}
if ( mt_rand( 0, $chance ) != 0 ) {
unset( $times['timestamp'] ); // hide from caller
wfProfileOut( __METHOD__ );
+
return $times;
}
wfIncrStats( 'lag_cache_miss_expired' );
# Cache key missing or expired
if ( $wgMemc->add( "$memcKey:lock", 1, 10 ) ) {
# Let this process alone update the cache value
- $unlocker = new ScopedCallback( function() use ( $wgMemc, $memcKey ) {
+ $unlocker = new ScopedCallback( function () use ( $wgMemc, $memcKey ) {
$wgMemc->delete( $memcKey );
} );
} elseif ( is_array( $times ) ) {
# Could not acquire lock but an old cache exists, so use it
unset( $times['timestamp'] ); // hide from caller
wfProfileOut( __METHOD__ );
+
return $times;
}
unset( $times['timestamp'] ); // hide from caller
wfProfileOut( __METHOD__ );
+
return $times;
}
if ( $status['Threads_running'] > $threshold ) {
$server = $conn->getProperty( 'mServer' );
wfLogDBError( "LB backoff from $server - Threads_running = {$status['Threads_running']}\n" );
+
return $status['Threads_connected'];
} else {
return 0;
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
interface ORMIterator extends Iterator {
-
}
*/
class ORMResult implements ORMIterator {
-
/**
* @var ResultWrapper
*/
public function valid() {
return $this->current !== false;
}
-
}
*/
class ORMRow implements IORMRow {
-
/**
* The fields of the object.
* field name (w/o prefix) => value
if ( $result !== false ) {
$this->setFields( $this->table->getFieldsFromDBResult( $result ), $override );
+
return true;
}
+
return false;
}
* @return boolean
*/
public function hasIdField() {
- return $this->hasField( 'id' )
- && !is_null( $this->getField( 'id' ) );
+ return $this->hasField( 'id' ) && !is_null( $this->getField( 'id' ) );
}
/**
$value = $this->fields[$name];
// Skip null id fields so that the DBMS can set the default.
- if ( $name === 'id' && is_null ( $value ) ) {
+ if ( $name === 'id' && is_null( $value ) ) {
continue;
}
/**
* Before removal of an object happens, @see beforeRemove gets called.
- * This method loads the fields of which the names have been returned by this one (or all fields if null is returned).
- * This allows for loading info needed after removal to get rid of linked data and the like.
+ * This method loads the fields of which the names have been returned by
+ * this one (or all fields if null is returned). This allows for loading
+ * info needed after removal to get rid of linked data and the like.
*
* @since 1.20
*
* @param array|string|null $summaryFields
*/
public function loadSummaryFields( $summaryFields = null ) {
-
}
/**
public function getTable() {
return $this->table;
}
-
}
*/
class ORMTable extends DBAccessBase implements IORMTable {
-
/**
* Cache for instances, used by the singleton method.
*
* @param string|null $rowClass
* @param string $fieldPrefix
*/
- public function __construct( $tableName = '', array $fields = array(), array $defaults = array(), $rowClass = null, $fieldPrefix = '' ) {
+ public function __construct( $tableName = '', array $fields = array(),
+ array $defaults = array(), $rowClass = null, $fieldPrefix = ''
+ ) {
$this->tableName = $tableName;
$this->fields = $fields;
$this->defaults = $defaults;
* @return ORMResult
*/
public function select( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null ) {
+ array $options = array(), $functionName = null
+ ) {
$res = $this->rawSelect( $fields, $conditions, $options, $functionName );
+
return new ORMResult( $this, $res );
}
* @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode).
*/
public function selectObjects( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null ) {
+ array $options = array(), $functionName = null
+ ) {
$result = $this->selectFields( $fields, $conditions, $options, false, $functionName );
$objects = array();
* @since 1.20
*
* @param null|string|array $fields
- * @param array $conditions
- * @param array $options
- * @param null|string $functionName
+ * @param array $conditions
+ * @param array $options
+ * @param null|string $functionName
*
* @return ResultWrapper
* @throws DBQueryError if the quey failed (even if the database was in ignoreErrors mode).
*/
public function rawSelect( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null ) {
+ array $options = array(), $functionName = null
+ ) {
if ( is_null( $fields ) ) {
$fields = array_keys( $this->getFields() );
- }
- else {
+ } else {
$fields = (array)$fields;
}
* @return array of array
*/
public function selectFields( $fields = null, array $conditions = array(),
- array $options = array(), $collapse = true, $functionName = null ) {
+ array $options = array(), $collapse = true, $functionName = null
+ ) {
$objects = array();
$result = $this->rawSelect( $fields, $conditions, $options, $functionName );
if ( $collapse ) {
if ( count( $fields ) === 1 ) {
$objects = array_map( 'array_shift', $objects );
- }
- elseif ( count( $fields ) === 2 ) {
+ } elseif ( count( $fields ) === 2 ) {
$o = array();
foreach ( $objects as $object ) {
* @return IORMRow|bool False on failure
*/
public function selectRow( $fields = null, array $conditions = array(),
- array $options = array(), $functionName = null ) {
+ array $options = array(), $functionName = null
+ ) {
$options['LIMIT'] = 1;
$objects = $this->select( $fields, $conditions, $options, $functionName );
* @return ResultWrapper
*/
public function rawSelectRow( array $fields, array $conditions = array(),
- array $options = array(), $functionName = null ) {
+ array $options = array(), $functionName = null
+ ) {
$dbr = $this->getReadDbConnection();
$result = $dbr->selectRow(
);
$this->releaseConnection( $dbr );
+
return $result;
}
* @return mixed|array|bool False on failure
*/
public function selectFieldsRow( $fields = null, array $conditions = array(),
- array $options = array(), $collapse = true, $functionName = null ) {
+ array $options = array(), $collapse = true, $functionName = null
+ ) {
$options['LIMIT'] = 1;
$objects = $this->selectFields( $fields, $conditions, $options, $collapse, $functionName );
) !== false; // DatabaseBase::delete does not always return true for success as documented...
$this->releaseConnection( $dbw );
+
return $result;
}
}
if ( $setDefaults && $hasDefault ) {
- $default = is_array( $defaults[$field] ) ? implode( '|', $defaults[$field] ) : $defaults[$field];
+ $default = is_array( $defaults[$field] )
+ ? implode( '|', $defaults[$field] )
+ : $defaults[$field];
$params[$field][ApiBase::PARAM_DFLT] = $default;
}
}
}
/**
- * Set the database ID to use for read operations, use DB_XXX constants or an index to the load balancer setup.
+ * Set the database ID to use for read operations, use DB_XXX constants or
+ * an index to the load balancer setup.
*
* @param integer $db
*
*
* @since 1.20
*
- * @return String|bool The target wiki, in a form that LBFactory understands (or false if the local wiki is used)
+ * @return String|bool The target wiki, in a form that LBFactory understands
+ * (or false if the local wiki is used)
*/
public function getTargetWiki() {
return $this->wiki;
/**
* Set the ID of the any foreign wiki to use as a target for database operations
*
- * @param string|bool $wiki The target wiki, in a form that LBFactory understands (or false if the local wiki shall be used)
+ * @param string|bool $wiki The target wiki, in a form that LBFactory
+ * understands (or false if the local wiki shall be used)
*
* @since 1.20
*/
*
* @since 1.20
*/
+ // @codingStandardsIgnoreStart Suppress "useless method overriding" sniffer warning
public function releaseConnection( DatabaseBase $db ) {
parent::releaseConnection( $db ); // just make it public
}
+ // @codingStandardsIgnoreEnd
/**
* Update the records matching the provided conditions by
) !== false; // DatabaseBase::update does not always return true for success as documented...
$this->releaseConnection( $dbw );
+
return $result;
}
if ( is_array( $value ) ) {
$field = $value[0];
$value = $value[1];
- }
- else {
+ } else {
$value = explode( ' ', $value, 2 );
$value[0] = $this->getPrefixedField( $value[0] );
$prefixedValues[] = implode( ' ', $value );
return $success;
}
-
}
* @since 1.19
*/
class MWDebug {
-
/**
* Log lines
*
* MWDebug::deprecated() (Added in 1.20).
* @return mixed
*/
- public static function deprecated( $function, $version = false, $component = false, $callerOffset = 2 ) {
+ public static function deprecated( $function, $version = false,
+ $component = false, $callerOffset = 2
+ ) {
$callerDescription = self::getCallerDescription( $callerOffset );
$callerFunc = $callerDescription['func'];
if ( $sendToLog ) {
global $wgDevelopmentWarnings; // we could have a more specific $wgDeprecationWarnings setting.
- self::sendWarning( $msg, $callerDescription, $wgDevelopmentWarnings ? E_USER_DEPRECATED : false );
+ self::sendWarning(
+ $msg,
+ $callerDescription,
+ $wgDevelopmentWarnings ? E_USER_DEPRECATED : false
+ );
}
if ( self::$enabled ) {
$display = "\xc2\xa0";
}
- if ( !$ident && $diff < 0 && substr( $display, 0, 9 ) != 'Entering ' && substr( $display, 0, 8 ) != 'Exiting ' ) {
+ if ( !$ident
+ && $diff < 0
+ && substr( $display, 0, 9 ) != 'Entering '
+ && substr( $display, 0, 8 ) != 'Exiting '
+ ) {
$ident = $curIdent;
$diff = 0;
- $display = '<span style="background:yellow;">' . nl2br( htmlspecialchars( $display ) ) . '</span>';
+ $display = '<span style="background:yellow;">' .
+ nl2br( htmlspecialchars( $display ) ) . '</span>';
} else {
$display = nl2br( htmlspecialchars( $display ) );
}
} else {
$ret .= str_repeat( "<ul><li>\n", $diff );
}
- $ret .= "<tt>$display</tt>\n";
+ $ret .= "<code>$display</code>\n";
$curIdent = $ident;
}
global $wgVersion, $wgRequestTime;
$request = $context->getRequest();
+
return array(
'mwVersion' => $wgVersion,
'phpVersion' => PHP_VERSION,
* Deferrable Update for closure/callback
*/
class MWCallableUpdate implements DeferrableUpdate {
-
/**
- * @var closure/callabck
+ * @var closure/callback
*/
private $callback;
/**
* @param callable $callback
+ * @throws MWException
*/
public function __construct( $callback ) {
if ( !is_callable( $callback ) ) {
public function doUpdate() {
call_user_func( $this->callback );
}
-
}
* subclasses can override the beginTransaction() and commitTransaction() methods.
*/
abstract class DataUpdate implements DeferrableUpdate {
-
/**
* Constructor
*/
throw $exception; // rethrow after cleanup
}
}
-
}
/**
* Add an update to the deferred list
- * @param $update DeferrableUpdate Some object that implements doUpdate()
+ * @param DeferrableUpdate $update Some object that implements doUpdate()
*/
public static function addUpdate( DeferrableUpdate $update ) {
array_push( self::$updates, $update );
* HTMLCacheUpdates are the most common deferred update people use. This
* is a shortcut method for that.
* @see HTMLCacheUpdate::__construct()
- * @param $title
- * @param $table
+ * @param Title $title
+ * @param string $table
*/
public static function addHTMLCacheUpdate( $title, $table ) {
self::addUpdate( new HTMLCacheUpdate( $title, $table ) );
* Do any deferred updates and clear the list
*
* @param string $commit set to 'commit' to commit after every update to
- * prevent lock contention
+ * prevent lock contention
*/
public static function doUpdates( $commit = '' ) {
global $wgDeferredUpdateList;
// No need to get master connections in case of empty updates array
if ( !count( $updates ) ) {
wfProfileOut( __METHOD__ );
+
return;
}
+ $dbw = false;
$doCommit = $commit == 'commit';
if ( $doCommit ) {
$dbw = wfGetDB( DB_MASTER );
}
+ /** @var DeferrableUpdate $update */
foreach ( $updates as $update ) {
try {
$update->doUpdate();
* @ingroup Cache
*/
class HTMLCacheUpdate implements DeferrableUpdate {
- /**
- * @var Title
- */
+ /** @var Title */
public $mTitle;
+ /** @var string */
public $mTable;
/**
- * @param $titleTo
- * @param $table
+ * @param Title $titleTo
+ * @param string $table
*/
function __construct( Title $titleTo, $table ) {
$this->mTitle = $titleTo;
JobQueueGroup::singleton()->deduplicateRootJob( $job );
} else { // few backlinks ($count might be off even if 0)
$dbw = wfGetDB( DB_MASTER );
- $dbw->onTransactionIdle( function() use ( $job ) {
+ $dbw->onTransactionIdle( function () use ( $job ) {
$job->run(); // just do the purge query now
} );
}
* @todo document (e.g. one-sentence top-level class description).
*/
class LinksUpdate extends SqlDataUpdate {
-
// @todo make members protected, but make sure extensions don't break
- public $mId, //!< Page ID of the article linked from
- $mTitle, //!< Title object of the article linked from
- $mParserOutput, //!< Parser output
- $mLinks, //!< Map of title strings to IDs for the links in the document
- $mImages, //!< DB keys of the images used, in the array key only
- $mTemplates, //!< Map of title strings to IDs for the template references, including broken ones
- $mExternals, //!< URLs of external links, array key only
- $mCategories, //!< Map of category names to sort keys
- $mInterlangs, //!< Map of language codes to titles
- $mProperties, //!< Map of arbitrary name to value
- $mDb, //!< Database connection reference
- $mOptions, //!< SELECT options to be used (array)
- $mRecursive; //!< Whether to queue jobs for recursive updates
+ /** @var int Page ID of the article linked from */
+ public $mId;
+
+ /** @var Title object of the article linked from */
+ public $mTitle;
+
+ /** @var ParserOutput */
+ public $mParserOutput;
+
+ /** @var array Map of title strings to IDs for the links in the document */
+ public $mLinks;
+
+ /** @var array DB keys of the images used, in the array key only */
+ public $mImages;
+
+ /** @var array Map of title strings to IDs for the template references, including broken ones */
+ public $mTemplates;
+
+ /** @var array URLs of external links, array key only */
+ public $mExternals;
+
+ /** @var array Map of category names to sort keys */
+ public $mCategories;
+
+ /** @var array ap of language codes to titles */
+ public $mInterlangs;
+
+ /** @var array Map of arbitrary name to value */
+ public $mProperties;
+
+ /** @var DatabaseBase Database connection reference */
+ public $mDb;
+
+ /** @var array SELECT options to be used */
+ public $mOptions;
+
+ /** @var bool Whether to queue jobs for recursive updates */
+ public $mRecursive;
/**
* @var null|array Added links if calculated.
/**
* Constructor
*
- * @param $title Title of the page we're updating
- * @param $parserOutput ParserOutput: output from a full parse of this page
- * @param $recursive Boolean: queue jobs for recursive updates?
+ * @param Title $title Title of the page we're updating
+ * @param ParserOutput $parserOutput Output from a full parse of this page
+ * @param bool $recursive Queue jobs for recursive updates?
* @throws MWException
*/
function __construct( $title, $parserOutput, $recursive = true ) {
$this->mId = $title->getArticleID();
if ( !$this->mId ) {
- throw new MWException( "The Title object did not provide an article ID. Perhaps the page doesn't exist?" );
+ throw new MWException( "The Title object did not provide an article " .
+ "ID. Perhaps the page doesn't exist?" );
}
$this->mParserOutput = $parserOutput;
* Queue a RefreshLinks job for any table.
*
* @param Title $title Title to do job for
- * @param String $table Table to use (e.g. 'templatelinks')
+ * @param string $table Table to use (e.g. 'templatelinks')
*/
public static function queueRecursiveJobsForTable( Title $title, $table ) {
wfProfileIn( __METHOD__ );
/**
* Update all the appropriate counts in the category table.
- * @param array $added associative array of category name => sort key
- * @param array $deleted associative array of category name => sort key
+ * @param array $added Associative array of category name => sort key
+ * @param array $deleted Associative array of category name => sort key
*/
function updateCategoryCounts( $added, $deleted ) {
$a = WikiPage::factory( $this->mTitle );
/**
* Update a table by doing a delete query then an insert query
- * @param $table
- * @param $prefix
- * @param $deletions
- * @param $insertions
+ * @param string $table Table name
+ * @param string $prefix Field name prefix
+ * @param array $deletions
+ * @param array $insertions Rows to insert
*/
function incrTableUpdate( $table, $prefix, $deletions, $insertions ) {
if ( $table == 'page_props' ) {
/**
* Get an array of pagelinks insertions for passing to the DB
* Skips the titles specified by the 2-D array $existing
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getLinkInsertions( $existing = array() ) {
);
}
}
+
return $arr;
}
/**
* Get an array of template insertions. Like getLinkInsertions()
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getTemplateInsertions( $existing = array() ) {
);
}
}
+
return $arr;
}
/**
* Get an array of image insertions
* Skips the names specified in $existing
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getImageInsertions( $existing = array() ) {
'il_to' => $iname
);
}
+
return $arr;
}
/**
* Get an array of externallinks insertions. Skips the names specified in $existing
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getExternalInsertions( $existing = array() ) {
);
}
}
+
return $arr;
}
'cl_type' => $type,
);
}
+
return $arr;
}
'll_title' => $title
);
}
+
return $arr;
}
/**
* Get an array of page property insertions
- * @param $existing array
+ * @param array $existing
* @return array
*/
function getPropertyInsertions( $existing = array() ) {
'pp_value' => $value,
);
}
+
return $arr;
}
/**
* Get an array of interwiki insertions for passing to the DB
* Skips the titles specified by the 2-D array $existing
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getInterwikiInsertions( $existing = array() ) {
$arr = array();
foreach ( $this->mInterwikis as $prefix => $dbkeys ) {
- $diffs = isset( $existing[$prefix] ) ? array_diff_key( $dbkeys, $existing[$prefix] ) : $dbkeys;
+ $diffs = isset( $existing[$prefix] )
+ ? array_diff_key( $dbkeys, $existing[$prefix] )
+ : $dbkeys;
+
foreach ( $diffs as $dbk => $id ) {
$arr[] = array(
'iwl_from' => $this->mId,
);
}
}
+
return $arr;
}
/**
* Given an array of existing links, returns those links which are not in $this
* and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getLinkDeletions( $existing ) {
$del[$ns] = $existing[$ns];
}
}
+
return $del;
}
/**
* Given an array of existing templates, returns those templates which are not in $this
* and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getTemplateDeletions( $existing ) {
$del[$ns] = $existing[$ns];
}
}
+
return $del;
}
/**
* Given an array of existing images, returns those images which are not in $this
* and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getImageDeletions( $existing ) {
/**
* Given an array of existing external links, returns those links which are not
* in $this and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getExternalDeletions( $existing ) {
/**
* Given an array of existing categories, returns those categories which are not in $this
* and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getCategoryDeletions( $existing ) {
/**
* Given an array of existing interlanguage links, returns those links which are not
* in $this and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getInterlangDeletions( $existing ) {
/**
* Get array of properties which should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
function getPropertyDeletions( $existing ) {
/**
* Given an array of existing interwiki links, returns those links which are not in $this
* and thus should be deleted.
- * @param $existing array
+ * @param array $existing
* @return array
*/
private function getInterwikiDeletions( $existing ) {
$del[$prefix] = $existing[$prefix];
}
}
+
return $del;
}
}
$arr[$row->pl_namespace][$row->pl_title] = 1;
}
+
return $arr;
}
}
$arr[$row->tl_namespace][$row->tl_title] = 1;
}
+
return $arr;
}
foreach ( $res as $row ) {
$arr[$row->il_to] = 1;
}
+
return $arr;
}
foreach ( $res as $row ) {
$arr[$row->el_to] = 1;
}
+
return $arr;
}
foreach ( $res as $row ) {
$arr[$row->cl_to] = $row->cl_sortkey_prefix;
}
+
return $arr;
}
foreach ( $res as $row ) {
$arr[$row->ll_lang] = $row->ll_title;
}
+
return $arr;
}
}
$arr[$row->iwl_prefix][$row->iwl_title] = 1;
}
+
return $arr;
}
/**
* Get an array of existing categories, with the name in the key and sort key in the value.
*
- * @return array
+ * @return array of property names and values
*/
private function getExistingProperties() {
$res = $this->mDb->select( 'page_props', array( 'pp_propname', 'pp_value' ),
foreach ( $res as $row ) {
$arr[$row->pp_propname] = $row->pp_value;
}
+
return $arr;
}
/**
* Invalidate any necessary link lists related to page property changes
- * @param $changed
+ * @param array $changed
*/
private function invalidateProperties( $changed ) {
global $wgPagePropLinkInvalidations;
}
$result = array();
foreach ( $this->linkInsertions as $insertion ) {
- $result[] = Title::makeTitle( $insertion[ 'pl_namespace' ], $insertion[ 'pl_title' ] );
+ $result[] = Title::makeTitle( $insertion['pl_namespace'], $insertion['pl_title'] );
}
+
return $result;
}
$result[] = Title::makeTitle( $ns, $title );
}
}
+
return $result;
}
}
* Update object handling the cleanup of links tables after a page was deleted.
**/
class LinksDeletionUpdate extends SqlDataUpdate {
-
- protected $mPage; //!< WikiPage the wikipage that was deleted
+ /** @var WikiPage The WikiPage that was deleted */
+ protected $mPage;
/**
* Constructor
*
- * @param $page WikiPage Page we are updating
+ * @param WikiPage $page Page we are updating
* @throws MWException
*/
function __construct( WikiPage $page ) {
/**
* Update all the appropriate counts in the category table.
- * @param array $added associative array of category name => sort key
- * @param array $deleted associative array of category name => sort key
+ * @param array $added Associative array of category name => sort key
+ * @param array $deleted Associative array of category name => sort key
*/
function updateCategoryCounts( $added, $deleted ) {
$a = WikiPage::factory( $this->mTitle );
* @ingroup Search
*/
class SearchUpdate implements DeferrableUpdate {
- /**
- * Page id being updated
- * @var int
- */
+ /** @var int Page id being updated */
private $id = 0;
- /**
- * Title we're updating
- * @var Title
- */
+ /** @var Title Title we're updating */
private $title;
- /**
- * Content of the page (not text)
- * @var Content|false
- */
+ /** @var Content|false Content of the page (not text) */
private $content;
/**
*
* @param int $id Page id to update
* @param Title|string $title Title of page to update
- * @param Content|string|false $c Content of the page to update.
+ * @param Content|string|bool $c Content of the page to update. Default: false.
* If a Content object, text will be gotten from it. String is for back-compat.
* Passing false tells the backend to just update the title, not the content
*/
# Strip wiki '' and '''
$text = preg_replace( "/''[']*/", " ", $text );
wfProfileOut( __METHOD__ . '-regexps' );
+
return $text;
}
}
* Class for handling updates to the site_stats table
*/
class SiteStatsUpdate implements DeferrableUpdate {
+ /** @var int */
protected $views = 0;
+
+ /** @var int */
protected $edits = 0;
+
+ /** @var int */
protected $pages = 0;
+
+ /** @var int */
protected $articles = 0;
+
+ /** @var int */
protected $users = 0;
+
+ /** @var int */
protected $images = 0;
// @todo deprecate this constructor
}
/**
- * @param $deltas Array
+ * @param array $deltas
* @return SiteStatsUpdate
*/
public static function factory( array $deltas ) {
/**
* Do not call this outside of SiteStatsUpdate
- *
- * @return void
*/
public function tryDBUpdateInternal() {
global $wgSiteStatsAsyncFactor;
$dbw = wfGetDB( DB_MASTER );
$lockKey = wfMemcKey( 'site_stats' ); // prepend wiki ID
+ $pd = array();
if ( $wgSiteStatsAsyncFactor ) {
// Lock the table so we don't have double DB/memcached updates
if ( !$dbw->lockIsFree( $lockKey, __METHOD__ )
|| !$dbw->lock( $lockKey, __METHOD__, 1 ) // 1 sec timeout
) {
$this->doUpdatePendingDeltas();
+
return;
}
$pd = $this->getPendingDeltas();
}
/**
- * @param $dbw DatabaseBase
+ * @param DatabaseBase $dbw
* @return bool|mixed
*/
public static function cacheUpdate( $dbw ) {
'rc_user != 0',
'rc_bot' => 0,
'rc_log_type != ' . $dbr->addQuotes( 'newusers' ) . ' OR rc_log_type IS NULL',
- 'rc_timestamp >= ' . $dbr->addQuotes( $dbr->timestamp( wfTimestamp( TS_UNIX ) - $wgActiveUserDays * 24 * 3600 ) ),
+ 'rc_timestamp >= ' . $dbr->addQuotes( $dbr->timestamp( wfTimestamp( TS_UNIX )
+ - $wgActiveUserDays * 24 * 3600 ) ),
),
__METHOD__
);
array( 'ss_row_id' => 1 ),
__METHOD__
);
+
return $activeUsers;
}
}
/**
- * @param $sql string
- * @param $field string
- * @param $delta integer
+ * @param string $sql
+ * @param string $field
+ * @param int $delta
*/
protected function appendUpdate( &$sql, $field, $delta ) {
if ( $delta ) {
}
/**
- * @param $type string
+ * @param string $type
* @param string $sign ('+' or '-')
* @return string
*/
/**
* Adjust the pending deltas for a stat type.
* Each stat type has two pending counters, one for increments and decrements
- * @param $type string
- * @param $delta integer Delta (positive or negative)
- * @return void
+ * @param string $type
+ * @param int $delta Delta (positive or negative)
*/
protected function adjustPending( $type, $delta ) {
global $wgMemc;
/**
* Get pending delta counters for each stat type
- * @return Array Positive and negative deltas for each type
- * @return void
+ * @return array Positive and negative deltas for each type
*/
protected function getPendingDeltas() {
global $wgMemc;
$pending = array();
foreach ( array( 'ss_total_views', 'ss_total_edits',
- 'ss_good_articles', 'ss_total_pages', 'ss_users', 'ss_images' ) as $type )
- {
+ 'ss_good_articles', 'ss_total_pages', 'ss_users', 'ss_images' ) as $type
+ ) {
// Get pending increments and pending decrements
$pending[$type]['+'] = (int)$wgMemc->get( $this->getTypeCacheKey( $type, '+' ) );
$pending[$type]['-'] = (int)$wgMemc->get( $this->getTypeCacheKey( $type, '-' ) );
/**
* Reduce pending delta counters after updates have been applied
* @param array $pd Result of getPendingDeltas(), used for DB update
- * @return void
*/
protected function removePendingDeltas( array $pd ) {
global $wgMemc;
}
}
}
-
* the beginTransaction() and commitTransaction() methods.
*/
abstract class SqlDataUpdate extends DataUpdate {
+ /** @var DatabaseBase Database connection reference */
+ protected $mDb;
- protected $mDb; //!< Database connection reference
- protected $mOptions; //!< SELECT options to be used (array)
+ /** @var array SELECT options to be used (array) */
+ protected $mOptions;
- private $mHasTransaction; //!< bool whether a transaction is open on this object (internal use only!)
- protected $mUseTransaction; //!< bool whether this update should be wrapped in a transaction
+ /** @var bool Whether a transaction is open on this object (internal use only!) */
+ private $mHasTransaction;
+
+ /** @var bool Whether this update should be wrapped in a transaction */
+ protected $mUseTransaction;
/**
* Constructor
*
- * @param bool $withTransaction whether this update should be wrapped in a transaction (default: true).
- * A transaction is only started if no transaction is already in progress,
- * see beginTransaction() for details.
- **/
+ * @param bool $withTransaction whether this update should be wrapped in a
+ * transaction (default: true). A transaction is only started if no
+ * transaction is already in progress, see beginTransaction() for details.
+ */
public function __construct( $withTransaction = true ) {
global $wgAntiLockFlags;
$this->mOptions = array( 'FOR UPDATE' );
}
- // @todo get connection only when it's needed? make sure that doesn't break anything, especially transactions!
+ // @todo Get connection only when it's needed? Make sure that doesn't
+ // break anything, especially transactions!
$this->mDb = wfGetDB( DB_MASTER );
$this->mWithTransaction = $withTransaction;
}
/**
- * Begin a database transaction, if $withTransaction was given as true in the constructor for this SqlDataUpdate.
+ * Begin a database transaction, if $withTransaction was given as true in
+ * the constructor for this SqlDataUpdate.
*
- * Because nested transactions are not supported by the Database class, this implementation
- * checks Database::trxLevel() and only opens a transaction if none is already active.
+ * Because nested transactions are not supported by the Database class,
+ * this implementation checks Database::trxLevel() and only opens a
+ * transaction if none is already active.
*/
public function beginTransaction() {
if ( !$this->mWithTransaction ) {
* Invalidate the cache of a list of pages from a single namespace.
* This is intended for use by subclasses.
*
- * @param $namespace Integer
- * @param $dbkeys Array
+ * @param int $namespace Namespace number
+ * @param array $dbkeys
*/
protected function invalidatePages( $namespace, array $dbkeys ) {
if ( $dbkeys === array() ) {
), __METHOD__
);
}
-
}
* @ingroup Cache
*/
class SquidUpdate {
-
/**
* Collection of URLs to purge.
* @var array
}
wfProfileOut( __METHOD__ );
+
return new SquidUpdate( $blurlArr );
}
public static function newFromTitles( $titles, $urlArr = array() ) {
global $wgMaxSquidPurgeTitles;
$i = 0;
+ /** @var Title $title */
foreach ( $titles as $title ) {
$urlArr[] = $title->getInternalURL();
if ( $i++ > $wgMaxSquidPurgeTitles ) {
break;
}
}
+
return new SquidUpdate( $urlArr );
}
*/
public static function newSimplePurge( Title $title ) {
$urlArr = $title->getSquidURLs();
+
return new SquidUpdate( $urlArr );
}
// pfsockopen doesn't work because we need set_sock_opt
$conn = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
- if ( ! $conn ) {
+ if ( !$conn ) {
$errstr = socket_strerror( socket_last_error() );
wfDebugLog( 'squid', __METHOD__ .
": Error opening UDP socket: $errstr\n" );
wfProfileOut( __METHOD__ );
+
return;
}
return $routing;
}
}
+
return false;
}
}
* from that table to update the 'page_counter' field in a batch operation.
*/
class ViewCountUpdate implements DeferrableUpdate {
+ /** @var int Page ID to increment the view count */
protected $id;
/**
* Constructor
*
- * @param $id Integer: page ID to increment the view count
+ * @param int $id Page ID to increment the view count
*/
public function __construct( $id ) {
$this->id = intval( $id );
$dbw = wfGetDB( DB_MASTER );
if ( $wgHitcounterUpdateFreq <= 1 || $dbw->getType() == 'sqlite' ) {
- $dbw->update( 'page', array( 'page_counter = page_counter + 1' ), array( 'page_id' => $this->id ), __METHOD__ );
+ $dbw->update(
+ 'page', array( 'page_counter = page_counter + 1' ),
+ array( 'page_id' => $this->id ),
+ __METHOD__
+ );
+
return;
}
if ( rand() % $checkfreq == 0 && $dbw->lastErrno() == 0 ) {
$this->collect();
}
- } catch ( DBError $e ) {}
+ } catch ( DBError $e ) {
+ }
}
protected function collect() {
* @ingroup DifferenceEngine
*/
class ArrayDiffFormatter extends DiffFormatter {
-
/**
* @param $diff
* @return array
$newline += count( $edit->orig );
}
}
+
return $retval;
}
}
public $orig;
public $closing;
- public abstract function reverse();
+ abstract public function reverse();
/**
* @return int
* @private
* @ingroup DifferenceEngine
*/
-class DiffOp_Copy extends DiffOp {
+class DiffOpCopy extends DiffOp {
public $type = 'copy';
function __construct( $orig, $closing = false ) {
}
/**
- * @return DiffOp_Copy
+ * @return DiffOpCopy
*/
function reverse() {
- return new DiffOp_Copy( $this->closing, $this->orig );
+ return new DiffOpCopy( $this->closing, $this->orig );
}
}
* @private
* @ingroup DifferenceEngine
*/
-class DiffOp_Delete extends DiffOp {
+class DiffOpDelete extends DiffOp {
public $type = 'delete';
function __construct( $lines ) {
}
/**
- * @return DiffOp_Add
+ * @return DiffOpAdd
*/
function reverse() {
- return new DiffOp_Add( $this->orig );
+ return new DiffOpAdd( $this->orig );
}
}
* @private
* @ingroup DifferenceEngine
*/
-class DiffOp_Add extends DiffOp {
+class DiffOpAdd extends DiffOp {
public $type = 'add';
function __construct( $lines ) {
}
/**
- * @return DiffOp_Delete
+ * @return DiffOpDelete
*/
function reverse() {
- return new DiffOp_Delete( $this->closing );
+ return new DiffOpDelete( $this->closing );
}
}
* @private
* @ingroup DifferenceEngine
*/
-class DiffOp_Change extends DiffOp {
+class DiffOpChange extends DiffOp {
public $type = 'change';
function __construct( $orig, $closing ) {
}
/**
- * @return DiffOp_Change
+ * @return DiffOpChange
*/
function reverse() {
- return new DiffOp_Change( $this->closing, $this->orig );
+ return new DiffOpChange( $this->closing, $this->orig );
}
}
*
* The algorithm used here is mostly lifted from the perl module
* Algorithm::Diff (version 1.06) by Ned Konz, which is available at:
- * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
+ * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
*
* More ideas are taken from:
- * http://www.ics.uci.edu/~eppstein/161/960229.html
+ * http://www.ics.uci.edu/~eppstein/161/960229.html
*
* Some ideas are (and a bit of code) are from from analyze.c, from GNU
* diffutils-2.7, which can be found at:
- * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
+ * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
*
* closingly, some ideas (subdivision by NCHUNKS > 2, and some optimizations)
* are my own.
* @ingroup DifferenceEngine
*/
class DiffEngine {
-
const MAX_XREF_LENGTH = 10000;
protected $xchanged, $ychanged;
// Skip matching "snake".
$copy = array();
while ( $xi < $n_from && $yi < $n_to
- && !$this->xchanged[$xi] && !$this->ychanged[$yi] ) {
+ && !$this->xchanged[$xi] && !$this->ychanged[$yi]
+ ) {
$copy[] = $from_lines[$xi++];
++$yi;
}
if ( $copy ) {
- $edits[] = new DiffOp_Copy( $copy );
+ $edits[] = new DiffOpCopy( $copy );
}
// Find deletes & adds.
}
if ( $delete && $add ) {
- $edits[] = new DiffOp_Change( $delete, $add );
+ $edits[] = new DiffOpChange( $delete, $add );
} elseif ( $delete ) {
- $edits[] = new DiffOp_Delete( $delete );
+ $edits[] = new DiffOpDelete( $delete );
} elseif ( $add ) {
- $edits[] = new DiffOp_Add( $add );
+ $edits[] = new DiffOpAdd( $add );
}
}
wfProfileOut( __METHOD__ );
+
return $edits;
}
for ( $chunk = 0; $chunk < $nchunks; $chunk++ ) {
if ( $chunk > 0 ) {
for ( $i = 0; $i <= $this->lcs; $i++ ) {
- $ymids[$i][$chunk -1] = $this->seq[$i];
+ $ymids[$i][$chunk - 1] = $this->seq[$i];
}
}
- $x1 = $xoff + (int)( ( $numer + ( $xlim -$xoff ) * $chunk ) / $nchunks );
+ $x1 = $xoff + (int)( ( $numer + ( $xlim - $xoff ) * $chunk ) / $nchunks );
for ( ; $x < $x1; $x++ ) {
$line = $flip ? $this->yv[$x] : $this->xv[$x];
if ( empty( $ymatches[$line] ) ) {
continue;
}
+
+ $k = 0;
$matches = $ymatches[$line];
reset( $matches );
while ( list( , $y ) = each( $matches ) ) {
if ( empty( $this->in_seq[$y] ) ) {
$k = $this->lcsPos( $y );
assert( '$k > 0' );
- $ymids[$k] = $ymids[$k -1];
+ $ymids[$k] = $ymids[$k - 1];
break;
}
}
+
while ( list( , $y ) = each( $matches ) ) {
- if ( $y > $this->seq[$k -1] ) {
+ if ( $y > $this->seq[$k - 1] ) {
assert( '$y < $this->seq[$k]' );
// Optimization: this is a common case:
// next match is just replacing previous match.
} elseif ( empty( $this->in_seq[$y] ) ) {
$k = $this->lcsPos( $y );
assert( '$k > 0' );
- $ymids[$k] = $ymids[$k -1];
+ $ymids[$k] = $ymids[$k - 1];
}
}
}
if ( $end == 0 || $ypos > $this->seq[$end] ) {
$this->seq[++$this->lcs] = $ypos;
$this->in_seq[$ypos] = 1;
+
return $this->lcs;
}
$this->in_seq[$this->seq[$end]] = false;
$this->seq[$end] = $ypos;
$this->in_seq[$ypos] = 1;
+
return $end;
}
// Slide up the top initial diagonal.
while ( $xlim > $xoff && $ylim > $yoff
- && $this->xv[$xlim - 1] == $this->yv[$ylim - 1] ) {
+ && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]
+ ) {
--$xlim;
--$ylim;
}
$j++;
}
- while ( $i < $len && ! $changed[$i] ) {
+ while ( $i < $len && !$changed[$i] ) {
assert( '$j < $other_len && ! $other_changed[$j]' );
$i++;
$j++;
* Computes diff between sequences of strings.
*
* @param $from_lines array An array of strings.
- * (Typically these are lines from a file.)
+ * Typically these are lines from a file.
* @param $to_lines array An array of strings.
*/
function __construct( $from_lines, $to_lines ) {
$eng = new DiffEngine;
$this->edits = $eng->diff( $from_lines, $to_lines );
- // $this->check($from_lines, $to_lines);
}
/**
*
* SYNOPSIS:
*
- * $diff = new Diff($lines1, $lines2);
- * $rev = $diff->reverse();
+ * $diff = new Diff($lines1, $lines2);
+ * $rev = $diff->reverse();
* @return Object A Diff object representing the inverse of the
- * original diff.
+ * original diff.
*/
function reverse() {
$rev = $this;
foreach ( $this->edits as $edit ) {
$rev->edits[] = $edit->reverse();
}
+
return $rev;
}
return false;
}
}
+
return true;
}
$lcs += count( $edit->orig );
}
}
+
return $lcs;
}
array_splice( $lines, count( $lines ), 0, $edit->orig );
}
}
+
return $lines;
}
array_splice( $lines, count( $lines ), 0, $edit->closing );
}
}
- return $lines;
- }
-
- /**
- * Check a Diff for validity.
- *
- * This is here only for debugging purposes.
- * @param $from_lines
- * @param $to_lines
- */
- private function check( $from_lines, $to_lines ) {
- wfProfileIn( __METHOD__ );
- if ( serialize( $from_lines ) != serialize( $this->orig() ) ) {
- trigger_error( "Reconstructed original doesn't match", E_USER_ERROR );
- }
- if ( serialize( $to_lines ) != serialize( $this->closing() ) ) {
- trigger_error( "Reconstructed closing doesn't match", E_USER_ERROR );
- }
-
- $rev = $this->reverse();
- if ( serialize( $to_lines ) != serialize( $rev->orig() ) ) {
- trigger_error( "Reversed original doesn't match", E_USER_ERROR );
- }
- if ( serialize( $from_lines ) != serialize( $rev->closing() ) ) {
- trigger_error( "Reversed closing doesn't match", E_USER_ERROR );
- }
-
- $prevtype = 'none';
- foreach ( $this->edits as $edit ) {
- if ( $prevtype == $edit->type ) {
- trigger_error( 'Edit sequence is non-optimal', E_USER_ERROR );
- }
- $prevtype = $edit->type;
- }
- $lcs = $this->lcs();
- trigger_error( 'Diff okay: LCS = ' . $lcs, E_USER_NOTICE );
- wfProfileOut( __METHOD__ );
+ return $lines;
}
}
* changes in white-space.
*
* @param $from_lines array An array of strings.
- * (Typically these are lines from a file.)
+ * Typically these are lines from a file.
*
* @param $to_lines array An array of strings.
*
* @param $mapped_from_lines array This array should
- * have the same size number of elements as $from_lines.
- * The elements in $mapped_from_lines and
- * $mapped_to_lines are what is actually compared
- * when computing the diff.
+ * have the same size number of elements as $from_lines.
+ * The elements in $mapped_from_lines and
+ * $mapped_to_lines are what is actually compared
+ * when computing the diff.
*
* @param $mapped_to_lines array This array should
- * have the same number of elements as $to_lines.
+ * have the same number of elements as $to_lines.
*/
function __construct( $from_lines, $to_lines,
$mapped_from_lines, $mapped_to_lines ) {
parent::__construct( $mapped_from_lines, $mapped_to_lines );
$xi = $yi = 0;
- for ( $i = 0; $i < count( $this->edits ); $i++ ) {
+ $editCount = count( $this->edits );
+ for ( $i = 0; $i < $editCount; $i++ ) {
$orig = &$this->edits[$i]->orig;
if ( is_array( $orig ) ) {
$orig = array_slice( $from_lines, $xi, count( $orig ) );
* @private
* @ingroup DifferenceEngine
*/
-class HWLDF_WordAccumulator {
+class HWLDFWordAccumulator {
private $lines = array();
private $line = '';
private $group = '';
if ( $this->group !== '' ) {
if ( $this->tag == 'ins' ) {
$this->line .= '<ins class="diffchange diffchange-inline">' .
- htmlspecialchars( $this->group ) . '</ins>';
+ htmlspecialchars( $this->group ) . '</ins>';
} elseif ( $this->tag == 'del' ) {
$this->line .= '<del class="diffchange diffchange-inline">' .
- htmlspecialchars( $this->group ) . '</del>';
+ htmlspecialchars( $this->group ) . '</del>';
} else {
$this->line .= htmlspecialchars( $this->group );
}
*/
public function getLines() {
$this->flushLine( '~done' );
+
return $this->lines;
}
}
list( $closing_words, $closing_stripped ) = $this->split( $closing_lines );
parent::__construct( $orig_words, $closing_words,
- $orig_stripped, $closing_stripped );
+ $orig_stripped, $closing_stripped );
wfProfileOut( __METHOD__ );
}
} else {
$m = array();
if ( preg_match_all( '/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
- $line, $m ) )
- {
+ $line, $m )
+ ) {
foreach ( $m[0] as $word ) {
$words[] = $word;
}
}
}
wfProfileOut( __METHOD__ );
+
return array( $words, $stripped );
}
*/
public function orig() {
wfProfileIn( __METHOD__ );
- $orig = new HWLDF_WordAccumulator;
+ $orig = new HWLDFWordAccumulator;
foreach ( $this->edits as $edit ) {
if ( $edit->type == 'copy' ) {
}
$lines = $orig->getLines();
wfProfileOut( __METHOD__ );
+
return $lines;
}
*/
public function closing() {
wfProfileIn( __METHOD__ );
- $closing = new HWLDF_WordAccumulator;
+ $closing = new HWLDFWordAccumulator;
foreach ( $this->edits as $edit ) {
if ( $edit->type == 'copy' ) {
}
$lines = $closing->getLines();
wfProfileOut( __METHOD__ );
+
return $lines;
}
}
* @ingroup DifferenceEngine
*/
abstract class DiffFormatter {
- /**
- * Number of leading context "lines" to preserve.
+ /** @var int Number of leading context "lines" to preserve.
*
* This should be left at zero for this class, but subclasses
* may want to set this to other values.
*/
protected $leadingContextLines = 0;
- /**
- * Number of trailing context "lines" to preserve.
+ /** @var int Number of trailing context "lines" to preserve.
*
* This should be left at zero for this class, but subclasses
* may want to set this to other values.
$this->startDiff();
+ // Initialize $x0 and $y0 to prevent IDEs from getting confused.
+ $x0 = $y0 = 0;
foreach ( $diff->edits as $edit ) {
if ( $edit->type == 'copy' ) {
if ( is_array( $block ) ) {
} else {
if ( $ntrail ) {
$context = array_slice( $edit->orig, 0, $ntrail );
- $block[] = new DiffOp_Copy( $context );
+ $block[] = new DiffOpCopy( $context );
}
$this->block( $x0, $ntrail + $xi - $x0,
$y0, $ntrail + $yi - $y0,
$y0 = $yi - count( $context );
$block = array();
if ( $context ) {
- $block[] = new DiffOp_Copy( $context );
+ $block[] = new DiffOpCopy( $context );
}
}
$block[] = $edit;
$end = $this->endDiff();
wfProfileOut( __METHOD__ );
+
return $end;
}
/**
- * @param $xbeg
- * @param $xlen
- * @param $ybeg
- * @param $ylen
+ * @param int $xbeg
+ * @param int $xlen
+ * @param int $ybeg
+ * @param int $ylen
* @param $edits
+ * @throws MWException
*/
protected function block( $xbeg, $xlen, $ybeg, $ylen, &$edits ) {
wfProfileIn( __METHOD__ );
protected function endDiff() {
$val = ob_get_contents();
ob_end_clean();
+
return $val;
}
* @ingroup DifferenceEngine
*/
class DifferenceEngine extends ContextSource {
+ /** @var int */
public $mOldid;
+
+ /** @var int */
public $mNewid;
+
private $mOldTags;
private $mNewTags;
- /**
- * @var Content
- */
+ /** @var Content */
public $mOldContent;
+
+ /** @var Content */
public $mNewContent;
+
+ /** @var Language */
protected $mDiffLang;
- /**
- * @var Title
- */
+ /** @var Title */
public $mOldPage;
+
+ /** @var Title */
public $mNewPage;
- /**
- * @var Revision
- */
+ /** @var Revision */
public $mOldRev;
+
+ /** @var Revision */
public $mNewRev;
- private $mRevisionsIdsLoaded = false; // Have the revisions IDs been loaded
- public $mRevisionsLoaded = false; // Have the revisions been loaded
- public $mTextLoaded = 0; // How many text blobs have been loaded, 0, 1 or 2?
- public $mCacheHit = false; // Was the diff fetched from cache?
+
+ /** @var bool Have the revisions IDs been loaded */
+ private $mRevisionsIdsLoaded = false;
+
+ /** @var bool Have the revisions been loaded */
+ public $mRevisionsLoaded = false;
+
+ /** @var int How many text blobs have been loaded, 0, 1 or 2? */
+ public $mTextLoaded = 0;
+
+ /** @var bool Was the diff fetched from cache? */
+ public $mCacheHit = false;
/**
* Set this to true to add debug info to the HTML output.
*/
public $enableDebugComment = false;
- // If true, line X is not displayed when X is 1, for example to increase
- // readability and conserve space with many small diffs.
+ /** @var bool If true, line X is not displayed when X is 1, for example
+ * to increase readability and conserve space with many small diffs.
+ */
protected $mReducedLineNumbers = false;
- // Link to action=markpatrolled
+ /** @var string Link to action=markpatrolled */
protected $mMarkPatrolledLink = null;
- protected $unhide = false; # show rev_deleted content if allowed
+ /** @var bool Show rev_deleted content if allowed */
+ protected $unhide = false;
/**#@-*/
/**
# Default language in which the diff text is written.
$this->mDiffLang = $this->getTitle()->getPageLanguage();
}
+
return $this->mDiffLang;
}
*/
function getOldid() {
$this->loadRevisionIds();
+
return $this->mOldid;
}
*/
function getNewid() {
$this->loadRevisionIds();
+
return $this->mNewid;
}
if ( $row ) {
$rev = Revision::newFromArchiveRow( $row );
$title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
+
return SpecialPage::getTitleFor( 'Undelete' )->getFullURL( array(
'target' => $title->getPrefixedText(),
'timestamp' => $rev->getTimestamp()
- ));
+ ) );
}
}
+
return false;
}
if ( !$this->loadRevisionData() ) {
$this->showMissingRevision();
wfProfileOut( __METHOD__ );
+
return;
}
'href' => $this->mNewPage->getLocalURL( array(
'action' => 'edit',
'undoafter' => $this->mOldid,
- 'undo' => $this->mNewid ) ),
+ 'undo' => $this->mNewid
+ ) ),
'title' => Linker::titleAttrib( 'undo' )
),
$this->msg( 'editundo' )->text()
$oldHeader = '<div id="mw-diff-otitle1"><strong>' . $oldRevisionHeader . '</strong></div>' .
'<div id="mw-diff-otitle2">' .
- Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '</div>' .
+ Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '</div>' .
'<div id="mw-diff-otitle3">' . $oldminor .
- Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '</div>' .
+ Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '</div>' .
'<div id="mw-diff-otitle5">' . $oldChangeTags[0] . '</div>' .
'<div id="mw-diff-otitle4">' . $prevlink . '</div>';
$newHeader = '<div id="mw-diff-ntitle1"><strong>' . $newRevisionHeader . '</strong></div>' .
'<div id="mw-diff-ntitle2">' . Linker::revUserTools( $this->mNewRev, !$this->unhide ) .
- " $rollback</div>" .
+ " $rollback</div>" .
'<div id="mw-diff-ntitle3">' . $newminor .
- Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '</div>' .
+ Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '</div>' .
'<div id="mw-diff-ntitle5">' . $newChangeTags[0] . '</div>' .
'<div id="mw-diff-ntitle4">' . $nextlink . $this->markPatrolledLink() . '</div>';
if ( $link !== '' ) {
$link = '   ' . $link . ' ';
}
+
return $link;
}
}
$parserOutput = $page->getParserOutput( $parserOptions, $rev->getId() );
+
return $parserOutput;
}
$diff = $this->getDiff( $otitle, $ntitle, $notice );
if ( $diff === false ) {
$this->showMissingRevision();
+
return false;
} else {
$this->showDiffStyle();
$this->getOutput()->addHTML( $diff );
+
return true;
}
}
// Check if the diff should be hidden from this user
if ( !$this->loadRevisionData() ) {
wfProfileOut( __METHOD__ );
+
return false;
} elseif ( $this->mOldRev &&
!$this->mOldRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
) {
wfProfileOut( __METHOD__ );
+
return false;
} elseif ( $this->mNewRev &&
!$this->mNewRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
) {
wfProfileOut( __METHOD__ );
+
return false;
}
// Short-circuit
if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev
- && $this->mOldRev->getID() == $this->mNewRev->getID() ) )
- {
+ && $this->mOldRev->getID() == $this->mNewRev->getID() )
+ ) {
wfProfileOut( __METHOD__ );
+
return '';
}
// Cacheable?
$difftext = $this->localiseLineNumbers( $difftext );
$difftext .= "\n<!-- diff cache key $key -->\n";
wfProfileOut( __METHOD__ );
+
return $difftext;
}
} // don't try to load but save the result
// Loadtext is permission safe, this just clears out the diff
if ( !$this->loadText() ) {
wfProfileOut( __METHOD__ );
+
return false;
}
$difftext = $this->localiseLineNumbers( $difftext );
}
wfProfileOut( __METHOD__ );
+
return $difftext;
}
*/
function generateContentDiffBody( Content $old, Content $new ) {
if ( !( $old instanceof TextContent ) ) {
- throw new MWException( "Diff not implemented for " . get_class( $old ) . "; "
- . "override generateContentDiffBody to fix this." );
+ throw new MWException( "Diff not implemented for " . get_class( $old ) . "; " .
+ "override generateContentDiffBody to fix this." );
}
if ( !( $new instanceof TextContent ) ) {
if ( $wgExternalDiffEngine == 'wikidiff' && function_exists( 'wikidiff_do_diff' ) ) {
# For historical reasons, external diff engine expects
# input text to be HTML-escaped already
- $otext = htmlspecialchars ( $wgContLang->segmentForDiff( $otext ) );
- $ntext = htmlspecialchars ( $wgContLang->segmentForDiff( $ntext ) );
+ $otext = htmlspecialchars( $wgContLang->segmentForDiff( $otext ) );
+ $ntext = htmlspecialchars( $wgContLang->segmentForDiff( $ntext ) );
wfProfileOut( __METHOD__ );
+
return $wgContLang->unsegmentForDiff( wikidiff_do_diff( $otext, $ntext, 2 ) ) .
$this->debug( 'wikidiff1' );
}
$text .= $this->debug( 'wikidiff2' );
wfProfileOut( 'wikidiff2_do_diff' );
wfProfileOut( __METHOD__ );
+
return $text;
}
if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
$tempFile1 = fopen( $tempName1, "w" );
if ( !$tempFile1 ) {
wfProfileOut( __METHOD__ );
+
return false;
}
$tempFile2 = fopen( $tempName2, "w" );
if ( !$tempFile2 ) {
wfProfileOut( __METHOD__ );
+
return false;
}
fwrite( $tempFile1, $otext );
unlink( $tempName1 );
unlink( $tempName2 );
wfProfileOut( __METHOD__ );
+
return $difftext;
}
$diffs = new Diff( $ota, $nta );
$formatter = new TableDiffFormatter();
$difftext = $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) .
- wfProfileOut( __METHOD__ );
+ wfProfileOut( __METHOD__ );
+
return $difftext;
}
* Generate a debug comment indicating diff generating time,
* server node, and generator backend.
*
- * @param String $generator: What diff engine was used
+ * @param String $generator : What diff engine was used
*
* @return string
*/
$data[] = wfHostname();
}
$data[] = wfTimestamp( TS_DB );
- return "<!-- diff generator: "
- . implode( " ",
- array_map(
- "htmlspecialchars",
- $data )
- )
- . " -->\n";
+
+ return "<!-- diff generator: " .
+ implode( " ", array_map( "htmlspecialchars", $data ) ) .
+ " -->\n";
}
/**
* @return mixed
*/
function localiseLineNumbers( $text ) {
- return preg_replace_callback( '/<!--LINE (\d+)-->/',
- array( &$this, 'localiseLineNumbersCb' ), $text );
+ return preg_replace_callback(
+ '/<!--LINE (\d+)-->/',
+ array( &$this, 'localiseLineNumbersCb' ),
+ $text
+ );
}
function localiseLineNumbersCb( $matches ) {
if ( $matches[1] === '1' && $this->mReducedLineNumbers ) {
return '';
}
+
return $this->msg( 'lineno' )->numParams( $matches[1] )->escaped();
}
if ( $nEdits > 0 ) {
$limit = 100; // use diff-multi-manyusers if too many users
$numUsers = $this->mNewPage->countAuthorsBetween( $oldRev, $newRev, $limit );
+
return self::intermediateEditsMsg( $nEdits, $numUsers, $limit );
}
+
return ''; // nothing
}
} else {
$msg = 'diff-multi';
}
+
return wfMessage( $msg )->numParams( $numEdits, $numUsers )->parse();
}
/**
* Add the header to a diff body
*
- * @param String $diff: Diff body
- * @param String $otitle: Old revision header
- * @param String $ntitle: New revision header
- * @param String $multi: Notice telling user that there are intermediate revisions between the ones being compared
- * @param String $notice: Other notices, e.g. that user is viewing deleted content
+ * @param string $diff Diff body
+ * @param string $otitle Old revision header
+ * @param string $ntitle New revision header
+ * @param string $multi Notice telling user that there are intermediate
+ * revisions between the ones being compared
+ * @param string $notice Other notices, e.g. that user is viewing deleted content
*
* @return string
*/
$this->mNewid = 0;
}
- wfRunHooks( 'NewDifferenceEngine', array( $this->getTitle(), &$this->mOldid, &$this->mNewid, $old, $new ) );
+ wfRunHooks(
+ 'NewDifferenceEngine',
+ array( $this->getTitle(), &$this->mOldid, &$this->mNewid, $old, $new )
+ );
}
/**
$msg = preg_replace( '/^ /m', '  ', $msg );
$msg = preg_replace( '/ $/m', '  ', $msg );
$msg = preg_replace( '/ /', '  ', $msg );
+
return $msg;
}
protected function blockHeader( $xbeg, $xlen, $ybeg, $ylen ) {
$r = '<tr><td colspan="2" class="diff-lineno"><!--LINE ' . $xbeg . "--></td>\n" .
'<td colspan="2" class="diff-lineno"><!--LINE ' . $ybeg . "--></td></tr>\n";
+
return $r;
}
// The <div> wrapper is needed for 'overflow: auto' style to scroll properly
$line = Xml::tags( 'div', null, $this->escapeWhiteSpace( $line ) );
}
+
return "<td class='diff-marker'>$marker</td><td class='$class'>$line</td>";
}
echo '<tr>' . $this->deletedLine( $line ) .
$this->addedLine( $aline ) . "</tr>\n";
}
- foreach ( $add as $line ) { # If any leftovers
+ foreach ( $add as $line ) { # If any leftovers
echo '<tr>' . $this->emptyLine() .
$this->addedLine( $line ) . "</tr>\n";
}
* @ingroup DifferenceEngine
*/
class UnifiedDiffFormatter extends DiffFormatter {
+ /** @var int */
protected $leadingContextLines = 2;
+
+ /** @var int */
protected $trailingContextLines = 2;
/**
*/
$max = min( $this->m, $this->n );
for ( $forwardBound = 0; $forwardBound < $max
- && $this->from[$forwardBound] === $this->to[$forwardBound];
- ++$forwardBound ) {
+ && $this->from[$forwardBound] === $this->to[$forwardBound];
+ ++$forwardBound
+ ) {
$this->removed[$forwardBound] = $this->added[$forwardBound] = false;
}
$backBoundL2 = $this->n - 1;
while ( $backBoundL1 >= $forwardBound && $backBoundL2 >= $forwardBound
- && $this->from[$backBoundL1] === $this->to[$backBoundL2] ) {
+ && $this->from[$backBoundL1] === $this->to[$backBoundL2]
+ ) {
$this->removed[$backBoundL1--] = $this->added[$backBoundL2--] = false;
}
$snake = array( 0, 0, 0 );
$this->length = $forwardBound + $this->m - $backBoundL1 - 1
- + $this->lcs_rec( $forwardBound, $backBoundL1,
- $forwardBound, $backBoundL2, $V, $snake );
+ + $this->lcs_rec(
+ $forwardBound,
+ $backBoundL1,
+ $forwardBound,
+ $backBoundL2,
+ $V,
+ $snake
+ );
}
$this->m = $m;
while ( $xi < $this->m || $yi < $this->n ) {
// Matching "snake".
while ( $xi < $this->m && $yi < $this->n
- && !$this->removed[$xi]
- && !$this->added[$yi] ) {
+ && !$this->removed[$xi]
+ && !$this->added[$yi]
+ ) {
++$xi;
++$yi;
}
}
if ( $xi > $xstart || $yi > $ystart ) {
- $ranges[] = new RangeDifference( $xstart, $xi,
- $ystart, $yi );
+ $ranges[] = new RangeDifference( $xstart, $xi, $ystart, $yi );
}
}
+
return $ranges;
}
}
$d = $this->find_middle_snake( $bottoml1, $topl1, $bottoml2,
- $topl2, $V, $snake );
+ $topl2, $V, $snake );
// need to store these so we don't lose them when they're
// overwritten by the recursion
if ( $d > 1 ) {
return $len
+ $this->lcs_rec( $bottoml1, $startx - 1, $bottoml2,
- $starty - 1, $V, $snake )
+ $starty - 1, $V, $snake )
+ $this->lcs_rec( $startx + $len, $topl1, $starty + $len,
- $topl2, $V, $snake );
+ $topl2, $V, $snake );
} elseif ( $d == 1 ) {
/*
* In this case the sequences differ by exactly 1 line. We have
$this->removed[$bottoml1 + $i] =
$this->added[$bottoml2 + $i] = false;
}
+
return $max + $len;
}
+
return $len;
}
$snake0 = &$snake[0];
$snake1 = &$snake[1];
$snake2 = &$snake[2];
- $bottoml1_min_1 = $bottoml1 -1;
- $bottoml2_min_1 = $bottoml2 -1;
+ $bottoml1_min_1 = $bottoml1 - 1;
+ $bottoml2_min_1 = $bottoml2 - 1;
$N = $topl1 - $bottoml1_min_1;
$M = $topl2 - $bottoml2_min_1;
$delta = $N - $M;
// compute forward furthest reaching paths
for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
if ( $k == -$d || ( $k < $d
- && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] ) ) {
+ && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] )
+ ) {
$x = $V0[$limit_plus_1 + $k];
} else {
$x = $V0[$limit_min_1 + $k] + 1;
++$absx;
++$absy;
}
- $x = $absx -$bottoml1;
+ $x = $absx - $bottoml1;
- $snake2 = $absx -$snake0;
+ $snake2 = $absx - $snake0;
$V0[$limit + $k] = $x;
if ( $k >= $delta - $d + 1 && $k <= $delta + $d - 1
- && $x >= $V1[$limit + $k - $delta] ) {
+ && $x >= $V1[$limit + $k - $delta]
+ ) {
return 2 * $d - 1;
}
// compute backward furthest reaching paths
for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
if ( $k == $d
- || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] ) ) {
+ || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] )
+ ) {
$x = $V1[$limit_min_1 + $k];
} else {
$x = $V1[$limit_plus_1 + $k] - 1;
$snake2 = 0;
while ( $x > 0 && $y > 0
- && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1] ) {
+ && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1]
+ ) {
--$x;
--$y;
++$snake2;
// compute forward furthest reaching paths
for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
if ( $k == -$d
- || ( $k < $d && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] ) ) {
+ || ( $k < $d && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] )
+ ) {
$x = $V0[$limit_plus_1 + $k];
} else {
$x = $V0[$limit_min_1 + $k] + 1;
++$absx;
++$absy;
}
- $x = $absx -$bottoml1;
- $snake2 = $absx -$snake0;
+ $x = $absx - $bottoml1;
+ $snake2 = $absx - $snake0;
$V0[$limit + $k] = $x;
// check to see if we can cut down the diagonal range
if ( $x >= $N && $end_forward > $k - 1 ) {
$end_forward = $k - 1;
- } elseif ( $absy -$bottoml2 >= $M ) {
+ } elseif ( $absy - $bottoml2 >= $M ) {
$start_forward = $k + 1;
$value_to_add_forward = 0;
}
// compute backward furthest reaching paths
for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
if ( $k == $d
- || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] ) ) {
+ || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] )
+ ) {
$x = $V1[$limit_min_1 + $k];
} else {
$x = $V1[$limit_plus_1 + $k] - 1;
$snake2 = 0;
while ( $x > 0 && $y > 0
- && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1] ) {
+ && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1]
+ ) {
--$x;
--$y;
++$snake2;
$V1[$limit + $k] = $x;
if ( $k >= -$delta - $d && $k <= $d - $delta
- && $x <= $V0[$limit + $k + $delta] ) {
+ && $x <= $V0[$limit + $k + $delta]
+ ) {
$snake0 = $bottoml1 + $x;
$snake1 = $bottoml2 + $y;
+
return 2 * $d;
}
$snake2 = 0;
wfDebug( "Computing the LCS is too expensive. Using a heuristic.\n" );
$this->heuristicUsed = true;
+
return 5; /*
* HACK: since we didn't really finish the LCS computation
* we don't really know the length of the SES. We don't do
public function getLcsLength() {
if ( $this->heuristicUsed && !$this->lcsLengthCorrectedForHeuristic ) {
$this->lcsLengthCorrectedForHeuristic = true;
- $this->length = $this->m -array_sum( $this->added );
+ $this->length = $this->m - array_sum( $this->added );
}
+
return $this->length;
}
-
}
/**
* @ingroup DifferenceEngine
*/
class RangeDifference {
-
+ /** @var int */
public $leftstart;
+
+ /** @var int */
public $leftend;
+
+ /** @var int */
public $leftlength;
+ /** @var int */
public $rightstart;
+
+ /** @var int */
public $rightend;
+
+ /** @var int */
public $rightlength;
function __construct( $leftstart, $leftend, $rightstart, $rightend ) {
// Dont return when false to allow for simpler implementations.
// errored urls are handled in ExternalStore::batchFetchFromURLs
if ( $data !== false ) {
- $retval[$urls] = $data;
+ $retval[$url] = $data;
}
}
return $retval;
}
$blobs = array();
foreach ( $pathsByBackend as $backendName => $paths ) {
- $be = FileBackendGroup::get( $backendName );
+ $be = FileBackendGroup::singleton()->get( $backendName );
$blobs = $blobs + $be->getFileContentsMulti( array( 'srcs' => $paths ) );
}
return $blobs;
}
}
}
- wfProfileIn( __METHOD__ . '-miss' );
wfProfileIn( __METHOD__ . '-miss-' . $this->name );
$stat = $this->doGetFileStat( $params );
wfProfileOut( __METHOD__ . '-miss-' . $this->name );
- wfProfileOut( __METHOD__ . '-miss' );
if ( is_array( $stat ) ) { // file exists
$stat['latest'] = $latest;
$this->cheapCache->set( $path, 'stat', $stat );
return $stat['hash'];
}
}
- wfProfileIn( __METHOD__ . '-miss' );
wfProfileIn( __METHOD__ . '-miss-' . $this->name );
$hash = $this->doGetFileSha1Base36( $params );
wfProfileOut( __METHOD__ . '-miss-' . $this->name );
- wfProfileOut( __METHOD__ . '-miss' );
$this->cheapCache->set( $path, 'sha1', array( 'hash' => $hash, 'latest' => $latest ) );
return $hash;
}
if ( $res == StreamFile::NOT_MODIFIED ) {
// do nothing; client cache is up to date
} elseif ( $res == StreamFile::READY_STREAM ) {
- wfProfileIn( __METHOD__ . '-send' );
wfProfileIn( __METHOD__ . '-send-' . $this->name );
$status = $this->doStreamFile( $params );
wfProfileOut( __METHOD__ . '-send-' . $this->name );
- wfProfileOut( __METHOD__ . '-send' );
if ( !$status->isOK() ) {
// Per bug 41113, nasty things can happen if bad cache entries get
// stuck in cache. It's also possible that this error can come up
}
}
-
/**
* Normalize a string if it is a valid storage path
*
*/
protected function assertWritableRepo() {}
-
/**
* Return information about the repository.
*
* @since 1.22
*/
public function getInfo() {
- return array(
+ $ret = array(
'name' => $this->getName(),
'displayname' => $this->getDisplayName(),
'rootUrl' => $this->getRootUrl(),
'local' => $this->isLocal(),
);
+
+ $optionalSettings = array(
+ 'url', 'thumbUrl', 'initialCapital', 'descBaseUrl', 'scriptDirUrl', 'articleUrl',
+ 'fetchDescription', 'descriptionCacheExpiry', 'scriptExtension'
+ );
+ foreach ( $optionalSettings as $k ) {
+ if ( isset( $this->$k ) ) {
+ $ret[$k] = $this->$k;
+ }
+ }
+
+ return $ret;
}
}
* @return string
*/
function fetchImageQuery( $query ) {
- global $wgMemc, $wgLanguageCode;
+ global $wgLanguageCode;
$query = array_merge( $query,
array(
'img_media_type' => $this->media_type,
'img_major_mime' => $major,
'img_minor_mime' => $minor,
- 'img_metadata' => $dbw->encodeBlob($this->metadata),
+ 'img_metadata' => $dbw->encodeBlob( $this->metadata ),
'img_sha1' => $this->sha1,
),
array( 'img_name' => $this->getName() ),
'img_description' => $comment,
'img_user' => $user->getId(),
'img_user_text' => $user->getName(),
- 'img_metadata' => $dbw->encodeBlob($this->metadata),
+ 'img_metadata' => $dbw->encodeBlob( $this->metadata ),
'img_sha1' => $this->sha1
),
__METHOD__,
'img_description' => $comment,
'img_user' => $user->getId(),
'img_user_text' => $user->getName(),
- 'img_metadata' => $dbw->encodeBlob($this->metadata),
+ 'img_metadata' => $dbw->encodeBlob( $this->metadata ),
'img_sha1' => $this->sha1
),
array( 'img_name' => $this->getName() ),
$dbw->commit( __METHOD__ ); // commit before anything bad can happen
}
-
wfProfileOut( __METHOD__ . '-edit' );
# Save to cache and purge the squid
class TraditionalImageGallery extends ImageGalleryBase {
-
/**
* Return a HTML representation of the image gallery
*
) . "<br />\n" :
'';
-
$galleryText = $textlink . $text . $fileSize;
$galleryText = $this->wrapGalleryText( $galleryText, $thumb );
return $output;
}
-
/**
* Add the wrapper html around the thumb's caption
*
protected function disableContentHandlerUseDB() {
global $wgContentHandlerUseDB;
- if( $wgContentHandlerUseDB ) {
+ if ( $wgContentHandlerUseDB ) {
$this->output( "Turning off Content Handler DB fields for this part of upgrade.\n" );
$this->holdContentHandlerUseDB = $wgContentHandlerUseDB;
$wgContentHandlerUseDB = false;
protected function enableContentHandlerUseDB() {
global $wgContentHandlerUseDB;
- if( $this->holdContentHandlerUseDB ) {
+ if ( $this->holdContentHandlerUseDB ) {
$this->output( "Content Handler DB fields should be usable now.\n" );
$wgContentHandlerUseDB = $this->holdContentHandlerUseDB;
}
array( 'addSequence', 'logging', false, 'logging_log_id_seq' ),
array( 'addSequence', 'page_restrictions', false, 'page_restrictions_pr_id_seq' ),
array( 'addSequence', 'filearchive', 'fa_id', 'filearchive_fa_id_seq' ),
+ array( 'addSequence', 'archive', false, 'archive_ar_id_seq' ),
+ array( 'addSequence', 'externallinks', false, 'externallinks_el_id_seq' ),
# new tables
array( 'addTable', 'category', 'patch-category.sql' ),
</div></div>
-
<div id="mw-panel">
<div class="portal" id="p-logo">
<a style="background-image: url(../skins/common/images/mediawiki.png);"
/** @var RedisConnectionPool */
protected $redisPool;
+ /** @var Array List of Redis server addresses */
+ protected $servers;
+
/**
* @params include:
- * - redisConfig : An array of parameters to RedisConnectionPool::__construct().
- * - redisServer : A hostname/port combination or the absolute path of a UNIX socket.
- * If a hostname is specified but no port, the standard port number
- * 6379 will be used. Required.
+ * - redisConfig : An array of parameters to RedisConnectionPool::__construct().
+ * - redisServers : Array of server entries, the first being the primary and the
+ * others being fallback servers. Each entry is either a hostname/port
+ * combination or the absolute path of a UNIX socket.
+ * If a hostname is specified but no port, the standard port number
+ * 6379 will be used. Required.
* @param array $params
*/
protected function __construct( array $params ) {
parent::__construct( $params );
- $this->server = $params['redisServer'];
+ $this->servers = isset( $params['redisServers'] )
+ ? $params['redisServers']
+ : array( $params['redisServer'] ); // b/c
$this->redisPool = RedisConnectionPool::singleton( $params['redisConfig'] );
}
- /**
- * @see JobQueueAggregator::doNotifyQueueEmpty()
- */
protected function doNotifyQueueEmpty( $wiki, $type ) {
$conn = $this->getConnection();
if ( !$conn ) {
}
}
- /**
- * @see JobQueueAggregator::doNotifyQueueNonEmpty()
- */
protected function doNotifyQueueNonEmpty( $wiki, $type ) {
$conn = $this->getConnection();
if ( !$conn ) {
}
}
- /**
- * @see JobQueueAggregator::doAllGetReadyWikiQueues()
- */
protected function doGetAllReadyWikiQueues() {
$conn = $this->getConnection();
if ( !$conn ) {
}
}
- /**
- * @see JobQueueAggregator::doPurge()
- */
protected function doPurge() {
$conn = $this->getConnection();
if ( !$conn ) {
/**
* Get a connection to the server that handles all sub-queues for this queue
*
- * @return Array (server name, Redis instance)
+ * @return RedisConnRef|bool Returns false on failure
* @throws MWException
*/
protected function getConnection() {
- return $this->redisPool->getConnection( $this->server );
+ $conn = false;
+ foreach ( $this->servers as $server ) {
+ $conn = $this->redisPool->getConnection( $server );
+ if ( $conn ) {
+ break;
+ }
+ }
+ return $conn;
}
/**
* @return void
*/
protected function handleException( RedisConnRef $conn, $e ) {
- $this->redisPool->handleException( $this->server, $conn, $e );
+ $this->redisPool->handleException( $conn->getServer(), $conn, $e );
}
/**
/**
* Construct a job
- * @param $title Title: the title linked to
+ * @param Title $title The title linked to
* @param array $params job parameters (table, start and end page_ids)
- * @param $id Integer: job id
+ * @param int $id Job id
*/
function __construct( $title, $params, $id = 0 ) {
global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
* using a pre-calculated title array which gives the links in that range.
* Queue the resulting jobs.
*
- * @param $titleArray array
- * @param $rootJobParams array
- * @return void
+ * @param array $titleArray
+ * @param array $rootJobParams
*/
protected function insertJobsFromTitles( $titleArray, $rootJobParams = array() ) {
// Carry over any "root job" information
}
/**
- * @param $rootJobParams array
- * @return void
+ * @param array $rootJobParams
*/
protected function insertPartitionJobs( $rootJobParams = array() ) {
// Carry over any "root job" information
/**
* Invalidate an array (or iterator) of Title objects, right now
- * @param $titleArray array
+ * @param array $titleArray
*/
protected function invalidateTitles( $titleArray ) {
global $wgUseFileCache, $wgUseSquid;
# Get all IDs in this query into an array
$ids = array();
+ /** @var Title $title */
foreach ( $titleArray as $title ) {
$ids[] = $title->getArticleID();
}
return false;
}
-
UploadBase::setSessionStatus(
$this->params['filekey'],
array( 'result' => 'Poll', 'stage' => 'publish', 'status' => Status::newGood() )
imagejpeg( $dst_image, $thumbPath, 95 );
}
-
/**
* Returns whether the current scaler supports rotation (im and gd do)
*
$defaultItem = $vals['x-default'];
unset( $vals['x-default'] );
}
- foreach( $priorityLanguages as $pLang ) {
+ foreach ( $priorityLanguages as $pLang ) {
if ( isset( $vals[$pLang] ) ) {
$isDefault = false;
if ( $vals[$pLang] === $defaultItem ) {
// This is an API-specific function so it would be cleaner to call it from
// outside fetchExtendedMetadata, but this way we don't need to redo the
// computation on a cache hit.
- $this->sanitizeArrayForXml($extendedMetadata);
+ $this->sanitizeArrayForXml( $extendedMetadata );
$valueToCache = array( 'data' => $extendedMetadata, 'timestamp' => wfTimestampNow() );
$wgMemc->set( $cacheKey, $valueToCache, $maxCacheTime );
}
// choose the language best matching user or site settings
$priorityLanguages = $this->getPriorityLanguages();
- foreach( $priorityLanguages as $lang ) {
+ foreach ( $priorityLanguages as $lang ) {
if ( isset( $value[$lang] ) ) {
return $value[$lang];
}
}
// otherwise just return any one language
- unset($value['_type']);
- if (!empty($value)) {
- return reset($value);
+ unset( $value['_type'] );
+ if ( !empty( $value ) ) {
+ return reset( $value );
}
// this should not happen; signal error
return $image->getWidth() * $image->getHeight();
}
-
/**
* @param $file File
* @return string
$db = $this->getDB( $row->serverIndex );
if ( $this->isExpired( $db, $row->exptime ) ) { // MISS
$this->debug( "get: key has expired, deleting" );
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
# Put the expiry time in the WHERE condition to avoid deleting a
# newly-inserted value
$db->delete( $row->tableName,
array( 'keyname' => $key, 'exptime' => $row->exptime ),
__METHOD__ );
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
$values[$key] = false;
} else { // HIT
$values[$key] = $this->unserialize( $db->decodeBlob( $row->value ) );
$encExpiry = $db->timestamp( $exptime );
}
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
// (bug 24425) use a replace if the db supports it instead of
// delete/insert to avoid clashes with conflicting keynames
$db->replace(
'value' => $db->encodeBlob( $this->serialize( $value ) ),
'exptime' => $encExpiry
), __METHOD__ );
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
} catch ( DBError $e ) {
$this->handleWriteError( $e, $serverIndex );
return false;
}
$encExpiry = $db->timestamp( $exptime );
}
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
// (bug 24425) use a replace if the db supports it instead of
// delete/insert to avoid clashes with conflicting keynames
$db->update(
),
__METHOD__
);
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
} catch ( DBQueryError $e ) {
$this->handleWriteError( $e, $serverIndex );
list( $serverIndex, $tableName ) = $this->getTableByKey( $key );
try {
$db = $this->getDB( $serverIndex );
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
$db->delete(
$tableName,
array( 'keyname' => $key ),
__METHOD__ );
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
} catch ( DBError $e ) {
$this->handleWriteError( $e, $serverIndex );
return false;
try {
$db = $this->getDB( $serverIndex );
$step = intval( $step );
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
$row = $db->selectRow(
$tableName,
array( 'value', 'exptime' ),
array( 'FOR UPDATE' ) );
if ( $row === false ) {
// Missing
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
return null;
}
$db->delete( $tableName, array( 'keyname' => $key ), __METHOD__ );
if ( $this->isExpired( $db, $row->exptime ) ) {
// Expired, do not reinsert
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
return null;
}
// Race condition. See bug 28611
$newValue = null;
}
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
} catch ( DBError $e ) {
$this->handleWriteError( $e, $serverIndex );
return null;
$maxExpTime = $row->exptime;
}
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
$db->delete(
$this->getTableNameByShard( $i ),
array(
'keyname' => $keys
),
__METHOD__ );
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
if ( $progressCallback ) {
if ( intval( $totalSeconds ) === 0 ) {
try {
$db = $this->getDB( $serverIndex );
for ( $i = 0; $i < $this->shards; $i++ ) {
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
$db->delete( $this->getTableNameByShard( $i ), '*', __METHOD__ );
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
}
} catch ( DBError $e ) {
$this->handleWriteError( $e, $serverIndex );
}
for ( $i = 0; $i < $this->shards; $i++ ) {
- $db->begin( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
$db->query(
'CREATE TABLE ' . $db->tableName( $this->getTableNameByShard( $i ) ) .
' LIKE ' . $db->tableName( 'objectcache' ),
__METHOD__ );
- $db->commit( __METHOD__ );
+ $db->commit( __METHOD__, 'flush' );
}
}
}
* @ingroup Parser
*/
class CacheTime {
+ /** @var array|bool ParserOptions which have been taken into account to
+ * produce output or false if not available.
+ */
+ public $mUsedOptions;
var $mVersion = Parser::VERSION, # Compatibility check
$mCacheTime = '', # Time when this object was generated, or -1 for uncacheable. Used in ParserCache.
}
/**
- * @param $parserOutput ParserOutput
- * @param $article Article
- * @param $popts ParserOptions
- * @param $cacheTime Time when the cache was generated
+ * @param ParserOutput $parserOutput
+ * @param Article $article
+ * @param ParserOptions $popts
+ * @param string $cacheTime Time when the cache was generated
*/
public function save( $parserOutput, $article, $popts, $cacheTime = null ) {
$expire = $parserOutput->getCacheExpiry();
* so users sharign the options with vary for the same page share
* the same cached data safely.
*
- * Replaces User::getPageRenderingHash()
- *
* Extensions which require it should install 'PageRenderingHash' hook,
* which will give them a chance to modify this key based on their own
* settings.
$text = str_replace( array( Parser::TOC_START, Parser::TOC_END ), '', $text );
} else {
$text = preg_replace(
- '#'. preg_quote( Parser::TOC_START ) . '.*?' . preg_quote( Parser::TOC_END ) . '#s',
+ '#' . preg_quote( Parser::TOC_START ) . '.*?' . preg_quote( Parser::TOC_END ) . '#s',
'',
$text
);
$xml = $this->preprocessToXml( $text, $flags );
}
-
// Fail if the number of elements exceeds acceptable limits
// Do not attempt to generate the DOM
$this->parser->mGeneratedPPNodeCount += substr_count( $xml, '<' );
/**
* ProfilerSimpleUDP class, that sends out messages for 'udpprofile' daemon
- * (the one from
+ * (the one from
* http://git.wikimedia.org/tree/operations%2Fsoftware.git/master/udpprofile)
* @ingroup Profiler
*/
$blobs = array();
}
-
foreach ( $missing as $name ) {
$states[$name] = 'missing';
}
*/
public function getAllStyleFiles() {
$files = array();
- foreach( (array)$this->styles as $key => $value ) {
+ foreach ( (array)$this->styles as $key => $value ) {
if ( is_array( $value ) ) {
$path = $key;
} else {
return call_user_func( array( self::$allowedTypes[$typeName], 'suggestTarget' ), $target, $ids );
}
-
/**
* Checks if a revision still exists in the revision table.
* If it doesn't, returns the corresponding ar_timestamp field
$user = $this->getUser();
$request = $this->getRequest();
- if ( !$user->isLoggedIn() ) {
- $this->error( 'changeemail-no-info' );
-
- return;
- }
+ $this->requireLogin( 'changeemail-no-info' );
if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
$this->doReturnTo();
// This could also let someone check the current email address, so
// require both permissions.
- if ( !$this->getUser()->isAllowed( 'viewmyprivateinfo' ) ) {
+ if ( !$user->isAllowed( 'viewmyprivateinfo' ) ) {
throw new PermissionsError( 'viewmyprivateinfo' );
}
$this->getOutput()->disallowUserJs();
$request = $this->getRequest();
+
+ if ( !$request->wasPosted() ) {
+ $this->requireLogin( 'resetpass-no-info' );
+ }
+
$this->mUserName = trim( $request->getVal( 'wpName' ) );
$this->mOldpass = $request->getVal( 'wpPassword' );
$this->mNewpass = $request->getVal( 'wpNewPassword' );
$this->mDomain = $request->getVal( 'wpDomain' );
$user = $this->getUser();
- if ( !$request->wasPosted() && !$user->isLoggedIn() ) {
- $this->error( $this->msg( 'resetpass-no-info' )->text() );
-
- return;
- }
if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
$titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
'wpLoginToken' => $token,
'wpPassword' => $request->getVal( 'wpNewPassword' ),
) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
- $login = new LoginForm( new FauxRequest( $data, true ) );
+ $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
$login->setContext( $this->getContext() );
$login->execute( null );
}
$this->checkReadOnly();
$this->checkPermissions();
+ $this->requireLogin( 'confirmemail_needlogin' );
+
// This could also let someone check the current email address, so
// require both permissions.
if ( !$this->getUser()->isAllowed( 'viewmyprivateinfo' ) ) {
}
if ( $code === null || $code === '' ) {
- if ( $this->getUser()->isLoggedIn() ) {
- if ( Sanitizer::validateEmail( $this->getUser()->getEmail() ) ) {
- $this->showRequestForm();
- } else {
- $this->getOutput()->addWikiMsg( 'confirmemail_noemail' );
- }
+ if ( Sanitizer::validateEmail( $this->getUser()->getEmail() ) ) {
+ $this->showRequestForm();
} else {
- $llink = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Userlogin' ),
- $this->msg( 'loginreqlink' )->escaped(),
- array(),
- array( 'returnto' => $this->getTitle()->getPrefixedText() )
- );
- $this->getOutput()->addHTML(
- $this->msg( 'confirmemail_needlogin' )->rawParams( $llink )->parse()
- );
+ $this->getOutput()->addWikiMsg( 'confirmemail_noemail' );
}
} else {
$this->attemptConfirm( $code );
# Get the current user name for accounts
$join_cond['user'] = Revision::userJoinCond();
+ $options = array();
+ if ( $index ) {
+ $options['USE INDEX'] = array( 'revision' => $index );
+ }
+
$queryInfo = array(
'tables' => $tables,
'fields' => array_merge(
'page_latest', 'page_is_redirect', 'page_len' )
),
'conds' => $conds,
- 'options' => array( 'USE INDEX' => array( 'revision' => $index ) ),
+ 'options' => $options,
'join_conds' => $join_cond
);
$condition = array();
$join_conds = array();
$tables = array( 'revision', 'page', 'user' );
+ $index = false;
if ( $this->contribs == 'newbie' ) {
$max = $this->mDb->selectField( 'user', 'max(user_id)', false, __METHOD__ );
$condition[] = 'rev_user >' . (int)( $max - $max / 100 );
- $index = 'user_timestamp';
# ignore local groups with the bot right
# @todo FIXME: Global groups may have 'bot' rights
$groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
public function execute( $mode ) {
$this->setHeaders();
- $out = $this->getOutput();
-
# Anons don't get a watchlist
- if ( $this->getUser()->isAnon() ) {
- $out->setPageTitle( $this->msg( 'watchnologin' ) );
- $llink = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Userlogin' ),
- $this->msg( 'loginreqlink' )->escaped(),
- array(),
- array( 'returnto' => $this->getTitle()->getPrefixedText() )
- );
- $out->addHTML( $this->msg( 'watchlistanontext' )->rawParams( $llink )->parse() );
+ $this->requireLogin( 'watchlistanontext', 'watchnologin' );
- return;
- }
+ $out = $this->getOutput();
$this->checkPermissions();
$this->checkReadOnly();
private $mOriginalPageOutCallback = null;
private $mLogItemCount = 0;
-
/**
* @param WikiImporter $importer
* @param $upload
// For protocols without '//' like 'mailto:'
$protocol = substr( $target2, 0, $pr_cl + 1 );
$target2 = substr( $target2, $pr_cl + 1 );
- } elseif ( $protocol == '' && $target2 != '' ) {
+ } elseif ( $target2 != '' ) {
// default
$protocol = 'http://';
}
if ( $protocol != '' && !in_array( $protocol, $protocols_list ) ) {
- // unsupported protocol, show original search request
+ // Unsupported protocol, show original search request
$target2 = $target;
- $protocol = '';
+ // Since links with unsupported protocols don't end up in
+ // externallinks, assume $protocol is actually part of a link
+ // containing ':' or '//' and default to http as above.
+ $protocol = 'http://';
}
$out->addWikiMsg(
}
$field = $prefix . substr( $field, 3 ) . ' AS ' . $field;
}
- $fields[array_search('top', $fields)] = "'no' AS top";
+ $fields[array_search( 'top', $fields )] = "'no' AS top";
} else {
if ( $this->mShowAll ) {
$fields[array_search( 'top', $fields )] = "'yes' AS top";
* @param ResultWrapper $res
*/
function preprocessResults( $db, $res ) {
- $batch = new LinkBatch;
+ if ( !$res->numRows() ) {
+ return;
+ }
+ $batch = new LinkBatch;
foreach ( $res as $row ) {
$batch->add( $row->namespace, $row->title );
$batch->addObj( $this->getRedirectTarget( $row ) );
}
-
$batch->execute();
// Back to start for display
- if ( $res->numRows() > 0 ) {
- // If there are no rows we get an error seeking.
- $db->dataSeek( $res, 0 );
- }
+ $res->seek( 0 );
}
protected function getRedirectTarget( $row ) {
// from a FormSpecialPage class.
$form->setWrapperLegend( false );
+ $form->addHiddenFields( $this->getRequest()->getValues( 'returnto', 'returntoquery' ) );
+
$i = 0;
if ( isset( $wgPasswordResetRoutes['username'] ) && $wgPasswordResetRoutes['username'] ) {
$i++;
$out = $this->getOutput();
$out->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
- $user = $this->getUser();
- if ( $user->isAnon() ) {
- throw new ErrorPageError(
- 'prefsnologin',
- 'prefsnologintext',
- array( $this->getTitle()->getPrefixedDBkey() )
- );
- }
+ $this->requireLogin( 'prefsnologintext2', 'prefsnologin' );
$this->checkReadOnly();
if ( $par == 'reset' ) {
);
}
- $htmlForm = Preferences::getFormObject( $user, $this->getContext() );
+ $htmlForm = Preferences::getFormObject( $this->getUser(), $this->getContext() );
$htmlForm->setSubmitCallback( array( 'Preferences', 'tryUISubmit' ) );
$htmlForm->show();
$this->setCategory( $cat );
}
-
if ( !$this->category && $categoryStr ) {
$this->setHeaders();
$this->getOutput()->addWikiMsg( 'randomincategory-invalidcategory',
public function execute( $par ) {
// This is a preferences page, so no user JS for y'all.
$this->getOutput()->disallowUserJs();
+ $this->requireLogin();
parent::execute( $par );
protected function showConvenienceLinks() {
# Give a link to the logs/hist for this page
if ( $this->targetObj ) {
+ // Also set header tabs to be for the target.
+ $this->getSkin()->setRelevantTitle( $this->targetObj );
+
$links = array();
$links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'Log' ),
}
if ( $includesRestrictedPages || $includesCachedPages ) {
+ $out->wrapWikiMsg( "<h2 class=\"mw-specialpages-note-top\">$1</h2>", 'specialpages-note-top' );
$out->wrapWikiMsg( "<div class=\"mw-specialpages-notes\">\n$1\n</div>", 'specialpages-note' );
}
}
$output = $this->getOutput();
# Anons don't get a watchlist
- if ( $user->isAnon() ) {
- $output->setPageTitle( $this->msg( 'watchnologin' ) );
- $output->setRobotPolicy( 'noindex,nofollow' );
- $llink = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Userlogin' ),
- $this->msg( 'loginreqlink' )->escaped(),
- array(),
- array( 'returnto' => $this->getTitle()->getPrefixedText() )
- );
- $output->addHTML( $this->msg( 'watchlistanontext' )->rawParams( $llink )->parse() );
- return;
- }
+ $this->requireLogin( 'watchlistanontext', 'watchnologin' );
// Check permissions
$this->checkPermissions();
return true;
}
-
/**
* Verifies that it's ok to include the uploaded file
*
}
}
-
$handler = MediaHandler::getHandler( $mime );
if ( $handler ) {
$handlerStatus = $handler->verifyUpload( $this->mTempPath );
return false;
}
-
/**
* Check a whitelist of xml encodings that are known not to be interpreted differently
* by the server's xml parser (expat) and some common browsers.
// Get a 0-byte temp file to perform the concatenation at
$tmpFile = TempFSFile::factory( 'chunkedupload_', $ext );
$tmpPath = false; // fail in concatenate()
- if( $tmpFile ) {
+ if ( $tmpFile ) {
// keep alive with $this
$tmpPath = $tmpFile->bind( $this )->getPath();
}
# Initialise common code. This gives us access to GlobalFunctions, the
# AutoLoader, and the globals $wgRequest, $wgOut, $wgUser, $wgLang and
-# $wgContLang, amongst others; it does *not* load $wgTitle
+# $wgContLang, amongst others
require __DIR__ . '/includes/WebStart.php';
$mediaWiki = new MediaWiki();
'lmo' => 'lumbaart', # Lombard
'ln' => 'lingála', # Lingala
'lo' => 'ລາວ', # Laotian
+ 'lrc' => 'لوری', # Northern Luri
'loz' => 'Silozi', # Lozi
'lt' => 'lietuvių', # Lithuanian
'ltg' => 'latgaļu', # Latgalian
*/
class LanguageBs extends Language {
-
/**
* Convert from the nominative form of a noun to some other case
* Invoked with {{GRAMMAR:case|word}}
# Variable for ending
$ending = '';
-
# CHecking if the $word is in plural form
if ( preg_match( '/тæ$/u', $word ) ) {
$word = mb_substr( $word, 0, -1 );
* @ingroup Language
*/
-
/**
* Turkish (Türkçe)
*
# Special:SpecialPages
'specialpages' => 'Laman kusuih',
-'specialpages-note' => '----
-* Laman kusuih lagèë biasa.
+'specialpages-note' => '* Laman kusuih lagèë biasa.
* <span class="mw-specialpagerestricted">Laman kusuih meuhat.</span>',
'specialpages-group-maintenance' => 'Beuneuri thèë plara',
'specialpages-group-other' => "La'én-la'én",
# External editor support
'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [//www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
+'edit-externally-help' => '(انظر [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'الكل',
'mypreferences' => 'Voorkeure',
'prefs-edits' => 'Aantal wysigings:',
'prefsnologin' => 'Nie ingeteken nie',
-'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aanmeld]</span> om voorkeure te kan verander.',
'changepassword' => 'Verander wagwoord',
'prefs-skin' => 'Omslag',
'skin-preview' => 'Voorskou',
'allmessagesdefault' => 'Verstekteks',
'allmessagescurrent' => 'Huidige teks',
'allmessagestext' => "Hier is 'n lys boodskappe wat in die ''MediaWiki''-naamruimte teenwoordig is.
-Gaan na [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [//translatewiki.net translatewiki.net] as u wil help om MediaWiki te vertaal.",
+Gaan na [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [//translatewiki.net translatewiki.net] as u wil help om MediaWiki te vertaal.",
'allmessagesnotsupportedDB' => "Daar is geen ondersteuning vir '''{{ns:special}}:Allmessages''' omdat '''\$wgUseDatabaseMessages''' uitgeskakel is.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtreer op staat van verandering:',
# External editor support
'edit-externally' => "Wysig hierdie lêer met 'n eksterne program",
-'edit-externally-help' => '(Sien [//www.mediawiki.org/wiki/Manual:External_editors instruksies] vir meer inligting)',
+'edit-externally-help' => '(Sien [https://www.mediawiki.org/wiki/Manual:External_editors instruksies] vir meer inligting)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alles',
'version-hook-subscribedby' => 'Gebruik deur',
'version-version' => '(Weergawe $1)',
'version-license' => 'Lisensie',
-'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[//www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.",
+'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[https://www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.",
'version-poweredby-others' => 'andere',
'version-poweredby-translators' => 'translatewiki.net-vertalers',
'version-credits-summary' => 'Ons erken graag die volgende persone vir hul bydrae aan [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Spesiale bladsye',
-'specialpages-note' => '----
-* Normale spesiale bladsye.
+'specialpages-note' => '* Normale spesiale bladsye.
* <span class="mw-specialpagerestricted">Spesiale bladsye met beperkte toegang.</span>
* <span class="mw-specialpagecached">Spesiale bladsye met gegewens uit die kas (kan verouderd wees).</span>',
'specialpages-group-maintenance' => 'Onderhoud verslae',
'mypreferences' => 'Parapëlqimet e mija',
'prefs-edits' => 'Numri i redaktimeve:',
'prefsnologin' => 'Nuk jeni kyçë',
-'prefsnologintext' => 'Duheni me qenë <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} i kyçun]</span> për me i caktue parapëlqimet.',
'changepassword' => 'Ndërrimi i fjalëkalimit',
'prefs-skin' => 'Doka',
'skin-preview' => 'Parapâmja',
# External editor support
'edit-externally' => 'Ndryshoni kët figurë/skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shih [//www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për mâ shumë informata)',
+'edit-externally-help' => '(Shih [https://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për mâ shumë informata)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'krejt',
'mypreferences' => 'ምርጫዎች፤',
'prefs-edits' => 'የለውጦች ቁጥር:',
'prefsnologin' => 'ገና አልገቡም',
-'prefsnologintext' => 'ምርጫዎችዎን ለማስተካከል አስቀድሞ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} መግባት]</span> ያስፈልግዎታል።',
'changepassword' => 'መግቢያ ቃልዎን ለመቀየር',
'prefs-skin' => 'የድህረ-ገጽ መልክ',
'skin-preview' => 'ቅድመ-ዕይታ',
'allmessagesdefault' => 'የቆየው ጽሕፈት',
'allmessagescurrent' => 'ያሁኑ ጽሕፈት',
'allmessagestext' => 'በ«MediaWiki» ክፍለ-ዊኪ ያሉት የድረገጽ መልክ መልእክቶች ሙሉ ዝርዝር ይህ ነው።
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ስለ ተዘጋ '''{{ns:special}}:Allmessages''' ሊጠቀም አይችልም።",
'allmessages-filter-legend' => 'ማጣሪያ',
'allmessages-filter-all' => 'ሁሉ',
# External editor support
'edit-externally' => 'ይህንን ፋይል በአፍአዊ ሶፍትዌር ለማዘጋጀት',
-'edit-externally-help' => '(ለተጨማሪ መረጃ ይህን ገፅ ተመልከቱ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(ለተጨማሪ መረጃ ይህን ገፅ ተመልከቱ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ሁሉ',
'mypreferences' => 'Preferencias',
'prefs-edits' => "Numero d'edicions:",
'prefsnologin' => 'No ye identificato',
-'prefsnologintext' => 'Ha d\'haber <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} encetato una sesión] </span> ta cambiar as preferencias d\'usuario.',
'changepassword' => 'Cambiar a clau',
'prefs-skin' => 'Aparencia',
'skin-preview' => 'Fer una prebatina',
'allmessagesdefault' => 'texto por defecto',
'allmessagescurrent' => 'texto actual',
'allmessagestext' => "Ista ye una lista de totz os mensaches disponibles en o espacio de nombres MediaWiki.
-Vesite por favor [//www.mediawiki.org/wiki/Localisation a pachina sobre localización de MediaWiki] y [//translatewiki.net translatewiki.net] si deseya contrebuyir t'a localización cheneral de MediaWiki.",
+Vesite por favor [https://www.mediawiki.org/wiki/Localisation a pachina sobre localización de MediaWiki] y [//translatewiki.net translatewiki.net] si deseya contrebuyir t'a localización cheneral de MediaWiki.",
'allmessagesnotsupportedDB' => 'Ista pachina no ye disponible porque wgUseDatabaseMessages ye desactivato.',
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar por estau de personalización:',
# External editor support
'edit-externally' => 'Editar iste fichero fendo servir una aplicación externa',
-'edit-externally-help' => '(Ta más información, leiga as [//www.mediawiki.org/wiki/Manual:External_editors instruccions de configuración])',
+'edit-externally-help' => '(Ta más información, leiga as [https://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuración])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'totz',
'version-hook-subscribedby' => 'Suscrito por',
'version-version' => '(Versión $1)',
'version-license' => 'Licencia',
-'version-poweredby-credits' => "Iste wiki funciona gracias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Iste wiki funciona gracias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'atros',
'version-license-info' => "MediaWiki ye software libre, puet redistribuyir-lo y/u modificar-lo baixo os terminos d'a Licencia Publica Cheneral GNU publicada por a Free Software Foundation, ya siga d'a suya versión 2 u (a la suya esleción) qualsiquier versión posterior.
# Special:SpecialPages
'specialpages' => 'Pachinas especials',
-'specialpages-note' => '----
-* Pachinas especials normals.
+'specialpages-note' => '* Pachinas especials normals.
* <strong class="mw-specialpagerestricted">Pachinas especials restrinchitas.</strong>',
'specialpages-group-maintenance' => 'Informes de mantenimiento',
'specialpages-group-other' => 'Atras pachinas especials',
* @author Gott wisst
* @author JJohnson
* @author Omnipaedista
+ * @author Shirayuki
* @author Spacebirdy
* @author Tsepelcory
* @author Wōdenhelm
'exif-gpsdirection-t' => 'Sōþ rihtung',
# External editor support
-'edit-externally-help' => '(Sēon þā [//www.mediawiki.org/wiki/Manual:External_editors gearwunge gewissunga] ymb mā cȳþþe)',
+'edit-externally-help' => '(Sēon þā [https://www.mediawiki.org/wiki/Manual:External_editors gearwunge gewissunga] ymb mā cȳþþe)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'eall',
'mypreferences' => 'تفضيلات',
'prefs-edits' => 'عدد التعديلات:',
'prefsnologin' => 'غير مسجل الدخول',
-'prefsnologintext' => 'يجب أن تكون <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} مسجل الدخول]</span> حتى تتمكن من تعديل تفضيلات المستخدم.',
'changepassword' => 'غير كلمة السر',
'prefs-skin' => 'واجهة',
'skin-preview' => 'عرض مسبق',
'allmessagesdefault' => 'النص الافتراضي',
'allmessagescurrent' => 'النص الحالي',
'allmessagestext' => 'هذه قائمة برسائل النظام المتوفرة في نطاق ميدياويكي.
-من فضلك زر [//www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] و [//translatewiki.net بيتاويكي] لو كنت ترغب في المساهمة في ترجمة ميدياويكي الأساسية.',
+من فضلك زر [https://www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] و [//translatewiki.net بيتاويكي] لو كنت ترغب في المساهمة في ترجمة ميدياويكي الأساسية.',
'allmessagesnotsupportedDB' => "هذه الصفحة لا يمكن استخدامها لأن '''\$wgUseDatabaseMessages''' تم تعطيله.",
'allmessages-filter-legend' => 'المرشح',
'allmessages-filter' => 'رشح حسب حالة التخصيص:',
# External editor support
'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [//www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
+'edit-externally-help' => '(انظر [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'الكل',
'version-version' => '(نسخة $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'الرخصة',
-'version-poweredby-credits' => "تدار هذه الويكي بواسطة '''[//www.mediawiki.org/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.",
+'version-poweredby-credits' => "تدار هذه الويكي بواسطة '''[https://www.mediawiki.org/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.",
'version-poweredby-others' => 'آخرون',
'version-poweredby-translators' => 'مترجمو translatewiki.net',
'version-credits-summary' => 'نود أن نعرف بالأشخاص التالية أسماؤهم لمساهمتهم في [[Special:Version|ميدياويكي]].',
# Special:SpecialPages
'specialpages' => 'الصفحات الخاصة',
-'specialpages-note' => '----
-* صفحات خاصة عادية.
+'specialpages-note' => '* صفحات خاصة عادية.
* <span class="mw-specialpagerestricted">صفحات خاصة للمخولين.</span>
* <span class="mw-specialpagecached">صفحات خاصة لبيانات مخزنة فقط (قد تكون مهجورة).</span>',
'specialpages-group-maintenance' => 'تقارير الصيانة',
# Special:SpecialPages
'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
-'specialpages-note' => '----
-* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
+'specialpages-note' => '* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
'specialpages-group-maintenance' => 'ܬܫܪܪ̈ܐ ܕܚܕܬܘܬܐ',
'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
# External editor support
'edit-externally' => 'Kümeelün tüfachi eltukawün wekun küdauwe mew',
-'edit-externally-help' => '(Pen feychi [//www.mediawiki.org/wiki/Manual:External_editors adtukünun chumngechi pünengeael] doy dungungeam)',
+'edit-externally-help' => '(Pen feychi [https://www.mediawiki.org/wiki/Manual:External_editors adtukünun chumngechi pünengeael] doy dungungeam)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kom',
'mypreferences' => 'Ḫajaṫ li kanfeḍḍel',
'prefs-edits' => 'ĝadad ṫ-ṫĝdilaṫ:',
'prefsnologin' => 'nta mamkoniktich',
-'prefsnologintext' => 'ĥaṣṣk ṫkon <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} daĥol]</span> baċ ṫĝyyer ṫfḍilaṫ l-moṣṫĥdim.',
'changepassword' => 'tbdl lmot de passe',
'prefs-skin' => 'skin',
'skin-preview' => 'L-Prévizualizasyon',
# External editor support
'edit-externally' => 'Ṣayeb had l-fiċyé be ċi aplikasyon ĥarijiya',
-'edit-externally-help' => '(Ċof [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] ila ḫṫajiṫi meĝlomaṫ ĥrin)',
+'edit-externally-help' => '(Ċof [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] ila ḫṫajiṫi meĝlomaṫ ĥrin)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kolċi',
'mypreferences' => 'تفضيلاتى',
'prefs-edits' => 'عدد التعديلات:',
'prefsnologin' => 'مش متسجل',
-'prefsnologintext' => 'لازم تكون <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} مسجل الدخول]</span> علشان تقدر تعدل تفضيلاتك.',
'changepassword' => 'غير الباسورد',
'prefs-skin' => 'الوش',
'skin-preview' => 'بروفه',
'allmessagesdefault' => 'النص الاوتوماتيكي',
'allmessagescurrent' => 'النص دلوقتى',
'allmessagestext' => 'دى لستة برسايل النظام المتوفرة فى نطاق ميدياويكي.
-لو سمحت تزور[//www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] و [//translatewiki.net بيتاويكي] لو كنت عايز تساهم فى ترجمة ميدياويكى الاصلية.',
+لو سمحت تزور[https://www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] و [//translatewiki.net بيتاويكي] لو كنت عايز تساهم فى ترجمة ميدياويكى الاصلية.',
'allmessagesnotsupportedDB' => "الصفحة دى مش يمكن حد يستعملها علشان'''\$wgUseDatabaseMessages''' متعطل.",
'allmessages-filter-legend' => 'فيلتر',
'allmessages-filter' => 'فلتره بحالة التهيئه:',
# External editor support
'edit-externally' => 'استعمل تطبيق من بره علشان تعدل الملف دا',
-'edit-externally-help' => '(بص على [//www.mediawiki.org/wiki/Manual:External_editors تعليمات الاعداد] علشان معلومات اكتر.)',
+'edit-externally-help' => '(بص على [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الاعداد] علشان معلومات اكتر.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'الكل',
# Special:SpecialPages
'specialpages' => 'صفح مخصوصه',
-'specialpages-note' => '----
-* صفحات خاصة عادية.
+'specialpages-note' => '* صفحات خاصة عادية.
* <strong class="mw-specialpagerestricted">صفحات خاصة للناس اللى مسموح لهم.</strong>',
'specialpages-group-maintenance' => 'تقارير الصيانة',
'specialpages-group-other' => 'صفحات خاصه تا نيه',
'articlepage' => 'সমল পৃষ্ঠা চাওক',
'talk' => 'আলোচনা',
'views' => 'দৰ্শন',
-'toolbox' => 'সা-সৰà¦\9eà§\8dà¦\9cাম',
+'toolbox' => 'সà¦\81à¦\9cà§\81লিসমà§\82হ',
'userpage' => 'সদস্য পৃষ্ঠা চাওক',
'projectpage' => 'প্ৰকল্প পৃষ্ঠা চাওক',
'imagepage' => 'নথি পৃষ্ঠা চাওক',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => '{{SITENAME}}ৰ বিষয়ে',
'aboutpage' => 'Project:ইতিবৃত্ত',
-'copyright' => 'এই বিষয়বস্তু $1 ৰ আওতাত উপলব্ধ।',
+'copyright' => 'à¦\86ন à¦\8fà¦\95à§\8b à¦\89লà§\8dলà§\87à¦\96 নাথাà¦\95িলà§\87 à¦\8fà¦\87 বিষয়বসà§\8dতà§\81 $1 ৰ à¦\86à¦\93তাত à¦\89পলবà§\8dধ।',
'copyrightpage' => '{{ns:project}}:স্বত্ব',
'currentevents' => 'সাম্প্ৰতিক ঘটনাৱলী',
'currentevents-url' => 'Project:শেহতীয়া ঘটনাৱলী',
'databaseerror-text' => "এটা ডেটাবে'ছ কুৱেৰী ত্ৰুটি হৈছে।
ইয়ে ছফ্টৱেৰটোত কিবা বাগ্ থকাটো সূচাব পাৰে।",
'databaseerror-textcl' => "এটা ডেটাবে'ছ কুৱেৰী ত্ৰুটি হৈছে।",
+'databaseerror-query' => 'অনুসন্ধান: $1',
'databaseerror-function' => 'ফাংচন: $1',
'databaseerror-error' => 'ত্ৰুটি: $1',
'laggedslavemode' => 'সাৱধানবাণী: ইয়াত সাম্প্ৰতিক সাল-সলনি নাথাকিব পাৰে',
'gotaccount' => "আপুনি সদস্য হয়নে? '''$1'''",
'gotaccountlink' => 'প্ৰৱেশ',
'userlogin-resetlink' => 'আপোনাৰ প্ৰৱেশ তথ্য পাহৰিছে?',
-'userlogin-resetpassword-link' => 'à¦\86পà§\8bনাৰ à¦\97à§\81পà§\8dতশবà§\8dদ ন-à¦\95à§\88 বহà§\81ৱাà¦\93à¦\95',
+'userlogin-resetpassword-link' => 'à¦\86পà§\8bনাৰ à¦\97à§\81পà§\8dতশবà§\8dদ পাহৰিà¦\9bà§\87?',
'helplogin-url' => 'Help:প্ৰৱেশ/লগ্-ইন',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|প্ৰৱেশ সম্পৰ্কীয় সাহায্য]]',
+'userlogin-loggedin' => 'আপুনি ইতিমধ্যে {{GENDER:$1|$1}} হিচাপে প্ৰৱেশ কৰিছে। তলৰ আন সদস্যৰূপে প্ৰৱেশ কৰিবলৈ তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰক।',
+'userlogin-createanother' => 'আন এটা একাউণ্ট সৃষ্টি কৰক',
'createacct-join' => 'আপোনাৰ তথ্যসমূহ তলত লিখক।',
'createacct-another-join' => 'নতুন একাউণ্টৰ তথ্যসমূহ তলত লিখক।',
'createacct-emailrequired' => 'ই-মেইল ঠিকনা',
'noemailcreate' => 'আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব',
'passwordsent' => '"$1" ৰ ই-মেইল ঠিকনাত নতুন গুপ্তশব্দ এটা পঠোৱা হৈছে। অনুগ্ৰহ কৰি সেয়া পোৱাৰ পাছত পুনৰ প্ৰৱেশ কৰক।',
'blocked-mailpassword' => 'আপোনাৰ আইপি ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।',
-'eauthentsent' => 'সà¦\9eà§\8dà¦\9aিত à¦\87-মà§\87à¦\87ল ঠিà¦\95নাত নিশà§\8dà¦\9aিতà¦\95ৰণ à¦\87-মà§\87à¦\87ল à¦\8fà¦\96ন পঠà§\8bৱা হৈছে।
-à¦\86ৰà§\81 à¦\85নà§\8dযানà§\8dয à¦\87-মà§\87à¦\87ল পঠà§\8bৱাৰ à¦\86à¦\97তà§\87, à¦\86পà§\8bনাৰ সদসà§\8dযতাৰ নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।',
+'eauthentsent' => 'সà¦\9eà§\8dà¦\9aিত à¦\87-মà§\87à¦\87ল ঠিà¦\95নালà§\88 নিশà§\8dà¦\9aিতà¦\95ৰণ à¦\87-মà§\87à¦\87ল à¦\8fà¦\96ন পঠিà¦\93ৱা হৈছে।
+à¦\8fà¦\95াà¦\89ণà§\8dà¦\9fà¦\9fà§\8bলà§\88 à¦\86ন à¦\87-মà§\87à¦\87ল পঠিà¦\93ৱাৰ à¦\86à¦\97তà§\87 à¦\86পà§\8bনাৰ সদসà§\8dযতা নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।',
'throttled-mailpassword' => "যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এখন গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হৈছে।
অবৈধ ব্যৱহাৰ ৰোধ কৰিবলৈ প্ৰতি {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এবাৰহে গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হ'ব।",
'mailerror' => 'ই-মেইল পঠিওৱাত সমস্যা হৈছে: $1',
'acct_creation_throttle_hit' => 'যোৱা ২৪ ঘন্টাত আপোনাৰ আই-পি ঠিকনাৰ পৰা এই ৱিকিৰ পঢ়োঁতাই {{PLURAL:$1|১-টা একাউন্ট|$1-টা একাউন্ট}} সৃষ্টি কৰিলে, যিটো সৰ্বোচ্চ অনুমোদনকৃত ।
এতেকে, এই আই-পি ঠিকনাৰ পৰা এই মূহুৰ্তত একাউন্ট সৃষ্টি কৰিব নোৱাৰিব ।',
-'emailauthenticated' => 'আপোনাৰ ই-মেইল ঠিকনাটো $2 তাৰিখৰ $3 বজাত নিশ্চিত কৰা হৈছিল ।',
-'emailnotauthenticated' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল ঠিà¦\95নাতà§\8b à¦\8fতিয়ালà§\88 পà§\8dৰমাণিত হà§\8bৱা নাà¦\87 ।
-à¦\86পà§\81নি তলৰ বিষয়বà§\8bৰৰ à¦\95াৰণà§\87 মà§\87à¦\87ল পঠাব নà§\8bৱাৰà§\87 ।',
+'emailauthenticated' => 'আপোনাৰ ই-মেইল ঠিকনাটো $2 তাৰিখৰ $3 বজাত নিশ্চিত কৰা হৈছিল।',
+'emailnotauthenticated' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল ঠিà¦\95নাতà§\8b à¦\8fতিয়ালà§\88 নিশà§\8dà¦\9aিত হà§\8bৱা নাà¦\87।
+à¦\86পà§\81নি তলৰ বিষয়বà§\8bৰৰ à¦\95াৰণà§\87 মà§\87à¦\87ল পঠিয়াব নà§\8bৱাৰà§\87।',
'noemailprefs' => 'এই সুবিধাবোৰ ব্যৱহাৰ কৰিবলৈ এটা ই-মেইল ঠিকনা দিয়ক।',
'emailconfirmlink' => 'আপোনাৰ ই-মেইল ঠিকনাটো প্ৰমাণিত কৰক',
'invalidemailaddress' => 'এই ই-মেইল ঠিকনাতো গ্ৰহনযোগ্য নহয়, কাৰণ ই অবৈধ প্ৰকাৰৰ যেন লাগিছে।
# Special:PasswordReset
'passwordreset' => 'গুপ্তশব্দ ন-কৈ বহুৱাওক',
'passwordreset-text-one' => 'আপোনাৰ গুপ্তশব্দ ন-কৈ বহুৱাবলৈ এই প্ৰপত্ৰ পূৰণ কৰক।',
+'passwordreset-text-many' => '{{PLURAL:$1|আপোনাৰ গুপ্তশব্দ ন-কৈ বহুৱাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
'passwordreset-legend' => 'গুপ্তশব্দ ন-কৈ বহাওক',
'passwordreset-disabled' => 'এই ৱিকিত গুপ্তশব্দ নবীকৰণ নিষ্ক্ৰিয় কৰা হৈছে ।',
'passwordreset-emaildisabled' => 'এই ৱিকিত ই-মেইল বৈশিষ্টসমূহ নিষ্ক্ৰিয় কৰা হৈছে।',
# Special:ResetTokens
'resettokens' => "ট'কেন ৰিছে'ট কৰক",
+'resettokens-text' => "আপোনাৰ একাউণ্টৰ সৈতে জড়িত কিছুমান ব্যক্তিগত তথ্য চাবলৈ আপুনি ট'কেন ৰিছে'ট কৰিব পাৰে।
+
+আপুনি দুৰ্ঘটনাবশতঃ আন কাৰোবাক সেই ট'কেন দিলে বা আপোনাৰ একাউণ্টৰ বিসংগতি হ'লে আপুনি এনে কৰাটো উচিত।",
+'resettokens-no-tokens' => "ৰিছে'ট কৰিবলৈ কোনো ট'কেন নাই।",
+'resettokens-legend' => "ট'কেন ৰিছে'ট কৰক",
+'resettokens-tokens' => "ট'কেনসমূহ:",
+'resettokens-token-label' => '$1 (বর্তমান: $2)',
+'resettokens-done' => "ট'কেন ৰিছে'ট কৰা হ'ল।",
+'resettokens-resetbutton' => "নিৰ্বাচিত ট'কেনসমূহ ৰিছে'ট কৰক",
# Edit page toolbar
'bold_sample' => 'গাঢ় পাঠ্য',
'loginreqlink' => 'প্ৰৱেশ',
'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।',
'accmailtitle' => "গুপ্তশব্দ পঠোৱা হ'ল।",
-'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল ।
-à¦\8fà¦\87 নতà§\81ন à¦\8fà¦\95াà¦\89নà§\8dà¦\9fত পà§\8dৰৱà§\87শ à¦\95ৰি ''[[Special:ChangePassword|à¦\97à§\81পà§\8dতশবà§\8dদ সলনি à¦\95ৰà¦\95]]'' পà§\83ষà§\8dঠাà¦\96নত à¦\97à§\81পà§\8dতশবà§\8dদতà§\8b সলনি à¦\95ৰি লâ\80\99ব পাৰিব ।",
+'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিকভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল ।
+এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত শব্দতো সলনি কৰি ল’ব পাৰিব ।",
'newarticle' => '(নতুন)',
'newarticletext' => "আপুনি বিচৰা প্ৰবন্ধটো বিচাৰি পোৱা নগ'ল।
'nocreate-loggedin' => 'নতুন পৃষ্ঠা সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
'sectioneditnotsupported-title' => 'অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই',
'sectioneditnotsupported-text' => 'এই পৃষ্ঠাত অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই',
-'permissionserrors' => 'à¦\85নà§\81মতি à¦à§\81লসমà§\82হ',
+'permissionserrors' => 'à¦\85নà§\81মà§\8bদন তà§\8dৰà§\81à¦\9fি',
'permissionserrorstext' => "আপোনাৰ এই কামটো কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:",
'permissionserrorstext-withaction' => "আপোনাৰ $2 কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:",
'recreate-moveddeleted-warn' => "'''সাৱধান: আগতে বিলোপ কৰা পৃষ্ঠা এটা আপুনি পুনঃনিৰ্মাণ কৰি আছে। '''
'undo-failure' => "এই সম্পাদনা মধ্যৱৰ্তী সম্পাদনাসমূহৰ দ্বন্দৰ কাৰণে পূৰ্ববৎ কৰা নহ'ব ।",
'undo-norev' => "এই সম্পাদনাটি ৰদ কৰিব নোৱাৰি, কাৰণ ই আৰু নাই বা ইয়াক বাতিল কৰা হ'ল ।",
'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|আলোচনা]]) সম্পাদিত $1 সংশোধনটি বাতিল কৰক',
+'undo-summary-username-hidden' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা $1 সংশোধন বাতিল কৰক',
# Account creation failure
'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব",
'revdelete-suppress-text' => "নিবাৰণ '''কেৱল''' তলত দিয়া কাৰণসমূহত ব্যৱহৃত হ’ব:
* সম্ভাব্য ক্ষতিকাৰক তথ্য
* অনুপযুক্ত ব্যক্তিগত তথ্য
-* : ''à¦\98ৰৰ ঠিà¦\95না à¦\86ৰà§\81 à¦\9fà§\87লিফà§\8bন সà¦\82à¦\96à§\8dযা, সামাà¦\9cিà¦\95 সà§\81ৰà¦\95à§\8dষা সংখ্যা, আদি । ''",
+* : ''à¦\98ৰৰ ঠিà¦\95না à¦\86ৰà§\81 à¦\9fà§\87লিফà§\8bন সà¦\82à¦\96à§\8dযা, ৰাষà§\8dà¦\9fà§\8dৰà§\80য় পৰিà¦\9aয় সংখ্যা, আদি । ''",
'revdelete-legend' => 'দৃষ্টিপাত সীমাবদ্ধ কৰক',
-'revdelete-hide-text' => 'সংশোধিত পাঠ গোপন কৰক',
+'revdelete-hide-text' => 'সংশোধিত পাঠ',
'revdelete-hide-image' => 'ফাইলৰ বিষয়বস্তু গোপন কৰক',
'revdelete-hide-name' => 'কাৰ্য আৰু লক্ষ্য গোপন কৰক',
-'revdelete-hide-comment' => 'সম্পাদনা সাৰাংশ গোপন কৰক',
-'revdelete-hide-user' => 'সম্পাদকৰ সদস্যনাম/আই-পি ঠিকনা গোপন কৰক',
+'revdelete-hide-comment' => 'সম্পাদনা সাৰাংশ',
+'revdelete-hide-user' => 'সম্পাদকৰ সদস্যনাম/আই-পি ঠিকনা',
'revdelete-hide-restricted' => 'প্ৰশাসকবৃন্দৰ লগতে আনৰ পৰাও তথ্য ৰোধ কৰক',
'revdelete-radio-same' => '(সলনি নকৰিব)',
-'revdelete-radio-set' => 'হয়',
-'revdelete-radio-unset' => 'নহয়',
+'revdelete-radio-set' => 'à¦\97à§\8bপন',
+'revdelete-radio-unset' => 'দà§\83শà§\8dযমান',
'revdelete-suppress' => 'প্ৰশাসকবৃন্দৰ লগতে আনৰ পৰাও তথ্য ৰোধ কৰক',
'revdelete-unsuppress' => 'পুনৰ্স্থাপন কৰা সংশোধনসমূহৰ সীমাবদ্ধতা আতৰাওক',
'revdelete-log' => 'কাৰণ:',
'compareselectedversions' => 'নিৰ্বাচিত কৰা সংকলন সমূহৰ মাজত পাৰ্থক্য চাওক',
'showhideselectedversions' => 'নিৰ্বাচিত সংশোধনসমূহ দেখুৱাওক/আঁৰ কৰক',
'editundo' => 'পূৰ্ববত কৰক',
+'diff-empty' => '(কোনো পাৰ্থক্য নাই)',
'diff-multi' => '({{PLURAL:$2|এজন সদস্যৰ|$2জন সদস্যৰ}} দ্বাৰা {{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1-টা মধ্যৱৰ্তী সংশোধন}} দেখোৱা হোৱা নাই)',
'diff-multi-manyusers' => '({{PLURAL:$2|এজনতকৈ|$2-জনতকৈ}} অধিক সদস্যৰ দ্বাৰা {{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1-টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই)',
'difference-missing-revision' => '{{PLURAL:$2|এটা সংস্কৰণ|$2 সংস্কৰণসমূহৰ}} সংশোধনৰ পাৰ্থক্য ($1) {{PLURAL:$2| পোৱা নগ’ল}}।
'mypreferences' => 'পছন্দসমূহ',
'prefs-edits' => 'সম্পাদনাৰ সংখ্যা:',
'prefsnologin' => 'প্ৰৱেশ কৰা নাই',
-'prefsnologintext' => 'আপোনাৰ পছন্দ সলনি কৰিবলৈ হ’লে <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} প্ৰৱেশ]</span> কৰাতো আৱশ্যক।',
'changepassword' => 'গুপ্তশব্দ সলনি কৰক',
'prefs-skin' => 'আৱৰণ',
'skin-preview' => 'খচৰা',
'prefs-rendering' => 'ৰূপ',
'saveprefs' => 'সাঁচি থওক',
'resetprefs' => 'অসঞ্চিত সাল-সলনি বাতিল কৰক',
-'restoreprefs' => 'সকলো পূৰ্বনিৰ্ধাৰিত ছেটিং ঘূৰাই আনক',
+'restoreprefs' => 'সকলো পূৰ্বনিৰ্ধাৰিত ছেটিং ঘূৰাই আনক (সকলো ছেক্শ্যনতে)',
'prefs-editing' => 'সম্পাদন',
'rows' => 'পথালী শাৰী:',
'columns' => 'ঠিয় শাৰী:',
'recentchangesdays-max' => 'সৰ্বোচ্চ $1 {{PLURAL:$1|দিন|দিন}}',
'recentchangescount' => 'শেহতীয়া সাল-সলনি, ইতিহাস আৰু লগ পৃষ্ঠাত দেখুৱাব লগা সম্পাদনাৰ সংখ্যা:',
'prefs-help-recentchangescount' => 'ইয়াত শেহতীয়া সাল-সলনি, পৃষ্ঠাৰ ইতিহাস আৰু লগ অন্তৰ্ভুক্ত ।',
+'prefs-help-watchlist-token2' => "এইটো আপোনাৰ লক্ষ্য-তালিকাৰ ৱেব্ ফীডৰ গোপন চাবি। এইটো জনা লোকে আপোনাৰ লক্ষ্য-তালিকা পঢ়িবলৈ সমৰ্থ হ'ব। গতিকে ইয়াক আনৰ আগত প্ৰকাশ নকৰিব।
+[[Special:ResetTokens|এইটো ৰিছে'ট কৰিবলৈ ইয়াত ক্লিক কৰক।]].",
'savedprefs' => 'আপোনাৰ পছন্দসমূহ সাঁচি ৰখা হ’ল।',
'timezonelegend' => 'সময় স্থান:',
'localtime' => 'স্থানীয় সময়:',
'badsig' => 'অনুপযোগী স্বাক্ষ্যৰ, HTML টেগ পৰীক্ষা কৰি লওক।',
'badsiglength' => 'আপোনাৰ স্বাক্ষৰ অত্যাধিক দীঘলীয়া ।
আপোনাৰ স্বাক্ষৰ {{PLURAL:$1|এটা আখৰৰ|টা আখৰৰ}} বেছি হ’ব নালাগে ।',
-'yourgender' => 'লিঙ্গ:',
-'gender-unknown' => 'অনিধাৰ্য্য',
-'gender-male' => 'পুৰুষ',
-'gender-female' => 'মহিলা',
-'prefs-help-gender' => 'বৈকল্পিক: ছফ্টৱেৰৰ দ্বাৰা কৰা সম্বোধনৰ লিংগ-শুদ্ধতাৰ বাবে ব্যৱহৃত ।
-এই তথ্য ৰাজহুৱা কৰা হ’ব ।',
+'yourgender' => 'আপুনি কিদৰে নিজৰ বৰ্ণনা দিবলৈ ভাল পাব?',
+'gender-unknown' => "মই ক'বলৈ বিচৰা নাই",
+'gender-male' => 'তেওঁ (পুৰুষ) ৱিকি পৃষ্ঠা সম্পাদনা কৰে',
+'gender-female' => 'তেওঁ (মহিলা) ৱিকি পৃষ্ঠা সম্পাদনা কৰে',
+'prefs-help-gender' => "এই পছন্দ ছে'ট কৰাটো বৈকল্পিক।
+এই ছফ্টৱেৰে আপোনাক সম্বোধন কৰিবলৈ আৰু আনৰ আগত আপোনাৰ উল্লেখ কৰিবলৈ উপযুক্ত ব্যাকৰণগত লিংগ ব্যৱহাৰ কৰিব পাৰে।
+এই তথ্য ৰাজহুৱা কৰা হ’ব ।",
'email' => 'ই-মেইল',
'prefs-help-realname' => 'আপোনাৰ আচল নাম দিয়াতো জৰুৰী নহয়, কিন্তু দিলে আপোনাৰ কামবোৰ আপোনাৰ নামত দেখুওৱা হব।',
'prefs-help-email' => 'ই-মেইল ঠিকনা দিয়াটো বৈকল্পিক, কিন্তু আপুনি গুপ্তশব্দ পাহৰি গ’লে ন-কৈ বহুৱাবৰ বাবে ই প্ৰয়োজনীয়।',
'prefs-signature' => 'স্বাক্ষৰ',
'prefs-dateformat' => 'তাৰিখ বিন্যাস',
'prefs-timeoffset' => 'সময় অফচেট',
-'prefs-advancedediting' => 'উচ্চতৰ বিকল্পসমূহ',
+'prefs-advancedediting' => 'সাধাৰণ বিকল্পসমূহ',
+'prefs-editor' => 'সম্পাদক',
+'prefs-preview' => 'প্ৰাক্দৰ্শন',
'prefs-advancedrc' => 'উচ্চতৰ বিকল্পসমূহ',
'prefs-advancedrendering' => 'উচ্চতৰ বিকল্পসমূহ',
'prefs-advancedsearchoptions' => 'উচ্চতৰ বিকল্পসমূহ',
'prefs-displayrc' => 'প্ৰদৰ্শন বিকল্পসমূহ',
'prefs-displaysearchoptions' => 'বিকল্পসমূহ প্ৰদৰ্শন কৰক',
'prefs-displaywatchlist' => 'বিকল্পসমূহ প্ৰদৰ্শন কৰক',
+'prefs-tokenwatchlist' => "ট'কেন",
'prefs-diffs' => 'পাৰ্থক্য',
+'prefs-help-prefershttps' => "আপোনাৰ পৰৱৰ্তী প্ৰৱেশত এই পছন্দ কাৰ্যকৰী হ'ব।",
# User preference: email validation using jQuery
'email-address-validity-valid' => 'ই-মেইল ঠিকনাটো সঠিক',
'userrights-no-interwiki' => 'আপোনাৰ অন্য ৱিকিত সদস্যৰ অধিকাৰ সম্পাদনা কৰাৰ অনুমতি নাই',
'userrights-nodatabase' => '$1 তথ্যকোষৰ কোনো অস্তিত্ব নাই অথবা ই স্থানীয় নহয় ।',
'userrights-nologin' => 'সদস্যৰ অধিকাৰ নিৰূপণ কৰিবলৈ আপুনি কোনো প্ৰশাসকৰ একাউণ্টৰ জৰিয়তে [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
-'userrights-notallowed' => 'সদসà§\8dযৰ à¦\85ধিà¦\95াৰ যà§\8bà¦\97 à¦\95ৰিবলà§\88 বা à¦\86à¦\81তৰ à¦\95ৰিবলà§\88 à¦\86পà§\8bনাৰ à¦\8fà¦\95াà¦\89ণà§\8dà¦\9fৰ অনুমতি নাই ।',
+'userrights-notallowed' => 'সদসà§\8dযৰ à¦\85ধিà¦\95াৰ যà§\8bà¦\97 বা à¦\86à¦\81তৰ à¦\95ৰিবলà§\88 à¦\86পà§\8bনাৰ অনুমতি নাই ।',
'userrights-changeable-col' => 'আপুনি সলনি কৰিব পৰা গোটসমূহ',
'userrights-unchangeable-col' => 'আপুনি সলনি কৰিব নোৱাৰা গোটসমূহ',
-'userrights-conflict' => 'সদসà§\8dয à¦\85ধিà¦\95াৰ দà§\8dবনà§\8dদà§\8dব! à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦\86পà§\8bনাৰ সালসলনি à¦\86à¦\95à§\8c à¦\8fবাৰ পà§\8dৰয়à§\8bà¦\97 কৰক।',
+'userrights-conflict' => 'সদসà§\8dয à¦\85ধিà¦\95াৰ সালসলনিৰ দà§\8dবনà§\8dদà§\8dব! à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি পà§\81নৰাà¦\87 à¦\9aà¦\95à§\81 ফà§\81ৰাà¦\87 à¦\86পà§\8bনাৰ সালসলনি নিশà§\8dà¦\9aিত কৰক।',
'userrights-removed-self' => 'আপুনি সফলতাৰে নিজৰ অধিকাৰসমূহ আঁতৰ কৰিলে। গতিকে আপুনি এতিয়া এই পৃষ্ঠা চাব নোৱাৰে।',
# Groups
'right-reupload-shared' => 'উমৈহতীয়া মিডিয়া ভঁৰালত থকা ফাইলসমূহ স্থানীয়ভাৱে উপেক্ষা কৰক ।',
'right-upload_by_url' => "ইউ-আৰ-এলৰ পৰা ফাইল আপল'ড কৰক",
'right-purge' => 'চাইট কেচৰ পৰা নিশ্চয়তা নোহোৱা পৃষ্ঠা মচি পেলাওক ।',
-'right-autoconfirmed' => 'à¦\85ৰà§\8dদà§\8dধ-সà§\81ৰà¦\95à§\8dষিত পà§\83ষà§\8dঠা সমà§\8dপাদনা à¦\95ৰà¦\95',
+'right-autoconfirmed' => 'à¦\86à¦\87-পি à¦à¦¿à¦¤à§\8dতিà¦\95 à¦\97তি সà§\80মাৰ দà§\8dবাৰা পà§\8dৰà¦à¦¾à§±à¦¿à¦¤ নহâ\80\99ব',
'right-bot' => 'স্বয়ংক্ৰিয় প্ৰক্ৰিয়া হিচাপে ব্যৱহৃত হওক',
'right-nominornewtalk' => 'আলোচনা পৃষ্ঠাৰ লঘূ সম্পাদনা হওঁতে নতুন সদস্য বাৰ্তা নালাগে',
'right-apihighlimits' => 'API প্ৰশ্নৰ বাবে উচ্চতৰ সীমা ব্যৱহাৰ কৰক',
'right-ipblock-exempt' => 'আই.পি. প্ৰতিবন্ধক, অট’-প্ৰতিবন্ধক আৰু ৰে’ঞ্জ-প্ৰতিবন্ধক এৰাই চলক',
'right-proxyunbannable' => 'প্ৰক্সীৰ স্বয়ংক্ৰিয় প্ৰতিবন্ধক এৰাই চলক',
'right-unblockself' => 'আপোনা-আপুনি খোলা',
-'right-protect' => 'সà§\81ৰà¦\95à§\8dষাৰ মাতà§\8dৰা পৰিৱৰà§\8dতন à¦\95ৰà¦\95 à¦\86ৰà§\81 সুৰক্ষিত পৃষ্ঠাসমূহ সম্পাদনা কৰক',
+'right-protect' => 'সà§\81ৰà¦\95à§\8dষাৰ সà§\8dতৰ পৰিৱৰà§\8dতন à¦\95ৰà¦\95 à¦\86ৰà§\81 পà§\8dৰপাতাà¦\95াৰ-সুৰক্ষিত পৃষ্ঠাসমূহ সম্পাদনা কৰক',
'right-editprotected' => 'সুৰক্ষিত পৃষ্ঠা (কেশ্বকেডিঙ সুৰক্ষাৰ অবিহনে) সম্পাদনা কৰক',
'right-editinterface' => 'সদস্যৰ ইণ্টাৰফে’চ সম্পাদনা কৰক',
'right-editusercssjs' => 'আন সদস্যৰ CSS আৰু JavaScript সম্পাদনা কৰক',
'rc_categories_any' => 'যিকোনো',
'rc-change-size-new' => 'সালসলনিৰ পিছত $1 {{PLURAL:$1|বাইট|বাইট}}',
'newsectionsummary' => '/* $1 */ নতুন অনুচ্ছেদ',
-'rc-enhanced-expand' => 'সবিশেষ দেখুৱাওক (জাভাস্ক্ৰিপ্টৰ প্ৰয়োজন)',
+'rc-enhanced-expand' => 'সবিশেষ দেখুৱাওক',
'rc-enhanced-hide' => 'সবিশেষ লুকুৱাওক',
'rc-old-title' => 'পূৰ্বে "$1" নামেৰে সৃষ্ট',
'listfiles_size' => 'আকাৰ',
'listfiles_description' => 'বিৱৰণ',
'listfiles_count' => 'সংস্কৰণ',
+'listfiles-latestversion-yes' => 'হয়',
+'listfiles-latestversion-no' => 'নহয়',
# File description page
'file-anchor-link' => 'চিত্ৰ',
'randompage' => 'যিকোনো পৃষ্ঠা',
'randompage-nopages' => 'তলত দিয়া {{PLURAL:$2|নামস্থানত|নামস্থানসমূহত}} কোনো পৃষ্ঠা নাই: $1 ।',
+# Random page in category
+'randomincategory' => 'শ্ৰেণীৰ যিকোনো পৃষ্ঠা',
+
# Random redirect
'randomredirect' => 'অনিৰ্ধাৰিত পুননিৰ্দেশ',
'randomredirect-nopages' => '"$1" নামস্থানত কোনো পুননিৰ্দেশ নাই ।',
'contributions' => '{{GENDER:$1|সদস্যৰ}} বৰঙণিসমূহ',
'contributions-title' => '$1ৰ বৰঙণিসমূহ',
'mycontris' => 'বৰঙণিসমূহ',
-'contribsub2' => '$1 ৰ কাৰণে ($2)',
+'contribsub2' => '{{GENDER:$3|$1}} ($2)ৰ কাৰণে',
'nocontribs' => 'এই গুণসমূহৰ লগত মিল থকা কোনো সালসলনি পোৱা নগ’ল ।',
'uctop' => '(বৰ্তমান)',
'month' => 'এই মাহৰ পৰা (আৰু আগৰ):',
'allmessagesdefault' => 'সাধাৰণ বাৰ্তা পাঠ্য',
'allmessagescurrent' => 'বৰ্তমানৰ বাৰ্তাৰ পাঠ',
'allmessagestext' => 'মিডিয়াৱিকি নামস্থানত থকা প্ৰণালী বাৰ্তাসমূহৰ তালিকা ইয়াত দিয়া হৈছে ।
-যদি আপুনি মিডিয়াৱিকিৰ স্থানীয়কৰণত আগ্ৰহী, তেন্তে অনুগ্ৰহ কৰি [//www.mediawiki.org/wiki/Localisation মিডিয়াৱিকি স্থানীয়কৰণ] আৰু [//translatewiki.net translatewiki.net] চাওক ।',
+যদি আপুনি মিডিয়াৱিকিৰ স্থানীয়কৰণত আগ্ৰহী, তেন্তে অনুগ্ৰহ কৰি [https://www.mediawiki.org/wiki/Localisation মিডিয়াৱিকি স্থানীয়কৰণ] আৰু [//translatewiki.net translatewiki.net] চাওক ।',
'allmessagesnotsupportedDB' => "এই পৃষ্ঠা ব্যৱহাৰ কৰিব নোৱাৰি কাৰণ '''\$wgUseDatabaseMessages''' নিষ্ক্ৰিয় কৰা হৈছে ।",
'allmessages-filter-legend' => 'ছেকনী',
'allmessages-filter' => 'স্বনিৰ্বাচন অৱস্থাৰে পৰিস্ৰাৱন কৰক:',
'svg-long-desc' => 'SVG ফাইল, সাধাৰণতঃ $1 × $2 পিক্সেল, ফাইল মাত্ৰা: $3',
'svg-long-desc-animated' => 'এনিমেটেড SVG ফাইল, সাধাৰণতে $1 × $2 পিক্সেল, ফাইলৰ আকাৰ: $3',
'svg-long-error' => 'অবৈধ SVG ফাইল: $1',
-'show-big-image' => "সম্পূৰ্ণ ৰিজ'লিউশ্যন",
+'show-big-image' => 'মূল ফাইল',
'show-big-image-preview' => 'এই খচৰাৰ আকাৰ: $1.',
'show-big-image-other' => "আন {{PLURAL:$2|ৰিজ'লিউশ্যন|ৰিজ'লিউশ্যনসমূহ}}: $1।",
'show-big-image-size' => '$1 × $2 পিক্সেল',
# External editor support
'edit-externally' => 'বাহিৰা আহিলা ব্যৱহাৰ কৰি এই ফাইলটো সম্পাদনা কৰক ।',
-'edit-externally-help' => 'অধিক তথ্যৰ কাৰণে [//www.mediawiki.org/wiki/Manual:External_editors প্ৰস্তুত কৰা নিৰ্দেশনা] চাওক ।',
+'edit-externally-help' => 'অধিক তথ্যৰ কাৰণে [https://www.mediawiki.org/wiki/Manual:External_editors প্ৰস্তুত কৰা নিৰ্দেশনা] চাওক ।',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'সকলো',
'version-hook-subscribedby' => 'চাবস্ক্ৰাইব কৰিছে',
'version-version' => '(সংস্কৰণ $1)',
'version-license' => 'অনুজ্ঞাপত্ৰ',
-'version-poweredby-credits' => "এই ৱিকি '''[//www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
+'version-poweredby-credits' => "এই ৱিকি '''[https://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
'version-poweredby-others' => 'অন্য',
'version-credits-summary' => 'আমি নিম্নোক্ত ব্যক্তিসকলক তেওঁলোকে [[Special:Version|মিডিয়াৱিকি]]লৈ দিয়া দিয়া বৰঙনিৰ বাবে চিনাকী কৰিব বিচাৰিছো।',
'version-license-info' => "মিডিয়াৱিকি এটা বিনামূলীয়া চফ্টৱেৰ; আপুনি Free Software Foundation -ৰ দ্বাৰা প্ৰকাশিত GNU General Public License -ৰ চুক্তিসমূহৰ অন্তৰ্গত ইয়াক পুনৰ বিতৰণ কৰিব পাৰিব অথবা সলনি কৰিব পাৰিব; হয়তো অনুজ্ঞাপত্ৰৰ সংস্কৰণ ২
# Special:SpecialPages
'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
-'specialpages-note' => '----
-* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
+'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
* <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
'tags-tag' => 'টেগ নাম',
'tags-display-header' => 'পৰিৱৰ্তন তালিকাসমূহত ৰূপ',
'tags-description-header' => 'অৰ্থৰ পূৰ্ণ বৰ্ণনা',
+'tags-active-header' => 'সক্ৰিয়?',
'tags-hitcount-header' => 'টেগকৃত সালসলনি',
+'tags-active-yes' => 'হয়',
+'tags-active-no' => 'নহয়',
'tags-edit' => 'সম্পাদনা',
'tags-hitcount' => '$1 {{PLURAL:$1|সাল-সলনি|সাল-সলনিসমূহ}}',
'dberr-problems' => 'দুঃখিত! চাইটটোত কিছু কাৰিকৰী সমস্যা হৈছে ।',
'dberr-again' => "অলপ সময় অপেক্ষা কৰি পুনৰ আপল'ডৰ চেষ্টা কৰক ।",
'dberr-info' => '(তথ্যকোষৰ চাৰ্ভাৰৰ লগত যোগাযোগ কৰিব নোৱাৰি: $1)',
+'dberr-info-hidden' => '(তথ্যকোষৰ চাৰ্ভাৰৰ লগত যোগাযোগ কৰিব নোৱাৰি)',
'dberr-usegoogle' => 'এই পৰিস্থিতিত আপুনি গুগলৰ মাধ্যমেৰে অনুসন্ধান কৰিব পাৰে ।',
'dberr-outofdate' => "মন কৰক যে, আমাৰ বিষয়বস্তু সম্পৰ্কে তেওঁলোকৰ সূচী পুৰণা হ'ব পাৰে ।",
'dberr-cachederror' => "এইখন অনুৰোধ কৰা পৃষ্ঠাৰ কেচ্ড লিপি, যিখন নবীকৰণ নকৰাও হ'ব পাৰে ।",
'invalidtitle-knownnamespace' => "Títulu inválidu col espaciu de nomes «$2» ya'l testu «$3»",
'invalidtitle-unknownnamespace' => "Títulu inválidu col númberu $1 d'espaciu de nomes desconocíu ya'l testu «$2»",
'exception-nologin' => 'Nun anició sesión',
-'exception-nologin-text' => "Esta páxina o aición necesita qu'anicies sesión nesta wiki.",
+'exception-nologin-text' => 'Por favor, [[Special:Userlogin|anicie sesión]] pa tener accesu a esta páxina o aición.',
+'exception-nologin-text-manual' => 'Por favor, $1 pa tener accesu a esta páxina o aición.',
# Virus scanner
'virus-badscanner' => "Fallu de configuración: Escáner de virus desconocíu: ''$1''",
'gotaccount' => '¿Yá tienes una cuenta? $1.',
'gotaccountlink' => 'Entrar',
'userlogin-resetlink' => "¿Escaeció los datos d'accesu?",
-'userlogin-resetpassword-link' => 'Reaniciar la contraseña',
+'userlogin-resetpassword-link' => '¿Escaeció la contraseña?',
'helplogin-url' => 'Help:Aniciar sesión',
'userlogin-helplink' => "[[{{MediaWiki:helplogin-url}}|Ayuda p'aniciar sesión]]",
'userlogin-loggedin' => "Yá anició sesión como {{GENDER:$1|$1}}.
'mailerror' => 'Fallu al unviar el corréu: $1',
'acct_creation_throttle_hit' => "Los visitantes d'esta wiki qu'usen la to direición IP yá crearon güei {{PLURAL:$1|1 cuenta|$1 cuentes}}, que ye'l máximu almitíu nesti periodu de tiempu.
Poro, los visitantes qu'usen esta direición IP nun puen crear más cuentes de momentu.",
-'emailauthenticated' => "La to direición de corréu electrónicu confirmóse'l $2 a les $3.",
-'emailnotauthenticated' => "La to direición de corréu electrónicu inda nun se comprobó.
+'emailauthenticated' => "La so direición de corréu electrónicu confirmóse'l $2 a les $3.",
+'emailnotauthenticated' => "La so direición de corréu electrónicu inda nun se confirmó.
Nun s'unviará corréu pa nenguna de les funciones siguientes.",
'noemailprefs' => 'Conseña una direición de corréu electrónicu nes tos preferencies pa que funcionen eses carauterístiques.',
'emailconfirmlink' => 'Confirmar la direición de corréu electrónicu',
'revdelete-confirm' => "Confirma que quies facer esto, qu'entiendes les consecuencies, y que vas facer esto d'alcuerdo [[{{MediaWiki:Policy-url}}|cola política]].",
'revdelete-suppress-text' => "La supresión '''namái''' tendría d'usase nos casos darréu:
* Información que pudiere ser bilordiosa
-* Información personal non apropiada
-*: ''direiciones de llares y númberos de teléfonu, númberos de seguridá social, etc.''",
+* Información personal inapropiada
+*: ''direiciones de llares y númberos de teléfonu, númberos d'identidá nacional, etc.''",
'revdelete-legend' => 'Establecer torgues de visibilidá',
-'revdelete-hide-text' => 'Tapecer testu de la revisión',
+'revdelete-hide-text' => 'Testu de la revisión',
'revdelete-hide-image' => 'Tapecer el conteníu del ficheru',
'revdelete-hide-name' => 'Tapecer aición y oxetivu',
-'revdelete-hide-comment' => "Tapecer el resume d'edición",
-'revdelete-hide-user' => "Tapecer el nome d'usuariu/IP del editor",
+'revdelete-hide-comment' => "Resume d'edición",
+'revdelete-hide-user' => 'Nome del editor/Direición IP',
'revdelete-hide-restricted' => "Desaniciar datos de los alministradores y d'otros",
'revdelete-radio-same' => '(ensin cambeos)',
-'revdelete-radio-set' => 'Sí',
-'revdelete-radio-unset' => 'Non',
+'revdelete-radio-set' => 'Tapecíu',
+'revdelete-radio-unset' => 'Visible',
'revdelete-suppress' => "Desaniciar datos de los alministradores igual que d'otros",
'revdelete-unsuppress' => 'Desaniciar les torgues nes revisiones restauraes',
'revdelete-log' => 'Motivu:',
'mypreferences' => 'Preferencies',
'prefs-edits' => "Númberu d'ediciones:",
'prefsnologin' => 'Nun anició sesión',
-'prefsnologintext' => 'Necesita <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aniciar sesión]</span> pa camudar la configuración d\'usuariu.',
+'prefsnologintext2' => "Por favor, $1 pa configurar les preferencies d'usuariu",
'changepassword' => 'Camudar la clave',
'prefs-skin' => 'Apariencia',
'skin-preview' => 'Vista previa',
corréu: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-En casu de producise más cambios, nun habrá más notificaciones a nun ser que visites esta páxina. Tamién podríes reaniciar na to llista de vixilancia los marcadores de notificación de toles páxines que tengas vixilaes.
+En casu de producise más actividá, nun habrá más notificaciones a nun ser que visites esta páxina teniendo sesión aniciada. Tamién podríes reaniciar na to llista de vixilancia los marcadores de notificación de toles páxines que tengas vixilaes.
El to abertable sistema de notificación de {{SITENAME}}
'allmessagesdefault' => 'Testu predetermináu',
'allmessagescurrent' => 'Testu actual',
'allmessagestext' => 'Esta ye una llista de los mensaxes de sistema disponibles nel espaciu de nomes de MediaWiki.
-Por favor visita [//www.mediawiki.org/wiki/Localisation Llocalización de MediaWiki] y [//translatewiki.net translatewiki.net] si quies contribuyer a la llocalización xenérica de MediaWiki.',
+Por favor visita [https://www.mediawiki.org/wiki/Localisation Llocalización de MediaWiki] y [//translatewiki.net translatewiki.net] si quies contribuyer a la llocalización xenérica de MediaWiki.',
'allmessagesnotsupportedDB' => "Nun pue usase '''{{ns:special}}:Allmessages''' porque '''\$wgUseDatabaseMessages''' ta deshabilitáu.",
'allmessages-filter-legend' => 'Peñerar',
'allmessages-filter' => 'Peñerar por estáu de personalización:',
'pageinfo-length' => 'Llonxitú de la páxina (en bytes)',
'pageinfo-article-id' => 'ID de la páxina',
'pageinfo-language' => 'Llingua del conteníu de la páxina',
+'pageinfo-content-model' => 'Plantía del conteníu de la páxina',
'pageinfo-robot-policy' => 'Indexación por robots',
'pageinfo-robot-index' => 'Permitío',
'pageinfo-robot-noindex' => 'Torgao',
'svg-long-desc' => 'ficheru SVG, $1 × $2 píxels nominales, tamañu de ficheru: $3',
'svg-long-desc-animated' => 'Ficheru SVG animáu; nominalmente de $1 × $2 pixels; tamañu del ficheru: $3',
'svg-long-error' => 'Ficheru SVG inválidu: $1',
-'show-big-image' => 'Resolución completa',
+'show-big-image' => 'Ficheru orixinal',
'show-big-image-preview' => "Tamañu d'esta previsualización: $1.",
'show-big-image-other' => '{{PLURAL:$2|Otra resolución|Otres resoluciones}}: $1.',
'show-big-image-size' => '$1 × $2 pixels',
# External editor support
'edit-externally' => 'Editar esti ficheru usando una aplicación esterna',
-'edit-externally-help' => '(Pa más información ver les [//www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración])',
+'edit-externally-help' => '(Pa más información ver les [https://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'too',
'confirm-unwatch-button' => 'Aceutar',
'confirm-unwatch-top' => '¿Desaniciar esta páxina de la to llista de vixilancia?',
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
# Multipage image navigation
'imgmultipageprev' => '← páxina anterior',
'imgmultipagenext' => 'páxina siguiente →',
'version-hook-subscribedby' => 'Suscritu por',
'version-version' => '(Versión $1)',
'version-license' => 'Llicencia',
-'version-poweredby-credits' => "Esta wiki funciona con '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Esta wiki funciona con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otros',
'version-poweredby-translators' => 'los traductores de translatewiki.net',
'version-credits-summary' => 'Nos prestaría dar reconocimientu a les siguientes persones pola so contribución a [[Special:Version|MediaWiki]].',
# Special:Redirect
'redirect' => "Redireición por nome de ficheru, o ID d'usuariu o de revisión",
'redirect-legend' => 'Redirixir a un ficheru o una páxina',
-'redirect-summary' => "Esta páxina especial redirixe a un ficheru (dando'l nome), una páxina (dando una ID de revisión) o una páxina d'usuariu (dando una ID d'usuariu).",
+'redirect-summary' => "Esta páxina especial redirixe a un ficheru (dando'l so nome), una páxina (dando una ID de revisión) o una páxina d'usuariu (dando un númberu d'ID d'usuariu). Usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
'redirect-submit' => 'Dir',
'redirect-lookup' => 'Buscar:',
'redirect-value' => 'Valor:',
# Special:SpecialPages
'specialpages' => 'Páxines especiales',
-'specialpages-note' => '----
-* Páxines especiales normales.
-* <span class="mw-specialpagerestricted">Páxines especiales restrinxíes.</span>
-* <span class="mw-specialpagecached">Páxines especiales en caché (seique nun tean actualizaes).</span>',
+'specialpages-note-top' => 'Lleenda',
+'specialpages-note' => '* Páxines especiales normales.
+* <span class="mw-specialpagerestricted">Páxines especiales restrinxíes.</span>',
'specialpages-group-maintenance' => 'Informes de mantenimientu',
'specialpages-group-other' => 'Otres páxines especiales',
'specialpages-group-login' => 'Entrar / crear cuenta',
'mypreferences' => 'Jinaf lodamaceem',
'prefs-edits' => 'Ota va betaks :',
'prefsnologin' => 'Dogluyariskaf',
-'prefsnologintext' => 'Ede va favesiklodamaceem djubetal, gotil <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} dogluyarakiraf]</span>.',
'changepassword' => 'Betara va remravlem',
'prefs-skin' => 'Laviuca',
'skin-preview' => 'Abdiwira',
'allmessagescurrent' => 'Noelaf krent',
'allmessagestext' => 'Batcoba tir vexala dem bolkstakseem koe MediaWiki yoltxo.
-Va [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [//translatewiki.net translatewiki.net] vay woral ede va tulizukara va Mediawiki co-rowebel.',
+Va [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [//translatewiki.net translatewiki.net] vay woral ede va tulizukara va Mediawiki co-rowebel.',
'allmessagesnotsupportedDB' => "Batu bu me zo rofaver kire '''\$wgUseDatabaseMessages''' mea tir tegis.",
# Thumbnails
# External editor support
'edit-externally' => 'Betara va bat iyeltak faveson va divef talpey',
-'edit-externally-help' => '(Ta lo giva va [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] disukel !)',
+'edit-externally-help' => '(Ta lo giva va [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] disukel !)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kot',
* @author Gulmammad
* @author Kaganer
* @author Khan27
+ * @author Mushviq Abdulla
* @author PPerviz
* @author PrinceValiant
* @author Sortilegus
'tog-diffonly' => 'Versiyaların müqayisəsi zamanı səhifənin məzmununu göstərmə',
'tog-showhiddencats' => 'Gizli kateqoriyaları göstər',
'tog-norollbackdiff' => 'Geri qaytardıqdan sonra, edilmiş dəyişikikləri dəyişikliklər siyahısından sil',
+'tog-useeditwarning' => 'Qeyd edilməmiş dəyişikliyə sahib bir dəyişiklik səhifəsindən çıxarkən məni xəbərdar et',
'underline-always' => 'Həmişə',
'underline-never' => 'Heç vaxt',
'oct' => 'Oktyabr',
'nov' => 'Noyabr',
'dec' => 'Dekabr',
+'january-date' => '$1 Yanvar',
+'february-date' => '$1 Fevral',
+'march-date' => '$1 Mart',
+'april-date' => '$1 Aprel',
+'may-date' => '$1 May',
+'june-date' => '$1 İyun',
+'july-date' => '$1 İyul',
+'august-date' => '$1 Avqust',
+'september-date' => ' $1 Sentyabr',
+'october-date' => '$1 Oktyabr',
+'november-date' => '$1 Noyabr',
+'december-date' => '$1 Dekabr',
# Categories related messages
'pagecategories' => '$1 {{PLURAL:$1|Kateqoriya|Kateqoriya}}',
'newwindow' => '(yeni pəncərədə açılır)',
'cancel' => 'Ləğv et',
'moredotdotdot' => 'Daha...',
+'morenotlisted' => 'Bu siyahı tam deyil.',
'mypage' => 'Mənim səhifəm',
'mytalk' => 'Danışıqlarım',
'anontalk' => 'Bu IP-yə aid müzakirə',
'create-this-page' => 'Bu səhifəni yarat',
'delete' => 'Sil',
'deletethispage' => 'Bu səhifəni sil',
+'undeletethispage' => 'Bu səhifənin silmə əməliyyatını geri qaytar',
'undelete_short' => '$1 {{PLURAL:$1|dəyişikliyi|dəyişiklikləri}} bərpa et',
'viewdeleted_short' => '{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}',
'protect' => 'Mühafizə et',
'youhavenewmessages' => 'Hal-hazırda $1 var. ($2)',
'newmessageslink' => 'yeni ismarıclar',
'newmessagesdifflink' => 'Sonuncu və əvvəlki versiya arasındakı fərq',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başqa bir istifadəçidən|$3 istifadəçidən}} $1 var ($2).',
+'youhavenewmessagesmanyusers' => 'Bir çox istifadəçidən $1 var ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
+'newmessagesdifflinkplural' => 'son {{PLURAL:$1|dəyişiklik|dəyişikliklər}}',
'youhavenewmessagesmulti' => '"$1"da yeni mesajınız var.',
'editsection' => 'redaktə',
'editold' => 'redaktə',
'mypreferences' => 'Nizamlamalar',
'prefs-edits' => 'Redaktələrin sayı:',
'prefsnologin' => 'Daxil olmamısınız',
-'prefsnologintext' => 'Nizamlamaları dəyişmək üçün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} daxil olmaq]</span> zəruridir.',
'changepassword' => 'Parolu dəyiş',
'prefs-skin' => 'Cild',
'skin-preview' => 'Sınaq görüntüsü',
'allmessagesname' => 'Ad',
'allmessagesdefault' => 'İlkin mətn',
'allmessagescurrent' => 'İndiki mətn',
-'allmessagestext' => 'Bu MediaWiki-də olan sistem mesajlarının siyahısıdır. Əgər MediaWiki-ni lokallaşdırmaq işində kömək etmək isəyirsinizsə, lütfən [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] və [//translatewiki.net translatewiki.net]-ə baş çəkin.',
+'allmessagestext' => 'Bu MediaWiki-də olan sistem mesajlarının siyahısıdır. Əgər MediaWiki-ni lokallaşdırmaq işində kömək etmək isəyirsinizsə, lütfən [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] və [//translatewiki.net translatewiki.net]-ə baş çəkin.',
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter-unmodified' => 'Dəyişdirilməmiş',
'allmessages-filter-all' => 'Hamısı',
# External editor support
'edit-externally' => 'Bu faylı kənar proqram vasitəsilə redaktə et.',
-'edit-externally-help' => '(Daha ətraflı məlumat üçün [//www.mediawiki.org/wiki/Manual:External_editors tətbiqetmə qaydalarına] baxa bilərsiniz)',
+'edit-externally-help' => '(Daha ətraflı məlumat üçün [https://www.mediawiki.org/wiki/Manual:External_editors tətbiqetmə qaydalarına] baxa bilərsiniz)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'hamısını',
'version-hook-subscribedby' => 'Abunə olan',
'version-version' => '(Versiya $1)',
'version-license' => 'Lisenziya',
-'version-poweredby-credits' => "Bu wiki '''[//www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
+'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
'version-poweredby-others' => 'digərləri',
'version-software-product' => 'Məhsul',
'version-software-version' => 'Versiya',
'mypreferences' => 'ترجیحلر',
'prefs-edits' => 'دَییشمهلرین سایی:',
'prefsnologin' => 'گیرمهمیسینیز',
-'prefsnologintext' => 'ایستیفادهچی تنظیملرینی دَییشمک اوچون، <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} گیرمهلیسینیز]</span>.',
'changepassword' => 'رمزی دَییشدیر',
'prefs-skin' => 'قابیق',
'skin-preview' => 'اؤنگؤستریش',
'allmessagesname' => 'آد',
'allmessagesdefault' => 'دفالت دانیشیق متنی',
'allmessagescurrent' => 'ایندیکی متن',
-'allmessagestext' => 'بو مئدیا ویکی-ده اولان سیستئم مئساژلارینین سیاهیسیدیر. اگر مئدیا ویکی-نی لوکاللاشدیرماق ایشینده کؤمک ائتمک ایسییرسینیزسه، لطفاً [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] و [//translatewiki.net translatewiki.net]-ا باش چکین.',
+'allmessagestext' => 'بو مئدیا ویکی-ده اولان سیستئم مئساژلارینین سیاهیسیدیر. اگر مئدیا ویکی-نی لوکاللاشدیرماق ایشینده کؤمک ائتمک ایسییرسینیزسه، لطفاً [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] و [//translatewiki.net translatewiki.net]-ا باش چکین.',
'allmessagesnotsupportedDB' => "'''\$ wgUseDatabaseMessages''' باغلی اولدوغو اوچون '{{ns:special}}: Allmessages ایستیفادهیه آچیق دئییل.",
'allmessages-filter-legend' => 'سۆزگَج',
'allmessages-filter' => 'خصوصی ائتمک وضعیتینه گؤره فیلترلی:',
# External editor support
'edit-externally' => 'بو فایلی خاریجی یازیلیملا دَییشدیر',
-'edit-externally-help' => '(آرتیق بیلگیلر اوچون [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] صحیفهسینه باخ)',
+'edit-externally-help' => '(آرتیق بیلگیلر اوچون [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] صحیفهسینه باخ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'بوتون',
'version-hook-subscribedby' => 'طرفیندن گیریشمیش',
'version-version' => '(نسخه $1)',
'version-license' => 'لیسانس',
-'version-poweredby-credits' => "بو wیکی ' ''[//www.mediawiki.org/ مئدیاwیکی]'ع' پروقرامی ایستیفاده ائدیلهرک يارادیلمیشدیر، یاازارلار © 2001-$1 $2.",
+'version-poweredby-credits' => "بو wیکی ' ''[https://www.mediawiki.org/ مئدیاwیکی]'ع' پروقرامی ایستیفاده ائدیلهرک يارادیلمیشدیر، یاازارلار © 2001-$1 $2.",
'version-poweredby-others' => 'آیریلار',
'version-credits-summary' => 'بو ایستفاده چیلر دییشدیر لرینه گوره [[Special:Version|مئدیاویکی]] تانیش ائدیرم.',
'version-license-info' => 'مئدیاویکی بیر اؤزگور یازیلیمدیر؛ سیز اونو، اؤزگور یازیلیم قورولوشو یایان GNU گنل عمومی لیسانسی اساسیله یئنیدن داغیدیب یوخسا دَییشه بیلرسینیز؛ یا لیسانسین ۲-نجی نوسخهسی، یا دا (اؤز سئچدیگینیزله) هر هانکی سونراکی نوسخهسی.
# Special:SpecialPages
'specialpages' => 'اؤزل صحیفهلر',
-'specialpages-note' => '----
-* نورمال اؤزل صحیفهلر.
+'specialpages-note' => '* نورمال اؤزل صحیفهلر.
* <span class="mw-specialpagerestricted">محدودلاشدیریلمیش اؤزل صحیفهلر.</span>',
'specialpages-group-maintenance' => 'جاری مروزهلر',
'specialpages-group-other' => 'دیگر خصوصی صحیفهلر',
'mypreferences' => 'Көйләүҙәр',
'prefs-edits' => 'Төҙәтеүҙәр һаны:',
'prefsnologin' => 'Танылмағанһығыҙ',
-'prefsnologintext' => 'Ҡатнашыусы көйләүҙәрен үҙгәртеү өсөн, һеҙ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}танылырға]</span> тейешһегеҙ.',
'changepassword' => 'Серһүҙҙе үҙгәртергә',
'prefs-skin' => 'Күренеш',
'skin-preview' => 'Алдан байҡау',
'allmessagesdefault' => 'Ғәҙәттәге яҙма',
'allmessagescurrent' => 'Хәҙерге яҙма',
'allmessagestext' => 'Түбәндә MediaWiki исемдәр арауығында ҡулланылған система хәбәрҙәре исемлеге килтерелгән.
-Әгәр MediaWiki программаһын дөйөм локалләштереү эшенә үҙ өлөшөгөҙҙө керетергә теләһәгеҙ, [//www.mediawiki.org/wiki/Localisation MediaWiki программаһын локалләштереү] битен һәм [//translatewiki.net translatewiki.net] проектын ҡарап сығығыҙ.',
+Әгәр MediaWiki программаһын дөйөм локалләштереү эшенә үҙ өлөшөгөҙҙө керетергә теләһәгеҙ, [https://www.mediawiki.org/wiki/Localisation MediaWiki программаһын локалләштереү] битен һәм [//translatewiki.net translatewiki.net] проектын ҡарап сығығыҙ.',
'allmessagesnotsupportedDB' => "Был бит ҡулланыла алмай, сөнки '''\$wgUseDatabaseMessages''' мөмкинлеге һүндерелгән.",
'allmessages-filter-legend' => 'Һайлау',
'allmessages-filter' => 'Үҙгәртеү торошо буйынса һайлау:',
# External editor support
'edit-externally' => 'Был файлды тышҡы программа ҡулланып мөхәррирләргә',
-'edit-externally-help' => '(Тулыраҡ мәғлүмәт өсөн металағы [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] (инглизсә) битен ҡарағыҙ)',
+'edit-externally-help' => '(Тулыраҡ мәғлүмәт өсөн металағы [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] (инглизсә) битен ҡарағыҙ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'бөтә',
'version-hook-subscribedby' => 'Яҙҙырылған',
'version-version' => '($1 өлгөһө)',
'version-license' => 'Рөхсәтнамә',
-'version-poweredby-credits' => "Был вики проект '''[//www.mediawiki.org/ MediaWiki]''' нигеҙендә эшләй, copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Был вики проект '''[https://www.mediawiki.org/ MediaWiki]''' нигеҙендә эшләй, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'башҡалар',
'version-poweredby-translators' => 'translatewiki.net тәржемәселәре',
'version-credits-summary' => '[[Special:Version|MediaWiki]] үҫешенә өлөш индергәндәре өсөн киләһе ҡатнашыусыларға рәхмәт әйтәбеҙ.',
# Special:SpecialPages
'specialpages' => 'Махсус биттәр',
-'specialpages-note' => '----
-* Ябай махсус биттәр.
+'specialpages-note' => '* Ябай махсус биттәр.
* <span class="mw-specialpagerestricted">Сикле махсус биттәр.</span>
* <span class="mw-specialpagecached">Кешланған махсус биттәр (иҫкергән булыуы мөмкин).</span>',
'specialpages-group-maintenance' => 'Техник хеҙмәтләндереү хисапламалары',
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Aktuella Text',
'allmessagestext' => 'Des is a Listen vo de MediaWiki-Systemtextt.
-Bsuach bittschee de Saiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisiarung] und [//translatewiki.net translatewiki.net], wånn du de ån da Lokalisiarung vo MediaWiki betailing mechadst.',
+Bsuach bittschee de Saiten [https://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisiarung] und [//translatewiki.net translatewiki.net], wånn du de ån da Lokalisiarung vo MediaWiki betailing mechadst.',
'allmessagesnotsupportedDB' => "'''Special:Allmessages''' is im Moment net möglich, wei de Datenbank offline is.",
# Thumbnails
# External editor support
'edit-externally' => 'De Datei mid am externa Programm beorbatn',
-'edit-externally-help' => '(Schaug unter [//www.mediawiki.org/wiki/Manual:External_editors Installationsoweisunga] fia weidane Infos)',
+'edit-externally-help' => '(Schaug unter [https://www.mediawiki.org/wiki/Manual:External_editors Installationsoweisunga] fia weidane Infos)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'olle',
'version-hook-subscribedby' => 'Aufruaff voh',
'version-version' => '(Versión $1)',
'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Dé Nétzseiten braucht '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Dé Nétzseiten braucht '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'åndre',
# Special:FileDuplicateSearch
# Special:SpecialPages
'specialpages' => 'Spezialseitn',
-'specialpages-note' => '----
-* Reguläre Speziaalseiten
+'specialpages-note' => '* Reguläre Speziaalseiten
* <span class="mw-specialpagerestricted">Zuagrifsbschränkde Speziaalseiten</span>
* <span class="mw-specialpagecached">Cachegenerrirde Speziaalseiten (Da Inhoid is méglicherweis vaoiterd)</span>',
'specialpages-group-maintenance' => 'Wartungslisten',
'mypreferences' => 'منی ترجیحات',
'prefs-edits' => 'تعداد اصلاحات:',
'prefsnologin' => 'وارد نهیت',
-'prefsnologintext' => 'شما بایدن <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} وارد بیت]</span> په تنظیم کتن ترجیحات.',
'changepassword' => 'کلمه رمز عوض کن',
'prefs-skin' => 'پوست',
'skin-preview' => 'بازین',
'allmessagesdefault' => 'پیش فرضین متن',
'allmessagescurrent' => 'هنوکین متن',
'allmessagestext' => 'شی یک لیستی چه کوله یان موجود ته نام فضای مدیا وی کی انت.
-لطفا بچاریت [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] و [//translatewiki.net translatewiki.net] اگر شما لوٹیت ته ملکی کتن مدیا وی کی کمک کنیت.',
+لطفا بچاریت [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] و [//translatewiki.net translatewiki.net] اگر شما لوٹیت ته ملکی کتن مدیا وی کی کمک کنیت.',
'allmessagesnotsupportedDB' => "ای صفحه نه تونیت استفاده بیت په چی که'''\$wgUseDatabaseMessages''' غیر فعالنت.",
'allmessages-filter-legend' => 'فیلتر',
'allmessages-filter' => 'فیلتر گون حالت دلواهی',
# External editor support
'edit-externally' => 'ای صفحه یا اصلاح کن گون یک درآین برنامه ای',
-'edit-externally-help' => '(په گیشترین اطلاعات بچار[//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(په گیشترین اطلاعات بچار[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'کل',
# Special:SpecialPages
'specialpages' => 'حاصین صفحات',
-'specialpages-note' => '----
-* نرمال صفحات حاص.
+'specialpages-note' => '* نرمال صفحات حاص.
* <strong class="mw-specialpagerestricted">محدودین صفحات حاص.</strong>',
'specialpages-group-maintenance' => 'گزارشات دارگ',
'specialpages-group-other' => 'دگر حاصین صفحات',
'mypreferences' => 'Mga Kamuyahan ko',
'prefs-edits' => 'Bilang kan mga hirá:',
'prefsnologin' => 'Dai nakalaog',
-'prefsnologintext' => 'Ika dapat na magin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakalaog na]</span> tanganing tuytuyon an mga kabotan nin paragamit.',
'changepassword' => 'Ribayan an sekretong panlaog',
'prefs-skin' => "''Skin''",
'skin-preview' => 'Tânawon',
'allmessagesdefault' => 'Panugmad na tekstong mensahe',
'allmessagescurrent' => 'Presenteng teksto',
'allmessagestext' => 'Ini sarong listahan nin pansistemang mga mensahe na mananagboan sa espasyong-pangaran kan MediaWiki.
-Pakibisita an [//www.mediawiki.org/wiki/Localisation Mediawiki Lokalisasyon] asin [//translatewiki.net translatewiki.net] kun boot mong mag-ambag sa henerikong lokalisasyon kan MediaWiki.',
+Pakibisita an [https://www.mediawiki.org/wiki/Localisation Mediawiki Lokalisasyon] asin [//translatewiki.net translatewiki.net] kun boot mong mag-ambag sa henerikong lokalisasyon kan MediaWiki.',
'allmessagesnotsupportedDB' => "Dai pwedeng gamiton an '''{{ns:special}}:Allmessages''' ta sarado an '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'An Pansara',
'allmessages-filter' => 'Pansara sa paagi kan estado nin kustomisasyon:',
# External editor support
'edit-externally' => 'Liwaton ining sagunson na pinaggagamit an panluwasan na aplikasyon',
-'edit-externally-help' => '(Hilngon an [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa kadagdagang impormasyon)',
+'edit-externally-help' => '(Hilngon an [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa kadagdagang impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'gabos',
'version-hook-subscribedby' => 'Pinaghaguhot ni',
'version-version' => '(Bersyon na $1)',
'version-license' => 'Lisensiya',
-'version-poweredby-credits' => "An wiking ini pinagpagana kan '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "An wiking ini pinagpagana kan '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'mga iba pa',
'version-poweredby-translators' => 'translatewiki.net na mga paradakit-taramon',
'version-credits-summary' => 'Gusto niyamong rekonosiron an minasunod na mga persona nin huli kan saindang ambag sa [[Special:Version|Mediawiki]].',
# Special:SpecialPages
'specialpages' => 'Mga espesyal na pahina',
-'specialpages-note' => '----
-* Normal espesyal na mga pahina.
+'specialpages-note' => '* Normal espesyal na mga pahina.
* <span class="mw-specialpagerestricted">Restriktadong espesyal na mga pahina.</span>',
'specialpages-group-maintenance' => 'Mga talaan nin pagpangataman',
'specialpages-group-other' => 'Iba pang mga espesyal na pahina',
'mypreferences' => 'Настройкі',
'prefs-edits' => 'Колькасць правак:',
'prefsnologin' => 'Не ўвайшлі',
-'prefsnologintext' => 'Неабходна <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} увайсці ў сістэму]</span>, каб мяняць свае настройкі.',
'changepassword' => 'Пароль',
'prefs-skin' => 'Вокладка',
'skin-preview' => 'перадпаказ',
# External editor support
'edit-externally' => 'Правіць файл у вонкавай праграме',
-'edit-externally-help' => '(Гл. падрабязней [//www.mediawiki.org/wiki/Manual:External_editors пра настаўлянне старонніх праграм-рэдактараў])',
+'edit-externally-help' => '(Гл. падрабязней [https://www.mediawiki.org/wiki/Manual:External_editors пра настаўлянне старонніх праграм-рэдактараў])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'усе',
'version-hook-subscribedby' => 'Сюды падпісаныя',
'version-version' => '(Версія $1)',
'version-license' => 'Ліцэнзія',
-'version-poweredby-credits' => "Пляцоўка працуе на '''[//www.mediawiki.org/ MediaWiki]''', капірайт © 2001-$1 $2.",
+'version-poweredby-credits' => "Пляцоўка працуе на '''[https://www.mediawiki.org/ MediaWiki]''', капірайт © 2001-$1 $2.",
'version-poweredby-others' => 'іншыя',
'version-license-info' => "MediaWiki з'яўляецца свабодным праграмным забеспячэннем. Такім чынам, вы можаце паўторна распаўсюджваць прадукт і(або) змяняць яго на ўмовах пагаднення GNU General Public License у тым выглядзе, у якім яно публікуецца фондам Free Software Foundation; сілу мае версія (выпуск) 2 гэтага пагаднення або, на ваш выбар, навейшая версія (выпуск) пагаднення.
# Special:SpecialPages
'specialpages' => 'Адмысловыя старонкі',
-'specialpages-note' => '----
-* Звычайныя адмысловыя старонкі.
+'specialpages-note' => '* Звычайныя адмысловыя старонкі.
* <span class="mw-specialpagerestricted">Адмысловыя старонкі з абмежаваным доступам.</span>
* <span class="mw-specialpagecached">Закэшаваныя адмысловыя старонкі (могуць быць састарэлымі).</span>',
'specialpages-group-maintenance' => 'Звесткі аб працы',
'mypreferences' => 'Налады',
'prefs-edits' => 'Колькасьць рэдагаваньняў:',
'prefsnologin' => 'Вы не ўвайшлі ў сыстэму',
-'prefsnologintext' => 'Вам трэба <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ўвайсьці ў сыстэму]</span>, каб зьмяняць свае налады.',
'changepassword' => 'Зьмяніць пароль',
'prefs-skin' => 'Афармленьне',
'skin-preview' => 'Папярэдні прагляд',
'allmessagesdefault' => 'Тэкст па змоўчаньні',
'allmessagescurrent' => 'Цяперашні тэкст',
'allmessagestext' => 'Сьпіс усіх сыстэмных паведамленьняў, якія існуюць у прасторы назваў MediaWiki.
-Калі ласка, наведайце [//www.mediawiki.org/wiki/Localisation старонку пра лякалізацыю MediaWiki] і [//translatewiki.net translatewiki.net], калі Вы жадаеце ўдзельнічаць у перакладзе MediaWiki.',
+Калі ласка, наведайце [https://www.mediawiki.org/wiki/Localisation старонку пра лякалізацыю MediaWiki] і [//translatewiki.net translatewiki.net], калі Вы жадаеце ўдзельнічаць у перакладзе MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' не падтрымліваецца, таму што адключанае '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Фільтар',
'allmessages-filter' => 'Фільтар па стане зьменаў:',
# External editor support
'edit-externally' => 'Рэдагаваць гэты файл з выкарыстаньнем вонкавай праграмы',
-'edit-externally-help' => '(Глядзіце падрабязнасьці ў [//www.mediawiki.org/wiki/Manual:External_editors інструкцыі па наладцы] (па-ангельску))',
+'edit-externally-help' => '(Глядзіце падрабязнасьці ў [https://www.mediawiki.org/wiki/Manual:External_editors інструкцыі па наладцы] (па-ангельску))',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'усё',
'version-version' => '(Вэрсія $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Ліцэнзія',
-'version-poweredby-credits' => "{{SITENAME}} працуе на праграмным забесьпячэньні '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "{{SITENAME}} працуе на праграмным забесьпячэньні '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'іншыя',
'version-poweredby-translators' => 'перакладчыкі з translatewiki.net',
'version-credits-summary' => 'Нам вельмі хацелася б адзначыць наступных асобаў, што зрабілі ўнёсак у [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Спэцыяльныя старонкі',
-'specialpages-note' => '----
-* Звычайныя спэцыяльныя старонкі.
+'specialpages-note' => '* Звычайныя спэцыяльныя старонкі.
* <strong class="mw-specialpagerestricted">Спэцыяльныя старонкі з абмежаваным доступам.</strong>
* <span class="mw-specialpagecached">Кэшаваныя спэцыяльныя старонкі (могуць быць састарэлымі).</span>',
'specialpages-group-maintenance' => 'Тэхнічныя справаздачы',
'mypreferences' => 'Настройки',
'prefs-edits' => 'Брой редакции:',
'prefsnologin' => 'Не сте влезли',
-'prefsnologintext' => 'Необходимо е <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} да влезете]</span>, за да може да променяте потребителските си настройки.',
'changepassword' => 'Смяна на парола',
'prefs-skin' => 'Облик',
'skin-preview' => 'предварителен преглед',
'allmessagesdefault' => 'Текст по подразбиране',
'allmessagescurrent' => 'Текущ текст',
'allmessagestext' => 'Тази страница съдържа списък на системните съобщения от именното пространство „МедияУики“.
-Посетете [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] и [//translatewiki.net translatewiki.net], ако желаете да допринесете за общата локализация на софтуера МедияУики.',
+Посетете [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] и [//translatewiki.net translatewiki.net], ако желаете да допринесете за общата локализация на софтуера МедияУики.',
'allmessagesnotsupportedDB' => "Тази страница не може да бъде използвана, тъй като е изключена възможността '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Филтър',
'allmessages-filter' => 'Филтриране по ниво на персонализация:',
'svg-long-desc' => 'Файл във формат SVG, основен размер: $1 × $2 пиксела, големина на файла: $3',
'svg-long-desc-animated' => 'Анимиран SVG файл, основен размер $1 × $2 пиксела, големина на файла: $3',
'svg-long-error' => 'Невалиден SVG файл: $1',
-'show-big-image' => 'Ð\9fÑ\8aлна Ñ\80азделиÑ\82елна Ñ\81поÑ\81обноÑ\81Ñ\82',
+'show-big-image' => 'Ð\9eÑ\80игинален Ñ\84айл',
'show-big-image-preview' => 'Размер на този преглед: $1.',
'show-big-image-other' => '{{PLURAL:$2|Друга разделителна способност|Други разделителни способности}}: $1.',
'show-big-image-size' => '$1 × $2 пиксела',
# External editor support
'edit-externally' => 'Редактиране на файла чрез външно приложение',
-'edit-externally-help' => '(За повече информация прегледайте [//www.mediawiki.org/wiki/Manual:External_editors указанията за настройките]).',
+'edit-externally-help' => '(За повече информация прегледайте [https://www.mediawiki.org/wiki/Manual:External_editors указанията за настройките]).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'всички',
'confirm-unwatch-button' => 'Потвърждаване',
'confirm-unwatch-top' => 'Премахване на страницата от списъка ви за наблюдение?',
+# Separators for various lists, etc.
+'quotation-marks' => '„$1“',
+
# Multipage image navigation
'imgmultipageprev' => '← предишна страница',
'imgmultipagenext' => 'следваща страница →',
'version-hook-subscribedby' => 'Ползвана от',
'version-version' => '(Версия $1)',
'version-license' => 'Лиценз',
-'version-poweredby-credits' => "Това уики се задвиждва от '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Това уики се задвиждва от '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'други',
'version-poweredby-translators' => 'преводачи в translatewiki.net',
'version-credits-summary' => 'Бихме искали да изкажем признателност на следните хора за техните приноси към [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Специални страници',
-'specialpages-note' => '----
-* Обикновени специални страници.
+'specialpages-note' => '* Обикновени специални страници.
* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>
* <span class="mw-specialpagecached">Само складирани специални страници (възможно е да са остарели).</span>',
'specialpages-group-maintenance' => 'Доклади по поддръжката',
'mypreferences' => 'Nang ulun katuju',
'prefs-edits' => 'Rikinan babakan-babakan:',
'prefsnologin' => 'Balum babuat log',
-'prefsnologintext' => 'Pian harus <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} babuat log]</span> gasat mengeset kakatujuan Pian.',
'changepassword' => 'Ubah katasunduk',
'prefs-skin' => 'Kulimbit',
'skin-preview' => 'Titilikan',
'allmessagesdefault' => 'Naskah baku pasan',
'allmessagescurrent' => 'Naskah pasan wayahini.',
'allmessagestext' => 'Ngini adalah sabuah daptar pasan sistem tasadia dalam ruang-ngaran MediaWiki.
-Muhun ilangi [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] wan [//translatewiki.net translatewiki.net] amun Pian hakun manyumbang palukalan umum MediaWiki.',
+Muhun ilangi [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] wan [//translatewiki.net translatewiki.net] amun Pian hakun manyumbang palukalan umum MediaWiki.',
'allmessagesnotsupportedDB' => "Tungkaran ngini kada kawa dipuruk karana '''\$wgUseDatabaseMessages''' sudah dipajahakan.",
'allmessages-filter-legend' => 'Saringan',
'allmessages-filter' => 'Saringan lawan kaadaan kustom:',
# External editor support
'edit-externally' => 'Babak barakas ngini puruk sabuah aplikasi luar',
-'edit-externally-help' => '(Lihati [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] untuk panjalasan labih)',
+'edit-externally-help' => '(Lihati [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] untuk panjalasan labih)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'samunyaan',
'version-hook-subscribedby' => 'Dilanggani ulih',
'version-version' => '(Pirsi $1)',
'version-license' => 'Lisansi',
-'version-poweredby-credits' => "Wiki ngini disukung ulih '''[//www.mediawiki.org/ MediaWiki]''', hak salin © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki ngini disukung ulih '''[https://www.mediawiki.org/ MediaWiki]''', hak salin © 2001-$1 $2.",
'version-poweredby-others' => 'lainnya',
'version-credits-summary' => 'Kami ingin ma-akui urang-urang ini atas sumbangan pikiran-tanaga kapada [[Special:Version|MediaWiki]].',
'version-license-info' => 'MediaWiki adalah parangkat lunak bibas; Pian kawa manyabarakan wan/atawa maubahi ngini di bawah syarat Lisansi Publik Umum sawagai tarbitan ulih Free Software Foundation; apakah Lisansi virsi 2, atawa (pilihan Pian) pahanyarnya.
# Special:SpecialPages
'specialpages' => 'Tungkaran istimiwa',
-'specialpages-note' => '----
-* Tutungkaran istimiwa normal
+'specialpages-note' => '* Tutungkaran istimiwa normal
* <span class="mw-specialpagerestricted">Tutungkaran istimiwa tabatas.</span>
* <span class="mw-specialpagecached">Tutungkaran istimiwa timbuluk (pinanya bakulat).</span>',
'specialpages-group-maintenance' => 'Lapuran pamaliharaan',
'headline_tip' => '২য় স্তরের শিরোনাম',
'nowiki_sample' => 'অ-ফরম্যাটকৃত টেক্সট এখানে প্রবিষ্ট করুন',
'nowiki_tip' => 'উইকি ফরম্যাটিং উপেক্ষা করা হোক',
+'image_sample' => 'উদাহরণ.jpg',
'image_tip' => 'গ্রথিত ফাইল',
'media_tip' => 'ফাইল সংযোগ',
'sig_tip' => 'সময় ও তারিখসহ আপনার স্বাক্ষর',
'mypreferences' => 'পছন্দসমূহ',
'prefs-edits' => 'সম্পাদনা সংখ্যা:',
'prefsnologin' => 'আপনি লগ-ইন করেননি',
-'prefsnologintext' => 'ব্যবহারকারীর পছন্দ ঠিক করতে হলে আপনাকে অবশ্যই <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} লগইন]</span> করা অবস্থায় থাকতে হবে।',
'changepassword' => 'শব্দচাবি পরিবর্তন',
'prefs-skin' => 'আবরণ (Skin)',
'skin-preview' => 'প্রাকদর্শন',
'allmessagesdefault' => 'আদি টেক্সট',
'allmessagescurrent' => 'বর্তমান টেক্সট',
'allmessagestext' => 'এটি মিডিয়াউইকি নামস্থানে অন্তর্ভুক্ত সিস্টেম বার্তাগুলোর একটি তালিকা।
-আপনি যদি সাধারণ মিডিয়াউইকির স্থানীয়করণে অবদান রাখতে আগ্রহী হন, অনুগ্রহ করে [//www.mediawiki.org/wiki/Localisation মিডিয়াউইকি স্থানীয়করণ] এবং [//translatewiki.net translatewiki.net] দেখুন।',
+আপনি যদি সাধারণ মিডিয়াউইকির স্থানীয়করণে অবদান রাখতে আগ্রহী হন, অনুগ্রহ করে [https://www.mediawiki.org/wiki/Localisation মিডিয়াউইকি স্থানীয়করণ] এবং [//translatewiki.net translatewiki.net] দেখুন।',
'allmessagesnotsupportedDB' => "এই পাতা ব্যবহার করা যাবে না কারণ '''\$wgUseDatabaseMessages''' বন্ধ করে রাখা আছে।",
'allmessages-filter-legend' => 'ছাকনী',
'allmessages-filter' => 'Filter by customization state:',
# External editor support
'edit-externally' => 'ফাইলটি অন্য কোন সফটওয়্যার দিয়ে সম্পাদনা করুন',
-'edit-externally-help' => 'আরও তথ্যের জন্য [//www.mediawiki.org/wiki/Manual:External_editors সেটআপ নির্দেশমালা] দেখুন।',
+'edit-externally-help' => 'আরও তথ্যের জন্য [https://www.mediawiki.org/wiki/Manual:External_editors সেটআপ নির্দেশমালা] দেখুন।',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'সবগুলো',
'version-hook-subscribedby' => 'সাবস্ক্রাইব করেছেন',
'version-version' => '(সংস্করণ $1)',
'version-license' => 'লাইসেন্স',
-'version-poweredby-credits' => "এইক উইকিটি পরিচালিত হচ্ছে '''[//www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
+'version-poweredby-credits' => "এইক উইকিটি পরিচালিত হচ্ছে '''[https://www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
'version-poweredby-others' => 'অন্যান্য',
'version-poweredby-translators' => 'translatewiki.net অনুবাদকগণ',
'version-credits-summary' => '[[Special:Version|মিডিয়াউইকি]] সফটওয়্যারে অবদানের জন্য আমরা এই ব্যক্তিকে স্বীকৃতি দিতে চাই।',
# Special:SpecialPages
'specialpages' => 'বিশেষ পাতাসমূহ',
-'specialpages-note' => '----
-* সাধারণ বিশেষ পাতাসমূহ।
+'specialpages-note' => '* সাধারণ বিশেষ পাতাসমূহ।
* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পাতা।</span>',
'specialpages-group-maintenance' => 'রক্ষণাবেক্ষণের কার্যবিবরণীসমূহ',
'specialpages-group-other' => 'অন্যান্য বিশেষ পাতাসমূহ',
'allmessagesdefault' => 'আদ্যকার টেক্সট',
'allmessagescurrent' => 'হাদি এহানর ৱাহি',
'allmessagestext' => 'তলে মিডিয়াউইকির নাঙরথাকে পানা একরের সিস্টেম পৌহানির তালিকাহান দেনা ইল।
-কৃপা করিয়া [//www.mediawiki.org/wiki/Localisation মিডিয়াউইকি অনুবাদর হেইচা পাতাত] বারো [//translatewiki.net translatewiki.net] মিডিয়াউইকি অনুবাদ করানির কা যানা পারর।',
+কৃপা করিয়া [https://www.mediawiki.org/wiki/Localisation মিডিয়াউইকি অনুবাদর হেইচা পাতাত] বারো [//translatewiki.net translatewiki.net] মিডিয়াউইকি অনুবাদ করানির কা যানা পারর।',
'allmessages-filter-legend' => 'সাক',
'allmessages-filter-unmodified' => 'নাসিলথাইতে',
'allmessages-filter-all' => 'হাব্বি',
# External editor support
'edit-externally' => 'এর ফাইল এগ পতানির কা বারেদের এপ্লিকেশন আতা',
-'edit-externally-help' => 'আরাকউ হারপানির কা [//www.mediawiki.org/wiki/Manual:External_editors সেটাপর নির্দেশহানি] চা।',
+'edit-externally-help' => 'আরাকউ হারপানির কা [https://www.mediawiki.org/wiki/Manual:External_editors সেটাপর নির্দেশহানি] চা।',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'হাব্বি',
'mypreferences' => 'Penndibaboù',
'prefs-edits' => 'Niver a zegasadennoù :',
'prefsnologin' => 'Digevreet',
-'prefsnologintext' => 'Ret eo deoc\'h bezañ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kevreet]</span> a-benn gellout cheñch ho tibaboù implijer.',
'changepassword' => 'Kemmañ ar ger-tremen',
'prefs-skin' => 'Gwiskadur',
'skin-preview' => 'Rakwelet',
'allmessagesdefault' => 'Kemennadenn dre ziouer',
'allmessagescurrent' => 'Kemennadenn zo bremañ',
'allmessagestext' => "Setu roll ar c'hemennadennoù reizhiad a c'haller kaout en esaouennoù anv MediaWiki.
-Kit da welet [//www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki] ha [//translatewiki.net translatewiki.net] mar fell deoc'h kemer perzh e lec'heladur boutin MediaWiki.",
+Kit da welet [https://www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki] ha [//translatewiki.net translatewiki.net] mar fell deoc'h kemer perzh e lec'heladur boutin MediaWiki.",
'allmessagesnotsupportedDB' => "N'haller ket kaout {{ns:special}}:AllMessages rak diweredekaet eo bet wgUseDatabaseMessages.",
'allmessages-filter-legend' => 'Sil',
'allmessages-filter' => "Silañ dre stad ar c'hemmoù",
# External editor support
'edit-externally' => 'Kemmañ ar restr-mañ dre un arload diavaez',
-'edit-externally-help' => "(Gwelet [//www.mediawiki.org/wiki/Manual:External_editors erbedadennoù staliañ an aozer diavaez] a-benn gouzout hiroc'h).",
+'edit-externally-help' => "(Gwelet [https://www.mediawiki.org/wiki/Manual:External_editors erbedadennoù staliañ an aozer diavaez] a-benn gouzout hiroc'h).",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'pep tra',
'version-hook-subscribedby' => 'Termenet gant',
'version-version' => '(Stumm $1)',
'version-license' => 'Aotre-implijout',
-'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 're all',
'version-poweredby-translators' => 'troerien translatewiki.net',
'version-credits-summary' => 'Karout a rafemp trugarekaat an dud-mañ evit ho kenlabour e [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Pajennoù dibar',
-'specialpages-note' => '----
-* Pajennoù dibar boutin.
+'specialpages-note' => '* Pajennoù dibar boutin.
* <span class="mw-specialpagerestricted">Pajennoù dibar miret strizh.</span>
* <span class="mw-specialpagecached">Pajennoù dibar krubuilhet hepken (a c\'hellfe bezañ re gozh).</span>',
'specialpages-group-maintenance' => "Rentaoù-kont trezalc'h",
'mypreferences' => 'Postavke',
'prefs-edits' => 'Broj izmjena:',
'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Da biste mogli podešavati korisničke postavke, morate <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} biti prijavljeni]</span>.',
'changepassword' => 'Promijeni šifru',
'prefs-skin' => 'Koža',
'skin-preview' => 'Pregled',
'allmessagesdefault' => 'Uobičajeni tekst',
'allmessagescurrent' => 'Trenutni tekst',
'allmessagestext' => 'Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.
-Molimo posjetite [//www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [//translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
+Molimo posjetite [https://www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [//translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
'allmessagesnotsupportedDB' => 'Ova stranica ne može biti korištena jer je <i>wgUseDatabaseMessages</i> isključen.',
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter po stanju podešavanja:',
# External editor support
'edit-externally' => 'Izmjeni ovu datoteku koristeći vanjski program',
-'edit-externally-help' => '(Pogledajte [//www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
+'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sve',
'version-hook-subscribedby' => 'Pretplaćeno od',
'version-version' => '(Verzija $1)',
'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ova wiki je zasnovana na '''[//www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
+'version-poweredby-credits' => "Ova wiki je zasnovana na '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
'version-poweredby-others' => 'ostali',
'version-credits-summary' => 'Željeli bismo se zahvaliti sljedećim ljudima na njihovom doprinosu [[Special:Version|MediaWikiju]].',
'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* Normalne posebne stranice.
+'specialpages-note' => '* Normalne posebne stranice.
* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
'specialpages-group-other' => 'Ostale posebne stranice',
'invalidtitle-unknownnamespace' => 'Títol no vàlid amb espai de noms desconegut de número «$1» i text «$2»',
'exception-nologin' => 'No has iniciat sessió',
'exception-nologin-text' => 'Aquesta pàgina o acció requereix que iniciïs sessió a aquest wiki.',
+'exception-nologin-text-manual' => 'Si us plau, $1 per poder accedir a aquesta pàgina o acció.',
# Virus scanner
'virus-badscanner' => "Mala configuració: antivirus desconegut: ''$1''",
'mypreferences' => 'Preferències',
'prefs-edits' => "Nombre d'edicions:",
'prefsnologin' => 'No heu iniciat cap sessió',
-'prefsnologintext' => 'Heu d\'estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticats]</span> per a seleccionar les preferències d\'usuari.',
'changepassword' => 'Canvia la contrasenya',
'prefs-skin' => 'Aparença',
'skin-preview' => 'prova',
'allmessagesname' => 'Nom',
'allmessagesdefault' => 'Text per defecte',
'allmessagescurrent' => 'Text actual',
-'allmessagestext' => "Tot seguit hi ha una llista dels missatges del sistema que es troben a l'espai de noms ''MediaWiki''. La traducció genèrica d'aquests missatges no s'hauria de fer localment sinó a la traducció del programari MediaWiki. Si voleu ajudar-hi visiteu [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [//translatewiki.net translatewiki.net].",
+'allmessagestext' => "Tot seguit hi ha una llista dels missatges del sistema que es troben a l'espai de noms ''MediaWiki''. La traducció genèrica d'aquests missatges no s'hauria de fer localment sinó a la traducció del programari MediaWiki. Si voleu ajudar-hi visiteu [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [//translatewiki.net translatewiki.net].",
'allmessagesnotsupportedDB' => "No es pot processar '''{{ns:special}}:Allmessages''' perquè la variable '''\$wgUseDatabaseMessages''' està desactivada.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => "Filtra per l'estat de personalització:",
# External editor support
'edit-externally' => 'Edita aquest fitxer fent servir una aplicació externa',
-'edit-externally-help' => '(Vegeu les [//www.mediawiki.org/wiki/Manual:External_editors instruccions de configuració] per a més informació)',
+'edit-externally-help' => '(Vegeu les [https://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuració] per a més informació)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'totes',
'version-hook-subscribedby' => 'Subscrit per',
'version-version' => '(Versió $1)',
'version-license' => 'Llicència',
-'version-poweredby-credits' => "El wiki funciona gràcies a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "El wiki funciona gràcies a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'altres',
'version-poweredby-translators' => 'Traductors de translatewiki.net',
'version-credits-summary' => 'El nostre reconeixement a les següents persones per la seva aportació a [[Special:Version|MediaWiki]]',
# Special:SpecialPages
'specialpages' => 'Pàgines especials',
-'specialpages-note' => '----
-* Pàgines especials normals.
+'specialpages-note-top' => 'Llegenda',
+'specialpages-note' => '* Pàgines especials normals.
* <span class="mw-specialpagerestricted">Pàgines especials restringides.</span>
* <span class="mw-specialpagecached">Pàgines especials en memòria cau (poden ser obsoletes).</span>',
'specialpages-group-maintenance' => 'Informes de manteniment',
'allmessagesdefault' => '默認其消息文字',
'allmessagescurrent' => '現時其文字',
'allmessagestext' => '茲是敆媒體維基命名空間底裏系統消息其蜀萆單單。
-如果汝卜想貢獻通用其媒體維基本地化服務,請訪問[//www.mediawiki.org/wiki/Localisation 媒體維基本地化]共[//translatewiki.net translatewiki.net]。',
+如果汝卜想貢獻通用其媒體維基本地化服務,請訪問[https://www.mediawiki.org/wiki/Localisation 媒體維基本地化]共[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "茲蜀頁𣍐使其,因為'''\$wgUseDatabaseMessages'''已經乞禁止去了。",
# Thumbnails
# External editor support
'edit-externally' => '使外程序來編輯茲文件',
-'edit-externally-help' => '(參考[//www.mediawiki.org/wiki/Manual:External_editors setup instructions]來瞭解更価信息)',
+'edit-externally-help' => '(參考[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions]來瞭解更価信息)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '所有',
'Activeusers' => array( 'Жигара_декъашхой' ),
'Allmessages' => array( 'ГӀирса_хаамаш' ),
'Allpages' => array( 'Массо_агӀонаш' ),
- 'Ancientpages' => array( 'Яззамаш_оцу_терахьца_тяххьара_тадар_дина_долу' ),
+ 'Ancientpages' => array( 'Яззамаш_оцу_терахьца_тӀаьххьара_тадар_дина_долу' ),
'Badtitle' => array( 'Хилийта_йиш_йоцу_цӀе' ),
'Blankpage' => array( 'Еса_агӀо' ),
'Block' => array( 'Блоктоха' ),
- 'Blockme' => array( 'Блоктоха_суна' ),
- 'Booksources' => array( 'Жайнашан_хьосташ' ),
+ 'Booksources' => array( 'Жайнийн_хьосташ' ),
'BrokenRedirects' => array( 'ДIахаьдна_долу_дIасахьажораш' ),
'Categories' => array( 'Категореш' ),
'ChangeEmail' => array( 'Хийца_e-mail' ),
- 'ChangePassword' => array( 'ХийÑ\86а_иÑ\88аÑ\80' ),
+ 'ChangePassword' => array( 'ХийÑ\86а_паÑ\80олÑ\8c' ),
'ComparePages' => array( 'АгӀонаш_юстар' ),
'Confirmemail' => array( 'Бакъе_e-mail' ),
'Contributions' => array( 'Къинхьегам' ),
- 'CreateAccount' => array( 'Кхолла_декъашхон_дӀаяздар' ),
+ 'CreateAccount' => array( 'Кхолла_декъашхочун_дӀаяздар' ),
'Deadendpages' => array( 'Дика_йоцу_агӀонаш' ),
- 'DeletedContributions' => array( 'ДӀабяхкина_къинхьегам' ),
- 'Disambiguations' => array( 'Цхьатера_маьӀна_дерш' ),
- 'DoubleRedirects' => array( 'ШалгӀа_дӀасахьажийнарш' ),
+ 'DeletedContributions' => array( 'ДӀабаьккхина_къинхьегам' ),
+ 'DoubleRedirects' => array( 'Шалха_дӀасахьажийнарш' ),
'EditWatchlist' => array( 'Табе_тергаме_могӀам' ),
'Emailuser' => array( 'Декъашхочунга_кехат' ),
'Export' => array( 'Экспорт' ),
- 'Fewestrevisions' => array( 'Наггахь_беш_болу_хицамаш' ),
+ 'Fewestrevisions' => array( 'Наггахь_беш_болу_хийцамаш' ),
'FileDuplicateSearch' => array( 'Цхьатера_файлаш_лахар' ),
'Filepath' => array( 'Файл_йолче' ),
'Import' => array( 'Импорт' ),
'Invalidateemail' => array( 'Адрес_бакъдар_юхадаккха' ),
'JavaScriptTest' => array( 'JavaScript_тестировать_ян' ),
'BlockList' => array( 'Блоктоьхнарш' ),
- 'LinkSearch' => array( 'Ð¥Ñ\8cажоÑ\80игаш_лахар' ),
- 'Listadmins' => array( 'Куьгалхойн_могӀам' ),
+ 'LinkSearch' => array( 'Ð¥Ñ\8cажоÑ\80агаш_лахар' ),
+ 'Listadmins' => array( 'Ð\9aÑ\83Ñ\8cйгалÑ\85ойн_могÓ\80ам' ),
'Listbots' => array( 'Шаболх_бечара_могӀам' ),
- 'Listfiles' => array( 'Файланши_могӀам' ),
- 'Listgrouprights' => array( 'Декъашхошан_бакъонаш' ),
+ 'Listfiles' => array( 'Файлаш' ),
+ 'Listgrouprights' => array( 'Декъашхойн_бакъонаш' ),
'Listredirects' => array( 'ДIасахьажоран_могIам' ),
'Listusers' => array( 'Декъашхойн_могӀам' ),
'Lockdb' => array( 'Хааман_базан_блоктохар' ),
'Log' => array( 'Тептарш' ),
- 'Lonelypages' => array( 'Байлахь_йисина_агIонаш' ),
+ 'Lonelypages' => array( 'Байлахь_йисина_агӀонаш' ),
'Longpages' => array( 'Беха_яззамаш' ),
- 'MergeHistory' => array( 'ЦÑ\85Ñ\8cаÑ\8cнаÑ\82оÑ\8cÑ\85на_каÑ\82егоÑ\80еÑ\88' ),
+ 'MergeHistory' => array( 'Ð\98Ñ\81Ñ\82оÑ\80и_Ñ\86Ñ\85Ñ\8cаÑ\8cнаÑ\82оÑ\85аÑ\80' ),
'MIMEsearch' => array( 'MIME_чухула_лахар' ),
'Mostcategories' => array( 'Дуккха_категореш_тӀе_тоьхна_йолу_агӀонаш' ),
'Mostimages' => array( 'Массарел_дуккха_лелайо_файлаш' ),
- 'Mostinterwikis' => array( 'Ð\94Ñ\83кÑ\85а_Ñ\8eкÑ\8aаÑ\80вики_Ñ\85Ñ\8cажоÑ\80игаш' ),
- 'Mostlinked' => array( 'Ð\94Ñ\83ккÑ\85а_Ñ\85Ñ\8cажоÑ\80игаÑ\88_Ñ\82Iе_Ñ\82оÑ\8cÑ\85на_йолÑ\83_агIонаш' ),
+ 'Mostinterwikis' => array( 'Ð\94Ñ\83кÑ\85а_Ñ\8eкÑ\8aаÑ\80вики_Ñ\85Ñ\8cажоÑ\80агаш' ),
+ 'Mostlinked' => array( 'Ð\94Ñ\83ккÑ\85а_Ñ\85Ñ\8cажоÑ\80агаÑ\88_Ñ\82Ó\80е_Ñ\82оÑ\8cÑ\85на_йолÑ\83_агÓ\80онаш' ),
'Mostlinkedcategories' => array( 'Дуккха_тӀе_хьажораш_йолу_категореш' ),
'Mostlinkedtemplates' => array( 'Массарел_дуккха_а_леладо_кепаш' ),
- 'Mostrevisions' => array( 'Сих_сиха_нисйина_йолу_агIонаш' ),
+ 'Mostrevisions' => array( 'Сих_сиха_нисйина_йолу_агӀонаш' ),
'Movepage' => array( 'АгӀона_цӀе_хийцар' ),
'Mycontributions' => array( 'Сан_къинхьегам' ),
'Mypage' => array( 'Сан_агӀо' ),
'Myuploads' => array( 'Сан_файлаш' ),
'Newimages' => array( 'Керла_файлаш' ),
'Newpages' => array( 'Керла_агӀонаш' ),
- 'PermanentLink' => array( 'Гуттарлера_хьажориг' ),
- 'Popularpages' => array( 'ГӀарялла_агӀонаш' ),
+ 'PasswordReset' => array( 'Пароль_кхоссар' ),
+ 'PermanentLink' => array( 'Гуттарлера_хьажораг' ),
+ 'Popularpages' => array( 'ГӀараяьлла_агӀонаш' ),
'Preferences' => array( 'ГӀирсаш' ),
- 'Prefixindex' => array( 'Хьалха_агIонашан_цIераш_хIотто_йеза' ),
- 'Protectedpages' => array( 'ГIаролла_дина_агIонаш' ),
- 'Protectedtitles' => array( 'ГIаролла_дина_цIераш' ),
+ 'Prefixindex' => array( 'Хьалха_агӀонийн_цӀераш_хӀотто_еза' ),
+ 'Protectedpages' => array( 'ГӀаролла_дина_агӀонаш' ),
+ 'Protectedtitles' => array( 'ГӀаролла_дина_цӀераш' ),
'Randompage' => array( 'Цахууш_нисйелла_агIо' ),
'Randomredirect' => array( 'Цахууш_нисделла_дIасахьажор' ),
'Recentchanges' => array( 'Керла_нисдарш' ),
'Recentchangeslinked' => array( 'Кхуьнца_долу_нисдарш' ),
'Revisiondelete' => array( 'ДӀадяхна_нисдарш' ),
'Search' => array( 'Лахар' ),
- 'Shortpages' => array( 'Ð\91оÑ\86оа_Ñ\8fззамаÑ\88' ),
+ 'Shortpages' => array( 'Боца_яззамаш' ),
'Specialpages' => array( 'Леррина_агӀонаш' ),
'Statistics' => array( 'Бухехьдерг' ),
'Tags' => array( 'Билгалонаш' ),
- 'Unblock' => array( 'БлокдӀаякхар' ),
+ 'Unblock' => array( 'БлокдӀаяккхар' ),
'Uncategorizedcategories' => array( 'Категореш_йоцу_категореш' ),
'Uncategorizedimages' => array( 'Категореш_йоцу_файлаш' ),
- 'Uncategorizedpages' => array( 'Категореш_йоцу_агIонаш' ),
+ 'Uncategorizedpages' => array( 'Категореш_йоцу_агӀонаш' ),
'Uncategorizedtemplates' => array( 'Категореш_йоцу_кепаш' ),
'Undelete' => array( 'МеттахӀоттор' ),
'Unlockdb' => array( 'БлокдӀаякхар_ХБ' ),
'Unusedtemplates' => array( 'Лелош_доцу_кепаш' ),
'Upload' => array( 'Файл_чуяккхар' ),
'UploadStash' => array( 'ДӀахьулйина_файл_чуяккхар' ),
- 'Userlogin' => array( 'ЧÑ\83валаÑ\80/Ñ\8fлар' ),
- 'Userlogout' => array( 'Ð\90Ñ\80авалаÑ\80/Ñ\8fлар' ),
+ 'Userlogin' => array( 'ЧÑ\83далар' ),
+ 'Userlogout' => array( 'Ð\90Ñ\80адалар' ),
'Userrights' => array( 'Бакъона_урхалладар' ),
'Version' => array( 'Верси' ),
'Wantedcategories' => array( 'Оьшуш_йолу_категореш' ),
'Wantedfiles' => array( 'Оьшуш_йолу_файлаш' ),
- 'Wantedpages' => array( 'Оьшуш_йолу_агIонаш' ),
+ 'Wantedpages' => array( 'Оьшуш_йолу_агӀонаш' ),
'Wantedtemplates' => array( 'Оьшуш_йолу_кепаш' ),
'Watchlist' => array( 'Тергаме_могӀам' ),
'Whatlinkshere' => array( 'Хьажоригаш_кхузе' ),
- 'Withoutinterwiki' => array( 'Ð\9aÑ\85еÑ\87Ñ\83_меÑ\82Ñ\82анаÑ\88ан_Ñ\85Ñ\8cажоÑ\80иг_йоÑ\86Ñ\83_агIонаш' ),
+ 'Withoutinterwiki' => array( 'ЮкÑ\8aаÑ\80вики_Ñ\85Ñ\8cажоÑ\80агаÑ\88_йоÑ\86Ñ\83_агÓ\80онаш' ),
);
$magicWords = array(
Декъашхо къастичи, цун керла файлаш гойту.',
'listfiles_search_for' => 'Лаха хIуман цIарца:',
'imgfile' => 'файл',
-'listfiles' => 'Файлийн могÓ\80ам',
+'listfiles' => 'ФайлаÑ\88',
'listfiles_date' => 'Терахь',
'listfiles_name' => 'Файлан цӀе',
'listfiles_user' => 'Декъашхо',
'allmessagesdefault' => 'Шаьшха йоза',
'allmessagescurrent' => 'Карарчу хенан йоза',
'allmessagestext' => 'ХӀара «MediaWiki» цӀерийн меттигера системан хаамийн могӀа бу.
-Хьайна MediaWiki тая лууш делахь, дехар до, проект [//translatewiki.net translatewiki.net] [//www.mediawiki.org/wiki/Localisation юьйцучу хьажа].',
+Хьайна MediaWiki тая лууш делахь, дехар до, проект [//translatewiki.net translatewiki.net] [https://www.mediawiki.org/wiki/Localisation юьйцучу хьажа].',
'allmessages-filter-legend' => 'Литтар',
'allmessages-filter' => 'Литтар оцу хьола хийцамца:',
'allmessages-filter-unmodified' => 'Хийцан йоцурш',
# External editor support
'edit-externally' => 'Рéдаккха хlокху хlуман, арахьара диллагlарам лелош',
-'edit-externally-help' => '(мадарра хьажа. оцу [//www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
+'edit-externally-help' => '(мадарра хьажа. оцу [https://www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'массо',
# Special:SpecialPages
'specialpages' => 'Леррина агlонаш',
-'specialpages-note' => '----
-* Гуттарлера белха агlонаш.
+'specialpages-note' => '* Гуттарлера белха агlонаш.
* <strong class="mw-specialpagerestricted">Кlеззиг таронаш йолу леррина агlонаш.</strong>',
'specialpages-group-maintenance' => 'Жамlаш гlирса хьашташ кхочушдар',
'specialpages-group-other' => 'Кхин гlуллакхан агlонаш',
'mypreferences' => 'Akong preperensiya',
'prefs-edits' => 'Gidaghanon sa nausab:',
'prefsnologin' => 'Wala maka-log-in',
-'prefsnologintext' => 'Kinahanglan ikaw <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} naka-log-in]</span> aron ma-set ang imong mga preperensiya.',
'changepassword' => 'Usba ang pasword',
'prefs-skin' => 'Panit',
'skin-preview' => 'Paunang tan-aw',
# External editor support
'edit-externally' => 'Usba kining payl gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa dugang nga impormasyon)',
+'edit-externally-help' => '(Tan-awa ang [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa dugang nga impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tanan',
* @author Jatrobat
* @author Magalahi
* @author MisterWiki
+ * @author Shirayuki
*/
$namespaceNames = array(
'mypreferences' => "I ga'ña-hu",
'prefs-edits' => 'Numirun tinilaika:',
'prefsnologin' => "Ti ma'log in",
-'prefsnologintext' => "Un nesisita [[Special:UserLogin|muna'log in]] para un tulaika i ga'ña-mu muna'sesetbi.",
'changepassword' => 'Tulaika password',
'prefs-skin' => 'Låssas',
'skin-preview' => "Na'annok",
# External editor support
'edit-externally' => 'Tulaika i atkibu yan un aplikasion sanhiyong',
-'edit-externally-help' => 'Hånao para [//www.mediawiki.org/wiki/Manual:External_editors i plantan chinachalani] para mas infotmasion.',
+'edit-externally-help' => 'Hånao para [https://www.mediawiki.org/wiki/Manual:External_editors i plantan chinachalani] para mas infotmasion.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todu',
'mypreferences' => 'ھەڵبژاردەکان',
'prefs-edits' => 'ژمارەی گۆڕانکارییەکان:',
'prefsnologin' => 'لەژوورەوە نیت',
-'prefsnologintext' => 'بۆ دانانی هەڵبژاردەکانی بەکارهێنەر دەبێ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} بچیتە ژوورەوە]</span>.',
'changepassword' => 'تێپەڕوشە بگۆڕە',
'prefs-skin' => 'پێستە',
'skin-preview' => 'پێش بینین',
'allmessagesdefault' => 'دەقی بنەڕەتی',
'allmessagescurrent' => 'دەقی ھەنووکە',
'allmessagestext' => 'ئەمە لیستێکە لە پەیامەکانی بەردەست لە بۆشاییناوی میدیاویکی.
-تکایە سەردانی [//www.mediawiki.org/wiki/Localisation ناوچەییکردنی میدیاویکی] و [//translatewiki.net translatewiki.net] بکە ئەگەر دەتەوێ لە ناوچەییکردنی میدیاویکی بە گشتی بەشداری بکەیت.',
+تکایە سەردانی [https://www.mediawiki.org/wiki/Localisation ناوچەییکردنی میدیاویکی] و [//translatewiki.net translatewiki.net] بکە ئەگەر دەتەوێ لە ناوچەییکردنی میدیاویکی بە گشتی بەشداری بکەیت.',
'allmessagesnotsupportedDB' => "ئەم لاپەڕە ناتوانی بەکاربێت لەبەر ئەوەی '''\$wgUseDatabaseMessages''' لەکار خستراوە.",
'allmessages-filter-legend' => 'پاڵێو',
'allmessages-filter-unmodified' => 'نەگۆڕدراو',
# External editor support
'edit-externally' => 'دەستکاریی ئەم پەڕەیە بکە بە بەکارھێنانی پڕۆگرامێکی دەرەکی',
-'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [//www.mediawiki.org/wiki/Manual:External_editors ڕێنماییەکانی دامەزراندن] بکە)',
+'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [https://www.mediawiki.org/wiki/Manual:External_editors ڕێنماییەکانی دامەزراندن] بکە)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ھەموو',
# Special:SpecialPages
'specialpages' => 'پەڕە تایبەتەکان',
-'specialpages-note' => '----
-* پەڕە تایبەتە ئاسایییەکان.
+'specialpages-note' => '* پەڕە تایبەتە ئاسایییەکان.
* <span class="mw-specialpagerestricted">پەڕە تایبەتە بەرگریلێکراوەکان.</span>',
'specialpages-group-maintenance' => 'ڕاپۆرتەکانی چاکسازی',
'specialpages-group-other' => 'پەڕە تایبەتەکانی دیکە',
# External editor support
'edit-externally' => 'Islan ang mini nga file gamit ang panluwas nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [//www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
+'edit-externally-help' => '(Tan-awa ang [https://www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tanan',
'mypreferences' => 'Сазламалар',
'prefs-edits' => 'Денъиштирмелер сайысы:',
'prefsnologin' => 'Отурым ачмадынъыз',
-'prefsnologintext' => 'Шахсий сазламаларынъызны денъиштирмек ичюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} отурым ачмакъ]</span> керексинъиз.',
'changepassword' => 'Пароль денъиштир',
'prefs-skin' => 'Ресимлеме',
'skin-preview' => 'Бакъып чыкъув',
'allmessagesdefault' => 'Оригиналь метин',
'allmessagescurrent' => 'Шимди къулланылгъан метин',
'allmessagestext' => 'Ишбу джедвель MediaWiki-де мевджут олгъан бутюн система беянатларынынъ джедвелидир.
-MediaWiki интерфейсининъ чешит тиллерге терджиме этювде иштирак этмеге истесенъиз [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ве [//translatewiki.net translatewiki.net] саифелерине зиярет этинъиз.',
+MediaWiki интерфейсининъ чешит тиллерге терджиме этювде иштирак этмеге истесенъиз [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ве [//translatewiki.net translatewiki.net] саифелерине зиярет этинъиз.',
# Thumbnails
'thumbnail-more' => 'Буют',
# External editor support
'edit-externally' => 'Файл узеринде компьютеринъизде булунгъан программалар иле денъишикликлер япынъыз',
-'edit-externally-help' => '(Даа зияде малюмат ичюн [//www.mediawiki.org/wiki/Manual:External_editors бу саифеге] (Инглиздже) бакъып оласынъыз.)',
+'edit-externally-help' => '(Даа зияде малюмат ичюн [https://www.mediawiki.org/wiki/Manual:External_editors бу саифеге] (Инглиздже) бакъып оласынъыз.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'эписини',
'mypreferences' => 'Sazlamalar',
'prefs-edits' => 'Deñiştirmeler sayısı:',
'prefsnologin' => 'Oturım açmadıñız',
-'prefsnologintext' => 'Şahsiy sazlamalarıñıznı deñiştirmek içün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} oturım açmaq]</span> kereksiñiz.',
'changepassword' => 'Parol deñiştir',
'prefs-skin' => 'Resimleme',
'skin-preview' => 'Baqıp çıquv',
'allmessagesdefault' => 'Original metin',
'allmessagescurrent' => 'Şimdi qullanılğan metin',
'allmessagestext' => 'İşbu cedvel MediaWikide mevcut olğan bütün sistema beyanatlarınıñ cedvelidir.
-MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege isteseñiz [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ve [//translatewiki.net translatewiki.net] saifelerine ziyaret etiñiz.',
+MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege isteseñiz [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ve [//translatewiki.net translatewiki.net] saifelerine ziyaret etiñiz.',
# Thumbnails
'thumbnail-more' => 'Büyüt',
# External editor support
'edit-externally' => 'Fayl üzerinde kompyuteriñizde bulunğan programmalar ile deñişiklikler yapıñız',
-'edit-externally-help' => '(Daa ziyade malümat içün [//www.mediawiki.org/wiki/Manual:External_editors bu saifege] (İnglizce) baqıp olasıñız.)',
+'edit-externally-help' => '(Daa ziyade malümat içün [https://www.mediawiki.org/wiki/Manual:External_editors bu saifege] (İnglizce) baqıp olasıñız.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'episini',
'invalidtitle-knownnamespace' => 'Neplatný název se jmenným prostorem „$2“ a textem „$3“',
'invalidtitle-unknownnamespace' => 'Neplatný název s neznámým číslem jmenného prostoru $1 a textem „$2“',
'exception-nologin' => 'Nejste přihlášen(a)',
-'exception-nologin-text' => 'Tato stránka nebo akce vyžaduje, abyste byli na této wiki přihlášeni.',
+'exception-nologin-text' => 'Pro přístup na tuto stránku nebo k této akci se prosím [[Special:Userlogin|přihlaste]].',
+'exception-nologin-text-manual' => 'Pro přístup na tuto stránku nebo k této akci se musíte $1.',
# Virus scanner
'virus-badscanner' => "Špatná konfigurace: neznámý antivirový program: ''$1''",
'mypreferences' => 'Nastavení',
'prefs-edits' => 'Počet editací:',
'prefsnologin' => 'Nejste přihlášen(a)!',
-'prefsnologintext' => 'Pokud chcete měnit uživatelská nastavení, musíte se <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} přihlásit]</span>.',
+'prefsnologintext2' => 'Pro změnu uživatelských nastavení se musíte $1.',
'changepassword' => 'Změna hesla',
'prefs-skin' => 'Vzhled',
'skin-preview' => 'Náhled',
e-mailem: $PAGEEDITOR_EMAIL
na wiki: $PAGEEDITOR_WIKI
-Dokud stránku nenavštívíte, nebudou vám zasílána další oznámení o změnách této stránky. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
+Do doby, než stránku navštívíte jako přihlášený uživatel, vám další oznámení k této stránce nebudou zasílána. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
- S pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}
+S pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}
--
Změnit nastavení e-mailových oznámení můžete na
'allmessagesdefault' => 'Původní text',
'allmessagescurrent' => 'Aktuální text',
'allmessagestext' => 'Toto je seznam všech hlášení dostupných ve jmenném prostoru MediaWiki.
-Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [//www.mediawiki.org/wiki/Localisation lokalizační stránku na mediawiki.org] a [//translatewiki.net server translatewiki.net].',
+Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [https://www.mediawiki.org/wiki/Localisation lokalizační stránku na mediawiki.org] a [//translatewiki.net server translatewiki.net].',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages není podporováno, neboť wgUseDatabaseMessages je vypnuto.',
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Filtr podle stavu:',
'svg-long-desc' => 'soubor SVG, nominální rozměr: $1 × $2 pixelů, velikost souboru: $3',
'svg-long-desc-animated' => 'Animovaný soubor SVG, nominální rozměr: $1 × $2 pixelů, velikost souboru: $3',
'svg-long-error' => 'Neplatný soubor SVG: $1',
-'show-big-image' => 'Obrázek ve vyšším rozlišení',
+'show-big-image' => 'Původní soubor',
'show-big-image-preview' => 'Velikost tohoto náhledu: $1.',
'show-big-image-other' => '{{PLURAL:$2|Jiné|Jiná}} rozlišení: $1.',
'show-big-image-size' => '$1 × $2 pixelů',
# External editor support
'edit-externally' => 'Editovat tento soubor v externím programu',
-'edit-externally-help' => '(Více informací najdete v [//www.mediawiki.org/wiki/Manual:External_editors nápovědě pro nastavení].)',
+'edit-externally-help' => '(Více informací najdete v [https://www.mediawiki.org/wiki/Manual:External_editors nápovědě pro nastavení].)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'všechny',
'version-hook-subscribedby' => 'Volán z',
'version-version' => '(Verze $1)',
'version-license' => 'Licence',
-'version-poweredby-credits' => "Tato wiki běží na '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Tato wiki běží na '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
'version-poweredby-others' => 'další',
'version-poweredby-translators' => 'překladatelé na translatewiki.net',
'version-credits-summary' => 'Následujícím lidem bychom rádi poděkovali za jejich příspěvky [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Speciální stránky',
-'specialpages-note' => '----
-* Normální speciální stránky
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normální speciální stránky
* <span class="mw-specialpagerestricted">Speciální stránky s vyhrazeným přístupem</span>',
'specialpages-group-maintenance' => 'Údržba',
'specialpages-group-other' => 'Ostatní',
'allmessagesdefault' => 'Domëslny tekst',
'allmessagescurrent' => 'Aktualny tekst',
'allmessagestext' => 'To je zestôwk systemòwëch ògłosów przistãpnëch w rumie mionów MediaWiki.
-Proszã zazdrzë na [//www.mediawiki.org/wiki/Localisation Lokalizacëjô MediaWiki] ë [//translatewiki.net translatewiki.net] jeżlë chcesz dolmaczëc softwôrã MediaWiki.',
+Proszã zazdrzë na [https://www.mediawiki.org/wiki/Localisation Lokalizacëjô MediaWiki] ë [//translatewiki.net translatewiki.net] jeżlë chcesz dolmaczëc softwôrã MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nie mòże bëc brëkòwónô, temù że '''\$wgUseDatabaseMessages''' je wëłączony.",
# Thumbnails
# External editor support
'edit-externally' => 'Editëjë nen lopk brëkùjąc bùtnowi aplikacëji',
-'edit-externally-help' => '(Zdrzë na [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] dlô dobëcô wicy wëdowiédzë).',
+'edit-externally-help' => '(Zdrzë na [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] dlô dobëcô wicy wëdowiédzë).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'wszëtczé',
# External editor support
'edit-externally' => 'дѣла иꙁмѣнѥниѥ вънѣщьниимь орѫдиѥмь',
-'edit-externally-help' => '(ꙁьри [//www.mediawiki.org/wiki/Manual:External_editors помощь] вѧщєи плирофорїѩ дѣлꙗ)',
+'edit-externally-help' => '(ꙁьри [https://www.mediawiki.org/wiki/Manual:External_editors помощь] вѧщєи плирофорїѩ дѣлꙗ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'вьсꙗ',
Fe fydd gweinyddwyr eraill {{SITENAME}} o hyd yn gallu gweld yr hyn a guddiwyd. Fe allant ei ddatguddio trwy ddefnyddio'r dudalen arbennig hon, cyhyd ag nad oes cyfyngiadau ychwanegol wedi eu gosod.",
'revdelete-confirm' => "Byddwch gystal â chadarnhau eich bod yn bwriadu gwneud hyn, eich bod yn deall yr effaith a gaiff, a'ch bod yn ei wneud yn ôl y [[{{MediaWiki:Policy-url}}|y polisi]].",
'revdelete-suppress-text' => "'''Dim ond''' yn yr achosion sy'n dilyn y dylech fentro cuddio gwybodaeth:
+* Gwybodaeth a all fod yn enllib
* Gwybodaeth bersonol anaddas
*: ''cyfeiriad cartref, rhif ffôn, rhif yswiriant cenedlaethol, ayb.''",
'revdelete-legend' => 'Gosod cyfyngiadau ar y gallu i weld',
'revdelete-hide-user' => 'Enw defnyddiwr/IP y golygydd',
'revdelete-hide-restricted' => 'Gosod y cyfyngiadau gweld data ar weinyddwyr yn ogystal ag eraill',
'revdelete-radio-same' => '(peidier â newid)',
-'revdelete-radio-set' => 'Gweladwy',
-'revdelete-radio-unset' => 'Cudd',
+'revdelete-radio-set' => 'Cudd',
+'revdelete-radio-unset' => 'Gweladwy',
'revdelete-suppress' => 'Atal data oddi wrth Weinyddwyr yn ogystal ag eraill',
'revdelete-unsuppress' => "Tynnu'r cyfyngiadau ar y golygiadau a adferwyd",
'revdelete-log' => 'Rheswm:',
'mypreferences' => 'Dewisiadau',
'prefs-edits' => 'Nifer y golygiadau:',
'prefsnologin' => 'Nid ydych wedi mewngofnodi',
-'prefsnologintext' => 'Rhaid i chi <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} fewngofnodi]</span> er mwyn gosod eich dewisiadau defnyddiwr.',
'changepassword' => 'Newid y cyfrinair',
'prefs-skin' => 'Gwedd',
'skin-preview' => 'Rhagolwg',
'allmessagesdefault' => 'Testun rhagosodedig',
'allmessagescurrent' => 'Testun cyfredol',
'allmessagestext' => "Dyma restr o'r holl negeseuon yn y parth MediaWici.
-Os ydych am gyfrannu at y gwaith o gyfieithu ar gyfer holl prosiectau MediaWiki ar y cyd, mae croeso i chi ymweld â [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [//translatewiki.net translatewiki.net].",
+Os ydych am gyfrannu at y gwaith o gyfieithu ar gyfer holl prosiectau MediaWiki ar y cyd, mae croeso i chi ymweld â [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [//translatewiki.net translatewiki.net].",
'allmessagesnotsupportedDB' => "Nid yw '''{{ns:special}}:PobNeges''' yn cael ei gynnal gan fod '''\$wgUseDatabaseMessages''' wedi ei ddiffodd.",
'allmessages-filter-legend' => 'Hidl',
'allmessages-filter' => 'Hidlo yn ôl eu cyflwr addasu:',
'pageinfo-length' => 'Hyd y dudalen (beitiau)',
'pageinfo-article-id' => 'ID y dudalen',
'pageinfo-language' => 'Iaith cynnwys y dudalen',
+'pageinfo-content-model' => 'Ffurf cynnwys y dudalen',
'pageinfo-robot-policy' => 'Rhestrwyd gan robot',
'pageinfo-robot-index' => 'Caniateir',
'pageinfo-robot-noindex' => 'Gwrthodedig',
'svg-long-desc' => 'Ffeil SVG, maint mewn enw $1 × $2 picsel, maint y ffeil: $3',
'svg-long-desc-animated' => 'Ffeil SVG animeiddiedig, maint mewn enw $1 × $2 picsel, maint y ffeil: $3',
'svg-long-error' => 'Ffeil SVG annilys: $1',
-'show-big-image' => 'Maint llawn',
+'show-big-image' => 'Y ffeil gwreiddiol',
'show-big-image-preview' => 'Maint y rhagolwg: $1.',
'show-big-image-other' => '{{PLURAL:$2|Datrysiad arall|Datrysiad arall|Datrysiadau eraill|Datrysiadau eraill|Datrysiadau eraill|Datrysiadau eraill}}: $1.',
'show-big-image-size' => '$1 × $2 picsel',
# External editor support
'edit-externally' => 'Golygwch y ffeil gyda rhaglen allanol',
-'edit-externally-help' => '(Gwelwch y [//www.mediawiki.org/wiki/Manual:External_editors cyfarwyddiadau gosod] am fwy o wybodaeth)',
+'edit-externally-help' => '(Gwelwch y [https://www.mediawiki.org/wiki/Manual:External_editors cyfarwyddiadau gosod] am fwy o wybodaeth)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'holl',
'confirm-unwatch-button' => 'Iawn',
'confirm-unwatch-top' => 'Tynner y dudalen hon oddi ar eich rhestr wylio?',
+# Separators for various lists, etc.
+'quotation-marks' => "'$1'",
+
# Multipage image navigation
'imgmultipageprev' => "← i'r dudalen gynt",
'imgmultipagenext' => "i'r dudalen nesaf →",
'version-hook-subscribedby' => 'Tanysgrifwyd gan',
'version-version' => '(Fersiwn $1)',
'version-license' => 'Trwydded',
-'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[//www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
+'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[https://www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
'version-poweredby-others' => 'eraill',
'version-poweredby-translators' => 'cyfieithwyr translatewiki.net',
'version-credits-summary' => 'Hoffem gydnabod cyfraniad y bobl canlynol i [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Tudalennau arbennig',
-'specialpages-note' => '----
-* Tudalennau arbennig ar gael i bawb.
+'specialpages-note' => '* Tudalennau arbennig ar gael i bawb.
* <span class="mw-specialpagerestricted">Tudalennau arbennig cyfyngedig.</span>
* <span class="mw-specialpagecached">Tudalennau arbennig wedi eu cynhyrchu o\'r celc (gallant fod heb eu harfer rhagor).</span>',
'specialpages-group-maintenance' => 'Adroddiadau cynnal a chadw',
* @author Qaqqalik
* @author Remember the dot
* @author Sarrus
+ * @author Shirayuki
* @author Simeondahl
* @author Sir48
* @author Slomox
'gotaccount' => 'Har du allerede en konto? $1.',
'gotaccountlink' => 'Log på',
'userlogin-resetlink' => 'Har du glemt dine login oplysninger?',
-'userlogin-resetpassword-link' => 'Nulstil din adgangskode',
+'userlogin-resetpassword-link' => 'Glemt din adgangskode?',
'helplogin-url' => 'Help:Logge på',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjælp til at logge på]]',
'userlogin-loggedin' => 'Du er allerede logget på som {{GENDER:$1|$1}}.
'passwordsent' => 'En ny adgangskode er sendt til e-mailadressen, som er registreret for "$1".
Du bør logge på og ændre din adgangskode straks efter du har modtaget e-mailen.',
'blocked-mailpassword' => 'Din IP-adresse er spærret for ændring af sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
-'eauthentsent' => 'En bekræftelsesmail er sendt til den angivne e-mailadresse.
+'eauthentsent' => 'En e-mailbekræftelse er sendt til den angivne e-mailadresse.
-Før en e-mail kan modtages af andre brugere af {{SITENAME}}-mailfunktionen, skal adressen og dens tilhørsforhold til denne bruger bekræftes. Følg venligst anvisningerne i denne mail.',
+Før flere e-mails bliver sendt til kontoen, skal du følge instruktionerne i e-mailen, for at bekræfte at kontoen rent faktisk er din.',
'throttled-mailpassword' => 'Indenfor {{PLURAL:$1|den sidste time|de sidste $1 timer}} er der allerede sendt en ny adgangskode. For at forhindre misbrug af funktionen, kan der kun bestilles en ny adgangskode én gang for hver {{PLURAL:$1|time|$1 timer}}.',
'mailerror' => 'Fejl ved afsendelse af e-mail: $1',
'acct_creation_throttle_hit' => 'Besøgende med samme IP-adresse som dig har oprettet {{PLURAL:$1|en konto|$1 kontoer}} det sidste døgn, og det er ikke tilladt at oprette flere.
Derfor kan besøgende ikke oprette flere kontoer fra denne IP-adresse i øjeblikket.',
-'emailauthenticated' => 'Din e-mailadresse blev bekræftet $2 $3.',
+'emailauthenticated' => 'Din e-mailadresse blev bekræftet den $2 kl. $3.',
'emailnotauthenticated' => 'Din e-mailadresse er endnu ikke bekræftet.
Ingen e-mail vil blive sendt for de følgende funktioner.',
'noemailprefs' => 'Angiv en e-mailadresse, så følgende funktioner er til rådighed.',
'revdelete-text' => "'''Slettede versioner vil fortsat vises i sidehistorik og på logsider, men dele af deres indhold vil ikke være offentligt tilgængeligt.'''
Andre administratorer på {{SITENAME}} vil fortsat være i stand til at se det skjulte indhold og kan gendanne det igen, medmindre der laves yderligere restriktioner.",
'revdelete-confirm' => 'Vær venlig at bekræfte at du vil gøre dette, at du forstår konsekvenserne, og at du gør det i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].',
-'revdelete-suppress-text' => "Skjulning bør '''kun''' bruges i de følgende tilfælde:
+'revdelete-suppress-text' => "Der bør '''kun''' skjules i de følgende tilfælde:
+* Potentielt injurierende oplysninger
* Upassende personlige oplysninger
-*: ''hjemadresser og -telefonnumre, CPR-numre og lign.''",
+*: ''hjemmeadresser og -telefonnumre, CPR-numre og lign.''",
'revdelete-legend' => 'Fastlægge begrænsninger for versionerne:',
-'revdelete-hide-text' => 'Skjul versionens tekst',
+'revdelete-hide-text' => 'Tekst for versionen',
'revdelete-hide-image' => 'Skjul filindhold',
'revdelete-hide-name' => 'Skjul handling og mål',
-'revdelete-hide-comment' => 'Skjul ændringskommentar',
-'revdelete-hide-user' => 'Skjul brugerens brugernavn/IP',
+'revdelete-hide-comment' => 'Redigeringssammendrag',
+'revdelete-hide-user' => 'Brugerens brugernavn/IP-adrsse',
'revdelete-hide-restricted' => 'Skjul også informationen for administratorer',
'revdelete-radio-same' => '(ikke ændre)',
-'revdelete-radio-set' => 'Ja',
-'revdelete-radio-unset' => 'Nej',
+'revdelete-radio-set' => 'Skjult',
+'revdelete-radio-unset' => 'Synligt',
'revdelete-suppress' => 'Skjul også informationen for administratorer',
'revdelete-unsuppress' => 'Ophæv begrænsninger for gendannede versioner',
'revdelete-log' => 'Begrundelse:',
'mypreferences' => 'Indstillinger',
'prefs-edits' => 'Antal redigeringer:',
'prefsnologin' => 'Ikke logget på',
-'prefsnologintext' => 'Du skal være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget på]</span> for at ændre brugerindstillinger.',
'changepassword' => 'Skift adgangskode',
'prefs-skin' => 'Udseende',
'skin-preview' => 'Forhåndsvisning',
'allmessagesdefault' => 'Standardtekst',
'allmessagescurrent' => 'Nuværende tekst',
'allmessagestext' => 'Dette er en liste med alle systembeskeder i MediaWiki-navnerummet.
-Besøg venligst [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisering] og [//translatewiki.net translatewiki.net] hvis du ønsker at bidrage til den generelle lokalisering (oversættelse og andre lokale tilpasninger) af MediaWiki.',
+Besøg venligst [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisering] og [//translatewiki.net translatewiki.net] hvis du ønsker at bidrage til den generelle lokalisering (oversættelse og andre lokale tilpasninger) af MediaWiki.',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages ikke understøttet fordi wgUseDatabaseMessages er slået fra.',
'allmessages-filter-legend' => 'Filtrér',
'allmessages-filter' => 'Filtrér efter tilpasningsstatus:',
'pageinfo-length' => 'Sidelængde (i bytes)',
'pageinfo-article-id' => 'Side-ID',
'pageinfo-language' => 'Sprog for sideindholdet',
+'pageinfo-content-model' => 'Sidens indhold er',
'pageinfo-robot-policy' => 'Indeksering af robotter',
'pageinfo-robot-index' => 'Tilladt',
'pageinfo-robot-noindex' => 'Ikke tilladt',
'svg-long-desc' => 'SVG fil, basisstørrelse $1 × $2 punkters, størrelse: $3',
'svg-long-desc-animated' => 'Animeret SVG-fil, basisstørrelse $1 × $2 punkter, filstørrelse: $3',
'svg-long-error' => 'Ugyldig SVG-fil: $1',
-'show-big-image' => 'Version i større opløsning',
+'show-big-image' => 'Oprindelige fil',
'show-big-image-preview' => 'Størrelse af denne forhåndsvisning: $1.',
'show-big-image-other' => '{{PLURAL:$2|Anden opløsning|Andre opløsninger}}: $1.',
'show-big-image-size' => '$1 × $2 pixels',
# External editor support
'edit-externally' => 'Rediger denne fil med en ekstern editor',
-'edit-externally-help' => '(Se [//www.mediawiki.org/wiki/Manual:External_editors setup instruktionerne] for mere information)',
+'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors setup instruktionerne] for mere information)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alle',
'version-hook-subscribedby' => 'Brugt af',
'version-version' => '(Version $1)',
'version-license' => 'Licens',
-'version-poweredby-credits' => "Denne wiki er drevet af '''[//www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Denne wiki er drevet af '''[https://www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andre',
'version-poweredby-translators' => 'translatewiki.net oversættere',
'version-credits-summary' => 'Vi vil gerne anerkende følgende personer for deres bidrag til [[Special:Version|MediaWiki]].',
# Special:Redirect
'redirect' => 'Omdirigering pga. fil, bruger eller udgave ID',
'redirect-legend' => 'Omstilling til en fil eller en side',
-'redirect-summary' => "Denne side omdirigerer en (hvis filnavnet er angivet), en side (hvis udgave ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet).",
+'redirect-summary' => "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
'redirect-submit' => 'Kør',
'redirect-lookup' => 'Slå op:',
'redirect-value' => 'Værdi:',
# Special:SpecialPages
'specialpages' => 'Specialsider',
-'specialpages-note' => '----
-* Normale specialsider.
+'specialpages-note' => '* Normale specialsider.
* <span class="mw-specialpagerestricted">Specialsider med begrænset adgang.</span>',
'specialpages-group-maintenance' => 'Vedligeholdelsesside',
'specialpages-group-other' => 'Andre specialsider',
'tags-hitcount-header' => 'Taggede ændringer',
'tags-active-yes' => 'Ja',
'tags-active-no' => 'Nej',
-'tags-edit' => 'Redigér',
+'tags-edit' => 'redigér',
'tags-hitcount' => '{{PLURAL:$1|en ændring|$1 ændringer}}',
# Special:ComparePages
'invalidtitle-knownnamespace' => 'Ungültiger Titel mit Namensraum „$2“ und Text „$3“',
'invalidtitle-unknownnamespace' => 'Ungültiger Titel mit unbekannter Namensraumnummer $1 und Text „$2“',
'exception-nologin' => 'Nicht angemeldet',
-'exception-nologin-text' => 'Diese Seite oder Aktion erfordert, dass du auf diesem Wiki angemeldet bist.',
+'exception-nologin-text' => 'Du musst dich [[Special:Userlogin|anmelden]], um auf diese Seite oder Aktion zugreifen zu können.',
+'exception-nologin-text-manual' => 'Du musst dich $1, um auf diese Seite oder Aktion zugreifen zu können.',
# Virus scanner
'virus-badscanner' => "Fehlerhafte Konfiguration: unbekannter Virenscanner: ''$1''",
'mypreferences' => 'Einstellungen',
'prefs-edits' => 'Anzahl der Bearbeitungen:',
'prefsnologin' => 'Nicht angemeldet',
-'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} angemeldet]</span> sein, um deine Einstellungen ändern zu können.',
+'prefsnologintext2' => 'Du musst dich $1, um Benutzereinstellungen festzulegen.',
'changepassword' => 'Passwort ändern',
'prefs-skin' => 'Benutzeroberfläche',
'skin-preview' => 'Vorschau',
E-Mail: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Bei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.
+Bei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder angemeldet besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.
Dein freundliches {{SITENAME}}-Benachrichtigungssystem
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Aktueller Text',
'allmessagestext' => 'Dies ist eine Liste der MediaWiki-Systemtexte.
-Bitte besuche die Seiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], sofern du dich an der Lokalisierung von MediaWiki beteiligen möchtest.',
+Bitte besuche die Seiten [https://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], sofern du dich an der Lokalisierung von MediaWiki beteiligen möchtest.',
'allmessagesnotsupportedDB' => 'Diese Spezialseite steht nicht zur Verfügung, da sie über den Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter für angepassten Zustand:',
'svg-long-desc' => 'SVG-Datei, Basisgröße: $1 × $2 Pixel, Dateigröße: $3',
'svg-long-desc-animated' => 'Animierte SVG-Datei, Basisgröße $1 × $2 Pixel, Dateigröße: $3',
'svg-long-error' => 'Ungültige SVG-Datei: $1',
-'show-big-image' => 'Volle Auflösung',
+'show-big-image' => 'Originaldatei',
'show-big-image-preview' => 'Größe dieser Vorschau: $1.',
'show-big-image-other' => 'Weitere {{PLURAL:$2|Auflösung|Auflösungen}}: $1.',
'show-big-image-size' => '$1 × $2 Pixel',
# External editor support
'edit-externally' => 'Diese Datei mit einem externen Programm bearbeiten',
-'edit-externally-help' => '(weitere Informationen in den [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen])',
+'edit-externally-help' => '(weitere Informationen in den [https://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alle',
'version-version' => '(Version $1)',
'version-svn-revision' => '(Version $2)',
'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Diese Website nutzt '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Diese Website nutzt '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'andere',
'version-poweredby-translators' => 'Übersetzer von translatewiki.net',
'version-credits-summary' => 'Wir danken folgenden Personen für ihre Beiträge zu [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Spezialseiten',
-'specialpages-note' => '----
-* Reguläre Spezialseiten
-* <span class="mw-specialpagerestricted">Zugriffsbeschränkte Spezialseiten</span>
-* <span class="mw-specialpagecached">Gecachte Spezialseiten (Deren Inhalt ist möglicherweise veraltet.)</span>',
+'specialpages-note-top' => 'Legende',
+'specialpages-note' => '* Normale Spezialseiten.
+* <span class="mw-specialpagerestricted">Spezialseiten mit beschränktem Zugang.</span>',
'specialpages-group-maintenance' => 'Wartungslisten',
'specialpages-group-other' => 'Andere Spezialseiten',
'specialpages-group-login' => 'Benutzerkonto',
* @author George Animal
* @author Gorizon
* @author Kaganer
+ * @author Marmase
* @author Mirzali
* @author Nemo bis
* @author Neribij
'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
'vector-view-create' => 'İycad ke',
'vector-view-edit' => 'Timar ke',
-'vector-view-history' => 'Vurnayışê verêni',
-'vector-view-view' => 'Bıwane',
-'vector-view-viewsource' => 'Çımey bıvêne',
+'vector-view-history' => 'Veréni bıvin',
+'vector-view-view' => 'Buwan',
+'vector-view-viewsource' => 'Çımi bıvin',
'actions' => 'Hereketi',
'namespaces' => 'Cayê namey',
'variants' => 'Varyanti',
'go' => 'Şo',
'searcharticle' => 'Şo',
'history' => 'Verora perer',
-'history_short' => 'Vurnayışê verêni',
+'history_short' => 'Verén',
'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
'printableversion' => 'Asayışê çapkerdışi',
'permalink' => 'Gıreyo jûqere',
'personaltools' => 'Hacetê şexsiy',
'postcomment' => 'Qısımo newe',
'articlepage' => 'Pela zerreki bıvêne',
-'talk' => 'Werênayış',
+'talk' => 'Vaten',
'views' => 'Asayışi',
'toolbox' => 'Haceti',
'userpage' => 'Pela karberi bıvêne',
'editold' => 'bıvurne',
'viewsourceold' => 'çımey cı bıvinê',
'editlink' => 'bıvurne',
-'viewsourcelink' => 'çımey bıvêne',
+'viewsourcelink' => 'Ã\87ımi bıvin',
'editsectionhint' => 'Leteyo ke bıvuriyo: $1',
'toc' => 'Sernameyê meselan',
'showtoc' => 'bımocne',
'wrong_wfQuery_params' => 'wfQuery() parametreyo şaş<br />
Fonksiyon: $1<br />
Perse: $2',
-'viewsource' => 'Çımey bıvêne',
+'viewsource' => 'Çımi bıvin',
'viewsource-title' => "Cı geyrayışê $1'i bıvin",
'actionthrottled' => 'Kerden peysnaya',
'actionthrottledtext' => 'Riyê tedbirê anti-spami ra, wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.
'customjsprotected' => 'Mısadeyê şıma çıniyo ke na pela Java Scripti bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
'mycustomcssprotected' => "Na pera CSS'i re tenya idarekari şene bıvurne",
'mycustomjsprotected' => "Na pera JavaScript'i re tenya idarekari şene bıvurne",
+'myprivateinfoprotected' => 'Ğısusi malumatana ğo timar kerdışire icazeta şıma çıniya.',
+'mypreferencesprotected' => 'Terciha timar kerdışire icazeta şıam çıniya.',
'ns-specialprotected' => 'Pelê xısusiy nênê vurnayış.',
'titleprotected' => 'Eno [[User:$1|$1]] zerreyê ena peli nişeno vuriye.
Sebeb: "\'\'$2\'\'".',
'revdelete-hide-user' => 'IP asresa/namey vırnoği',
'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
'revdelete-radio-same' => '(mevurne)',
-'revdelete-radio-set' => 'Aseno',
-'revdelete-radio-unset' => 'Nımneya',
+'revdelete-radio-set' => 'Nımnaye',
+'revdelete-radio-unset' => 'Aseno',
'revdelete-suppress' => 'Hem ê binan ra hem zi serkaran ra malumatan bınım',
'revdelete-unsuppress' => 'reizyonê ke tepiya anciye serbest ker',
'revdelete-log' => 'Sebeb:',
Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tiya dı] aseno.',
# Search results
-'searchresults' => 'Neticeyê geyrayışi',
+'searchresults' => 'Neticeya geyrayışi',
'searchresults-title' => 'Qandê "$1" neticeyê geyrayışi',
'searchresulttext' => 'Zerrey {{SITENAME}} de heqa cıgeyrayışi de seba melumat gırewtışi, şenay qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
'searchsubtitle' => 'Tı semedê \'\'\'[[:$1]]\'\'\' cıgeyra. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyaê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra gırê xo esto]])',
'mypreferences' => 'Tercihi',
'prefs-edits' => 'Amarê vurnayışan:',
'prefsnologin' => 'Şıma cıkewtış nêvıraşto',
-'prefsnologintext' => 'Şıma gani be <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cikewte]</span> ke tercihanê karberi xo eyar bıkerê.',
'changepassword' => 'Parola bıvurne',
'prefs-skin' => 'Çerme',
'skin-preview' => 'Verasayış',
'recentchanges-label-minor' => 'Eno yew vurnayışo qıckeko',
'recentchanges-label-bot' => 'Yew boti xo het ra no vurnayış vıraşto',
'recentchanges-label-unpatrolled' => 'Eno vurnayış hewna dewriya nêbiyo',
-'rcnote' => "Bıni dı {{PLURAL:$1|'''1''' vurnayış|peyni de '''$1''' vurnayışi estê}} {{PLURAL:$2|roc|'''$2''' roci}}, hetana $5, $4.",
+'rcnote' => "Bıni dı {{PLURAL:$2|roc|'''$2''' rocan}} ra {{PLURAL:$1|'''1''' vurnayış|'''$1''' vurnayışi}} éyé cér de yé , $5 ra hetana $4.",
'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
-'rclistfrom' => '$1 ra vurnayışanê neweyan bımocne',
+'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
'rcshowhideminor' => 'Vurnayışanê werdiyan $1',
'rcshowhidebots' => 'Botan $1',
'rcshowhideliu' => 'Karberanê qeydınan $1',
'rcshowhideanons' => 'Karberê bênamey $1',
'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
'rcshowhidemine' => 'Vurnayışanê mı $1',
-'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
+'rclinks' => '$2 rocan peynira $1 vurnayışan bıasne <br />$3',
'diff' => 'ferq',
'hist' => 'verên',
'hide' => 'Bınımne',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
-'ncategories' => '$1 {{PLURAL:$1|Kategoriye|Kategoriy}}',
+'ncategories' => '$1 {{PLURAL:$1|Kategori|Kategoriy}}',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikiy}}',
'nlinks' => '$1 {{PLURAL:$1|link|linkî}}',
'nmembers' => '$1 {{PLURAL:$1|eza|ezayan}}',
# Special:LinkSearch
'linksearch' => 'Gıreyê teberi cı geyrê',
'linksearch-pat' => 'bıgêr motif:',
-'linksearch-ns' => 'Cayê namey:',
+'linksearch-ns' => 'Heruna naman:',
'linksearch-ok' => 'Cı geyre',
'linksearch-text' => 'Jokeri ê zey "*.wikipedia.org"i benê ke bıgureniyê.
Tewr senık yew sewiya serêna cayê tesiri lazıma, mesela "*.org".<br />
'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
# Namespace form on various pages
-'namespace' => 'Cayê namey:',
+'namespace' => 'Heruna naman:',
'invert' => 'Weçinıtışo peyserki',
'tooltip-invert' => 'nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan zerrekan nımtışi re ena dore tesdiqi nışan kerê',
'namespace_association' => 'Cayê nameyanê elaqedaran',
'movepage-page-moved' => 'pelê $1i kırışiya pelê $2i.',
'movepage-page-unmoved' => 'pelê $1i nêkırışiyeno sernameyê $2i.',
'movepage-max-pages' => 'tewr ziyed $1 {{PLURAL:$1|peli|peli}} kırışiya u hıni ziyedê ıney otomotikmen nêkırışiyeno.',
-'movelogpage' => 'Qeydê berdışi',
+'movelogpage' => 'Qeydé berdışi',
'movelogpagetext' => 'nameyê liste ya ke cêr de yo, pelê vuriyayeyani mocneno',
'movesubpage' => '{{PLURAL:$1|Subpage|pelê bınıni}}',
'movesubpagetext' => '{{PLURAL:$1|pelê bınıni yê|pelê bınıni yê}} no $1 peli cer de yo.',
'allmessagesdefault' => 'Metnê mesacê hesabiyayey',
'allmessagescurrent' => 'Nuşteyê mesacê rocaney',
'allmessagestext' => 'na liste, listeya mesajê cayê nameyê wikimedya yo.
-eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [//www.mediawiki.org/wiki/Localisation mahalli kerdışê wikimedyayi] u [//translatewiki.net translatewiki.net] ziyaret bıkerê.',
+eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [https://www.mediawiki.org/wiki/Localisation mahalli kerdışê wikimedyayi] u [//translatewiki.net translatewiki.net] ziyaret bıkerê.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' qefelnaye yo u ey ra '''{{ns:special}}:Allmessages''' karkerdışi re akerde niyo.",
'allmessages-filter-legend' => 'Avrêc',
'allmessages-filter' => 'goreyê xususi kerdışi re filtre bıker',
'pageinfo-title' => 'Heq tê "$1"\'i',
'pageinfo-not-current' => 'Qısur de mevêne, rewizyonanê verênan rê nê melumatan dayış mumkın niyo',
'pageinfo-header-basic' => 'Seron zanayış',
-'pageinfo-header-edits' => 'Vurnayışê verêni',
+'pageinfo-header-edits' => 'Veréna timar kerdışi',
'pageinfo-header-restrictions' => 'Sıtarkerdışê pele',
'pageinfo-header-properties' => 'Xısusiyetê pele',
'pageinfo-display-title' => 'Sernuştey bımocne',
'pageinfo-length' => 'Derdeya pela (bayti heta)',
'pageinfo-article-id' => 'Kamiya pele',
'pageinfo-language' => 'Zıwanê zerreyê pele',
+'pageinfo-content-model' => 'Modela zerreka perer',
'pageinfo-robot-policy' => 'Weziyetê motor de cıgeyrayışi',
'pageinfo-robot-index' => 'İndeksbiyayen',
'pageinfo-robot-noindex' => 'İndeksnêbiyayen',
'svg-long-desc' => 'Dosyay SVG, zek vanê $1 × $2 piksela, ebatê dosya: $3',
'svg-long-desc-animated' => 'SVG dosya, nominalin $1 × $2 piksela, ebatê dosya: $3',
'svg-long-error' => "Nêmeqbul dosyaya SVG'i: $1",
-'show-big-image' => 'Tam agoznayen',
+'show-big-image' => 'Oricinal dosya',
'show-big-image-preview' => "Verqayd dergiya: $1'i.",
'show-big-image-other' => 'Zewmi{{PLURAL:$2|Vılêşnayış|Vılêşnayışê}}: $1.',
'show-big-image-size' => '$1 × $2 piksel',
'noimages' => 'Çik çini yo.',
'ilsubmit' => 'Cı geyre',
'bydate' => 'goreyê zemani',
-'sp-newimages-showfrom' => 'Dosyayê newi ke $2, $1 ra dest pe keni bimocne',
+'sp-newimages-showfrom' => '$1, sehat $2 ra tepya dosyayané newan bıasné',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
'video-dims' => '$1, $2 × $3',
'exif-writer' => 'Nuştekar',
'exif-languagecode' => 'Zıwan',
'exif-iimversion' => 'Verqaydê IIM',
-'exif-iimcategory' => 'Kategoriye',
+'exif-iimcategory' => 'Kategori',
'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
'exif-datetimeexpires' => 'No peyra mekarênê',
'exif-datetimereleased' => 'Bıroşe',
# External editor support
'edit-externally' => 'Ena dosya bıvurne pe yew programê harici',
-'edit-externally-help' => '(Qe informasyonê zafyer ena bevinin [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(Qe informasyonê zafyer ena bevinin [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'pêro',
'percent' => '$1%',
'parentheses' => '($1)',
'brackets' => '[$1]',
+'quotation-marks' => '"$1".',
# Multipage image navigation
'imgmultipageprev' => '← peleyê verin',
'version-version' => '(Versiyon $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Lisans',
-'version-poweredby-credits' => "Ena wiki, dezginda '''[//www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
+'version-poweredby-credits' => "Ena wiki, dezginda '''[https://www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
'version-poweredby-others' => 'Zewmi',
'version-poweredby-translators' => "Açernere translatewiki.net'i",
'version-credits-summary' => 'Ma qayılime ke [[Special:Version|MediaWiki]] rê ke kami destek dayo wa mayê vanime inan bışınasne.',
# Special:SpecialPages
'specialpages' => 'Pelê xısusiy',
-'specialpages-note' => '----
-* Xısusi pelaya normal
+'specialpages-note' => '* Xısusi pelaya normal
* <span class="mw-specialpagerestricted">Xısusi peleyê keı rê ray nê deyaya.</span>
* <strong class="mw-specialpagerestricted">Peleya xısusiya ke grota verhefıza.</strong>',
'specialpages-group-maintenance' => 'Raporê tepıştışi',
'mypreferences' => 'Nastajenja',
'prefs-edits' => 'Licba wobźěłanjow:',
'prefsnologin' => 'Njejsy pśizjawjony',
-'prefsnologintext' => 'Musyš se <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} pśizjawiś]</span>, aby mógał swóje nastajenja změniś.',
'changepassword' => 'Šćitne gronidło změniś',
'prefs-skin' => 'Šat',
'skin-preview' => 'Pśeglěd',
'allmessagesdefault' => 'Standardny tekst',
'allmessagescurrent' => 'Aktualny tekst',
'allmessagestext' => 'How jo lisćina systemowych powěsćow w mjenowem rumje MediaWiki.
-Pšosym wobglědaj [//www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [//translatewiki.net translatewiki.net], jolic coš k lokalizaciji MediaWiki pśinosowaś.',
+Pšosym wobglědaj [https://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [//translatewiki.net translatewiki.net], jolic coš k lokalizaciji MediaWiki pśinosowaś.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' njejo tuchylu móžno, dokulaž jo datowa banka offline.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Pó pśiměrjeńskem stawje filtrěrowaś:',
# External editor support
'edit-externally' => 'Dataje z eksternym programom wobźěłaś',
-'edit-externally-help' => '(Za dalšne informacije glědaj [//www.mediawiki.org/wiki/Manual:External_editors instalaciske instrukcije]).',
+'edit-externally-help' => '(Za dalšne informacije glědaj [https://www.mediawiki.org/wiki/Manual:External_editors instalaciske instrukcije]).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'wšykne',
'version-hook-subscribedby' => 'Aboněrowany wót',
'version-version' => '(Wersija $1)',
'version-license' => 'Licenca',
-'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'druge',
'version-credits-summary' => 'Źěkujomy se slědujucym wósobam za jich pśinoski k [[Special:Version|MediaWiki]]',
'version-license-info' => 'MediaWiki jo licha softwara: móžoš ju pód wuměnjenjami licence GNU General Public License, wózjawjeneje wót załožby Free Software Foundation, rozdźěliś a/abo změniś: pak pód wersiju 2 licence pak pód někakeju pózdźejšeju wersiju.
# Special:SpecialPages
'specialpages' => 'Specialne boki',
-'specialpages-note' => '----
-* Normalne specialne boki
+'specialpages-note' => '* Normalne specialne boki
* <span class="mw-specialpagerestricted">Specialne boki z wobgranicowanym pśistupom.</span>',
'specialpages-group-maintenance' => 'Wótwardowańske lisćiny',
'specialpages-group-other' => 'Druge specialne boki',
# External editor support
'edit-externally' => 'Idito pail diti momoguno do kangkaraja pongi-ngidit poinlabus',
-'edit-externally-help' => '(Intaai [//www.mediawiki.org/wiki/Manual:External_editors karalan-ralanon papasang] do lobi gumu kointalangan)',
+'edit-externally-help' => '(Intaai [https://www.mediawiki.org/wiki/Manual:External_editors karalan-ralanon papasang] do lobi gumu kointalangan)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'oinsanan',
'mypreferences' => 'Προτιμήσεις',
'prefs-edits' => 'Αριθμός επεξεργασιών:',
'prefsnologin' => 'Δεν έχετε συνδεθεί.',
-'prefsnologintext' => 'Πρέπει να έχετε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεθεί]</span> για να καθορίσετε τις προτιμήσεις χρήστη.',
'changepassword' => 'Αλλαγή κωδικού',
'prefs-skin' => 'Οπτική οργάνωση (skin)',
'skin-preview' => 'Προεπισκόπηση',
'uploadnewversion-linktext' => 'Φορτώστε μια νέα έκδοση αυτού του αρχείου',
'shared-repo-from' => 'από το $1',
'shared-repo' => 'ένα κοινό εναποθετήριο',
-'shared-repo-name-wikimediacommons' => 'Κοινά Wikimedia',
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons',
'upload-disallowed-here' => 'Δεν μπορείτε να αντικαταστήσετε αυτό το αρχείο.',
# File reversion
'allmessagesdefault' => 'Προεπιλεγμένο κείμενο μηνύματος',
'allmessagescurrent' => 'Παρόν κείμενο',
'allmessagestext' => 'Αυτή είναι μια λίστα με όλα τα μηνύματα συστήματος που βρίσκονται στην περιοχή MediaWiki.
-Παρακαλούμε επισκεφθείτε τα [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] και [//translatewiki.net translatewiki.net] αν επιθυμείτε να συνεισφέρετε σε μια γενική μετάφραση του MediaWiki.',
+Παρακαλούμε επισκεφθείτε τα [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] και [//translatewiki.net translatewiki.net] αν επιθυμείτε να συνεισφέρετε σε μια γενική μετάφραση του MediaWiki.',
'allmessagesnotsupportedDB' => "Αυτή η σελίδα δεν υποστηρίζεται επειδή το ''wgUseDatabaseMessages'' είναι απενεργοποιημένο.",
'allmessages-filter-legend' => 'Φίλτρο',
'allmessages-filter' => 'Ταξινόμηση βάσει της δήλωσης προσαρμογής:',
# External editor support
'edit-externally' => 'Επεξεργαστείτε αυτό το αρχείο χρησιμοποιώντας κάποια εξωτερική εφαρμογή',
-'edit-externally-help' => '(Βλ. [//www.mediawiki.org/wiki/Manual:External_editors οδηγίες εγκατάστασης] για περισσότερες πληροφορίες)',
+'edit-externally-help' => '(Βλ. [https://www.mediawiki.org/wiki/Manual:External_editors οδηγίες εγκατάστασης] για περισσότερες πληροφορίες)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'όλες',
'version-hook-subscribedby' => 'Υπογεγραμμένο από',
'version-version' => '(Έκδοση $1)',
'version-license' => 'Άδεια χρήσης',
-'version-poweredby-credits' => "Αυτό το wiki λειτουργεί με το λογισμικό '''[//www.mediawiki.org/ MediaWiki]''', πνευματική ιδιοκτησία © 2001-$1 $2.",
+'version-poweredby-credits' => "Αυτό το wiki λειτουργεί με το λογισμικό '''[https://www.mediawiki.org/ MediaWiki]''', πνευματική ιδιοκτησία © 2001-$1 $2.",
'version-poweredby-others' => 'άλλοι',
'version-poweredby-translators' => 'translatewiki.net μεταφραστές',
'version-credits-summary' => 'Θα θέλαμε να αναγνωρίσουμε τη συμβολή των παρακάτω προσώπων στο [[Special:Version|MediaWiki]].',
'newmessagesdifflink' => 'last change',
'youhavenewmessagesfromusers' => 'You have $1 from {{PLURAL:$3|another user|$3 users}} ($2).',
'youhavenewmessagesmanyusers' => 'You have $1 from many users ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|a new message|new messages}}',
-'newmessagesdifflinkplural' => 'last {{PLURAL:$1|change|changes}}',
+'newmessageslinkplural' => '{{PLURAL:$1|a new message|999=new messages}}',
+'newmessagesdifflinkplural' => 'last {{PLURAL:$1|change|999=changes}}',
'youhavenewmessagesmulti' => 'You have new messages on $1',
'newtalkseparator' => ', ', # do not translate or duplicate this message to other languages
'editsection' => 'edit',
'sort-descending' => 'Sort descending',
'sort-ascending' => 'Sort ascending',
'interlanguage-link-title' => '$1 – $2', # only translate this message to other languages if you have to change it
+'interlanguage-link-title-langonly' => '$1', # do not translate or duplicate this message to other languages
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Page',
'invalidtitle-knownnamespace' => 'Invalid title with namespace "$2" and text "$3"',
'invalidtitle-unknownnamespace' => 'Invalid title with unknown namespace number $1 and text "$2"',
'exception-nologin' => 'Not logged in',
-'exception-nologin-text' => 'This page or action requires you to be logged in on this wiki.',
+'exception-nologin-text' => 'Please [[Special:Userlogin|log in]] to be able to access this page or action.',
+'exception-nologin-text-manual' => 'Please $1 to be able to access this page or action.',
# Virus scanner
'virus-badscanner' => "Bad configuration: Unknown virus scanner: ''$1''",
Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
'welcomeuser' => 'Welcome, $1!',
'welcomecreation-msg' => 'Your account has been created.
-Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
+You can change your {{SITENAME}} [[Special:Preferences|preferences]] if you wish.',
'yourname' => 'Username:',
'userlogin-yourname' => 'Username',
'userlogin-yourname-ph' => 'Enter your username',
'mypreferences' => 'Preferences',
'prefs-edits' => 'Number of edits:',
'prefsnologin' => 'Not logged in',
-'prefsnologintext' => 'You must be <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> to set user preferences.',
+'prefsnologintext2' => 'Please $1 to set user preferences.',
'changepassword' => 'Change password',
'changepassword-summary' => '', # do not translate or duplicate this message to other languages
'prefs-skin' => 'Skin',
mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-There will be no other notifications in case of further activity unless you visit this page. You could also reset the notification flags for all your watched pages on your watchlist.
+There will be no other notifications in case of further activity unless you visit this page while logged in. You could also reset the notification flags for all your watched pages on your watchlist.
- Your friendly {{SITENAME}} notification system
+Your friendly {{SITENAME}} notification system
--
To change your email notification settings, visit
# Special:SpecialPages
'specialpages' => 'Special pages',
'specialpages-summary' => '', # do not translate or duplicate this message to other languages
-'specialpages-note' => '----
-* Normal special pages.
+'specialpages-note-top' => 'Legend',
+'specialpages-note' => '* Normal special pages.
* <span class="mw-specialpagerestricted">Restricted special pages.</span>',
'specialpages-group-maintenance' => 'Maintenance reports',
'specialpages-group-other' => 'Other special pages',
'mypreferences' => 'Preferoj',
'prefs-edits' => 'Nombro de redaktoj:',
'prefsnologin' => 'Ne jam salutis!',
-'prefsnologintext' => 'Vi devas esti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ensalutita]</span> por fari viajn preferojn.',
'changepassword' => 'Ŝanĝi pasvorton',
'prefs-skin' => 'Etoso',
'skin-preview' => 'Antaŭrigardo',
'allmessagesdefault' => 'Defaŭlta teksto',
'allmessagescurrent' => 'Nuna teksto',
'allmessagestext' => 'Ĉi tio estas listo de ĉiuj mesaĝoj haveblaj en la MediaWiki-nomspaco.
-Bonvolu aliri [//www.mediawiki.org/wiki/Localisation MediaWiki-Asimilado] kaj [//translatewiki.net translatewiki.net]
+Bonvolu aliri [https://www.mediawiki.org/wiki/Localisation MediaWiki-Asimilado] kaj [//translatewiki.net translatewiki.net]
se vi volus kontribui al la komuna MediaWiki-asimilado.',
'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages ne subtenata ĉar la variablo wgUseDatabaseMessages estas malkonektita.',
'allmessages-filter-legend' => 'Filtri',
# External editor support
'edit-externally' => 'Ŝanĝi ĉi tiun dosieron per ekstera programaro',
-'edit-externally-help' => "(Vidu la [//www.mediawiki.org/wiki/Manual:External_editors instalinstrukciojn] por pliaj informoj.) ''[angle]''.",
+'edit-externally-help' => "(Vidu la [https://www.mediawiki.org/wiki/Manual:External_editors instalinstrukciojn] por pliaj informoj.) ''[angle]''.",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ĉiuj',
'version-hook-subscribedby' => 'Abonita de',
'version-version' => '(Versio $1)',
'version-license' => 'Permesilo',
-'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[//www.mediawiki.org/ MediaWiki]''', aŭtorrajto © 2001–$1 $2.",
+'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[https://www.mediawiki.org/ MediaWiki]''', aŭtorrajto © 2001–$1 $2.",
'version-poweredby-others' => 'aliaj',
'version-credits-summary' => 'Ni ŝatus agnoski la sekvajn personojn pro siaj kontribuoj al [[Special:Version|MediaWiki]].',
'version-license-info' => 'MediaWiki estas libera programaro. Vi povas redistribui ĝin kaj/aŭ modifi ĝin sub la kondiĉoj de la GNU General Public Licens (GNU Ĝenerala Publika Permesilo) en ties eldono de la Free Software Foundation (Libera Softvara Fondaĵo) - aŭ versio 2 de la Permesilo, aŭ (laŭ via elekto) iu ajn posta versio.
# Special:SpecialPages
'specialpages' => 'Specialaj paĝoj',
-'specialpages-note' => '----
-* Normaj specialaj paĝoj.
+'specialpages-note' => '* Normaj specialaj paĝoj.
* <strong class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</strong>
* <span class="mw-specialpagecached">Memorkaŝitaj specialaj paĝoj (eble malaktualaj).</span>',
'specialpages-group-maintenance' => 'Raportoj pri prizorgado',
* @author Hazard-SJ
* @author Hercule
* @author Icvav
+ * @author Ihojose
* @author Imre
* @author Invadinado
* @author Jatrobat
'mypreferences' => 'Preferencias',
'prefs-edits' => 'Cantidad de ediciones:',
'prefsnologin' => 'No has iniciado sesión',
-'prefsnologintext' => 'Necesitas <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} iniciar sesión]</span> para establecer las preferencias del usuario.',
'changepassword' => 'Cambiar contraseña',
'prefs-skin' => 'Apariencia',
'skin-preview' => 'Previsualizar',
'allmessagesdefault' => 'Texto predeterminado',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki:
-Por favor visita [//www.mediawiki.org/wiki/Localisation Localización MediaWiki] y [//translatewiki.net translatewiki.net] si deseas contribuir con la localización genérica MediaWiki.',
+Por favor visita [https://www.mediawiki.org/wiki/Localisation Localización MediaWiki] y [//translatewiki.net translatewiki.net] si deseas contribuir con la localización genérica MediaWiki.',
'allmessagesnotsupportedDB' => "Esta página no está disponible porque '''\$wgUseDatabaseMessages''' está deshabilitado.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar por estado de personalización:',
# External editor support
'edit-externally' => 'Editar este archivo usando una aplicación externa',
-'edit-externally-help' => '(Lee las [//www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración] -en inglés- para más información)',
+'edit-externally-help' => '(Lee las [https://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración] -en inglés- para más información)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todos',
'version-hook-subscribedby' => 'Suscrito por',
'version-version' => '(Versión $1)',
'version-license' => 'Licencia',
-'version-poweredby-credits' => "Este wiki funciona gracias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Este wiki funciona gracias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otros',
'version-poweredby-translators' => 'Traductores de translatewiki.net',
'version-credits-summary' => 'Queremos reconocer a las siguientes personas por su contribución a [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Páginas especiales',
-'specialpages-note' => '----
-* Páginas especiales normales
+'specialpages-note-top' => 'Leyenda:',
+'specialpages-note' => '* Páginas especiales normales
* <span class="mw-specialpagerestricted">Páginas especiales restringidas.</span>
* <span class="mw-specialpagecached">Páginas especiales en caché (podrían ser obsoletas).</span>',
'specialpages-group-maintenance' => 'Reportes de mantenimiento',
'returnto' => 'Naase lehele $1',
'tagline' => 'Allikas: {{SITENAME}}',
'help' => 'Juhend',
-'search' => 'Otsimine',
+'search' => 'Otsing',
'searchbutton' => 'Otsi',
'go' => 'Mine',
'searcharticle' => 'Mine',
'editsection' => 'muuda',
'editold' => 'redigeeri',
'viewsourceold' => 'vaata lähteteksti',
-'editlink' => 'redigeeri',
+'editlink' => 'muuda',
'viewsourcelink' => 'vaata lähteteksti',
-'editsectionhint' => 'Redigeeri alaosa "$1"',
+'editsectionhint' => 'Muuda alaosa "$1"',
'toc' => 'Sisukord',
'showtoc' => 'näita',
'hidetoc' => 'peida',
'feed-invalid' => 'Vigane vootüüp.',
'feed-unavailable' => 'Uudisvood ei ole saadaval.',
'site-rss-feed' => '$1 RSS-toide',
-'site-atom-feed' => '$1 Atom-toide',
+'site-atom-feed' => '$1 Atom-fiid',
'page-rss-feed' => '"$1" RSS-toide',
-'page-atom-feed' => '"$1" Atom-toide',
+'page-atom-feed' => '"$1" Atom-fiid',
'red-link-title' => '$1 (pole veel kirjutatud)',
'sort-descending' => 'Järjesta laskuvalt',
'sort-ascending' => 'Järjesta tõusvalt',
'headline_sample' => 'Pealkiri',
'headline_tip' => '2. taseme pealkiri',
'nowiki_sample' => 'Sisesta vormindamata tekst',
-'nowiki_tip' => 'Ignoreeri viki vormindust',
+'nowiki_tip' => 'Ignoreeri vikivormindust',
'image_sample' => 'Näidis.jpg',
'image_tip' => 'Pilt',
'media_sample' => 'Näidis.ogg',
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Hoiatus:''' See lehekülg kasutab liialt palju aeglustavaid laiendusfunktsioone. Neid võiks kasutada vähem kui {{PLURAL:$2|ühel|$2}} korral, praegu on kasutatud {{PLURAL:$1|ühel|$1}} korral.",
'expensive-parserfunction-category' => 'Liiga palju aeglasi laiendusfunktsioone kasutavad leheküljed',
-'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Väljakutsutavate mallide hulk on liiga suur.
-Mistõttu osasid malle ei näidata.",
-'post-expand-template-inclusion-category' => 'Leheküljed, milledel on mallide väljakutsumise limiit ületatud',
+'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Väljakutsutavate mallide hulk on liiga suur, mõningaid malle ei näidata.",
+'post-expand-template-inclusion-category' => 'Leheküljed, kus mallide väljakutsumise limiit on ületatud',
'post-expand-template-argument-warning' => "'''Hoiatus:''' See lehekülg sisaldab argumendina vähemalt üht malli, mille määratud maht on liiga suur.
Need argumendid on välja jäetud.",
'post-expand-template-argument-category' => 'Malli vahele jäetud argumente sisaldavad leheküljed',
'revdelete-hide-user' => 'Toimetaja kasutajanimi või IP-aadress',
'revdelete-hide-restricted' => 'Varja andmeid nii administraatorite kui ka teiste eest.',
'revdelete-radio-same' => '(ära muuda)',
-'revdelete-radio-set' => 'Nähtav',
-'revdelete-radio-unset' => 'Peidetud',
+'revdelete-radio-set' => 'Peidetud',
+'revdelete-radio-unset' => 'Nähtav',
'revdelete-suppress' => 'Varja andmed nii administraatorite kui ka teiste eest',
'revdelete-unsuppress' => 'Eemalda taastatud redaktsioonidelt piirangud',
'revdelete-log' => 'Põhjus:',
'mypreferences' => 'Eelistused',
'prefs-edits' => 'Redigeerimiste arv:',
'prefsnologin' => 'Sisse logimata',
-'prefsnologintext' => 'Oma eelistuste määramiseks pead olema <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sisse logitud]</span>.',
'changepassword' => 'Muuda parool',
'prefs-skin' => 'Kujundus',
'skin-preview' => 'eelvaade',
'recentchanges-feed-description' => 'Jälgi vikisse tehtud viimaseid muudatusi.',
'recentchanges-label-newpage' => 'See muudatus lõi uue lehekülje',
'recentchanges-label-minor' => 'See on pisiparandus',
-'recentchanges-label-bot' => 'Selle muudatuse sooritas robot',
+'recentchanges-label-bot' => 'Selle muudatuse tegi robot',
'recentchanges-label-unpatrolled' => 'Seda muudatust ei ole veel kontrollitud',
'rcnote' => "Allpool on esitatud {{PLURAL:$1|'''1''' muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|päeva|'''$2''' päeva}} jooksul seisuga $4, kell $5.",
'rcnotefrom' => "Allpool on toodud muudatused alates: '''$2''' (näidatakse kuni '''$1''' muudatust)",
'allmessagesdefault' => 'Vaiketekst',
'allmessagescurrent' => 'Praegune tekst',
'allmessagestext' => 'See on loend kõikidest olemasolevatest süsteemisõnumitest MediaWiki nimeruumis.
-Kui soovid MediaWiki tarkvara tõlkimises osaleda, siis vaata lehti [//www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [//translatewiki.net translatewiki.net].',
+Kui soovid MediaWiki tarkvara tõlkimises osaleda, siis vaata lehti [https://www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Seda lehekülge ei saa kasutada, sest '''\$wgUseDatabaseMessages''' ei tööta.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Muutmisoleku filter:',
'tooltip-pt-mytalk' => 'Sinu arutelulehekülg',
'tooltip-pt-anontalk' => 'Arutelu sellelt IP-aadressilt tehtud muudatuste kohta',
'tooltip-pt-preferences' => 'Sinu eelistused',
-'tooltip-pt-watchlist' => 'Lehekülgede loend, mida jälgid muudatuste osas',
+'tooltip-pt-watchlist' => 'Lehekülgede loend, mille muudatusi jälgid',
'tooltip-pt-mycontris' => 'Sinu kaastööde loend',
'tooltip-pt-login' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
'tooltip-pt-anonlogin' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
'tooltip-pt-logout' => 'Logi välja',
'tooltip-ca-talk' => 'Selle artikli arutelu',
-'tooltip-ca-edit' => 'Saad seda lehekülge redigeerida. Palun kasuta enne salvestamist eelvaadet.',
+'tooltip-ca-edit' => 'Sa saad seda lehekülge muuta. Palun kasuta enne salvestamist eelvaadet.',
'tooltip-ca-addsection' => 'Lisa uus alaosa',
'tooltip-ca-viewsource' => 'See lehekülg on kaitstud.
Saad vaadata selle lähteteksti.',
'tooltip-n-randompage' => 'Mine juhuslikule leheküljele',
'tooltip-n-help' => 'Kuidas redigeerida',
'tooltip-t-whatlinkshere' => 'Kõik viki leheküljed, mis siia viitavad',
-'tooltip-t-recentchangeslinked' => 'Viimased muudatused lehekülgedel, milledele on siit viidatud',
+'tooltip-t-recentchangeslinked' => 'Viimased muudatused lehekülgedel, millele on siit viidatud',
'tooltip-feed-rss' => 'Selle lehekülje RSS-toide',
-'tooltip-feed-atom' => 'Selle lehekülje Atom-toide',
+'tooltip-feed-atom' => 'Selle lehekülje Atom-fiid',
'tooltip-t-contributions' => 'Kuva selle kasutaja kaastöö',
'tooltip-t-emailuser' => 'Saada sellele kasutajale e-kiri',
'tooltip-t-upload' => 'Laadi faile üles',
'tooltip-save' => 'Salvesta muudatused',
'tooltip-preview' => 'Näita tehtavaid muudatusi. Palun kasutage seda enne salvestamist!',
'tooltip-diff' => 'Näita tehtavaid muudatusi.',
-'tooltip-compareselectedversions' => 'Näita erinevusi kahe selle lehe valitud versiooni vahel.',
+'tooltip-compareselectedversions' => 'Näita erinevusi selle lehe kahe valitud versiooni vahel.',
'tooltip-watch' => 'Lisa see lehekülg oma jälgimisloendisse',
'tooltip-watchlistedit-normal-submit' => 'Eemalda leheküljed',
'tooltip-watchlistedit-raw-submit' => 'Uuenda jälgimisloendit',
'svg-long-desc' => 'SVG-fail, algsuurus $1 × $2 pikslit, faili suurus: $3',
'svg-long-desc-animated' => 'Animeeritud SVG-fail, algsuurus $1 × $2 pikslit, faili suurus: $3',
'svg-long-error' => 'Vigane SVG-fail: $1',
-'show-big-image' => 'Originaalsuurus',
+'show-big-image' => 'Algfail',
'show-big-image-preview' => 'Selle eelvaate suurus: $1.',
'show-big-image-other' => '{{PLURAL:$2|Teine eraldusvõime|Teised eraldusvõimed}}: $1.',
'show-big-image-size' => '$1 × $2 pikslit',
# External editor support
'edit-externally' => 'Töötle faili välise programmiga',
-'edit-externally-help' => '(Vaata väliste redaktorite [//www.mediawiki.org/wiki/Manual:External_editors kasutusjuhendit])',
+'edit-externally-help' => '(Vaata väliste redaktorite [https://www.mediawiki.org/wiki/Manual:External_editors kasutusjuhendit])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Näita kõiki',
'version-hook-subscribedby' => 'Tellijad',
'version-version' => '(Versioon $1)',
'version-license' => 'Litsents',
-'version-poweredby-credits' => "See viki kasutab '''[//www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001–$1 $2.",
+'version-poweredby-credits' => "See viki kasutab '''[https://www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001–$1 $2.",
'version-poweredby-others' => 'teised',
'version-poweredby-translators' => 'translatewiki.net-i tõlkijad',
'version-credits-summary' => 'Tahame tunnustada järgmisi inimesi [[Special:Version|MediaWikile]] tehtud kaastöö eest.',
# Special:Redirect
'redirect' => 'Ümbersuunamine faili, kasutaja või redaktsiooni identifikaatori järgi',
'redirect-legend' => 'Ümbersuunamine faili juurde või leheküljele',
-'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Näide.jpg]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Mine',
'redirect-lookup' => 'Leia:',
'redirect-value' => 'Väärtus:',
# Special:SpecialPages
'specialpages' => 'Erileheküljed',
-'specialpages-note' => '----
-* Harilikud erileheküljed
+'specialpages-note' => '* Harilikud erileheküljed
* <span class="mw-specialpagerestricted">Piiranguga erileheküljed</span>
* <span class="mw-specialpagecached">Uuendamata sisuga erileheküljed (ei pruugi enam kasutuses olla)</span>',
'specialpages-group-maintenance' => 'Hooldusaruanded',
'mypreferences' => 'Hobespenak',
'prefs-edits' => 'Aldaketa kopurua:',
'prefsnologin' => 'Saioa hasi gabe',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Izena eman]</span> behar duzu zure hobespenak ezartzeko.',
'changepassword' => 'Pasahitza aldatu',
'prefs-skin' => 'Itxura',
'skin-preview' => 'Aurrebista',
'allmessagesdefault' => 'Testu lehenetsia',
'allmessagescurrent' => 'Oraingo testua',
'allmessagestext' => 'MediaWikin erabiltzen diren mezu guztien zerrenda.
-Mesedez bisitatu [//www.mediawiki.org/wiki/Localisation MediaWiki] eta [//translatewiki.net translatewiki.net] orrialdeak MediaWikira ekarpenak egin badituzu.',
+Mesedez bisitatu [https://www.mediawiki.org/wiki/Localisation MediaWiki] eta [//translatewiki.net translatewiki.net] orrialdeak MediaWikira ekarpenak egin badituzu.',
'allmessagesnotsupportedDB' => "Ezin da '''{{ns:special}}:Allmessages''' erabili '''\$wgUseDatabaseMessages''' ezgaituta dagoelako.",
'allmessages-filter-legend' => 'Iragazi',
'allmessages-filter' => 'Aldaketa-egoeraren arabera iragazi:',
# External editor support
'edit-externally' => 'Fitxategi hau editatu kanpo-aplikazio bat erabiliz',
-'edit-externally-help' => '(Ikus [//www.mediawiki.org/wiki/Manual:External_editors konfiguraziorako argibideak] informazio gehiagorako)',
+'edit-externally-help' => '(Ikus [https://www.mediawiki.org/wiki/Manual:External_editors konfiguraziorako argibideak] informazio gehiagorako)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'guztiak',
'version-hook-subscribedby' => 'Hauen harpidetzarekin',
'version-version' => '(Bertsioa $1)',
'version-license' => 'Lizentzia',
-'version-poweredby-credits' => "Wiki hau '''[//www.mediawiki.org/ MediaWiki]'''k sustatzen du (copyright © 2001-$1 $2).",
+'version-poweredby-credits' => "Wiki hau '''[https://www.mediawiki.org/ MediaWiki]'''k sustatzen du (copyright © 2001-$1 $2).",
'version-poweredby-others' => 'beste batzuk',
'version-software' => 'Instalatutako softwarea',
'version-software-product' => 'Produktua',
# Special:SpecialPages
'specialpages' => 'Orri bereziak',
-'specialpages-note' => '----
-* Orri berezi arruntak.
+'specialpages-note' => '* Orri berezi arruntak.
* <strong class="mw-specialpagerestricted">Mugatutako orri bereziak.</strong>',
'specialpages-group-maintenance' => 'Mantentze-oharrak',
'specialpages-group-other' => 'Beste orri berezi batzuk',
'mypreferences' => 'Las mis preferéncias',
'prefs-edits' => "Númiru d'eicionis:",
'prefsnologin' => "Nu t'alcuentras rustriu",
-'prefsnologintext' => 'Ebis estal [[Special:UserLogin|rustriu]] pa chambal las tus preferéncias.',
'changepassword' => 'Chambal consínia',
'prefs-skin' => 'Aparéncia',
'skin-preview' => 'Previsoreal',
'allmessagesdefault' => 'Testu pol defeutu',
'allmessagescurrent' => 'Testu atual',
'allmessagestext' => 'Esta es una lista e mensahis del sistema disponibris nel espaciu e nombris MediaWiki:
-Pol favol, vesita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [//translatewiki.net translatewiki.net] si quieis colabutal.',
+Pol favol, vesita [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [//translatewiki.net translatewiki.net] si quieis colabutal.',
'allmessagesnotsupportedDB' => "Nu se puei gastal esta páhina polque '''\$wgUseDatabaseMessages''' está desativau.",
# Thumbnails
# External editor support
'edit-externally' => 'Eital esti archivu gastandu una apricación esterna',
-'edit-externally-help' => 'Pa mas enholmación, lei las [//www.mediawiki.org/wiki/Manual:External_editors istrucionis de configuración] (en ingrés).',
+'edit-externally-help' => 'Pa mas enholmación, lei las [https://www.mediawiki.org/wiki/Manual:External_editors istrucionis de configuración] (en ingrés).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tó',
'mypreferences' => 'ترجیحات',
'prefs-edits' => 'تعداد ویرایشها:',
'prefsnologin' => 'به سامانه وارد نشدهاید',
-'prefsnologintext' => 'برای تنظیم ترجیحات کاربر باید <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} به سامانه وارد شوید]</span>.',
'changepassword' => 'تغییر گذرواژه',
'prefs-skin' => 'پوسته',
'skin-preview' => 'پیشنمایش',
'allmessagesdefault' => 'متن پیشفرض پیغام',
'allmessagescurrent' => 'متن کنونی پیغام',
'allmessagestext' => 'این فهرستی از پیغامهای سامانهای موجود در فضای نام مدیاویکی است.
-چنانچه مایل به مشارکت در محلیسازی مدیاویکی هستید لطفاً [//www.mediawiki.org/wiki/Localisation محلیسازی مدیاویکی] و [//translatewiki.net translatewiki.net] را ببینید.',
-'allmessagesnotsupportedDB' => "نمیتوان از '''{{ns:special}}:همهٔ پیغامها''' استفاده کرد چود '''‎\$wgUseDatabaseMessages''' خاموش شده است.",
+چنانچه مایل به مشارکت در محلیسازی مدیاویکی هستید لطفاً [https://www.mediawiki.org/wiki/Localisation محلیسازی مدیاویکی] و [//translatewiki.net translatewiki.net] را ببینید.',
+'allmessagesnotsupportedDB' => "این صفحه نمیتواند استفاده شود به این دلیل که <bdi>'''\$wgUseDatabaseMessages'''</bdi> غیرفعال شدهاست.",
'allmessages-filter-legend' => 'پالایه',
'allmessages-filter' => 'پالودن بر اساس وضعیت شخصیسازی:',
'allmessages-filter-unmodified' => 'تغییر نیافته',
# External editor support
'edit-externally' => 'ویرایش این پرونده با یک ویرایشگر بیرونی',
-'edit-externally-help' => '(برای اطلاعات بیشتر [//www.mediawiki.org/wiki/Manual:External_editors دستورالعمل تنظیم] را ببینید)',
+'edit-externally-help' => '(برای اطلاعات بیشتر [https://www.mediawiki.org/wiki/Manual:External_editors دستورالعمل تنظیم] را ببینید)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'همه',
'version-version' => '(نسخه $1)',
'version-svn-revision' => '(&رلم;r$2)',
'version-license' => 'اجازهنامه',
-'version-poweredby-credits' => "این ویکی توسط '''[//www.mediawiki.org/ مدیاویکی]''' پشتیبانی میشود، کلیهٔ حقوق محفوظ است © 2001-$1 $2.",
+'version-poweredby-credits' => "این ویکی توسط '''[https://www.mediawiki.org/ مدیاویکی]''' پشتیبانی میشود، کلیهٔ حقوق محفوظ است © 2001-$1 $2.",
'version-poweredby-others' => 'دیگران',
'version-poweredby-translators' => 'مترجمان translatewiki.net',
'version-credits-summary' => 'افراد زیر را به خاطر ویرایشهایش در [[Special:Version|مدیاویکی]] معرفی مینمائیم.',
# Special:SpecialPages
'specialpages' => 'صفحههای ویژه',
-'specialpages-note' => '----
-* صفحههای ویژهٔ عادی.
+'specialpages-note' => '* صفحههای ویژهٔ عادی.
* <strong class="mw-specialpagerestricted">صفحههای ویژهٔ محدودشده.</strong>',
'specialpages-group-maintenance' => 'گزارشهای نگهداری',
'specialpages-group-other' => 'سایر صفحههای ویژه',
* @author Kaganer
* @author Kulmalukko
* @author Linnea
+ * @author Mies
* @author Mobe
* @author Nedergard
* @author Nike
'invalidtitle-knownnamespace' => 'Virheellinen sivunimi, nimiavaruus "$2" ja teksti "$3"',
'invalidtitle-unknownnamespace' => 'Virheellinen sivunimi, tuntematon nimiavaruus numero $1 ja teksti "$2"',
'exception-nologin' => 'Et ole kirjautunut sisään',
-'exception-nologin-text' => 'Tämä sivu tai toiminto edellyttää sisäänkirjautumista tähän wikiin.',
+'exception-nologin-text' => 'Ole hyvä ja [[Special:Userlogin|kirjaudu sisään]], niin pääset tälle sivulle tai tähän toimintoon.',
+'exception-nologin-text-manual' => 'Sinun pitää $1 jotta pääset tälle sivulle tai toimintoon.',
# Virus scanner
'virus-badscanner' => "Virheellinen asetus: Tuntematon virustutka: ''$1''",
Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti tarkastella piilotettua sisältöä, ja he voivat palauttaa sen näkyviin tämän käyttöliittymän kautta, ellei tätä ole erikseen rajoitettu.",
'revdelete-confirm' => 'Varmista, että haluat tehdä tämän – ymmärrät seuraukset ja teet tämän [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
'revdelete-suppress-text' => "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:
+* Mahdollisesti henkilön kunniaa loukkaavia tietoja
* Sopimattomat henkilötiedot
-*: ''kotiosoitteet, puhelinnumerot, sosiaaliturvatunnukset ja muut.''",
+*: ''kotiosoitteet, puhelinnumerot, henkilötunnukset ja muut.''",
'revdelete-legend' => 'Aseta version näkyvyyden rajoitukset',
'revdelete-hide-text' => 'Piilota version tekstisisältö',
'revdelete-hide-image' => 'Piilota tiedoston sisältö',
'revdelete-hide-user' => 'Piilota tekijän tunnus tai IP-osoite',
'revdelete-hide-restricted' => 'Häivytä tiedot sekä ylläpitäjien että muiden käyttäjien näkyviltä',
'revdelete-radio-same' => '(älä muuta)',
-'revdelete-radio-set' => 'Kyllä',
-'revdelete-radio-unset' => 'Ei',
+'revdelete-radio-set' => 'Piilossa',
+'revdelete-radio-unset' => 'Näkyvissä',
'revdelete-suppress' => 'Häivytä tiedot myös ylläpitäjien näkyviltä samalla kun piilotat ne muilta käyttäjiltä',
'revdelete-unsuppress' => 'Poista rajoitukset palautetuilta versioilta',
'revdelete-log' => 'Syy:',
'powersearch-ns' => 'Hae nimiavaruuksista:',
'powersearch-redir' => 'Luettele ohjaukset',
'powersearch-field' => 'Etsi',
-'powersearch-togglelabel' => 'Valitse:',
+'powersearch-togglelabel' => 'Muuta valintaa',
'powersearch-toggleall' => 'Valitse kaikki',
'powersearch-togglenone' => 'Ei mitään',
'search-external' => 'Ulkoinen haku',
'mypreferences' => 'Asetukset',
'prefs-edits' => 'Muokkauksia',
'prefsnologin' => 'Et ole kirjautunut sisään.',
-'prefsnologintext' => 'Sinun täytyy <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjautua sisään]</span>, jotta voisit muuttaa asetuksiasi.',
+'prefsnologintext2' => 'Sinun pitää $1 ennen kuin voit muuttaa käyttäjän asetuksia.',
'changepassword' => 'Salasanan vaihto',
'prefs-skin' => 'Ulkoasu',
'skin-preview' => 'esikatselu',
'reuploaddesc' => 'Peruuta tallennus ja palaa tallennuslomakkeelle.',
'upload-tryagain' => 'Lähetä muutettu tiedostokuvaus',
'uploadnologin' => 'Et ole kirjautunut sisään',
-'uploadnologintext' => 'Sinun pitää $1 tallentaaksesi tiedostoja.',
+'uploadnologintext' => 'Sinun pitää $1, jotta voit tallentaa tiedostoja.',
'upload_directory_missing' => 'Tallennushakemisto $1 puuttuu, eikä palvelin pysty luomaan sitä.',
'upload_directory_read_only' => 'Palvelimella ei ole kirjoitusoikeuksia tallennushakemistoon $1.',
'uploaderror' => 'Tallennusvirhe',
'filehist-help' => 'Päiväystä napsauttamalla näet, millainen tiedosto oli kyseisellä hetkellä.',
'filehist-deleteall' => 'poista kaikki',
'filehist-deleteone' => 'poista tämä',
-'filehist-revert' => 'palauta tämä',
+'filehist-revert' => 'palauta',
'filehist-current' => 'nykyinen',
'filehist-datetime' => 'Päiväys',
'filehist-thumb' => 'Pienoiskuva',
'filedelete-submit' => 'Poista',
'filedelete-success' => "Tiedosto '''$1''' on poistettu.",
'filedelete-success-old' => "Tiedoston '''[[Media:$1|$1]]''' $2 kello $3 luotu versio on poistettu.",
-'filedelete-nofile' => "Tiedostoa '''$1''' ei ole olemassa.",
+'filedelete-nofile' => "Tiedostoa '''$1''' ei ole.",
'filedelete-nofile-old' => "Tiedostosta '''$1''' ei ole olemassa arkistossa olevaa versiota, jolla on annetut ominaisuudet.",
'filedelete-otherreason' => 'Muu syy tai tarkennus:',
'filedelete-reason-otherlist' => 'Muu syy',
'excontentauthor' => 'sisälsi: ”$1” (ainoa muokkaaja oli $2)',
'exbeforeblank' => 'ennen tyhjentämistä sisälsi: ”$1”',
'exblank' => 'oli tyhjä',
-'delete-confirm' => 'Poista ”$1”',
+'delete-confirm' => 'Sivun ”$1” poistaminen',
'delete-legend' => 'Sivun poisto',
'historywarning' => "'''Varoitus:''' Sivua, jota olet poistamassa, on muokattu noin $1 {{PLURAL:$1|kerta|kertaa}}:",
'confirmdeletetext' => 'Olet poistamassa sivun tai tiedoston ja kaiken sen historian. Ymmärrä teon seuraukset ja tee poisto {{GRAMMAR:genitive|{{SITENAME}}}} [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
'undeletedfiles' => '{{PLURAL:$1|1 tiedosto|$1 tiedostoa}} palautettiin',
'cannotundelete' => 'Palauttaminen epäonnistui:
$1',
-'undeletedpage' => "'''$1 on palautettu takaisin'''
+'undeletedpage' => "'''$1 on palautettu.'''
[[Special:Log/delete|Poistolokista]] löydät listan viimeisimmistä poistoista ja palautuksista.",
-'undelete-header' => 'Katso [[Special:Log/delete|poistolokia]], jossa ovat äskettäin poistetut sivut.',
+'undelete-header' => '[[Special:Log/delete|Poistolokissa]] on lista viimeisimmistä poistoista.',
'undelete-search-title' => 'Etsi poistettuja sivuja',
'undelete-search-box' => 'Etsi poistettuja sivuja',
'undelete-search-prefix' => 'Näytä sivut, jotka alkavat merkkijonolla:',
'undelete-search-submit' => 'Hae',
'undelete-no-results' => 'Poistoarkistosta ei löytynyt haettuja sivuja.',
-'undelete-filename-mismatch' => 'Ei voida palauttaa tiedoston versiota, jonka aikaleima on $1: Tiedostonimi ei ole sama.',
-'undelete-bad-store-key' => 'Ei voida palauttaa tiedoston versiota, jonka aikaleima on $1: Tiedostoa ei ollut olemassa ennen poistoa.',
+'undelete-filename-mismatch' => 'Tiedoston versiota, jonka aikaleima on $1, ei voi palauttaa, koska tiedostonimi ei ole sama.',
+'undelete-bad-store-key' => 'Tiedoston version, jonka aikaleima on $1 palauttaminen epäonnistui, koska tiedostoa ei ollut ennen poistoa.',
'undelete-cleanup-error' => 'Käyttämättömän arkistotiedoston $1 poistaminen epäonnistui.',
'undelete-missing-filearchive' => 'Tiedostoarkiston tunnuksen $1 hakeminen epäonnistui. Tiedosto on saatettu jo palauttaa.',
'undelete-error' => 'Sivun palauttaminen epäonnistui',
'lockedbyandtime' => '(lukinnut {{GENDER:$1|$1}} $2 kello $3)',
# Move page
-'move-page' => 'Siirrä $1',
+'move-page' => 'Sivun $1 siirto',
'move-page-legend' => 'Siirrä sivu',
'movepagetext' => "Alla olevalla lomakkeella voit nimetä uudelleen sivuja, jolloin niiden koko historia siirtyy uuden nimen alle.
Vanhasta sivusta tulee ohjaussivu, joka osoittaa uuteen sivuun.
'immobile-target-namespace-iw' => 'Kielilinkki ei ole kelvollinen kohde sivun siirrolle.',
'immobile-source-page' => 'Tämä sivu ei ole siirrettävissä.',
'immobile-target-page' => 'Kyseiselle kohdenimelle ei voi siirtää.',
-'bad-target-model' => 'Toivottu kohde käyttää eri sisältömuotoa. Sisällön muuttaminen muodosta $1 muotoon $2 ei ole mahdollista.',
+'bad-target-model' => 'Kohde käyttää eri sisältömallia. Sisällön muuttaminen muodosta $1 muotoon $2 ei ole mahdollista.',
'imagenocrossnamespace' => 'Tiedostoja ei voi siirtää pois tiedostonimiavaruudesta.',
'nonfile-cannot-move-to-file' => 'Sivuja ei voi siirtää tiedostonimiavaruuteen.',
'imagetypemismatch' => 'Uusi tiedostopääte ei vastaa tiedoston tyyppiä',
'allmessagesdefault' => 'Oletusarvo',
'allmessagescurrent' => 'Nykyinen arvo',
'allmessagestext' => 'Tämä on luettelo järjestelmäviesteistä, jotka ovat saatavilla MediaWiki-nimiavaruudessa.
-Jos haluat muokata MediaWikin yleistä kotoistusta, käy [//www.mediawiki.org/wiki/Localisation MediaWikin kotoistussivuilla] ja sivustolla [//translatewiki.net translatewiki.net].',
+Jos haluat muokata MediaWikin yleistä kotoistusta, käy [https://www.mediawiki.org/wiki/Localisation MediaWikin kotoistussivuilla] ja sivustolla [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => 'Tämä sivu ei ole käytössä, koska <tt>$wgUseDatabaseMessages</tt>-asetus on pois päältä.',
'allmessages-filter-legend' => 'Suodata',
'allmessages-filter' => 'Suodata muutosten perusteella',
'tooltip-n-mainpage-description' => 'Siirry etusivulle',
'tooltip-n-portal' => 'Keskustelua projektista',
'tooltip-n-currentevents' => 'Taustatietoa tämänhetkisistä tapahtumista',
-'tooltip-n-recentchanges' => 'Luettelo wikiin tehdyistä tuoreista muutoksista',
+'tooltip-n-recentchanges' => 'Luettelo tuoreista muutoksista',
'tooltip-n-randompage' => 'Avaa satunnainen sivu',
'tooltip-n-help' => 'Ohjeita',
'tooltip-t-whatlinkshere' => 'Lista sivuista, jotka viittaavat tänne',
'pageinfo-article-id' => 'Sivun tunniste',
'pageinfo-language' => 'Sivun sisällön kieli',
'pageinfo-content-model' => 'Sivun sisällön muoto',
-'pageinfo-robot-policy' => 'Robottien tekemä indeksointi',
+'pageinfo-robot-policy' => 'Hakukonemerkinnät',
'pageinfo-robot-index' => 'Indeksoitava',
'pageinfo-robot-noindex' => 'Ei indeksoitava',
'pageinfo-views' => 'Katselukertojen määrä',
'svg-long-desc' => 'SVG-tiedosto; oletustarkkuus $1 × $2 kuvapistettä; tiedostokoko $3',
'svg-long-desc-animated' => 'Animoitu SVG-tiedosto; oletustarkkuus $1 × $2 kuvapistettä; tiedostokoko $3',
'svg-long-error' => 'Kelvoton SVG-tiedosto: $1',
-'show-big-image' => 'Korkeatarkkuuksinen versio',
+'show-big-image' => 'Alkuperäinen tiedosto',
'show-big-image-preview' => 'Tämän esikatselun koko: $1.',
'show-big-image-other' => '{{PLURAL:$2|Muu resoluutio|Muut resoluutiot}}: $1.',
'show-big-image-size' => '$1 × $2 kuvapistettä',
# External editor support
'edit-externally' => 'Muokkaa tätä tiedostoa ulkoisessa sovelluksessa',
-'edit-externally-help' => '(Katso [//www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lisätietoja.)',
+'edit-externally-help' => '(Katso [https://www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lisätietoja.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'koko historia',
'version-hook-subscribedby' => 'Kytkökset',
'version-version' => '(Versio $1)',
'version-license' => 'Lisenssi',
-'version-poweredby-credits' => "Tämä wiki käyttää '''[//www.mediawiki.org/ MediaWikiä]'''. Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Tämä wiki käyttää '''[https://www.mediawiki.org/ MediaWikiä]'''. Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'muut',
'version-poweredby-translators' => 'translatewiki.net-kääntäjät',
'version-credits-summary' => 'Haluaisimme kiittää seuraavia henkilöitä heidän panoksestaan [[Special:Version|MediaWiki-ohjelmistoon]].',
# Special:SpecialPages
'specialpages' => 'Toimintosivut',
-'specialpages-note' => '----
-* Normaalit toimintosivut.
+'specialpages-note-top' => 'Merkkien selitys',
+'specialpages-note' => '* Normaalit toimintosivut.
* <span class="mw-specialpagerestricted">Rajoitetut toimintosivut.</span>',
'specialpages-group-maintenance' => 'Sivujen huoltaminen',
'specialpages-group-other' => 'Muut',
'mypreferences' => 'Innstillingar',
'prefs-edits' => 'Tal av rættingum:',
'prefsnologin' => 'Tú hevur ikki ritað inn',
-'prefsnologintext' => 'Tú mást vera <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} innritað/ur]</span> fyri at broyta brúkarainnstillingar.',
'changepassword' => 'Broyt loyniorð',
'prefs-skin' => 'Hamur',
'skin-preview' => 'Forskoðan',
'allmessagesdefault' => 'Enskur tekstur',
'allmessagescurrent' => 'Verandi tekstur',
'allmessagestext' => 'Hetta er eitt yvirlit av tøkum kervisboðum í MediaWiki-navnarúmi.
-Vinarliga vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] um tú ynskir at geva títt íkast til ta generisku MediaWiki lokalisatiónina.',
+Vinarliga vitja [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] um tú ynskir at geva títt íkast til ta generisku MediaWiki lokalisatiónina.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' er ikki stuðlað orsakað av at '''\$wgUseDatabaseMessages''' er sløkt.",
'allmessages-filter-legend' => 'Filtur',
'allmessages-filter-unmodified' => 'Óbroytt',
# External editor support
'edit-externally' => 'Rætta hesa fílu við eksternari applikatión',
-'edit-externally-help' => '(Sí [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] fyri meira kunning)',
+'edit-externally-help' => '(Sí [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] fyri meira kunning)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alt',
'version-hook-name' => 'Krókurnavn',
'version-version' => '(Útgáva $1)',
'version-license' => 'Lisensur',
-'version-poweredby-credits' => "Henda wiki verður rikin av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Henda wiki verður rikin av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'onnur',
'version-poweredby-translators' => 'translatewiki.net týðarar',
'version-credits-summary' => 'Vit ynskja at takka fylgjandi persónum fyri teirra íkast til [[Special:Version|MediaWiki]].',
* @author Louperivois
* @author Ltrlg
* @author Lucyin
+ * @author Mattho69
* @author McDutchie
* @author Meithal
* @author Metroitendo
'tog-enotifusertalkpages' => "M'avertir par courriel si ma page de discussion est modifiée",
'tog-enotifminoredits' => "M'avertir par courriel pour les modifications mineures de pages ou de fichiers également",
'tog-enotifrevealaddr' => 'Afficher mon adresse de courriel dans les courriels de notification',
-'tog-shownumberswatching' => 'Afficher le nombre d’utilisateurs et d’utilisatrices qui suivent la page',
+'tog-shownumberswatching' => "Afficher le nombre d'utilisateurs qui suivent la page",
'tog-oldsig' => 'Signature existante :',
'tog-fancysig' => 'Traiter la signature comme du wikitexte (sans lien automatique)',
'tog-uselivepreview' => 'Utiliser l’aperçu rapide (expérimental)',
'talk' => 'Discussion',
'views' => 'Affichages',
'toolbox' => 'Outils',
-'userpage' => 'Page utilisateur/utilisatrice',
+'userpage' => 'Page utilisateur',
'projectpage' => 'Page méta',
'imagepage' => 'Voir la page du fichier',
'mediawikipage' => 'Voir la page du message',
'youhavenewmessages' => 'Vous avez $1 ($2).',
'newmessageslink' => 'de nouveaux messages',
'newmessagesdifflink' => 'dernière modification',
-'youhavenewmessagesfromusers' => "Vous avez $1 {{PLURAL:$3|d'un(e) autre utilisateur/utilisatrice|de $3 autres utilisateurs/utilisatrices}} ($2).",
+'youhavenewmessagesfromusers' => "Vous avez $1 {{PLURAL:$3|d'un autre utilisateur|de $3 autres utilisateurs}} ($2).",
'youhavenewmessagesmanyusers' => 'Vous avez $1 de nombreux utilisateurs ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|un message|de nouveaux messages}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|dernière modification|dernières modifications}}',
'cascadeprotected' => 'Cette page est protégée car elle est incluse par {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l’option « protection en cascade » activée :
$2',
'namespaceprotected' => "Vous n'avez pas la permission de modifier les pages de l'espace de noms « '''$1''' ».",
-'customcssprotected' => "Vous n'avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d'un autre utilisateur ou utilisatrice.",
-'customjsprotected' => "Vous n'avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d'un autre utilisateur ou utilisatrice.",
+'customcssprotected' => "Vous n'avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d'un autre utilisateur.",
+'customjsprotected' => "Vous n'avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d'un autre utilisateur.",
'mycustomcssprotected' => 'Vous n’avez pas le droit de modifier cette page CSS.',
'mycustomjsprotected' => 'Vous n’avez pas le droit de modifier cette page JavaScript.',
'myprivateinfoprotected' => 'Vous n’avez pas les droits pour modifier vos informations personnelles.',
'invalidtitle-knownnamespace' => "Titre invalide avec l'espace de noms « $2 » et l'intitulé « $3 »",
'invalidtitle-unknownnamespace' => "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
'exception-nologin' => 'Non connecté(e)',
-'exception-nologin-text' => "Cette page ou cette action nécessite d'être connecté sur ce wiki.",
+'exception-nologin-text' => 'Veuillez [[Special:Userlogin|vous connecter]] pour pouvoir accéder à cette page ou cette action.',
+'exception-nologin-text-manual' => 'Veuillez $1 pour pouvoir accéder à cette page ou cette action.',
# Virus scanner
'virus-badscanner' => "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
N'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]].",
'yourname' => "Nom d'utilisateur :",
'userlogin-yourname' => "Nom d'utilisateur",
-'userlogin-yourname-ph' => "Entrez votre nom d'utilisateur ou d'utilisatrice",
-'createacct-another-username-ph' => 'Saisir le nom d’utilisateur ou d’utilisatrice',
+'userlogin-yourname-ph' => "Entrez votre nom d'utilisateur",
+'createacct-another-username-ph' => 'Saisir le nom d’utilisateur',
'yourpassword' => 'Mot de passe :',
'userlogin-yourpassword' => 'Mot de passe',
'userlogin-yourpassword-ph' => 'Entrez votre mot de passe',
'createacct-benefit-heading' => '{{SITENAME}} est écrit par des gens comme vous.',
'createacct-benefit-body1' => '{{PLURAL:$1|modification|modifications}}',
'createacct-benefit-body2' => '{{PLURAL:$1|article|articles}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|contributeur(trice) récent(e)|contributeurs et contributrices récent(e)s}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|contributeur récent|contributeurs récents}}',
'badretype' => 'Les mots de passe que vous avez saisis ne correspondent pas.',
-'userexists' => "Nom d'utilisateur/utilisatrice entré déjà utilisé.
+'userexists' => "Nom d'utilisateur entré déjà utilisé.
Veuillez choisir un nom différent.",
'loginerror' => 'Erreur de connexion',
'createacct-error' => 'Erreur lors de la création du compte',
'nocookieslogin' => '{{SITENAME}} utilise des cookies pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter.',
'nocookiesfornew' => "Le compte utilisateur n'a pas été créé, car nous n'avons pas pu identifier son origine.
Vérifiez que vous avez activé les cookies, rechargez la page et réessayez.",
-'noname' => "Vous n'avez pas saisi un nom d'utilisateur/utilisatrice valide.",
+'noname' => "Vous n'avez pas saisi un nom d'utilisateur valide.",
'loginsuccesstitle' => 'Connexion réussie',
'loginsuccess' => 'Vous êtes maintenant connecté{{GENDER:$1||e|(e)}} à {{SITENAME}} en tant que « $1 ».',
'nosuchuser' => "L'utilisateur « $1 » n'existe pas.
Les noms d'utilisateurs sont sensibles à la casse.
Vérifiez l'orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].",
-'nosuchusershort' => "Il n'y a pas de contributeur ni de contributrice avec le nom « $1 ». Veuillez vérifier l'orthographe.",
-'nouserspecified' => "Vous devez saisir un nom d'utilisateur/utilisatrice.",
-'login-userblocked' => 'Cet {{GENDER:$1|utilisateur|utilisatrice|utilisateur/utilisatrice}} est bloqué. Connexion non autorisée.',
+'nosuchusershort' => "Il n'y a pas de contributeur avec le nom « $1 ». Veuillez vérifier l'orthographe.",
+'nouserspecified' => "Vous devez saisir un nom d'utilisateur.",
+'login-userblocked' => 'Cet utilisateur est bloqué. Connexion non autorisée.',
'wrongpassword' => 'Le mot de passe est incorrect. Veuillez essayer à nouveau.',
'wrongpasswordempty' => "Vous n'avez pas entré de mot de passe. Veuillez essayer à nouveau.",
'passwordtooshort' => 'Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.',
-'password-name-match' => "Votre mot de passe doit être différent de votre nom d'utilisateur/utilisatrice.",
-'password-login-forbidden' => "L'utilisation de ce nom d'utilisateur/utilisatrice et de ce mot de passe a été interdite.",
+'password-name-match' => "Votre mot de passe doit être différent de votre nom d'utilisateur.",
+'password-login-forbidden' => "L'utilisation de ce nom d'utilisateur et de ce mot de passe a été interdite.",
'mailmypassword' => 'Recevoir un nouveau mot de passe par courriel',
'passwordremindertitle' => 'Nouveau mot de passe temporaire pour {{SITENAME}}',
'passwordremindertext' => "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de
Vous devriez ouvrir une session et modifier dès à présent votre mot de passe.
Ignorez ce message si ce compte a été créé par erreur.',
-'usernamehasherror' => "Le nom d'utilisateur/utilisatrice ne peut pas contenir des caractères de hachage",
+'usernamehasherror' => "Le nom d'utilisateur ne peut pas contenir des caractères de hachage",
'login-throttled' => "Vous avez tenté un trop grand nombre de connexions dernièrement.
Veuillez attendre $1 avant d'essayer à nouveau.",
'login-abort-generic' => 'Votre tentative de connexion a échoué',
'passwordreset-legend' => 'Remise à zéro du mot de passe',
'passwordreset-disabled' => 'La réinitialisation des mots de passe a été désactivée sur ce wiki.',
'passwordreset-emaildisabled' => 'Les fonctionnalités e-mail ont été désactivées sur ce wiki.',
-'passwordreset-username' => "Nom d'utilisateur/utilisatrice :",
+'passwordreset-username' => "Nom d'utilisateur :",
'passwordreset-domain' => 'Domaine :',
'passwordreset-capture' => 'Voir le courriel résultant?',
'passwordreset-capture-help' => "Si vous cochez cette case, le courriel (avec le mot de passe temporaire) vous sera affiché en même temps qu'il sera envoyé à l'utilisateur.",
$2
{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
-'passwordreset-emailelement' => "Nom d'{{GENDER:$1|utilisateur|utilisatrice|utilisateur/utilisatrice}} : $1
+'passwordreset-emailelement' => "Nom d'utilisateur : $1
Mot de passe temporaire : $2",
'passwordreset-emailsent' => 'Un courriel de réinitialisation de mot de passe a été envoyé.',
'passwordreset-emailsent-capture' => 'Un courriel de réinitialisation de mot de passe a été envoyé, qui est affiché ci-dessous.',
-'passwordreset-emailerror-capture' => "Un courriel de réinitialisation de mot de passe a été généré, qui est affiché ci-dessous, mais l'envoi à l'{{GENDER:$2|utilisateur|utilisatrice|utilisateur/utilisatrice}} a échoué : $1",
+'passwordreset-emailerror-capture' => "Un courriel de réinitialisation de mot de passe a été généré, qui est affiché ci-dessous, mais l'envoi à l'{{GENDER:$2|utilisateur}} a échoué : $1",
# Special:ChangeEmail
'changeemail' => 'Changer l’adresse de courriel',
* Expiration du blocage : $6
* Compte bloqué : $7.
-Vous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur ou administratrice]] pour en discuter.
+Vous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.
Vous ne pouvez utiliser la fonction « {{MediaWiki:emailpage}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été bloquée.
Votre adresse IP actuelle est $3 et votre identifiant de blocage est $5.
Veuillez préciser ces indications dans toutes les requêtes que vous ferez.",
* Expiration du blocage : $6
* Compte bloqué : $7
-Vous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs et administratrices]] pour discuter de ce blocage.
+Vous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage.
Notez que vous ne pourrez utiliser la fonctionnalité d’envoi de courriel que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été désactivée.
'newarticletext' => "Vous avez suivi un lien vers une page qui n'existe pas encore ou qui a été [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} effacée].
Pour créer cette page, entrez votre texte dans la boîte ci-dessous (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d'aide]] pour plus d'informations).
Si vous êtes arrivé{{GENDER:||e|(e)}} ici par erreur, cliquez sur le bouton '''retour''' de votre navigateur.",
-'anontalkpagetext' => "---- ''Vous êtes sur la page de discussion d'un(e) utilisateur/trice anonyme qui n'a pas encore créé de compte ou qui n'en utilise pas. Pour cette raison, nous devons utiliser son adresse IP pour l'identifier. Une adresse IP peut être partagée par plusieurs utilisateurs et utilisatrices. Si vous êtes un{{GENDER:||e|}} utilisat{{GENDER:|eur|rice|eur/rice}} anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin/signup|créer un compte]] ou [[Special:UserLogin|vous connecter]] afin d'éviter toute confusion future avec d'autres contributeurs et contributrices anonymes.''",
+'anontalkpagetext' => "---- ''Vous êtes sur la page de discussion d'un utilisateur anonyme qui n'a pas encore créé de compte ou qui n'en utilise pas. Pour cette raison, nous devons utiliser son adresse IP pour l'identifier. Une adresse IP peut être partagée par plusieurs utilisateurs. Si vous êtes un{{GENDER:||e|}} utilisat{{GENDER:|eur|rice|eur}} anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin/signup|créer un compte]] ou [[Special:UserLogin|vous connecter]] afin d'éviter toute confusion future avec d'autres contributeurs anonymes.''",
'noarticletext' => 'Il n\'y a pour l\'instant aucun texte sur cette page.
Vous pouvez [[Special:Search/{{PAGENAME}}|lancer une recherche sur ce titre]] dans les autres pages,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les opérations liées]
Vous pouvez trouver plus de détails dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
'userpage-userdoesnotexist' => "Le compte utilisateur « <nowiki>$1</nowiki> » n'est pas enregistré. Veuillez vérifier que vous voulez créer cette page.",
'userpage-userdoesnotexist-view' => "Le compte utilisateur « $1 » n'est pas enregistré.",
-'blocked-notice-logextract' => 'Cet utilisateur/trice est actuellement bloqué(e).
+'blocked-notice-logextract' => 'Cet utilisateur est actuellement bloqué.
La dernière entrée du journal des blocages est indiquée ci-dessous à titre d’information :',
'clearyourcache' => "'''Note :''' après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
* '''Firefox / Safari :''' Maintenez la touche ''Maj'' (''Shift'') en cliquant sur le bouton ''Actualiser'' ou pressez ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' sur un Mac) ;
Vous pouvez copier et coller votre texte dans un fichier texte et l’enregistrer pour plus tard.
L’administrateur ayant verrouillé la base de données a donné l’explication suivante : $1",
-'protectedpagewarning' => "'''AVERTISSEMENT : cette page est protégée. Seuls les utilisateurs et utilisatrices ayant le statut d’administrateur/administratrice peuvent la modifier.'''<br />
+'protectedpagewarning' => "'''AVERTISSEMENT : cette page est protégée. Seuls les utilisateurs ayant le statut d'administrateur peuvent la modifier.'''<br />
La dernière entrée du journal est affichée ci-dessous pour référence :",
-'semiprotectedpagewarning' => "'''Note :''' Cette page a été protégée de telle façon que seuls les contributeurs et contributrices enregistré(e)s puissent la modifier. La dernière entrée du journal est affichée ci-dessous pour référence :",
-'cascadeprotectedwarning' => "'''ATTENTION :''' Cette page a été protégée de manière à ce que seul(e)s les administrateurs et administratrices puissent la modifier. Cette protection est héritée par son inclusion par {{PLURAL:$1|la page protégée suivante, qui a|les pages protégées suivantes, qui ont}} la « protection en cascade » activée :",
+'semiprotectedpagewarning' => "'''Note :''' Cette page a été protégée de telle façon que seuls les contributeurs enregistrés puissent la modifier. La dernière entrée du journal est affichée ci-dessous pour référence :",
+'cascadeprotectedwarning' => "'''ATTENTION :''' Cette page a été protégée de manière à ce que seuls les administrateurs puissent la modifier. Cette protection est héritée par son inclusion par {{PLURAL:$1|la page protégée suivante, qui a|les pages protégées suivantes, qui ont}} la « protection en cascade » activée :",
'titleprotectedwarning' => "'''ATTENTION : Cette page a été protégée de telle manière que des [[Special:ListGroupRights|droits spécifiques]] sont requis pour pouvoir la créer.''' La dernière entrée du journal est affichée ci-dessous pour référence :",
'templatesused' => '{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} par cette page :',
'templatesusedpreview' => '{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} dans cette prévisualisation :',
'undo-failure' => 'Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires.',
'undo-norev' => "La modification n'a pas pu être défaite parce qu'elle est inexistante ou qu'elle a été supprimée.",
'undo-summary' => 'Annulation des modifications $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]])',
-'undo-summary-username-hidden' => 'Annuler la révision $1 par un(e) utilisateur/utilisatrice masqué(e)',
+'undo-summary-username-hidden' => 'Annuler la révision $1 par un utilisateur masqué',
# Account creation failure
'cantcreateaccounttitle' => 'Vous ne pouvez pas créer de compte.',
# Revision deletion
'rev-deleted-comment' => '(résumé de modification retiré)',
-'rev-deleted-user' => "(nom d'utilisateur/utilisatrice retiré)",
+'rev-deleted-user' => "(nom d'utilisateur retiré)",
'rev-deleted-event' => '(entrée retirée)',
-'rev-deleted-user-contribs' => "[nom d'utilisateur/utilisatrice ou adresse IP retiré - modification masquée sur les contributions]",
+'rev-deleted-user-contribs' => "[nom d'utilisateur ou adresse IP retiré - modification masquée sur les contributions]",
'rev-deleted-text-permission' => "Cette version de la page a été '''effacée'''.
Des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des effacements].",
'rev-deleted-text-unhide' => "Cette version de la page a été '''effacée'''.
'revdelete-hide-image' => 'Masquer le contenu du fichier',
'revdelete-hide-name' => "Masquer l'action et la cible",
'revdelete-hide-comment' => 'Modifier le résumé',
-'revdelete-hide-user' => 'Nom d’utilisateur/utilisatrice ou adresse IP de l’éditeur/éditrice',
-'revdelete-hide-restricted' => "Supprimer ces données aux administrateurs et administratrices ainsi bien qu'aux autres",
+'revdelete-hide-user' => 'Nom d’utilisateur/Adresse IP de l’éditeur',
+'revdelete-hide-restricted' => "Supprimer ces données aux administrateurs ainsi qu'aux autres",
'revdelete-radio-same' => '(ne pas changer)',
'revdelete-radio-set' => 'Masqué',
'revdelete-radio-unset' => 'Visible',
'revdelete-no-change' => "'''Attention :''' L'élément daté du $1 à $2 a déjà les paramètres de visibilité demandés.",
'revdelete-concurrent-change' => "Erreur lors de la modification de l'élément daté du $1 à $2 : son statut a été changé par quelqu'un d'autre pendant que vous le modifiez.
Vérifiez les journaux.",
-'revdelete-only-restricted' => "Erreur lors de la suppression de l'entrée datée du $1 à $2 : vous ne pouvez pas supprimer ces éléments aux administrateurs et administratrices sans également sélectionner des autres options de suppression.",
+'revdelete-only-restricted' => "Erreur lors de la suppression de l'entrée datée du $1 à $2 : vous ne pouvez pas supprimer ces éléments aux administrateurs sans également sélectionner des autres options de suppression.",
'revdelete-reason-dropdown' => "* Raisons courantes de suppression :
** Violation des droits d'auteurs ;
** Commentaires ou renseignements personnels inappropriés ;
'mypreferences' => 'Préférences',
'prefs-edits' => 'Nombre de modifications :',
'prefsnologin' => 'Non connecté',
-'prefsnologintext' => 'Vous devez être <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} connecté]</span> pour modifier vos préférences d\'utilisateur.',
+'prefsnologintext2' => 'Veuillez $1 pour définir les préférences utilisateur.',
'changepassword' => 'Changer de mot de passe',
'prefs-skin' => 'Habillage',
'skin-preview' => 'Prévisualiser',
'timezoneregion-europe' => 'Europe',
'timezoneregion-indian' => 'Océan indien',
'timezoneregion-pacific' => 'Océan pacifique',
-'allowemail' => "Autoriser l'envoi de courriels venant d'autres utilisateurs et utilisatrices",
+'allowemail' => "Autoriser l'envoi de courriels venant d'autres utilisateurs",
'prefs-searchoptions' => 'Recherche',
'prefs-namespaces' => 'Espaces de noms',
'defaultns' => 'Rechercher par défaut dans ces espaces de noms :',
'email-address-validity-invalid' => 'Une adresse valide est nécessaire !',
# User rights
-'userrights' => 'Gestion des droits des utilisateurs et utilisatrices',
-'userrights-lookup-user' => "Gestion des groupes d'utilisateurs et utilisatrices",
-'userrights-user-editname' => "Entrez un nom d'utilisateur/utilisatrice :",
-'editusergroup' => "Modification des groupes d'utilisateurs et utilisatrices",
+'userrights' => 'Gestion des droits des utilisateurs',
+'userrights-lookup-user' => "Gestion des groupes d'utilisateurs",
+'userrights-user-editname' => "Entrez un nom d'utilisateur :",
+'editusergroup' => "Modification des groupes d'utilisateurs",
'editinguser' => "Modification des droits de l'{{GENDER:$1|utilisateur|utilisatrice}} '''[[User:$1|$1]]''' $2",
-'userrights-editusergroup' => "Modifier les groupes de l'{{GENDER:$1|utilisateur|utilisatrice|utilisateur/trice}}",
-'saveusergroups' => "Enregistrer les groupes de l'utilisateur/utilisatrice",
+'userrights-editusergroup' => "Modifier les groupes de l'utilisateur",
+'saveusergroups' => "Enregistrer les groupes de l'utilisateur",
'userrights-groupsmember' => 'Membre de :',
'userrights-groupsmember-auto' => 'Membre implicite de :',
'userrights-groups-help' => 'Vous pouvez modifier les groupes auxquels appartient {{GENDER:$1|cet utilisateur|cette utilisatrice}} :
# Groups
'group' => 'Groupe :',
-'group-user' => 'Utilisateurs et utilisatrices',
-'group-autoconfirmed' => 'Utilisateurs et utilisatrices enregistré(e)s',
+'group-user' => 'Utilisateurs',
+'group-autoconfirmed' => 'Utilisateurs enregistrés',
'group-bot' => 'Robots',
-'group-sysop' => 'Administrateurs et administratrices',
+'group-sysop' => 'Administrateurs',
'group-bureaucrat' => 'Bureaucrates',
'group-suppress' => 'Superviseurs',
'group-all' => '(tous)',
'group-user-member' => '{{GENDER:$1|utilisateur|utilisatrice}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|utilisateur enregistré|utilisatrice enregistrée|utilisateur/utilisatrice enregistré(e)}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|utilisateur enregistré|utilisatrice enregistrée}}',
'group-bot-member' => '{{GENDER:$1|robot}}',
-'group-sysop-member' => '{{GENDER:$1|administrateur|administratrice|administrateur/administratice}}',
+'group-sysop-member' => '{{GENDER:$1|administrateur|administratrice}}',
'group-bureaucrat-member' => '{{GENDER:$1|bureaucrate}}',
-'group-suppress-member' => '{{GENDER:$1|superviseur|superviseuse|superviseur/superviseuse}}',
+'group-suppress-member' => '{{GENDER:$1|superviseur|superviseuse}}',
'grouppage-user' => '{{ns:project}}:Utilisateurs',
'grouppage-autoconfirmed' => '{{ns:project}}:Utilisateurs enregistrés',
'right-edit' => 'Modifier les pages',
'right-createpage' => 'Créer des pages (qui ne sont pas des pages de discussion)',
'right-createtalk' => 'Créer des pages de discussion',
-'right-createaccount' => 'Créer des comptes utilisateurs',
+'right-createaccount' => 'Créer des comptes utilisateur',
'right-minoredit' => 'Marquer ses modifications comme mineures',
'right-move' => 'Renommer des pages',
'right-move-subpages' => 'Renommer des pages avec leurs sous-pages',
-'right-move-rootuserpages' => "Renommer la page principale d'un utilisateur ou d’une utilisatrice",
+'right-move-rootuserpages' => "Renommer la page principale d'un utilisateur",
'right-movefile' => 'Renommer des fichiers',
'right-suppressredirect' => "Ne pas créer de redirection depuis le titre d'origine en renommant une page",
'right-upload' => 'Importer des fichiers',
'right-undelete' => 'Restaurer une page supprimée',
'right-suppressrevision' => 'Examiner et restaurer les versions masquées aux administrateurs',
'right-suppressionlog' => 'Voir les journaux privés',
-'right-block' => "Bloquer en écriture d'autres utilisateurs et utilisatrices",
-'right-blockemail' => "Empêcher un utilisateur ou une utilisatrice d'envoyer des courriels",
-'right-hideuser' => 'Bloquer un utilisateur ou une utilisatrice en masquant son nom du public',
+'right-block' => "Bloquer en écriture d'autres utilisateurs",
+'right-blockemail' => "Empêcher un utilisateur d'envoyer des courriels",
+'right-hideuser' => 'Bloquer un utilisateur en masquant son nom au public',
'right-ipblock-exempt' => "Ne pas être affecté par les IP bloquées, les blocages automatiques et les blocages de plages d'IP",
'right-proxyunbannable' => 'Ne pas être affecté par les blocages automatiques de serveurs mandataires',
'right-unblockself' => 'Se débloquer soi-même',
'right-editprotected' => 'Modifier les pages protégées avec « {{int:protect-level-sysop}} »',
'right-editsemiprotected' => 'Modifier les pages protégées avec « {{int:protect-level-autoconfirmed}} »',
'right-editinterface' => "Modifier l'interface utilisateur",
-'right-editusercssjs' => "Modifier les fichiers CSS et JavaScript d'autres utilisateurs et utilisatrices",
-'right-editusercss' => "Modifier les fichiers CSS d'autres utilisateurs et utilisatrices",
-'right-edituserjs' => "Modifier les fichiers JavaScript d'autres utilisateurs et utilisatrices",
+'right-editusercssjs' => "Modifier les fichiers CSS et JavaScript d'autres utilisateurs",
+'right-editusercss' => "Modifier les fichiers CSS d'autres utilisateurs",
+'right-edituserjs' => "Modifier les fichiers JavaScript d'autres utilisateurs",
'right-editmyusercss' => 'Modifier vos propres fichiers CSS utilisateur',
'right-editmyuserjs' => 'Modifier vos propres fichiers JavaScript utilisateur',
'right-viewmywatchlist' => 'Afficher votre propre liste de suivi',
'right-patrolmarks' => 'Voir les marquages de surveillance dans les modifications récentes',
'right-unwatchedpages' => 'Voir la liste des pages non suivies',
'right-mergehistory' => 'Fusionner les historiques des pages',
-'right-userrights' => 'Modifier tous les droits d’un utilisateur ou d’une utilisatrice',
-'right-userrights-interwiki' => "Modifier les droits d'utilisateurs et utilisatrices qui sont sur un autre wiki",
+'right-userrights' => "Modifier tous les droits d'un utilisateur",
+'right-userrights-interwiki' => "Modifier les droits d'utilisateurs qui sont sur un autre wiki",
'right-siteadmin' => 'Verrouiller ou déverrouiller la base de données',
'right-override-export-depth' => "Exporter les pages en incluant les pages liées jusqu'à une profondeur de 5 niveaux",
-'right-sendemail' => 'Envoyer un courriel aux autres utilisateurs et utilisatrices',
+'right-sendemail' => 'Envoyer un courriel aux autres utilisateurs',
'right-passwordreset' => 'Voir les courriels de réinitialisation des mots de passe',
# Special:Log/newusers
'newuserlogpagetext' => "Cette page affiche l'historique des créations de comptes utilisateur.",
# User rights log
-'rightslog' => "Journal des modifications de droits d'utilisateurs/utilisatrices",
+'rightslog' => "Journal des modifications de droits d'utilisateurs",
'rightslogtext' => "Voici l'historique des modifications des droits des utilisateurs.",
# Associated actions - in the sentence "You do not have permission to X"
'action-minoredit' => 'marquer cette modification comme mineure',
'action-move' => 'renommer cette page',
'action-move-subpages' => 'renommer cette page et ses sous-pages',
-'action-move-rootuserpages' => "renommer la page principale d'un utilisateur ou d’une utilisatrice",
+'action-move-rootuserpages' => "renommer la page principale d'un utilisateur",
'action-movefile' => 'renommer ce fichier',
'action-upload' => 'importer ce fichier',
'action-reupload' => 'écraser ce fichier existant',
'action-undelete' => 'restaurer cette page',
'action-suppressrevision' => 'visionner et rétablir cette version supprimée',
'action-suppressionlog' => 'voir ce journal privé',
-'action-block' => 'bloquer en écriture cet utilisateur/utilisatrice',
+'action-block' => 'bloquer en écriture cet utilisateur',
'action-protect' => 'modifier les niveaux de protection pour cette page',
'action-rollback' => 'annuler rapidement les modifications du dernier utilisateur qui a modifié une page donnée',
'action-import' => 'importer des pages depuis un autre wiki',
'action-unwatchedpages' => 'voir la liste des pages non suivies',
'action-mergehistory' => "fusionner l'historique de cette page",
'action-userrights' => "modifier tous les droits d'utilisateur",
-'action-userrights-interwiki' => "modifier les droits des utilisateurs et utilisatrices sur d'autres wikis",
+'action-userrights-interwiki' => "modifier les droits des utilisateurs sur d'autres wikis",
'action-siteadmin' => 'verrouiller ou déverrouiller la base de données',
'action-sendemail' => 'envoyer des courriels',
'action-editmywatchlist' => 'modifier votre liste de suivi',
'rclistfrom' => 'Afficher les nouvelles modifications depuis le $1.',
'rcshowhideminor' => '$1 les modifications mineures',
'rcshowhidebots' => '$1 les robots',
-'rcshowhideliu' => '$1 les utilisateurs et utilisatrices inscrit(e)s',
-'rcshowhideanons' => '$1 les utilisateurs et utilisatrices anonymes',
+'rcshowhideliu' => '$1 les utilisateurs inscrits',
+'rcshowhideanons' => '$1 les utilisateurs anonymes',
'rcshowhidepatr' => '$1 les modifications surveillées',
'rcshowhidemine' => '$1 mes modifications',
'rclinks' => 'Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours<br />$3.',
'img-auth-public' => "La fonction de img_auth.php est d'afficher des fichiers d'un wiki privé.
Ce wiki est configuré comme un wiki public.
Pour une sécurité optimale, img_auth.php est désactivé.",
-'img-auth-noread' => "L'utilisateur/utilisatrice n'a pas le droit en lecture sur « $1 ».",
+'img-auth-noread' => "L'utilisateur n'a pas le droit en lecture sur « $1 ».",
'img-auth-bad-query-string' => "L'URL a une chaîne de requête invalide.",
# HTTP errors
'listfiles_thumb' => 'Miniature',
'listfiles_date' => 'Date',
'listfiles_name' => 'Nom',
-'listfiles_user' => 'Utilisateur/trice',
+'listfiles_user' => 'Utilisateur',
'listfiles_size' => 'Taille',
'listfiles_description' => 'Description',
'listfiles_count' => 'Versions',
'statistics-views-total-desc' => 'Les vues des pages non existantes et des pages spéciales ne sont pas incluses',
'statistics-views-peredit' => 'Visites par modification',
'statistics-users' => '[[Special:ListUsers|Utilisateurs]] enregistrés',
-'statistics-users-active' => 'Utilisateurs et utilisatrices actifs/actives',
-'statistics-users-active-desc' => 'Utilisateurs et utilisatrices ayant fait au moins une action durant {{PLURAL:$1|le dernier jours|les $1 derniers jours}}',
+'statistics-users-active' => 'Utilisateurs actifs',
+'statistics-users-active-desc' => 'Utilisateurs ayant fait au moins une action durant {{PLURAL:$1|le dernier jours|les $1 derniers jours}}',
'statistics-mostpopular' => 'Pages les plus consultées',
'pageswithprop' => 'Pages avec une propriété de page',
'listusers-creationsort' => 'Trier par date de création',
'listusers-desc' => 'Trier en ordre descendant',
'usereditcount' => '$1 modification{{PLURAL:$1||s}}',
-'usercreated' => '{{GENDER:$3|Créé|Créée|Créé(e)}} le $1 à $2',
+'usercreated' => '{{GENDER:$3|Créé}} le $1 à $2',
'newpages' => 'Nouvelles pages',
-'newpages-username' => "Nom d'utilisateur/utilisatrice :",
+'newpages-username' => "Nom d'utilisateur :",
'ancientpages' => 'Pages les plus anciennement modifiées',
'move' => 'Renommer',
'movethispage' => 'Renommer cette page',
# Special:Log
'specialloguserlabel' => 'Auteur :',
-'speciallogtitlelabel' => 'Cible (titre ou utilisateur/utilisatrice):',
+'speciallogtitlelabel' => 'Cible (titre ou utilisateur):',
'log' => "Journaux d'opérations",
'all-logs-page' => 'Tous les journaux publics',
'alllogstext' => "Affichage combiné de tous les journaux disponibles sur {{SITENAME}}.<br />
'linksearch-error' => "Les caractères jokers ne peuvent être utilisés qu'au début du nom de domaine de l'hôte.",
# Special:ListUsers
-'listusersfrom' => 'Afficher les utilisateurs et utilisatrices à partir de :',
+'listusersfrom' => 'Afficher les utilisateurs à partir de :',
'listusers-submit' => 'Lister',
-'listusers-noresult' => 'Aucun utilisateur ou utilisatrice trouvé(e). Vérifiez aussi les variantes de casse.',
+'listusers-noresult' => 'Aucun utilisateur trouvé. Vérifiez aussi les variantes de casse.',
'listusers-blocked' => '(bloqué{{GENDER:$1||e|(e)}})',
# Special:ActiveUsers
-'activeusers' => 'Liste des utilisateurs et utilisatrices actifs/actives',
-'activeusers-intro' => 'Ceci est une liste des utilisatrices et utilisateurs qui ont exercé une quelconque activité au cours {{PLURAL:$1|de la dernière journée|des $1 derniers jours}}.',
+'activeusers' => 'Liste des utilisateurs actifs',
+'activeusers-intro' => 'Ceci est une liste des utilisateurs qui ont exercé une quelconque activité au cours {{PLURAL:$1|de la dernière journée|des $1 derniers jours}}.',
'activeusers-count' => '$1 {{PLURAL:$1|action|actions}} lors {{PLURAL:$3|du dernier jour|des $3 derniers jours}}',
-'activeusers-from' => 'Afficher les utilisatrices et utilisateurs depuis :',
+'activeusers-from' => 'Afficher les utilisateurs depuis :',
'activeusers-hidebots' => 'Masquer les robots',
-'activeusers-hidesysops' => 'Masquer les administratrices et administrateurs',
-'activeusers-noresult' => 'Aucun(e) utilisatrice ou utilisateur trouvé(e).',
+'activeusers-hidesysops' => 'Masquer les administrateurs',
+'activeusers-noresult' => 'Aucun utilisateur trouvé.',
# Special:ListGroupRights
-'listgrouprights' => "Droits des groupes d'utilisateurs et utilisatrices",
+'listgrouprights' => "Droits des groupes d'utilisateurs",
'listgrouprights-summary' => "Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d'accès qui leur sont associés.
Des [[{{MediaWiki:Listgrouprights-helppage}}|informations additionnelles]] peuvent exister au sujet des droits individuels.",
'listgrouprights-key' => 'Légende :
'listgrouprights-removegroup-self-all' => 'Peut se retirer tous les groupes de son propre compte',
# Email user
-'mailnologin' => "Pas d'adresse d'expéditeur/expéditrice",
-'mailnologintext' => "Vous devez être [[Special:UserLogin|identifié]] et avoir indiqué une adresse électronique valide dans vos [[Special:Preferences|préférences]] pour pouvoir envoyer des courriels à d'autres utilisatrices ou utilisateurs.",
+'mailnologin' => "Pas d'adresse d'expéditeur",
+'mailnologintext' => "Vous devez être [[Special:UserLogin|identifié]] et avoir indiqué une adresse électronique valide dans vos [[Special:Preferences|préférences]] pour pouvoir envoyer des courriels à d'autres utilisateurs.",
'emailuser' => 'Lui envoyer un courriel',
-'emailuser-title-target' => 'Envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice|cet utilisateur/cette utilisatrice}}',
-'emailuser-title-notarget' => "Envoyer un courriel à l'utilisatrice/utilisateur",
-'emailpage' => "Envoyer un courriel à l'utilisateur/utilisatrice",
-'emailpagetext' => "Vous pouvez utiliser le formulaire ci-dessous pour envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice|cet(te) utilisatrice/utilisateur}}.
-L'adresse électronique que vous avez indiquée dans [[Special:Preferences|vos préférences]] apparaîtra dans le champ « Expéditeur » de votre message ; ainsi, {{GENDER:$1|le|la|la/le}} destinataire pourra vous répondre directement.",
+'emailuser-title-target' => 'Envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}',
+'emailuser-title-notarget' => "Envoyer un courriel à l'utilisateur",
+'emailpage' => "Envoyer un courriel à l'utilisateur",
+'emailpagetext' => "Vous pouvez utiliser le formulaire ci-dessous pour envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}.
+L'adresse électronique que vous avez indiquée dans [[Special:Preferences|vos préférences]] apparaîtra dans le champ « Expéditeur » de votre message ; ainsi, le destinataire pourra vous répondre directement.",
'usermailererror' => "Erreur dans l'objet du courriel :",
-'defemailsubject' => "{{SITENAME}} Courriel de l'{{GENDER:$1|utilisateur|utilisatrice|utilisatrice/utilisateur}} « $1 »",
-'usermaildisabled' => "L'envoi de courriels entre utilisateurs/utilisatrices est désactivé",
-'usermaildisabledtext' => "Vous ne pouvez pas envoyer de courriels à d'autres utilisatrices utilisateurs sur ce wiki",
+'defemailsubject' => "{{SITENAME}} Courriel de l'utilisateur « $1 »",
+'usermaildisabled' => "L'envoi de courriels entre utilisateurs est désactivé",
+'usermaildisabledtext' => "Vous ne pouvez pas envoyer de courriels à d'autres utilisateurs sur ce wiki",
'noemailtitle' => 'Aucune adresse de courriel',
-'noemailtext' => "Cet utilisateur/cette utilisatrice n'a pas spécifié une adresse de courriel valide.",
+'noemailtext' => "Cet utilisateur n'a pas spécifié une adresse de courriel valide.",
'nowikiemailtitle' => 'Pas de courriel autorisé',
-'nowikiemailtext' => "Cet utilisateur/cette utilisatrice a choisi de ne pas recevoir de courriel de la part d'autres utilisateurs et utilisatrices.",
-'emailnotarget' => "Nom d'utilisateur/utilisatrice du/de la destinataire inexistant ou invalide.",
-'emailtarget' => "Entrez le nom d'utilisateur du ou de la destinataire",
-'emailusername' => "Nom d'utilisateur/utilisatrice :",
+'nowikiemailtext' => "Cet utilisateur a choisi de ne pas recevoir de courriel de la part d'autres utilisateurs.",
+'emailnotarget' => "Nom d'utilisateur du destinataire inexistant ou invalide.",
+'emailtarget' => "Entrez le nom d'utilisateur du destinataire",
+'emailusername' => "Nom d'utilisateur :",
'emailusernamesubmit' => 'Soumettre',
-'email-legend' => 'Envoyer un courriel à un autre utilisateur ou une autre utilisatrice de {{SITENAME}}',
+'email-legend' => 'Envoyer un courriel à un autre utilisateur de {{SITENAME}}',
'emailfrom' => 'De :',
'emailto' => 'À :',
'emailsubject' => 'Objet :',
'enotif_mailer' => 'Système de notification par courriel de {{SITENAME}}',
'enotif_reset' => 'Marquer toutes les pages comme visitées',
-'enotif_impersonal_salutation' => '{{GENDER:$2|utilisateur|utilisatrice|utilisateur/utilisatrice}} $1 de {{SITENAME}}',
+'enotif_impersonal_salutation' => 'Utilisateur de {{SITENAME}}',
'enotif_subject_deleted' => 'La page $1 sur {{SITENAME}} a été supprimée par {{GENDER:$2|$2}}',
'enotif_subject_created' => 'La page $1 sur {{SITENAME}} a été créée par {{GENDER:$2|$2}}',
'enotif_subject_moved' => 'La page $1 sur {{SITENAME}} a été renommée par {{GENDER:$2|$2}}',
'enotif_body_intro_changed' => 'La page $1 sur {{SITENAME}} a été modifiée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.',
'enotif_lastvisited' => 'Voyez $1 pour tous les changements depuis votre dernière visite.',
'enotif_lastdiff' => 'Voyez $1 pour visualiser ces changements.',
-'enotif_anon_editor' => 'utilisateur ou utilisatrice non-enregistré(e) $1',
-'enotif_body' => '{{GENDER:$WATCHINGUSERNAME|Cher|Chère|Cher/Chère}} $WATCHINGUSERNAME,
+'enotif_anon_editor' => 'utilisateur non-enregistré $1',
+'enotif_body' => 'Cher $WATCHINGUSERNAME,
$PAGEINTRO $NEWPAGE
-Résumé {{GENDER:$WATCHINGUSERNAME|du contribteur|de la contributrice|du constributeur/de la contributrice}} : $PAGESUMMARY $PAGEMINOREDIT
+Résumé du contributeur : $PAGESUMMARY $PAGEMINOREDIT
-Contactez {{GENDER:$WATCHINGUSERNAME|ce contribteur|cette contributrice|ce constributeur/cette contributrice}} :
+Contactez ce contributeur :
courriel : $PAGEEDITOR_EMAIL
wiki : $PAGEEDITOR_WIKI
-Il n\'y aura pas d\'autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.
+Il n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page une fois connecté. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.
- Votre système de notification de {{SITENAME}}
+Votre système de notification de {{SITENAME}}
--
Pour modifier les paramètres de notification par courriel, visitez
'protect-locked-access' => "Vous n'avez pas les droits nécessaires pour modifier les niveaux de protection de pages.
Voici les réglages actuels de la page '''$1''' :",
'protect-cascadeon' => "Cette page est protégée car incluse dans {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l'option « protection en cascade » activée. Vous pouvez changer le niveau de protection de cette page sans que cela n'affecte la protection en cascade.",
-'protect-default' => 'Autoriser tous les utilisateurs et toutes les utilisatrices',
-'protect-fallback' => 'Autoriser uniquement les utilisateurs et utilisatrices avec le droit « $1 »',
-'protect-level-autoconfirmed' => 'Autoriser uniquement les utilisateurs et utilisatrices auto-confirmé(e)s',
-'protect-level-sysop' => 'Autoriser uniquement les administratrices et administrateurs',
+'protect-default' => 'Autoriser tous les utilisateurs',
+'protect-fallback' => 'Autoriser uniquement les utilisateurs avec le droit « $1 »',
+'protect-level-autoconfirmed' => 'Autoriser uniquement les utilisateurs auto-confirmés',
+'protect-level-sysop' => 'Autoriser uniquement les administrateurs',
'protect-summary-cascade' => 'protection en cascade',
'protect-expiring' => 'expire le $1 (UTC)',
'protect-expiring-local' => 'expire le $1',
'undelete-error-long' => 'Des erreurs ont été rencontrées lors de la restauration du fichier :
$1',
-'undelete-show-file-confirm' => 'Êtes-vous {{GENDER:|sûr|sure|sûr/sure}} de vouloir visionner une version supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?',
+'undelete-show-file-confirm' => 'Êtes-vous sûr de vouloir visionner une version supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?',
'undelete-show-file-submit' => 'Oui',
# Namespace form on various pages
'blanknamespace' => '(Principal)',
# Contributions
-'contributions' => 'Contributions de l’{{GENDER:$1|utilisateur|utilisatrice|utilisateur/utilisatrice}}',
-'contributions-title' => 'Liste des contributions de l’utilisa{{GENDER:$1|teur|trice|teur/trice}} $1',
+'contributions' => 'Contributions de l’{{GENDER:$1|utilisateur|utilisatrice}}',
+'contributions-title' => 'Liste des contributions de l’utilisat{{GENDER:$1|eur|rice|eur}} $1',
'mycontris' => 'Contributions',
'contribsub2' => 'Pour {{GENDER:$3|$1}} ($2)',
'nocontribs' => "Aucune modification correspondant à ces critères n'a été trouvée.",
'sp-contributions-newbies' => 'Ne montrer que les contributions des nouveaux utilisateurs',
'sp-contributions-newbies-sub' => 'Parmi les nouveaux comptes',
-'sp-contributions-newbies-title' => 'Contributions d’utilisateurs et d’utilisatrices parmi les nouveaux comptes',
+'sp-contributions-newbies-title' => "Contributions d'utilisateurs parmi les nouveaux comptes",
'sp-contributions-blocklog' => 'journal des blocages',
'sp-contributions-deleted' => 'contributions supprimées',
'sp-contributions-uploads' => 'imports',
'sp-contributions-logs' => 'journaux',
'sp-contributions-talk' => 'discuter',
'sp-contributions-userrights' => 'gérer les droits',
-'sp-contributions-blocked-notice' => "{{GENDER:$1|Cet utilisateur|Cette utilisatrice|Cet(te) utilisatrice/utilisateur}} est actuellement bloqué{{GENDER:$1||e|(e)}}. La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
+'sp-contributions-blocked-notice' => "Cet utilisateur est actuellement bloqué. La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
'sp-contributions-blocked-notice-anon' => "Cette adresse IP est actuellement bloquée.
La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
'sp-contributions-search' => 'Rechercher les contributions',
-'sp-contributions-username' => "Adresse IP ou nom d'utilisateur/utilisatrice :",
+'sp-contributions-username' => "Adresse IP ou nom d'utilisateur :",
'sp-contributions-toponly' => 'Ne montrer que les contributions qui sont les dernières des articles',
'sp-contributions-submit' => 'Rechercher',
# Block/unblock
'autoblockid' => 'Blocage automatique #$1',
-'block' => 'Bloquer l’utilisateur/utilisatrice',
-'unblock' => "Débloquer l'utilisateur/utilisatrice",
-'blockip' => 'Bloquer l’utilisateur/utilisatrice',
-'blockip-title' => 'Bloquer l’utilisatrice/utilisateur',
-'blockip-legend' => 'Bloquer l’utilisatrice/utilisateur',
+'block' => 'Bloquer l’utilisateur',
+'unblock' => "Débloquer l'utilisateur",
+'blockip' => 'Bloquer l’utilisateur',
+'blockip-title' => 'Bloquer l’utilisateur',
+'blockip-legend' => 'Bloquer l’utilisateur',
'blockiptext' => 'Utilisez le formulaire ci-dessous pour bloquer les tentatives de modification faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur.
Une telle mesure ne devrait être prise que pour prévenir le vandalisme et en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].
Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont été vandalisées).',
-'ipadressorusername' => "Adresse IP ou nom d'utilisateur/utilisatrice :",
+'ipadressorusername' => "Adresse IP ou nom d'utilisateur :",
'ipbexpiry' => 'Durée avant expiration :',
'ipbreason' => 'Motif :',
'ipbreasonotherlist' => 'Autre motif',
** Tentative d'intimidation ou harcèlement
** Abus d'utilisation de comptes multiples
** Nom d'utilisateur inacceptable, injurieux ou diffamant",
-'ipb-hardblock' => 'Empêcher les utilisateurs et utilisatrices connecté(e)s de modifier en utilisant cette adresse IP',
+'ipb-hardblock' => 'Empêcher les utilisateurs connectés de modifier en utilisant cette adresse IP',
'ipbcreateaccount' => 'Empêcher la création de compte',
-'ipbemailban' => "Empêcher l'utilisatrice/utilisateur d'envoyer des courriels",
-'ipbenableautoblock' => "Bloquer automatiquement la dernière adresse IP utilisée par l'utilisateur ou l’utilisatrice et toutes ses IPs ultérieures qu'il pourrait essayer",
-'ipbsubmit' => 'Bloquer cet(te) utilisatrice/utilisateur',
+'ipbemailban' => "Empêcher l'utilisateur d'envoyer des courriels",
+'ipbenableautoblock' => "Bloquer automatiquement la dernière adresse IP utilisée par l'utilisateur et toutes ses IPs ultérieures qu'il pourrait essayer",
+'ipbsubmit' => 'Bloquer cet utilisateur',
'ipbother' => 'Autre durée :',
'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite',
'ipbotheroption' => 'autre',
'ipbotherreason' => 'Motif différent ou supplémentaire :',
-'ipbhidename' => "Masquer le nom d'utilisatrice/utilisateur des modifications et des listes",
-'ipbwatchuser' => 'Suivre les pages utilisatrice/utilisateur et de discussion de cet utilisateur',
-'ipb-disableusertalk' => 'Empêcher l’utilisatrice ou l’utilisateur de modifier sa page de discussion pendant le blocage',
-'ipb-change-block' => 'Bloquer à nouveau cet utilisateur ou cette utilisatrice avec ces paramètres',
+'ipbhidename' => "Masquer le nom d'utilisateur des modifications et des listes",
+'ipbwatchuser' => 'Suivre les pages utilisateur et de discussion de cet utilisateur',
+'ipb-disableusertalk' => "Empêcher l'utilisateur de modifier sa page de discussion pendant le blocage",
+'ipb-change-block' => 'Bloquer à nouveau cet utilisateur avec ces paramètres',
'ipb-confirm' => 'Confirmer le blocage',
'badipaddress' => 'Adresse IP incorrecte',
'blockipsuccesssub' => 'Blocage réussi',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] a été bloqué{{GENDER:$1||e|}}.<br />
Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.',
'ipb-blockingself' => 'Vous êtes sur le point de bloquer votre propre compte ! Êtes-vous certain{{GENDER:||e|(e)}} de vouloir faire cela ?',
-'ipb-confirmhideuser' => "Vous êtes sur le point de bloquer une utilisatrice ou un utilisateur avec « cacher l'utilisateur/utilisatrice » activé. Cela supprime le nom de l'utilisateur/utilisatrice dans toutes les listes et les entrées du journal. Êtes-vous sûr de vouloir le faire ?",
+'ipb-confirmhideuser' => "Vous êtes sur le point de bloquer un utilisateur avec « cacher l'utilisateur » activé. Cela supprime le nom de l'utilisateur dans toutes les listes et les entrées du journal. Êtes-vous sûr de vouloir le faire ?",
'ipb-edit-dropdown' => 'Modifier les motifs de blocage par défaut',
'ipb-unblock-addr' => 'Débloquer $1',
'ipb-unblock' => 'Débloquer un compte utilisateur ou une adresse IP',
'ipb-blocklist' => 'Voir les blocages existants',
'ipb-blocklist-contribs' => 'Contributions pour $1',
-'unblockip' => 'Débloquer un utilisateur/une utilisatrice ou une adresse IP',
+'unblockip' => 'Débloquer un utilisateur ou une adresse IP',
'unblockiptext' => "Utilisez le formulaire ci-dessous pour rétablir l'accès aux modifications depuis une adresse IP ou un nom d'utilisateur.",
'ipusubmit' => 'Supprimer ce blocage',
'unblocked' => '[[User:$1|$1]] a été débloqué{{GENDER:$1||e|(e)}}',
'unblocked-range' => '$1 a été débloqué{{GENDER:$1||e|(e)}}',
'unblocked-id' => 'Le blocage $1 a été enlevé',
-'blocklist' => 'Utilisateurs et utilisatrices bloqué(e)s',
-'ipblocklist' => 'Utilisateurs et utilisatrices bloqué(e)s',
-'ipblocklist-legend' => 'Chercher une utilisatrice ou un utilisateur bloqué(e)',
+'blocklist' => 'Utilisateurs bloqués',
+'ipblocklist' => 'Utilisateurs bloqués',
+'ipblocklist-legend' => 'Chercher un utilisateur bloqué',
'blocklist-userblocks' => 'Masquer les blocages de comptes',
'blocklist-tempblocks' => 'Masquer les blocages temporaires',
'blocklist-addressblocks' => 'Masquer les blocages d’adresses IP uniques',
'blocklist-timestamp' => 'Date et heure',
'blocklist-target' => 'Cible',
'blocklist-expiry' => 'Date d’expiration',
-'blocklist-by' => 'Administratrice ou administrateur ayant effectué le blocage',
+'blocklist-by' => 'Administrateur ayant effectué le blocage',
'blocklist-params' => 'Paramètres de blocage',
'blocklist-reason' => 'Motif',
'ipblocklist-submit' => 'Rechercher',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
'infiniteblock' => 'permanent',
'expiringblock' => 'expire le $1 à $2',
-'anononlyblock' => 'utilisateurs et utilisatrices non enregistré(e)s uniquement',
+'anononlyblock' => 'utilisateur non enregistré uniquement',
'noautoblockblock' => 'blocage automatique désactivé',
'createaccountblock' => 'création de compte bloquée',
'emailblock' => 'courriel bloqué',
'blocklist-nousertalk' => 'ne peut modifier sa propre page de discussion',
'ipblocklist-empty' => 'La liste des adresses IP bloquées est actuellement vide.',
-'ipblocklist-no-results' => "L'adresse IP ou l'utilisatrice/utilisateur demandé(e) n'est pas bloqué.",
+'ipblocklist-no-results' => "L'adresse IP ou l'utilisateur demandé n'est pas bloqué.",
'blocklink' => 'bloquer',
'unblocklink' => 'débloquer',
'change-blocklink' => 'modifier le blocage',
Les adresses IP automatiquement bloquées ne sont pas listées.
Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissements et blocages effectivement en cours.',
'unblocklogentry' => 'a débloqué $1',
-'block-log-flags-anononly' => 'utilisateurs et utilisatrices anonymes seulement',
+'block-log-flags-anononly' => 'utilisateurs anonymes seulement',
'block-log-flags-nocreate' => 'création de compte interdite',
'block-log-flags-noautoblock' => 'autoblocage des IP désactivé',
'block-log-flags-noemail' => 'envoi de courriel interdit',
'block-log-flags-nousertalk' => 'ne peut modifier sa propre page de discussion',
'block-log-flags-angry-autoblock' => 'autoblocage amélioré activé',
-'block-log-flags-hiddenname' => 'nom d’utilisateur/utilisatrice masqué',
+'block-log-flags-hiddenname' => 'nom d’utilisateur masqué',
'range_block_disabled' => 'Le droit administrateur de créer des blocages de plages IP est désactivé.',
'ipb_expiry_invalid' => "Durée d'expiration incorrecte.",
'ipb_expiry_temp' => "Les blocages de noms d'utilisateurs cachés doivent être permanents.",
'sorbs_create_account_reason' => 'Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.
Vous ne pouvez pas créer un compte.',
'xffblockreason' => "Une adresse IP dans l'en-tête X-Forwarded-For, soit la vôtre ou celle d'un serveur proxy que vous utilisez, a été bloquée. La raison du blocage initial est : $1",
-'cant-block-while-blocked' => 'Vous ne pouvez pas bloquer d’autres utilisateurs ou utilisatrices tant que vous êtes bloqué{{GENDER:||e|(e)}}.',
-'cant-see-hidden-user' => "L’utilisatrice ou utilisateur que vous tentez de bloquer a déjà été bloqué(e) et masqué(e). N’ayant pas le droit ''hideuser'', vous ne pouvez pas voir ou modifier le blocage de cet(te) utilisatrice ou utilisateur.",
-'ipbblocked' => "Vous ne pouvez pas bloquer ou débloquer d'autres utilisatrices ou utilisateurs, parce que vous êtes vous-même bloqué{{GENDER:||e|(e)}}",
+'cant-block-while-blocked' => 'Vous ne pouvez pas bloquer d’autres utilisateurs tant que vous êtes bloqué{{GENDER:||e|(e)}}.',
+'cant-see-hidden-user' => "L’utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. N’ayant pas le droit ''hideuser'', vous ne pouvez pas voir ou modifier le blocage de cet utilisateur.",
+'ipbblocked' => "Vous ne pouvez pas bloquer ou débloquer d'autres utilisateurs, parce que vous êtes vous-même bloqué",
'ipbnounblockself' => "Vous n'êtes pas autorisé{{GENDER:||e|(e)}} à vous débloquer vous-même",
# Developer tools
'lockdb' => 'Verrouiller la base de données',
'unlockdb' => 'Déverrouiller la base de données',
-'lockdbtext' => "Le verrouillage de la base de données empêchera tou(te)s les utilisatrices et utilisateurs de modifier des pages, d'enregistrer leurs préférences, de modifier leur liste de suivi et d'effectuer toutes les autres opérations nécessitant des changements dans la base de données.
+'lockdbtext' => "Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, d'enregistrer leurs préférences, de modifier leur liste de suivi et d'effectuer toutes les autres opérations nécessitant des changements dans la base de données.
Veuillez confirmer que c'est bien là ce que vous voulez faire et que vous déverrouillerez la base dès que votre opération de maintenance sera terminée.",
-'unlockdbtext' => "Le déverrouillage de la base de données permettra à nouveau à tou(te)s les utilisateurs et utilisatrices de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d'effectuer les autres opérations nécessitant des changements dans la base de données.
+'unlockdbtext' => "Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d'effectuer les autres opérations nécessitant des changements dans la base de données.
Veuillez confirmer que c'est bien là ce que vous voulez faire.",
'lockconfirm' => 'Oui, je confirme que je souhaite verrouiller la base de données.',
'unlockconfirm' => 'Oui, je confirme que je souhaite déverrouiller la base de données.',
'allmessagesdefault' => 'Message par défaut',
'allmessagescurrent' => 'Message actuel',
'allmessagestext' => "Ceci est la liste des messages disponibles dans l'espace MediaWiki.
-Veuillez visiter la [//www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.",
+Veuillez visiter la [https://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.",
'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' n'est pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
'allmessages-filter-legend' => 'Filtrer',
'allmessages-filter' => 'Filtrer par état de modification :',
'javascripttest-qunit-heading' => 'Suite de test QUnit de JavaScript sur MediaWiki',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Votre page {{GENDER:|utilisateur|utilisatrice|utilisateur/utilisatrice}}',
-'tooltip-pt-anonuserpage' => "La page utilisateur/utilisatrice de l'IP avec laquelle vous contribuez",
+'tooltip-pt-userpage' => 'Votre page utilisateur',
+'tooltip-pt-anonuserpage' => "La page utilisateur de l'IP avec laquelle vous contribuez",
'tooltip-pt-mytalk' => 'Votre page de discussion',
'tooltip-pt-anontalk' => 'La page de discussion pour les contributions depuis cette adresse IP',
'tooltip-pt-preferences' => 'Vos préférences',
'tooltip-search-fulltext' => 'Rechercher les pages comportant ce texte.',
'tooltip-p-logo' => 'Page principale',
'tooltip-n-mainpage' => "Visiter la page d'accueil du site",
-'tooltip-n-mainpage-description' => 'Aller à l’accueil',
+'tooltip-n-mainpage-description' => "Aller à l'accueil",
'tooltip-n-portal' => 'À propos du projet',
'tooltip-n-currentevents' => "Trouver les informations de fond sur l'actualité du moment",
'tooltip-n-recentchanges' => 'Liste des modifications récentes sur le wiki',
'tooltip-t-recentchangeslinked' => 'Liste des modifications récentes des pages liées à celle-ci',
'tooltip-feed-rss' => 'Flux RSS pour cette page',
'tooltip-feed-atom' => 'Flux Atom pour cette page',
-'tooltip-t-contributions' => 'Voir la liste des contributions de cet(te) utilisateur/utilisatrice',
-'tooltip-t-emailuser' => 'Envoyer un courriel à cet(te) utilisatrice/utilisateur',
+'tooltip-t-contributions' => 'Voir la liste des contributions de cet utilisateur',
+'tooltip-t-emailuser' => 'Envoyer un courriel à cet utilisateur',
'tooltip-t-upload' => 'Envoyer une image ou fichier média sur le serveur',
'tooltip-t-specialpages' => 'Liste de toutes les pages spéciales',
'tooltip-t-print' => 'Version imprimable de cette page',
'tooltip-t-permalink' => 'Lien permanent vers cette version de la page',
'tooltip-ca-nstab-main' => 'Voir la page de contenu',
-'tooltip-ca-nstab-user' => 'Voir la page utilisateur/utilisatrice',
+'tooltip-ca-nstab-user' => 'Voir la page utilisateur',
'tooltip-ca-nstab-media' => 'Voir la page du média',
'tooltip-ca-nstab-special' => 'Ceci est une page spéciale, vous ne pouvez pas la modifier.',
'tooltip-ca-nstab-project' => 'Voir la page du projet',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilisateur non enregistré|Utilisateurs non enregistrés}} sur {{SITENAME}}',
-'siteuser' => "{{GENDER:$2|l'utilisateur|l'utilisatrice|l'utilisateur ou utilisatrice}} $1 de {{SITENAME}}",
-'anonuser' => "l'utilisateur ou utilisatrice anonyme $1 de {{SITENAME}}",
+'siteuser' => "{{GENDER:$2|l'utilisateur|l'utilisatrice|l'utilisateur}} $1 de {{SITENAME}}",
+'anonuser' => "l'utilisateur anonyme $1 de {{SITENAME}}",
'lastmodifiedatby' => 'Cette page a été modifiée pour la dernière fois le $1 à $2 par $3.',
'othercontribs' => 'Basé sur le travail de $1.',
'others' => 'autres',
-'siteusers' => '{{PLURAL:$2|{{GENDER:$1|l’utilisateur|l’utilisatrice|l’utilisatrice ou utilisateur}}|les utilisatrices et/ou utilisateurs}} $1 de {{SITENAME}}',
-'anonusers' => "{{PLURAL:$2|l'utilisateur ou utilisatrice anonyme|les utilisateurs et/ou utilisatrices anonymes}} $1 de {{SITENAME}}",
+'siteusers' => "{{PLURAL:$2|l'utilisateur|les utilisateurs}} $1 de {{SITENAME}}",
+'anonusers' => "{{PLURAL:$2|l'utilisateur anonyme|les utilisateurs anonymes}} $1 de {{SITENAME}}",
'creditspage' => 'Crédits de la page',
'nocredits' => "Il n'y a pas d'informations d'attribution disponibles pour cette page.",
'pageinfo-robot-index' => 'Autorisée',
'pageinfo-robot-noindex' => 'Interdite',
'pageinfo-views' => 'Nombre de vues',
-'pageinfo-watchers' => 'Nombre de contributrices et contributeurs ayant la page dans leur liste de suivi',
-'pageinfo-few-watchers' => 'Moins de $1 {{PLURAL:$1|observateur ou observatrice|observateurs et observatrices}}',
+'pageinfo-watchers' => 'Nombre de contributeurs ayant la page dans leur liste de suivi',
+'pageinfo-few-watchers' => 'Moins de $1 {{PLURAL:$1|observateur|observateurs}}',
'pageinfo-redirects-name' => 'Nombre de redirections vers cette page',
'pageinfo-subpages-name' => 'Sous-pages de cette page',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirection|redirections}}; $3 {{PLURAL:$3|non-redirection|non-redirections}})',
'pageinfo-firstuser' => 'Créateur de la page',
'pageinfo-firsttime' => 'Date de création de la page',
-'pageinfo-lastuser' => 'Dernier contributeur ou dernière contributrice',
+'pageinfo-lastuser' => 'Dernier contributeur',
'pageinfo-lasttime' => 'Date de la dernière modification',
'pageinfo-edits' => 'Nombre total de modifications',
-'pageinfo-authors' => "Nombre total d'auteur(e)s distinct(e)s",
+'pageinfo-authors' => "Nombre total d'auteurs distincts",
'pageinfo-recent-edits' => 'Nombre de modifications récentes (dans les derniers $1)',
-'pageinfo-recent-authors' => "Nombre d'auteur(e)s distinct(e)s récents",
+'pageinfo-recent-authors' => "Nombre d'auteurs distincts récents",
'pageinfo-magic-words' => '{{PLURAL:$1|Mot magique|Mots magiques}} ($1)',
'pageinfo-hidden-categories' => '{{PLURAL:$1|Catégorie cachée|Catégories cachées}} ($1)',
'pageinfo-templates' => '{{PLURAL:$1|Modèle inclu|Modèles inclus}} ($1)',
'svg-long-desc' => 'Fichier SVG, résolution de $1 × $2 pixels, taille : $3',
'svg-long-desc-animated' => 'Fichier SVG animé, taille $1 x $2 pixels, taille du fichier: $3',
'svg-long-error' => 'Fichier SVG non valide: $1',
-'show-big-image' => 'Image en plus haute résolution',
+'show-big-image' => "Fichier d'origine",
'show-big-image-preview' => 'Taille de cet aperçu : $1.',
'show-big-image-other' => '{{PLURAL:$2|Autre résolution|Autres résolutions}} : $1.',
'show-big-image-size' => '$1 × $2 pixels',
'exif-compressedbitsperpixel' => "Mode de compression de l'image",
'exif-pixelydimension' => "Largeur de l'image",
'exif-pixelxdimension' => "Hauteur de l'image",
-'exif-usercomment' => "Commentaires de l'utilisateur ou de l’utilisatrice",
+'exif-usercomment' => "Commentaires de l'utilisateur",
'exif-relatedsoundfile' => 'Fichier audio associé',
'exif-datetimeoriginal' => 'Date de la prise originelle',
'exif-datetimedigitized' => 'Date de la numérisation',
# External editor support
'edit-externally' => 'Modifier ce fichier en utilisant une application externe',
-'edit-externally-help' => "(Consulter [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d'installation] pour plus d'informations)",
+'edit-externally-help' => "(Consulter [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d'installation] pour plus d'informations)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tout',
'version-hook-subscribedby' => 'Abonnés :',
'version-version' => '(version $1)',
'version-license' => 'Licence',
-'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'autres',
'version-poweredby-translators' => 'traducteurs de translatewiki.net',
'version-credits-summary' => 'Nous tenons à remercier les personnes suivantes pour leur contribution à [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Pages spéciales',
-'specialpages-note' => '----
-* Pages spéciales normales.
-* <span class="mw-specialpagerestricted">Pages spéciales restreintes.</span>
-* <span class="mw-specialpagecached">Pages spéciales seulement en cache (pourraient être désuètes).</span>',
+'specialpages-note-top' => 'Légende',
+'specialpages-note' => '* Pages spéciales normales.
+* <span class="mw-specialpagerestricted">Pages spéciales restreintes.</span>',
'specialpages-group-maintenance' => 'Rapports de maintenance',
'specialpages-group-other' => 'Autres pages spéciales',
'specialpages-group-login' => "S'identifier / s'inscrire",
'mypreferences' => 'Prèferences',
'prefs-edits' => 'Nombro de changements :',
'prefsnologin' => 'Pas branchiê',
-'prefsnologintext' => 'Vos dête étre <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} branchiê]</span> por dèfenir les prèferences utilisator.',
'changepassword' => 'Changiér lo contresegno',
'prefs-skin' => 'Habelyâjo',
'skin-preview' => 'Prèvêre',
'allmessagesdefault' => 'Mèssâjo per dèfôt',
'allmessagescurrent' => 'Tèxto d’ora',
'allmessagestext' => 'O est la lista des mèssâjos sistèmo disponiblos dens l’èspâço MediaWiki.
-Volyéd visitar la [//www.mediawiki.org/wiki/Localisation localisacion de MediaWiki] et pués [//translatewiki.net translatewiki.net] se vos voléd contribuar a la localisacion g·ènèrica de MediaWiki.',
+Volyéd visitar la [https://www.mediawiki.org/wiki/Localisation localisacion de MediaWiki] et pués [//translatewiki.net translatewiki.net] se vos voléd contribuar a la localisacion g·ènèrica de MediaWiki.',
'allmessagesnotsupportedDB' => "Ceta pâge '''{{ns:special}}:Allmessages''' est inutilisâbla perce que '''\$wgUseDatabaseMessages''' at étâ dèsactivâ.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar per ètat de changement :',
# External editor support
'edit-externally' => 'Changiér ceti fichiér en utilisent una aplicacion de defôr',
-'edit-externally-help' => '(Vêde les [//www.mediawiki.org/wiki/Manual:External_editors enstruccions d’enstalacion] por més d’enformacions)',
+'edit-externally-help' => '(Vêde les [https://www.mediawiki.org/wiki/Manual:External_editors enstruccions d’enstalacion] por més d’enformacions)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tot',
'version-version' => '(Vèrsion $1)',
'version-svn-revision' => '(v$2)',
'version-license' => 'Licence',
-'version-poweredby-credits' => "Ceti vouiqui fonccione grâce a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ceti vouiqui fonccione grâce a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'ôtros',
'version-license-info' => 'MediaWiki est una programeria libra ; vos la pouede tornar distribuar et / ou changiér d’aprés los tèrmos de la Licence publica g·ènèrala GNU coment publeyê per la Free Software Foundation ; seye la vèrsion 2 de la Licence, ou ben (a voutron chouèx) tota novèla vèrsion.
# Special:SpecialPages
'specialpages' => 'Pâges spèciâles',
-'specialpages-note' => '----
-* Pâges spèciâles normales.
+'specialpages-note' => '* Pâges spèciâles normales.
* <span class="mw-specialpagerestricted">Pâges spèciâles rètrentes.</span>
* <span class="mw-specialpagecached">Pâges spèciâles solament en cache (porriant étre dèpassâs).</span>',
'specialpages-group-maintenance' => 'Rapôrts de mantegnence',
'mypreferences' => 'Iinstelangen',
'prefs-edits' => 'Taal faan feranrangen:',
'prefsnologin' => 'Ei uunmeldet',
-'prefsnologintext' => 'Dü skel <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} uunmeldet]</span> wees, am din iinstelangen tu feranrin.',
'changepassword' => 'Paaswurd feranre',
'prefs-skin' => 'Skak',
'skin-preview' => 'Föörskau',
'allmessagesdefault' => 'Standard tekst',
'allmessagescurrent' => 'Aktuel tekst',
'allmessagestext' => "Det as en list mä MediaWiki-süsteemteksten.
-Wees so gud an beschük a sidjen [//www.mediawiki.org/wiki/Localisation MediaWiki-auersaatang] an [//translatewiki.net translatewiki.net], wan dü bi't auersaaten mähalep meest.",
+Wees so gud an beschük a sidjen [https://www.mediawiki.org/wiki/Localisation MediaWiki-auersaatang] an [//translatewiki.net translatewiki.net], wan dü bi't auersaaten mähalep meest.",
'allmessagesnotsupportedDB' => 'Detdiar spezial-sidj koon ei brükt wurd, auer <tt>$wgUseDatabaseMessages</tt> ei aktiif as.',
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter för di uunpaaset stant:',
# External editor support
'edit-externally' => 'Detdiar datei mä en ekstern program bewerke',
-'edit-externally-help' => "(Luk efter uun't [//www.mediawiki.org/wiki/Manual:External_editors hoonbuk] am muar diartu)",
+'edit-externally-help' => "(Luk efter uun't [https://www.mediawiki.org/wiki/Manual:External_editors hoonbuk] am muar diartu)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aaltumaal',
'version-hook-subscribedby' => 'Aprepen faan',
'version-version' => '(Werjuun $1)',
'version-license' => 'Lisens',
-'version-poweredby-credits' => "Detheer wääbsteed werket mä '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Detheer wääbsteed werket mä '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'öödern',
'version-poweredby-translators' => 'Auersaatern faan translatewiki.net',
'version-credits-summary' => 'Wi besoonke üs bi jodiar persuunen för hör bidracher tu [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Spezial-sidjen',
-'specialpages-note' => '----
-* Normool spezial-sidjen
+'specialpages-note' => '* Normool spezial-sidjen
* <span class="mw-specialpagerestricted">Spezial-sidjen mä tugripsrochten</span>
* <span class="mw-specialpagecached">Spezial-sidjen uun a cache (As ferlicht ei muar aktuel.)</span>',
'specialpages-group-maintenance' => 'Werksteedsidjen',
'allmessagesdefault' => 'Test predeterminât',
'allmessagescurrent' => 'Test curint',
'allmessagestext' => 'Cheste e je une liste dai messaçs di sisteme disponibii tal non dal spazi MediaWiki.
-Par plasê va su [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se tu vuelis contribuî ae traduzion gjeneriche di MediaWiki.',
+Par plasê va su [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se tu vuelis contribuî ae traduzion gjeneriche di MediaWiki.',
'allmessages-filter-all' => 'Ducj',
'allmessages-language' => 'Lenghe:',
'allmessages-filter-submit' => 'Va',
# External editor support
'edit-externally' => 'Modifiche chest file cuntune aplicazion esterne',
-'edit-externally-help' => '(Cjale lis [//www.mediawiki.org/wiki/Manual:External_editors istruzions] par vê altris informazions)',
+'edit-externally-help' => '(Cjale lis [https://www.mediawiki.org/wiki/Manual:External_editors istruzions] par vê altris informazions)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'dutis',
# Special:SpecialPages
'specialpages' => 'Pagjinis speciâls',
-'specialpages-note' => '----
-* Pagjinis speciâls no riservadis.
+'specialpages-note' => '* Pagjinis speciâls no riservadis.
* <strong class="mw-specialpagerestricted">Pagjinis speciâls a ciertis categoriis di utents.</strong>',
'specialpages-group-maintenance' => 'Rapuarts di manutenzion',
'specialpages-group-other' => 'Altris pagjinis speciâls',
* @author Purodha
* @author Pyt
* @author SK-luuut
+ * @author Shirayuki
* @author Snakesteuben
* @author Urhixidur
* @author לערי ריינהארט
'mypreferences' => 'Myn foarkarynstellings',
'prefs-edits' => 'Tal bewurkings:',
'prefsnologin' => 'Net oanmeld',
-'prefsnologintext' => 'Jo moatte <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} oanmeld]</span> wêze om jo foarkar-ynstellings te feroarje te kinnen.',
'changepassword' => 'Wachtwurd feroarje',
'prefs-skin' => 'Side-oansjen',
'skin-preview' => 'Proefbyld',
'allmessagesdefault' => 'Standerttekst',
'allmessagescurrent' => 'Tekst yn de nijste ferzje',
'allmessagestext' => 'Dit is in list fan alle systeemberjochten beskikber yn de MediaWiki-nammeromte.
-Sjoch: [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [//translatewiki.net translatewiki.net].',
+Sjoch: [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [//translatewiki.net translatewiki.net].',
# Thumbnails
'thumbnail-more' => 'Fergrutsje',
# External editor support
'edit-externally' => 'Wizigje dizze triem mei in ekstern programma',
-'edit-externally-help' => 'Sjoch de [//www.mediawiki.org/wiki/Manual:External_editors ynstel-hantlieding] foar mear ynformaasje.',
+'edit-externally-help' => 'Sjoch de [https://www.mediawiki.org/wiki/Manual:External_editors ynstel-hantlieding] foar mear ynformaasje.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alles',
# Special:SpecialPages
'specialpages' => 'Bysûndere siden',
-'specialpages-note' => '----
-* Normale bysûndere siden.
+'specialpages-note' => '* Normale bysûndere siden.
* <strong class="mw-specialpagerestricted">Beheinde bysûndere siden.</strong>',
'specialpages-group-maintenance' => 'Underhâld siden',
'specialpages-group-other' => 'Oare bysûndere siden',
'preferences' => 'Sainroghanna',
'mypreferences' => 'Sainroghanna',
'prefsnologin' => 'Níl tú logáilte isteach',
-'prefsnologintext' => 'Ní mór duit <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logáil isteach]</span> chun do chuid sainroghanna phearsanta a shocrú.',
'changepassword' => "Athraigh d'fhocal faire",
'prefs-skin' => 'Craiceann',
'skin-preview' => 'Réamhamharc',
'allmessagesdefault' => 'Téacs réamhshocraithe',
'allmessagescurrent' => 'Téacs reatha',
'allmessagestext' => 'Is liosta é seo de theachtaireachtaí córais atá le fáil san ainmspás MediaWiki.
-Tabhair cuairt ar [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] agus [//translatewiki.net translatewiki.net] le do thoil más mian leat cur leis an logánú ginearálta MediaWiki.',
+Tabhair cuairt ar [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] agus [//translatewiki.net translatewiki.net] le do thoil más mian leat cur leis an logánú ginearálta MediaWiki.',
'allmessagesnotsupportedDB' => "Ní féidir an leathanach seo a úsáid dá bharr gur díchumasaíodh '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-all' => 'Uile',
'allmessages-language' => 'Teanga:',
# External editor support
'edit-externally' => 'Athraigh an comhad seo le feidhmchlár seachtrach',
-'edit-externally-help' => '(Féach ar na [//www.mediawiki.org/wiki/Manual:External_editors treoracha cumraíochta] as Béarla le tuilleadh eolais)',
+'edit-externally-help' => '(Féach ar na [https://www.mediawiki.org/wiki/Manual:External_editors treoracha cumraíochta] as Béarla le tuilleadh eolais)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'an t-iomlán',
# External editor support
'edit-externally' => 'Kompyuterinizdäki uygulamaklarlan faylı düz',
-'edit-externally-help' => 'Taa çok bilgi için var nicä bakmaa metadaki [//www.mediawiki.org/wiki/Manual:External_editors dış uygulama instrumentläri] (angliyça) sayfasına.',
+'edit-externally-help' => 'Taa çok bilgi için var nicä bakmaa metadaki [https://www.mediawiki.org/wiki/Manual:External_editors dış uygulama instrumentläri] (angliyça) sayfasına.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Hepsini göster',
'mypreferences' => '偶𠮶参数设置',
'prefs-edits' => '编辑数:',
'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '汝要<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>后才设得正个人参数。',
'changepassword' => '改过密码',
'prefs-skin' => '皮',
'skin-preview' => '(预览)',
'allmessagesdefault' => '默认文字',
'allmessagescurrent' => '眼前𠮶文字',
'allmessagestext' => '个首列到全部制定得正𠮶系统界面。
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:系统界面功能'''关卟嘞('''\$wgUseDatabaseMessages''')。",
# Thumbnails
# External editor support
'edit-externally' => '用外部程式来编辑个只档案',
-'edit-externally-help' => '请参看[//www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解别𠮶内容。',
+'edit-externally-help' => '请参看[https://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解别𠮶内容。',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全部',
'version-hook-subscribedby' => '订阅人',
'version-version' => '(版本 $1)',
'version-license' => '许可证',
-'version-poweredby-credits' => "个只 Wiki 由 '''[//www.mediawiki.org/ MediaWiki]''' 驱动,版权所有 © 2001-$1 $2。",
+'version-poweredby-credits' => "个只 Wiki 由 '''[https://www.mediawiki.org/ MediaWiki]''' 驱动,版权所有 © 2001-$1 $2。",
'version-software' => '装正𠮶软件',
'version-software-version' => '版本',
'mypreferences' => '我嗰參數設置',
'prefs-edits' => '編輯數:',
'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '汝要<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>後才設得正個人參數。',
'changepassword' => '改過密碼',
'prefs-skin' => '皮',
'skin-preview' => '(預覽)',
'allmessagesdefault' => '默認文字',
'allmessagescurrent' => '眼前嗰文字',
'allmessagestext' => '箇首列到全部制定得正嗰系統界面。
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:系統界面功能'''關卟嘞('''\$wgUseDatabaseMessages''')。",
# Thumbnails
# External editor support
'edit-externally' => '用外部程式來編輯箇隻檔案',
-'edit-externally-help' => '請參看[//www.mediawiki.org/wiki/Manual:External_editors 設置步驟]瞭解別嗰內容。',
+'edit-externally-help' => '請參看[https://www.mediawiki.org/wiki/Manual:External_editors 設置步驟]瞭解別嗰內容。',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全部',
'version-hook-subscribedby' => '訂閱人',
'version-version' => '(版本 $1)',
'version-license' => '許可證',
-'version-poweredby-credits' => "箇隻 Wiki 由 '''[//www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
+'version-poweredby-credits' => "箇隻 Wiki 由 '''[https://www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
'version-software' => '裝正嗰軟件',
'version-software-version' => '版本',
'mypreferences' => 'Na roghainnean agam',
'prefs-edits' => 'Co mheud deasachadh:',
'prefsnologin' => 'Chan eil thu air clàradh a-steach',
-'prefsnologintext' => 'Feumaidh tu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} clàradh a-steach]</span> mus urrainn dhut roghainnean cleachdaiche a chur air gleus.',
'changepassword' => 'Atharraich facal-faire',
'prefs-skin' => 'Bian',
'skin-preview' => 'Ro-shealladh',
'allmessagesname' => 'Ainm',
'allmessagesdefault' => 'Teacsa bunaiteach na teachdaireachd',
'allmessagestext' => 'Seo liosta de theachdaireachdan an t-siostaim a tha ri làimh ann an namespace MediaWiki.
-Tadhail air [//www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki] is [//translatewiki.net translatewiki.net] ma tha thu airson pàirt a ghabhail ann an ionadaileadh MediaWiki.',
+Tadhail air [https://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki] is [//translatewiki.net translatewiki.net] ma tha thu airson pàirt a ghabhail ann an ionadaileadh MediaWiki.',
# Thumbnails
'thumbnail-more' => 'Meudaich',
# External editor support
'edit-externally' => 'Deasaich am faidhle le prògram on taobh a-muigh',
-'edit-externally-help' => '(Seall air [//www.mediawiki.org/wiki/Manual:External_editors mìneachadh an t-suidheachaidh] airson barrachd fiosrachaidh)',
+'edit-externally-help' => '(Seall air [https://www.mediawiki.org/wiki/Manual:External_editors mìneachadh an t-suidheachaidh] airson barrachd fiosrachaidh)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'a h-uile',
'revdelete-hide-user' => 'Nome de usuario ou enderezo IP do editor',
'revdelete-hide-restricted' => 'Eliminar os datos da vista dos administradores así coma da doutros',
'revdelete-radio-same' => '(non cambiar)',
-'revdelete-radio-set' => 'Visible',
-'revdelete-radio-unset' => 'Agochado',
+'revdelete-radio-set' => 'Agochado',
+'revdelete-radio-unset' => 'Visible',
'revdelete-suppress' => 'Eliminar os datos da vista dos administradores así coma da doutros',
'revdelete-unsuppress' => 'Retirar as restricións sobre as revisións restauradas',
'revdelete-log' => 'Motivo:',
'mypreferences' => 'Preferencias',
'prefs-edits' => 'Número de edicións:',
'prefsnologin' => 'Non accedeu ao sistema',
-'prefsnologintext' => 'Debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} acceder ao sistema]</span> para modificar as preferencias de usuario.',
'changepassword' => 'Cambiar o meu contrasinal',
'prefs-skin' => 'Aparencia',
'skin-preview' => 'Vista previa',
'right-move-rootuserpages' => 'Mover páxinas de usuario raíz',
'right-movefile' => 'Mover ficheiros',
'right-suppressredirect' => 'Non crear unha redirección dende o nome vello ao mover unha páxina',
-'right-upload' => 'Cargar ficheiros',
+'right-upload' => 'Subir ficheiros',
'right-reupload' => 'Sobrescribir ficheiros existentes',
'right-reupload-own' => 'Sobrescribir un ficheiro existente cargado polo mesmo usuario',
'right-reupload-shared' => 'Sobrescribir localmente ficheiros do repositorio multimedia',
'recentchangeslinked-to' => 'Mostrar os cambios relacionados das páxinas que ligan coa dada',
# Upload
-'upload' => 'Cargar un ficheiro',
-'uploadbtn' => 'Cargar o ficheiro',
+'upload' => 'Subir un ficheiro',
+'uploadbtn' => 'Subir o ficheiro',
'reuploaddesc' => 'Cancelar a carga e volver ao formulario de carga',
'upload-tryagain' => 'Enviar a descrición do ficheiro modificada',
'uploadnologin' => 'Non accedeu ao sistema',
'allmessagesdefault' => 'Texto predeterminado',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Esta é unha lista de todas as mensaxes dispoñibles no espazo de nomes MediaWiki.
-Por favor, visite a [//www.mediawiki.org/wiki/Localisation localización MediaWiki] e [//translatewiki.net translatewiki.net] se quere contribuír á localización xenérica de MediaWiki.',
+Por favor, visite a páxina de [https://www.mediawiki.org/wiki/Localisation localización de MediaWiki] e [//translatewiki.net translatewiki.net] se quere contribuír á localización xenérica de MediaWiki.',
'allmessagesnotsupportedDB' => "Esta páxina non está dispoñible porque '''\$wgUseDatabaseMessages''' está desactivado.",
'allmessages-filter-legend' => 'Filtrar',
'allmessages-filter' => 'Filtrar por estado de personalización:',
'tooltip-feed-atom' => 'Fonte de novas Atom desta páxina',
'tooltip-t-contributions' => 'Ver a lista de contribucións {{GENDER:{{BASEPAGENAME}}|deste usuario|desta usuaria}}',
'tooltip-t-emailuser' => 'Enviarlle unha mensaxe a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}} por correo electrónico',
-'tooltip-t-upload' => 'Cargar ficheiros',
+'tooltip-t-upload' => 'Subir ficheiros',
'tooltip-t-specialpages' => 'Lista de todas as páxinas especiais',
'tooltip-t-print' => 'Versión para imprimir da páxina',
'tooltip-t-permalink' => 'Ligazón permanente a esta versión da páxina',
'svg-long-desc' => 'ficheiro SVG; resolución de $1 × $2 píxeles; tamaño do ficheiro: $3',
'svg-long-desc-animated' => 'ficheiro SVG animado; resolución de $1 × $2 píxeles; tamaño do ficheiro: $3',
'svg-long-error' => 'Ficheiro SVG non válido: $1',
-'show-big-image' => 'Imaxe na máxima resolución',
+'show-big-image' => 'Ficheiro orixinal',
'show-big-image-preview' => 'Tamaño desta vista previa: $1.',
'show-big-image-other' => '{{PLURAL:$2|Outra resolución|Outras resolucións}}: $1.',
'show-big-image-size' => '$1 × $2 píxeles',
# External editor support
'edit-externally' => 'Editar este ficheiro cunha aplicación externa',
-'edit-externally-help' => '(Vexa as seguintes [//www.mediawiki.org/wiki/Manual:External_editors instrucións] <small>(en inglés)</small> para obter máis información)',
+'edit-externally-help' => '(Consulte as seguintes [https://www.mediawiki.org/wiki/Manual:External_editors instrucións] para obter máis información)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todo',
'version-hook-subscribedby' => 'Subscrito por',
'version-version' => '(Versión $1)',
'version-license' => 'Licenza',
-'version-poweredby-credits' => "Este wiki está desenvolvido por '''[//www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autor © 2001-$1 $2.",
+'version-poweredby-credits' => "Este wiki está desenvolvido por '''[https://www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autoría © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-poweredby-translators' => 'os tradutores de translatewiki.net',
'version-credits-summary' => 'Queremos recoñecer as seguintes persoas polas súas achegas a [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Páxinas especiais',
-'specialpages-note' => '----
-* Páxinas especiais normais.
+'specialpages-note' => '* Páxinas especiais normais.
* <span class="mw-specialpagerestricted">Páxinas especiais restrinxidas.</span>',
'specialpages-group-maintenance' => 'Informes de mantemento',
'specialpages-group-other' => 'Outras páxinas especiais',
# External editor support
'edit-externally' => 'Hea failik bhaili program uzar korun bodol.',
-'edit-externally-help' => '(Odhik mahite khatir [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] polloi)',
+'edit-externally-help' => '(Odhik mahite khatir [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] polloi)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'soglle',
'mypreferences' => 'Αἱ προαιρέσεις μου',
'prefs-edits' => 'Τοσοῦται αἱ μεταβολαί:',
'prefsnologin' => 'Μὴ συνδεδεμένος',
-'prefsnologintext' => 'Δεῖ σε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεδεμένος εἶναι]</span> πρὸ τοῦ καθορίσειν τὰς ἐσοῦ προαιρέσεις χρωμένου.',
'changepassword' => 'Ἀλλάττειν σύνθημα',
'prefs-skin' => 'Ἐμφάνισις',
'skin-preview' => 'Προεπισκοπεῖν',
# External editor support
'edit-externally' => 'Μεταγράφειν τόδε τὸ ἀρχεῖον χρώμενος ἐξώτερήν τινα ἐφαρμογήν.',
-'edit-externally-help' => 'Εἰ πλείοντα βούλει μαθεῖν, [//www.mediawiki.org/wiki/Manual:External_editors τὰς περὶ τοῦ σχῆματος διδασκαλίας] ἴδε.',
+'edit-externally-help' => 'Εἰ πλείοντα βούλει μαθεῖν, [https://www.mediawiki.org/wiki/Manual:External_editors τὰς περὶ τοῦ σχῆματος διδασκαλίας] ἴδε.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ἅπασαι',
# Special:SpecialPages
'specialpages' => 'Εἰδικαὶ δέλτοι',
-'specialpages-note' => '----
-* Κανονικαὶ εἰδικαὶ δέλτοι.
+'specialpages-note' => '* Κανονικαὶ εἰδικαὶ δέλτοι.
* <strong class="mw-specialpagerestricted">Περιωρισμέναι εἰδικαὶ δἐλτοι.</strong>
* <span class="mw-specialpagecached">Μόναι δέλτοι ἀποτεταμιευμέναι.</span>',
'specialpages-group-maintenance' => 'Ἀναφοραὶ συντηρήσεως',
'tog-hidepatrolled' => 'Vum Fäldhieter aagluegti Änderige in dr „Letschte Änderige“ usblände',
'tog-newpageshidepatrolled' => 'Aagluegti Syten uf dr Lischt „Neiji Syte“ verstecke',
'tog-extendwatchlist' => 'Beobachtungslischte erwytere go alli Änderige aazeige, nit numme di letschte',
-'tog-usenewrc' => 'Sytebezogeni Gruppierig bi dr «letschte Änderige» un uf dr Beobachtigslischte (brucht JavaScript)',
+'tog-usenewrc' => 'Änderigen uf „Letschte Änderige“ un dr Beobachtigslischt no Syte gruppiere',
'tog-numberheadings' => 'Überschrifte outomatisch numeriere',
-'tog-showtoolbar' => 'Editier-Wärchzüüg aazeige',
-'tog-editondblclick' => 'Syte ändere mit Doppelklick i d Syte (JavaScript)',
+'tog-showtoolbar' => 'Wärchzyyglyscht zum Bearbeite aazeige',
+'tog-editondblclick' => 'Syte ändere mit Doppelklick',
'tog-editsection' => 'Links aazeige für ds Bearbeite vo einzelnen Absätz',
-'tog-editsectiononrightclick' => 'Einzelni Absätz ändere mit Rächtsclick (Javascript)',
+'tog-editsectiononrightclick' => 'Einzelni Absätz ändere mit Rächtsclick uf d Iberschrifte',
'tog-showtoc' => 'Inhaltsverzeichnis aazeige bi Artikle mit meh als drei Überschrifte',
'tog-rememberpassword' => 'Mit däm Browser duurhaft aamälde (Maximal fir $1 {{PLURAL:$1|Tag|Täg}})',
'tog-watchcreations' => 'Sälber gmachti Sytene un uffegladeni Dateie automatisch beobachte',
'tog-shownumberswatching' => 'Aazahl Benutzer aazeige, wo ne Syten am Aaluege sy (i den Artikelsyte, i de «letschten Änderigen» und i der Beobachtigslischte)',
'tog-oldsig' => 'Vorschau vu dr Unterschrift:',
'tog-fancysig' => 'Signatur as Wikitext behandle (ohni automatischi Vergleichig)',
-'tog-uselivepreview' => 'Live-Vorschau bruche (JavaScript) (experimentell)',
+'tog-uselivepreview' => 'Live-Vorschau bruche (experimentell)',
'tog-forceeditsummary' => 'Sag mer s, wänn i s Zämmefassigsfeld läär loss',
'tog-watchlisthideown' => 'Eigeni Änderige uf d Beobachtigslischt usblände',
'tog-watchlisthidebots' => 'Bot-Änderige in d Beobachtigslischt usblende',
'tog-noconvertlink' => 'Konvertierig vum Titel deaktiviere',
'tog-norollbackdiff' => 'Unterschid noch em Zrucksetze unterdrucke',
'tog-useeditwarning' => 'Warn mi, wänn I ne Syte verloss mit Bearbeitige, wu nonig gspycheret sin',
+'tog-prefershttps' => 'Wänn aagmäldet, alliwyl e sicheri Verbindig bruuche',
'underline-always' => 'immer',
'underline-never' => 'nie',
'oct' => 'Okt.',
'nov' => 'Nov.',
'dec' => 'Dez.',
+'january-date' => '$1. Jänner',
+'february-date' => '$1. Februar',
+'march-date' => '$1. Merz',
+'april-date' => '$1. April',
+'may-date' => '$1. Mai',
+'june-date' => '$1. Juni',
+'july-date' => '$1. Juli',
+'august-date' => '$1. Augschte',
+'september-date' => '$1. Septämber',
+'october-date' => '$1. Oktober',
+'november-date' => '$1. Novämber',
+'december-date' => '$1. Dezämber',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Kategori|Kategorie}}',
'newwindow' => '(imene nöie Fänschter)',
'cancel' => 'Abbräche',
'moredotdotdot' => 'Meh …',
+'morenotlisted' => 'Die Lischt isch nit vollständig.',
'mypage' => 'Syte',
'mytalk' => 'Diskussionsyte',
'anontalk' => 'Diskussionssyste vo sellere IP',
'namespaces' => 'Namensryym',
'variants' => 'Variante',
+'navigation-heading' => 'Navigationsmenü',
'errorpagetitle' => 'Fähler',
'returnto' => 'Zruck zur Syte $1.',
'tagline' => 'Us {{SITENAME}}',
'create-this-page' => 'Die Syte afange',
'delete' => 'Lesche',
'deletethispage' => 'Syte lösche',
+'undeletethispage' => 'Die Syte widerhärstelle',
'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versione}} widerherstelle',
'viewdeleted_short' => '{{PLURAL:$1|ei gleschti Änderig|$1 gleschti Ändrige}} aaluege',
'protect' => 'Schütze',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'Über {{GRAMMAR:akkusativ|{{SITENAME}}}}',
'aboutpage' => 'Project:Über {{UCFIRST:{{GRAMMAR:akkusativ|{{SITENAME}}}}}}',
-'copyright' => 'Der Inhalt vo dere Syte stoht unter der $1.',
+'copyright' => 'Dr Inhalt vu dere Syte stoht unter dr Lizänz $1, wänn s nit andersch aagee isch.',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Aktuelli Mäldige',
'currentevents-url' => 'Project:Aktuelli Termin',
# General errors
'error' => 'Fähler',
'databaseerror' => 'Fähler in dr Datebank',
+'databaseerror-text' => 'S het e Datebankabfrogfähler gee.
+Des chennt e Fähler in dr Software aazeige.',
+'databaseerror-textcl' => 'S het e Datebankabfrogfähler gee.',
+'databaseerror-query' => 'Abfrog: $1',
+'databaseerror-function' => 'Funktion: $1',
+'databaseerror-error' => 'Fähler: $1',
'laggedslavemode' => 'Warnig: di letschte Änderige wäre u. U. nonig aazeigt!',
'readonly' => 'Datebank isch gsperrt',
'enterlockreason' => 'Bitte gib e Grund y, worum d Datebank soll gsperrt wäre un e Yschätzig wie lang si soll gsperrt blybe',
'cannotdelete' => 'D Syte oder d Datei „$1“ cha nit glescht wäre. Si isch villicht scho vu eber anderem glescht wore.',
'cannotdelete-title' => 'Syte „$1“ cha nit glescht wäre',
'delete-hook-aborted' => 'D Leschig isch ohni Erchlärung dur e Schnittstell abbroche wore.',
+'no-null-revision' => 'Di nej Nullversion fir d Syte „$1“ het nit chennen aagleit wäre',
'badtitle' => 'Ugültiger Titel',
'badtitletext' => 'Dr Titel vu dr agforderte Syte isch nit giltig gsi, leer, oder e nit giltig Sprochgleich vun eme andre Wiki.',
'perfcached' => 'Die Informatione chemme us em Zwischespycher un sin derwyl villicht nit aktuäll. Maximal {{PLURAL:$1|ei Ergebnis isch|$1 Ergebnis sin}} im Cache verfiegbar.',
'namespaceprotected' => "Du hesch kei Berächtigung, die Syte im '''$1'''-Namensruum z bearbeite.",
'customcssprotected' => 'Du bisch nid berächtigt, die Syte mit CSS z bearbeite, wel si zue dr persenlige Yystellige vun eme andere Benutzer ghert.',
'customjsprotected' => 'Du bisch nid berächtigt, die Javaskript-Syte z bearbeite, wel si zue dr persenlige Yystellige vun eme andere Benutzer ghert.',
+'mycustomcssprotected' => 'Du derfsch die CSS-Syte nit bearbeite.',
+'mycustomjsprotected' => 'Du derfsch die JavaScript-Syte nit bearbeite.',
+'myprivateinfoprotected' => 'Du derfsch Dyni privaten Informatione nit bearbeite.',
+'mypreferencesprotected' => 'Du derfsch Dyni Yystellige nit bearbeite.',
'ns-specialprotected' => 'Spezialsyte chenne nid bearbeitet wäre.',
'titleprotected' => "E Syte mit däm Name cha nid aaglait wäre.
Die Sperri isch dur [[User:$1|$1]] yygrichtet wore mit dr Begrindig ''„$2“''.",
# Login and logout pages
'logouttext' => "'''Du bisch jetz abgmäldet.'''
-Du chasch {{SITENAME}} wyter anonym bruche, oder Du chasch di <span class='plainlinks'>[$1 wider aamälde]</span> mit em glyche oder eme andere Benutzername.
-
-Ochat: s cha syy, ass bstimmti Syte eso aazeigt wäre, wie wänn Du allno aagmäldet wärsch, bis Du dr Zwischespycher vu Dyym Browser glescht hesch.",
+Obacht: s cha syy, ass bstimmti Syte eso aazeigt wäre, wie wänn Du allno aagmäldet wärsch, bis Du dr Zwischespycher vu Dyym Browser glescht hesch.",
+'welcomeuser' => 'Willchuu, $1!',
+'welcomecreation-msg' => 'Dyy Benutzerkonto isch aagleit wore.
+Vergiss nit, Dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] z ändere.',
'yourname' => 'Dyy Benutzername',
+'userlogin-yourname' => 'Benutzername',
+'userlogin-yourname-ph' => 'Gib Dyy Benutzernamen yy',
+'createacct-another-username-ph' => 'Gib Dyy Benutzernamen yy',
'yourpassword' => 'Passwort:',
+'userlogin-yourpassword' => 'Passwort',
+'userlogin-yourpassword-ph' => 'Gib Dyy Passwort yy',
+'createacct-yourpassword-ph' => 'Passwort yygee',
'yourpasswordagain' => 'Passwort no mol yygee:',
+'createacct-yourpasswordagain' => 'Passwort bstetige',
+'createacct-yourpasswordagain-ph' => 'Gib s Passwort nomol yy',
'remembermypassword' => 'Uf däm Computer duurhaft aamälde (Maximal fir $1 {{PLURAL:$1|Tag|Täg}})',
+'userlogin-remembermypassword' => 'Aagmäldet blyybe',
+'userlogin-signwithsecure' => 'Sicheri Verbindig bruuche',
'yourdomainname' => 'Dyyni Domäne',
'password-change-forbidden' => 'Du chasch uf däm Wiki kei Passwerter ändere.',
'externaldberror' => 'Entwäder s lit e Fähler bi dr externe Authentifizierung vor, oder Du derfsch Dyy extern Benutzerkonto nid aktualisiere.',
'logout' => 'Abmälde',
'userlogout' => 'Abmälde',
'notloggedin' => 'Nit aagmäldet',
+'userlogin-noaccount' => 'No kei Benutzerkonto?',
+'userlogin-joinproject' => 'Bi {{SITENAME}} aamälde',
'nologin' => 'No kei Benutzerkonto? $1.',
'nologinlink' => '»Konto aaleege«',
'createaccount' => 'Nöis Benutzerkonto aalege',
'gotaccount' => "Du häsch scho a Konto? '''$1'''",
'gotaccountlink' => '»Login fir Benutzer, wu scho aagmäldet sin«',
'userlogin-resetlink' => 'Hesch Dyy Aamäldedate vergässe?',
-'createaccountmail' => 'iber E-Mail',
+'userlogin-resetpassword-link' => 'Passwort vergässe?',
+'helplogin-url' => 'Help:Aamälde',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hilf bim Aamälde]]',
+'userlogin-loggedin' => 'Du bisch scho as {{GENDER:$1|$1}} aagmäldet.
+Bruuch s Formular unte go Di unter eme andere Benutzername aamälde.',
+'userlogin-createanother' => 'En ander Benutzerkonto aalege',
+'createacct-join' => 'Gib unte Dyni Informationen yy.',
+'createacct-another-join' => 'Gib unte d Informatione vum neie Benutzerkonto yy.',
+'createacct-emailrequired' => 'E-Mail-Adräss',
+'createacct-emailoptional' => 'E-Mail-Adräss (optional)',
+'createacct-email-ph' => 'Gib Dyy E-Mail-Adräss yy',
+'createacct-another-email-ph' => 'Gib Dyy E-Mail-Adräss yy',
+'createaccountmail' => 'E temporär Zuefallspasswort bruuchen un an di aagee E-Mail-Adräss schicke',
+'createacct-realname' => 'Richtige Name (optional)',
'createaccountreason' => 'Grund:',
+'createacct-reason' => 'Grund',
+'createacct-reason-ph' => 'Wurum Du ne ander Benutzerkonto aaleisch',
+'createacct-captcha' => 'Sicherheitspriefig',
+'createacct-imgcaptcha-ph' => 'Gib dr Tekscht yy, wu Du obe siisch',
+'createacct-submit' => 'Dyy Benutzerkonto aalege',
+'createacct-another-submit' => 'En ander Benutzerkonto aalege',
+'createacct-benefit-heading' => '{{SITENAME}} wird vu Mänsche wie Dir gschaffe.',
+'createacct-benefit-body1' => '{{PLURAL:$1|Bearbeitig|Bearbeitige}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|Syte|Syte}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|aktive Autor|aktivi Autore}}',
'badretype' => 'Di beidi Passwörter stimme nid zämme.',
'userexists' => 'Dä Benutzername git s scho.
Bitte nimm e andere.',
'loginerror' => 'Fähler bir Aamäldig',
+'createacct-error' => 'Fähler bim Aalege vum Benutzerkonto',
'createaccounterror' => 'Het s Benutzerkonto nit chenne aalege: $1',
'nocookiesnew' => 'Dr Benutzerzuegang isch aaglait wore, aber Du bisch nid yygloggt. {{SITENAME}} brucht fir die Funktion Cookies, bitte tue die aktiviere un logg Di derno mit Dyynem neje Benutzername un em Passwort, wu drzue ghert, yy.',
'nocookieslogin' => '{{SITENAME}} brucht Cookies fir e Aamäldig. Du hesch d Cookies deaktiviert. Aktivier si bitte un versuech s no mol.',
'acct_creation_throttle_hit' => 'Bsuecher vu däm Wiki, wu Dyyni IP-Adräss bruuche, hän innerhalb vum letschte Tag {{PLURAL:$1|1 Benutzerkonto|$1 Benutzerkonte}} aagleit. Des isch di maximal Aazahl, wu in däm Zytruum erlaubt isch.
Bsuecher, wu die IP-Adräss bruuche, chenne im Momänt kei Benutzerkonte meh aalege.',
-'emailauthenticated' => 'Di E-Mail-Adräss isch am $2 um $3 Uhr bschtätigt worde.',
+'emailauthenticated' => 'Dyy E-Mail-Adräss isch am $2 am $3 Uhr bstetigt wore.',
'emailnotauthenticated' => 'Dyni E-Mail-Adräss isch nonig bstätigt. Wäg däm gehn di erwyterete E-Mail-Funktione nonig.
Fir d Bstätigung muesch em Link nogoh, wu Dir gschickt woren isch. Du chasch au e neie sonig Link aafordere:',
'noemailprefs' => 'Du hesch kei E-Mail-Adrässen aaggä, drum sy di folgende Funktione nid müglech.',
'cannotchangeemail' => 'E-Mail-Adrässe chönne in däm Wiki nit gänderet werde.',
'emaildisabled' => 'Iber die Websyte chenne kei E-Mail verschickt wäre.',
'accountcreated' => 'S Benutzerkonto isch aagleit wore.',
-'accountcreatedtext' => 'S Benutzerkonto $1 isch aagleit wore.',
+'accountcreatedtext' => 'S Benutzerkonto fir [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|Diskussion]]) isch aagleit wore.',
'createaccount-title' => 'Aalege vum e Benutzerkonto fir {{SITENAME}}',
'createaccount-text' => 'Fir Dii isch e Benutzerkonto "$2" uf {{SITENAME}} ($4) aaglait wore. S Passwort fir "$2" , wu automatisch generiert woren isch, isch "$3". Du sottsch Di jetz aamälde un s Passwort ändere.
Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignoriere.',
'usernamehasherror' => 'In Benutzernäme derf s kei Rautezeiche din haa',
-'login-throttled' => 'Du hesch z vilmol vergebli versuecht, Di aazmälde. Bitte wart, voreb Du s non emol versuechsch.',
+'login-throttled' => 'Du hesch z vilmol umesuscht versuecht, Di aazmälde. Bitte wart $1, voreb Du s non emol versuechsch.',
'login-abort-generic' => 'Dyy Aamäldig isch nit erfolgryych gsii – Abbroche',
'loginlanguagelabel' => 'Sproch: $1',
'suspicious-userlogout' => 'Dyy Versuech di abzmälde isch abbroche wore, wel s uusgsäh het, wie wänn s vun eme bschedigte Browser oder eme Cacheproxy uus gsändet woren isch.',
+'createacct-another-realname-tip' => 'Dr richtig Name isch optional.
+Wänn Du ne aagiisch, wird er bruucht fir d Zueornig vu dr Byytreg.',
# Email sending
'php-mail-error-unknown' => 'Nit bekannte Fähler mit dr Funktion mail() vu PHP',
'user-mail-no-addy' => 'Es isch versuecht worde e E-Mail ohni Angab vunere E-Mail-Adräss z verschigge.',
+'user-mail-no-body' => 'S isch versuecht wore, ne E-Mail mit eme lääre oder z churze Tekscht z verschicke.',
# Change password dialog
'resetpass' => 'Passwort fir s Benutzerkonto ändere oder zrucksetze',
'newpassword' => 'Nöis Passwort',
'retypenew' => 'Nöis Passwort (es zwöits Mal)',
'resetpass_submit' => 'Passwort ibermittle un aamälde',
-'changepassword-success' => 'Dyy Passwort isch erfolgryych gänderet wore. Jetz chunnt d Aamäldig …',
+'changepassword-success' => 'Dyy Passwort isch erfolgryych gänderet wore.',
'resetpass_forbidden' => 'S Passwort cha nid gänderet wäre.',
'resetpass-no-info' => 'Du muesch Di aamälde zum uf die Syte diräkt zuegryfe z chenne.',
'resetpass-submit-loggedin' => 'Passwort ändere',
'resetpass-wrong-oldpass' => 'S temporär oder aktuäll Passwort isch nimi giltig.
Villicht hesch Dyy Passwort scho gänderet oder e nej temporär Passwort aagforderet.',
'resetpass-temp-password' => 'Temporär Passwort:',
+'resetpass-abort-generic' => 'D Passwortänderig isch dur e Erwyterig abbroche wore.',
# Special:PasswordReset
'passwordreset' => 'Passwort zruggsetze',
+'passwordreset-text-one' => 'Fill des Formular uus go Dy Passwort zrucksetze.',
+'passwordreset-text-many' => '{{PLURAL:$1|Fill eis vu dr Fälder uus go Dy Passwort zrucksetze.}}',
'passwordreset-legend' => 'Passwort zrucksetze',
'passwordreset-disabled' => 'S Zrucksetze vu Passwerter isch in däm Wiki deaktiviert wore.',
+'passwordreset-emaildisabled' => 'D E-Mail-Funktione sin uf däm Wiki deaktiviert wore.',
'passwordreset-username' => 'Benutzername:',
'passwordreset-domain' => 'Domain:',
'passwordreset-capture' => 'Die E-Mail aaluege?',
'passwordreset-capture-help' => 'Wänn du des Chäschtli aachrüüzesch, no wird die E-Mail (mit em temporäre Passwort) dir aazeigt, un au em Benutzer zuegschiggt.',
'passwordreset-email' => 'E-Mail-Adräss:',
'passwordreset-emailtitle' => 'Benutzerkontoinformationen uf {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Eber mit dr IP-Adresse $1, wahrschyns Du sälber, het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). {{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
+'passwordreset-emailtext-ip' => 'Eber mit dr IP-Adresse $1, wahrschyns Du sälber, het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4).
+
+{{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
-$2
+$2
{{PLURAL:$3|Des temporär Passwort lauft|Die temporäre Passwerter laufe}} in {{PLURAL:$5|eim Tag|$5 Täg}} ab.
Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gstellt het oder Du di wider an Dyy alt Passwort chasch erinnere un s nimi wettsch ändere, chasch die Nochricht ignorieren un alsfurt Dyy alt Passwort bruche.',
-'passwordreset-emailtext-user' => 'Benutzer $1 uf {{SITENAME}} het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). {{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
+'passwordreset-emailtext-user' => 'Dr Benutzer $1 bi {{SITENAME}} het e Zrucksetzig vu Dym Passwort bi {{SITENAME}} aagforderet ($4).
+
+{{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
-$2
+$2
{{PLURAL:$3|Des temporär Passwort lauft|Die temporäre Passwerter laufe}} in {{PLURAL:$5|eim Tag|$5 Täg}} ab.
Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gstellt het oder Du di wider an Dyy alt Passwort chasch erinnere un s nimi wettsch ändere, chasch die Nochricht ignorieren un alsfurt Dyy alt Passwort bruche.',
'passwordreset-emailelement' => 'Benutzername: $1
Temporär Passwort: $2',
-'passwordreset-emailsent' => 'E Erinnerig isch per E-Mail verschickt wore.',
-'passwordreset-emailsent-capture' => 'E Erinnerigsmail isch abgschiggt worde, un isch unte aazeigt.',
+'passwordreset-emailsent' => 'E Passwort-Zrucksetzig isch per E-Mail verschickt wore.',
+'passwordreset-emailsent-capture' => 'E Passwort-Zrucksetzigs-Mail isch vergschickt worde, un isch unte aazeigt.',
'passwordreset-emailerror-capture' => 'Die Erinnerigsmail, wo unte aazeigt isch, isch generiert worde, aber de Versand aa de Benutzer isch gschyyteret: $1',
# Special:ChangeEmail
'mypreferences' => 'Yystellige',
'prefs-edits' => 'Aazahl vu dr Bearbeitige:',
'prefsnologin' => 'Nid aagmäldet',
-'prefsnologintext' => 'Du muesch <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aagmäldet]</span> sy, für Benutzerystellige chönne z ändere',
'changepassword' => 'Passwort ändere',
'prefs-skin' => 'Benutzeroberflechi',
'skin-preview' => 'Vorschou',
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'jetzige Tekscht',
'allmessagestext' => 'Des isch e Lischt vu allene meglige Syschtemnochrichte us em MediaWiki Namensruum.
-Lueg au uf [//www.mediawiki.org/wiki/Localisation MediaWiki Lokalisierig] un [//translatewiki.net translatewiki.net], wänn Du zue dr MediaWiki-Lokalisierig wit byytrage.',
+Lueg au uf [https://www.mediawiki.org/wiki/Localisation MediaWiki Lokalisierig] un [//translatewiki.net translatewiki.net], wänn Du zue dr MediaWiki-Lokalisierig wit byytrage.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' cha nit bruucht wärde will '''\$wgUseDatabaseMessages''' abgschalte isch.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter fir dr aapasst Zuestand:',
'file-nohires' => 'Kei höcheri Uflösig verfüegbar.',
'svg-long-desc' => 'SVG-Datei, Basisgrößi: $1 × $2 Pixel, Dateigrößi: $3',
'svg-long-desc-animated' => 'Animierti SVG-Datei, Basisgreßi $1 × $2 Pixel, Dateigreßi: $3',
-'show-big-image' => 'Originalgrößi',
+'show-big-image' => 'Originaldatei',
'show-big-image-preview' => 'Greßi vu däre Vorschau: $1.',
'show-big-image-other' => 'Wyteri {{PLURAL:$2|Ufflösig|Ufflösige}}: $1.',
'show-big-image-size' => '$1 × $2 Pixel',
# External editor support
'edit-externally' => 'Die Datei mit emnen externe Programm bearbeite',
-'edit-externally-help' => '(Lueg d [//www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fir witeri Informatione)',
+'edit-externally-help' => '(Lueg d [https://www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fir witeri Informatione)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alli',
'version-hook-subscribedby' => 'Ufruef vu',
'version-version' => '(Version $1)',
'version-license' => 'Lizänz',
-'version-poweredby-credits' => "Die Websyte nutzt '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Die Websyte nutzt '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'anderi',
'version-credits-summary' => 'Mir danke däne Lyt fir ihri Bytreg zue [[Special:Version|MediaWiki]].',
'version-license-info' => 'MediaWiki isch e freji Software, d. h. s cha, no dr Bedingige vu dr GNU General Public-Lizänz, wu vu dr Free Software Foundation vereffentligt woren isch, wyterverteilt un/oder modifiziert wäre. Doderbyy cha d Version 2, oder no eigenem Ermässe, jedi nejeri Version vu dr Lizänz brucht wäre.
'invalidtitle-knownnamespace' => 'નામસ્થળ "$2" અને લખાણ "$3" સાથે અમાન્ય મથાળું',
'invalidtitle-unknownnamespace' => 'અજ્ઞાત નામસ્થળ ક્રમાંક $1 અને નામ "$2" વાળું અમાન્ય મથાળું',
'exception-nologin' => 'પ્રવેશ કરેલ નથી',
-'exception-nologin-text' => 'આ પાનું કે ક્રિયા માટે આ વિકિ પર લોગઈન થવું જરૂરી છે.',
+'exception-nologin-text' => 'આ પાનું કે પ્રક્રિયા પ્રાપ્તી માટે કૃપયા [[Special:Userlogin|લોગઈન]] કરો.',
+'exception-nologin-text-manual' => 'આ પાનું કે પ્રક્રિયા મેળવવા માટે કૃપયા $1.',
# Virus scanner
'virus-badscanner' => "ખરાબ રૂપરેખા: અજાણ્યું વાઇરસ સ્કેનર: ''$1''",
'gotaccount' => "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
'gotaccountlink' => 'પ્રવેશ કરો',
'userlogin-resetlink' => 'પોતાની પ્રવેશ માહિતી ભૂલી ગયા છો?',
-'userlogin-resetpassword-link' => 'તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા બદલà«\8b',
+'userlogin-resetpassword-link' => 'તમારà«\8b પાસવરà«\8dડ àªà«\82લà«\80 àª\97યા àª\9bà«\8b?',
'helplogin-url' => 'Help:પ્રવેશ માટે',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|પ્રવેશવા માટેની મદદ]]',
'userlogin-loggedin' => 'તમે પહેલેથી {{GENDER:$1|$1}} તરીકે પ્રવેશ કરેલો જ છે.
'passwordsent' => '"$1" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.
કૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.',
'blocked-mailpassword' => 'ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે, તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા ફરી મેળવવાની છૂટ નથી.',
-'eauthentsent' => 'પà«\81ષà«\8dàª\9fિ àª\95રવા માàª\9fà«\87 તમà«\87 àª\86પેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.
+'eauthentsent' => 'પà«\81ષà«\8dàª\9fિ àª\95રવા માàª\9fà«\87 નિશà«\8dàª\9aિત થયેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.
એ જ સરનામે બીજો ઇમેલ થતાં પહેલાં તમારે ઇમેલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.',
'throttled-mailpassword' => 'ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} મોકલેલી છે.
દૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.',
# Email sending
'php-mail-error-unknown' => 'PHPની મેલ() કામગીરીમાં અજ્ઞાત ત્રુટિ',
'user-mail-no-addy' => 'ઈ મેલ એડ્રસ વગર ઈ મેલ મોકલવા પ્રયત્ન કરેલ.',
+'user-mail-no-body' => 'કોરો કે નાનકડો ઈમેઇલ મોકલવાનો પ્રયાસ કરાયો.',
# Change password dialog
'resetpass' => 'ગુપ્તસંજ્ઞા બદલો',
# Special:PasswordReset
'passwordreset' => 'ગુપ્ત સંજ્ઞા ફરી ગોઠવો',
'passwordreset-text-one' => 'તમારો પાસવર્ડ બદલવા માટે આ ફોર્મ પૂરુ કરો.',
+'passwordreset-text-many' => '{{PLURAL:$1|તમારો પાસવર્ડ બદલવા માટે કોઈ એક ખાનું ભરો.}}',
'passwordreset-legend' => 'ગુપ્ત સંજ્ઞા ફરી ગોઠવો',
'passwordreset-disabled' => 'આ વિકી પર ગુપ્ત સંજ્ઞા ફરી ગોઠવવા પર પ્રતિબંધ છે.',
'passwordreset-emaildisabled' => 'આ વિકિ પર ઇમેઇલ સગવડ બંધ છે.',
તમે તમારું લખાણ કોઇ ટેક્સ્ટ ફાઇલ માં સેવ કરી મૂકી દો અને માહિતીસંચ ખુલતા વિકિ પર સાચવી શકશો.
જે પ્રબંધકે માહિતીસંચ બંધ કર્યો છે તેણે આ કારણ આપ્યું છે: $1",
-'protectedpagewarning' => "'''ચેતવણી : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
-તમારા સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદિ આપી છે:",
-'semiprotectedpagewarning' => "'''નોંધ : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
-તમારા સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદિ આપી છે:",
+'protectedpagewarning' => "'''ચેતવણી:''' આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે છે.
+સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદà«\80 નà«\80àª\9aà«\87 આપી છે:",
+'semiprotectedpagewarning' => "'''નોંધ :''' આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર નોંધાયેલાં સભ્યો જ આમાં ફેરફાર કરી શકે છે.
+સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદà«\80 નà«\80àª\9aà«\87 આપી છે:",
'cascadeprotectedwarning' => "'''ચેતવણી:''' આ પાનું સંરક્ષિત છે. પ્રબંધન અધિકાર ધરાવતા સભ્યો જ આમાં ફેરફાર કરી શકે છે. આ પાનું નીચેના પગથિયામય સંરક્ષણ{{PLURAL:$1|પાના|પાનાઓ}} દ્વારા સુરક્ષિત છે.",
'titleprotectedwarning' => "'''ચેતવણી: આ પાનું સંરક્ષિત છે આથી આની રચના માટે [[Special:ListGroupRights|વિશેષ અધિકારો]]ની જરૂર છે.'''
તે સંબંધી તાજેતરની ફેરફાર યાદી તમારા સંદર્ભ માટે આપેલી છે:",
'revdelete-text' => "''' રદ્દ કરાયેલ ફેરફારો અને ઘટનાઓ પાનાના ઈતિહાસ અને લોગમાં દેખાશે , પણ તેની અંદરની માહિતી જન સમુદાયથી અદ્રશ્ય રહેશે. '''
{{SITENAME}} પરના અન્ય પ્રબંધકો આ અદ્રશ્ય માહિતે જોઇ શકશે અને તેને પુનઃ જીવિત કરી શકશે સિવાય કે તેના પર વધારાની પાબંદી ન મુકાઇ હોય.",
'revdelete-confirm' => 'કૃપયા પુષ્ટિ કરો કે તમે શું કરી રહ્યા છો તેની અને તેના પરિણામોની તમને જાણ છે અને તમે આ બધું [[{{MediaWiki:Policy-url}}|the policy]] અ6તર્ગત કરી રહ્યાં છો.',
-'revdelete-suppress-text' => "બળ પૂર્વક છુપાવવું માત્ર આજ સંજોગોમાં કરી શકાશે:
+'revdelete-suppress-text' => "બળ પૂર્વક છુપાવવું \"માત્ર\" આજ સંજોગોમાં કરી શકાશે:
* સંભવતઃ ભયાજનક માહિતી
* અયોગ્ય નિજી માહિતી
-*: ''àª\98રનà«\81àª\82 સરનામà«\81àª\82 àª\85નà«\87 àª\9fà«\87લિફà«\8bન નàª\82બર, સામાàª\9cિàª\95 સà«\81રàª\95à«\8dષા àª\95à«\8dરà«\8dમ àª\88.''",
+*: ''àª\98રનà«\81àª\82 સરનામà«\81àª\82 àª\85નà«\87 àª\9fà«\87લિફà«\8bન નàª\82બર, રાષà«\8dàª\9fà«\8dરà«\80ય àª\93ળàª\96 àª\95à«\8dરમાàª\82àª\95à«\8b વàª\97à«\87રà«\87.''",
'revdelete-legend' => 'દ્રશ્યતા સંબંધી પ્રતિબંધોને ગોઠવો',
-'revdelete-hide-text' => 'પà«\81નરાવરà«\8dતન àª\9bà«\81પાવà«\8b',
+'revdelete-hide-text' => 'પà«\81નરાવરà«\8dતન લàª\96ાણ',
'revdelete-hide-image' => 'ફાઇલની માહિતી છુપાવો',
'revdelete-hide-name' => 'ક્રિયા અને લક્ષ્ય સંતાડો',
-'revdelete-hide-comment' => 'ફેરફાર સારાંશ છુપાવો',
-'revdelete-hide-user' => 'સંપાદકનું નામ /આઈ પી એડ્રેસ સંતાડો',
+'revdelete-hide-comment' => 'ફેરફાર સારાંશ',
+'revdelete-hide-user' => 'સંપાદકનું નામ /આઈ પી એડ્રેસ',
'revdelete-hide-restricted' => 'પ્રબંધક કે અન્યો સૌની માહિતી છુપાવો',
'revdelete-radio-same' => '(બદલશો નહીઁ)',
-'revdelete-radio-set' => 'હા',
-'revdelete-radio-unset' => 'ના',
+'revdelete-radio-set' => 'àª\9bà«\81પાયà«\87લ',
+'revdelete-radio-unset' => 'દà«\8dશà«\8dયમાન',
'revdelete-suppress' => 'પ્રબંધક કે અન્યો સૌની માહિતી છુપાવો',
'revdelete-unsuppress' => 'સમા કરાયેલા પુનરાવર્તનો પરના પ્રતિબંધ હટાવો',
'revdelete-log' => 'કારણ:',
'mypreferences' => 'પસંદગીઓ',
'prefs-edits' => 'સંપાદનોની સંખ્યા',
'prefsnologin' => 'પ્રવેશ કરેલ નથી',
-'prefsnologintext' => 'સભ્યના અધિકારો બદલવા તમે <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> પ્રવેશ કરેલો હોવો જોઈએ',
+'prefsnologintext2' => 'તમારી પસંદગીઓ પસંદ કરવા માટે કૃપયા $1.',
'changepassword' => 'ગુપ્તસંજ્ઞા બદલો',
'prefs-skin' => 'ફલક',
'skin-preview' => 'ફેરફાર બતાવો',
'imageinvalidfilename' => 'લક્ષ્ય ફાઈલ અવૈધ છે',
'fix-double-redirects' => 'મૂળ શીર્ષક તરફ નિર્દેશન કરતા દિશા નિર્દેશકો અધ્યતન કરો',
'move-leave-redirect' => 'પાછળ દિશા સૂચન છોડો',
-'protectedpagemovewarning' => "'''નà«\8bàª\82ધ : àª\86 પાના પર સàª\82રàª\95à«\8dષણ વિàª\95લà«\8dપ સàª\95à«\8dરà«\80ય àª\9bà«\87 àª\85નà«\87 માતà«\8dર પà«\8dરબàª\82ધàª\95à«\8b àª\9c àª\86માàª\82 ફà«\87રફાર àª\95રà«\80 શàª\95à«\87.'''
-તમારા સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદિ આપી છે:",
-'semiprotectedpagemovewarning' => "'''નોંધ : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
-તમારા સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદિ આપી છે:",
+'protectedpagemovewarning' => "'''àª\9aà«\87તવણà«\80:''' àª\86 પાના પર સàª\82રàª\95à«\8dષણ વિàª\95લà«\8dપ સàª\95à«\8dરà«\80ય àª\9bà«\87 àª\85નà«\87 માતà«\8dર પà«\8dરબàª\82ધàª\95à«\8b àª\9c àª\86નà«\87 àª\96સà«\87ડà«\80 શàª\95à«\87 àª\9bà«\87.
+સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદà«\80 નà«\80àª\9aà«\87 આપી છે:",
+'semiprotectedpagemovewarning' => "'''નોંધ :''' આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર નોંધાયેલાં સભ્યો જ આને ખસેડી શકે છે.
+સàª\82દરà«\8dઠમાàª\9fà«\87 તાàª\9cà«\87તરનà«\80 લà«\8bàª\97 યાદà«\80 નà«\80àª\9aà«\87 આપી છે:",
'move-over-sharedrepo' => '== ફાઇલ અસ્તિત્વ ધારાવે છે ==
સર્વસામાન્ય ફાઇલ સંગ્રહમાં [[:$1]] પહેલેથી મોજૂદ છે. આ સ્થળે કોઇ અન્ય ફાઇલ હટાવતા વિહરમાન ફાઇલની માહિતી પર આ ફાઇલ લખાશે.',
'file-exists-sharedrepo' => 'પસંદ કરેલ ફાઇલ ના નામે અન્ય ફાઇલ પહેલેથી સર્વ સામાન્ય ફાઇલ સંગ્રહમાં મોજૂદ છે/
'allmessagesdefault' => 'મૂળ સંદેશ',
'allmessagescurrent' => 'વર્તમાન દસ્તાવેજ',
'allmessagestext' => 'આ મિડિયાવિકિ નામસ્થળમાં આવેલ પ્રણાલીજનિત સંદેશાની યાદી આ મુજબ છે.
-જો તમે મિડિયાયાવિકિના સ્થાનીયકરણમાં મદદરૂપ થવા ઇચ્છતા હોવ તો કૃપયા [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] અને [//translatewiki.net translatewiki.net]ની મુલાકાત લો.',
+જો તમે મિડિયાયાવિકિના સ્થાનીયકરણમાં મદદરૂપ થવા ઇચ્છતા હોવ તો કૃપયા [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] અને [//translatewiki.net translatewiki.net]ની મુલાકાત લો.',
'allmessagesnotsupportedDB' => "આ પાનું ન વાપરી શકાશે કેમકે '''\$wgUseDatabaseMessages''' નિષ્ક્રીય કરાયું છે",
'allmessages-filter-legend' => 'ચાળણી',
'allmessages-filter' => 'સ્થાનીયકરણ સ્થિતિ દ્વારા ચાળો',
'file-nohires' => 'આથી વધુ આવર્તન ઉપલબ્ધ નથી.',
'svg-long-desc' => 'SVG ફાઇલ, માત્ર $1 × $2 પીક્સલ, ફાઇલનું કદ: $3',
'svg-long-error' => 'અયોગ્ય SVG ફાઇલ: $1',
-'show-big-image' => 'મહતà«\8dતમ àª\86વરà«\8dતન',
+'show-big-image' => 'મà«\82ળàªà«\81ત ફાàª\87લ',
'show-big-image-preview' => 'આ મહાવરા દ્રશ્યનું માપ: $1.',
'show-big-image-other' => 'અન્ય {{PLURAL:$2|આવર્તન|આવર્તનો}}: $1.',
'show-big-image-size' => '$1 × $2 પીક્સલ',
# External editor support
'edit-externally' => 'બાહ્ય સોફ્ટવેર વાપરીને આ ફાઇલમાં ફેરફાર કરો',
-'edit-externally-help' => '(વધુ માહિતી માટે [//www.mediawiki.org/wiki/Manual:External_editors સેટ-અપ સૂચનાઓ] જુઓ)',
+'edit-externally-help' => '(વધુ માહિતી માટે [https://www.mediawiki.org/wiki/Manual:External_editors સેટ-અપ સૂચનાઓ] જુઓ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'બધા',
'version-hook-subscribedby' => 'દ્વ્રારા લાભાન્વીત',
'version-version' => '(આવૃત્તિ $1)',
'version-license' => 'પરવાનો',
-'version-poweredby-credits' => "આ વિકિ '''[//www.mediawiki.org/ MediaWiki]''' દ્વારા ચાલે છે, પ્રકાશનાધિકાર © 2001-$1 $2.",
+'version-poweredby-credits' => "આ વિકિ '''[https://www.mediawiki.org/ MediaWiki]''' દ્વારા ચાલે છે, પ્રકાશનાધિકાર © 2001-$1 $2.",
'version-poweredby-others' => 'અન્યો',
'version-poweredby-translators' => 'ટ્રાન્સલેટવિકિ.નેટ ભાષાંતરકર્તાઓ',
'version-license-info' => 'મિડિયાવિકિ એક મુક્ત સોફ્ટવેર છે. તમે તેનું પુનઃવિતરણ કરી શકો છો અને/અથવા તેને the Free Software Foundation દ્વારા પ્રકાશિત GNU General Public License હેઠળ તેના સંસ્કરણ 2 ને કે તે પછીના સંસ્કરણ મઠારી શકો છો .
# Special:SpecialPages
'specialpages' => 'ખાસ પાનાં',
-'specialpages-note' => '----
-* નિયમિત ખાસ પાનાં.
-* <span class="mw-specialpagerestricted">ખાસ પાનાં પ્રતિબંધિત.</span>',
+'specialpages-note' => '* નિયમિત ખાસ પાનાં.
+* <span class="mw-specialpagerestricted">પ્રતિબંધિત ખાસ પાનાં.</span>',
'specialpages-group-maintenance' => 'સમારકામ અહેવાલ',
'specialpages-group-other' => 'અન્ય ખાસ પાનાઓ',
'specialpages-group-login' => 'પ્રવેશ / ખાતુ બનાવો',
# External editor support
'edit-externally' => 'Reagh yn coadan shoh lesh sheeyntagh mooie',
-'edit-externally-help' => 'Jeeagh er [//www.mediawiki.org/wiki/Manual:External_editors saraghyn soiaghey seose] son tooilley oayllys.',
+'edit-externally-help' => 'Jeeagh er [https://www.mediawiki.org/wiki/Manual:External_editors saraghyn soiaghey seose] son tooilley oayllys.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'yn clane',
'preferences' => '偏好設定',
'mypreferences' => '偏好設定',
'prefsnologin' => '還吂登入',
-'prefsnologintext' => 'Ngì pit-sî chhai-siên [[Special:UserLogin|tên-ngi̍p]] chhòi-nèn sat-chṳ ke-ngìn chhâm-su.',
'changepassword' => '更改密碼',
'prefs-skin' => '外皮',
'skin-preview' => '預覽',
'allmessagesdefault' => '默認信息文字',
'allmessagescurrent' => 'Tông-chhièn ke vùn-sṳ',
'allmessagestext' => 'Liá-piên lie̍t-chhut só-yû hí-khó thin-chṳ ke ne-thúng kie-mien.
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => 'Ne-thúng kie-mien kûng-yung chhu-yî kôan-pit chong-thai (wgUseDatabaseMessages)。',
# Thumbnails
# External editor support
'edit-externally' => '用外部應用程序編寫本文件',
-'edit-externally-help' => '(請參詳[//www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
+'edit-externally-help' => '(請參詳[https://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全部',
'ilsubmit' => 'Huli',
# External editor support
-'edit-externally-help' => '(E ʻike i nā [//www.mediawiki.org/wiki/Manual:External_editors aʻo palapala no ka hoʻokuene ʻana])',
+'edit-externally-help' => '(E ʻike i nā [https://www.mediawiki.org/wiki/Manual:External_editors aʻo palapala no ka hoʻokuene ʻana])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'apau',
'invalidtitle-knownnamespace' => 'כותרת בלתי־תקינה עם מרחב השם "$2" ושם דף "$3"',
'invalidtitle-unknownnamespace' => 'כותרת בלתי־תקינה עם מרחב שם בלתי־ידוע מספר $1 ושם דף "$2"',
'exception-nologin' => 'לא בחשבון',
-'exception-nologin-text' => 'כדי לראות את הדף הזה או לבצע את הפעולה הזאת צריך להיכנס לחשבון באתר הוויקי הזה.',
+'exception-nologin-text' => 'אנא [[Special:Userlogin|היכנסו לחשבון]] כדי לראות את הדף הזה או לבצע את הפעולה הזו.',
+'exception-nologin-text-manual' => 'אנא $1 כדי לראות את הדף הזה או לבצע את הפעולה הזו.',
# Virus scanner
'virus-badscanner' => "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
שימו לב כי ייתכן שדפים אחדים ימשיכו להיות מוצגים כאילו אתם עדיין מחוברים לחשבון עד שתנקו את המטמון של הדפדפן שלכם.",
'welcomeuser' => 'ברוך בואך, $1!',
'welcomecreation-msg' => 'חשבונך נוצר.
-× ×\90 ×\9c×\90 ×\9cש×\9b×\95×\97 ×\9c×\94ת×\90×\99×\9d ×\90ת [[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.',
+×\91×\90פשר×\95ת×\9a ×\9c×\94ת×\90×\99×\9d ×\90ת [[Special:Preferences|×\94×\94×¢×\93פ×\95ת]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.',
'yourname' => 'שם משתמש:',
'userlogin-yourname' => 'שם משתמש',
'userlogin-yourname-ph' => 'יש להקליד את שם המשתמש',
'revdelete-hide-user' => 'שם המשתמש או כתובת ה־IP של העורך',
'revdelete-hide-restricted' => 'הסתרת המידע גם ממפעילי המערכת',
'revdelete-radio-same' => '(ללא שינוי)',
-'revdelete-radio-set' => '×\92×\9c×\95×\99',
-'revdelete-radio-unset' => '×\9e×\95סתר',
+'revdelete-radio-set' => '×\9e×\95סתר',
+'revdelete-radio-unset' => '×\92×\9c×\95×\99',
'revdelete-suppress' => 'הסתרת המידע גם ממפעילי המערכת',
'revdelete-unsuppress' => 'הסרת הגבלות בגרסאות המשוחזרות',
'revdelete-log' => 'סיבה:',
'mypreferences' => 'העדפות',
'prefs-edits' => 'מספר עריכות:',
'prefsnologin' => 'לא נכנסת לחשבון',
-'prefsnologintext' => 'עליכם <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} להיכנס לחשבון]</span> כדי לשנות העדפות משתמש.',
+'prefsnologintext2' => 'אנא $1 כדי לשנות העדפות משתמש.',
'changepassword' => 'שינוי סיסמה',
'prefs-skin' => 'עיצוב',
'skin-preview' => 'תצוגה מקדימה',
בדואר האלקטרוני: $PAGEEDITOR_EMAIL
באתר: $PAGEEDITOR_WIKI
-לא תהיינה הודעות על פעולות נוספות עד שתבקרו בדף. באפשרותכם גם לאפס את דגלי ההודעות בכל הדפים שברשימת המעקב.
+לא תהיינה הודעות על פעולות נוספות עד שתבקרו בדף כשאתם מחוברים לחשבון. באפשרותכם גם לאפס את דגלי ההודעות בכל הדפים שברשימת המעקב.
- מערכת ההודעות של {{SITENAME}}
+מערכת ההודעות של {{SITENAME}}
--
כדי לשנות את ההגדרות של הודעות הדוא"ל הנשלחות אליכם, בקרו בדף
'svg-long-desc' => 'קובץ SVG, הגודל המקורי: <span dir="ltr">$1 × $2</span> פיקסלים, גודל הקובץ: $3',
'svg-long-desc-animated' => 'קובץ SVG מונפש, הגודל המקורי: <span dir="ltr">$1 × $2</span> פיקסלים, גודל הקובץ: $3',
'svg-long-error' => 'קובץ SVG לא תקין: $1',
-'show-big-image' => 'ת×\9e×\95× ×\94 ×\91ר×\96×\95×\9c×\95צ×\99×\94 ×\92×\91×\95×\94×\94 ×\99×\95תר',
+'show-big-image' => '×\9cק×\95×\91×¥ ×\94×\9eק×\95ר×\99',
'show-big-image-preview' => 'גודל תצוגה זו: $1.',
'show-big-image-other' => '{{PLURAL:$2|רזולוציה אחרת|רזולוציות אחרות}}: $1.',
'show-big-image-size' => '<span dir="ltr">$1 × $2</span> פיקסלים',
'exif-compression-2' => 'קידוד הופמן מואתם חד-מימדי לאורך ריצה CCITT קבוצה 3',
'exif-compression-3' => 'קידוד פקס CCITT קבוצה 3',
'exif-compression-4' => 'קידוד פקס CCITT קבוצה 4',
+'exif-compression-6' => 'JPEG (ישן)',
+'exif-compression-8' => 'Deflate (של Adobe)',
+'exif-compression-32773' => 'PackBits (של Macintosh RLE)',
+'exif-compression-32946' => 'Deflate (של PKZIP)',
'exif-copyrighted-true' => 'מוגן בזכויות יוצרים',
'exif-copyrighted-false' => 'מצב זכויות היוצרים לא הוגדר',
'exif-isospeedratings-overflow' => 'מעל 65535',
+'exif-maxaperturevalue-value' => '$1 APEX (יחידות: f/$2)',
+
'exif-iimcategory-ace' => 'אמנויות, תרבות ובידור',
'exif-iimcategory-clj' => 'פשע ומשפט',
'exif-iimcategory-dis' => 'אסונות ותאונות',
# External editor support
'edit-externally' => 'עריכת קובץ זה באמצעות יישום חיצוני',
-'edit-externally-help' => '(ראו את [//www.mediawiki.org/wiki/Manual:External_editors הוראות ההתקנה] למידע נוסף)',
+'edit-externally-help' => '(ראו את [https://www.mediawiki.org/wiki/Manual:External_editors הוראות ההתקנה] למידע נוסף)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'הכול',
'version-hook-subscribedby' => 'הפונקציה הרושמת',
'version-version' => '(גרסה $1)',
'version-license' => 'רישיון',
-'version-poweredby-credits' => "אתר הוויקי הזה מופעל על ידי '''[//www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
+'version-poweredby-credits' => "אתר הוויקי הזה מופעל על ידי '''[https://www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
'version-poweredby-others' => 'אחרים',
'version-poweredby-translators' => 'מתרגמי translatewiki.net',
'version-credits-summary' => 'אנו רוצים להודות לאנשים הבאים על תרומתם ל[[Special:Version|מדיה־ויקי]].',
# Special:SpecialPages
'specialpages' => 'דפים מיוחדים',
-'specialpages-note' => '----
-* דפים מיוחדים רגילים.
+'specialpages-note-top' => 'מקרא',
+'specialpages-note' => '* דפים מיוחדים רגילים.
* <span class="mw-specialpagerestricted">דפים מיוחדים מוגבלים.</span>',
'specialpages-group-maintenance' => 'דיווחי תחזוקה',
'specialpages-group-other' => 'דפים מיוחדים אחרים',
'mypreferences' => 'पसंद',
'prefs-edits' => 'संपादन संख्या:',
'prefsnologin' => 'लॉग इन नहीं किया है',
-'prefsnologintext' => 'वरीयताएँ बदलने के लिए आपको <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} सत्रारंभ]</span> करना होगा।',
'changepassword' => 'कूटशब्द बदलें',
'prefs-skin' => 'त्वचा',
'skin-preview' => 'झलक',
'allmessagesname' => 'नाम',
'allmessagesdefault' => 'डिफॉल्ट पाठ',
'allmessagescurrent' => 'वर्तमान पाठ',
-'allmessagestext' => 'ये मीडियाविकि नामस्थान में उपलब्ध प्रणाली संदेशों की एक सूची है। यदि आप सामान्य मीडियाविकि क्षेत्रीयकरण में योगदान देना चाहें तो कृपया [//www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरण] व [//translatewiki.net translatewiki.net] को देखें।',
+'allmessagestext' => 'ये मीडियाविकि नामस्थान में उपलब्ध प्रणाली संदेशों की एक सूची है। यदि आप सामान्य मीडियाविकि क्षेत्रीयकरण में योगदान देना चाहें तो कृपया [https://www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरण] व [//translatewiki.net translatewiki.net] को देखें।',
'allmessagesnotsupportedDB' => "इस पृष्ठ का इस्तेमाल नहीं कर सकते क्योंकी '''\$wgUseDatabaseMessages''' बंद हैं।",
'allmessages-filter-legend' => 'छानें',
'allmessages-filter' => 'अनुकूलन स्थिति के आधार पर छानें:',
# External editor support
'edit-externally' => 'बाहरी प्रणाली का उपयोग करते हुए इस सञ्चिका को सम्पादित करें ।',
-'edit-externally-help' => '(और जानकारी के लिए [//www.mediawiki.org/wiki/Manual:External_editors जमाव निर्देश] देखें)',
+'edit-externally-help' => '(और जानकारी के लिए [https://www.mediawiki.org/wiki/Manual:External_editors जमाव निर्देश] देखें)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सभी',
'version-hook-subscribedby' => 'ने सदस्यत्व लिया',
'version-version' => '(अवतरण $1)',
'version-license' => 'अनुज्ञापत्र',
-'version-poweredby-credits' => "यह विकि '''[//www.mediawiki.org/ MediaWiki]''' द्वारा संचालित है, कॉपीराइट © 2001 - $1 $2 ।",
+'version-poweredby-credits' => "यह विकि '''[https://www.mediawiki.org/ MediaWiki]''' द्वारा संचालित है, कॉपीराइट © 2001 - $1 $2 ।",
'version-poweredby-others' => 'अन्य',
'version-software' => 'इन्स्टॉल की हुई प्रणाली',
'version-software-product' => 'प्रोडक्ट',
# Special:SpecialPages
'specialpages' => 'विशेष पृष्ठ',
-'specialpages-note' => '----
-* साधारण विशेष पृष्ठ।
+'specialpages-note' => '* साधारण विशेष पृष्ठ।
* <span class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठ।</span>',
'specialpages-group-maintenance' => 'अनुरक्षण रिपोर्ट',
'specialpages-group-other' => 'अन्य विशेष पृष्ठ',
'mypreferences' => 'Pasand',
'prefs-edits' => 'Badlao ke number:',
'prefsnologin' => 'Aap abhi logged in nai hai',
-'prefsnologintext' => 'Aaap ke <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> chaahi rahe ke user preferences ke badle ke khatir.',
'changepassword' => 'Pasword ke badlo',
'prefs-skin' => 'Skin',
'skin-preview' => 'Jhalak',
'allmessagesdefault' => 'Default text',
'allmessagescurrent' => 'Abhi ke text',
'allmessagestext' => 'Ii ek system sandes ke suchi hai jon ki MediaWiki namespace me pawa jaae sake hai.
-Agar aap generic MediaWiki localisation ke yogdaan de mangtaa hai tab meharbani kar ke [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] aur [//translatewiki.net translatewiki.net] pe jao.',
+Agar aap generic MediaWiki localisation ke yogdaan de mangtaa hai tab meharbani kar ke [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] aur [//translatewiki.net translatewiki.net] pe jao.',
'allmessagesnotsupportedDB' => "Ii panna ke kaam me nai lawa jaae sake hai kahe ki '''\$wgUseDatabaseMessages''' ke band kar dewa gais hai.",
'allmessages-filter-legend' => 'Chaalo',
'allmessages-filter' => 'Customisation state se chhaano',
# External editor support
'edit-externally' => 'Ii file ke bahaari program me kaam me laae ke badlo',
-'edit-externally-help' => '(Aur jaankari khatir [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] ke dekho)',
+'edit-externally-help' => '(Aur jaankari khatir [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ke dekho)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sab',
'mypreferences' => 'Mga Ginabasehan',
'prefs-edits' => 'Numero sang mga gin-ilisan:',
'prefsnologin' => 'Wala naka-sulod',
-'prefsnologintext' => 'Kinahanglan nga ikaw <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakasulod]</span> agod nga mabuhat ang pag-ilis sang mga ginapalabi.',
'changepassword' => 'Ilisan ang pasword',
'prefs-skin' => 'Panit',
'skin-preview' => 'Ipakita subong',
# External editor support
'edit-externally' => 'Islan ini nga file gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Lantawa ang [//www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
+'edit-externally-help' => '(Lantawa ang [https://www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tanan',
'mypreferences' => 'Moje postavke',
'prefs-edits' => 'Broj uređivanja:',
'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span> za podešavanje suradničkih postavki.',
'changepassword' => 'Promjena lozinke',
'prefs-skin' => 'Izgled',
'skin-preview' => 'Pregled',
'allmessagesname' => 'Ime',
'allmessagesdefault' => 'Prvotni tekst',
'allmessagescurrent' => 'Trenutačni tekst',
-'allmessagestext' => 'Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [//www.mediawiki.org/wiki/Localisation lokalizaciju MediaWikija] i [//translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.',
+'allmessagestext' => 'Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [https://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWikija] i [//translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.',
'allmessagesnotsupportedDB' => "Ova stranica ne može biti korištena jer je isključen parametar '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Filtriraj',
'allmessages-filter' => 'Filtriraj prema prilagođenom obliku:',
# External editor support
'edit-externally' => 'Uredi koristeći se vanjskom aplikacijom',
-'edit-externally-help' => '(Vidi [//www.mediawiki.org/wiki/Manual:External_editors setup upute] za više informacija)',
+'edit-externally-help' => '(Vidi [https://www.mediawiki.org/wiki/Manual:External_editors setup upute] za više informacija)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sve',
'version-hook-subscribedby' => 'Pretplaćeno od',
'version-version' => '(Inačica $1)',
'version-license' => 'Licencija',
-'version-poweredby-credits' => "Ovaj wiki pogoni '''[//www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
+'version-poweredby-credits' => "Ovaj wiki pogoni '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
'version-poweredby-others' => 'ostali',
'version-credits-summary' => 'Željeli bismo zahvaliti sljedećim suradnicima na njihovom doprinosu [[Special:Version|MediaWikiju]].',
'version-license-info' => 'MediaWiki je slobodni softver; možete ga distribuirati i/ili mijenjati pod uvjetima GNU opće javne licencije u obliku u kojem ju je objavila Free Software Foundation; bilo verzije 2 licencije, ili (Vama na izbor) bilo koje kasnije verzije.
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* Normalne posebne stranice
+'specialpages-note' => '* Normalne posebne stranice
* <span class="mw-specialpagerestricted">Posebne stranice s ograničenim pristupom.</span>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
'specialpages-group-other' => 'Ostale posebne stranice',
'tog-hidepatrolled' => 'Dohladawane změny w aktualnych změnach schować',
'tog-newpageshidepatrolled' => 'Dohladowane strony z lisćiny nowych stronow schować',
'tog-extendwatchlist' => 'Lisćinu wobkedźbowankow wočinić, zo by wšě změny widźał, nic jenož najnowše',
-'tog-usenewrc' => 'Skupinske změny po stronje w aktualnych změnach a wobkedźbowankach (trjeba JavaScript)',
+'tog-usenewrc' => 'Změny po stronje w aktualnych změnach a wobkedźbowankach zeskupjeć',
'tog-numberheadings' => 'Nadpisma awtomatisce čisłować',
-'tog-showtoolbar' => 'Gratowu lajstu pokazać (wužaduje sej JavaScript)',
-'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować (wužaduje sej JavaScript)',
+'tog-showtoolbar' => 'Wobdźěłowansku lajstu pokazać',
+'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować',
'tog-editsection' => 'Wobdźěłowanje jednotliwych wotrězkow přez wotkazy [wobdźěłać] zmóžnić',
-'tog-editsectiononrightclick' => 'Wobdźěłowanje jednotliwych wotrězkow přez kliknjenje z prawej tastu na nadpisma wotrězkow zmóžnić (wužaduje sej JavaScript)',
+'tog-editsectiononrightclick' => 'Wobdźěłowanje wotrězkow přez kliknjenje z prawej tastu na nadpisma wotrězkow zmóžnić',
'tog-showtoc' => 'Zapis wobsaha pokazać (za strony z wjace hač 3 nadpismami)',
'tog-rememberpassword' => 'Přizjewjenje na tutym wobhladowaku sej spomjatkować (za maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
'tog-watchcreations' => 'Strony, kotrež wutworjam a dataje, kotrež nahrawam, swojim wobkedźbowankam přidać',
'tog-shownumberswatching' => 'Ličbu wobkedźbowacych wužiwarjow pokazać',
'tog-oldsig' => 'Eksistowaca signatura:',
'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadźeć (bjez awtomatiskeho wotkaza)',
-'tog-uselivepreview' => 'Live-přehlad wužiwać (wužaduje sej JavaScript) (eksperimentalny)',
+'tog-uselivepreview' => 'Live-přehlad wužiwać (eksperimentalny)',
'tog-forceeditsummary' => 'Mje skedźbnić, jeli zabudu zjeće',
'tog-watchlisthideown' => 'Moje změny we wobkedźbowankach schować',
'tog-watchlisthidebots' => 'Změny awtomatiskich programow (botow) we wobkedźbowankach schować',
'tog-showhiddencats' => 'Schowane kategorije pokazać',
'tog-norollbackdiff' => 'Rozdźěl po wróćostajenju zanjechać',
'tog-useeditwarning' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
+'tog-prefershttps' => 'Po přizjewjenju přeco wěsty zwisk wužiwać',
'underline-always' => 'Přeco',
'underline-never' => 'Ženje',
'newwindow' => '(wočinja so w nowym woknje)',
'cancel' => 'Přetorhnyć',
'moredotdotdot' => 'Wjace…',
-'morenotlisted' => 'Dalše njepodate...',
+'morenotlisted' => 'Tuta lisćina dospołna njeje.',
'mypage' => 'Strona',
'mytalk' => 'Diskusija',
'anontalk' => 'Diskusijna strona tuteje IP.adresy',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'Wo {{GRAMMAR:lokatiw|{{SITENAME}}}}',
'aboutpage' => 'Project:Wo',
-'copyright' => 'Wobsah steji pod $1.',
+'copyright' => 'Wobsah pod $1 k dispoziciji steji, jeli njeje so hinak podało.',
'copyrightpage' => '{{ns:project}}:Awtorske prawa',
'currentevents' => 'Aktualne podawki',
'currentevents-url' => 'Project:Aktualne podawki',
# General errors
'error' => 'Zmylk',
'databaseerror' => 'Zmylk w datowej bance',
+'databaseerror-query' => 'Wotprašenje: $1',
+'databaseerror-function' => 'Funkcija: $1',
+'databaseerror-error' => 'Zmylk: $1',
'laggedslavemode' => "'''Kedźbu:''' Je móžno, zo strona žane zaktualizowanja njewobsahuje.",
'readonly' => 'Datowa banka je zawrjena',
'enterlockreason' => 'Zapodaj přičinu za zawrjenje a přibližny čas, hdy budźe zawrjenje zběhnjene',
'invalidtitle-knownnamespace' => 'Njepłaćiwy titul z mjenowym rumom "$2" a tekstom "$3"',
'invalidtitle-unknownnamespace' => 'Njepłaćiwy titul z njeznatym mjenowym rumom $1 a tekstom "$2"',
'exception-nologin' => 'Njejsy přizjewjeny',
-'exception-nologin-text' => 'Tuta strona abo akcija sej wužaduje, zo sy na tutym wikiju přizjewjeny.',
+'exception-nologin-text' => 'Prošu [[Special:Userlogin|přizjew so]], zo by přistup na tutu stronu abo akciju měł.',
+'exception-nologin-text-manual' => 'Zo by přistup na tutu stronu abo akciju měł, dyrbiš so $1.',
# Virus scanner
'virus-badscanner' => "Špatna konfiguracija: Njeznaty wirusowy skener: ''$1''",
# Login and logout pages
'logouttext' => "'''{{GENDER:|Sy|Sy}} nětko {{GENDER:|wotzjewjeny|wotzjewjena}}.'''
-Móžeš {{GRAMMAR:akuzatiw|{{SITENAME}}}} nětko anonymnje dale wužiwać abo so ze samsnym abo druhim wužiwarskim mjenom <span class='plainlinks'>[$1 zaso přizjewić]</span>.
-Wobkedźbuj, zo so někotre strony dale jewja, kaž by hišće přizjewjeny był, doniž pufrowak swojeho wobhladowaka njewuprózdnješ.",
+Kedźbu: Je móžno, zo někotre strony so snano takle pokazuja, kaž by ty hišće přizjewjeny był, doniž pufrowak twojeho wobhladowaka njewuprózdniš.",
'welcomeuser' => 'Witaj $1',
'welcomecreation-msg' => 'Twoje konto bu wutworjene.
Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENAME}}}}]] změnić.',
'yourname' => 'Wužiwarske mjeno:',
'userlogin-yourname' => 'Wužiwarske mjeno',
'userlogin-yourname-ph' => 'Zapodaj swoje wužiwarske mjeno',
+'createacct-another-username-ph' => 'Wužiwarske mjeno zapodać',
'yourpassword' => 'Hesło:',
'userlogin-yourpassword' => 'Hesło',
'userlogin-yourpassword-ph' => 'Zapodaj swoje hesło',
'gotaccount' => 'Maš hižo wužiwarske konto? $1.',
'gotaccountlink' => 'Přizjewić',
'userlogin-resetlink' => 'Přizjewjenske daty zabył?',
-'userlogin-resetpassword-link' => 'Hesło anulować',
+'userlogin-resetpassword-link' => 'Sy swoje hesło zabył?',
'helplogin-url' => 'Help:Přizjewić',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc za přizjewjenje]]',
+'userlogin-loggedin' => 'Sy hižo jako {{GENDER:$1|$1 přizjewjeny|$1 přizjewjena}}. Wužij slědowacy formular, zo by so jako druhi wužiwar přizjewił.',
+'userlogin-createanother' => 'Dalše konto załožić',
'createacct-join' => 'Zapodaj deleka swoje informacije.',
+'createacct-another-join' => 'Zapodaj deleka informacije noweho konta.',
'createacct-emailrequired' => 'E-mejlowa adresa',
'createacct-emailoptional' => 'E-mejlowa adresa (opcionalny)',
'createacct-email-ph' => 'Zapodaj swoju e-mejlowu adresu',
-'createaccountmail' => 'Nachwilne přidatne hesło wužiwać a jo na slědowacu e-mejlowu adresu pósłać',
+'createacct-another-email-ph' => 'E-mejlowu adresu zapodać',
+'createaccountmail' => 'Nachwilne připadne hesło wužiwać a jo na slědowacu e-mejlowu adresu pósłać',
'createacct-realname' => 'Woprawdźite mjeno (opcionalny)',
'createaccountreason' => 'Přičina:',
'createacct-reason' => 'Přičina',
'createacct-captcha' => 'Wěstotna kontrola',
'createacct-imgcaptcha-ph' => 'Zapodaj tekst, kotryž deleka widźiš',
'createacct-submit' => 'Twoje konto załožić',
+'createacct-another-submit' => 'Dalše konto załožić',
'createacct-benefit-heading' => '{{SITENAME}} je so wot ludźi kaž ty wutworił.',
'createacct-benefit-body1' => '{{PLURAL:$1|změna|změnje|změny|změnow}}',
'createacct-benefit-body2' => '{{PLURAL:$1|strona|stronje|strony|stronow}}',
'passwordsent' => 'Nowe hesło bu na e-mejlowu adresu zregistrowanu za wužiwarja „$1” pósłane.
Prošu přizjew so znowa, po tym zo sy je přijał.',
'blocked-mailpassword' => 'Twoja IP-adresa je přećiwo wobdźěłowanju zablokowana, a tohodla njeje dowolene, funkciju za wobnowjenje hesłow wužiwać, zo by znjewužiwanju zadźěwało.',
-'eauthentsent' => 'Wobkrućenska e-mejlka bu na naspomnjenu e-mejlowu adresu pósłana.
-Prjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w e-mejlce měć, zo by wobkrućił, zo konto je woprawdźe twoje.',
+'eauthentsent' => 'Wobkrućenska e-mejlka je so na podatu e-mejlowu adresu pósłała.
+Prjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w e-mejlce měć, zo by wobkrućił, zo konto woprawdźe tebi słuša.',
'throttled-mailpassword' => 'E-mejl za anulowanje hesło je so za {{PLURAL:$1|poslednju hodźinu|poslednjej $1 hodźinje|poslednje $1 hodźiny|poslednich $1 hodźin}} pósłała. Zo by znjewužiwanju zadźěwało, so jenož jedna e-mejl za anulowanje hesła na {{PLURAL:$1|hodźinu|$1 hodźinje|$1 hodźiny|$1 hodźin}} pósćele.',
'mailerror' => 'Zmylk při słanju e-mejlki: $1',
'acct_creation_throttle_hit' => 'Wopytowarjo tutoho wikija, kotřiž twoju IP-adresu wužiwaja, su {{PLURAL:$1|1 konto|$1 kontaj|$1 konty|$1 kontow}} posledni dźeń wutworił, štož je maksimalna ličba za tutu periodu. Wopytowarjo, kotřiž tutu IP-adresu wužiwaja, njemóža tuchwilu dalše konta wutworić.',
-'emailauthenticated' => 'Twoja e-mejlowa adresa bu $2 $3 hodź. wobkrućena.',
+'emailauthenticated' => 'Twoja e-mejlowa adresa je so $2 $3 hodź. wobkrućiła.',
'emailnotauthenticated' => 'Twoja e-mejlowa adresa hišće wobkrućena njeje. Žana e-mejlka budźe so za slědowace funkcije słać.',
'noemailprefs' => 'Podaj e-mejlowu adresu w swojich nastajenjach, zo bychu tute funkcije k dispoziciji stali.',
'emailconfirmlink' => 'Swoju e-mejlowu wobkrućić',
Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutworiło.',
'usernamehasherror' => 'Wužiwarske mjeno njesmě hašowe znamješka wpbsahować',
-'login-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu, prjedy hač znowa spytaš.',
+'login-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.',
'login-abort-generic' => 'Twoje přizjewjenje njebě wuspěšne - přetorhnjene',
'loginlanguagelabel' => 'Rěč: $1',
'suspicious-userlogout' => 'Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało',
'newpassword' => 'Nowe hesło:',
'retypenew' => 'Nowe hesło wospjetować:',
'resetpass_submit' => 'Hesło posrědkować a so přizjewić',
-'changepassword-success' => 'Twoje hesło bu wuspěšnje změnjene! Nětko přizjewjenje běži...',
+'changepassword-success' => 'Twoje hesło je so wuspěšnje změniło!',
'resetpass_forbidden' => 'Hesła njedadźa so změnić.',
'resetpass-no-info' => 'Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.',
'resetpass-submit-loggedin' => 'Hesło změnić',
# Special:PasswordReset
'passwordreset' => 'Hesło wróćo stajić',
'passwordreset-text-one' => 'Wupjelń tutón formular, zo by swoje hesło anulował.',
-'passwordreset-text-many' => '{{PLURAL:$1|Zapodaj jedyn z datow, zo by swoje hesło anulował.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Zapodaj jedne z polow, zo by swoje hesło wróćo stajił.}}',
'passwordreset-legend' => 'Hesło wróćo stajić',
'passwordreset-disabled' => 'Wróćostajenje hesłow je so na tutym wikiju znjemóžniło.',
'passwordreset-emaildisabled' => 'E-mejlowe funkcije su so na tutym wikiju znjemóžnili.',
'changeemail-submit' => 'E-mejlowu adresu změnić',
'changeemail-cancel' => 'Přetorhnyć',
+# Special:ResetTokens
+'resettokens' => 'Tokeny wróćo stajić',
+
# Edit page toolbar
'bold_sample' => 'Tučny tekst',
'bold_tip' => 'Tučny tekst',
'loginreqlink' => 'přizjewić',
'loginreqpagetext' => 'Dyrbiš so $1, zo by strony čitać móhł.',
'accmailtitle' => 'Hesło bu pósłane.',
-'accmailtext' => "Připadnje spłodźene hesło za [[User talk:$1|$1]] bu do $2 pósłane.
-
-Hesło za tute nowe konto da so na stronje ''[[Special:ChangePassword|hesło změnić]]'' při přizjewjenju změnić.",
+'accmailtext' => "Připadnje spłodźene hesło za [[User talk:$1|$1]] bu na $2 pósłane. Daj so na stronje ''[[Special:ChangePassword|hesło změnić]]'' při přizjewjenju změnić.",
'newarticle' => '(Nowy)',
'newarticletext' => 'Sy wotkaz k stronje slědował, kotraž hišće njeeksistuje. Zo by stronu wutworił, wupjelń slědowace tekstowe polo (hlej [[{{MediaWiki:Helppage}}|stronu pomocy]] za dalše informacije). Jeli sy zmylnje tu, klikń prosće na tłóčatko <b>Wróćo</b> we swojim wobhladowaku.',
'anontalkpagetext' => "---- ''To je diskusijna strona za anonymneho wužiwarja, kiž hišće konto wutworił njeje abo je njewužiwa. Dyrbimy tohodla numerisku IP-adresu wužiwać, zo bychmy jeho/ju identifikowali. Tajka IP-adresa hodźi so wot wjacorych wužiwarjow zhromadnje wužiwać. Jeli sy anonymny wužiwar a měniš, zo buchu irelewantne komentary k tebi pósłane, [[Special:UserLogin/signup|wutwor prošu konto]] abo [[Special:UserLogin|přizjew so]], zo by přichodnu šmjatańcu z anonymnymi wužiwarjemi wobešoł.''",
* Njepřihódne wosobinske informacije
*: ''bydlenske adresy a telefonowe čisła, čisła socialneho zawěsćenja atd.''",
'revdelete-legend' => 'Wobmjezowanja za widźomnosć nastajić',
-'revdelete-hide-text' => 'Tekst tuteje wersije schować',
+'revdelete-hide-text' => 'Tekst wersije',
'revdelete-hide-image' => 'Wobsah wobraza schować',
'revdelete-hide-name' => 'Akciju a cil schować',
-'revdelete-hide-comment' => 'Zjeće schować',
-'revdelete-hide-user' => 'Wužiwarske mjeno/IP-adresu schować',
+'revdelete-hide-comment' => 'Zjeće změnow',
+'revdelete-hide-user' => 'Mjeno/IP-adresa wobdźěłarja',
'revdelete-hide-restricted' => 'Daty wot administratorow kaž tež te druhich wužiwarjow potłóčić',
'revdelete-radio-same' => '(njezměnić)',
-'revdelete-radio-set' => 'Haj',
-'revdelete-radio-unset' => 'Ně',
+'revdelete-radio-set' => 'Schowany',
+'revdelete-radio-unset' => 'Widźomny',
'revdelete-suppress' => 'Přičinu wušmórnjenja tež za administratorow schować',
'revdelete-unsuppress' => 'Wobmjezowanja za wobnowjene wersije zběhnyć',
'revdelete-log' => 'Přičina:',
'compareselectedversions' => 'Wubranej wersiji přirunać',
'showhideselectedversions' => 'Wubrane wersije pokazać/schować',
'editundo' => 'cofnyć',
+'diff-empty' => '(Žadyn rozdźěl)',
'diff-multi' => '({{PLURAL:$1|Jedna mjezywersija|$1 mjezywersiji|$1 mjezywersije|$1 mjezywersijow}} wot {{PLURAL:$2|jednoho wužiwarja|$2 wužiwarjow|$2 wužiwarjow|$2 wužiwarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Jedna mjezywersija|$1 mjezywersiji|$1 mjezywersije|$1 mjezywersijow}} wot wjace hač {{PLURAL:$2|jednoho wužiwarja|$2 wužiwarjow|$2 wužiwarjow|$2 wužiwarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
'difference-missing-revision' => '{{PLURAL:$2|Jedna wersija|$2 wersiji|$2 wersije|$2 wersijow}} tutoho rozdźěla ($1) {{PLURAL:$2|njeje so namakała|njejstej so namakałoj|njejsu namakali|njeje so namakało}}.
'mypreferences' => 'Nastajenja',
'prefs-edits' => 'Ličba změnow:',
'prefsnologin' => 'Njepřizjewjeny',
-'prefsnologintext' => 'Dyrbiš <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} přizjewjeny]</span> być, zo by móhł nastajenja postajić.',
'changepassword' => 'Hesło změnić',
'prefs-skin' => 'Drasta',
'skin-preview' => 'Přehlad',
'prefs-rendering' => 'Napohlad',
'saveprefs' => 'Składować',
'resetprefs' => 'Njeskładowane změny zaćisnyć',
-'restoreprefs' => 'Wšě standardne nastajenja wobnowić',
+'restoreprefs' => 'Wšě standardne nastajenja wobnowić (w druhich wotrězkach)',
'prefs-editing' => 'Wobdźěłowanje',
'rows' => 'Rjadki:',
'columns' => 'Stołpiki:',
'badsig' => 'Njepłaćiwa signatura, prošu HTML přepruwować.',
'badsiglength' => 'Twoja signatura je předołha.
Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} dołha być.',
-'yourgender' => 'Splah:',
-'gender-unknown' => 'Njepodaty',
-'gender-male' => 'Muski',
-'gender-female' => 'Žónski',
+'yourgender' => 'Što chceš podać?',
+'gender-unknown' => 'Nochcu ničo wo tym podać',
+'gender-male' => 'Wón wobdźěłuje wikistrony',
+'gender-female' => 'Wona wobdźěłuje wikistrony',
'prefs-help-gender' => 'Opcionalny: wužiwa so za po splahu specifiske narěčenje přez softwaru. Tuta informacija budźe zjawna.',
'email' => 'E-mejl',
'prefs-help-realname' => '* Woprawdźite mjeno (opcionalne): jeli so rozsudźiš to zapodać, budźe to so wužiwać, zo by tebi woprawnjenje za twoje dźěło dało.',
'prefs-signature' => 'Podpis',
'prefs-dateformat' => 'Datumowy format',
'prefs-timeoffset' => 'Časowe wotchilenje',
-'prefs-advancedediting' => 'Powšitkowny',
+'prefs-advancedediting' => 'Powšitkowne nastajenja',
'prefs-editor' => 'Editor',
'prefs-preview' => 'Přehlad',
'prefs-advancedrc' => 'Rozšěrjene opcije',
'prefs-displaysearchoptions' => 'Zwobraznjenske opcije',
'prefs-displaywatchlist' => 'Zwobraznjenske opcije',
'prefs-diffs' => 'Rozdźěle',
+'prefs-help-prefershttps' => 'Tute nastajenje so po twojim přichodnym přizjewjenju wuskutkuje.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Zda so, zo e-mejlowa adresa je płaćiwa',
'userrights-no-interwiki' => 'Nimaš prawo wužiwarske prawa w druhich wikijach změnić.',
'userrights-nodatabase' => 'Datowa banka $1 njeeksistuje abo lokalna njeje.',
'userrights-nologin' => 'Dyrbiš so z admininstratorowym kontom [[Special:UserLogin|přizjewić]], zo by wužiwarske prawa změnił.',
-'userrights-notallowed' => 'Twoje konto nima trěbne prawa, zo by wužiwarske prawa přidźěliło abo zebrało.',
+'userrights-notallowed' => 'Nimaš trěbne prawa, zo by wužiwarske prawa přidźěliło abo zebrało.',
'userrights-changeable-col' => 'Skupiny, kotrež móžeš změnić',
'userrights-unchangeable-col' => 'Skupiny, kotrež njemóžeš změnić',
-'userrights-conflict' => 'Konflikt wužiwarskich prawow! Prošu čiń swoje změny hišće raz.',
+'userrights-conflict' => 'Konflikt změnow wužiwarskich prawow! Prošu přepruwuj a wobkruć swoje změny.',
'userrights-removed-self' => 'Sy swoje prawa wuspěšnje wotstronił. Tohodla nimaš hižo přistup na tutu stronu měć.',
# Groups
'action-block' => 'Wobdźěłanju přez wužiwarja zadźěwać',
'action-protect' => 'škitowe runiny za tutu stronu změnić',
'action-rollback' => 'Změny poslednjeho wužiwarja, kiž je wěstu stronu wobdźěłał, spěšnje wróćo stajić',
-'action-import' => 'Tutu stronu z druheho wikija importować',
-'action-importupload' => 'Tutu stronu z datajoweho nahraća importować',
+'action-import' => 'Strony z druheho wikija importować',
+'action-importupload' => 'Strony z datajoweho nahraća importować',
'action-patrol' => 'Změny druhich wužiwarjiw jako dohladowane markować',
'action-autopatrol' => 'twoju změnu jako dohladowanu markować dać',
'action-unwatchedpages' => 'lisćinu njewobkedźbowanych stronow zwobraznić',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|wot poslednjeho wopyta}}',
+'enhancedrc-history' => 'historija',
'recentchanges' => 'Aktualne změny',
'recentchanges-legend' => 'Opcije aktualnych změnow',
'recentchanges-summary' => 'Na tutej stronje móžeš najaktualniše změny w {{GRAMMAR:lokatiw|{{SITENAME}}}} wobkedźbować.',
'rc-change-size' => '$1 {{PLURAL:$1|bajt|bajtaj|bajty|bajtow}}',
'rc-change-size-new' => '$1 {{PLURAL:$1|bajt|bajtaj|bajty|bajtow}} po změnje',
'newsectionsummary' => 'Nowy wotrězk: /* $1 */',
-'rc-enhanced-expand' => 'Podrobnosće pokazać (wužaduje sej JavaScript)',
+'rc-enhanced-expand' => 'Podrobnosće pokazać',
'rc-enhanced-hide' => 'Podrobnosće schować',
'rc-old-title' => 'prěnjotnje wutworjeny jako "$1"',
'upload_source_file' => ' (dataja na twojim ličaku)',
# Special:ListFiles
-'listfiles-summary' => 'Tuta specialna strona pokazuje wšě nahrate dataje.
-Jeli so po wužiwarju filtruje, pokazuja so jenož dataje, při kotrychž tón wužiwar je najnowšu wersiju nahrał.',
+'listfiles-summary' => 'Tuta specialna strona pokazuje wšě nahrate dataje.',
'listfiles_search_for' => 'Za mjenom wobraza pytać:',
'imgfile' => 'dataja',
'listfiles' => 'Lisćina datajow',
'listfiles_size' => 'wulkosć (byte)',
'listfiles_description' => 'wopisanje',
'listfiles_count' => 'Wersije',
+'listfiles-show-all' => 'Stare wersije wobrazow zapřijeć',
+'listfiles-latestversion' => 'Aktualna wersija',
+'listfiles-latestversion-yes' => 'Haj',
+'listfiles-latestversion-no' => 'Ně',
# File description page
'file-anchor-link' => 'Dataja',
'randompage' => 'Připadny nastawk',
'randompage-nopages' => 'W {{PLURAL:$2|slědowacym mjenowym rumje|slědowacymaj mjenowymaj rumomaj|slědowacych mjenowych rumach|slědowacych mjenowych rumach}} žane strony njejsu: $1',
+# Random page in category
+'randomincategory' => 'Připadna strona w kategoriji',
+'randomincategory-invalidcategory' => '"$1" płaćiwe kategorijowe mjeno njeje.',
+'randomincategory-nopages' => 'W kategoriji [[:Category:$1|$1]] žane strony njejsu.',
+'randomincategory-selectcategory-submit' => 'Wotesłać',
+
# Random redirect
'randomredirect' => 'Připadne daleposrědkowanje',
'randomredirect-nopages' => 'Žane daleposrědkowanja w mjenowym rumje "$1".',
'listusers' => 'Lisćina wužiwarjow',
'listusers-editsonly' => 'Jenož wužiwarjow ze změnami pokazać',
'listusers-creationsort' => 'Po datumje wutworjenja sortěrować',
+'listusers-desc' => 'Po spadowacym porjedźe sortěrować',
'usereditcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
'usercreated' => 'je so $1 $2 hodź. {{GENDER:$3|wutworił|wutworiła}}',
'newpages' => 'Nowe strony',
# Special:ListGroupRights
'listgrouprights' => 'Prawa wužiwarskeje skupiny',
'listgrouprights-summary' => 'Slěduje lisćina wužiwarskich skupinow na tutej wikiju z jich wotpowědnymi přistupnymi prawami. Tu móžeš [[{{MediaWiki:Listgrouprights-helppage}}|dalše informacije]] wo jednotliwych prawach namakać.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Garantowane prawo</span>
+'listgrouprights-key' => 'Legenda:
+* <span class="listgrouprights-granted">Garantowane prawo</span>
* <span class="listgrouprights-revoked">Wotwołane prawo</span>',
'listgrouprights-group' => 'Skupina',
'listgrouprights-rights' => 'Prawa',
'deletecomment' => 'Přičina:',
'deleteotherreason' => 'Druha/přidatna přičina:',
'deletereasonotherlist' => 'Druha přičina',
-'deletereason-dropdown' => '*Zwučene přičiny za wušmórnjenje
+'deletereason-dropdown' => '* Zwučene přičiny za wušmórnjenje
+** Spam
+** Wandalizm
+** Přeńdźenje awtorskeho prawa
** Požadanje awtora
-** Zranjenje copyrighta
-** Wandalizm',
+** Defektne dalesposrědkowanje',
'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
'contributions' => 'Přinoški {{GENDER:$1|wužiwarja|wužiwarki}}',
'contributions-title' => 'Wužiwarske přinoški wot „$1“',
'mycontris' => 'Přinoški',
-'contribsub2' => 'za wužiwarja $1 ($2)',
+'contribsub2' => 'Za {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Žane změny, kotrež podatym kriterijam wotpowěduja.',
'uctop' => '(aktualny)',
'month' => 'wot měsaca (a do toho):',
'allmessagesname' => 'Mjeno',
'allmessagesdefault' => 'Standardny tekst',
'allmessagescurrent' => 'Aktualny tekst',
-'allmessagestext' => 'To je lisćina systemowych zdźělenkow, kotrež w mjenowym rumje MediaWiki k dispoziciji steja. Prošu wopytaj [//www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [//translatewiki.net translatewiki.net], jeli chceš k powšitkownej lokalizaciji MediaWiki přinošować.',
+'allmessagestext' => 'To je lisćina systemowych zdźělenkow, kotrež w mjenowym rumje MediaWiki k dispoziciji steja. Prošu wopytaj [https://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [//translatewiki.net translatewiki.net], jeli chceš k powšitkownej lokalizaciji MediaWiki přinošować.',
'allmessagesnotsupportedDB' => "Tuta strona njeda so wužiwać, dokelž '''\$wgUseDatabaseMessages''' bu znjemóžnjeny.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Po přiměrjenskim stawje filtrować:',
'spam_blanking' => 'Wšě wersije z wotkazami do $1 so porjedźeja',
'spam_deleting' => 'Wšě wersije z wotkazami do $1 so zhašeja',
'simpleantispam-label' => "Kontrola přećiwo spamej.
-Tu '''ničo''' njezapisać!",
+Tu '''NIČO''' njezapisać!",
# Info page
'pageinfo-title' => 'Informacije za stronu "$1"',
'pageinfo-length' => 'Dołhosć strony (w bajtach)',
'pageinfo-article-id' => 'ID strony',
'pageinfo-language' => 'Rěč wobsaha strony',
-'pageinfo-robot-policy' => 'Status pytawy',
-'pageinfo-robot-index' => 'Indeksujomny',
-'pageinfo-robot-noindex' => 'Njeindeksujomny',
+'pageinfo-content-model' => 'Model wobsaha strony',
+'pageinfo-robot-policy' => 'Indicěrowanje přez roboty',
+'pageinfo-robot-index' => 'Dowoleny',
+'pageinfo-robot-noindex' => 'Zakazany',
'pageinfo-views' => 'Ličba zwobraznjenjow',
'pageinfo-watchers' => 'Ličba wobkedźbowarjow strony',
'pageinfo-few-watchers' => 'Mjenje hač $1 {{PLURAL:$1|wobkedźbowar|wobkedźbowarjej|wobkedźbowarje|wobkedźbowarjow}}',
-'pageinfo-redirects-name' => 'Dalesposrědkowanja k tutej stronje',
+'pageinfo-redirects-name' => 'Ličba dalesposrědkowanjow k tutej stronje',
'pageinfo-redirects-value' => '$1',
'pageinfo-subpages-name' => 'Podstrony tuteje strony',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|dalesposrědkowanje|dalesposrědkowani|dalesposrědkowanja|dalesposrědkowanjow}}; $3 {{PLURAL:$3|njedalesposrědkowanje|njedalesposrědkowani|njedalesposrědkowanja|njedalesposrědkowanjow}})',
'svg-long-desc' => 'SVG-dataja, zakładna wulkosć: $1 × $2 pikselow, datajowa wulkosć: $3',
'svg-long-desc-animated' => 'Animěrowana SVG-dataja, zakładnej wotměraj $1 × $2 pikselow, datajowa wulkosć: $3',
'svg-long-error' => 'Njepłaćiwa SVG-dataja: $1',
-'show-big-image' => 'Wersija z wyšim rozeznaćom',
+'show-big-image' => 'Originalna dataja',
'show-big-image-preview' => 'Wulkosć tutoho přehlada: $1.',
'show-big-image-other' => '{{PLURAL:$2|Druhe rozeznaće|Druhej rozeznaći|Druhe rozeznaća|Druhe rozeznaća}}: $1.',
'show-big-image-size' => '$1 × $2 pikselow',
'exif-compression-4' => 'CCITT skupina 4 faksowe kodowanje',
'exif-copyrighted-true' => 'Přez awtorske prawo škitany',
-'exif-copyrighted-false' => 'Zjawnosći přistupny',
+'exif-copyrighted-false' => 'Status awtorskeho prawa njepostajeny',
'exif-unknowndate' => 'Njeznaty datum',
# External editor support
'edit-externally' => 'Dataju z eksternym programom wobdźěłać',
-'edit-externally-help' => '(Hlej [//www.mediawiki.org/wiki/Manual:External_editors pokiwy za instalaciju] za dalše informacije)',
+'edit-externally-help' => '(Hlej [https://www.mediawiki.org/wiki/Manual:External_editors pokiwy za instalaciju] za dalše informacije)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'wšě',
'confirm-unwatch-button' => 'W porjadku',
'confirm-unwatch-top' => 'Tutu stronu z wobkedźbowankow wotstronić?',
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← předchadna strona',
'imgmultipagenext' => 'přichodna strona →',
'version-hook-subscribedby' => 'Abonowany wot',
'version-version' => '(Wersija $1)',
'version-license' => 'Licenca',
-'version-poweredby-credits' => "Tutón wiki so wot '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
+'version-poweredby-credits' => "Tutón wiki so wot '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
'version-poweredby-others' => 'druzy',
+'version-poweredby-translators' => 'Přełožowarjo na translatewiki.net',
'version-credits-summary' => 'Dźakujemy so slědowacym wosobam za jich přinoški k [[Special:Version|MediaWiki]]',
'version-license-info' => 'MediaWiki je swobodna softwara: móžeš ju pod wuměnjenjemi licency GNU General Public License, wozjewjeneje wot załožby Free Software Foundation, rozdźělić a/abo změnić: pak pod wersiju 2 licency pak pod někajkej pozdźišej wersiju.
# Special:Redirect
'redirect' => 'Po datajowym mjenje, wužiwarju abo wersijowym ID dale sposrědkować',
'redirect-legend' => 'Do dataje abo strony dale sposrědkować',
-'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje.',
+'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
+[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Los',
'redirect-lookup' => 'Pytać:',
'redirect-value' => 'Hódnota:',
# Special:SpecialPages
'specialpages' => 'Specialne strony',
-'specialpages-note' => '----
-* Normalne specialne strony.
-* <span class="mw-specialpagerestricted">Specialne strony z wobmjezowanym přistupom.</span>
-* <span class="mw-specialpagecached">Specialne strony z pufrowaka (móža zestarjene być).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normalne specialne strony.
+* <span class="mw-specialpagerestricted">Specialne strony z wobmjezowanym přistupom.</span>',
'specialpages-group-maintenance' => 'Hladanske lisćiny',
'specialpages-group-other' => 'Druhe specialne strony',
'specialpages-group-login' => 'Přizjewić/Konto załožić',
'tags' => 'Płaćiwe taflički změnow',
'tag-filter' => 'Filter [[Special:Tags|tafličkow]]:',
'tag-filter-submit' => 'Filter',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Značka|Značce|Znački}]]: $2)',
'tags-title' => 'Taflički',
'tags-intro' => 'Tuta strona nalistuje taflički, z kotrymiž softwara móže změnu markěrować a jich woznam.',
'tags-tag' => 'Mjeno taflički',
'tags-display-header' => 'Napohlad na lisćinach změnow',
'tags-description-header' => 'Dospołne wopisanje woznama',
+'tags-active-header' => 'Aktiwny?',
'tags-hitcount-header' => 'Změny z tafličkami',
+'tags-active-yes' => 'Haj',
+'tags-active-no' => 'Ně',
'tags-edit' => 'změnić',
'tags-hitcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
'dberr-problems' => 'Wodaj! Tute sydło ma techniske ćežkosće.',
'dberr-again' => 'Počakń někotre mjeńšiny a zaktualizuj stronu.',
'dberr-info' => '(Njeje móžno ze serwerom datoweje banki zwjazać: $1)',
+'dberr-info-hidden' => '(Kontakt z datobankowym serwerom móžno njeje)',
'dberr-usegoogle' => 'Mjeztym móžeš z pomocu Google pytać.',
'dberr-outofdate' => 'Wobkedźbuj, zo jich indeksy našeho wobsaha móhli zestarjene być.',
'dberr-cachederror' => 'Slědowaca je pufrowana kopija požadaneje strony a móhła zestarjena być.',
# Image rotation
'rotate-comment' => 'Wobraz wo $1 {{PLURAL:$1|stopjeń|stopnjej|stopnje|stopnjow}} w směrje časnika wjerćany',
+# Limit report
+'limitreport-cputime' => 'Časowe wužiwanje CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekundźe|sekundy|sekundow}}',
+'limitreport-walltime' => 'Wužiwanje woprawdźiteho časa',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekundźe|sekundy|sekundow}}',
+'limitreport-ppvisitednodes' => 'Ličba wopytanych sukow preprocesora',
+'limitreport-ppgeneratednodes' => 'Spłodźena ličba sukow preprocesora',
+'limitreport-postexpandincludesize' => 'Wulkosć zapřijimanja po ekspandowanju',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'limitreport-templateargumentsize' => 'Wulkosć předłohoweho argumenta',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'limitreport-expansiondepth' => 'Najwyša ekspansijowa hłubokosć',
+
);
# External editor support
'edit-externally' => 'Modifye fichye sa a nan aplikasyon pa ou (ki pa nan sistèm an, sou machin ou pa egzanp).',
-'edit-externally-help' => '(Gade [//www.mediawiki.org/wiki/Manual:External_editors komand ak enstriksyon yo] pou plis enfòmasyon oubyen pou konnen plis)',
+'edit-externally-help' => '(Gade [https://www.mediawiki.org/wiki/Manual:External_editors komand ak enstriksyon yo] pou plis enfòmasyon oubyen pou konnen plis)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tout',
'mypreferences' => 'Beállítások',
'prefs-edits' => 'Szerkesztéseid száma:',
'prefsnologin' => 'Nem jelentkeztél be',
-'prefsnologintext' => 'Saját beállításaid elmentéséhez <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} be kell jelentkezned.] </span>',
'changepassword' => 'Jelszócsere',
'prefs-skin' => 'Felület',
'skin-preview' => 'előnézet',
'emailuser-title-target' => 'E-mail küldése ennek a felhasználónak: $1',
'emailuser-title-notarget' => 'E-mail küldése a felhasználónak',
'emailpage' => 'E-mail küldése',
-'emailpagetext' => '{{GENDER:$1|user}} nevű szerkesztő e-mail-címére ezen űrlap kitöltésével üzenetet tudsz küldeni.
+'emailpagetext' => '{{GENDER:$1|felhasználó}}nevű szerkesztő e-mail-címére ezen űrlap kitöltésével üzenetet tudsz küldeni.
Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címed fog szerepelni, így a címzett közvetlenül tud majd válaszolni neked.',
'usermailererror' => 'A levélküldő objektum hibával tért vissza:',
'defemailsubject' => '{{SITENAME}} e-mail a következő felhasználótól: „$1”',
'emailsubject' => 'Tárgy:',
'emailmessage' => 'Üzenet:',
'emailsend' => 'Küldés',
-'emailccme' => 'Az üzenet másolatát küldje el nekem is e-mailben.',
+'emailccme' => 'Az üzenet másolatát küldje el nekem is e-mailben',
'emailccsubject' => '$1 szerkesztőnek küldött $2 tárgyú üzenet másolata',
'emailsent' => 'E-mail elküldve',
-'emailsenttext' => 'Az e-mail üzenetedet elküldtem.',
+'emailsenttext' => 'E-mail üzenetedet elküldtük.',
'emailuserfooter' => 'Ezt az e-mailt $1 küldte $2 számára, az „E-mail küldése ezen szerkesztőnek” funkció használatával a(z) {{SITENAME}} wikin.',
# User Messenger
'allmessagesdefault' => 'Alapértelmezett szöveg',
'allmessagescurrent' => 'Jelenlegi szöveg',
'allmessagestext' => 'Ezen a lapon a MediaWiki-névtérben elérhető rendszerüzenetek listája látható.
-Ha részt szeretnél venni a MediaWiki fordításában, látogass el a [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation], valamint a [//translatewiki.net translatewiki.net] oldalra.',
+Ha részt szeretnél venni a MediaWiki fordításában, látogass el a [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], valamint a [//translatewiki.net translatewiki.net] oldalra.',
'allmessagesnotsupportedDB' => "A '''''{{ns:special}}:Allmessages''''' lap nem használható, mert a '''\$wgUseDatabaseMessages''' ki van kapcsolva.",
'allmessages-filter-legend' => 'Elemek szűrése',
'allmessages-filter' => 'Módosítás állapota:',
# External editor support
'edit-externally' => 'A fájl szerkesztése külső alkalmazással',
-'edit-externally-help' => '(Lásd a [//www.mediawiki.org/wiki/Manual:External_editors használati utasítást] (angolul) a beállításához.)',
+'edit-externally-help' => '(Lásd a [https://www.mediawiki.org/wiki/Manual:External_editors használati utasítást] (angolul) a beállításához.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'bármikor',
'version-hook-subscribedby' => 'Használja',
'version-version' => '(verzió: $1)',
'version-license' => 'Licenc',
-'version-poweredby-credits' => "Ez a wiki '''[//www.mediawiki.org/ MediaWiki]''' szoftverrel működik, copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ez a wiki '''[https://www.mediawiki.org/ MediaWiki]''' szoftverrel működik, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'mások',
'version-poweredby-translators' => 'translatewiki.net fordítók',
'version-credits-summary' => 'Szeretnénk elismerni a következő személyek hozzájárulását a [[Special:Version|MediaWiki]] szoftverhez.',
# Special:SpecialPages
'specialpages' => 'Speciális lapok',
-'specialpages-note' => '----
-* Mindenki számára elérhető speciális lapok.
+'specialpages-note' => '* Mindenki számára elérhető speciális lapok.
* <span class="mw-specialpagerestricted">Korlátozott hozzáférésű speciális lapok.</span>',
'specialpages-group-maintenance' => 'Állapotjelentések',
'specialpages-group-other' => 'További speciális lapok',
'mypreferences' => 'Նախընտրություններ',
'prefs-edits' => 'Խմբագրումների քանակը.',
'prefsnologin' => 'Դուք չեք մտել համակարգ',
-'prefsnologintext' => 'Մասնակցային նախընտրությունները փոփոխելու համար անհրաժեշտ է <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} մտնել համակարգ]</span>։',
'changepassword' => 'Փոխել գաղտնաբառը',
'prefs-skin' => 'Տեսք',
'skin-preview' => 'նախադիտել',
'allmessagesdefault' => 'Ուղերձի լռելյայն տեքստ',
'allmessagescurrent' => 'Ընթացիկ տեքստ',
'allmessagestext' => 'Ստորև բերված է «MediaWiki» անվանատարածքի բոլոր համակարգային ուղերձների ցանկը։
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Այս էջը չի գործում, քանի որ '''\$wgUseDatabaseMessages''' հատկանիշը անջատված է։",
'allmessages-filter-all' => 'Բոլորը',
'allmessages-language' => 'Լեզու',
# External editor support
'edit-externally' => 'Խմբագրել այս նիշքը արտաքին խմբագրիչով',
-'edit-externally-help' => '(Մանրամասնությունների համար տես [//www.mediawiki.org/wiki/Manual:External_editors տեղակայման հրահանգները])',
+'edit-externally-help' => '(Մանրամասնությունների համար տես [https://www.mediawiki.org/wiki/Manual:External_editors տեղակայման հրահանգները])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'բոլոր',
# Special:SpecialPages
'specialpages' => 'Սպասարկող էջեր',
-'specialpages-note' => '----
-* Հասարակ հատուկ էջեր։
+'specialpages-note' => '* Հասարակ հատուկ էջեր։
* <strong class="mw-specialpagerestricted">Սահմանափակված հատուկ էջեր։</strong>',
'specialpages-group-maintenance' => 'Տեխնիկական սպասարկման տեղեկատուներ',
'specialpages-group-other' => 'Այլ հատուկ էջեր',
* @author McDutchie
* @author Nemo bis
* @author Reedy
+ * @author Shirayuki
* @author Yfdyh000
* @author לערי ריינהארט
*/
'revdelete-hide-user' => 'Nomine de usator o adresse IP del modificator',
'revdelete-hide-restricted' => 'Supprimer le datos a administratores assi como a alteres',
'revdelete-radio-same' => '(non cambiar)',
-'revdelete-radio-set' => 'Visibile',
-'revdelete-radio-unset' => 'Celate',
+'revdelete-radio-set' => 'Celate',
+'revdelete-radio-unset' => 'Visibile',
'revdelete-suppress' => 'Supprimer le datos a administratores assi como a alteres',
'revdelete-unsuppress' => 'Eliminar restrictiones super versiones restaurate',
'revdelete-log' => 'Motivo:',
'mypreferences' => 'Preferentias',
'prefs-edits' => 'Numero de modificationes:',
'prefsnologin' => 'Tu non ha aperite un session',
-'prefsnologintext' => 'Tu debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aperir session]</span> pro configurar preferentias de usator.',
'changepassword' => 'Cambiar contrasigno',
'prefs-skin' => 'Apparentia',
'skin-preview' => 'Previsualisation',
'action-reupload' => 'superscriber iste file existente',
'action-reupload-shared' => 'supplantar iste file in un repositorio commun',
'action-upload_by_url' => 'incargar iste file ab un adresse URL',
-'action-writeapi' => 'usar le API de scriptura',
+'action-writeapi' => 'usar le API pro modificar le wiki',
'action-delete' => 'deler iste pagina',
'action-deleterevision' => 'deler iste version',
'action-deletedhistory' => 'vider le historia delite de iste pagina',
'allmessagesdefault' => 'Texto predefinite',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Isto es un lista de messages de systema disponibile in le spatio de nomines MediaWiki.
-Per favor visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] si tu desira contribuer al localisation general de MediaWiki.',
+Per favor visita [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] si tu desira contribuer al localisation general de MediaWiki.',
'allmessagesnotsupportedDB' => "Iste pagina non pote esser usate proque '''\$wgUseDatabaseMessages''' ha essite disactivate.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar per stato de personalisation:',
'svg-long-desc' => 'File SVG, dimensiones nominal: $1 × $2 pixels, grandor del file: $3',
'svg-long-desc-animated' => 'File SVG animate, dimensiones nominal: $1 × $2 pixels, grandor del file: $3',
'svg-long-error' => 'File SVG invalide: $1',
-'show-big-image' => 'Plen resolution',
+'show-big-image' => 'File original',
'show-big-image-preview' => ' Dimension de iste previsualisation: $1.',
'show-big-image-other' => 'Altere {{PLURAL:$2|resolution|resolutiones}}: $1.',
'show-big-image-size' => '$1 × $2 pixels',
# External editor support
'edit-externally' => 'Modificar iste file con un programma externe',
-'edit-externally-help' => '(Vide le [//www.mediawiki.org/wiki/Manual:External_editors instructiones de configuration] pro ulterior informationes)',
+'edit-externally-help' => '(Vide le [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de configuration] pro ulterior informationes)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'totes',
'version-hook-subscribedby' => 'Subscribite per',
'version-version' => '(Version $1)',
'version-license' => 'Licentia',
-'version-poweredby-credits' => "Iste wiki es actionate per '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Iste wiki es actionate per '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'alteres',
'version-poweredby-translators' => 'Traductores de translatewiki.net',
'version-credits-summary' => 'Nos vole recognoscer le sequente personas pro lor contribution a [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Paginas special',
-'specialpages-note' => '----
-* Paginas special normal.
+'specialpages-note' => '* Paginas special normal.
* <span class="mw-specialpagerestricted">Paginas special restringite.</span>
* <span class="mw-specialpagecached">Paginas special del cache (poterea esser obsolete).</span>',
'specialpages-group-maintenance' => 'Reportos de mantenentia',
'mypreferences' => 'Preferensi',
'prefs-edits' => 'Jumlah suntingan:',
'prefsnologin' => 'Belum masuk log',
-'prefsnologintext' => 'Anda harus <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuk log]</span> untuk mengeset preferensi Anda.',
'changepassword' => 'Ganti kata sandi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pratayang',
'allmessagesdefault' => 'Teks baku',
'allmessagescurrent' => 'Teks sekarang',
'allmessagestext' => 'Ini adalah daftar semua pesan sistem yang tersedia dalam ruang nama MediaWiki.
-Silakan kunjungi [//www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki] dan [//translatewiki.net translatewiki.net] jika Anda ingin berkontribusi untuk pelokalan generik MediaWiki.',
+Silakan kunjungi [https://www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki] dan [//translatewiki.net translatewiki.net] jika Anda ingin berkontribusi untuk pelokalan generik MediaWiki.',
'allmessagesnotsupportedDB' => "Halaman ini tidak dapat digunakan karena '''\$wgUseDatabaseMessages''' telah dimatikan.",
'allmessages-filter-legend' => 'Penyaring',
'allmessages-filter' => 'Saring dengan keadaan kustomisasi:',
# External editor support
'edit-externally' => 'Sunting berkas ini dengan aplikasi luar',
-'edit-externally-help' => '(Lihat [//www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuk informasi lebih lanjut)',
+'edit-externally-help' => '(Lihat [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuk informasi lebih lanjut)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'semua',
'version-version' => '(Versi $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Lisensi',
-'version-poweredby-credits' => "Wiki ini didukung oleh '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki ini didukung oleh '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'lainnya',
'version-poweredby-translators' => 'penerjemah translatewiki.net',
'version-credits-summary' => 'Kami ingin mengakui orang-orang berikut atas kontribusinya terhadap [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Halaman istimewa',
-'specialpages-note' => '----
-* Halaman istimewa normal.
+'specialpages-note' => '* Halaman istimewa normal.
* <span class="mw-specialpagerestricted">Halaman istimewa terlarang.</span>
* <span class="mw-specialpagecached">Halaman istimewa tersinggah (mungkin usang).</span>',
'specialpages-group-maintenance' => 'Laporan pemeliharaan',
# External editor support
'edit-externally' => 'Redacter ti file usant un aplication extern',
-'edit-externally-help' => '(Vider li [//www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu information)',
+'edit-externally-help' => '(Vider li [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu information)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'omni',
# External editor support
'edit-externally' => 'Rüo na élú usòrò nke na ngwa ọrụ nsónùsòrò nke ọzȯ',
-'edit-externally-help' => '(Lé nà [//www.mediawiki.org/wiki/Manual:External_editors nkụzí mbídó] màkà nkúzí ozor)',
+'edit-externally-help' => '(Lé nà [https://www.mediawiki.org/wiki/Manual:External_editors nkụzí mbídó] màkà nkúzí ozor)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'nke níle',
'mypreferences' => 'Kakaykayatan',
'prefs-edits' => 'Bilang dagiti inurnos:',
'prefsnologin' => 'Saan a nakastrek',
-'prefsnologintext' => 'Masapul a <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakastrekka]</span> tapno makapili kadagiti kakaykayatam.',
'changepassword' => 'Baliwan ti kontrasenias',
'prefs-skin' => 'Kudil',
'skin-preview' => 'Ipadas',
'allmessagesdefault' => 'Kasisigud a testo ti mensahe',
'allmessagescurrent' => 'Agdama a testo ti mensahe',
'allmessagestext' => 'Daytoy ti listaan dagiti mensahe ti sistema a magun-od idiay MediaWiki a nagan ti espasio.
-Pangngaasi a bisitaen ti [//www.mediawiki.org/wiki/Localisation Lokalisasion ti MediaWiki] ken [//translatewiki.net translatewiki.net] no kayatmo ti agparawad kadagiti sapasap a panagipatarus ti MediaWiki.',
+Pangngaasi a bisitaen ti [https://www.mediawiki.org/wiki/Localisation Lokalisasion ti MediaWiki] ken [//translatewiki.net translatewiki.net] no kayatmo ti agparawad kadagiti sapasap a panagipatarus ti MediaWiki.',
'allmessagesnotsupportedDB' => "Saan a mausar daytoy a panid ngamin ket ti '''\$wgUseDatabaseMessages''' ket nabaldado.",
'allmessages-filter-legend' => 'Sagat',
'allmessages-filter' => 'Sagaten babaen ti naipaduma a kasasaad:',
# External editor support
'edit-externally' => 'Baliwan daytoy a papeles babaen ti akinruar nga aplikasion',
-'edit-externally-help' => '(Kitaen ti [//www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay a pakaammo).',
+'edit-externally-help' => '(Kitaen ti [https://www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay a pakaammo).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'amin',
'version-hook-subscribedby' => 'Umanamong babaen ti',
'version-version' => '(Bersion $1)',
'version-license' => 'Lisensia',
-'version-poweredby-credits' => "Daytoy a wiki ket pinaandar ti '''[//www.mediawiki.org/ MediaWiki]''', karbengan a kopia © 2001-$1 $2.",
+'version-poweredby-credits' => "Daytoy a wiki ket pinaandar ti '''[https://www.mediawiki.org/ MediaWiki]''', karbengan a kopia © 2001-$1 $2.",
'version-poweredby-others' => 'dadduma pay',
'version-poweredby-translators' => 'agipatpatarus ti translatewiki.net',
'version-credits-summary' => 'Kayatmi koma a pammadayawan dagiti sumaganad a tao para kadagiti inparawadda iti [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Espesial a pampanid',
-'specialpages-note' => '----
-* Kadawyan nga espesial a pampanid.
+'specialpages-note' => '* Kadawyan nga espesial a pampanid.
* <span class="mw-specialpagerestricted">Nagawidan nga espesial a pampanid.</span>',
'specialpages-group-maintenance' => 'Dagiti padamag ti panagtaripato',
'specialpages-group-other' => 'Sabsabali pay nga espesial a pampanid',
# External editor support
'edit-externally' => 'Йола болхоагIувца паьла гIалатах мукъаяьккха',
-'edit-externally-help' => '(ма даррачунга хьажа [//www.mediawiki.org/wiki/Manual:External_editors хьаоттама кулгалхо])',
+'edit-externally-help' => '(ма даррачунга хьажа [https://www.mediawiki.org/wiki/Manual:External_editors хьаоттама кулгалхо])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'деррига',
'mypreferences' => 'Preferaji',
'prefs-edits' => 'Nombro di redaktaji:',
'prefsnologin' => 'Vu ne eniris',
-'prefsnologintext' => 'Vu mustas <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} enirir]</span> por establisar la preferaji.',
'changepassword' => 'Chanjar pasovorto',
'prefs-skin' => 'Pelo',
'skin-preview' => 'Pre-videz',
'allmessages' => 'Omna sistemo-mesaji',
'allmessagesname' => 'Nomo',
'allmessagestext' => 'Ico esas listo di omna sistemo-mesaji disponebla en la MediaWiki nomaro.
-Voluntez vizitar [//www.mediawiki.org/wiki/Localisation MediaWiki Lokizado] e [//translatewiki.net translatewiki.net] se vu volus kontributar ad generala MediaWiki lokizado.',
+Voluntez vizitar [https://www.mediawiki.org/wiki/Localisation MediaWiki Lokizado] e [//translatewiki.net translatewiki.net] se vu volus kontributar ad generala MediaWiki lokizado.',
'allmessages-language' => 'Linguo:',
# Thumbnails
'mypreferences' => 'Mínar stillingar',
'prefs-edits' => 'Fjöldi breytinga:',
'prefsnologin' => 'Ekki innskráður',
-'prefsnologintext' => 'Þú verður að vera <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} skráð(ur) inn]</span> til að breyta notandastillingum.',
'changepassword' => 'Breyta lykilorði',
'prefs-skin' => 'Þema',
'skin-preview' => 'Forskoða',
'allmessagesdefault' => 'Sjálfgefinn skilaboða texti',
'allmessagescurrent' => 'Núverandi texti',
'allmessagestext' => 'Þetta er listi yfir kerfismeldingar í Melding-nafnrýminu.
-Vinsamlegast heimsæktu [//www.mediawiki.org/wiki/Localisation MediaWiki-staðfæringuna] og [//translatewiki.net translatewiki.net] ef þú vilt taka þátt í almennri MediaWiki-staðfæringu.',
+Vinsamlegast heimsæktu [https://www.mediawiki.org/wiki/Localisation MediaWiki-staðfæringuna] og [//translatewiki.net translatewiki.net] ef þú vilt taka þátt í almennri MediaWiki-staðfæringu.',
'allmessagesnotsupportedDB' => "Það er ekki hægt að nota '''{{ns:special}}:Allmessages''' því '''\$wgUseDatabaseMessages''' hefur verið gerð óvirk.",
'allmessages-filter-legend' => 'Sía',
'allmessages-filter' => 'Sía með breytingarstöðu:',
# External editor support
'edit-externally' => 'Breyta þessari skrá með utanaðkomandi hugbúnaði',
-'edit-externally-help' => '(Sjá [//www.mediawiki.org/wiki/Manual:External_editors leiðbeiningar] fyrir meiri upplýsingar)',
+'edit-externally-help' => '(Sjá [https://www.mediawiki.org/wiki/Manual:External_editors leiðbeiningar] fyrir meiri upplýsingar)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'allt',
'version-hook-subscribedby' => 'Í áskrift af',
'version-version' => '(Útgáfa $1)',
'version-license' => 'Leyfi',
-'version-poweredby-credits' => "Þessi wiki er knúin af '''[//www.mediawiki.org/ MediaWiki]''', höfundaréttur © 2001-$1 $2.",
+'version-poweredby-credits' => "Þessi wiki er knúin af '''[https://www.mediawiki.org/ MediaWiki]''', höfundaréttur © 2001-$1 $2.",
'version-poweredby-others' => 'aðrir',
'version-license-info' => 'MediaWiki er frjáls hugbúnaður; þú mátt endurútgefa hann og/eða breyta honum undir GNU General Public leyfi eins og það er gefið út af Free Software stofnuninni, annaðhvort útgáfu 2 eða (að þínu mati) hvaða nýrri útgáfa sem er.
# Special:SpecialPages
'specialpages' => 'Kerfissíður',
-'specialpages-note' => '----
-* Venjulegar kerfisíður.
+'specialpages-note' => '* Venjulegar kerfisíður.
* <span class="mw-specialpagerestricted">Kerfisíður með takmörkuðum aðgangi.</span>',
'specialpages-group-maintenance' => 'Viðhaldsskýrslur',
'specialpages-group-other' => 'Aðrar kerfissíður',
'invalidtitle-knownnamespace' => 'Titolo non valido con namespace "$2" e testo "$3"',
'invalidtitle-unknownnamespace' => 'Titolo non valido con namespace sconosciuto "$1" e testo "$2"',
'exception-nologin' => 'Accesso non effettuato',
-'exception-nologin-text' => "Questa pagina o azione richiede che tu abbia effettuato l'accesso su questa wiki.",
+'exception-nologin-text' => "Si prega di [[Special:Userlogin|eseguire l'accesso]] per poter accedere a questa pagina o azione.",
+'exception-nologin-text-manual' => 'Si prega di $1 per poter accedere a questa pagina o azione.',
# Virus scanner
'virus-badscanner' => "Errore di configurazione: antivirus sconosciuto: ''$1''",
'mypreferences' => 'preferenze',
'prefs-edits' => 'Modifiche effettuate:',
'prefsnologin' => 'Accesso non effettuato',
-'prefsnologintext' => 'Per poter personalizzare le preferenze è necessario effettuare l\'<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} accesso]</span>.',
+'prefsnologintext2' => "Si prega di $1 per impostare le preferenze dell'utente.",
'changepassword' => 'Cambia password',
'prefs-skin' => 'Aspetto grafico (skin)',
'skin-preview' => 'Anteprima',
via posta elettronica: $PAGEEDITOR_EMAIL
sul sito: $PAGEEDITOR_WIKI
-Non verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.
+Non verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina dopo aver effettuato l\'accesso. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.
- Il sistema di notifica di {{SITENAME}}, al tuo servizio
+Il sistema di notifica di {{SITENAME}}, al tuo servizio
--
Per modificare le impostazioni delle notifiche via posta elettronica, visita
'allmessagesdefault' => 'Testo predefinito',
'allmessagescurrent' => 'Testo attuale',
'allmessagestext' => 'Questa è la lista di tutti i messaggi di sistema disponibili nel namespace MediaWiki.
-Visitare [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se si desidera contribuire alla localizzazione generica di MediaWiki.',
+Visitare [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se si desidera contribuire alla localizzazione generica di MediaWiki.',
'allmessagesnotsupportedDB' => "Non è possibile utilizzare questa pagina perché il flag '''\$wgUseDatabaseMessages''' non è attivo.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtra per stato di modifica:',
'svg-long-desc' => 'file in formato SVG, dimensioni nominali $1 × $2 pixel, dimensione del file: $3',
'svg-long-desc-animated' => 'file in formato SVG animato, dimensioni nominali $1 × $2 pixel, dimensione del file: $3',
'svg-long-error' => 'File SVG non valido: $1',
-'show-big-image' => 'Versione ad alta risoluzione',
+'show-big-image' => 'File originale',
'show-big-image-preview' => 'Dimensioni di questa anteprima: $1.',
'show-big-image-other' => '{{PLURAL:$2|Altra risoluzione|Altre risoluzioni}}: $1.',
'show-big-image-size' => '$1 × $2 pixel',
# External editor support
'edit-externally' => 'Modifica questo file usando un programma esterno',
-'edit-externally-help' => '(Per maggiori informazioni consultare le [//www.mediawiki.org/wiki/Manual:External_editors istruzioni])',
+'edit-externally-help' => '(Per maggiori informazioni consultare le [https://www.mediawiki.org/wiki/Manual:External_editors istruzioni])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tutte',
'version-hook-subscribedby' => 'Sottoscrizioni',
'version-version' => '(Versione $1)',
'version-license' => 'Licenza',
-'version-poweredby-credits' => "Questo wiki è realizzato con '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Questo wiki è realizzato con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'altri',
'version-poweredby-translators' => 'traduttori di translatewiki.net',
'version-credits-summary' => 'Siamo lieti di riconoscere le seguenti persone per aver contribuito a [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Pagine speciali',
-'specialpages-note' => '----
-* Pagine speciali non riservate.
-* <span class="mw-specialpagerestricted">Pagine speciali riservate ad alcune categorie di utenti.</span>
-* <span class="mw-specialpagecached">Pagine speciali disponibili in versione cache (potrebbero essere obsolete).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Pagine speciali non riservate.
+* <span class="mw-specialpagerestricted">Pagine speciali riservate ad alcune categorie di utenti.</span>',
'specialpages-group-maintenance' => 'Resoconti di manutenzione',
'specialpages-group-other' => 'Altre pagine speciali',
'specialpages-group-login' => 'Accesso / creazione utenze',
'invalidtitle-knownnamespace' => '名前空間名「$2」と名前「$3」の組み合わせはページ名として無効です',
'invalidtitle-unknownnamespace' => '不明な名前空間番号 $1 と名前「$2」の組み合わせはページ名として無効です',
'exception-nologin' => 'ログインしていません',
-'exception-nologin-text' => 'このページまたは操作には、このウィキへのログインが必要です。',
+'exception-nologin-text' => 'このページまたは操作にアクセスできるようにするには[[Special:Userlogin|ログイン]]してください。',
+'exception-nologin-text-manual' => 'このページまたは操作にアクセスできるようにするには$1してください。',
# Virus scanner
'virus-badscanner' => "環境設定が不適合です: 不明なウイルス対策ソフトウェア: ''$1''",
ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
'welcomeuser' => 'ようこそ、$1さん!',
'welcomecreation-msg' => 'アカウントが作成されました。
-[[Special:Preferences|{{SITENAME}}の個人設定]]の変更も忘れないようにしてください。',
+お好みで[[Special:Preferences|{{SITENAME}}の個人設定]]を変更できます。',
'yourname' => '利用者名:',
'userlogin-yourname' => '利用者名',
'userlogin-yourname-ph' => '利用者名を入力',
'mypreferences' => '個人設定',
'prefs-edits' => '編集回数:',
'prefsnologin' => 'ログインしていません',
-'prefsnologintext' => '個人設定を変更するためには<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ログイン]</span>する必要があります。',
+'prefsnologintext2' => '個人設定を変更するには$1してください。',
'changepassword' => 'パスワードの変更',
'prefs-skin' => '外装',
'skin-preview' => 'プレビュー',
メール: $PAGEEDITOR_EMAIL
ウィキ: $PAGEEDITOR_WIKI
-このページを訪れない限り、これ以上の活動に対する通知は送信されません。ウォッチリスト内のすべてのページについて、通知を再設定することもできます。
+ã\83ã\82°ã\82¤ã\83³ã\81\97ã\81\9fç\8a¶æ\85\8bã\81§ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92訪ã\82\8cã\81ªã\81\84é\99\90ã\82\8aã\80\81ã\81\93ã\82\8c以ä¸\8aã\81®æ´»å\8b\95ã\81«å¯¾ã\81\99ã\82\8bé\80\9aç\9f¥ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¾ã\81\9bã\82\93ã\80\82ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88å\86\85ã\81®ã\81\99ã\81¹ã\81¦ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¤ã\81\84ã\81¦ã\80\81é\80\9aç\9f¥ã\82\92å\86\8dè¨å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\82\82ã\81§ã\81\8dã\81¾ã\81\99ã\80\82
- {{SITENAME}}通知システム
+{{SITENAME}}通知システム
--
メール通知の設定は、以下のページで変更してください:
'allmessagesdefault' => '既定のメッセージ文',
'allmessagescurrent' => '現在のメッセージ文',
'allmessagestext' => 'これは MediaWiki 名前空間で利用できるシステム メッセージの一覧です。
-MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、[//www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ]や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
+MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、[https://www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ]や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''が無効のため、このページを使用できません。",
'allmessages-filter-legend' => '絞り込み',
'allmessages-filter' => '変更状態により絞り込む:',
'svg-long-desc' => 'SVG ファイル、$1 × $2 ピクセル、ファイルサイズ: $3',
'svg-long-desc-animated' => 'アニメーション SVG ファイル、$1 × $2 ピクセル、ファイルサイズ: $3',
'svg-long-error' => '無効な SVG ファイル: $1',
-'show-big-image' => '高解像度での画像',
+'show-big-image' => '元のファイル',
'show-big-image-preview' => 'このプレビューのサイズ: $1。',
'show-big-image-other' => 'その他の{{PLURAL:$2|解像度}}: $1。',
'show-big-image-size' => '$1 × $2 ピクセル',
# External editor support
'edit-externally' => '外部アプリケーションを使用してこのファイルを編集',
-'edit-externally-help' => '(詳しくは[//www.mediawiki.org/wiki/Manual:External_editors 設定手順]をご覧ください)',
+'edit-externally-help' => '(詳しくは[https://www.mediawiki.org/wiki/Manual:External_editors 設定手順]をご覧ください)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'すべて',
'version-hook-subscribedby' => '使用個所',
'version-version' => '(バージョン $1)',
'version-license' => 'ライセンス',
-'version-poweredby-credits' => "このウィキは、'''[//www.mediawiki.org/ MediaWiki]''' (copyright © 2001-$1 $2) で動作しています。",
+'version-poweredby-credits' => "このウィキは、'''[https://www.mediawiki.org/ MediaWiki]''' (copyright © 2001-$1 $2) で動作しています。",
'version-poweredby-others' => 'その他',
'version-poweredby-translators' => 'translatewiki.net の翻訳者たち',
'version-credits-summary' => '[[Special:Version|MediaWiki]] に貢献した以下の人たちに感謝します。',
# Special:SpecialPages
'specialpages' => '特別ページ',
-'specialpages-note' => '----
-* 通常の特別ページ
+'specialpages-note-top' => '凡例',
+'specialpages-note' => '* 通常の特別ページ
* <span class="mw-specialpagerestricted">制限されている特別ページ</span>',
'specialpages-group-maintenance' => 'メンテナンス報告',
'specialpages-group-other' => 'その他の特別ページ',
# External editor support
'edit-externally' => 'Yuuz extoernal aplikieshan fi edit dis fail',
-'edit-externally-help' => '(Si di [//www.mediawiki.org/wiki/Manual:External_editors setop inschrokshan] fi muo infamieshan)',
+'edit-externally-help' => '(Si di [https://www.mediawiki.org/wiki/Manual:External_editors setop inschrokshan] fi muo infamieshan)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aal',
'mypreferences' => 'Préferènsi',
'prefs-edits' => 'Gunggungé suntingan:',
'prefsnologin' => 'Durung mlebu log',
-'prefsnologintext' => 'Panjenengan kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}| mlebu log]</span> kanggo ngowahin préferènsi njenengan.',
'changepassword' => 'Ganti tembung sandi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pratilik',
'allmessagesdefault' => 'Tèks baku',
'allmessagescurrent' => 'Tèks saiki',
'allmessagestext' => 'Iki dhaptar kabèh pesen saka sistem sing ana ing bilik jeneng MediaWiki.
-Mangga pirsani [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] lan [//translatewiki.net translatewiki.net] yèn panjenengan arep kontribusi ing lokalisasi generik MediaWiki.',
+Mangga pirsani [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] lan [//translatewiki.net translatewiki.net] yèn panjenengan arep kontribusi ing lokalisasi generik MediaWiki.',
'allmessagesnotsupportedDB' => "Kaca iki ora bisa dienggo amerga '''\$wgUseDatabaseMessages''' dipatèni.",
'allmessages-filter-legend' => 'Penyaring',
'allmessages-filter' => 'Saring nganggo kahanan kustomisasi:',
# External editor support
'edit-externally' => 'Sunting berkas iki mawa aplikasi jaba',
-'edit-externally-help' => '(Deleng [//www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
+'edit-externally-help' => '(Deleng [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kabèh',
'version-hook-subscribedby' => 'Dilanggani déning',
'version-version' => '(Vèrsi $1)',
'version-license' => 'Lisènsi',
-'version-poweredby-credits' => "Wiki iki disengkuyung déning '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki iki disengkuyung déning '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'liyané',
'version-credits-summary' => 'Kami ingin mengakui orang-orang berikut atas kontribusinya terhadap [[Special:Version|MediaWiki]].',
'version-license-info' => 'MediaWiki adalah perangkat lunak bebas; Anda diperbolehkan untuk mendistribusikan dan/atau memodfikasinya dengan persyaratan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; versi 2 atau terbaru.
# Special:SpecialPages
'specialpages' => 'Kaca istiméwa',
-'specialpages-note' => '----
-* Kaca astamiwa biasa.
+'specialpages-note' => '* Kaca astamiwa biasa.
* <span class="mw-specialpagerestricted">Kaca astamiwa kawatesan.</span>',
'specialpages-group-maintenance' => 'Lapuran pangopènan',
'specialpages-group-other' => 'Kaca-kaca astaméwa liyané',
'mypreferences' => 'კონფიგურაცია',
'prefs-edits' => 'რედაქციების რაოდენობა:',
'prefsnologin' => 'შესული არ ხართ',
-'prefsnologintext' => 'თქვენ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} რეგისტრირებული უნდა იყოთ]</span> მომხმარებლის კონფიგურაციის შესაცვლელად.',
'changepassword' => 'პაროლის შეცვლა',
'prefs-skin' => 'გარეკანი',
'skin-preview' => 'წინასწარი გადახედვა',
'allmessagesdefault' => 'სტანდარტული ტექსტი',
'allmessagescurrent' => 'მიმდინარე ტექსტი',
'allmessagestext' => 'ეს არის სისემურ შეტყობინებათა სია «MediaWiki» სახელთა სივრცეში.
-გთხოვთ ეწვიოთ [//www.mediawiki.org/wiki/Localisation ლოკალიზაციის აღმწერ] გვერდს [//translatewiki.net translatewiki.net] პროექტს, თუ გსურთ MediaWiki ლოკალიზაციაში წვლილის შეტანა.',
+გთხოვთ ეწვიოთ [https://www.mediawiki.org/wiki/Localisation ლოკალიზაციის აღმწერ] გვერდს [//translatewiki.net translatewiki.net] პროექტს, თუ გსურთ MediaWiki ლოკალიზაციაში წვლილის შეტანა.',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages-ის უზრუნველყოფა არ ხდება, ვინაიდან wgUseDatabaseMessages გამორთულია.',
'allmessages-filter-legend' => 'ფილტრი',
'allmessages-filter' => 'ფილტრი ცვლილებების სტატუსით:',
# External editor support
'edit-externally' => 'ამ ფაილის რედაქტირებისას გამოიყენეთ გარე პროგრამა',
-'edit-externally-help' => '(დაწვრილებითი ინფორმაციისთვის იხილეთ [//www.mediawiki.org/wiki/Manual:External_editors ჩადგმის ინსტრუქციები])',
+'edit-externally-help' => '(დაწვრილებითი ინფორმაციისთვის იხილეთ [https://www.mediawiki.org/wiki/Manual:External_editors ჩადგმის ინსტრუქციები])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ყველა',
'version-version' => '(ვერსია $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'ლიცენზია',
-'version-poweredby-credits' => "ეს ვიკი მუშაობს '''[//www.mediawiki.org/ MediaWiki]'''-ს ძრავზე, copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "ეს ვიკი მუშაობს '''[https://www.mediawiki.org/ MediaWiki]'''-ს ძრავზე, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'სხვები',
'version-poweredby-translators' => 'translatewiki.net-ის მთარგმნელები',
'version-credits-summary' => 'გვინდა მადლობა გადავუხადოთ შემდეგ მომხმარებლებს მათი წვლილისათვის [[Special:Version|მედიავიკის]] განვითარებაში.',
# Special:SpecialPages
'specialpages' => 'სპეციალური გვერდები',
-'specialpages-note' => '----
-* ჩვეულებრივი სპეცგვერდები.
+'specialpages-note' => '* ჩვეულებრივი სპეცგვერდები.
* <span class="mw-specialpagerestricted">სპეცგვერდები შეზღუდული მისაწვდომობით.</span>',
'specialpages-group-maintenance' => 'ტექნიკური მომსახურების ანგარიშები',
'specialpages-group-other' => 'სხვა სპეციალური გვერდები',
'mypreferences' => "Menin' sazlawlarım",
'prefs-edits' => "O'zgertiwler sanı:",
'prefsnologin' => 'Kirilmegen',
-'prefsnologintext' => 'Sazlawların\'ızdı ornatıw ushın <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kiriwin\'iz]</span> sha\'rt.',
'changepassword' => "Paroldi o'zgertiw",
'prefs-skin' => "Sırtqı ko'rinis",
'skin-preview' => 'Korip al',
'allmessagesdefault' => 'Defolt tekst',
'allmessagescurrent' => "Ha'zirgi tekst",
'allmessagestext' => "Bul {{ns:mediawiki}} isimler ko'pligindegi bar bolg'an sistema xabarları dizimi.
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.",
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.",
# Thumbnails
'thumbnail-more' => "U'lkeytiw",
# External editor support
'edit-externally' => "Bul fayldı sırtqı bag'darlama arqalı o'zgertiw",
-'edit-externally-help' => "(Ko'birek mag'lıwmat ushın [//www.mediawiki.org/wiki/Manual:External_editors ornatıw jolların] qaran')",
+'edit-externally-help' => "(Ko'birek mag'lıwmat ushın [https://www.mediawiki.org/wiki/Manual:External_editors ornatıw jolların] qaran')",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => "ha'mmesin",
'mypreferences' => 'Isemyifiyen inu',
'prefs-edits' => 'Amḍan n ibeddlilen :',
'prefsnologin' => 'Ur tekcimeḍ ara',
-'prefsnologintext' => 'Ilaq ad iliḍ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qqeneḍ]</span> iwakken ad beddeleḍ iɣewwaren ik/im n useqdac.',
'changepassword' => 'Beddel awal n tbaḍnit',
'prefs-skin' => 'Aglim',
'skin-preview' => 'Pre-timeẓriwt',
'allmessagesdefault' => 'Aḍris ameslugen',
'allmessagescurrent' => 'Aḍris n tura',
'allmessagestext' => 'Wagi d-umuɣ n inzan yestufan deg tallunt MediaWiki.
-Ẓeṛ [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dɣa [//translatewiki.net translatewiki.net] ma tebɣiḍ ad ɛiweneḍ i usideg imcettel n MediaWiki.',
+Ẓeṛ [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dɣa [//translatewiki.net translatewiki.net] ma tebɣiḍ ad ɛiweneḍ i usideg imcettel n MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ut yezmir ara ad yettuseqdac axaṭer '''\$wgUseDatabaseMessages''' yettwakkes.",
'allmessages-filter-legend' => 'Tastayt',
'allmessages-filter-unmodified' => 'Ur yebeqqeḍ ara',
# External editor support
'edit-externally' => 'Beddel afaylu-yagi s usnas aberrani.',
-'edit-externally-help' => 'Ẓer [//www.mediawiki.org/wiki/Manual:External_editors taknut] iwakken ad tessneḍ kter.',
+'edit-externally-help' => 'Ẓer [https://www.mediawiki.org/wiki/Manual:External_editors taknut] iwakken ad tessneḍ kter.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'akk',
'mypreferences' => 'Си зэгъэзэхуэгъуэхэр',
'prefs-edits' => 'Гъэтэрэзыгъуэхэм я бжыгъэр:',
'prefsnologin' => 'Системэм зыкъебгъэцӀыхуакъым',
-'prefsnologintext' => 'ЦӀыхухэтым и зэгъэзэхуэгъуэхэм уелэжьын щхьэкӀэ системэм <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} зыкъебгъэцӀыхун хуэй]</span>',
'prefs-skin' => 'ЗэфӀэгъувэным и теухуапхъэ',
'prefs-datetime' => 'Махуэмрэ зэманымрэ',
'prefs-personal' => 'Ныбжыгъуэ къэӀохугъуэ',
# External editor support
'edit-externally' => 'Файлыр гъэтэрэзын, нэгъуэщӀ программэ и сэбэпкӀэ',
-'edit-externally-help' => '(нэхъыбу еплъ [//www.mediawiki.org/wiki/Manual:External_editors илъхьэным и тепсэлъыхьыгъуэ])',
+'edit-externally-help' => '(нэхъыбу еплъ [https://www.mediawiki.org/wiki/Manual:External_editors илъхьэным и тепсэлъыхьыгъуэ])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'псори',
# External editor support
'edit-externally' => 'ھیہ مسلو ایڈیٹ کورے',
-'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)
-(مزید معلوماتو بچے ھیہ لنکہ بوغے [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] )',
+'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)
+(مزید معلوماتو بچے ھیہ لنکہ بوغے [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] )',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'سف',
'mypreferences' => 'Tercihê mı',
'prefs-edits' => 'Numra vurnaisun:',
'prefsnologin' => 'Cı nêkota',
-'prefsnologintext' => 'Sıma gunê <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cı kuyê]</span> ke dıma tercihunê karberi bınusnê.',
'changepassword' => 'Parola bıvurne',
'prefs-skin' => 'Çerme',
'skin-preview' => 'Verqayt',
# External editor support
'edit-externally' => 'Na dosya be mırecaetê de teberi bıvurne',
-'edit-externally-help' => '(Serba daêna melumati qaytê pelga [//www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
+'edit-externally-help' => '(Serba daêna melumati qaytê pelga [https://www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'pêro',
# Special:SpecialPages
'specialpages' => 'Pelê xaşi',
-'specialpages-note' => '----
-* Pelê xususiyê normali.
+'specialpages-note' => '* Pelê xususiyê normali.
* <span class="mw-specialpagerestricted">Pelê xususiyê mehcuri.</span>',
'specialpages-group-maintenance' => 'Tebliğê baxımi',
'specialpages-group-other' => 'Pelê xususiyê bini',
'mypreferences' => 'باپتالىمدارىم',
'prefs-edits' => 'وڭدەمە سانى:',
'prefsnologin' => 'كىرمەگەنسىز',
-'prefsnologintext' => 'باپتاۋىڭىزدى قويۋ ٴۇشىن [[Special:UserLogin|كىرۋىڭىز]] ٴتىيىستى.',
'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
'prefs-skin' => 'مانەرلەر',
'skin-preview' => 'قاراپ شىعۋ',
'allmessagesdefault' => 'ادەپكى ٴماتىنى',
'allmessagescurrent' => 'اعىمدىق ٴماتىنى',
'allmessagestext' => 'مىندا {{ns:mediawiki}} ەسىم اياسىندا جەتىمدى جۇيە حابار ٴتىزىمى بەرىلەدى.
-ەگەر امبەباپ MediaWiki جەرسىندىرۋگە ۇلەس قوسقىڭىز كەلسە [//www.mediawiki.org/wiki/Localisation MediaWiki جەرسىندىرۋ بەتىنە] جانە [//translatewiki.net translatewiki.net جوباسىنا] بارىپ شىعىڭىز.',
+ەگەر امبەباپ MediaWiki جەرسىندىرۋگە ۇلەس قوسقىڭىز كەلسە [https://www.mediawiki.org/wiki/Localisation MediaWiki جەرسىندىرۋ بەتىنە] جانە [//translatewiki.net translatewiki.net جوباسىنا] بارىپ شىعىڭىز.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' وشىرىلگەن سەبەبىنەن '''{{ns:special}}:AllMessages''' بەتى قولدانىلمايدى.",
# Thumbnails
# External editor support
'edit-externally' => 'بۇل فايلدى شەتتىك قوندىرما ارقىلى وڭدەۋ',
-'edit-externally-help' => 'كوبىرەك اقپارات ٴۇشىن [//www.mediawiki.org/wiki/Manual:External_editors ورناتۋ نۇسقامالارىن] قاراڭىز.',
+'edit-externally-help' => 'كوبىرەك اقپارات ٴۇشىن [https://www.mediawiki.org/wiki/Manual:External_editors ورناتۋ نۇسقامالارىن] قاراڭىز.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'بارلىق',
# Special:SpecialPages
'specialpages' => 'ارنايى بەتتەر',
-'specialpages-note' => '----
-* كادىمگى ارنايى بەتتەر.
+'specialpages-note' => '* كادىمگى ارنايى بەتتەر.
* <strong class="mw-specialpagerestricted">شەكتەلگەن ارنايى بەتتەر.</strong>',
'specialpages-group-maintenance' => 'باپتاۋ باياناتتارى',
'specialpages-group-other' => 'تاعى باسقا ارنايى بەتتەر',
'mypreferences' => 'Баптаулар',
'prefs-edits' => 'Өңдеме саны:',
'prefsnologin' => 'Кірмегенсіз',
-'prefsnologintext' => 'Қатысушы бапталымдарыңызды жөндеу үшін <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} кіруіңіз]</span> жөн.',
'changepassword' => 'Құпия сөзді өзгерту',
'prefs-skin' => 'Мәнерлер',
'skin-preview' => 'Қарап шығу',
'allmessagesdefault' => 'Әдепкі мәтіні',
'allmessagescurrent' => 'Ағымдық мәтіні',
'allmessagestext' => 'Мында {{ns:mediawiki}} есім аясында жетімді жүйе хабар тізімі беріледі.
-Егер әмбебап MediaWiki жерсіндіруге үлес қосқыңыз келсе [//www.mediawiki.org/wiki/Localisation MediaWiki жерсіндіру бетіне] және [//translatewiki.net translatewiki.net жобасына] барып шығыңыз.',
+Егер әмбебап MediaWiki жерсіндіруге үлес қосқыңыз келсе [https://www.mediawiki.org/wiki/Localisation MediaWiki жерсіндіру бетіне] және [//translatewiki.net translatewiki.net жобасына] барып шығыңыз.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' өшірілген себебінен '''{{#special:AllMessages}}''' беті қолданылмайды.",
'allmessages-filter-legend' => 'Сүзгі',
'allmessages-filter-unmodified' => 'Өзгертілмегендер',
# External editor support
'edit-externally' => 'Бұл файлды шеттік қондырма арқылы өңдеу',
-'edit-externally-help' => '(көбірек ақпарат үшін [//www.mediawiki.org/wiki/Manual:External_editors орнату нұсқауларын] қараңыз)',
+'edit-externally-help' => '(көбірек ақпарат үшін [https://www.mediawiki.org/wiki/Manual:External_editors орнату нұсқауларын] қараңыз)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'барлық',
# Special:SpecialPages
'specialpages' => 'Арнайы беттер',
-'specialpages-note' => '----
-* Кәдімгі арнайы беттер.
+'specialpages-note' => '* Кәдімгі арнайы беттер.
* <span class=="mw-specialpagerestricted">Шектелген арнайы беттер.</span>',
'specialpages-group-maintenance' => 'Техникалық талқылау есептері',
'specialpages-group-other' => 'Тағы басқа арнайы беттер',
'mypreferences' => 'Baptalımdarım',
'prefs-edits' => 'Öñdeme sanı:',
'prefsnologin' => 'Kirmegensiz',
-'prefsnologintext' => 'Baptawıñızdı qoyw üşin [[Special:UserLogin|kirwiñiz]] tïisti.',
'changepassword' => 'Qupïya sözdi özgertw',
'prefs-skin' => 'Mänerler',
'skin-preview' => 'Qarap şığw',
'allmessagesdefault' => 'Ädepki mätini',
'allmessagescurrent' => 'Ağımdıq mätini',
'allmessagestext' => 'Mında {{ns:mediawiki}} esim ayasında jetimdi jüýe xabar tizimi beriledi.
-Eger ämbebap MediaWiki jersindirwge üles qosqıñız kelse [//www.mediawiki.org/wiki/Localisation MediaWiki jersindirw betine] jäne [//translatewiki.net translatewiki.net jobasına] barıp şığıñız.',
+Eger ämbebap MediaWiki jersindirwge üles qosqıñız kelse [https://www.mediawiki.org/wiki/Localisation MediaWiki jersindirw betine] jäne [//translatewiki.net translatewiki.net jobasına] barıp şığıñız.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' öşirilgen sebebinen '''{{ns:special}}:AllMessages''' beti qoldanılmaýdı.",
# Thumbnails
# External editor support
'edit-externally' => 'Bul faýldı şettik qondırma arqılı öñdew',
-'edit-externally-help' => 'Köbirek aqparat üşin [//www.mediawiki.org/wiki/Manual:External_editors ornatw nusqamaların] qarañız.',
+'edit-externally-help' => 'Köbirek aqparat üşin [https://www.mediawiki.org/wiki/Manual:External_editors ornatw nusqamaların] qarañız.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'barlıq',
# Special:SpecialPages
'specialpages' => 'Arnaýı better',
-'specialpages-note' => '----
-* Kädimgi arnaýı better.
+'specialpages-note' => '* Kädimgi arnaýı better.
* <strong class="mw-specialpagerestricted">Şektelgen arnaýı better.</strong>',
'specialpages-group-maintenance' => 'Baptaw bayanattarı',
'specialpages-group-other' => 'Tağı basqa arnaýı better',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'អំពី{{SITENAME}}',
'aboutpage' => 'Project:អំពី',
-'copyright' => 'á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\99á\9f\89á\9e¶á\9e\84á\9e\8aá\9f\84á\9e\99$1។',
+'copyright' => 'á\9e\81á\9f\92á\9e\9bá\9e¹á\9e\98á\9e\9fá\9e¶á\9e\9aá\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\94á\9e¶á\9e\93á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9e\8eá\9f\92á\9e\8c$1 á\9e\9bá\9e¾á\9e\80á\9e\9bá\9f\82á\9e\84á\9e\8fá\9f\82á\9e\98á\9e¶á\9e\93á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\96á\9e¸á\9e\93á\9f\84á\9f\87។',
'copyrightpage' => '{{ns:project}}:រក្សាសិទ្ធិ',
'currentevents' => 'ព្រឹត្តិការណ៍ថ្មីៗ',
'currentevents-url' => 'Project:ព្រឹត្តិការណ៍ថ្មីៗ',
'invalidtitle-knownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះ "$2" និងអត្ថបទ "$3"',
'invalidtitle-unknownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះមិនស្គាល់លេខ $1 និងអត្ថបទ "$2"',
'exception-nologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'exception-nologin-text' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¬á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\93á\9f\81á\9f\87á\9e\8fá\9e\98á\9f\92á\9e\9aá\9e¼á\9e\9cá\9e¢á\9f\84á\9e\99á\9e¢á\9f\92á\9e\93á\9e\80á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\91á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9cá\9e·á\9e\82á\9e¸នេះ។',
+'exception-nologin-text' => 'á\9e\9fá\9e¼á\9e\98[[Special:Userlogin|lá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9b]]á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\85á\9e¼á\9e\9bá\9e¢á\9e¶á\9e\93á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¬á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96នេះ។',
# Virus scanner
'virus-badscanner' => "ការកំណត់រចនាសម្ព័ន្ធមិនល្អ៖ កម្មវិធីស្កេនមេរោគមិនស្គាល់៖ ''$1''",
'gotaccount' => "បើលោកអ្នកមានគណនីសម្រាប់ប្រើហើយ សូម'''$1'''។",
'gotaccountlink' => 'កត់ឈ្មោះចូល',
'userlogin-resetlink' => 'តើអ្នកភ្លេចព័ត៌មានលម្អិតសម្រាប់កត់ឈ្មោះចូលហើយ?',
-'userlogin-resetpassword-link' => 'á\9e\9fá\9f\92á\9e\8aá\9e¶á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80',
+'userlogin-resetpassword-link' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e á\9e¾á\9e\99?',
'helplogin-url' => 'Help:ការកត់ឈ្មោះចូល',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ជំនួយក្នុងការកត់ឈ្មោះចូល]]',
'userlogin-createanother' => 'បង្កើតគណនីមួយទៀត',
'revdelete-hide-text' => 'បិទបាំងឃ្លានៃកំណែប្រែ',
'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
'revdelete-hide-name' => 'បិទបាំងសកម្មភាពនិងគោលដៅ',
-'revdelete-hide-comment' => 'á\9e\94á\9e·á\9e\91á\9e\94á\9e¶á\9f\86á\9e\84á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9cá\9e·á\9e\85á\9e¶á\9e\9a',
-'revdelete-hide-user' => 'á\9e\94á\9e·á\9e\91á\9e\94á\9e¶á\9f\86á\9e\84á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98â\80\8bá\9e¬á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IP របស់អ្នកកែប្រែ',
+'revdelete-hide-comment' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\9aá\9e\96á\9e\93á\9f\92á\9e\99á\9e\9bá\9f\8b',
+'revdelete-hide-user' => 'á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98â\80\8bá\9e¬á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPរបស់អ្នកកែប្រែ',
'revdelete-hide-restricted' => 'ដាក់កំហិតទិន្នន័យពីអ្នកអភិបាល ក៏ដូចជាអ្នកដទៃទៀត',
'revdelete-radio-same' => '(មិនផ្លាស់ប្ដូរ)',
-'revdelete-radio-set' => 'á\9e\94á\9e¶á\9e\91/á\9e\85á\9e¶á\9e\9f',
-'revdelete-radio-unset' => 'á\9e\91á\9f\81',
+'revdelete-radio-set' => 'á\9e\9bá\9e¶á\9e\80á\9f\8b',
+'revdelete-radio-unset' => 'á\9e\98á\9e¾á\9e\9bá\9e\83á\9e¾á\9e\89',
'revdelete-suppress' => 'លាក់ទិន្នន័យពីអ្នកថែទាំប្រព័ន្ធ ព្រមទាំងពីសមាជិកដទៃទៀតផងដែរ',
'revdelete-unsuppress' => 'ដកចេញការដាក់កំហិតលើកំណែដែលបានស្តារឡើងវិញ',
'revdelete-log' => 'មូលហេតុ៖',
'mypreferences' => 'ចំណង់ចំណូលចិត្ត',
'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
'prefsnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'prefsnologintext' => 'អ្នកចាំបាច់ត្រូវតែ<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} កត់ឈ្មោះចូល]</span> ដើម្បីកំណត់ចំណង់ចំណូលចិត្តរបស់អ្នក។',
'changepassword' => 'ប្តូរពាក្យសម្ងាត់',
'prefs-skin' => 'សំបក',
'skin-preview' => 'មើលជាមុន',
'contributions' => 'ការរួមចំណែករបស់{{GENDER:$1|អ្នកប្រើប្រាស់}}',
'contributions-title' => 'ការរួមចំណែករបស់អ្នកប្រើប្រាស់ $1',
'mycontris' => 'ការរួមចំណែក',
-'contribsub2' => 'សម្រាប់ $1 ($2)',
+'contribsub2' => 'សម្រាប់{{GENDER:$3|$1}} ($2)',
'nocontribs' => 'គ្មានការផ្លាស់ប្តូរត្រូវបានឃើញដូចនឹងលក្ខណៈវិនិច្ឆ័យទាំងនេះ។',
'uctop' => '(បច្ចុប្បន្ន)',
'month' => 'ខែ៖',
'svg-long-desc' => 'ឯកសារប្រភេទSVG $1 × $2 ភីកសែល ទំហំឯកសារ៖ $3',
'svg-long-desc-animated' => 'ឯកសារជីវចល SVG, ជាធម្មតា $1 × $2 ភិចសែល, ទំហំឯកសារ: $3',
'svg-long-error' => 'ឯកសារ SVG គ្មានសុពលភាព៖ $1',
-'show-big-image' => 'á\9e\9aá\9e¼á\9e\94á\9e\97á\9e¶á\9e\96á\9e\96á\9f\81á\9e\89',
+'show-big-image' => 'á\9e\9aá\9e¼á\9e\94á\9e\97á\9e¶á\9e\96á\9e\8aá\9e¾á\9e\98',
'show-big-image-preview' => 'ទំហំរបស់ការមើលមុននេះ: $1។',
'show-big-image-other' => '{{PLURAL:$2|ភាពម៉ត់|ភាពម៉ត់}}ផ្សេងទៀត៖ $1។',
'show-big-image-size' => '$1 × $2 ភីកសែ',
# External editor support
'edit-externally' => 'កែប្រែឯកសារនេះដោយប្រើប្រាស់កម្មវិធីខាងក្រៅ',
-'edit-externally-help' => '(សូមមើល[//www.mediawiki.org/wiki/Manual:External_editors ការណែនាំអំពីការប្រើប្រាស់]សម្រាប់ព័ត៌មានបន្ថែម)',
+'edit-externally-help' => '(សូមមើល[https://www.mediawiki.org/wiki/Manual:External_editors ការណែនាំអំពីការប្រើប្រាស់]សម្រាប់ព័ត៌មានបន្ថែម)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ទាំងអស់',
'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
'version-version' => '(កំណែ $1)',
'version-license' => 'អាជ្ញាប័ណ្ណ',
-'version-poweredby-credits' => "វិគីនេះឧបត្ថម្ភដោយ '''[//www.mediawiki.org/ មេឌាវិគី]''', រក្សាសិទ្ធ © ២០០១-$1 $2។",
+'version-poweredby-credits' => "វិគីនេះឧបត្ថម្ភដោយ '''[https://www.mediawiki.org/ មេឌាវិគី]''', រក្សាសិទ្ធ © ២០០១-$1 $2។",
'version-poweredby-others' => 'អ្នកដទៃទៀត',
'version-software' => 'ផ្នែកទន់ដែលបានដំឡើង',
'version-software-product' => 'ផលិតផល',
'mypreferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
'prefsnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
-'prefsnologintext' => 'ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ನೀವು <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ಲಾಗ್ ಇನ್]</span> ಆಗಿರಬೇಕು.',
'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
'prefs-skin' => 'ಚರ್ಮ',
'skin-preview' => 'ಮುನ್ನೋಟ',
# External editor support
'edit-externally' => 'ಬಾಹ್ಯ ತಂತ್ರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ ಇದನ್ನು ಸಂಪಾದಿಸಿ',
-'edit-externally-help' => '(ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ [//www.mediawiki.org/wiki/Manual:External_editors ಸ್ಥಾಪನೆಯ ನಿರ್ದೇಶಗಳನ್ನು] ನೋಡಿ)',
+'edit-externally-help' => '(ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ [https://www.mediawiki.org/wiki/Manual:External_editors ಸ್ಥಾಪನೆಯ ನಿರ್ದೇಶಗಳನ್ನು] ನೋಡಿ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ಎಲ್ಲಾ',
'vector-action-protect' => '보호',
'vector-action-undelete' => '되살리기',
'vector-action-unprotect' => '보호 설정 바꾸기',
-'vector-simplesearch-preference' => '단순한 찾기 막대 사용하기 (벡터 스킨 전용)',
+'vector-simplesearch-preference' => '단순한 검색 막대 사용하기 (벡터 스킨 전용)',
'vector-view-create' => '만들기',
'vector-view-edit' => '편집',
'vector-view-history' => '역사',
'returnto' => '$1 문서로 돌아갑니다.',
'tagline' => '{{SITENAME}}',
'help' => '도움말',
-'search' => '찾기',
-'searchbutton' => '찾기',
+'search' => '검색',
+'searchbutton' => '검색',
'go' => '보기',
'searcharticle' => '보기',
'history' => '문서 역사',
'protectedpage' => '보호된 문서',
'jumpto' => '이동:',
'jumptonavigation' => '둘러보기',
-'jumptosearch' => '찾기',
+'jumptosearch' => '검색',
'view-pool-error' => '서버가 과부하에 걸렸습니다.
너무 많은 사용자가 이 문서를 보려고 하고 있습니다.
이 문서를 다시 열기 전에 잠시만 기다려주세요.
'invalidtitle-knownnamespace' => '제목 오류: "$2" 이름공간과 "$3" 텍스트',
'invalidtitle-unknownnamespace' => '제목 오류: 알 수 없는 $1 이름공간 번호와, "$2" 텍스트',
'exception-nologin' => '로그인하지 않음',
-'exception-nologin-text' => '이 문서나 행동은 이 위키에 로그인을 해야 합니다.',
+'exception-nologin-text' => '이 행동을 하거나 이 문서에 접근하려면 [[Special:Userlogin|로그인]]하십시오.',
+'exception-nologin-text-manual' => '이 문서에 접근하거나 이 행동을 하려면 $1하십시오.',
# Virus scanner
'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
IP 주소는 여러 사용자가 공유할 수 있습니다.
자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 익명 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인해서]] 나중에 다른 익명 사용자에게 줄 혼란을 줄일 수 있습니다.',
'noarticletext' => '이 문서가 현재 존재하지 않습니다.
-이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|찾거나]],
+이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색하거나]],
이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인하거나,
문서를 직접 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 편집]</span>할 수 있습니다.',
'noarticletext-nopermission' => '이 문서가 현재 존재하지 않습니다.
-이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|찾거나]], 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인할 수 있습니다.</span> 그러나 이 문서를 만들 수 있는 권한은 없습니다.',
+이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색하거나]], 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인할 수 있습니다.</span> 그러나 이 문서를 만들 수 있는 권한은 없습니다.',
'missing-revision' => '"{{PAGENAME}}"이라는 문서의 #$1판이 존재하지 않습니다.
이 문제는 주로 삭제된 문서를 가리키는 오래된 문서 역사 링크로 인해 발생합니다.
'history-feed-item-nocomment' => '$2에 대한 $1의 편집',
'history-feed-empty' => '요청한 문서가 존재하지 않습니다.
해당 문서가 삭제되었거나, 문서 이름이 바뀌었을 수 있습니다.
-[[Special:Search|찾기]]를 사용해 관련 문서를 찾아보세요.',
+[[Special:Search|ì\9c\84í\82¤ì\9d\98 ê²\80ì\83\89]]ì\9d\84 사용해 관련 문서를 찾아보세요.',
# Revision deletion
'rev-deleted-comment' => '(편집 요약 삭제됨)',
자세한 내용은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 확인할 수 있습니다.',
# Search results
-'searchresults' => '찾기 결과',
-'searchresults-title' => '"$1"에 대한 찾기 결과',
-'searchresulttext' => '{{SITENAME}}의 찾기 기능에 대한 자세한 정보는 [[{{MediaWiki:Helppage}}|{{int:help}}]] 문서를 참고해주세요.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' 문서를 찾고 있습니다. ([[Special:Prefixindex/$1|이름이 "$1" 접두어로 시작하는 문서 목록]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" 문서를 가리키는 문서 목록]])',
-'searchsubtitleinvalid' => "찾은 단어 '''$1'''",
+'searchresults' => '검색 결과',
+'searchresults-title' => '"$1"에 대한 검색 결과',
+'searchresulttext' => '{{SITENAME}}의 검색에 대한 자세한 정보는 [[{{MediaWiki:Helppage}}|{{int:help}}]] 문서를 참고하세요.',
+'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' 문서를 검색하고 있습니다. ([[Special:Prefixindex/$1|이름이 "$1" 접두어로 시작하는 문서 목록]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" 문서를 가리키는 문서 목록]])',
+'searchsubtitleinvalid' => "'''$1''' 검색어로 검색했습니다",
'toomanymatches' => '일치하는 결과가 너무 많습니다. 다른 검색어를 입력해주세요.',
'titlematches' => '문서 제목 일치',
'notitlematches' => '해당하는 제목 없음',
'nextn-title' => '다음 {{PLURAL:$1|결과}} $1개',
'shown-title' => '쪽마다 {{PLURAL:$1|결과}} $1개씩 보기',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) 보기',
-'searchmenu-legend' => '찾기 설정',
+'searchmenu-legend' => '검색 설정',
'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
'searchmenu-new' => "'''이 위키에 \"[[:\$1]]\" 문서를 만드세요!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾기]]',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾아보기]]',
'searchprofile-articles' => '본문',
'searchprofile-project' => '도움말 및 프로젝트 문서',
'searchprofile-images' => '멀티미디어',
-'searchprofile-everything' => '모든 문서 찾기',
+'searchprofile-everything' => '모든 문서',
'searchprofile-advanced' => '고급',
-'searchprofile-articles-tooltip' => '$1에서 찾기',
-'searchprofile-project-tooltip' => '$1에서 찾기',
-'searchprofile-images-tooltip' => '파일 찾기',
-'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 찾기',
-'searchprofile-advanced-tooltip' => '다음 설정한 이름공간에서 찾기',
+'searchprofile-articles-tooltip' => '$1에서 검색',
+'searchprofile-project-tooltip' => '$1에서 검색',
+'searchprofile-images-tooltip' => '파일 검색',
+'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 검색',
+'searchprofile-advanced-tooltip' => '다음 설정한 이름공간에서 검색',
'search-result-size' => '$1 ({{PLURAL:$2|1 단어|$2 단어}})',
'search-result-category-size' => '{{PLURAL:$1|문서 1개|문서 $1개}}, {{PLURAL:$2|하위 분류 1개|하위 분류 $2개}}, {{PLURAL:$3|파일 1개|파일 $3개}}',
'search-result-score' => '유사도: $1%',
'search-interwiki-default' => '$1 결과:',
'search-interwiki-more' => '(더 보기)',
'search-relatedarticle' => '관련',
-'mwsuggest-disable' => '찾기 제안 비활성화',
-'searcheverything-enable' => '모든 이름공간에서 찾기',
+'mwsuggest-disable' => '검색 제안 비활성화',
+'searcheverything-enable' => '모든 이름공간에서 검색',
'searchrelated' => '관련',
'searchall' => '모두',
'showingresults' => "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
'showingresultsnum' => "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}} 입니다.",
'showingresultsheader' => "'''$4''' 검색어에 대하여 {{PLURAL:$5|결과 '''$3'''개 중 '''$1'''개|결과 '''$3'''개 중 '''$1 - $2'''번째}}를 보여 주고 있습니다",
-'nonefound' => "'''참고''': 몇개의 이름공간만 기본 찾을 범위입니다. 토론이나 틀 등의 모든 자료를 찾하기 위해서는 접두어로 '''all:''' 어떤 이름공간을 위해서는 접두어로 그 이름공간을 쓸 수 있습니다.",
-'search-nonefound' => '찾기 결과가 없습니다.',
-'powersearch' => '고급 찾기',
-'powersearch-legend' => '고급 찾기',
-'powersearch-ns' => '다음 이름공간에서 찾기:',
+'nonefound' => "'''참고''': 몇개의 이름공간만 기본으로 검색하는 범위입니다. 토론이나 틀 등의 모든 자료를 검색하려면 접두어로 '''all:''' 어떤 이름공간을 위해서는 접두어로 그 이름공간을 쓸 수 있습니다.",
+'search-nonefound' => '검색어와 일치하는 결과가 없습니다.',
+'powersearch' => '고급 검색',
+'powersearch-legend' => '고급 검색',
+'powersearch-ns' => '다음 이름공간에서 검색:',
'powersearch-redir' => '넘겨주기 목록',
-'powersearch-field' => '찾기',
+'powersearch-field' => '검색',
'powersearch-togglelabel' => '확인:',
'powersearch-toggleall' => '모두',
'powersearch-togglenone' => '모두 제외',
-'search-external' => '바깥 찾기',
-'searchdisabled' => '{{SITENAME}} 찾기 기능이 비활성화되어 있습니다.
-기ë\8a¥ì\9d´ ì\9e\91ë\8f\99í\95\98ì§\80 ì\95\8aë\8a\94 ë\8f\99ì\95\88ì\97\90ë\8a\94 구ê¸\80(Google)ì\9d\84 ì\9d´ì\9a©í\95´ ì°¾ì\9d\84 수 있습니다.
-ê²\80ì\83\89 ì\97\94ì§\84ì\9d\98 ë\82´ì\9a©ì\9d\80 ìµ\9cì\8b ì\9d´ ì\95\84ë\8b\90 ì\88\98 ì\9e\88ë\8b¤ë\8a\94 ì \90ì\9d\84 주ì\9d\98í\95´ì£¼세요.',
+'search-external' => '바깥 검색',
+'searchdisabled' => '{{SITENAME}} 검색이 비활성화되어 있습니다.
+ê²\80ì\83\89ì\9d´ ì\9e\91ë\8f\99í\95\98ì§\80 ì\95\8aë\8a\94 ë\8f\99ì\95\88ì\97\90ë\8a\94 Google(구ê¸\80)ì\9d\84 í\86µí\95´ ê²\80ì\83\89í\95 수 있습니다.
+ê²\80ì\83\89 ì\97\94ì§\84ì\9d\98 ë\82´ì\9a©ì\9d\80 ìµ\9cì\8b ì\9d´ ì\95\84ë\8b\90 ì\88\98 ì\9e\88ë\8b¤ë\8a\94 ì \90ì\9d\84 ì°¸ê³ í\95\98세요.',
'search-error' => '찾는 동안 오류가 발생했습니다: $1',
# Preferences page
'mypreferences' => '환경 설정',
'prefs-edits' => '편집 횟수:',
'prefsnologin' => '로그인하지 않음',
-'prefsnologintext' => 'ì\82¬ì\9a©ì\9e\90 í\99\98ê²½ ì\84¤ì \95ì\9d\84 ë°\94ê¾¸ë ¤ë©´ 먼ì \80 <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ë¡\9cê·¸ì\9d¸]</span>í\95´ì\95¼ í\95©ë\8b\88ë\8b¤.',
+'prefsnologintext2' => 'ì\82¬ì\9a©ì\9e\90 í\99\98ê²½ ì\84¤ì \95ì\9d\84 ì\84¤ì \95í\95\98ë ¤ë©´ $1í\95\98ì\8bì\8b\9cì\98¤.',
'changepassword' => '비밀번호 바꾸기',
'prefs-skin' => '스킨',
'skin-preview' => '미리 보기',
'prefs-editing' => '편집 상자',
'rows' => '줄 수:',
'columns' => '열 수:',
-'searchresultshead' => '찾기',
+'searchresultshead' => '검색',
'resultsperpage' => '쪽마다 보이는 결과 수:',
'stub-threshold' => '링크를 <a href="#" class="stub">토막글</a> 형식으로 보여줄 문서 크기 (바이트 수):',
'stub-threshold-disabled' => '비활성화됨',
'timezoneregion-indian' => '인도양',
'timezoneregion-pacific' => '태평양',
'allowemail' => '다른 사용자가 보낸 이메일을 받음',
-'prefs-searchoptions' => '찾기',
+'prefs-searchoptions' => '검색',
'prefs-namespaces' => '이름공간',
-'defaultns' => '다음 이름공간에서 찾기:',
+'defaultns' => '다음 이름공간에서 검색:',
'default' => '기본값',
'prefs-files' => '파일',
'prefs-custom-css' => '사용자 CSS',
'group-bot' => '봇',
'group-sysop' => '관리자',
'group-bureaucrat' => '사무관',
-'group-suppress' => '오버사이트',
+'group-suppress' => '기록보호자',
'group-all' => '(모두)',
'group-user-member' => '{{GENDER:$1|사용자}}',
'group-bot-member' => '{{GENDER:$1|봇}}',
'group-sysop-member' => '{{GENDER:$1|관리자}}',
'group-bureaucrat-member' => '{{GENDER:$1|사무관}}',
-'group-suppress-member' => '{{GENDER:$1|오버사이트}}',
+'group-suppress-member' => '{{GENDER:$1|기록보호자}}',
'grouppage-user' => '{{ns:project}}:일반 사용자',
'grouppage-autoconfirmed' => '{{ns:project}}:자동 인증된 사용자',
'grouppage-bot' => '{{ns:project}}:봇',
'grouppage-sysop' => '{{ns:project}}:관리자',
'grouppage-bureaucrat' => '{{ns:project}}:사무관',
-'grouppage-suppress' => '{{ns:project}}:오버사이트',
+'grouppage-suppress' => '{{ns:project}}:기록보호자',
# Rights
'right-read' => '문서 읽기',
'right-deleterevision' => '문서의 특정 판을 삭제하고 되살리기',
'right-deletedhistory' => '삭제된 문서의 내용을 제외한 역사를 보기',
'right-deletedtext' => '삭제된 문서의 내용과 편집상의 차이를 보기',
-'right-browsearchive' => '삭제된 문서 찾기',
+'right-browsearchive' => '삭제된 문서 검색',
'right-undelete' => '삭제된 문서 되살리기',
'right-suppressrevision' => '관리자도 보지 못하도록 숨겨진 판을 검토하고 되살리기',
'right-suppressionlog' => '숨겨진 기록을 보기',
'action-delete' => '이 문서 삭제하기',
'action-deleterevision' => '이 판을 삭제',
'action-deletedhistory' => '이 문서의 삭제된 기여의 역사 보기',
-'action-browsearchive' => '삭제된 문서 찾기',
+'action-browsearchive' => '삭제된 문서 검색',
'action-undelete' => '이 문서 되살리기',
'action-suppressrevision' => '이 숨겨진 판을 검토하고 되살릴',
'action-suppressionlog' => '비공개 기록 보기',
이 문서의 최근 삭제 기록과 이동 기록을 참고하십시오:",
'uploadtext' => "파일을 올리기 위해서는 아래의 양식을 채워주세요.
-[[Special:FileList|파일 목록]]에서 이전에 올라온 파일을 찾을 수 있습니다. [[Special:Log/upload|올리기 기록]]에는 파일이 올라온 기록이 남습니다. 삭제 기록은 [[Special:Log/delete|삭제 기록]]에서 볼 수 있습니다.
+[[Special:FileList|파일 목록]]에서 이전에 올라온 파일을 검색할 수 있습니다. [[Special:Log/upload|올리기 기록]]에는 파일이 올라온 기록이 남습니다. 삭제 기록은 [[Special:Log/delete|삭제 기록]]에서 볼 수 있습니다.
문서에 파일을 넣으려면 아래 방법 중 하나를 사용하세요.
* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' 파일의 온전한 모양을 사용하고자 할 때
# Special:ListFiles
'listfiles-summary' => '이 특수 문서는 모든 올려진 파일을 보여줍니다.',
-'listfiles_search_for' => '다음 이름을 가진 미디어 찾기:',
+'listfiles_search_for' => '다음 미디어 이름 검색:',
'imgfile' => '파일',
'listfiles' => '파일 목록',
'listfiles_thumb' => '섬네일',
'filedelete-maintenance-title' => '파일을 삭제할 수 없습니다',
# MIME search
-'mimesearch' => 'MIME 찾기',
-'mimesearch-summary' => 'MIME 타입에 해당하는 파일을 찾습니다.
+'mimesearch' => 'MIME 검색',
+'mimesearch-summary' => 'MIME 유형에 해당하는 파일을 검색합니다.
다음 형태로 입력해주세요: 내용종류/하위종류, 예를 들어 <code>image/jpeg</code>',
'mimetype' => 'MIME 종류:',
'download' => '다운로드',
'querypage-disabled' => '이 특수 문서는 성능상의 이유로 비활성화되었습니다.',
# Book sources
-'booksources' => 'ì±\85 찾기',
-'booksources-search-legend' => 'ì±\85 찾기',
+'booksources' => 'ì±\85 ì\9e\90ë£\8c',
+'booksources-search-legend' => 'ì±\85 ì\9b\90본 ê²\80ì\83\89',
'booksources-isbn' => 'ISBN:',
'booksources-go' => '찾기',
'booksources-text' => '아래의 목록은 새 책이나 중고 책을 판매하는 바깥 사이트로, 원하는 책의 정보를 얻을 수 있습니다.',
'alllogstext' => '{{SITENAME}}에서의 기록이 모두 나와 있습니다.
기록 종류, 사용자 이름, 문서 이름을 선택해서 볼 수 있습니다. (대소문자를 구별합니다.)',
'logempty' => '일치하는 항목이 없습니다.',
-'log-title-wildcard' => '다음 글로 시작하는 제목 찾기',
+'log-title-wildcard' => '다음 글로 시작하는 제목 검색',
'showhideselectedlogentries' => '선택한 기록 항목 보이기/숨기기',
# Special:AllPages
'sp-deletedcontributions-contribs' => '기여',
# Special:LinkSearch
-'linksearch' => '바깥 링크 찾기',
-'linksearch-pat' => '찾기 패턴:',
+'linksearch' => '바깥 링크 검색',
+'linksearch-pat' => '검색 패턴:',
'linksearch-ns' => '이름공간:',
-'linksearch-ok' => '찾기',
+'linksearch-ok' => '검색',
'linksearch-text' => '"*.wikipedia.org"와 같이 와일드 카드를 사용할 수 있습니다.
적어도 "*.org"와 같이 최상위 도메인을 입력해야 합니다.<br />
지원하는 {{PLURAL:$2|프로토콜}}: <code>$1</code> (프로토콜을 지정하지 않을 때 기본값은 http://)',
이메일: $PAGEEDITOR_EMAIL
위키: $PAGEEDITOR_WIKI
-이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
+로그인한 상태에서 이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
{{SITENAME}} 알림 시스템
[[Special:Log/delete|삭제 기록]]에서 최근의 삭제와 되살리기 기록을 볼 수 있습니다.",
'undelete-header' => '최근에 삭제한 문서에 대한 기록은 [[Special:Log/delete|여기]]에서 볼 수 있습니다.',
-'undelete-search-title' => '삭제된 문서 찾기',
-'undelete-search-box' => '삭제된 문서 찾기',
+'undelete-search-title' => '삭제된 문서 검색',
+'undelete-search-box' => '삭제된 문서 검색',
'undelete-search-prefix' => '다음으로 시작하는 문서 보기:',
-'undelete-search-submit' => '찾기',
+'undelete-search-submit' => '검색',
'undelete-no-results' => '삭제된 문서 보존에서 일지하는 문서를 찾을 수 없습니다.',
'undelete-filename-mismatch' => '타임스탬프가 $1인 파일의 버전을 되살릴 수 없습니다: 파일 이름이 일치하지 않습니다.',
'undelete-bad-store-key' => '타임스탬프가 $1인 파일의 버전을 되살릴 수 없습니다: 파일이 삭제되기 전에 사라졌습니다.',
해당 사용자의 차단 기록은 다음과 같습니다:',
'sp-contributions-blocked-notice-anon' => '이 IP 주소는 현재 차단되어 있습니다.
차단 기록은 다음과 같습니다:',
-'sp-contributions-search' => '기여 찾기',
+'sp-contributions-search' => '기여 검색',
'sp-contributions-username' => 'IP 주소 또는 사용자 이름:',
'sp-contributions-toponly' => '최신판만 보기',
-'sp-contributions-submit' => '찾기',
+'sp-contributions-submit' => '검색',
'sp-contributions-explain' => '',
# What links here
'unblocked-id' => '$1 차단이 해제되었습니다.',
'blocklist' => '차단된 사용자 목록',
'ipblocklist' => '차단된 사용자',
-'ipblocklist-legend' => '차단 중인 사용자 찾기',
+'ipblocklist-legend' => '차단된 사용자 찾기',
'blocklist-userblocks' => '계정에 대한 차단 숨기기',
'blocklist-tempblocks' => '기한이 정해진 차단을 숨기기',
'blocklist-addressblocks' => '단일 IP 차단을 숨기기',
'blocklist-by' => '차단한 관리자',
'blocklist-params' => '차단 설정',
'blocklist-reason' => '이유',
-'ipblocklist-submit' => '찾기',
+'ipblocklist-submit' => '검색',
'ipblocklist-localblock' => '로컬 차단',
'ipblocklist-otherblocks' => '다른 {{PLURAL:$1|차단}} 기록',
'infiniteblock' => '무기한',
'allmessagesdefault' => '기본 메시지 글',
'allmessagescurrent' => '현재 문자열',
'allmessagestext' => '미디어위키 이름공간에 있는 모든 시스템 메시지의 목록입니다.
-미디어위키의 번역 작업에 관심이 있으면 [//www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [//translatewiki.net translatewiki.net]에 참가해주세요.',
+미디어위키의 번역 작업에 관심이 있으면 [https://www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [//translatewiki.net translatewiki.net]에 참가해주세요.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''가 비활성화되어 있어서 이 문서를 사용할 수 없습니다.",
'allmessages-filter-legend' => '필터',
'allmessages-filter' => '수정 상태로 거르기:',
'tooltip-ca-move' => '문서 이동하기',
'tooltip-ca-watch' => '이 문서를 주시문서 목록에 추가',
'tooltip-ca-unwatch' => '이 문서를 주시문서 목록에서 제거',
-'tooltip-search' => '{{SITENAME}} 찾기',
+'tooltip-search' => '{{SITENAME}} 검색',
'tooltip-search-go' => '이 이름의 문서가 존재하면 그 문서로 바로 가기',
-'tooltip-search-fulltext' => '이 문자열이 포함된 문서 찾기',
+'tooltip-search-fulltext' => '이 문자열이 포함된 문서 검색',
'tooltip-p-logo' => '대문으로 가기',
'tooltip-n-mainpage' => '대문으로 가기',
'tooltip-n-mainpage-description' => '대문으로 가기',
'svg-long-desc' => 'SVG 파일, 실제 크기 $1 × $2 픽셀, 파일 크기: $3',
'svg-long-desc-animated' => '애니메이션 SVG 파일, 실제 크기 $1 × $2 픽셀, 파일 크기: $3',
'svg-long-error' => '잘못된 SVG 파일: $1',
-'show-big-image' => 'ìµ\9cë\8c\80 í\95´ì\83\81ë\8f\84',
+'show-big-image' => 'ì\9b\90본 í\8c\8cì\9d¼',
'show-big-image-preview' => '미리 보기 크기: $1',
'show-big-image-other' => '다른 {{PLURAL:$2|해상도}}: $1',
'show-big-image-size' => '$1 × $2 픽셀',
'newimages-label' => '파일 이름 (또는 그 일부분):',
'showhidebots' => '(봇을 $1)',
'noimages' => '그림이 없습니다.',
-'ilsubmit' => '찾기',
+'ilsubmit' => '검색',
'bydate' => '날짜',
'sp-newimages-showfrom' => '$1 $2부터 올라온 파일 목록 보기',
# External editor support
'edit-externally' => '이 파일을 바깥 프로그램을 사용해서 편집하기',
-'edit-externally-help' => '(자세한 정보는 [//www.mediawiki.org/wiki/Manual:External_editors 설치 방법]을 참고하세요)',
+'edit-externally-help' => '(자세한 정보는 [https://www.mediawiki.org/wiki/Manual:External_editors 설치 방법]을 참고하세요)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '모두',
'version-hook-subscribedby' => '훅이 사용된 위치',
'version-version' => '(버전 $1)',
'version-license' => '라이선스',
-'version-poweredby-credits' => "이 위키는 '''[//www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
'version-poweredby-others' => '그 외 다른 개발자',
'version-poweredby-translators' => 'translatewiki.net 번역자',
'version-credits-summary' => '[[Special:Version|미디어위키]]에 기여한 다음 사람한테 감사드립니다.',
'redirect' => '파일, 사용자나 판 ID별 넘겨주기',
'redirect-legend' => '파일이나 문서로 넘겨주기',
'redirect-summary' => '이 특수 문서는 파일(파일 이름을 지정), 문서(판 ID를 지정)나 사용자 문서(사용자 ID를 정수로 지정)로 넘겨줍니다. 사용법: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], 혹은 [[{{#Special:Redirect}}/user/101]].',
-'redirect-submit' => '찾기',
+'redirect-submit' => '보기',
'redirect-lookup' => '찾을 종류:',
'redirect-value' => '값:',
'redirect-user' => '사용자 ID',
'redirect-not-exists' => '값을 찾을 수 없습니다',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => '중복된 파일 찾기',
-'fileduplicatesearch-summary' => '파일 해시값을 이용해 중복 파일을 찾습니다.',
-'fileduplicatesearch-legend' => '중복 찾기',
+'fileduplicatesearch' => '중복된 파일 검색',
+'fileduplicatesearch-summary' => '파일 해시값을 이용해 중복 파일을 검색합니다.',
+'fileduplicatesearch-legend' => '중복 검색',
'fileduplicatesearch-filename' => '파일 이름:',
-'fileduplicatesearch-submit' => '찾기',
+'fileduplicatesearch-submit' => '검색',
'fileduplicatesearch-info' => '$1 × $2 픽셀<br />파일 크기: $3<br />MIME 유형: $4',
'fileduplicatesearch-result-1' => '"$1" 파일과 중복된 파일이 없습니다.',
'fileduplicatesearch-result-n' => '"$1" 파일은 {{PLURAL:$2|중복 파일이 $2개}} 있습니다.',
# Special:SpecialPages
'specialpages' => '특수 문서 목록',
-'specialpages-note' => '----
-* 일반 특수 문서입니다.
+'specialpages-note' => '* 일반 특수 문서입니다.
* <span class="mw-specialpagerestricted">제한된 특수 문서입니다.</span>',
'specialpages-group-maintenance' => '관리용 목록',
'specialpages-group-other' => '다른 특수 문서',
'htmlform-chosen-placeholder' => '선택하세요',
# SQLite database support
-'sqlite-has-fts' => '$1 (본문 전체 찾기)',
+'sqlite-has-fts' => '$1 (본문 전체 검색 지원)',
'sqlite-no-fts' => '$1 (본문은 찾기에서 제외)',
# New logging system
'feedback-bugnew' => '확인했습니다. 새로운 버그 보고서를 작성합니다.',
# Search suggestions
-'searchsuggest-search' => '찾기',
+'searchsuggest-search' => '검색',
'searchsuggest-containing' => '다음 문자열 포함...',
# API errors
# External editor support
'edit-externally' => 'Редактируйтны этiйö файлсö мöд программа пыр',
-'edit-externally-help' => '(унажык видзöт: [//www.mediawiki.org/wiki/Manual:External_editors удж кежö лöсьöтны туйдöтан])',
+'edit-externally-help' => '(унажык видзöт: [https://www.mediawiki.org/wiki/Manual:External_editors удж кежö лöсьöтны туйдöтан])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'быдöс',
'mypreferences' => 'Джарашдырыула',
'prefs-edits' => 'Тюрлендириулени саны:',
'prefsnologin' => 'Системагъа кесигизни танытмагъансыз',
-'prefsnologintext' => 'Къошулуучуну джарашдырыуларын тюрлендирир ючюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} системагъа кесигизни танытыргъа]</span> керексиз.',
'changepassword' => 'Паролну ауушдур',
'prefs-skin' => 'Джасауу',
'skin-preview' => 'Ал къарау',
'allmessagesdefault' => 'Оригинал текст',
'allmessagescurrent' => 'Хайырлана тургъан текст',
'allmessagestext' => 'Бу тизме MediaWiki ат аламында бар болгъан система билдириулени тизмесиди.
-MediaWiki локализациясына юлюш къошаргъа излей эсегиз, [//www.mediawiki.org/wiki/Localisation MediaWiki локализация] бла [//translatewiki.net translatewiki.net] сайтлагъа киригиз.',
+MediaWiki локализациясына юлюш къошаргъа излей эсегиз, [https://www.mediawiki.org/wiki/Localisation MediaWiki локализация] бла [//translatewiki.net translatewiki.net] сайтлагъа киригиз.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' джабыкъ болгъаны ючюн '''{{ns:special}}:Allmessages''' хайырланыугъа ачыкъ тюлдю.",
'allmessages-filter-legend' => 'Фильтр',
'allmessages-filter' => 'Тюрлендириуюне кёре фильтрлендир:',
# External editor support
'edit-externally' => 'Бу файлны тыш программа бла тюрлендиригиз',
-'edit-externally-help' => '(толу информациягъа мында къарагъыз: [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(толу информациягъа мында къарагъыз: [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'бютеу',
'version-hook-subscribedby' => 'Абонент болгъан',
'version-version' => '(Версия $1)',
'version-license' => 'Лицензия',
-'version-poweredby-credits' => "Бу вики '''[//www.mediawiki.org/ MediaWiki]''' программа бла ишлейди, copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Бу вики '''[https://www.mediawiki.org/ MediaWiki]''' программа бла ишлейди, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'башхала',
'version-license-info' => 'MediaWiki эркин программа джазыуду, сиз аны GNU General Public License лицензияны (эркин программа джазыуланы фонду чыгъаргъан; экинчи версиясы неда андан кеч къайсысы да) шартларына кёре джаяргъа эмда/неда тюрлендирирге боллукъсуз.
# Special:SpecialPages
'specialpages' => 'Къуллукъчу бетле',
-'specialpages-note' => '----
-* Тюз къуллукъчу бетле.
+'specialpages-note' => '* Тюз къуллукъчу бетле.
* <span class="mw-specialpagerestricted">Кирирге эркинлик чекленнген къуллукъчу бетле.</span>
* <span class="mw-specialpagecached">Кэш этилген къуллукъчу бетле (эски болургъа боллукъдула).</span>',
'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
'mypreferences' => 'Enstellunge',
'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
'prefsnologin' => 'Nit enjelogg',
-'prefsnologintext' => 'Do mööts ald <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} enjelogg]</span> sin, öm Ding Enstellunge ze ändere.',
'changepassword' => 'Passwood *',
'prefs-skin' => 'Et Ussinn',
'skin-preview' => 'Vör-Ansich',
'allmessagesdefault' => 'Dä standaadmäßije Tex',
'allmessagescurrent' => 'Esu es dä Tex jetz',
'allmessagestext' => 'Heh kütt en Liss met Texte, Texstöck, un Nohreechte em Appachtemeng „MediaWiki“ — Do draan Ändere löht et Wiki anders ußsin, dat darf dröm nit Jede maache.
-Wenn De jenerell aan [//www.mediawiki.org/wiki/Localisation MediaWiki singe Översezung] jet anders han wells, do jangk noh [//translatewiki.net translatewiki.net].',
+Wenn De jenerell aan [https://www.mediawiki.org/wiki/Localisation MediaWiki singe Översezung] jet anders han wells, do jangk noh [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => '<strong>Dat wor nix!</strong> Mer künne „{{#special:allmessages}}“ nit zeije, <code>$wgUseDatabaseMessages</code> es usjeschalt!',
'allmessages-filter-legend' => 'Ußsöhke — wat för en Täxte o Nohreeshte aazeije?',
'allmessages-filter' => 'Zohshtand:',
# External editor support
'edit-externally' => 'Dun de Datei met enem externe Projramm bei Dr om Rechner bearbeide',
-'edit-externally-help' => '(Luur en de [//www.mediawiki.org/wiki/Manual:External_editors Aanleidong för de Enschtallazjuhn] noh mieh Henwiese)',
+'edit-externally-help' => '(Luur en de [https://www.mediawiki.org/wiki/Manual:External_editors Aanleidong för de Enschtallazjuhn] noh mieh Henwiese)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'all',
'version-hook-subscribedby' => 'Opjeroofe vun',
'version-version' => '(Väsjohn $1)',
'version-license' => 'Lėzänz',
-'version-poweredby-credits' => "Dat Wiki heh löp met '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Dat Wiki heh löp met '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
'version-poweredby-others' => 'sönß wää',
'version-poweredby-translators' => 'de Övversäzer em translatewiki.net',
'version-credits-summary' => 'Mer bedanke ons för iehr Beidrähsch zom [[Special:Version|MediaWiki]] bei:',
# Special:SpecialPages
'specialpages' => '{{int:nstab-special}}e',
-'specialpages-note' => '----
-* {{int:nstab-special}}e för jede Metmaacher.
+'specialpages-note' => '* {{int:nstab-special}}e för jede Metmaacher.
* <span class="mw-specialpagerestricted">{{int:nstab-special}}e för Metmaacher met besönder Räächde.</span>
* <span class="mw-specialpagecached">Em Zwescheshpeisher jehallde {{int:nstab-special}}e. Di künnte ovverhollt sind.</span>',
'specialpages-group-maintenance' => 'Waadungsleste',
'mypreferences' => 'Tercihên min',
'prefs-edits' => 'Hejmarê guherandinan:',
'prefsnologin' => 'Xwe tomar nekir',
-'prefsnologintext' => 'Tu gireke xwe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qeydbikê]</span> ji bo guherandina tercihên bikarhêneran.',
'changepassword' => 'Şîfreyê biguherîne',
'prefs-skin' => 'Pêste',
'skin-preview' => 'Pêşdîtin',
'exif-iimcategory-wea' => 'Hewa',
# External editor support
-'edit-externally-help' => '(Ji bo agahîyên zav [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] li vir binêre)',
+'edit-externally-help' => '(Ji bo agahîyên zav [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] li vir binêre)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'hemû',
# Special:SpecialPages
'specialpages' => 'Rûpelên taybet',
-'specialpages-note' => '----
-* Rûpelên taybetî ji her kesan ra
+'specialpages-note' => '* Rûpelên taybetî ji her kesan ra
* <strong class="mw-specialpagerestricted">Rûpelên taybetî ji bikarhêneran bi mafên zêdetir ra</strong>',
'specialpages-group-other' => 'Rûpelên taybetî yên din',
'specialpages-group-login' => 'Têkeve',
# External editor support
'edit-externally' => 'Бул файлды сырткы программа колдонуу аркылуу оңдоо',
-'edit-externally-help' => '(Толук маалымат алуу үчүн [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] барагына кайрылсаңыз болот)',
+'edit-externally-help' => '(Толук маалымат алуу үчүн [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] барагына кайрылсаңыз болот)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'баары',
'revdelete-hide-comment' => 'Summarium emendationis',
'revdelete-hide-user' => 'Nomen usoris/locus IP',
'revdelete-radio-same' => 'non mutare',
-'revdelete-radio-set' => 'Visibiles/visibilia',
-'revdelete-radio-unset' => 'Non visibiles/non visibilia',
+'revdelete-radio-set' => 'Celare',
+'revdelete-radio-unset' => 'Visibiles/visibilia',
'revdelete-log' => 'Causa:',
'revdel-restore' => 'visibilitatem mutare',
'revdel-restore-deleted' => 'Recensiones deletae',
'mypreferences' => 'Praeferentiae',
'prefs-edits' => 'Numerus recensionum:',
'prefsnologin' => 'Conventum non est apertum',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Conventum aperire]</span> debes ad praeferentias tuas modificandum.',
'changepassword' => 'Tesseram mutare',
'prefs-skin' => 'Aspectum',
'skin-preview' => 'Praevisum',
# External editor support
'edit-externally' => 'Hunc fasciculum in programmate externali recensere',
-'edit-externally-help' => '(Vide et [//www.mediawiki.org/wiki/Manual:External_editors paginas adiutorias] programmatis externalis)',
+'edit-externally-help' => '(Vide et [https://www.mediawiki.org/wiki/Manual:External_editors paginas adiutorias] programmatis externalis)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'omnes',
# External editor support
'edit-externally' => 'Trocar esto arxivo usando una aplicación eksterna',
-'edit-externally-help' => '(Melda las [//www.mediawiki.org/wiki/Manual:External_editors enstruksiones de configuración] -en inglés- para saber más)',
+'edit-externally-help' => '(Melda las [https://www.mediawiki.org/wiki/Manual:External_editors enstruksiones de configuración] -en inglés- para saber más)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todos',
*k = Kleng Ännerung.",
'history-fieldset-title' => 'An de Versioune sichen',
'history-show-deleted' => 'nëmmen déi geläschten',
-'histfirst' => 'eelsten',
-'histlast' => 'neisten',
+'histfirst' => 'eelst',
+'histlast' => 'neist',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Byten}})',
'historyempty' => '(eidel)',
Aner {{SITENAME}}-Administrateure kënnen de geläschten Inhalt oder aner geläschte Bestanddeeler weiderhi gesinn a restauréieren, et sief, et gouf festgeluecht, datt déi Limitatioune vum Accès och fir Administrateure gëllen.",
'revdelete-confirm' => "Confirméiert w.e.g. datt Dir dat maache wëllt, datt Dir d'Konsequenze verstitt an datt Dir dëst an Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
'revdelete-suppress-text' => "Ënnerdréckung sollt '''nëmmen''' an dëse Fäll benotzt ginn:
+* Informatiounen déi beleidege kéinten
* Net ubruechte perséinlechen Informatiounen
*: ''Adressen, Telefonsnummeren, Sozialversécherungsnummeren asw.''",
'revdelete-legend' => "Limitatioune fir d'Sichtbarkeet festleeën",
'mypreferences' => 'Astellungen',
'prefs-edits' => 'Zuel vun den Ännerungen:',
'prefsnologin' => 'Net ageloggt',
-'prefsnologintext' => 'Dir musst <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}ageloggt]</span> sinn, fir Är Astellungen änneren ze kënnen.',
'changepassword' => 'Passwuert änneren',
'prefs-skin' => 'Skin',
'skin-preview' => 'Kucken',
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Aktuellen Text',
'allmessagestext' => "Dëst ass eng Lëscht vun alle '''Messagen am MediaWiki:Nummraum, déi vun der MediaWiki-Software benotzt ginn.
-Besicht w.e.g. [//www.mediawiki.org/wiki/Localisation MediaWiki Localisatioun] an [//translatewiki.net translatewiki.net] wann Dir wëllt bei de MediaWiki Iwwersetzunge matschaffen.",
+Besicht w.e.g. [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisatioun] an [//translatewiki.net translatewiki.net] wann Dir wëllt bei de MediaWiki Iwwersetzunge matschaffen.",
'allmessagesnotsupportedDB' => "Dës Säit kann net benotzt gi well '''\$wgUseDatabaseMessages''' ausgeschalt ass.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter nom ugepassten Zoustand:',
'svg-long-desc' => 'SVG-Fichier, Basisgréisst: $1 × $2 Pixel, Gréisst vum Fichier: $3',
'svg-long-desc-animated' => 'Animéierten SVG-Fichier, Basisgréisst $1 x $2 Pixel, Gréisst vum Fichier: $3',
'svg-long-error' => 'Ongëltegen SVG-Fichier: $1',
-'show-big-image' => 'Voll Opléisung',
+'show-big-image' => 'Original Fichier',
'show-big-image-preview' => 'Gréisst vun dësem Preview: $1.',
'show-big-image-other' => 'Aner {{PLURAL:$2|Opléisung|Opléisungen}}: $1.',
'show-big-image-size' => '$1 × $2 Pixel',
# External editor support
'edit-externally' => 'Dëse Fichier mat engem externe Programm änneren',
-'edit-externally-help' => "(Fir gewuer ze gi wéi dat genee geet liest d'[//www.mediawiki.org/wiki/Manual:External_editors Installatiounsinstruktiounen].)",
+'edit-externally-help' => "(Fir gewuer ze gi wéi dat genee geet liest d'[https://www.mediawiki.org/wiki/Manual:External_editors Installatiounsinstruktiounen].)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'all',
'confirm-unwatch-button' => 'OK',
'confirm-unwatch-top' => 'Dës Säit vun Ärer Iwwerwaachungslëscht erofhuelen?',
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← Vireg Säit',
'imgmultipagenext' => 'nächst Säit →',
'version-hook-subscribedby' => 'Opruff vum',
'version-version' => '(Versioun $1)',
'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Dës Wiki funktionéiert mat '''[//www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Dës Wiki funktionéiert mat '''[https://www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
'version-poweredby-others' => 'anerer',
'version-poweredby-translators' => 'translatewiki.net Iwwersetzer',
'version-credits-summary' => "Mir soen dëse Persoune 'Merci' fir hir Mataarbecht u [[Special:Version|MediaWiki]].",
# Special:SpecialPages
'specialpages' => 'Spezialsäiten',
-'specialpages-note' => '----
-* Normal Spezialsäiten.
+'specialpages-note' => '* Normal Spezialsäiten.
* <span class="mw-specialpagerestricted">Spezialsäite fir Benotzer mat méi Rechter.</span>
* <span class="mw-specialpagecached">Spezialsäiten aus dem Tëschespäicher (ka vereelst sinn).</span>',
'specialpages-group-maintenance' => 'Maintenance-Rapporten',
# External editor support
'edit-externally' => 'И файл патан программа куьмекдалди дуьзар хъувун',
-'edit-externally-help' => '(Алава малумат патал [//www.mediawiki.org/wiki/Manual:External_editors эцигунин регьбервилиз] килига)',
+'edit-externally-help' => '(Алава малумат патал [https://www.mediawiki.org/wiki/Manual:External_editors эцигунин регьбервилиз] килига)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'вири',
# External editor support
'edit-externally' => 'Edita esta fix con un programa esterna',
-'edit-externally-help' => '(Vide la [//www.mediawiki.org/wiki/Manual:External_editors instruis per comensa] per plu instruis)',
+'edit-externally-help' => '(Vide la [https://www.mediawiki.org/wiki/Manual:External_editors instruis per comensa] per plu instruis)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tota',
'allmessagescurrent' => 'Ebiriwo kakano',
'allmessagestext' => "Luno lwe lukalala olw'obubaka obwa sisitemu obw'omu kkuŋŋaanizo erya MediaWiki.
-Ob'oyagala okuyamba ku kuvvuunula eby'omu MediaWiki yonna, kebera ku [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ne [//translatewiki.net translatewiki.net].",
+Ob'oyagala okuyamba ku kuvvuunula eby'omu MediaWiki yonna, kebera ku [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ne [//translatewiki.net translatewiki.net].",
'allmessages-filter-legend' => 'Ensunsula',
'allmessages-filter' => 'Londamu:',
'allmessages-filter-unmodified' => 'Ebitannakyusibwamu',
# External editor support
'edit-externally' => 'Fayiro eno gikolereko mu pulogulamu endala',
-'edit-externally-help' => '[//www.mediawiki.org/wiki/Manual:External_editors Nyiga wano] okuyiga ebisingawo ku kukozesa pulogulamu endala okukola enkyukakyuka.',
+'edit-externally-help' => '[https://www.mediawiki.org/wiki/Manual:External_editors Nyiga wano] okuyiga ebisingawo ku kukozesa pulogulamu endala okukola enkyukakyuka.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Zonna',
'mypreferences' => 'Mien veurkäöre',
'prefs-edits' => 'Aantal bewèrkinge:',
'prefsnologin' => 'Neet aangemèld',
-'prefsnologintext' => 'De mós zeen <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aagemeld]</span> óm dien veurkäöre te kónne insjtèlle.',
'changepassword' => 'Wachwaord verangere',
'prefs-skin' => '{{SITENAME}}-uterlik',
'skin-preview' => 'Veurbesjouwing',
'allmessagesdefault' => 'Obligaten teks',
'allmessagescurrent' => 'Hujige teks',
'allmessagestext' => "Dit is 'n lies van alle systeemberichte besjikbaar in de MediaWiki-naamruumde.
-Bezeuk [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] es doe wils biedrage aon lokalisatie.",
+Bezeuk [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] es doe wils biedrage aon lokalisatie.",
'allmessagesnotsupportedDB' => "Deze pagina kan neet gebroek waere omdet '''\$wgUseDatabaseMessages''' oet steit.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter óp aangepas:',
# External editor support
'edit-externally' => "Bewirk dit bestand mit 'n extern toepassing",
-'edit-externally-help' => '(zuug de [//www.mediawiki.org/wiki/Manual:External_editors setupinsjtructies] veur mie informatie)',
+'edit-externally-help' => '(zuug de [https://www.mediawiki.org/wiki/Manual:External_editors setupinsjtructies] veur mie informatie)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'al',
'version-hook-subscribedby' => 'Geabonneerd door',
'version-version' => '(Versie $1)',
'version-license' => 'Licentie',
-'version-poweredby-credits' => "Deze wiki weurt aangedreve door '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Deze wiki weurt aangedreve door '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'anger',
'version-license-info' => "MediaWiki is vrieje sofware; de kins MediaWiki verspreien en/of aanpassen onger de veurwaerde van de GNU General Public License wie gepubliceerd door de Free Software Foundation; ofwaal versie 2 van de Licentie, of - nao diene wönsj - innig later versie.
# Special:SpecialPages
'specialpages' => "Speciaal pagina's",
-'specialpages-note' => '----
-* Normaal speciaal pagina\'s
+'specialpages-note' => '* Normaal speciaal pagina\'s
* <strong class="mw-specialpagerestricted">Beperk toegankelike speciaal pagina\'s</strong>
* <span class="mw-specialpagecached">Speciaal pagina\'s mit allein gegaeves oete cache (meugelik verajerd)</span>',
'specialpages-group-maintenance' => 'Óngerhajingsrapporter',
# External editor support
'edit-externally' => 'Càngia sto file co-in programma esterno',
-'edit-externally-help' => 'Pe avéi ciù informaçioìn amia e [//www.mediawiki.org/wiki/Manual:External_editors istruçioìn] (in ingléize)',
+'edit-externally-help' => 'Pe avéi ciù informaçioìn amia e [https://www.mediawiki.org/wiki/Manual:External_editors istruçioìn] (in ingléize)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Tùtti',
# External editor support
'edit-externally' => 'Protseššõgid failõ ulīz programmatūraks',
-'edit-externally-help' => '(Vaņ uļļizt redaktōrd adresõs [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] kȭlbatõmiz opātõkst)',
+'edit-externally-help' => '(Vaņ uļļizt redaktōrd adresõs [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] kȭlbatõmiz opātõkst)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tikkiž',
# External editor support
'edit-externally' => 'Redatá chest archivi cunt un prugramari da fö',
-'edit-externally-help' => 'Varda [//www.mediawiki.org/wiki/Manual:External_editors i istrüzión] per avègh püssee infurmazión (in ingles).',
+'edit-externally-help' => 'Varda [https://www.mediawiki.org/wiki/Manual:External_editors i istrüzión] per avègh püssee infurmazión (in ingles).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tücc',
# External editor support
'edit-externally' => 'ດັດແກ້ໄຟລ໌ນີ້ໂດຍໂປແກຣມພາຍນອກ',
-'edit-externally-help' => 'ເບິ່ງ ຂໍ້ມູນເພີ່ມຕື່ມ ຢູ່ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions]',
+'edit-externally-help' => 'ເບິ່ງ ຂໍ້ມູນເພີ່ມຕື່ມ ຢູ່ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions]',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ທັງໝົດ',
'allmessagesdefault' => 'Selt orge',
'allmessagescurrent' => 'Selt nca',
'allmessagestext' => 'Bye mukoloko sa mukoloko di mulumiwani di MediaWiki poo.
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
# Thumbnails
'thumbnail-more' => 'Pusize',
# External editor support
'edit-externally' => 'Kenki imegi sebilize pagini lakusi',
-'edit-externally-help' => 'Boniselelize [//www.mediawiki.org/wiki/Manual:External_editors instruksi setup] kwa informasi.',
+'edit-externally-help' => 'Boniselelize [https://www.mediawiki.org/wiki/Manual:External_editors instruksi setup] kwa informasi.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'xeti',
--- /dev/null
+<?php
+/** لوری (لوری)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Mogoeilor
+ */
+
+$rtl = true;
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'هوم پیوند زیرخط دار:',
+'tog-justify' => 'فاصله نيائن سی پاراگرافيا',
+'tog-hideminor' => 'قام كردن ويرايشتيا كؤچك مئن آلشتيا تازه',
+'tog-hidepatrolled' => 'قام كردن ويرايشتيا تیه دیار کرده مئن آلشتيا تازه',
+'tog-newpageshidepatrolled' => 'بلگیا تیه دیار کرده نه مئن نوم گه بلگیا تازه قام کو',
+'tog-extendwatchlist' => 'سیل برگه نه سی نشو دئن تمام آلشتیا واکو نه فقط سی بیشتر تازه باوا.',
+'tog-usenewrc' => 'دسه بنی آلشتیا وا بلگه د آلشتیا تازه و سیل برگ',
+'tog-numberheadings' => 'سربلگه خود شماره گر',
+'tog-showtoolbar' => 'نوار اوزار ويرايشت نشون بيه',
+'tog-editondblclick' => 'بلگيا نه وا دوبار پورنين ويرايشت بكيد',
+'tog-editsection' => 'ممكن بيئن ويرايشت بشخيا وا [ويرايشت]',
+'tog-editsectiononrightclick' => 'بهر ویرایشت نه وا راس کلیک کردن د بهر عنوانیا فعال کو',
+'tog-showtoc' => 'چیا مئن جدول نشو بیه',
+'tog-rememberpassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
+'tog-watchcreations' => 'بلگیایی که مه راس کمه و فایلیایی که مه سوار کمه اضاف کو د سیل برگه مه',
+'tog-watchdefault' => 'بلگیا و فایلایی که مه ویرایشت کمه اضاف کو د سیل برگم',
+'tog-watchmoves' => 'بلگیاو فایلیایی که مه جاوه جا کمه د سیل برگم اضاف کو',
+'tog-watchdeletion' => 'بلگیا و فایلایی که مه پاک کمه اضاف کو د سیل برگم',
+'tog-minordefault' => 'همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.',
+'tog-previewontop' => 'پیش سیل نه دما جعوه ویرایشت نشو بیئه',
+'tog-previewonfirst' => 'پیش سیل نه د اولین ویرایشت نشو بیئه',
+'tog-enotifusertalkpages' => 'وختی که بلگه گپسن کارور آلشت پیدا کرد منه وا ایمیل خور کو',
+'tog-shownumberswatching' => 'انازه کاروریایی که د حالت دیئنن نشو بیه',
+'tog-oldsig' => 'امضايی هيئش:',
+'tog-uselivepreview' => 'د پیش سیل زنه استفاده کو',
+'tog-watchlisthideown' => 'قام كو ويرايشت منه د',
+'tog-diffonly' => 'بلگیایی که شومل فرخیا هارن نشون نیه',
+'tog-showhiddencats' => 'دسه يا قام بيئنه نشون بيه',
+
+'underline-always' => 'هميشه',
+'underline-never' => 'هيژوخت',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'راساگه فونت شلک نه ویرایشت کو',
+'editfont-default' => 'مرورگر پیش بینی بیه',
+'editfont-sansserif' => 'سان سریف فونت',
+'editfont-serif' => 'فونت سريف',
+
+# Dates
+'sunday' => 'يه شمه',
+'monday' => 'دوشمه',
+'tuesday' => 'سه شمه',
+'wednesday' => 'چارشمه',
+'thursday' => 'پن شمه',
+'friday' => 'جمه',
+'saturday' => 'شمه',
+'sun' => 'يه شمه',
+'mon' => 'دوشمه',
+'tue' => 'سه شمه',
+'wed' => 'چارشمه',
+'thu' => 'پن شمه',
+'fri' => 'جمه',
+'sat' => 'شمه',
+'january' => 'جانويه',
+'february' => 'فبريه',
+'march' => 'مارش',
+'april' => 'آبريل',
+'may_long' => 'ما',
+'june' => 'جوئن',
+'july' => 'جولای',
+'august' => 'اگوست',
+'september' => 'سپتامر',
+'october' => 'اكتور',
+'november' => 'نوامر',
+'december' => 'دسامر',
+'january-gen' => 'جانويه',
+'february-gen' => 'فوريه',
+'march-gen' => 'مارش',
+'april-gen' => 'آوريل',
+'may-gen' => 'ما',
+'june-gen' => 'جوئن',
+'july-gen' => 'جولای',
+'august-gen' => 'اگوست',
+'september-gen' => 'سپتامر',
+'october-gen' => 'اكتور',
+'november-gen' => 'نوامر',
+'december-gen' => 'دسامر',
+'jan' => 'ژانويه',
+'feb' => 'فبريه',
+'mar' => 'مارش',
+'apr' => 'آبريل',
+'may' => 'ما',
+'jun' => 'جوئن',
+'jul' => 'جولا',
+'aug' => 'اوگوست',
+'sep' => 'سپتامر',
+'oct' => 'اكتور',
+'nov' => 'نوامر',
+'dec' => 'دسامر',
+'january-date' => 'جانويه $1',
+'february-date' => 'فوريه $1',
+'march-date' => 'مارس $1',
+'april-date' => 'آوريل $1',
+'may-date' => 'ما $1',
+'june-date' => 'جوئن $1',
+'july-date' => 'جولاي $1',
+'august-date' => 'اوت $1',
+'september-date' => 'سپتامر $1',
+'october-date' => 'اكتور $1',
+'november-date' => 'نوامر $1',
+'december-date' => 'دسامر $1',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|دسه|دسه يا}}',
+'category_header' => 'بلگيا مئن دسه "$1"',
+'subcategories' => 'زيردسه يا',
+'category-media-header' => 'رسانه د دسه "$1"',
+'category-empty' => 'ای دسه واقعن شومل هیژ بلگه ای یا رسانه ای نی',
+'hidden-categories' => '{{PLURAL:$1|دسته قام بيه|دسته يا قام بيه}}',
+'hidden-category-category' => 'دسه یا قام بیه',
+'category-subcat-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای زیردسه, خارج د $2 کل.}}',
+'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
+'listingcontinuesabbrev' => 'دماله',
+'index-category' => 'بلگيا سيائه دار',
+'noindex-category' => 'بلگيا بی سيائه',
+
+'about' => 'دباره',
+'article' => 'محتوا بلگه',
+'newwindow' => '(نيمدری تازه وا کو)',
+'cancel' => 'رد كردن',
+'moredotdotdot' => 'بيشتر',
+'morenotlisted' => 'ای ليست كامل نبيه',
+'mypage' => 'بلگه',
+'mytalk' => 'چك چنه',
+'anontalk' => 'دباره نشونی ای آی پی قصه بكيد',
+'navigation' => 'ناوگشتن',
+'and' => ' و',
+
+# Cologne Blue skin
+'qbfind' => 'فهمسن،جسن',
+'qbbrowse' => 'قرض گرتن',
+'qbedit' => 'ويرايشت',
+'qbpageoptions' => 'ای بلگه',
+'qbmyoptions' => 'بلگيا مه',
+'qbspecialpages' => 'بلگيا ويجه',
+'faq' => 'اف ای كيو',
+'faqpage' => 'پروجه:اف اي كيو',
+
+# Vector skin
+'vector-action-addsection' => 'موضوع اضاف بكيد',
+'vector-action-delete' => 'حذف بكيد',
+'vector-action-move' => 'جاوه جا بوئيت',
+'vector-action-protect' => 'حمايت بكيد',
+'vector-action-undelete' => 'حذف نبيئني',
+'vector-action-unprotect' => 'حمايت آلشت بكيد',
+'vector-view-create' => 'راس كردن',
+'vector-view-edit' => 'ويرايشت',
+'vector-view-history' => 'ديئن ويرگار',
+'vector-view-view' => 'حنن',
+'vector-view-viewsource' => 'سرچشمه نه بوينيت',
+'actions' => 'جمشت',
+'namespaces' => 'نوم جا',
+'variants' => 'آلشت ونی يا',
+
+'navigation-heading' => 'منو ناوگشتن',
+'errorpagetitle' => 'غلط',
+'returnto' => 'ورگشت وه $1.',
+'tagline' => 'د {{SITENAME}}',
+'help' => 'هومياری',
+'search' => 'پی چوری',
+'searchbutton' => 'پی جوری',
+'go' => 'رو',
+'searcharticle' => 'رو',
+'history' => 'ويرگار بلگه',
+'history_short' => 'ويرگار',
+'updatedmarker' => 'د آخرین دیئن مه روزآمد کو',
+'printableversion' => 'نسقه چاپ بيئنی',
+'permalink' => 'چسب ون هميشئی',
+'print' => 'چاپ كردن',
+'view' => 'ديئن',
+'edit' => 'ويرايشت',
+'create' => 'راس كردن',
+'editthispage' => 'ويرايشت ای بلگه',
+'create-this-page' => 'راس كردن ای بلگه',
+'delete' => 'حذف كردن',
+'deletethispage' => 'ای بلگه نه حذف بكيد',
+'undeletethispage' => 'ای بلگه نه حذف نكيد',
+'protect' => 'حمايت بكيد',
+'protect_change' => 'آلشت بكيد',
+'protectthispage' => 'ای بلگه نه حفاظت بكيد',
+'unprotect' => 'حمايت آلشت بكيد',
+'unprotectthispage' => 'حفاظت دی بلگه نه آلشت بكيد',
+'newpage' => 'بلگه نو',
+'talkpage' => 'دباره ای بلگه قصه بكيد',
+'talkpagelinktext' => 'وت و واچ',
+'specialpage' => 'بلگه ويجه',
+'personaltools' => 'اوزاريا شصقی',
+'postcomment' => 'بشه تازه',
+'articlepage' => 'ديئن محتوا بلگه',
+'talk' => 'گپ',
+'views' => 'ديئنيا',
+'toolbox' => 'اوزاريا',
+'userpage' => 'ديئن بلگه كارور',
+'projectpage' => 'ديئن بلگه پروجه',
+'imagepage' => 'ديئن بلگه فايل',
+'mediawikipage' => 'ديئن بلگه پيغوم',
+'templatepage' => 'ديئن بلگه قالو',
+'viewhelppage' => 'ديئن بلگه هومياری',
+'categorypage' => 'ديئن بلگه دسه بنی',
+'viewtalkpage' => 'ديئن چك چنه يا',
+'otherlanguages' => 'د زونيا هنی',
+'redirectedfrom' => '(ورگشتن د$1)',
+'lastmodifiedat' => 'ای بلگه تازه ايا وضع آلشت بيه د $1, د $2.',
+'viewcount' => 'ای بلگه قاول دسترسی بيه {{PLURAL:$1|once|$1 times}}.',
+'protectedpage' => 'بلگه حفاظت بيه',
+'jumpto' => 'پئرستن د',
+'jumptonavigation' => 'ناوگشتن',
+'jumptosearch' => 'پی جوری',
+'pool-errorunknown' => 'خطا ناشناس',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
+'aboutsite' => 'دباره {{SITENAME}}',
+'aboutpage' => 'پروجه:دباره',
+'copyrightpage' => '{{ns:پروجه}}:کپی رایت',
+'currentevents' => 'پيشومدل تازه باو',
+'currentevents-url' => 'پروجه:پيشومدل تازه باو',
+'disclaimers' => 'منكرون',
+'disclaimerpage' => 'پروجه:منكر بيئن كاروريا',
+'edithelp' => 'هومياری سی ويرايشت',
+'helppage' => 'هومياری:محتوا',
+'mainpage' => 'سرآسونه',
+'mainpage-description' => 'سرآسونه',
+'policy-url' => 'پروجه:خط و مش',
+'portal' => 'تلگه جمی',
+'portal-url' => 'پروجه:تلگه جمی',
+'privacy' => 'رهبرد رازداری',
+'privacypage' => 'پروجه: خط مشی راز واداشتن',
+
+'badaccess' => 'خطا :اجازه بئیر',
+'badaccess-group0' => 'شما اجازه انجوم کاری که حاستیت نارین',
+
+'versionrequired' => 'یه نسقه د نیازمنیا ویکی رسانه
+$1',
+
+'ok' => 'خوئه',
+'retrievedfrom' => 'بازيافته د"$1"',
+'youhavenewmessages' => 'شما داريت $1($2)',
+'newmessageslink' => 'پيغوما تازه',
+'newmessagesdifflink' => 'آلشت آخری',
+'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
+'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
+'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
+'editsection' => 'ويرايشت',
+'editold' => 'ويرايشت',
+'viewsourceold' => 'سرچشمه نه بوينيت',
+'editlink' => 'ويرايشت',
+'viewsourcelink' => 'سرچشمه نه بوينيت',
+'editsectionhint' => 'ويرايشت يه بشق:$1',
+'toc' => 'محتوايا',
+'showtoc' => 'نشو دائن',
+'hidetoc' => 'قام كردن',
+'collapsible-collapse' => 'جم كردن',
+'collapsible-expand' => 'وا كردن',
+'thisisdeleted' => 'دیئن یا ورگنين $1?',
+'viewdeleted' => 'دیئن$1?',
+'feedlinks' => 'غذا دهنه:',
+'site-rss-feed' => 'خورخو RSS سی $1',
+'site-atom-feed' => 'خور حون Atom سی $1',
+'page-rss-feed' => 'خورخو RSS سی «$1»',
+'page-atom-feed' => 'خور حون Atom سی $1',
+'red-link-title' => '$1(بلگه وجود ناره)',
+'sort-descending' => 'كم بيئن منظم',
+'sort-ascending' => 'زياد بيئن منظم',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'بلگه',
+'nstab-user' => 'بلگه كارور',
+'nstab-media' => 'بلگه رسانه',
+'nstab-special' => 'بلگيا ويجه',
+'nstab-project' => 'بلگه پروجه',
+'nstab-image' => 'فاين',
+'nstab-mediawiki' => 'پيغوم',
+'nstab-template' => 'قالو',
+'nstab-help' => 'بلگه هومياری',
+'nstab-category' => 'دسه',
+
+# Main script and global functions
+'nosuchaction' => 'چنو كاری وجود ناره',
+'nosuchspecialpage' => 'چنو بلگه خاصی وجود ناره',
+
+# General errors
+'error' => 'خطا',
+'databaseerror' => 'خطا د جاگه دونسمنيا',
+'databaseerror-textcl' => 'خطاجست گرتن پايگاه دونسمنيا پيشومد كرده',
+'databaseerror-query' => 'نوم گشتن: $1',
+'databaseerror-function' => 'تابع:$1',
+'databaseerror-error' => 'خطا: $1',
+'laggedslavemode' => 'زنهار:بلگه شايت شومل روزامديا تازه باو نبوئه',
+'readonly' => 'جاگه دونسمنيا بسه بيه',
+'missing-article' => 'پاگا داده نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
+معمولند یه سی یه که فرخ ویرگار رئته دش بیه پاک بیه.',
+'missingarticle-rev' => '(دوواره ديئن#: $1)',
+'missingarticle-diff' => '(فرخ: $1، $2)',
+'internalerror' => 'خطا داخلی',
+'internalerror_info' => 'خطا داخلی:$1',
+'filecopyerror' => 'نبوئه فایل $1 د $2 کپی بوئه',
+'filerenameerror' => 'نبوئه فایل $1 د $2 نوم آلشت بوئه',
+'filedeleteerror' => 'نبوئه فایل $1 پاک بوئه',
+'filenotfound' => 'نتونیت فایل $1 پیدا بکید',
+'formerror' => 'خطا:نبوئه فرم وه مو بئيت',
+'cannotdelete-title' => 'نبوئه بلگه $1 حذف بو',
+'badtitle' => 'موضو گن',
+'badtitletext' => 'عنوان بلگه حاسته بیه معتور نی،یا یه گل مئن زونی یا مئن ویکی عنوان غلطه.
+یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن',
+'viewsource' => 'سرچشمه نه بوينيت',
+'viewsource-title' => 'سرچشمه $1 بوينيت',
+'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
+'mycustomjsprotected' => 'شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید',
+'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
+'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
+'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
+'exception-nologin' => 'نبوئه وارد بوئيد',
+
+# Virus scanner
+'virus-scanfailed' => 'زل گشتن شکست حرد',
+'virus-unknownscanner' => 'ويروس كش ناآشگار',
+
+# Login and logout pages
+'welcomeuser' => 'خوش اومايت،$1!',
+'yourname' => 'نوم كاروری:',
+'userlogin-yourname' => 'نوم كاروری',
+'userlogin-yourname-ph' => 'نوم كاروری تو نه وارد بكيد',
+'createacct-another-username-ph' => 'نوم كاروری ته وارد كو',
+'yourpassword' => 'پاسورد:',
+'userlogin-yourpassword' => 'رمز',
+'userlogin-yourpassword-ph' => 'رمز بزه',
+'createacct-yourpassword-ph' => 'رمزه بزه',
+'yourpasswordagain' => 'دوواره رمز بزه',
+'createacct-yourpasswordagain' => 'رمز محكم كو',
+'createacct-yourpasswordagain-ph' => 'دوواره رمز بزه',
+'remembermypassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
+'userlogin-remembermypassword' => 'منه مئن سيستم وادار',
+'userlogin-signwithsecure' => 'د وصل بيئن امن استفاده كو',
+'password-change-forbidden' => 'شما نتونید پاسوردیانه د ای ویکی آلشت بکید',
+'login' => 'اومائن',
+'nav-login-createaccount' => ' اومائن د سيستم/راس كردن حساو',
+'loginprompt' => 'شما وا کوکیانه سی اومائن د {{SITENAME}} کوکیانه فعال بکید.',
+'userlogin' => ' اومائن د سيستم/راس كردن حساو',
+'userloginnocreate' => 'اومائن',
+'logout' => 'رئتن',
+'userlogout' => 'د سيستم دراومائن',
+'notloggedin' => 'نبوئه وارد بوئيد',
+'userlogin-noaccount' => 'یه گل حساو ناریت؟',
+'userlogin-joinproject' => 'وصل بوييت {{SITENAME}}',
+'nologin' => 'حساو كاروری ناريت؟$1',
+'nologinlink' => 'يه گل حساو راست بكيد',
+'createaccount' => 'حساو راست بكيد',
+'gotaccount' => 'ایسنی حساو کاروری داریتو؟$1',
+'gotaccountlink' => 'اومائن',
+'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
+'userlogin-resetpassword-link' => 'هنی رمز وارد بكيد',
+'helplogin-url' => 'هومياری:د حالت اومائن د سيستم',
+'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
+'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
+'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
+'createacct-emailrequired' => 'نشونی ايميل',
+'createacct-emailoptional' => 'نشونی ايميل',
+'createacct-email-ph' => 'نوم نشون ايميلتونه وارد بكيت',
+'createacct-another-email-ph' => 'يه گل ايميل وارد بكيت',
+'createacct-realname' => 'نوم راستكی(مژبوری نيئ)',
+'createaccountreason' => 'دليل',
+'createacct-reason' => 'دليل',
+'createacct-reason-ph' => 'سی چی شما داريتو يه گل حساو هنی راس می كيد',
+'createacct-captcha' => 'وارسی امنيت دار بين',
+'createacct-imgcaptcha-ph' => 'متنی نه كه د وارو ميئنيت وارد بكيد',
+'createacct-submit' => 'حساو خوتونه راس بكيد',
+'createacct-another-submit' => 'يه گل حساوهنی راست بكيد',
+'createacct-benefit-heading' => '{{نوم مالگه}} وه دس خلکی چی شما راس بیه.',
+'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتا}}',
+'badretype' => 'پاسوردی که شما دئیته مطاوقت ناره',
+'userexists' => 'کارور نوم که وارد بیه د ایسه استفاده بوئه.
+لطف بکید یه گل نوم هنی انتخاو بکید',
+'loginerror' => 'خطا اومائن د سيستم',
+'createacct-error' => 'خطا راس كردن حساو',
+'createaccounterror' => 'نبوئه حساو راس بكيد:$1',
+'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
+'nosuchusershort' => 'چنو کاروری وا ای نوم $1 نی ئیش.
+نیسنن تونه دوواره نئری بکیتو',
+'nouserspecified' => 'شما باید یه نوم کارور اختصاص بئیتو',
+'login-userblocked' => 'کارور قلف بیه.وامین اومائن اجازه نی ئن',
+'wrongpassword' => 'پاسورد غلط وارد بیه.
+هنی تلاش بکید',
+'wrongpasswordempty' => 'پاسوردی که دئیت حالیه.د نؤ تلاش بکیت',
+'passwordtooshort' => 'پاسورد با حداقل {{PLURAL:$1|1 character|$1 characters}} با',
+'password-name-match' => 'پاسوردتو با د نوم کاروریتو فرخ داشتوه',
+'password-login-forbidden' => 'وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.',
+'mailmypassword' => 'رمز هنی نه ايميل بكيد',
+'passwordremindertitle' => 'پاسورد موقت تازه سی {{SITENAME}}',
+'noemailcreate' => 'شما باید یه نشونی نومه معتور فراهم بکید',
+'mailerror' => 'خطا داره کل موئه:$1',
+'emailconfirmlink' => 'نشونی ايملتو نه محكم بكيد',
+'emaildisabled' => 'ای مالگه نتونه ایمیل بفرسنه',
+'accountcreated' => 'حساو راس بی',
+'createaccount-title' => 'حساو راس کرده سی {{SITENAME}}',
+'login-abort-generic' => 'اومائن وامین تو شکست حرد-شکست حرده',
+'loginlanguagelabel' => 'زون:$1',
+
+# Email sending
+'user-mail-no-addy' => 'سی کل کردن ایمیل بی نشونه ایمیل صورت گرته',
+
+# Change password dialog
+'resetpass' => 'پاسورد نه آلشت بكيت',
+'resetpass_header' => 'پاسورد حساوتونه آلشت بکید',
+'oldpassword' => 'پاسورد قدیمی:',
+'newpassword' => 'پاسورد تازه:',
+'retypenew' => 'رمز تازه نه دوواره بنیسید:',
+'resetpass_submit' => 'پاسور بنیت و وامین بیایت',
+'changepassword-success' => 'پاسورد شما وا موفقیت آلشت بی',
+'resetpass_forbidden' => 'پاسوردیا نتونن آلشت بوئن',
+'resetpass-submit-loggedin' => 'پاسورد نه آلشت بكيت',
+'resetpass-submit-cancel' => 'رد كردن',
+'resetpass-temp-password' => 'رمز موقت:',
+
+# Special:PasswordReset
+'passwordreset-legend' => 'د نۈ وارد كردن رمز',
+'passwordreset-username' => 'نوم كاروری:',
+'passwordreset-email' => 'نشونی ايميل',
+'passwordreset-emailsent' => 'پاسورد هنی سی ایمیل کل بیه.',
+
+# Special:ChangeEmail
+'changeemail' => 'ایمیل تو نه آلشت بکید',
+'changeemail-header' => 'ایمیل حساوتونه آلشت بکید',
+'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
+'changeemail-newemail' => 'نشونی ایمیل تازه',
+'changeemail-none' => '(هيش كوم)',
+'changeemail-submit' => 'آلشت کردن ایمیل',
+'changeemail-cancel' => 'رد كردن',
+
+# Edit page toolbar
+'bold_sample' => 'متن توپر بيه',
+'bold_tip' => 'متن توپر بيه',
+'italic_sample' => 'نوشته كج كوله',
+'italic_tip' => 'نوشته كج كوله',
+'link_sample' => 'عنوان لينك',
+'link_tip' => 'لینک مئن ون',
+'extlink_sample' => 'http://www.example.com نوم ديس ون',
+'extlink_tip' => 'هوم پیوند خارجی(د ویر داشتو)',
+'headline_sample' => 'سرخط نوشته',
+'headline_tip' => 'قدم 2 خط سر ون',
+'nowiki_sample' => 'د ایچه یه گل متن بی شلک وارد بکید',
+'nowiki_tip' => 'شلک ویکی نه ندید بگر',
+'image_tip' => 'فایل محاط بيه',
+'media_tip' => 'فایل هوم پیوند',
+'sig_tip' => 'امضا شما و برچسو وخت',
+'hr_tip' => 'خط افق ونه(سوا سوا دش استفاده کو)',
+
+# Edit pages
+'summary' => 'چكسته',
+'minoredit' => 'يه ويرايشت كؤچكيه',
+'watchthis' => 'ديئن ای بلگه',
+'savearticle' => 'بلگه ضبط بوئه',
+'preview' => 'پيش سيل',
+'showpreview' => 'پيش نمائش نشون بيئه',
+'showlivepreview' => 'پیش سیل زنه',
+'showdiff' => 'آلشتيانه نشون بيئه',
+'anoneditwarning' => 'زنهار شما وامین نیومایته.
+نشونی آی پی تو د ویرگار ویرایشت ای بلگه ضفط بوئه',
+'missingcommenttext' => 'لطفن د ایچه نظر بیئتو',
+'summary-preview' => 'چکسته پیش سیل:',
+'blockedtitle' => 'كارور قلف بيه',
+'blockednoreason' => 'هیژ دلیلی دئه نبیه',
+'whitelistedittext' => 'شما باید $1 سی ویرایشت بلگیا',
+'nosuchsectiontitle' => 'نبوئه بشخ پیدا بوئه',
+'loginreqtitle' => 'وامین اومائن لازمه',
+'loginreqlink' => 'اومائن',
+'accmailtitle' => 'پاسورد کل بی',
+'newarticle' => 'تازه',
+'newarticletext' => 'شما وادما هوم پیوندی هئیت که وجود ناره.
+سی راس کردن بلگه.شرو د نیسنن مئن جعوه هاری بکید(سیل[[{{MediaWiki:Helppage}}|]] سی دونسمنی بیشتر بکید).
+ار شما سی اشتوا کردن هایئن ایچه، دگمه وادما رئتن مرورگر تونه بپورنیت.',
+'noarticletext' => 'د تازه یا د ای بلگه متن نی.
+شما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هنی پی جوری بوئه logs]</span>
+ [{{fullurl:{{FULLPAGENAME}}|action=edit}} یای ای بلگه نه ویرایشت بکیدpage]</span>.',
+'noarticletext-nopermission' => 'د تازه یا د ای بلگه متن نی.
+شما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هنی پی جوری بوئه logs]</span> اما شما حق ناریتو ای بلگه نه راس بکیت',
+'updated' => '(تازه بيه)',
+'note' => "'''نيسنن:'''",
+'previewnote' => 'فقط ای پیش سیل د ویرتو با.
+آلشتیاتو هنی ذخیره نبیه.',
+'continue-editing' => 'رو د راساگه ویرایشت',
+'editing' => 'د حالت ويرايشت$1',
+'creating' => 'راس كردن $1',
+'editingsection' => 'د حال ویرایشت$1(بشخ)',
+'editingcomment' => 'د حال ویرایشت$1(بشخ تازه)',
+'yourtext' => 'متن شما',
+'yourdiff' => 'فرخيا',
+'templatesused' => '{{جمی:$1|قالو|قالویا}}د ای بلگه استفاده بیه:',
+'template-protected' => '(حمايت بيه)',
+'template-semiprotected' => '(نيم-حفاظت بيه)',
+'hiddencategories' => 'ای بلگه يه اندوم د{{PLURAL:$1|1 hidden category|$1 hidden categories}}: هئ',
+'permissionserrors' => 'خطا اجازه دئین',
+'permissionserrorstext-withaction' => 'شما سی $2 اجازه ناریت
+سی دمال کردن{{PLURAL:$1|reason|reasons}}:',
+'recreate-moveddeleted-warn' => "'''زنهار شما بلگه ای که وادما پاک بیه هنی راس کردیته'''
+شما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.
+پاک بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
+'moveddeleted-notice' => 'ای بلگه پاک بیه.
+پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
+'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
+
+# Content models
+'content-model-wikitext' => 'ويكی متن',
+'content-model-text' => 'متن ساده',
+'content-model-javascript' => 'جاوا اسكريپت',
+'content-model-css' => 'سی اس اس',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => 'زنئار قالو شومل انازه ای یه که فره گپه.پاره ای د قالویا نه د بر نگره',
+'post-expand-template-inclusion-category' => 'بلگیا شومل قالوی ین که انازش د حد اومائه وه در',
+'post-expand-template-argument-warning' => 'زنهار ای بلگه شومل حداقل یه قالو سی چک چنه یه که انازه فره گپه.
+گپسنیا پاک بینه.',
+'post-expand-template-argument-category' => 'بلگه شومل قالو چک چنیا د بین رئته',
+
+# History pages
+'viewpagelogs' => 'سی ای بلگه بوینتو.',
+'currentrev-asof' => 'آخرين دووار ديئن چی $1',
+'revisionasof' => 'دوواره ديئن $1',
+'revision-info' => 'دوواره سیل بیه چی $1 وا $2',
+'previousrevision' => 'اصلاح دمايی',
+'nextrevision' => 'تازه ترن دوبار دیئن',
+'currentrevisionlink' => 'آخرین دوواره دیئن',
+'cur' => 'تازه باو',
+'next' => 'نيایی',
+'last' => 'دمايی',
+'page_first' => 'اولی',
+'page_last' => 'آخر',
+'history-fieldset-title' => 'ویرگار مرور ون',
+'history-show-deleted' => 'فقط پاك بيه',
+'histfirst' => 'قديمي تري',
+'histlast' => 'تازه تري',
+'historyempty' => '(حالی)',
+
+# Revision feed
+'history-feed-item-nocomment' => '$1 د
+$2',
+
+# Revision deletion
+'rev-delundel' => 'آلشت وضئيت ديئن',
+'rev-showdeleted' => 'نشو دائن',
+'revdelete-show-file-submit' => 'هری',
+'revdelete-radio-set' => 'هری',
+'revdelete-radio-unset' => 'نه',
+'revdelete-log' => 'دلیل:',
+'revdel-restore' => 'آلشت وضئيت ديئن',
+'revdel-restore-deleted' => 'پاك كردن مراجعيا',
+'revdel-restore-visible' => 'مراجعات ديئنی',
+'pagehist' => 'ويرگار بلگه',
+'deletedhist' => 'ویرگار پاک بیه',
+'revdelete-reasonotherlist' => 'دلیل هنی',
+'revdelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+
+# History merging
+'mergehistory-from' => 'بلگه سرچشمه:',
+'mergehistory-into' => 'بلگه مقصد:',
+'mergehistory-reason' => 'دليل:',
+
+# Merge log
+'revertmerge' => 'بی لوئه',
+
+# Diffs
+'history-title' => 'دوواره دیئن ویرگار$1',
+'lineno' => 'خط $1:',
+'compareselectedversions' => 'دوبار دیئنیایی که انتخاو بینه مقایسه بکیتو',
+'editundo' => 'رد كردن',
+'diff-empty' => '(بی فرق)',
+'diff-multi' => '({{جمی:$1|یه گل دوواره دیئن مینجایی|$1مینجا دوواره دیئنیا}} وا {{جمی:$2|یه کارور|$2 کاروریا}} نشو دئه نی)',
+
+# Search results
+'searchresults' => 'نتيجه يا پی جوری',
+'searchresults-title' => 'نتيجه يا پی جوری سی "$1"',
+'searchsubtitleinvalid' => 'شما پی جوریت سی',
+'prevn' => 'وادما {{PLURAL:$1|$1}}',
+'nextn' => 'نيايی {{PLURAL:$1|$1}}',
+'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
+'nextn-title' => 'نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
+'shown-title' => 'نشون دائن $1 {{PLURAL:$1|نتيجه|نتيجه}} سی همه بلگه',
+'viewprevnext' => 'ديئن ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'گزينه يا هنی پی جوری',
+'searchmenu-exists' => "'''ایچه بلگه ای هئ وه نوم\"[[:\$1]]\" که ها د ای ویکی'''",
+'searchmenu-new' => "'''ای بلگه نه راس كو \"[[:\$1]]\" د ای ويكي!'''",
+'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' => 'نوم جايا نوم ديار بگرد',
+'search-result-size' => '$1 ({{PLURAL:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
+'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 فایل|$3 فایلیا}})',
+'search-redirect' => '(ورگشتن $1)',
+'search-section' => '(بشق $1)',
+'search-suggest' => 'منظورت يه بی:$1',
+'search-interwiki-more' => '(بیشتر)',
+'search-relatedarticle' => 'مرتوط',
+'searchrelated' => 'مرتوط',
+'searchall' => 'همه',
+'showingresultsheader' => "{{PLURAL:$5|نتيجه '''$1''' د'''$3'''|نتيجه يا '''$1 - $2''' د'''$3'''}} سيli'''$4'''",
+'search-nonefound' => 'هیژ نتیجه یی سی پی جست تو مطاوقت نکرده',
+'powersearch' => 'پی جوری پیشبرده',
+'powersearch-legend' => 'پی جوری پیشبرده',
+'powersearch-field' => 'پی جوری سی',
+'powersearch-togglelabel' => 'چك كردن:',
+'powersearch-toggleall' => 'همه',
+'powersearch-togglenone' => 'هيش كوم',
+'search-external' => 'پی جوری د در',
+
+# Preferences page
+'preferences' => 'خصوصيات هنی',
+'mypreferences' => 'خصوصيات هنی',
+'prefs-edits' => 'شماره ویرایشتا:',
+'prefsnologin' => 'نبوئه وارد بوئيد',
+'changepassword' => 'پاسورد نه آلشت بكيت',
+'prefs-skin' => 'پوست',
+'skin-preview' => 'پیش سیل',
+'prefs-watchlist' => 'سیل برگ',
+'prefs-misc' => 'شيوسن',
+'prefs-resetpass' => 'پاسورد نه آلشت بكيت',
+'saveprefs' => 'ذخيره كردن',
+'prefs-editing' => 'د حالت ويرايشت',
+'rows' => 'رديفيا:',
+'columns' => 'ستينا:',
+'searchresultshead' => 'پی جوری',
+'timezonelegend' => 'وخت راساگه',
+'localtime' => 'وخت ولاتی:',
+'timezoneuseserverdefault' => 'وخت راساگه',
+'servertime' => 'وخت سرور:',
+'timezoneregion-africa' => 'افرقا',
+'timezoneregion-america' => 'امركا',
+'timezoneregion-antarctica' => 'قطو هار ونه',
+'timezoneregion-arctic' => 'قطو شمال',
+'timezoneregion-asia' => 'آسيا',
+'timezoneregion-atlantic' => 'جهون آو آتلانتیک',
+'timezoneregion-australia' => 'استراليا',
+'timezoneregion-europe' => 'اوروپا',
+'timezoneregion-indian' => 'جهوناو هند',
+'timezoneregion-pacific' => 'جهوناو آروم',
+'prefs-searchoptions' => 'پی جوری',
+'prefs-namespaces' => 'نوم جایا',
+'default' => 'پيش فرض',
+'prefs-files' => 'فايلا',
+'youremail' => 'ايميل:',
+'yourrealname' => 'نوم راستكی:',
+'yourlanguage' => 'زون:',
+'email' => 'پیومک برقی',
+'prefs-help-email' => 'نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت',
+'prefs-help-email-others' => 'شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.
+نشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.',
+'prefs-editor' => 'ويرايشتگر',
+'prefs-preview' => 'پیش سیل',
+
+# User rights
+'userrights-reason' => 'دليل:',
+
+# Groups
+'group' => 'گرو',
+'group-bot' => 'بتیا',
+'group-all' => '(همه)',
+
+# Special:Log/newusers
+'newuserlogpage' => 'راس بیه وا کارور',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'ای بلگه نه ويرايشت بكيد',
+
+# Recent changes
+'nchanges' => '$1 {{جمی:$1|آلشت|آلشتیا}}',
+'recentchanges' => 'تغيريا تازه',
+'recentchanges-legend' => 'گزينه يا آلشتيا تازه',
+'recentchanges-feed-description' => 'دو بیشتر آلشتیا تازباو نه د ویکی که ها د هوال حون پیگری کو.',
+'recentchanges-label-newpage' => 'ای ويرايشت يه بلگه تازه راس كرده',
+'recentchanges-label-minor' => 'يه ويرايشت كؤچكيه',
+'recentchanges-label-bot' => 'ای ويرايشت نه يه بوت انجوم ديئه',
+'recentchanges-label-unpatrolled' => 'ای ويرايشت هنی تيه واداشت نبيه',
+'rcnote' => "د هار{{جمی:$1|هئ'''1''' آلشت|آخری هئ ن '''$1'''آلشتیا}}د آخر{{جمی:$2|رو|'''$2''' روزیا}}, چی $5, $4.",
+'rcnotefrom' => 'د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)',
+'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
+'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
+'rcshowhidebots' => '$1 رواتيا یا بوتيا',
+'rcshowhideliu' => '$1 کارورياداخل بيه',
+'rcshowhideanons' => '$1 کاروريا ناشناس',
+'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
+'rcshowhidemine' => 'ويرايشتيا مه$1',
+'rclinks' => 'آخرین آلشتیا $1 نشو بیه د اخرین روزیا $2',
+'diff' => 'فرخ',
+'hist' => 'ويرگار',
+'hide' => 'قام كردن',
+'show' => 'نشون دائن',
+'minoreditletter' => 'م',
+'newpageletter' => 'ن',
+'boteditletter' => 'ب',
+'rc-enhanced-expand' => 'جزيات نشون بيئه',
+'rc-enhanced-hide' => 'جزياته قام كو',
+
+# Recent changes linked
+'recentchangeslinked' => 'تغيريا مرتبط',
+'recentchangeslinked-toolbox' => 'تغيريا مرتبط',
+'recentchangeslinked-title' => 'آلشتيا مرتوط وا $1',
+'recentchangeslinked-summary' => 'ای نوم گه تازه د بلگیایی که وا بلگیا ویجه هوم پیوند بینه آلشت بیه(یا سی اندومیا دسه بنی بیه)
+بلگیا یی که هان [[Special:Watchlist|your watchlist]]و گپ بینه',
+'recentchangeslinked-page' => 'نوم بلگه:',
+'recentchangeslinked-to' => 'آلشتیایی که د بلگه یا هوم پیوند بینه وه جا بلگه دئیه بیه نشو بیه',
+
+# Upload
+'upload' => 'بلم گير كردن فايلا',
+'uploadlogpage' => 'سوارکرد',
+'filedesc' => 'چكسته',
+'uploadedimage' => 'سوارکرد"[[$1]]"',
+
+'license' => 'ليانس دار بيئن',
+'license-header' => 'د شكل ليسانس دار بيئن',
+
+# File description page
+'file-anchor-link' => 'فايل',
+'filehist' => 'ويرگار فايل',
+'filehist-help' => 'ری ويرگاريا بپورنيت تا نسقه مرتوط بونيت.',
+'filehist-revert' => 'ورگنین',
+'filehist-current' => 'تازه باو',
+'filehist-datetime' => 'ويرگار/وخت',
+'filehist-thumb' => 'عسگ كؤچك بيه',
+'filehist-thumbtext' => 'كؤچك كردن سی نسقه چی $1',
+'filehist-user' => 'كارور',
+'filehist-dimensions' => 'بعديا',
+'filehist-comment' => 'نظر',
+'imagelinks' => 'استفاده د فايل',
+'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
+'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
+'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
+توضی دباره[$2 file description page] د هار نشو دئئه بیه',
+
+# Random page
+'randompage' => 'بلگه بختكی',
+
+# Statistics
+'statistics' => 'آماريا',
+
+# Miscellaneous special pages
+'nbytes' => '$1{{PLURAL:$1|كلی|بايت|بايت}}',
+'nmembers' => '$1 {{PLURAL:$1|اندوم|اندوميا}}',
+'prefixindex' => 'همه بلگيا وا پيشون',
+'usercreated' => '{{جنسیت:$3|راس بیه}}د $1 at $2',
+'newpages' => 'بلگيا نو',
+'move' => 'جاوه جا بوئيت',
+'pager-newer-n' => '{{جمی:$1|وانها تر 1وانها تر $1}}',
+'pager-older-n' => '{{جمی:$1|گپسالتر 1|گپسالتر $1}}',
+
+# Book sources
+'booksources' => 'سرچشمه يل كتاو',
+'booksources-search-legend' => 'پی جوری سی سرچشمه یا کتاو',
+'booksources-go' => 'رو',
+
+# Special:AllPages
+'allpages' => 'همه بلگيا',
+'alphaindexline' => '$1 د
+$2',
+'allarticles' => 'همه بلگيا',
+'allpagessubmit' => 'رو',
+
+# Special:Categories
+'categories' => 'دسه يا',
+
+# Special:LinkSearch
+'linksearch-line' => '$1 داره د $2 هوم پیوند بوئه',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(نوم گه اندومیا)',
+
+# Email user
+'emailuser' => 'ای كارور نه ايميل كو',
+
+# Watchlist
+'watchlist' => 'سیل برگ',
+'mywatchlist' => 'سیل برگ',
+'watchlistfor2' => 'سي $1 $2',
+'watch' => 'سيل كردن',
+'unwatch' => 'ديه نبيه',
+'watchlist-details' => '{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .',
+'wlshowlast' => 'آخرین$1 ساعتیا $2و روزیا $3 نشو بیئه',
+'watchlist-options' => 'گزینیا سیل برگ',
+
+# Delete
+'actioncomplete' => 'عملكرد كامل بيه',
+'actionfailed' => 'عملكرد شكست حرده',
+'dellogpage' => 'لاگ پاك كردن',
+
+# Rollback
+'rollbacklink' => 'ورگشتن',
+
+# Protect
+'protectlogpage' => 'حفاظت کردن',
+'protectedarticle' => 'حفاظت بيه [[$1]]',
+
+# Undelete
+'undeletelink' => 'بوين/دوواره آماده با',
+'undeleteviewlink' => 'ديئن',
+
+# Namespace form on various pages
+'namespace' => 'نوم جا:',
+'invert' => 'انتخاو برعسك بوئه',
+'blanknamespace' => 'اصلی',
+
+# Contributions
+'contributions' => '{{جنس:$1|کارور}} هومیاریا',
+'contributions-title' => 'هومياري كارور سي $1',
+'mycontris' => 'هومياری',
+'contribsub2' => 'سي {{جنسيت:$3|$1}} ($2)',
+'uctop' => '(تازه باو)',
+'month' => 'د ما(یا زیتر)',
+'year' => 'د سال',
+
+'sp-contributions-newbies' => 'فقط هومیاری یایی که د حساو تازه بیه نشون بئه',
+'sp-contributions-blocklog' => 'قلف',
+'sp-contributions-uploads' => 'سواركرديا',
+'sp-contributions-talk' => 'چك چنه',
+'sp-contributions-search' => 'سی هومیاریا پی جور با',
+'sp-contributions-username' => 'نوم نشون آی پی يا نوم كاروری:',
+'sp-contributions-toponly' => 'فقط ویرایشتیایی که جزئه آخرین دوواره دیئن هئین نشو بیه',
+'sp-contributions-submit' => 'پی جوری',
+
+# What links here
+'whatlinkshere' => 'كؤم ديس ونيا هان ايچه',
+'whatlinkshere-title' => 'بلگه ای که د $1 هوم پیوند بیه',
+'whatlinkshere-page' => 'بلگه',
+'linkshere' => "بلگیا نهایی د '''[[:$1]]''' هوم پیوند بیه",
+'nolinkshere' => "هیژ بگله ای د '''[[:$1]]''' هوم پیوند نبیه",
+'isredirect' => 'بلگه دوباره ورگشتن',
+'istemplate' => 'نشونی دئن',
+'isimage' => 'فایل هوم پیوند',
+'whatlinkshere-prev' => '{{جمی:$1|دمایی|دمایی $1}}',
+'whatlinkshere-next' => '{{جمی:$1|نهایی|نهایی $1}}',
+'whatlinkshere-links' => 'هوم پیوندیا',
+'whatlinkshere-hideredirs' => '$1 دوواره د نشونی ورگشتن',
+'whatlinkshere-hidetrans' => '$ا چن نتیجه ای',
+'whatlinkshere-hidelinks' => 'هوم پیوندیا $1',
+'whatlinkshere-hideimages' => 'فایل هوم پیوندیا $1',
+'whatlinkshere-filters' => 'فيلتريا',
+
+# Block/unblock
+'ipboptions' => '2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,حد ناره:حد ناره',
+'ipblocklist' => 'كاروريا منع بيه',
+'blocklink' => 'بسته بوئه',
+'unblocklink' => 'بی قطی',
+'change-blocklink' => 'اجازه نديئن سی آلشت',
+'contribslink' => 'هومكاری',
+'blocklogpage' => 'قلف',
+'blocklogentry' => ' [[$1]] وا یه گل وخت تموم بیئن $2 و $3 قلف بیه',
+'block-log-flags-nocreate' => 'حساو راس کردن عاجز بیه.',
+
+# Move page
+'movelogpage' => 'جاوه جا کردن',
+'revertmove' => 'لرستن',
+
+# Export
+'export' => 'وه صحرا ديئن بلگيا',
+
+# Namespace 8 related
+'allmessagesname' => 'نوم',
+'allmessagesdefault' => 'سفارشت متنی پيش فرض',
+
+# Thumbnails
+'thumbnail-more' => 'گپ كردن',
+'thumbnail_error' => 'خطا د راس بیئن بن کلئکی:$1',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'بلگه كارورتو',
+'tooltip-pt-mytalk' => 'بلگه قسه كردن شما',
+'tooltip-pt-preferences' => 'اولويتيا شما',
+'tooltip-pt-watchlist' => 'نوم نوشت د بلگه يايی كه شما آلشتاشونه پيگئری ميكيد',
+'tooltip-pt-mycontris' => 'يه گل د هومياريا شما',
+'tooltip-pt-login' => 'توصيه بو كه وارد بوئين، اما مجبوری ني',
+'tooltip-pt-logout' => 'د سيستم دراومائن',
+'tooltip-ca-talk' => 'قسه دباره محتوا بلگه',
+'tooltip-ca-edit' => 'شما تونيد ای بلگه نه ويرايشت بكيد. لطف بكيد د دگمه پيش ديئن پيش د ذخيره كردن استفاده بكيد',
+'tooltip-ca-addsection' => 'بشخ تازه نه شرو كو',
+'tooltip-ca-viewsource' => 'ای بلگه حفاظت بيه.
+شما تونيت سرچمه ش بئوينيت',
+'tooltip-ca-history' => 'دوواره ديئن ای بلگه',
+'tooltip-ca-protect' => 'ای بلگه نه حفاظت بكيد',
+'tooltip-ca-delete' => 'ای بلگه نه حذف بكيد',
+'tooltip-ca-move' => 'ای بگله نه جا وه جا كو',
+'tooltip-ca-watch' => 'اضاف کردن ای بلگه وه نوم نوشت پیگئریاتو',
+'tooltip-ca-unwatch' => 'ورداشتن ای بلگه وه نوم نوشت پیگئریاتو',
+'tooltip-search' => 'پی جوری {{SITENAME}}',
+'tooltip-search-go' => 'رؤ د بلگه ای که یه نوم راستکی ها مینش الوت ار دش بوئه',
+'tooltip-search-fulltext' => 'بلگيانه سی چنو متنی بگرد',
+'tooltip-p-logo' => 'سرآسونه نه بونيت',
+'tooltip-n-mainpage' => 'سرآسونه نه بونيت',
+'tooltip-n-mainpage-description' => 'ديئن سرآسونه',
+'tooltip-n-portal' => 'دباره پروجه،ايسا ترين(تونيت) چی بكيد، كجه چيانه بجورين',
+'tooltip-n-currentevents' => 'ساوند دونسمنديايی كه هان د پيشومدل تازه باو پيدا كو',
+'tooltip-n-recentchanges' => 'يه نوم جاوند سی تغيرا تازه مئن ويكی',
+'tooltip-n-randompage' => 'سوار كرد بلگه بختكی',
+'tooltip-n-help' => 'جاگه سی فهمسن',
+'tooltip-t-whatlinkshere' => 'سيائه تمؤم بلگيایی كه ايچه چسب ون دارن',
+'tooltip-t-recentchangeslinked' => 'تغيريا تازه باو مئن بلگيايي كه د ای بلگه چسب وند بيئنه',
+'tooltip-feed-atom' => 'تغذيه كؤچك سی ای بلگه',
+'tooltip-t-contributions' => 'یه نوم گه د هومیاریا ای کارور',
+'tooltip-t-emailuser' => 'سی ای كارور ايميل كل كو',
+'tooltip-t-upload' => 'بلم گير كردن فايلا',
+'tooltip-t-specialpages' => 'سيائه تمؤم بلگيا خاص',
+'tooltip-t-print' => 'نسقه چاپ بيئنی سی ای بلگه',
+'tooltip-t-permalink' => 'چسب ون هميشئی د دوواره بينی ای بلگه',
+'tooltip-ca-nstab-main' => 'ديئن محتوا بلگه',
+'tooltip-ca-nstab-user' => 'ديئن بلگه كارور',
+'tooltip-ca-nstab-special' => 'اي بلگه ويجه يه، شما نتونيت خود اي بلگه نه ويرايشت بكيد',
+'tooltip-ca-nstab-project' => 'ديئن بلگه پروجه',
+'tooltip-ca-nstab-image' => 'ديئن بلگه فايل',
+'tooltip-ca-nstab-template' => 'ديئن قالو',
+'tooltip-ca-nstab-category' => 'ديئن بلگه دسه بنی',
+'tooltip-minoredit' => 'یه نه د عنوان حیرده ویرایشت ثوت کو',
+'tooltip-save' => 'آلشتياتونه ذخيره بكيد',
+'tooltip-preview' => 'پیش سیل آلشتیاتو،لطفن پیش د ذخیره دش استفاده بکیتو',
+'tooltip-diff' => 'آلشتیا نه که شما د ای متن راس کردیته نشو بیئه',
+'tooltip-compareselectedversions' => 'فرخیا مینجا دو تا د دو بار دیئن ای بلگه نه بوینیت',
+'tooltip-watch' => 'ای بلگه نه د سیل برگتو اضاف بکید',
+'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول سی ای بلگه که سی يه كه هومياری نيايی اصلاح بيه وا يه پورنسن',
+'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
+'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
+
+# Browsing diffs
+'previousdiff' => '← ويرايشت كۈهنه تر',
+'nextdiff' => 'ويرايشت تازه تر',
+
+# Media information
+'file-info-size' => '$1 × $2 پیکسل, انازه فایل: $3, MIME نوع: $4',
+'file-nohires' => 'عسك ون بالاتري دش ني',
+'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
+'show-big-image' => 'تموم رخ ون',
+
+# Bad image list
+'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
+
+فقط سرخط يایی که وا * شرو بوئن د وير گرته بوئن. اولی چسب ون مئن هر سرخط، باید چسب ونی وه یک عسگ گن با.
+چسب ونيا نيایی د همو سرخط، وه عنوان چيا استثنادار د وير گرته بوئن',
+
+# Metadata
+'metadata' => 'داديا فره گپ',
+'metadata-help' => 'ای فایل شومل دونسمنیا هنی یه.شایت د دیربین رقم ون یا اسکنری که سی راس کردنشو استفاده بیه،وه ایچه اضاف بیه',
+'metadata-fields' => 'رشته یا گپ دونسمنیا که د ای پیغوم نوم ون بینه شومل بلگه عسگ ن که وختی که جدول گپ دونسمنیا وا بوئه نشون دئیه بوئن.
+چی یا هنی سی یه که پیش فرضن قام بوئن.
+*راست کو
+*مدل
+*دم وخت اصل
+*وخت آشگار
+*اف ان شماره
+*ایزو نرخ من سرعت
+*فوکالنس
+*هنرمن
+*کپی رایت
+*حالت جی پی اس
+*جی پی اس گپ حالت
+*جی پی اس همه حالت',
+
+# External editor support
+'edit-externally' => 'ای فایل سی ویرایشت وه در دیئن کاربردش استفاده بکید',
+'edit-externally-help' => '(بوینیت [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'همه شو',
+'namespacesall' => 'همه شو',
+'monthsall' => 'همه',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'آلشتیا مرتوط نه بوینیت',
+'watchlisttools-edit' => 'سیل برگ بوینیتو و ویرایشت بکید',
+'watchlisttools-raw' => 'سیل برگ نه ردیفی ویرایشت کو',
+
+# Core parser functions
+'duplicate-defaultsort' => 'زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.',
+
+# Special:SpecialPages
+'specialpages' => 'بلگيا ويجه',
+
+# External image whitelist
+'external_image_whitelist' => 'یه خط نه ول بکید چی وه<pre>',
+
+# Special:Tags
+'tag-filter' => 'فيلتر [[Special:Tags|Tag]]:',
+
+);
'mypreferences' => 'Nustatymai',
'prefs-edits' => 'Keitimų skaičius:',
'prefsnologin' => 'Neprisijungęs',
-'prefsnologintext' => 'Jums reikia būti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisijungusiam]</span>, kad galėtumėte keisti savo nustatymus.',
'changepassword' => 'Pakeisti slaptažodį',
'prefs-skin' => 'Išvaizda',
'skin-preview' => 'Peržiūra',
'allmessagesdefault' => 'Pradinis tekstas',
'allmessagescurrent' => 'Dabartinis tekstas',
'allmessagestext' => 'Čia pateikiamas sisteminių pranešimų sąrašas, esančių MediaWiki vardų srityje.
-Aplankykite [//www.mediawiki.org/wiki/Localisation „MediaWiki“ lokaliziciją] ir [//translatewiki.net „translatewiki.net“], jei norite prisidėti prie bendrojo „MediaWiki“ lokalizavimo.',
+Aplankykite [https://www.mediawiki.org/wiki/Localisation „MediaWiki“ lokaliziciją] ir [//translatewiki.net „translatewiki.net“], jei norite prisidėti prie bendrojo „MediaWiki“ lokalizavimo.',
'allmessagesnotsupportedDB' => "Šis puslapis nepalaikomas, nes nuostata '''\$wgUseDatabaseMessages''' yra išjungtas.",
'allmessages-filter-legend' => 'Filtras',
'allmessages-filter' => 'Filtruoti pagal būseną:',
# External editor support
'edit-externally' => 'Atverti išoriniame redaktoriuje',
-'edit-externally-help' => '(Norėdami gauti daugiau informacijos, žiūrėkite [//www.mediawiki.org/wiki/Manual:External_editors diegimo instrukcijas])',
+'edit-externally-help' => '(Norėdami gauti daugiau informacijos, žiūrėkite [https://www.mediawiki.org/wiki/Manual:External_editors diegimo instrukcijas])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'visus',
'version-hook-subscribedby' => 'Užsakyta',
'version-version' => '(Versija $1)',
'version-license' => 'Licencija',
-'version-poweredby-credits' => "Šis projektas naudoja '''[//www.mediawiki.org/ MediaWiki]''', autorystės teisės © 2001-$1 $2.",
+'version-poweredby-credits' => "Šis projektas naudoja '''[https://www.mediawiki.org/ MediaWiki]''', autorystės teisės © 2001-$1 $2.",
'version-poweredby-others' => 'kiti',
'version-credits-summary' => 'Už indėlį kuriant [[Special:Version|MediaWiki]] dėkojame',
'version-license-info' => 'MediaWiki yra nemokama programinė įranga; galite ją platinti ir/arba modifikuoti pagal GNU General Public License, kurią publikuoja Free Software Foundation; taikoma 2-oji licenzijos versija arba (Jūsų pasirinkimu) bet kuri vėlesnė versija.
# Special:SpecialPages
'specialpages' => 'Specialieji puslapiai',
-'specialpages-note' => '----
- * įprastą specialius puslapius.
+'specialpages-note' => ' * įprastą specialius puslapius.
* <span class="mw-specialpagerestricted">tik specialius puslapius.</span>
* <span class="mw-specialpagecached">Talpyklinių specialius puslapius (gali būti pasenusius).</span>',
'specialpages-group-maintenance' => 'Sistemos palaikymo pranešimai',
# External editor support
'edit-externally' => 'Izmaineit itū failu ar uoreju programu',
-'edit-externally-help' => '(Verīs [//www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
+'edit-externally-help' => '(Verīs [https://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'vysys',
'mypreferences' => 'Duhthlanna',
'prefs-edits' => 'Siamţhat zât',
'prefsnologin' => 'I la lût lo',
-'prefsnologintext' => 'Hmangtu duhdàn siam tùrin i <span class="plainlinks"> [{{fullurl:{{#Special:UserLogin}}|returnto=$1}} inziah luh] </span> a ngai.',
'changepassword' => 'Thurûk thlâkna',
'prefs-skin' => 'Vun',
'skin-preview' => 'Enchhinna',
# External editor support
'edit-externally' => 'Pawnlam hmanraw hmanga tihdanglamna',
-'edit-externally-help' => '(Hriat chian lehzualnan [//www.mediawiki.org/wiki/Manual:External_editors bundàn kaihhruaina phek] hi en rawh)',
+'edit-externally-help' => '(Hriat chian lehzualnan [https://www.mediawiki.org/wiki/Manual:External_editors bundàn kaihhruaina phek] hi en rawh)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'a vaiin',
'mypreferences' => 'Izvēles',
'prefs-edits' => 'Izmaiņu skaits:',
'prefsnologin' => 'Neesi iegājis',
-'prefsnologintext' => 'Tev jābūt <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} iegājušam]</span>, lai mainītu lietotāja izvēles.',
'changepassword' => 'Mainīt paroli',
'prefs-skin' => 'Apdare',
'skin-preview' => 'Priekšskats',
'allmessagesdefault' => 'Noklusētais ziņojuma teksts',
'allmessagescurrent' => 'Pašreizējais teksts',
'allmessagestext' => "Šajā lapā ir visu \"'''MediaWiki:'''\" lapās atrodamo sistēmas paziņojumu uzskaitījums.
-Šos paziņojumus var izmainīt tikai admini. Izmainot tos šeit, tie tiks izmainīti tikai šajā mediawiki instalācijā. Lai tos izmainītu visām pārējām, apskatieties [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [//translatewiki.net translatewiki.net].",
+Šos paziņojumus var izmainīt tikai admini. Izmainot tos šeit, tie tiks izmainīti tikai šajā mediawiki instalācijā. Lai tos izmainītu visām pārējām, apskatieties [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [//translatewiki.net translatewiki.net].",
'allmessagesnotsupportedDB' => "Šī lapa nedarbojas, tāpēc, ka '''wgUseDatabaseMessages''' nedarbojas.",
'allmessages-filter-legend' => 'Filtrs',
'allmessages-filter' => 'Filtrēt pēc izmainīšanas statusa:',
# External editor support
'edit-externally' => 'Izmainīt šo failu ar ārēju programmu',
-'edit-externally-help' => '(Skat. [//www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, lai iegūtu vairāk informācijas).',
+'edit-externally-help' => '(Skat. [https://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, lai iegūtu vairāk informācijas).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'visas',
'version-hook-name' => 'Aizķeres nosaukums',
'version-version' => '(Versija $1)',
'version-license' => 'Licence',
-'version-poweredby-credits' => "Šis viki darbojas ar '''[//www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
+'version-poweredby-credits' => "Šis viki darbojas ar '''[https://www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
'version-poweredby-others' => 'citi',
'version-poweredby-translators' => 'translatewiki.net tulkotāji',
'version-credits-summary' => 'Mēs vēlētos izteikt atzinību šīm personām par viņu ieguldījumu [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Īpašās lapas',
-'specialpages-note' => '----
-* Normālas īpašās lapas.
+'specialpages-note' => '* Normālas īpašās lapas.
* <span class="mw-specialpagerestricted">Ierobežotas pieejas īpašās lapas.</span>
* <span class="mw-specialpagecached">Iekešotās īpašās lapas.</span>',
'specialpages-group-maintenance' => 'Uzturēšanas atskaites',
'mypreferences' => '簿註',
'prefs-edits' => '數計:',
'prefsnologin' => '未登簿',
-'prefsnologintext' => '註記須<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登簿]</span>。',
'changepassword' => '易符節',
'prefs-skin' => '面版',
'skin-preview' => '草覽',
'allmessagesdefault' => '慣話文',
'allmessagescurrent' => '今話文',
'allmessagestext' => '此列MediaWiki官話。
-如貢正宗MediaWiki本地化,[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]與[//translatewiki.net translatewiki.net]閱之。',
+如貢正宗MediaWiki本地化,[https://www.mediawiki.org/wiki/Localisation MediaWiki本地化]與[//translatewiki.net translatewiki.net]閱之。',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''閉庫,'''無纂也。",
'allmessages-filter-legend' => '濾',
'allmessages-filter' => '以易濾:',
# External editor support
'edit-externally' => '以外部程式修此文',
-'edit-externally-help' => '(請閱[//www.mediawiki.org/wiki/Manual:External_editors 安裝指引]以知詳情)',
+'edit-externally-help' => '(請閱[https://www.mediawiki.org/wiki/Manual:External_editors 安裝指引]以知詳情)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全',
'version-hook-subscribedby' => '用於',
'version-version' => '(版 $1)',
'version-license' => '牌',
-'version-poweredby-credits' => "此 Wiki 以 '''[//www.mediawiki.org/ MediaWiki]''' 之驅,權 © 2001-$1 $2。",
+'version-poweredby-credits' => "此 Wiki 以 '''[https://www.mediawiki.org/ MediaWiki]''' 之驅,權 © 2001-$1 $2。",
'version-poweredby-others' => '其他',
'version-license-info' => 'MediaWiki乃自由軟件;爾依自由軟件基金會之GNU通用公共授權之款,就此本程序再發佈及/或修;依之二版(自選之)或後之。
# Special:SpecialPages
'specialpages' => '特查',
-'specialpages-note' => '----
-* 準特查。
+'specialpages-note' => '* 準特查。
* <strong class="mw-specialpagerestricted">限特查。</strong>',
'specialpages-group-maintenance' => '護報',
'specialpages-group-other' => '它之奇頁',
'mypreferences' => 'खासमखास',
'prefs-edits' => 'सम्पादनक संख्या',
'prefsnologin' => 'सम्प्रवेशित नै',
-'prefsnologintext' => 'अहाँ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> प्रयोक्ता विकल्प निर्धारण लेल प्रयोग करू।',
'changepassword' => 'कूटशब्द बदलू',
'prefs-skin' => 'रूप',
'skin-preview' => 'पूर्वावलोकन',
'allmessagesdefault' => 'पूर्वनिर्धारित संदेश पाठ',
'allmessagescurrent' => 'अखुनका संदेश पाठ',
'allmessagestext' => 'ई मीडियाविकी नामस्थानमे उपलब्ध संस्थागत संदेशक सूची छी।
-कृपा कऽ देखू [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] आ [//translatewiki.net translatewiki.net] जँ अहाँ मीडियाविकीक स्थानिकीकरणक मूलक अनुवादमे योगदान करए चाहै छी।',
+कृपा कऽ देखू [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] आ [//translatewiki.net translatewiki.net] जँ अहाँ मीडियाविकीक स्थानिकीकरणक मूलक अनुवादमे योगदान करए चाहै छी।',
'allmessagesnotsupportedDB' => "ई पन्ना प्रयोगमे नै आनल जा सकैए कारण '''\$wgUseDatabaseMessages''' अशक्त कएल अछि।",
'allmessages-filter-legend' => 'चलनी',
'allmessages-filter' => 'अपन हिसाबे अनुकूलित कऽ छाँटू:',
# External editor support
'edit-externally' => 'ऐ फाइलकेँ बाहरी अनुप्रयोगसँ हटाउ',
-'edit-externally-help' => '(देखू [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] विषेष जानकारी लेल)',
+'edit-externally-help' => '(देखू [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] विषेष जानकारी लेल)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सभ',
'version-hook-subscribedby' => 'ई सदस्यता लेलनि',
'version-version' => '(संस्करण $1)',
'version-license' => 'अधिकार',
-'version-poweredby-credits' => "ई विकी चालित अछि '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2",
+'version-poweredby-credits' => "ई विकी चालित अछि '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2",
'version-poweredby-others' => 'आन',
'version-license-info' => 'मीडियाविकी एकटा मंगनीक तंत्रांश अछि; अहाँ एकरा बाँटि सकै छी आ/ वा संशोधित कऽ सकै छीगी.एन.यू. सामान्य जन लाइसेन्सक अन्तर्गत जेना फ्री सॉफ्टवेयर फाउन्डेशन एकरा प्रकाशित केने अछि; चाहे तँ लाइसेन्सक संस्करण २, वा (अहाँक विकल्पपर) कोनो बादक दोसर संस्करणक अन्तर्गत।
# Special:SpecialPages
'specialpages' => 'विशेष पन्ना',
-'specialpages-note' => '----
-* सामान्य विशिष्ट पन्ना।
+'specialpages-note' => '* सामान्य विशिष्ट पन्ना।
* <span class="mw-specialpagerestricted">प्रतिबंधित विशिष्ट पन्ना।</span>
* <span class="mw-specialpagecached">उपस्मृतिक विशिष्ट पन्ना (पुरान भऽ सकैए)।</span>',
'specialpages-group-maintenance' => 'सुस्थापन प्रतिवेदन',
'mypreferences' => 'Preferensi',
'prefs-edits' => 'Jumlah suntingan:',
'prefsnologin' => 'Durung mlebu log',
-'prefsnologintext' => 'Rika kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}| mlebu log disit]</span> kanggo ngowahi préferènsine Rika.',
'changepassword' => 'Ganti tembung sandhi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pratayang',
# External editor support
'edit-externally' => 'Sunting berkas kiye nganggo aplikasi jaba',
-'edit-externally-help' => '(Deleng [//www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
+'edit-externally-help' => '(Deleng [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kabèh',
'mypreferences' => 'Монь латцемане',
'prefs-edits' => 'Петнематнень лувсна:',
'prefsnologin' => 'Апак сувак',
-'prefsnologintext' => 'Тондейть эряви <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} сувамс]</span> тонь арафнематнень латцеманкса.',
'changepassword' => 'Сувама валть полафтомс',
'prefs-skin' => 'Ванфонь латцема',
'skin-preview' => 'Васень няфтема',
'allmessagesdefault' => 'Апак полафтт текст',
'allmessagescurrent' => 'Тяниень текст',
'allmessagestext' => 'Тя MediaWiki-са васьфневи системонь пачфтематнень лувомась.
-Эняльттяма, сувак [//www.mediawiki.org/wiki/Localisation MediaWiki Локализациес] ди [//translatewiki.net translatewiki.net-с] кда тонь мяльце тиемс эсь путксце марстонь MediaWiki локализациес.',
+Эняльттяма, сувак [https://www.mediawiki.org/wiki/Localisation MediaWiki Локализациес] ди [//translatewiki.net translatewiki.net-с] кда тонь мяльце тиемс эсь путксце марстонь MediaWiki локализациес.',
'allmessagesnotsupportedDB' => "Тя лопас аш кода кунцемс сяс мес '''\$wgUseDatabaseMessages'''лоткафоль.",
'allmessages-language' => 'Кяль:',
'allmessages-filter-submit' => 'Ётамс',
# External editor support
'edit-externally' => 'Петнемс тя файлть ушеширень програмонь вельде',
-'edit-externally-help' => '(Ванк [//www.mediawiki.org/wiki/Manual:External_editors арафнемань вятемовалсь] сяда лама содаманкса)',
+'edit-externally-help' => '(Ванк [https://www.mediawiki.org/wiki/Manual:External_editors арафнемань вятемовалсь] сяда лама содаманкса)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'сембе',
# Special:SpecialPages
'specialpages' => 'Башка лопат',
-'specialpages-note' => '----
-* Кърдань башка лопат.
+'specialpages-note' => '* Кърдань башка лопат.
* <strong class="mw-specialpagerestricted">Кардаф башка лопат.</strong>',
'specialpages-group-maintenance' => 'Латцема лувоматне',
'specialpages-group-other' => 'Иля башка тевонь лопатне',
'mypreferences' => 'Safidy',
'prefs-edits' => 'isa ny fanovàna :',
'prefsnologin' => 'Tsy tafiditra',
-'prefsnologintext' => 'Mila <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} misoratra ary tafiditra]</span> amin\'ny kaontinao ianao vao afaka manova ny safidinao.',
'changepassword' => 'Hanova tenimiafina',
'prefs-skin' => 'Endrika',
'skin-preview' => 'Tsipalotra',
'allmessagesdefault' => 'Dikan-teny tany am-boalohany',
'allmessagescurrent' => 'Dikan-teny miasa ankehitriny',
'allmessagestext' => "Ity dia lisitry ny hafatra hita ao amin'ny anaran-tsehatra MediaWiki.
-Andana vangio ny [//www.mediawiki.org/wiki/Localisation Fandikana an'i Mediawiki] ary [//translatewiki.net/ translatewiki.net] raha tia handray anjara amin'ny fandikana an'i Mediawiki amin'ny ankapobeny.",
+Andana vangio ny [https://www.mediawiki.org/wiki/Localisation Fandikana an'i Mediawiki] ary [//translatewiki.net/ translatewiki.net] raha tia handray anjara amin'ny fandikana an'i Mediawiki amin'ny ankapobeny.",
'allmessagesnotsupportedDB' => "Tsy mbola mandeha ny '''{{ns:special}}:Allmessages''' satria tsy mandeha koa ny '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Tantavanina',
'allmessages-filter' => 'Hanasivana araka ny satam-panovana :',
# External editor support
'edit-externally' => "Ovao amin'ny alalan'ny fampiasana fitaovana ivelan'ity Wiki ity io rakitra io",
-'edit-externally-help' => "jereo any amin'[//www.mediawiki.org/wiki/Manual:External_editors ny torolalana] ny fanazavana fanampiny,.",
+'edit-externally-help' => "jereo any amin'[https://www.mediawiki.org/wiki/Manual:External_editors ny torolalana] ny fanazavana fanampiny,.",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'rehetra',
'errorpagetitle' => 'Йоҥылыш',
'returnto' => '$1 деке пӧртылаш.',
'tagline' => '{{SITENAME}} гыч',
-'help' => 'Полшык',
+'help' => 'Полшыш',
'search' => 'Кычалмаш',
'searchbutton' => 'Кычалаш',
'go' => 'Куснаш',
'userpage' => 'Пайдаланышын лаштыкым ончалаш',
'imagepage' => 'Файлын лаштыкым ончалаш',
'templatepage' => 'Ямдылыкын лаштыкым ончалаш',
-'viewhelppage' => 'Ð\9fолÑ\88Ñ\8bк лаштыкым ончалаш',
+'viewhelppage' => 'Ð\9fолÑ\8bÑ\88 лаштыкым ончалаш',
'categorypage' => 'Категорийын лаштыкым ончалаш',
'viewtalkpage' => 'Ончалаш каҥашымашым',
'otherlanguages' => 'Вес йылме дене',
'createacct-yourpasswordagain-ph' => 'Шолыпмутым угыч пурто',
'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|кечылан|кечылан}})',
'yourdomainname' => 'Тендан домен:',
-'login' => 'Шке денет палымым ыште',
+'login' => 'Шке денет палдаре',
'nav-login-createaccount' => 'Пураш/Регистрацийым эрте',
-'loginprompt' => '{{SITENAME}} Ñ\82Ñ\8bй денеÑ\82 палÑ\8bме лиймаÑ\88лан, cookies Ñ\87ӱкÑ\82алÑ\82Ñ\8bн Ñ\83лÑ\88аÑ\88.',
-'userlogin' => 'Шке денеÑ\82 палÑ\8bмÑ\8bм Ñ\8bÑ\88Ñ\82е/РегиÑ\81Ñ\82Ñ\80аÑ\86ийÑ\8bм Ñ\8dÑ\80Ñ\82е',
+'loginprompt' => '{{SITENAME}} Ñ\88ке денеÑ\82 палдаÑ\80Ñ\8bме деÑ\87 онÑ\87Ñ\8bÑ\87 компÑ\8cÑ\8eÑ\82еÑ\80Ñ\8bÑ\88Ñ\82еÑ\82 «cookies»-Ñ\8bм Ñ\87ӱкÑ\82Ñ\8bман.',
+'userlogin' => 'Ð\9fÑ\83Ñ\80аÑ\88/РегиÑ\81Ñ\82Ñ\80аÑ\86ийÑ\8bм Ñ\8dÑ\80Ñ\82аÑ\88',
'logout' => 'Лекташ',
'userlogout' => 'Лекташ',
'nologin' => "Тый регистрацийым эше эртен отыл? '''$1'''.",
'nologinlink' => 'Регистрацийым эрте',
'createaccount' => 'Регистрацийым эрте',
'gotaccount' => "Тый регистрацийым эртенат? '''$1'''.",
-'gotaccountlink' => 'Шке денет палымым ыште',
+'gotaccountlink' => 'Шке денет палдаре',
'userlogin-resetlink' => 'Лӱмдам але шолыпмутдам монденда?',
'userlogin-resetpassword-link' => 'Шолыпмутым монденат?',
'createaccountmail' => 'Кӱчык жаплан чокым ыштыме шолыпмутым мылам e-mail дене колташ',
'tooltip-pt-preferences' => 'Мыйын келыштарымашем',
'tooltip-pt-watchlist' => 'Мыйын эскерыме лаштык-влак лӱмер',
'tooltip-pt-mycontris' => 'Тыйын пашатым эскерыме лаштык',
-'tooltip-pt-login' => 'Шке денеÑ\82 палÑ\8bмÑ\8bм Ñ\8bÑ\88Ñ\82еÑ\82 гÑ\8bн Ñ\81айÑ\80ак лиеÑ\88; Ñ\82акÑ\88Ñ\8bм Ñ\82идÑ\8bм Ñ\8bÑ\88Ñ\82Ñ\8bдеаÑ\82 кеÑ\80Ñ\82аÑ\82.',
+'tooltip-pt-login' => 'ТÑ\8bÑ\88Ñ\82е Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86ийÑ\8bм Ñ\8dÑ\80Ñ\82ен кеÑ\80Ñ\82аÑ\82. РегиÑ\81Ñ\82Ñ\80аÑ\86ий деÑ\87 поÑ\81нааÑ\82 паÑ\88ам Ñ\8bÑ\88Ñ\82аÑ\88 лиеÑ\88.',
'tooltip-pt-logout' => 'Системе гыч лекташ',
'tooltip-ca-talk' => 'Лаштыкыште возымым каҥашаш',
'tooltip-ca-edit' => 'Тый тиде лаштыкым тӧрлатен кертат. Лаштыкым аралыме деч ончыч тудым тергаш ит мондо.',
'tooltip-n-currentevents' => 'Мо лийме нерген нерген пытартыш увер',
'tooltip-n-recentchanges' => 'Пытартыш вашталтымаш лӱмер',
'tooltip-n-randompage' => 'Лаштыкым чокым ойыраш',
-'tooltip-n-help' => 'Ð\92икипедийÑ\8bм кÑ\83Ñ\87Ñ\8bлÑ\82мо да Ñ\82Ó§Ñ\80лаÑ\82Ñ\8bме Ñ\88оÑ\82Ñ\8bÑ\88Ñ\82о полÑ\88Ñ\8bк.',
+'tooltip-n-help' => 'Ð\92икипедийÑ\8bм кÑ\83Ñ\87Ñ\8bлÑ\82мо да Ñ\82Ó§Ñ\80лаÑ\82Ñ\8bме Ñ\88оÑ\82Ñ\8bÑ\88Ñ\82о полÑ\8bÑ\88.',
'tooltip-t-whatlinkshere' => 'Тышке кондышо лаштык-влакын лӱмерышт',
'tooltip-t-recentchangeslinked' => 'Тиде лаштык дене кылдалтше пытартыш тӧрлатымаш-влак',
'tooltip-feed-rss' => 'Тиде лаштыклан RSS-кыл',
# External editor support
'edit-externally' => 'Файлым ӧрдыж программыште тӧрлаташ',
-'edit-externally-help' => '(Сайрак палашлан ончал [//www.mediawiki.org/wiki/Manual:External_editors шындымаш нерген туныктымашым])',
+'edit-externally-help' => '(Сайрак палашлан ончал [https://www.mediawiki.org/wiki/Manual:External_editors шындымаш нерген туныктымашым])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'чыла',
'mypreferences' => 'Pangaturan',
'prefs-edits' => 'Jumlah suntiangan:',
'prefsnologin' => 'Alun masuak log',
-'prefsnologintext' => 'Sanak musti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuak log]</span> untuak mengeset pangaturan.',
'changepassword' => 'Tuka kato sandi',
'prefs-skin' => 'Kulik',
'skin-preview' => 'Caliak',
# External editor support
'edit-externally' => 'Suntiang berkas ko jo aplikasi lua',
-'edit-externally-help' => '(Caliak [//www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] untuak informasi lanjuiknyo)',
+'edit-externally-help' => '(Caliak [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] untuak informasi lanjuiknyo)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kasadonyo',
'version-other' => 'Lain-lain',
'version-version' => '(Versi $1)',
'version-license' => 'Lisensi',
-'version-poweredby-credits' => "Wiki ko didukuang jo '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki ko didukuang jo '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'lainnyo',
'version-credits-summary' => 'Kami nio mangakui urang-urang ko ateh kontribusinyo pado [[Special:Version|MediaWiki]].',
'version-license-info' => 'MediaWiki adolah parangkaik lunak bebas; Sanak dapek mandistribusian dan/atau mamodfikasinyo jo syaraik Lisensi Publik Umum GNU nan dikaluaan dek Free Software Foundation; versi 2 atau nan tabaru.
# Special:SpecialPages
'specialpages' => 'Laman istimewa',
-'specialpages-note' => '----
-* Laman istimewa normal.
+'specialpages-note' => '* Laman istimewa normal.
* <span class="mw-specialpagerestricted">Laman istimewa talarang.</span>
* <span class="mw-specialpagecached">Laman istimewa tasinggah (mungkin usang).</span>',
'specialpages-group-maintenance' => 'Laporan pamaliharoan',
'invalidtitle-knownnamespace' => 'Неважечки наслов со именски простор „$2“ и текст „$3“',
'invalidtitle-unknownnamespace' => 'Неважечки наслов со именски простор бр. $1 и текст „$2“',
'exception-nologin' => 'Не сте најавени',
-'exception-nologin-text' => 'Оваа страница или постапка бара да сте најавени на викито.',
+'exception-nologin-text' => '[[Special:Userlogin|Најавете се]] за да добиете пристап до страницата или дејството.',
+'exception-nologin-text-manual' => 'Треба да сте $1 за да имате пристап до страницата или дејството.',
# Virus scanner
'virus-badscanner' => "Лоша поставка: непознат проверувач на вируси: ''$1''",
'revdelete-hide-user' => 'Корисничко име/IP-адреса на уредникот',
'revdelete-hide-restricted' => 'Постави ограничувања и за администратори на ист начин како и за останатите',
'revdelete-radio-same' => '(не менувај)',
-'revdelete-radio-set' => 'Ð\92идлива',
-'revdelete-radio-unset' => 'СкÑ\80иена',
+'revdelete-radio-set' => 'СкÑ\80иена',
+'revdelete-radio-unset' => 'Ð\92идлива',
'revdelete-suppress' => 'Притајувај податоци и од администраторите',
'revdelete-unsuppress' => 'Отстрани ограничувања на обновени ревизии',
'revdelete-log' => 'Причина:',
'mypreferences' => 'нагодувања',
'prefs-edits' => 'Број на уредувања:',
'prefsnologin' => 'Не сте најавени',
-'prefsnologintext' => 'Мора да бидете <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} најавени]</span> за да ги менувате вашите кориснички нагодувања.',
+'prefsnologintext2' => 'Треба да сте $1 за да можете да ги поставувате корисничките нагодувања.',
'changepassword' => 'Смени лозинка',
'prefs-skin' => 'Руво',
'skin-preview' => 'Преглед',
е-пошта: $PAGEEDITOR_EMAIL
вики: $PAGEEDITOR_WIKI
-Ð\9fовеÑ\9cе нема да добиваÑ\82е извеÑ\81Ñ\82Ñ\83ваÑ\9aа во Ñ\81лÑ\83Ñ\87аÑ\98 на дÑ\80Ñ\83ги понаÑ\82амоÑ\88ни пÑ\80омени, оÑ\81вен ако не Ñ\98а поÑ\81еÑ\82иÑ\82е оваа Ñ\81Ñ\82Ñ\80аниÑ\86а.
+Ð\9fовеÑ\9cе нема да добиваÑ\82е извеÑ\81Ñ\82Ñ\83ваÑ\9aа во Ñ\81лÑ\83Ñ\87аÑ\98 на дÑ\80Ñ\83ги понаÑ\82амоÑ\88ни акÑ\82ивноÑ\81Ñ\82и, оÑ\81вен ако не Ñ\98а поÑ\81еÑ\82иÑ\82е оваа Ñ\81Ñ\82Ñ\80аниÑ\86а додека Ñ\81Ñ\82е наÑ\98авени.
Можете и да ги поништите ознаките за известување за сите набљудувани страници на вашиот список на набљудувања.
Известителниот систем на {{SITENAME}}
'allmessagesdefault' => 'Текст по основно',
'allmessagescurrent' => 'Сегашен текст',
'allmessagestext' => 'Ова е список на системските пораки расположиви за именскиот простор „МедијаВики“.
-Одете на [//www.mediawiki.org/wiki/Localisation Локализација на МедијаВики] и [//translatewiki.net translatewiki.net] ако сакате да придонесете кон општата локализација на МедијаВики.',
+Одете на [https://www.mediawiki.org/wiki/Localisation Локализација на МедијаВики] и [//translatewiki.net translatewiki.net] ако сакате да придонесете кон општата локализација на МедијаВики.',
'allmessagesnotsupportedDB' => "Оваа страница не може да се користи бидејќи '''\$wgUseDatabaseMessages''' е исклучено.",
'allmessages-filter-legend' => 'Филтер',
'allmessages-filter' => 'Филтрирај по состојба на прилагодувањето:',
'svg-long-desc' => 'SVG податотека, номинално $1 × $2 пиксели, големина: $3',
'svg-long-desc-animated' => 'Анимирана SVG-податотека, номинално: $1 × $2 пиксели, големина: $3',
'svg-long-error' => 'Неважечка SVG-податотека: $1',
-'show-big-image' => 'Ð\92иÑ\81Ñ\82инÑ\81ка големина',
+'show-big-image' => 'Ð\98звоÑ\80на подаÑ\82оÑ\82ека',
'show-big-image-preview' => 'Големина на овој преглед: $1.',
'show-big-image-other' => '{{PLURAL:$2|Друга резолуција|Други резолуции}}: $1.',
'show-big-image-size' => '$1 × $2 пиксели',
# External editor support
'edit-externally' => 'Уреди ја податотеката со надворешен програм',
-'edit-externally-help' => '(Видете [//www.mediawiki.org/wiki/Manual:External_editors повеќе напатствија] за нагодувањето).',
+'edit-externally-help' => '(Видете [https://www.mediawiki.org/wiki/Manual:External_editors повеќе напатствија] за нагодувањето).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'сите',
'version-version' => '(Верзија $1)',
'version-svn-revision' => '(рев. $2)',
'version-license' => 'Лиценца',
-'version-poweredby-credits' => "Ова вики работи на '''[//www.mediawiki.org/ МедијаВики]''', авторски права © 2001-$1 $2.",
+'version-poweredby-credits' => "Ова вики работи на '''[https://www.mediawiki.org/ МедијаВики]''', авторски права © 2001-$1 $2.",
'version-poweredby-others' => 'други',
'version-poweredby-translators' => 'преведувачи на translatewiki.net',
'version-credits-summary' => 'Би сакале да им се заблагодариме на следниве лица за нивните придонеси кон [[Special:Version|МедијаВики]].',
# Special:SpecialPages
'specialpages' => 'Специјални страници',
-'specialpages-note' => '----
-* Нормални специјални страници.
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Нормални специјални страници.
* <span class="mw-specialpagerestricted">Ограничени специјални страници.</span>
* <span class="mw-specialpagecached">Кеширани специјални страници (може да се застарени).</span>',
'specialpages-group-maintenance' => 'Извештаи за одржување',
'invalidtitle-knownnamespace' => 'നാമമേഖല "$2", എഴുത്ത് "$3" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്',
'invalidtitle-unknownnamespace' => 'അപരിചിതമായ നാമമേഖലാ സംഖ്യ $1, എഴുത്ത് "$2" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്',
'exception-nologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
-'exception-nologin-text' => 'ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കേണ്ടതാണ്.',
+'exception-nologin-text' => 'ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ ദയവായി [[Special:Userlogin|പ്രവേശിക്കുക]].',
+'exception-nologin-text-manual' => 'ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ഉപയോഗിക്കാൻ ദയവായി $1.',
# Virus scanner
'virus-badscanner' => "തെറ്റായ ക്രമീകരണങ്ങൾ: അപരിചിതമായ വൈറസ് തിരച്ചിൽ ഉപാധി : ''$1''",
'revdelete-hide-user' => 'തിരുത്തുന്ന ആളുടെ ഉപയോക്തൃനാമം/ഐ.പി. വിലാസം',
'revdelete-hide-restricted' => 'വിവരങ്ങളുടെ നിയന്ത്രണം മറ്റുള്ളവരെ പോലെ കാര്യനിർവാഹകർക്കും ബാധകമാക്കുക',
'revdelete-radio-same' => '(മാറ്റം വരുത്തരുത്)',
-'revdelete-radio-set' => 'à´\95ാണണà´\82',
-'revdelete-radio-unset' => 'മറയàµ\8dà´\95àµ\8dà´\95à´£à´\82',
+'revdelete-radio-set' => 'മറയàµ\8dà´\95àµ\8dà´\95à´ªàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´µ',
+'revdelete-radio-unset' => 'à´\95ാണാവàµ\81à´¨àµ\8dനവ',
'revdelete-suppress' => 'സിസോപ്പുകളിൽ നിന്നും മറ്റുള്ളവരിൽ നിന്നും ഈ ഡാറ്റാ മറച്ചു വെക്കുക',
'revdelete-unsuppress' => 'പുനഃസ്ഥാപിച്ച പതിപ്പുകളിലുള്ള നിയന്ത്രണങ്ങൾ ഒഴിവാക്കുക',
'revdelete-log' => 'കാരണം:',
'mypreferences' => 'ക്രമീകരണങ്ങൾ',
'prefs-edits' => 'ആകെ തിരുത്തുകൾ:',
'prefsnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
-'prefsnologintext' => 'ഉപയോക്തൃക്രമീകരണങ്ങൾ മാറ്റാൻ താങ്കൾ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ലോഗിൻ]</span> ചെയ്തിരിക്കണം.',
+'prefsnologintext2' => 'താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി $1.',
'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
'prefs-skin' => 'ദൃശ്യരൂപം',
'skin-preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
'allmessagesdefault' => 'സ്വതേയുള്ള ഉള്ളടക്കം',
'allmessagescurrent' => 'നിലവിലുള്ള ഉള്ളടക്കം',
'allmessagestext' => 'ഇത് മീഡിയവിക്കി നാമമേഖലയിൽ ലഭ്യമായ വ്യവസ്ഥാസന്ദേശങ്ങളുടെ ഒരു പട്ടിക ആണ്.
-പ്രാമാണികമായ വിധത്തിൽ മീഡിയവിക്കിയുടെ പ്രാദേശീകരണം താങ്കൾ ഉദ്ദേശിക്കുന്നുവെങ്കിൽ ദയവായി [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [//translatewiki.net translatewiki.net] എന്നീ താളുകൾ സന്ദർശിക്കുക.',
+പ്രാമാണികമായ വിധത്തിൽ മീഡിയവിക്കിയുടെ പ്രാദേശീകരണം താങ്കൾ ഉദ്ദേശിക്കുന്നുവെങ്കിൽ ദയവായി [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [//translatewiki.net translatewiki.net] എന്നീ താളുകൾ സന്ദർശിക്കുക.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ബന്ധിച്ചിരിക്കുന്നതു കാരണം ഈ താൾ ഉപയോഗിക്കുവാൻ സാദ്ധ്യമല്ല.",
'allmessages-filter-legend' => 'അരിപ്പ',
'allmessages-filter' => 'പുനഃക്രമീകരിച്ച ക്രമത്തിൽ തിരഞ്ഞുവെയ്ക്കുക:',
'pageinfo-length' => 'താളിന്റെ നീളം (ബൈറ്റിൽ)',
'pageinfo-article-id' => 'താളിന്റെ ഐ.ഡി.',
'pageinfo-language' => 'താളിന്റെ ഉള്ളടക്കത്തിന്റെ ഭാഷ',
+'pageinfo-content-model' => 'താളിന്റെ ഉള്ളടക്ക രീതി',
'pageinfo-robot-policy' => 'റോബോട്ടുകളുടെ സൂചികാവത്കരണം',
'pageinfo-robot-index' => 'അനുവദിച്ചിരിക്കുന്നു',
'pageinfo-robot-noindex' => 'അനുവദിച്ചിട്ടില്ല',
'svg-long-desc' => 'എസ്.വി.ജി. പ്രമാണം, നാമമാത്രമായ $1 × $2 പിക്സലുകൾ, പ്രമാണത്തിന്റെ വലിപ്പം: $3',
'svg-long-desc-animated' => 'ചലിക്കുന്ന എസ്.വി.ജി. പ്രമാണം, നാമമാത്രമായ $1 × $2 പിക്സലുകൾ, പ്രമാണത്തിന്റെ വലിപ്പം: $3',
'svg-long-error' => 'അസാധുവായ എസ്.വി.ജി. പ്രമാണം: $1',
-'show-big-image' => 'à´ªàµ\82ർണàµ\8dà´£ à´±àµ\86സലàµ\82ഷൻ',
+'show-big-image' => 'à´ªàµ\82ർണàµ\8dà´£ വലിപàµ\8dà´ªà´\82',
'show-big-image-preview' => 'ഈ പ്രിവ്യൂവിന്റെ വലിപ്പം: $1.',
'show-big-image-other' => 'കൂടുതൽ {{PLURAL:$2|റെസലൂഷൻ}}: $1.',
'show-big-image-size' => '$1 × $2 പിക്സലുകൾ',
# External editor support
'edit-externally' => 'ഈ പ്രമാണം ഒരു ബാഹ്യ ആപ്ലിക്കേഷൻ ഉപയോഗിച്ച് തിരുത്തുക',
-'edit-externally-help' => '(കൂടുതൽ വിവരത്തിനു //www.mediawiki.org/wiki/Manual:External_editors കാണുക)',
+'edit-externally-help' => '(കൂടുതൽ വിവരത്തിനു [https://www.mediawiki.org/wiki/Manual:External_editors സജ്ജമാക്കൽ നിർദ്ദേശങ്ങൾ] കാണുക)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'എല്ലാം',
'version-hook-subscribedby' => 'വരിക്കാരനായത്',
'version-version' => '(പതിപ്പ് $1)',
'version-license' => 'അനുമതി',
-'version-poweredby-credits' => "ഈ വിക്കി പ്രവർത്തിക്കാൻ '''[//www.mediawiki.org/ മീഡിയവിക്കി]''' ഉപയോഗിക്കുന്നു. പകർപ്പവകാശം © 2001-$1 $2.",
+'version-poweredby-credits' => "ഈ വിക്കി പ്രവർത്തിക്കാൻ '''[https://www.mediawiki.org/ മീഡിയവിക്കി]''' ഉപയോഗിക്കുന്നു. പകർപ്പവകാശം © 2001-$1 $2.",
'version-poweredby-others' => 'മറ്റുള്ളവർ',
'version-poweredby-translators' => 'പരിഭാഷാവിക്കിയിലെ പരിഭാഷകർ',
'version-credits-summary' => '[[Special:Version|മീഡിയവിക്കിയ്ക്ക്]] നൽകിയ സംഭാവനകളുടെ പേരിൽ താഴെക്കൊടുക്കുന്നവർക്ക് ഞങ്ങൾ നന്ദി പറയുന്നു.',
# Special:SpecialPages
'specialpages' => 'പ്രത്യേക താളുകൾ',
-'specialpages-note' => '----
-* പൊതുവേ ഉപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.
+'specialpages-note-top' => 'സൂചന',
+'specialpages-note' => '* പൊതുവേ ഉപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.
* <strong class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രത്യേക താളുകൾ.</strong>
* <span class="mw-specialpagecached">പ്രാദേശികമായി സംഭരിച്ചുപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.</span>',
'specialpages-group-maintenance' => 'പരിചരണം ആവശ്യമായവ',
'mypreferences' => 'Миний тохиргоо',
'prefs-edits' => 'Засваруудын тоо:',
'prefsnologin' => 'Нэвтрээгүй байна',
-'prefsnologintext' => 'Та хэрэглэгчийн тохиргоогоо тохируулахын тулд <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} нэвтэрсэн байх]</span> ёстой.',
'changepassword' => 'Нууц үгээ солих',
'prefs-skin' => 'Арьс',
'skin-preview' => 'Урьдчилж харах',
'allmessagesdefault' => 'Анхны',
'allmessagescurrent' => 'Одоогийн',
'allmessagestext' => 'Энэ бол МедиаВики дахь системийн мэдэгдлүүдийн жагсаалт юм.
-МедиаВикиг орчуулах тухай мэдээллийг [//www.mediawiki.org/wiki/Localisation МедиаВикигийн орчуулга], мөн [//translatewiki.net translatewiki.net]-с авна уу.',
+МедиаВикиг орчуулах тухай мэдээллийг [https://www.mediawiki.org/wiki/Localisation МедиаВикигийн орчуулга], мөн [//translatewiki.net translatewiki.net]-с авна уу.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' нь унтарсан байгаа тул '''Special:Allmessages'''-г хэрэглэж болохгүй.",
'allmessages-filter-legend' => 'Шүүлтүүр',
'allmessages-filter' => 'Өөрийн болгосон байдлаар нь шүүх:',
# External editor support
'edit-externally' => 'Гадны программыг ашиглан энэ файлыг засварлах',
-'edit-externally-help' => '(Нэмэлт мэдээллийг [//www.mediawiki.org/wiki/Manual:External_editors тохируулгын зааврын] хуудаснаас харна уу)',
+'edit-externally-help' => '(Нэмэлт мэдээллийг [https://www.mediawiki.org/wiki/Manual:External_editors тохируулгын зааврын] хуудаснаас харна уу)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'бүгдийг',
'version-hook-subscribedby' => 'Захиалсан:',
'version-version' => '(Хувилбар $1)',
'version-license' => 'Лиценз',
-'version-poweredby-credits' => "Энэхүү викиг '''[//www.mediawiki.org/ MediaWiki]''' програмаар ажиллуулдаг, зохиогчийн эрх © 2001-$1 $2.",
+'version-poweredby-credits' => "Энэхүү викиг '''[https://www.mediawiki.org/ MediaWiki]''' програмаар ажиллуулдаг, зохиогчийн эрх © 2001-$1 $2.",
'version-poweredby-others' => 'бусад',
'version-software' => 'Суулгасан программ',
'version-software-product' => 'Бүтээгдэхүүн',
# Special:SpecialPages
'specialpages' => 'Тусгай хуудсууд',
-'specialpages-note' => '----
-* Ердийн тусгай хуудсууд.
+'specialpages-note' => '* Ердийн тусгай хуудсууд.
* <strong class="mw-specialpagerestricted">Хориотой тусгай хуудсууд.</strong>',
'specialpages-group-maintenance' => 'Засвар үйлчилгээний тайлангууд',
'specialpages-group-other' => 'Бусад тусгай хуудсууд',
'mypreferences' => 'पसंतीक्रम',
'prefs-edits' => 'संपादनांची संख्या:',
'prefsnologin' => 'प्रवेश केलेला नाही',
-'prefsnologintext' => 'तुम्हाला सदस्य पसंती बदलण्यासाठी <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} प्रवेश]</span> करावा लागेल.',
'changepassword' => 'परवलीचा शब्द बदला',
'prefs-skin' => 'त्वचा',
'skin-preview' => 'झलक',
# External editor support
'edit-externally' => 'बाहेरील संगणक प्रणाली वापरून ही संचिका संपादित करा.',
-'edit-externally-help' => 'अधिक माहितीसाठी [//www.mediawiki.org/wiki/Manual:External_editors स्थापन करण्याच्या सूचना] येथे पहा.',
+'edit-externally-help' => 'अधिक माहितीसाठी [https://www.mediawiki.org/wiki/Manual:External_editors स्थापन करण्याच्या सूचना] येथे पहा.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सर्व',
'version-hook-subscribedby' => 'वर्गणीदार',
'version-version' => '(आवृत्ती $1)',
'version-license' => 'परवाना',
-'version-poweredby-credits' => "हा विकी '''[//www.mediawiki.org/ मीडियाविकी]'''द्वारे संचालित आहे, प्रताधिकारित © २००१-$1 $2.",
+'version-poweredby-credits' => "हा विकी '''[https://www.mediawiki.org/ मीडियाविकी]'''द्वारे संचालित आहे, प्रताधिकारित © २००१-$1 $2.",
'version-poweredby-others' => 'इतर',
'version-poweredby-translators' => 'ट्रांसलेटविकि.नेट वरील भाषांतरकार',
'version-credits-summary' => 'आम्ही खालील व्यक्तींना, [[Special:Version|मिडियाविकि]]वर त्यांनी दिलेल्या योगदानामुळे, मान्यता देऊ ईच्छितो.',
'mypreferences' => 'Keutamaan',
'prefs-edits' => 'Jumlah suntingan:',
'prefsnologin' => 'Belum log masuk',
-'prefsnologintext' => 'Anda hendaklah <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} log masuk]</span> terlebih dahulu untuk menetapkan keutamaan.',
'changepassword' => 'Tukar kata laluan',
'prefs-skin' => 'Rupa',
'skin-preview' => 'Pralihat',
'allmessagesdefault' => 'Teks mesej asal',
'allmessagescurrent' => 'Teks pesanan semasa',
'allmessagestext' => 'Ini ialah senarai pesanan sistem yang terdapat dalam ruang nama MediaWiki.
-Sila lawat [//www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki] dan [//translatewiki.net translatewiki.net] sekiranya anda mahu menyumbang dalam menyetempatkan dan menterjemah perisian MediaWiki.',
+Sila lawat [https://www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki] dan [//translatewiki.net translatewiki.net] sekiranya anda mahu menyumbang dalam menyetempatkan dan menterjemah perisian MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' tidak boleh digunakan kerana '''\$wgUseDatabaseMessages''' dipadamkan.",
'allmessages-filter-legend' => 'Penapisan',
'allmessages-filter' => 'Tapis berdasarkan keadaan penempahan:',
# External editor support
'edit-externally' => 'Sunting fail ini menggunakan perisian luar',
-'edit-externally-help' => '(Lihat [//www.mediawiki.org/wiki/Manual:External_editors arahan pemasangan] untuk maklumat lanjut)',
+'edit-externally-help' => '(Lihat [https://www.mediawiki.org/wiki/Manual:External_editors arahan pemasangan] untuk maklumat lanjut)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'semua',
'version-hook-subscribedby' => 'Dilanggan oleh',
'version-version' => '(Versi $1)',
'version-license' => 'Lesen',
-'version-poweredby-credits' => "Wiki ini dikuasakan oleh '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki ini dikuasakan oleh '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'penyumbang-penyumbang lain',
'version-poweredby-translators' => 'para penterjemah translatewiki.net',
'version-credits-summary' => 'Kami ingin mengucapkan sekalung budi kepada mereka yang berikut atas sumbangan mereka keada [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Laman khas',
-'specialpages-note' => '----
-* Laman khas biasa.
+'specialpages-note' => '* Laman khas biasa.
* <span class="mw-specialpagerestricted">Laman khas terhad.</span>
* <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
'specialpages-group-maintenance' => 'Laporan penyenggaraan',
'mypreferences' => 'Preferenzi',
'prefs-edits' => "Numru ta' modifiki:",
'prefsnologin' => 'Għadek ma dħaltx ġewwa',
-'prefsnologintext' => 'Sabiex tkun tista\' tippersonalizza l-preferenzi huwa neċessarju li tidħol fil-<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kont]</span>.',
'changepassword' => 'Ibdel il-password',
'prefs-skin' => 'Aspett grafiku (skin)',
'skin-preview' => 'dehra proviżorja',
# External editor support
'edit-externally' => "Immodifika dan il-fajl b'użu ta' applikazzjoni esterna",
-'edit-externally-help' => '(Għal aktar informazzjoni ara l-[//www.mediawiki.org/wiki/Manual:External_editors istruzzjonijiet])',
+'edit-externally-help' => '(Għal aktar informazzjoni ara l-[https://www.mediawiki.org/wiki/Manual:External_editors istruzzjonijiet])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kollha',
'version-hook-subscribedby' => 'Reġistrat minn',
'version-version' => '(Verżjoni $1)',
'version-license' => 'Liċenzja',
-'version-poweredby-credits' => "Din il-wiki hija operata minn '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Din il-wiki hija operata minn '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'oħrajn',
'version-license-info' => "MediaWiki huwa softwer b'xejn; inti tista' tqassmu mill-ġdid u/jew timmodifikah taħt it-termini tal-GNU General Public License, kif ippubblikata mill-Free Software Foundation; jew it-2 verżjoni tal-Liċenzja, jew (skont l-għażla tiegħek) kwalunkwe verżjoni suċċessiva.
# External editor support
'edit-externally' => 'Eiditar este fexeiro outelizando ua aplicaçon sterna',
-'edit-externally-help' => '(Bei las [//www.mediawiki.org/wiki/Manual:External_editors anstruçones de anstalaçon] pa mais anformaçon).',
+'edit-externally-help' => '(Bei las [https://www.mediawiki.org/wiki/Manual:External_editors anstruçones de anstalaçon] pa mais anformaçon).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todas',
# External editor support
'edit-externally' => 'ပြင်ပ application တစ်ခုခုကိုသုံး၍ ဤဖိုင်ကို ပြင်ရန်',
-'edit-externally-help' => '(နောက်ထပ်သတင်းအချက်အလက်များအတွက်[//www.mediawiki.org/wiki/Manual:External_editors တပ်ဆင်မှု လမ်းညွှန်များ] ကို ကြည့်ရန်)',
+'edit-externally-help' => '(နောက်ထပ်သတင်းအချက်အလက်များအတွက်[https://www.mediawiki.org/wiki/Manual:External_editors တပ်ဆင်မှု လမ်းညွှန်များ] ကို ကြည့်ရန်)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'အားလုံး',
'mypreferences' => 'Аравтомат',
'prefs-edits' => 'Зяроксть витнезь-петнезь:',
'prefsnologin' => 'Эзить сова',
-'prefsnologintext' => 'Эряви <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} совамс]</span> аравтоматнень ладсемга.',
'changepassword' => 'Салавань валонь полавтома',
'prefs-skin' => 'Неемань ладсема',
'skin-preview' => 'Васнянь неевтезэ',
# External editor support
'edit-externally' => 'Витнемс-петнемс те файланть, тевс нолдазь ушо ёнксонь программанть',
-'edit-externally-help' => '(Вант [//www.mediawiki.org/wiki/Manual:External_editors аравтома инструкциятнень] седе ламо информациянть кис.)',
+'edit-externally-help' => '(Вант [https://www.mediawiki.org/wiki/Manual:External_editors аравтома инструкциятнень] седе ламо информациянть кис.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'весе',
# Special:SpecialPages
'specialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
-'specialpages-note' => '----
-* Yeliztli nōncuahquīzqui āmatl.
+'specialpages-note' => '* Yeliztli nōncuahquīzqui āmatl.
* <span class="mw-specialpagerestricted">Tlaquīxtīlli nōncuahquīzqui āmatl.</span>
* <span class="mw-specialpagecached">Tlatlātīlli nōncuahquīzqui āmatl (aocmo monemitīa).</span>',
'specialpages-group-other' => 'Oksẻki nònkuâkìskàtlaìxtlapaltìn',
'exif-subjectdistancerange-0' => 'Scanusciuta',
# External editor support
-'edit-externally-help' => "Pe piglià cchiù nfromma veré 'e [//www.mediawiki.org/wiki/Manual:External_editors struzione] ('n ngrese)",
+'edit-externally-help' => "Pe piglià cchiù nfromma veré 'e [https://www.mediawiki.org/wiki/Manual:External_editors struzione] ('n ngrese)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tutte',
'mypreferences' => 'Innstillinger',
'prefs-edits' => 'Antall redigeringer:',
'prefsnologin' => 'Ikke logget inn',
-'prefsnologintext' => 'Du må være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget inn]</span> for å endre brukerinnstillingene.',
'changepassword' => 'Endre passord',
'prefs-skin' => 'Utseende',
'skin-preview' => 'Forhåndsvisning',
# External editor support
'edit-externally' => 'Rediger denne filen med et eksternt program',
-'edit-externally-help' => '(Se [//www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonene] for mer informasjon)',
+'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonene] for mer informasjon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alle',
'version-hook-subscribedby' => 'Brukes av',
'version-version' => '(versjon $1)',
'version-license' => 'Lisens',
-'version-poweredby-credits' => "Denne wikien er drevet av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Denne wikien er drevet av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andre',
'version-poweredby-translators' => 'translatewiki.net-oversettere',
'version-credits-summary' => 'Vi ønsker å takke følgende personer for deres bidrag til [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Spesialsider',
-'specialpages-note' => '----
-* Normale spesialsider.
+'specialpages-note' => '* Normale spesialsider.
* <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>
* <span class="mw-specialpagecached">Spesialsider som oppdateres periodisk (kan være foreldede).</span>',
'specialpages-group-maintenance' => 'Vedlikeholdsrapporter',
'mypreferences' => 'För mi Instellen',
'prefs-edits' => 'Wo faken du in dit Wiki Sieden ännert hest:',
'prefsnologin' => 'Nich anmellt',
-'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anmellt]</span> wesen, dat du dien Instellen ännern kannst.',
'changepassword' => 'Passwoort ännern',
'prefs-skin' => 'Utsehn vun de Steed',
'skin-preview' => 'Vörschau',
# External editor support
'edit-externally' => 'Änner disse Datei mit en extern Programm',
-'edit-externally-help' => '(Lees de [//www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
+'edit-externally-help' => '(Lees de [https://www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alle',
'version-hook-subscribedby' => 'Opropen vun',
'version-version' => '(Version $1)',
'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Dit Wiki bruukt '''[//www.mediawiki.org/ MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Dit Wiki bruukt '''[https://www.mediawiki.org/ MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'annere',
'version-software' => 'Installeerte Software',
'version-software-product' => 'Produkt',
# Special:SpecialPages
'specialpages' => 'Sünnerliche Sieden',
-'specialpages-note' => '----
-* Normale Spezialsieden
+'specialpages-note' => '* Normale Spezialsieden
* <strong class="mw-specialpagerestricted">Spezialsieden för Brukers mit mehr Rechten</strong>',
'specialpages-group-maintenance' => 'Pleeglisten',
'specialpages-group-other' => 'Annere Spezialsieden',
'mypreferences' => 'Mien veurkeuren',
'prefs-edits' => 'Antal bewarkingen:',
'prefsnologin' => 'Niet an-meld',
-'prefsnologintext' => 'Je mutten <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} an-emeld]</span> ween um joew veurkeuren in te kunnen stellen.',
'changepassword' => 'Wachtwoord wiezigen',
'prefs-skin' => '{{SITENAME}}-uterlik',
'skin-preview' => 'bekieken',
'allmessagesdefault' => 'Standardtekste',
'allmessagescurrent' => 'De leste versie',
'allmessagestext' => "Hieronder steet n lieste mit alle systeemteksten in de MediaWiki-naamruumte.
-Kiek oek effen bie [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [//translatewiki.net translatewiki.net] a'j biedragen willen an de algemene vertaling veur MediaWiki.",
+Kiek oek effen bie [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [//translatewiki.net translatewiki.net] a'j biedragen willen an de algemene vertaling veur MediaWiki.",
'allmessagesnotsupportedDB' => "Disse zied kan niet gebruukt wörden umdat '''\$wgUseDatabaseMessages''' uutezet is.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtreer op wiezigingen:',
# External editor support
'edit-externally' => 'Wiezig dit bestaand mit n extern programma',
-'edit-externally-help' => '(Zie de [//www.mediawiki.org/wiki/Manual:External_editors installasie-instruksies] veur meer informasie)',
+'edit-externally-help' => '(Zie de [https://www.mediawiki.org/wiki/Manual:External_editors installasie-instruksies] veur meer informasie)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alles',
'version-hook-subscribedby' => 'In-eschreven deur',
'version-version' => '(Versie $1)',
'version-license' => 'Lisensie',
-'version-poweredby-credits' => "Disse wiki wörden an-estuurd deur '''[//www.mediawiki.org/ MediaWiki]''', auteursrecht © 2001-$1 $2.",
+'version-poweredby-credits' => "Disse wiki wörden an-estuurd deur '''[https://www.mediawiki.org/ MediaWiki]''', auteursrecht © 2001-$1 $2.",
'version-poweredby-others' => 'aanderen',
'version-poweredby-translators' => 'vertalers van translatewiki.net',
'version-credits-summary' => 'Wulen erkennen grege de volgende personen veur der biedrage an [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Spesiale ziejen',
-'specialpages-note' => '----
-* Normale spesiale ziejen.
+'specialpages-note' => '* Normale spesiale ziejen.
* <strong class="mw-specialpagerestricted">Beparkt toegankelike spesiale ziejen.</strong>
* <span class="mw-specialpagecached">Spesiale ziejen mit allinnig gegevens uut t tussengeheugen (kunnen verouwerd ween).</span>',
'specialpages-group-maintenance' => 'Onderhoudsliesten',
'mypreferences' => 'प्राथमिकताहरु',
'prefs-edits' => 'सम्पादन संख्या:',
'prefsnologin' => 'प्रवेश (लग ईन) नगरिएको',
-'prefsnologintext' => 'प्रयोगकर्ता अभिरूचि निर्धारण गर्न <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ]</span>तपाईंले प्रवेश गरेको हुनुपर्छ।',
'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
'prefs-skin' => 'काँचुली',
'skin-preview' => 'पूर्वावलोकन',
'allmessagesdefault' => 'डिफल्ट सन्देश पाठ',
'allmessagescurrent' => 'वर्तमान सन्देश पाठ',
'allmessagestext' => 'यो मीडियाविकि नेमस्पेसमा पाइने सिस्टम सन्देशहरूको सूची हो।
-यदि तपाईं व्यापक मीडिया विकि स्थानीयकरणमा योगदान गर्न चाहनुहुन्छ भनें कृपया [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation]मा र [//translatewiki.net translatewiki.net]मा जानुहोस्।',
+यदि तपाईं व्यापक मीडिया विकि स्थानीयकरणमा योगदान गर्न चाहनुहुन्छ भनें कृपया [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]मा र [//translatewiki.net translatewiki.net]मा जानुहोस्।',
'allmessages-filter-legend' => 'फिल्टर',
'allmessages-filter-unmodified' => 'असंशोधित',
'allmessages-filter-all' => 'सबै',
# External editor support
'edit-externally' => 'यो फाइललाई बाह्य अनुप्रयोग प्रयोग गरेर सम्पादन गर्ने',
-'edit-externally-help' => '(थप जानकारीको लागि [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] मा हेर्नुहोस् )',
+'edit-externally-help' => '(थप जानकारीको लागि [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] मा हेर्नुहोस् )',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सबै',
'version-version' => '(संस्करण $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'इजाजतपत्र',
-'version-poweredby-credits' => "यो विकी '''[//www.mediawiki.org/ मिडियाविकि]''' द्वारा सशक्तिकरण गरिएको छ, copyright © सन् २००१-$1 $2.",
+'version-poweredby-credits' => "यो विकी '''[https://www.mediawiki.org/ मिडियाविकि]''' द्वारा सशक्तिकरण गरिएको छ, copyright © सन् २००१-$1 $2.",
'version-poweredby-others' => 'अन्य',
'version-software' => 'स्थापना गरिएको सफ्टवेयर',
'version-software-product' => 'उत्पादन',
# Special:SpecialPages
'specialpages' => 'विशेष पृष्ठ',
-'specialpages-note' => '----
-* साधारण विशेष पृष्ठहरु।
+'specialpages-note' => '* साधारण विशेष पृष्ठहरु।
* <span class="mw-specialpagerestricted">निषेधित विशेष पृष्ठहरु।</span>
* <span class="mw-specialpagecached">क्याश गरिएका विशेष पृष्ठहरु (अध्यावधिक नहुन सक्छ)।</span>',
'specialpages-group-maintenance' => 'मर्मत प्रतिवेदनहरु',
* @author AvatarTeam
* @author B4bol4t
* @author Basvb
+ * @author Breghtje
* @author DasRakel
* @author Effeietsanders
* @author Erwin
'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en tekst "$3"',
'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekend naamruimtenummer $1 en tekst "$2"',
'exception-nologin' => 'Niet aangemeld',
-'exception-nologin-text' => 'Om deze pagina te bekijken of deze handeling uit te kunnen voeren moet u aangemeld zijn bij deze wiki.',
+'exception-nologin-text' => 'Om deze pagina te bekijken of deze handeling uit te kunnen voeren moet u [[Special:Userlogin|aangemeld]] zijn bij deze wiki.',
+'exception-nologin-text-manual' => 'U moet $1 om deze pagina te kunnen bekijken of de handeling uit te voeren.',
# Virus scanner
'virus-badscanner' => "Onjuiste configuratie: onbekende virusscanner: ''$1''.",
Daarom kunt u vanaf uw IP-adres op dit moment geen nieuwe gebruikers registreren.',
'emailauthenticated' => 'Uw e-mailadres is bevestigd op $2 om $3.',
'emailnotauthenticated' => 'Uw e-mailadres is niet bevestigd.
-U ontvangt geen e-mail voor de onderstaande functies.',
+De volgende functies verzenden nog geen e-mail.',
'noemailprefs' => 'Geef een e-mailadres op in uw voorkeuren om deze functies te gebruiken.',
'emailconfirmlink' => 'Bevestig uw e-mailadres',
'invalidemailaddress' => 'Het e-mailadres is niet aanvaard, omdat het een ongeldige opmaak heeft.
'sectioneditnotsupported-text' => 'Het is op deze pagina niet mogelijk om paragrafen te bewerken.',
'permissionserrors' => 'Fouten in rechten',
'permissionserrorstext' => 'U hebt geen rechten om dit te doen om de volgende {{PLURAL:$1|reden|redenen}}:',
-'permissionserrorstext-withaction' => 'U hebt geen rechten om $2 om de volgende {{PLURAL:$1|reden|redenen}}:',
+'permissionserrorstext-withaction' => 'U hebt geen rechten om $2, {{PLURAL:$1|want}}:',
'recreate-moveddeleted-warn' => "'''Waarschuwing: u bent bezig met het aanmaken van een pagina die in het verleden verwijderd is.'''
Overweeg of het terecht is dat u verder werkt aan deze pagina.
'revdelete-hide-user' => 'Gebruikersnaam/IP-adres van de gebruiker verbergen',
'revdelete-hide-restricted' => 'Deze beperkingen ook op beheerders toepassen',
'revdelete-radio-same' => '(niet wijzigen)',
-'revdelete-radio-set' => 'Ja',
-'revdelete-radio-unset' => 'Nee',
+'revdelete-radio-set' => 'Verborgen',
+'revdelete-radio-unset' => 'Zichtbaar',
'revdelete-suppress' => 'Gegevens voor zowel beheerders als anderen onderdrukken',
'revdelete-unsuppress' => 'Beperkingen op teruggeplaatste wijzigingen verwijderen',
'revdelete-log' => 'Reden:',
'mypreferences' => 'Voorkeuren',
'prefs-edits' => 'Aantal bewerkingen:',
'prefsnologin' => 'Niet aangemeld',
-'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aangemeld]</span> zijn om uw voorkeuren te kunnen instellen.',
+'prefsnologintext2' => 'U moet $1 om voorkeuren in te stellen.',
'changepassword' => 'Wachtwoord wijzigen',
'prefs-skin' => 'Vormgeving',
'skin-preview' => 'Voorvertoning',
'right-bot' => 'Behandeld worden als een geautomatiseerd proces',
'right-nominornewtalk' => "Kleine bewerkingen aan een overlegpagina leiden niet tot een melding 'nieuwe berichten'",
'right-apihighlimits' => 'Hogere limieten in API-zoekopdrachten gebruiken',
-'right-writeapi' => 'Bewerken via de API',
+'right-writeapi' => 'Via de API bewerkingen uitvoeren',
'right-delete' => "Pagina's verwijderen",
'right-bigdelete' => "Pagina's met een grote geschiedenis verwijderen",
'right-deletelogentry' => 'Specifieke logboekregels verwijderen en terugplaatsen',
'right-viewmyprivateinfo' => 'Uw eigen privégegevens bekijken (bijvoorbeeld e-mailadres, echte naam)',
'right-editmyprivateinfo' => 'Uw eigen privégegevens bewerken (bijvoorbeeld e-mailadres, echte naam)',
'right-editmyoptions' => 'Uw eigen voorkeuren bewerken',
-'right-rollback' => 'Snel de laatste bewerking(en) van een gebruiker van een pagina terugdraaien',
+'right-rollback' => 'De bewerkingen van de laatste gebruiker die een pagina heeft bewerkt snel terugdraaien',
'right-markbotedits' => 'Teruggedraaide bewerkingen markeren als botbewerkingen',
'right-noratelimit' => 'Tijdsafhankelijke beperkingen negeren',
'right-import' => "Pagina's uit andere wiki's importeren",
'action-reupload' => 'dit bestaande bestand te overschrijven',
'action-reupload-shared' => 'dit bestand te uploaden, terwijl er al een bestand met dezelfde naam in de gedeelde mediadatabank staat',
'action-upload_by_url' => 'dit bestand vanaf een URL te uploaden',
-'action-writeapi' => 'via de API te bewerken',
+'action-writeapi' => 'via de API bewerkingen uit te voeren',
'action-delete' => 'deze pagina te verwijderen',
'action-deleterevision' => 'deze versie te verwijderen',
'action-deletedhistory' => 'de verwijderde versies van deze pagina te bekijken',
'action-suppressionlog' => 'dit beschermde logboek te bekijken',
'action-block' => 'deze gebruiker een bewerkingsblokkade op te leggen',
'action-protect' => 'het beveiligingsniveau van deze pagina aan te passen',
-'action-rollback' => 'bewerkingen van de laatste gebruiker die een pagina heeft bewerkt snel terugdraaien',
+'action-rollback' => 'de bewerkingen van de laatste gebruiker die een pagina heeft bewerkt snel terug te draaien',
'action-import' => "pagina's te importeren van een andere wiki",
'action-importupload' => "pagina's te importeren uit een bestandsupload",
'action-patrol' => 'bewerkingen van anderen als gecontroleerd te markeren',
E-mailadres: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Tenzij u deze pagina bezoekt, komen er geen verdere berichten. Op uw volglijst kunt u voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
+Tenzij u deze pagina bezoekt, komen er geen verdere berichten. Als u bent aangemeld, kunt u op uw volglijst voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
Groet van uw {{SITENAME}}-waarschuwingssysteem.
'allmessagesdefault' => 'Standaardinhoud',
'allmessagescurrent' => 'Huidige inhoud',
'allmessagestext' => 'Hieronder staan de systeemberichten uit de MediaWiki-naamruimte.
-Ga naar [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] als u wilt bijdragen aan de algemene vertaling voor MediaWiki.',
+Ga naar [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] als u wilt bijdragen aan de algemene vertaling voor MediaWiki.',
'allmessagesnotsupportedDB' => "Deze pagina kan niet worden gebruikt, omdat '''\$wgUseDatabaseMessages''' is uitgeschakeld.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filteren op aangepast:',
'pageinfo-length' => 'Paginalengte (in bytes)',
'pageinfo-article-id' => 'Paginanummer',
'pageinfo-language' => 'Taal voor de pagina',
+'pageinfo-content-model' => 'Paginainhoudmodel',
'pageinfo-robot-policy' => 'Indexering door robots',
'pageinfo-robot-index' => 'Toegestaan',
'pageinfo-robot-noindex' => 'Niet toegestaan',
'svg-long-desc' => 'SVG-bestand, nominaal $1 × $2 pixels, bestandsgrootte: $3',
'svg-long-desc-animated' => 'Bewegend SVG-bestand, nominaal $1 × $2 pixels, bestandsgrootte: $3',
'svg-long-error' => 'Ongeldig SVG-bestand: $1',
-'show-big-image' => 'Volledige resolutie',
+'show-big-image' => 'Oorspronkelijk bestand',
'show-big-image-preview' => 'Grootte van deze voorvertoning: $1.',
'show-big-image-other' => 'Andere {{PLURAL:$2|resolutie|resoluties}}: $1.',
'show-big-image-size' => '$1 × $2 pixels',
# External editor support
'edit-externally' => 'Dit bestand in een extern programma bewerken',
-'edit-externally-help' => '(zie de [//www.mediawiki.org/wiki/Manual:External_editors handleiding voor instellingen] voor meer informatie)',
+'edit-externally-help' => '(zie de [https://www.mediawiki.org/wiki/Manual:External_editors handleiding voor instellingen] voor meer informatie)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alles',
'confirm-unwatch-button' => 'OK',
'confirm-unwatch-top' => 'Deze pagina verwijderen uit uw volglijst?',
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← vorige pagina',
'imgmultipagenext' => 'volgende pagina →',
'version-hook-subscribedby' => 'Geabonneerd door',
'version-version' => '(Versie $1)',
'version-license' => 'Licentie',
-'version-poweredby-credits' => "Deze wiki wordt aangedreven door '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Deze wiki wordt aangedreven door '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'anderen',
'version-poweredby-translators' => 'translatewiki.net-vertalers',
'version-credits-summary' => 'We erkennen graag de volgende personen voor hun bijdrage aan [[Special:Version|MediaWiki]].',
# Special:Redirect
'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer of versienummer',
'redirect-legend' => 'Doorverwijzen naar een bestand of pagina',
-'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven).',
+'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'OK',
'redirect-lookup' => 'Opzoeken:',
'redirect-value' => 'Waarde:',
# Special:SpecialPages
'specialpages' => "Speciale pagina's",
-'specialpages-note' => '----
-* Normale speciale pagina\'s
-* <strong class="mw-specialpagerestricted">Beperkt toegankelijke speciale pagina\'s</strong>
-* <span class="mw-specialpagecached">Speciale pagina\'s met alleen gegevens uit de cache (mogelijk verouderd)</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normale speciale pagina\'s
+* <span class="mw-specialpagerestricted">Beperkt toegankelijke speciale pagina\'s</span>',
'specialpages-group-maintenance' => 'Onderhoudsrapporten',
'specialpages-group-other' => "Overige speciale pagina's",
'specialpages-group-login' => 'Aanmelden / registreren',
'''Dersom dette er eit heilt vanleg forsøk på endring, prøv ein gong til. Dersom det framleis ikkje går, prøv å logge deg ut og inn att.'''",
'token_suffix_mismatch' => "'''Endringa di vart avvist fordi klienten/nettlesaren din lagar teiknfeil i teksten. Dette vart gjort for å hindre øydelegging av teksten på sida. Slikt kan av og til hende når ein brukar feilprogrammerte og vevbaserte anonyme proxytenester.'''",
-'edit_form_incomplete' => 'Delar av redigeringsskjemaet nådde ikkje fram til tenaren; dobbelsjekk at redigeringa er korrekt, og prøv om att.',
+'edit_form_incomplete' => 'Delar av endringsskjemaet nådde ikkje fram til tenaren; dobbelsjekk at endringa er korrekt og prøv om att.',
'editing' => 'Endrar $1',
'creating' => 'Opprettar $1',
'editingsection' => 'Endrar $1 (bolk)',
'edit-gone-missing' => 'Kunne ikkje oppdatere sida.
Det ser ut til at ho er sletta.',
'edit-conflict' => 'Endringskonflikt.',
-'edit-no-change' => 'Redigeringa di vart ignorert fordi det ikkje vart gjort endringar i teksten.',
+'edit-no-change' => 'Endringa di vart ignorert fordi det ikkje vart gjort endringar i teksten.',
'postedit-confirmation' => 'Endringa di vart lagra.',
'edit-already-exists' => 'Kunne ikkje opprette ny side fordi ho alt eksisterer.',
'defaultmessagetext' => 'Standard meldingstekst',
'mergehistory-reason' => 'Årsak:',
# Merge log
-'mergelog' => 'Flettingslogg',
+'mergelog' => 'Flettelogg',
'pagemerge-logentry' => 'fletta [[$1]] til [[$2]] (versjonar fram til $3)',
'revertmerge' => 'Fjern fletting',
'mergelogpagetext' => 'Nedanfor finn du ei liste over dei siste flettingane av ein sidehistorikk til ein annan.',
'mypreferences' => 'Innstillingar',
'prefs-edits' => 'Tal på endringar:',
'prefsnologin' => 'Ikkje innlogga',
-'prefsnologintext' => 'Du må vere <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logga inn]</span> for å endre brukarinnstillingane.',
'changepassword' => 'Skift passord',
'prefs-skin' => 'Drakt',
'skin-preview' => 'førehandsvis',
'block-log-flags-noemail' => 'sending av e-post blokkert',
'block-log-flags-nousertalk' => 'kan ikkje endre eiga diskusjonsside',
'block-log-flags-angry-autoblock' => 'utvida autoblokkering aktivert',
-'block-log-flags-hiddenname' => 'brukarnamn gøymt',
+'block-log-flags-hiddenname' => 'brukarnamn løynt',
'range_block_disabled' => 'Funksjonen for blokkering av IP-adresse-seriar er inaktivert på tenaren.',
'ipb_expiry_invalid' => 'Ugyldig opphørstid.',
'ipb_expiry_temp' => 'For å skjule brukarnamnet må blokkeringa vere permanent.',
'allmessagesdefault' => 'Standardtekst',
'allmessagescurrent' => 'Gjeldande meldingstekst',
'allmessagestext' => 'Dette er ei liste over systemmeldingar i MediaWiki-namnerommet.
-Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] om du ynskjer å bidra til den generelle omsetjinga av MediaWiki.',
+Vitja [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] om du ynskjer å bidra til den generelle omsetjinga av MediaWiki.',
'allmessagesnotsupportedDB' => "Denne sida kan ein ikkje bruka fordi «'''\$wgUseDatabaseMessages'''» er slått av.",
'allmessages-filter-legend' => 'Filtrer',
'allmessages-filter' => 'Filtrer etter tilpassingsgrad:',
'markedaspatrollederror' => 'Kan ikkje merke sida som patruljert',
'markedaspatrollederrortext' => 'Du må markere ein versjon for å kunne godkjenne.',
'markedaspatrollederror-noautopatrol' => 'Ein har ikkje høve til å merkje sine eigne endringar som godkjende.',
-'markedaspatrollednotify' => 'Denne endringa på $1 vart merkt som patruljert.',
+'markedaspatrollednotify' => 'Endringa på $1 vart merkt som patruljert.',
'markedaspatrollederrornotify' => 'Det gjekk ikkje å merkja endringa som patruljert.',
# Patrol log
# External editor support
'edit-externally' => 'Endre denne fila med eit eksternt program',
-'edit-externally-help' => '(Sjå [//www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonane] for meir informasjon)',
+'edit-externally-help' => '(Sjå [https://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonane] for meir informasjon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alle',
'version-hook-subscribedby' => 'Brukt av',
'version-version' => '(versjon $1)',
'version-license' => 'Lisens',
-'version-poweredby-credits' => "Denne wikien er driven av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Denne wikien er driven av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andre',
'version-poweredby-translators' => 'translatewiki.net-omsetjarar',
'version-credits-summary' => 'Me ynskjer godskriva desse personane for tilskotet deira til [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Spesialsider',
-'specialpages-note' => '----
-* Vanlege spesialsider.
+'specialpages-note' => '* Vanlege spesialsider.
* <span class="mw-specialpagerestricted">Spesialsider med avgrensa tilgang.</span>',
'specialpages-group-maintenance' => 'Vedlikehaldsrapportar',
'specialpages-group-other' => 'Andre spesialsider',
'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|endra}} i løyndom synlegdomen til versjonar på sida $3',
'revdelete-content-hid' => 'innhald løynt',
'revdelete-summary-hid' => 'endringsamandrag løynt',
-'revdelete-uname-hid' => 'brukarnamn gøymt',
+'revdelete-uname-hid' => 'brukarnamn løynt',
'revdelete-content-unhid' => 'innhald gjort synleg',
'revdelete-summary-unhid' => 'endringssamandrag gjort synleg',
'revdelete-uname-unhid' => 'brukarnamn gjort synleg',
# External editor support
'edit-externally' => 'Fetola faele ye o šumiša thulusi ya ka ntle',
-'edit-externally-help' => '(Lebelela [//www.mediawiki.org/wiki/Manual:External_editors Taelo ya go thoma] go humana sedi)',
+'edit-externally-help' => '(Lebelela [https://www.mediawiki.org/wiki/Manual:External_editors Taelo ya go thoma] go humana sedi)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ka moka',
'invalidtitle-knownnamespace' => "Títol invalid amb l'espaci de noms « $2 » e l'intitulat « $3 »",
'invalidtitle-unknownnamespace' => "Títol invalid amb lo numèro d'espaci de noms $1 e l'intitulat « $2 » desconeguts",
'exception-nologin' => 'Pas connectat',
-'exception-nologin-text' => "Aquesta pagina o aquesta accion necessita d'èsser connectada sus aqueste wiki.",
+'exception-nologin-text' => '[[Special:Userlogin|Connectatz-vos]] per poder accedir a aquesta pagina o aquesta accion.',
+'exception-nologin-text-manual' => '$1 per poder accedir a aquesta pagina o aquesta accion.',
# Virus scanner
'virus-badscanner' => "Marrida configuracion : escaner de virús desconegut : ''$1''",
D’autres administrators sus {{SITENAME}} poiràn totjorn accedir al contengut amagat e lo restablir tornamai a travèrs d'aquesta meteissa interfàcia, a mens qu’una restriccion suplementària siá mesa en plaça pels operators del site.",
'revdelete-confirm' => "Confirmatz que volètz efectuar aquesta accion, que ne comprenètz las consequéncias, e qu'o fasètz en acòrd amb [[{{MediaWiki:Policy-url}}|las règlas]].",
'revdelete-suppress-text' => "La supression deu èsser utilizada '''sonque''' dins los cases seguents :
+* Informacions potencialament difamatòrias
* Informacions personalas inapropriadas
*: ''adreça, numèro de telefòn, numèro de seguretat sociala, ...''",
'revdelete-legend' => 'Metre en plaça de restriccions de version :',
'revdelete-hide-user' => 'Nom d’utilizaire/Adreça IP de l’editor',
'revdelete-hide-restricted' => 'Suprimir aquestas donadas als administrators e mai als autres',
'revdelete-radio-same' => '(cambiar pas)',
-'revdelete-radio-set' => 'Visible',
-'revdelete-radio-unset' => 'Amagat',
+'revdelete-radio-set' => 'Amagat',
+'revdelete-radio-unset' => 'Visible',
'revdelete-suppress' => 'Suprimir las donadas dels administrators e tanben dels autres utilizaires',
'revdelete-unsuppress' => 'Levar las restriccions sus las versions restablidas',
'revdelete-log' => 'Motiu :',
'mypreferences' => 'Preferéncias',
'prefs-edits' => 'Nombre d’edicions :',
'prefsnologin' => 'Vos sètz pas identificat(ada)',
-'prefsnologintext' => 'Vos cal èsser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} connectat(ada)]</span> per modificar vòstras preferéncias d’utilizaire.',
+'prefsnologintext2' => "$1 per definir las preferéncias d'utilizaire.",
'changepassword' => 'Modificacion del senhal',
'prefs-skin' => 'Aparéncia',
'skin-preview' => 'Previsualizar',
'filetype-bad-ie-mime' => 'Lo fichièr pòt pas èsser importat perque serià detectat coma « $1 » per Internet Explorer, tipe de fichièr interdich perque potencialament dangierós.',
'filetype-unwanted-type' => "«.$1»''' es un format de fichièr pas desirat.
{{PLURAL:$3|Lo tipe de fichièr preconizat es|Los tipes de fichièrs preconizats son}} $2.",
-'filetype-banned-type' => "''' « .$1 » '''{{PLURAL:$4|est pas un tipe de fichièr autorizat|son pas de tipes de fichièrs autorizats}}.
-{{PLURAL:$3|lo tipe de fichièr autorizat es |los tipes de fichièrs autorizats son}} $2.",
+'filetype-banned-type' => "''' « .$1 » '''{{PLURAL:$4|es pas un tipe de fichièr autorizat|son pas de tipes de fichièrs autorizats}}.
+{{PLURAL:$3|Lo tipe de fichièr autorizat es|Los tipes de fichièrs autorizats son}} $2.",
'filetype-missing' => "Lo fichièr a pas cap d'extension (coma « .jpg » per exemple).",
'empty-file' => "Lo fichièr qu'avètz somés èra void.",
'file-too-large' => "Lo fichièr qu'avètz somés èra tròp grand.",
'pageswithprop' => 'Paginas amb una proprietat de pagina',
'pageswithprop-legend' => 'Paginas amb una proprietat de pagina',
+'pageswithprop-text' => "Aquesta pagina fa la lista de las paginas qu'utilizan una proprietat de pagina particulara.",
'pageswithprop-prop' => 'Nom de la proprietat :',
'pageswithprop-submit' => 'Anar',
'pageswithprop-prophidden-long' => 'valor de proprietat de tèxte long amagada ($1)',
'pager-newer-n' => '{{PLURAL:$1|1 mai recenta|$1 mai recentas}}',
'pager-older-n' => '{{PLURAL:$1|1 mai anciana|$1 mai ancianas}}',
'suppress' => 'Supervisor',
+'querypage-disabled' => 'Aquesta pagina especiala es desactivada per de rasons de performàncias.',
# Book sources
'booksources' => 'Obratges de referéncia',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Seguit...',
'unwatching' => 'Fin del seguit...',
+'watcherrortext' => "Una error s'es producha al moment de la modificacion dels paramètres de vòstra lista de seguiment per « $1 ».",
'enotif_mailer' => 'Sistèma d’expedicion de notificacion de {{SITENAME}}',
'enotif_reset' => 'Marcar totas las paginas coma visitadas',
** Temptativa d’intimidacion o agarriment
** Abús d’utilizacion de comptes multiples
** Nom d’utilizaire inacceptable, injuriós o difamant',
+'ipb-hardblock' => 'Empachar los utilizaires connectats de modificar en utilizant aquesta adreça IP',
'ipbcreateaccount' => 'Empachar la creacion de compte',
'ipbemailban' => 'Empachar l’utilizaire de mandar de corrièrs electronics',
'ipbenableautoblock' => 'Blocar automaticament las adreças IP utilizadas per aqueste utilizaire',
'ipbotherreason' => 'Motiu diferent o suplementari',
'ipbhidename' => 'Amagar lo nom d’utilizaire de las modificacions e de las listas',
'ipbwatchuser' => "Seguir las paginas d'utilizaire e de discussion d'aqueste utilizaire",
+'ipb-disableusertalk' => "Empachar l'utilizaire de modificar sa pagina de discussion pendent lo blocatge",
'ipb-change-block' => 'Tornar blocar aqueste utilizaire amb aquestes paramètres',
'ipb-confirm' => 'Confirmar lo blocatge',
'badipaddress' => "L'adreça IP es incorrècta",
'allmessagesdefault' => 'Messatge per defaut',
'allmessagescurrent' => 'Messatge actual',
'allmessagestext' => 'Aquò es la lista de totes los messatges disponibles dins l’espaci MediaWiki.
-Visitatz la [//www.mediawiki.org/wiki/Localisation Localizacion MediaWiki] e [//translatewiki.net translatewiki.net] se desiratz contribuir a la localizacion MediaWiki generica.',
+Visitatz la [https://www.mediawiki.org/wiki/Localisation Localizacion MediaWiki] e [//translatewiki.net translatewiki.net] se desiratz contribuir a la localizacion MediaWiki generica.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' es pas disponible perque '''\$wgUseDatabaseMessages''' es desactivat.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => 'Filtrar per estat de modificacion :',
'import-invalid-interwiki' => "Impossible d'importar dempuèi lo wiki especificat.",
'import-error-edit' => 'La pagina « $1 » es pas estada importada perque sètz pas autorizat a la modificar.',
'import-error-create' => 'La pagina « $1 » es pas estada importada perque sètz pas autorizat a la crear.',
+'import-error-invalid' => 'Pagina « $1 » es pas importada perque son nom es pas valid.',
'import-options-wrong' => '{{PLURAL:$2|Marrida opcion|Marridas opcions}} : <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'La pagina raiç provesida es un títol invalid.',
'pageinfo-length' => 'Talha de la pagina (en octets)',
'pageinfo-article-id' => 'Numèro de la pagina',
'pageinfo-language' => 'Lenga del contengut de la pagina',
+'pageinfo-content-model' => 'Modèl de contengut de la pagina',
'pageinfo-robot-policy' => 'Indexacion per robòts',
'pageinfo-robot-index' => 'Autorizada',
'pageinfo-robot-noindex' => 'Interdicha',
'svg-long-desc' => 'Fichièr SVG, resolucion de $1 × $2 pixèls, talha : $3',
'svg-long-desc-animated' => 'Fichièr SVG animat, talha $1 x $2 pixèls, talha del fichièr : $3',
'svg-long-error' => 'Fichièr SVG invalid : $1',
-'show-big-image' => 'Imatge en resolucion mai nauta',
+'show-big-image' => "Fichièr d'origina",
'show-big-image-preview' => "Talha d'aqueste apercebut : $1.",
'show-big-image-other' => '{{PLURAL:$2|Autra resolucion|Autras resolucions}} : $1.',
'show-big-image-size' => '$1 × $2 pixèls',
# External editor support
'edit-externally' => 'Modificar aqueste fichièr en utilizant una aplicacion extèrna',
-'edit-externally-help' => "(Consultatz [//www.mediawiki.org/wiki/Manual:External_editors/oc las instruccions d'installacion] per mai d’entresenhas)",
+'edit-externally-help' => "(Consultatz [https://www.mediawiki.org/wiki/Manual:External_editors/oc las instruccions d'installacion] per mai d’entresenhas)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tot',
# Separators for various lists, etc.
'colon-separator' => ' : ',
+'quotation-marks' => '« $1 »',
# Multipage image navigation
'imgmultipageprev' => '← pagina precedenta',
'version-hook-subscribedby' => 'Definit per',
'version-version' => '(Version $1)',
'version-license' => 'Licéncia',
-'version-poweredby-credits' => "Aqueste wiki fonciona gràcias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Aqueste wiki fonciona gràcias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'autres',
'version-poweredby-translators' => 'traductors de translatewiki.net',
'version-software' => 'Logicial installat',
# Special:SpecialPages
'specialpages' => 'Paginas especialas',
-'specialpages-note' => '----
-* Paginas especialas normalas.
+'specialpages-note' => '* Paginas especialas normalas.
* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>
* <span class="mw-specialpagecached">Paginas especialas solament en escondedor (poirián èsser obsolètas).</span>',
'specialpages-group-maintenance' => 'Rapòrts de mantenença',
'feedback-error1' => "Error : Resultat de l'IPA pas reconegut",
'feedback-error2' => 'Error : la modificacion a fracassat',
'feedback-error3' => "Error : pas cap de responsa de l'API",
+'feedback-thanks' => 'Mercé ! Vòstre comentari es estat publicat sus la pagina "[$2 $1]".',
'feedback-close' => 'Fach',
+'feedback-bugcheck' => "Remirable ! Verificatz simplament qu'es pas un dels [$1 bugs ja coneguts].",
'feedback-bugnew' => 'Ai verificat. Senhalar un bug novèl',
# Search suggestions
'api-error-badaccess-groups' => 'Sètz pas autorizat a cargar de fichièrs sus aqueste wiki.',
'api-error-badtoken' => 'Error intèrna : marrit « geton ».',
'api-error-copyuploaddisabled' => 'Los cargaments via URL son desactivats sus aqueste servidor.',
+'api-error-duplicate' => "I a ja {{PLURAL:$1|[$2 un autre fichièr present]|[$2 d'autres fichièrs presents]}} sul site amb lo meteis contengut.",
+'api-error-duplicate-archive' => "I aviá ja {{PLURAL:$1|[$2 un autre fichièr present]|[$2 d'autres fichièrs presents]}} sul site amb lo meteis contengut, mas {{PLURAL:$1|es estat suprimit|son estats suprimits}}.",
'api-error-duplicate-archive-popup-title' => 'Duplicar {{PLURAL:$1|lo fichièr|los fichièrs}} que {{PLURAL:$1|ja es estat suprimit|je son estats suprimits}}',
'api-error-duplicate-popup-title' => '{{PLURAL:$1|fichièr|fichièrs}} en doble',
'api-error-empty-file' => "Lo fichièr qu'avètz somés èra void.",
'api-error-file-too-large' => "Lo fichièr qu'avètz somés èra tròp grand.",
'api-error-filename-tooshort' => 'Lo nom del fichièr es tròp cort.',
'api-error-filetype-banned' => 'Aqueste tipe de fichièr es interdich',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|es pas un tipe de fichièr autorizat|son pas de tipes de fichièrs autorizats}}.
+{{PLURAL:$3|Lo tipe de fichièr autorizat es|Los tipes de fichièrs autorizats son}} $2.',
'api-error-filetype-missing' => "L'extension del fichièr es mancanta.",
'api-error-hookaborted' => "La modificacion qu'avètz ensajat de realizar es estada anullada per una extension.",
'api-error-http' => 'Error intèrna : se pòt pas connectar al servidor.',
'mypreferences' => 'ପସନ୍ଦ',
'prefs-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା:',
'prefsnologin' => 'ଲଗ ଇନ କରିନାହାନ୍ତି',
-'prefsnologintext' => 'ବ୍ୟବହାରକାରୀଙ୍କ ପସନ୍ଦସବୁ ବଦଳାଇବା ପାଇଁ ଆପଣଙ୍କୁ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ଲଗ ଇନ]</span> କରିବାକୁ ପଡ଼ିବ ।',
'changepassword' => 'ପାସୱର୍ଡ଼ ବଦଳାନ୍ତୁ',
'prefs-skin' => 'ବହିରାବରଣ',
'skin-preview' => 'ସାଇତା ଆଗରୁ ଦେଖଣା',
'allmessagesdefault' => 'ଆପେଆପେ ଚିଠିରେ ରହିବା କଥା',
'allmessagescurrent' => 'ଏବେକର ସନ୍ଦେଶ ଲେଖା',
'allmessagestext' => 'ଏଥିରେ ମିଡ଼ିଆଉଇକି ନେମସ୍ପେସରେ ଥିବା ସିଷ୍ଟମ ସନ୍ଦେଶର ଏକ ତାଲିକା ଦିଆଗଲା ।
-ଯଦି ଆପଣ ମୂଳ ଦୟାକରି ମିଡ଼ିଆଉଇକି ଆଞ୍ଚଳିକୀକରଣରେ ଭାଗ ନେବା ପାଇଁ ଚାହାନ୍ତି ତେବେ [//www.mediawiki.org/wiki/Localisation ମିଡ଼ିଆଉଇକି ଆଞ୍ଚଳିକୀକରଣ] ଓ [//translatewiki.net translatewiki.net] ଦେଖନ୍ତୁ ।',
+ଯଦି ଆପଣ ମୂଳ ଦୟାକରି ମିଡ଼ିଆଉଇକି ଆଞ୍ଚଳିକୀକରଣରେ ଭାଗ ନେବା ପାଇଁ ଚାହାନ୍ତି ତେବେ [https://www.mediawiki.org/wiki/Localisation ମିଡ଼ିଆଉଇକି ଆଞ୍ଚଳିକୀକରଣ] ଓ [//translatewiki.net translatewiki.net] ଦେଖନ୍ତୁ ।',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ଅଚଳ କରାଯାଇଥିବାରୁ ଏହି ପୃଷ୍ଠାଟି ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ ।",
'allmessages-filter-legend' => 'ଛାଣିବା',
'allmessages-filter' => 'ଆପଣା ପସନ୍ଦରେ ଛାଣିବେ:',
# External editor support
'edit-externally' => 'ଏକ ବାହାର ଆପ୍ଲିକେସନ ବ୍ୟବହାର କରି ଏହି ଫାଇଲଟିକୁ ବଦଳାଇବା',
-'edit-externally-help' => '(ଆହୁରି ବି [//www.mediawiki.org/wiki/Manual:External_editors ସଜାଡିବା ନିର୍ଦେଶ] ଦେଖନ୍ତୁ)',
+'edit-externally-help' => '(ଆହୁରି ବି [https://www.mediawiki.org/wiki/Manual:External_editors ସଜାଡିବା ନିର୍ଦେଶ] ଦେଖନ୍ତୁ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ସବୁ',
'version-hook-subscribedby' => 'କାହା ଦେଇ ମଗାଯାଇଛି',
'version-version' => '(ଭାଗ $1)',
'version-license' => 'ଲାଇସେନ୍ସ',
-'version-poweredby-credits' => "ଏହି ଉଇକିଟି '''[//www.mediawiki.org/ ମିଡ଼ିଆଉଇକି]''' ଦେଇ ପରିଚାଳିତ, ସତ୍ଵାଧିକାର © ୨୦୦୧-$1 $2 ।",
+'version-poweredby-credits' => "ଏହି ଉଇକିଟି '''[https://www.mediawiki.org/ ମିଡ଼ିଆଉଇକି]''' ଦେଇ ପରିଚାଳିତ, ସତ୍ଵାଧିକାର © ୨୦୦୧-$1 $2 ।",
'version-poweredby-others' => 'ବାକିସବୁ',
'version-credits-summary' => 'ଆମେ ଏହି ଲୋକମାନଙ୍କୁ [[Special:Version|MediaWiki]]ରେ ସେମାନକର ଅବଦାନ ପାଇଁ ଚିହ୍ନିବାକୁ ଚାହୁଁଛୁ ।',
'version-license-info' => 'MediaWiki ଏକ ମାଗଣା ସଫ୍ଟୱାର; ଆପଣ ଏହାକୁ ପୁନବଣ୍ଟନ କରିପାରିବେ ବା GNU ଜେନେରାଲ ପବ୍ଲିକ ଲାଇସେନ୍ସ ଅଧିନରେ ବଦଳାଇପାରିବେ ଯାହା ଫ୍ରି ସଫ୍ଟୱାର ଫାଉଣ୍ଡେସନ ଦେଇ ପ୍ରକାଶିତ ହୋଇଥିବ।
# Special:SpecialPages
'specialpages' => 'ବିଶେଷ ପୃଷ୍ଠା',
-'specialpages-note' => '----
-* ସାଧାରଣ ବିଶେଷ ପୃଷ୍ଠାମାନ ।
+'specialpages-note' => '* ସାଧାରଣ ବିଶେଷ ପୃଷ୍ଠାମାନ ।
* <span class="mw-specialpagerestricted">କିଳାଯାଇଥିବା ବିଶେଷ ପୃଷ୍ଠାମାନ ।</span>',
'specialpages-group-maintenance' => 'ରକ୍ଷଣାବେକ୍ଷଣା ବିବରଣୀ',
'specialpages-group-other' => 'ବାକି ବିଶେଷ ପୃଷ୍ଠା',
# External editor support
'edit-externally' => 'Ивын ацы файл æддаг программæйæ',
-'edit-externally-help' => '(Кæс [//www.mediawiki.org/wiki/Manual:External_editors сывæрыны уагæвæрдтæ] фылдæр базонынæн)',
+'edit-externally-help' => '(Кæс [https://www.mediawiki.org/wiki/Manual:External_editors сывæрыны уагæвæрдтæ] фылдæр базонынæн)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'иууылдæр',
'version-other' => 'Æндæр',
'version-version' => '(Фæлтæр $1)',
'version-license' => 'Лицензи',
-'version-poweredby-credits' => "Ацы викийæн тых радта '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ацы викийæн тых радта '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'æндæртæ',
'version-software-version' => 'Верси',
* @author Babanwalia
* @author Gman124
* @author Guglani
+ * @author Jimidar
* @author Kaganer
* @author Raj Singh
* @author Saurabh123
'gotaccount' => 'ਖਾਤਾ ਪਹਿਲਾਂ ਹੀ ਹੈ? $1',
'gotaccountlink' => 'ਲਾਗਇਨ',
'userlogin-resetlink' => 'ਆਪਣੀ ਲਾਗਇਨ ਜਾਣਕਾਰੀ ਭੁੱਲ ਗਏ ਹੋ?',
-'userlogin-resetpassword-link' => 'à¨\86ਪਣਾ ਪਾਸਵਰਡ ਫà©\87ਰ ਬਣਾà¨\93',
+'userlogin-resetpassword-link' => 'à¨\86ਪਣਾ ਪਾਸਵਰਡ à¨à©\81ੱਲ à¨\97à¨\8f ਹà©\8b?',
'helplogin-url' => 'Help: ਲਾਗਇਨ ਕਰਨਾ',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ਲਾਗਇਨ ਹੋਣ ਲਈ ਮੱਦਦ]]',
'createacct-join' => 'ਆਪਣੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
'revdelete-hide-user' => 'ਸੋਧਣ ਵਾਲ਼ੇ ਦਾ ਮੈਂਬਰ-ਨਾਂ/IP ਪਤਾ ਲੁਕਾਓ',
'revdelete-hide-restricted' => 'ਪ੍ਰਸ਼ਾਸਕਾਂ ਅਤੇ ਹੋਰਾਂ ਦੀ ਸਮੱਗਰੀ ਲੁਕਾਓ',
'revdelete-radio-same' => '(ਨਾ ਬਦਲੋ)',
-'revdelete-radio-set' => 'ਹਾਂ',
-'revdelete-radio-unset' => 'ਨਹà©\80à¨\82',
+'revdelete-radio-set' => 'ਲà©\81à¨\95ਵਾਂ',
+'revdelete-radio-unset' => 'ਪਰà¨\97à¨\9f',
'revdelete-suppress' => 'ਪ੍ਰਸ਼ਾਸਕਾਂ ਅਤੇ ਹੋਰਾਂ ਦੀ ਸਮੱਗਰੀ ਲੁਕਾਓ',
'revdelete-unsuppress' => 'ਮੁੜ ਬਹਾਲ ਕੀਤੀਆਂ ਰੀਵਿਜ਼ਨਾਂ ਤੋਂ ਰੋਕਾਂ ਹਟਾਓ',
'revdelete-log' => 'ਕਾਰਨ:',
'mypreferences' => 'ਪਸੰਦਾਂ',
'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
'prefsnologin' => 'ਦਾਖ਼ਲ ਨਹੀਂ ਹੋ',
-'prefsnologintext' => 'ਵਰਤੋਂਕਾਰ ਪਸੰਦਾਂ ਸੈੱਟ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ਲਾਗਇਨ]</span> ਕਰਨਾ ਪਵੇਗਾ।',
'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
'prefs-skin' => 'ਸਕਿਨ',
'skin-preview' => 'ਝਲਕ',
'file-info-size' => '$1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਅਕਾਰ: $3, MIME ਕਿਸਮ: $4',
'file-nohires' => 'ਇਸ ਤੋਂ ਵੱਡੀ ਤਸਵੀਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।',
'svg-long-desc' => 'SVG ਫ਼ਾਈਲ, ਆਮ ਤੌਰ ’ਤੇ $1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਦਾ ਅਕਾਰ: $3',
-'show-big-image' => 'ਪà©\82ਰਾ ਰà©\88à¨\9cà©\8bਲà©\87ਸ਼ਨ',
+'show-big-image' => 'à¨\85ਸਲ ਫਾà¨\88ਲ',
# Special:NewFiles
'newimages' => 'ਨਵੀਆਂ ਫ਼ਾਈਲਾਂ ਦੀ ਗੈਲਰੀ',
# External editor support
'edit-externally' => 'ਬਾਹਰੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤ ਕੇ ਇਸ ਫ਼ਾਈਲ ਨੂੰ ਸੋਧੋ',
-'edit-externally-help' => '(ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] ਵੇਖੋ)',
+'edit-externally-help' => '(ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ਵੇਖੋ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ਸਭ',
'mypreferences' => '↓Deng pinili ku',
'prefs-edits' => 'Bilang da reng edit:',
'prefsnologin' => 'ekamaka log',
-'prefsnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba mong apagana deng pinili ning talagamit (user preferences).',
'changepassword' => 'Alilan ya ing password',
'prefs-skin' => 'Balat',
'skin-preview' => 'I-preview',
# External editor support
'edit-externally' => 'I-edit me ing simpan a ini kapamilatan ning aplikasiun o program a ibat king kilual.',
-'edit-externally-help' => '(Lon me ing [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para king karagdagang informacion)',
+'edit-externally-help' => '(Lon me ing [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para king karagdagang informacion)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'eganagana',
# External editor support
'edit-externally' => "Éditer ch'fichié-lo aveuc eune éstérne aplicachon",
-'edit-externally-help' => '(Vir [//www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
+'edit-externally-help' => '(Vir [https://www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tertous',
# Special:SpecialPages
'specialpages' => 'Paches éspéchiales',
-'specialpages-note' => '----
-* Paches éspéchiales conformes.
+'specialpages-note' => '* Paches éspéchiales conformes.
* <span class="mw-specialpagerestricted">Paches éspéchiales réstrintes.</span>
* <span class="mw-specialpagecached">Paches éspéchiales seulemint in muche (pétète des viuseries).</span>',
'specialpages-group-maintenance' => "Rapports d'maintenanche",
*
* @author Kaganer
* @author Krinkle
+ * @author Shirayuki
* @author Xqt
* @author לערי ריינהארט
*/
# External editor support
'edit-externally' => 'Die Dadai midm õnnare Weagzaisch beawaide',
-'edit-externally-help' => '(Gugg uff [//www.mediawiki.org/wiki/Manual:External_editors Inschdallazionsõwaisunge] fa mea Auskinfd)',
+'edit-externally-help' => '(Gugg uff [https://www.mediawiki.org/wiki/Manual:External_editors Inschdallazionsõwaisunge] fa mea Auskinfd)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alle',
'passwordreset-domain' => 'Domena',
'passwordreset-capture' => 'Czy pokazywać treść wiadomości e‐mail?',
'passwordreset-capture-help' => 'Jeśli zaznaczysz to pole, zobaczysz treść wiadomości e‐mail z tymczasowym hasłem, w tej samej formie w jakiej jest wysyłana do użytkownika.',
-'passwordreset-email' => 'Adres e‐mail',
+'passwordreset-email' => 'Adres e‐mail:',
'passwordreset-emailtitle' => 'Dane konta w {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'passwordreset-emailtext-ip' => 'Ktoś (prawdopodobnie Ty, spod adresu IP $1) poprosił o zresetowanie twojego hasła w {{GRAMMAR:MS.lp{{SITENAME}}}} ($4). Z tym adresem e‐mailowym powiązane {{PLURAL:$3|jest konto użytkownika|są następujące konta użytkowników:}}
'changeemail-header' => 'Zmiana adresu e‐mail',
'changeemail-text' => 'Wypełnij formularz, jeśli chcesz zmienić swój adres poczty elektronicznej. Będziesz musiał wprowadzić hasło, aby potwierdzić tę zmianę.',
'changeemail-no-info' => 'Musisz być zalogowany, by uzyskać bezpośredni dostęp do tej strony.',
-'changeemail-oldemail' => 'Obecny adres e‐mail',
-'changeemail-newemail' => 'Nowy adres e-mail',
+'changeemail-oldemail' => 'Obecny adres e‐mail:',
+'changeemail-newemail' => 'Nowy adres e-mail:',
'changeemail-none' => '(brak)',
-'changeemail-password' => 'Hasło {{SITENAME}}:',
+'changeemail-password' => 'Twoje hasło:',
'changeemail-submit' => 'Zapisz nowy',
'changeemail-cancel' => 'Anuluj',
'mypreferences' => 'Preferencje',
'prefs-edits' => 'Liczba edycji',
'prefsnologin' => 'Nie jesteś zalogowany',
-'prefsnologintext' => 'Musisz się <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalogować]</span> przed zmianą swoich preferencji.',
'changepassword' => 'Zmiana hasła',
'prefs-skin' => 'Skórka',
'skin-preview' => 'podgląd',
'allmessagesdefault' => 'Tekst domyślny',
'allmessagescurrent' => 'Tekst obecny',
'allmessagestext' => 'Lista wszystkich komunikatów systemowych dostępnych w przestrzeni nazw MediaWiki.
-Odwiedź [//www.mediawiki.org/wiki/Localisation Tłumaczenie MediaWiki] oraz [//translatewiki.net translatewiki.net], jeśli chcesz uczestniczyć w tłumaczeniu oprogramowania MediaWiki.',
+Odwiedź [https://www.mediawiki.org/wiki/Localisation Tłumaczenie MediaWiki] oraz [//translatewiki.net translatewiki.net], jeśli chcesz uczestniczyć w tłumaczeniu oprogramowania MediaWiki.',
'allmessagesnotsupportedDB' => "Ta strona nie może być użyta, ponieważ zmienna '''\$wgUseDatabaseMessages''' jest wyłączona.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Filtrowanie według stanu modyfikacji:',
# External editor support
'edit-externally' => 'Edytuj plik, używając zewnętrznej aplikacji',
-'edit-externally-help' => '(Więcej informacji o używaniu [//www.mediawiki.org/wiki/Manual:External_editors zewnętrznych edytorów]).',
+'edit-externally-help' => '(Więcej informacji o używaniu [https://www.mediawiki.org/wiki/Manual:External_editors zewnętrznych edytorów]).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'wszystkie',
'version-hook-subscribedby' => 'Zapotrzebowany przez',
'version-version' => '(Wersja $1)',
'version-license' => 'Licencja',
-'version-poweredby-credits' => "Ta wiki korzysta z oprogramowania '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001‐$1 $2.",
+'version-poweredby-credits' => "Ta wiki korzysta z oprogramowania '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001‐$1 $2.",
'version-poweredby-others' => 'inni',
'version-poweredby-translators' => 'tłumacze translatewiki.net',
'version-credits-summary' => 'Następujące osoby wniosły istotny wkład w rozwój oprogramowania [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Strony specjalne',
-'specialpages-note' => '----
-* Normalne strony specjalne.
+'specialpages-note' => '* Normalne strony specjalne.
* <span class="mw-specialpagerestricted">Zastrzeżone strony specjalne.</span>',
'specialpages-group-maintenance' => 'Raporty konserwacyjne',
'specialpages-group-other' => 'Inne strony specjalne',
'invalidtitle-knownnamespace' => "Tìtol ch'a va nen bin con lë spassi nominal «$2» e ël test «$3»",
'invalidtitle-unknownnamespace' => 'Tìtol pa bon con nùmer dë spassi nominal $1 e test «$2» sconossù',
'exception-nologin' => 'Nen rintrà ant ël sistema',
-'exception-nologin-text' => "Costa pàgina o assion a l'ha damanca ch'a sia rintrà an costa wiki.",
+'exception-nologin-text' => "Për piasì, [[Special:Userlogin|ch'a rintra ant ël sistema]] për podèj acede a costa pàgina o a costa assion.",
+'exception-nologin-text-manual' => "Për piasì, ch'a $1 për podèj acede a costa pàgina o costa assion.",
# Virus scanner
'virus-badscanner' => "Configurassion falà: antivìrus nen conossù: ''$1''",
'mypreferences' => 'Gust',
'prefs-edits' => 'Nùmer ëd modìfiche fàite:',
'prefsnologin' => "A l'é ancó pa rintrà ant ël sistema",
-'prefsnologintext' => 'A deuv esse <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} intrà ant ël sistema]</span> për amposté ij sò gust.',
+'prefsnologintext2' => "Për piasì, ch'a $1 për definì ij gust d'utent.",
'changepassword' => 'Cangé la ciav',
'prefs-skin' => 'Facia',
'skin-preview' => 'Preuva',
pòsta eletrònica: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-A-i sarà pì gnun-a notìfica ëd modìfiche se chiel a vìsita nen costa pàgina. Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba ch\'as ten sot-euj.
+A-i sarà pì gnun-a notìfica an cas d\'àutre atività se chiel a vìsita nen costa pàgina da colegà. Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba ch\'as ten sot-euj.
Comunicassion dël sistema ëd notìfica da {{SITENAME}}
'allmessagesdefault' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
'allmessagescurrent' => 'Test corent',
'allmessagestext' => "Costa-sì a l'é na lista dij mëssagi ëd sistema disponìbij ant lë spassi nominal MediaWiki.
-Për piasì, ch'a vìsita la [//www.mediawiki.org/wiki/Localisation Localisassion ëd MediaWiki] e [//translatewiki.net translatewiki.net] se a veul contribuì a la localisassion general ëd MediaWiki.",
+Për piasì, ch'a vìsita la [https://www.mediawiki.org/wiki/Localisation Localisassion ëd MediaWiki] e [//translatewiki.net translatewiki.net] se a veul contribuì a la localisassion general ëd MediaWiki.",
'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Filtré për stat ëd përsonalisassion:',
'svg-long-desc' => "archivi an forma SVG, amzure nominaj $1 × $2 pontin, amzura dl'archivi: $3",
'svg-long-desc-animated' => "Archivi SVG animà, dimension $1 × $2 pontin, amzura dl'archivi: $3",
'svg-long-error' => 'Archivi SVG nen bon: $1',
-'show-big-image' => 'Version a arzolussion pien-a',
+'show-big-image' => 'Archivi original',
'show-big-image-preview' => 'Amzure dë sta preuva: $1.',
'show-big-image-other' => '{{PLURAL:$2|Àutra arzolussion|Àutre arzolussion}}: $1.',
'show-big-image-size' => '$1 × $2 pontin',
# External editor support
'edit-externally' => "Modifiché st'archivi con un programa estern",
-'edit-externally-help' => "(Lese [//www.mediawiki.org/wiki/Manual:External_editors j'anstrussion d'anstalassion] për avèj pì d'anformassion)",
+'edit-externally-help' => "(Lese [https://www.mediawiki.org/wiki/Manual:External_editors j'anstrussion d'anstalassion] për avèj pì d'anformassion)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tute',
'version-hook-subscribedby' => 'A son scrivusse',
'version-version' => '(Version $1)',
'version-license' => 'Licensa',
-'version-poweredby-credits' => "Costa wiki-sì a marcia mersì a '''[//www.mediawiki.org/ MediaWiki]''', licensa © 2001-$1 $2.",
+'version-poweredby-credits' => "Costa wiki-sì a marcia grassie a '''[https://www.mediawiki.org/ MediaWiki]''', licensa © 2001-$1 $2.",
'version-poweredby-others' => 'àutri',
'version-poweredby-translators' => 'tradutor ëd translatewiki.net',
'version-credits-summary' => 'I tnoma a aringrassié le përson-e sì-dapress për soa contribussion a [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Pàgine Speciaj',
-'specialpages-note' => '----
-* Pàgine speciaj normaj.
-* <span class="mw-specialpagerestricted">Pàgine speciaj riservà.</span>
-* <span class="mw-specialpagecached">Pàgine speciaj mach an memòria local (a peulo esse veje).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Pàgine speciaj normaj.
+* <span class="mw-specialpagerestricted">Pàgine speciaj riservà.</span>',
'specialpages-group-maintenance' => 'Rapòrt ëd manutension',
'specialpages-group-other' => 'Àutre pàgine speciaj',
'specialpages-group-login' => 'Intré ant ël sistema / creé un cont',
'mypreferences' => 'میریاں تانگاں',
'prefs-edits' => 'تبدیلیاں دی گنتی:',
'prefsnologin' => 'لاگ ان نئیں او',
-'prefsnologintext' => 'تسیں لازمی <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} لاگ ان]</span> ورتن تانگاں سیٹ کرنا.',
'changepassword' => 'کنجی بدلو',
'prefs-skin' => 'چھاڑ',
'skin-preview' => 'کچا کم',
'allmessagesdefault' => 'ڈیفالٹ لکھائی',
'allmessagescurrent' => 'موجودہ لکھائی',
'allmessagestext' => 'ایہ لسٹ اے پربندھ سنیعیاں دی جیہڑے میڈیاوکی دی ناں تھاں تے ہیگے نیں۔
-مہربانی کرکے [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] تے [//translatewiki.net translatewiki.net] تے جاؤ۔
+مہربانی کرکے [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] تے [//translatewiki.net translatewiki.net] تے جاؤ۔
اگر تسیں میڈیا وکی دے بولی وٹاندرے چ کم کرنا چاندے او۔',
'allmessagesnotsupportedDB' => "اے صفہ نئیں ورتیا جاسکدا کیوں جے '''\$wgUseDatabaseMessages''' روک دتا گیا اے۔",
'allmessages-filter-legend' => 'فلٹر',
# External editor support
'edit-externally' => 'بارلا سافٹ ویئر استعال کردے ہوۓ اے فائل لکھو',
-'edit-externally-help' => 'زیادہ معلومات آسطے اے [//www.mediawiki.org/wiki/Manual:External_editors] ویکھو۔',
+'edit-externally-help' => 'زیادہ معلومات آسطے اے [https://www.mediawiki.org/wiki/Manual:External_editors] ویکھو۔',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'سارے',
'version-hook-subscribedby' => 'جینے لئی',
'version-version' => '(ورین $1)',
'version-license' => 'لائیسنس',
-'version-poweredby-credits' => "ایس وکی نوں '''[//www.mediawiki.org/ میڈیاوکی]''', copyright © 2001-$1 $2. چلاندا اے۔",
+'version-poweredby-credits' => "ایس وکی نوں '''[https://www.mediawiki.org/ میڈیاوکی]''', copyright © 2001-$1 $2. چلاندا اے۔",
'version-poweredby-others' => 'دوجے',
'version-license-info' => 'میڈیاوکی اک مفت سوفٹویر اے؛ تسیں اینوں ونڈ سکدے اوہ تے گنو جنرل پبلک لسنس دیاں شرطاں تے جیہڑیاں فری سوفٹویر فاؤنڈیشن نے چھاپیاں نیں ایدے چ تبدیلی کرسکدے اوہ لسنس دے ورین 2 نال، یا اپنی مرضی نال کسے وی ہور ورین فیر بنن والے ورین نوں۔
# Special:SpecialPages
'specialpages' => 'خاص صفے',
-'specialpages-note' => '----
-* نارمل خاص صفے.
+'specialpages-note' => '* نارمل خاص صفے.
* <span class="mw-specialpagerestricted">روکے گۓ خاص صفے.</span>
* <span class="mw-specialpagecached">کاشے خاص صفے (پرانے ہوگۓ ہون).</span>',
'specialpages-group-maintenance' => 'مرمت رپورٹ',
# External editor support
'edit-externally' => "Αλλαγήν τ' αρχείου με προγράμματα ασα εξ μερέα",
-'edit-externally-help' => '(Τερέστεν τα [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] και θα ευρίετε κι άλλα πληροφορίας)',
+'edit-externally-help' => '(Τερέστεν τα [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] και θα ευρίετε κι άλλα πληροφορίας)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ούλαι',
'allmessagesdefault' => 'Auprestamins teksts',
'allmessagescurrent' => 'Bigānts teksts',
'allmessagestext' => 'Sta ast listi wisēisan waīstin preiēiminan en MediaWikis tītelin plattibin.
-Madli kāimalukeis [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] be [//translatewiki.net translatewiki.net] ik tu kwaitēi delīkan īmtun en MediaWikis prōgraminin tulkausnai.',
+Madli kāimalukeis [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] be [//translatewiki.net translatewiki.net] ik tu kwaitēi delīkan īmtun en MediaWikis prōgraminin tulkausnai.',
'allmessagesnotsupportedDB' => "Šī pāusan ni mazzi būtwei tērpautan, beggi wariābli '''\$wgUseDatabaseMessages''' ast izklaūtan.",
'allmessages-filter-legend' => 'Filtrīs',
'allmessages-filter' => 'Filtrīs pa būsenin:',
# External editor support
'edit-externally' => 'Redigīs šin pāusan tērpawintei izwinaīnan prōgraman',
-'edit-externally-help' => '(Skaitāis [//www.mediawiki.org/wiki/Manual:External_editors instrukciōnins], kāi gaūlai tūls infōrmaciōnins).',
+'edit-externally-help' => '(Skaitāis [https://www.mediawiki.org/wiki/Manual:External_editors instrukciōnins], kāi gaūlai tūls infōrmaciōnins).',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'wisāi',
# Special:SpecialPages
'specialpages' => 'Speciālai pāusai',
-'specialpages-note' => '----
-* Nōrmalai speciālai pāusai.
+'specialpages-note' => '* Nōrmalai speciālai pāusai.
* <strong class="mw-specialpagerestricted">Speciālai pāusai sen arāikintan preiēisenin.</strong>',
'specialpages-group-maintenance' => 'Kōnserwaciōnis repōrtai',
'specialpages-group-other' => 'Kitāi speciālai pāusai',
'mypreferences' => 'غوره توبونه',
'prefs-edits' => 'د سمونو شمېر:',
'prefsnologin' => 'غونډال کې نه ياست ننوتي',
-'prefsnologintext' => 'د دې لپاره چې خپل غوره توبونه مو وټاکی، نو پکار ده چې لومړی تاسو غونډال کې <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ننوځی]</span>.',
'changepassword' => 'پټنوم بدلول',
'prefs-skin' => 'پوښۍ',
'skin-preview' => 'مخکتنه',
'allmessagesdefault' => 'تلواليزه پيغام متن',
'allmessagescurrent' => 'اوسنی پيغام متن',
'allmessagestext' => 'دا د مېډياويکي په نوم-تشيال کې د غونډال د پيغامونو لړليک دی.
-که چېرته تاسې د ميډياويکي په ځايتابه کې ونډې ترسره کول غواړۍ نو لطفاً [//www.mediawiki.org/wiki/Localisation د ميډياويکي ځايتابه] او [//translatewiki.net translatewiki.net] څخه ليدنه وکړۍ.',
+که چېرته تاسې د ميډياويکي په ځايتابه کې ونډې ترسره کول غواړۍ نو لطفاً [https://www.mediawiki.org/wiki/Localisation د ميډياويکي ځايتابه] او [//translatewiki.net translatewiki.net] څخه ليدنه وکړۍ.',
'allmessagesnotsupportedDB' => "'''Special:Allmessages''' ترېنه کار نه اخيستل کېږي ځکه چې '''\$wgUseDatabaseMessages''' مړ دی.",
'allmessages-filter-legend' => 'چاڼگر',
'allmessages-filter-unmodified' => 'نابدلېدلي',
# External editor support
'edit-externally' => 'د باندنيو پروګرامونو په کارولو سره دا دوتنه سمول',
-'edit-externally-help' => 'د نورو مالوماتو لپاره [//www.mediawiki.org/wiki/Manual:External_editors د امستنو لارښوونې] وگورۍ.',
+'edit-externally-help' => 'د نورو مالوماتو لپاره [https://www.mediawiki.org/wiki/Manual:External_editors د امستنو لارښوونې] وگورۍ.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ټول',
'version-other' => 'بل',
'version-version' => '(بڼه $1)',
'version-license' => 'منښتليک',
-'version-poweredby-credits' => "دا ويکي د '''[//www.mediawiki.org/ مېډياويکي]''' په سېک چلېږي، ټولې رښتې خوندي دي © 2001-$1 $2.",
+'version-poweredby-credits' => "دا ويکي د '''[https://www.mediawiki.org/ مېډياويکي]''' په سېک چلېږي، ټولې رښتې خوندي دي © 2001-$1 $2.",
'version-poweredby-others' => 'نور',
'version-license-info' => 'مېډياويکي يو وړيا ساوتری دی؛ تاسې يې په ډاډه زړه د GNU د ټولگړو کارېدنو د منښتليک چې د وړيا ساوتريو د بنسټ له مخې خپور شوی، خپرولی او/يا بدلولی شی؛ د منښتليک ۲ بڼه او يا (ستاسې د خوښې) هر يوه وروستۍ بڼه.
# Special:SpecialPages
'specialpages' => 'ځانگړي مخونه',
-'specialpages-note' => '----
-* نورماله ځانگړي مخونه.
+'specialpages-note' => '* نورماله ځانگړي مخونه.
* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>
* <span class="mw-specialpagecached">رانيولي ځانگړي مخونه (کېدای شي منسوخ شوی وي).</span>',
'specialpages-group-maintenance' => 'د څارنې راپورونه',
'invalidtitle-unknownnamespace' => 'Título inválido com número de espaço nominal $1 desconhecido e texto "$2"',
'exception-nologin' => 'Não está autenticado',
'exception-nologin-text' => 'Esta página ou operação requer que esteja autenticado nesta wiki.',
+'exception-nologin-text-manual' => 'Por favor $1 para poder aceder a esta página ou acção.',
# Virus scanner
'virus-badscanner' => "Má configuração: antivírus desconhecido: ''$1''",
'mypreferences' => 'Preferências',
'prefs-edits' => 'Número de edições:',
'prefsnologin' => 'Não autenticado',
-'prefsnologintext' => 'Precisa de estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticado]</span> para definir as suas preferências.',
'changepassword' => 'Alterar palavra-chave',
'prefs-skin' => 'Tema',
'skin-preview' => 'Antever tema',
'allmessagesdefault' => 'Texto padrão',
'allmessagescurrent' => 'Texto atual',
'allmessagestext' => 'Esta é a lista das mensagens de sistema disponíveis no espaço nominal MediaWiki.
-Se deseja colaborar na localização genérica do MediaWiki, visite [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e a [//translatewiki.net translatewiki.net].',
+Se deseja colaborar na localização genérica do MediaWiki, visite [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e a [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar pelo estado de personalização:',
# External editor support
'edit-externally' => 'Editar este ficheiro utilizando uma aplicação externa',
-'edit-externally-help' => '(Consulte as [//www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para mais informações)',
+'edit-externally-help' => '(Consulte as [https://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para mais informações)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todas',
'version-hook-subscribedby' => 'Subscrito por',
'version-version' => '(Versão $1)',
'version-license' => 'Licença',
-'version-poweredby-credits' => "Esta é uma wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Esta é uma wiki '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-credits-summary' => 'Gostaríamos de reconhecer as seguintes pessoas pela sua contribuição para o [[Special:Version|MediaWiki]].',
'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
# Special:SpecialPages
'specialpages' => 'Páginas especiais',
-'specialpages-note' => '----
-* Páginas especiais normais.
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Páginas especiais normais.
* <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
'specialpages-group-maintenance' => 'Relatórios de manutenção',
'specialpages-group-other' => 'Outras páginas especiais',
'mypreferences' => 'Preferências',
'prefs-edits' => 'Número de edições:',
'prefsnologin' => 'Não autenticado',
-'prefsnologintext' => 'É necessário estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticado]</span> para definir as suas preferências.',
'changepassword' => 'Alterar senha',
'prefs-skin' => 'Tema',
'skin-preview' => 'Pré-visualização',
'allmessagesdefault' => 'Texto padrão',
'allmessagescurrent' => 'Texto atual',
'allmessagestext' => 'Esta é uma lista de todas as mensagens de sistema disponíveis no espaço nominal {{ns:mediawiki}}.
-Acesse [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] caso deseje contribuir para traduções do MediaWiki feitas para uso geral.',
+Acesse [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] caso deseje contribuir para traduções do MediaWiki feitas para uso geral.',
'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar por estado de personalização:',
# External editor support
'edit-externally' => 'Editar este arquivo a partir de um programa externo',
-'edit-externally-help' => '(Consulte as [//www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para maiores informações)',
+'edit-externally-help' => '(Consulte as [https://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para maiores informações)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todas',
'version-hook-subscribedby' => 'Subscrito por',
'version-version' => '(Versão $1)',
'version-license' => 'Licença',
-'version-poweredby-credits' => "Este é um wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Este é um wiki '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-poweredby-translators' => 'tradutores da translatewiki.net',
'version-credits-summary' => 'Gostaríamos de agradecer às seguintes pessoas por suas contribuições no [[Special:Version|MediaWiki]]',
# Special:SpecialPages
'specialpages' => 'Páginas especiais',
-'specialpages-note' => '----
-* Páginas especiais normais.
+'specialpages-note' => '* Páginas especiais normais.
* <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
'specialpages-group-maintenance' => 'Relatórios de manutenção',
'specialpages-group-other' => 'Outras páginas especiais',
Used as <code>$1</code> in {{msg-mw|Youhavenewmessagesfromusers}}.
Parameters:
-* $1 - 1 or 2:
+* $1 - 1 or 999:
** 1 - if there was '''one''' new edit since the last time the user has seen their talk page
-** 2 - if there was '''more than one''' new edit since the last time the user has seen their talk page
+** 999 - if there was '''more than one''' new edit since the last time the user has seen their talk page
{{Identical|New messages}}",
-'newmessagesdifflinkplural' => 'Parameters:
-* $1 - the number of new edits since the last time the user has seen their talk page: it should be used only for correct [[plural]] as in the source text, as the exact number is not relevant.
-
-Like {{msg-mw|Newmessagesdifflink}} but supporting pluralization.
+'newmessagesdifflinkplural' => "Like {{msg-mw|Newmessagesdifflink}} but supporting pluralization.
Used as <code>$2</code> in message {{msg-mw|Youhavenewmessagesfromusers}}.
-{{Identical|Last change}}',
+
+Parameters:
+* $1 - 1 or 999:
+** 1 - if there was '''one''' new edit since the last time the user has seen their talk page
+** 999 - if there was '''more than one''' new edit since the last time the user has seen their talk page
+{{Identical|Last change}}",
'youhavenewmessagesmulti' => 'The alternative of {{msg-mw|youhavenewmessages}} as used on wikis with a special setup so they can receive the "new message" notice on other wikis as well. Used on [http://www.wikia.com/ Wikia].
The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]]}}"
'exception-nologin' => 'Generic page title used on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.
{{Identical|Not logged in}}',
'exception-nologin-text' => 'Generic reason displayed on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
+'exception-nologin-text-manual' => 'Generic reason displayed on error page when a user is not logged in.
+
+Parameters:
+* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
# Virus scanner
'virus-badscanner' => 'Used as error message. Parameters:
Parameters:
* \$1 - number of categories",
'edittools' => '{{optional}}
-This text will be shown below edit and upload forms. It can be used to offer special characters not present on most keyboards for copying/pasting, and also often makes them clickable for insertion via a javascript. Since these are seen as specific to a wiki, however, this message should not contain anything but an html comment explaining how it should be used once the wiki has been installed.',
+This text will be shown below edit and upload forms. It can be used to offer special characters not present on most keyboards for copying/pasting, and also often makes them clickable for insertion via a JavaScript. Since these are seen as specific to a wiki, however, this message should not contain anything but an html comment explaining how it should be used once the wiki has been installed.',
'edittools-upload' => '{{optional}}
This text will be shown below upload forms. It will default to the contents of edittools.',
'nocreatetext' => 'Used as error message.
{{Identical|Preferences}}',
'prefs-edits' => 'In user preferences.',
'prefsnologin' => '{{Identical|Not logged in}}',
-'prefsnologintext' => 'Parameters:
-* $1 - URI for "returnto" argument',
+'prefsnologintext2' => 'Parameters:
+* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
'changepassword' => "Section heading on [[Special:Preferences]], tab 'User profile'.
{{Identical|Change password}}",
'prefs-skin' => 'Used in user preferences.
* $1 - the error message
See also:
* {{msg-mw|Thumbnail error}}',
-'show-big-image' => 'Displayed under the file on file description pages, when a reduced-size thumbnail of the original file is being displayed.',
+'show-big-image' => 'Displayed under the file on file description pages, when a reduced-size thumbnail of the original file is being displayed.
+{{Identical|Original file}}',
'show-big-image-preview' => 'Message shown under the image description page thumbnail.
Can be followed by {{msg-mw|Show-big-image-other}}.
# External editor support
'edit-externally' => 'Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
-'edit-externally-help' => '{{doc-important|Please leave the link "<code>http://www.mediawiki.org/wiki/Manual:External_editors</code>" exactly as it is.}}
+'edit-externally-help' => '{{doc-important|Please leave the link "<code>https://www.mediawiki.org/wiki/Manual:External_editors</code>" exactly as it is.}}
Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
# 'all' in various places, this might be different for inflected languages
* {{msg-mw|Accesskey-t-specialpages}}
* {{msg-mw|Tooltip-t-specialpages}}
{{Identical|Special page}}',
+'specialpages-note-top' => 'Heading for {{msg-mw|specialpages-note}}.
+{{Identical|Legend}}',
'specialpages-note' => 'Footer note for the [[Special:SpecialPages]] page',
'specialpages-group-maintenance' => '{{doc-special-group|like=[[Special:DoubleRedirects]], [[Special:LonelyPages]] and [[Special:WantedPages]]}}',
'specialpages-group-other' => '{{doc-special-group|like=[[Special:AdminLinks]] and [[Special:BookSources]]}}',
'mypreferences' => 'Allinkachinaykuna',
'prefs-edits' => 'Hukchasqakunap yupaynin:',
'prefsnologin' => 'Manam yaykurqankichu',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Yaykunaykim]</span> tiyan allinkachinaykikunata hukchanaykipaq.',
'changepassword' => 'Yaykuna rimata hukchay',
'prefs-skin' => 'Qara',
'skin-preview' => 'Ñawpaqta qhaway',
'allmessagesdefault' => 'Ñawpaq qillqa',
'allmessagescurrent' => 'Kunan kachkaq qillqa',
'allmessagestext' => "Kayqa MediaWiki suti k'itipi llamk'achinalla willaykunayuq sutisuyum.
-Ama hina kaspa, [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] nisqata, [//translatewiki.net translatewiki.net] nisqatapas watukuy, MediaWiki nisqata t'ikraywan yanapayta munaspaykiqa.",
+Ama hina kaspa, [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] nisqata, [//translatewiki.net translatewiki.net] nisqatapas watukuy, MediaWiki nisqata t'ikraywan yanapayta munaspaykiqa.",
'allmessagesnotsupportedDB' => "Kay p'anqaqa manam llamk'achinallachu, '''\$wgUseDatabaseMessages''' nisqaman ama nisqa kaptinmi.",
'allmessages-filter-legend' => "Ch'illchina",
'allmessages-filter' => "Ch'illchina, allinchasqa kachkaykama:",
# External editor support
'edit-externally' => "Kay willañiqita hawa rurana wakichiwan llamk'apuy",
-'edit-externally-help' => 'Astawan willasunaykipaqqa [//www.mediawiki.org/wiki/Manual:External_editors tiyachina yanapata] (inlish simipi) ñawiriy.',
+'edit-externally-help' => 'Astawan willasunaykipaqqa [https://www.mediawiki.org/wiki/Manual:External_editors tiyachina yanapata] (inlish simipi) ñawiriy.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'lliw',
'version-hook-subscribedby' => 'Kay runap mañaykusqan:',
'version-version' => '(Musuqchasqa $1)',
'version-license' => 'Saqillay',
-'version-poweredby-credits' => "Kay wikitaqa '''[//www.mediawiki.org/ MediaWiki-m]''' atichin, copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Kay wikitaqa '''[https://www.mediawiki.org/ MediaWiki-m]''' atichin, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'hukkuna',
'version-credits-summary' => "Kay qatiqpi runakunatam [[Special:Version|MediaWiki]] nisqapaq llamk'apusqankunapaq riqsichiyta munayku.",
'version-license-info' => "MediaWiki llamp'u kaqqa qispim; mast'ariytam icha wakinchaytam atinki GNU General Public License nisqa saqillaypa kamachisqankama, Free Software Foundation nisqap uyaychasqan; saqillaypa iskay ñiqin musuqchasqan, munaspaykiqa aswan musuq musuqchasqan.
# Special:SpecialPages
'specialpages' => "Sapaq p'anqakuna",
-'specialpages-note' => '----
-* Sapsipaq sapaq p\'anqakuna.
+'specialpages-note' => '* Sapsipaq sapaq p\'anqakuna.
* <span class="mw-specialpagerestricted">Sapaqkunallapaq sapaq p\'anqakuna.</span>',
'specialpages-group-maintenance' => 'Hatalliy willaykuna',
'specialpages-group-other' => "Huk sapaq p'anqakuna",
# External editor support
'edit-externally' => 'Kay archiwuta shuk hawa antanawan llankana',
-'edit-externally-help' => 'Ashtawan yachakunkakak [//www.mediawiki.org/wiki/Manual:External_editors kay yanapata] (inlish shimipi) killkakatipay',
+'edit-externally-help' => 'Ashtawan yachakunkakak [https://www.mediawiki.org/wiki/Manual:External_editors kay yanapata] (inlish shimipi) killkakatipay',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tukuy',
* @author Gion-andri
* @author Kaganer
* @author Kazu89
+ * @author Shirayuki
* @author Urhixidur
* @author לערי ריינהארט
*/
'mypreferences' => 'Preferenzas',
'prefs-edits' => 'Dumber da las modificaziuns:',
'prefsnologin' => "Betg t'annunzià",
-'prefsnologintext' => 'Ti stos esser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} t\'annunzià]</span> per midar tias preferenzas.',
'changepassword' => 'Midar pled-clav',
'prefs-skin' => 'Skin',
'skin-preview' => 'Prevista',
'allmessagesdefault' => 'text original',
'allmessagescurrent' => 'text actual',
'allmessagestext' => 'Quai è ina glista da tut ils messadis dals differents tips da paginas da MediaWiki che vegnan utilisadas da la software MediaWiki.
-Fai ina visita sin [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] sche ti vuls gidar da translatar la software MediaWiki.',
+Fai ina visita sin [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] sche ti vuls gidar da translatar la software MediaWiki.',
'allmessagesnotsupportedDB' => "Questa pagina na po betg vegnir mussada, perquai che '''\$wgUseDatabaseMessages''' è vegnì deactivà.",
'allmessages-filter-legend' => 'Filtrar',
'allmessages-filter' => 'Filtrar tenor standi da modificaziun:',
# External editor support
'edit-externally' => 'Modifitgar questa datoteca cun in program extern',
-'edit-externally-help' => "(Legia [//www.mediawiki.org/wiki/Manual:External_editors instrucziuns d'installaziun] per ulteriuras infurmaziuns)",
+'edit-externally-help' => "(Legia [https://www.mediawiki.org/wiki/Manual:External_editors instrucziuns d'installaziun] per ulteriuras infurmaziuns)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tut',
'version-hook-subscribedby' => 'Abonnà da',
'version-version' => '(Versiun $1)',
'version-license' => 'Licenza',
-'version-poweredby-credits' => "Questa wiki utilisescha '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Questa wiki utilisescha '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'auters',
'version-credits-summary' => 'Nus vulain engraziar a suandantas persunas per lur contribuziun a [[Special:Version|MediaWiki]].',
'version-license-info' => "MediaWiki è software liba; ti la pos redistribuir e/u la modifitgar tenor ils terms da la GNU General Public License sco ch'ella vegn publitgada da la Free Software Foundation; ti pos utilisar la versiun 2 da la licenza u (sche ti vul) mintga versiun che succeda.
# Special:SpecialPages
'specialpages' => 'Paginas spezialas',
-'specialpages-note' => '----
-* Paginas spezialas normalas.
+'specialpages-note' => '* Paginas spezialas normalas.
* <span class="mw-specialpagerestricted">Paginas spezialas restrenschidas.</span>
* <span class="mw-specialpagecached">Paginas spezialas en il cache (pon esser antiquadas).</span>',
'specialpages-group-maintenance' => 'Rapports da mantegnamant',
'invalidtitle-knownnamespace' => 'Titlu invalid cu spațiul de nume „$2” și textul „$3”',
'invalidtitle-unknownnamespace' => 'Titlu invalid cu numărul spațiului de nume $1 necunoscut și textul „$2”',
'exception-nologin' => 'Neautentificat{{GENDER:||ă}}.',
-'exception-nologin-text' => 'Această pagină sau acțiune necesită ca dumneavoastră să fiți autentificat{{GENDER:||ă}} pe acest wiki.',
+'exception-nologin-text' => 'Vă rugăm să vă [[Special:Userlogin|autentificați]] pentru a accesa această pagină sau acțiune.',
+'exception-nologin-text-manual' => 'Vă rugăm să vă $1 pentru a accesa această pagină sau acțiune.',
# Virus scanner
'virus-badscanner' => "Configurație greșită: scaner de virus necunoscut: ''$1''",
'revdelete-hide-user' => 'Numele de utilizator sau adresa IP',
'revdelete-hide-restricted' => 'Ascunde informațiile față de administratori și față de alți utilizatori',
'revdelete-radio-same' => '(nu schimba)',
-'revdelete-radio-set' => 'Vizibil',
-'revdelete-radio-unset' => 'Ascuns',
+'revdelete-radio-set' => 'Ascuns',
+'revdelete-radio-unset' => 'Vizibil',
'revdelete-suppress' => 'Ascunde versiunile și față de administratori',
'revdelete-unsuppress' => 'Anulează restricțiile la versiunile restaurate',
'revdelete-log' => 'Motivul ștergerii:',
'mypreferences' => 'Preferințe',
'prefs-edits' => 'Număr de modificări:',
'prefsnologin' => 'Neautentificat',
-'prefsnologintext' => 'Trebuie să fiți <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autentificat]</span> pentru a vă putea salva preferințele.',
+'prefsnologintext2' => 'Vă rugăm să vă $1 pentru a vă seta preferințele de utilizator.',
'changepassword' => 'Schimbare parolă',
'prefs-skin' => 'Aspect',
'skin-preview' => 'Previzualizare',
* Imagini animate : <code>image/gif</code>
* Fișiere sunet : <code>audio/ogg</code>, <code>audio/x-ogg</code>
* Fișiere video : <code>video/ogg</code>, <code>video/x-ogg</code>
-* Fișiere PDF : <code>application/pdf</code>',
+* Fișiere PDF : <code>application/pdf</code>
+
+Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/mime.types?view=markup fișiere mime.types].',
'mimetype' => 'Tip MIME:',
'download' => 'descarcă',
e-mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Nu veți mai primi notificări în cazul unor viitoare modificări până când nu veți vizitați pagina. Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.
+Nu veți mai primi notificări în cazul unei viitoare activități până când nu veți vizitați pagina ca utilizator autentificat. Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.
- Al dumneavoastră amic, sistemul de notificare de la {{SITENAME}}
+Al dumneavoastră amic, sistemul de notificare de la {{SITENAME}}
--
Pentru a modifica setările notificării prin e-mail, vizitați
'allmessagesdefault' => 'Textul standard',
'allmessagescurrent' => 'Textul curent',
'allmessagestext' => 'Aceasta este lista completă a mesajelor disponibile în domeniul MediaWiki.
-Vă rugăm să vizitați [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] și [//translatewiki.net translatewiki.net] dacă vreți să contribuiți la localizarea programului MediaWiki generic.',
+Vă rugăm să vizitați [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] și [//translatewiki.net translatewiki.net] dacă vreți să contribuiți la localizarea programului MediaWiki generic.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nu poate fi folosit deoarece '''\$wgUseDatabaseMessages''' este închisă.",
'allmessages-filter-legend' => 'Filtru',
'allmessages-filter' => 'Filtru după statutul de modificare:',
'svg-long-desc' => 'Fișier SVG, cu dimensiunea nominală de $1 × $2 pixeli, mărime fișier: $3',
'svg-long-desc-animated' => 'Fișier SVG animat, cu dimensiunea nominală de $1 × $2 pixeli, mărime fișier: $3',
'svg-long-error' => 'Fișier SVG invalid: $1',
-'show-big-image' => 'Rezoluție maximă',
+'show-big-image' => 'Fișier original',
'show-big-image-preview' => 'Mărimea acestei previzualizări: $1.',
'show-big-image-other' => '{{PLURAL:$2|Altă rezoluție|Alte rezoluții}}: $1.',
'show-big-image-size' => '$1 × $2 pixeli',
# External editor support
'edit-externally' => 'Editează acest fișier folosind o aplicație externă.',
-'edit-externally-help' => '(Vedeți [//www.mediawiki.org/wiki/Manual:External_editors instrucțiuni de instalare] pentru mai multe informații)',
+'edit-externally-help' => '(Vedeți [https://www.mediawiki.org/wiki/Manual:External_editors instrucțiuni de instalare] pentru mai multe informații)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'toate',
'version-hook-subscribedby' => 'Subscris de',
'version-version' => '(Versiune $1)',
'version-license' => 'Licență',
-'version-poweredby-credits' => "Acest wiki este dezvoltat de '''[//www.mediawiki.org/ MediaWiki]''', drepturi de autor © 2001-$1 $2.",
+'version-poweredby-credits' => "Acest wiki este motorizat de '''[https://www.mediawiki.org/ MediaWiki]''', drepturi de autor © 2001-$1 $2.",
'version-poweredby-others' => 'alții',
'version-poweredby-translators' => 'traducătorii de la translatewiki.net',
'version-credits-summary' => 'Am dori să amintim următoarele persoane pentru contribuțiile aduse proiectului [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Pagini speciale',
-'specialpages-note' => '----
-* Pagini speciale normale.
-* <span class="mw-specialpagerestricted">Pagini speciale restricționate.</span>
-* <span class="mw-specialpagecached">Pagini speciale aflate doar în memoria cache (pot fi neactualizate).</span>',
+'specialpages-note-top' => 'Legendă',
+'specialpages-note' => '* Pagini speciale normale.
+* <span class="mw-specialpagerestricted">Pagini speciale restricționate.</span>',
'specialpages-group-maintenance' => 'Întreținere',
'specialpages-group-other' => 'Alte pagini speciale',
'specialpages-group-login' => 'Autentificare / creare cont',
'mypreferences' => 'Me piace accussì',
'prefs-edits' => 'Numere de cangiaminde:',
'prefsnologin' => 'Non ge sinde colleghete',
-'prefsnologintext' => 'Tu a essere <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} colleghete]</span> pe \'mbostà le preferenze de l\'utinde.',
'changepassword' => "Cange 'a password",
'prefs-skin' => 'Skin',
'skin-preview' => 'Andeprime',
'allmessagesdefault' => 'Teste de default',
'allmessagescurrent' => 'Teste corrende',
'allmessagestext' => "Queste jè 'na liste de tutte le messagge d'u sisteme ca se ponne acchià jndr'à le namespace de MediaUicchi.
-Pe piacere vè vide [//www.mediawiki.org/wiki/Localisation Localizzazione de MediaUicchi] e [//translatewiki.net translatewiki.net] ce tu vuè ccu condrebbuisce a 'a localizzazione de MediaUicchi.",
+Pe piacere vè vide [https://www.mediawiki.org/wiki/Localisation Localizzazione de MediaUicchi] e [//translatewiki.net translatewiki.net] ce tu vuè ccu condrebbuisce a 'a localizzazione de MediaUicchi.",
'allmessagesnotsupportedDB' => "Sta pàgene non ge pò essere ausate purcè '''\$wgUseDatabaseMessages''' ha state disabbilitate.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => "Filtre cu 'nu state personalizzate:",
# External editor support
'edit-externally' => "Cange stu fail usanne n'applicazione esterne",
-'edit-externally-help' => "(Vide le [//www.mediawiki.org/wiki/Manual:External_editors 'struzione de configurazione] pe avèje cchiù dettaglie)",
+'edit-externally-help' => "(Vide le [https://www.mediawiki.org/wiki/Manual:External_editors 'struzione de configurazione] pe avèje cchiù dettaglie)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tutte',
'version-version' => '(Versione $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Licenze',
-'version-poweredby-credits' => "Sta Uicchi jè fatte da '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Sta Uicchi jè fatte da '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otre',
'version-poweredby-translators' => 'tradutture de translatewiki.net',
'version-credits-summary' => 'Nuje vulesseme acchià le persone seguende pe le lore condrebbute a [[Special:Version|MediaUicchi]].',
# Special:SpecialPages
'specialpages' => 'Pàggene speciele',
-'specialpages-note' => '----
-* Pàggene speciale normale.
+'specialpages-note' => '* Pàggene speciale normale.
* <span class="mw-specialpagerestricted">Pàggene speciale cu le restriziune.</span>
* <span class="mw-specialpagecached">Pàggene speciale in memorie cache (ponne essere vecchie).</span>',
'specialpages-group-maintenance' => "Report d'a manutenzione",
'invalidtitle-knownnamespace' => 'Недопустимый заголовок с пространством имен «$2» и текстом «$3»',
'invalidtitle-unknownnamespace' => 'Недопустимый заголовок с неизвестным номером пространства $1 и текстом «$2»',
'exception-nologin' => 'Вы не представились системе',
-'exception-nologin-text' => 'Для просмотра этой станицы или выполнения запрошенного действия необходимо представиться системе.',
+'exception-nologin-text' => 'Необходимо [[Special:Userlogin|представиться]], чтобы иметь доступ к этой странице или действию.',
+'exception-nologin-text-manual' => 'Необходимо $1, чтобы иметь доступ к этой странице или действию.',
# Virus scanner
'virus-badscanner' => "Ошибка настройки. Неизвестный сканер вирусов: ''$1''",
'mypreferences' => 'Настройки',
'prefs-edits' => 'Количество правок:',
'prefsnologin' => 'Вы не представились системе',
-'prefsnologintext' => 'Вы должны <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} представиться системе]</span>, чтобы изменять настройки участника.',
+'prefsnologintext2' => 'Необходимо $1, чтобы изменять настройки.',
'changepassword' => 'Изменение пароля',
'prefs-skin' => 'Тема оформления',
'skin-preview' => 'Предпросмотр',
эл. почта: $PAGEEDITOR_EMAIL
вики: $PAGEEDITOR_WIKI
-Ð\95Ñ\81ли вÑ\8b не поÑ\81еÑ\82иÑ\82е Ñ\8dÑ\82Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ñ\82о в случае её дальнейших изменений уведомлений больше не будет. Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
+Ð\95Ñ\81ли вÑ\8b не зайдÑ\91Ñ\82е на Ñ\8dÑ\82Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 под Ñ\81воей Ñ\83Ñ\87Ñ\91Ñ\82ной запиÑ\81Ñ\8cÑ\8e, в случае её дальнейших изменений уведомлений больше не будет. Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
- Система оповещения {{grammar:genitive|{{SITENAME}}}}
+Система оповещения {{grammar:genitive|{{SITENAME}}}}
--
Изменение настройки уведомлений
'allmessagesdefault' => 'Текст по умолчанию',
'allmessagescurrent' => 'Текущий текст',
'allmessagestext' => 'Это список системных сообщений, доступных в пространстве имён «MediaWiki».
-Если вы хотите внести вклад в общую локализацию MediaWiki, пожалуйста, посетите страницу [//www.mediawiki.org/wiki/Localisation описания локализации] и проект [//translatewiki.net translatewiki.net].',
+Если вы хотите внести вклад в общую локализацию MediaWiki, пожалуйста, посетите страницу [https://www.mediawiki.org/wiki/Localisation описания локализации] и проект [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Эта страница недоступна, так как отключена опция '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Фильтр',
'allmessages-filter' => 'Фильтр по статусу изменения:',
'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
'svg-long-error' => 'неправильный SVG-файл: $1',
-'show-big-image' => 'Изображение в более высоком разрешении',
+'show-big-image' => 'Исходный файл',
'show-big-image-preview' => 'Размер при предпросмотре: $1.',
'show-big-image-other' => '{{PLURAL:$2|Другое разрешение|Другие разрешения}}: $1.',
'show-big-image-size' => '$1 × $2 пикселей',
# External editor support
'edit-externally' => 'Редактировать этот файл, используя внешнюю программу',
-'edit-externally-help' => '(подробнее см. в [//www.mediawiki.org/wiki/Manual:External_editors руководстве по установке])',
+'edit-externally-help' => '(подробнее см. в [https://www.mediawiki.org/wiki/Manual:External_editors руководстве по установке])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'все',
'version-hook-subscribedby' => 'Подписан на',
'version-version' => '(Версия $1)',
'version-license' => 'Лицензия',
-'version-poweredby-credits' => "Эта вики работает на движке '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Эта вики работает на движке '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'другие',
'version-poweredby-translators' => 'переводчики translatewiki.net',
'version-credits-summary' => 'Хотим поблагодарить следующих участников за их вклад в развитие [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Спецстраницы',
-'specialpages-note' => '----
-* Обычные служебные страницы.
-* <span class="mw-specialpagerestricted">Служебные страницы с ограниченным доступом.</span>
-* <span class="mw-specialpagecached">Закэшированные служебные страницы (могут быть устаревшими).</span>',
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Обычные служебные страницы.
+* <span class="mw-specialpagerestricted">Служебные страницы с ограниченным доступом.</span>',
'specialpages-group-maintenance' => 'Отчёты технического обслуживания',
'specialpages-group-other' => 'Другие служебные страницы',
'specialpages-group-login' => 'Представиться / Зарегистрироваться',
'mypreferences' => 'Наставлїня',
'prefs-edits' => 'Чісло едітовань:',
'prefsnologin' => 'Не сьте приголошеный(а)!',
-'prefsnologintext' => 'Кідь хочете мінити хосновательскы наставлїня, мусите ся <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} приголосити]</span>.',
'changepassword' => 'Змінити гесло',
'prefs-skin' => 'Взгляд',
'skin-preview' => 'Попереднїй нагляд',
'allmessagesdefault' => 'Штандартный текст',
'allmessagescurrent' => 'Актуалный текст',
'allmessagestext' => 'Тото є список вшыткых повідомлїнь доступных в просторї назв «MediaWiki».
-Кідь хочете приспівати ку локалізації софтверу MediaWiki, навщівте [//www.mediawiki.org/wiki/Localisation локалізачну сторінку на mediawiki.org] і [//translatewiki.net сервер server translatewiki.net].',
+Кідь хочете приспівати ку локалізації софтверу MediaWiki, навщівте [https://www.mediawiki.org/wiki/Localisation локалізачну сторінку на mediawiki.org] і [//translatewiki.net сервер server translatewiki.net].',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages не є підпороване, бо wgUseDatabaseMessages є выпнуте.',
'allmessages-filter-legend' => 'Філтер',
'allmessages-filter' => 'Філтер за станом:',
# External editor support
'edit-externally' => 'Едітовати тот файл хоснувчі екстерну аплікацію',
-'edit-externally-help' => '(Веце інформацій найдете в [//www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
+'edit-externally-help' => '(Веце інформацій найдете в [https://www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'вшыткы',
'version-hook-subscribedby' => 'Підписаный на',
'version-version' => '(Верзія $1)',
'version-license' => 'Ліценція',
-'version-poweredby-credits' => "Тота вікі біжыть на '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Тота вікі біжыть на '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
'version-poweredby-others' => 'іншы',
'version-poweredby-translators' => 'перекладателї на translatewiki.net',
'version-credits-summary' => 'Слїдуючім людям бы сьме радо подяковали за їх приспівкы [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Шпеціалны сторінкы',
-'specialpages-note' => '----
-* Звычайны шпеціалны сторінкы.
+'specialpages-note' => '* Звычайны шпеціалны сторінкы.
* <span class="mw-specialpagerestricted">Шпеціалны сторінкы з обмедженым приступом</span>
* <span class="mw-specialpagecached">Кешованы шпеціалны сторінкы</span>',
'specialpages-group-maintenance' => 'Технічны репорты',
'mypreferences' => 'मम इष्टतमानि',
'prefs-edits' => 'सम्पादनानां सख्याः',
'prefsnologin' => 'नैव प्रविष्ट',
-'prefsnologintext' => 'वरीयतां परिवर्तयितुं भवता <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}नामाभिलेखः]</span> करणियः।',
'changepassword' => 'कूटशब्दः परिवर्त्यताम्',
'prefs-skin' => 'त्वक्',
'skin-preview' => 'प्राग्दृश्यम्',
'allmessagesname' => 'नाम',
'allmessagesdefault' => 'डिफॉल्टसन्देशपाठ',
'allmessagescurrent' => 'सद्यः सन्देशपाठः ।',
-'allmessagestext' => 'एषा मीडियाविकिनामस्थाने उपलब्धा काचित् तन्त्रसन्देशस्य सूचिका अस्ति । यदि भवान् सामान्यमीडियाविकि क्षेत्रीयकरणे योगदानं कर्तुमिच्छति तर्हि[//www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरणम्] अथवा [//translatewiki.net translatewiki.net] इत्यत्र गच्छतु ।',
+'allmessagestext' => 'एषा मीडियाविकिनामस्थाने उपलब्धा काचित् तन्त्रसन्देशस्य सूचिका अस्ति । यदि भवान् सामान्यमीडियाविकि क्षेत्रीयकरणे योगदानं कर्तुमिच्छति तर्हि[https://www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरणम्] अथवा [//translatewiki.net translatewiki.net] इत्यत्र गच्छतु ।',
'allmessagesnotsupportedDB' => "अस्य पुटस्य उपयोगः नैव शक्यते यतः '''\$wgUseDatabaseMessages''' तटास्थम् अस्ति ।",
'allmessages-filter-legend' => 'शोधनी ।',
'allmessages-filter' => 'ग्राहकीकरणस्य स्थितौ शोधनी ।',
# External editor support
'edit-externally' => 'बाह्यां प्रणालीम् उपयुज्य इयं सञ्चिका सम्पाद्यताम् ।',
-'edit-externally-help' => '(अधिकासूचनार्थं [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] इत्येतत् दृश्यताम्)',
+'edit-externally-help' => '(अधिकासूचनार्थं [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] इत्येतत् दृश्यताम्)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सर्वाणि',
'version-hook-subscribedby' => 'सदस्यत्वम् अनेन प्राप्तम् ।',
'version-version' => '(आवृत्तिः$1)',
'version-license' => 'अनुज्ञापत्रम्',
-'version-poweredby-credits' => "इयं विकिः अनेन सञ्चालिता '''[//www.mediawiki.org/ MediaWiki]''', स्वामित्वम् © 2001 - $1 $2 ।",
+'version-poweredby-credits' => "इयं विकिः अनेन सञ्चालिता '''[https://www.mediawiki.org/ MediaWiki]''', स्वामित्वम् © 2001 - $1 $2 ।",
'version-poweredby-others' => 'अन्य',
'version-credits-summary' => '[[Special:Version|MediaWiki]] इत्यत्र योगदानार्थं वयं अधोलिखितान् जनान् प्रशंसितुमिच्छामः।',
'version-license-info' => 'मिडियाविकिः तु निश्शुल्कतन्त्रांशः ; भवान् पुनः वितर्तुं शक्नोति अथवा GNU सामान्यसार्वजनिकानुज्ञपत्रस्य नियमानुगुणं द्वीतीयावृत्तिम् अथवा अन्यनूतनावृतिं संस्कर्तुं शक्नोति ।
# Special:SpecialPages
'specialpages' => 'विशेषपृष्ठानि',
-'specialpages-note' => '----
-* साधारणं विशेषपुटम् ।
+'specialpages-note' => '* साधारणं विशेषपुटम् ।
* <span class="mw-specialpagerestricted">प्रतिद्धं विशेषपुटम् ।</span>',
'specialpages-group-maintenance' => 'निर्वहणवृत्तानि ।',
'specialpages-group-other' => 'अन्यविशेषपुटानि ।',
'mypreferences' => 'Туруоруулар',
'prefs-edits' => 'Көннөрүү ахсаана:',
'prefsnologin' => 'Ааккын эппэтиҥ',
-'prefsnologintext' => 'Эн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ааккын эттэххинэ]</span> эрэ кыттаачы туруорууларын уларытар кыахтаныаҥ.',
'changepassword' => 'Киирии тылы уларытарга',
'prefs-skin' => 'Тас көстүү',
'skin-preview' => 'Хайдах буолара',
'allmessagesdefault' => 'Туспа этиллибэтэҕинэ суруллар тиэкис',
'allmessagescurrent' => 'Билиҥҥи тиэкис',
'allmessagestext' => 'Манна MediaWiki биллэриилэрин испииһэгэ көстөр.
-Эн MediaWiki движогун тылбаастыырга көмөлөһүөххүн баҕарар буоллаххына манна [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] уонна манна [//translatewiki.net translatewiki.net] киир.',
+Эн MediaWiki движогун тылбаастыырга көмөлөһүөххүн баҕарар буоллаххына манна [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] уонна манна [//translatewiki.net translatewiki.net] киир.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' туттуллар кыаҕа суох, тоҕо диэтэххэ '''\$wgUseDatabaseMessages''' араарыллыбыт.",
'allmessages-filter-legend' => 'Сиидэ',
'allmessages-filter' => 'Уларытыы көрүҥүнэн наардыыр сиидэ:',
# External editor support
'edit-externally' => 'Бу билэни таһынааҕы бырагыраамма көмөтүнэн уларытарга',
-'edit-externally-help' => 'Сиһилии бу ыйынньыгынан баран көр: [//www.mediawiki.org/wiki/Manual:External_editors туруоруулар туһунан].',
+'edit-externally-help' => 'Сиһилии бу ыйынньыгынан баран көр: [https://www.mediawiki.org/wiki/Manual:External_editors туруоруулар туһунан].',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'бары',
'version-hook-subscribedby' => 'Суруттарыыта:',
'version-version' => '(Торум $1)',
'version-license' => 'Лиссиэнзийэ',
-'version-poweredby-credits' => "Бу биики бу движокка олоҕурар '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Бу биики бу движокка олоҕурар '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'атыттар',
'version-poweredby-translators' => 'translatewiki.net тылбаасчыттара',
'version-credits-summary' => '[[Special:Version|MediaWiki]] сайдыытыгар үлэлэрин иһин манна ахтыллыбыт дьоҥҥо махтанабыт.',
# Special:SpecialPages
'specialpages' => 'Анал сирэйдэр',
-'specialpages-note' => '----
-* Көннөрү анал сирэйдэр.
+'specialpages-note' => '* Көннөрү анал сирэйдэр.
* <strong class="mw-specialpagerestricted">Хааччахтардаах анал сирэйдэр.</strong>
* <span class="mw-specialpagecached">Кээстэммит анал сирэйдэр (эргэрбит буолуохтарын сөп).</span>',
'specialpages-group-maintenance' => 'Техническэй отчуоттар',
# External editor support
'edit-externally' => 'Noa rẽt tońge joṛao lạgitte bahre reaḱ koejoń beoharme',
-'edit-externally-help' => '(Nonḍe ńelme [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] bạṛtite baḍay lạgit)',
+'edit-externally-help' => '(Nonḍe ńelme [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] bạṛtite baḍay lạgit)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Sanam, sanamak, sanamko',
'mypreferences' => 'Preferèntzias meas',
'prefs-edits' => 'Nùmeru de acontzos:',
'prefsnologin' => 'Non ses intrau',
-'prefsnologintext' => 'Depes èsser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} intradu]</span> pro seberare is preferèntzias.',
'changepassword' => 'Càmbia password',
'prefs-skin' => 'Bisura',
'skin-preview' => 'Antiprima',
# External editor support
'edit-externally' => 'Acontza custu file usendi unu programma de foras',
-'edit-externally-help' => '(Pro àteras informatziones càstia is [//www.mediawiki.org/wiki/Manual:External_editors istrutziones])',
+'edit-externally-help' => '(Pro àteras informatziones càstia is [https://www.mediawiki.org/wiki/Manual:External_editors istrutziones])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'totu',
'mypreferences' => 'Li mè prifirenzi',
'prefs-edits' => 'Nùmmuru di canciamenti:',
'prefsnologin' => 'Accessu nun effittuatu',
-'prefsnologintext' => 'Pi putiri pirsunalizzari li prifirenzi è nicissariu fari l\'<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} accessu]</span>.',
'changepassword' => 'Cancia la password',
'prefs-skin' => 'Aspettu',
'skin-preview' => 'Antiprima',
'allmessagesdefault' => 'Testu pridifinitu',
'allmessagescurrent' => 'Testu attuali',
'allmessagestext' => "Chista è na lista di missaggi di sistema chi s'attròvanu sutta MediaWiki:''nomu''.
-Visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] si voi cuntribbuiri â localizzazioni generica di MediaWiki.",
+Visita [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] si voi cuntribbuiri â localizzazioni generica di MediaWiki.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nun è suppurtatu pirchì lu flag '''\$wgUseDatabaseMessages''' nun è attivu.",
'allmessages-filter-legend' => 'Filtru',
'allmessages-filter' => 'Filtru pi statu di canciamentu:',
# External editor support
'edit-externally' => 'Cancia stu file usannu un prugramma sternu',
-'edit-externally-help' => "Pi chiossai nfurmazzioni cunzurtari l'[//www.mediawiki.org/wiki/Manual:External_editors istruzzioni] ('n ngrisi)",
+'edit-externally-help' => "Pi chiossai nfurmazzioni cunzurtari l'[https://www.mediawiki.org/wiki/Manual:External_editors istruzzioni] ('n ngrisi)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tutti',
# Special:SpecialPages
'specialpages' => 'Pàggini spiciali',
-'specialpages-note' => '----
-* Pàggini spiciali non risirvati.
+'specialpages-note' => '* Pàggini spiciali non risirvati.
* <strong class="mw-specialpagerestricted">Pàggini spiciali risirvati sulu a quarchi catigurìa d\'utenti.</strong>',
'specialpages-group-maintenance' => 'Resocunti di manutinzioni',
'specialpages-group-other' => 'Autri pàggini spiciali',
# Preferences page
'mypreferences' => 'Ma preferences',
'prefsnologin' => 'No loggit in',
-'prefsnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] tae set uiser preferences.',
'changepassword' => 'Chynge password',
'prefs-skin' => 'Huil',
'skin-preview' => 'First Leuk',
# External editor support
'edit-externally' => 'Edit this file uisin an external application',
-'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for mair guidance.)',
+'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for mair guidance.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aw',
# External editor support
'edit-externally' => 'هيءُ فائيل ڪنهن خارجي منتقڪريءَ سان سنواريو',
-'edit-externally-help' => 'وڌيڪ معلومات لاءِ [//www.mediawiki.org/wiki/Manual:External_editors هدايتون براءِ تنصيبڪاري] ڏسندا.',
+'edit-externally-help' => 'وڌيڪ معلومات لاءِ [https://www.mediawiki.org/wiki/Manual:External_editors هدايتون براءِ تنصيبڪاري] ڏسندا.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'سڀ',
'mypreferences' => "Li me' prifirenzi",
'prefs-edits' => 'Mudìfigghi effettuaddi:',
'prefsnologin' => 'Intradda nò effettuadda',
-'prefsnologintext' => 'Pa mudìfiggà li prifirenzi è nezzessàriu [[Special:UserLogin|intrà]].',
'changepassword' => "Ciamba paràura d'órdhini",
'prefs-skin' => 'Aipettu gràficu',
'skin-preview' => 'antiprimma',
'allmessagesdefault' => 'Testhu pridifiniddu',
'allmessagescurrent' => 'Testhu attuari',
'allmessagestext' => "Chistha è la listha di tutti l'imbasciaddi di sisthema dipunìbiri i' lu tipu di pàgina MediaWiki.
-Pa piazeri utirizà [//www.mediawiki.org/wiki/Localisation MediaWiki Lucarizazioni] e [//translatewiki.net translatewiki.net] pa l'althri traduzioni.",
+Pa piazeri utirizà [https://www.mediawiki.org/wiki/Localisation MediaWiki Lucarizazioni] e [//translatewiki.net translatewiki.net] pa l'althri traduzioni.",
'allmessagesnotsupportedDB' => "Chistha pàgina nò è supporthadda parchí l'indicadori '''\$wgUseDatabaseMessages''' nò è attibuu.",
'allmessages-filter-unmodified' => 'Nò mudifiggaddi',
'allmessages-filter-all' => 'Tutti',
# External editor support
'edit-externally' => 'Mudìfigga chistu file usendi un prugramma esthernu',
-'edit-externally-help' => "Pa maggiori infuimmazioni cunsulthà l'[//www.mediawiki.org/wiki/Manual:External_editors isthruzioni] (in ingresu).",
+'edit-externally-help' => "Pa maggiori infuimmazioni cunsulthà l'[https://www.mediawiki.org/wiki/Manual:External_editors isthruzioni] (in ingresu).",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tutti',
'mypreferences' => 'Ásahusat',
'prefs-edits' => 'Rievdadusaid mearri:',
'prefsnologin' => 'It leat čálligoahtán sisa',
-'prefsnologintext' => 'Don fertet [[Special:UserLogin|čálligoahtit sisa]], ovdalgo sáhtát rievdadit du ásahusaid.',
'changepassword' => 'Suollemassáni molson',
'prefs-skin' => 'Olggosoaidnu',
'skin-preview' => 'ovdalgihtii geahččan...',
'mypreferences' => 'Mona nustatīmā',
'prefs-edits' => 'Keitėmu skaitlius:',
'prefsnologin' => 'Naprisėjongis',
-'prefsnologintext' => 'Tamstā rēk būtė <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisėjongosam]</span>, kū galietomiet keistė sava nustatīmus.',
'changepassword' => 'Pakeistė slaptažuodė',
'prefs-skin' => 'Ėšruoda',
'skin-preview' => 'Parveiza',
# External editor support
'edit-externally' => 'Atdarītė ėšuoriniam redaktuorio',
-'edit-externally-help' => 'Nuoriedamė gautė daugiau infuormacėjės, veiziekėt [//www.mediawiki.org/wiki/Manual:External_editors kruovėma instrokcėjės].',
+'edit-externally-help' => 'Nuoriedamė gautė daugiau infuormacėjės, veiziekėt [https://www.mediawiki.org/wiki/Manual:External_editors kruovėma instrokcėjės].',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'vėsos',
# Special:SpecialPages
'specialpages' => 'Specēlė̅jė poslapē',
-'specialpages-note' => '----
-* Normalūs specēlė̅jė puslapē.
+'specialpages-note' => '* Normalūs specēlė̅jė puslapē.
* <strong class="mw-specialpagerestricted">Apribuotė specēlė̅jė puslapē.</strong>',
'specialpages-group-maintenance' => 'Sėstemas palaikīma pranešėmā',
'specialpages-group-other' => 'Kėtė specēlė̅jė poslapē',
'mypreferences' => 'Postavke',
'prefs-edits' => 'Broj izmjena:',
'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Da biste mogli podešavati korisničke postavke, morate <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} biti prijavljeni]</span>.',
'changepassword' => 'Promijeni lozinku',
'prefs-skin' => 'Izgled (skin)',
'skin-preview' => 'Pretpregled',
'allmessagesdefault' => 'Uobičajeni tekst',
'allmessagescurrent' => 'Trenutni tekst',
'allmessagestext' => 'Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.
-Molimo posjetite [//www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [//translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
+Molimo posjetite [https://www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [//translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
'allmessagesnotsupportedDB' => "Ova stranica ne može biti korištena jer je '''\$wgUseDatabaseMessages''' isključen.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter po stanju podešavanja:',
# External editor support
'edit-externally' => 'Izmijeni ovu datoteku/fajl koristeći eksternu aplikaciju',
-'edit-externally-help' => '(Pogledajte [//www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
+'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sve',
'version-hook-subscribedby' => 'Pretplaćeno od',
'version-version' => '(Verzija $1)',
'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ova wiki je zasnovana na '''[//www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
+'version-poweredby-credits' => "Ova wiki je zasnovana na '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
'version-poweredby-others' => 'ostali',
'version-credits-summary' => 'Htjeli bismo da zahvalimo sljedećim osobama na njihovom doprinosu [[Special:Version|MediaWiki]].',
'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* Normalne posebne stranice.
+'specialpages-note' => '* Normalne posebne stranice.
* <span class="mw-specialpagerestricted">Ograničene posebne stranice.</span>
* <span class="mw-specialpagecached">Keširane posebne stranice (mogu biti zastarjele).</span>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
# External editor support
'edit-externally' => 'Bddl asdaw ad s wasnas abrrani',
-'edit-externally-help' => '(Ẓṛ [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] bac ad taf uggar n inɣmisn)',
+'edit-externally-help' => '(Ẓṛ [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] bac ad taf uggar n inɣmisn)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kraygat (kullu)',
'mypreferences' => 'අභිරුචීන්',
'prefs-edits' => 'සංස්කරණයන් සංඛ්යාව:',
'prefsnologin' => 'පිවිසී නැත (Not logged in)',
-'prefsnologintext' => 'පරිශීලක අභිරුචි සැකසීමට නම්, ඔබ <span class="plainlinks">[{{fullurl:Special:Userlogin|returnto=$1}} ප්රවිෂ්ටවී]</span> සිටිය යුතුය.',
'changepassword' => 'මුරපදය වෙනස් කරන්න',
'prefs-skin' => 'ඡවිය',
'skin-preview' => 'පෙරදසුන',
'allmessagesdefault' => 'සාමාන්ය පණිවුඩ පෙළ',
'allmessagescurrent' => 'වත්මන් පෙළ',
'allmessagestext' => 'මේ මාධ්යවිකි නාමඅවකාශයෙහිදී හමුවන පද්ධති පණිවුඩයන් ලැයිස්තුවකි.
-වර්ගීය මාධ්යවිකි ප්රාදේශීයකරණයට දායක වීමට ඔබ රිසි නම් කරුණාකර [//www.mediawiki.org/wiki/Localisation මාධ්යවිකි ප්රාදේශීයකරණය] සහ [//translatewiki.net බීටාවිකි] වෙත පිවිසෙන්න.',
+වර්ගීය මාධ්යවිකි ප්රාදේශීයකරණයට දායක වීමට ඔබ රිසි නම් කරුණාකර [https://www.mediawiki.org/wiki/Localisation මාධ්යවිකි ප්රාදේශීයකරණය] සහ [//translatewiki.net බීටාවිකි] වෙත පිවිසෙන්න.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' අක්රීය කොට ඇති බැවින්, මෙම පිටුව භාවිතා කල නොහැක.",
'allmessages-filter-legend' => 'පෙරහන',
'allmessages-filter' => 'පාරිභෝගීකරණ තත්ත්වය අනුව පෙරීම:',
# External editor support
'edit-externally' => 'බාහිර උපයෝගයක් භාවිතා කරමින් මෙම ගොනුව සංස්කරණය කරන්න',
-'edit-externally-help' => '(වැඩිදුර තොරතුරු සඳහා [//www.mediawiki.org/wiki/Manual:External_editors පිහිටුවීම් උපදෙස්] බලන්න.)',
+'edit-externally-help' => '(වැඩිදුර තොරතුරු සඳහා [https://www.mediawiki.org/wiki/Manual:External_editors පිහිටුවීම් උපදෙස්] බලන්න.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'සියල්ල',
'version-hook-subscribedby' => 'දායකවී ඇත්තේ',
'version-version' => '(අනුවාදය $1)',
'version-license' => 'වරපත',
-'version-poweredby-credits' => "මෙම විකිය '''[//www.mediawiki.org/ MediaWiki]''' මගින් බලගන්වා ඇත, copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "මෙම විකිය '''[https://www.mediawiki.org/ MediaWiki]''' මගින් බලගන්වා ඇත, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'අනෙකුත්',
'version-license-info' => 'MediaWiki යනු නිදහස් මෘදුකාංගයකි; නිදහස් මෘදුකාංග පදනමේ (Free Software Foundation) හි GNU General Public License නම් බලපත්රයේ වගන්තිවලට අනුව ඔබට එය නැවත බෙදාහැරීම සහ/හෝ සංස්කරණය කළ හැක; ඒ, එම බලපත්රයේ 2වන හෝ (ඔබට කැමති නම්) ඉන්පසු එන සංස්කරණයකට අනුවය.
# Special:SpecialPages
'specialpages' => 'විශේෂ පිටු',
-'specialpages-note' => '----
-* සාමාන්ය විශේෂ පිටු.
+'specialpages-note' => '* සාමාන්ය විශේෂ පිටු.
* <span class="mw-specialpagerestricted">සීමිත විශේෂ පිටු.</span>
* <span class="mw-specialpagecached">කෑෂිත විශේෂ පිටු (යල් පැන ගිය විය හැක).</span>',
'specialpages-group-maintenance' => 'නඩත්තු වාර්තා',
'mypreferences' => 'Nastavenia',
'prefs-edits' => 'Počet úprav:',
'prefsnologin' => 'Nie ste prihlásený/á',
-'prefsnologintext' => 'Aby ste mohli zmeniť svoje nastavenia, musíte byť <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prihlásený]</span>.',
'changepassword' => 'Zmeniť heslo',
'prefs-skin' => 'Vzhľad',
'skin-preview' => 'Náhľad',
'allmessagesdefault' => 'štandardný text',
'allmessagescurrent' => 'aktuálny text',
'allmessagestext' => 'Toto je zoznam všetkých správ dostupných v mennom priestore MediaWiki.
-Prosím, navštívte [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [//translatewiki.net translatewiki.net] ak chcete prispieť k všeobecnej lokalizácii MediaWiki.',
+Prosím, navštívte [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [//translatewiki.net translatewiki.net] ak chcete prispieť k všeobecnej lokalizácii MediaWiki.',
'allmessagesnotsupportedDB' => "Túto stránku nemožno použiť, pretože '''\$wgUseDatabaseMessages''' je vypnuté.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter podľa stavu prispôsobenia:',
# External editor support
'edit-externally' => 'Upraviť tento súbor pomocou externého programu',
-'edit-externally-help' => '(Viac informácií poskytnú inštrukcie pre nastavenie [//www.mediawiki.org/wiki/Manual:External_editors externého editora])',
+'edit-externally-help' => '(Viac informácií poskytnú inštrukcie pre nastavenie [https://www.mediawiki.org/wiki/Manual:External_editors externého editora])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'všetky',
'version-hook-subscribedby' => 'Pripojené',
'version-version' => '(Verzia $1)',
'version-license' => 'Licencia',
-'version-poweredby-credits' => "Táto wiki beží na '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Táto wiki beží na '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'ďalší',
'version-poweredby-translators' => 'prekladatelia na translatewiki.net',
'version-credits-summary' => 'Nasledujúcim osobám by sme radi poďakovali za ich príspevky k vývoju [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Špeciálne stránky',
-'specialpages-note' => '----
-* Bežné špeciálne stránky.
+'specialpages-note' => '* Bežné špeciálne stránky.
* <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
* <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
'specialpages-group-maintenance' => 'Údržbové správy',
Do skrite vsebine bodo še vedno lahko dostopali drugi administratorji {{GRAMMAR:rodilnik|{{SITENAME}}}} in jo z uporabo istega vmesnika tudi obnovili, razen kjer bodo uveljavljene dodatne omejitve.",
'revdelete-confirm' => 'Prosim potrdite da nameravate to storiti, da se zavedate posledic in da to počnete v skladu s [[{{MediaWiki:Policy-url}}|politiko]].',
'revdelete-suppress-text' => "Zadrževanje naj bi bilo uporabljeno '''le''' v sledečih primerih:
-* Potencialni klevetniški podatki
+* Morebitni klevetniški podatki
* Neprimerni osebni podatki
-*: ''domači naslovi in telefonske številke, številke socialnega zavarovanja, etc.''",
+*: ''domači naslovi in telefonske številke, narodne številke istovetnosti itn.''",
'revdelete-legend' => 'Nastavi omejitve vidnosti',
'revdelete-hide-text' => 'Besedilo redakcije',
'revdelete-hide-image' => 'Skrij vsebino datoteke.',
'revdelete-hide-user' => 'Uporabniško ime/IP-naslov urejevalca',
'revdelete-hide-restricted' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
'revdelete-radio-same' => '(ne spremeni)',
-'revdelete-radio-set' => 'Vidno',
-'revdelete-radio-unset' => 'Skrito',
+'revdelete-radio-set' => 'Skrito',
+'revdelete-radio-unset' => 'Vidno',
'revdelete-suppress' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
'revdelete-unsuppress' => 'Odpraviti omejitve na obnovljenih redakcijah.',
'revdelete-log' => 'Razlog:',
'mypreferences' => 'Nastavitve',
'prefs-edits' => 'Število urejanj:',
'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Za spreminjanje uporabniških nastavitev morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span>.',
'changepassword' => 'Zamenjava gesla',
'prefs-skin' => 'Koža',
'skin-preview' => 'Predogled',
'allmessagesdefault' => 'Prednastavljeno besedilo',
'allmessagescurrent' => 'Trenutno besedilo',
'allmessagestext' => 'Navedena so v imenskem prostoru MediaWiki dostopna sistemska sporočila.
-Za lokalizacijo in prevajanje obiščite [//www.mediawiki.org/wiki/Localisation MediaWiki] in [//translatewiki.net translatewiki.net] ter tako prispevajte k splošnemu prevodu programja.',
+Za lokalizacijo in prevajanje obiščite [https://www.mediawiki.org/wiki/Localisation MediaWiki] in [//translatewiki.net translatewiki.net] ter tako prispevajte k splošnemu prevodu programja.',
'allmessagesnotsupportedDB' => "Te strani ni mogoče uporabljati, ker je bilo '''\$wgUseDatabaseMessages''' izključeno.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtriraj po prilagoditvenem stanju:',
'svg-long-desc' => 'datoteka SVG, v izvirniku $1 × $2 slikovnih točk, velikost datoteke: $3',
'svg-long-desc-animated' => 'animirana datoteka SVG, v izvirniku $1 × $2 slikovnih točk, velikost datoteke: $3',
'svg-long-error' => 'Neveljavna datoteka SVG: $1',
-'show-big-image' => 'Slika v višji ločljivosti',
+'show-big-image' => 'Izvirna datoteka',
'show-big-image-preview' => 'Velikost predogleda: $1.',
'show-big-image-other' => '{{PLURAL:$2|Druga ločljivost|Drugi ločljivosti|Druge ločljivosti}}: $1.',
'show-big-image-size' => '$1 × $2 točk',
# External editor support
'edit-externally' => 'Uredite datoteko z uporabo zunanjega orodja',
-'edit-externally-help' => '(Za več informacij glejte [//www.mediawiki.org/wiki/Manual:External_editors navodila za namestitev])',
+'edit-externally-help' => '(Za več informacij glejte [https://www.mediawiki.org/wiki/Manual:External_editors navodila za namestitev])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'vse',
# Separators for various lists, etc.
'percent' => '$1 %',
+'quotation-marks' => '»$1«',
# Multipage image navigation
'imgmultipageprev' => '← prejšnja stran',
'version-hook-subscribedby' => 'Naročen s strani',
'version-version' => '(Različica $1)',
'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ta wiki poganja '''[//www.mediawiki.org/ MediaWiki]''', vse pravice pridržave © 2001-$1 $2.",
+'version-poweredby-credits' => "Ta wiki poganja '''[https://www.mediawiki.org/ MediaWiki]''', vse pravice pridržave © 2001-$1 $2.",
'version-poweredby-others' => 'drugi',
'version-poweredby-translators' => 'Prevajalci translatewiki.net',
'version-credits-summary' => 'Radi bi priznali prispevek naslednjih oseb k [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Posebne strani',
-'specialpages-note' => '----
-* Navadne posebne strani.
-* <span class="mw-specialpagerestricted">Omejene posebne strani.</span>
-* <span class="mw-specialpagecached">Predpomnjene posebne strani (morda so zastarele).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Navadne posebne strani.
+* <span class="mw-specialpagerestricted">Omejene posebne strani.</span>',
'specialpages-group-maintenance' => 'Vzdrževalna poročila',
'specialpages-group-other' => 'Ostale posebne strani',
'specialpages-group-login' => 'Prijavite se / ustvarite račun',
'mypreferences' => 'Meene Eistellunga',
'prefs-edits' => 'Oazoahl dar Beoarbeetunga:',
'prefsnologin' => 'Ne oagemeldet',
-'prefsnologintext' => 'Du mußt <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} oagemeldet]</span> sei, im denne Einstellunga ändern zu kinna.',
'changepassword' => 'Poaßwurt ändern',
'prefs-personal' => 'Nutzerdaten',
'prefs-rc' => 'Letzte Änderunga',
'allmessagesname' => 'Noame',
'allmessagesdefault' => 'Standardtext',
'allmessagestext' => 'Dies ies anne Liste dar MediaWiki-Systemtexte.
-Besiche de Seyta [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], wenn du diech oa dar Lokalisierung vu MediaWiki beteiliga mechtest.',
+Besiche de Seyta [https://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], wenn du diech oa dar Lokalisierung vu MediaWiki beteiliga mechtest.',
'allmessagesnotsupportedDB' => 'Diese Spezialseyte stieht ne zur Verfigung, do se ieber dann Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
'allmessages-filter-all' => 'Olle',
'allmessages-language' => 'Sproache:',
# External editor support
'edit-externally' => 'Diese Datei mit annem externen Programm bearbta',
-'edit-externally-help' => '(Siehe de [//www.mediawiki.org/wiki/Manual:External_editors Installationsoaweisunga] fier weitere Informationen)',
+'edit-externally-help' => '(Siehe de [https://www.mediawiki.org/wiki/Manual:External_editors Installationsoaweisunga] fier weitere Informationen)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'olle',
# Special:SpecialPages
'specialpages' => 'Spezialseyta',
-'specialpages-note' => '----
-* Spezialseyta fier Jedermoan
+'specialpages-note' => '* Spezialseyta fier Jedermoan
* <strong class="mw-specialpagerestricted">Spezialseyta fier Nutzer miet erweiterta Rechta</strong>',
'specialpages-group-other' => 'Andere Spezialseyta',
'specialpages-group-login' => 'Oamelda',
'preferences' => 'Dooqyada',
'mypreferences' => 'Dooqyadeyda',
'prefsnologin' => 'Gudaha kuma jirtid',
-'prefsnologintext' => 'Waa in aad <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Gudaha ku jirtaa]</span> si aad dooqyadaada u dalbatid.',
'prefs-skin' => 'Jirka',
'skin-preview' => 'Horfiirin',
'datedefault' => "Ma'jiro dooq",
'allmessagesdefault' => "Qoraalka la'isku ogyahay",
'allmessagescurrent' => 'Qoraalka hada qoran',
'allmessagestext' => 'Kan waa liiska fariimaha systemka oo laga heli karo xarun magaceedka MediaWiki.
-Fadlan booqo [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] iyo [//translatewiki.net translatewiki.net] hadii aad rabto in aad wax ku darsatid guud ahaanba MediaWiki ku fasirida luqadaada.',
+Fadlan booqo [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] iyo [//translatewiki.net translatewiki.net] hadii aad rabto in aad wax ku darsatid guud ahaanba MediaWiki ku fasirida luqadaada.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' la'ma isticmaalikaro, '''\$wgUseDatabaseMessages''' oo dansan daraadeed.",
'allmessages-language' => 'Luqad:',
'allmessages-filter-submit' => 'Soco',
# External editor support
'edit-externally' => 'wax ka bedel faylkaan adiga oo isticmaalaya brogram dheeraad ah',
-'edit-externally-help' => '(Ka fiiri wax war ah oo kale [//www.mediawiki.org/wiki/Manual:External_editors sidii oo wax ugu habeysmi lahaa] )',
+'edit-externally-help' => '(Ka fiiri wax war ah oo kale [https://www.mediawiki.org/wiki/Manual:External_editors sidii oo wax ugu habeysmi lahaa] )',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'dhamaan',
'mypreferences' => 'Parapëlqimet',
'prefs-edits' => 'Numri i redaktimeve:',
'prefsnologin' => 'Nuk keni hyrë brenda',
-'prefsnologintext' => 'Duhet të jeni <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} të kyçur]</span> për të caktuar parapëlqimet e përdoruesit.',
'changepassword' => 'Ndërroni fjalëkalimin',
'prefs-skin' => 'Pamja',
'skin-preview' => 'Parapamje',
'allmessagesdefault' => 'Teksti i parazgjedhur',
'allmessagescurrent' => 'Teksti i tanishëshm',
'allmessagestext' => 'Kjo është një listë e të gjitha faqeve në hapësirën MediaWiki:
-Ju lutemi vizitoni [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dhe [//translatewiki.net translatewiki.net] nëse dëshironi të kontribuoni në lokalizimin e përgjithshëm MediaWiki',
+Ju lutemi vizitoni [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dhe [//translatewiki.net translatewiki.net] nëse dëshironi të kontribuoni në lokalizimin e përgjithshëm MediaWiki',
'allmessagesnotsupportedDB' => "Kjo faqe nuk mund të përdoret sepse '''\$wgUseDatabaseMessages''' është çaktivizuar.",
'allmessages-filter-legend' => 'Filtër',
'allmessages-filter' => 'Filtroni nga shteti',
# External editor support
'edit-externally' => 'Ndryshoni këtë skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shikoni [//www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për më shumë informacion)',
+'edit-externally-help' => '(Shikoni [https://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për më shumë informacion)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'të gjitha',
'version-hook-subscribedby' => 'Abonuar nga',
'version-version' => '(Versioni $1)',
'version-license' => 'Licensa',
-'version-poweredby-credits' => "Ky wiki është mundësuar nga '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ky wiki është mundësuar nga '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'të tjerë',
'version-license-info' => 'MediaWiki është një softuer i lirë; ju mund ta shpërndani dhe redakatoni atë nën kushtet GNU General Public License si e publikuar nga fondacioni Free Software; ose versioni 2 i licensës, ose çdo version më i vonshëm.
'copyright' => 'Садржај је доступан под лиценцом $1 осим ако је другачије наведено.',
'copyrightpage' => '{{ns:project}}:Ауторска права',
'currentevents' => 'Актуелности',
-'currentevents-url' => 'Project:Ð\9dовости',
+'currentevents-url' => 'Project:Ð\90кÑ\82Ñ\83елности',
'disclaimers' => 'Одрицање одговорности',
'disclaimerpage' => 'Project:Одрицање одговорности',
'edithelp' => 'Помоћ при уређивању',
'mergelog' => 'Дневник спајања',
'pagemerge-logentry' => 'страница [[$1]] је спојена у [[$2]] (све до измене $3)',
'revertmerge' => 'растави',
-'mergelogpagetext' => 'Ð\98Ñ\81под Ñ\81е налази Ñ\81пиÑ\81ак Ñ\81коÑ\80аÑ\88Ñ\9aиÑ\85 Ñ\81паÑ\98аÑ\9aа иÑ\81Ñ\82оÑ\80иÑ\98а страница.',
+'mergelogpagetext' => 'Ð\98Ñ\81под Ñ\98е Ñ\81пиÑ\81ак наÑ\98Ñ\81коÑ\80иÑ\98иÑ\85 Ñ\81паÑ\98аÑ\9aа иÑ\81Ñ\82оÑ\80иÑ\98а двеÑ\98Ñ\83 страница.',
# Diffs
'history-title' => 'Историја измена странице „$1“',
'mypreferences' => 'Подешавања',
'prefs-edits' => 'Број измена:',
'prefsnologin' => 'Нисте пријављени',
-'prefsnologintext' => 'Морате бити <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} пријављени]</span> да бисте подешавали корисничке поставке.',
'changepassword' => 'Промени лозинку',
'prefs-skin' => 'Тема',
'skin-preview' => 'Прегледај',
'diff' => 'разл',
'hist' => 'ист',
'hide' => 'сакриј',
-'show' => 'прикажи',
+'show' => 'Ð\9fрикажи',
'minoreditletter' => ' м',
'newpageletter' => 'Н',
'boteditletter' => 'б',
Последњу измену је {{GENDER:$3|направио|направила|направио}} [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Опис измене: \"''\$1''\".",
'revertpage' => 'Враћене измене [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]',
-'revertpage-nouser' => 'Враћене су измене скривеног корисника на последњу измену члана {{GENDER:$1|[[User:$1|$1]]}}',
+'revertpage-nouser' => 'Враћене су измене скривеног корисника на последњу измену {{GENDER:$1|корисника|кориснице}} [[User:$1|$1]]',
'rollback-success' => 'Враћене су измене {{GENDER:$1|корисника|кориснице|корисника}} $1
на последњу измену {{GENDER:$2|корисника|кориснице|корисника}} $2.',
'allmessagesdefault' => 'Подразумевани текст',
'allmessagescurrent' => 'Текст поруке',
'allmessagestext' => 'Ово је списак свих системских порука које су доступне у именском простору „Медијавики“.
-Посетите [//www.mediawiki.org/wiki/Localisation Медијавики локализацију] и [//translatewiki.net Транслејтвики] ако желите да помогнете у превођењу.',
+Посетите [https://www.mediawiki.org/wiki/Localisation Медијавики локализацију] и [//translatewiki.net Транслејтвики] ако желите да помогнете у превођењу.',
'allmessagesnotsupportedDB' => "Ова страница не може да се користи јер је '''\$wgUseDatabaseMessages''' онемогућен.",
'allmessages-filter-legend' => 'Филтер',
'allmessages-filter' => 'Филтрирај по стању:',
# External editor support
'edit-externally' => 'Измени ову датотеку користећи спољашњи програм',
-'edit-externally-help' => '(Погледајте [//www.mediawiki.org/wiki/Manual:External_editors упутство за подешавање] за више информација)',
+'edit-externally-help' => '(Погледајте [https://www.mediawiki.org/wiki/Manual:External_editors упутство за подешавање] за више информација)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'све',
'table_pager_empty' => 'Нема резултата',
# Auto-summaries
-'autosumm-blank' => 'Уклоњен целокупан садржаја странице',
+'autosumm-blank' => 'Уклоњен целокупан садржај странице',
'autosumm-replace' => 'Замена садржаја странице са „$1“',
'autoredircomment' => 'Преусмерење на [[$1]]',
'autosumm-new' => 'Нова страница: $1',
'version-version' => '(издање $1)',
'version-svn-revision' => '(изм. $2)',
'version-license' => 'Лиценца',
-'version-poweredby-credits' => "Овај вики покреће '''[//www.mediawiki.org/ Медијавики]''', ауторска права © 2001-$1 $2.",
+'version-poweredby-credits' => "Овај вики покреће '''[https://www.mediawiki.org/ Медијавики]''', ауторска права © 2001-$1 $2.",
'version-poweredby-others' => 'остали',
'version-poweredby-translators' => 'translatewiki.net преводиоци',
'version-credits-summary' => 'Желели бисмо да захвалимо следећим људима на њиховом доприносу [[Special:Version|Медијавикији]].',
# Special:SpecialPages
'specialpages' => 'Посебне странице',
-'specialpages-note' => '----
-* обичне посебне странице
-* <span class="mw-specialpagerestricted">ограничене посебне странице</span>',
+'specialpages-note' => '* Нормалне посебне странице
+* <span class="mw-specialpagerestricted">Ограничене посебне странице</span>',
'specialpages-group-maintenance' => 'Извештаји одржавања',
'specialpages-group-other' => 'Остале посебне странице',
'specialpages-group-login' => 'Пријава/регистрација',
'copyright' => 'Sadržaj je dostupan pod licencom $1 osim ako je drugačije navedeno.',
'copyrightpage' => '{{ns:project}}:Autorska prava',
'currentevents' => 'Aktuelnosti',
-'currentevents-url' => 'Project:Novosti',
+'currentevents-url' => 'Project:Aktuelnosti',
'disclaimers' => 'Odricanje odgovornosti',
'disclaimerpage' => 'Project:Odricanje odgovornosti',
'edithelp' => 'Pomoć pri uređivanju',
'mergelog' => 'Dnevnik spajanja',
'pagemerge-logentry' => 'stranica [[$1]] je spojena u [[$2]] (sve do izmene $3)',
'revertmerge' => 'rastavi',
-'mergelogpagetext' => 'Ispod se nalazi spisak skorašnjih spajanja istorija stranica.',
+'mergelogpagetext' => 'Ispod je spisak najskorijih spajanja istorija dveju stranica.',
# Diffs
'history-title' => 'Istorija izmena stranice „$1“',
'mypreferences' => 'Podešavanja',
'prefs-edits' => 'Broj izmena:',
'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span> da biste podešavali korisničke postavke.',
'changepassword' => 'Promeni lozinku',
'prefs-skin' => 'Tema',
'skin-preview' => 'Pregledaj',
'diff' => 'razl',
'hist' => 'ist',
'hide' => 'sakrij',
-'show' => 'prikaži',
+'show' => 'Prikaži',
'minoreditletter' => ' m',
'newpageletter' => 'N',
'boteditletter' => 'b',
Poslednju izmenu je {{GENDER:$3|napravio|napravila|napravio}} [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Opis izmene: \"''\$1''\".",
-'revertpage' => 'Vraćene izmene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]',
-'revertpage-nouser' => 'Vraćene su izmene skrivenog korisnika na poslednju izmenu člana {{GENDER:$1|[[User:$1|$1]]}}',
+'revertpage' => 'Vraćene izmene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]',
+'revertpage-nouser' => 'Vraćene su izmene skrivenog korisnika na poslednju izmenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]',
'rollback-success' => 'Vraćene su izmene {{GENDER:$1|korisnika|korisnice|korisnika}} $1
na poslednju izmenu {{GENDER:$2|korisnika|korisnice|korisnika}} $2.',
'allmessagesdefault' => 'Podrazumevani tekst',
'allmessagescurrent' => 'Tekst poruke',
'allmessagestext' => 'Ovo je spisak svih sistemskih poruka koje su dostupne u imenskom prostoru „Medijaviki“.
-Posetite [//www.mediawiki.org/wiki/Localisation Medijaviki lokalizaciju] i [//translatewiki.net Translejtviki] ako želite da pomognete u prevođenju.',
+Posetite [https://www.mediawiki.org/wiki/Localisation Medijaviki lokalizaciju] i [//translatewiki.net Translejtviki] ako želite da pomognete u prevođenju.',
'allmessagesnotsupportedDB' => "Ova stranica ne može da se koristi jer je '''\$wgUseDatabaseMessages''' onemogućen.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtriraj po stanju:',
# External editor support
'edit-externally' => 'Izmeni ovu datoteku koristeći spoljašnji program',
-'edit-externally-help' => '(Pogledajte [//www.mediawiki.org/wiki/Manual:External_editors uputstvo za podešavanje] za više informacija)',
+'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors uputstvo za podešavanje] za više informacija)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sve',
'table_pager_empty' => 'Nema rezultata',
# Auto-summaries
-'autosumm-blank' => 'Uklonjen celokupan sadržaja stranice',
+'autosumm-blank' => 'Uklonjen celokupan sadržaj stranice',
'autosumm-replace' => 'Zamena sadržaja stranice sa „$1“',
'autoredircomment' => 'Preusmerenje na [[$1]]',
'autosumm-new' => 'Nova stranica: $1',
'version-version' => '(izdanje $1)',
'version-svn-revision' => '(izm. $2)',
'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ovaj viki pokreće '''[//www.mediawiki.org/ Medijaviki]''', autorska prava © 2001-$1 $2.",
+'version-poweredby-credits' => "Ovaj viki pokreće '''[https://www.mediawiki.org/ Medijaviki]''', autorska prava © 2001-$1 $2.",
'version-poweredby-others' => 'ostali',
'version-credits-summary' => 'Želeli bismo da zahvalimo sledećim ljudima na njihovom doprinosu [[Special:Version|Medijavikiji]].',
'version-license-info' => 'Medijaviki je slobodan softver možete ga redistribuirati i/ili modifikovati pod uslovima GNU-ove opšte javne licence verzija 2 ili svake sledeće koju objavi Zadužbina za slobodan softver.
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* obične posebne stranice
-* <span class="mw-specialpagerestricted">ograničene posebne stranice</span>',
+'specialpages-note' => '* Normalne posebne stranice
+* <span class="mw-specialpagerestricted">Ograničene posebne stranice</span>',
'specialpages-group-maintenance' => 'Izveštaji održavanja',
'specialpages-group-other' => 'Ostale posebne stranice',
'specialpages-group-login' => 'Prijava/registracija',
# External editor support
'edit-externally' => 'Kenki a file disi ini wan dorosey wrokosani.',
-'edit-externally-help' => 'Luku ini a [//www.mediawiki.org/wiki/Manual:External_editors skorobuku fu den seti] gi moro yepi.',
+'edit-externally-help' => 'Luku ini a [https://www.mediawiki.org/wiki/Manual:External_editors skorobuku fu den seti] gi moro yepi.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ala',
'mypreferences' => 'Ienstaalengen',
'prefs-edits' => 'Antaal Beoarbaidengen:',
'prefsnologin' => 'Nit anmälded',
-'prefsnologintext' => 'Du moast <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anmälded]</span> weese, uum dien Ienstaalengen annerje tou konnen.',
'changepassword' => 'Paaswoud annerje',
'prefs-skin' => 'Skin',
'skin-preview' => 'Foarskau',
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Dissen Text',
'allmessagestext' => 'Dit is ne Lieste fon aal System-Ättergjuchte do in dän MediaWiki-Noomenruum tou Ferföigenge stounde.
-Besäik jädden [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [//translatewiki.net translatewiki.net], wan du mee-oarbaidje wolt an ju MediaWiki-Sortierenge.',
+Besäik jädden [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [//translatewiki.net translatewiki.net], wan du mee-oarbaidje wolt an ju MediaWiki-Sortierenge.',
'allmessagesnotsupportedDB' => 'Disse Spezioalsiede stoant nit tou Ferföigenge, deer ju uur dän Parameter <tt>$wgUseDatabaseMessages</tt> deaktivierd wuude.',
'allmessages-filter-legend' => 'Sieuwe',
'allmessages-filter' => 'Sieuwe foar anpaaseden Toustand:',
# External editor support
'edit-externally' => 'Disse Doatäi mäd n extern Program beoarbaidje',
-'edit-externally-help' => '(Sjuch do [//www.mediawiki.org/wiki/Manual:External_editors Installationsanwiesengen] foar wiedere Informatione)',
+'edit-externally-help' => '(Sjuch do [https://www.mediawiki.org/wiki/Manual:External_editors Installationsanwiesengen] foar wiedere Informatione)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aal',
'version-hook-subscribedby' => 'Aproup fon',
'version-version' => '(Version $1)',
'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Disse Website nutset '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-credits' => "Disse Website nutset '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'uur',
'version-license-info' => "MediaWiki is fräie Software, dät hat dät ju ätter do Bedingengen fon ju truch de Free Software Foundation fereepenlikede ''GNU General Public License'', fääreferdeeld un/ of modifizierd wäide kon. Deerbie kon ju version 2, of ätter oainen Uurdeel, älke näiere Version fon ju Lizenz ferwoand wäide.
# Special:SpecialPages
'specialpages' => 'Spezioalsieden',
-'specialpages-note' => '----
-* Reguläre Spezioalsieden
+'specialpages-note' => '* Reguläre Spezioalsieden
* <span class="mw-specialpagerestricted">Tougriepsbeskränkede Spezioalsieden</span>
* <span class="mw-specialpagecached">Cachegenerierde Spezioalsieden</span>',
'specialpages-group-maintenance' => 'Fersuurgengsliesten',
'mypreferences' => 'Préferéns',
'prefs-edits' => 'Jumlah éditan:',
'prefsnologin' => 'Can asup log',
-'prefsnologintext' => 'Anjeun kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} asup log]</span> pikeun ngatur préferénsi pamaké.',
'changepassword' => 'Robah sandi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pramidang',
# External editor support
'edit-externally' => 'Édit koropak ieu migunakeun aplikasi éksternal',
-'edit-externally-help' => 'Baca [//www.mediawiki.org/wiki/Manual:External_editors pituduh ngatur] pikeun émbaran leuwih jéntré.',
+'edit-externally-help' => 'Baca [https://www.mediawiki.org/wiki/Manual:External_editors pituduh ngatur] pikeun émbaran leuwih jéntré.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sadaya',
# Special:SpecialPages
'specialpages' => 'Kaca husus',
-'specialpages-note' => '----
-* Kaca husus bisa di buka ku umum.
+'specialpages-note' => '* Kaca husus bisa di buka ku umum.
* <strong class="mw-specialpagerestricted">Cetak kandel kaca husus nu kawates.</strong>',
'specialpages-group-maintenance' => 'Laporan pigawéeun',
'specialpages-group-other' => 'Kaca husus lainna',
'revdelete-hide-user' => 'Redigerarens användarnamn/IP-adress',
'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
'revdelete-radio-same' => '(låt vara)',
-'revdelete-radio-set' => 'Synlig',
-'revdelete-radio-unset' => 'Dold',
+'revdelete-radio-set' => 'Dold',
+'revdelete-radio-unset' => 'Synlig',
'revdelete-suppress' => 'Undanhåll data även från administratörer',
'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
'revdelete-log' => 'Anledning:',
'mypreferences' => 'Inställningar',
'prefs-edits' => 'Antal redigeringar:',
'prefsnologin' => 'Inte inloggad',
-'prefsnologintext' => 'Du måste vara <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} inloggad]</span> för att kunna ändra dina inställningar.',
'changepassword' => 'Byt lösenord',
'prefs-skin' => 'Utseende',
'skin-preview' => 'förhandsvisning',
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Nuvarande text',
'allmessagestext' => 'Detta är en lista över alla meddelanden i namnrymden MediaWiki.
-Besök [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] eller [//translatewiki.net translatewiki.net] om du vill bidra till översättningen av MediaWiki.',
+Besök [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] eller [//translatewiki.net translatewiki.net] om du vill bidra till översättningen av MediaWiki.',
'allmessagesnotsupportedDB' => "Den här sidan kan inte användas eftersom '''\$wgUseDatabaseMessages''' är avstängd.",
'allmessages-filter-legend' => 'Filtrera',
'allmessages-filter' => 'Filtrera efter anpassningsgrad:',
'svg-long-desc' => 'SVG-fil, grundstorlek: $1 × $2 pixlar, filstorlek: $3',
'svg-long-desc-animated' => 'Animerad SVG-fil, standardstorlek $1 × $2 pixlar, filstorlek: $3',
'svg-long-error' => 'Felaktig SVG-fil: $1',
-'show-big-image' => 'Högupplöst version',
+'show-big-image' => 'Originalfil',
'show-big-image-preview' => 'Storlek på förhandsvisningen: $1.',
'show-big-image-other' => '{{PLURAL:$2|Annan upplösning|Andra upplösningar}}: $1.',
'show-big-image-size' => '$1 × $2 pixlar',
# External editor support
'edit-externally' => 'Redigera denna fil med hjälp av extern programvara',
-'edit-externally-help' => '(Se [//www.mediawiki.org/wiki/Manual:External_editors installationsinstruktionerna] för mer information)',
+'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors installationsinstruktionerna] för mer information)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alla',
'version-hook-subscribedby' => 'Används av',
'version-version' => '(Version $1)',
'version-license' => 'Licens',
-'version-poweredby-credits' => "Den här wikin drivs av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Den här wikin drivs av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andra',
'version-poweredby-translators' => 'översättare från translatewiki.net',
'version-credits-summary' => 'Vi skulle vilja tacka följande personer för deras bidrag till [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Specialsidor',
-'specialpages-note' => '----
-* Normala specialsidor.
+'specialpages-note' => '* Normala specialsidor.
* <span class="mw-specialpagerestricted">Specialsidor med begränsad åtkomst.</span>
* <span class="mw-specialpagecached">Cachade specialsidor (kan vara föråldrade).</span>',
'specialpages-group-maintenance' => 'Underhållsrapporter',
'mypreferences' => 'Mapendekezo',
'prefs-edits' => 'Idadi ya marekebisho:',
'prefsnologin' => 'Hujaingia',
-'prefsnologintext' => 'Inabidi <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} uingie akaunti yako]</span> ili ubadilishe mapendekezo yako.',
'changepassword' => 'Badilisha neno la siri',
'prefs-skin' => 'Umbo',
'skin-preview' => 'Hakiki',
'allmessagesdefault' => 'Ujumbe uliopo bidhaa pepe',
'allmessagescurrent' => 'Ujumbe unapo sasa hivi',
'allmessagestext' => 'Hii ni orodha ya jumbe za mfumo zilizopo katika eneo la MediaWiki.
-Ukitaka kusaidia kazi ya kutohoa MediaWiki yote katika lugha nyingi, tafadhali uende tovuti ya [//www.mediawiki.org/wiki/Localisation Kutohoa MediaWiki Kwenye Lugha Nyingi] na [//translatewiki.net translatewiki.net].',
+Ukitaka kusaidia kazi ya kutohoa MediaWiki yote katika lugha nyingi, tafadhali uende tovuti ya [https://www.mediawiki.org/wiki/Localisation Kutohoa MediaWiki Kwenye Lugha Nyingi] na [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Ukurasa huu hauwezi kutumika kwa sababu '''\$wgUseDatabaseMessages''' imelemazwa.",
'allmessages-filter-legend' => 'Chuja',
'allmessages-filter' => 'Zichujwe kwa hali ya kutengenezwa:',
# External editor support
'edit-externally' => 'Tumia programu ya nje kuhariri faili hii',
-'edit-externally-help' => '(Ona [//www.mediawiki.org/wiki/Manual:External_editors maelezo (kwa Kiingereza)] kwa maarifa mengine.)',
+'edit-externally-help' => '(Ona [https://www.mediawiki.org/wiki/Manual:External_editors maelezo (kwa Kiingereza)] kwa maarifa mengine.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'zote',
'version-other' => 'Zingine',
'version-version' => '(Toleo $1)',
'version-license' => 'Ruhusa',
-'version-poweredby-credits' => "Wiki hii inaendeshwa na bidhaa pepe ya '''[//www.mediawiki.org/ MediaWiki]''', hakimiliki © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki hii inaendeshwa na bidhaa pepe ya '''[https://www.mediawiki.org/ MediaWiki]''', hakimiliki © 2001-$1 $2.",
'version-poweredby-others' => 'wengine',
'version-license-info' => 'MediaWiki ni bidhaa pepe huru; unaweza kuisambaza pamoja na kuitumia na kuibadilisha kutokana na masharti ya leseni ya GNU General Public License inayotolewa na Free Software Foundation (Shirika la Bidhaa Pepe Huru); ama toleo 2 la hakimiliki, ama (ukitaka) toleo lolote linalofuata.
# Special:SpecialPages
'specialpages' => 'Kurasa maalum',
-'specialpages-note' => '----
-* Kurasa maalum za kawaida.
+'specialpages-note' => '* Kurasa maalum za kawaida.
* <span class="mw-specialpagerestricted">Kurasa maalum zisizoonekana na wote.</span>
* <span class="mw-specialpagecached">Kurasa maalum zinazotoka "cache" (might be obsolete).</span>',
'specialpages-group-maintenance' => 'Ripoti za kurekebisha na kutunza kurasa',
'sitecsspreview' => "'''Pamjyntej, aże to je na raźe ino podglůnd Twojego arkusza stylůw CSS.'''
'''Ńic jeszcze ńy zostoło naszkryflane!'''",
'sitejspreview' => "'''Pamjyntej, aże to je na raźe ino podglůnd Twojego JavaScriptu - nic jeszcze ńy zostoło naszkryflane!'''",
-'userinvalidcssjstitle' => "'''Pozůr:''' Å\83y mo skůrki uo mjaÅ\84e \"\$1\". Pamjyntej, aže zajty užytkowÅ\84ika zawjyrajůnce CSS i JavaScript powinny zaÄ\8dynaÄ\87 Å\9be mouům buchÅ¡tabům, np. {{ns:user}}:Foo/vector.css.",
+'userinvalidcssjstitle' => "'''Pozůr:''' Å\83y mo skůrki uo mjaÅ\84e \"\$1\". Pamjyntej, aże zajty użytkowÅ\84ika zawjyrajůnce CSS i JavaScript powinny zaczynaÄ\87 Å\9be maÅ\82ům buchsztabům, lb. {{ns:user}}:Foo/vector.css.",
'updated' => '(Pomjyńano)',
'note' => "'''Pozůr:'''",
'previewnote' => "'''To je ino podglůnd - artikel jeszcze ńy je spamjyntany!'''",
'continue-editing' => 'Przyndź do pola sprowjańo',
'previewconflict' => 'Wersyjo podglůndano uodnośi śe do tekstu ze pola edycyje na wjyrchu. Tak bydźe wyglůndać zajta jeli zdecydujesz śe jům naszkryflać.',
-'session_fail_preview' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji. Sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe i zalogůj uod nowa.'''",
+'session_fail_preview' => "'''Przepraszomy! Serwer ńy może przetworzić tygo sprowjyńo skuli utraty danych ze sesyji. Sprůbuj jeszcze roz. Kejby to ńy pomogło - wyloguj śe a zalogůj uod nowa.'''",
'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
''Jako iže na {{GRAMMAR:MS.lp|{{SITENAME}}}} wuůnčono zostoua uopcyjo \"raw HTML\", podglůnd zostou schrůńony coby zabezpječyć před atakami JavaScript.''
'mypreferences' => 'Preferyncyje',
'prefs-edits' => 'Liczba sprowjyń:',
'prefsnologin' => 'Ńy ježeś zalůgowany',
-'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
'changepassword' => 'Zmjana hasua',
'prefs-skin' => 'Skůrka',
'skin-preview' => 'podglůnd',
'allmessagesdefault' => 'Tekst důmyślny',
'allmessagescurrent' => 'Tekst uobecny',
'allmessagestext' => 'Uoto lista wšyjstkych kůmůńikatůw systymowych dostympnych w přestřyńi mjan MedjaWiki.
-Uodwjydź [//www.mediawiki.org/wiki/Localisation Tuůmačyńy MediaWiki] a tyž [//translatewiki.net translatewiki.net] kejbyś chćou učestńičyć w tuůmačyńu uoprůgramowańo MediaWiki.',
+Uodwjydź [https://www.mediawiki.org/wiki/Localisation Tuůmačyńy MediaWiki] a tyž [//translatewiki.net translatewiki.net] kejbyś chćou učestńičyć w tuůmačyńu uoprůgramowańo MediaWiki.',
'allmessagesnotsupportedDB' => "Ta zajta ńy može być užyta, bez tůž co zmjynna '''\$wgUseDatabaseMessages''' je wůuůnčůno.",
# Thumbnails
# External editor support
'edit-externally' => 'Sprowjej tyn plik bez eksterno aplikacyjo',
-'edit-externally-help' => '(Zobocz [//www.mediawiki.org/wiki/Manual:External_editors instrukcyje sztalowańo eksternych edytorůw], kaj je uo tym wjyncy naszkryflůne)',
+'edit-externally-help' => '(Zobocz [https://www.mediawiki.org/wiki/Manual:External_editors instrukcyje sztalowańo eksternych edytorůw], kaj je uo tym wjyncy naszkryflůne)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'do kupy',
# Special:SpecialPages
'specialpages' => 'Szpecjalne zajty',
-'specialpages-note' => '----
-* Ekstra zajty uogůlńy dostympne.
+'specialpages-note' => '* Ekstra zajty uogůlńy dostympne.
* <strong class="mw-specialpagerestricted">Ekstra zajty do kerych dostymp je uograńiczůny.</strong>',
'specialpages-group-maintenance' => 'Raporty kůnserwacyjne',
'specialpages-group-other' => 'Inkše ekstra zajty',
'mypreferences' => 'விருப்பத்தேர்வுகள்',
'prefs-edits' => 'தொகுப்புகளின் எண்ணிக்கை:',
'prefsnologin' => 'புகுபதிகை செய்யப்படவில்லை',
-'prefsnologintext' => 'பயனர் விருப்பத்தேர்வுகளை அமைப்பதற்கு நீங்கள் <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} புகுபதிகை ]</span> செய்திருக்க வேண்டும்.',
'changepassword' => 'கடவுச்சொல்லை மாற்று',
'prefs-skin' => 'முகப்புறை',
'skin-preview' => 'முன்தோற்றம்',
'prefs-rendering' => 'தோற்றம்',
'saveprefs' => 'சேமி',
'resetprefs' => 'சேமிக்காத மாற்றங்கள் நீக்குக',
-'restoreprefs' => 'à®\8eலà¯\8dலà¯\8bà®°à¯\81à®\95à¯\8dà®\95à¯\81à®®à¯\8d பà¯\8aதà¯\81வான வà®\9fிவமà¯\88பà¯\8dபà¯\88தà¯\8d திரà¯\81à®®à¯\8dபà®\95à¯\8dà®\95à¯\8aணà¯\8dà®\9fà¯\81வரவà¯\81à®®à¯\8d (à®\8eலà¯\8dலா பிறிவுகளிலும்).',
+'restoreprefs' => 'à®\8eலà¯\8dலà¯\8bà®°à¯\81à®\95à¯\8dà®\95à¯\81à®®à¯\8d பà¯\8aதà¯\81வான வà®\9fிவமà¯\88பà¯\8dபà¯\88தà¯\8d திரà¯\81à®®à¯\8dபà®\95à¯\8dà®\95à¯\8aணà¯\8dà®\9fà¯\81வரவà¯\81à®®à¯\8d (à®\8eலà¯\8dலா பிரிவுகளிலும்).',
'prefs-editing' => 'தொகுத்தல்',
'rows' => 'நிரைகள் (கிடை வரிசைகள்):',
'columns' => 'நிரல்கள்',
'allmessagesdefault' => 'இயல்பிருப்பு உரை',
'allmessagescurrent' => 'தற்போதைய உரை',
'allmessagestext' => 'இது மீடியாவிக்கி பெயர்வெளியிலுள்ள எல்லா முறைமை தகவல்களினதும் பட்டியலாகும்.
-மொழிபெயர்ப்பில் உதவ விரும்பின் அருள்கூர்ந்து [//translatewiki.net பீட்டாவிக்கி], [//www.mediawiki.org/wiki/Localisation மீடியாவிக்கி மொழியாக்க] தளங்களுக்குச் செல்லவும்.',
+மொழிபெயர்ப்பில் உதவ விரும்பின் அருள்கூர்ந்து [//translatewiki.net பீட்டாவிக்கி], [https://www.mediawiki.org/wiki/Localisation மீடியாவிக்கி மொழியாக்க] தளங்களுக்குச் செல்லவும்.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' முடக்கப்பட்டுள்ளப் படியால் இப்பக்கததை பயன்படுத்த முடியாது.",
'allmessages-filter-legend' => 'வடிகட்டி',
'allmessages-filter' => 'தனிப்பயனாக்கத்தின்படி வடிகட்டு.',
'file-nohires' => 'இதைவிட அளவில் பெரிய படிமம் இல்லை.',
'svg-long-desc' => 'SVG கோப்பு, பெயரளவில் $1 × $2 பிக்சல்கள், கோப்பு அளவு: $3',
'svg-long-error' => 'செல்லாத SVG கோப்பு: $1',
-'show-big-image' => 'à®®à¯\81à®´à¯\81 à®\85ளவிலான பà®\9fிமமà¯\8d',
+'show-big-image' => 'à®®à¯\82லà®\95à¯\8dà®\95à¯\8bபà¯\8dபà¯\81',
'show-big-image-preview' => 'இந்த முன்னோட்டத்தின் அளவு: $1 .',
'show-big-image-other' => 'மற்ற {{PLURAL:$2|பிரிதிறன்|பிரிதிறன்கள்}}: $1 .',
'show-big-image-size' => '$1 × $2 படப்புள்ளிகள்',
# External editor support
'edit-externally' => 'இக்கோப்பை வெளி மென்பொருள் கொண்டு தொகுக்க',
-'edit-externally-help' => 'மேலும் தகவல்களுக்கு [//www.mediawiki.org/wiki/Manual:External_editors அமைப்பு அறிவுறுத்தல்கள்] பக்கத்தைப் பார்க்கவும்.',
+'edit-externally-help' => 'மேலும் தகவல்களுக்கு [https://www.mediawiki.org/wiki/Manual:External_editors அமைப்பு அறிவுறுத்தல்கள்] பக்கத்தைப் பார்க்கவும்.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'அனைத்து',
'version-hook-subscribedby' => 'பயன்பாடு',
'version-version' => '(பதிப்பு $1)',
'version-license' => 'அனுமதி',
-'version-poweredby-credits' => "இந்த் விக்கி '''[//www.mediawiki.org/ MediaWiki]''' இதன் மூலம் வழங்கப்படுகிறது, காப்புரிமை © 2001-$1 $2.",
+'version-poweredby-credits' => "இந்த் விக்கி '''[https://www.mediawiki.org/ MediaWiki]''' இதன் மூலம் வழங்கப்படுகிறது, காப்புரிமை © 2001-$1 $2.",
'version-poweredby-others' => 'பிறர்',
'version-license-info' => 'மீடியாவிக்கியானது இலவச மென்பொருள்.இதை நீங்கள் மற்றவர்களுக்கு கொடுப்பது அல்லது திருத்தம் செய்வது இலவச மென்பொருள் அறக்கட்டளை வழங்கிய GNUவின் பொது உரிம விதிகளுக்குட்பட்டது;உரிமத்தின் இரண்டாவது பதிப்பு அல்லது அதற்கு மேற்பட்ட பதிப்பு (உங்கள் விருப்பத்திற்க்கேற்றவாறு).
மீடியா உபயோகப்படக்கூடியது என்ற நம்பிக்கையில் வெளியிடப்பட்டுள்ளது, ஆனால் இதற்க்கு உத்தரவாதம் கிடையாது.மேலும் வணிகத்தன்மைக்கான அல்லது ஒரு குறிப்பிட்ட செயலுக்காகவும் உத்தரவாதம் கிடையாது.மேலும் விவரங்களுக்கு GNU பொது உரிமத்தை பார்க்கவும்.
# Special:SpecialPages
'specialpages' => 'சிறப்புப் பக்கங்கள்',
-'specialpages-note' => '----
- * சராசரி சிறப்புப் பக்கங்கள்.
+'specialpages-note' => ' * சராசரி சிறப்புப் பக்கங்கள்.
* <span class="mw-specialpagerestricted">வரையறுத்த சிறப்புப் பக்கங்கள்.</span>',
'specialpages-group-maintenance' => 'பராமரிப்பு அறிக்கைகள்',
'specialpages-group-other' => 'ஏனைய சிறப்புப் பக்கங்கள்',
# External editor support
'edit-externally' => 'ಬಾಹ್ಯ(ಪಿದಯಿದ) ತಂತ್ರಾಶೊನು ಉಪಯೋಗ ಮಲ್ತ್’ದ್ ಇಂದೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
-'edit-externally-help' => 'ನನಲ ಮಾಹಿತಿಗ್ [//www.mediawiki.org/wiki/Manual:External_editors ಸೆಟ್-ಅಪ್ ನಿರ್ದೇಶನೊಲೆನ್] ತೂಲೆ.',
+'edit-externally-help' => 'ನನಲ ಮಾಹಿತಿಗ್ [https://www.mediawiki.org/wiki/Manual:External_editors ಸೆಟ್-ಅಪ್ ನಿರ್ದೇಶನೊಲೆನ್] ತೂಲೆ.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ಪೂರ',
'tog-minordefault' => 'ప్రత్యేకంగా తెలుపనంతవరకూ నా మార్పులను చిన్న మార్పులుగా గుర్తించు',
'tog-previewontop' => 'వ్యాసం మార్పుల మునుచూపు సవరించు పెట్టె పైన చూపు',
'tog-previewonfirst' => 'మొదటి దిద్దుబాటు చేసినపుడు వ్యాసపు మునుచూపు చూపించు',
-'tog-nocache' => 'విహారిణిలో పుటల స్థానికనకలును(కాషింగు) అచేతనం',
+'tog-nocache' => 'విహారిణిలో పుటల స్థానికనకలును(కాషింగు) అచేతనం చేయి',
'tog-enotifwatchlistpages' => 'నా వీక్షణాజాబితా లోని పేజీ లేదా దస్త్రం మారినపుడు నాకు ఈ-మెయిలు పంపు',
'tog-enotifusertalkpages' => 'నా చర్చా పేజీలో మార్పులు జరిగినపుడు నాకు ఈ-మెయిలు పంపు',
'tog-enotifminoredits' => 'పేజీలు మరియు దస్త్రాలకు జరిగే చిన్న మార్పులకు కూడా నాకు ఈ-మెయిలును పంపు',
'titleprotected' => "సభ్యులు [[User:$1|$1]] ఈ పేజీని సృష్టించనివ్వకుండా నిరోదిస్తున్నారు.
అందుకు ఇచ్చిన కారణం: ''$2''.",
'exception-nologin' => 'లోనికి ప్రవేశించిలేరు',
-'exception-nologin-text' => 'à°\88 విà°\95à±\80à°²à±\8b à°\88 à°ªà±\87à°\9cà±\80 à°²à±\87దా పనిà°\95à°¿ à°®à±\80à°°à±\81 తపà±\8dపనిసరిà°\97à°¾ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°¿à°µà±\81à°\82డాలి.',
+'exception-nologin-text' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°\9aà±\82డడానిà°\95à°¿ à°²à±\87దా à°\88 à°\9aà°°à±\8dయనà±\81 à°\9aà±\86à°¯à±\8dయడానిà°\95à°¿ దయà°\9aà±\87సి [[Special:Userlogin|à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°\82à°¡à°¿]].',
# Virus scanner
'virus-badscanner' => "తప్పుడు స్వరూపణం: తెలియని వైరస్ స్కానర్: ''$1''",
'yourname' => 'వాడుకరి పేరు:',
'userlogin-yourname' => 'వాడుకరి పేరు',
'userlogin-yourname-ph' => 'మీ వాడుకరి పేరును ఇవ్వండి',
-'createacct-another-username-ph' => 'à°®à±\80 వాడà±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81à°¨à±\81 à°\87à°µà±\8dà°µండి',
+'createacct-another-username-ph' => 'à°®à±\80 వాడà±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81à°¨à±\81 à°ªà±\8dà°°à°µà±\87శపà±\86à°\9fà±\8dà°\9fండి',
'yourpassword' => 'సంకేతపదం:',
'userlogin-yourpassword' => 'సంకేతపదం',
'userlogin-yourpassword-ph' => 'మీ సంకేతపదాన్ని ఇవ్వండి',
* అనుచితమైన వ్యక్తిగత సమాచారం
* "ఇంటి చిరునామాలు, టెలిఫోను నంబర్లు, సోషల్ సెక్యూరిటీ నంబర్లు, వగైరాలు"',
'revdelete-legend' => 'సందర్శక నిబంధనలు అమర్చు',
-'revdelete-hide-text' => 'à°\95à±\82à°°à±\8dà°ªà±\81 పాఠ్యం',
+'revdelete-hide-text' => 'à°ªà±\81à°¨à°\83పరిశà±\80లన పాఠ్యం',
'revdelete-hide-image' => 'ఫైలులోని విషయాన్ని దాచు',
'revdelete-hide-name' => 'చర్యను, లక్ష్యాన్నీ దాచు',
'revdelete-hide-comment' => 'దిద్దుబాటు వ్యాఖ్యను దాచు',
'mypreferences' => 'అభిరుచులు',
'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
'prefsnologin' => 'లాగిన్ అయిలేరు',
-'prefsnologintext' => 'వాడుకరి అభిరుచులను మార్చుకోడానికి, మీరు <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} లోనికి ప్రవేశించి]</span> ఉండాలి.',
'changepassword' => 'సంకేతపదాన్ని మార్చండి',
'prefs-skin' => 'అలంకారం',
'skin-preview' => 'మునుజూపు/సరిచూడు',
'allmessagesdefault' => 'అప్రమేయ సందేశపు పాఠ్యం',
'allmessagescurrent' => 'ప్రస్తుత పాఠ్యం',
'allmessagestext' => 'మీడియావికీ పేరుబరిలో ఉన్న అంతరవర్తి సందేశాల జాబితా ఇది.
-సాధారణ మీడియావికీ స్థానికీకరణకి మీరు తోడ్పడాలనుకుంటే, దయచేసి [//www.mediawiki.org/wiki/Localisation మీడియావికీ స్థానికీకరణ] మరియు [//translatewiki.net ట్రాన్స్‌లేట్‌వికీ.నెట్] సైట్లను చూడండి.',
+సాధారణ మీడియావికీ స్థానికీకరణకి మీరు తోడ్పడాలనుకుంటే, దయచేసి [https://www.mediawiki.org/wiki/Localisation మీడియావికీ స్థానికీకరణ] మరియు [//translatewiki.net ట్రాన్స్‌లేట్‌వికీ.నెట్] సైట్లను చూడండి.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' అన్నది అచేతనం చేసి ఉన్నందువల్ల ఈ పేజీని వాడలేరు.",
'allmessages-filter-legend' => 'వడపోత',
'allmessages-filter' => 'కస్టమైజేషను స్థితిని బట్టి వడకట్టు:',
# External editor support
'edit-externally' => 'బయటి అప్లికేషను వాడి ఈ ఫైలును మార్చు',
-'edit-externally-help' => '(మరింత సమాచారం కొరకు [//www.mediawiki.org/wiki/Manual:External_editors సెటప్ సూచనల]ని చూడండి)',
+'edit-externally-help' => '(మరింత సమాచారం కొరకు [https://www.mediawiki.org/wiki/Manual:External_editors సెటప్ సూచనల]ని చూడండి)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'అన్నీ',
'version-hook-subscribedby' => 'ఉపయోగిస్తున్నవి',
'version-version' => '(సంచిక $1)',
'version-license' => 'లైసెన్సు',
-'version-poweredby-credits' => "ఈ వికీ '''[//www.mediawiki.org/ మీడియావికీ]'''చే శక్తిమంతం, కాపీహక్కులు © 2001-$1 $2.",
+'version-poweredby-credits' => "ఈ వికీ '''[https://www.mediawiki.org/ మీడియావికీ]'''చే శక్తిమంతం, కాపీహక్కులు © 2001-$1 $2.",
'version-poweredby-others' => 'ఇతరులు',
'version-license-info' => 'మీడియావికీ అన్నది స్వేచ్ఛా మృదూపకరణం; మీరు దీన్ని పునఃపంపిణీ చేయవచ్చు మరియు/లేదా ఫ్రీ సాఫ్ట్‌వేర్ ఫౌండేషన్ ప్రచురించిన గ్నూ జనరల్ పబ్లిక్ లైసెస్సు వెర్షను 2 లేదా (మీ ఎంపిక ప్రకారం) అంతకంటే కొత్త వెర్షను యొక్క నియమాలకు లోబడి మార్చుకోవచ్చు.
# Special:SpecialPages
'specialpages' => 'ప్రత్యేక పేజీలు',
-'specialpages-note' => '----
-* మామూలు ప్రత్యేక పుటలు.
+'specialpages-note' => '* మామూలు ప్రత్యేక పుటలు.
* <strong class="mw-specialpagerestricted">నియంత్రిత ప్రత్యేక పుటలు.</strong>
* <span class="mw-specialpagecached">Cached ప్రత్యేక పుటలు (పాతబడి ఉండొచ్చు).</span>',
'specialpages-group-maintenance' => 'నిర్వహణా నివేదికలు',
'exif-urgency-high' => 'Aas ($1)',
# External editor support
-'edit-externally-help' => "(Haree [//www.mediawiki.org/wiki/Manual:External_editors iha ne'e] ba informasaun barak liu)",
+'edit-externally-help' => "(Haree [https://www.mediawiki.org/wiki/Manual:External_editors iha ne'e] ba informasaun barak liu)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'hotu',
'mypreferences' => 'Танзимот',
'prefs-edits' => 'Шумораи вироишҳо:',
'prefsnologin' => 'Ба систем ворид нашудаед',
-'prefsnologintext' => 'Барои танзими тарҷиҳоти корбарӣ бояд [[Special:UserLogin|вуруд ба систем шавед]].',
'changepassword' => 'Иваз намудани калимаи убур',
'prefs-skin' => 'Пӯст',
'skin-preview' => 'Пешнамоиш',
'allmessagesdefault' => 'Матни қарордодӣ',
'allmessagescurrent' => 'Матни кунунӣ',
'allmessagestext' => 'Ин феҳристи паёмҳои системавии дастрас дар фазои номи MediaWiki мебошад.
-Агар майли ҳиссагузорӣ карданро ба маҳалликунонии MediaWiki доред, пас лутан саҳифаҳои [//www.mediawiki.org/wiki/Localisation Маҳалликунонии MediaWiki] ва [//translatewiki.net translatewiki.net] нигаред.',
+Агар майли ҳиссагузорӣ карданро ба маҳалликунонии MediaWiki доред, пас лутан саҳифаҳои [https://www.mediawiki.org/wiki/Localisation Маҳалликунонии MediaWiki] ва [//translatewiki.net translatewiki.net] нигаред.',
'allmessagesnotsupportedDB' => "Аз ин саҳифа наметавон истифода бурд, чун '''\$wgUseDatabaseMessages''' ғайрифаъол гардонида шудааст.",
'allmessages-filter-legend' => 'Филтр',
'allmessages-filter-all' => 'Ҳама',
# External editor support
'edit-externally' => 'Ин файлро бо барномаи беруна таҳрир кунед',
-'edit-externally-help' => '(Барои иттилооти бештар [//www.mediawiki.org/wiki/Manual:External_editors роҳнамои танзимотро оиди вироишгарони беруна] нигаред)',
+'edit-externally-help' => '(Барои иттилооти бештар [https://www.mediawiki.org/wiki/Manual:External_editors роҳнамои танзимотро оиди вироишгарони беруна] нигаред)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ҳама',
'allmessagesdefault' => 'Matni qarordodī',
'allmessagescurrent' => 'Matni kununī',
'allmessagestext' => 'In fehristi pajomhoi sistemaviji dastras dar fazoi nomi MediaWiki meboşad.
-Agar majli hissaguzorī kardanro ba mahallikunoniji MediaWiki dored, pas lutan sahifahoi [//www.mediawiki.org/wiki/Localisation Mahallikunoniji MediaWiki] va [//translatewiki.net translatewiki.net] nigared.',
+Agar majli hissaguzorī kardanro ba mahallikunoniji MediaWiki dored, pas lutan sahifahoi [https://www.mediawiki.org/wiki/Localisation Mahallikunoniji MediaWiki] va [//translatewiki.net translatewiki.net] nigared.',
'allmessagesnotsupportedDB' => "Az in sahifa nametavon istifoda burd, cun '''\$wgUseDatabaseMessages''' ƣajrifa'ol gardonida şudaast.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter-all' => 'Hama',
# External editor support
'edit-externally' => 'In fajlro bo barnomai beruna tahrir kuned',
-'edit-externally-help' => '(Baroi ittilooti beştar [//www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroişgaroni beruna] nigared)',
+'edit-externally-help' => '(Baroi ittilooti beştar [https://www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroişgaroni beruna] nigared)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'hama',
'mypreferences' => 'การตั้งค่า',
'prefs-edits' => 'จำนวนการแก้ไข:',
'prefsnologin' => 'ไม่ได้ล็อกอิน',
-'prefsnologintext' => 'คุณต้อง<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ล็อกอิน]</span>ก่อนเพื่อตั้งค่าส่วนตัว',
'changepassword' => 'เปลี่ยนรหัสผ่าน',
'prefs-skin' => 'หน้าตา',
'skin-preview' => 'แสดงตัวอย่าง',
'allmessagesdefault' => 'ข้อความตามค่าตั้งต้น',
'allmessagescurrent' => 'ข้อความปัจจุบัน',
'allmessagestext' => 'นี่คือรายการข้อความของระบบที่อยู่ในเนมสเปซมีเดียวิกิ
-กรุณาอ่านหน้า[//www.mediawiki.org/wiki/Localisation เทศวิวัตน์ของมีเดียวิกิ] และ [//translatewiki.net translatewiki.net] ถ้าคุณอยากที่จะช่วยแปลข้อความของระบบมีเดียวิกิ',
+กรุณาอ่านหน้า[https://www.mediawiki.org/wiki/Localisation เทศวิวัตน์ของมีเดียวิกิ] และ [//translatewiki.net translatewiki.net] ถ้าคุณอยากที่จะช่วยแปลข้อความของระบบมีเดียวิกิ',
'allmessagesnotsupportedDB' => "หน้านี้ไม่สามารถใช้งานได้เนื่องจาก '''\$wgUseDatabaseMessages''' ถูกระงับการใช้งาน",
'allmessages-filter-legend' => 'กรอง',
'allmessages-filter' => 'กรองตามสถานะที่เลือก:',
# External editor support
'edit-externally' => 'แก้ไขไฟล์นี้โดยใช้ซอฟต์แวร์ตัวอื่น',
-'edit-externally-help' => '(ดู[//www.mediawiki.org/wiki/Manual:External_editors วิธีการตั้งค่า]สำหรับข้อมูลเพิ่มเติม)',
+'edit-externally-help' => '(ดู[https://www.mediawiki.org/wiki/Manual:External_editors วิธีการตั้งค่า]สำหรับข้อมูลเพิ่มเติม)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ทั้งหมด',
'version-hook-subscribedby' => 'สนับสนุนโดย',
'version-version' => '(รุ่น $1)',
'version-license' => 'สัญญาอนุญาต',
-'version-poweredby-credits' => "วิกินี้จัดทำโดย '''[//www.mediawiki.org/ MediaWiki]''', สงวนลิขสิทธิ์ © 2001-$1 โดย $2",
+'version-poweredby-credits' => "วิกินี้จัดทำโดย '''[https://www.mediawiki.org/ MediaWiki]''', สงวนลิขสิทธิ์ © 2001-$1 โดย $2",
'version-poweredby-others' => 'ผู้อื่น',
'version-poweredby-translators' => 'ผู้แปล translatewiki.net',
'version-license-info' => 'มีเดียวิกิเป็นซอฟต์แวร์เสรี คุณสามารถแจกจ่าย และ/หรือ แก้ไขได้ภายใต้เงื่อนไขแห่งสัญญาอนุญาตสาธารณะทั่วไปของกนูตามที่เผยแพร่โดยมูลนิธิซอฟต์แวร์เสรี ไม่ว่ารุ่นที่ 2 แห่งสัญญาอนุญาต หรือรุ่นภายหลังอื่นใด (ตามที่คุณเลือก)
# Special:SpecialPages
'specialpages' => 'หน้าพิเศษ',
-'specialpages-note' => '----
-* หน้าพิเศษปกติ
+'specialpages-note' => '* หน้าพิเศษปกติ
* <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
'specialpages-group-other' => 'หน้าพิเศษอื่น ๆ',
'mypreferences' => 'Ileri tutmalar',
'prefs-edits' => 'Özgerdiş sany:',
'prefsnologin' => 'Sessiýa açmansyňyz',
-'prefsnologintext' => 'Ulanyjy ileri tutmalaryny üýtgetmek üçin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sessiýa açmagyňyz gerek]</span>.',
'changepassword' => 'Paroly üýtget',
'prefs-skin' => 'Bezeg',
'skin-preview' => 'Deslapky syn',
'allmessagesdefault' => 'Gaýybana habarlaşyk teksti',
'allmessagescurrent' => 'Häzirki habarlaşyk teksti',
'allmessagestext' => 'Bu sanaw MediaWiki at giňişliginde bar bolan ulgam habarlaşyklarynyň sanawydyr.
-Umumy MediaWiki lokalizasiýasyna goşan goşmak isleýän bolsaňyz, [//www.mediawiki.org/wiki/Localisation MediaWiki lokalizasiýasy] we [//translatewiki.net translatewiki.net] sahypalaryna baryp görmegiňizi haýyş edýäris.',
+Umumy MediaWiki lokalizasiýasyna goşan goşmak isleýän bolsaňyz, [https://www.mediawiki.org/wiki/Localisation MediaWiki lokalizasiýasy] we [//translatewiki.net translatewiki.net] sahypalaryna baryp görmegiňizi haýyş edýäris.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ýapykdygy zerarly bu sahypany ulanyp bolmaýar.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Üýtgediş statusy boýunça filtr:',
# External editor support
'edit-externally' => 'Bu faýly daşarky programmalary ulanyp redaktirläň',
-'edit-externally-help' => '(Has köp maglumat üçin metadaky [//www.mediawiki.org/wiki/Manual:External_editors gurmak boýunça gollanma] sahypasyna göz aýlaň)',
+'edit-externally-help' => '(Has köp maglumat üçin metadaky [https://www.mediawiki.org/wiki/Manual:External_editors gurmak boýunça gollanma] sahypasyna göz aýlaň)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Ählisini görkez',
'version-hook-subscribedby' => 'Abuna ýazylan',
'version-version' => '(Wersiýa $1)',
'version-license' => 'Ygtyýarnama',
-'version-poweredby-credits' => "Bu wiki '''[//www.mediawiki.org/ MediaWiki]''' arkaly üpjün edilýär, awtorlyk hukugy © 2001-$1 $2.",
+'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' arkaly üpjün edilýär, awtorlyk hukugy © 2001-$1 $2.",
'version-poweredby-others' => 'beýlekiler',
'version-license-info' => 'MediaWiki erkin programmadyr; MediaWiki-ni Erkin programma fondy tarapyndan çazp edilen GNU General Public License lisenziýasynyň ikini wersiýasynyň ýa-da (islegiňize görä) has täzeki bir wersiýasynyň şertlerine laýyklykda täzeden paýlap we/ýa-da üýtgedip bilersiňiz.
# Special:SpecialPages
'specialpages' => 'Ýörite sahypalar',
-'specialpages-note' => '----
-* Adaty ýörite sahypalar.
+'specialpages-note' => '* Adaty ýörite sahypalar.
* <strong class="mw-specialpagerestricted">Çäklendirilen ýörite sahypalar.</strong>',
'specialpages-group-maintenance' => 'Tehniki abatlaýyş hasabatlary',
'specialpages-group-other' => 'Başga ýörite sahypalar',
* @author Felipe Aira
* @author Jojit fb
* @author Kaganer
+ * @author Namayan
* @author Sky Harbor
* @author tl.wikipedia.org sysops
* @author לערי ריינהארט
'mypreferences' => 'Mga nais',
'prefs-edits' => 'Bilang ng mga pagbabago:',
'prefsnologin' => 'Hindi nakalagda/nakatala',
-'prefsnologintext' => 'Kailangan mong <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} lumagda/tumala]</span> para makapagtakda ng mga kagustuhang ng tagagamit.',
'changepassword' => 'Baguhin ang hudyat',
'prefs-skin' => 'Pabalat',
'skin-preview' => 'Unang tingin',
'booksources-search-legend' => 'Maghanap ng mapagkukunang aklat',
'booksources-isbn' => 'ISBN:',
'booksources-go' => 'Puntahan',
-'booksources-text' => 'Matatagpuan sa ibaba ang isang tala ng mga kawing patungo sa ibang mga websayt na nanininda ng mga bago at gamit na aklat, at maaaring may iba pang impormasyon ito tungkol sa mga aklat na hinahanap mo:',
+'booksources-text' => 'Matatagpuan sa ibaba ang isang tala ng mga kawil patungo sa ibang mga website na nagtitinda ng mga bago at gamit nang aklat, at maaaring may iba pang impormasyon ito tungkol sa mga aklat na hinahanap mo:',
'booksources-invalid-isbn' => 'Tila mukhang hindi yata katanggap-tanggap ang ibinigay na ISBN; pakisuri kung may mga kamalian ang pagkakasip/pagkakakopya mula sa orihinal na pinagmulan.',
# Special:Log
'excontentauthor' => "ang nilalaman ay: '$1' (at ang tanging nag-ambag ay si '[[Special:Contributions/$2|$2]]')",
'exbeforeblank' => "nilalaman bago nablangko: '$1'",
'exblank' => 'walang laman ang pahina',
-'delete-confirm' => 'Burahin ang "$1"',
+'delete-confirm' => 'Kaltasin ang "$1"',
'delete-legend' => 'Burahin',
'historywarning' => "'''Babala''': May kasaysayan ang pahinang buburahin mo na tinatayang may $1 {{PLURAL:$1|pagbabago|mga pagbabago}}:",
'confirmdeletetext' => 'Lubos mo nang buburahin ang pahinang ito pati ang kalahatan ng kasaysayan nito.
'proxyblockreason' => 'Hinarang ang IP address mo dahil bukas na proxy ito. Makipag-ugnayan sa iyong tagabigay ng serbisyong Internet o suportang teknikal at ipaalam sa kanila itong seryesong suliranin sa seguridad.',
'sorbs' => 'DNSBL',
'sorbsreason' => 'Nakalista ang IP address mo bilang isang bukas na proxy sa DNSBL na ginagamit ng sayt na ito.',
-'sorbs_create_account_reason' => 'Nakalista ang IP address mo bilang isang bukas na proxy sa DNSBL na ginagamit ng sayt na ito. Hindi ka makakalikha ng akawnt',
+'sorbs_create_account_reason' => 'Nakatala ang iyong IP address bilang open proxy sa DNSBL na ginagamit ng {{SITENAME}}.
+Hindi ka makakalikha ng account',
'cant-block-while-blocked' => 'Hindi mo mahahadlangan/mahaharang ang ibang mga tagagamit habang hinahadlangan ka.',
'cant-see-hidden-user' => 'Ang tagagamit na sinusubukan mong hadlangan ay naharang at naikubli na.
Dahil wala kang karapatang magkubli ng tagagamit, hindi mo makikita o mababago ang paghadlang sa tagagamit.',
'allmessagesname' => 'Pangalan',
'allmessagesdefault' => 'Tinakdang teksto',
'allmessagescurrent' => 'Kasalukuyang teksto',
-'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa espasyo ng pangalang MediaWiki.
-Pakidalaw ang [//www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at [//translatewiki.net translatewiki.net] kung ibig mong magambag sa heneriko o pangkalahatang lokalisasyon ng MediaWiki.',
+'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa namespace ng MediaWiki.
+Pakidalaw ang [https://www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at [//translatewiki.net translatewiki.net] kung ibig mong magambag sa heneriko o pangkalahatang lokalisasyon ng MediaWiki.',
'allmessagesnotsupportedDB' => "Hindi magagamit ang '''{{ns:special}}:AllMessages''' dahil hindi gumagana ang '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Salain',
'allmessages-filter' => 'Salain ayon sa katayuan ng pagbabagay:',
'version-version' => '(Bersyon $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Lisensiya',
-'version-poweredby-credits' => "Ang wiking ito ay pinapatakbo ng '''[//www.mediawiki.org/ MediaWiki]''', karapatang-ari © 2001-$1 $2.",
+'version-poweredby-credits' => "Ang wiking ito ay pinapatakbo ng '''[https://www.mediawiki.org/ MediaWiki]''', karapatang-ari © 2001-$1 $2.",
'version-poweredby-others' => 'iba pa',
'version-license-info' => 'Ang MediaWiki ay isang malayang sopwer; maaari mo itong ipamahagi at/o baguhin ito sa ilalim ng mga patakaran ng Pangkalahatang Pangmadlang Lisensiyang GNU ayon sa pagkakalathala ng Pundasyon ng Malayang Sopwer; na maaaring bersyong 2 ng Lisensiya, o (kung nais mo) anumang susunod na bersyon.
Ang MediaWiki ay ipinamamahagi na umaasang magiging gamitin, subaliut WALANG ANUMANG KATIYAKAN; ni walang pahiwatig ng PAGIGING MABENTA o KAANGKUPAN PARA ISANG TIYAK NA LAYUNIN. Tingnan ang Pangkalahatang Pangmadlang Lisensiyang GNU para sa mas marami pang mga detalye.
# Special:SpecialPages
'specialpages' => 'Mga natatanging pahina',
-'specialpages-note' => '----
-* Normal na natatanging mga pahina.
+'specialpages-note' => '* Normal na natatanging mga pahina.
* <span class="mw-specialpagerestricted">Pinaghihigpitang natatanging mga pahina.</span>',
'specialpages-group-maintenance' => 'Mga pagpapanatiling ulat',
'specialpages-group-other' => 'Iba pang natatanging mga pahina',
'preferences' => 'Кукон',
'mypreferences' => 'Кукон',
'prefsnologin' => 'Ыштәни едаштәнијоне',
-'prefsnologintext' => 'Шымә бәбе <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ыштәни едәштән]</span> бо иштирокәкә пеғәндон дәгиш кардеј.',
'changepassword' => 'Пароли дәгиш кардеј',
'skin-preview' => 'Сыфтәнә нишо дој',
'prefs-user-pages' => 'Иштирокәкә сәһифон',
# External editor support
'edit-externally' => 'Редактә кардеј ым фајли де заһири програм',
-'edit-externally-help' => '(Bo mıffəssələ məlumoton bə [//www.mediawiki.org/wiki/Manual:External_editors dərsəvon bo soxtəy] diyə bıkən)',
+'edit-externally-help' => '(Bo mıffəssələ məlumoton bə [https://www.mediawiki.org/wiki/Manual:External_editors dərsəvon bo soxtəy] diyə bıkən)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'һәммәј',
# External editor support
'edit-externally' => 'Fatuʻi ʻa e failé ni ngāueʻaki mo e polokalama ʻi tuʻa',
-'edit-externally-help' => 'Vakai ki he [//www.mediawiki.org/wiki/Manual:External_editors fakahinohino ki he fokotuʻu] maʻa toe fakamatala.',
+'edit-externally-help' => 'Vakai ki he [https://www.mediawiki.org/wiki/Manual:External_editors fakahinohino ki he fokotuʻu] maʻa toe fakamatala.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kātoa',
'mypreferences' => 'Tercihler',
'prefs-edits' => 'Değişiklik sayısı:',
'prefsnologin' => 'Oturum açık değil',
-'prefsnologintext' => 'Kullanıcı tercihlerinizi ayarlamak için <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} giriş yapmalısınız]</span>.',
'changepassword' => 'Parolayı değiştir',
'prefs-skin' => 'Görünüm',
'skin-preview' => 'Önizleme',
'allmessagesdefault' => 'Varsayılan mesaj metni',
'allmessagescurrent' => 'Kullanımdaki metin',
'allmessagestext' => 'Bu liste MediaWiki ad alanında mevcut olan sistem mesajlarının listesidir.
-Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [//www.mediawiki.org/wiki/Localisation MediaWiki Yerelleştirmesi] ve [//translatewiki.net translatewiki.net] sayfalarını ziyaret edin.',
+Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [https://www.mediawiki.org/wiki/Localisation MediaWiki Yerelleştirmesi] ve [//translatewiki.net translatewiki.net] sayfalarını ziyaret edin.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' kapalı olduğu için '''{{ns:special}}:Allmessages''' kullanıma açık değil.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => 'Özelleştirme durumuna göre filtrele:',
# External editor support
'edit-externally' => 'Dosyayı harici bir uygulamayla değiştirin.',
-'edit-externally-help' => '(Daha fazla bilgi için metadaki [//www.mediawiki.org/wiki/Manual:External_editors dış uygulama ayarları] (İngilizce) sayfasına bakabilirsiniz)',
+'edit-externally-help' => '(Daha fazla bilgi için metadaki [https://www.mediawiki.org/wiki/Manual:External_editors dış uygulama ayarları] (İngilizce) sayfasına bakabilirsiniz)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Hepsini göster',
'version-hook-subscribedby' => 'Abone olan',
'version-version' => '(Sürüm $1)',
'version-license' => 'Lisans',
-'version-poweredby-credits' => "Bu wiki '''[//www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
+'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
'version-poweredby-others' => 'diğerleri',
'version-license-info' => "MediaWiki özgür bir yazılımdır; MediaWiki'yi, Özgür Yazılım Vakfı tarafından yayımlanmış olan GNU Genel Kamu Lisansının 2. veya (seçeceğiniz) daha sonraki bir sürümünün koşulları altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.
# Special:SpecialPages
'specialpages' => 'Özel sayfalar',
-'specialpages-note' => '----
-* Normal özel sayfalar.
+'specialpages-note' => '* Normal özel sayfalar.
* <span class="mw-specialpagerestricted">Kısıtlı özel sayfalar.</span>
* <span class="mw-specialpagecached">Önbelleğe alınan özel sayfalar (eskimiş olabilir)</span>',
'specialpages-group-maintenance' => 'Bakım raporları',
# External editor support
'edit-externally' => 'Edit this file using an external application',
-'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
+'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kulle',
# External editor support
'edit-externally' => 'Lulamisa fayili leyi utirhisa xilulamisi xale handle ka wiki leyi',
-'edit-externally-help' => '(Vona [//www.mediawiki.org/wiki/Manual:External_editors swiletelo swo sungurisa] leswaku ukuma vuxokoxoko lebyi engetelekeke)',
+'edit-externally-help' => '(Vona [https://www.mediawiki.org/wiki/Manual:External_editors swiletelo swo sungurisa] leswaku ukuma vuxokoxoko lebyi engetelekeke)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Hinkwawo',
'mypreferences' => 'Көйләнмәләр',
'prefs-edits' => 'Үзгәртүләр исәбе:',
'prefsnologin' => 'Кермәгәнсез',
-'prefsnologintext' => 'Кулланучы көйләнмәләрене үзгәртү өчен, сез <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} керергә]</span> тиешсез.',
'changepassword' => 'Серсүзне үзгәртү',
'prefs-skin' => 'Күренеш',
'skin-preview' => 'Алдан карау',
'allmessagesname' => 'Исем',
'allmessagesdefault' => 'Баштан ук куелган текс',
'allmessagestext' => 'Бу исемлек MediaWiki исемнәр мәйданында булган система хәбәрләренең исемлеге.
-Гомуми MediaWiki локализациясендә катнашырга теләсәгез, зинһар [//www.mediawiki.org/wiki/Localisation MediaWiki Локализациясе] һәм [//translatewiki.net translatewiki.net] сәхифәләрне кулланыгыз.',
+Гомуми MediaWiki локализациясендә катнашырга теләсәгез, зинһар [https://www.mediawiki.org/wiki/Localisation MediaWiki Локализациясе] һәм [//translatewiki.net translatewiki.net] сәхифәләрне кулланыгыз.',
'allmessages-filter-legend' => 'Фильтр',
'allmessages-filter-unmodified' => 'Үзгәртелмәгән',
'allmessages-filter-all' => 'Барысы',
# External editor support
'edit-externally' => 'Бу файлны тышкы кушымтаны кулланып үзгәртү',
-'edit-externally-help' => '(тулырак мәгълүмат өчен [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] битен карагыз)',
+'edit-externally-help' => '(тулырак мәгълүмат өчен [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] битен карагыз)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'барлык',
# Special:SpecialPages
'specialpages' => 'Махсус битләр',
-'specialpages-note' => '----
-* Гади махсус битләр.
+'specialpages-note' => '* Гади махсус битләр.
* <strong class="mw-specialpagerestricted">Чикләнелгән махсус битләр.</strong>
* <span class="mw-specialpagecached">Кешланган махсус битләр.</span>',
'specialpages-group-maintenance' => 'Техник карау хисапнамәсе',
'mypreferences' => 'Köylänmälärem',
'prefs-edits' => 'Üzgärtülär isäbe:',
'prefsnologin' => 'Kermägänsez',
-'prefsnologintext' => 'Qullanuçı köylänmälärene üzgärtü öçen, sez <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kerergä]</span> tieşsez.',
'changepassword' => 'Sersüzne üzgärtü',
'prefs-skin' => 'Küreneş',
'skin-preview' => 'Aldan qaraw',
'allmessagesdefault' => 'Töpcay yazma',
'allmessagescurrent' => 'Eligi yazma',
'allmessagestext' => 'Bu isemlek MediaWiki isemnär mäydanında bulğan sistema xäbärläreneñ isemlege.
-Ğomumi MediaWiki lokalizatsiäsendä qatnaşırğa teläsägez, zinhar [//www.mediawiki.org/wiki/Localisation MediaWiki Lokalizatsiäse] häm [//translatewiki.net translatewiki.net] säxifälärne qullanığız.',
+Ğomumi MediaWiki lokalizatsiäsendä qatnaşırğa teläsägez, zinhar [https://www.mediawiki.org/wiki/Localisation MediaWiki Lokalizatsiäse] häm [//translatewiki.net translatewiki.net] säxifälärne qullanığız.',
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter-unmodified' => 'Üzgärtelmägän',
'allmessages-filter-all' => 'Barısı',
# External editor support
'edit-externally' => 'Bu faylnı tışqı quşımtanı qullanıp üzgärtü',
-'edit-externally-help' => '(tulıraq mäğlümat öçen [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] biten qarağız)',
+'edit-externally-help' => '(tulıraq mäğlümat öçen [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] biten qarağız)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'barlıq',
# Special:SpecialPages
'specialpages' => 'Maxsus bitlär',
-'specialpages-note' => '----
-* Ğädi maxsus bitlär.
+'specialpages-note' => '* Ğädi maxsus bitlär.
* <strong class="mw-specialpagerestricted">Çiklänelgän ğädi maxsus bitlär</strong>',
'specialpages-group-maintenance' => 'Texnik qaraw xisapnamäse',
'specialpages-group-other' => 'Başqa maxsus bitlär',
'tog-watchlisthidebots' => 'Хайгаарал даңзызындан роботтарның эдиглерин чажыр',
'tog-watchlisthideminor' => 'Хайгаарал даңзызындан бичии эдиглерни чажыр',
'tog-watchlisthidepatrolled' => 'Хайгаарал даңзындан истээн өскерлиишкиннерны чажырары',
-'tog-showhiddencats' => 'ЧажÑ\8bÑ\82 бөлүкÑ\82еÑ\80ни көÑ\80гүзеÑ\80и',
+'tog-showhiddencats' => 'ЧажÑ\8bÑ\82 аңгÑ\8bлалдаÑ\80нÑ\8b көÑ\80гүзеÑ\80',
'underline-always' => 'Кезээде',
'underline-never' => 'Кажан-даа',
'nextn' => 'дараазында {{PLURAL:$1|$1}}',
'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
-'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнелди|түңнелди}} көргүзери',
+'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнел}} көргүзер',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
'searchmenu-new' => "'''Бо викиде «[[:$1]]» арынны чогаадыры'''",
'rcnotefrom' => 'Адаанда <strong>$2</strong> тура (<strong>$1</strong> чедир) өскертилгелерни санаан.',
'rclistfrom' => '$1 тура чаа өскерилгелерни көргүзер',
'rcshowhideminor' => 'Бичии өскерлиишкиннерни $1',
-'rcshowhidebots' => 'РобоÑ\82Ñ\82аÑ\80нÑ\83 $1',
-'rcshowhideliu' => 'Ð\9aиÑ\80еÑ\80 ажÑ\8bглакÑ\87Ñ\8bлаÑ\80нÑ\8b $1',
-'rcshowhideanons' => 'Ат эвес ажыглакчыларны $1',
+'rcshowhidebots' => 'РобоÑ\82Ñ\82аÑ\80нÑ\8b $1',
+'rcshowhideliu' => 'Ð\9aиÑ\80ген киÑ\80жикÑ\87илеÑ\80ни $1',
+'rcshowhideanons' => 'Ады чок ажыглакчыларны $1',
'rcshowhidepatr' => 'истээн өскерлиишкиннерни $1',
-'rcshowhidemine' => 'Ð\9cÑ\8dÑ\8dÒ£ Ó©Ñ\81кеÑ\80лииÑ\88кинимни $1',
-'rclinks' => '$2 хүнде эрткен $1 өскерлиишкиннерни көргүзери<br />$3',
+'rcshowhidemine' => 'ÐдиглеÑ\80имни $1',
+'rclinks' => 'Сөөлгү $2 хүн иштинде болган $1 өскерлиишкиннерни көргүзер<br />$3',
'diff' => 'ылгал',
'hist' => 'төөгү',
-'hide' => 'чажырары',
-'show' => 'көÑ\80гүзеÑ\80и',
+'hide' => 'Чажырар',
+'show' => 'Ð\9aÓ©Ñ\80гүзеÑ\80',
'minoreditletter' => 'б',
'newpageletter' => 'Ч',
'boteditletter' => 'р',
'brokenredirects-delete' => 'ырадыры',
'withoutinterwiki' => 'Дыл холбаалар эвес арыннар',
-'withoutinterwiki-submit' => 'Көргүзери',
+'withoutinterwiki-submit' => 'Көргүзер',
'fewestrevisions' => 'Эң эвээш үндүрери арыннар',
'unwatching' => 'Хайгааравайн турар...',
'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} ажыглакчызы',
-'enotif_anon_editor' => 'аÑ\82 Ñ\8dвеÑ\81 ажÑ\8bглакÑ\87Ñ\8b $1',
+'enotif_anon_editor' => 'аÑ\82 Ñ\87ок киÑ\80жикÑ\87и $1',
'changed' => 'өскертти',
# Delete
'contribslink' => 'салыышкыннар',
'blocklogpage' => 'Кызыгаарлаашкынның журналы',
'blocklogentry' => ', [[$1]] $2 дургузунда кызыгаарлаттынган: $3',
-'block-log-flags-anononly' => 'чүгле ат эвес ажыглакчылар',
+'block-log-flags-anononly' => 'чүгле адыжок киржикчилер',
'block-log-flags-nocreate' => 'Кижилер бүрүткээри хоруглуг',
'block-log-flags-hiddenname' => 'ажыглакчының ады чажырган',
'tooltip-summary' => 'Кысказы-биле бижиңер',
# Attribution
-'anonymous' => '{{grammar:genitive|{{SITENAME}}}} ат эвес {{PLURAL:$1|ажыглакчызы|ажыглакчылары}}',
+'anonymous' => '{{grammar:genitive|{{SITENAME}}}} адыжок {{PLURAL:$1|киржикчизи}}',
# Skin names
'skinname-cologneblue' => 'Cologne Blue',
# External editor support
'edit-externally' => 'Бо файлды даштыкы капсырылга-биле эдер',
-'edit-externally-help' => '(Улаштыр тодарадырда бо [//www.mediawiki.org/wiki/Manual:External_editors кыстып алыр саавырны] көрүңер)',
+'edit-externally-help' => '(Улаштыр тодарадырда бо [https://www.mediawiki.org/wiki/Manual:External_editors кыстып алыр саавырны] көрүңер)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'шупту',
'mypreferences' => 'مايىللىق',
'prefs-edits' => 'تەھرىر سانى:',
'prefsnologin' => 'تىزىمغا كىرمىدى',
-'prefsnologintext' => 'سىز ئالدى بىلەن <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} تىزىمغا كىر]</span>سىڭىز ئاندىن ئىشلەتكۈچى مايىللىقنى تەڭشىيەلەيسىز.',
'changepassword' => 'پارولنى ئۆزگەرتىش',
'prefs-skin' => 'تېرە',
'skin-preview' => 'ئالدىن كۆزەت',
'allmessagesdefault' => 'كۆڭۈلدىكى ئۇچۇر تېكستى',
'allmessagescurrent' => 'نۆۋەتتىكى ئۇچۇر تېكستى',
'allmessagestext' => 'بۇ جايدا تەڭشىگىلى بولىدىغان ھەممە سىستېما كۆرۈنۈش ئۇچۇرلىرى كۆرسىتىلدى.
-ئەگەر ھەقىقىي يەرلەشتۈرۈلگەن MediaWiki غا تۆھپە قوشماقچى بولسىڭىز[//www.mediawiki.org/wiki/Localisation MediaWiki يەرلىكلەشتۈرۈش] ۋە [//translatewiki.net translatewiki.net] نى زىيارەت قىلىڭ.',
+ئەگەر ھەقىقىي يەرلەشتۈرۈلگەن MediaWiki غا تۆھپە قوشماقچى بولسىڭىز[https://www.mediawiki.org/wiki/Localisation MediaWiki يەرلىكلەشتۈرۈش] ۋە [//translatewiki.net translatewiki.net] نى زىيارەت قىلىڭ.',
'allmessagesnotsupportedDB' => "بۇ بەتنى ئىشلەتكىلى بولمايدۇ، سەۋەبى '''\$wgUseDatabaseMessages''' چەكلەنگەن.",
'allmessages-filter-legend' => 'سۈزگۈچ',
'allmessages-filter' => 'ئىختىيارىچە سۈزگۈچ ھالىتى:',
# External editor support
'edit-externally' => 'بۇ ھۆججەتنى سىرتقى قوللىنىشچان پروگراممىدا تەھرىرلە',
-'edit-externally-help' => '( [//www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
+'edit-externally-help' => '( [https://www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ھەممىسى',
'version-hook-subscribedby' => 'ئىمزا قويغۇچى',
'version-version' => '(نەشرى $1)',
'version-license' => 'ئىجازەتنامە',
-'version-poweredby-credits' => "بۇ ۋىكىنى '''[//www.mediawiki.org/ MediaWiki]''' تېخنىكىلىق قوللايدۇ، نەشر ھوقۇقى © 2001-$1 $2",
+'version-poweredby-credits' => "بۇ ۋىكىنى '''[https://www.mediawiki.org/ MediaWiki]''' تېخنىكىلىق قوللايدۇ، نەشر ھوقۇقى © 2001-$1 $2",
'version-poweredby-others' => 'باشقا',
'version-poweredby-translators' => 'translatewiki.net تەرجىمانلىرى',
'version-credits-summary' => 'تۆۋەندىكى كىشىنىڭ [[Special:Version|MediaWiki]] غا تۆھپە قوشقانلىقىغا رەھمەت ئېيتىمىز.',
'invalidtitle-knownnamespace' => 'Неприйнятна назва у просторі імен «$2» і текстом «$3»',
'invalidtitle-unknownnamespace' => 'Неправильний заголовок з невідомим номером простору імен ($1) і текстом: «$2»',
'exception-nologin' => 'Не виконано вхід',
-'exception-nologin-text' => 'Ця сторінка чи дія потребує, щоб Ви ввійшли до цієї Вікі.',
+'exception-nologin-text' => 'Необхідно [[Special:Userlogin|увійти]], щоб мати доступ до цієї сторінки або дії.',
+'exception-nologin-text-manual' => 'Потрібно $1, щоб мати доступ до цієї сторінки або дії.',
# Virus scanner
'virus-badscanner' => "Помилка налаштування: невідомий сканер вірусів: ''$1''",
'revdelete-hide-user' => "Ім'я автора/IP адреса",
'revdelete-hide-restricted' => 'Приховати дані також і від адміністраторів',
'revdelete-radio-same' => '(не змінювати)',
-'revdelete-radio-set' => 'Ð\92идимий',
-'revdelete-radio-unset' => 'Ð\9fÑ\80иÑ\85ований',
+'revdelete-radio-set' => 'Ð\92идимо',
+'revdelete-radio-unset' => 'Ð\9fÑ\80иÑ\85овано',
'revdelete-suppress' => 'Приховувати дані також і від адміністраторів',
'revdelete-unsuppress' => 'Зняти обмеження з відновлених версій',
'revdelete-log' => 'Причина:',
'mypreferences' => 'Налаштування',
'prefs-edits' => 'Кількість редагувань:',
'prefsnologin' => 'Ви не ввійшли в систему',
-'prefsnologintext' => 'Щоб змінити налаштування користувача, ви повинні <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ввійти до системи]</span>.',
+'prefsnologintext2' => 'Потрібно $1 для налаштування параметрів користувача.',
'changepassword' => 'Змінити пароль',
'prefs-skin' => 'Оформлення',
'skin-preview' => 'Попередній перегляд',
електронною поштою: $PAGEEDITOR_EMAIL
через вікі: $PAGEEDITOR_WIKI
-Якщо ви не відвідаєте цю сторінку, то в подальшому не будете отримувати сповіщень про наступні редагування. Ви також можете вимкнути налаштування сповіщень для усіх сторінок зі списку спостереження.
+Якщо ви не відвідаєте цю сторінку під своїм обліковим записом, то в подальшому не будете отримувати сповіщень про наступні дії. Ви також можете вимкнути налаштування сповіщень для усіх сторінок зі списку спостереження.
- Ваша дружня система сповіщення {{grammar:genitive|{{SITENAME}}}}
+Ваша дружня система сповіщення {{grammar:genitive|{{SITENAME}}}}
--
Зміна налаштувань повідомлень електронною поштою
'blockip' => 'Блокування',
'blockip-title' => 'Блокування користувача',
'blockip-legend' => 'Блокування користувача',
-'blockiptext' => "Використовуйте форму нижче, щоб заблокувати можливість редагування із зазначеної IP-адреси або або ім'я користувача.
-Це слід робити лише для попередження вандалізму і у відповідності до [[{{MediaWiki:Policy-url}}|правил]].
-Заповніть конкретну причину нижче (наприклад, вкажіть точні сторінки, на яких було зроблено акт вандалізму).",
+'blockiptext' => "Використовуйте форму нижче, щоб заблокувати можливість редагування зазначеній IP-адресі або користувачу.
+Це слід робити лише для запобігання порушенням і у відповідності до [[{{MediaWiki:Policy-url}}|правил]].
+Обов'язково заповніть причину нижче, бажано дати інформативну вичерпну інформацію (наприклад, послатися на конкретні правила, дати посилання на редагування користувача, які призвели до блокування). Можна конкретизувати причину блокування на сторінці обговорення користувача.
+* Якщо ви блокуєте обліковий запис бота, переконайтеся, що ви вимкнули автоблокування (для запобігання автоматичного блокування облікових записів власника бота або інших ботів).
+* Зверніть увагу, що IP-адреси у більшості випадків не варто блокувати на більший за декілька днів термін, щоб під блокування не підпали інші користувачі з таким самим IP. Винятки — частий довготривалий вандалізм.",
'ipadressorusername' => "IP-адреса або ім'я користувача:",
'ipbexpiry' => 'Термін:',
'ipbreason' => 'Причина:',
'allmessagesdefault' => 'Стандартний текст',
'allmessagescurrent' => 'Поточний текст',
'allmessagestext' => 'Це список усіх системних повідомлень, які доступні в просторі назв «MediaWiki».
-Будь ласка, відвідайте [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] і [//translatewiki.net translatewiki.net], якщо ви хочете зробити внесок до спільної локалізації MediaWiki.',
+Будь ласка, відвідайте [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] і [//translatewiki.net translatewiki.net], якщо ви хочете зробити внесок до спільної локалізації MediaWiki.',
'allmessagesnotsupportedDB' => "Ця сторінка не може використовуватися, оскільки вимкнена опція '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Фільтр',
'allmessages-filter' => 'Фільтр за внесеними змінами:',
# External editor support
'edit-externally' => 'Редагувати цей файл, використовуючи зовнішню програму',
-'edit-externally-help' => '(Подробиці див. на сторінці [//www.mediawiki.org/wiki/Manual:External_editors Інструкції з установки зовнішніх редакторів])',
+'edit-externally-help' => '(Подробиці див. на сторінці [https://www.mediawiki.org/wiki/Manual:External_editors Інструкції з установки зовнішніх редакторів])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'всі',
'version-version' => '(Версія $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Ліцензія',
-'version-poweredby-credits' => "Ця Вікі працює на системі управління вмістом '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ця Вікі працює на системі управління вмістом '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'інші',
'version-poweredby-translators' => 'перекладачі translatewiki.net',
'version-credits-summary' => 'Нам хотілося б відзначити наступних осіб, що зробили внесок у [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Спеціальні сторінки',
-'specialpages-note' => '----
-* Звичайні службові сторінки
-* <span class="mw-specialpagerestricted">Сторінки з обмеженим доступом.</span>
-* <span class="mw-specialpagecached">Кешовані сторінки (можуть бути застарілими).</span>',
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Звичайні службові сторінки
+* <span class="mw-specialpagerestricted">Сторінки з обмеженим доступом.</span>',
'specialpages-group-maintenance' => 'Технічні звіти',
'specialpages-group-other' => 'Інші',
'specialpages-group-login' => 'Вхід до системи / реєстрація',
'mypreferences' => 'میری ترجیہات',
'prefs-edits' => 'تدوینات کی تعداد:',
'prefsnologin' => 'نا داخل شدہ حالت',
-'prefsnologintext' => 'ترجیحات ترتیب دینے کیلئے <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} داخل نوشتہ]</span> ہونا لازمی ہے.',
'changepassword' => 'کلمۂ شناخت تبدیل کریں',
'prefs-skin' => 'جِلد',
'skin-preview' => 'پیش منظر',
# External editor support
'edit-externally' => 'Bu faylni tashqi dasturiy ilovalar yordamida tahrirla',
-'edit-externally-help' => "(Batafsil ma'lumotlar uchun [//www.mediawiki.org/wiki/Manual:External_editors bu yerga] qarang)",
+'edit-externally-help' => "(Batafsil ma'lumotlar uchun [https://www.mediawiki.org/wiki/Manual:External_editors bu yerga] qarang)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Barcha',
'mypreferences' => 'Prefarense',
'prefs-edits' => 'Nùmaro de modifiche:',
'prefsnologin' => 'No te ghè eseguìo el login',
-'prefsnologintext' => 'Te ghè da aver eseguìo el <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} login]</span> par poder personalixare le to preferense.',
'changepassword' => 'Cànbia ła password',
'prefs-skin' => 'Aspeto grafico',
'skin-preview' => 'Anteprima',
'allmessagesdefault' => 'Testo predefinìo',
'allmessagescurrent' => 'Testo come che el xe desso',
'allmessagestext' => "Sta quà l'è na lista de tuti i messagi disponibili nel namespace MediaWiki.
-Par piaser visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se te voli jutarne par la traduzion del software MediaWiki ne le varie lengue.",
+Par piaser visita [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se te voli jutarne par la traduzion del software MediaWiki ne le varie lengue.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' no'l xè supportà parché '''\$wgUseDatabaseMessages''' no'l xè ativo.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtra par stato de personalixassion:',
# External editor support
'edit-externally' => 'Modifega sto file usando on programa foresto',
-'edit-externally-help' => '(Par saverghene de pì consultare łe [//www.mediawiki.org/wiki/Manual:External_editors istrusion])',
+'edit-externally-help' => '(Par saverghene de pì consultare łe [https://www.mediawiki.org/wiki/Manual:External_editors istrusion])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tute',
'version-hook-subscribedby' => 'Sotoscrizioni',
'version-version' => '(Version $1)',
'version-license' => 'Licensa',
-'version-poweredby-credits' => "Sta wiki la va con '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Sta wiki la va con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'altri',
'version-poweredby-translators' => 'tradutori de translatewiki.net',
'version-credits-summary' => "Semo contenti de riconosare łe seguenti persone p' 'ver contribuio a [[Special:Version|MediaWiki]].",
# Special:SpecialPages
'specialpages' => 'Pagine speciali',
-'specialpages-note' => '----
-* Pàjine speciałi normałi.
+'specialpages-note' => '* Pàjine speciałi normałi.
* <span class="mw-specialpagerestricted">Pàjine speciałi a aceso limità.</span>',
'specialpages-group-maintenance' => 'Resoconti de manutenzion',
'specialpages-group-other' => 'Altre pagine speciali',
'mypreferences' => 'Järgendused',
'prefs-edits' => 'Redaktiruindoiden lugu:',
'prefsnologin' => 'Tö et olgoi kirjutanus sistemha.',
-'prefsnologintext' => 'Teile pidab <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjutadas sistemha]</span>, miše toižetada järgendusid.',
'changepassword' => 'Peitsanan toižetuz',
'prefs-skin' => 'Irdnägu',
'skin-preview' => 'Ezikaclend',
# External editor support
'edit-externally' => 'Redaktiruida nece fail irdprogrammal',
-'edit-externally-help' => '(Kc. [//www.mediawiki.org/wiki/Manual:External_editors seižutamižinstrukcijoid])',
+'edit-externally-help' => '(Kc. [https://www.mediawiki.org/wiki/Manual:External_editors seižutamižinstrukcijoid])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'kaik',
# Special:SpecialPages
'specialpages' => 'Specialižed lehtpoled',
-'specialpages-note' => '----
-* Järgeližed specialižed lehtpoled.
+'specialpages-note' => '* Järgeližed specialižed lehtpoled.
* <span class="mw-specialpagerestricted">Kaitud specialižed lehtpoled.</span>',
'specialpages-group-maintenance' => 'Tehnižen holitandan satusenladindad',
'specialpages-group-other' => 'Toižed specialižed lehtpoled',
'mypreferences' => 'Tùy chọn',
'prefs-edits' => 'Số lần sửa đổi:',
'prefsnologin' => 'Chưa đăng nhập',
-'prefsnologintext' => 'Bạn phải <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} đăng nhập]</span> để thiết lập tùy chọn cá nhân.',
'changepassword' => 'Đổi mật khẩu',
'prefs-skin' => 'Hình dạng',
'skin-preview' => 'Xem trước',
'allmessagesdefault' => 'Nội dung mặc định',
'allmessagescurrent' => 'Nội dung hiện thời',
'allmessagestext' => 'Đây là toàn bộ thông điệp hệ thống có trong không gian tên MediaWiki.
-Mời vào [//www.mediawiki.org/wiki/Localisation?uselang=vi Địa phương hóa MediaWiki] và [//translatewiki.net/wiki/?uselang=vi translatewiki.net] nếu bạn muốn đóng góp dịch chung cả MediaWiki.',
+Mời vào [https://www.mediawiki.org/wiki/Localisation?uselang=vi Địa phương hóa MediaWiki] và [//translatewiki.net/wiki/?uselang=vi translatewiki.net] nếu bạn muốn đóng góp dịch chung cả MediaWiki.',
'allmessagesnotsupportedDB' => "Trang này không dùng được vì biến '''\$wgUseDatabaseMessages''' đã bị tắt.",
'allmessages-filter-legend' => 'Bộ lọc',
'allmessages-filter' => 'Lọc theo tình trạng sửa đổi:',
'svg-long-desc' => 'tập tin SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
'svg-long-desc-animated' => 'tập tin hình động SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
'svg-long-error' => 'Tập tin SVG có lỗi: $1',
-'show-big-image' => 'Độ phân giải tối đa',
+'show-big-image' => 'Tập tin gốc',
'show-big-image-preview' => 'Kích thước của hình xem trước: $1.',
'show-big-image-other' => '{{PLURAL:$2|Độ phân giải|Các độ phân giải}} khác: $1.',
'show-big-image-size' => '$1×$2 điểm ảnh',
# External editor support
'edit-externally' => 'Sửa bằng phần mềm bên ngoài',
-'edit-externally-help' => '(Xem [//www.mediawiki.org/wiki/Manual:External_editors hướng dẫn cài đặt bằng tiếng Anh] để biết thêm thông tin)',
+'edit-externally-help' => '(Xem [https://www.mediawiki.org/wiki/Manual:External_editors hướng dẫn cài đặt bằng tiếng Anh] để biết thêm thông tin)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tất cả',
'version-hook-subscribedby' => 'Được theo dõi bởi',
'version-version' => '(Phiên bản $1)',
'version-license' => 'Giấy phép bản quyền',
-'version-poweredby-credits' => "Wiki này chạy trên '''[//www.mediawiki.org/ MediaWiki]''', bản quyền © 2001–$1 $2.",
+'version-poweredby-credits' => "Wiki này chạy trên '''[https://www.mediawiki.org/ MediaWiki]''', bản quyền © 2001–$1 $2.",
'version-poweredby-others' => 'những người khác',
'version-poweredby-translators' => 'các biên dịch viên translatewiki.net',
'version-credits-summary' => 'Chúng tôi muốn công nhận những người sau đã đóng góp vào [[Special:Version|MediaWiki]].',
# Special:SpecialPages
'specialpages' => 'Các trang đặc biệt',
-'specialpages-note' => '----
-* Trang đặc biệt thông thường.
+'specialpages-note' => '* Trang đặc biệt thông thường.
* <strong class="mw-specialpagerestricted">Trang đặc biệt được hạn chế.</strong>
* <span class="mw-specialpagecached">Trang đặc biệt được lấy từ vùng nhớ đệm (có thể lỗi thời).</span>',
'specialpages-group-maintenance' => 'Báo cáo bảo quản',
'mypreferences' => 'Ajschdelunga',
'prefs-edits' => 'So ofd umgmoodld:',
'prefsnologin' => 'Ned ôôgmäld',
-'prefsnologintext' => 'Ärschd wen\'d <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} ôôgmäld]</span> bisch, ghôôsch dâj âjschdelungn ändârn.',
'changepassword' => "S'bhaswôrd ändârn",
'prefs-skin' => 'Schaale',
'skin-preview' => 'Môôl schbign',
# External editor support
'edit-externally' => 'Dii dadaj mid an ägsdärna brogram ändârn',
-'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [//www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
+'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [https://www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ale',
'mypreferences' => 'Buükams',
'prefs-edits' => 'Num redakamas:',
'prefsnologin' => 'No enunädon oki',
-'prefsnologintext' => 'Nedol <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nunädön oli]</span> büä kanol votükön gebanabuükamis.',
'changepassword' => 'Votükön letavödi',
'prefs-skin' => 'Fomät',
'skin-preview' => 'Büologed',
'allmessagesdefault' => 'Vödem rigädik',
'allmessagescurrent' => 'Vödem nuik',
'allmessagestext' => 'Is binon lised sitanunas valik lonöföl in nemaspad: Sitanuns.
-Gebolös [//www.mediawiki.org/wiki/Localisation Topükami ela MediaWiki] ed el [//translatewiki.net translatewiki.net] if vilol keblünön topükame valemik ela MediaWiki.',
+Gebolös [https://www.mediawiki.org/wiki/Localisation Topükami ela MediaWiki] ed el [//translatewiki.net translatewiki.net] if vilol keblünön topükame valemik ela MediaWiki.',
'allmessagesnotsupportedDB' => "Pad at no kanon pagebön bi el '''\$wgUseDatabaseMessages''' penemögükon.",
'allmessages-filter-legend' => 'Sul',
'allmessages-filter-unmodified' => 'Penevotüköl',
# External editor support
'edit-externally' => 'Votükön ragivi at me nünömaprogram plödik',
-'edit-externally-help' => '(Reidolös eli [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] [in Linglänapük] ad tuvön nünis pluik)',
+'edit-externally-help' => '(Reidolös eli [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] [in Linglänapük] ad tuvön nünis pluik)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'valikis',
# Special:SpecialPages
'specialpages' => 'Pads patik',
-'specialpages-note' => '----
-* Pads patik nomik.
+'specialpages-note' => '* Pads patik nomik.
* <span class="mw-specialpagerestricted">Pads patik pemiedüköl.</span>',
'specialpages-group-maintenance' => 'Nunods tefü kiped',
'specialpages-group-other' => 'Pads patik votik',
# External editor support
'edit-externally' => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
-'edit-externally-help' => '(Kattsoga [//www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
+'edit-externally-help' => '(Kattsoga [https://www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'koko istori',
'mypreferences' => 'Säädmiseq',
'prefs-edits' => 'Tõimõndamiisi arv:',
'prefsnologin' => 'Sa olõ-i nimega sisse lännüq',
-'prefsnologintext' => 'Et säädmiisi tetäq, tulõ sul [[Special:UserLogin|nimega sisse minnäq]].',
'changepassword' => 'Muudaq salasõnna',
'prefs-skin' => 'Vällänägemine',
'skin-preview' => 'Kaeminõ',
'allmessagesdefault' => 'Vaikimiisi tekst',
'allmessagescurrent' => 'Parhillanõ tekst',
'allmessagestext' => 'Taan nimekirän ommaq kõik MediaWiki nimeruumi tallitusteedüseq.
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Taad lehte saa-i pruukiq, selle et '''\$wgUseDatabaseMessages'''-säädmine om välän.",
# Thumbnails
# External editor support
'edit-externally' => 'Toimõndaq taad teedüstüt välidse programmiga',
-'edit-externally-help' => '(Lisateedüst loeq [//www.mediawiki.org/wiki/Manual:External_editors pruukmisoppusõ lehe päält])',
+'edit-externally-help' => '(Lisateedüst loeq [https://www.mediawiki.org/wiki/Manual:External_editors pruukmisoppusõ lehe päält])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => ', terveq aolugu',
# Special:SpecialPages
'specialpages' => 'Tallitusleheküleq',
-'specialpages-note' => '----
-* Hariliguq tallitusleheq.
+'specialpages-note' => '* Hariliguq tallitusleheq.
* <strong class="mw-specialpagerestricted">Piiredüq tallitusleheq.</strong>',
'specialpages-group-maintenance' => 'Kõrranpidämisteedüseq',
'specialpages-group-other' => 'Muuq tallitusleheq',
'mypreferences' => 'Mes preferinces',
'prefs-edits' => 'Nombe di candjmints:',
'prefsnologin' => "Vos n' estoz nén elodjî",
-'prefsnologintext' => 'I vs fåt esse <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} elodjî]</span> po pleur candjî vos preferinces.',
'changepassword' => "Candjî l' sicret",
'prefs-skin' => 'Pea',
'skin-preview' => 'vey divant',
'allmessagesdefault' => 'Tecse prémetou',
'allmessagescurrent' => 'Tecse pol moumint',
'allmessagestext' => "Çouchal est ene djivêye des messaedjes sistinme k' i gn a dins l' espåce di lomaedje ''MediaWiki:''.
-Loukîz les pådjes sol [//www.mediawiki.org/wiki/Localisation Locålijhaedje di MediaWiki] et
+Loukîz les pådjes sol [https://www.mediawiki.org/wiki/Localisation Locålijhaedje di MediaWiki] et
[//translatewiki.net/ translatewiki.net] si vos vloz pårticiper avou l' ratournaeje djenerike di MediaWiki.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' n' est nén sopoirté paski '''\$wgUseDatabaseMessages''' est dismetou.",
'allmessages-filter-legend' => 'Passete',
# External editor support
'edit-externally' => "Candjî ç' fitchî ci avou on dfoûtrin programe",
-'edit-externally-help' => "(Loukîz les [//www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes)",
+'edit-externally-help' => "(Loukîz les [https://www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'totafwait',
# External editor support
'edit-externally' => 'Igliwat ini nga fayl gamit han gawas nga aplikasyon',
-'edit-externally-help' => '(Kitaa an [//www.mediawiki.org/wiki/Manual:External_editors mga pagtutdo hin pag-ayad] para han dugang nga pananabutan)',
+'edit-externally-help' => '(Kitaa an [https://www.mediawiki.org/wiki/Manual:External_editors mga pagtutdo hin pag-ayad] para han dugang nga pananabutan)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ngatanan',
'version-hook-name' => 'Ngaran han kawil',
'version-version' => '(Bersion $1)',
'version-license' => 'Lisensya',
-'version-poweredby-credits' => "Ini nga wiki in pinapaandar han '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Ini nga wiki in pinapaandar han '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'mga iba',
'version-software-product' => 'Produkto',
'version-software-version' => 'Bersyon',
'mypreferences' => 'Samay tànneef',
'prefs-edits' => 'Limu coppite yi:',
'prefsnologin' => 'Duggoo',
-'prefsnologintext' => 'Laaj na nga <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} dugg]</span> ngir soppi say tànneef.',
'changepassword' => 'Coppiteg baatujàll bi',
'prefs-skin' => 'Melokaan',
'skin-preview' => 'Wonendil',
# External editor support
'edit-externally' => 'Soppi xët wii ak ab tëriin bu biti',
-'edit-externally-help' => 'Xoolal [//www.mediawiki.org/wiki/Manual:External_editors tegtali camp gi] ngir yeneeni xamle',
+'edit-externally-help' => 'Xoolal [https://www.mediawiki.org/wiki/Manual:External_editors tegtali camp gi] ngir yeneeni xamle',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'yépp',
* @author Wu-chinese.com
* @author Xiaomingyan
* @author Yfdyh000
+ * @author 乌拉跨氪
* @author 十弌
*/
'revdelete-show-file-submit' => '是',
'revdelete-selected' => "'''选取'''[[:$1]]'''个$2趟修订:'''",
'logdelete-selected' => "'''选取'''$1'''个日志事件:'''",
-'revdelete-text' => "'''删脱个修订仍然将显示拉页面历史里向, 不过渠拉个文本内容公众已经弗好访问。'''
+'revdelete-text' => "'''删脱个修订仍然将显示拉页面历史里向,不过渠拉个文本内容公众已经弗好访问。'''
垃拉{{SITENAME}}个其他管理员将仍旧好访问隐藏个内容并通过与此相同个界面恢复删除,除非站点工作者添加了附加限制。",
'revdelete-confirm' => '假使侬想箇能介做个闲话,请确认侬已经清爽箇能介做个后果,外加箇个程序符合[[{{MediaWiki:Policy-url}}|政策]]。',
'revdelete-suppress-text' => "'''只有'''出现下头眼情况再应阻止访问:
'mypreferences' => '偏好设定',
'prefs-edits' => '编辑数量:',
'prefsnologin' => '朆登录',
-'prefsnologintext' => '侬必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>再好设置个人参数。',
'changepassword' => '改密码',
'prefs-skin' => '皮肤',
'skin-preview' => '预览',
# Rollback
'rollback' => '恢复编辑',
'rollback_short' => '恢复',
-'rollbacklink' => '恢复',
+'rollbacklink' => '回退',
'rollbackfailed' => '恢复失败',
'revertpage' => '恢复[[Special:Contributions/$2|$2]] ([[User talk:$2|讲张]])个改动;恢复到[[User:$1|$1]]个上一版本',
# External editor support
'edit-externally' => '用外部应用程序来编辑该只文件',
-'edit-externally-help' => '(请参见[//www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信息)',
+'edit-externally-help' => '(请参见[https://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信息)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全部',
'mypreferences' => 'Көгүд',
'prefs-edits' => 'Чикллһнә то:',
'prefsnologin' => 'Та харһв биш',
-'prefsnologintext' => 'Та <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} харһх]</span> кергтә, тегәд көгүдиг сольҗ чаднат.',
'changepassword' => 'Нууц үгиг сольҗ',
'prefs-skin' => 'Хувцнь',
'skin-preview' => 'Хәләвр',
# External editor support
'edit-externally' => 'Эн боомгиг һаза заклһар чиклх',
-'edit-externally-help' => '([//www.mediawiki.org/wiki/Manual:External_editors Тәвллһнә заалт] икәр өггцнә төлә хәләтн)',
+'edit-externally-help' => '([https://www.mediawiki.org/wiki/Manual:External_editors Тәвллһнә заалт] икәр өггцнә төлә хәләтн)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'цуг',
# External editor support
'edit-externally' => 'თე ფაილიშ ორედაქტირაფალო გიმირინეთ გალენ პროგრამა',
-'edit-externally-help' => '(უმოს ინფორმაციაშო ქოძირით [//www.mediawiki.org/wiki/Manual:External_editors])',
+'edit-externally-help' => '(უმოს ინფორმაციაშო ქოძირით [https://www.mediawiki.org/wiki/Manual:External_editors])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'არძა',
'invalidtitle-knownnamespace' => 'אומגילטירער טיטל מיט נאמענטייל "$2" און טעקסט "$3"',
'invalidtitle-unknownnamespace' => 'אומגילטיקער טיטל מיט אומבאוואוסטן נאמענטייל נומער $1 און טעקסט "$2"',
'exception-nologin' => 'נישט אַרײַנלאגירט',
-'exception-nologin-text' => 'דער בלאט אדער אקציע פֿאדערט אז איר זענט אריינלאגירט ביי דער וויקי.',
+'exception-nologin-text' => 'איר שאפרט זיין [[Special:Userlogin|אריינלאגירט]] to כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.',
+'exception-nologin-text-manual' => 'זייט אזוי גוט $1 כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.',
# Virus scanner
'virus-badscanner' => "שלעכטע קאנפֿיגוראציע: אומבאוואוסטער ווירוס איבערקוקער: ''$1''",
'mypreferences' => 'פּרעפֿערענצן',
'prefs-edits' => 'צאָל ענדערונגען:',
'prefsnologin' => 'נישט אריינלאגירט',
-'prefsnologintext' => 'איר דארפט זיין <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} אריינלאגירט]</span> כדי צו ענדערן באניצער פרעפֿערענצן.',
'changepassword' => 'טוישן פאַסווארט',
'prefs-skin' => 'סקין',
'skin-preview' => 'פארויסדיגע ווייזונג',
ע-פאסט: $PAGEEDITOR_EMAIL
וויקי: $PAGEEDITOR_WIKI
-עס ×\95×\95×¢×\98 ×\9eער × ×\99ש×\98 ×\96×\99×\99×\9f ק×\99×\99×\9f ×\9e×¢×\9c×\93×\95× ×\92×¢×\9f ×\90×\99×\9f פ×\90×\9c פ×\95×\9f × ×\90×\9a ×¢× ×\93ער×\95× ×\92×¢×\9f × ×\90ר ×\90×\95×\99×\91 ×\90×\99ר ×\95×\95×¢×\98 ×\91×\90×\96×\95×\9b×\9f ×\93×¢×\9d ×\91×\9c×\90ט.
+עס ×\95×\95×¢×\98 ×\9eער × ×\99ש×\98 ×\96×\99×\99×\9f ק×\99×\99×\9f ×\9e×¢×\9c×\93×\95× ×\92×¢×\9f ×\90×\99×\9f פ×\90×\9c פ×\95×\9f × ×\90×\9a ×\90ק×\98×\99×\95×\95×\99×\98×¢×\98 × ×\90ר ×\90×\95×\99×\91 ×\90×\99ר ×\95×\95×¢×\98 ×\91×\90×\96×\95×\9b×\9f ×\93×¢×\9d ×\91×\9c×\90×\98 ×\95×\95×¢×\9f ×\90ר×\99×\99× ×\9c×\90×\92×\99רט.
איר קענט אויך צוריקשטעלן די מעלדונגען פאנען פון אלע אייערע אויפֿגעפאסטע בלעטער אין אייער אויפפאסונג ליסטע.
אייער פֿריינטליכע {{SITENAME}} מעלדונגען סיסטעם
סיסאפן קענען ענדערן די מעלדונגען דורך דרוקן אויפן נאמען פון דער מעלדונג.
-ביטע באזוכט [//www.mediawiki.org/wiki/Localisation מעדיעוויקי לאקאליזאציע] און [//translatewiki.net בעטאוויקי] אויב איר ווילט ביישטייערן צו דער גענערישער מעדיעוויקי לאקאליזאציע.',
+ביטע באזוכט [https://www.mediawiki.org/wiki/Localisation מעדיעוויקי לאקאליזאציע] און [//translatewiki.net בעטאוויקי] אויב איר ווילט ביישטייערן צו דער גענערישער מעדיעוויקי לאקאליזאציע.',
'allmessagesnotsupportedDB' => 'מען קען זיך נישט באניצן מיט דעם בלאט וויבאלד די $wgUseDatabseMessages איז געווארן בטל.',
'allmessages-filter-legend' => 'פילטער',
'allmessages-filter' => 'פֿילטערן לויטן סטאטוס פון מעלדונג:',
'file-nohires' => 'נישטא מיט א העכערער רעזאלוציע.',
'svg-long-desc' => 'טעקע SVG, נאמינעל: $1 × $2 פיקסעלן, טעקע גרייס: $3',
'svg-long-error' => 'אומגילטיקע SVG טעקע: $1',
-'show-big-image' => '×\91×\99×\9c×\93 ×\9e×\99×\98 ×\93ער ×\92רעס×\98ער רע×\96×\90×\9c×\95צ×\99ע',
+'show-big-image' => '×\90ר×\92×\99× ×¢×\9c×¢ ×\98עקע',
'show-big-image-preview' => 'גרייס פון דעם פארויסקוק: $1.',
'show-big-image-other' => '{{PLURAL:$2|אנדער רעזאלוציע|אנדערע רעזאלוציעס}}: $1.',
'show-big-image-size' => '$1 × $2 פיקצעלן',
# External editor support
'edit-externally' => 'רעדאַקטירט די טעקע מיט א דרויסנדיגער אַפליקאַציע',
-'edit-externally-help' => 'זעט די [//www.mediawiki.org/wiki/Manual:External_editors אויפֿשטעל אנווייזונגען] פאר מער אינפארמאציע.',
+'edit-externally-help' => 'זעט די [https://www.mediawiki.org/wiki/Manual:External_editors אויפֿשטעל אנווייזונגען] פאר מער אינפארמאציע.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'אַלע',
# Special:SpecialPages
'specialpages' => 'ספּעציעלע זײַטן',
-'specialpages-note' => '----
-* נארמאַלע באַזונדערע בלעטער.
+'specialpages-note' => '* נארמאַלע באַזונדערע בלעטער.
* <strong class="mw-specialpagerestricted">באַגרענעצטע באַזונדערע בלעטער.</strong>
* <span class="mw-specialpagecached">באַזונדערע בלעטער פֿון זאַפאַס (קענען זײַן פֿאַרעלטערט).</span>',
'specialpages-group-maintenance' => 'אויפֿהאַלטונג באַריכטן',
'mypreferences' => 'Àwọn ìfẹ́ràn',
'prefs-edits' => 'Iye àwọn àtúnṣe:',
'prefsnologin' => 'Ẹ kò tíì wọlé',
-'prefsnologintext' => 'Ẹ gbọ́dọ̀ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} wọlé]</span> láti to àwọn ìfẹ́ràn oníṣe.',
'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
'prefs-skin' => 'Skin (Àwọ̀)',
'skin-preview' => 'Àkọ́yẹ̀wò',
'allmessagesdefault' => 'Ìkọ ìránṣẹ́ àtìbẹ̀rẹ̀',
'allmessagescurrent' => 'Ìkọ ìránṣẹ́ lọ́wọ́',
'allmessagestext' => 'Èyí ni àtòjọ àwọn ìránṣẹ́ sístẹ́mù tó wà nínú orúkọàyè MediaWiki.
-Ẹ lọ sí [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] àti [//translatewiki.net translatewiki.net] tí ẹ bá fẹ́ kópa nínú ìyèdèpadà ìsiṣẹ́ MediaWiki.',
+Ẹ lọ sí [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] àti [//translatewiki.net translatewiki.net] tí ẹ bá fẹ́ kópa nínú ìyèdèpadà ìsiṣẹ́ MediaWiki.',
'allmessagesnotsupportedDB' => "Ojúewé yìí kò ṣe é lò nítorípé '''\$wgUseDatabaseMessages''' ti jẹ́ dídálẹkun.",
'allmessages-filter-legend' => 'Ajọ̀',
'allmessages-filter' => 'Ajọ̀ gẹ́gẹ́bí ipò ìṣàyàn:',
# External editor support
'edit-externally' => "Ẹ lo ìmúlò òde láti ṣ'àtúnṣe fáìlì yìí",
-'edit-externally-help' => '(Ẹ wo [//www.mediawiki.org/wiki/Manual:External_editors ìlànà ìṣètò] fún ẹ̀kúnrẹ́rẹ́)',
+'edit-externally-help' => '(Ẹ wo [https://www.mediawiki.org/wiki/Manual:External_editors ìlànà ìṣètò] fún ẹ̀kúnrẹ́rẹ́)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'gbogbo',
'version-hook-name' => 'Orúkọ hook',
'version-version' => '(Àtẹ̀jáde $1)',
'version-license' => 'Ìwé àṣẹ',
-'version-poweredby-credits' => "Agbára ìṣiṣẹ́ wiki yìí wá látọwọ́ '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Agbára ìṣiṣẹ́ wiki yìí wá látọwọ́ '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'àwọn mìíràn',
'version-credits-summary' => 'Ìdùnnú wa ni láti rántí àwọn ẹni wọ̀nyí fún ìdáwọ́lé wọn sí [[Special:Version|MediaWiki]].',
'version-software' => 'Atòlànà kọ̀mpútà kíkànsínú',
# Special:SpecialPages
'specialpages' => 'Àwọn ojúewé pàtàkì',
-'specialpages-note' => '----
-* Àwọn ojúewé pàtàkì onídéédé.
+'specialpages-note' => '* Àwọn ojúewé pàtàkì onídéédé.
* <span class="mw-specialpagerestricted">Àwọn ojúewé pàtàkì àìgbàláyè.</span>',
'specialpages-group-maintenance' => 'Àwọn ìjábọ̀ ìtọ́jú',
'specialpages-group-other' => 'Àwọn ojúewé pàtàkì míràn',
'mypreferences' => '自訂喜好',
'prefs-edits' => '編輯數:',
'prefsnologin' => '重未登入',
-'prefsnologintext' => '你一定要去<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>設定好用戶喜好值先。',
'changepassword' => '改密碼',
'prefs-skin' => '畫面',
'skin-preview' => '預覽',
'allmessagesdefault' => '預設訊息文字',
'allmessagescurrent' => '現時訊息文字',
'allmessagestext' => '以下係 MediaWiki 空間名入邊現有系統信息嘅清單。
-如果想貢獻正宗嘅MediaWiki本地化嘅話,請參閱[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]同埋[//translatewiki.net translatewiki.net]。',
+如果想貢獻正宗嘅MediaWiki本地化嘅話,請參閱[https://www.mediawiki.org/wiki/Localisation MediaWiki本地化]同埋[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "呢一版唔可以用,因為'''\$wgUseDatabaseMessages'''已經閂咗。",
'allmessages-filter-legend' => '過濾',
'allmessages-filter' => '以自定狀況過濾:',
# External editor support
'edit-externally' => '用外面程式來改呢個檔案',
-'edit-externally-help' => '(去[//www.mediawiki.org/wiki/Manual:External_editors setup instructions] 睇多啲資料)',
+'edit-externally-help' => '(去[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] 睇多啲資料)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全部',
'version-hook-subscribedby' => '利用於',
'version-version' => '(版本 $1)',
'version-license' => '牌照',
-'version-poweredby-credits' => "呢個 Wiki 係由 '''[//www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
+'version-poweredby-credits' => "呢個 Wiki 係由 '''[https://www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
'version-poweredby-others' => '其他',
'version-license-info' => 'MediaWiki係自由軟件;你可以根據Free Software Foundation所發表嘅GNU General Public License條款規定,就本程式再發佈同/或修改;無論你根據嘅係呢個牌照嘅第二版或(任你揀)任一日之後發行嘅版本。
# Special:SpecialPages
'specialpages' => '特別頁',
-'specialpages-note' => '----
-* 標準特別頁。
+'specialpages-note' => '* 標準特別頁。
* <strong class="mw-specialpagerestricted">有限制嘅特別頁。</strong>',
'specialpages-group-maintenance' => '維護報告',
'specialpages-group-other' => '其它特別頁',
'mypreferences' => 'Mien vòkeuren',
'prefs-edits' => 'Antal bewerkiengen:',
'prefsnologin' => 'Nie anemeld',
-'prefsnologintext' => 'Je mò <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anemeld]</span> zien om je vòkeuren te kunn\'n instell\'n.',
'changepassword' => 'Wachtwoôrd wiezigen',
'prefs-skin' => 'Vurmhevieng',
'skin-preview' => 'Voevertoônienge',
# External editor support
'edit-externally' => "Dit bestand in 'n extern programma bewark'n",
-'edit-externally-help' => '(zieë de [//www.mediawiki.org/wiki/Manual:External_editors handleidienge vò instelliengen] vò meê informaosie)',
+'edit-externally-help' => '(zieë de [https://www.mediawiki.org/wiki/Manual:External_editors handleidienge vò instelliengen] vò meê informaosie)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aol',
'vector-action-delete' => '删除',
'vector-action-move' => '移动',
'vector-action-protect' => '保护',
-'vector-action-undelete' => '恢复',
+'vector-action-undelete' => '还原',
'vector-action-unprotect' => '更改保护',
'vector-simplesearch-preference' => '启用简化的搜索栏(仅Vector皮肤)',
'vector-view-create' => '创建',
'create-this-page' => '创建本页',
'delete' => '删除',
'deletethispage' => '删除本页',
-'undeletethispage' => '恢复本页',
-'undelete_short' => '恢复$1个编辑',
+'undeletethispage' => '还原本页',
+'undelete_short' => '还原{{PLURAL:$1|$1个编辑}}',
'viewdeleted_short' => '查看$1个被删除的编辑',
'protect' => '保护',
'protect_change' => '更改',
# Main script and global functions
'nosuchaction' => '无该命令',
'nosuchactiontext' => 'URL指定的操作无效。你可能输入了错误的URL地址,或是点击了错误的链接。这也可能表明{{SITENAME}}使用的软件的存在漏洞(bug)。',
-'nosuchspecialpage' => 'æ\97 该ç\89¹æ®\8a页é\9d¢',
-'nospecialpagetext' => '<strong>你请求了一个无效的特殊页面。</strong>
+'nosuchspecialpage' => 'æ¤ç\89¹æ®\8a页é\9d¢ä¸\8då\98å\9c¨',
+'nospecialpagetext' => '<strong>您请求了一个无效的特殊页面。</strong>
有效的特殊页面的列表可以在[[Special:SpecialPages|{{int:specialpages}}]]找到。',
'accmailtitle' => '密码已寄出',
'accmailtext' => "为[[User talk:$1|$1]]随机生成的密码已送至$2。登录后可以在''[[Special:ChangePassword|更改密码]]''页面中修改。",
'newarticle' => '(新页面)',
-'newarticletext' => '您进入了一个尚未创建的页面。
-要创建该页面,请在下面的编辑框中输入内容(详情参见[[{{MediaWiki:Helppage}}|帮助页]])。
-如果您误入此页,请点击浏览器中的“返回”按钮。',
+'newarticletext' => "你点击了一个尚不存在的页面的链接。要创建该页面,请在下面的编辑框中输入内容(更多信息请见[[{{MediaWiki:Helppage}}|帮助页面]])。如果你是错误地到达这里,请点击你的浏览器的'''返回'''按钮。",
'anontalkpagetext' => "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
'noarticletext' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑本页面]。</span>',
'noarticletext-nopermission' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志],但你没有权限创建本页面。',
'rev-suppressed-diff-view' => "差异对比中的一次修订已被'''监督隐藏'''。您可以对比此差异。详细信息可在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中找到。",
'rev-delundel' => '显示/隐藏',
'rev-showdeleted' => '显示',
-'revisiondelete' => '删除/恢复版本',
+'revisiondelete' => '删除/还原版本',
'revdelete-nooldid-title' => '无效目标版本',
'revdelete-nooldid-text' => '您尚未指定一个目标修订去进行这个功能、
所指定的修订不存在,或者您尝试去隐藏现时的修订。',
'revdelete-hide-comment' => '编辑摘要',
'revdelete-hide-user' => '编辑者的用户名/IP地址',
'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
-'revdelete-radio-same' => '(不要更改)',
+'revdelete-radio-same' => '(不更改)',
'revdelete-radio-set' => '隐藏',
'revdelete-radio-unset' => '可见',
'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
'mypreferences' => '设置',
'prefs-edits' => '编辑数:',
'prefsnologin' => '未登录',
-'prefsnologintext' => '您必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>才能设置个人参数。',
'changepassword' => '更改密码',
'prefs-skin' => '皮肤',
'skin-preview' => '预览',
'gender-unknown' => '我不愿意指明(被称为“他/她”)',
'gender-male' => '他',
'gender-female' => '她',
-'prefs-help-gender' => '这是选填项目。
-软件使用其以显示正确的性别称呼。
-该信息将会公开。',
+'prefs-help-gender' => '该设置为可选项目。软件根据它的值在称呼你及对他人提及你时使用适当的语法性别。该信息会被公开。',
'email' => '电子邮件',
'prefs-help-realname' => '真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。',
-'prefs-help-email' => "<nowiki>*</nowiki> 您不一定要提供电子邮件,但如果您遗失密码,将'''无法'''再次登入。您可以随时在此提供电子邮件,或更改资料。如您更改电子邮件,您将需要[[Help:电子邮件确认|重新确认]]。",
+'prefs-help-email' => '电子邮件是可选项,但是在您忘记密码时很有用。',
'prefs-help-email-others' => '你也可以选择让其他用户通过你的用户或讨论页面上的链接用电子邮件联系你。其他用户联系你时你的电子邮件地址不会显示。',
'prefs-help-email-required' => '电子邮件地址是必填项目。',
'prefs-info' => '基本信息',
'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
'right-browsearchive' => '搜索被删除的页面',
-'right-undelete' => '恢复页面',
+'right-undelete' => '还原页面',
'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
'right-suppressionlog' => '查看非公开日志',
'right-block' => '阻止其他用户编辑',
'action-deleterevision' => '删除本版本',
'action-deletedhistory' => '查看本页面被删除的历史',
'action-browsearchive' => '搜索被删除的页面',
-'action-undelete' => '恢复本页',
+'action-undelete' => '还原本页',
'action-suppressrevision' => '审查和恢复本隐藏版本',
'action-suppressionlog' => '查看本非公开日志',
'action-block' => '阻止该用户编辑',
'zip-wrong-format' => '指定的文件不是一个 ZIP 文件。',
'zip-bad' => '该文件是已损坏或以其它方式无法读取的 ZIP 文件。
不能正确检查安全。',
-'zip-unsupported' => '该文件是 ZIP 文件,其中使用 MediaWiki 不支持的ZIP功能。
-不能正确检查安全。',
+'zip-unsupported' => '该文件是使用MediaWiki不支持的ZIP特性的ZIP文件。无法正确地检查其安全性。',
# Special:UploadStash
'uploadstash' => '上传隐藏',
# File reversion
'filerevert' => '恢复$1',
'filerevert-legend' => '恢复文件',
-'filerevert-intro' => "您正在将文件'''[[Media:$1|$1]]'''恢复到[$4 于$2 $3的版本]。",
+'filerevert-intro' => "你将要恢复文件'''[[Media:$1|$1]]'''至[$4 $2 $3的版本]。",
'filerevert-comment' => '原因:',
-'filerevert-defaultcomment' => '已经恢复到于$1 $2的版本',
+'filerevert-defaultcomment' => '恢复至$1 $2的版本',
'filerevert-submit' => '恢复',
-'filerevert-success' => "'''[[Media:$1|$1]]'''已经恢复到[$4 于$2 $3的版本]。",
+'filerevert-success' => "'''[[Media:$1|$1]]'''已经恢复至[$4 $2 $3的版本]。",
'filerevert-badversion' => '文件并无所请求时间戳下的早期本地版本。',
# File deletion
'dellogpage' => '删除日志',
'dellogpagetext' => '下面是最近的删除的列表。',
'deletionlog' => '删除记录',
-'reverted' => '恢复到早期版本',
+'reverted' => '恢复到较早的版本',
'deletecomment' => '原因:',
'deleteotherreason' => '其他/附加原因:',
'deletereasonotherlist' => '其他原因',
'rollbacklinkcount' => '回退$1次编辑',
'rollbacklinkcount-morethan' => '回退超过$1次的编辑',
'rollbackfailed' => '回退失败',
-'cantrollback' => '无法恢复编辑。最后的贡献者是本文的唯一作者。',
+'cantrollback' => '无法恢复编辑,最后贡献者是该页面的唯一作者。',
'alreadyrolled' => '无法回退[[User:$2|$2]]([[User talk:$2|讨论]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])对[[:$1]]的编辑,其他人已经编辑或者回退了该页。
本页最后的编辑者是[[User:$3|$3]]([[User talk:$3|讨论]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
'editcomment' => '编辑摘要:"<i>$1</i>"。',
-'revertpage' => '已恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后一个修订版本',
+'revertpage' => '恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后版本',
'revertpage-nouser' => '恢复由隐藏用户的编辑到{{GENDER:$1|[[User:$1|$1]]}}的最后一个修订版本',
'rollback-success' => '已恢复$1的编辑,更改回$2的最后版本。',
'undelete-revision' => '$1由$3(在$4 $5)所编写的已删除修订版本:',
'undeleterevision-missing' => '无效或丢失的修订版本。您可能使用了错误的链接,或者此修订版本已经被从存档中恢复或移除。',
'undelete-nodiff' => '找不到先前的修订版本。',
-'undeletebtn' => '恢复',
-'undeletelink' => '查看/恢复',
+'undeletebtn' => '还原',
+'undeletelink' => '查看/还原',
'undeleteviewlink' => '查看',
'undeletereset' => '重设',
'undeleteinvert' => '反向选择',
'undeletecomment' => '原因:',
-'undeletedrevisions' => '$1个版本已恢复',
-'undeletedrevisions-files' => '$1个版本和$2个文件已恢复',
-'undeletedfiles' => '$1个文件已经被恢复',
+'undeletedrevisions' => '{{PLURAL:$1|$1个版本}}被还原',
+'undeletedrevisions-files' => '{{PLURAL:$1|$1个版本}}和{{PLURAL:$2|$2个文件}}被还原',
+'undeletedfiles' => '{{PLURAL:$1|$1个文件}}被还原',
'cannotundelete' => '恢复删除失败:
$1',
'undeletedpage' => "'''$1已经被恢复'''
'allmessagesdefault' => '默认信息文字',
'allmessagescurrent' => '当前信息文字',
'allmessagestext' => '此处列出了MediaWiki名字空间下的所有有效系统消息。
-如果想为MediaWiki的本地化贡献翻译,请访问[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]和[//translatewiki.net translatewiki.net]。',
+如果想为MediaWiki的本地化贡献翻译,请访问[https://www.mediawiki.org/wiki/Localisation MediaWiki本地化]和[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "此页面无法使用,因为'''\$wgUseDatabaseMessages'''已被设置关闭。",
'allmessages-filter-legend' => '过滤',
'allmessages-filter' => '按自定义状态过滤:',
'tooltip-watchlistedit-raw-submit' => '更新监视列表',
'tooltip-recreate' => '重建该页面,无论是否被删除。',
'tooltip-upload' => '开始上传',
-'tooltip-rollback' => '单击“回退”恢复上一位贡献者对本页的编辑',
+'tooltip-rollback' => '单击“回退”恢复最后贡献者对该页面的编辑',
'tooltip-undo' => '“撤销”可以恢复该编辑并在预览模式下打开编辑表单。它允许在摘要中加入原因。',
'tooltip-preferences-save' => '保存系统设置',
'tooltip-summary' => '请输入简短的摘要',
这可能是由于一个链往匹配黑名单的外部站点的链接引起的。',
'spamprotectionmatch' => '以下文本触发了我们的垃圾链接过滤器:$1',
'spambot_username' => 'MediaWiki垃圾链接清理器',
-'spam_reverting' => '恢复到不包含链接的最近修订版本$1',
+'spam_reverting' => '恢复至不包含$1的链接的最后版本',
'spam_blanking' => '消隐所有包含链接至$1的修订',
'spam_deleting' => '正在删除所有包含至$1的版本',
'simpleantispam-label' => "反垃圾检查。
'svg-long-desc' => 'SVG文件,尺寸为$1 × $2像素,文件大小:$3',
'svg-long-desc-animated' => '动画SVG文件,尺寸为$1 × $2像素,文件大小:$3',
'svg-long-error' => '无效的SVG文件:$1',
-'show-big-image' => 'å®\8cæ\95´å\88\86辨ç\8e\87',
+'show-big-image' => 'å\8e\9få§\8bæ\96\87件',
'show-big-image-preview' => '本预览的尺寸:$1。',
'show-big-image-other' => '其他{{PLURAL:$2|分辨率}}:$1。',
'show-big-image-size' => '$1×$2像素',
# External editor support
'edit-externally' => '用外部应用程序编辑本文件',
-'edit-externally-help' => '(更多信息请见[//www.mediawiki.org/wiki/Manual:External_editors 安装说明])',
+'edit-externally-help' => '(更多信息请见[https://www.mediawiki.org/wiki/Manual:External_editors 安装说明])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '所有',
确认码会在$4过期。',
'confirmemail_body_changed' => '拥有IP地址$1的用户(可能是您)在{{SITENAME}}更改了账户“$2”的电子邮箱地址。
-请确认这个账户是属于您的,并同时重新激活在{{SITENAME}}上的电子邮件功能。请
-在浏览器中打开下面的链接:
+要确认此账户确实属于您并同时激活在{{SITENAME}}的电子邮件功能,请在浏览器中打开下面的链接:
$3
'version-hook-subscribedby' => '署名',
'version-version' => '(版本$1)',
'version-license' => '授权协议',
-'version-poweredby-credits' => "本Wiki由'''[//www.mediawiki.org/ MediaWiki]'''驱动,版权所有 © 2001-$1 $2。",
+'version-poweredby-credits' => "本Wiki由'''[https://www.mediawiki.org/ MediaWiki]'''驱动,版权所有 © 2001-$1 $2。",
'version-poweredby-others' => '其他',
'version-poweredby-translators' => 'translatewiki.net上的翻译者',
'version-credits-summary' => '我们感谢下列人士为[[Special:Version|MediaWiki]]作出的贡献。',
# Special:SpecialPages
'specialpages' => '特殊页面',
-'specialpages-note' => '----
-*普通特殊页面。
+'specialpages-note' => '*普通特殊页面。
*<span class="mw-specialpagerestricted">非公开特殊页面。</span>',
'specialpages-group-maintenance' => '维护报告',
'specialpages-group-other' => '其它特殊页面',
'api-error-unclassified' => '出现未知错误。',
'api-error-unknown-code' => '未知错误:$1',
'api-error-unknown-error' => '内部错误:尝试上传文件时出错。',
-'api-error-unknown-warning' => '未知的警告:$1',
+'api-error-unknown-warning' => '未知的警告:“$1”。',
'api-error-unknownerror' => '未知错误:$1。',
'api-error-uploaddisabled' => '该wiki停用上传。',
'api-error-verification-error' => '该文件可能损坏或扩展名错误。',
* @author Xiaomingyan
* @author Yfdyh000
* @author Yuyu
+ * @author 乌拉跨氪
*/
$fallback = 'zh-hans';
'revdelete-hide-comment' => '編輯摘要',
'revdelete-hide-user' => '編輯者的用戶名/IP位址',
'revdelete-hide-restricted' => '同時廢止由操作員以及其他用戶的資料',
-'revdelete-radio-same' => '(不要更改)',
+'revdelete-radio-same' => '(不更改)',
'revdelete-radio-set' => '隱藏',
'revdelete-radio-unset' => '可見',
'revdelete-suppress' => '同時廢止由操作員以及其他用戶的資料',
'mypreferences' => '偏好設定',
'prefs-edits' => '編輯次數:',
'prefsnologin' => '還未登入',
-'prefsnologintext' => '您必須先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>才能設置個人參數。',
'changepassword' => '變更密碼',
'prefs-skin' => '外觀',
'skin-preview' => '預覽',
'email' => '電子郵件',
'prefs-help-realname' => '真實姓名是可選的。
如果您選擇提供它,它會用於貢獻署名。',
-'prefs-help-email' => "<nowiki>*</nowiki> 您不一定要提供電子郵件,但如果您遺失密碼,將'''無法'''再次登入。您可以隨時在此提供電子郵件,或更改資料。如您更改電子郵件,您將需要[[Help:电子邮件确认|重新確認]]。",
+'prefs-help-email' => '电子邮件是可选项,但是在您忘记密码时很有用。',
'prefs-help-email-others' => '您亦可以在您沒有公開自己的用戶身分時透過您的用戶頁或用戶討論頁與您聯繫。',
'prefs-help-email-required' => '電子郵件地址是必填項目。',
'prefs-info' => '基本資料',
'allmessagesdefault' => '預設的訊息文字',
'allmessagescurrent' => '現時的訊息文字',
'allmessagestext' => '這裡列出所有可定製的系統界面。
-如果想貢獻正宗的MediaWiki本地化的話,請參閱[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]以及[//translatewiki.net translatewiki.net]。',
+如果想貢獻正宗的MediaWiki本地化的話,請參閱[https://www.mediawiki.org/wiki/Localisation MediaWiki本地化]以及[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "這個頁面無法使用,因為'''\$wgUseDatabaseMessages'''已被設定關閉。",
'allmessages-filter-legend' => '搜尋',
'allmessages-filter' => '以自定狀況過濾:',
'svg-long-desc' => 'SVG 檔案,表面大小:$1 × $2 像素,檔案大小:$3',
'svg-long-desc-animated' => 'SVG 動畫檔案,表面大小:$1 × $2 像素,檔案大小:$3',
'svg-long-error' => '無效的SVG檔案:$1',
-'show-big-image' => 'å®\8cæ\95´è§£å\83\8f度',
+'show-big-image' => 'å\8e\9få§\8bæª\94æ¡\88',
'show-big-image-preview' => '此預覽的大小:$1.',
'show-big-image-other' => '其他{{PLURAL:$2||}}解析度:$1。',
'show-big-image-size' => '$1 × $2 像素',
# External editor support
'edit-externally' => '用外部程式編輯此檔案',
-'edit-externally-help' => '(請參見[//www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
+'edit-externally-help' => '(請參見[https://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => '全部',
'version-hook-subscribedby' => '利用於',
'version-version' => '(版本 $1)',
'version-license' => '授權',
-'version-poweredby-credits' => "此維基由'''[//www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
+'version-poweredby-credits' => "此維基由'''[https://www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
'version-poweredby-others' => '其他',
'version-poweredby-translators' => 'translatewiki.net 上的翻譯者',
'version-credits-summary' => '我們感謝以下人士為[[Special:Version|MediaWiki]]作出的貢獻。',
# Special:SpecialPages
'specialpages' => '特殊頁面',
-'specialpages-note' => '----
-* 標準特殊頁面。
+'specialpages-note' => '* 標準特殊頁面。
* <strong class="mw-specialpagerestricted">有限制的特殊頁面。</strong>
* <span class="mw-specialpagecached">用於重新整理的特殊頁面(可能過時)。</span>',
'specialpages-group-maintenance' => '維護報告',
* @file
* @since 1.20
*/
-
class CLDRPluralRuleEvaluator {
/**
* Evaluate a number against a set of plural rules. If a rule passes,
* Convert a set of rules to a compiled form which is optimised for
* fast evaluation. The result will be an array of strings, and may be cached.
*
- * @param $rules The rules to compile
- * @return An array of compile rules.
+ * @param array $rules The rules to compile
+ * @return array An array of compile rules.
*/
public static function compile( array $rules ) {
// We can't use array_map() for this because it generates a warning if
/**
* Evaluate a compiled set of rules returned by compile(). Do not allow
* the user to edit the compiled form, or else PHP errors may result.
+ *
+ * @param int The number to be evaluated against the rules
+ * @param array The associative array of plural rules in pluralform => rule format.
+ * @return int The index of the plural form which passed the evaluation
*/
public static function evaluateCompiled( $number, array $rules ) {
// The compiled form is RPN, with tokens strictly delimited by
/**
* Do a single operation
*
- * @param $token string The token string
- * @param $left The left operand. If it is an object, its state may be destroyed.
- * @param $right The right operand
+ * @param string $token The token string
+ * @param mixed $left The left operand. If it is an object, its state may be destroyed.
+ * @param mixed $right The right operand
* @throws CLDRPluralRuleError
- * @return mixed
+ * @return mixed The operation result
*/
private static function doOperation( $token, $left, $right ) {
if ( in_array( $token, array( 'in', 'not-in', 'within', 'not-within' ) ) ) {
* Evaluator helper class representing a range list.
*/
class CLDRPluralRuleEvaluator_Range {
+ /**
+ * The parts
+ *
+ * @var array
+ */
public $parts = array();
+ /**
+ * Initialize a new instance of CLDRPluralRuleEvaluator_Range
+ *
+ * @param int $start The start of the range
+ * @param int|bool $end The end of the range, or false if the range is not bounded.
+ */
function __construct( $start, $end = false ) {
if ( $end === false ) {
$this->parts[] = $start;
}
/**
- * Determine if the given number is inside the range. If $integerConstraint
- * is true, the number must additionally be an integer if it is to match
- * any interval part.
+ * Determine if the given number is inside the range.
+ *
+ * @param int $number The number to check
+ * @param bool $integerConstraint If true, also asserts the number is an integer; otherwise, number simply has to be inside the range.
+ * @return bool True if the number is inside the range; otherwise, false.
*/
function isNumberIn( $number, $integerConstraint = true ) {
foreach ( $this->parts as $part ) {
/**
* Readable alias for isNumberIn( $number, false ), and the implementation
* of the "within" operator.
+ *
+ * @param int $number The number to check
+ * @return bool True if the number is inside the range; otherwise, false.
*/
function isNumberWithin( $number ) {
return $this->isNumberIn( $number, false );
}
/**
- * Add another part to this range. The supplied new part may either be a
- * range object itself, or a single number.
+ * Add another part to this range.
+ *
+ * @param mixed The part to add, either a range object itself or a single number.
*/
function add( $other ) {
if ( $other instanceof self ) {
}
/**
- * For debugging
+ * Returns the string representation of the rule evaluator range.
+ * The purpose of this method is to help debugging.
+ *
+ * @return string The string representation of the rule evaluator range
*/
function __toString() {
$s = 'Range(';
* Helper class for converting rules to reverse polish notation (RPN).
*/
class CLDRPluralRuleConverter {
- public $rule, $pos, $end;
+ /**
+ * The rule
+ *
+ * @var string
+ */
+ public $rule;
+
+ /**
+ * The position
+ *
+ * @var int
+ */
+ public $pos;
+
+ /**
+ * The last position possible
+ *
+ * @var int
+ */
+ public $end;
+
+ /**
+ * The operators
+ *
+ * @var array
+ */
public $operators = array();
+
+ /**
+ * The operands
+ *
+ * @var array
+ */
public $operands = array();
/**
/**
* Convert a rule to RPN. This is the only public entry point.
+ *
+ * @param $rule The rule to convert
+ * @return string The RPN representation of the rule
*/
public static function convert( $rule ) {
$parser = new self( $rule );
/**
* Do the operation.
+ *
+ * @return string The RPN representation of the rule (e.g. "5 3 mod n is")
*/
protected function doConvert() {
$expectOperator = true;
}
/**
- * Fetch the next token from the input string. Return it as a
- * CLDRPluralRuleConverter_Fragment object.
+ * Fetch the next token from the input string.
+ *
+ * @return CLDRPluralRuleConverter_Fragment The next token
*/
protected function nextToken() {
if ( $this->pos >= $this->end ) {
/**
* Create a numerical expression object
+ *
+ * @return CLDRPluralRuleConverter_Expression The numerical expression
*/
protected function newNumber( $text, $pos ) {
return new CLDRPluralRuleConverter_Expression( $this, 'number', $text, $pos, strlen( $text ) );
/**
* Create a binary operator
+ *
+ * @return CLDRPluralRuleConverter_Operator The operator
*/
protected function newOperator( $type, $pos, $length ) {
return new CLDRPluralRuleConverter_Operator( $this, $type, $pos, $length );
* messages), and the binary operator at that location.
*/
class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
+ /**
+ * The name
+ *
+ * @var string
+ */
public $name;
/**
* r = range
*
* A number is a kind of range.
+ *
+ * @var array
*/
static $opTypes = array(
'or' => 'bbb',
/**
* Map converting from the abbrevation to the full form.
+ *
+ * @var array
*/
static $typeSpecMap = array(
'b' => 'boolean',
'r' => 'range',
);
+ /**
+ * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
+ *
+ * @param CLDRPluralRuleConverter $parser The parser
+ * @param string $name The operator name
+ * @param int $pos The position
+ * @param int $pos The length
+ */
function __construct( $parser, $name, $pos, $length ) {
parent::__construct( $parser, $pos, $length );
$this->name = $name;
}
+ /**
+ * Compute the operation
+ *
+ * @param CLDRPluralRuleConverter_Expression $left The left part of the expression
+ * @param CLDRPluralRuleConverter_Expression $right The right part of the expression
+ * @return CLDRPluralRuleConverter_Expression The result of the operation
+ */
public function operate( $left, $right ) {
$typeSpec = self::$opTypes[$this->name];
$this->output( "\n" );
}
-
// Script specific parameters not defined on construction by
// Maintenance::addDefaultParams()
$scriptSpecificParams = array_diff_key(
*/
protected $db;
-
/**
* Drop the database connection $this->db and try to get a new one.
*
throw new MWException( __METHOD__ . " rotating DB failed to obtain new load balancer (" . $e->getMessage() . ")" );
}
-
// 2. The Connection, through the load balancer.
try {
$this->db = $this->lb->getConnection( DB_SLAVE, 'dump' );
}
}
-
function initProgress( $history = WikiExporter::FULL ) {
parent::initProgress();
$this->timeOfCheckpoint = $this->startTime;
return "";
}
-
/**
* May throw a database error if, say, the server dies during query.
* @param $id
}
static function is_win() {
- return substr( php_uname(), 0, 7 ) == 'Windows' ;
+ return substr( php_uname(), 0, 7 ) == 'Windows';
}
// bench function 1
}
$file = $args[0];
print "Loading cdb file $file...";
- $fileHandle = CdbReader::open( $file );
+ try {
+ $fileHandle = CdbReader::open( $file );
+ } catch( CdbException $e ) {}
+
if ( !$fileHandle ) {
print "not a cdb file or unable to read it\n";
} else {
print "Need to specify a key, Luke\n";
break;
}
- $res = $fileHandle->get( $args[0] );
+ try {
+ $res = $fileHandle->get( $args[0] );
+ } catch ( CdbException $e ) {
+ print "Unable to read key from file\n";
+ }
if ( $res === false ) {
print "No such key/value pair\n";
} elseif ( is_string( $res ) ) {
prefs
prefsection
prefsnologin
-prefsnologintext
+prefsnologintext2
prefsubmit
preload
preloads
if ( $maintenance->getDbType() === Maintenance::DB_NONE ) {
if ( $wgLocalisationCacheConf['storeClass'] === false && ( $wgLocalisationCacheConf['store'] == 'db' || ( $wgLocalisationCacheConf['store'] == 'detect' && !$wgCacheDirectory ) ) ) {
- $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+ $wgLocalisationCacheConf['storeClass'] = 'LCStoreNull';
}
}
$maintenance->finalSetup();
if ( $this->getDbType() == Maintenance::DB_NONE ) {
global $wgUseDatabaseMessages, $wgLocalisationCacheConf, $wgHooks;
$wgUseDatabaseMessages = false;
- $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+ $wgLocalisationCacheConf['storeClass'] = 'LCStoreNull';
$wgHooks['InterwikiLoadPrefix'][] = 'DumpIterator::disableInterwikis';
}
}
require_once __DIR__ . '/commandLine.inc';
require_once __DIR__ . '/backupTextPass.inc';
-
$dumper = new TextPassDumper( $argv );
if ( !isset( $options['help'] ) ) {
$this->mSharedSupplement = true;
}
}
- $this-> { $this->mAction } ( $this->mShared );
+ $this->{ $this->mAction } ( $this->mShared );
if ( $this->mSharedSupplement ) {
$this->fetchUsed( true );
}
+++ /dev/null
-<?php
-/**
- * Performs fuzz-style testing of MediaWiki's parser and forms.
- *
- * Copyright © 2006 Nick Jenkins
- *
- * 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 Maintenance
- * @author Nick Jenkins ( http://nickj.org/ ).
-
-
-Started: 18 May 2006.
-
-Description:
- Performs fuzz-style testing of MediaWiki's parser and forms.
-
-How:
- - Generate lots of nasty wiki text.
- - Ask the Parser to render that wiki text to HTML, or ask MediaWiki's forms
- to deal with that wiki text.
- - Check MediaWiki's output for problems.
- - Repeat.
-
-Why:
- - To help find bugs.
- - To help find security issues, or potential security issues.
-
-What type of problems are being checked for:
- - Unclosed tags.
- - Errors or interesting warnings from Tidy.
- - PHP errors / warnings / notices.
- - MediaWiki internal errors.
- - Very slow responses.
- - No response from apache.
- - Optionally checking for malformed HTML using the W3C validator.
-
-Background:
- Many of the wikiFuzz class methods are a modified PHP port,
- of a "shameless" Python port, of LCAMTUF'S MANGELME:
- - http://www.securiteam.com/tools/6Z00N1PBFK.html
- - http://www.securityfocus.com/archive/1/378632/2004-10-15/2004-10-21/0
-
-Video:
- There's an XviD video discussing this fuzz tester. You can get it from:
- http://files.nickj.org/MediaWiki/Fuzz-Testing-MediaWiki-xvid.avi
-
-Requirements:
- To run this, you will need:
- - Command-line PHP5, with PHP-curl enabled (not all installations have this
- enabled - try "apt-get install php5-curl" if you're on Debian to install).
- - the Tidy standalone executable. ("apt-get install tidy").
-
-Optional:
- - If you want to run the curl scripts, you'll need standalone curl installed
- ("apt-get install curl")
- - For viewing the W3C validator output on a command line, the "html2text"
- program may be useful ("apt-get install html2text")
-
-Saving tests and test results:
- Any of the fuzz tests which find problems are saved for later review.
- In order to help track down problems, tests are saved in a number of
- different formats. The default filename extensions and their meanings are:
- - ".test.php" : PHP script that reproduces just that one problem using PHP-Curl.
- - ".curl.sh" : Shell script that reproduces that problem using standalone curl.
- - ".data.bin" : The serialized PHP data so that this script can re-run the test.
- - ".info.txt" : A human-readable text file with details of the field contents.
-
-Wiki configuration for testing:
- You should make some additions to LocalSettings.php in order to catch the most
- errors. Note this configuration is for **TESTING PURPOSES ONLY**, and is IN NO
- WAY, SHAPE, OR FORM suitable for deployment on a hostile network. That said,
- personally I find these additions to be the most helpful for testing purposes:
-
- // --------- Start ---------
- // Everyone can do everything. Very useful for testing, yet useless for deployment.
- $wgGroupPermissions['*']['autoconfirmed'] = true;
- $wgGroupPermissions['*']['block'] = true;
- $wgGroupPermissions['*']['bot'] = true;
- $wgGroupPermissions['*']['delete'] = true;
- $wgGroupPermissions['*']['deletedhistory'] = true;
- $wgGroupPermissions['*']['deleterevision'] = true;
- $wgGroupPermissions['*']['editinterface'] = true;
- $wgGroupPermissions['*']['hiderevision'] = true;
- $wgGroupPermissions['*']['import'] = true;
- $wgGroupPermissions['*']['importupload'] = true;
- $wgGroupPermissions['*']['minoredit'] = true;
- $wgGroupPermissions['*']['move'] = true;
- $wgGroupPermissions['*']['patrol'] = true;
- $wgGroupPermissions['*']['protect'] = true;
- $wgGroupPermissions['*']['proxyunbannable'] = true;
- $wgGroupPermissions['*']['renameuser'] = true;
- $wgGroupPermissions['*']['reupload'] = true;
- $wgGroupPermissions['*']['reupload-shared'] = true;
- $wgGroupPermissions['*']['rollback'] = true;
- $wgGroupPermissions['*']['siteadmin'] = true;
- $wgGroupPermissions['*']['unwatchedpages'] = true;
- $wgGroupPermissions['*']['upload'] = true;
- $wgGroupPermissions['*']['userrights'] = true;
- $wgGroupPermissions['*']['renameuser'] = true;
- $wgGroupPermissions['*']['makebot'] = true;
- $wgGroupPermissions['*']['makesysop'] = true;
-
- // Enable weird and wonderful options:
- // Increase default error reporting level.
- error_reporting (E_ALL); // At a later date could be increased to E_ALL | E_STRICT
- $wgEnableUploads = true; // enable uploads.
- $wgDBerrorLog = "/root/mediawiki-db-error-log.txt"; // log DB errors, replace with suitable path.
- $wgShowSQLErrors = true; // Show SQL errors (instead of saying the query was hidden).
- $wgShowExceptionDetails = true; // want backtraces.
- $wgEnableAPI = true; // enable API.
- $wgEnableWriteAPI = true; // enable API.
-
- // Install & enable Parser Hook extensions to increase code coverage. E.g.:
- require_once "extensions/ParserFunctions/ParserFunctions.php";
- require_once "extensions/Cite/Cite.php";
- require_once "extensions/inputbox/inputbox.php";
- require_once "extensions/Sort/Sort.php";
- require_once "extensions/wikihiero/wikihiero.php";
- require_once "extensions/CharInsert/CharInsert.php";
- require_once "extensions/FixedImage/FixedImage.php";
-
- // Install & enable Special Page extensions to increase code coverage. E.g.:
- require_once "extensions/Cite/SpecialCite.php";
- require_once "extensions/Renameuser/SpecialRenameuser.php";
- // --------- End ---------
-
- If you want to try E_STRICT error logging, add this to the above:
- // --------- Start ---------
- error_reporting (E_ALL | E_STRICT);
- set_error_handler( 'error_handler' );
- function error_handler ($type, $message, $file=__FILE__, $line=__LINE__) {
- if ($message == "var: Deprecated. Please use the public/private/protected modifiers") return;
- print "<br />\n<b>Strict Standards:</b> Type: <b>$type</b>: $message in <b>$file</b> on line <b>$line</b><br />\n";
- }
- // --------- End ---------
-
- Also add/change this in LocalSettings.php:
- // --------- Start ---------
- $wgEnableProfileInfo = true;
- $wgDBserver = "localhost"; // replace with DB server hostname
- // --------- End ---------
-
-Usage:
- Run with "php fuzz-tester.php".
- To see the various command-line options, run "php fuzz-tester.php --help".
- To stop the script, press Ctrl-C.
-
-Console output:
- - If requested, first any previously failed tests will be rerun.
- - Then new tests will be generated and run. Any tests that fail will be saved,
- and a brief message about why they failed will be printed on the console.
- - The console will show the number of tests run, time run, number of tests
- failed, number of tests being done per minute, and the name of the current test.
-
-TODO:
- Some known things that could improve this script:
- - Logging in with cookie jar storage needed for some tests (as there are some
- pages that cannot be tested without being logged in, and which are currently
- untested - e.g. Special:Emailuser, Special:Preferences, adding to Watchist).
- - Testing of Timeline extension (I cannot test as ploticus has/had issues on
- my architecture).
-
-*/
-
-// ///////////////////////// COMMAND LINE HELP ////////////////////////////////////
-
-// This is a command line script, load MediaWiki env (gives command line options);
-require_once __DIR__ . '/commandLine.inc';
-
-// if the user asked for an explanation of command line options.
-if ( isset( $options["help"] ) ) {
- print <<<ENDS
-MediaWiki $wgVersion fuzz tester
-Usage: php {$_SERVER["SCRIPT_NAME"]} [--quiet] [--base-url=<url-to-test-wiki>]
- [--directory=<failed-test-path>] [--include-binary]
- [--w3c-validate] [--delete-passed-retests] [--help]
- [--user=<username>] [--password=<password>]
- [--rerun-failed-tests] [--max-errors=<int>]
- [--max-runtime=<num-minutes>]
- [--specific-test=<test-name>]
-
-Options:
- --quiet : Hides passed tests, shows only failed tests.
- --base-url : URL to a wiki on which to run the tests.
- The "http://" is optional and can be omitted.
- --directory : Full path to directory for storing failed tests.
- Will be created if it does not exist.
- --include-binary : Includes non-alphanumeric characters in the tests.
- --w3c-validate : Validates pages using the W3C's web validator.
- Slow. Currently many pages fail validation.
- --user : Login name of a valid user on your test wiki.
- --password : Password for the valid user on your test wiki.
- --delete-passed-retests : Will delete retests that now pass.
- Requires --rerun-failed-tests to be meaningful.
- --rerun-failed-tests : Whether to rerun any previously failed tests.
- --max-errors : Maximum number of errors to report before exiting.
- Does not include errors from --rerun-failed-tests
- --max-runtime : Maximum runtime, in minutes, to run before exiting.
- Only applies to new tests, not --rerun-failed-tests
- --specific-test : Runs only the specified fuzz test.
- Only applies to new tests, not --rerun-failed-tests
- --keep-passed-tests : Saves all test files, even those that pass.
- --help : Show this help message.
-
-Example:
- If you wanted to fuzz test a nightly MediaWiki checkout using cron for 1 hour,
- and only wanted to be informed of errors, and did not want to redo previously
- failed tests, and wanted a maximum of 100 errors, then you could do:
- php {$_SERVER["SCRIPT_NAME"]} --quiet --max-errors=100 --max-runtime=60
-
-
-ENDS;
-
- exit( 0 );
-}
-
-
-// if we got command line options, check they look valid.
-$validOptions = array ( "quiet", "base-url", "directory", "include-binary",
- "w3c-validate", "user", "password", "delete-passed-retests",
- "rerun-failed-tests", "max-errors",
- "max-runtime", "specific-test", "keep-passed-tests", "help" );
-if ( !empty( $options ) ) {
- $unknownArgs = array_diff ( array_keys( $options ), $validOptions );
- foreach ( $unknownArgs as $invalidArg ) {
- print "Ignoring invalid command-line option: --$invalidArg\n";
- }
-}
-
-
-// /////////////////////////// CONFIGURATION ////////////////////////////////////
-
-// URL to some wiki on which we can run our tests.
-if ( !empty( $options["base-url"] ) ) {
- define( "WIKI_BASE_URL", $options["base-url"] );
-} else {
- define( "WIKI_BASE_URL", $wgServer . $wgScriptPath . '/' );
-}
-
-// The directory name where we store the output.
-// Example for Windows: "c:\\temp\\wiki-fuzz"
-if ( !empty( $options["directory"] ) ) {
- define( "DIRECTORY", $options["directory"] );
-} else {
- define( "DIRECTORY", "{$wgUploadDirectory}/fuzz-tests" );
-}
-
-// Should our test fuzz data include binary strings?
-define( "INCLUDE_BINARY", isset( $options["include-binary"] ) );
-
-// Whether we want to validate HTML output on the web.
-// At the moment very few generated pages will validate, so not recommended.
-define( "VALIDATE_ON_WEB", isset( $options["w3c-validate"] ) );
-// URL to use to validate our output:
-define( "VALIDATOR_URL", "http://validator.w3.org/check" );
-
-// Location of Tidy standalone executable.
-define( "PATH_TO_TIDY", "/usr/bin/tidy" );
-
-// The name of a user who has edited on your wiki. Used
-// when testing the Special:Contributions and Special:Userlogin page.
-if ( !empty( $options["user"] ) ) {
- define( "USER_ON_WIKI", $options["user"] );
-} else {
- define( "USER_ON_WIKI", "nickj" );
-}
-
-// The password of the above user. Used when testing the login page,
-// and to do this we sometimes need to login successfully.
-if ( !empty( $options["password"] ) ) {
- define( "USER_PASSWORD", $options["password"] );
-} else {
- // And no, this is not a valid password on any public wiki.
- define( "USER_PASSWORD", "nickj" );
-}
-
-// If we have a test that failed, and then we run it again, and it passes,
-// do you want to delete it or keep it?
-define( "DELETE_PASSED_RETESTS", isset( $options["delete-passed-retests"] ) );
-
-// Do we want to rerun old saved tests at script startup?
-// Set to true to help catch regressions, or false if you only want new stuff.
-define( "RERUN_OLD_TESTS", isset( $options["rerun-failed-tests"] ) );
-
-// File where the database errors are logged. Should be defined in LocalSettings.php.
-define( "DB_ERROR_LOG_FILE", $wgDBerrorLog );
-
-// Run in chatty mode (all output, default), or run in quiet mode (only prints out details of failed tests)?
-define( "QUIET", isset( $options["quiet"] ) );
-
-// Keep all test files, even those that pass. Potentially useful to tracking input that causes something
-// unusual to happen, if you don't know what "unusual" is until later.
-define( "KEEP_PASSED_TESTS", isset( $options["keep-passed-tests"] ) );
-
-// The maximum runtime, if specified.
-if ( !empty( $options["max-runtime"] ) && intval( $options["max-runtime"] ) > 0 ) {
- define( "MAX_RUNTIME", intval( $options["max-runtime"] ) );
-}
-
-// The maximum number of problems to find, if specified. Excludes retest errors.
-if ( !empty( $options["max-errors"] ) && intval( $options["max-errors"] ) > 0 ) {
- define( "MAX_ERRORS", intval( $options["max-errors"] ) );
-}
-
-// if the user has requested a specific test (instead of all tests), and the test they asked for looks valid.
-if ( !empty( $options["specific-test"] ) ) {
- if ( class_exists( $options["specific-test"] ) && get_parent_class( $options["specific-test"] ) == "pageTest" ) {
- define( "SPECIFIC_TEST", $options["specific-test"] );
- }
- else {
- print "Ignoring invalid --specific-test\n";
- }
-}
-
-// Define the file extensions we'll use:
-define( "PHP_TEST" , ".test.php" );
-define( "CURL_TEST", ".curl.sh" );
-define( "DATA_FILE", ".data.bin" );
-define( "INFO_FILE", ".info.txt" );
-define( "HTML_FILE", ".wiki_preview.html" );
-
-// If it goes wrong, we want to know about it.
-error_reporting( E_ALL | E_STRICT );
-
-// ////////////// A CLASS THAT GENERATES RANDOM NASTY WIKI & HTML STRINGS //////////////////////
-
-class wikiFuzz {
-
- // Only some HTML tags are understood with params by MediaWiki, the rest are ignored.
- // List the tags that accept params below, as well as what those params are.
- public static $data = array(
- "B" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "CAPTION" => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
- "CENTER" => array( "CLASS", "STYLE", "ID", "lang", "dir", "title" ),
- "DIV" => array( "CLASS", "STYLE", "ID", "align", "lang", "dir", "title" ),
- "FONT" => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "face", "size", "color" ),
- "H1" => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
- "H2" => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
- "HR" => array( "STYLE", "CLASS", "ID", "WIDTH", "lang", "dir", "title", "size", "noshade" ),
- "LI" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "value" ),
- "TABLE" => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "BORDER", "CELLPADDING",
- "CELLSPACING", "lang", "dir", "title", "summary", "frame", "rules" ),
- "TD" => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
- "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
- "dir", "title", "char", "charoff" ),
- "TH" => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
- "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
- "dir", "title", "char", "charoff" ),
- "TR" => array( "CLASS", "STYLE", "ID", "BGCOLOR", "ALIGN", "VALIGN", "lang", "dir", "title", "char", "charoff" ),
- "UL" => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "type" ),
- "P" => array( "style", "class", "id", "align", "lang", "dir", "title" ),
- "blockquote" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "cite" ),
- "span" => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
- "code" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "tt" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "small" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "big" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "s" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "u" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "del" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
- "ins" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
- "sub" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "sup" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "ol" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "start" ),
- "br" => array( "CLASS", "ID", "STYLE", "title", "clear" ),
- "cite" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "var" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "ruby" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "rt" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "rp" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "dt" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "dl" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "em" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "strong" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "i" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
- "thead" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", 'align', 'char', 'charoff', 'valign' ),
- "tfoot" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", 'align', 'char', 'charoff', 'valign' ),
- "tbody" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", 'align', 'char', 'charoff', 'valign' ),
- "colgroup" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", 'align', 'char', 'charoff', 'valign', 'span', 'width' ),
- "col" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", 'align', 'char', 'charoff', 'valign', 'span', 'width' ),
- "pre" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "width" ),
-
- // extension tags that accept parameters:
- "sort" => array( "order", "class" ),
- "ref" => array( "name" ),
- "categorytree" => array( "hideroot", "mode", "style" ),
- "chemform" => array( "link", "wikilink", "query" ),
- "section" => array( "begin", "new" ),
-
- // older MW transclusion.
- "transclude" => array( "page" ),
- );
-
- // The types of the HTML that we will be testing were defined above
- // Note: this needs to be initialized later to be equal to: array_keys(wikiFuzz::$data);
- // as such, it also needs to also be publicly modifiable.
- public static $types;
-
-
- // Some attribute values.
- static private $other = array( "&", "=", ":", "?", "\"", "\n", "%n%n%n%n%n%n%n%n%n%n%n%n", "\\" );
- static private $ints = array(
- // various numbers
- "0", "-1", "127", "-7897", "89000", "808080", "90928345",
- "0xfffffff", "ffff",
-
- // Different ways of saying: '
- "'", // Long UTF-8 Unicode encoding
- "'", // dec version.
- "'", // hex version.
- "§", // malformed hex variant, MSB not zero.
-
- // Different ways of saying: "
- """, // Long UTF-8 Unicode encoding
- """,
- """, // hex version.
- "¢", // malformed hex variant, MSB not zero.
-
- // Different ways of saying: <
- "<",
- "<", // Long UTF-8 Unicode encoding without semicolon (Mediawiki wants the colon)
- "<", // Long UTF-8 Unicode encoding with semicolon
- "<",
- "<", // hex version.
- "¼", // malformed hex variant, MSB not zero.
- "<", // mid-length hex version
- "<", // slightly longer hex version, with capital "X"
-
- // Different ways of saying: >
- ">",
- ">", // Long UTF-8 Unicode encoding
- ">",
- ">", // hex version.
- "¾", // malformed variant, MSB not zero.
-
- // Different ways of saying: [
- "[", // Long UTF-8 Unicode encoding
- "[",
- "[", // hex version.
-
- // Different ways of saying: {{
- "{{", // Long UTF-8 Unicode encoding
- "{{",
- "{{", // hex version.
-
- // Different ways of saying: |
- "|", // Long UTF-8 Unicode encoding
- "|",
- "|", // hex version.
- "ü", // malformed hex variant, MSB not zero.
-
- // a "lignature" - http://www.robinlionheart.com/stds/html4/spchars#ligature
- // ‌ == ‌
- "‌"
- );
-
- // Defines various wiki-related bits of syntax, that can potentially cause
- // MediaWiki to do something other than just print that literal text.
- static private $ext = array(
- // links, templates, parameters.
- "[[", "]]", "{{", "}}", "|", "[", "]", "{{{", "}}}", "|]]",
-
- // wiki tables.
- "\n{|", "\n|}",
- "!",
- "\n!",
- "!!",
- "||",
- "\n|-", "| ", "\n|",
-
- // section headings.
- "=", "==", "===", "====", "=====", "======",
-
- // lists (ordered and unordered) and indentation.
- "\n*", "*", "\n:", ":",
- "\n#", "#",
-
- // definition lists (dl, dt, dd), newline, and newline with pre, and a tab.
- "\n;", ";", "\n ",
-
- // Whitespace: newline, tab, space.
- "\n", "\t", " ",
-
- // Some XSS attack vectors from http://ha.ckers.org/xss.html
- "	", // tab
- "
", // newline
- "
", // carriage return
- "\0", // null character
- "  ", // spaces and meta characters
- "'';!--\"<XSS>=&{()}", // compact injection of XSS & SQL tester
-
- // various NULL fields
- "%00",
- "�",
- "\0",
-
- // horizontal rule.
- "-----", "\n-----",
-
- // signature, redirect, bold, italics.
- "~~~~", "#REDIRECT [[", "'''", "''",
-
- // comments.
- "<!--", "-->",
-
- // quotes.
- "\"", "'",
-
- // tag start and tag end.
- "<", ">",
-
- // implicit link creation on URIs.
- "http://",
- "https://",
- "ftp://",
- "irc://",
- "news:",
- 'gopher://',
- 'telnet://',
- 'nntp://',
- 'worldwind://',
- 'mailto:',
-
- // images.
- "[[image:",
- ".gif",
- ".png",
- ".jpg",
- ".jpeg",
- 'thumbnail=',
- 'thumbnail',
- 'thumb=',
- 'thumb',
- 'right',
- 'none',
- 'left',
- 'framed',
- 'frame',
- 'enframed',
- 'centre',
- 'center',
- "Image:",
- "[[:Image",
- 'px',
- 'upright=',
- 'border',
-
- // misc stuff to throw at the Parser.
- '%08X',
- '/',
- ":x{|",
- "\n|+",
- "<noinclude>",
- "</noinclude>",
- " \302\273",
- " :",
- " !",
- " ;",
- "\302\253",
- "[[category:",
- "?=",
- "(",
- ")",
- "]]]",
- "../",
- "{{{{",
- "}}}}",
- "[[Special:",
- "<includeonly>",
- "</includeonly>",
- "<!--MWTEMPLATESECTION=",
- '<!--MWTOC-->',
-
- // implicit link creation on booknum, RFC, and PubMed ID usage (both with and without IDs)
- "ISBN 2",
- "RFC 000",
- "PMID 000",
- "ISBN ",
- "RFC ",
- "PMID ",
-
- // magic words:
- '__NOTOC__',
- '__FORCETOC__',
- '__NOEDITSECTION__',
- '__START__',
- '__NOTITLECONVERT__',
- '__NOCONTENTCONVERT__',
- '__END__',
- '__TOC__',
- '__NOTC__',
- '__NOCC__',
- "__FORCETOC__",
- "__NEWSECTIONLINK__",
- "__NOGALLERY__",
-
- // more magic words / internal templates.
- '{{PAGENAME}}',
- '{{PAGENAMEE}}',
- '{{NAMESPACE}}',
- "{{MSG:",
- "}}",
- "{{MSGNW:",
- "}}",
- "{{INT:",
- "}}",
- '{{SITENAME}}',
- "{{NS:",
- "}}",
- "{{LOCALURL:",
- "}}",
- "{{LOCALURLE:",
- "}}",
- "{{SCRIPTPATH}}",
- "{{GRAMMAR:gentiv|",
- "}}",
- "{{REVISIONID}}",
- "{{SUBPAGENAME}}",
- "{{SUBPAGENAMEE}}",
- "{{ns:0}}",
- "{{fullurle:",
- "}}",
- "{{subst::",
- "}}",
- "{{UCFIRST:",
- "}}",
- "{{UC:",
- '{{SERVERNAME}}',
- '{{SERVER}}',
- "{{RAW:",
- "}}",
- "{{PLURAL:",
- "}}",
- "{{LCFIRST:",
- "}}",
- "{{LC:",
- "}}",
- '{{CURRENTWEEK}}',
- '{{CURRENTDOW}}',
- "{{INT:{{LC:contribs-showhideminor}}|",
- "}}",
- "{{INT:googlesearch|",
- "}}",
- "{{ROOTPAGENAME}}",
- "{{BASEPAGENAME}}",
- "{{CONTENTLANGUAGE}}",
- "{{PAGESINNAMESPACE:}}",
- "{{#language:",
- "}}",
- "{{#special:",
- "}}",
- "{{#special:emailuser",
- "}}",
-
- // Some raw link for magic words.
- "{{NUMBEROFPAGES:R",
- "}}",
- "{{NUMBEROFUSERS:R",
- "}}",
- "{{NUMBEROFARTICLES:R",
- "}}",
- "{{NUMBEROFFILES:R",
- "}}",
- "{{NUMBEROFADMINS:R",
- "}}",
- "{{padleft:",
- "}}",
- "{{padright:",
- "}}",
- "{{DEFAULTSORT:",
- "}}",
-
- // internal Math "extension":
- "<math>",
- "</math>",
-
- // Parser extension functions:
- "{{#expr:",
- "{{#if:",
- "{{#ifeq:",
- "{{#ifexist:",
- "{{#ifexpr:",
- "{{#switch:",
- "{{#time:",
- "}}",
-
- // references table for the Cite extension.
- "<references/>",
-
- // Internal Parser tokens - try inserting some of these.
- "UNIQ25f46b0524f13e67NOPARSE",
- "UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002",
- "\x07UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002-QINU",
-
- // Inputbox extension:
- "<inputbox>\ntype=search\nsearchbuttonlabel=\n",
- "</inputbox>",
-
- // charInsert extension:
- "<charInsert>",
- "</charInsert>",
-
- // wikiHiero extension:
- "<hiero>",
- "</hiero>",
-
- // Image gallery:
- "<gallery>",
- "</gallery>",
-
- // FixedImage extension.
- "<fundraising/>",
-
- // Timeline extension: currently untested.
-
- // Nowiki:
- "<nOwIkI>",
- "</nowiki>",
-
- // an external image to test the external image displaying code
- "http://debian.org/Pics/debian.png",
-
- // LabeledSectionTransclusion extension.
- "{{#lstx:",
- "}}",
- "{{#lst:",
- "}}",
- "{{#lst:Main Page|",
- "}}"
- );
-
- /**
- ** Randomly returns one element of the input array.
- */
- public static function chooseInput( array $input ) {
- $randindex = wikiFuzz::randnum( count( $input ) - 1 );
- return $input[$randindex];
- }
-
- // Max number of parameters for HTML attributes.
- static private $maxparams = 10;
-
- /**
- * Returns random number between finish and start.
- * @param $finish
- * @param $start int
- * @return int
- */
- public static function randnum( $finish, $start = 0 ) {
- return mt_rand( $start, $finish );
- }
-
- /**
- * Returns a mix of random text and random wiki syntax.
- * @return string
- */
- private static function randstring() {
- $thestring = "";
-
- for ( $i = 0; $i < 40; $i++ ) {
- $what = wikiFuzz::randnum( 1 );
-
- if ( $what == 0 ) { // include some random wiki syntax
- $which = wikiFuzz::randnum( count( wikiFuzz::$ext ) - 1 );
- $thestring .= wikiFuzz::$ext[$which];
- }
- else { // include some random text
- $char = INCLUDE_BINARY
- // Decimal version:
- // "&#" . wikiFuzz::randnum(255) . ";"
- // Hex version:
- ? "&#x" . str_pad( dechex( wikiFuzz::randnum( 255 ) ), wikiFuzz::randnum( 2, 7 ), "0", STR_PAD_LEFT ) . ";"
- // A truly binary version:
- // ? chr(wikiFuzz::randnum(0,255))
- : chr( wikiFuzz::randnum( 126, 32 ) );
-
- $length = wikiFuzz::randnum( 8 );
- $thestring .= str_repeat ( $char, $length );
- }
- }
- return $thestring;
- }
-
- /**
- * Returns either random text, or random wiki syntax, or random data from "ints",
- * or random data from "other".
- * @return string
- */
- private static function makestring() {
- $what = wikiFuzz::randnum( 2 );
- if ( $what == 0 ) {
- return wikiFuzz::randstring();
- } elseif ( $what == 1 ) {
- return wikiFuzz::$ints[wikiFuzz::randnum( count( wikiFuzz::$ints ) - 1 )];
- } else {
- return wikiFuzz::$other[wikiFuzz::randnum( count( wikiFuzz::$other ) - 1 )];
- }
- }
-
- /**
- * Returns the matched character slash-escaped as in a C string
- * Helper for makeTitleSafe callback
- * @param $matches
- * @return string
- */
- private static function stringEscape( $matches ) {
- return sprintf( "\\x%02x", ord( $matches[1] ) );
- }
-
- /**
- ** Strips out the stuff that Mediawiki balks at in a page's title.
- ** Implementation copied/pasted from cleanupTable.inc & cleanupImages.php
- * @param $str string
- * @return string
- */
- public static function makeTitleSafe( $str ) {
- $legalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF";
- return preg_replace_callback(
- "/([^$legalTitleChars])/", 'wikiFuzz::stringEscape',
- $str );
- }
-
- /**
- ** Returns a string of fuzz text.
- * @return string
- */
- private static function loop() {
- switch ( wikiFuzz::randnum( 3 ) ) {
- case 1: // an opening tag, with parameters.
- $string = "";
- $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
- $t = wikiFuzz::$types[$i];
- $arr = wikiFuzz::$data[$t];
- $string .= "<" . $t . " ";
- $num_params = min( wikiFuzz::$maxparams, count( $arr ) );
- for ( $z = 0; $z < $num_params; $z++ ) {
- $badparam = $arr[wikiFuzz::randnum( count( $arr ) - 1 )];
- $badstring = wikiFuzz::makestring();
- $string .= $badparam . "=" . wikiFuzz::getRandQuote() . $badstring . wikiFuzz::getRandQuote() . " ";
- }
- $string .= ">\n";
- return $string;
- case 2: // a closing tag.
- $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
- return "</" . wikiFuzz::$types[$i] . ">";
- case 3: // a random string, between tags.
- return wikiFuzz::makeString();
- }
- return ""; // catch-all, should never be called.
- }
-
- /**
- * Returns one of the three styles of random quote: ', ", and nothing.
- * @return string
- */
- private static function getRandQuote() {
- switch ( wikiFuzz::randnum( 3 ) ) {
- case 1 : return "'";
- case 2 : return "\"";
- default: return "";
- }
- }
-
- /**
- ** Returns fuzz text, with the parameter indicating approximately how many lines of text you want.
- * @param $maxtypes int
- * @return string
- */
- public static function makeFuzz( $maxtypes = 2 ) {
- $page = "";
- for ( $k = 0; $k < $maxtypes; $k++ ) {
- $page .= wikiFuzz::loop();
- }
- return $page;
- }
-}
-
-
-// ////// MEDIAWIKI PAGES TO TEST, AND HOW TO TEST THEM ///////
-
-/**
- ** A page test has just these things:
- ** 1) Form parameters.
- ** 2) the URL we are going to test those parameters on.
- ** 3) Any cookies required for the test.
- ** 4) Whether Tidy should validate the page. Defaults to true, but can be turned off.
- ** Declared abstract because it should be extended by a class
- ** that supplies these parameters.
- */
-abstract class pageTest {
- protected $params;
- protected $pagePath;
- protected $cookie = "";
- protected $tidyValidate = true;
-
- public function getParams() {
- return $this->params;
- }
-
- public function getPagePath() {
- return $this->pagePath;
- }
-
- public function getCookie() {
- return $this->cookie;
- }
-
- public function tidyValidate() {
- return $this->tidyValidate;
- }
-}
-
-
-/**
- ** a page test for the "Edit" page. Tests Parser.php and Sanitizer.php.
- */
-class editPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=WIKIFUZZ";
-
- $this->params = array (
- "action" => "submit",
- "wpMinoredit" => wikiFuzz::makeFuzz( 2 ),
- "wpPreview" => wikiFuzz::makeFuzz( 2 ),
- "wpSection" => wikiFuzz::makeFuzz( 2 ),
- "wpEdittime" => wikiFuzz::makeFuzz( 2 ),
- "wpSummary" => wikiFuzz::makeFuzz( 2 ),
- "wpScrolltop" => wikiFuzz::makeFuzz( 2 ),
- "wpStarttime" => wikiFuzz::makeFuzz( 2 ),
- "wpAutoSummary" => wikiFuzz::makeFuzz( 2 ),
- "wpTextbox1" => wikiFuzz::makeFuzz( 40 ) // the main wiki text, need lots of this.
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSection"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEdittime"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSummary"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpScrolltop"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpStarttime"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpAutoSummary"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpTextbox1"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Listusers".
- */
-class listusersTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Listusers";
-
- $this->params = array (
- "title" => wikiFuzz::makeFuzz( 2 ),
- "group" => wikiFuzz::makeFuzz( 2 ),
- "username" => wikiFuzz::makeFuzz( 2 ),
- "Go" => wikiFuzz::makeFuzz( 2 ),
- "limit" => wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "offset" => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Search".
- */
-class searchTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Search";
-
- $this->params = array (
- "action" => "index.php?title=Special:Search",
- "ns0" => wikiFuzz::makeFuzz( 2 ),
- "ns1" => wikiFuzz::makeFuzz( 2 ),
- "ns2" => wikiFuzz::makeFuzz( 2 ),
- "ns3" => wikiFuzz::makeFuzz( 2 ),
- "ns4" => wikiFuzz::makeFuzz( 2 ),
- "ns5" => wikiFuzz::makeFuzz( 2 ),
- "ns6" => wikiFuzz::makeFuzz( 2 ),
- "ns7" => wikiFuzz::makeFuzz( 2 ),
- "ns8" => wikiFuzz::makeFuzz( 2 ),
- "ns9" => wikiFuzz::makeFuzz( 2 ),
- "ns10" => wikiFuzz::makeFuzz( 2 ),
- "ns11" => wikiFuzz::makeFuzz( 2 ),
- "ns12" => wikiFuzz::makeFuzz( 2 ),
- "ns13" => wikiFuzz::makeFuzz( 2 ),
- "ns14" => wikiFuzz::makeFuzz( 2 ),
- "ns15" => wikiFuzz::makeFuzz( 2 ),
- "redirs" => wikiFuzz::makeFuzz( 2 ),
- "search" => wikiFuzz::makeFuzz( 2 ),
- "offset" => wikiFuzz::chooseInput( array( "", "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) ),
- "fulltext" => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) ),
- "searchx" => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Recentchanges".
- */
-class recentchangesTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Recentchanges";
-
- $this->params = array (
- "action" => wikiFuzz::makeFuzz( 2 ),
- "title" => wikiFuzz::makeFuzz( 2 ),
- "namespace" => wikiFuzz::chooseInput( range( -1, 15 ) ),
- "Go" => wikiFuzz::makeFuzz( 2 ),
- "invert" => wikiFuzz::chooseInput( array( "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "hideanons" => wikiFuzz::chooseInput( array( "-1", "------'-------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- 'limit' => wikiFuzz::chooseInput( array( "0", "-1", "---------'----0", "+1", "81340909772349234", wikiFuzz::makeFuzz( 2 ) ) ),
- "days" => wikiFuzz::chooseInput( array( "-1", "----------'---0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "hideminor" => wikiFuzz::chooseInput( array( "-1", "-----------'--0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "hidebots" => wikiFuzz::chooseInput( array( "-1", "---------'----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "hideliu" => wikiFuzz::chooseInput( array( "-1", "-------'------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "hidepatrolled" => wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "hidemyself" => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- 'categories_any' => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- 'categories' => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- 'feed' => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Prefixindex".
- */
-class prefixindexTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Prefixindex";
-
- $this->params = array (
- "title" => "Special:Prefixindex",
- "namespace" => wikiFuzz::randnum( 101, -10 ),
- "Go" => wikiFuzz::makeFuzz( 2 )
- );
-
- // sometimes we want 'prefix', sometimes we want 'from', and sometimes we want nothing.
- if ( wikiFuzz::randnum( 3 ) == 0 ) {
- $this->params["prefix"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
- wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
- }
- if ( wikiFuzz::randnum( 3 ) == 0 ) {
- $this->params["from"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
- wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
- }
- }
-}
-
-
-/**
- ** a page test for "Special:MIMEsearch".
- */
-class mimeSearchTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:MIMEsearch";
-
- $this->params = array (
- "action" => "index.php?title=Special:MIMEsearch",
- "mime" => wikiFuzz::makeFuzz( 3 ),
- 'limit' => wikiFuzz::chooseInput( array( "0", "-1", "-------'------0", "+1", "81342321351235325", wikiFuzz::makeFuzz( 2 ) ) ),
- 'offset' => wikiFuzz::chooseInput( array( "0", "-1", "-----'--------0", "+1", "81341231235365252234324", wikiFuzz::makeFuzz( 2 ) ) )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Log".
- */
-class specialLogTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Log";
-
- $this->params = array (
- "type" => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
- "par" => wikiFuzz::makeFuzz( 2 ),
- "user" => wikiFuzz::makeFuzz( 2 ),
- "page" => wikiFuzz::makeFuzz( 2 ),
- "from" => wikiFuzz::makeFuzz( 2 ),
- "until" => wikiFuzz::makeFuzz( 2 ),
- "title" => wikiFuzz::makeFuzz( 2 )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Userlogin", with a successful login.
- */
-class successfulUserLoginTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Userlogin&action=submitlogin&type=login&returnto=" . wikiFuzz::makeFuzz( 2 );
-
- $this->params = array (
- "wpName" => USER_ON_WIKI,
- // sometimes real password, sometimes not:
- 'wpPassword' => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), USER_PASSWORD ) ),
- 'wpRemember' => wikiFuzz::makeFuzz( 2 )
- );
-
- $this->cookie = "wikidb_session=" . wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
- }
-}
-
-
-/**
- ** a page test for "Special:Userlogin".
- */
-class userLoginTest extends pageTest {
- function __construct() {
-
- $this->pagePath = "index.php?title=Special:Userlogin";
-
- $this->params = array (
- 'wpRetype' => wikiFuzz::makeFuzz( 2 ),
- 'wpRemember' => wikiFuzz::makeFuzz( 2 ),
- 'wpRealName' => wikiFuzz::makeFuzz( 2 ),
- 'wpPassword' => wikiFuzz::makeFuzz( 2 ),
- 'wpName' => wikiFuzz::makeFuzz( 2 ),
- 'wpMailmypassword' => wikiFuzz::makeFuzz( 2 ),
- 'wpLoginattempt' => wikiFuzz::makeFuzz( 2 ),
- 'wpEmail' => wikiFuzz::makeFuzz( 2 ),
- 'wpDomain' => wikiFuzz::chooseInput( array( "", "local", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpCreateaccountMail' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpCreateaccount' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpCookieCheck' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'type' => wikiFuzz::chooseInput( array( "signup", "login", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'returnto' => wikiFuzz::makeFuzz( 2 ),
- 'action' => wikiFuzz::chooseInput( array( "", "submitlogin", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- $this->cookie = "wikidb_session=" . wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
- }
-}
-
-
-/**
- ** a page test for "Special:Ipblocklist" (also includes unblocking)
- */
-class ipblocklistTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Ipblocklist";
-
- $this->params = array (
- 'wpUnblockAddress' => wikiFuzz::makeFuzz( 2 ),
- 'ip' => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
- // something like an IP address, sometimes invalid:
- ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
- . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
- 'id' => wikiFuzz::makeFuzz( 2 ),
- 'wpUnblockReason' => wikiFuzz::makeFuzz( 2 ),
- 'action' => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "success", "submit", "unblock" ) ),
- 'wpEditToken' => wikiFuzz::makeFuzz( 2 ),
- 'wpBlock' => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "" ) ),
- 'limit' => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1",
- "09700982312351132098234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'offset' => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1",
- "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["ip"] );
- if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["id"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpUnblockAddress"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Newimages".
- */
-class newImagesTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Newimages";
-
- $this->params = array (
- 'hidebots' => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "1", "", "-1" ) ),
- 'wpIlMatch' => wikiFuzz::makeFuzz( 2 ),
- 'until' => wikiFuzz::makeFuzz( 2 ),
- 'from' => wikiFuzz::makeFuzz( 2 )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["until"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["from"] );
- }
-}
-
-
-/**
- ** a page test for the "Special:Imagelist" page.
- */
-class imagelistTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Imagelist";
-
- $this->params = array (
- 'sort' => wikiFuzz::chooseInput( array( "bysize", "byname" , "bydate", wikiFuzz::makeFuzz( 2 ) ) ),
- 'limit' => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "09700982312351132098234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'offset' => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpIlMatch' => wikiFuzz::makeFuzz( 2 )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Export".
- */
-class specialExportTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Export";
-
- $this->params = array (
- 'action' => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'pages' => wikiFuzz::makeFuzz( 2 ),
- 'curonly' => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'listauthors' => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'history' => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
-
- );
-
- // For the time being, need to disable "submit" action as Tidy barfs on MediaWiki's XML export.
- if ( $this->params['action'] == 'submit' ) $this->params['action'] = '';
-
- // Sometimes remove the history field.
- if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["history"] );
-
- // page does not produce HTML.
- $this->tidyValidate = false;
- }
-}
-
-
-/**
- ** a page test for "Special:Booksources".
- */
-class specialBooksourcesTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Booksources";
-
- $this->params = array (
- 'go' => wikiFuzz::makeFuzz( 2 ),
- // ISBN codes have to contain some semi-numeric stuff or will be ignored:
- 'isbn' => "0X0" . wikiFuzz::makeFuzz( 2 )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Allpages".
- */
-class specialAllpagesTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special%3AAllpages";
-
- $this->params = array (
- 'from' => wikiFuzz::makeFuzz( 2 ),
- 'namespace' => wikiFuzz::chooseInput( range( -1, 15 ) ),
- 'go' => wikiFuzz::makeFuzz( 2 )
- );
- }
-}
-
-
-/**
- ** a page test for the page History.
- */
-class pageHistoryTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Main_Page&action=history";
-
- $this->params = array (
- 'limit' => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- 'offset' => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
- "go" => wikiFuzz::chooseInput( array( "first", "last", wikiFuzz::makeFuzz( 2 ) ) ),
- "dir" => wikiFuzz::chooseInput( array( "prev", "next", wikiFuzz::makeFuzz( 2 ) ) ),
- "diff" => wikiFuzz::chooseInput( array( "-1", "--------'-----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "oldid" => wikiFuzz::chooseInput( array( "prev", "-1", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- "feed" => wikiFuzz::makeFuzz( 2 )
- );
- }
-}
-
-
-/**
- ** a page test for the Special:Contributions".
- */
-class contributionsTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Contributions/" . USER_ON_WIKI;
-
- $this->params = array (
- 'target' => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "newbies", USER_ON_WIKI ) ),
- 'namespace' => wikiFuzz::chooseInput( array( -1, 15, 1, wikiFuzz::makeFuzz( 2 ) ) ),
- 'offset' => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "982342131232131231241", wikiFuzz::makeFuzz( 2 ) ) ),
- 'bot' => wikiFuzz::chooseInput( array( "", "-1", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'go' => wikiFuzz::chooseInput( array( "-1", 'prev', 'next', wikiFuzz::makeFuzz( 2 ) ) )
- );
- }
-}
-
-
-/**
- ** a page test for viewing a normal page, whilst posting various params.
- */
-class viewPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Main_Page";
-
- $this->params = array (
- "useskin" => wikiFuzz::chooseInput( array( "chick", "cologneblue", "myskin",
- "nostalgia", "simple", "standard", wikiFuzz::makeFuzz( 2 ) ) ),
- "uselang" => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ),
- "ab", "af", "an", "ar", "arc", "as", "ast", "av", "ay", "az", "ba",
- "bat-smg", "be", "bg", "bm", "bn", "bo", "bpy", "br", "bs", "ca",
- "ce", "cs", "csb", "cv", "cy", "da", "de", "dv", "dz", "el", "en",
- "eo", "es", "et", "eu", "fa", "fi", "fo", "fr", "fur", "fy", "ga",
- "gn", "gsw", "gu", "he", "hi", "hr", "hu", "ia", "id", "ii", "is",
- "it", "ja", "jv", "ka", "km", "kn", "ko", "ks", "ku", "kv", "la",
- "li", "lo", "lt", "lv", "mk", "ml", "ms", "nah", "nap", "nds",
- "nds-nl", "nl", "nn", "no", "non", "nv", "oc", "or", "os", "pa",
- "pl", "pms", "ps", "pt", "pt-br", "qu", "rmy", "ro", "ru", "sc",
- "sd", "sk", "sl", "sq", "sr", "sr-ec", "sr-el",
- "su", "sv", "ta", "te", "th", "tr", "tt", "ty", "tyv", "udm",
- "ug", "uk", "ur", "utf8", "vec", "vi", "wa", "xal", "yi", "za",
- "zh", "zh-cn", "zh-hk", "zh-sg", "zh-tw", "zh-tw" ) ),
- "returnto" => wikiFuzz::makeFuzz( 2 ),
- "feed" => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
- "rcid" => wikiFuzz::makeFuzz( 2 ),
- "action" => wikiFuzz::chooseInput( array( "view", "raw", "render", wikiFuzz::makeFuzz( 2 ), "markpatrolled" ) ),
- "printable" => wikiFuzz::makeFuzz( 2 ),
- "oldid" => wikiFuzz::makeFuzz( 2 ),
- "redirect" => wikiFuzz::makeFuzz( 2 ),
- "diff" => wikiFuzz::makeFuzz( 2 ),
- "search" => wikiFuzz::makeFuzz( 2 ),
- "rdfrom" => wikiFuzz::makeFuzz( 2 ), // things from Article.php from here on:
- "token" => wikiFuzz::makeFuzz( 2 ),
- "tbid" => wikiFuzz::makeFuzz( 2 ),
- // @todo FIXME: Duplicate array key.
- "action" => wikiFuzz::chooseInput( array( "purge", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpReason" => wikiFuzz::makeFuzz( 2 ),
- "wpEditToken" => wikiFuzz::makeFuzz( 2 ),
- "from" => wikiFuzz::makeFuzz( 2 ),
- "bot" => wikiFuzz::makeFuzz( 2 ),
- "summary" => wikiFuzz::makeFuzz( 2 ),
- "direction" => wikiFuzz::chooseInput( array( "next", "prev", wikiFuzz::makeFuzz( 2 ) ) ),
- "section" => wikiFuzz::makeFuzz( 2 ),
- "preload" => wikiFuzz::makeFuzz( 2 ),
-
- );
-
- // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
- if ( $this->params["feed"] == "atom" ) { unset( $this->params["feed"] ); }
- elseif ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
-
- // Raw pages cannot really be validated
- if ( $this->params["action"] == "raw" ) unset( $this->params["action"] );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rcid"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["diff"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rdfrom"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["oldid"] );
-
- // usually don't want action == purge.
- if ( wikiFuzz::randnum( 6 ) > 1 ) unset( $this->params["action"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Allmessages".
- */
-class specialAllmessagesTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Allmessages";
-
- // only really has one parameter
- $this->params = array (
- "ot" => wikiFuzz::chooseInput( array( "php", "html", wikiFuzz::makeFuzz( 2 ) ) )
- );
- }
-}
-
-/**
- ** a page test for "Special:Newpages".
- */
-class specialNewpagesPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Newpages";
-
- $this->params = array (
- "namespace" => wikiFuzz::chooseInput( range( -1, 15 ) ),
- "feed" => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
- 'limit' => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
- 'offset' => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
- if ( $this->params["feed"] == "atom" ) { unset( $this->params["feed"] ); }
- elseif ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
- }
-}
-
-/**
- ** a page test for "redirect.php"
- */
-class redirectTest extends pageTest {
- function __construct() {
- $this->pagePath = "redirect.php";
-
- $this->params = array (
- "wpDropdown" => wikiFuzz::makeFuzz( 2 )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpDropdown"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Confirmemail"
- */
-class confirmEmail extends pageTest {
- function __construct() {
- // sometimes we send a bogus confirmation code, and sometimes we don't.
- $this->pagePath = "index.php?title=Special:Confirmemail" . wikiFuzz::chooseInput( array( "", "/" . wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 1 ) ) ) );
-
- $this->params = array (
- "token" => wikiFuzz::makeFuzz( 2 )
- );
- }
-}
-
-
-/**
- ** a page test for "Special:Watchlist"
- ** Note: this test would be better if we were logged in.
- */
-class watchlistTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Watchlist";
-
- $this->params = array (
- "remove" => wikiFuzz::chooseInput( array( "Remove checked items from watchlist", wikiFuzz::makeFuzz( 2 ) ) ),
- 'days' => wikiFuzz::chooseInput( array( 0, -1, -230, "--", 3, 9, wikiFuzz::makeFuzz( 2 ) ) ),
- 'hideOwn' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'hideBots' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'namespace' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'action' => wikiFuzz::chooseInput( array( "submit", "clear", wikiFuzz::makeFuzz( 2 ) ) ),
- 'id[]' => wikiFuzz::makeFuzz( 2 ),
- 'edit' => wikiFuzz::makeFuzz( 2 ),
- 'token' => wikiFuzz::chooseInput( array( "", "1243213", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we specifiy "reset", and sometimes we don't.
- if ( wikiFuzz::randnum( 3 ) == 0 ) $this->params["reset"] = wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) );
- }
-}
-
-/**
- ** a page test for "Special:Movepage"
- */
-class specialMovePage extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Movepage";
-
- $this->params = array (
- "action" => wikiFuzz::chooseInput( array( "success", "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
- 'target' => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
- 'wpOldTitle' => wikiFuzz::chooseInput( array( "z", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpNewTitle' => wikiFuzz::chooseInput( array( "y", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpReason' => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpMovetalk' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpDeleteAndMove' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpConfirm' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'talkmoved' => wikiFuzz::chooseInput( array( "1", wikiFuzz::makeFuzz( 2 ), "articleexists", 'notalkpage' ) ),
- 'oldtitle' => wikiFuzz::makeFuzz( 2 ),
- 'newtitle' => wikiFuzz::makeFuzz( 2 ),
- 'wpMovetalk' => wikiFuzz::chooseInput( array( "1", "0", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpNewTitle"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpReason"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpOldTitle"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Undelete"
- */
-class specialUndeletePageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Undelete";
-
- $this->params = array (
- "action" => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
- 'target' => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
- 'timestamp' => wikiFuzz::chooseInput( array( "125223", wikiFuzz::makeFuzz( 2 ) ) ),
- 'file' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'restore' => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'preview' => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpComment' => wikiFuzz::makeFuzz( 2 )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["target"] );
- if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["restore"] );
- if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["preview"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Unlockdb"
- */
-class specialUnlockdbPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Unlockdb";
-
- $this->params = array (
- "action" => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpEditToken' => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Lockdb"
- */
-class specialLockdbPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Lockdb";
-
- $this->params = array (
- "action" => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpEditToken' => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpLockReason' => wikiFuzz::makeFuzz( 2 ),
- 'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
- }
-}
-
-
-/**
- ** a page test for "Special:Userrights"
- */
-class specialUserrights extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Userrights";
-
- $this->params = array (
- 'wpEditToken' => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'user-editname' => wikiFuzz::chooseInput( array( "Nickj2", "Nickj2\n<xyz>", wikiFuzz::makeFuzz( 2 ) ) ),
- 'ssearchuser' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'saveusergroups' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ), "Save User Groups" ),
- 'member[]' => wikiFuzz::chooseInput( array( "0", "bot", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "available[]" => wikiFuzz::chooseInput( array( "0", "sysop", "bureaucrat", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['ssearchuser'] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['saveusergroups'] );
- }
-}
-
-
-/**
- ** a test for page protection and unprotection.
- */
-class pageProtectionForm extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Main_Page";
-
- $this->params = array (
- "action" => "protect",
- 'wpEditToken' => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- "mwProtect-level-edit" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
- "mwProtect-level-move" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
- "mwProtectUnchained" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- 'mwProtect-reason' => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["mwProtectUnchained"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['mwProtect-reason'] );
- }
-}
-
-
-/**
- ** a page test for "Special:Blockip".
- */
-class specialBlockip extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Blockip";
-
- $this->params = array (
- "action" => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
- 'wpEditToken' => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpBlockAddress" => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
- // something like an IP address, sometimes invalid:
- ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
- . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
- "ip" => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
- // something like an IP address, sometimes invalid:
- ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
- . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
- "wpBlockOther" => wikiFuzz::chooseInput( array( '', 'Nickj2', wikiFuzz::makeFuzz( 2 ) ) ),
- "wpBlockExpiry" => wikiFuzz::chooseInput( array( "other", "2 hours", "1 day", "3 days", "1 week", "2 weeks",
- "1 month", "3 months", "6 months", "1 year", "infinite", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpBlockReason" => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpAnonOnly" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpCreateAccount" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpBlock" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockOther"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockExpiry"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockReason"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpAnonOnly"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpCreateAccount"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockAddress"] );
- if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["ip"] );
- }
-}
-
-
-/**
- ** a test for the imagepage.
- */
-class imagepageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Image:Small-email.png";
-
- $this->params = array (
- "image" => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpReason" => wikiFuzz::makeFuzz( 2 ),
- "oldimage" => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpEditToken" => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["image"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldimage"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEditToken"] );
- }
-}
-
-
-/**
- ** a test for page deletion form.
- */
-class pageDeletion extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Main_Page&action=delete";
-
- $this->params = array (
- "wpEditToken" => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpReason" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "wpConfirm" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpReason"] );
- if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpEditToken"] );
- if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpConfirm"] );
- }
-}
-
-
-
-/**
- ** a test for Revision Deletion.
- */
-class specialRevisionDeletePageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Revisiondelete";
-
- $this->params = array (
- "target" => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
- "oldid" => wikiFuzz::makeFuzz( 2 ),
- "oldid[]" => wikiFuzz::makeFuzz( 2 ),
- "wpReason" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "revdelete-hide-text" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "revdelete-hide-comment" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "revdelete-hide-user" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "revdelete-hide-restricted" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid[]"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-text"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-comment"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-user"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-restricted"] );
- }
-}
-
-
-/**
- ** a test for Special:Import.
- */
-class specialImportPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Import";
-
- $this->params = array (
- "action" => "submit",
- "source" => wikiFuzz::chooseInput( array( "upload", "interwiki", wikiFuzz::makeFuzz( 2 ) ) ),
- "MAX_FILE_SIZE" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "xmlimport" => wikiFuzz::chooseInput( array( "/var/www/hosts/mediawiki/wiki/AdminSettings.php", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
- "namespace" => wikiFuzz::chooseInput( array( wikiFuzz::randnum( 30, -6 ), wikiFuzz::makeFuzz( 2 ) ) ),
- "interwiki" => wikiFuzz::makeFuzz( 2 ),
- "interwikiHistory" => wikiFuzz::makeFuzz( 2 ),
- "frompage" => wikiFuzz::makeFuzz( 2 ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["action"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["source"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["MAX_FILE_SIZE"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["xmlimport"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwiki"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwikiHistory"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["frompage"] );
-
- // Note: Need to do a file upload to fully test this Special page.
- }
-}
-
-
-/**
- ** a test for thumb.php
- */
-class thumbTest extends pageTest {
- function __construct() {
- $this->pagePath = "thumb.php";
-
- $this->params = array (
- "f" => wikiFuzz::chooseInput( array( "..", "\\", "small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
- "w" => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
- "r" => wikiFuzz::chooseInput( array( "0", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["f"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["w"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["r"] );
- }
-}
-
-/**
- ** a test for profileinfo.php
- */
-class profileInfo extends pageTest {
- function __construct() {
- $this->pagePath = "profileinfo.php";
-
- $this->params = array (
- "expand" => wikiFuzz::makeFuzz( 2 ),
- "sort" => wikiFuzz::chooseInput( array( "time", "count", "name", wikiFuzz::makeFuzz( 2 ) ) ),
- "filter" => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["sort"] );
- if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["filter"] );
- }
-}
-
-
-/**
- ** a test for Special:Cite (extension Special page).
- */
-class specialCitePageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Cite";
-
- $this->params = array (
- "page" => wikiFuzz::chooseInput( array( "\" onmouseover=\"alert(1);\"", "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
- "id" => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "-9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["page"] );
- if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["id"] );
- }
-}
-
-
-/**
- ** a test for Special:Filepath (extension Special page).
- */
-class specialFilepathPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Filepath";
-
- $this->params = array (
- "file" => wikiFuzz::chooseInput( array( "Small-email.png", "Small-email.png" . wikiFuzz::makeFuzz( 1 ), wikiFuzz::makeFuzz( 2 ) ) ),
- );
- }
-}
-
-
-/**
- ** a test for Special:Renameuser (extension Special page).
- */
-class specialRenameuserPageTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Renameuser";
-
- $this->params = array (
- "oldusername" => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
- "newusername" => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
- "token" => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
- );
- }
-}
-
-
-/**
- ** a test for Special:Linksearch (extension Special page).
- */
-class specialLinksearch extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special%3ALinksearch";
-
- $this->params = array (
- "target" => wikiFuzz::makeFuzz( 2 ),
- );
-
- // sometimes we don't want to specify certain parameters.
- if ( wikiFuzz::randnum( 10 ) == 0 ) unset( $this->params["target"] );
- }
-}
-
-
-/**
- ** a test for Special:CategoryTree (extension Special page).
- */
-class specialCategoryTree extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:CategoryTree";
-
- $this->params = array (
- "target" => wikiFuzz::makeFuzz( 2 ),
- "from" => wikiFuzz::makeFuzz( 2 ),
- "until" => wikiFuzz::makeFuzz( 2 ),
- "showas" => wikiFuzz::makeFuzz( 2 ),
- "mode" => wikiFuzz::chooseInput( array( "pages", "categories", "all", wikiFuzz::makeFuzz( 2 ) ) ),
- );
-
- // sometimes we do want to specify certain parameters.
- if ( wikiFuzz::randnum( 5 ) == 0 ) $this->params["notree"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
- }
-}
-
-
-/**
- ** a test for "Special:Chemicalsources" (extension Special page).
- */
-class specialChemicalsourcesTest extends pageTest {
- function __construct() {
- $this->pagePath = "index.php?title=Special:Chemicalsources";
-
- // choose an input format to use.
- $format = wikiFuzz::chooseInput(
- array( 'go',
- 'CAS',
- 'EINECS',
- 'CHEBI',
- 'PubChem',
- 'SMILES',
- 'InChI',
- 'ATCCode',
- 'KEGG',
- 'RTECS',
- 'ECNumber',
- 'DrugBank',
- 'Formula',
- 'Name'
- )
- );
-
- // values for different formats usually start with either letters or numbers.
- switch ( $format ) {
- case 'Name' : $value = "A"; break;
- case 'InChI' :
- case 'SMILES' :
- case 'Formula': $value = "C"; break;
- default : $value = "0"; break;
- }
-
- // and then we append the fuzz input.
- $this->params = array ( $format => $value . wikiFuzz::makeFuzz( 2 ) );
- }
-}
-
-
-/**
- ** A test for api.php (programmatic interface to MediaWiki in XML/JSON/RSS/etc formats).
- ** Quite involved to test because there are lots of options/parameters, and because
- ** for a lot of the functionality if all the parameters don't make sense then it just
- ** returns the help screen - so currently a lot of the tests aren't actually doing much
- ** because something wasn't right in the query.
- **
- ** @todo Incomplete / unfinished; Runs too fast (suggests not much testing going on).
- */
-class api extends pageTest {
-
- // API login mode.
- private static function loginMode() {
- $arr = array ( "lgname" => wikiFuzz::makeFuzz( 2 ),
- "lgpassword" => wikiFuzz::makeFuzz( 2 ),
- );
- // sometimes we want to specify the extra "lgdomain" parameter.
- if ( wikiFuzz::randnum( 3 ) == 0 ) {
- $arr["lgdomain"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
- }
-
- return $arr;
- }
-
- // API OpenSearch mode.
- private static function opensearchMode() {
- return array ( "search" => wikiFuzz::makeFuzz( 2 ) );
- }
-
- // API watchlist feed mode.
- private static function feedwatchlistMode() {
- // @todo FIXME: Add "wikiFuzz::makeFuzz(2)" as possible value below?
- return array ( "feedformat" => wikiFuzz::chooseInput( array( "rss", "atom" ) ) );
- }
-
- // API query mode.
- private static function queryMode() {
- // @todo FIXME: Add "wikiFuzz::makeFuzz(2)" as possible params for the elements below?
- // Suspect this will stuff up the tests more, but need to check.
- $params = array (
- // @todo FIXME: More titles.
- "titles" => wikiFuzz::chooseInput( array( "Main Page" ) ),
- // @todo FIXME: More pageids.
- "pageids" => 1,
- "prop" => wikiFuzz::chooseInput( array( "info", "revisions", "watchlist" ) ),
- "list" => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "usercontribs", "recentchanges", "backlinks", "embeddedin", "imagelinks" ) ),
- "meta" => wikiFuzz::chooseInput( array( "siteinfo" ) ),
- "generator" => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "info", "revisions" ) ),
- "siprop" => wikiFuzz::chooseInput( array( "general", "namespaces", "general|namespaces" ) ),
- );
-
- // Add extra parameters based on what list choice we got.
- switch ( $params["list"] ) {
- case "usercontribs" : self::addListParams ( $params, "uc", array( "limit", "start", "end", "user", "dir" ) ); break;
- case "allpages" : self::addListParams ( $params, "ap", array( "from", "prefix", "namespace", "filterredir", "limit" ) ); break;
- case "watchlist" : self::addListParams ( $params, "wl", array( "allrev", "start", "end", "namespace", "dir", "limit", "prop" ) ); break;
- case "logevents" : self::addListParams ( $params, "le", array( "limit", "type", "start", "end", "user", "dir" ) ); break;
- case "recentchanges": self::addListParams ( $params, "rc", array( "limit", "prop", "show", "namespace", "start", "end", "dir" ) ); break;
- case "backlinks" : self::addListParams ( $params, "bl", array( "continue", "namespace", "redirect", "limit" ) ); break;
- case "embeddedin" : self::addListParams ( $params, "ei", array( "continue", "namespace", "redirect", "limit" ) ); break;
- case "imagelinks" : self::addListParams ( $params, "il", array( "continue", "namespace", "redirect", "limit" ) ); break;
- }
-
- if ( $params["prop"] == "revisions" ) {
- self::addListParams ( $params, "rv", array( "prop", "limit", "startid", "endid", "end", "dir" ) );
- }
-
- // Sometimes we want redirects, sometimes we don't.
- if ( wikiFuzz::randnum( 3 ) == 0 ) {
- $params["redirects"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
- }
-
- return $params;
- }
-
- // Adds all the elements to the array, using the specified prefix.
- private static function addListParams( &$array, $prefix, $elements ) {
- foreach ( $elements as $element ) {
- $array[$prefix . $element] = self::getParamDetails( $element );
- }
- }
-
- // For a given element name, returns the data for that element.
- private static function getParamDetails( $element ) {
- switch ( $element ) {
- case 'startid' :
- case 'endid' :
- case 'start' :
- case 'end' :
- case 'limit' : return wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", "320742734234235", "20060230121212", wikiFuzz::randnum( 9000, -100 ), wikiFuzz::makeFuzz( 2 ) ) );
- case 'dir' : return wikiFuzz::chooseInput( array( "newer", "older", wikiFuzz::makeFuzz( 2 ) ) );
- case 'user' : return wikiFuzz::chooseInput( array( USER_ON_WIKI, wikiFuzz::makeFuzz( 2 ) ) );
- case 'namespace' : return wikiFuzz::chooseInput( array( -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 200000, wikiFuzz::makeFuzz( 2 ) ) );
- case 'filterredir': return wikiFuzz::chooseInput( array( "all", "redirects", "nonredirectsallpages", wikiFuzz::makeFuzz( 2 ) ) );
- case 'allrev' : return wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
- case 'prop' : return wikiFuzz::chooseInput( array( "user", "comment", "timestamp", "patrol", "flags", "user|user|comment|flags", wikiFuzz::makeFuzz( 2 ) ) );
- case 'type' : return wikiFuzz::chooseInput( array( "block", "protect", "rights", "delete", "upload", "move", "import", "renameuser", "newusers", "makebot", wikiFuzz::makeFuzz( 2 ) ) );
- case 'hide' : return wikiFuzz::chooseInput( array( "minor", "bots", "anons", "liu", "liu|bots|", wikiFuzz::makeFuzz( 2 ) ) );
- case 'show' : return wikiFuzz::chooseInput( array( 'minor', '!minor', 'bot', '!bot', 'anon', '!anon', wikiFuzz::makeFuzz( 2 ) ) );
- default : return wikiFuzz::makeFuzz( 2 );
- }
- }
-
- // Entry point.
- function __construct() {
- $this->pagePath = "api.php";
-
- $modes = array ( "help",
- "login",
- "opensearch",
- "feedwatchlist",
- "query" );
- $action = wikiFuzz::chooseInput( array_merge ( $modes, array( wikiFuzz::makeFuzz( 2 ) ) ) );
-
- switch ( $action ) {
- case "login" : $this->params = self::loginMode();
- break;
- case "opensearch" : $this->params = self::opensearchMode();
- break;
- case "feedwatchlist" : $this->params = self::feedwatchlistMode();
- break;
- case "query" : $this->params = self::queryMode();
- break;
- case "help" :
- default : // Do something random - "Crazy Ivan" mode.
- $random_mode = wikiFuzz::chooseInput( $modes ) . "Mode";
- // There is no "helpMode".
- if ( $random_mode == "helpMode" ) $random_mode = "queryMode";
- $this->params = self::$random_mode();
- break;
- }
-
- // Save the selected action.
- $this->params["action"] = $action;
-
- // Set the cookie:
- // @todo FIXME: Need to get this cookie dynamically set, rather than hard-coded.
- $this->cookie = "wikidbUserID=10001; wikidbUserName=Test; wikidb_session=178df0fe68c75834643af65dec9ec98a; wikidbToken=1adc6753d62c44aec950c024d7ae0540";
-
- // Output format
- $this->params["format"] = wikiFuzz::chooseInput( array( "json", "jsonfm", "php", "phpfm",
- "wddx", "wddxfm", "xml", "xmlfm",
- "yaml", "yamlfm", "raw", "rawfm",
- wikiFuzz::makeFuzz( 2 ) ) );
-
- // Page does not produce HTML (sometimes).
- $this->tidyValidate = false;
- }
-}
-
-
-/**
- ** a page test for the GeSHi extension.
- */
-class GeSHi_Test extends pageTest {
-
- private function getGeSHiContent() {
- return "<source lang=\"" . $this->getLang() . "\" "
- . ( wikiFuzz::randnum( 2 ) == 0 ? "line " : "" )
- . ( wikiFuzz::randnum( 2 ) == 0 ? "strict " : "" )
- . "start=" . wikiFuzz::chooseInput( array( wikiFuzz::randnum( 6000, -6000 ), wikiFuzz::makeFuzz( 2 ) ) )
- . ">"
- . wikiFuzz::makeFuzz( 2 )
- . "</source>";
- }
-
- private function getLang() {
- return wikiFuzz::chooseInput( array( "actionscript", "ada", "apache", "applescript", "asm", "asp", "autoit", "bash", "blitzbasic", "bnf", "c", "c_mac", "caddcl", "cadlisp",
- "cfdg", "cfm", "cpp", "cpp-qt", "csharp", "css", "d", "delphi", "diff", "div", "dos", "eiffel", "fortran", "freebasic", "gml", "groovy", "html4strict", "idl",
- "ini", "inno", "io", "java", "java5", "javascript", "latex", "lisp", "lua", "matlab", "mirc", "mpasm", "mysql", "nsis", "objc", "ocaml", "ocaml-brief", "oobas",
- "oracle8", "pascal", "perl", "php", "php-brief", "plsql", "python", "qbasic", "rails", "reg", "robots", "ruby", "sas", "scheme", "sdlbasic", "smalltalk", "smarty",
- "sql", "tcl", "text", "thinbasic", "tsql", "vb", "vbnet", "vhdl", "visualfoxpro", "winbatch", "xml", "xpp", "z80", wikiFuzz::makeFuzz( 1 ) ) );
- }
-
- function __construct() {
- $this->pagePath = "index.php?title=WIKIFUZZ";
-
- $this->params = array (
- "action" => "submit",
- "wpMinoredit" => "test",
- "wpPreview" => "test",
- "wpSection" => "test",
- "wpEdittime" => "test",
- "wpSummary" => "test",
- "wpScrolltop" => "test",
- "wpStarttime" => "test",
- "wpAutoSummary" => "test",
- "wpTextbox1" => $this->getGeSHiContent() // the main wiki text, contains fake GeSHi content.
- );
- }
-}
-
-/**
- ** selects a page test to run.
- * @param $count
- * @return \api|\confirmEmail|\contributionsTest|\editPageTest|\imagelistTest|\imagepageTest|\ipblocklistTest|\listusersTest|\mimeSearchTest|\newImagesTest|\pageDeletion|\pageHistoryTest|\pageProtectionForm|\prefixindexTest|\profileInfo|\recentchangesTest|\redirectTest|\searchTest|\specialAllmessagesTest|\specialAllpagesTest|\specialBlockip|\specialBooksourcesTest|\specialCategoryTree|\specialChemicalsourcesTest|\specialCitePageTest|\specialExportTest|\specialFilepathPageTest|\specialImportPageTest|\specialLinksearch|\specialLockdbPageTest|\specialLogTest|\specialMovePage|\specialNewpagesPageTest|\specialRenameuserPageTest|\specialRevisionDeletePageTest|\specialUndeletePageTest|\specialUnlockdbPageTest|\specialUserrights|\successfulUserLoginTest|\thumbTest|\userLoginTest|\viewPageTest|\watchlistTest
- */
-function selectPageTest( $count ) {
-
- // if the user only wants a specific test, then only ever give them that.
- if ( defined( "SPECIFIC_TEST" ) ) {
- $testType = SPECIFIC_TEST;
- return new $testType ();
- }
-
- // Some of the time we test Special pages, the remaining
- // time we test using the standard edit page.
- switch ( $count % 100 ) {
- case 0 : return new successfulUserLoginTest();
- case 1 : return new listusersTest();
- case 2 : return new searchTest();
- case 3 : return new recentchangesTest();
- case 4 : return new prefixindexTest();
- case 5 : return new mimeSearchTest();
- case 6 : return new specialLogTest();
- case 7 : return new userLoginTest();
- case 8 : return new ipblocklistTest();
- case 9 : return new newImagesTest();
- case 10: return new imagelistTest();
- case 11: return new specialExportTest();
- case 12: return new specialBooksourcesTest();
- case 13: return new specialAllpagesTest();
- case 14: return new pageHistoryTest();
- case 15: return new contributionsTest();
- case 16: return new viewPageTest();
- case 17: return new specialAllmessagesTest();
- case 18: return new specialNewpagesPageTest();
- case 19: return new searchTest();
- case 20: return new redirectTest();
- case 21: return new confirmEmail();
- case 22: return new watchlistTest();
- case 24: return new specialUndeletePageTest();
- case 25: return new specialMovePage();
- case 26: return new specialUnlockdbPageTest();
- case 27: return new specialLockdbPageTest();
- case 28: return new specialUserrights();
- case 29: return new pageProtectionForm();
- case 30: return new specialBlockip();
- case 31: return new imagepageTest();
- case 32: return new pageDeletion();
- case 33: return new specialRevisionDeletePageTest();
- case 34: return new specialImportPageTest();
- case 35: return new thumbTest();
- case 37: return new profileInfo();
- case 38: return new specialCitePageTest();
- case 39: return new specialFilepathPageTest();
- case 40: return new specialRenameuserPageTest();
- case 41: return new specialLinksearch();
- case 42: return new specialCategoryTree();
- case 43: return new api();
- case 44: return new specialChemicalsourcesTest();
- default: return new editPageTest();
- }
-}
-
-
-// ///////////////////// SAVING OUTPUT /////////////////////////
-
-/**
- ** Utility function for saving a file. Currently has no error checking.
- */
-function saveFile( $data, $name ) {
- file_put_contents( $name, $data );
-}
-
-/**
- ** Returns a test as an experimental GET-to-POST URL.
- ** This doesn't seem to always work though, and sometimes the output is too long
- ** to be a valid GET URL, so we also save in other formats.
- * @param $test pageTest
- * @return string
- */
-function getAsURL( pageTest $test ) {
- $used_question_mark = ( strpos( $test->getPagePath(), "?" ) !== false );
- $retval = "http://get-to-post.nickj.org/?" . WIKI_BASE_URL . $test->getPagePath();
- foreach ( $test->getParams() as $param => $value ) {
- if ( !$used_question_mark ) {
- $retval .= "?";
- $used_question_mark = true;
- }
- else {
- $retval .= "&";
- }
- $retval .= $param . "=" . urlencode( $value );
- }
- return $retval;
-}
-
-
-/**
- ** Saves a plain-text human-readable version of a test.
- */
-function saveTestAsText( pageTest $test, $filename ) {
- $str = "Test: " . $test->getPagePath();
- foreach ( $test->getParams() as $param => $value ) {
- $str .= "\n$param: $value";
- }
- $str .= "\nGet-to-post URL: " . getAsURL( $test ) . "\n";
- saveFile( $str, $filename );
-}
-
-
-/**
- ** Saves a test as a standalone basic PHP script that shows this one problem.
- ** Resulting script requires PHP-Curl be installed in order to work.
- */
-function saveTestAsPHP( pageTest $test, $filename ) {
- $str = "<?php\n"
- . "\$params = " . var_export( escapeForCurl( $test->getParams() ), true ) . ";\n"
- . "\$ch = curl_init();\n"
- . "curl_setopt(\$ch, CURLOPT_POST, 1);\n"
- . "curl_setopt(\$ch, CURLOPT_POSTFIELDS, \$params );\n"
- . "curl_setopt(\$ch, CURLOPT_URL, " . var_export( WIKI_BASE_URL . $test->getPagePath(), true ) . ");\n"
- . "curl_setopt(\$ch, CURLOPT_RETURNTRANSFER,1);\n"
- . ( $test->getCookie() ? "curl_setopt(\$ch, CURLOPT_COOKIE, " . var_export( $test->getCookie(), true ) . ");\n" : "" )
- . "\$result=curl_exec(\$ch);\n"
- . "curl_close (\$ch);\n"
- . "print \$result;\n"
- . "\n";
- saveFile( $str, $filename );
-}
-
-/**
- * Escapes a value so that it can be used on the command line by Curl.
- * Specifically, "<" and "@" need to be escaped if they are the first character,
- * otherwise curl interprets these as meaning that we want to insert a file.
- * @param $input_params array
- * @return array
- */
-function escapeForCurl( array $input_params ) {
- $output_params = array();
- foreach ( $input_params as $param => $value ) {
- if ( strlen( $value ) > 0 && ( $value[0] == "@" || $value[0] == "<" ) ) {
- $value = "\\" . $value;
- }
- $output_params[$param] = $value;
- }
- return $output_params;
-}
-
-
-/**
- ** Saves a test as a standalone CURL shell script that shows this one problem.
- ** Resulting script requires standalone Curl be installed in order to work.
- */
-function saveTestAsCurl( pageTest $test, $filename ) {
- $str = "#!/bin/bash\n"
- . "curl --silent --include --globoff \\\n"
- . ( $test->getCookie() ? " --cookie " . escapeshellarg( $test->getCookie() ) . " \\\n" : "" );
- foreach ( escapeForCurl( $test->getParams() ) as $param => $value ) {
- $str .= " -F " . escapeshellarg( $param ) . "=" . escapeshellarg( $value ) . " \\\n";
- }
- $str .= " " . escapeshellarg( WIKI_BASE_URL . $test->getPagePath() ); // beginning space matters.
- $str .= "\n";
- saveFile( $str, $filename );
- chmod( $filename, 0755 ); // make executable
-}
-
-
-/**
- ** Saves the internal data structure to file.
- */
-function saveTestData ( pageTest $test, $filename ) {
- saveFile( serialize( $test ), $filename );
-}
-
-
-/**
- ** saves a test in the various formats.
- */
-function saveTest( pageTest $test, $testname ) {
- $base_name = DIRECTORY . "/" . $testname;
- saveTestAsText( $test, $base_name . INFO_FILE );
- saveTestAsPHP ( $test, $base_name . PHP_TEST );
- saveTestAsCurl( $test, $base_name . CURL_TEST );
- saveTestData ( $test, $base_name . DATA_FILE );
-}
-
-// ////////////////// MEDIAWIKI OUTPUT /////////////////////////
-
-/**
- * Asks MediaWiki for the HTML output of a test.
- * @param $test pageTest
- * @return string
- */
-function wikiTestOutput( pageTest $test ) {
-
- $ch = curl_init();
-
- // specify the cookie, if required.
- if ( $test->getCookie() ) {
- curl_setopt( $ch, CURLOPT_COOKIE, $test->getCookie() );
- }
- curl_setopt( $ch, CURLOPT_POST, 1 ); // save form using a POST
-
- $params = escapeForCurl( $test->getParams() );
- curl_setopt( $ch, CURLOPT_POSTFIELDS, $params ); // load the POST variables
-
- curl_setopt( $ch, CURLOPT_URL, WIKI_BASE_URL . $test->getPagePath() ); // set url to post to
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return into a variable
-
- $result = curl_exec ( $ch );
-
- // if we encountered an error, then say so, and return an empty string.
- if ( curl_error( $ch ) ) {
- print "\nCurl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch );
- $result = "";
- }
-
- curl_close ( $ch );
-
- return $result;
-}
-
-
-// ////////////////// HTML VALIDATION /////////////////////////
-
-/**
- * Asks the validator whether this is valid HTML, or not.
- * @param $text string
- * @return array
- */
-function validateHTML( $text ) {
-
- $params = array ( "fragment" => $text );
-
- $ch = curl_init();
-
- curl_setopt( $ch, CURLOPT_POST, 1 ); // save form using a POST
- curl_setopt( $ch, CURLOPT_POSTFIELDS, $params ); // load the POST variables
- curl_setopt( $ch, CURLOPT_URL, VALIDATOR_URL ); // set url to post to
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return into a variable
-
- $result = curl_exec ( $ch );
-
- // if we encountered an error, then log it, and exit.
- if ( curl_error( $ch ) ) {
- trigger_error( "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) );
- print "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) . " - exiting.\n";
- exit( 1 );
- }
-
- curl_close ( $ch );
-
- $valid = ( strpos( $result, "Failed validation" ) === false );
-
- return array( $valid, $result );
-}
-
-/**
- * Get tidy to check for no HTML errors in the output file (e.g. unescaped strings).
- * @param $name
- * @return bool
- */
-function tidyCheckFile( $name ) {
- $file = DIRECTORY . "/" . $name;
- $command = PATH_TO_TIDY . " -output /tmp/out.html -quiet $file 2>&1";
- $x = `$command`;
-
- // Look for the most interesting Tidy errors and warnings.
- if ( strpos( $x, "end of file while parsing attributes" ) !== false
- || strpos( $x, "attribute with missing trailing quote mark" ) !== false
- || strpos( $x, "missing '>' for end of tag" ) !== false
- || strpos( $x, "Error:" ) !== false ) {
- print "\nTidy found something - view details with: $command";
- return false;
- } else {
- return true;
- }
-}
-
-/**
- ** Returns whether or not an database error log file has changed in size since
- ** the last time this was run. This is used to tell if a test caused a DB error.
- * @return bool
- */
-function dbErrorLogged() {
- static $filesize;
-
- // first time running this function
- if ( !isset( $filesize ) ) {
- // create log if it does not exist
- if ( DB_ERROR_LOG_FILE && !file_exists( DB_ERROR_LOG_FILE ) ) {
- saveFile( '', DB_ERROR_LOG_FILE );
- }
- $filesize = filesize( DB_ERROR_LOG_FILE );
- return false;
- }
-
- $newsize = filesize( DB_ERROR_LOG_FILE );
- // if the log has grown, then assume the current test caused it.
- if ( $newsize != $filesize ) {
- $filesize = $newsize;
- return true;
- }
-
- return false;
-}
-
-// //////////////// TOP-LEVEL PROBLEM-FINDING FUNCTION ////////////////////////
-
-/**
- * takes a page test, and runs it and tests it for problems in the output.
- * Returns: False on finding a problem, or True on no problems being found.
- * @param $test pageTest
- * @param $testname
- * @param $can_overwrite bool
- * @return bool
- */
-function runWikiTest( pageTest $test, &$testname, $can_overwrite = false ) {
-
- // by default don't overwrite a previous test of the same name.
- while ( ! $can_overwrite && file_exists( DIRECTORY . "/" . $testname . DATA_FILE ) ) {
- $testname .= "-" . mt_rand( 0, 9 );
- }
-
- $filename = DIRECTORY . "/" . $testname . DATA_FILE;
-
- // Store the time before and after, to find slow pages.
- $before = microtime( true );
-
- // Get MediaWiki to give us the output of this test.
- $wiki_preview = wikiTestOutput( $test );
-
- $after = microtime( true );
-
- // if we received no response, then that's interesting.
- if ( $wiki_preview == "" ) {
- print "\nNo response received for: $filename";
- return false;
- }
-
- // save output HTML to file.
- $html_file = DIRECTORY . "/" . $testname . HTML_FILE;
- saveFile( $wiki_preview, $html_file );
-
- // if there were PHP errors in the output, then that's interesting too.
- if ( strpos( $wiki_preview, "<b>Warning</b>: " ) !== false
- || strpos( $wiki_preview, "<b>Fatal error</b>: " ) !== false
- || strpos( $wiki_preview, "<b>Notice</b>: " ) !== false
- || strpos( $wiki_preview, "<b>Error</b>: " ) !== false
- || strpos( $wiki_preview, "<b>Strict Standards:</b>" ) !== false
- ) {
- $error = substr( $wiki_preview, strpos( $wiki_preview, "</b>:" ) + 7, 50 );
- // Avoid probable PHP bug with bad session ids; http://bugs.php.net/bug.php?id=38224
- if ( $error != "Unknown: The session id contains illegal character" ) {
- print "\nPHP error/warning/notice in HTML output: $html_file ; $error";
- return false;
- }
- }
-
- // if there was a MediaWiki Backtrace message in the output, then that's also interesting.
- if ( strpos( $wiki_preview, "Backtrace:" ) !== false ) {
- print "\nInternal MediaWiki error in HTML output: $html_file";
- return false;
- }
-
- // if there was a Parser error comment in the output, then that's potentially interesting.
- if ( strpos( $wiki_preview, "!-- ERR" ) !== false ) {
- print "\nParser Error comment in HTML output: $html_file";
- return false;
- }
-
- // if a database error was logged, then that's definitely interesting.
- if ( dbErrorLogged() ) {
- print "\nDatabase Error logged for: $filename";
- return false;
- }
-
- // validate result
- $valid = true;
- if ( VALIDATE_ON_WEB ) {
- list ( $valid, $validator_output ) = validateHTML( $wiki_preview );
- if ( !$valid ) print "\nW3C web validation failed - view details with: html2text " . DIRECTORY . "/" . $testname . ".validator_output.html";
- }
-
- // Get tidy to check the page, unless we already know it produces non-(X)HTML output.
- if ( $test->tidyValidate() ) {
- $valid = tidyCheckFile( $testname . HTML_FILE ) && $valid;
- }
-
- // if it took more than 2 seconds to render, then it may be interesting too. (Possible DoS attack?)
- if ( ( $after - $before ) >= 2 ) {
- print "\nParticularly slow to render (" . round( $after - $before, 2 ) . " seconds): $filename";
- return false;
- }
-
- if ( $valid ) {
- // Remove temp HTML file if test was valid:
- unlink( $html_file );
- } elseif ( VALIDATE_ON_WEB ) {
- saveFile( $validator_output, DIRECTORY . "/" . $testname . ".validator_output.html" );
- }
-
- return $valid;
-}
-
-
-// ///////////////// RERUNNING OLD TESTS ///////////////////
-
-/**
- ** We keep our failed tests so that they can be rerun.
- ** This function does that retesting.
- */
-function rerunPreviousTests() {
- print "Retesting previously found problems.\n";
-
- $dir_contents = scandir ( DIRECTORY );
-
- // sort file into the order a normal person would use.
- natsort ( $dir_contents );
-
- foreach ( $dir_contents as $file ) {
-
- // if file is not a test, then skip it.
- // Note we need to escape any periods or will be treated as "any character".
- $matches = array();
- if ( !preg_match( "/(.*)" . str_replace( ".", "\.", DATA_FILE ) . "$/", $file, $matches ) ) continue;
-
- // reload the test.
- $full_path = DIRECTORY . "/" . $file;
- $test = unserialize( file_get_contents( $full_path ) );
-
- // if this is not a valid test, then skip it.
- if ( ! $test instanceof pageTest ) {
- print "\nSkipping invalid test - $full_path";
- continue;
- }
-
- // The date format is in Apache log format, which makes it easier to locate
- // which retest caused which error in the Apache logs (only happens usually if
- // apache segfaults).
- if ( !QUIET ) print "[" . date ( "D M d H:i:s Y" ) . "] Retesting $file (" . get_class( $test ) . ")";
-
- // run test
- $testname = $matches[1];
- $valid = runWikiTest( $test, $testname, true );
-
- if ( !$valid ) {
- saveTest( $test, $testname );
- if ( QUIET ) {
- print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
- } else {
- print "\n";
- }
- }
- else {
- if ( !QUIET ) print "\r";
- if ( DELETE_PASSED_RETESTS ) {
- $prefix = DIRECTORY . "/" . $testname;
- if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE );
- if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST );
- if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST );
- if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE );
- }
- }
- }
-
- print "\nDone retesting.\n";
-}
-
-
-// //////////////////// MAIN LOOP ////////////////////////
-
-
-// first check whether CURL is installed, because sometimes it's not.
-if ( ! function_exists( 'curl_init' ) ) {
- die( "Could not find 'curl_init' function. Is the curl extension compiled into PHP?\n" );
-}
-
-// Initialization of types. wikiFuzz doesn't have a constructor because we want to
-// access it staticly and not have any globals.
-wikiFuzz::$types = array_keys( wikiFuzz::$data );
-
-// Make directory if doesn't exist
-if ( !is_dir( DIRECTORY ) ) {
- mkdir ( DIRECTORY, 0700 );
-}
-// otherwise, we first retest the things that we have found in previous runs
-elseif ( RERUN_OLD_TESTS ) {
- rerunPreviousTests();
-}
-
-// main loop.
-$start_time = date( "U" );
-$num_errors = 0;
-if ( !QUIET ) {
- print "Beginning main loop. Results are stored in the " . DIRECTORY . " directory.\n";
- print "Press CTRL+C to stop testing.\n";
-}
-
-for ( $count = 0; true; $count++ ) {
- if ( !QUIET ) {
- // spinning progress indicator.
- switch( $count % 4 ) {
- case '0': print "\r/"; break;
- case '1': print "\r-"; break;
- case '2': print "\r\\"; break;
- case '3': print "\r|"; break;
- }
- print " $count";
- }
-
- // generate a page test to run.
- $test = selectPageTest( $count );
-
- $mins = ( date( "U" ) - $start_time ) / 60;
- if ( !QUIET && $mins > 0 ) {
- print ". $num_errors poss errors. "
- . floor( $mins ) . " mins. "
- . round ( $count / $mins, 0 ) . " tests/min. "
- . get_class( $test ); // includes the current test name.
- }
-
- // run this test against MediaWiki, and see if the output was valid.
- $testname = $count;
- $valid = runWikiTest( $test, $testname, false );
-
- // save the failed test
- if ( ! $valid ) {
- if ( QUIET ) {
- print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
- } else {
- print "\n";
- }
- saveTest( $test, $testname );
- $num_errors += 1;
- } elseif ( KEEP_PASSED_TESTS ) {
- // print current time, with microseconds (matches "strace" format), and the test name.
- print " " . date( "H:i:s." ) . substr( current( explode( " ", microtime() ) ), 2 ) . " " . $testname;
- saveTest( $test, $testname );
- }
-
- // stop if we have reached max number of errors.
- if ( defined( "MAX_ERRORS" ) && $num_errors >= MAX_ERRORS ) {
- break;
- }
-
- // stop if we have reached max number of mins runtime.
- if ( defined( "MAX_RUNTIME" ) && $mins >= MAX_RUNTIME ) {
- break;
- }
-}
*/
public $findex;
-
/**
* A resource pointing to a sitemap file
*
'edithelppage',
'autocomment-prefix',
'move-redirect-text',
+ 'interlanguage-link-title-langonly',
);
/** Optional messages, which may be translated only if changed in the target language. */
'invalidtitle-unknownnamespace',
'exception-nologin',
'exception-nologin-text',
+ 'exception-nologin-text-manual',
),
'virus' => array(
'virus-badscanner',
'mypreferences',
'prefs-edits',
'prefsnologin',
- 'prefsnologintext',
+ 'prefsnologintext2',
'changepassword',
'changepassword-summary',
'prefs-skin',
'tooltip-preferences-save',
'tooltip-summary',
'interlanguage-link-title',
+ 'interlanguage-link-title-langonly',
),
'stylesheets' => array(
'common.css',
'special-specialpages' => array(
'specialpages',
'specialpages-summary',
+ 'specialpages-note-top',
'specialpages-note',
'specialpages-group-maintenance',
'specialpages-group-other',
fwrite( STDERR, "Loading data from $fileName\n" );
}
// Include the extension to update $wgExtensionMessagesFiles
- if ( !( include_once( $fileName ) ) ) {
+ if ( !( include_once $fileName ) ) {
fwrite( STDERR, "Unable to read $fileName\n" );
exit( 1 );
}
continue;
}
-
$this->output( $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText() );
$dbw->begin( __METHOD__ );
$err = $source->moveTo( $dest, false, $reason, !$noredirects );
--- Used for storing page restrictions (i.e. protection levels)
CREATE TABLE /*$wgDBprefix*/page_restrictions (
+ pr_id INT UNIQUE IDENTITY,
pr_page INT NOT NULL REFERENCES /*$wgDBprefix*/page(page_id) ON DELETE CASCADE,
pr_type NVARCHAR(200) NOT NULL,
pr_level NVARCHAR(200) NOT NULL,
pr_cascade SMALLINT NOT NULL,
pr_user INT NULL,
pr_expiry DATETIME NULL,
- pr_id INT UNIQUE IDENTITY,
CONSTRAINT /*$wgDBprefix*/pr_pagetype PRIMARY KEY(pr_page,pr_type),
);
CREATE INDEX /*$wgDBprefix*/pr_page ON /*$wgDBprefix*/page_restrictions(pr_page);
mr_lang varchar2(32) NOT NULL,
mr_blob BLOB NOT NULL,
mr_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL
-) ;
+);
CREATE UNIQUE INDEX &mw_prefix.msg_resource_u01 ON &mw_prefix.msg_resource (mr_resource, mr_lang);
ALTER TABLE &mw_prefix.oldimage MODIFY oi_name DEFAULT 0;
mr_lang varchar2(32) NOT NULL,
mr_blob BLOB NOT NULL,
mr_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL
-) ;
+);
CREATE UNIQUE INDEX &mw_prefix.msg_resource_u01 ON &mw_prefix.msg_resource (mr_resource, mr_lang);
CREATE TABLE &mw_prefix.msg_resource_links (
$this->mOptions['verbose'] = 1;
}
- $this->verbose( 'Purging files that were: ' . implode( ', ', $typeList ) . "\n");
+ $this->verbose( 'Purging files that were: ' . implode( ', ', $typeList ) . "\n" );
foreach ( $typeList as $type ) {
$this->verbose( "Checking for {$type} files...\n" );
$this->purgeFromLogType( $type );
// Purge items from fileachive table (rows are likely here)
$this->purgeFromArchiveTable( $repo, $file );
- } else if ( $logType === 'move' ) {
+ } elseif ( $logType === 'move' ) {
// Purge the target file as well
$params = unserialize( $row->log_params );
$user->load();
return $user;
}
-
-
}
$maintClass = "ReassignEdits";
if ( $this->hasOption( 'outdir' ) ) {
$conf['storeDirectory'] = $this->getOption( 'outdir' );
}
- $lc = new LocalisationCache_BulkLoad( $conf );
+ $lc = new LocalisationCacheBulkLoad( $conf );
$allCodes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
if ( $this->hasOption( 'lang' ) ) {
* Helper function to rebuild list of languages codes. Prints the code
* for each language which is rebuilt.
* @param $codes array List of language codes to rebuild.
- * @param $lc LocalisationCache Instance of LocalisationCache_BulkLoad (?)
+ * @param $lc LocalisationCache Instance of LocalisationCacheBulkLoad (?)
* @param $force bool Rebuild up-to-date languages
* @return int Number of rebuilt languages
*/
}
}
-
$maintClass = 'RefreshImageMetadata';
require_once RUN_MAINTENANCE_IF_MAIN;
}
}
-
$maintClass = "BatchedQueryRunner";
require_once RUN_MAINTENANCE_IF_MAIN;
$this->output( sprintf( "without session: %-10d %6.2f%%\n", $noSession, $noSession / $total * 100 ) );
$this->output( sprintf( "total: %-10d %6.2f%%\n", $total, 100 ) );
-
$this->output( "\nParser cache\n" );
$hits = intval( $wgMemc->get( wfMemcKey( 'stats', 'pcache_hit' ) ) );
$expired = intval( $wgMemc->get( wfMemcKey( 'stats', 'pcache_miss_expired' ) ) );
CREATE TABLE /*_*/page_restrictions_tmp (
+ pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
pr_page int NOT NULL,
pr_type varbinary(60) NOT NULL,
pr_level varbinary(60) NOT NULL,
pr_cascade tinyint NOT NULL,
pr_user int NULL,
- pr_expiry varbinary(14) NULL,
- pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT
+ pr_expiry varbinary(14) NULL
);
CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions_tmp (pr_page,pr_type);
$cs->check( $fix, $xml );
}
-
// ----------------------------------------------------------------------------------
/**
}
}
-
function error( $type, $msg, $ids ) {
if ( is_array( $ids ) && count( $ids ) == 1 ) {
$ids = reset( $ids );
}
$type = isset( $options['type'] ) ? $options['type'] : 'ConcatenatedGzipHistoryBlob';
-
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select(
array( 'page', 'revision', 'text' ),
require __DIR__ . '/../commandLine.inc';
-
if ( count( $args ) < 1 ) {
echo "Usage: php trackBlobs.php <cluster> [... <cluster>]\n";
echo "Adds blobs from a given ES cluster to the blob_tracking table\n";
-- Used for storing page restrictions (i.e. protection levels)
CREATE TABLE /*_*/page_restrictions (
+ -- Field for an ID for this restrictions row (sort-key for Special:ProtectedPages)
+ pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- Page to apply restrictions to (Foreign Key to page).
pr_page int NOT NULL,
-- The protection type (edit, move, etc)
-- Field for future support of per-user restriction.
pr_user int NULL,
-- Field for time-limited protection.
- pr_expiry varbinary(14) NULL,
- -- Field for an ID for this restrictions row (sort-key for Special:ProtectedPages)
- pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT
+ pr_expiry varbinary(14) NULL
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type);
-- Holds all the sites known to the wiki.
CREATE TABLE /*_*/sites (
--- Numeric id of the site
+ -- Numeric id of the site
site_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- Global identifier for the site, ie 'enwiktionary'
$time2 = new MWTimestamp();
$this->output( "\nDone.\n" );
- $this->output( "\nThe job took ". $time2->diff( $time1 )->format( "%i:%S" ). "\n" );
+ $this->output( "\nThe job took " . $time2->diff( $time1 )->format( "%i:%S" ) . "\n" );
}
function afterFinalSetup() {
# cache from $wgExtensionFunctions (bug 20471)
$wgLocalisationCacheConf = array(
'class' => 'LocalisationCache',
- 'storeClass' => 'LCStore_Null',
+ 'storeClass' => 'LCStoreNull',
'storeDirectory' => false,
'manualRecache' => false,
);
}
}
-
/**
* This is used to check options. Only needed on construction
*
}
}
-
/** Change our users options */
private function CHANGER() {
$this->warn();
'user.tokens',
),
),
- 'mediawiki.icon' => array(
- 'styles' => 'resources/mediawiki/mediawiki.icon.css',
- ),
'mediawiki.debug' => array(
'scripts' => 'resources/mediawiki/mediawiki.debug.js',
'styles' => 'resources/mediawiki/mediawiki.debug.css',
// must be loaded on the bottom
'position' => 'bottom',
),
- 'mediawiki.inspect' => array(
- 'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
- 'dependencies' => array(
- 'jquery.byteLength',
- 'jquery.json',
- ),
- 'targets' => array( 'desktop', 'mobile' ),
- ),
'mediawiki.feedback' => array(
'scripts' => 'resources/mediawiki/mediawiki.feedback.js',
'styles' => 'resources/mediawiki/mediawiki.feedback.css',
),
'targets' => array( 'desktop', 'mobile' ),
),
+ 'mediawiki.hlist' => array(
+ 'styles' => 'resources/mediawiki/mediawiki.hlist.css',
+ 'scripts' => 'resources/mediawiki/mediawiki.hlist.js',
+ 'dependencies' => array(
+ 'jquery.client',
+ ),
+ ),
'mediawiki.htmlform' => array(
'scripts' => 'resources/mediawiki/mediawiki.htmlform.js',
'messages' => array( 'htmlform-chosen-placeholder' ),
),
+ 'mediawiki.icon' => array(
+ 'styles' => 'resources/mediawiki/mediawiki.icon.css',
+ ),
+ 'mediawiki.inspect' => array(
+ 'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
+ 'dependencies' => array(
+ 'jquery.byteLength',
+ 'jquery.json',
+ ),
+ 'targets' => array( 'desktop', 'mobile' ),
+ ),
'mediawiki.notification' => array(
'styles' => 'resources/mediawiki/mediawiki.notification.css',
'scripts' => 'resources/mediawiki/mediawiki.notification.js',
* @author Trevor Parscal <tparscal@wikimedia.org>, 2012
* @author Krinkle <krinklemail@gmail.com>, 2012
* @version 0.2.0
- * @license GPL v2
+ * @license MIT
*/
( function ( $ ) {
var isValid = mw.util.validateEmail( mail ),
$label = $( '#mw-emailaddress-validity' );
+ // Set up the validity notice if it doesn't already exist
+ if ( $label.length === 0 ) {
+ $label = $( '<label for="wpNewEmail" id="mw-emailaddress-validity"></label>' )
+ .insertAfter( '#wpNewEmail' );
+ }
+
// We allow empty address
if ( isValid === null ) {
$label.text( '' ).removeClass( 'valid invalid' );
}
$( function () {
- // Lame tip to let user know if its email is valid. See bug 22449.
- // Only bind once for 'blur' so that the user can fill it in without errors;
- // after that, look at every keypress for immediate feedback.
- $( '#wpNewEmail' ).one( 'blur', function () {
- var $this = $( this );
- if ( $( '#mw-emailaddress-validity' ).length === 0 ) {
- $this.after( '<label for="wpNewEmail" id="mw-emailaddress-validity"></label>' );
- }
-
- updateMailValidityLabel( $this.val() );
- $this.keyup( function () {
+ $( '#wpNewEmail' )
+ // Lame tip to let user know if its email is valid. See bug 22449.
+ // Only bind once for 'blur' so that the user can fill it in without errors;
+ // after that, look at every keypress for immediate feedback.
+ .one( 'blur', function () {
+ var $this = $( this );
updateMailValidityLabel( $this.val() );
+ $this.keyup( function () {
+ updateMailValidityLabel( $this.val() );
+ } );
+ } )
+ // Supress built-in validation notice and just call updateMailValidityLabel(),
+ // to avoid double notice. See bug 40909.
+ .on( 'invalid', function ( e ) {
+ e.preventDefault();
+ updateMailValidityLabel( $( this ).val() );
} );
- } );
} );
}( mediaWiki, jQuery ) );
.searchresult {
display: inline !ie;
}
-
-/** Add some extra padding keep browser's "clear field"
- UI from rubbing up against the side of the field */
-input[type="search"] {
- padding-right: 0.5em;
-}
}
color: @agoraTextColor;
- padding: 0.35em 0 0.35em 0.5em;
+ padding: 0.35em 0.5em 0.35em 0.5em;
}
.agora-label-styling() {
thumbPhpRegex = /thumb\.php/,
regexes = [
// Thumbnails
- /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)\/[^\s\/]+-\1[^\s\/]*$/,
+ /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)\/[^\s\/]+-(?:\1|thumbnail)[^\s\/]*$/,
// Thumbnails in non-hashed upload directories
- /\/([^\s\/]+)\/[^\s\/]+-\1[^\s\/]*$/,
+ /\/([^\s\/]+)\/[^\s\/]+-(?:\1|thumbnail)[^\s\/]*$/,
// Full size images
/\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)$/,
--- /dev/null
+/**
+ Stylesheet for mediawiki.hlist module
+ @author [[User:Edokter]]
+ */
+.skin-monobook .hlist dl,
+.skin-modern .hlist dl,
+.skin-vector .hlist dl {
+ line-height: 1.5em;
+}
+.hlist dl,
+.hlist ol,
+.hlist ul {
+ margin: 0;
+ padding: 0;
+}
+/* Display list items inline */
+.hlist dd,
+.hlist dt,
+.hlist li {
+ margin: 0;
+ display: inline;
+}
+/* Display nested lists inline */
+.hlist dl dl, .hlist dl ol, .hlist dl ul,
+.hlist ol dl, .hlist ol ol, .hlist ol ul,
+.hlist ul dl, .hlist ul ol, .hlist ul ul {
+ display: inline;
+}
+/* Generate interpuncts */
+.hlist dt:after {
+ content: ":";
+}
+.hlist dd:after,
+.hlist li:after {
+ content: " ·";
+ font-weight: bold;
+}
+.hlist dd:last-child:after,
+.hlist dt:last-child:after,
+.hlist li:last-child:after {
+ content: none;
+}
+/* For IE8 */
+.hlist dd.hlist-last-child:after,
+.hlist dt.hlist-last-child:after,
+.hlist li.hlist-last-child:after {
+ content: none;
+}
+/* Add parentheses around nested lists */
+.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,
+.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,
+.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before {
+ content: "(";
+ font-weight: normal;
+}
+.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,
+.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,
+.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after {
+ content: ")";
+ font-weight: normal;
+}
+/* For IE8 */
+.hlist dd dd.hlist-last-child:after, .hlist dd dt.hlist-last-child:after, .hlist dd li.hlist-last-child:after,
+.hlist dt dd.hlist-last-child:after, .hlist dt dt.hlist-last-child:after, .hlist dt li.hlist-last-child:after,
+.hlist li dd.hlist-last-child:after, .hlist li dt.hlist-last-child:after, .hlist li li.hlist-last-child:after {
+ content: ")";
+ font-weight: normal;
+}
+/* Put ordinals in front of ordered list items */
+.hlist ol {
+ counter-reset: list-item;
+}
+.hlist ol > li {
+ counter-increment: list-item;
+}
+.hlist ol > li:before {
+ content: counter(list-item) " ";
+}
+.hlist dd ol > li:first-child:before,
+.hlist dt ol > li:first-child:before,
+.hlist li ol > li:first-child:before {
+ content: "(" counter(list-item) " ";
+}
--- /dev/null
+/**
+ IE 8: Add pseudo-selector class to last-child list items
+ @author [[User:Edokter]]
+*/
+jQuery( function( $ ) {
+ if ( $.client.profile().name === 'msie' ) {
+ if ( $.client.profile().versionNumber === 8 ) {
+ $( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
+ .addClass( 'hlist-last-child' );
+ }
+ /* IE 7 and below: Generate interpuncts and parentheses */
+ if ( $.client.profile().versionNumber <= 7 ) {
+ var $hlists = $( '.hlist' );
+ $hlists.find( 'dt:not(:last-child)' )
+ .append( ': ' );
+ $hlists.find( 'dd:not(:last-child)' )
+ .append( '<b>·</b> ' );
+ $hlists.find( 'li:not(:last-child)' )
+ .append( '<b>·</b> ' );
+ $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
+ .prepend( '( ' ).append( ') ' );
+ }
+ }
+} );
// Cache hit stats
stats: { hits: 0, misses: 0, expired: 0 },
+ // Experiment data
+ experiment: ( function () {
+ var start = ( new Date() ).getTime(), id = 0, seed = 0;
+
+ try {
+ id = JSON.parse( localStorage.getItem( 'moduleStorageExperiment' ) );
+ if ( typeof id !== 'number' ) {
+ id = Math.floor( Math.random() * Math.random() * 1e16 );
+ localStorage.setItem( 'moduleStorageExperiment', id );
+ }
+ seed = id % 2000;
+ } catch ( e ) {}
+
+ return {
+ // Unique identifier for this browser. This allows us to group all
+ // datapoints generated by a particular browser, which in turn allows us
+ // to see how the initial load compares to subsequent page loads.
+ id: id,
+
+ // Group assignment may be 0 (not in experiment), 1 (control group), or 2
+ // (experimental group). Browsers that don't implement all the prerequisite APIs
+ // (JSON and Web Storage) are ineligible. Eligible browsers have a 0.1% chance
+ // of being included in the experiment, in which case they are equally likely to
+ // be assigned to either the experimental or control group.
+ group: seed === 1 ? 1 : ( seed === 2 ? 2 : 0 ),
+
+ // Assess module storage performance by measuring the time between this
+ // reference point and the window load event.
+ start: start
+ };
+ }() ),
+
/**
* Construct a JSON-serializable object representing the content of the store.
* @return {Object} Module store contents.
* code for a full account of why we need a try / catch: <http://git.io/4NEwKg>.
*/
init: function () {
- var raw, data, optedIn;
+ var raw, data;
if ( mw.loader.store.enabled !== null ) {
// #init already ran.
return;
}
- // Temporarily allow users to opt-in during mw.loader.store test phase by
- // manually setting a cookie (bug 56397).
- optedIn = /ResourceLoaderStorageEnabled=1/.test( document.cookie );
-
- if ( !( mw.config.get( 'wgResourceLoaderStorageEnabled' ) || optedIn ) || mw.config.get( 'debug' ) ) {
- // Disabled by configuration, or because debug mode is set.
- mw.loader.store.enabled = false;
+ if (
+ // We're in debug mode
+ mw.config.get( 'debug' ) ||
+ // Module storage is neither enabled by default, nor enabled for this user's group.
+ !( mw.config.get( 'wgResourceLoaderStorageEnabled' ) || mw.loader.store.experiment.group === 2 )
+ ) {
return;
}
$lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) );
-
// Second row. Privileged actions.
$element = array();
$lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) );
-
// Third row. Language links.
$lines[] = $this->otherLanguages();
}
$bar = $this->sidebarAdditions( $bar );
}
-
// Fill out special sidebar items with content
$orig_bar = $bar;
$bar = array();
}
}
-
// Output the sidebar
// CologneBlue uses custom messages for some portlets, but we should keep the ids for consistency
$idToMessage = array(
<?php
}
} // end of class
-
-
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="128px" height="128px" id="RSSicon" viewBox="0 0 256 256">\r
+<defs>\r
+<linearGradient x1="0.085" y1="0.085" x2="0.915" y2="0.915" id="RSSg">\r
+<stop offset="0.0" stop-color="#E3702D"/><stop offset="0.1071" stop-color="#EA7D31"/>\r
+<stop offset="0.3503" stop-color="#F69537"/><stop offset="0.5" stop-color="#FB9E3A"/>\r
+<stop offset="0.7016" stop-color="#EA7C31"/><stop offset="0.8866" stop-color="#DE642B"/>\r
+<stop offset="1.0" stop-color="#D95B29"/>\r
+</linearGradient>\r
+</defs>\r
+<rect width="256" height="256" rx="55" ry="55" x="0" y="0" fill="#CC5D15"/>\r
+<rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/>\r
+<rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#RSSg)"/>\r
+<circle cx="68" cy="189" r="24" fill="#FFF"/>\r
+<path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" fill="#FFF"/>\r
+<path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" fill="#FFF"/>\r
+</svg>\r
/* feed links */
a.feedlink {
/* @embed */
- background: url(images/feed-icon.png) center left no-repeat;
+ background-image: url(images/feed-icon.png);
+ background-image: linear-gradient(transparent, transparent), url(images/feed-icon.svg);
+ background-position: center left;
+ background-repeat: no-repeat;
+ background-size: 12px 12px;
padding-left: 16px;
}
print <<<EOT
ParserTest-specific options:
-
--regex="<regex>" Only run parser tests that match the given regex
--file="<filename>" File describing parser tests
--keep-uploads Re-use the same upload directory for each test, don't delete it
-
Database options:
--use-normal-tables Use normal DB tables.
--reuse-db Init DB only if tables are missing and keep after finish.
-
Debugging options:
--debug-tests Log testing activity to the PHPUnitCommand log channel.
private static $dbSetup = false;
private static $oldTablePrefix = false;
+ /**
+ * Original value of PHP's error_reporting setting.
+ *
+ * @var int
+ */
+ private $phpErrorLevel;
+
/**
* Holds the paths of temporary files/directories created through getNewTempFile,
* and getNewTempDirectory
parent::setUp();
$this->called['setUp'] = 1;
+ $this->phpErrorLevel = intval( ini_get( 'error_reporting' ) );
+
/*
// @todo global variables to restore for *every* test
array(
}
$this->mwGlobals = array();
+ $phpErrorLevel = intval( ini_get( 'error_reporting' ) );
+
+ if ( $phpErrorLevel !== $this->phpErrorLevel ) {
+ ini_set( 'error_reporting', $this->phpErrorLevel );
+
+ $oldHex = strtoupper( dechex( $this->phpErrorLevel ) );
+ $newHex = strtoupper( dechex( $phpErrorLevel ) );
+ $message = "PHP error_reporting setting was left dirty: was 0x$oldHex before test, 0x$newHex after test!";
+
+ $this->fail( $message );
+ }
+
parent::tearDown();
wfProfileOut( __METHOD__ );
}
rev_minor_edit tinyint default '0',
rev_deleted tinyint default '0',
rev_len int,
- rev_parent_id INTEGER default NULL) /*$wgDBTableOptions*/ ;
+ rev_parent_id INTEGER default NULL) /*$wgDBTableOptions*/;
CREATE TABLE /*$wgDBprefix*/text (
old_id INTEGER PRIMARY KEY AUTOINCREMENT,
old_text mediumblob ,
- old_flags tinyblob ) /*$wgDBTableOptions*/ ;
+ old_flags tinyblob ) /*$wgDBTableOptions*/;
CREATE TABLE /*$wgDBprefix*/archive (
ar_namespace INTEGER default '0',
CREATE TABLE /*$wgDBprefix*/hitcounter (
hc_id INTEGER
-) ;
+);
CREATE TABLE /*$wgDBprefix*/ipblocks (
ipb_id INTEGER PRIMARY KEY AUTOINCREMENT,
CREATE TABLE /*$wgDBprefix*/searchindex (
si_page INTEGER ,
si_title varchar(255) default '',
- si_text mediumtext ) ;
+ si_text mediumtext );
CREATE TABLE /*$wgDBprefix*/interwiki (
iw_prefix varchar(32) ,
"expected article not being created if empty"
);
-
$this->assertEdit(
'MediaWiki:January',
null,
);
}
-
/**
* Lame JSON schema validation.
*
* @param $key String Name of the key to validate in the serialized JSON
* @dataProvider provideJsonSerializedKeys
*/
- function testJsonserializeexceptionKeys($expectedKeyType, $exClass, $key) {
+ function testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key ) {
# Make sure we log a backtrace:
$this->setMwGlobals( array( 'wgLogExceptionBacktrace' => true ) );
"JSON serialized exception is missing key '$key'"
);
$this->assertInternalType( $expectedKeyType, $json->$key,
- "JSON serialized key '$key' has type " . gettype($json->$key)
+ "JSON serialized key '$key' has type " . gettype( $json->$key )
. " (expected: $expectedKeyType)."
);
}
*/
function provideJsonSerializedKeys() {
$testCases = array();
- foreach( array( 'Exception', 'MWException' ) as $exClass ) {
+ foreach ( array( 'Exception', 'MWException' ) as $exClass ) {
$exTests = array(
array( 'string', $exClass, 'id' ),
array( 'string', $exClass, 'file' ),
# Backtrace only enabled with wgLogExceptionBacktrace = true
array( 'array', $exClass, 'backtrace' ),
);
- $testCases = array_merge($testCases, $exTests);
+ $testCases = array_merge( $testCases, $exTests );
}
return $testCases;
}
);
}
}
-
-}
\ No newline at end of file
+}
$this->assertEquals( $result, wfArrayToCgi( $array ) );
}
-
/**
- * @covers ::testWfArrayDiff2
+ * @covers ::wfArrayToCgi
*/
public function testArrayToCGI2() {
$this->assertEquals(
unlink( $wgDebugLogFile );
wfDebugMem();
- $this->assertGreaterThan( 5000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
+ $this->assertGreaterThan( 1000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
unlink( $wgDebugLogFile );
wfDebugMem( true );
- $this->assertGreaterThan( 5000000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
+ $this->assertGreaterThan( 1000000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
unlink( $wgDebugLogFile );
$wgDebugLogFile = $old_log_file;
$array = array( 'a', 'b' );
$object = new StdClass();
self::helperThrowAnException( $array, $object, $refvar );
- } catch (Exception $e) {
+ } catch ( Exception $e ) {
}
# Make sure our strack trace contains an array and an object passed to
$hasArray = $hasArray || is_array( $arg );
}
- if( $hasObject && $hasArray ) {
+ if ( $hasObject && $hasArray ) {
break;
}
}
continue;
}
foreach ( $frame['args'] as $arg ) {
- $this->assertNotInternalType( 'array', $arg);
- $this->assertNotInternalType( 'object', $arg);
+ $this->assertNotInternalType( 'array', $arg );
+ $this->assertNotInternalType( 'object', $arg );
}
}
$this->assertEquals( $matches, array( 'title' => "Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." ) );
}
-
/**
* Ensure that the php passed site of parameter values are not urldecoded
*/
+++ /dev/null
-<?php
-/**
- * @group Database
- */
-class RecentChangeTest extends MediaWikiTestCase {
- protected $title;
- protected $target;
- protected $user;
- protected $user_comment;
- protected $context;
-
- public function __construct() {
- parent::__construct();
-
- $this->title = Title::newFromText( 'SomeTitle' );
- $this->target = Title::newFromText( 'TestTarget' );
- $this->user = User::newFromName( 'UserName' );
-
- $this->user_comment = '<User comment about action>';
- $this->context = RequestContext::newExtraneousContext( $this->title );
- }
-
- /**
- * The testIrcMsgForAction* tests are supposed to cover the hacky
- * LogFormatter::getIRCActionText / bug 34508
- *
- * Third parties bots listen to those messages. They are clever enough
- * to fetch the i18n messages from the wiki and then analyze the IRC feed
- * to reverse engineer the $1, $2 messages.
- * One thing bots can not detect is when MediaWiki change the meaning of
- * a message like what happened when we deployed 1.19. $1 became the user
- * performing the action which broke basically all bots around.
- *
- * Should cover the following log actions (which are most commonly used by bots):
- * - block/block
- * - block/unblock
- * - delete/delete
- * - delete/restore
- * - newusers/create
- * - newusers/create2
- * - newusers/autocreate
- * - move/move
- * - move/move_redir
- * - protect/protect
- * - protect/modifyprotect
- * - protect/unprotect
- * - upload/upload
- *
- * As well as the following Auto Edit Summaries:
- * - blank
- * - replace
- * - rollback
- * - undo
- */
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypeBlock() {
- $sep = $this->context->msg( 'colon-separator' )->text();
-
- # block/block
- $this->assertIRCComment(
- $this->context->msg( 'blocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'block', 'block',
- array(),
- $this->user_comment
- );
- # block/unblock
- $this->assertIRCComment(
- $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'block', 'unblock',
- array(),
- $this->user_comment
- );
- }
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypeDelete() {
- $sep = $this->context->msg( 'colon-separator' )->text();
-
- # delete/delete
- $this->assertIRCComment(
- $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'delete', 'delete',
- array(),
- $this->user_comment
- );
-
- # delete/restore
- $this->assertIRCComment(
- $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'delete', 'restore',
- array(),
- $this->user_comment
- );
- }
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypeNewusers() {
- $this->assertIRCComment(
- 'New user account',
- 'newusers', 'newusers',
- array()
- );
- $this->assertIRCComment(
- 'New user account',
- 'newusers', 'create',
- array()
- );
- $this->assertIRCComment(
- 'created new account SomeTitle',
- 'newusers', 'create2',
- array()
- );
- $this->assertIRCComment(
- 'Account created automatically',
- 'newusers', 'autocreate',
- array()
- );
- }
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypeMove() {
- $move_params = array(
- '4::target' => $this->target->getPrefixedText(),
- '5::noredir' => 0,
- );
- $sep = $this->context->msg( 'colon-separator' )->text();
-
- # move/move
- $this->assertIRCComment(
- $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )->plain() . $sep . $this->user_comment,
- 'move', 'move',
- $move_params,
- $this->user_comment
- );
-
- # move/move_redir
- $this->assertIRCComment(
- $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )->plain() . $sep . $this->user_comment,
- 'move', 'move_redir',
- $move_params,
- $this->user_comment
- );
- }
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypePatrol() {
- # patrol/patrol
- $this->assertIRCComment(
- $this->context->msg( 'patrol-log-line', 'revision 777', '[[SomeTitle]]', '' )->plain(),
- 'patrol', 'patrol',
- array(
- '4::curid' => '777',
- '5::previd' => '666',
- '6::auto' => 0,
- )
- );
- }
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypeProtect() {
- $protectParams = array(
- '[edit=sysop] (indefinite) [move=sysop] (indefinite)'
- );
- $sep = $this->context->msg( 'colon-separator' )->text();
-
- # protect/protect
- $this->assertIRCComment(
- $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )->plain() . $sep . $this->user_comment,
- 'protect', 'protect',
- $protectParams,
- $this->user_comment
- );
-
- # protect/unprotect
- $this->assertIRCComment(
- $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'protect', 'unprotect',
- array(),
- $this->user_comment
- );
-
- # protect/modify
- $this->assertIRCComment(
- $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )->plain() . $sep . $this->user_comment,
- 'protect', 'modify',
- $protectParams,
- $this->user_comment
- );
- }
-
- /**
- * @covers LogFormatter::getIRCActionText
- */
- public function testIrcMsgForLogTypeUpload() {
- $sep = $this->context->msg( 'colon-separator' )->text();
-
- # upload/upload
- $this->assertIRCComment(
- $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'upload', 'upload',
- array(),
- $this->user_comment
- );
-
- # upload/overwrite
- $this->assertIRCComment(
- $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
- 'upload', 'overwrite',
- array(),
- $this->user_comment
- );
- }
-
- /**
- * @todo Emulate these edits somehow and extract
- * raw edit summary from RecentChange object
- * --
- */
- /*
- public function testIrcMsgForBlankingAES() {
- // $this->context->msg( 'autosumm-blank', .. );
- }
-
- public function testIrcMsgForReplaceAES() {
- // $this->context->msg( 'autosumm-replace', .. );
- }
-
- public function testIrcMsgForRollbackAES() {
- // $this->context->msg( 'revertpage', .. );
- }
-
- public function testIrcMsgForUndoAES() {
- // $this->context->msg( 'undo-summary', .. );
- }
- */
-
- /**
- * @param $expected String Expected IRC text without colors codes
- * @param $type String Log type (move, delete, suppress, patrol ...)
- * @param $action String A log type action
- * @param $params
- * @param $comment String (optional) A comment for the log action
- * @param $msg String (optional) A message for PHPUnit :-)
- */
- protected function assertIRCComment( $expected, $type, $action, $params, $comment = null, $msg = '' ) {
-
- $logEntry = new ManualLogEntry( $type, $action );
- $logEntry->setPerformer( $this->user );
- $logEntry->setTarget( $this->title );
- if ( $comment !== null ) {
- $logEntry->setComment( $comment );
- }
- $logEntry->setParameters( $params );
-
- $formatter = LogFormatter::newFromEntry( $logEntry );
- $formatter->setContext( $this->context );
-
- // Apply the same transformation as done in IRCColourfulRCFeedFormatter::getLine for rc_comment
- $ircRcComment = IRCColourfulRCFeedFormatter::cleanupForIRC( $formatter->getIRCActionComment() );
-
- $this->assertEquals(
- $expected,
- $ircRcComment,
- $msg
- );
- }
-}
$this->assertRevEquals( $orig, $rev );
}
-
/**
* @covers Revision::newFromArchiveRow
*/
}
}
-
/**
* @covers Revision::getContentFormat
*/
$this->assertEquals( $expectedText, $rev->getRawText( $audience ) );
}
-
public function dataGetSize() {
return array(
array( "hello world.", CONTENT_MODEL_WIKITEXT, 12 ),
$this->assertEquals( "bar", $content->getText() ); // clones should be independent
}
-
/**
* Tests whether $rev->getContent() returns the same object repeatedly if appropriate.
*
--- /dev/null
+<?php
+
+/**
+ * @covers SpecialPage
+ *
+ * @group Database
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < aude.wiki@gmail.com >
+ */
+class SpecialPageTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( array(
+ 'wgScript' => '/index.php',
+ 'wgContLang' => Language::factory( 'en' )
+ ) );
+ }
+
+ /**
+ * @dataProvider getTitleForProvider
+ */
+ public function testGetTitleFor( $expectedName, $name ) {
+ $title = SpecialPage::getTitleFor( $name );
+ $expected = Title::makeTitle( NS_SPECIAL, $expectedName );
+ $this->assertEquals( $expected, $title );
+ }
+
+ public function getTitleForProvider() {
+ return array(
+ array( 'UserLogin', 'Userlogin' )
+ );
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Notice
+ */
+ public function testInvalidGetTitleFor() {
+ $title = SpecialPage::getTitleFor( 'cat' );
+ $expected = Title::makeTitle( NS_SPECIAL, 'Cat' );
+ $this->assertEquals( $expected, $title );
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Notice
+ * @dataProvider getTitleForWithWarningProvider
+ */
+ public function testGetTitleForWithWarning( $expected, $name ) {
+ $title = SpecialPage::getTitleFor( $name );
+ $this->assertEquals( $expected, $title );
+ }
+
+ public function getTitleForWithWarningProvider() {
+ return array(
+ array( Title::makeTitle( NS_SPECIAL, 'UserLogin' ), 'UserLogin' )
+ );
+ }
+
+ /**
+ * @dataProvider requireLoginAnonProvider
+ */
+ public function testRequireLoginAnon( $expected, $reason, $title ) {
+ $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
+
+ $user = User::newFromId( 0 );
+ $specialPage->getContext()->setUser( $user );
+ $specialPage->getContext()->setLanguage( Language::factory( 'en' ) );
+
+ $this->setExpectedException( 'UserNotLoggedIn', $expected );
+
+ if ( $reason === 'blank' && $title === 'blank' ) {
+ $specialPage->requireLogin();
+ } else {
+ $specialPage->requireLogin( $reason, $title );
+ }
+ }
+
+ public function requireLoginAnonProvider() {
+ $lang = 'en';
+
+ $msg = wfMessage( 'loginreqlink' )->inLanguage( $lang )->escaped();
+ $loginLink = '<a href="/index.php?title=Special:UserLogin&returnto=Special%3AWatchlist"'
+ . ' title="Special:UserLogin">' . $msg . '</a>';
+
+ $expected1 = wfMessage( 'exception-nologin-text-manual' )
+ ->params( $loginLink )->inLanguage( $lang )->text();
+
+ $expected2 = wfMessage( 'about' )->inLanguage( $lang )->text();
+
+ return array(
+ array( $expected1, null, null ),
+ array( $expected2, 'about', null ),
+ array( $expected2, wfMessage( 'about' ), null ),
+ array( $expected2, 'about', 'about' ),
+ array( $expected2, 'about', wfMessage( 'about' ) ),
+ array( $expected1, 'blank', 'blank' )
+ );
+ }
+
+ public function testRequireLoginNotAnon() {
+ $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
+
+ $user = User::newFromId( 0 );
+ $user->setId( 1 );
+ $specialPage->getContext()->setUser( $user );
+
+ $specialPage->requireLogin();
+
+ // no exception thrown, logged in use can access special page
+ $this->assertTrue( true );
+ }
+
+}
*/
class StatusTest extends MediaWikiTestCase {
- public function testCanConstruct(){
+ public function testCanConstruct() {
new Status();
$this->assertTrue( true );
}
/**
* @dataProvider provideValues
* @covers Status::newGood
- * @covers Status::getValue
- * @covers Status::isGood
- * @covers Status::isOK
*/
- public function testNewGood( $value = null ){
+ public function testNewGood( $value = null ) {
$status = Status::newGood( $value );
$this->assertTrue( $status->isGood() );
$this->assertTrue( $status->isOK() );
$this->assertEquals( $value, $status->getValue() );
}
- public static function provideValues(){
+ public static function provideValues() {
return array(
array(),
array( 'foo' ),
/**
* @covers Status::newFatal
- * @covers Status::isGood
- * @covers Status::isOK
- * @covers Status::getMessage
*/
public function testNewFatalWithMessage() {
$message = $this->getMockBuilder( 'Message' )
/**
* @covers Status::newFatal
- * @covers Status::isGood
- * @covers Status::isOK
- * @covers Status::getMessage
*/
public function testNewFatalWithString() {
$message = 'foo';
$status = Status::newFatal( $message );
$this->assertFalse( $status->isGood() );
$this->assertFalse( $status->isOK() );
- $newMessage = $status->getMessage();
- $this->assertEquals( $message, $newMessage->getKey() );
+ $this->assertEquals( $message, $status->getMessage()->getKey() );
}
/**
* @dataProvider provideSetResult
- * @covers Status::getValue
- * @covers Status::isOK
+ * @covers Status::setResult
*/
public function testSetResult( $ok, $value = null ) {
$status = new Status();
);
}
+ /**
+ * @dataProvider provideIsOk
+ * @covers Status::isOk
+ */
+ public function testIsOk( $ok ) {
+ $status = new Status();
+ $status->ok = $ok;
+ $this->assertEquals( $ok, $status->isOK() );
+ }
+
+ public static function provideIsOk() {
+ return array(
+ array( true ),
+ array( false ),
+ );
+ }
+
+ /**
+ * @covers Status::getValue
+ */
+ public function testGetValue() {
+ $status = new Status();
+ $status->value = 'foobar';
+ $this->assertEquals( 'foobar', $status->getValue() );
+ }
+
+ /**
+ * @dataProvider provideIsGood
+ * @covers Status::isGood
+ */
+ public function testIsGood( $ok, $errors, $expected ) {
+ $status = new Status();
+ $status->ok = $ok;
+ $status->errors = $errors;
+ $this->assertEquals( $expected, $status->isGood() );
+ }
+
+ public static function provideIsGood() {
+ return array(
+ array( true, array(), true ),
+ array( true, array( 'foo' ), false ),
+ array( false, array(), false ),
+ array( false, array( 'foo' ), false ),
+ );
+ }
+
/**
* @dataProvider provideMockMessageDetails
* @covers Status::warning
$status = new Status();
$messages = $this->getMockMessages( $mockDetails );
- foreach( $messages as $message ){
+ foreach ( $messages as $message ) {
$status->warning( $message );
}
$warnings = $status->getWarningsArray();
$this->assertEquals( count( $messages ), count( $warnings ) );
- foreach( $messages as $key => $message ) {
+ foreach ( $messages as $key => $message ) {
$expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
$this->assertEquals( $warnings[$key], $expectedArray );
}
$status = new Status();
$messages = $this->getMockMessages( $mockDetails );
- foreach( $messages as $message ){
+ foreach ( $messages as $message ) {
$status->error( $message );
}
$errors = $status->getErrorsArray();
$this->assertEquals( count( $messages ), count( $errors ) );
- foreach( $messages as $key => $message ) {
+ foreach ( $messages as $key => $message ) {
$expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
$this->assertEquals( $errors[$key], $expectedArray );
}
* @param array $messageDetails eg. array( 'KEY' => array(/PARAMS/) )
* @return Message[]
*/
- protected function getMockMessages( $messageDetails ){
+ protected function getMockMessages( $messageDetails ) {
$messages = array();
- foreach( $messageDetails as $key => $paramsArray ){
+ foreach ( $messageDetails as $key => $paramsArray ) {
$messages[] = $this->getMockMessage( $key, $paramsArray );
}
return $messages;
}
- public static function provideMockMessageDetails(){
+ public static function provideMockMessageDetails() {
return array(
array( array( 'key1' => array( 'foo' => 'bar' ) ) ),
array( array( 'key1' => array( 'foo' => 'bar' ), 'key2' => array( 'foo2' => 'bar2' ) ) ),
* @covers Status::merge
* @todo test merge with $overwriteValue true
*/
- public function testMerge(){
+ public function testMerge() {
$status1 = new Status();
$status2 = new Status();
$message1 = $this->getMockMessage( 'warn1' );
$status->fatal( 'bad' );
$this->assertTrue( $status->hasMessage( 'bad' ) );
$this->assertFalse( $status->hasMessage( 'good' ) );
+ }
+ /**
+ * @dataProvider provideCleanParams
+ * @covers Status::cleanParams
+ */
+ public function testCleanParams( $cleanCallback, $params, $expected ) {
+ $method = new ReflectionMethod( 'Status', 'cleanParams' );
+ $method->setAccessible( true );
+ $status = new Status();
+ $status->cleanCallback = $cleanCallback;
+
+ $this->assertEquals( $expected, $method->invoke( $status, $params ) );
+ }
+
+ /**
+ * @todo test cleanParams with a callback
+ */
+ public static function provideCleanParams() {
+ return array(
+ array( false, array( 'foo' => 'bar' ), array( 'foo' => 'bar' ) ),
+ );
+ }
+
+ /**
+ * @dataProvider provideGetWikiText
+ * @covers Status::getWikiText
+ * @todo test long and short context messages generated through this method
+ * this can not really be done now due to use of wfMessage()->plain()
+ * It is possible to mock such methods but only if namespaces are used
+ */
+ public function testGetWikiText( Status $status, $expected ) {
+ $this->assertEquals( $expected, $status->getWikiText() );
+ }
+
+ /**
+ * @return array of arrays with values;
+ * 0 => status object
+ * 1 => expected string (with no context)
+ */
+ public static function provideGetWikiText() {
+ $testCases = array();
+
+ $testCases[ 'GoodStatus' ] = array(
+ new Status(),
+ "Internal error: Status::getWikiText called for a good result, this is incorrect\n",
+ );
+
+ $status = new Status();
+ $status->ok = false;
+ $testCases[ 'GoodButNoError' ] = array(
+ $status,
+ "Internal error: Status::getWikiText: Invalid result object: no error text but not OK\n",
+ );
+
+ $status = new Status();
+ $status->warning( 'fooBar!' );
+ $testCases[ '1StringWarning' ] = array(
+ $status,
+ "<fooBar!>",
+ );
+
+ $status = new Status();
+ $status->warning( 'fooBar!' );
+ $status->warning( 'fooBar2!' );
+ $testCases[ '2StringWarnings' ] = array(
+ $status,
+ "* <fooBar!>\n* <fooBar2!>\n",
+ );
+
+ $status = new Status();
+ $status->warning( new Message( 'fooBar!', array( 'foo', 'bar' ) ) );
+ $testCases[ '1MessageWarning' ] = array(
+ $status,
+ "<fooBar!>",
+ );
+
+ $status = new Status();
+ $status->warning( new Message( 'fooBar!', array( 'foo', 'bar' ) ) );
+ $status->warning( new Message( 'fooBar2!' ) );
+ $testCases[ '2MessageWarnings' ] = array(
+ $status,
+ "* <fooBar!>\n* <fooBar2!>\n",
+ );
+
+ return $testCases;
}
- //todo test cleanParams
- //todo test getWikiText
//todo test getMessage
//todo test getErrorMessage
//todo test getHTML
//todo test getStatusArray
//todo test getErrorsByType
//todo test replaceMessage
- //todo test replaceMessage
}
UserMailer::quotedPrintable( "\xc4\x88u legebla?", "UTF-8" ) );
}
-}
\ No newline at end of file
+}
);
}
-
/**
* @dataProvider provideIsCountable
* @covers WikiPage::isCountable
more stuff
";
-
public function dataReplaceSection() {
//NOTE: assume the Help namespace to contain wikitext
return array(
$this->assertEquals( $value, $obj->value );
}
- public function provideConstruction(){
+ public function provideConstruction() {
return array(
array( null ),
array( '' ),
'text' => "==section 1==\nnew content 1",
) );
$this->assertEquals( 'Success', $re['edit']['result'] );
- $newtext = WikiPage::factory( Title::newFromText( $name) )->getContent( Revision::RAW )->getNativeData();
+ $newtext = WikiPage::factory( Title::newFromText( $name ) )->getContent( Revision::RAW )->getNativeData();
$this->assertEquals( $newtext, "==section 1==\nnew content 1\n\n==section 2==\ncontent2" );
// Test that we raise a 'nosuchsection' error
class ApiOptionsTest extends MediaWikiLangTestCase {
/** @var PHPUnit_Framework_MockObject_MockObject */
- private $mUserMock ;
+ private $mUserMock;
/** @var ApiOptions */
private $mTested;
private $mSession;
return $context;
}
-}
\ No newline at end of file
+}
$this->assertTrue( $exception, "Got exception" );
}
-
/**
* @depends testLogin
*/
unlink( $filePath );
}
-
/**
* @depends testLogin
*/
unlink( $filePath );
}
-
/**
* @depends testLogin
*/
unlink( $filePaths[1] );
}
-
/**
* @depends testLogin
*/
'sessionkey' => null,
);
}
-}
\ No newline at end of file
+}
)
);
-
public function __construct( $options = array() ) {
foreach ( array( 'dictionaryFile', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'shapesToDraw' ) as $property ) {
if ( isset( $options[$property] ) ) {
return $filenames;
}
-
/**
* Figure out how we write images. This is a factor of both format and the local system
* @param $format (a typical extension like 'svg', 'jpg', etc.)
return $filenames;
}
-
/**
* Generate data representing an image of random size (within limits),
* consisting of randomly colored and sized upward pointing triangles against a random background color
);
}
-
/**
* Based on an image specification, write such an image to disk, using the command line ImageMagick program ('convert').
*
}
$this->user->saveSettings();
}
-}
\ No newline at end of file
+}
--- /dev/null
+<?php
+/**
+ * @group Database
+ */
+class RecentChangeTest extends MediaWikiTestCase {
+ protected $title;
+ protected $target;
+ protected $user;
+ protected $user_comment;
+ protected $context;
+
+ public function __construct() {
+ parent::__construct();
+
+ $this->title = Title::newFromText( 'SomeTitle' );
+ $this->target = Title::newFromText( 'TestTarget' );
+ $this->user = User::newFromName( 'UserName' );
+
+ $this->user_comment = '<User comment about action>';
+ $this->context = RequestContext::newExtraneousContext( $this->title );
+ }
+
+ /**
+ * The testIrcMsgForAction* tests are supposed to cover the hacky
+ * LogFormatter::getIRCActionText / bug 34508
+ *
+ * Third parties bots listen to those messages. They are clever enough
+ * to fetch the i18n messages from the wiki and then analyze the IRC feed
+ * to reverse engineer the $1, $2 messages.
+ * One thing bots can not detect is when MediaWiki change the meaning of
+ * a message like what happened when we deployed 1.19. $1 became the user
+ * performing the action which broke basically all bots around.
+ *
+ * Should cover the following log actions (which are most commonly used by bots):
+ * - block/block
+ * - block/unblock
+ * - delete/delete
+ * - delete/restore
+ * - newusers/create
+ * - newusers/create2
+ * - newusers/autocreate
+ * - move/move
+ * - move/move_redir
+ * - protect/protect
+ * - protect/modifyprotect
+ * - protect/unprotect
+ * - upload/upload
+ *
+ * As well as the following Auto Edit Summaries:
+ * - blank
+ * - replace
+ * - rollback
+ * - undo
+ */
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypeBlock() {
+ $sep = $this->context->msg( 'colon-separator' )->text();
+
+ # block/block
+ $this->assertIRCComment(
+ $this->context->msg( 'blocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'block', 'block',
+ array(),
+ $this->user_comment
+ );
+ # block/unblock
+ $this->assertIRCComment(
+ $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'block', 'unblock',
+ array(),
+ $this->user_comment
+ );
+ }
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypeDelete() {
+ $sep = $this->context->msg( 'colon-separator' )->text();
+
+ # delete/delete
+ $this->assertIRCComment(
+ $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'delete', 'delete',
+ array(),
+ $this->user_comment
+ );
+
+ # delete/restore
+ $this->assertIRCComment(
+ $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'delete', 'restore',
+ array(),
+ $this->user_comment
+ );
+ }
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypeNewusers() {
+ $this->assertIRCComment(
+ 'New user account',
+ 'newusers', 'newusers',
+ array()
+ );
+ $this->assertIRCComment(
+ 'New user account',
+ 'newusers', 'create',
+ array()
+ );
+ $this->assertIRCComment(
+ 'created new account SomeTitle',
+ 'newusers', 'create2',
+ array()
+ );
+ $this->assertIRCComment(
+ 'Account created automatically',
+ 'newusers', 'autocreate',
+ array()
+ );
+ }
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypeMove() {
+ $move_params = array(
+ '4::target' => $this->target->getPrefixedText(),
+ '5::noredir' => 0,
+ );
+ $sep = $this->context->msg( 'colon-separator' )->text();
+
+ # move/move
+ $this->assertIRCComment(
+ $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )->plain() . $sep . $this->user_comment,
+ 'move', 'move',
+ $move_params,
+ $this->user_comment
+ );
+
+ # move/move_redir
+ $this->assertIRCComment(
+ $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )->plain() . $sep . $this->user_comment,
+ 'move', 'move_redir',
+ $move_params,
+ $this->user_comment
+ );
+ }
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypePatrol() {
+ # patrol/patrol
+ $this->assertIRCComment(
+ $this->context->msg( 'patrol-log-line', 'revision 777', '[[SomeTitle]]', '' )->plain(),
+ 'patrol', 'patrol',
+ array(
+ '4::curid' => '777',
+ '5::previd' => '666',
+ '6::auto' => 0,
+ )
+ );
+ }
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypeProtect() {
+ $protectParams = array(
+ '[edit=sysop] (indefinite) [move=sysop] (indefinite)'
+ );
+ $sep = $this->context->msg( 'colon-separator' )->text();
+
+ # protect/protect
+ $this->assertIRCComment(
+ $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )->plain() . $sep . $this->user_comment,
+ 'protect', 'protect',
+ $protectParams,
+ $this->user_comment
+ );
+
+ # protect/unprotect
+ $this->assertIRCComment(
+ $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'protect', 'unprotect',
+ array(),
+ $this->user_comment
+ );
+
+ # protect/modify
+ $this->assertIRCComment(
+ $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )->plain() . $sep . $this->user_comment,
+ 'protect', 'modify',
+ $protectParams,
+ $this->user_comment
+ );
+ }
+
+ /**
+ * @covers LogFormatter::getIRCActionText
+ */
+ public function testIrcMsgForLogTypeUpload() {
+ $sep = $this->context->msg( 'colon-separator' )->text();
+
+ # upload/upload
+ $this->assertIRCComment(
+ $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'upload', 'upload',
+ array(),
+ $this->user_comment
+ );
+
+ # upload/overwrite
+ $this->assertIRCComment(
+ $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+ 'upload', 'overwrite',
+ array(),
+ $this->user_comment
+ );
+ }
+
+ /**
+ * @todo Emulate these edits somehow and extract
+ * raw edit summary from RecentChange object
+ * --
+ */
+ /*
+ public function testIrcMsgForBlankingAES() {
+ // $this->context->msg( 'autosumm-blank', .. );
+ }
+
+ public function testIrcMsgForReplaceAES() {
+ // $this->context->msg( 'autosumm-replace', .. );
+ }
+
+ public function testIrcMsgForRollbackAES() {
+ // $this->context->msg( 'revertpage', .. );
+ }
+
+ public function testIrcMsgForUndoAES() {
+ // $this->context->msg( 'undo-summary', .. );
+ }
+ */
+
+ /**
+ * @param $expected String Expected IRC text without colors codes
+ * @param $type String Log type (move, delete, suppress, patrol ...)
+ * @param $action String A log type action
+ * @param $params
+ * @param $comment String (optional) A comment for the log action
+ * @param $msg String (optional) A message for PHPUnit :-)
+ */
+ protected function assertIRCComment( $expected, $type, $action, $params, $comment = null, $msg = '' ) {
+
+ $logEntry = new ManualLogEntry( $type, $action );
+ $logEntry->setPerformer( $this->user );
+ $logEntry->setTarget( $this->title );
+ if ( $comment !== null ) {
+ $logEntry->setComment( $comment );
+ }
+ $logEntry->setParameters( $params );
+
+ $formatter = LogFormatter::newFromEntry( $logEntry );
+ $formatter->setContext( $this->context );
+
+ // Apply the same transformation as done in IRCColourfulRCFeedFormatter::getLine for rc_comment
+ $ircRcComment = IRCColourfulRCFeedFormatter::cleanupForIRC( $formatter->getIRCActionComment() );
+
+ $this->assertEquals(
+ $expected,
+ $ircRcComment,
+ $msg
+ );
+ }
+}
// From DatabaseMysql
protected function mysqlConnect( $realServer ) {}
+ protected function mysqlSetCharset( $charset ) {}
protected function mysqlFreeResult( $res ) {}
protected function mysqlFetchObject( $res ) {}
protected function mysqlFetchArray( $res ) {}
public function testAddIdentifierQuotes( $expected, $in ) {
$db = new FakeDatabaseMysqlBase();
$quoted = $db->addIdentifierQuotes( $in );
- $this->assertEquals($expected, $quoted);
+ $this->assertEquals( $expected, $quoted );
}
-
/**
* Feeds testAddIdentifierQuotes
*
);
}
- private static function createUnicodeString($str) {
+ private static function createUnicodeString( $str ) {
return json_decode( '"' . $str . '"' );
}
$db = $this->getMockForViews();
// The first call populate an internal cache of views
- $this->assertEquals( array( 'view1', 'view2', 'myview'),
+ $this->assertEquals( array( 'view1', 'view2', 'myview' ),
$db->listViews() );
- $this->assertEquals( array( 'view1', 'view2', 'myview'),
+ $this->assertEquals( array( 'view1', 'view2', 'myview' ),
$db->listViews() );
// Prefix filtering
$db->listViews( 'my' ) );
$this->assertEquals( array(),
$db->listViews( 'UNUSED_PREFIX' ) );
- $this->assertEquals( array( 'view1', 'view2', 'myview'),
+ $this->assertEquals( array( 'view1', 'view2', 'myview' ),
$db->listViews( '' ) );
}
function testIsView( $isView, $viewName ) {
$db = $this->getMockForViews();
- switch( $isView ) {
+ switch ( $isView ) {
case true:
$this->assertTrue( $db->isView( $viewName ),
"$viewName should be considered a view" );
}
if ( $this->db->getType() === 'oracle' ) {
- return strtoupper($database . $quote . $prefix . $table);
+ return strtoupper( $database . $quote . $prefix . $table );
} else {
return $database . $quote . $prefix . $table . $quote;
}
class MWDebugTest extends MediaWikiTestCase {
-
protected function setUp() {
parent::setUp();
// Make sure MWDebug class is enabled
$strings = array( "it is a kitten", "two kittens", "three kittens", "four kittens" );
$revisions = array();
- foreach( $strings as $string ) {
+ foreach ( $strings as $string ) {
$content = ContentHandler::makeContent( $string, $title );
$page->doEditContent( $content, 'edit page' );
$revisions[] = $page->getLatest();
public function testMapDiffPrevNext() {
$cases = $this->getMapDiffPrevNextCases();
- foreach( $cases as $case ) {
+ foreach ( $cases as $case ) {
list( $expected, $old, $new, $message ) = $case;
$diffEngine = new DifferenceEngine( $this->context, $old, $new, 2, true, false );
public function testLoadRevisionData() {
$cases = $this->getLoadRevisionDataCases();
- foreach( $cases as $case ) {
+ foreach ( $cases as $case ) {
list( $expectedOld, $expectedNew, $old, $new, $message ) = $case;
$diffEngine = new DifferenceEngine( $this->context, $old, $new, 2, true, false );
);
}
-
const TEST_WIDTH = 100;
const TEST_HEIGHT = 200;
$this->mediaPath = __DIR__ . '/../../data/media/';
-
-
$this->setMwGlobals( 'wgShowEXIF', true );
}
public function getPath() {
return '';
}
-}
\ No newline at end of file
+}
public static function provideFlattenArray() {
return array(
- array (
- array(1 ,2 ,3), 'ul', false, false,
+ array(
+ array( 1, 2, 3 ), 'ul', false, false,
"<ul><li>1</li>\n<li>2</li>\n<li>3</li></ul>",
),
- array (
- array(1 ,2 ,3), 'ol', false, false,
+ array(
+ array( 1, 2, 3 ), 'ol', false, false,
"<ol><li>1</li>\n<li>2</li>\n<li>3</li></ol>",
),
- array (
- array(1 ,2 ,3), 'ul', true, false,
+ array(
+ array( 1, 2, 3 ), 'ul', true, false,
"\n*1\n*2\n*3",
),
- array (
- array(1 ,2 ,3), 'ol', true, false,
+ array(
+ array( 1, 2, 3 ), 'ol', true, false,
"\n#1\n#2\n#3",
),
// TODO: more test cases
$this->assertEquals( $expected, $res['XMP'] );
}
-
public function testIPTCHashComparisionNoHash() {
$segments = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-psir.jpg' );
$res = JpegMetadataExtractor::doPSIR( $segments['PSIR'][0] );
$this->filePath = __DIR__ . '/../../data/media/';
-
$this->setMwGlobals( 'wgShowEXIF', true );
$this->backend = new FSFileBackend( array(
$this->assertEquals( 1, $meta['bitDepth'] );
}
-
public function testPngIndexColour() {
$meta = PNGMetadataExtractor::getMetadata( $this->filePath .
'Png-native-test.png' );
array( "<meta foo=\"bar\" />\nfoo", '<meta foo="bar"/>foo', '<meta> should survive tidy' ),
);
}
-}
\ No newline at end of file
+}
parent::tearDown();
}
-
/**
* First checks the return code
* of UploadBase::getTitle() and then the actual returned title
'Wrong CD start disk error' );
}
-
public function testCentralDirectoryGap() {
$this->readZipAssertError( 'cd-gap.zip', 'zip-bad',
'CD gap error' );
$this->assertConverted( $text, 'sr-ec', $msg );
}
-
/** Wrapper for converter::convertTo() method*/
protected function convertTo( $text, $variant ) {
return $this->getLang()
);
}
-
/**
* @dataProvider provideFormatDuration
* @covers Language::formatDuration
$this->assertConverted( $text, 'uz-cyrl', $msg );
}
-
/** Wrapper for converter::convertTo() method*/
protected function convertTo( $text, $variant ) {
return $this->getLang()->mConverter->convertTo( $text, $variant );
function validTestCases() {
$tests = array(
- # expected, number, rule, comment
+ # expected, rule, number, comment
array( 0, 'n is 1', 1, 'integer number and is' ),
array( 0, 'n is 1', "1", 'string integer number and is' ),
array( 0, 'n is 1', 1.0, 'float number and is' ),
throw new MWException( "Could not determine revision id (" . $status->getWikiText() . ")" );
}
-
/**
* gunzips the given file and stores the result in the original file name
*
}
}
-
/**
* Step the current XML reader until node end of given name is found.
*
}
}
-
/**
* Asserts that the xml reader is at an element of given tag that contains a given text,
* and skips over the element.
$this->testCase = $testCase;
}
-
// --- Making protected functions visible for test
public function output( $out, $channel = null ) {
return call_user_func_array( array( "parent", __FUNCTION__ ), func_get_args() );
}
-
// --- Requirements for getting instance of abstract class
public function execute() {
*/
class MaintenanceTest extends MediaWikiTestCase {
-
/**
* The main Maintenance instance that is used for testing.
*
*/
private $m;
-
protected function setUp() {
parent::setUp();
$this->m = new MaintenanceFixup( $this );
parent::tearDown();
}
-
/**
* asserts the output before and after simulating shutdown
*
$this->expectOutputString( $postShutdownOutput );
}
-
// Although the following tests do not seem to be too consistent (compare for
// example the newlines within the test.*StringString tests, or the
// test.*Intermittent.* tests), the objective of these tests is not to describe
$this->assertPrefetchEquals( "BackupDumperTestP2Text1", 2, 2 );
}
-
/**
* Constructs a temporary file that can be used for prefetching
*
$this->checkpointHelper( "gzip" );
}
-
/**
* Creates a stub file that is used for testing the text pass of dumps
*
*/
class BackupDumperLoggerTest extends DumpTestCase {
-
// We'll add several log entries and users for this test. The following
// variables hold the corresponding ids.
private $userId1, $userId2;
}
}
-
/**
* asserts that the xml reader is at the beginning of a log entry and skips over
* it while analyzing it.
$this->assertDumpEnd();
}
-
function testXmlDumpsBackupUseCase() {
// xmldumps-backup typically performs a single dump that that writes
// out three files
*/
private $mockInvocations = array( 'getStdin' => 0 );
-
/**
* Data for the fake stdin
*
private $textId4;
private $textId5;
-
/**
* @var Exception|null As the current MediaWikiTestCase::run is not
* robust enough to recover from thrown exceptions directly, we cannot
throw new MWException( "Could not determine text id" );
}
-
function addDBData() {
$this->tablesUsed[] = 'page';
$this->tablesUsed[] = 'revision';
}
}
-
protected function setUp() {
parent::setUp();
$this->fetchText = new SemiMockedFetchText();
}
-
/**
* Helper to relate FetchText's input and output
*/
$this->expectOutputString( $expectedOutput );
}
-
// Instead of the following functions, a data provider would be great.
// However, as data providers are evaluated /before/ addDBData, a data
// provider would not know the required ids.
// Assume UTC for testing purposes
$wgLocaltimezone = 'UTC';
- $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+ $wgLocalisationCacheConf['storeClass'] = 'LCStoreNull';
// Bug 44192 Do not attempt to send a real e-mail
Hooks::clear( 'AlternateUserMailer' );
);
}
-
#### Attributes for external links ##########################
private function getAttribs() {
# Sidebar text we will use everytime
$dummyCereal = 'O:29:"testautoloadedserializedclass":0:{}';
$uncerealized = unserialize( $dummyCereal );
$this->assertFalse( $uncerealized instanceof __PHP_Incomplete_Class,
- "unserialize() can load classes case-insensitively.");
+ "unserialize() can load classes case-insensitively." );
}
}
assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
} );
- QUnit.test( 'newFromImg', 36, function ( assert ) {
+ QUnit.test( 'newFromImg', 40, function ( assert ) {
var title, i, thisCase, prefix,
cases = [
+ {
+ url: '//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Princess_Alexandra_of_Denmark_%28later_Queen_Alexandra%2C_wife_of_Edward_VII%29_with_her_two_eldest_sons%2C_Prince_Albert_Victor_%28Eddy%29_and_George_Frederick_Ernest_Albert_%28later_George_V%29.jpg/939px-thumbnail.jpg',
+ typeOfUrl: 'Hashed thumb with shortened path',
+ nameText: 'Princess Alexandra of Denmark (later Queen Alexandra, wife of Edward VII) with her two eldest sons, Prince Albert Victor (Eddy) and George Frederick Ernest Albert (later George V)',
+ prefixedText: 'File:Princess Alexandra of Denmark (later Queen Alexandra, wife of Edward VII) with her two eldest sons, Prince Albert Victor (Eddy) and George Frederick Ernest Albert (later George V).jpg'
+ },
{
url: '/wiki/images/thumb/9/91/Anticlockwise_heliotrope%27s.jpg/99px-Anticlockwise_heliotrope%27s.jpg',
typeOfUrl: 'Normal hashed directory thumbnail',
return;
}
mw.messages.set(test.message );
- mw.config.set( 'wgUserLanguage', test.lang ) ;
+ mw.config.set( 'wgUserLanguage', test.lang );
var parser = new mw.jqueryMsg.parser( { language: langClass } );
assert.equal(
parser.parse( test.integer ? 'formatnum-msg-int' : 'formatnum-msg',
return false;
}
-
/**
* Clear section name and its data
*/
return;
}
-
// Check the source file storage path
if ( !$img->exists() ) {
$redirectedLocation = false;
unset( $params['r'] ); // ignore 'r' because we unconditionally pass File::RENDER
unset( $params['f'] ); // We're done with 'f' parameter.
-
// Get the normalized thumbnail name from the parameters...
try {
$thumbName = $img->thumbName( $params );