* (bug 4220) the XML dump format schema now have unique identity constraints
for page and revision identifiers. Patch by Elvis Stansvik.
* (bug 35705) QUnit upgraded from 1.2.0 to 1.7.0
+* cleanupSpam.php now can delete spam pages if --delete was specified instead of blanking
+ them.
+* Added new hook ChangePasswordForm to allow adding of additional fields in Special:ChangePassword
=== Bug fixes in 1.20 ===
* (bug 30245) Use the correct way to construct a log page title.
* (bug 25946) The message on the top of Special:RecentChanges is now displayed
in user language instead of content language
* (bug 35264) Wrong type used for <ns> in export.xsd
+* (bug 24985) Use $wgTmpDirectory as the default temp directory so that people
+ who don't have access to /tmp can specify an alternative.
+* (bug 27283) SqlBagOStuff breaks PostgreSQL transactions
=== API changes in 1.20 ===
* (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
* (bug 33224) add variants of content language to meta=siteinfo
* (bug 36761) "Mark pages as visited" now submits previously established filter options
* (bug 32643) action=purge with forcelinkupdate no longer crashes when ratelimit is reached
+* The paraminfo module now also contains result properties for most modules
=== Languages updated in 1.20 ===
* Removed ./tests/qunit/index.html from core. It wasn't actively maintained and
has been made obsolete when [[Special:JavaScriptTest/qunit]] was introduced,
which actually uses ResourceLoader, LocalSettings and the Skin.
+* Skin::getCommonStylePath has been deprecated. Its use is obsolete.
== Compatibility ==
and can contain any PHP statements. It usually sets global variables that are
used for configuration, and includes files used by any extensions.
-Distributors cannot easily add extra statements to the autogenerated
-LocalSettings.php at the present time -- although hacking mw-config/index.php
-would work. It would be nice if this situation could be improved.
+Distributors can easily add extra statements to the autogenerated
+LocalSettings.php by changing mw-config/overrides.php (see that file for details
+and examples).
There's a new maintenance/install.php script which could be used for performing
an install through the command line.
&$module: ApiBase Module object
&$desc: Array of parameter descriptions
+'APIGetResultProperties': use this hook to mofify the properties
+in a module's result.
+&$module: ApiBase Module object
+&$properties: Array of properties
+
'APIQueryAfterExecute': after calling the execute() method of an
action=query submodule. Use this to extend core API modules.
&$module: Module object
'CategoryPageView': before viewing a categorypage in CategoryPage::view
$catpage: CategoryPage instance
+'ChangePasswordForm': For extensions that need to add a field to the ChangePassword form
+via the Preferences form
+&$extraFields: An array of arrays that hold fields like would be passed to the pretty function.
+
'ChangesListInsertArticleLink': Override or augment link to article in RC list.
&$changesList: ChangesList instance.
&$articlelink: HTML of link to article (already filled-in).
$user: user who performed the undeletion
$reason: reason
+'FormatAutocomments': When an autocomment is formatted by the Linker
+ &$comment: Reference to the accumulated comment. Initially null, when set the default code will be skipped.
+ $pre: Initial part of the parsed comment before the call to the hook.
+ $auto: The extracted part of the parsed comment before the call to the hook.
+ $post: The final part of the parsed comment before the call to the hook.
+ $title: An optional title object used to links to sections. Can be null.
+ $local: Boolean indicating whether section links should refer to local page.
+
'GetAutoPromoteGroups': When determining which autopromote groups a user
is entitled to be in.
&$user: user to promote.
if ( $outputPage->isPrintable() ) {
$parserOptions->setIsPrintable( true );
$parserOptions->setEditSection( false );
- } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit' ) ) {
+ } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit', $user ) ) {
$parserOptions->setEditSection( false );
}
$user = $this->getContext()->getUser();
$rcid = $request->getVal( 'rcid' );
- if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol' ) ) {
+ if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol', $user ) ) {
return;
}
$current = ( $oldid == $this->mPage->getLatest() );
$language = $this->getContext()->getLanguage();
- $td = $language->timeanddate( $timestamp, true );
- $tddate = $language->date( $timestamp, true );
- $tdtime = $language->time( $timestamp, true );
+ $user = $this->getContext()->getUser();
+
+ $td = $language->userTimeAndDate( $timestamp, $user );
+ $tddate = $language->userDate( $timestamp, $user );
+ $tdtime = $language->userTime( $timestamp, $user );
# Show user links if allowed to see them. If hidden, then show them only if requested...
$userlinks = Linker::revUserTools( $revision, !$unhide );
array( 'known', 'noclasses' )
);
- $cdel = Linker::getRevDeleteLink( $this->getContext()->getUser(), $revision, $this->getTitle() );
+ $cdel = Linker::getRevDeleteLink( $user, $revision, $this->getTitle() );
if ( $cdel !== '' ) {
$cdel .= ' ';
}
'AnsiTermColorer' => 'maintenance/term/MWTerm.php',
'DummyTermColorer' => 'maintenance/term/MWTerm.php',
+ # mw-config
+ 'InstallerOverrides' => 'mw-config/overrides.php',
+
# tests
'DbTestPreviewer' => 'tests/testHelpers.inc',
'DbTestRecorder' => 'tests/testHelpers.inc',
* The local filesystem path to a temporary directory. This is not required to
* be web accessible.
*
- * Will default to "{$wgUploadDirectory}/tmp" in Setup.php
+ * When this setting is set to false, its value will be set through a call
+ * to wfTempDir(). See that methods implementation for the actul detection
+ * logic.
+ *
+ * Developers should use the global function wfTempDir() instead of this
+ * variable.
+ *
+ * @see wfTempDir()
+ * @note Default modified to false in v1.20
+ *
*/
$wgTmpDirectory = false;
* Limits on the possible sizes of range blocks.
*
* CIDR notation is hard to understand, it's easy to mistakenly assume that a
- * /1 is a small range and a /31 is a large range. Setting this to half the
- * number of bits avoids such errors for IPv4.
+ * /1 is a small range and a /31 is a large range. For IPv4, setting a limit of
+ * half the number of bits avoids such errors, and allows entire ISPs to be
+ * blocked using a small number of range blocks.
+ *
+ * For IPv6, RFC 3177 recommends that a /48 be allocated to every residential
+ * customer, so range blocks larger than /64 (half the number of bits) will
+ * plainly be required. RFC 4692 implies that a very large ISP may be
+ * allocated a /19 if a generous HD-Ratio of 0.8 is used, so we will use that
+ * as our limit. As of 2012, blocking the whole world would require a /4 range.
*/
$wgBlockCIDRLimit = array(
'IPv4' => 16, # Blocks larger than a /16 (64k addresses) will not be allowed
- 'IPv6' => 32, # Blocks larger than a /32 (~7.9x10^28 addresses) will not be allowed
+ 'IPv6' => 19,
);
/**
}
/**
- * Tries to get the system directory for temporary files. The TMPDIR, TMP, and
- * TEMP environment variables are then checked in sequence, and if none are set
- * try sys_get_temp_dir() for PHP >= 5.2.1. All else fails, return /tmp for Unix
- * or C:\Windows\Temp for Windows and hope for the best.
- * It is common to call it with tempnam().
+ * Tries to get the system directory for temporary files. First
+ * $wgTmpDirectory is checked, and then the TMPDIR, TMP, and TEMP
+ * environment variables are then checked in sequence, and if none are
+ * set try sys_get_temp_dir().
*
* NOTE: When possible, use instead the tmpfile() function to create
* temporary files to avoid race conditions on file creation, etc.
* @return String
*/
function wfTempDir() {
- foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
- $tmp = getenv( $var );
+ global $wgTmpDirectory;
+
+ if ( $wgTmpDirectory !== false ) {
+ return $wgTmpDirectory;
+ }
+
+ $tmpDir = array_map( "getenv", array( 'TMPDIR', 'TMP', 'TEMP' ) );
+
+ foreach( $tmpDir as $tmp ) {
if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
return $tmp;
}
$row .= '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
if ( $local ) {
- $row .= Linker::userLink( $userId, $userText ) . ' <span style="white-space: nowrap;">' .
- Linker::userToolLinks( $userId, $userText ) . '</span>';
+ $row .= Linker::userLink( $userId, $userText );
+ $row .= $this->getContext()->msg( 'word-separator' )->plain();
+ $row .= '<span style="white-space: nowrap;">';
+ $row .= Linker::userToolLinks( $userId, $userText );
+ $row .= '</span>';
} else {
$row .= htmlspecialchars( $userText );
}
wfRunHooks( 'UserToolLinksEdit', array( $userId, $userText, &$items ) );
if ( $items ) {
- return ' <span class="mw-usertoollinks">' . wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped() . '</span>';
+ return wfMessage( 'word-separator' )->plain()
+ . '<span class="mw-usertoollinks">'
+ . wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped()
+ . '</span>';
} else {
return '';
}
} elseif ( $rev->userCan( Revision::DELETED_USER ) ) {
$userId = $rev->getUser( Revision::FOR_THIS_USER );
$userText = $rev->getUserText( Revision::FOR_THIS_USER );
- $link = self::userLink( $userId, $userText ) .
- ' ' . self::userToolLinks( $userId, $userText );
+ $link = self::userLink( $userId, $userText )
+ . wfMessage( 'word-separator' )->plain()
+ . self::userToolLinks( $userId, $userText );
} else {
$link = wfMsgHtml( 'rev-deleted-user' );
}
$pre = $match[1];
$auto = $match[2];
$post = $match[3];
- $link = '';
- if ( $title ) {
- $section = $auto;
-
- # Remove links that a user may have manually put in the autosummary
- # This could be improved by copying as much of Parser::stripSectionName as desired.
- $section = str_replace( '[[:', '', $section );
- $section = str_replace( '[[', '', $section );
- $section = str_replace( ']]', '', $section );
-
- $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
- if ( $local ) {
- $sectionTitle = Title::newFromText( '#' . $section );
- } else {
- $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
- $title->getDBkey(), $section );
+ $comment = null;
+ wfRunHooks( 'FormatAutocomments', array( &$comment, $pre, $auto, $post, $title, $local ) );
+ if ( $comment === null ) {
+ $link = '';
+ if ( $title ) {
+ $section = $auto;
+
+ # Remove links that a user may have manually put in the autosummary
+ # This could be improved by copying as much of Parser::stripSectionName as desired.
+ $section = str_replace( '[[:', '', $section );
+ $section = str_replace( '[[', '', $section );
+ $section = str_replace( ']]', '', $section );
+
+ $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
+ if ( $local ) {
+ $sectionTitle = Title::newFromText( '#' . $section );
+ } else {
+ $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
+ $title->getDBkey(), $section );
+ }
+ if ( $sectionTitle ) {
+ $link = self::link( $sectionTitle,
+ $wgLang->getArrow(), array(), array(),
+ 'noclasses' );
+ } else {
+ $link = '';
+ }
}
- if ( $sectionTitle ) {
- $link = self::link( $sectionTitle,
- $wgLang->getArrow(), array(), array(),
- 'noclasses' );
- } else {
- $link = '';
+ if ( $pre ) {
+ # written summary $presep autocomment (summary /* section */)
+ $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
}
+ if ( $post ) {
+ # autocomment $postsep written summary (/* section */ summary)
+ $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
+ }
+ $auto = '<span class="autocomment">' . $auto . '</span>';
+ $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
}
- if ( $pre ) {
- # written summary $presep autocomment (summary /* section */)
- $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
- }
- if ( $post ) {
- # autocomment $postsep written summary (/* section */ summary)
- $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
- }
- $auto = '<span class="autocomment">' . $auto . '</span>';
- $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
return $comment;
}
return $this->mNavigationBar;
}
- $lang = $this->getLanguage();
-
- $opts = array( 'parsemag', 'escapenoentities' );
$linkTexts = array(
- 'prev' => wfMsgExt(
- 'prevn',
- $opts,
- $lang->formatNum( $this->mLimit )
- ),
- 'next' => wfMsgExt(
- 'nextn',
- $opts,
- $lang->formatNum($this->mLimit )
- ),
- 'first' => wfMsgExt( 'page_first', $opts ),
- 'last' => wfMsgExt( 'page_last', $opts )
+ 'prev' => $this->msg( 'prevn' )->numParams( $this->mLimit )->escaped(),
+ 'next' => $this->msg( 'nextn' )->numParams( $this->mLimit )->escaped(),
+ 'first' => $this->msg( 'page_first' )->escaped(),
+ 'last' => $this->msg( 'page_last' )->escaped()
);
+ $lang = $this->getLanguage();
+
$pagingLinks = $this->getPagingLinks( $linkTexts );
$limitLinks = $this->getLimitLinks();
$limits = $lang->pipeList( $limitLinks );
- $this->mNavigationBar = wfMessage( 'parentheses' )->rawParams(
- $lang->pipeList(
- array( $pagingLinks['first'],
- $pagingLinks['last'] )
- ) )->escaped() . " " .
- wfMsgHtml( 'viewprevnext', $pagingLinks['prev'],
- $pagingLinks['next'], $limits );
+ $this->mNavigationBar = $this->msg( 'parentheses' )->rawParams(
+ $lang->pipeList( array( $pagingLinks['first'],
+ $pagingLinks['last'] ) ) )->escaped() . " " .
+ $this->msg( 'viewprevnext' )->rawParams( $pagingLinks['prev'],
+ $pagingLinks['next'], $limits )->escaped();
if( !is_array( $this->getIndexField() ) ) {
# Early return to avoid undue nesting
if( $first ) {
$first = false;
} else {
- $extra .= wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+ $extra .= $this->msg( 'pipe-separator' )->escaped();
}
if( $order == $this->mOrderType ) {
- $extra .= wfMsgHTML( $msgs[$order] );
+ $extra .= $this->msg( $msgs[$order] )->escaped();
} else {
$extra .= $this->makeLink(
- wfMsgHTML( $msgs[$order] ),
+ $this->msg( $msgs[$order] )->escaped(),
array( 'order' => $order )
);
}
}
if( $extra !== '' ) {
- $extra = ' ' . wfMessage( 'parentheses' )->rawParams( $extra )->escaped();
+ $extra = ' ' . $this->msg( 'parentheses' )->rawParams( $extra )->escaped();
$this->mNavigationBar .= $extra;
}
return $this->mNavigationBar;
}
- $nicenumber = $this->getLanguage()->formatNum( $this->mLimit );
$linkTexts = array(
- 'prev' => wfMsgExt(
- 'pager-newer-n',
- array( 'parsemag', 'escape' ),
- $nicenumber
- ),
- 'next' => wfMsgExt(
- 'pager-older-n',
- array( 'parsemag', 'escape' ),
- $nicenumber
- ),
- 'first' => wfMsgHtml( 'histlast' ),
- 'last' => wfMsgHtml( 'histfirst' )
+ 'prev' => $this->msg( 'pager-newer-n' )->numParams( $this->mLimit )->escaped(),
+ 'next' => $this->msg( 'pager-older-n' )->numParams( $this->mLimit )->escaped(),
+ 'first' => $this->msg( 'histlast' )->escaped(),
+ 'last' => $this->msg( 'histfirst' )->escaped()
);
$pagingLinks = $this->getPagingLinks( $linkTexts );
$limitLinks = $this->getLimitLinks();
$limits = $this->getLanguage()->pipeList( $limitLinks );
- $firstLastLinks = wfMessage( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
- wfMsgExt( 'pipe-separator' , 'escapenoentities' ) .
+ $firstLastLinks = $this->msg( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
+ $this->msg( 'pipe-separator' )->escaped() .
"{$pagingLinks['last']}" )->escaped();
$this->mNavigationBar = $firstLastLinks . ' ' .
- wfMsgHTML(
- 'viewprevnext',
- $pagingLinks['prev'], $pagingLinks['next'],
- $limits
- );
+ $this->msg( 'viewprevnext' )->rawParams(
+ $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
return $this->mNavigationBar;
}
$image = 'Arr_d.png';
$query['asc'] = '1';
$query['desc'] = '';
- $alt = htmlspecialchars( wfMsg( 'descending_abbrev' ) );
+ $alt = $this->msg( 'descending_abbrev' )->escaped();
} else {
# Ascending
$image = 'Arr_u.png';
$query['asc'] = '';
$query['desc'] = '1';
- $alt = htmlspecialchars( wfMsg( 'ascending_abbrev' ) );
+ $alt = $this->msg( 'ascending_abbrev' )->escaped();
}
$image = htmlspecialchars( "$wgStylePath/common/images/$image" );
$link = $this->makeLink(
*/
function getEmptyBody() {
$colspan = count( $this->getFieldNames() );
- $msgEmpty = wfMsgHtml( 'table_pager_empty' );
+ $msgEmpty = $this->msg( 'table_pager_empty' )->escaped();
return "<tr><td colspan=\"$colspan\">$msgEmpty</td></tr>\n";
}
$linkTexts = array();
$disabledTexts = array();
foreach ( $labels as $type => $label ) {
- $msgLabel = wfMsgHtml( $label );
+ $msgLabel = $this->msg( $label )->escaped();
$linkTexts[$type] = "<img src=\"$path/{$images[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
$disabledTexts[$type] = "<img src=\"$path/{$disabledImages[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
}
*/
function getLimitDropdown() {
# Make the select with some explanatory text
- $msgSubmit = wfMsgHtml( 'table_pager_limit_submit' );
+ $msgSubmit = $this->msg( 'table_pager_limit_submit' )->escaped();
- return wfMsgHtml( 'table_pager_limit', $this->getLimitSelect() ) .
+ return $this->msg( 'table_pager_limit' )
+ ->rawParams( $this->getLimitSelect() )->escaped() .
"\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
$this->getHiddenFields( array( 'limit' ) );
}
$emailAddress = $user->getEmail() ? htmlspecialchars( $user->getEmail() ) : '';
if ( $wgAuth->allowPropChange( 'emailaddress' ) ) {
- $emailAddress .= $emailAddress == '' ? $link : ( ' ' . $context->msg( 'parentheses' )->rawParams( $link )->plain() );
+ $emailAddress .= $emailAddress == '' ? $link : (
+ $context->msg( 'word-separator' )->plain()
+ . $context->msg( 'parentheses' )->rawParams( $link )->plain()
+ );
}
if ( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images";
if ( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images";
-
-if ( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
-
if ( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
if ( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
if ( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
wfProfileOut( $fname . '-includes' );
}
-# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer
+# Now that GlobalFunctions is loaded, set defaults that depend
+# on it.
+if ( $wgTmpDirectory === false ) {
+ $wgTmpDirectory = wfTempDir();
+}
+
if ( $wgCanonicalServer === false ) {
$wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
}
*/
/**
- * This is a class used to hold configuration settings, particularly for multi-wiki sites.
+ * This is a class for holding configuration settings, particularly for
+ * multi-wiki sites.
+ *
+ * A basic synopsis:
+ *
+ * Consider a wikifarm having three sites: two production sites, one in English
+ * and one in German, and one testing site. You can assign them easy-to-remember
+ * identifiers - ISO 639 codes 'en' and 'de' for language wikis, and 'beta' for
+ * the testing wiki.
+ *
+ * You would thus initialize the site configuration by specifying the wiki
+ * identifiers:
+ *
+ * @code
+ * $conf = new SiteConfiguration;
+ * $conf->wikis = array( 'de', 'en', 'beta' );
+ * @endcode
+ *
+ * When configuring the MediaWiki global settings (the $wg variables),
+ * the identifiers will be available to specify settings on a per wiki basis.
+ *
+ * @code
+ * $conf->settings = array(
+ * 'wgSomeSetting' => array(
+ *
+ * # production:
+ * 'de' => false,
+ * 'en' => false,
+ *
+ * # test:
+ * 'beta => true,
+ * ),
+ * );
+ * @endcode
+ *
+ * With three wikis, that is easy to manage. But what about a farm with
+ * hundreds of wikis? Site configuration provides a special keyword named
+ * 'default' which is the value used when a wiki is not found. Hence
+ * the above code could be written:
+ *
+ * @code
+ * $conf->settings = array(
+ * 'wgSomeSetting' => array(
+ *
+ * 'default' => false,
+ *
+ * # Enable feature on test
+ * 'beta' => true,
+ * ),
+ * );
+ * @endcode
+ *
+ *
+ * Since settings can contain arrays, site configuration provides a way
+ * to merge an array with the default. This is very useful to avoid
+ * repeating settings again and again while still maintaining specific changes
+ * on a per wiki basis.
+ *
+ * @code
+ * $conf->settings = array(
+ * 'wgMergeSetting' = array(
+ * # Value that will be shared among all wikis:
+ * 'default' => array( NS_USER => true ),
+ *
+ * # Leading '+' means merging the array of value with the defaults
+ * '+beta' => array( NS_HELP => true ),
+ * ),
+ * );
+ *
+ * # Get configuration for the German site:
+ * $conf->get( 'wgMergeSetting', 'de' );
+ * // --> array( NS_USER => true );
+ *
+ * # Get configuration for the testing site:
+ * $conf->get( 'wgMergeSetting', 'beta' );
+ * // --> array( NS_USER => true, NS_HELP => true );
+ * @endcode
+ *
+ * Finally, to load all configuration settings, extract them in global context:
+ *
+ * @code
+ * # Name / identifier of the wiki as set in $conf->wikis
+ * $wikiID = 'beta';
+ * $globals = $conf->getAll( $wikiID );
+ * extract( $globals );
+ * @endcode
+ *
+ * TODO: give examples for,
+ * suffixes:
+ * $conf->suffixes = array( 'wiki' );
+ * localVHosts
+ * callbacks!
*/
class SiteConfiguration {
* Return a fully resolved style path url to images or styles stored in the common folder.
* This method returns a url resolved using the configured skin style path
* and includes the style version inside of the url.
+ * @deprecated since 1.20: obsolete
+ *
* @param $name String: The name or path of a skin resource file
* @return String The fully resolved style path url including styleversion
*/
function getCommonStylePath( $name ) {
global $wgStylePath, $wgStyleVersion;
+
+ wfDeprecated( __METHOD__, '1.20' );
+
return "$wgStylePath/common/$name?$wgStyleVersion";
}
$tpl->set( 'specialpageattributes', '' ); # obsolete
if ( $userlang !== $wgContLang->getHtmlCode() || $userdir !== $wgContLang->getDir() ) {
- $attrs = " lang='$userlang' dir='$userdir'";
+ $escUserlang = htmlspecialchars( $userlang );
+ $escUserdir = htmlspecialchars( $userdir );
+ // Attributes must be in double quotes because htmlspecialchars() doesn't
+ // escape single quotes
+ $attrs = " lang=\"$escUserlang\" dir=\"$escUserdir\"";
$tpl->set( 'userlangattributes', $attrs );
}
/**
* Clear the object
+ * @return void
*/
public function clear() {
$this->mDataLoaded = false;
$this->mDataLoadedFrom = self::DATA_NOT_LOADED;
+ $this->clearCacheFields();
+ }
+
+ /**
+ * Clear the object cache fields
+ * @return void
+ */
+ protected function clearCacheFields() {
$this->mCounter = null;
$this->mRedirectTarget = null; # Title object if set
$this->mLastRevision = null; # Latest revision
$this->mTouched = wfTimestamp( TS_MW, $data->page_touched );
$this->mIsRedirect = intval( $data->page_is_redirect );
$this->mLatest = intval( $data->page_latest );
+ // Bug 37225: $latest may no longer match the cached latest Revision object.
+ // Double-check the ID of any cached latest Revision object for consistency.
+ if ( $this->mLastRevision && $this->mLastRevision->getId() != $this->mLatest ) {
+ $this->mLastRevision = null;
+ $this->mTimestamp = '';
+ }
} else {
$lc->addBadLinkObj( $this->mTitle );
$this->mTitle->loadFromRow( false );
+
+ $this->clearCacheFields();
}
$this->mDataLoaded = true;
if ( !$this->mTimestamp ) {
$this->loadLastEdit();
}
-
+
return wfTimestamp( TS_MW, $this->mTimestamp );
}
* roll back to, e.g. user is the sole contributor. This function
* performs permissions checks on $user, then calls commitRollback()
* to do the dirty work
- *
+ *
* @todo: seperate the business/permission stuff out from backend code
*
* @param $fromP String: Name of the user whose edits to rollback.
/// @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
+ 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
+
const LIMIT_BIG1 = 500; // Fast query, std user limit
const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
const LIMIT_SML1 = 50; // Slow query, std user limit
return $desc;
}
+ /**
+ * Returns possible properties in the result, grouped by the value of the prop parameter
+ * that shows them.
+ *
+ * Properties that are shown always are in a group with empty string as a key.
+ * Properties that can be shown by several values of prop are included multiple times.
+ * If some properties are part of a list and some are on the root object (see ApiQueryQueryPage),
+ * those on the root object are under the key PROP_ROOT.
+ * The array can also contain a boolean under the key PROP_LIST,
+ * indicating whether the result is a list.
+ *
+ * Don't call this functon directly: use getFinalResultProperties() to
+ * allow hooks to modify descriptions as needed.
+ *
+ * @return array|bool False on no properties
+ */
+ protected function getResultProperties() {
+ return false;
+ }
+
+ /**
+ * Get final possible result properties, after hooks have had a chance to tweak it as
+ * needed.
+ *
+ * @return array
+ */
+ public function getFinalResultProperties() {
+ $properties = $this->getResultProperties();
+ wfRunHooks( 'APIGetResultProperties', array( $this, &$properties ) );
+ return $properties;
+ }
+
+ /**
+ * Add token properties to the array used by getResultProperties,
+ * based on a token functions mapping.
+ */
+ protected static function addTokenProperties( &$props, $tokenFunctions ) {
+ foreach ( array_keys( $tokenFunctions ) as $token ) {
+ $props[''][$token . 'token'] = array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ );
+ }
+ }
+
/**
* Get final module description, after hooks have had a chance to tweak it as
* needed.
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'blocktoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'user' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'userID' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'expiry' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'id' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'reason' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'anononly' => 'boolean',
+ 'nocreate' => 'boolean',
+ 'autoblock' => 'boolean',
+ 'noemail' => 'boolean',
+ 'hidename' => 'boolean',
+ 'allowusertalk' => 'boolean',
+ 'watchuser' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return 'Block a user';
}
'torev' => 'Second revision to compare',
);
}
+
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'fromtitle' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'fromrevid' => 'integer',
+ 'totitle' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'torevid' => 'integer',
+ '*' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Get the difference between 2 pages',
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'title' => 'string',
+ 'reason' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Delete a page';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'new' => 'boolean',
+ 'result' => array(
+ ApiBase::PROP_TYPE => array(
+ 'Success',
+ 'Failure'
+ ),
+ ),
+ 'pageid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'title' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'nochange' => 'boolean',
+ 'oldrevid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'newrevid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'newtimestamp' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function needsToken() {
return true;
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'result' => array(
+ ApiBase::PROP_TYPE => array(
+ 'Success',
+ 'Failure'
+ ),
+ ),
+ 'message' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Email a user.';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ '*' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Expands all templates in wikitext';
}
}
public function getParamDescription() {
- $params = array(
+ return array(
'filename' => 'Target filename without the File: prefix',
'token' => 'Edit token. You can get one of these through prop=info',
'comment' => 'Upload comment',
'archivename' => 'Archive name of the revision to revert to',
);
+ }
- return $params;
-
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'result' => array(
+ ApiBase::PROP_TYPE => array(
+ 'Success',
+ 'Failure'
+ )
+ ),
+ 'errors' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
}
public function getDescription() {
);
}
+ public function getResultProperties() {
+ return array(
+ ApiBase::PROP_LIST => true,
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string',
+ 'revisions' => 'integer'
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Import a page from another wiki, or an XML file.' ,
// Add a result entry
$r = array();
- if ( $title === null ) {\r
+ if ( $title === null ) {
# Invalid or non-importable title
$r['title'] = $pageInfo['title'];
- $r['invalid'] = '';\r
- } else {\r
+ $r['invalid'] = '';
+ } else {
ApiQueryBase::addTitleInfo( $r, $title );
$r['revisions'] = intval( $successCount );
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'result' => array(
+ ApiBase::PROP_TYPE => array(
+ 'Success',
+ 'NeedToken',
+ 'WrongToken',
+ 'NoName',
+ 'Illegal',
+ 'WrongPluginPass',
+ 'NotExists',
+ 'WrongPass',
+ 'EmptyPass',
+ 'CreateBlocked',
+ 'Throttled',
+ 'Blocked',
+ 'Aborted'
+ )
+ ),
+ 'lguserid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'lgusername' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'lgtoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'cookieprefix' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'sessionid' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'token' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'details' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'wait' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'reason' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Log in and get the authentication tokens. ',
return array();
}
+ public function getResultProperties() {
+ return array();
+ }
+
public function getParamDescription() {
return array();
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'from' => 'string',
+ 'to' => 'string',
+ 'reason' => 'string',
+ 'redirectcreated' => 'boolean',
+ 'talkfrom' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'talkto' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'talkmove-error-code' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'talkmove-error-info' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Move a page';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ '*' => array(
+ ApiBase::PROP_TYPE => array(
+ 'success'
+ )
+ )
+ )
+ );
+ }
+
public function getParamDescription() {
return array(
'token' => 'An options token previously obtained through the action=tokens',
}
$result->setIndexedTagName( $retval['parameters'], 'param' );
+ $props = $obj->getFinalResultProperties();
+ $listResult = null;
+ if ( $props !== false ) {
+ $retval['props'] = array();
+
+ foreach ( $props as $prop => $properties ) {
+ $propResult = array();
+ if ( $prop == ApiBase::PROP_LIST ) {
+ $listResult = $properties;
+ continue;
+ }
+ if ( $prop != ApiBase::PROP_ROOT ) {
+ $propResult['name'] = $prop;
+ }
+ $propResult['properties'] = array();
+
+ foreach ( $properties as $name => $p ) {
+ $propertyResult = array();
+
+ $propertyResult['name'] = $name;
+
+ if ( !is_array( $p ) ) {
+ $p = array( ApiBase::PROP_TYPE => $p );
+ }
+
+ $propertyResult['type'] = $p[ApiBase::PROP_TYPE];
+
+ if ( is_array( $propertyResult['type'] ) ) {
+ $propertyResult['type'] = array_values( $propertyResult['type'] );
+ $result->setIndexedTagName( $propertyResult['type'], 't' );
+ }
+
+ $nullable = null;
+ if ( isset( $p[ApiBase::PROP_NULLABLE] ) ) {
+ $nullable = $p[ApiBase::PROP_NULLABLE];
+ }
+
+ if ( $nullable === true ) {
+ $propertyResult['nullable'] = '';
+ }
+
+ $propResult['properties'][] = $propertyResult;
+ }
+
+ $result->setIndexedTagName( $propResult['properties'], 'property' );
+ $retval['props'][] = $propResult;
+ }
+
+ // default is true for query modules, false for other modules, overriden by ApiBase::PROP_LIST
+ if ( $listResult === true || ( $listResult !== false && $obj instanceof ApiQueryBase ) ) {
+ $retval['listresult'] = '';
+ }
+
+ $result->setIndexedTagName( $retval['props'], 'prop' );
+ }
+
// Errors
$retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() );
$result->setIndexedTagName( $retval['errors'], 'error' );
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'rcid' => 'integer',
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Patrol a page or revision';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'title' => 'string',
+ 'reason' => 'string',
+ 'cascade' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return 'Change the protection level of a page';
}
);
}
+ public function getResultProperties() {
+ return array(
+ ApiBase::PROP_LIST => true,
+ '' => array(
+ 'ns' => array(
+ ApiBase::PROP_TYPE => 'namespace',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'title' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'pageid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'revid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'invalid' => 'boolean',
+ 'missing' => 'boolean',
+ 'purged' => 'boolean',
+ 'linkupdate' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return array( 'Purge the cache for the given titles.',
'Requires a POST request if the user is not logged in.'
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ '*' => 'string'
+ ),
+ 'size' => array(
+ 'size' => 'integer',
+ 'pages' => 'integer',
+ 'files' => 'integer',
+ 'subcats' => 'integer'
+ ),
+ 'hidden' => array(
+ 'hidden' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return 'Enumerate all categories';
}
private $propertyFilter = array( 'archivename' );
+ public function getResultProperties() {
+ return array_merge(
+ array(
+ '' => array(
+ 'name' => 'string',
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ ),
+ ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter )
+ );
+ }
+
public function getDescription() {
return 'Enumerate all images sequentially';
}
);
}
+ public function getResultProperties() {
+ return array(
+ 'ids' => array(
+ 'fromid' => 'integer'
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Enumerate all links that point to a given namespace';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'name' => 'string',
+ 'customised' => 'boolean',
+ 'missing' => 'boolean',
+ '*' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'default' => array(
+ 'defaultmissing' => 'boolean',
+ 'default' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Return messages from this site';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'pageid' => 'integer',
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Enumerate all pages sequentially in a given namespace';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'userid' => 'integer',
+ 'name' => 'string',
+ 'recenteditcount' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'blockinfo' => array(
+ 'blockid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedby' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedbyid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedreason' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedexpiry' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'hidden' => 'boolean'
+ ),
+ 'editcount' => array(
+ 'editcount' => 'integer'
+ ),
+ 'registration' => array(
+ 'registration' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Enumerate all registered users';
}
) );
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'pageid' => 'integer',
+ 'ns' => 'namespace',
+ 'title' => 'string',
+ 'redirect' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
switch ( $this->getModuleName() ) {
case 'backlinks':
);
}
+ public function getResultProperties() {
+ return array(
+ 'id' => array(
+ 'id' => 'integer'
+ ),
+ 'user' => array(
+ 'user' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'userid' => array(
+ 'userid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'by' => array(
+ 'by' => 'string'
+ ),
+ 'byid' => array(
+ 'byid' => 'integer'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'expiry' => array(
+ 'expiry' => 'timestamp'
+ ),
+ 'reason' => array(
+ 'reason' => 'string'
+ ),
+ 'range' => array(
+ 'rangestart' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'rangeend' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'flags' => array(
+ 'automatic' => 'boolean',
+ 'anononly' => 'boolean',
+ 'nocreate' => 'boolean',
+ 'autoblock' => 'boolean',
+ 'noemail' => 'boolean',
+ 'hidden' => 'boolean',
+ 'allowusertalk' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return 'List all blocked users and IP addresses';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'sortkey' => array(
+ 'sortkey' => 'string',
+ 'sortkeyprefix' => 'string'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'hidden' => array(
+ 'hidden' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return 'List all categories the page(s) belong to';
}
);
}
+ public function getResultProperties() {
+ return array(
+ ApiBase::PROP_LIST => false,
+ '' => array(
+ 'size' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => false
+ ),
+ 'pages' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => false
+ ),
+ 'files' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => false
+ ),
+ 'subcats' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => false
+ ),
+ 'hidden' => array(
+ ApiBase::PROP_TYPE => 'boolean',
+ ApiBase::PROP_NULLABLE => false
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Returns information about the given categories';
}
return $desc;
}
+ public function getResultProperties() {
+ return array(
+ 'ids' => array(
+ 'pageid' => 'integer'
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'sortkey' => array(
+ 'sortkey' => 'string'
+ ),
+ 'sortkeyprefix' => array(
+ 'sortkeyprefix' => 'string'
+ ),
+ 'type' => array(
+ 'type' => array(
+ ApiBase::PROP_TYPE => array(
+ 'page',
+ 'subcat',
+ 'file'
+ )
+ )
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ )
+ );
+ }
+
public function getDescription() {
return 'List all pages in a given category';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'token' => array(
+ 'token' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
$p = $this->getModulePrefix();
return array(
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'name' => 'string',
+ 'user' => 'string',
+ 'timestamp' => 'timestamp'
+ )
+ );
+ }
+
public function getDescription() {
return 'List all files that are duplicates of the given file(s)';
}
return $desc;
}
+ public function getResultProperties() {
+ return array(
+ 'ids' => array(
+ 'pageid' => 'integer'
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'url' => array(
+ 'url' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Enumerate pages that contain a given URL';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ '*' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Returns all external urls (not interwikies) from the given page(s)';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'name' => 'string',
+ 'ns' => 'namespace',
+ 'title' => 'string',
+ 'filehidden' => 'boolean',
+ 'commenthidden' => 'boolean',
+ 'userhidden' => 'boolean',
+ 'suppressed' => 'boolean'
+ ),
+ 'sha1' => array(
+ 'sha1' => 'string'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'user' => array(
+ 'userid' => 'integer',
+ 'user' => 'string'
+ ),
+ 'size' => array(
+ 'size' => 'integer',
+ 'pagecount' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'height' => 'integer',
+ 'width' => 'integer'
+ ),
+ 'dimensions' => array(
+ 'size' => 'integer',
+ 'pagecount' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'height' => 'integer',
+ 'width' => 'integer'
+ ),
+ 'description' => array(
+ 'description' => 'string'
+ ),
+ 'parseddescription' => array(
+ 'description' => 'string',
+ 'parseddescription' => 'string'
+ ),
+ 'metadata' => array(
+ 'metadata' => 'string'
+ ),
+ 'bitdepth' => array(
+ 'bitdepth' => 'integer'
+ ),
+ 'mime' => array(
+ 'mime' => 'string'
+ ),
+ 'mediatype' => array(
+ 'mediatype' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Enumerate all deleted files sequentially';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'pageid' => 'integer',
+ 'ns' => 'namespace',
+ 'title' => 'string',
+ 'redirect' => 'boolean'
+ ),
+ 'iwprefix' => array(
+ 'iwprefix' => 'string'
+ ),
+ 'iwtitle' => array(
+ 'iwtitle' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return array( 'Find all pages that link to the given interwiki link.',
'Can be used to find all links with a prefix, or',
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'prefix' => 'string',
+ 'url' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ '*' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Returns all interwiki links from the given page(s)';
}
);
}
+ public static function getResultPropertiesFiltered( $filter = array() ) {
+ $props = array(
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'user' => array(
+ 'userhidden' => 'boolean',
+ 'user' => 'string',
+ 'anon' => 'boolean'
+ ),
+ 'userid' => array(
+ 'userhidden' => 'boolean',
+ 'userid' => 'integer',
+ 'anon' => 'boolean'
+ ),
+ 'size' => array(
+ 'size' => 'integer',
+ 'width' => 'integer',
+ 'height' => 'integer',
+ 'pagecount' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'comment' => array(
+ 'commenthidden' => 'boolean',
+ 'comment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'parsedcomment' => array(
+ 'commenthidden' => 'boolean',
+ 'parsedcomment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'url' => array(
+ 'filehidden' => 'boolean',
+ 'thumburl' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'thumbwidth' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'thumbheight' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'thumberror' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'url' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'descriptionurl' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'sha1' => array(
+ 'filehidden' => 'boolean',
+ 'sha1' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'mime' => array(
+ 'filehidden' => 'boolean',
+ 'mime' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'mediatype' => array(
+ 'filehidden' => 'boolean',
+ 'mediatype' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'archivename' => array(
+ 'filehidden' => 'boolean',
+ 'archivename' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'bitdepth' => array(
+ 'filehidden' => 'boolean',
+ 'bitdepth' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ );
+ return array_diff_key( $props, array_flip( $filter ) );
+ }
+
+ public function getResultProperties() {
+ return self::getResultPropertiesFiltered();
+ }
+
public function getDescription() {
return 'Returns image information and upload history';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Returns all images contained on the given page(s)';
}
*/
private function extractPageInfo( $pageid, $title ) {
$pageInfo = array();
- if ( $title->exists() ) {
+ $titleExists = $pageid > 0; //$title->exists() needs pageid, which is not set for all title objects
+ $ns = $title->getNamespace();
+ $dbkey = $title->getDBkey();
+ if ( $titleExists ) {
global $wgDisableCounters;
$pageInfo['touched'] = wfTimestamp( TS_ISO_8601, $this->pageTouched[$pageid] );
if ( $this->fld_protection ) {
$pageInfo['protection'] = array();
- if ( isset( $this->protections[$title->getNamespace()][$title->getDBkey()] ) ) {
+ if ( isset( $this->protections[$ns][$dbkey] ) ) {
$pageInfo['protection'] =
- $this->protections[$title->getNamespace()][$title->getDBkey()];
+ $this->protections[$ns][$dbkey];
}
$this->getResult()->setIndexedTagName( $pageInfo['protection'], 'pr' );
}
- if ( $this->fld_watched && isset( $this->watched[$title->getNamespace()][$title->getDBkey()] ) ) {
+ if ( $this->fld_watched && isset( $this->watched[$ns][$dbkey] ) ) {
$pageInfo['watched'] = '';
}
- if ( $this->fld_talkid && isset( $this->talkids[$title->getNamespace()][$title->getDBkey()] ) ) {
- $pageInfo['talkid'] = $this->talkids[$title->getNamespace()][$title->getDBkey()];
+ if ( $this->fld_talkid && isset( $this->talkids[$ns][$dbkey] ) ) {
+ $pageInfo['talkid'] = $this->talkids[$ns][$dbkey];
}
- if ( $this->fld_subjectid && isset( $this->subjectids[$title->getNamespace()][$title->getDBkey()] ) ) {
- $pageInfo['subjectid'] = $this->subjectids[$title->getNamespace()][$title->getDBkey()];
+ if ( $this->fld_subjectid && isset( $this->subjectids[$ns][$dbkey] ) ) {
+ $pageInfo['subjectid'] = $this->subjectids[$ns][$dbkey];
}
if ( $this->fld_url ) {
}
if ( $this->fld_preload ) {
- if ( $title->exists() ) {
+ if ( $titleExists ) {
$pageInfo['preload'] = '';
} else {
$text = null;
}
if ( $this->fld_displaytitle ) {
- if ( isset( $this->displaytitles[$title->getArticleID()] ) ) {
- $pageInfo['displaytitle'] = $this->displaytitles[$title->getArticleID()];
+ if ( isset( $this->displaytitles[$pageid] ) ) {
+ $pageInfo['displaytitle'] = $this->displaytitles[$pageid];
} else {
$pageInfo['displaytitle'] = $title->getPrefixedText();
}
);
}
+ public function getResultProperties() {
+ $props = array(
+ ApiBase::PROP_LIST => false,
+ '' => array(
+ 'touched' => 'timestamp',
+ 'lastrevid' => 'integer',
+ 'counter' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'length' => 'integer',
+ 'redirect' => 'boolean',
+ 'new' => 'boolean',
+ 'starttimestamp' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'watched' => array(
+ 'watched' => 'boolean'
+ ),
+ 'talkid' => array(
+ 'talkid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'subjectid' => array(
+ 'subjectid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'url' => array(
+ 'fullurl' => 'string',
+ 'editurl' => 'string'
+ ),
+ 'readable' => array(
+ 'readable' => 'boolean'
+ ),
+ 'preload' => array(
+ 'preload' => 'string'
+ ),
+ 'displaytitle' => array(
+ 'displaytitle' => 'string'
+ )
+ );
+
+ self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+ return $props;
+ }
+
public function getDescription() {
return 'Get basic page information such as namespace, title, last touched date, ...';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'pageid' => 'integer',
+ 'ns' => 'namespace',
+ 'title' => 'string',
+ 'redirect' => 'boolean'
+ ),
+ 'lllang' => array(
+ 'lllang' => 'string'
+ ),
+ 'lltitle' => array(
+ 'lltitle' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return array( 'Find all pages that link to the given language link.',
'Can be used to find all links with a language code, or',
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'lang' => 'string',
+ 'url' => array(
+ ApiBase::PROP_TYPE => 'string',
+ Apibase::PROP_NULLABLE => true
+ ),
+ '*' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Returns all interlanguage links from the given page(s)';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return "Returns all {$this->description}s from the given page(s)";
}
);
}
+ public function getResultProperties() {
+ global $wgLogTypes;
+ return array(
+ 'ids' => array(
+ 'logid' => 'integer',
+ 'pageid' => 'integer'
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'type' => array(
+ 'type' => array(
+ ApiBase::PROP_TYPE => $wgLogTypes
+ ),
+ 'action' => 'string'
+ ),
+ 'details' => array(
+ 'actionhidden' => 'boolean'
+ ),
+ 'user' => array(
+ 'userhidden' => 'boolean',
+ 'user' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'anon' => 'boolean'
+ ),
+ 'userid' => array(
+ 'userhidden' => 'boolean',
+ 'userid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'anon' => 'boolean'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'comment' => array(
+ 'commenthidden' => 'boolean',
+ 'comment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'parsedcomment' => array(
+ 'commenthidden' => 'boolean',
+ 'parsedcomment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Get events from logs';
}
);
}
+ public function getResultProperties() {
+ global $wgRestrictionLevels;
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'user' => array(
+ 'user' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'userid' => 'integer'
+ ),
+ 'comment' => array(
+ 'comment' => 'string'
+ ),
+ 'parsedcomment' => array(
+ 'parsedcomment' => 'string'
+ ),
+ 'expiry' => array(
+ 'expiry' => 'timestamp'
+ ),
+ 'level' => array(
+ 'level' => array(
+ ApiBase::PROP_TYPE => array_diff( $wgRestrictionLevels, array( '' ) )
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'List all titles protected from creation';
}
);
}
+ public function getResultProperties() {
+ return array(
+ ApiBase::PROP_ROOT => array(
+ 'name' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => false
+ ),
+ 'disabled' => array(
+ ApiBase::PROP_TYPE => 'boolean',
+ ApiBase::PROP_NULLABLE => false
+ ),
+ 'cached' => array(
+ ApiBase::PROP_TYPE => 'boolean',
+ Apibase::PROP_NULLABLE => false
+ ),
+ 'cachedtimestamp' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ '' => array(
+ 'value' => 'string',
+ 'timestamp' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Get a list provided by a QueryPage-based special page';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'id' => 'integer',
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Get a set of random pages',
);
}
+ public function getResultProperties() {
+ global $wgLogTypes;
+ $props = array(
+ '' => array(
+ 'type' => array(
+ ApiBase::PROP_TYPE => array(
+ 'edit',
+ 'new',
+ 'move',
+ 'log',
+ 'move over redirect'
+ )
+ )
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string',
+ 'new_ns' => array(
+ ApiBase::PROP_TYPE => 'namespace',
+ Apibase::PROP_NULLABLE => true
+ ),
+ 'new_title' => array(
+ ApiBase::PROP_TYPE => 'string',
+ Apibase::PROP_NULLABLE => true
+ )
+ ),
+ 'ids' => array(
+ 'rcid' => 'integer',
+ 'pageid' => 'integer',
+ 'revid' => 'integer',
+ 'old_revid' => 'integer'
+ ),
+ 'user' => array(
+ 'user' => 'string',
+ 'anon' => 'boolean'
+ ),
+ 'userid' => array(
+ 'userid' => 'integer',
+ 'anon' => 'boolean'
+ ),
+ 'flags' => array(
+ 'bot' => 'boolean',
+ 'new' => 'boolean',
+ 'minor' => 'boolean'
+ ),
+ 'sizes' => array(
+ 'oldlen' => 'integer',
+ 'newlen' => 'integer'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'comment' => array(
+ 'comment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ Apibase::PROP_NULLABLE => true
+ )
+ ),
+ 'parsedcomment' => array(
+ 'parsedcomment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ Apibase::PROP_NULLABLE => true
+ )
+ ),
+ 'redirect' => array(
+ 'redirect' => 'boolean'
+ ),
+ 'patrolled' => array(
+ 'patrolled' => 'boolean'
+ ),
+ 'loginfo' => array(
+ 'logid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ Apibase::PROP_NULLABLE => true
+ ),
+ 'logtype' => array(
+ ApiBase::PROP_TYPE => $wgLogTypes,
+ Apibase::PROP_NULLABLE => true
+ ),
+ 'logaction' => array(
+ ApiBase::PROP_TYPE => 'string',
+ Apibase::PROP_NULLABLE => true
+ )
+ )
+ );
+
+ self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+ return $props;
+ }
+
public function getDescription() {
return 'Enumerate recent changes';
}
);
}
+ public function getResultProperties() {
+ $props = array(
+ '' => array(),
+ 'ids' => array(
+ 'revid' => 'integer',
+ 'parentid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'flags' => array(
+ 'minor' => 'boolean'
+ ),
+ 'user' => array(
+ 'userhidden' => 'boolean',
+ 'user' => 'string',
+ 'anon' => 'boolean'
+ ),
+ 'userid' => array(
+ 'userhidden' => 'boolean',
+ 'userid' => 'integer',
+ 'anon' => 'boolean'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'size' => array(
+ 'size' => 'integer'
+ ),
+ 'sha1' => array(
+ 'sha1' => 'string'
+ ),
+ 'comment' => array(
+ 'commenthidden' => 'boolean',
+ 'comment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'parsedcomment' => array(
+ 'commenthidden' => 'boolean',
+ 'parsedcomment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'content' => array(
+ '*' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'texthidden' => 'boolean'
+ )
+ );
+
+ self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+ return $props;
+ }
+
public function getDescription() {
return array(
'Get revision information',
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'snippet' => array(
+ 'snippet' => 'string'
+ ),
+ 'size' => array(
+ 'size' => 'integer'
+ ),
+ 'wordcount' => array(
+ 'wordcount' => 'integer'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'score' => array(
+ 'score' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'titlesnippet' => array(
+ 'titlesnippet' => 'string'
+ ),
+ 'redirecttitle' => array(
+ 'redirecttitle' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'redirectsnippet' => array(
+ 'redirectsnippet' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'sectiontitle' => array(
+ 'sectiontitle' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'sectionsnippet' => array(
+ 'sectionsnippet' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'hasrelated' => array(
+ 'hasrelated' => 'boolean'
+ )
+ );
+ }
+
public function getDescription() {
return 'Perform a full text search';
}
);
}
+ public function getResultProperties() {
+ return ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter );
+ }
+
public function getDescription() {
return 'Returns image information for stashed images';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'name' => 'string'
+ ),
+ 'displayname' => array(
+ 'displayname' => 'string'
+ ),
+ 'description' => array(
+ 'description' => 'string'
+ ),
+ 'hitcount' => array(
+ 'hitcount' => 'integer'
+ )
+ );
+ }
+
public function getDescription() {
return 'List change tags';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'userid' => 'integer',
+ 'user' => 'string',
+ 'userhidden' => 'boolean'
+ ),
+ 'ids' => array(
+ 'pageid' => 'integer',
+ 'revid' => 'integer'
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'flags' => array(
+ 'new' => 'boolean',
+ 'minor' => 'boolean',
+ 'top' => 'boolean'
+ ),
+ 'comment' => array(
+ 'commenthidden' => 'boolean',
+ 'comment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'parsedcomment' => array(
+ 'commenthidden' => 'boolean',
+ 'parsedcomment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'patrolled' => array(
+ 'patrolled' => 'boolean'
+ ),
+ 'size' => array(
+ 'size' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Get all edits by a user';
}
);
}
+ public function getResultProperties() {
+ return array(
+ ApiBase::PROP_LIST => false,
+ '' => array(
+ 'id' => 'integer',
+ 'name' => 'string',
+ 'anon' => 'boolean'
+ ),
+ 'blockinfo' => array(
+ 'blockid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedby' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedbyid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedreason' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'hasmsg' => array(
+ 'messages' => 'boolean'
+ ),
+ 'preferencestoken' => array(
+ 'preferencestoken' => 'string'
+ ),
+ 'editcount' => array(
+ 'editcount' => 'integer'
+ ),
+ 'realname' => array(
+ 'realname' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'email' => array(
+ 'email' => 'string',
+ 'emailauthenticated' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'registrationdate' => array(
+ 'registrationdate' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Get information about the current user';
}
);
}
+ public function getResultProperties() {
+ $props = array(
+ '' => array(
+ 'userid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'name' => 'string',
+ 'invalid' => 'boolean',
+ 'hidden' => 'boolean',
+ 'interwiki' => 'boolean',
+ 'missing' => 'boolean'
+ ),
+ 'editcount' => array(
+ 'editcount' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'registration' => array(
+ 'registration' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'blockinfo' => array(
+ 'blockid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedby' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedbyid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedreason' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blockedexpiry' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'emailable' => array(
+ 'emailable' => 'boolean'
+ ),
+ 'gender' => array(
+ 'gender' => array(
+ ApiBase::PROP_TYPE => array(
+ 'male',
+ 'female',
+ 'unknown'
+ ),
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+
+ self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+ return $props;
+ }
+
public function getDescription() {
return 'Get information about a list of users';
}
);
}
+ public function getResultProperties() {
+ global $wgLogTypes;
+ return array(
+ 'ids' => array(
+ 'pageid' => 'integer',
+ 'revid' => 'integer',
+ 'old_revid' => 'integer'
+ ),
+ 'title' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'user' => array(
+ 'user' => 'string',
+ 'anon' => 'boolean'
+ ),
+ 'userid' => array(
+ 'userid' => 'integer',
+ 'anon' => 'boolean'
+ ),
+ 'flags' => array(
+ 'new' => 'boolean',
+ 'minor' => 'boolean',
+ 'bot' => 'boolean'
+ ),
+ 'patrol' => array(
+ 'patrolled' => 'boolean'
+ ),
+ 'timestamp' => array(
+ 'timestamp' => 'timestamp'
+ ),
+ 'sizes' => array(
+ 'oldlen' => 'integer',
+ 'newlen' => 'integer'
+ ),
+ 'notificationtimestamp' => array(
+ 'notificationtimestamp' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'comment' => array(
+ 'comment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'parsedcomment' => array(
+ 'parsedcomment' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
+ 'loginfo' => array(
+ 'logid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'logtype' => array(
+ ApiBase::PROP_TYPE => $wgLogTypes,
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'logaction' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return "Get all recent changes to pages in the logged in user's watchlist";
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'ns' => 'namespace',
+ 'title' => 'string'
+ ),
+ 'changed' => array(
+ 'changed' => array(
+ ApiBase::PROP_TYPE => 'timestamp',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return "Get all pages on the logged in user's watchlist";
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'title' => 'string',
+ 'pageid' => 'integer',
+ 'summary' => 'string',
+ 'revid' => 'integer',
+ 'old_revid' => 'integer',
+ 'last_revid' => 'integer'
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Undo the last edit to the page. If the last user who edited the page made multiple edits in a row,',
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'patroltoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'edittoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'deletetoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'protecttoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'movetoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'blocktoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'unblocktoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'emailtoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'importtoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'watchtoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'optionstoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getParamDescription() {
return array(
'type' => 'Type of token(s) to request'
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'unblocktoken' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'id' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'user' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'userid' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'reason' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return 'Unblock a user';
}
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'title' => 'string',
+ 'revisions' => 'integer',
+ 'filerevisions' => 'integer',
+ 'reason' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Restore certain revisions of a deleted page. A list of deleted revisions (including timestamps) can be',
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'result' => array(
+ ApiBase::PROP_TYPE => array(
+ 'Success',
+ 'Warning',
+ 'Continue',
+ 'Queued'
+ ),
+ ),
+ 'filekey' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'sessionkey' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'offset' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'statuskey' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ ),
+ 'filename' => array(
+ ApiBase::PROP_TYPE => 'string',
+ ApiBase::PROP_NULLABLE => true
+ )
+ )
+ );
+ }
+
public function getDescription() {
return array(
'Upload a file, or get the status of pending uploads. Several methods are available:',
);
}
+ public function getResultProperties() {
+ return array(
+ '' => array(
+ 'title' => 'string',
+ 'unwatched' => 'boolean',
+ 'watched' => 'boolean',
+ 'message' => 'string'
+ )
+ );
+ }
+
public function getDescription() {
return 'Add or remove a page from/to the current user\'s watchlist';
}
* - DBO_PERSISTENT: use persistant database connection
*/
function setFlag( $flag ) {
+ global $wgDebugDBTransactions;
$this->mFlags |= $flag;
+ if ( ( $flag & DBO_TRX) & $wgDebugDBTransactions ) {
+ wfDebug("Implicit transactions are now disabled.\n");
+ }
}
/**
* @param $flag: same as setFlag()'s $flag param
*/
function clearFlag( $flag ) {
+ global $wgDebugDBTransactions;
$this->mFlags &= ~$flag;
+ if ( ( $flag & DBO_TRX ) && $wgDebugDBTransactions ) {
+ wfDebug("Implicit transactions are now disabled.\n");
+ }
}
/**
function __construct( $server = false, $user = false, $password = false, $dbName = false,
$flags = 0, $tablePrefix = 'get from global'
) {
- global $wgDBprefix, $wgCommandLineMode;
+ global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
$this->mFlags = $flags;
if ( $this->mFlags & DBO_DEFAULT ) {
if ( $wgCommandLineMode ) {
$this->mFlags &= ~DBO_TRX;
+ if ( $wgDebugDBTransactions ) {
+ wfDebug("Implicit transaction open disabled.\n");
+ }
} else {
$this->mFlags |= DBO_TRX;
+ if ( $wgDebugDBTransactions ) {
+ wfDebug("Implicit transaction open enabled.\n");
+ }
}
}
# that would delay transaction initializations to once connection
# is really used by application
$sqlstart = substr( $sql, 0, 10 ); // very much worth it, benchmark certified(tm)
- if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 )
+ if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 ) {
+ global $wgDebugDBTransactions;
+ if ( $wgDebugDBTransactions ) {
+ wfDebug("Implicit transaction start.\n");
+ }
$this->begin( __METHOD__ . " ($fname)" );
+ }
}
if ( $this->debug() ) {
}
/**
- * Begin a transaction, committing any previously open transaction
+ * Begin a transaction
*
* @param $fname string
*/
public function setBigSelects( $value = true ) {
// no-op
}
+
+ /**
+ * @since 1.19
+ */
+ public function __toString() {
+ return (string)$this->mConn;
+ }
}
static $WATCHED = array(
array(
- "desc" => "Connection state changed from %s -> %s\n",
+ "desc" => "%s: Connection state changed from %s -> %s\n",
"states" => array(
PGSQL_CONNECTION_OK => "OK",
PGSQL_CONNECTION_BAD => "BAD"
)
),
array(
- "desc" => "Transaction state changed from %s -> %s\n",
+ "desc" => "%s: Transaction state changed from %s -> %s\n",
"states" => array(
PGSQL_TRANSACTION_IDLE => "IDLE",
PGSQL_TRANSACTION_ACTIVE => "ACTIVE",
protected function log_changed( $old, $new, $watched ) {
wfDebug(sprintf($watched["desc"],
+ $this->mConn,
$this->describe_changed( $old, $watched["states"] ),
$this->describe_changed( $new, $watched["states"] ))
);
}
}
+/**
+ * Manage savepoints within a transaction
+ * @ingroup Database
+ * @since 1.19
+ */
+class SavepointPostgres {
+ /**
+ * Establish a savepoint within a transaction
+ */
+ protected $dbw;
+ protected $id;
+ protected $didbegin;
+
+ public function __construct ($dbw, $id) {
+ $this->dbw = $dbw;
+ $this->id = $id;
+ $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;
+ }
+ }
+
+ public function __destruct() {
+ if ( $this->didbegin ) {
+ $this->dbw->rollback();
+ }
+ }
+
+ public function commit() {
+ if ( $this->didbegin ) {
+ $this->dbw->commit();
+ }
+ }
+
+ protected function query( $keyword, $msg_ok, $msg_failed ) {
+ global $wgDebugDBTransactions;
+ if ( $this->dbw->doQuery( $keyword . " " . $this->id ) !== false ) {
+ if ( $wgDebugDBTransactions ) {
+ wfDebug( sprintf ($msg_ok, $this->id ) );
+ }
+ } else {
+ wfDebug( sprintf ($msg_failed, $this->id ) );
+ }
+ }
+
+ public function savepoint() {
+ $this->query("SAVEPOINT",
+ "Transaction state: savepoint \"%s\" established.\n",
+ "Transaction state: establishment of savepoint \"%s\" FAILED.\n"
+ );
+ }
+
+ public function release() {
+ $this->query("RELEASE",
+ "Transaction state: savepoint \"%s\" released.\n",
+ "Transaction state: release of savepoint \"%s\" FAILED.\n"
+ );
+ }
+
+ public function rollback() {
+ $this->query("ROLLBACK TO",
+ "Transaction state: savepoint \"%s\" rolled back.\n",
+ "Transaction state: rollback of savepoint \"%s\" FAILED.\n"
+ );
+ }
+
+ public function __toString() {
+ return (string)$this->id;
+ }
+}
+
/**
* @ingroup Database
*/
return pg_close( $this->mConn );
}
- protected function doQuery( $sql ) {
+ public function doQuery( $sql ) {
if ( function_exists( 'mb_convert_encoding' ) ) {
$sql = mb_convert_encoding( $sql, 'UTF-8' );
}
}
// If IGNORE is set, we use savepoints to emulate mysql's behavior
- $ignore = in_array( 'IGNORE', $options ) ? 'mw' : '';
-
- // If we are not in a transaction, we need to be for savepoint trickery
- $didbegin = 0;
- if ( $ignore ) {
- if ( !$this->mTrxLevel ) {
- $this->begin( __METHOD__ );
- $didbegin = 1;
- }
+ $savepoint = null;
+ if ( in_array( 'IGNORE', $options ) ) {
+ $savepoint = new SavepointPostgres( $this, 'mw' );
$olde = error_reporting( 0 );
// For future use, we may want to track the number of actual inserts
// Right now, insert (all writes) simply return true/false
$sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
if ( $multi ) {
- if ( $this->numeric_version >= 8.2 && !$ignore ) {
+ if ( $this->numeric_version >= 8.2 && !$savepoint ) {
$first = true;
foreach ( $args as $row ) {
if ( $first ) {
}
$sql .= '(' . $this->makeList( $row ) . ')';
}
- $res = (bool)$this->query( $sql, $fname, $ignore );
+ $res = (bool)$this->query( $sql, $fname, $savepoint );
} else {
$res = true;
$origsql = $sql;
$tempsql = $origsql;
$tempsql .= '(' . $this->makeList( $row ) . ')';
- if ( $ignore ) {
- $this->doQuery( "SAVEPOINT $ignore" );
+ if ( $savepoint ) {
+ $savepoint->savepoint();
}
- $tempres = (bool)$this->query( $tempsql, $fname, $ignore );
+ $tempres = (bool)$this->query( $tempsql, $fname, $savepoint );
- if ( $ignore ) {
+ if ( $savepoint ) {
$bar = pg_last_error();
if ( $bar != false ) {
- $this->doQuery( $this->mConn, "ROLLBACK TO $ignore" );
+ $savepoint->rollback();
} else {
- $this->doQuery( $this->mConn, "RELEASE $ignore" );
+ $savepoint->release();
$numrowsinserted++;
}
}
}
} else {
// Not multi, just a lone insert
- if ( $ignore ) {
- $this->doQuery( "SAVEPOINT $ignore" );
+ if ( $savepoint ) {
+ $savepoint->savepoint();
}
$sql .= '(' . $this->makeList( $args ) . ')';
- $res = (bool)$this->query( $sql, $fname, $ignore );
- if ( $ignore ) {
+ $res = (bool)$this->query( $sql, $fname, $savepoint );
+ if ( $savepoint ) {
$bar = pg_last_error();
if ( $bar != false ) {
- $this->doQuery( "ROLLBACK TO $ignore" );
+ $savepoint->rollback();
} else {
- $this->doQuery( "RELEASE $ignore" );
+ $savepoint->release();
$numrowsinserted++;
}
}
}
- if ( $ignore ) {
+ if ( $savepoint ) {
$olde = error_reporting( $olde );
- if ( $didbegin ) {
- $this->commit( __METHOD__ );
- }
+ $savepoint->commit();
// Set the affected row count for the whole operation
$this->mAffectedRows = $numrowsinserted;
{
$destTable = $this->tableName( $destTable );
- // If IGNORE is set, we use savepoints to emulate mysql's behavior
- $ignore = in_array( 'IGNORE', $insertOptions ) ? 'mw' : '';
-
if( is_array( $insertOptions ) ) {
$insertOptions = implode( ' ', $insertOptions ); // FIXME: This is unused
}
$srcTable = $this->tableName( $srcTable );
}
- // If we are not in a transaction, we need to be for savepoint trickery
- $didbegin = 0;
- if ( $ignore ) {
- if( !$this->mTrxLevel ) {
- $this->begin( __METHOD__ );
- $didbegin = 1;
- }
+ // If IGNORE is set, we use savepoints to emulate mysql's behavior
+ $savepoint = null;
+ if ( in_array( 'IGNORE', $options ) ) {
+ $savepoint = new SavepointPostgres( $this, 'mw' );
$olde = error_reporting( 0 );
$numrowsinserted = 0;
- $this->doQuery( "SAVEPOINT $ignore" );
+ $savepoint->savepoint();
}
$sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
$sql .= " $tailOpts";
- $res = (bool)$this->query( $sql, $fname, $ignore );
- if( $ignore ) {
+ $res = (bool)$this->query( $sql, $fname, $savepoint );
+ if( $savepoint ) {
$bar = pg_last_error();
if( $bar != false ) {
- $this->doQuery( "ROLLBACK TO $ignore" );
+ $savepoint->rollback();
} else {
- $this->doQuery( "RELEASE $ignore" );
+ $savepoint->release();
$numrowsinserted++;
}
$olde = error_reporting( $olde );
- if( $didbegin ) {
- $this->commit( __METHOD__ );
- }
+ $savepoint->commit();
// Set the affected row count for the whole operation
$this->mAffectedRows = $numrowsinserted;
* This will be also called by the installer after the schema is created
*
* @since 1.19
- * @param desired_schema string
+ * @param $desired_schema string
*/
function determineCoreSchema( $desired_schema ) {
$this->begin( __METHOD__ );
}
if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
# Diff via the shell
- global $wgTmpDirectory;
- $tempName1 = tempnam( $wgTmpDirectory, 'diff_' );
- $tempName2 = tempnam( $wgTmpDirectory, 'diff_' );
+ $tmpDir = wfTempDir();
+ $tempName1 = tempnam( $tmpDir, 'diff_' );
+ $tempName2 = tempnam( $tmpDir, 'diff_' );
$tempFile1 = fopen( $tempName1, "w" );
if ( !$tempFile1 ) {
/**
* This class is used to hold the location and do limited manipulation
- * of files stored temporarily (usually this will be $wgTmpDirectory)
+ * of files stored temporarily (this will be whatever wfTempDir() returns)
*
* @ingroup FileBackend
*/
* @param $path String Full path to write LocalSettings.php to
*/
public function writeConfigurationFile( $path ) {
- $ls = new LocalSettingsGenerator( $this );
+ $ls = InstallerOverrides::getLocalSettingsGenerator( $this );
$ls->writeFile( "$path/LocalSettings.php" );
}
*/
class LocalSettingsGenerator {
- private $extensions = array();
- private $values = array();
- private $groupPermissions = array();
- private $dbSettings = '';
- private $safeMode = false;
+ protected $extensions = array();
+ protected $values = array();
+ protected $groupPermissions = array();
+ protected $dbSettings = '';
+ protected $safeMode = false;
/**
* @var Installer
*/
- private $installer;
+ protected $installer;
/**
* Constructor.
/**
* @return String
*/
- private function buildMemcachedServerList() {
+ protected function buildMemcachedServerList() {
$servers = $this->values['_MemCachedServers'];
if( !$servers ) {
/**
* @return String
*/
- private function getDefaultText() {
+ protected function getDefaultText() {
if( !$this->values['wgImageMagickConvertCommand'] ) {
$this->values['wgImageMagickConvertCommand'] = '/usr/bin/convert';
$magic = '#';
'Content-Disposition: attachment; filename="LocalSettings.php"'
);
- $ls = new LocalSettingsGenerator( $this );
+ $ls = InstallerOverrides::getLocalSettingsGenerator( $this );
$rightsProfile = $this->rightsProfiles[$this->getVar( '_RightsProfile' )];
foreach( $rightsProfile as $group => $rightsArr ) {
$ls->setGroupRights( $group, $rightsArr );
* Fetch an Interwiki object
*
* @param $prefix String: interwiki prefix to use
- * @return Interwiki Object, or null if not valid
+ * @return Interwiki|null|bool
*/
static public function fetch( $prefix ) {
global $wgContLang;
* for systems that don't have it.
*
* On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wgTmpDirectory).
+ * to override the default DBA files directory (wfTempDir()).
*
* @ingroup Cache
*/
global $wgDBAhandler;
if ( !isset( $params['dir'] ) ) {
- global $wgTmpDirectory;
- $params['dir'] = $wgTmpDirectory;
+ $params['dir'] = wfTempDir();
}
$this->mFile = $params['dir']."/mw-cache-" . wfWikiID();
* @file
* @ingroup Cache
*/
-
+
/**
* A wrapper class for the PECL memcached client
- *
+ *
* @ingroup Cache
*/
class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
* - compress_threshold: The minimum size an object must be before it is compressed
* - timeout: The read timeout in microseconds
* - connect_timeout: The connect timeout in seconds
- * - serializer: May be either "php" or "igbinary". Igbinary produces more compact
+ * - serializer: May be either "php" or "igbinary". Igbinary produces more compact
* values, but serialization is much slower unless the php.ini option
* igbinary.compact_strings is off.
*/
$params = $this->applyDefaultParams( $params );
if ( $params['persistent'] ) {
- $this->client = new Memcached( __CLASS__ );
+ // The pool ID must be unique to the server/option combination.
+ // The Memcached object is essentially shared for each pool ID.
+ // We can only resuse a pool ID if we keep the config consistent.
+ $this->client = new Memcached( md5( serialize( $params ) ) );
+ if ( count( $this->client->getServerList() ) ) {
+ wfDebug( __METHOD__ . ": persistent Memcached object already loaded.\n" );
+ return; // already initialized; don't add duplicate servers
+ }
} else {
$this->client = new Memcached;
}
$params['serializer'] = 'php';
}
- // The compression threshold is an undocumented php.ini option for some
- // reason. There's probably not much harm in setting it globally, for
+ // The compression threshold is an undocumented php.ini option for some
+ // reason. There's probably not much harm in setting it globally, for
// compatibility with the settings for the PHP client.
ini_set( 'memcached.compression_threshold', $params['compress_threshold'] );
$this->client->setOption( Memcached::OPT_RECV_TIMEOUT, $params['timeout'] );
$this->client->setOption( Memcached::OPT_POLL_TIMEOUT, $params['timeout'] / 1000 );
- // Set libketama mode since it's recommended by the documentation and
+ // Set libketama mode since it's recommended by the documentation and
// is as good as any. There's no way to configure libmemcached to use
// hashes identical to the ones currently in use by the PHP client, and
- // even implementing one of the libmemcached hashes in pure PHP for
+ // even implementing one of the libmemcached hashes in pure PHP for
// forwards compatibility would require MWMemcached::get_sock() to be
// rewritten.
$this->client->setOption( Memcached::OPT_LIBKETAMA_COMPATIBLE, true );
break;
case 'igbinary':
if ( !Memcached::HAVE_IGBINARY ) {
- throw new MWException( __CLASS__.': the igbinary extension is not available ' .
+ throw new MWException( __CLASS__.': the igbinary extension is not available ' .
'but igbinary serialization was requested.' );
}
$this->client->setOption( Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY );
default:
throw new MWException( __CLASS__.': invalid value for serializer parameter' );
}
+ $servers = array();
foreach ( $params['servers'] as $host ) {
- list( $ip, $port ) = IP::splitHostAndPort( $host );
- $this->client->addServer( $ip, $port );
+ $servers[] = IP::splitHostAndPort( $host ); // (ip, port)
}
+ $this->client->addServers( $servers );
}
/**
}
/**
- * Check the return value from a client method call and take any necessary
- * action. Returns the value that the wrapper function should return. At
+ * Check the return value from a client method call and take any necessary
+ * action. Returns the value that the wrapper function should return. At
* present, the return value is always the same as the return value from
- * the client, but some day we might find a case where it should be
+ * the client, but some day we might find a case where it should be
* different.
- *
+ *
* @param $key The key used by the caller, or false if there wasn't one.
* @param $result The return value
*/
return $this->checkResult( false, $result );
}
- /* NOTE: there is no cas() method here because it is currently not supported
- * by the BagOStuff interface and other BagOStuff subclasses, such as
+ /* NOTE: there is no cas() method here because it is currently not supported
+ * by the BagOStuff interface and other BagOStuff subclasses, such as
* SqlBagOStuff.
*/
}
* @return DatabaseBase
*/
protected function getDB() {
+ global $wgDebugDBTransactions;
if ( !isset( $this->db ) ) {
# If server connection info was given, use that
if ( $this->serverInfo ) {
+ if ( $wgDebugDBTransactions ) {
+ wfDebug( sprintf( "Using provided serverInfo for SqlBagOStuff\n" ) );
+ }
$this->lb = new LoadBalancer( array(
'servers' => array( $this->serverInfo ) ) );
$this->db = $this->lb->getConnection( DB_MASTER );
$this->db->clearFlag( DBO_TRX );
} else {
- # We must keep a separate connection to MySQL in order to avoid deadlocks
- # However, SQLite has an opposite behaviour.
- # @todo Investigate behaviour for other databases
- if ( wfGetDB( DB_MASTER )->getType() == 'sqlite' ) {
- $this->db = wfGetDB( DB_MASTER );
- } else {
+ /*
+ * We must keep a separate connection to MySQL in order to avoid deadlocks
+ * However, SQLite has an opposite behaviour. And PostgreSQL needs to know
+ * if we are in transaction or no
+ */
+ if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
$this->lb = wfGetLBFactory()->newMainLB();
$this->db = $this->lb->getConnection( DB_MASTER );
$this->db->clearFlag( DBO_TRX );
+ } else {
+ $this->db = wfGetDB( DB_MASTER );
}
}
+ if ( $wgDebugDBTransactions ) {
+ wfDebug( sprintf( "Connection %s will be used for SqlBagOStuff\n", $this->db ) );
+ }
}
return $this->db;
// Styles
$styles = array();
if ( $context->shouldIncludeStyles() ) {
- // If we are in debug mode, we'll want to return an array of URLs
+ // If we are in debug mode without &only= set, we'll want to return an array of URLs
// See comment near shouldIncludeScripts() for more details
if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
$styles = $module->getStyleURLsForDebug( $context );
} else {
$styles = $module->getStyles( $context );
+ // Minify CSS before embedding in mw.loader.implement call
+ // (unless in debug mode)
+ if ( !$context->getDebug() ) {
+ foreach ( $styles as $media => $style ) {
+ if ( is_string( $style ) ) {
+ $styles[$media] = $this->filter( 'minify-css', $style );
+ }
+ }
+ }
+ // Combine styles for all media types
+ $styles = array( '' => self::makeCombinedStyles( $styles ) );
}
}
}
break;
case 'styles':
- $out .= self::makeCombinedStyles( $styles );
+ $out .= $styles['']; // Code above has set $styles['']
break;
case 'messages':
$out .= self::makeMessageSetScript( new XmlJsCode( $messagesBlob ) );
break;
default:
- // Minify CSS before embedding in mw.loader.implement call
- // (unless in debug mode)
- if ( !$context->getDebug() ) {
- foreach ( $styles as $media => $style ) {
- if ( is_string( $style ) ) {
- $styles[$media] = $this->filter( 'minify-css', $style );
- }
- }
- }
- $out .= self::makeLoaderImplementScript( $name, $scripts, $styles,
- new XmlJsCode( $messagesBlob ) );
+ $out .= self::makeLoaderImplementScript(
+ $name,
+ $scripts,
+ $styles,
+ new XmlJsCode( $messagesBlob )
+ );
break;
}
} catch ( Exception $e ) {
$oldpassMsg = 'oldpassword';
$submitMsg = 'resetpass-submit-loggedin';
}
+ $extraFields = array();
+ wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+ $prettyFields = array(
+ array( 'wpName', 'username', 'text', $this->mUserName ),
+ array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
+ array( 'wpNewPassword', 'newpassword', 'password', null ),
+ array( 'wpRetype', 'retypenew', 'password', null ),
+ );
+ $prettyFields = array_merge( $prettyFields, $extraFields );
$this->getOutput()->addHTML(
Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
Xml::openElement( 'form',
Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
$this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
- $this->pretty( array(
- array( 'wpName', 'username', 'text', $this->mUserName ),
- array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
- array( 'wpNewPassword', 'newpassword', 'password', null ),
- array( 'wpRetype', 'retypenew', 'password', null ),
- ) ) . "\n" .
+ $this->pretty( $prettyFields ) . "\n" .
$rememberMe .
"<tr>\n" .
"<td></td>\n" .
$this->msg( 'parentheses' )->rawParams( $histLink )->escaped() );
$length = Html::element( 'span', array( 'class' => 'mw-newpages-length' ),
- '[' . $this->msg( 'nbytes' )->numParams( $result->length )->text() . ']'
+ $this->msg( 'brackets' )->params( $this->msg( 'nbytes' )->numParams( $result->length )->text() )
);
$ulink = Linker::revUserTools( $rev );
*/
function formatResult( $skin, $result ) {
global $wgContLang;
- $title = Title::makeTitle( $result->namespace, $result->title );
+
+ $title = Title::makeTitleSafe( $result->namespace, $result->title );
+ if( !$title ) {
+ return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+ Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
+ }
+
$link = Linker::linkKnown(
$title,
htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
$out .= Xml::closeElement( 'form' ) . "\n";
// Show link to edit the dropdown reasons
if( $this->getUser()->isAllowed( 'editinterface' ) ) {
- $title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'Revdelete-reason-dropdown' );
$link = Linker::link(
$title,
$this->msg( 'revdelete-edit-reasonlist' )->escaped(),
/**
* Get the RFC 3066 code for this language object
*
+ * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+ * htmlspecialchars() or similar
+ *
* @return string
*/
public function getCode() {
/**
* Get the code in Bcp47 format which we can use
* inside of html lang="" tags.
+ *
+ * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+ * htmlspecialchars() or similar.
+ *
* @since 1.19
* @return string
*/
'Espezial' => NS_SPECIAL,
);
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
$magicWords = array(
'redirect' => array( '0', '#ENDRECERA', '#REENDRECERA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
'namespace' => array( '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ),
correu-e: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Si no visita a pachina, no recibirá mas notificacions de futuros cambios cambios.
+Si no visita a pachina, no recibirá mas notificacions de futuros cambios cambios.
Tamién puet cambiar o modo de notificación d\'as pachinas que cosira en a suya lista de seguimiento.
Atentament,
O servicio de notificacions d\'o prochecto {{SITENAME}}
# Protect
'protectlogpage' => 'Rechistro de proteccions de pachinas',
-'protectlogtext' => "Contino s'amuestra una lista de cambios en a protección d'as pachinas.
+'protectlogtext' => "Contino s'amuestra una lista de cambios en a protección d'as pachinas.
Se veiga a [[Special:ProtectedPages|lista de pachinas protechitas]] ta conoixer a lista de proteccions de pachinas actualment operacional.",
'protectedarticle' => "s'ha protechito [[$1]]",
'modifiedarticleprotection' => 's\'ha cambiato o livel de protección de "[[$1]]"',
'version-license' => 'Licencia',
'version-poweredby-credits' => "Iste wiki funciona gracias a '''[//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.
+'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.
MediaWiki se distribuye con l'asperanza d'estar d'utilidat, pero SIN GARRA GUARANCIA; nian a guarancia implicita de COMERCIALIZACIÓN u ADEQUACIÓN TA UNA FINALIDAT DETERMINADA. En trobará más detalles en a Licencia Publica General GNU.
'remembermypassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})',
'login' => 'ܥܘܠ',
'nav-login-createaccount' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
-'loginprompt' => 'Ü\90Ü Ü¨Ü\90 Ü Ü¡Ü¦Ü\90ܬܢÜ\90 Ü\95Ü\9dÜ Ü\9f Ü\95ܣܡÜ\9f Ü Ü©Ü\98Ü©Ü\9dÜ\99 (cookies) Ü Ü¥Ü Ü Ü¬Ü\90 Ü {{SITENAME}}.',
+'loginprompt' => 'Ü\90Ü Ü¨Ü\90 Ü Ü¡Ü¦Ü\90ܬܢÜ\90 Ü\95Ü\9dÜ Ü\9f Ü\95ܣܡÜ\9f Ü Ü©Ü\98Ü©Ü\9dÜ\99 (cookies) Ü Ü¥Ü Ü Ü¬Ü\90 Ü\92 {{SITENAME}}.',
'userlogin' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
'userloginnocreate' => 'ܥܘܠ',
'logout' => 'ܦܠܘܛ',
# Edit pages
'summary' => 'ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ:',
-'subject' => 'Ü¡Ü Ü\98Ü\90Ü\90/ܦܪܫÜ\93Ü¢ܐ ܪܫܝܐ:',
+'subject' => 'Ü¡Ü Ü\98Ü\90Ü\90/Ü¡Ü\98ܢܥܐ ܪܫܝܐ:',
'minoredit' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
'watchthis' => 'ܪܗܝ ܦܐܬܐ ܗܕܐ',
'savearticle' => 'ܠܒܘܟ ܕܦܐ',
# Preferences page
'preferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
-'mypreferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬÌ\88Ü\90 Ü\95Ü\9dÜ Ü\9d',
+'mypreferences' => 'ܨܒܝܢܝܘܬ̈ܝ',
'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
'prefsnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
'resultsperpage' => 'ܡܢܝܢܐ ܕܦܠܛ̈ܐ ܒܕܦܐ:',
'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
'recentchangescount' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:',
-'savedprefs' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬÌ\88Ü\90 Ü\95Ü\9dÜ Ü\9f Ü\90Ü¬Ü Ü\92Ü\9fÜ\98.',
+'savedprefs' => 'ܨܒܝܢܝܘܬ̈ܟ ܐܬܠܒܟܘ.',
'timezonelegend' => 'ܙܘܢܐ ܙܒܢܝܐ:',
'localtime' => 'ܥܕܢܐ ܕܘܟܬܝܐ:',
'timezoneregion-africa' => 'ܐܦܪܝܩܐ',
'listgrouprights-removegroup-self-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ',
# E-mail user
-'mailnologin' => 'Ü Ü\9dܬ ܦܪܫÜ\93Ü¢ܐ',
+'mailnologin' => 'Ü Ü\9dܬ Ü¡Ü\98ܢܥÜ\90 Ü Ü«Ü\98Ü\95ܪܐ',
'emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
'emailpage' => 'ܫܕܪ ܐܓܪܬܐ ܒܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ',
'defemailsubject' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܡܢ ܡܦܠܚܢܐ "$1"',
'sp-contributions-userrights' => 'ܕܘܒܪܐ ܕܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
'sp-contributions-search' => 'ܒܨܝ ܫܘܬܦܘܝܬ̈ܐ',
'sp-contributions-username' => 'ܐܝ ܦܝ (IP) ܐܘ ܫܡܐ ܕܡܦܠܚܢܐ:',
+'sp-contributions-toponly' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܕܗܢܘܢ ܬܢܝܬ̈ܐ ܐܚܪ̈ܝܬܐ ܒܠܚܘܕ',
'sp-contributions-submit' => 'ܒܨܝ',
# What links here
'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}} ܡܢ $2',
# Tooltip help for the actions
-'tooltip-pt-preferences' => 'ܓܒܝܬ̈ܝ',
+'tooltip-pt-preferences' => 'Your preferences',
'tooltip-pt-login' => 'ܛܒ ܐܢܬ ܕܣܓܠ ܥܠܠܐ، ܐܠܐ ܗܢܐ ܠܘ ܐܠܨܝܐ',
'tooltip-pt-logout' => 'ܦܠܘܛ',
'tooltip-ca-talk' => 'ܡܡܠܠܐ ܥܠ ܚܒܝܫܬܐ ܕܦܐܬܐ',
'prefs-beta' => 'বিটা বৈশিষ্টসমূহ',
'prefs-datetime' => 'তাৰিখ আৰু সময়',
'prefs-labs' => 'পৰীক্ষাগাৰ বৈশিষ্টসমূহ',
-'prefs-user-pages' => 'সদস্য পৃষ্ঠা',
+'prefs-user-pages' => 'সদস্য পৃষ্ঠাসমূহ',
'prefs-personal' => 'সদস্যৰ বিৱৰণ',
'prefs-rc' => 'শেহতীয়া সাল-সলনি',
'prefs-watchlist' => 'লক্ষ্য তালিকা',
'backend-fail-internal' => 'ষ্ট\'ৰেজ বেক্এণ্ড "$1"ত এক অজ্ঞাত ত্ৰুটী ঘটিছে।',
'backend-fail-contenttype' => '"$1"ত সাঁচি থ\'বলৈ ফাইলটোৰ সমল প্ৰকাৰ স্থিৰ কৰিব পৰা নগ\'ল।',
'backend-fail-batchsize' => "$1টা ফাইল {{PLURAL:$1|কাৰ্যৰ|কাৰ্যৰ}} ষ্ট'ৰেজ বেকএ'ণ্ড দিয়া হৈছে; সীমা হৈছে $2টা {{PLURAL:$2|কাৰ্য|কাৰ্য}}।",
-'backend-fail-usable' => "à¦\85পৰà§\8dযাপà§\8dত à¦\85নà§\81মতি বা হà§\87ৰà§\8bৱা নিৰà§\8dদà§\87শিà¦\95া/à¦\95নà§\8dâ\80\8cà¦\9fà§\87à¦\87নাৰৰ বাবে $1 ফাইলটো লিখিব পৰা নগ'ল।",
+'backend-fail-usable' => "à¦\85পৰà§\8dযাপà§\8dত à¦\85নà§\81মতি বা হà§\87ৰà§\8bৱা নিৰà§\8dদà§\87শিà¦\95া/সমলৰ বাবে $1 ফাইলটো লিখিব পৰা নগ'ল।",
# File journal errors
'filejournal-fail-dbconnect' => 'ষ্ট\'ৰেজ বেকএ\'ণ্ড "$1"ৰ বাবে জাৰ্ণাল তথ্যকোষৰ লগত সংযোগ স্থাপন নহ\'ল।',
'monday' => 'Дүшәмбе',
'tuesday' => 'Шишәмбе',
'wednesday' => 'Шаршамбы',
-'thursday' => 'Ð\9aеÑ\81еаÒ\99на',
+'thursday' => 'Кесаҙна',
'friday' => 'Йома',
'saturday' => 'Шәмбе',
-'sun' => 'Йәкшәмбе',
-'mon' => 'Дүшәмбе',
-'tue' => 'Шишәмбе',
-'wed' => 'Шаршамбы',
-'thu' => 'Кесеаҙна',
-'fri' => 'Ð\99ома',
-'sat' => 'Шәмбе',
-'january' => 'ғинуар',
-'february' => 'февраль',
-'march' => 'март',
-'april' => 'апрель',
-'may_long' => 'май',
-'june' => 'июнь',
-'july' => 'июль',
-'august' => 'август',
-'september' => 'сентябрь',
-'october' => 'октябрь',
-'november' => 'ноябрь',
-'december' => 'декабрь',
-'january-gen' => 'ғинуар',
-'february-gen' => 'февраль',
+'sun' => 'Йш',
+'mon' => 'Дш',
+'tue' => 'Шш',
+'wed' => 'Шр',
+'thu' => 'Кс',
+'fri' => 'Ð\99м',
+'sat' => 'Шб',
+'january' => 'ғинуар (һыуығай)',
+'february' => 'февраль (шаҡай)',
+'march' => 'март (буранай)',
+'april' => 'апрель (алағарай)',
+'may_long' => 'май (һабанай)',
+'june' => 'июнь (һөтай)',
+'july' => 'июль (майай)',
+'august' => 'август (урағай)',
+'september' => 'сентябрь (һарысай)',
+'october' => 'октябрь (ҡарасай)',
+'november' => 'ноябрь (ҡырпағай)',
+'december' => 'декабрь (аҡъюлай)',
+'january-gen' => 'ғинуар (һыуығай)',
+'february-gen' => 'февраль (шаҡай)',
'march-gen' => 'март',
'april-gen' => 'апрель',
'may-gen' => 'май',
'august-gen' => 'август',
'september-gen' => 'сентябрь',
'october-gen' => 'октябрь',
-'november-gen' => 'ноябрь',
-'december-gen' => 'декабрь',
+'november-gen' => 'ноябрь (ҡырпағай)',
+'december-gen' => 'декабрь (аҡъюлай)',
'jan' => 'ғин',
'feb' => 'фев',
'mar' => 'мар',
'mediawikipage' => 'Хәбәрҙәр битен ҡарарға',
'templatepage' => 'Ҡалып битен ҡарарға',
'viewhelppage' => 'Ярҙам битен ҡарарға',
-'categorypage' => 'Ð\9aаÑ\82егоÑ\80иÑ\8f битен ҡарарға',
+'categorypage' => 'ТөÑ\80көм битен ҡарарға',
'viewtalkpage' => 'Фекер алышыу битен ҡарарға',
'otherlanguages' => 'Башҡа телдәрҙә',
'redirectedfrom' => '($1 битенән йүнәлтелде)',
'ns-specialprotected' => '«{{ns:special}}» исем арауығындағы биттәрҙе үҙгәртеп булмай.',
'titleprotected' => "Был исем менән бит яһау [[User:$1|$1]] тарафынан тыйылған.
Белдерелгән сәбәп: ''$2''.",
-'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибенде.
+'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибендә.
-УÑ\81Ñ\82ановивÑ\88ий Ñ\8dÑ\82оÑ\82 Ñ\80ежим админиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80 оÑ\81Ñ\82авил Ñ\81ледÑ\83Ñ\8eÑ\89ее Ñ\80азÑ\8aÑ\8fÑ\81нение: «''$3''».",
+Ð\91Ñ\8bл Ñ\81иклÓ\99Ò¯Ò\99е индеÑ\80гÓ\99н Ñ\85аким биÑ\80гÓ\99н аңлаÑ\82ма:«''$3''».",
# Virus scanner
'virus-badscanner' => "Көйләү хатаһы: Билдәһеҙ вирустар сканеры: ''$1''",
'prefs-beta' => 'Бета версияһы мөмкинлектәре',
'prefs-datetime' => 'Көн һәм ваҡыт',
'prefs-labs' => 'Һынау өсөн мөмкинлектәр',
+'prefs-user-pages' => 'Ҡатнашыусы бите',
'prefs-personal' => 'Шәхси мәғлүмәттәр',
'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
'prefs-watchlist' => 'Күҙәтеү исемлеге',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунд}}',
-'duration-minutes' => 'минут',
-'duration-hours' => 'сәғәт',
-'duration-days' => 'көн',
+'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|сәғәт|сәғәт}}',
+'duration-days' => '$1 {{PLURAL:$1|көн|көн}}',
'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙналар|аҙна}}',
'duration-years' => '$1 {{PLURAL:$1|йыл|йылдар}}',
'duration-decades' => '$1 {{PLURAL:$1|ун көнлөк|ун көнлөктәр}}',
'node-count-exceeded-warning' => 'Старонка перавысіла дазволеную колькасьць вузлоў',
'expansion-depth-exceeded-category' => 'Старонкі зь перавышанай глыбінёй уключэньня',
'expansion-depth-exceeded-warning' => 'Старонка перавысіла дазволеную глыбіню ўключэньняў',
+'parser-unstrip-loop-warning' => 'Вызначаная незачыненая пятля',
+'parser-unstrip-recursion-limit' => 'Перавышанае абмежаваньне глыбіні рэкурсіі ($1)',
# "Undo" feature
'undo-success' => 'Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.',
<?php
-/** Bosnian (Bosanski)
+/** Bosnian (bosanski)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
'edithelp' => 'Pomoć pri uređivanju stranice',
'edithelppage' => 'Help:Uređivanje',
-'helppage' => 'Help:Sadržaj',
+'helppage' => 'Pomoć:Sadržaj',
'mainpage' => 'Početna strana',
'mainpage-description' => 'Početna strana',
'policy-url' => 'Project:Pravila',
To se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
'edit_form_incomplete' => "'''Neki dijelovi uređivačkog obrasca nisu došli do servera; dvaput provjerite da su vaše izmjene nepromjenjene i pokušajte ponovno.'''",
'editing' => 'Uređujete $1',
+'creating' => 'Pravljenje stranice $1',
'editingsection' => 'Uređujete $1 (dio)',
'editingcomment' => 'Uređujete $1 (nova sekcija)',
'editconflict' => 'Sukobljenje izmjene: $1',
'edit-no-change' => 'Vaša izmjena je ignorirana, jer nije bilo promjena teksta stranice.',
'edit-already-exists' => 'Stranica nije mogla biti kreirana.
Izgleda da već postoji.',
+'defaultmessagetext' => 'Uobičajeni tekst poruke',
# Parser/template warnings
'expensive-parserfunction-warning' => 'Upozorenje: Ova stranica sadrži previše poziva opterećujućih parserskih funkcija.
'parser-template-loop-warning' => 'Otkrivena kružna greška u šablonu: [[$1]]',
'parser-template-recursion-depth-warning' => 'Dubina uključivanja šablona prekoračena ($1)',
'language-converter-depth-warning' => 'Prekoračena granica dubine jezičkog pretvarača ($1)',
+'node-count-exceeded-category' => 'Stranice sa prekoračenim brojem čvorova',
+'node-count-exceeded-warning' => 'Stranice koje imaju prevelik broj čvorova',
+'expansion-depth-exceeded-category' => 'Stranice koje su prekoračile dubinu proširenja',
+'expansion-depth-exceeded-warning' => 'Stranice koje su prekoračile dubinu proširenja',
+'parser-unstrip-loop-warning' => 'Pronađena petlja',
+'parser-unstrip-recursion-limit' => 'Prekoračeno ograničenje rekurzije ($1)',
# "Undo" feature
'undo-success' => 'Izmjena se može vratiti.
'mergelogpagetext' => 'Ispod je spisak nedavnih spajanja historija stranica.',
# Diffs
-'history-title' => 'Historija izmjena stranice "$1"',
+'history-title' => 'Historija revizija "$1"',
+'difference-title' => 'Razlike između revizija od "$1"',
+'difference-title-multipage' => 'Razlika između stranica "$1" i "$2"',
'difference-multipage' => '(Razlika između stranica)',
'lineno' => 'Linija $1:',
'compareselectedversions' => 'Uporedite označene verzije',
'prefs-beta' => 'Beta mogućnosti',
'prefs-datetime' => 'Datum i vrijeme',
'prefs-labs' => 'Eksperimentalne mogućnosti',
+'prefs-user-pages' => 'Korisničke stranice',
'prefs-personal' => 'Korisnički podaci',
'prefs-rc' => 'Podešavanja nedavnih izmjena',
'prefs-watchlist' => 'Moji praćeni članci',
'yourrealname' => 'Vaše pravo ime:',
'yourlanguage' => 'Jezik:',
'yourvariant' => 'Varijanta jezika:',
+'prefs-help-variant' => 'Vaša preferirana varijanta ili pravopis za prikaz sadržaja stranica na ovoj wiki.',
'yournick' => 'Nadimak (za potpise):',
'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
'badsig' => 'Loš sirovi potpis.
'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
-'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
+'userrights-notallowed' => 'Vaš račun nema privilegije da dodaje ili oduzima prava korisnika.',
'userrights-changeable-col' => 'Grupe koje možete mijenjati',
'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
'right-siteadmin' => 'Zaključavanje i otključavanje baze podataka',
'right-override-export-depth' => 'Izvoz stranica uključujući povezane stranice do dubine od 5 linkova',
'right-sendemail' => 'Slanje e-maila drugim korisnicima',
-'right-passwordreset' => 'Poništavanje šifre korisnika ([[Special:PasswordReset|posebna stranica]])',
+'right-passwordreset' => 'Pogledaj e-mailove za obnavljanje šifre',
# User rights log
'rightslog' => 'Zapisnik korisničkih prava',
'action-suppressionlog' => 'vidite ovaj privatni zapis',
'action-block' => 'blokirate uređivanje ovog korisnika',
'action-protect' => 'promijeniti nivo zaštite za ovu stranicu',
+'action-rollback' => 'brzo vraćanje izmjena zadnjeg korisnika koji je uređivao određenu stranicu',
'action-import' => 'uvozite ovu stranicu iz druge wiki',
'action-importupload' => 'uvezete ovu stranicu putem postavljanja datoteke',
'action-patrol' => 'označite izmjene drugih kao patrolirane',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|korisnik|korisnika}} koji pregledaju]',
'rc_categories' => 'Ograniči na kategorije (razdvojene sa "|")',
'rc_categories_any' => 'Sve',
+'rc-change-size-new' => '$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene',
'newsectionsummary' => '/* $1 */ nova sekcija',
'rc-enhanced-expand' => 'Pokaži detalje (neophodna JavaScript)',
'rc-enhanced-hide' => 'Sakrij detalje',
'upload-too-many-redirects' => 'URL sadrži previše preusmjerenja',
'upload-unknown-size' => 'Nepoznata veličina',
'upload-http-error' => 'Desila se HTTP greška: $1',
+'upload-copy-upload-invalid-domain' => 'Kopije postavljenih datoteka nisu dostupne sa ove domene.',
# File backend
+'backend-fail-stream' => 'Ne mogu emitirati datoteku $1.',
'backend-fail-backup' => 'Ne može sigurnosno kopirati datoteku $1.',
'backend-fail-notexists' => 'Datoteka $1 ne postoji.',
+'backend-fail-hashes' => 'Nisam našao datoteku disperzije radi usporedbe.',
+'backend-fail-notsame' => 'Već postoji različita datoteka $1.',
+'backend-fail-invalidpath' => '$1 nije valjana putanja za skladištenje.',
+'backend-fail-delete' => 'Ne može se izbrisati datoteka $1.',
'backend-fail-alreadyexists' => 'Datoteka $1 već postoji.',
+'backend-fail-store' => 'Ne može se spremiti datoteka $1 na $2.',
'backend-fail-read' => 'Ne mogu čitati datoteku $1.',
'backend-fail-create' => 'Ne mogu napraviti datoteku $1.',
'upload_source_file' => ' (datoteka na Vašem računaru)',
# Special:ListFiles
-'listfiles-summary' => 'Ova specijalna stranica prikazuje sve postavljene datoteke.
-Uobičajeno je da posljednja postavljena datoteka bude prikazana na vrhu spiska.
-Klikom na zaglavlje kolone možete promjeniti način sortiranja.',
+'listfiles-summary' => 'Ova posebna stranica prikazuje sve postavljene datoteke.
+Kada je filtrirana od strane korisnika, prikazane su samo datoteke ako je korisnik postavio posljednju verziju te datoteke.',
'listfiles_search_for' => 'Traži medije po imenu:',
'imgfile' => 'datoteka',
'listfiles' => 'Spisak slika',
'statistics-users-active-desc' => 'Korisnici koju su izvršili akciju u toku {{PLURAL:$1|zadnjeg dana|zadnja $1 dana|zadnjih $1 dana}}',
'statistics-mostpopular' => 'Najviše pregledane stranice',
-'disambiguations' => 'Stranice za čvor članke',
+'disambiguations' => 'Stranice koje vode na čvor članke',
'disambiguationspage' => '{{ns:template}}:Čvor',
'disambiguations-text' => "Slijedeće stranice su povezane sa '''čvor stranicom'''.
Po pravilu, one se trebaju povezati sa konkretnim člankom.<br />
'booksources-invalid-isbn' => 'Navedeni ISBN broj nije validan; molimo da provjerite da li je došlo do greške pri kopiranju iz prvobitnog izvora.',
# Special:Log
-'specialloguserlabel' => 'Korisnik:',
+'specialloguserlabel' => 'Izvršilac:',
'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
'log' => 'Protokoli',
'all-logs-page' => 'Svi javni registri',
'sp-deletedcontributions-contribs' => 'doprinosi',
# Special:LinkSearch
-'linksearch' => 'Vanjski linkovi',
+'linksearch' => 'Pretraga vanjskih linkova',
'linksearch-pat' => 'Šema traženja:',
'linksearch-ns' => 'Imenski prostor:',
'linksearch-ok' => 'Traži',
-'linksearch-text' => 'Općeniti izrazi poput "*.wikipedia.org" se mogu koristiti.<br />
-Podržani protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Mogu se koristiti općeniti izrazi poput "*.wikipedia.org"
+Potrebna je najmanje osnovna domena, naprimjer "*.org."<br />
+Podržani protokoli: <tt>$1</tt> (ne dodavajte bilo koji od ovih u vašu pretragu).',
'linksearch-line' => '$1 je povezan od $2',
'linksearch-error' => 'Džokeri se mogu pojavljivati samo na početku naziva servera.',
'revdelete-restricted' => 'ئەو سنووری بەرگریانەی خستراوەتە سەر بەڕێوبەران',
'revdelete-unrestricted' => 'ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران',
'logentry-move-move' => '$1 پەڕەی $3ی گواستەوە بۆ $4',
+'logentry-move-move-noredirect' => '$1 پەڕەی $3 گواستەوە بۆ $4 بێ بەجێھشتنی ڕەوانەکردنەوەیەک',
+'logentry-move-move_redir-noredirect' => '$1 پەڕەی $3 گواستەوە بۆ $4 لە جێگەی ڕەوانەکەرێک بە بێ بەجێھشتنی ڕەوانەکردنەوەیەک',
'logentry-newusers-newusers' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد',
'logentry-newusers-create' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد',
'logentry-newusers-create2' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد $3',
'search-result-size' => '$1 ({{PLURAL:$2|et ord|$2 ord}})',
'search-result-category-size' => '{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})',
'search-result-score' => 'Relevans: $1%',
-'search-redirect' => '(omdiriger $1)',
-'search-section' => '(sektion $1)',
+'search-redirect' => '(omdirigering $1)',
+'search-section' => '(afsnit $1)',
'search-suggest' => 'Mente du: $1',
'search-interwiki-caption' => 'Søsterprojekter',
'search-interwiki-default' => '{{PLURAL:$1|et resultat|$1 resultater}}:',
'tooltip-ca-move' => 'Flyt denne side',
'tooltip-ca-watch' => 'Sæt denne side på din overvågningsliste',
'tooltip-ca-unwatch' => 'Fjern denne side fra din overvågningsliste',
-'tooltip-search' => 'Søg på denne wiki',
+'tooltip-search' => 'Søg på {{SITENAME}}',
'tooltip-search-go' => 'Vis en side med præcis dette navn, hvis den findes',
'tooltip-search-fulltext' => 'Søg efter sider der indeholder denne tekst',
'tooltip-p-logo' => 'Forsiden',
'importuploaderrortemp' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Ein temporäres Verzeichnis fehlt.',
'import-parse-failure' => 'Fehler beim XML-Import:',
'import-noarticle' => 'Es wurde keine zu importierende Seite angegeben!',
-'import-nonewrevisions' => 'Es sind keine neuen Versionen zum Import vorhanden, alle Versionen wurden bereits früher importiert.',
+'import-nonewrevisions' => 'Alle Versionen wurden bereits zu einem früheren Zeitpunkt importiert.',
'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5',
'import-upload' => 'XML-Daten importieren',
'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuche es erneut.',
'spamprotectionmatch' => "'''Der folgende Text wurde vom Spamfilter gefunden: ''$1'''''",
'spambot_username' => 'MediaWiki-Spam-Säuberung',
'spam_reverting' => 'Letzte Version ohne Links zu $1 wiederhergestellt.',
-'spam_blanking' => 'Alle Versionen enthielten Links zu $1, bereinigt.',
+'spam_blanking' => 'Alle Versionen mit einem Link zu $1 wurden bereinigt.',
+'spam_deleting' => 'Alle Versionen mit einem Link zu $1 wurden gelöscht.',
# Info page
'pageinfo-title' => 'Informationen zu „$1“',
'Allpages' => array( 'PeleyPero' ),
'Ancientpages' => array( 'PeleyVereni' ),
'Badtitle' => array( 'SernameyoXırab' ),
- 'Blankpage' => array( 'VengPela', 'PelaVeng' ),
+ 'Blankpage' => array( 'PelaVeng', 'VengPela' ),
'Block' => array( 'Bloke', 'BlokeIP', 'BlokeKarber' ),
'Blockme' => array( 'BlokeMe' ),
'Booksources' => array( 'KıtabeÇıme' ),
'Listgrouprights' => array( 'ListeyêHeqêGruban', 'HeqêGrubdeKarberan' ),
'Listredirects' => array( 'ListeyêHetanayışi' ),
'Listusers' => array( 'ListeyêKarberan', 'KarberaListeke' ),
+ 'Lockdb' => array( 'DBKilitke' ),
'Log' => array( 'Qeyd', 'Qeydi' ),
- 'Longpages' => array( 'PeleDergi' ),
+ 'Lonelypages' => array( 'PeleyêBêkesi' ),
+ 'Longpages' => array( 'PeleyeDergi' ),
+ 'MergeHistory' => array( 'RavêrdaPêtewrke' ),
'MIMEsearch' => array( 'NIMECıgeyrayış' ),
+ 'Mostcategories' => array( 'TewrvêşiKategoriyıni' ),
+ 'Mostimages' => array( 'DosyeyêkeCırêvêşiGreDeyayo' ),
+ 'Mostlinked' => array( 'PeleyêkeCırêvêşiGreDeyayo' ),
+ 'Mostlinkedcategories' => array( 'KategoriyêkeCırêvêşiGreDeyayo' ),
+ 'Mostlinkedtemplates' => array( 'ŞablonêkeCırêvêşiGreDeyayo' ),
+ 'Mostrevisions' => array( 'TewrvêşiRevizyon' ),
'Movepage' => array( 'PelaAhuln' ),
'Mycontributions' => array( 'İştırakeMe' ),
'Mypage' => array( 'PelaMe' ),
'Mytalk' => array( 'PersiyeME' ),
'Myuploads' => array( 'BarkerdışeMe' ),
+ 'Newimages' => array( 'DosyeyêNewey', 'ResimêNewey' ),
'Newpages' => array( 'PeleyeNewey' ),
'PasswordReset' => array( 'ParolaReset' ),
+ 'PermanentLink' => array( 'DaimiGre' ),
+ 'Popularpages' => array( 'PeleyêPopuleri' ),
+ 'Preferences' => array( 'Tercihi' ),
'Prefixindex' => array( 'SerVerole' ),
- 'Recentchanges' => array( 'VurnayışePeyeni' ),
+ 'Protectedpages' => array( 'PeleyêkeStaryayê' ),
+ 'Protectedtitles' => array( 'SernameyêkeStaryayê' ),
+ 'Randompage' => array( 'Raştamê', 'PelayakeRaştamê' ),
+ 'Randomredirect' => array( 'HetenayışoRaştmae' ),
+ 'Recentchanges' => array( 'VurnayışêPeyêni' ),
+ 'Recentchangeslinked' => array( 'GreyêVurnayışêPeyêni' ),
+ 'Revisiondelete' => array( 'RevizyoniBesterne' ),
+ 'RevisionMove' => array( 'RevizyoniAhulne' ),
'Search' => array( 'Cıgeyre' ),
+ 'Shortpages' => array( 'PeleyêKılmi' ),
'Specialpages' => array( 'PeleyXısusi' ),
'Statistics' => array( 'İstatistiki' ),
'Tags' => array( 'Etiketi' ),
+ 'Unblock' => array( 'Bloqihewad' ),
+ 'Uncategorizedcategories' => array( 'KategoriyêkeKategorinêbiyê' ),
+ 'Uncategorizedimages' => array( 'DosyeyêkeKategorinêbiyê' ),
+ 'Uncategorizedpages' => array( 'PeleyêkeKategorinêbiyê' ),
+ 'Uncategorizedtemplates' => array( 'ŞablonêkeKategorinêbiyê' ),
+ 'Undelete' => array( 'Peyserbiya' ),
+ 'Unlockdb' => array( 'DBKlitiake' ),
+ 'Unusedcategories' => array( 'KategoriyêkeNêkaryayê' ),
+ 'Unusedimages' => array( 'DosyeyêkeNêkaryayê' ),
+ 'Unusedtemplates' => array( 'ŞablonêkeNêkaryayê' ),
+ 'Unwatchedpages' => array( 'PeleyêkeNêweyneyênê' ),
'Upload' => array( 'Barke' ),
+ 'UploadStash' => array( 'BarkerdışêNımtey' ),
+ 'Userlogin' => array( 'KarberDekewtış' ),
+ 'Userlogout' => array( 'KarberVıcyayış' ),
+ 'Userrights' => array( 'HeqêKarberan', 'SysopKerdış', 'BotKerdış' ),
'Version' => array( 'Versiyon' ),
+ 'Wantedcategories' => array( 'KategoriyêkeWazênê' ),
+ 'Wantedfiles' => array( 'DosyeyêkeWazênê' ),
+ 'Wantedpages' => array( 'PeleyêkeWazênê' ),
+ 'Wantedtemplates' => array( 'ŞablonyêkeWazênê' ),
'Watchlist' => array( 'Listeyseyri' ),
+ 'Whatlinkshere' => array( 'PelarêGre' ),
+ 'Withoutinterwiki' => array( 'Bêİnterwiki' ),
);
$magicWords = array(
'linkprefix' => "'''MediaWiki niya ro.'''",
'about' => 'Heqa',
-'article' => 'Pela tedeesteyan',
+'article' => 'Wesiqe',
'newwindow' => '(zerrey pençereyê dê newey de beno a)',
'cancel' => 'Bıterkne',
'moredotdotdot' => 'Vêşêri...',
'tooltip-pt-login' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
'tooltip-pt-logout' => 'Bıvciyê',
-'tooltip-ca-talk' => 'Pela tedeesteyan sero werênayış',
+'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
'tooltip-ca-edit' => 'Tı şenay na pele bıvurnê.
Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
'tooltip-ca-addsection' => 'Yew qısımo newe ake',
'tooltip-t-specialpages' => 'Lista pelanê xasanê pêroinan',
'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
-'tooltip-ca-nstab-main' => 'Pela tedeesteyan bıvêne',
+'tooltip-ca-nstab-main' => 'Pela zerreki bımocne',
'tooltip-ca-nstab-user' => 'Pela karberi bıvin',
'tooltip-ca-nstab-media' => 'Pele Mediya bivinên',
'tooltip-ca-nstab-special' => 'Na yew pelê da xususiya, şıma nêşenê nae bıvurnê',
'tooltip-ca-nstab-project' => 'pelayê kılit-kerdeyi bıvin',
-'tooltip-ca-nstab-image' => 'Pela tedeesteyan bıvêne',
+'tooltip-ca-nstab-image' => 'Pelay dosya bımocne',
'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bivinên',
'tooltip-ca-nstab-template' => 'Şabloni bıvêne',
'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
'spambot_username' => 'MediaWiki spam cleanup',
'spam_reverting' => 'Reverting to last revision not containing links to $1',
'spam_blanking' => 'All revisions contained links to $1, blanking',
+'spam_deleting' => 'All revisions contained links to $1, deleting',
# Info page
'pageinfo-title' => 'Information for "$1"',
'spambot_username' => 'Limpieza de spam de MediaWiki',
'spam_reverting' => 'Revirtiendo a la última versión que no contenga enlaces a $1',
'spam_blanking' => 'Todas las revisiones contienen enlaces a $1, blanqueando',
+'spam_deleting' => 'Todas las revisiones que contienen enlaces a $1, en proceso de eliminación',
# Info page
'pageinfo-title' => 'Información para «$1»',
'spambot_username' => 'Nettoyage de pourriels par MediaWiki',
'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
+'spam_deleting' => 'Toutes les versions contenant des liens vers $1, en suppression',
# Info page
'pageinfo-title' => 'Informations pour « $1 »',
'importunknownsource' => 'Fonte de importación descoñecida',
'importcantopen' => 'Non se pode abrir o ficheiro importado',
'importbadinterwiki' => 'Ligazón interwiki incorrecta',
-'importnotext' => 'Texto baleiro ou inexistente',
+'importnotext' => 'Baleiro ou sen texto',
'importsuccess' => 'A importación rematou!',
'importhistoryconflict' => 'Existe un conflito no historial de revisións (por ter importado esta páxina antes)',
'importnosources' => 'Non se defininiu ningunha fonte de importación transwiki e os envíos directos dos historiais están desactivados.',
'importuploaderrortemp' => 'Fallou o envío do ficheiro de importación. Falta un cartafol temporal.',
'import-parse-failure' => 'Fallo de análise da importación de XML',
'import-noarticle' => 'Ningunha páxina para importar!',
-'import-nonewrevisions' => 'Todas as revisións son previamente importadas.',
-'xml-error-string' => '$1 na liña $2, col $3 (byte $4): $5',
+'import-nonewrevisions' => 'Todas as revisións foron importadas previamente.',
+'xml-error-string' => '$1 na liña $2, columna $3 (byte $4): $5',
'import-upload' => 'Cargar datos XML',
'import-token-mismatch' => 'Perdéronse os datos da sesión. Por favor, inténteo de novo.',
'import-invalid-interwiki' => 'Non se pode importar desde o wiki escificado.',
Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está na lista negra.',
'spamprotectionmatch' => 'O seguinte texto foi o que activou o noso filtro de spam: $1',
'spambot_username' => 'Limpeza de spam de MediaWiki',
-'spam_reverting' => 'Revertida á última edición sen ligazóns a $1',
+'spam_reverting' => 'Revertida á última edición sen ligazóns a "$1"',
'spam_blanking' => 'Limpáronse todas as revisións con ligazóns a "$1"',
+'spam_deleting' => 'Borráronse todas as revisións con ligazóns a "$1"',
# Info page
'pageinfo-title' => 'Información sobre "$1"',
NS_CATEGORY_TALK => 'Ñemohenda_myangekõi',
);
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-underline' => 'Haiguy joajuha',
'spamprotectionmatch' => 'Le sequente texto es lo que activava nostre filtro antispam: $1',
'spambot_username' => 'Nettamento de spam in MediaWiki',
'spam_reverting' => 'Revertite al ultime version que non contine ligamines a $1',
-'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina ha essite vacuate.',
+'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina es vacuate.',
+'spam_deleting' => 'Tote le versiones contineva ligamines a $1. Le pagina es delite.',
# Info page
'pageinfo-title' => 'Informationes pro "$1"',
'spambot_username' => 'MediaWiki - sistema di rimozione spam',
'spam_reverting' => "Ripristinata l'ultima versione priva di collegamenti a $1",
'spam_blanking' => 'Pagina svuotata, tutte le versioni contenevano collegamenti a $1',
+'spam_deleting' => 'Pagina cancellata, tutte le versioni contenevano collegamenti a $1',
# Info page
'pageinfo-title' => 'Informazioni per "$1"',
MediaWiki è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public License per maggiori dettagli.
-Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [//www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
+Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [http://www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
'version-software' => 'Software installato',
'version-software-product' => 'Prodotto',
'version-software-version' => 'Versione',
'category_header' => 'カテゴリ「$1」にあるページ',
'subcategories' => '下位カテゴリ',
'category-media-header' => 'カテゴリ「$1」にあるメディア',
-'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\81¨ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cã\81²ã\81¨ã\81¤もありません。''",
+'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\82\84ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cä½\95もありません。''",
'hidden-categories' => '{{PLURAL:$1|隠しカテゴリ}}',
'hidden-category-category' => '隠しカテゴリ',
-'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の{{PLURAL:$1|下位カテゴリ| $1 下位カテゴリ}}を表示しています。}}',
+'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の {{PLURAL:$1|$1 下位カテゴリ}}を表示しています。}}',
'category-subcat-count-limited' => 'このカテゴリには以下の{{PLURAL:$1|下位カテゴリ| $1 下位カテゴリ}}が含まれています。',
'category-article-count' => '{{PLURAL:$2|このカテゴリには以下のページのみが含まれています。|このカテゴリには $2 ページが含まれており、そのうち以下の {{PLURAL:$1|$1 ページ}}を表示しています。}}',
'category-article-count-limited' => '現在のカテゴリには以下の{{PLURAL:$1|ページ| $1 ページ}}が含まれています。',
'delete' => '削除',
'deletethispage' => 'このページを削除',
'undelete_short' => '{{PLURAL:$1|$1 版}}を復帰',
-'viewdeleted_short' => '削除された$1件の編集を閲覧',
+'viewdeleted_short' => '{{PLURAL:$1|削除された $1 件の編集}}を閲覧',
'protect' => '保護',
'protect_change' => '設定変更',
'protectthispage' => 'このページを保護',
'collapsible-expand' => '展開する',
'thisisdeleted' => '$1を閲覧または復帰しますか?',
'viewdeleted' => '$1を閲覧しますか?',
-'restorelink' => '削除された$1編集',
+'restorelink' => '{{PLURAL:$1|削除された $1 編集}}',
'feedlinks' => 'フィード:',
-'feed-invalid' => 'フィード形式の指定が間違っています。',
-'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81«å¯¾å¿\9cã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'feed-invalid' => 'フィード形式の指定が正しくありません。',
+'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81¯å\88©ç\94¨ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
'site-rss-feed' => '$1のRSSフィード',
'site-atom-feed' => '$1のAtomフィード',
'page-rss-feed' => '「$1」のRSSフィード',
'databaseerror' => 'データベース エラー',
'dberrortext' => 'データベースクエリーの構文エラーが発生しました。
ソフトウェアにバグがある可能性があります。
-最後に実行を試みたクエリーは次の通りです:
-関数「<tt>$2</tt>」内
-<blockquote><tt>$1</tt></blockquote>。
-ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8d',
+最後に実行を試みたクエリー:
+<blockquote><tt>$1</tt></blockquote>
+(関数「<tt>$2</tt>」内)。
+ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82',
'dberrortextcl' => 'データベースクエリーの構文エラーが発生しました。
-最後に実行を試みたクエリーは以下の通りです:
-関数「$2」内から
-"$1"
-ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8d',
+最後に実行を試みたクエリー:
+「$1」
+(関数「$2」内)。
+ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9f',
'laggedslavemode' => "'''警告:'''ページに最新の編集が反映されていない可能性があります。",
'readonly' => 'データベースがロックされています',
'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
'filedeleteerror' => 'ファイル「$1」を削除できませんでした。',
'directorycreateerror' => 'ディレクトリー「$1」を作成できませんでした。',
'filenotfound' => 'ファイル「$1」が見つかりませんでした。',
-'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå\98å\9c¨ã\81\97ã\81¾ã\81\99',
+'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81«å¤±æ\95\97ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82',
'unexpected' => '予期しない値「$1」=「$2」です。',
-'formerror' => 'エラー:フォームを送信できませんでした',
+'formerror' => 'エラー:フォームを送信できませんでした。',
'badarticleerror' => 'このページでは要求された操作を行えません。',
'cannotdelete' => 'ページまたはファイル「$1」を削除できませんでした。
他の人が既に削除した可能性があります。',
'mailerror' => 'メールの送信中にエラーが発生しました:$1',
'acct_creation_throttle_hit' => 'あなたと同じ IP アドレスでこのウィキに訪れた人が、最近 24 時間で {{PLURAL:$1|$1 アカウント}}を作成しており、これはこの期間で作成が許可されている最大数です。
そのため、現在この IP アドレスではアカウントをこれ以上作成できません。',
-'emailauthenticated' => 'メールアドレスは$2 $3に認証されています。',
+'emailauthenticated' => 'メールアドレスは$2 $3に認証済みです。',
'emailnotauthenticated' => 'メールアドレスが認証されていません。
認証されるまで、以下のいかなる機能でもメールは送信されません。',
'noemailprefs' => 'これらの機能を有効にするためには個人設定でメールアドレスを登録する必要があります。',
'suspicious-userlogout' => '壊れたブラウザーまたはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
# E-mail sending
-'php-mail-error-unknown' => 'PHPのmail()関数で不明なエラー',
+'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
'user-mail-no-addy' => 'メールアドレスなしでメールを送信しようとしました。',
# Change password dialog
'passwordreset-text' => 'このフォームに入力すると、アカウント詳細のリマインダーをメールでお送りします。',
'passwordreset-legend' => 'パスワードの再設定',
'passwordreset-disabled' => 'パスワードの再設定は、このウィキでは無効になっています。',
-'passwordreset-pretext' => '{{PLURAL:$1||以ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\86ã\81¡ã\81® 1 つを入力してください}}',
+'passwordreset-pretext' => '{{PLURAL:$1||ä¸\8bè¨\98ã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\84ã\81\9aã\82\8cã\81\8b 1 つを入力してください}}',
'passwordreset-username' => '利用者名:',
'passwordreset-domain' => 'ドメイン:',
'passwordreset-capture' => '送信されるメールの内容を表示しますか?',
このページの作成/編集が適切かどうか確認してください。',
'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
-参考のために最新のブロック記録を以下に表示します。',
+参考のために最新のブロック記録を以下に表示します:',
'clearyourcache' => "'''注意:''' 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
* '''Firefox / Safari:''' ''Shift'' を押しながら ''再読み込み'' をクリックする、もしくは ''Ctrl-F5'' か ''Ctrl-R'' を押してください (Macでは ''⌘-R'' )
* '''Google Chrome:''' ''Ctrl-Shift-R'' を押してください (Macでは ''⌘-Shift-R'' )
参考として以下に最後の記録を表示します:",
'semiprotectedpagewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが編集できます。
参考として以下に最後の記録を表示します:",
-'cascadeprotectedwarning' => "'''警告:'''このページはカスケード保護されている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、管理者権限を持つ利用者のみが編集できるように保護されています。",
+'cascadeprotectedwarning' => "'''警告:'''このページはカスケード保護されている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、管理者権限を持つ利用者のみが編集できるように保護されています:",
'titleprotectedwarning' => "'''警告:このページは保護されているため、作成には[[Special:ListGroupRights|特定の権限]]が必要です。'''
参考として以下に最後の記録を表示します:",
'templatesused' => 'このページで使用されている{{PLURAL:$1|テンプレート}}:',
'templatesusedsection' => 'この節で使用されている{{PLURAL:$1|テンプレート}}:',
'template-protected' => '(保護)',
'template-semiprotected' => '(半保護)',
-'hiddencategories' => 'このページは$1個の隠しカテゴリに属しています:',
+'hiddencategories' => 'このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:',
'edittools' => '<!-- ここに書いたテキストは編集及びアップロードのフォームの下に表示されます。 -->',
'nocreatetitle' => 'ページの作成が制限されています',
'nocreatetext' => '{{SITENAME}}ではページの新規作成を制限しています。
# Parser/template warnings
'expensive-parserfunction-warning' => "'''警告:'''このページでの高負荷なパーサー関数の呼び出し回数が多過ぎます。
-{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\81¯ $2 å\9b\9e}}以ä¸\8bにしてください({{PLURAL:$1|現在は $1 回}})。",
+{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\82\92 $2 å\9b\9e}}æ\9cªæº\80にしてください({{PLURAL:$1|現在は $1 回}})。",
'expensive-parserfunction-category' => '高負荷な構文解析関数の呼び出しが多過ぎるページ',
'post-expand-template-inclusion-warning' => "'''警告:'''テンプレートの読み込みサイズが大き過ぎます。
いくつかのテンプレートは読み込まれません。",
# "Undo" feature
'undo-success' => 'この編集を取り消せます。
-ä¸\8bè¨\98ã\81®å·®å\88\86ã\82\92確èª\8dã\81\97ã\80\81æ\9c¬å½\93ã\81«å\8f\96ã\82\8aæ¶\88ã\81\99ã\81¹ã\81\8dã\81 ã\81¨ç¢ºèª\8dã\81\97ã\81¦ã\81\8bã\82\89ã\80\81変更を保存して取り消しを完了してください。',
+ä¸\8bè¨\98ã\81®å·®å\88\86ã\82\92確èª\8dã\81\97ã\81¦ã\80\81æ\9c¬å½\93ã\81«å\8f\96ã\82\8aæ¶\88ã\81\97ã\81¦ã\81\84ã\81\84ã\81\8bæ¤\9c証ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\82\88ã\82\8dã\81\97ã\81\91ã\82\8cã\81°変更を保存して取り消しを完了してください。',
'undo-failure' => '中間の版での編集と競合したため、取り消せませんでした。',
'undo-norev' => '取り消そうとした編集が存在しないか削除済みのため取り消せませんでした。',
'undo-summary' => '[[Special:Contributions/$2|$2]]([[User talk:$2|トーク]])による第$1版を取り消し',
'cantcreateaccounttitle' => 'アカウントを作成できません',
'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
-$3が示した理由は ''$2'' です。",
+$3が示した理由:''$2''",
# History pages
'viewpagelogs' => 'このページに関する記録を閲覧',
'history-show-deleted' => '削除済みのみ',
'histfirst' => '最古',
'histlast' => '最新',
-'historysize' => '$1バイト',
+'historysize' => '({{PLURAL:$1|$1バイト}})',
'historyempty' => '(空)',
# Revision feed
'revisiondelete' => '版の削除と復帰',
'revdelete-nooldid-title' => '不正な対象版',
'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を非表示しようとしています。',
-'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cていません',
+'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\82\92æ\8c\87å®\9aã\81\97ていません',
'revdelete-nologtype-text' => 'この操作を実行する記録の種類を指定していません。',
'revdelete-nologid-title' => '不正な記録項目',
'revdelete-nologid-text' => 'この操作の対象となる記録の項目を指定していないか、あるいは指定した項目が存在しません。',
アクセス権限がありません。',
'revdelete-modify-missing' => 'ID$1の項目の変更に失敗しました:データベースに見当たりません!',
'revdelete-no-change' => "'''警告:''' $1$2の項目には要求された閲覧レベルが既に設定されています。",
-'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の利用者が変更したようです。',
+'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の誰かが変更したようです。
+記録を確認してください。',
'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿できません。',
'revdelete-reason-dropdown' => '*よくある削除理由
** 著作権侵害
'compareselectedversions' => '選択した版同士を比較',
'showhideselectedversions' => '選択した版を表示もしくは非表示',
'editundo' => '取り消し',
-'diff-multi' => '($2人の利用者による、間の$1版が非表示)',
-'diff-multi-manyusers' => '($2人以上の利用者による、間の$1版が非表示)',
+'diff-multi' => '({{PLURAL:$2|$2人の利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
+'diff-multi-manyusers' => '({{PLURAL:$2|$2人を超える利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
# Search results
'searchresults' => '検索結果',
'notextmatches' => 'どのページ本文とも一致しませんでした',
'prevn' => '前の$1件',
'nextn' => '次の$1件',
-'prevn-title' => '前の$1結果',
-'nextn-title' => '次の$1結果',
-'shown-title' => 'ページあたり$1件の結果を表示',
+'prevn-title' => '前の{{PLURAL:$1|$1結果}}',
+'nextn-title' => '次の{{PLURAL:$1|$1結果}}',
+'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
'viewprevnext' => '($1{{int:pipe-separator}}$2)($3)を表示',
'searchmenu-legend' => '検索オプション',
'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
-'searchmenu-new' => "'''このウィキでページ「[[:$1|$1]]」を新規作成する'''",
+'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
'searchhelp-url' => 'Help:目次',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
'searchprofile-articles' => '本文ページ',
'searchprofile-images-tooltip' => 'ファイルを検索',
'searchprofile-everything-tooltip' => '全本文ページ(トークページ含む)を検索',
'searchprofile-advanced-tooltip' => '特定の名前空間内を検索',
-'search-result-size' => '$1($2単語)',
-'search-result-category-size' => '$1件($2下位カテゴリ、$3ファイル)',
+'search-result-size' => '$1({{PLURAL:$2|$2単語}})',
+'search-result-category-size' => '{{PLURAL:$1|$1件}}({{PLURAL:$2|$2下位カテゴリ}}、{{PLURAL:$3|$3ファイル}})',
'search-result-score' => '関連度:$1%',
'search-redirect' => '($1からのリダイレクト)',
'search-section' => '($1の節)',
'searcheverything-enable' => 'すべての名前空間を検索',
'searchrelated' => '関連',
'searchall' => 'すべて',
-'showingresults' => "'''$2'''件目からの{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
-'showingresultsnum' => "'''$2'''件目からの{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
+'showingresults' => "'''$2'''件目以降の{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
+'showingresultsnum' => "'''$2'''件目以降の{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
'showingresultsheader' => "「'''$4'''」に対する{{PLURAL:$5|'''$3'''件中の'''$1'''件の結果|'''$3'''件中の'''$1'''件目から'''$2'''件目の結果}}",
'nonefound' => "'''注意''':既定では一部の名前空間のみを検索します。
''all:''を前に付けると、すべて(トークページやテンプレートなどを含む)を対象にできます。検索する名前空間を前に付けることもできます。",
'yourrealname' => '本名:',
'yourlanguage' => '使用言語:',
'yourvariant' => 'コンテンツ言語変種:',
-'prefs-help-variant' => 'ã\81\82ã\81ªã\81\9fã\81\8cã\81\93ã\81®ã\82¦ã\82£ã\82ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ã\81\84ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ£æ\9b¸æ³\95',
+'prefs-help-variant' => 'ã\81\93ã\81®ã\82¦ã\82£ã\82ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ç\94¨ã\81\97ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ£æ\9b¸æ³\95ã\80\82',
'yournick' => '新しい署名:',
'prefs-help-signature' => 'トークページ上での発言には「<nowiki>~~~~</nowiki>」と付けて署名すべきです。これは自分の署名に時刻印を付けたものに変換されます。',
'badsig' => '署名用のソースが正しくありません。
HTMLタグを見直してください。',
-'badsiglength' => '署名が長すぎます。$1文字以下でなければなりません。',
+'badsiglength' => '署名が長すぎます。
+$1 {{PLURAL:$1|文字}}以下である必要があります。',
'yourgender' => '性別:',
'gender-unknown' => '未指定',
'gender-male' => '男',
'action-sendemail' => 'メールを送信',
# Recent changes
-'nchanges' => '$1回の変更',
+'nchanges' => '$1{{PLURAL:$1|回の変更}}',
'recentchanges' => '最近の更新',
'recentchanges-legend' => '最近の更新のオプション',
-'recentchanges-summary' => 'このページで最近の更新を確認できます。',
+'recentchanges-summary' => 'このページでは、このウィキでの最近の更新を確認できます。',
'recentchanges-feed-description' => 'このフィードでこのウィキの最近の更新を追跡できます。',
'recentchanges-label-newpage' => 'この編集で新しいページが作成されました',
'recentchanges-label-minor' => 'これは細部の編集です',
'newpageletter' => '新',
'boteditletter' => 'ボ',
'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 人の利用者がウォッチしています]',
+'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 人の利用者}}がウォッチしています]',
'rc_categories' => 'カテゴリを限定(「|」で区切る)',
'rc_categories_any' => 'すべて',
-'rc-change-size-new' => '変更後は$1バイト',
+'rc-change-size-new' => '変更後は $1 {{PLURAL:$1|バイト}}',
'newsectionsummary' => '/* $1 */ 新しい節',
'rc-enhanced-expand' => '詳細を表示(JavaScript が必要)',
'rc-enhanced-hide' => '詳細を非表示',
'overwrite' => '既存のファイルへの上書きは許可されていません。',
'unknown-error' => '不明なエラーが発生しました。',
'tmp-create-error' => '一時ファイルを作成できませんでした。',
-'tmp-write-error' => '一時ファイルへの書き込みエラー',
-'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\81¯$1ã\83\90ã\82¤ã\83\88ã\82\88ã\82\8a大ã\81\8dã\81\8fã\81\97ã\81ªã\81\84ã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cã\81¦ã\81\84ます。
-このファイルは$2バイトです。',
+'tmp-write-error' => '一時ファイルへの書き込みエラーです。',
+'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\82\92 $1 ã\83\90ã\82¤ã\83\88以ä¸\8bã\81«ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。
+このファイルは $2 バイトです。',
'largefileserver' => 'このファイルは、サーバー設定で許されている最大サイズより大きいです。',
'emptyfile' => 'アップロードしたファイルは内容が空のようです。
ファイル名の指定が間違っている可能性があります。
'uploadwarning' => 'アップロード警告',
'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
'savefile' => 'ファイルを保存',
-'uploadedimage' => '「[[$1]]」をアップロードしました。',
+'uploadedimage' => '「[[$1]]」をアップロードしました',
'overwroteimage' => '「[[$1]]」の新しい版をアップロードしました',
'uploaddisabled' => 'アップロード機能は無効になっています。',
'copyuploaddisabled' => 'URLからのアップロードは無効になっています。',
'backend-fail-closetemp' => '一時ファイルを閉じることができませんでした。',
'backend-fail-read' => 'ファイル $1 を読み込めませんでした。',
'backend-fail-create' => 'ファイル $1 に書き込めませんでした。',
-'backend-fail-maxsize' => '{{PLURAL:$2|$2 バイト}}よりも大きいため、ファイル「$1」に書き込めませんでした。',
-'backend-fail-readonly' => 'ストレージバックエンド「$1」は現在読み取り専用です。理由:「$2」',
-'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81«ã\81\8aã\81\84ã\81¦ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99ã\80\82',
-'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\80\8c$1ã\80\8d',
-'backend-fail-internal' => 'ストレージバックエンド「$1」で原因不明のエラーが発生しました。',
+'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル $1 に書き込めませんでした。',
+'backend-fail-readonly' => "ストレージバックエンド「$1」は現在読み取り専用です。理由:「''$2''」",
+'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81§ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99',
+'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\80\8c$1ã\80\8dã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'backend-fail-internal' => 'ストレージバックエンド「$1」内で不明なエラーが発生しました。',
'backend-fail-contenttype' => '「$1」に保存するコンテンツの種類が判断できませんでした。',
'backend-fail-batchsize' => 'ストレージバックエンドは $1 件のファイル{{PLURAL:$1|操作}}のバッチを与えられました; 上限は $2 件の{{PLURAL:$2|操作}}です。',
'filejournal-fail-dbquery' => 'ストレージバックエンド「$1」のジャーナルデータベースを更新できません。',
# Lock manager
-'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\82¢ã\83³ã\83ã\83\83ã\82¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83ã\83\83ã\82¯ã\81¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\83ã\83\83ã\82¯è§£é\99¤ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
'lockmanager-fail-closelock' => '「$1」用のロックファイルを閉じることができませんでした。',
'lockmanager-fail-deletelock' => '「$1」用のロックファイルを削除できませんでした。',
'lockmanager-fail-acquirelock' => '「$1」用のロックを取得できませんでした。',
'img-auth-nopathinfo' => 'PATH_INFO が見つかりません。
サーバーが、この情報を渡すように構成されていません。
CGI ベースであるため、img_auth に対応できない可能性もあります。
-https://www.mediawiki.org/wiki/Manual:Image_Authorization を参照してください。',
+https://www.mediawiki.org/wiki/Manual:Image_Authorization をご覧ください。',
'img-auth-notindir' => '要求されたパスは、設定済みのアップロード用ディレクトリー内にありません。',
'img-auth-badtitle' => '「$1」からは有効なページ名を構築できません。',
'img-auth-nologinnWL' => 'ログインしておらず、さらに「$1」はホワイトリストに入っていません。',
'nolinkstoimage' => 'このファイルへリンクしているページはありません。',
'morelinkstoimage' => 'このファイルへの[[Special:WhatLinksHere/$1|リンク元を更に]]を表示する。',
'linkstoimage-redirect' => '$1 (リダイレクト) $2',
-'duplicatesoffile' => '以下の$1ファイルが、このファイルと内容が同一です([[Special:FileDuplicateSearch/$2|詳細]]):',
+'duplicatesoffile' => '以下の $1 {{PLURAL:$1|ファイル}}が、このファイルと重複しています([[Special:FileDuplicateSearch/$2|詳細]]):',
'sharedupload' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。',
'sharedupload-desc-there' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。
詳細は[$2 ファイル解説ページ]を参照してください。',
'filerevert-comment' => '理由:',
'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
'notargettext' => 'この機能の実行対象となるページまたは利用者が指定されていません。',
'nopagetitle' => 'そのようなページはありません',
'nopagetext' => '指定したページは存在しません。',
-'pager-newer-n' => '以後の$1件',
-'pager-older-n' => '以前の$1件',
+'pager-newer-n' => '{{PLURAL:$1|以後の$1件}}',
+'pager-older-n' => '{{PLURAL:$1|以前の$1件}}',
'suppress' => '秘匿する',
'querypage-disabled' => 'パフォーマンスに悪影響を与えるおそれがあるため、この特別ページは無効になっています。',
'watchnologin' => 'ログインしていません',
'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:UserLogin|ログイン]]している必要があります。',
'addwatch' => 'ウォッチリストに追加',
-'addedwatchtext' => "ページ 「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
+'addedwatchtext' => "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
このページと付属のトークページに変更があった際には、ウォッチリストに表示されます。また、ウォッチリストに登録されているページは[[Special:RecentChanges|最近の更新の一覧]]に'''太字'''で表示され、見つけやすくなります。",
'removewatch' => 'ウォッチリストから除去',
'removedwatchtext' => 'ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]から除去しました。',
'notanarticle' => '記事ではありません',
'notvisiblerev' => '別の利用者による最終版は削除されました',
'watchnochange' => 'ウォッチリストに登録しているページで、指定期間内に編集されたものはありません。',
-'watchlist-details' => 'ウォッチリストには$1ページが登録されています(トークページは数えません)。',
+'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています(トークページを除く)。',
'wlheader-enotif' => '* メール通知が有効になっています',
'wlheader-showupdated' => "* 最後に訪問したあとに変更されたページは、'''太字'''で表示されます",
'watchmethod-recent' => '最近の更新内のウォッチされているページを確認中',
'watchmethod-list' => 'ウォッチされているページ内の最近の更新を確認中',
-'watchlistcontains' => 'ウォッチリストには、$1ページが登録されています。',
+'watchlistcontains' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています。',
'iteminvalidname' => '項目「$1」には問題があります、名前が正しくありません。',
'wlnote' => "$3 $4 までの{{PLURAL:$2|'''$2'''時間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
'wlshowlast' => '次の期間で表示:$1時間、$2日間、$3',
** 著作権侵害
** 荒らし',
'delete-edit-reasonlist' => '削除理由を編集',
-'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
このようなページの削除は、{{SITENAME}}の偶発的な問題を避けるため、制限されています。',
-'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
十分に注意してください。',
# Undelete
'undelete' => '削除されたページを表示',
'undeletepage' => '削除されたページの表示と復元',
-'undeletepagetitle' => "'''以下は、[[:$1]]の削除された版です'''。",
+'undeletepagetitle' => "'''以下は、[[:$1|$1]]の削除された版です'''。",
'viewdeletedpage' => '削除されたページを表示',
-'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|削除されたページ群}}は、保存版に残っているため復元できます。
+'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ| $1 件の削除されたページ}}は、保存版に残っているため復元できます。
保存版は定期的に消去される可能性があります。',
'undelete-fieldset-title' => '削除された版の復元',
'undeleteextrahelp' => "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で'''''{{int:undeletebtn}}'''''をクリックしてください。
特定の版を復帰する場合は、復帰する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
-'undeleterevisions' => '$1版が保存されています',
+'undeleterevisions' => '保存版に$1{{PLURAL:$1|版}}あります',
'undeletehistory' => 'ページの復帰を行うと、すべての版が履歴に復帰します。
削除されたあとに同じ名前で新しくページが作成されていた場合、復帰した版はそれに先行する履歴として現れます。',
'undeleterevdel' => '復帰した結果、版指定削除されているページまたはファイルの版が最新となる場合、復帰は実行されません。
'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' => '復帰に失敗しました。
-誰かが、既にこのページを復帰した可能性があります。',
+他の誰かがこのページを既に復帰した可能性があります。',
'undeletedpage' => "'''$1を復元しました。'''
最近の削除と復帰の記録については[[Special:Log/delete|削除記録]]を参照してください。",
'undelete-filename-mismatch' => 'ファイルの時刻印$1の版を復帰できません:ファイル名が一致しません。',
'undelete-bad-store-key' => 'ファイルの時刻印$1の版を復帰できません:削除前にファイルが失われています。',
'undelete-cleanup-error' => '未使用の保存版のファイル「$1」の削除中にエラーが発生しました。',
-'undelete-missing-filearchive' => 'データベースに存在しないため、ID$1を持つファイルの保存版を復元できません。
+'undelete-missing-filearchive' => 'データベースに存在しないため、ID $1を持つファイルの保存版を復元できません。
既に復帰されている可能性があります。',
'undelete-error' => 'ページの復帰エラー',
'undelete-error-short' => 'ファイルの復帰エラー:$1',
# Namespace form on various pages
'namespace' => '名前空間:',
'invert' => '選択したものを除く',
-'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\81¾ã\81\99ã\80\82',
+'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8b',
'namespace_association' => '対応付けられた名前空間',
'tooltip-namespace_association' => '選択した名前空間に関連付けられているトークページまたは対象の名前空間も含めるには、このボックスにチェックを入れる',
'blanknamespace' => '(標準)',
'change-blocklink' => '設定を変更',
'contribslink' => '投稿記録',
'emaillink' => 'メールを送信',
-'autoblocker' => '使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
-$1のブロックの理由は「$2」です。',
+'autoblocker' => "使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
+$1のブロックの理由は「''$2''」です。",
'blocklogpage' => 'ブロック記録',
'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。
参考のため、ブロックの記録を以下に示します:',
'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
-'ipb_cant_unblock' => 'エラー:ブロック ID $1 がありません。
-ブロックが既に解除されている可能性があります。',
+'ipb_cant_unblock' => 'エラー:ブロック ID $1 はありません。ブロックが既に解除されている可能性があります。',
'ipb_blocked_as_range' => 'エラー:IPアドレス$1は直接ブロックされておらず、ブロック解除できませんでした。
ただし、$2の範囲でブロックされており、こちらのブロックは別途解除できます。',
'ip_range_invalid' => '不正なIP範囲です。',
'movepagetext' => "下のフォームを利用すると、ページ名が変更され、その履歴も変更先へ移動します。
古いページは変更先へのリダイレクトページとなります。
変更前のページへのリダイレクトは自動的に修正できます。
-自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。リンクを正しく維持するのはあなたの責任です。
+自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。リンクを正しく維持するのは移動した人の責任です。
移動先が既に存在する場合は、そのページが空またはリダイレクトで、かつ過去の版を持たない場合を除いて移動'''できません'''。つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
'movepage-moved-noredirect' => 'リダイレクトは作成されませんでした。',
'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
別の名前を選択してください。',
-'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません。',
+'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
'talkexists' => "'''ページ自身は無事に移動されましたが、トークページは移動先のページが存在したため移動できませんでした。
手動で統合してください。'''",
'movedto' => '移動先:',
'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。
それをコンピューターに保存した後、こちらへアップロードしてください。',
'importstart' => 'ページを取り込み中...',
-'import-revision-count' => '$1版',
+'import-revision-count' => '$1{{PLURAL:$1|版}}',
'importnopages' => '取り込むページがありません。',
'imported-log-entries' => '$1 件の{{PLURAL:$1|記録項目}}を取り込みました。',
'importfailed' => '取り込みに失敗しました:<nowiki>$1</nowiki>',
'importunknownsource' => '取り込み元のタイプが不明です',
'importcantopen' => '取り込みファイルが開けませんでした',
'importbadinterwiki' => 'ウィキ間リンクが正しくありません',
-'importnotext' => '空かもしくは本文がありません',
+'importnotext' => '内容が空、または本文がありません',
'importsuccess' => '取り込みが完了しました!',
'importhistoryconflict' => '取り込み時にいくつかの版が競合しました(以前に同じページが取り込まれているかもしれません)',
'importnosources' => 'ウィキ間移動の取り込み元が定義されていないため、履歴の直接アップロードは無効になっています。',
-'importnofile' => 'ファイルがアップロードされませんでした',
+'importnofile' => '取り込みファイルはアップロードされませんでした。',
'importuploaderrorsize' => '取り込みファイルのアップロードに失敗しました。
ファイルが、アップロードできるサイズを超えています。',
'importuploaderrorpartial' => '取り込みファイルのアップロードに失敗しました。
'importlogpage' => '取り込み記録',
'importlogpagetext' => '管理された他のウィキから編集履歴を伴ったページ取り込みです。',
'import-logentry-upload' => 'ファイルのアップロードにより[[$1]]を取り込みました',
-'import-logentry-upload-detail' => '$1版',
+'import-logentry-upload-detail' => '$1{{PLURAL:$1|版}}',
'import-logentry-interwiki' => '$1をウィキ間移動しました',
-'import-logentry-interwiki-detail' => '$2の$1版',
+'import-logentry-interwiki-detail' => '$2の$1{{PLURAL:$1|版}}',
# JavaScriptTest
'javascripttest' => 'JavaScript をテスト中',
'tooltip-pt-preferences' => '個人設定',
'tooltip-pt-watchlist' => '変更をウォッチしているページの一覧',
'tooltip-pt-mycontris' => '自分の投稿の一覧',
-'tooltip-pt-login' => 'ã\83ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
-'tooltip-pt-anonlogin' => 'ã\83ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
+'tooltip-pt-login' => 'ã\83ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
+'tooltip-pt-anonlogin' => 'ã\83ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
'tooltip-pt-logout' => 'ログアウト',
'tooltip-ca-talk' => '本文ページについての議論',
-'tooltip-ca-edit' => 'このページを編集できます。保存する前にプレビューボタンを使用してください。',
-'tooltip-ca-addsection' => '新しい節を開始',
+'tooltip-ca-edit' => 'このページを編集できます。保存前にプレビューボタンを使用してください。',
+'tooltip-ca-addsection' => '新しい節を開始する',
'tooltip-ca-viewsource' => 'このページは保護されています。
ページのソースを閲覧できます。',
'tooltip-ca-history' => 'このページの過去の版',
-'tooltip-ca-protect' => 'このページを保護',
-'tooltip-ca-unprotect' => 'このページの保護設定を変更',
-'tooltip-ca-delete' => 'このページを削除',
-'tooltip-ca-undelete' => '削除される前になされた編集を復元',
-'tooltip-ca-move' => 'このページを移動',
-'tooltip-ca-watch' => 'このページをウォッチリストに追加',
-'tooltip-ca-unwatch' => 'このページをウォッチリストから除去',
-'tooltip-search' => '{{SITENAME}}内を検索',
-'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\97ã\81¾ã\81\99',
-'tooltip-search-fulltext' => 'å\85¥å\8a\9bã\81\95ã\82\8cã\81\9fæ\96\87å\97å\88\97ã\81\8cå\90«ã\81¾ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\92æ¤\9cç´¢ã\81\97ã\81¾ã\81\99',
-'tooltip-p-logo' => 'メインページに移動',
-'tooltip-n-mainpage' => 'メインページに移動',
+'tooltip-ca-protect' => 'このページを保護する',
+'tooltip-ca-unprotect' => 'このページの保護設定を変更する',
+'tooltip-ca-delete' => 'このページを削除する',
+'tooltip-ca-undelete' => '削除される前になされた編集を復元する',
+'tooltip-ca-move' => 'このページを移動する',
+'tooltip-ca-watch' => 'このページをウォッチリストに追加する',
+'tooltip-ca-unwatch' => 'このページをウォッチリストから除去する',
+'tooltip-search' => '{{SITENAME}}内を検索する',
+'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\99ã\82\8b',
+'tooltip-search-fulltext' => 'å\85¥å\8a\9bã\81\97ã\81\9fæ\96\87å\97å\88\97ã\81\8cå\90«ã\81¾ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\92æ¤\9cç´¢ã\81\99ã\82\8b',
+'tooltip-p-logo' => 'メインページに移動する',
+'tooltip-n-mainpage' => 'メインページに移動する',
'tooltip-n-mainpage-description' => 'メインページに移動する',
'tooltip-n-portal' => 'このプロジェクトについて、できること、情報を入手する場所',
'tooltip-n-currentevents' => '最近の出来事の背景を知る',
'tooltip-ca-nstab-help' => 'ヘルプページを表示',
'tooltip-ca-nstab-category' => 'カテゴリページを閲覧',
'tooltip-minoredit' => 'この編集に細部の変更の印を付ける',
-'tooltip-save' => '変更を保存',
+'tooltip-save' => '変更を保存する',
'tooltip-preview' => '変更をプレビューで確認できます。保存前に使用してください!',
-'tooltip-diff' => '文章中で変更した箇所を表示',
-'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\97ã\81\9f2ã\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82',
+'tooltip-diff' => '文章中で変更した箇所を表示する',
+'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\97ã\81\9f2ã\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\99ã\82\8b',
'tooltip-watch' => 'このページをウォッチリストに追加する',
-'tooltip-watchlistedit-normal-submit' => 'ã\82¿ã\82¤ã\83\88ã\83«ã\82\92å\89\8aé\99¤',
-'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新',
+'tooltip-watchlistedit-normal-submit' => 'ã\83\9aã\83¼ã\82¸ã\82\92é\99¤å\8e»ã\81\99ã\82\8b',
+'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新する',
'tooltip-recreate' => '削除されていても、ページを再作成する',
-'tooltip-upload' => 'アップロードを開始',
+'tooltip-upload' => 'アップロードを開始する',
'tooltip-rollback' => '「巻き戻し」は、このページの最後の編集者によるこのページへの編集を1クリックで差し戻します',
'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビューを付けて開きます。要約欄に取り消しの理由を追加できます。',
-'tooltip-preferences-save' => '設定を保存',
+'tooltip-preferences-save' => '設定を保存する',
'tooltip-summary' => '短い要約を入力してください',
# Stylesheets
'markaspatrolleddiff' => '巡回済みにする',
'markaspatrolledtext' => 'このページを巡回済みにする',
'markedaspatrolled' => '巡回済みにしました',
-'markedaspatrolledtext' => '選択された[[:$1|$1]]の版を巡回済みにしました。',
+'markedaspatrolledtext' => '[[:$1]]の、選択した版を巡回済みにしました。',
'rcpatroldisabled' => '最近の更新の巡回は無効です',
'rcpatroldisabledtext' => '最近の更新の巡回機能は現在無効になっています。',
'markedaspatrollederror' => '巡回済みにできません',
# Special:NewFiles
'newimages' => '新しいファイルのギャラリー',
-'imagelisttext' => "以下は、'''$1'''ファイルの$2で並べ替えた一覧です。",
+'imagelisttext' => "以下は、'''$1'''{{PLURAL:$1|ファイル}}の$2で並べ替えた一覧です。",
'newimages-summary' => 'この特別ページでは、最近アップロードされたファイルを表示します。',
'newimages-legend' => '絞り込み',
'newimages-label' => 'ファイル名(またはその一部):',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
'video-dims' => '$1、 $2 × $3',
'seconds' => '{{PLURAL:$1|$1 秒}}',
-'minutes' => '{{PLURAL:$1|$1分}}',
-'hours' => '{{PLURAL:$1|$1時間}}',
+'minutes' => '{{PLURAL:$1|$1 分}}',
+'hours' => '{{PLURAL:$1|$1 時間}}',
'days' => '{{PLURAL:$1|$1 日}}',
'ago' => '$1前',
'variantname-zh-sg' => 'disable',
Variants for Chinese language
*/
-'variantname-zh-hans' => '簡体',
-'variantname-zh-hant' => '繁体',
+'variantname-zh-hans' => '中国語(簡体)',
+'variantname-zh-hant' => '中国語(繁体)',
'variantname-zh-cn' => '中国簡体',
'variantname-zh-tw' => '台湾正体',
'variantname-zh-hk' => '香港正体',
-'variantname-zh-mo' => 'マカオ',
+'variantname-zh-mo' => 'マカオ繁体',
'variantname-zh-sg' => 'シンガポール簡体',
-'variantname-zh-my' => 'マレーシア',
-'variantname-zh' => '中文',
+'variantname-zh-my' => 'マレーシア簡体',
+'variantname-zh' => '中国語',
# Variants for Gan language
-'variantname-gan-hans' => 'hans',
-'variantname-gan-hant' => 'hant',
-'variantname-gan' => 'ã\82¬ã\82¬ã\82¦ã\82º語',
+'variantname-gan-hans' => 'カン語(簡体)',
+'variantname-gan-hant' => 'カン語(繁体)',
+'variantname-gan' => 'ã\82«ã\83³語',
# Variants for Serbian language
'variantname-sr-ec' => 'セルビア語 (キリル文字)',
このファイルが元の状態から変更されている場合、いくつかの項目は、修正されたファイルを完全に反映していないかもしれません。',
'metadata-expand' => '拡張項目を表示',
'metadata-collapse' => '拡張項目を非表示',
-'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\81\82ã\82\8bEXIFメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
+'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81§å\88\97æ\8c\99ã\81\97ã\81¦ã\81\84ã\82\8bç\94»å\83\8fメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
他のものは既定では非表示です。
* make
* model
'exif-planarconfiguration' => '画像データの並び',
'exif-ycbcrsubsampling' => 'YCCの画素構成 (Cの間引き率)',
'exif-ycbcrpositioning' => 'YCCの画素構成 (YとCの位置)',
-'exif-xresolution' => '画像の幅の解像度',
-'exif-yresolution' => '画像の高さの解像度',
+'exif-xresolution' => '水平方向の解像度',
+'exif-yresolution' => '垂直方向の解像度',
'exif-stripoffsets' => '画像データのロケーション',
'exif-rowsperstrip' => '1ストリップごとの行数',
'exif-stripbytecounts' => 'ストリップの総バイト数',
'exif-referenceblackwhite' => '参照黒色点値と参照白色点値',
'exif-datetime' => 'ファイル変更日時',
'exif-imagedescription' => '画像の説明',
-'exif-make' => '画像入力機器のメーカ名',
-'exif-model' => '画像入力機器のモデル名',
+'exif-make' => '撮影機器のメーカー名',
+'exif-model' => '撮影機器のモデル名',
'exif-software' => '使用ソフトウェア名',
'exif-artist' => '作者名',
'exif-copyright' => '撮影著作権者/編集著作権者',
'exif-fnumber' => 'F値',
'exif-exposureprogram' => '露出プログラム',
'exif-spectralsensitivity' => 'スペクトル感度',
-'exif-isospeedratings' => 'ISOスピードレート',
+'exif-isospeedratings' => 'ISO 感度',
'exif-shutterspeedvalue' => 'シャッタースピード',
'exif-aperturevalue' => '絞り値',
'exif-brightnessvalue' => '輝度値',
'exif-exposurebiasvalue' => '露出補正値',
'exif-maxaperturevalue' => 'レンズ最小F値',
'exif-subjectdistance' => '被写体距離',
-'exif-meteringmode' => '測光方式',
+'exif-meteringmode' => '測光モード',
'exif-lightsource' => '光源',
'exif-flash' => 'フラッシュ',
'exif-focallength' => 'レンズ焦点距離',
'exif-exposuremode' => '露出モード',
'exif-whitebalance' => 'ホワイトバランス',
'exif-digitalzoomratio' => 'デジタルズーム倍率',
-'exif-focallengthin35mmfilm' => '35mm換算レンズ焦点距離',
+'exif-focallengthin35mmfilm' => '35mmフィルム換算焦点距離',
'exif-scenecapturetype' => '撮影シーンタイプ',
'exif-gaincontrol' => 'ゲイン制御',
'exif-contrast' => '撮影コントラスト',
'exif-gpslongitude' => '経度',
'exif-gpsaltituderef' => '高度の基準',
'exif-gpsaltitude' => '高度',
-'exif-gpstimestamp' => 'GPSæ\99\82é\96\93(å\8e\9få\90æ\99\82è¨\88ã\81®æ\99\82é\96\93)',
+'exif-gpstimestamp' => 'GPSæ\97¥æ\99\82ï¼\88å\8e\9få\90æ\99\82è¨\88ï¼\89',
'exif-gpssatellites' => '測位に用いた衛星信号',
'exif-gpsstatus' => 'GPS受信機の状態',
'exif-gpsmeasuremode' => 'GPSの測位方法',
'exif-gpsdop' => '測位の信頼性',
'exif-gpsspeedref' => '速度の単位',
-'exif-gpsspeed' => '速度',
+'exif-gpsspeed' => 'GPS 受信機の速度',
'exif-gpstrackref' => '進行方向の単位',
'exif-gpstrack' => '進行方向',
'exif-gpsimgdirectionref' => '撮影方向の基準',
-'exif-gpsimgdirection' => '撮影した画像の方向',
+'exif-gpsimgdirection' => '画像の方向',
'exif-gpsmapdatum' => '測位に用いた地図データ',
-'exif-gpsdestlatituderef' => '目的地の北緯または南緯',
+'exif-gpsdestlatituderef' => '目的地の北緯/南緯',
'exif-gpsdestlatitude' => '目的地の緯度',
-'exif-gpsdestlongituderef' => '目的地の東経または西経',
+'exif-gpsdestlongituderef' => '目的地の東経/西経',
'exif-gpsdestlongitude' => '目的地の経度',
'exif-gpsdestbearingref' => '目的地の方角の単位',
-'exif-gpsdestbearing' => '目的の方角',
+'exif-gpsdestbearing' => '目的地の方角',
'exif-gpsdestdistanceref' => '目的地までの距離の単位',
'exif-gpsdestdistance' => '目的地までの距離',
'exif-gpsprocessingmethod' => '測位方式の名称',
'exif-gpsdifferential' => 'GPS補正測位',
'exif-jpegfilecomment' => 'JPEGファイルのコメント',
'exif-keywords' => 'キーワード',
-'exif-worldregioncreated' => 'この写真が撮られた大陸や地域',
-'exif-countrycreated' => 'この写真が撮られた国',
-'exif-countrycodecreated' => 'この写真が撮られた国の国名コード',
-'exif-provinceorstatecreated' => 'この写真が撮られた州や県',
-'exif-citycreated' => 'この写真が撮られた市町村',
-'exif-sublocationcreated' => 'この写真が撮られた町名や通りの名前',
-'exif-worldregiondest' => '写っている大陸や地域',
+'exif-worldregioncreated' => '写真が撮影された大陸/地域',
+'exif-countrycreated' => '写真が撮影された国',
+'exif-countrycodecreated' => '写真が撮影された国のコード',
+'exif-provinceorstatecreated' => '写真が撮影された州/県',
+'exif-citycreated' => '写真が撮影された都市',
+'exif-sublocationcreated' => '写真が撮影された町や通りの名前',
+'exif-worldregiondest' => '写っている大陸/地域',
'exif-countrydest' => '写っている国',
-'exif-countrycodedest' => '写っている国の国名コード',
-'exif-provinceorstatedest' => '写っている州や県',
-'exif-citydest' => '写っている市町村',
-'exif-sublocationdest' => '写っている町名や通りの名前',
+'exif-countrycodedest' => '写っている国のコード',
+'exif-provinceorstatedest' => '写っている州/県',
+'exif-citydest' => '写っている都市',
+'exif-sublocationdest' => '写っている町や通りの名前',
'exif-objectname' => '短いタイトル',
'exif-specialinstructions' => '取扱いに関する特記事項',
'exif-headline' => '見出し',
'exif-copyrightowner' => '著作権者',
'exif-usageterms' => '使用条件',
'exif-webstatement' => 'オンライン上の著作権文',
-'exif-originaldocumentid' => '元文書の一意な識別子',
+'exif-originaldocumentid' => '元文書の一意なID',
'exif-licenseurl' => '著作権ライセンスのURL',
'exif-morepermissionsurl' => '代替ライセンス情報',
'exif-attributionurl' => 'この作品を再利用する際に、次のURLにリンクしてください',
'exif-orientation-2' => '左右反転',
'exif-orientation-3' => '180°回転',
'exif-orientation-4' => '上下反転',
-'exif-orientation-5' => '反時計回りに90°回転 上下反転',
-'exif-orientation-6' => '90° 回転 CCW',
-'exif-orientation-7' => '時計回りに90°回転 上下反転',
-'exif-orientation-8' => '90° 回転 CW',
+'exif-orientation-5' => '反時計回りに90°回転、上下反転',
+'exif-orientation-6' => '反時計回りに90°回転',
+'exif-orientation-7' => '時計回りに90°回転、上下反転',
+'exif-orientation-8' => '時計回りに90°回転',
'exif-planarconfiguration-1' => '点順次フォーマット',
'exif-planarconfiguration-2' => '面順次フォーマット',
'size-kilobytes' => '$1キロバイト',
'size-megabytes' => '$1メガバイト',
'size-gigabytes' => '$1ギガバイト',
+'size-terabytes' => '$1 TB',
+'size-petabytes' => '$1 PB',
+'size-exabytes' => '$1 EB',
+'size-zetabytes' => '$1 ZB',
+'size-yottabytes' => '$1 YB',
# Live preview
'livepreview-loading' => '読み込み中...',
通常のプレビューを試してください。',
# Friendlier slave lag warnings
-'lag-warn-normal' => 'この一覧には、$1秒より前の変更が表示されていない可能性があります。',
-'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1秒より前の変更が表示されていない可能性があります。',
+'lag-warn-normal' => 'この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
+'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
# Watchlist editor
-'watchlistedit-numitems' => 'ウォッチリストには、$1件のページ名が含まれています(トークページは除く)。',
-'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\83\9aã\83¼ã\82¸å\90\8dã\81\8c1ã\81¤ã\82\82ã\81\82ã\82\8aません。',
+'watchlistedit-numitems' => 'ウォッチリストには {{PLURAL:$1|$1 件のページ}}が登録されています(トークページを除く)。',
+'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\81©ã\81®ã\83\9aã\83¼ã\82¸ã\82\82ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ません。',
'watchlistedit-normal-title' => 'ウォッチリストの編集',
'watchlistedit-normal-legend' => 'ウォッチリストからページ名を除去',
'watchlistedit-normal-explain' => 'ウォッチリストに入っているページ名を以下に表示しています。
ページ名を除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
また、[[Special:EditWatchlist/raw|ウォッチリストをそのまま編集]]も使用できます。',
'watchlistedit-normal-submit' => 'ページを除去',
-'watchlistedit-normal-done' => 'ウォッチリストから $1 {{PLURAL:$1|件}}を削除しました:',
+'watchlistedit-normal-done' => 'ウォッチリストから {{PLURAL:$1|$1 件のページ}}を削除しました:',
'watchlistedit-raw-title' => 'ウォッチリストをそのまま編集',
'watchlistedit-raw-legend' => 'ウォッチリストをそのまま編集',
'watchlistedit-raw-explain' => 'ウォッチリストに含まれるページ名を以下に表示しています。この一覧で追加または除去ができます。
'watchlistedit-raw-titles' => 'ページ名:',
'watchlistedit-raw-submit' => 'ウォッチリストを更新',
'watchlistedit-raw-done' => 'ウォッチリストを更新しました。',
-'watchlistedit-raw-added' => '$1のページ名が追加されました:',
-'watchlistedit-raw-removed' => '$1件のページ名が除去されました:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|$1 件のページ}}を追加しました:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|$1 件のページ}}を除去しました:',
# Watchlist editing tools
'watchlisttools-view' => '関連する変更を閲覧',
'version-license' => 'ライセンス',
'version-poweredby-credits' => "このウィキは、'''[//www.mediawiki.org/ MediaWiki]'''(copyright © 2001-$1 $2)で動作しています。",
'version-poweredby-others' => 'その他',
-'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約にもとづき、このライブラリの再配布や改変ができます。
+'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約に基づき、このライブラリを再配布および改変できます。
MediaWikiは、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、GNU一般公衆利用許諾書をご覧ください。
-あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)まで請求するか、[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインで閲覧]してください。',
+あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA)まで請求するか、[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインで閲覧]してください。',
'version-software' => 'インストール済みソフトウェア',
'version-software-product' => '製品',
'version-software-version' => 'バージョン',
'version-entrypoints' => 'エントリーポイントの URL',
'version-entrypoints-header-entrypoint' => 'エントリーポイント',
'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 記事のパス]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath スクリプトパス]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath/ja 記事のパス]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
# Special:FilePath
'filepath' => 'ファイルパス',
'fileduplicatesearch-submit' => '検索',
'fileduplicatesearch-info' => '$1×$2 ピクセル<br />ファイルサイズ:$3<br />MIMEタイプ:$4',
'fileduplicatesearch-result-1' => 'ファイル「$1」と重複するファイルはありません。',
-'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯$2件ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¨é\87\8dè¤\87ã\81\97ã\81¦ã\81\84ます。',
+'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81«ã\81¯ {{PLURAL:$2|$2 件ã\81®é\87\8dè¤\87ã\83\95ã\82¡ã\82¤ã\83«}}ã\81\8cã\81\82ã\82\8aます。',
'fileduplicatesearch-noresults' => '「$1」という名前のファイルはありません。',
# Special:SpecialPages
'specialpages' => '特別ページ',
'specialpages-note' => '----
* 通常の特別ページ
-* <span class="mw-specialpagerestricted">制限されている特別ページ</span>
-* <span class="mw-specialpagecached">(廃止されたかもしれない)キャッシュされた特別ページ</span>',
+* <span class="mw-specialpagerestricted">制限されている特別ページ</span>',
'specialpages-group-maintenance' => 'メンテナンス報告',
'specialpages-group-other' => 'その他の特別ページ',
'specialpages-group-login' => 'ログイン/利用者登録',
# HTML forms
'htmlform-invalid-input' => '入力に何らかの問題があります',
-'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8cæ\9c\89å\8a¹ã\81ªã\82\82ã\81®ではありません。',
-'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c整数ではありません。',
-'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cた値は数値ではありません。',
-'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最小値未満です',
-'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最大値を超えています',
+'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯æ\9c\89å\8a¹ã\81ªé\81¸æ\8a\9eè\82¢ではありません。',
+'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯整数ではありません。',
+'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\97た値は数値ではありません。',
+'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最小値未満です',
+'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最大値を超えています',
'htmlform-required' => 'この値は必要です',
'htmlform-submit' => '送信',
'htmlform-reset' => '変更を取り消す',
'logentry-newusers-create' => '$1 が利用者アカウントを作成しました',
'logentry-newusers-create2' => '$1 が利用者アカウント「$3」を作成しました',
'logentry-newusers-autocreate' => 'アカウント「$1」が自動的に作成されました',
-'newuserlog-byemail' => 'パスワードをメールで送信しました',
+'newuserlog-byemail' => 'パスワードをメールでお送りしました',
# Feedback
'feedback-bugornote' => '技術的な問題の詳細を説明なさる準備ができている場合は[$1 バグを報告]してください。
'api-error-badtoken' => '内部エラー:トークンが不正です。',
'api-error-copyuploaddisabled' => 'URLによるアップロードはこのサーバーでは無効になっています。',
'api-error-duplicate' => '当ウェブサイト上には、既に同じ内容の{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}存在しています。',
-'api-error-duplicate-archive' => '同じ内容で既に削除済みの{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}サイト上にあります。',
+'api-error-duplicate-archive' => 'サイト上に同じ内容の{{PLURAL:$1|[$2 別のファイル]が|[$2 他のファイルがいくつか]}}既にありましたが、{{PLURAL:$1|それは|それらは}}削除されました。',
'api-error-duplicate-archive-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}は削除済みです。',
-'api-error-duplicate-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}',
+'api-error-duplicate-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}です。',
'api-error-empty-file' => '送信されたファイルは空でした。',
'api-error-emptypage' => '内容がないページの新規作成は許可されていません。',
'api-error-fetchfileerror' => '内部エラー:ファイルの取得中に問題が発生しました。',
'statistics-articles' => 'სტატიების',
'statistics-pages' => 'გვერდები',
'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
-'statistics-files' => 'á\83\90á\83\95á\83¢á\83\95á\83\98á\83 á\83\97á\83£á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\94á\83\91á\83\98',
+'statistics-files' => 'ატვირთული ფაილები',
'statistics-edits' => 'გვერდის შესწორებები {{SITENAME}}-ის შექმნიდან',
'statistics-edits-average' => 'რედაქტირების საერთო რაოდენობა გვერდზე',
'statistics-views-total' => 'სულ ხილვა',
შეგიძლიათ გაცხრილოთ იგი ჩანაწერის ტიპის, მომხმარებლის სახელის, ან დაკავშირებული გვერდის შერჩევით.',
'logempty' => 'შედეგები არ არის სიაში.',
'log-title-wildcard' => 'სათაურების ძებნა, რომლებიც იწყება ამ ტექსტით',
+'showhideselectedlogentries' => 'არჩეული ჟურნალის ჩანაწერის ჩვენება/დამალვა',
# Special:AllPages
'allpages' => 'ყველა გვერდი',
# Namespace form on various pages
'namespace' => 'Атла алам:',
'invert' => 'Сайланнганны айландыр',
+'namespace_association' => 'Байламлы ат алам',
'blanknamespace' => '(Баш)',
# Contributions
'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
'logentry-move-move' => '$1, $3 бетни атын $4 деб тюрлендирди',
'logentry-patrol-patrol-auto' => '$1, $3 бетни $4 версиясын автомат халда тинтиб чыкъды',
+'logentry-newusers-create' => '$1 тергеу джазыу (аккаунт) къурады',
'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
# Feedback
schecke.',
'emailuser' => 'E-mail aan dä Metmaacher',
'emailpage' => 'E-mail aan ene Metmaacher',
-'emailpagetext' => 'Wann dä Metmaacher en E-mail Adress aanjejovve hätt en singe Enstellunge,
-un die deit et och, dann kanns De met däm Fomular hee unge en einzelne E-Mail aan dä Metmaacher schecke.
-Ding E-mail Adress, die De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
-die weed als em Avsender sing Adress en die E-Mail enjedrage.
-Domet kann, wä die E-Mail kritt, drop antwoote, un die Antwood jeiht tirek aan Dech.
+'emailpagetext' => 'Wann heh dä Metmaacher en Adräß för sing <i lang="en">e-mail</i> aanjejovve hätt en singe Enstellunge,
+un die deit et och, dann kanns De met däm Fomular hee unge en einzel <i lang="en">e-mail</i> aan dä Metmaacher schecke.
+
+Ding <i lang="en">e-mail</i>-Adräß, di De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
+di weed als em Afsender sing Adräß en Ding <i lang="en">e-mail</i> enjedrage.
+Domet kann, wä di <i lang="en">e-mail</i> kritt, drop antwoote, un di Antwood jeiht tirek aan Desch.
Alles klor?',
'usermailererror' => 'Dat E-Mail-Objek jov ene Fähler us:',
'defemailsubject' => 'e-mail fum $1 {{GRAMMAR:fun|{{SITENAME}}}}.',
'enotif_anon_editor' => 'Dä namelose Metmaacher $1',
'enotif_body' => 'Leeven $WATCHINGUSERNAME,
-{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE vun „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
+{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE {{GENDER:$PAGEEDITOR|vum|vum|vum_Metmaacher|vun dä|vum}} „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
$NEWPAGE
{{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT
Do kanns dä Metmaacher „$PAGEEDITOR“ aanspreche:
-* E-mail: $PAGEEDITOR_EMAIL
+* Övver e-mail: $PAGEEDITOR_EMAIL
* Em Wiki: $PAGEEDITOR_WIKI
Do kriss vun jetz aan kein e-mail mieh, bes dat Do Der di Sigg aanjeluurt häs,
Öm de Enshtällonge för Nohreeschet aan Desch ze ändere, jangk op:
{{canonicalurl:{{#special:Preferences}}}}
-Do kanns hee Ding Oppassliss ändere:
+Do kanns hee Ding Oppassleß ändere:
{{canonicalurl:{{#special:EditWatchlist}}}}
-Öm di Sigg vun Dinger Oppassliss ze schmieße:
+Öm di Sigg vun Dinger Oppassleß ze schmieße:
$UNWATCHURL
Do kanns hee noh Hölp luure:
'sun' => 'Ykş',
'mon' => 'Duş',
'tue' => 'Sêş',
-'wed' => 'Çarş',
-'thu' => 'Pşem',
+'wed' => 'Çrş',
+'thu' => 'Pşm',
'fri' => 'În',
'sat' => 'Şem',
'january' => 'rêbendan',
'march-gen' => 'Adar',
'april-gen' => 'Avrêl',
'may-gen' => 'Gulan',
-'june-gen' => 'Pûşper',
+'june-gen' => 'pûşper',
'july-gen' => 'Tîrmeh',
'august-gen' => 'Gelawêj',
-'september-gen' => 'Rezber',
+'september-gen' => 'rezber',
'october-gen' => 'Kewçêr',
'november-gen' => 'Sermawez',
-'december-gen' => 'Berfanbar',
+'december-gen' => 'berfanbar',
'jan' => 'rêb',
'feb' => 'reş',
'mar' => 'adr',
'apr' => 'avr',
-'may' => 'gulan',
+'may' => 'gul',
'jun' => 'pûş',
'jul' => 'tîr',
'aug' => 'teb',
'about' => 'Der barê',
'article' => 'Gotar',
'newwindow' => '(di rûpeleke din de wê were nîşandan)',
-'cancel' => 'Betalkirin',
+'cancel' => 'Betal bike',
'moredotdotdot' => 'Bêhtir...',
'mypage' => 'Rûpela min',
'mytalk' => 'Gotûbêja min',
'variants' => 'Variyant',
'errorpagetitle' => 'Çewtî',
-'returnto' => 'Bizîvire $1.',
+'returnto' => 'Vegere $1.',
'tagline' => 'Ji {{SITENAME}}',
'help' => 'Alîkarî',
'search' => 'Lêgerîn',
'protect' => 'Biparêze',
'protect_change' => 'guherandin',
'protectthispage' => 'Vê rûpelê biparêze',
-'unprotect' => 'Parastinê rake',
-'unprotectthispage' => 'Parastina vê rûpelê rake',
+'unprotect' => 'Parastinê biguherîne',
+'unprotectthispage' => 'Parastina vê rûpelê biguherîne',
'newpage' => 'Rûpela nû',
'talkpage' => 'Vê rûpelê gotûbêj bike',
'talkpagelinktext' => 'gotûbêj',
'talk' => 'Gotûbêj',
'views' => 'Dîtin',
'toolbox' => 'Qutiya amûran',
-'userpage' => 'Li rûpela vê/vî bikarhênerê/î binêre',
+'userpage' => 'Li rûpela bikarhêner binêre',
'projectpage' => 'Li rûpela projeyê binêre',
'imagepage' => 'Rûpela dosyeyan bibîne',
'mediawikipage' => 'Rûpela peyamê bibîne',
'protectedpage' => 'Rûpela parastî',
'jumpto' => 'Here cem:',
'jumptonavigation' => 'navîgasyon',
-'jumptosearch' => 'lêbigere',
+'jumptosearch' => 'lêgerîn',
'view-pool-error' => 'Bibore, server niha zêde barkirî ne. Gelek bikarhêner niha hewl didin ku vê rûpelê bibînin. Ji kerema xwe kêlîkekê bisekine, berî ku tu dîsa hewl bidî rûpelê bibînî.',
'pool-errorunknown' => 'Çewtiyeke nenas',
'versionrequired' => 'Versiyona $1 a MediaWiki pêwîst e',
'versionrequiredtext' => 'Versiyona $1 a MediaWiki ji bo bikaranîna vê rûpelê pêwîst e. Li [[Special:Versiyon|rûpela versiyonê]] binêre.',
-'ok' => 'Temam',
+'ok' => 'Baş e',
'retrievedfrom' => 'Ji "$1" hatiye standin.',
'youhavenewmessages' => '$1 yên te hene ($2).',
'newmessageslink' => 'Peyamên nû',
-'newmessagesdifflink' => 'ciyawazî ji guhertoya berê',
+'newmessagesdifflink' => 'cudayî ji guhertoya berê',
'youhavenewmessagesmulti' => 'Peyamên nû li $1 ji te re hene.',
'editsection' => 'biguherîne',
'editold' => 'biguherîne',
'internalerror' => 'Çewtiyeke navxweyî',
'internalerror_info' => 'Çewtiya navxweyî: $1',
'fileappenderror' => '"$1" li "$2" nehate zêdekirin.',
-'filecopyerror' => 'Daneya „$1“ ji bo „$2“ naye kopîkirin.',
+'filecopyerror' => 'Daneya "$1" ji bo "$2" naye kopîkirin.',
'filerenameerror' => 'Navê pelê "$1" nebû "$2".',
'filedeleteerror' => '"$1" jê nehate birîn.',
'directorycreateerror' => 'Rêbera "$1" nehate çêkirin.',
'unexpected' => 'Tiştekî nedihate hêvîkirin: "$1"="$2".',
'formerror' => 'Çewtî: Ew nivîs pêk nehat.',
'badarticleerror' => 'Ev çalakî di vê rûpelê de nabe.',
-'cannotdelete' => 'Ev rûpel nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
+'cannotdelete' => 'Ev rûpel an wêne nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
'badtitle' => 'Sernivîsa nebaş',
'badtitletext' => 'Sernavê rûpelê yê xwestî ne derbasdar, vala an jî ne xwediyê girêdaneke rast e.
Dibe ku di sernavê de karakterên nayên bikaranîn hatibin nivîsandin.',
'protectedinterface' => "Di vê rûpelê da nivîsandin ji bo interface'î zimanan yê vê software'ê ye. Ew tê parstin ji bo vandalîzm li vê derê çênebe.",
'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku translatewiki.net] de bixebite, projeya MediaWiki.",
'sqlhidden' => '(Jêpirskirina SQL hatiye veşartin)',
-'cascadeprotected' => '<strong>Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
-$2
-
-</strong>',
+'cascadeprotected' => 'Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
+$2',
'namespaceprotected' => "Destûra te ji bo guhertina vê rûpelê '''$1''' di valahiya nav de nîne.",
'ns-specialprotected' => 'Rûpelên taybet {{ns:special}} nikarin werin guherandin.',
'titleprotected' => "Rûpelek bi vî navî nikare were çêkirin. Ev astengkirin ji [[User:$1|$1]] bi sedema ''$2'' hate çêkirin.",
'virus-unknownscanner' => 'Antîvîrusa nenas:',
# Login and logout pages
-'logouttext' => "'''Tu niha derketî (logged out).'''
+'logouttext' => "'''Tu niha derketî.'''
Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner [[Special:UserLogin|dîsa têkevî]].
Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kiriyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.",
'externaldberror' => 'Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.',
'login' => 'Têkeve',
'nav-login-createaccount' => 'Têkeve / hesabekî nû çêke',
-'loginprompt' => "<b>Eger tu xwe nû qeyd bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo xwe qeyd kirinê di {{SITENAME}} de divê ku ''cookies'' gengaz be.",
-'userlogin' => 'Têkeve an hesabeke nû çêke',
+'loginprompt' => "<b>Eger tu xwe nû tomar bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo tomarkirina te ya di {{SITENAME}} de divê ku ''cookies'' gengaz bin.",
+'userlogin' => 'Têkeve an hesabekî nû çêke',
'userloginnocreate' => 'Têkeve',
'logout' => 'Derkeve',
'userlogout' => 'Derkeve',
-'notloggedin' => 'Xwe qeyd nekir (not logged in)',
+'notloggedin' => 'Xwe tomar nekir',
'nologin' => 'Hesabê te nîne? $1.',
'nologinlink' => 'Bibe endam',
'createaccount' => 'Hesabê nû çêke',
-'gotaccount' => "Hesabê te heye? '''$1'''.",
+'gotaccount' => 'Hesabê te heye? $1.',
'gotaccountlink' => 'Têkeve',
'userlogin-resetlink' => 'Te agahiyên hesabê xwe ji bîr kirin?',
'createaccountmail' => 'bi e-name',
'nocookiesnew' => "Hesabê bikarhêner hatibû çêkirin, lê te xwe qeyd nekiriye. {{SITENAME}} ji bo qeydkirina bikarhêneran cookie'yan bikartîne. Te bikaranîna cookie'yan girtiye. Xêra xwe cookie'yan qebûl bike, piştre bi navê bikarhêner û şîfreya xwe têkeve.",
'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
'noname' => 'Navê ku te nivîsand derbas nabe.',
-'loginsuccesstitle' => 'Têketin serkeftî!',
-'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
-'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
+'loginsuccesstitle' => 'Têketin serkevtî bû!',
+'loginsuccess' => 'Tu niha di {{SITENAME}} de tomarkirî yî wek "$1".',
+'nosuchuser' => 'Bikarhênerê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabekî nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
'nosuchusershort' => 'Li vê derê ne bikarhênerek bi navî "$1" heye. Li nivîsandinê xwe seke.',
'nouserspecified' => 'Divê tu navekî ji bo bikarhêneriyê hilbijêrî.',
'login-userblocked' => 'Rê li ber vî/vê bikarhênerî/ê hatiye girtin. Destûr bo têketinê nîne.',
'password-name-match' => 'Divê şîfreya te ji navê te yê bikaranînê cuda be.',
'password-login-forbidden' => 'Bikaranîna vî navî û vê şîfreyê hatiye qedexekirin.',
'mailmypassword' => 'Şîfreyeke nû bi e-mail ji min re bişîne',
-'passwordremindertitle' => 'Şîfreyakekî nuh ji hesabekî {{SITENAME}} ra',
-'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyekî nuh ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nuh ji bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
+'passwordremindertitle' => 'Şîfreyeke nû ya ji hesabekî {{SITENAME}} re',
+'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyeke nû ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nû ya bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
Eger kesekî din vê xastinê ji te ra xast ya şîfreya kevin dîsa hate bîrê te, tu dikarê guh nedê vê peyamê û tu dikarê bi şîfreya xwe yê kevin hên karbikê.',
'noemail' => 'Navnîşana bikarhênerê/î "$1" nehat tomar kirine.',
'noemailcreate' => 'Divê tu e-nameyeke derbasdar binivîsî',
'passwordsent' => 'Ji navnîşana e-mail ku ji bo "$1" hat tomarkirin şîfreyekê nû hat şandin. Vê bistîne û dîsa têkeve.',
-'blocked-mailpassword' => "IP'ya te yê ji te niha tê bikaranin ji bo guherandinê ra hatîye astengkirin. Ji bo tiştên şaş çênebin, xastinê te ji bo şifreyeka nuh jî hatîye qedexekirin.",
+'blocked-mailpassword' => "IP'ya ku tu niha bi kar tînî ji guherandinê re hatiye astengkirin. Ji bo tiştên şaş çênebin, xwestina te ya ji bo şîfreyeke nû jî hatiye qedexekirin.",
'eauthentsent' => 'E-nameyeka naskirinê ji adresa nivîsî ra hate şandin. Berî e-name ji bikarhênerên din bi vê rêkê dikaribim bi te gên, ew adresa û rastbûna xwe gireke werin naskirin. Xêra xwe e-nameyê naskirinê bixûne!',
-'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh hate xastin. Ji bo şaşbûn bi vê fonksyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh dikare were xastin.',
+'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû hate xwestin. Ji bo şaşbûn bi vê fonksiyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû dikare were xwestin.',
'mailerror' => 'Şaşbûnek li cem şandina e-nameyekê: $1',
-'acct_creation_throttle_hit' => 'Biborîne! Te hesab $1 vekirine. Tu êdî nikarî hesabên din vekî.',
+'acct_creation_throttle_hit' => 'Bibexşe! Te hesabê bikarhêneriyê $1 vekiriye. Tu êdî nikarî hesabên din vekî.',
'emailauthenticated' => 'Adresa e-nameya te hate naskirin: $1.',
'emailnotauthenticated' => 'Adresa e-nameyan yê te hên nehatîye naskirin. Fonksyonên e-nameyan piştî naskirina te dikarin ji te werin kirin.',
'noemailprefs' => "'''Te hên adresa e-nameyan nenivîsandîye''', fonksyonên e-nameyan hên ji te ra ne tên qebûlkirin.",
# Change password dialog
'resetpass' => 'Şîfreyê biguherîne',
-'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
+'resetpass_announce' => 'Te xwe bi şîfreyekê tomar kiriye ku bi riya e-nameyekê ji te re hatiye şandin.
+Ji bo xelaskirina tomarkirinê, divê tu niha şîfreyeke nû binivîsî:',
'resetpass_text' => '<!-- Nivîsê li vir binivisîne -->',
'resetpass_header' => 'Şîfreya hesabê xwe biguherîne',
'oldpassword' => 'Şîfreya kevn',
'editingcomment' => '$1 (şîrove) tê guherandin.',
'editconflict' => 'Têkçûna guherandinan: $1',
'explainconflict' => "Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.
-Jor guhartoya heyî tê dîtîn.
-Guherandinên te jêr tên nîşan dan.
-Divê tû wan bikî yek.
-Heke niha tomar bikî, '''bi tene''' nivîsara qutiya jor wê bê tomarkirin.",
+Li jor guhertoya heyî tê dîtîn.
+Guherandinên te li jêr tên nîşandan.
+Divê tu wan bikî yek.
+Heke niha tomar bikî, '''bi tenê''' nivîsara qutiya jor wê bê tomarkirin.",
'yourtext' => 'Nivîsara te',
'storedversion' => 'Versiyona qeydkirî',
'editingold' => "'''Hişyarî: Tu li ser guhertoyeke kevn a vê rûpelê dixebitî.
Heke tu qeyd bikî, hemû guhertinên piştî vê revîzyonê winda dibin.
'''",
'yourdiff' => 'Cudahî',
-'copyrightwarning' => "Hişyarî: Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre). Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
-Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane ''(public domain)'' girt.
-'''BERHEMÊN MAFÊN WAN PARASTÎ (©) BÊ DESTÛR NEWEŞÎNE!'''",
+'copyrightwarning' => "Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre).
+Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
+Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane (''public domain'') girt.
+'''Berhemên mafên wan parastî bê destûr neweşîne!'''",
'protectedpagewarning' => "'''Hişyarî: Ev rûpel tê parastin. Bi tenê bikarhênerên ku xwediyên mafên \"koordînatoriyê\" ne, dikarin vê rûpelê biguherînin.'''",
'semiprotectedpagewarning' => "'''Hişyarî:''' Ev rûpel tê parastin, lewma bes bikarhênerên tomarkirî dikarin vê biguherînin.
Guhertina herî dawî bi referansa li jêr hatiye piştrastkirin:",
-'templatesused' => 'Şablon di van rûpelan da tê bikaranîn',
-'templatesusedpreview' => 'Şablon yê di vê pêşdîtinê da tên bikaranîn:',
-'templatesusedsection' => 'Şablon yê di vê perçê da tên bikaranîn:',
+'templatesused' => 'Şablon di van rûpelan de tê bikaranîn',
+'templatesusedpreview' => 'Şablonên ku di vê pêşdîtinê de tên bikaranîn:',
+'templatesusedsection' => 'Şablonên ku di vê parçeyê de tên bikaranîn:',
'template-protected' => '(tê parastin)',
'template-semiprotected' => '(nîv-parastî)',
'hiddencategories' => 'Ev rûpel endamê{{PLURAL:$1|1 hidden category|$1 hidden categories}} ye:',
# "Undo" feature
'undo-success' => 'Ev guherandin dikare were şûndekirin. Ji kerema xwe ferqa piştî tomarkirinê bibîne, bê ka tu dixwazî vê guhertoyê tomar bikî an na. Ger te şaşîtiyek kir, ji kerema xwe derkeve.',
-'undo-failure' => 'Ev guherandina nikane were şondakirin ji ber ku guherandinên piştî wê.',
+'undo-failure' => 'Ev guhertin ji ber guherandinên piştî wê re nikare were şûndekirin.',
'undo-summary' => 'Guhertoya $1 ya [[Special:Contributions/$2|$2]] ([[User talk:$2|gotûbêj]]) şûnde kir',
# Account creation failure
'revisionasof' => 'Guhertoya $1',
'revision-info' => 'Guhertoya $1 ya ji aliyê $2 ve',
'previousrevision' => '←Guhertoya kevintir',
-'nextrevision' => 'Guhertoya nûtir→',
+'nextrevision' => 'Guhertoya nûtir →',
'currentrevisionlink' => 'Guhertoya niha nîşan bide',
'cur' => 'cudahî',
'next' => 'pêş',
'last' => 'berê',
-'page_first' => 'yekemîn',
-'page_last' => 'paşîn',
+'page_first' => 'ya pêşîn',
+'page_last' => 'ya paşîn',
'histlegend' => 'Rênîşan: (cudahî) = cudahiya nav vê û versiyona niha,
(berê) = cudahiya nav vê û ya berî vê, B = guhertina biçûk',
'history-fieldset-title' => 'Li dîrokê bigere',
# Search results
'searchresults' => 'Encamên lêgerînê',
'searchresults-title' => 'Encamên lêgerrînê bo "$1"',
-'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|Searching {{SITENAME}}]].',
+'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Te daxwaza "[[:$1]]" kir. ([[Special:Prefixindex/$1|hemî rûpelên bi "$1" dest pê dikin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hemî rûpelên ku bi "$1" ve hatine girêdan]])',
'searchsubtitleinvalid' => "Tu li '''$1''' geriyayî",
'titlematches' => 'Dîtinên di sernivîsên gotaran de',
'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
'textmatches' => 'Dîtinên di nivîsara rûpelan de',
-'notextmatches' => 'Di nivîsarê de nehat dîtin.',
+'notextmatches' => 'Di nav sernivîsan de nehat dîtin.',
'prevn' => '{{PLURAL:$1|$1}} paş',
'nextn' => '{{PLURAL:$1|$1}} pêş',
'prevn-title' => '{{PLURAL:$1|result|Encamên}} pêştir $1',
'nextn-title' => '$1 {{PLURAL:$1|encama|encamên}} pêştir',
+'shown-title' => 'Li her rûpelê $1 {{PLURAL:$1|encam|encaman}} nîşan bide',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Vebijartinên lêgerrînê',
'searchmenu-exists' => "'''Rûpeleke bi navê \"[[:\$1]]\" li ser vê wîkiyê heye.'''",
'preferences' => 'Tercîhên min',
'mypreferences' => 'Tercihên min',
'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe qeyd nekir',
+'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',
'prefs-setemail' => 'Navnîşana E-nameyê binivîse',
'prefs-email' => 'Vebijarkên E-nameyê',
'prefs-rendering' => 'Rû',
-'saveprefs' => 'Tercîhan qeyd bike',
+'saveprefs' => 'Tercîhan tomar bike',
'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
'prefs-editing' => 'Guherandin',
'rows' => 'Rêz',
'yourvariant' => 'Cuda:',
'yournick' => 'Bernavkê nû (ji bo îmzeyê):',
'badsig' => 'Îmzeya ne derbasdar! Li HTML binêre ka sedema şaşbûnê çiye.',
-'badsiglength' => 'Navî te zêde dirêj e; ew gireke di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} da be.',
+'badsiglength' => 'Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} de be.',
'yourgender' => 'Zayend:',
'gender-male' => 'Nêr',
'gender-female' => 'Mê',
'userrights-user-editname' => 'Navekî bikarhêneriyê binivîse:',
'editusergroup' => 'Komên bikarhêneran biguherîne',
'editinguser' => "Mafên bikarhêner '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) tên guhertin",
-'userrights-editusergroup' => 'Grûpên bikarhêneran biguherîne',
+'userrights-editusergroup' => 'Komên bikarhêneran biguherîne',
'saveusergroups' => 'Komên bikarhêneran tomar bike',
'userrights-groupsmember' => 'Endamê/a:',
'userrights-groups-help' => 'Tu dikarî komên bikarhêneran ên vê/vî bikarhênerê/î biguherînî:
'userrights-nodatabase' => 'Danegeh $1 nîne an ne ya vir e.',
'userrights-nologin' => 'Ji bo guherandina mafên bikarhêneran, divê tu bi hesabê rêveber [[Special:UserLogin|têkevî]].',
'userrights-notallowed' => "Account'a te mafê xwe tune ye ji bo guherandina mafên bikarhêneran.",
-'userrights-changeable-col' => 'Komên tu dikarî biguherînî',
-'userrights-unchangeable-col' => 'Komên tu nikarî biguherînî',
+'userrights-changeable-col' => 'Komên ku tu dikarî biguherînî',
+'userrights-unchangeable-col' => 'Komên ku tu nikarî biguherînî',
# Groups
'group' => 'Kom',
'right-sendemail' => 'Ji bikarhênerên di re e-name bişîne',
# User rights log
-'rightslog' => 'Reşahîya mafên bikarhêneran',
-'rightslogtext' => 'Ev reşahîyek ji bo guherandinên mafên bikarhêneran e.',
+'rightslog' => 'guhertina mafê bikarhêneriyê',
+'rightslogtext' => 'Ev guhertineke ji bo mafên bikarhêneriyê ye.',
'rightslogentry' => 'grûpa bikarhêneran ji bo $1 ji $2 guherande $3',
'rightsnone' => '(tune)',
# Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'Vê rûpelê bixwîne',
+'action-read' => 'vê rûpelê bixwîne',
'action-edit' => 'vê rûpelê biguherîne',
'action-createpage' => 'rûpelan çêke',
'action-createtalk' => 'rûpelên gotûbêjan çêke',
'action-minoredit' => 'vê weke guhertineke biçûk nîşan bide',
'action-move' => 'vê rûpelê bigerîne',
'action-move-subpages' => 'vê rûpelê û binrûpelên wê bigerîne',
-'action-movefile' => "vê data'yê bigerîne",
-'action-upload' => "vê data'yê barbike",
-'action-delete' => 'vê rûpelê jêbibe',
+'action-movefile' => 'vê daneyê bigerîne',
+'action-upload' => 'vê daneyê bar bike',
+'action-delete' => 'vê rûpelê jê bibe',
'action-deleterevision' => 'Vê revîzyonê je bibe',
'action-deletedhistory' => 'dîroka vê rûpelê jêbirî bibîne',
'action-browsearchive' => 'li rûpelên jêbirî bigere',
'boteditletter' => 'b',
'number_of_watching_users_pageview' => '[{{PLURAL:$1|bikarhênerek|$1 bikarhêner}} vê rûpelê {{PLURAL:$1|dişopîne|dişopînin}}.]',
'rc_categories_any' => 'Hîç',
-'newsectionsummary' => '/* $1 */ beşeka nuh',
+'newsectionsummary' => '/* $1 */ beşeke nû',
'rc-enhanced-expand' => 'Kitûmatan nîşan bide (JavaScript pêdivî ye)',
'rc-enhanced-hide' => 'Kitûmatan veşêre',
# Recent changes linked
-'recentchangeslinked' => 'Guherandinên peywend',
+'recentchangeslinked' => 'Guherandinên têkilîdar',
'recentchangeslinked-feed' => 'Guherandinên peywend',
'recentchangeslinked-toolbox' => 'Guherandinên peywend',
'recentchangeslinked-summary' => "Ev rûpela taybetî guherandinên dawî ji rûpelên lînkkirî nîşandide. Ew rûpel yê di lîsteya te ya şopandinê da ne bi nivîsa '''estûr''' tên nîşandan.",
# Upload
'upload' => 'Wêneyekî barbike',
-'uploadbtn' => 'Wêneyê (ya tiÅ\9ftekî din ya mêdya) barbike',
+'uploadbtn' => 'Wêneyî (yan tiÅ\9ftekî din ê medyayê) bar bike',
'reuploaddesc' => 'Barkirinê biskîne û dîsa here rûpela barkirinê.',
-'uploadnologin' => 'Xwe qeyd nekir',
+'uploadnologin' => 'Xwe tomar nekir',
'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[Special:UserLogin|têkevî]].',
'uploaderror' => 'Çewtiya barkirinê',
'upload-recreate-warning' => "'''Agahdarî: Peleke bi vî navî hatiye jêbirin an jî raguhestin.'''",
'filestatus' => 'Rewşa telîfê:',
'filesource' => 'Çavkanî:',
'uploadedfiles' => 'Pelên barkirî',
-'ignorewarning' => 'Hişyarê qebûl neke û dosyayê qeyd bike.',
+'ignorewarning' => 'Guh nede hişyariyê û pelê qeyd bike',
'ignorewarnings' => 'Guh nede hişyariyan',
'minlength1' => "Navên data'yan bi kêmani gireke tîpek be.",
-'illegalfilename' => 'Navî datayê "$1" ne tê qebûlkirin ji ber ku tişt tê da hatine nivîsandin yê qedexe ne. Xêra xwe navî datayê biguherîne û carekî din barbike.',
+'illegalfilename' => 'Navê daneya "$1" nayê qebûlkirin ji ber ku tê de tiştên qedexekirî hatine nivîsandin.
+Ji kerema xwe re navê daneyê biguherîne û carekî din bar bike!',
'badfilename' => 'Navê vî wêneyî hat guherandin û bû "$1".',
'filetype-badmime' => 'Data bi formata MIME yê "$1" nameşin werin barkirin.',
'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' formatekî nexastî ye.
'file-thumbnail-no' => "Navî vê datayê bi '''<tt>$1</tt>''' destpêdike. Ev dibêje ku ev wêneyekî çûçik e ''(thumbnail)''. Xêra xwe seke, ku belkî versyonekî mezin yê vê wêneyê li cem te heye û wê wêneyê mezintir di bin navî orîjînal da barbike.",
'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
[[File:$1|thumb|center|$1]]',
-'uploadwarning' => 'Hişyara barkirinê',
+'uploadwarning' => 'Hişyariya barkirinê',
'savefile' => 'Dosyayê tomar bike',
-'uploadedimage' => '"$1" barkirî',
-'overwroteimage' => 'versyonekî nuh ji "[[$1]]" hate barkirin',
+'uploadedimage' => '"[[$1]]" hate barkirin',
+'overwroteimage' => 'versiyonekî nû ya "[[$1]]" hate barkirin',
'uploaddisabled' => 'Barkirin hatîye qedexekirin',
'uploaddisabledtext' => "Barkirinê data'yan hatiye qedexekirin.",
'uploadvirus' => "Di vê data'yê da vîrûsek heye! Înformasyon: $1",
'license-nopreview' => 'Pêşdîtin ne gengaz e.',
# Special:ListFiles
-'listfiles_search_for' => 'Li navî wêneyê bigere:',
+'listfiles_search_for' => 'Li navê wêneyî bigere:',
'imgfile' => 'dosye',
-'listfiles' => 'Listeya wêneyan',
+'listfiles' => 'Lîsteya wêneyan',
'listfiles_date' => 'Dem',
'listfiles_name' => 'Nav',
'listfiles_user' => 'Bikarhêner',
# File description page
'file-anchor-link' => 'Wêne',
-'filehist' => 'Dîroka datayê',
+'filehist' => 'Dîroka daneyê',
'filehist-help' => 'Ji bo dîtina guhertoya wê demê bişkoka dîrokê bitikîne.',
-'filehist-deleteall' => 'giştika jêbibe',
+'filehist-deleteall' => 'hemûyan jê bibe',
'filehist-deleteone' => 'jê bibe',
'filehist-revert' => 'şûnde vegerîne',
'filehist-current' => 'niha',
'linkstoimage-redirect' => '$1 (beralîkirina pelê) $2',
'sharedupload-desc-here' => 'Ev pel ji $1 û dibe ku ji aliyê projeyên din ve jî hatibe bikaranîn.
Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
-'uploadnewversion-linktext' => 'Versyonekî nû yê vê datayê barbike',
+'uploadnewversion-linktext' => 'Versiyoneke nû ya vê daneyê barbike',
'shared-repo-from' => 'ji $1',
# File reversion
'brokenredirects' => 'Beralîkirinên xerabûyî',
'brokenredirects-edit' => 'biguherîne',
-'brokenredirects-delete' => 'jêbibe',
+'brokenredirects-delete' => 'jê bibe',
'withoutinterwiki' => 'Rûpelên bê girêdanên ziman',
'withoutinterwiki-legend' => 'Pêşbendik',
'uncategorizedcategories' => 'Kategoriyên bê kategorî',
'uncategorizedimages' => 'Wêneyên bê kategorî',
'uncategorizedtemplates' => 'Şablonên bê kategorî',
-'unusedcategories' => 'Kategoriyên ku nayên bi kar anîn',
-'unusedimages' => 'Wêneyên ku nayên bi kar anîn',
+'unusedcategories' => 'Kategoriyên ku nayên bikaranîn',
+'unusedimages' => 'Wêneyên ku nayên bikaranîn',
'popularpages' => 'Rûpelên populer',
-'wantedcategories' => 'Kategoriyên tên xwestin',
+'wantedcategories' => 'Kategoriyên ku tên xwestin',
'wantedpages' => 'Rûpelên ku tên xwestin',
'wantedfiles' => 'Wêneyên ku tên xwestin',
-'wantedtemplates' => 'Şablonên tên xwestin',
+'wantedtemplates' => 'Şablonên ku tên xwestin',
'mostlinked' => 'Rûpelên bi bêhtirîn girêdan',
'mostlinkedcategories' => 'Kategoriyên bi bêhtirîn girêdan',
'mostcategories' => 'Rûpelên bi pir kategorî',
'movethispage' => 'Vê rûpelê bigerîne',
'notargettitle' => 'Hedef tune',
'pager-newer-n' => '{{PLURAL:$1|nûtir 1|nûtir $1}}',
-'pager-older-n' => '{{PLURAL:$1|kevintirin 1|kevintirin $1}}',
+'pager-older-n' => '{{PLURAL:$1|kevintir 1|kevintir $1}}',
# Book sources
'booksources' => 'Çavkaniyên pirtûkan',
'booksources-search-legend' => 'Li pirtûkan bigere',
'booksources-go' => 'Here',
-'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nuh ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
+'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nû ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
# Special:Log
'specialloguserlabel' => 'Bikarhêner:',
'special-categories-sort-abc' => 'li gorî alfabeyê rêzkirî ye',
# Special:DeletedContributions
-'deletedcontributions' => 'Guherandinên bikarhênerekî yê jêbirî',
+'deletedcontributions' => 'Beşdariyên bikarhênerekî yê jêbirî',
'deletedcontributions-title' => 'Guherandinên bikarhênerekî yê jêbirî',
'sp-deletedcontributions-contribs' => 'tevkarî',
# Special:LinkSearch
'linksearch' => 'Girêdanên derveyî',
'linksearch-ns' => 'Valahiya nav:',
-'linksearch-ok' => 'Lêbigere',
+'linksearch-ok' => 'Lêgerîn',
# Special:ListUsers
'listusers-submit' => 'Nîşan bide',
'listgrouprights' => 'Mafên koma bikarhêner',
'listgrouprights-group' => 'Kom',
'listgrouprights-rights' => 'Maf',
+'listgrouprights-helppage' => 'Help:Mafên koman',
'listgrouprights-members' => '(lîsteya endaman)',
'listgrouprights-addgroup-all' => 'Hemû koman tevlî bike',
'listgrouprights-removegroup-all' => 'Hemû koman jê bibe',
# E-mail user
'mailnologin' => 'Navnîşanê neşîne',
'mailnologintext' => 'Te gireke xwe [[Special:UserLogin|qeydbikê]] û adrêsa e-nameyan di [[Special:Preferences|tercihên xwe]] da nivîsandibe ji bo şandina e-nameyan ji bikarhênerên din ra.',
-'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
+'emailuser' => 'Ji bikarhêner re e-name bişîne',
'emailpage' => 'E-name bikarhêner',
'defemailsubject' => '{{SITENAME}} e-name',
'noemailtitle' => 'Navnîşana e-name tune',
'watchlist' => 'Lîsteya min a şopandinê',
'mywatchlist' => 'Lîsteya min a şopandinê',
'nowatchlist' => 'Tiştek di lîsteya te ya şopandinê de tune ye.',
-'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
-'watchnologin' => 'Te xwe qeyd nekiriye.',
-'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[Special:UserLogin|qedy kiribe]].',
+'watchlistanontext' => 'Ji kerema xwe ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê xwe $1.',
+'watchnologin' => 'Te xwe tomar nekiriye',
+'watchnologintext' => 'Ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê divê tu xwe [[Special:Userlogin|tomar bikî]].',
'addwatch' => 'Tevlî lîsteya şopandinê bike',
-'addedwatchtext' => "Rûpela \"<nowiki>\$1</nowiki>\" çû ser [[Special:Watchlist|lîsteya te ya şopandinê]].
-Li dahatû de her guhartoyek li wê rûpelê û rûpela gotûbêjê wê were kirin li vir dêt nîşan dan,
-
-Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina wê, ew rûpel bi '''Nivîsa estûr''' dê nîşan dayîn.
-
+'addedwatchtext' => "Rûpela \"[[:\$1]]\" çû ser [[{{ns:special}}:Watchlist|lîsteya te ya şopandinê]].
+Li dahatû de her guhertoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir tê nîşandan.
+
+Li rûpela [[{{ns:special}}:Recentchanges|Guherandinên dawî]] jî ji bo hêsan dîtina wê, ew rûpel bi '''Nivîsa stûr''' tê nîşandan.
-<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".</p>",
+Gava tu bixwazî wê rûpelê ji nav lîsteya xwe ya şopandinê derbixî, li ser wê rûpelê, \"êdî neşopîne\" bitikîne.",
'removewatch' => 'Ji lîsteya şopandinê derxe',
'removedwatchtext' => 'Rûpela "[[:$1]]" ji lîsteya te ya şopandinê hate jêbirin.',
'watch' => 'Bişopîne',
'watchnochange' => 'Ne rûpelek, yê tu dişopînê, hate xeyrandin di vê wextê da, yê tu dixazê bibînê.',
'watchlist-details' => '* {{PLURAL:$1|Rûpelek tê|$1 rûpel tên}} şopandin, rûpelên gotûbêjê nayên jimartin.',
'wlheader-enotif' => '* Agahdariya E-nameyê pêk tê.',
-'wlheader-showupdated' => "* Ew rûpel yê hatin xeyrandin jilkî te li wan sekir di '''nivîsa estûr''' tên pêşandin.",
+'wlheader-showupdated' => "* Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.",
'watchlistcontains' => 'Di lîsteya şopandina te de {{PLURAL:$1|rûpelek heye|$1 rûpel hene}}.',
'wlnote' => "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
-'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 (di sih rojên dawî de)',
+'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 nîşan bide',
'watchlist-options' => 'Vebijarkên lîsteya şopandinê',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Bişopîne...',
-'unwatching' => 'Neşopîne...',
+'unwatching' => 'Neşopîne…',
'enotif_reset' => 'Hemû rûpelan wek lêsekirî nîşanbide',
'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
# Delete
'deletepage' => 'Rûpelê jê bibe',
'confirm' => 'Pesend bike',
-'excontent' => "Naveroka berê: '$1'",
-'excontentauthor' => "Naverroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
-'exbeforeblank' => "Nawerok berî betal kirinê ew bû: '$1'
-Naverroka berî betalkirinê ev bû:'$1'",
+'excontent' => 'Naveroka berê: "$1"',
+'excontentauthor' => "Naveroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
+'exbeforeblank' => 'Naverok berî betalkirinê ev bû: "$1"',
'exblank' => 'rûpel vala bû',
'delete-confirm' => 'Jêbirina "$1"',
'delete-legend' => 'Jêbirin',
'actioncomplete' => 'Çalakî pêk hat',
'actionfailed' => 'Çalakî têkçû',
'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
-'dellogpage' => 'Jêbirina rûpelê',
+'dellogpage' => 'jêbirina rûpelê',
'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
'deletionlog' => 'jêbirina rûpelê',
'reverted' => 'Hate şondabirin berve verzyonekî berê',
'deletecomment' => 'Sedem:',
-'deleteotherreason' => 'Sedemekî din:',
+'deleteotherreason' => 'Sedema din:',
'deletereasonotherlist' => 'Sedema din',
'deletereason-dropdown' => '*Sedemên jêbirinê
** Daxwaziya xwedî
'delete-warning-toobig' => "Dîroka vê rûpelê pir mezin e, zêdetirî $1 guherandin. Jêbirina van rûpelan dikarin şaşbûnan di database'ê {{SITENAME}} da çêkin; zandibe tu çi dikê!",
# Rollback
-'rollback_short' => 'Bizivirîne pêş',
-'rollbacklink' => 'bizivirîne pêş',
-'cantrollback' => "Guharto naye vegerandin; bikarhêrê dawî, '''tenya''' nivîskarê wê rûpelê ye.",
+'rollback_short' => 'bizîvirîne pêş',
+'rollbacklink' => 'bizîvirîne pêş',
+'cantrollback' => 'Guherto naye vegerandin;
+bikarhênerê dawî, tenya nivîskarê vê rûpelê ye.',
'alreadyrolled' => 'Guherandina dawiya [[$1]]
-bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
+bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; kesekî din ew rûpel zîvirandiye an guherandiye.
-Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
+Guhertoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
'editcomment' => "Kurtenivîsê guherandinê ev bû: \"''\$1''\".",
'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
'rollback-success' => 'Guherandina $1 şondakir; dîsa guharte verzyona $2.',
'protect-default' => 'Destûrê bide hemû bikarhêneran',
'protect-level-autoconfirmed' => 'Bikarhênerên neqeydkirî astengbike',
'protect-level-sysop' => 'Tenê rêveber (admîn)',
-'protect-expiring' => 'heta rojê $1 (UTC)',
+'protect-expiring' => 'heta roja $1 (UTC)',
'protect-expiring-local' => 'di $1 de dema wê xilas dibe',
'protect-othertime' => 'Demeke din:',
'protect-othertime-op' => 'dema din',
'restriction-level-autoconfirmed' => 'nîv-parastî',
# Undelete
-'undelete' => 'Li rûpelên jêbirî seke',
+'undelete' => 'Li rûpelên jêbirî binêre',
'undeletepage' => 'Rûpelên jêbirî bibîne û dîsa çêke',
-'viewdeletedpage' => 'Rûpelên vemirandî seke',
+'viewdeletedpage' => 'Li rûpelên jêbirî binêre',
'undeletepagetext' => 'Rûpelên jêr hatine jêbirin, lê ew hên di arşîvê da ne û dikarin dîsa werin çêkirin. Ev arşîva piştî demekê tê pakkirin.',
'undeleteextrahelp' => "Ji bo dîsaçêkirina vê rûpelê, li checkbox'an nexe û li '''''Dîsa çêke''''' klîk bike. Eger tu naxazî ku hemû verzyon dîsa werin çêkirin, li checkbox'ên wan verzyonan xe, yê tu dixazî dîsa çêkê û paşê li '''''Dîsa çêke'''' klîk bike. Eger tu li '''''Biskine''''' xê, hemû checkbox û cihê sedemê yê werin valakirin.",
'undeleterevisions' => '$1 {{PLURAL:$1|rêvîzyonek çû|rêvîzyon çûn}} arşîv',
-'undeletehistory' => 'Eger tu vê rûpelê dîsa çêkê, hemû rêvîzyon ê dîsa di dîrokê da werin çêkirin. Eger rûpeleka nuh ji dema jêbirinê da hatîye çêkirin, ew rêvîzyon ê werin pêşî diroka nuh.',
+'undeletehistory' => 'Ger tu vê rûpelê dîsa çêkî, hemû guherto wê dîsa di dîrokê de werin çêkirin.
+Ger rûpeleke nû di dema jêbirinê de hatibe çêkirin, ew guherto wê were pêşiya diroka nû.',
'undelete-revision' => 'Rêvîzyonên jêbirî yê $1 (di $2) ji $3:',
'undelete-nodiff' => 'Guhertoyên berê nehatin dîtin.',
'undeletebtn' => 'Dîsa çêke!',
'undeletereset' => 'Nû bike',
'undeleteinvert' => 'Hilbijartinê şûnde vegerîne',
'undeletecomment' => 'Sedem:',
-'undeletedrevisions' => '{{PLURAL:$1|Verzyonek dîsa hate|$1 verzyon dîsa hatin}} çêkirin',
-'undeletedrevisions-files' => '{{PLURAL:$1|Verzyonek|$1 verzyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
+'undeletedrevisions' => '{{PLURAL:$1|Versiyonek dîsa hate|$1 versiyon dîsa hatin}} çêkirin',
+'undeletedrevisions-files' => '{{PLURAL:$1|Versiyonek|$1 versiyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
'undeletedfiles' => '{{PLURAL:$1|Medyayek hate|$1 medya hatin}} çêkirin',
'undeletedpage' => "'''$1 dîsa hate çêkirin'''
-Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşahîya jêbirinê]] da seke.",
-'undelete-header' => '[[Special:Log/delete|Reşahîya jêbirinê]] bibîne ji bo rûpelên jêbirî.',
-'undelete-search-box' => 'Rûpelên jêbirî lêbigere',
-'undelete-search-prefix' => 'Rûpela pêşe min ke ê bi vê destpêdîkin:',
+Ji bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/delete|Jêbirina têketinê]] binêre.",
+'undelete-header' => 'Ji bo rûpelên dawî hatine jêbirin, li [[Special:Log/delete|Jêbirina têketinê]] binêre.',
+'undelete-search-box' => 'Li rûpelên jêbirî bigere',
+'undelete-search-prefix' => 'Rûpela nîşandanê bi vê destpêdike:',
'undelete-search-submit' => 'Lêgerîn',
'undelete-show-file-submit' => 'Erê',
'mycontris' => 'Beşdariyên min',
'contribsub2' => 'Ji bo $1 ($2)',
'uctop' => '(ser)',
-'month' => 'Ji mehê (û zûtir):',
-'year' => 'Ji salê (û zûtir):',
+'month' => 'Ji meha (û zûtir):',
+'year' => 'Ji sala (û zûtir):',
'sp-contributions-newbies' => 'Tenê beşdariyên bikarhênerên nû nîşan bide',
'sp-contributions-newbies-sub' => 'Ji bikarhênerên nû re',
'sp-contributions-talk' => 'gotûbêj',
'sp-contributions-userrights' => 'Îdarekirina mafên bikarhêneran',
'sp-contributions-search' => 'Li beşdariyan bigere',
-'sp-contributions-username' => 'Adresê IP ya navî bikarhêner:',
+'sp-contributions-username' => "Adresa IP'yê yan navê bikarhêner:",
'sp-contributions-submit' => 'Lêgerîn',
# What links here
'whatlinkshere' => 'Girêdanên li ser vê rûpelê',
'whatlinkshere-title' => 'Rûpelan, yê berve $1 tên',
'whatlinkshere-page' => 'Rûpel:',
-'linkshere' => "Ev rûpel tên ser vê rûpelê '''„[[:$1]]“''':",
-'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''„[[:$1]]“'''.",
+'linkshere' => "Ev rûpel tên ser vê rûpelê '''[[:$1]]''':",
+'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''[[:$1]]'''.",
'nolinkshere-ns' => "Ne lînkek berve '''[[:$1]]''' di vê namespace'a da tê.",
'isredirect' => 'rûpelê beralî bike',
'istemplate' => 'tê bikaranîn',
'ipadressorusername' => "adresê IP'yekê ya navekî bikarhênerekî",
'ipbexpiry' => 'Dem:',
'ipbreason' => 'Sedem',
-'ipbreasonotherlist' => 'Sedemekî din',
+'ipbreasonotherlist' => 'Sedemeke din',
'ipbreason-dropdown' => '*Sedemên astengkirinê
** vandalîzm
** agahiya şaş kire gotarekê
** navekî ku nayê pejirandin',
'ipbcreateaccount' => 'Çêkirina hesaban qedexe bike',
'ipbemailban' => 'Ji bo şandina e-nameyan qedexe bike.',
-'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nuh yê vê bikarhênerê astengbike.",
+'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nû yê vê bikarhênerê astengbike.",
'ipbsubmit' => 'Vê bikarhêner asteng bike',
'ipbother' => 'Demekî din:',
-'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
+'ipboptions' => '2 saet:2 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 meh:1 month,3 meh:3 months,6 meh:6 months,1 sal:1 year,ji her demê re:infinite',
'ipbotheroption' => 'yên din',
-'ipbotherreason' => 'Sedemekî din',
-'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nuh û lîsteya bikarhêneran veşêre',
+'ipbotherreason' => 'Sedemeke din',
+'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nû û lîsteya bikarhêneran veşêre',
'ipbwatchuser' => 'Rûpelên bikarhêner û gotûbêjê bişopîne',
'ipb-confirm' => 'Astengkirinê piştrast bike',
'badipaddress' => 'Bikarhêner bi vî navî tune',
-'blockipsuccesssub' => 'Astengkirin serkeftî bû',
+'blockipsuccesssub' => 'Astengkirin pêkhat',
'blockipsuccesstext' => '"$1" hat asteng kirin.
<br />Bibîne [[Special:BlockList|Lîsteya IP\'yan hatî asteng kirin]] ji bo lîsteya blokan.',
'ipb-edit-dropdown' => 'Sedemên astengkirinê',
'ipb-blocklist-contribs' => 'Beşdariyên ji bo $1',
'unblockip' => "IP'yekê dîsa veke",
'unblockiptext' => "Nivîsara jêr bikarwîne ji bo qebûlkirina nivîsandinê bikarhênerekî ya IP'yeka berê astengkirî.",
-'ipusubmit' => 'Astengkirina vê adrêsê rake',
+'ipusubmit' => 'Vê astengkirinê rake',
'unblocked' => '[[User:$1|$1]] niha vê astengkirinê ye',
'unblocked-id' => '$1 dîsa vê astengkirinê ye',
'blocklist' => 'Bikarhênerên astengkirî',
'ipblocklist' => "Listek ji adresên IP'yan û bikarhêneran yê hatine astengkirin",
-'ipblocklist-legend' => 'Bikarhênerekî astengkirî bibîne',
+'ipblocklist-legend' => 'Bikarhênerên astengkirî bibîne',
'blocklist-userblocks' => 'Astengkirina hesaban veşêre',
'blocklist-tempblocks' => 'Astengkirinên demkî veşêre',
'blocklist-rangeblocks' => 'Astengkirinên cur bi cur veşêre',
'change-blocklink' => 'Astengkirinê biguherîne',
'contribslink' => 'beşdarî',
'emaillink' => 'e-name bişîne',
-'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Otomatîk hate astengkirin ji ber ku IP\'ya wê û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'$2\'\'"',
'blocklogpage' => 'Astengkirina têketinê',
-'blocklogentry' => '"[[$1]]" ji bo dema $2 $3 hatîye asteng kirin',
+'blocklogentry' => '"[[$1]]" ji bo dema $2, $3 asteng kir',
'blocklogtext' => "Ev reşahîyek ji astengkirinên û rakirina astengkirinên bikarhêneran ra ye. Adrêsên IP'yan, yê otomatîk hatine astengkirin, nehatine nivîsandin. [[Special:BlockList|Lîsteya IP'yên astengkirî]] bibîne ji bo dîtina astengkirinên IP'yan.",
'unblocklogentry' => 'astenga "$1" betalkir',
'block-log-flags-anononly' => 'bes bikarhênerên neqeydkirî',
'block-log-flags-noemail' => 'Şandina e-nameyan hatîye qedexekirin',
'block-log-flags-nousertalk' => 'nikare gotûbêja xwe biguherîne',
'block-log-flags-hiddenname' => 'navê bikarhêneriyê yê veşartî',
-'ipb_expiry_invalid' => 'Dem ne serrast e.',
+'ipb_expiry_invalid' => 'Dem ne serast e.',
'ipb_already_blocked' => '"$1" berê hatîye astengkirin',
'ipb-needreblock' => '$1 berê hatiye astengkirin. Tu dixwazî eyaran biguherînî?',
'ipb_cant_unblock' => "Şaşbûn: ID'ya astengkirinê $1 nehate dîtin. Astengkirinê xwe niha belkî hatîye rakirin.",
# Move page
'move-page' => '$1 bigerîne',
'move-page-legend' => 'Vê rûpelê bigerîne',
-'movepagetalktext' => "Rûpela '''guftûgoyê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
+'movepagetalktext' => "Rûpela '''gotûbêjê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
-*berê guftûgoyek bi wê navê hebe ya
+*berê gotûbêjek bi wî navî hebe ya
*tu tiştekî jêr hilbijêrê.
Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
-Xêra xwe navî nuh û sedemê navgerandinê binivisîne.",
+Xêra xwe navê nû û sedemê navgerandinê binivisîne.",
'movearticle' => 'Rûpelê bigerîne',
-'movenologin' => 'Xwe qeyd nekir',
+'movenologin' => 'Xwe tomar nekir',
'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[Special:UserLogin|werî nav sîstemê]]
da bikarî navê wê rûpelê biguherînî.',
'movenotallowed' => 'Mafên te bo guherandina navên gotaran tune ye.',
'movepage-page-exists' => 'Rûpela $1 berê heye û ew nikane otomatîk were jêbirin.',
'movepage-page-moved' => 'Rûpela $1 çû cihê $2.',
'movepage-page-unmoved' => 'Rûpela $1 nikanî çûba ciha $2.',
-'movelogpage' => 'Nav guherandin',
+'movelogpage' => 'guhertina nav',
'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
'movereason' => 'Sedem',
'revertmove' => 'şûnde vegerîne',
'export-download' => 'Weka dosyeyê qeyd bike',
# Namespace 8 related
-'allmessages' => 'Hemû mesajên sîstemê',
+'allmessages' => 'Hemû peyamên sîstemê',
'allmessagesname' => 'Nav',
'allmessagescurrent' => 'Nivîsa niha',
-'allmessagestext' => 'Ev lîsteya hemû mesajên di namespace a MediaWiki: de ye.',
+'allmessagestext' => 'Lîsteya hemû peyamên MediaWikiyê.',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nikare were bikaranîn ji ber ku '''\$wgUseDatabaseMessages''' hatiye jêbirin.",
'allmessages-filter-legend' => 'Parzûn',
'allmessages-filter-unmodified' => 'Neguhertî',
-'allmessages-filter-all' => 'hemû',
+'allmessages-filter-all' => 'Hemû',
'allmessages-filter-modified' => 'Guhertî',
'allmessages-language' => 'Ziman',
'allmessages-filter-submit' => 'Gotar',
'tooltip-ca-talk' => 'Gotûbêj li ser rûpela naverokê',
'tooltip-ca-edit' => 'Vê rûpelê biguherîne! Berê qeydkirinê bişkoka "Pêşdîtin',
'tooltip-ca-addsection' => 'Beşekê zêde bike.',
-'tooltip-ca-viewsource' => 'Ev rûpela tê parastin. Tu dikarê bes li çavkanîyê sekê.',
+'tooltip-ca-viewsource' => 'Ev rûpel tê parastin.
+Tu dikarî tenê li çavkaniyê binêrî.',
'tooltip-ca-history' => 'Guhertoyên berê yên vê rûpelê',
'tooltip-ca-protect' => 'Vê rûpelê biparêze',
'tooltip-ca-unprotect' => 'Parastina vê rûpelê rake',
'tooltip-search' => 'Li {{SITENAME}} bigere',
'tooltip-search-go' => 'Here rûpeleke tev bi vî navî, heke hebe',
'tooltip-search-fulltext' => 'Di nav rûpelan de li vê nivîsê bigerre',
-'tooltip-p-logo' => 'Biçe Destpêkê',
+'tooltip-p-logo' => 'Here Destpêkê',
'tooltip-n-mainpage' => 'Biçe Destpêkê',
-'tooltip-n-mainpage-description' => 'Biçe Destpêkê',
+'tooltip-n-mainpage-description' => 'Here Destpêkê',
'tooltip-n-portal' => 'Agahdarî li ser {{SITENAME}}, tu dikarî çi bikî, tu dikarî çi li ku bîbînî',
'tooltip-n-recentchanges' => "Lîsteya guherandinên dawî di vê Wîkî'yê da.",
'tooltip-n-randompage' => 'Rûpeleka ketober bar bike',
'tooltip-n-help' => 'Bersivên ji bo pirsên te.',
-'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku ji vê re grêdidin.',
+'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku pê ve girêdayî ne.',
'tooltip-t-recentchangeslinked' => 'Recent changes in pages linking to this page',
'tooltip-feed-rss' => "RSS feed'ên ji bo rûpelê",
'tooltip-feed-atom' => "Atom feed'ên ji bo vê rûpelê",
'tooltip-t-specialpages' => 'Lîsteya hemû rûpelên taybetî',
'tooltip-t-print' => 'Versiyona çapkirinê ya vê rûpelê',
'tooltip-ca-nstab-main' => 'Li rûpela naverokê binêre',
-'tooltip-ca-nstab-user' => 'Rûpela bikarhênerê/î temaşe bike',
+'tooltip-ca-nstab-user' => 'Rûpela bikarhêner bibîne',
'tooltip-ca-nstab-special' => 'This is a special page, you can',
'tooltip-ca-nstab-project' => 'Li rûpelê projektê seke',
'tooltip-ca-nstab-image' => 'Rûpela dosyeyê bibîne',
-'tooltip-ca-nstab-template' => 'Şablonê nîşanbide',
+'tooltip-ca-nstab-template' => 'Şablonê nîşan bide',
'tooltip-ca-nstab-help' => 'Rûpela alîkariyê bibîne',
'tooltip-ca-nstab-category' => 'Li rûpelê kategorîyê seke',
'tooltip-minoredit' => 'Vê guherandinê weka biçûk îşaret bike',
'tooltip-save' => 'Guherandinên xwe tomarbike',
'tooltip-preview' => 'Guherandinên xwe bibîne, berî ku tu wî qeyd bikî!',
'tooltip-diff' => 'Guherandinên ku te di nivîsê de kirîyî nîşan bide',
-'tooltip-compareselectedversions' => 'Cudatiyên guhartoyên hilbijartî yên vê rûpelê bibîne.',
+'tooltip-compareselectedversions' => 'Cudatiyên guhertoyên hilbijartî yên vê rûpelê bibîne.',
'tooltip-watch' => 'Vê rûpelê têke nav lîsteya te ya şopandinê',
'tooltip-upload' => 'Barkirinê destpêke',
# Attribution
'anonymous' => 'Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}',
-'siteuser' => 'Bikarhênera/ê $1 a/ê {{SITENAME}}',
+'siteuser' => 'Bikarhênera $1 ê {{SITENAME}}',
'others' => 'ên din',
'siteusers' => 'Bikarhênerên $1 yên {{SITENAME}}',
# Spam protection
'spamprotectiontitle' => 'Parastina spam',
-'spamprotectiontext' => 'Ew rûpela yê tu dixast tomarbikê hate astengkirin ji ber ku parastina spam. Ew çêbû ji ber ku lînkekî derva di vê rûpelê da ye.',
+'spamprotectiontext' => 'Rûpela ku tu dixwazî tomar bikî ji ber parastina spamê hate astengkirin.
+Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
'spamprotectionmatch' => 'Ev nivîsa parastinê spam vêxist: $1',
# Info page
'pageinfo-views' => 'Hejmara dîtinê',
# Patrolling
-'markaspatrolleddiff' => 'Wek serrastkirî nîşanbide',
-'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşanbide',
+'markaspatrolleddiff' => 'Wek serrastkirî nîşan bide',
+'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşan bide',
'markedaspatrolled' => 'Wek serrastkirî tê nîşandan',
'markedaspatrolledtext' => 'Guherandina rûpelê wek serrastkirî tê nîşandan.',
# Image deletion
'deletedrevision' => 'Guhertoya berê $1 hate jêbirin.',
-'filedelete-missing' => 'Data\'yê "$1" nikane were jêbirin, ji ber ku ew tune.',
-'filedelete-current-unregistered' => 'Datayê "$1" di sistêmê da tune.',
+'filedelete-missing' => 'Dane "$1" nikare were jêbirin, ji ber ku ew tune ye.',
+'filedelete-current-unregistered' => 'Daneya "$1" li sîstemê tune ye.',
# Browsing diffs
'previousdiff' => '← Cudahiya pêştir',
'thumbsize' => 'Mezinahiya wêne:',
'widthheight' => '$1 x $2',
'widthheightpage' => '$1 × $2, $3 rûpel',
-'file-info' => 'mezinbûnê data: $1, MIME-typ: $2',
+'file-info' => 'mezinbûna daneyê: $1, MIME type: $2',
'file-info-size' => '$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4',
'file-nohires' => 'Versyonekî jê mezintir tune.',
'svg-long-desc' => 'Daneya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna daneyê: $3',
'noimages' => 'Ne tiştek tê dîtin.',
'ilsubmit' => 'Lêgerîn',
'bydate' => 'li gor dîrokê',
-'sp-newimages-showfrom' => "Data'yên nuh ji dema $1, saet $2 da bibîne",
+'sp-newimages-showfrom' => 'Daneyên nû ji dema $1, saet $2 ve bibîne',
# Variants for Kurdish language
-'variantname-ku-arab' => 'tîpên erebî',
-'variantname-ku-latn' => 'tîpên latînî',
+'variantname-ku-arab' => 'Tîpên erebî',
+'variantname-ku-latn' => 'Tîpên latînî',
'variantname-ku' => 'disable',
# Metadata
'exif-imagewidth' => 'Panbûn',
'exif-imagelength' => 'Dirêjbûn',
'exif-jpeginterchangeformatlength' => "Byte'ên daneya JPEG",
-'exif-imagedescription' => 'Navî wêneyê',
+'exif-imagedescription' => 'Navê wêne',
'exif-model' => 'Modela kamerayê',
'exif-artist' => 'Nûser',
'exif-pixelydimension' => 'Firehiya wêne',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'hemû',
'namespacesall' => 'Hemû',
-'monthsall' => 'giştik',
+'monthsall' => 'hemû',
'limitall' => 'hemû',
# E-mail address confirmation
'confirmemail' => 'Adrêsa e-nameyan nasbike',
-'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandîye.',
+'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandiye.',
'confirmemail_success' => 'E-Mail adrêsa te hate naskirin. Tu niha dikarî xwe qeydbikê û kêfkê.',
-'confirmemail_loggedin' => 'Adrêsa te yê E-Mail hate qebûlkirin.',
+'confirmemail_loggedin' => 'Navnîşana te ya E-Nameyê hate qebûlkirin.',
'confirmemail_body' => 'Kesek, dibê tu, bi IP adressê $1, xwe li {{SITENAME}} bi vê navnîşana e-name tomar kir ("$2") .
Eger ev rast qeydkirinê te ye û di dixwazî bikaranîna e-nama ji te ra çêbibe li {{SITENAME}}, li vê lînkê bitikîne:
'scarytranscludetoolong' => '[URL zêde dirêj e; bibore]',
# Delete conflict
-'deletedwhileediting' => 'Hîşyar: Piştî te guherandinê xwe dest pê kir ev rûpela hate jêbirin!',
+'deletedwhileediting' => "'''Hişyarî:''' Piştî te dest bi guherandinê kir ev rûpel hate jêbirin!",
'confirmrecreate' => "Piştî te dest bi guherandinê kir, bikarhêner [[User:$1|$1]] ([[User talk:$1|gotûbêj]]) ev rûpel jê bir. Sedema jêbirinê ev bû:
: ''$2''
Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
'imgmultigoto' => 'Here rûpela $1',
# Table pager
-'table_pager_next' => 'Rûpelê din',
-'table_pager_prev' => 'Rûpelê berî',
-'table_pager_first' => 'Rûpelê yekemîn',
-'table_pager_last' => 'Rûpelê dawî',
+'table_pager_next' => 'Rûpela pêş',
+'table_pager_prev' => 'Rûpela berî',
+'table_pager_first' => 'Rûpela pêşîn',
+'table_pager_last' => 'Rûpela dawî',
'table_pager_limit_submit' => 'Biçe',
# Auto-summaries
'autosumm-blank' => 'Rûpel hate vala kirin',
'autosumm-replace' => "'$1' ket şûna rûpelê.",
'autoredircomment' => 'ji bo [[$1]] hate beralîkirin',
-'autosumm-new' => 'Rûpela nû: $1',
+'autosumm-new' => 'Rûpela nû: "$1"',
# Live preview
'livepreview-loading' => 'Tê…',
'livepreview-ready' => 'Bar dibe… Amade ye!',
# Friendlier slave lag warnings
-'lag-warn-normal' => 'Xeyrandin yê piştî $1 sanîyan hatine çêkirin belkî netên wêşendan.',
+'lag-warn-normal' => 'Sererastkirinên piştî $1 çirkeyan hatine çêkirin belkî neyên weşandin.',
'lag-warn-high' => 'Ji bo westinê sistêmê ew xeyrandin, yê piştî $1 sanîyan hatine çêkirin netên wêşendan.',
# Watchlist editor
'watchlistedit-normal-title' => 'Lîsteya xwe ya şopandinê biguherîne',
'watchlistedit-normal-legend' => 'Gotaran ji lîsteya min ya şopandinê rake',
'watchlistedit-normal-submit' => 'Gotaran jê bibe',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotaran hatin}} jêbirin ji lîsteya te yê şopandinê:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin ji lîsteya te yê şopandinê:',
'watchlistedit-raw-titles' => 'Sernav:',
'watchlistedit-raw-removed' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin:',
# Special:FileDuplicateSearch
'fileduplicatesearch-filename' => 'Navê dosyeyê:',
-'fileduplicatesearch-submit' => 'Lêbigere',
+'fileduplicatesearch-submit' => 'Lê bigere',
# Special:SpecialPages
'specialpages' => 'Rûpelên taybet',
* <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',
-'specialpages-group-changes' => 'Guherandinên dawî û reşahîyan',
+'specialpages-group-changes' => 'Guherandinên dawî û têketin',
'specialpages-group-media' => 'Nameyên medyayan û barkirinan',
'specialpages-group-users' => 'Bikarhêner û maf',
'specialpages-group-pages' => 'Lîstên rûpelan',
'Diskussión_de_Kateggoría' => NS_CATEGORY_TALK,
);
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Activeusers' => array( 'UsadoresAktivos' ),
'Allmessages' => array( 'TodosLosMessajes' ),
'spamprotectionmatch' => 'Следниот текст е она што го предизвика нашиот филтер за спам: $1',
'spambot_username' => 'МедијаВики чистач на спам',
'spam_reverting' => 'Враќам на последната верзија што не содржи врска до $1',
-'spam_blanking' => 'Сите верзии содржеа врски до $1, бришам',
+'spam_blanking' => 'Сите ревизии содржеа врски до $1. Чистам',
+'spam_deleting' => 'Сите ревизии содржеа врски до $1. Бришам',
# Info page
'pageinfo-title' => 'Информации за „$1“',
'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
'tog-watchmoves' => 'ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
'tog-watchdeletion' => 'ഞാൻ നീക്കം ചെയ്യുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
-'tog-minordefault' => 'à´\8eà´²àµ\8dലാ തിരàµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി à´¸àµ\8dവയà´\82 അടയാളപ്പെടുത്തുക',
+'tog-minordefault' => 'à´\8eà´²àµ\8dലാ തിരàµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´¸àµ\8dവതàµ\87 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി അടയാളപ്പെടുത്തുക',
'tog-previewontop' => 'തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക',
'tog-previewonfirst' => 'ആദ്യത്തെ തിരുത്തലിന്റെ പ്രിവ്യൂ കാണിക്കുക',
'tog-nocache' => 'ബ്രൗസറിൽ താളുകൾ തദ്ദേശീയമായി സംഭരിച്ചുവയ്ക്കുന്നത് നിർജ്ജീവമാക്കുക',
'underline-default' => 'ബ്രൗസറിലേതു പോലെ',
# Font style option in Special:Preferences
-'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി',
+'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി:',
'editfont-default' => 'ബ്രൗസറിലേതു പോലെ',
'editfont-monospace' => 'മോണോസ്പേസ്ഡ് ഫോണ്ട്',
'editfont-sansserif' => 'സാൻസ്-സെറിഫ് ഫോണ്ട്',
'category-file-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന ഒരു പ്രമാണം മാത്രമാണുള്ളത്.|ഈ വർഗ്ഗത്തിൽ മൊത്തം $2 പ്രമാണങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
'category-file-count-limited' => 'ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
'listingcontinuesabbrev' => 'തുടർച്ച.',
-'index-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെട്ട താളുകൾ',
-'noindex-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെടാത്ത താളുകൾ',
+'index-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെട്ട താളുകൾ',
+'noindex-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെടാത്ത താളുകൾ',
'broken-file-category' => 'പ്രമാണത്തിലേക്കുള്ള പ്രവർത്തനരഹിതമായ കണ്ണി ഉൾക്കൊള്ളുന്ന താളുകൾ',
'about' => 'വിവരണം',
'vector-view-viewsource' => 'മൂലരൂപം കാണുക',
'actions' => 'നടപടികൾ',
'namespaces' => 'നാമമേഖല',
-'variants' => 'à´\9aà´°ങ്ങൾ',
+'variants' => 'à´°àµ\82à´ªà´àµ\87à´¦ങ്ങൾ',
'errorpagetitle' => 'പിഴവ്',
'returnto' => '$1 എന്ന താളിലേക്ക് തിരിച്ചുപോവുക.',
'toolbox' => 'പണിസഞ്ചി',
'userpage' => 'ഉപയോക്താവിന്റെ താൾ കാണുക',
'projectpage' => 'പദ്ധതി താൾ കാണുക',
-'imagepage' => 'à´®àµ\80à´¡à´¿à´¯ താൾ കാണുക',
+'imagepage' => 'à´ªàµ\8dരമാണ താൾ കാണുക',
'mediawikipage' => 'സന്ദേശങ്ങളുടെ താൾ കാണുക',
'templatepage' => 'ഫലകം താൾ കാണുക',
'viewhelppage' => 'സഹായം താൾ കാണുക',
'youhavenewmessages' => 'താങ്കൾക്ക് $1 ഉണ്ട് ($2).',
'newmessageslink' => 'പുതിയ സന്ദേശങ്ങൾ',
'newmessagesdifflink' => 'അവസാന മാറ്റം',
-'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1-ൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
+'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1 താളിൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
'editsection' => 'തിരുത്തുക',
'editold' => 'തിരുത്തുക',
'viewsourceold' => 'മൂലരൂപം കാണുക',
'feedlinks' => 'ഫീഡ്:',
'feed-invalid' => 'അസാധുവായ സബ്സ്ക്രിപ്ഷൻ ഫീഡ് തരം.',
'feed-unavailable' => 'സിൻഡിക്കേഷൻ ഫീഡുകൾ ലഭ്യമല്ല',
-'site-rss-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86ർ.à´\8eà´¸àµ\8d.à´\8eà´¸àµ\8d à´«àµ\80à´¡àµ\8d',
-'site-atom-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86à´±àµ\8dà´±à´\82 à´«àµ\80à´¡àµ\8d',
-'page-rss-feed' => '"$1" ന്റെ ആർ.എസ്.എസ്. ഫീഡ്',
+'site-rss-feed' => '$1 ആർ.എസ്.എസ് ഫീഡ്',
+'site-atom-feed' => '$1 ആറ്റം ഫീഡ്',
+'page-rss-feed' => '"$1" ആർ.എസ്.എസ്. ഫീഡ്',
'page-atom-feed' => '"$1" ആറ്റം ഫീഡ്',
'feed-atom' => 'ആറ്റം',
'feed-rss' => 'ആർ.എസ്.എസ്.',
'missingarticle-rev' => '(മാറ്റം#: $1)',
'missingarticle-diff' => '(വ്യത്യാസം: $1, $2)',
'readonly_lag' => 'വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു അതേസമയം കീഴ്-വിവരശേഖര സെർവറുകൾ മാസ്റ്റർ വരെ പിടിച്ചിരിക്കുന്നു',
-'internalerror' => 'ആന്തരികപ്രശ്നം',
-'internalerror_info' => 'ആന്തരികപ്രശ്നം: $1',
+'internalerror' => 'ആന്തരിക പിഴവ്',
+'internalerror_info' => 'ആന്തരിക പിഴവ്: $1',
'fileappenderrorread' => 'കൂട്ടിച്ചേർക്കുന്ന സമയം "$1" വായിച്ചെടുക്കാൻ കഴിഞ്ഞില്ല.',
'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകർത്താൻ സാധിച്ചില്ല.',
'yourpassword' => 'രഹസ്യവാക്ക്:',
'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
'remembermypassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
-'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aതിനàµ\81 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. ഉപയോഗിക്കുക',
+'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശനതàµ\8dതിനàµ\81 à´¶àµ\87à´·à´µàµ\81à´\82 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. തനàµ\8dà´¨àµ\86 ഉപയോഗിക്കുക',
'yourdomainname' => 'താങ്കളുടെ ഡൊമെയിൻ:',
'externaldberror' => 'ഒന്നുകിൽ ഡേറ്റാബേസ് സാധൂകരണത്തിൽ പ്രശ്നം ഉണ്ടായിരുന്നു അല്ലെങ്കിൽ നവീകരിക്കുവാൻ താങ്കളുടെ ബാഹ്യ അംഗത്വം താങ്കളെ അനുവദിക്കുന്നില്ല.',
'login' => 'പ്രവേശിക്കുക',
# Watchlist editing tools
'watchlisttools-view' => 'ബന്ധപ്പെട്ട മാറ്റങ്ങൾ കാട്ടുക',
-'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ താളàµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95à´¾à´\9fàµ\8dà´\9fുക, തിരുത്തുക',
+'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ താളàµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95ാണുക, തിരുത്തുക',
'watchlisttools-raw' => 'താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ മൂലരൂപം തിരുത്തുക',
# Signatures
'revdelete-unrestricted' => 'കാര്യനിർവാഹകർക്ക് ഏർപ്പെടുത്തിയ പ്രവർത്തന അതിരുകൾ നീക്കം ചെയ്തിരിക്കുന്നു',
'logentry-move-move' => '$1 എന്ന ഉപയോക്താവ് $3 എന്ന താൾ $4 എന്നാക്കി മാറ്റിയിരിക്കുന്നു',
'logentry-move-move-noredirect' => '$3 എന്ന താൾ $4 എന്ന തലക്കെട്ടിലേയ്ക്ക് തിരിച്ചുവിടലില്ലാതെ $1 മാറ്റി',
-'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
+'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനു മുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
'logentry-move-move_redir-noredirect' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക്, തിരിച്ചുവിടൽ ഇല്ലാതെ മാറ്റിയിരിക്കുന്നു',
'logentry-patrol-patrol' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
'logentry-patrol-patrol-auto' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 സ്വതേ അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
NS_CATEGORY_TALK => 'Neneuhcāyōtl_tēixnāmiquiliztli',
);
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
$namespaceAliases = array(
'Media' => NS_MEDIA,
'Especial' => NS_SPECIAL,
$NEWPAGE
In tlapatlaliztli īxtlamatiliztli cah: $PAGESUMMARY $PAGEMINOREDIT
-
+
Xicnotzāz in tlapatlani:
Correo electrónico: {{canonicalurl:Special:Emailuser|target=$PAGEEDITOR}}
Huiqui: {{canonicalurl:User:$PAGEEDITOR}}
<?php
-/** Norwegian (bokmål) (Norsk (bokmål))
+/** Norwegian (bokmål) (norsk (bokmål))
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
* @ingroup Language
* @file
*
+ * @author Jeblad
*/
$fallback = 'nb';
Du kan endre sidens beskyttelsesnivå, men det vil ikke påvirke dypbeskyttelsen.',
'protect-default' => 'Tillat alle brukere',
'protect-fallback' => 'Må ha «$1»-tillatelse',
-'protect-level-autoconfirmed' => 'Blokker nye og uregistrerte brukere',
+'protect-level-autoconfirmed' => 'Eastte anonyma ja ođđa geavaheddjiid',
'protect-level-sysop' => 'Kun administratorer',
'protect-summary-cascade' => 'dypbeskyttelse',
'protect-expiring' => 'utløper $1 (UTC)',
ଏଥିରେ ଥିବା ଗୋଟିଏ ବା ଦୁଇଟି ଅକ୍ଷର ଶିରୋନାମା ଭାବରେ ବ୍ୟବହାର କରାଯାଇ ପାରିବ ନାହିଁ ।',
'allpages-bad-ns' => '{{SITENAME}}ରେ "$1" ନେମସ୍ପେସଟିଏ ନାହିଁ ।',
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'ନୂତନତମ ଦେଖନ୍ତୁ ।',
+
# Special:Categories
'categories' => 'ଶ୍ରେଣୀସମୂହ',
'categoriespagetext' => 'ତଳଲିଖିତ {{PLURAL:$1|ଶ୍ରେଣୀ|ଶ୍ରେଣୀସମୂହ}}ରେ ପୃଷ୍ଠା ବା ମେଡ଼ିଆ ରହିଅଛି ।
'import-logentry-interwiki' => '$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା',
'import-logentry-interwiki-detail' => '$2 ଭିତରୁ $1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}',
+# JavaScriptTest
+'javascripttest-disabled' => 'ଏହି ଉଇକିରେ ଏହି ବ୍ୟବସ୍ଥାଟିକୁ ସଚଳ କରାଯାଇନାହି ।',
+
# Tooltip help for the actions
'tooltip-pt-userpage' => 'ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠା',
'tooltip-pt-anonuserpage' => 'ଆପଣ ଯେଉଁ IP ଠିକଣାର ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାଟି ବଦଳାଇବା ପାଇଁ ଚେଷ୍ଟା କରୁଛନ୍ତି',
'version-software' => 'ଇନଷ୍ଟଲ ହୋଇଥିବା ସଫ୍ଟୱାର',
'version-software-product' => 'ଉତ୍ପାଦ',
'version-software-version' => 'ସଂସ୍କରଣ',
+'version-entrypoints-header-url' => 'ଇଉଆରଏଲ',
# Special:FilePath
'filepath' => 'ଫାଇଲ ପଥ',
'api-error-duplicate-archive-popup-title' => 'ଆଗରୁ ଲିଭାଯାଇଥିବା ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
'api-error-duplicate-popup-title' => 'ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
'api-error-empty-file' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ଖାଲି ଅଟେ ।',
+'api-error-emptypage' => 'ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।',
'api-error-fetchfileerror' => 'ଭିତର ଅସୁବିଧା: ଏହି ଫାଇଲଟି ପାଖରେ ପହଞ୍ଚିବା ବେଳେ କିଛି ଅସୁବିଧା ହେଲା ।',
'api-error-file-too-large' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ବିରାଟ ଅଟେ ।',
'api-error-filename-tooshort' => 'ଫାଇଲ ନାମଟି ଖୁବ ଛୋଟ ।',
'invalidemailaddress' => "Costa adrëssa ëd pòsta eletrònica-sì as peul nen pijesse përchè a l'ha na forma nen bon-a.
Për piasì che a buta n'adrëssa scrita giusta ò che a lassa ël camp veujd.",
'cannotchangeemail' => "J'adrësse ëd pòsta eletrònica dij cont a peulo pa esse modificà ansima a costa wiki.",
-'emaildisabled' => 'Ës sit a peul pa mandé ëd mëssagi ëd pòsta eletrònica.',
+'emaildisabled' => 'Ës sit a peul pa mandé dij mëssagi ëd pòsta eletrònica.',
'accountcreated' => 'Cont creà',
'accountcreatedtext' => "Ël cont Utent për $1 a l'é stàit creà.",
'createaccount-title' => 'Creassion ëd cont për {{SITENAME}}',
'allmessagesname' => 'Nòm',
'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 ëd messagi disponìbij ëd sistema ant lë spassi nominal MediaWiki.
-Për piasì vìsita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisassion] e [//translatewiki.net translatewiki.net] se it veule contribuì a la localisassion general ëd MediaWiki.",
+'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.",
'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
'allmessages-filter-legend' => 'Filtr',
-'allmessages-filter' => 'Filtra për stat ëd përsonalisassion:',
+'allmessages-filter' => 'Filtré për stat ëd përsonalisassion:',
'allmessages-filter-unmodified' => 'Pa modificà',
'allmessages-filter-all' => 'Tùit',
'allmessages-filter-modified' => 'Modificà',
-'allmessages-prefix' => 'Filtra për prefiss:',
+'allmessages-prefix' => 'Filtré për prefiss:',
'allmessages-language' => 'Lenga:',
-'allmessages-filter-submit' => 'Và',
+'allmessages-filter-submit' => 'Apliché',
# Thumbnails
-'thumbnail-more' => 'Slarga',
+'thumbnail-more' => 'Slarghé',
'filemissing' => 'Archivi che a manca',
'thumbnail_error' => 'Eror antramentr che as fasìa la figurin-a: $1',
'djvu_page_error' => 'Pàgina DjVu fòra dij lìmit',
'thumbnail_invalid_params' => 'Paràmetro dla figurin-a pa giust',
'thumbnail_dest_directory' => 'As peul pa fesse ël dossié ëd destinassion',
'thumbnail_image-type' => 'Sòrt ëd figura nen gestì',
-'thumbnail_gd-library' => 'Configurassion pa finìa dla librerìa GD: Fonsion $1 mancanta',
-'thumbnail_image-missing' => 'Ël file a smija esse mancant: $1',
+'thumbnail_gd-library' => 'Configurassion incompleta dla biblioteca GD: Fonsion $1 mancanta',
+'thumbnail_image-missing' => "L'archivi a smija ch'a manca: $1",
# Special:Import
'import' => 'Amportassion ëd pàgine',
'importinterwiki' => 'Amportassion da wiki diferente',
'import-interwiki-text' => "Che a selession-a na wiki e ël tìtol dla pàgina da amporté.
-Date dle revision e stranòm dj'editor a resteran piajit sù 'cò lor.
-Tute le amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
+Date dle revision e stranòm dj'editor a resteran piàjit sù 'cò lor.
+Tute j'amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
'import-interwiki-source' => 'Sorziss wiki/pàgina:',
'import-interwiki-history' => 'Còpia tute le version stòriche dë sta pàgina-sì',
'import-interwiki-templates' => 'Ansëriss tùit jë stamp',
* @author Danielsouzat
* @author Diego Queiroz
* @author Eduardo.mps
+ * @author Emufarmers
* @author Everton137
* @author Francisco Leandro
* @author GKnedo
'accountcreated' => 'Conta criada',
'accountcreatedtext' => 'A conta de usuário para $1 foi criada.',
'createaccount-title' => 'Criação de conta em {{SITENAME}}',
-'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha #$3". Você deve se autenticar e alterar sua senha.
+'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha "$3". Você deve se autenticar e alterar sua senha.
Você pode ignorar esta mensagem caso a conta tenha sido criada por engano.',
'usernamehasherror' => 'Nome de usuário não pode conter o símbolo de cardinal (#).',
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
{{Identical|Content page}}",
-'newwindow' => 'Below the edit form, next to "[[MediaWiki:Edithelp/{{SUBPAGENAME}}|Editing help]]".',
+'newwindow' => 'Below the edit form, next to "{{msg-mw|Edithelp}}".',
'cancel' => 'Message shown below the edit form, and if you click on it, you stop with editing the page and go back to the normal page view.
{{Identical|Cancel}}',
'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
# Special:Log/newusers
-'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in the recent changes.',
+'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].',
'newuserlogpagetext' => 'Part of the "Newuserlog" extension. It is the description you can see on [[Special:Log/newusers]].',
# Special:ListGroupRights
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
{{Identical|Content page}}",
-'watchlist-details' => 'Message on Special page: My watchlist. This is paired with the message [[Mediawiki:Nowatchlist]] which appears instead of Watchlist-details when $1 is 0.',
+'watchlist-details' => 'Message on [[Special:Watchlist]]. This is paired with the message {{msg-mw|Nowatchlist}} which appears instead of Watchlist-details when $1 is 0.',
'wlheader-showupdated' => 'This message shows up near top of users watchlist page.',
'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
{{Identical|Infinite}}",
'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
-'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
-'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
+'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Maximum-size}}. There is an input box to specify the minimum bites of the projected pages listed.',
+'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Minimum-size}}. There is an input box to specify the maximum bites of the projected pages listed.',
'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
# Restrictions (nouns)
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Tooltip shown when hovering the mouse over the link to your own User page in the upper-side personal toolbox.',
'tooltip-pt-mytalk' => 'Tooltip shown when hovering over the "my talk" link in your personal toolbox (upper right side).',
-'tooltip-pt-preferences' => 'Tooltip shown when hovering over the "my preferences" ([[MediaWiki:Mypreferences]]) link in your personal toolbox (upper right side).
+'tooltip-pt-preferences' => 'Tooltip shown when hovering over the {{msg-mw|Mypreferences}} link in your personal toolbox (upper right side).
{{Identical|My preferences}}',
'tooltip-pt-watchlist' => 'Tooltip shown when hovering over the "my watchlist" link in your personal toolbox (upper right side).',
'tooltip-ca-watch' => '{{Identical|Add this page to your watchlist}}',
'tooltip-ca-unwatch' => 'Tooltip shown when hovering over the {{msg|unwatch}} tab.',
'tooltip-search' => 'The tooltip when hovering over the search menu.',
-'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Go|Go]]” button next to the search box.',
-'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Search|Search]]” button under the search box.',
+'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Go}}” button next to the search box.',
+'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Search}}” button under the search box.',
'tooltip-p-logo' => 'Tool tip shown when hovering the mouse over the logo that links to [[Main Page]].
{{Identical|Visit the main page}}',
'tooltip-n-mainpage' => 'Tool tip shown when hovering the mouse over the link to [[{{MediaWiki:Mainpage}}]].
'tooltip-ca-nstab-template' => 'Tooltip shown when hovering over the {{msg|nstab-template}} tab.',
'tooltip-ca-nstab-help' => 'Tootip shown when hovering over the {{msg|nstab-help}} tab in the Help namespace.',
'tooltip-ca-nstab-category' => 'Tooltip shown when hovering over the {{msg|nstab-category}} tab.',
-'tooltip-minoredit' => 'Tooltip shown when hovering over the "[[MediaWiki:Minoredit/{{SUBPAGENAME}}|{{int:minoredit}}]]" link below the edit form.',
+'tooltip-minoredit' => 'Tooltip shown when hovering over the "{{msg-mw|Minoredit}}" link below the edit form.',
'tooltip-save' => "This is the text that appears when you hover the mouse over the 'Save page' button on the edit page",
'tooltip-preview' => 'Tooltip shown when hovering over the "Show preview" button.
'livepreview-loading' => '{{Identical|Loading}}',
# Watchlist editor
-'watchlistedit-numitems' => 'Message on Special page: Edit watchlist. This is paired with the message [[Mediawiki:Watchlistedit-noitems]] which appears instead of Watchlistedit-numitems when $1 is 0.',
-'watchlistedit-noitems' => "Message on [[Special:Watchlist/edit]], which only appears when a user's watchlist is empty.",
+'watchlistedit-numitems' => 'Message on [[Special:EditWatchlist]]. This is paired with the message {{Msg-mw|Watchlistedit-noitems}} which appears instead of Watchlistedit-numitems when $1 is 0.',
+'watchlistedit-noitems' => "Message on [[Special:EditWatchlist]], which only appears when a user's watchlist is empty.",
'watchlistedit-normal-title' => 'Title of [[Special:Watchlist/edit|special page]].',
'watchlistedit-normal-legend' => 'Heading of dialogue box on [[Special:Watchlist/edit]]',
'watchlistedit-normal-explain' => 'An introduction/explanation about the [[Special:Watchlist/edit|normal edit watchlist function]].
Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
'watchlistedit-normal-submit' => 'Text of submit button on [[Special:Watchlist/edit]].',
-'watchlistedit-normal-done' => 'Message on Special page: Edit watchlist after pages are removed from the watchlist.',
+'watchlistedit-normal-done' => 'Message on [[Special:EditWatchlist]] after pages are removed from the watchlist.',
'watchlistedit-raw-title' => 'Title of [[Special:Watchlist/raw|Special page]].
{{Identical|Edit raw watchlist}}',
'watchlistedit-raw-titles' => 'Text above edit box containing items being watched on [[Special:Watchlist/raw]].',
'watchlistedit-raw-submit' => 'Text of submit button on [[Special:Watchlist/raw]].',
'watchlistedit-raw-done' => 'A message which appears after the raw watchlist has been updated using [[Special:Watchlist/raw]].',
-'watchlistedit-raw-added' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is added to the raw watchlist.',
-'watchlistedit-raw-removed' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is deleted from the raw watchlist.',
+'watchlistedit-raw-added' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is added to the raw watchlist.',
+'watchlistedit-raw-removed' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is deleted from the raw watchlist.',
# Watchlist editing tools
'watchlisttools-view' => '[[Special:Watchlist]]: Navigation link under the title. See also {{msg|watchlisttools-edit}} and {{msg|watchlisttools-raw}}.',
'tags-hitcount-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
'tags-edit' => '{{Identical|Edit}}
Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a description.',
-'tags-hitcount' => 'Shown in the “Tagged changes” column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
+'tags-hitcount' => 'Shown in the "{{msg-mw|Tags-hitcount-header}}" column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
* <code>$1</code> is the number of changes marked with the tag',
NS_CATEGORY_TALK => 'Katiguriya_rimanakuy',
);
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Allmessages' => array( 'TukuyWillaykuna' ),
'Allpages' => array( 'TukuyPanqakuna' ),
--
E-chaski willaykuy allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
-{{canonicalurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Watiqana sutisuyuykipaq allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
{{canonicalurl:{{#special:EditWatchlist}}}}
NS_CATEGORY_TALK => 'Samiyachiy_rimanakuy',
);
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-underline' => 'Tinkikunana uraypi aspishpa rikuchina',
'jumpto' => 'Chayman rina',
'jumptonavigation' => 'Wampuna',
'jumptosearch' => 'Maskana',
-'view-pool-error' => 'Atatay, kunan ratupi pankayuk antawakuna yapa trabajuta charinmi.
+'view-pool-error' => 'Atatay, kunan ratupi pankayuk antawakuna yapa trabajuta charinmi.
Yapa runakuna kay pankata rikukunmi.
Ama shinachu kapay, ashakuta shuyapay, kipalla kutin pankata rikunkapak shamupay.
'databaseerror' => 'Yachayyuk ukupi pantay',
'laggedslavemode' => "'''Rikupay''': Kay pankapi, shina kakpi, mushuk killkaykuna illankacha.",
'missing-article' => "Hatun kamupi shuk killkayta mana tarin, shinapash chay killkayta tiyanami kan. Paypa chay shutima kan : «$1» $2.
-Icha shuk ñawpak pachamanta ''diff'' ñamana tiyanchu, icha kay tinkika shuk pichashka pankapa shutimi kan.
+Icha shuk ñawpak pachamanta ''diff'' ñamana tiyanchu, icha kay tinkika shuk pichashka pankapa shutimi kan.
Mana shina kakpi, shuk [[Special:ListUsers/sysop|kamachyik]]man willapay, payta URL killkata willapay.",
'missingarticle-rev' => '(Killkay#: $1)',
'internalerror' => 'Antawa ukupi pantay tiyarka',
Tapuripay, kaypi killkanata allimi, mana allimi kanchu.
Uraypi apakunakunapa pichanakunapa kamuta rikuchiwanchik:",
-'moveddeleted-notice' => 'Kaypankaka pichashkami kan.
+'moveddeleted-notice' => 'Kaypankaka pichashkami kan.
Uraypi apakuykunpa, pichaykunapa kamuta rikuchinchik:',
# Parser/template warnings
'searchrelated' => 'tinkishka',
'searchall' => 'tukuy',
'showingresultsheader' => "{{PLURAL:$5|Maskashka panka: '''$1''', '''$3'''-manta|Maskashka pankakuna: '''$1 - $2''', '''$3'''-manta}}, '''$4''' maskashpaka",
-'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki.
+'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki.
Icha ''all:'' rimaywan (icha shuk shutisuyupa rimaywan) kikinpa killkata kallarikpika taripankimi.",
'search-nonefound' => 'Kikinka maskashka rimaykunaka mana tiyanchu.',
'powersearch' => 'Ashtawan alli maskana',
'external_image_whitelist' => " #Kay aspita kay shinallami sakipay<pre>
#Uraypi ''regex'' samikunata churapay (// chawpipilla)
#Kay samikunaka hawa rikchakunapa URLwan taripachishkami kanka.
-#Alli taripashkakunaka rikcha shinami rikushishkami kanka, shukkunaka tinki shinallami riksichinka,
+#Alli taripashkakunaka rikcha shinami rikushishkami kanka, shukkunaka tinki shinallami riksichinka,
#«#» llikawan kallarik aspikunaka willaykunallami kanka
#Uchilla, hatun llikakunatapash churanata ushapanki, kaypi shinallami kan
'spamprotectionmatch' => 'Următorul text a fost oferit de filtrul de spam: $1',
'spambot_username' => 'Curățarea de spam a MediaWiki',
'spam_reverting' => 'Revenire la ultima versiune care nu conține legături către $1',
-'spam_blanking' => 'Toate reviziile conținând legături către $1, au eșuat',
+'spam_blanking' => 'Toate versiunile conținând legături către $1 au fost golite',
+'spam_deleting' => 'Toate versiunile conținând legături către $1 au fost șterse',
# Info page
'pageinfo-title' => 'Informații pentru „$1”',
'allpages-hide-redirects' => 'Scunne le redirezionaminde',
# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere aggiornate a $1 fà.",
+'cachedspecial-viewing-cached-ts' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere ca non g'è attuale.",
'cachedspecial-refresh-now' => "Vide l'urteme.",
# Special:Categories
'prefs-beta' => 'Бета-возможности',
'prefs-datetime' => 'Дата и время',
'prefs-labs' => 'Экспериментальные возможности',
+'prefs-user-pages' => 'Страницы участника',
'prefs-personal' => 'Личные данные',
'prefs-rc' => 'Свежие правки',
'prefs-watchlist' => 'Список наблюдения',
Вы можете отфильтровать результаты по типу журнала, имени участника (учитывается регистр) или затронутой странице (также учитывается регистр).',
'logempty' => 'Подходящие записи в журнале отсутствуют.',
'log-title-wildcard' => 'Найти заголовки, начинающиеся с данных символов',
+'showhideselectedlogentries' => 'Показать/скрыть выбранные записи журнала',
# Special:AllPages
'allpages' => 'Все страницы',
'mergelogpagetext' => 'Ниже є список найновшых злучінь історії єдной сторінкы з другов.',
# Diffs
-'history-title' => 'Історія змін сторінкы «$1»',
+'history-title' => '$1: Історія змін',
'difference-multipage' => '(Роздїлы міджі сторінками)',
'lineno' => 'Рядок $1:',
'compareselectedversions' => 'Порівнати выбраны верзії',
'ns-specialprotected' => '{{ns:special}} ааттаах сирэйдэр уларытыллыбаттар.',
'titleprotected' => "Бу бас тыл оҥоһулларын [[User:$1|$1]] боппут.
Төрүөтэ - ''$2''",
+'filereadonlyerror' => "«$1» билэни уларытар сатаммата, тоҕо диэтэххэ «$2» «ааҕарга эрэ» диэн эрэсиимҥэ турар эбит.
+
+Бу эрэсиими туруорбут дьаһабыл маннык быһаарыыны хаалларбыт: «''$3''».",
+'invalidtitle-knownnamespace' => '«$2» аат далыгар маннык тиэкистээх «$3» сатаммат аат',
# Virus scanner
'virus-badscanner' => "Сатаммата. Вирус сканера биллибэтэ: ''$1''",
# Suppression log
'suppressionlog' => 'Кистээһин сурунаала',
-'suppressionlogtext' => 'Аллара даһабылларга көстүбэти таарыйар сотуулар уонна хааччахтааһыннар тиһиктэрэ бэриллэр.
-Билигин баар хааччахтары көрөргө [[Special:BlockList|хааччахтааһынын тиһигэр]] киир.',
+'suppressionlogtext' => 'Аллара дьаһабылларга көстүбэти таарыйар сотуулар уонна хааччахтааһыннар тиһиктэрэ бэриллэр.
+Билигин баар хааччахтары көрөргө [[Special:BlockList|хааччахтааһын тиһигэр]] киир.',
# History merging
'mergehistory' => 'Силбэһии сирэйин хронологията',
'mergelogpagetext' => 'Манна сирэйдэр устуоруйаларын бүтэһик силлэһиилэрин тиһигэ бэриллэр.',
# Diffs
-'history-title' => 'Көннөрүү историята "$1"',
+'history-title' => 'Көннөрүү сурунаала "$1"',
'difference-multipage' => '(Сирэйдэр ыккардыларынааҕы уратылар)',
'lineno' => '$1 строка:',
'compareselectedversions' => 'Талыллыбыт торумнары тэҥнээ',
'allpages-bad-ns' => '{{SITENAME}} не содержит пространства имён «$1».',
# SpecialCachedPage
-'cachedspecial-refresh-now' => 'Бутэhиги кор.',
+'cachedspecial-refresh-now' => 'Бүтэһик барылы көр.',
# Special:Categories
'categories' => 'Категориялар',
"Кимтэн" графааҕа эн [[Special:Preferences|туруорууларгар]] баар аадырыһыҥ киириэҕэ,
онон туппут киһи хардарар кыахтаныа.',
'usermailererror' => 'Сурук кыайан барбата:',
-'defemailsubject' => '{{SITENAME}} — бу киһиттэн $1 сурук кэлбит',
+'defemailsubject' => '{{SITENAME}} — $1 диэн киһиттэн сурук кэлбит',
'usermaildisabled' => 'Кыттааччы эл почтата арахса сылдьар',
'usermaildisabledtext' => 'Эн атын кыттааччыларга эл. почтанан сурук ыытар кыаҕыҥ суох эбит',
'noemailtitle' => 'E-mail суох',
);
$specialPageAliases = array(
- 'Allmessages' => array( 'Buot_vuogádatdieđahusat' ),
+ 'Activeusers' => array( 'Aktiivvalaš_geavaheaddjit' ),
+ 'Allmessages' => array( 'Buot_systemasánit' ),
'Allpages' => array( 'Buot_siiddut' ),
- 'Ancientpages' => array( 'Boarrásamos_siiddut' ),
+ 'Ancientpages' => array( 'Dološ_siiddut' ),
'Block' => array( 'Cagge_geavaheaddji' ),
'Booksources' => array( 'Girjegáldut' ),
'Categories' => array( 'Kategoriijat' ),
'DoubleRedirects' => array( 'Guoktegeardásaš_ođđasitstivremat' ),
'Export' => array( 'Olggosfievrrit_siidduid' ),
'Listfiles' => array( 'Fiilalogahallan' ),
- 'Listredirects' => array( 'Listu_ođđasitstivrejumiiguin' ),
+ 'Listredirects' => array( 'Listu_ođđasitstivremiin' ),
'Listusers' => array( 'Listu_geavaheddjiin' ),
- 'Log' => array( 'Loggat' ),
+ 'Log' => array( 'Loggat', 'Logga' ),
'Lonelypages' => array( 'Oarbbes_siiddut' ),
'Longpages' => array( 'Guhkes_siiddut' ),
'MIMEsearch' => array( 'MIME-ohcan' ),
'Newimages' => array( 'Ođđa_govat' ),
'Newpages' => array( 'Ođđa_siiddut' ),
'Preferences' => array( 'Válljemat' ),
- 'Protectedpages' => array( 'Suodjáluvvon_siiddut' ),
+ 'Protectedpages' => array( 'Suodjaluvvon_siiddut' ),
'Randompage' => array( 'Summal_siidu' ),
'Randomredirect' => array( 'Summal_ođđasitstivren' ),
'Recentchanges' => array( 'Varas_rievdadusat' ),
'Search' => array( 'Oza' ),
'Shortpages' => array( 'Oanehis_siiddut' ),
- 'Specialpages' => array( 'Erenomáš_siiddut' ),
+ 'Specialpages' => array( 'Erenoamáš_siiddut' ),
'Statistics' => array( 'Statistihkat' ),
'Uncategorizedcategories' => array( 'Klassifiserekeahtes_kategoriijat' ),
'Uncategorizedimages' => array( 'Klassifiserekeahtes_govat' ),
'category_header' => 'Siiddut, mat gullet luohkkái $1',
'subcategories' => 'Vuolleluohkát',
'category-media-header' => 'Fiillat luohkás ”$1”',
-'category-empty' => "''Dán luohkás eai leat siiddut eaige fiillat.''",
+'category-empty' => "''Dán kategoriijas eai leat siiddut eaige fiillat.''",
'listingcontinuesabbrev' => 'joatk.',
'about' => 'Dieđut',
'searchbutton' => 'Oza',
'go' => 'Mana',
'searcharticle' => 'Mana',
-'history' => 'Historjá',
+'history' => 'Siiddu historjá',
'history_short' => 'Historjá',
'updatedmarker' => 'beaiváduvvon du ovddit fitnama maŋŋá',
'printableversion' => 'Prentenveršuvdna',
'filedeleteerror' => 'Fiilla <b>$1</b> sihkkun ii lihkosmuvvan.',
'directorycreateerror' => 'Logahallama ”$1” ráhkadeapmi ii lihkosmuvvan.',
'filenotfound' => 'Fiila <b>$1</b> ii dihtton.',
-'fileexistserror' => 'Fiilii ”$1” čállin ii lihkosmuvvan: fiila lea anus',
-'formerror' => 'Skovi dieđut eai dohkke',
+'fileexistserror' => 'Fiilii ”$1” čállin ii lihkosmuvvan: fiila lea anus.',
+'formerror' => 'Skovi dieđut eai dohkke.',
'badarticleerror' => 'Doaimma ii leat vejolaš dahkat dán siiddus.',
'cannotdelete' => 'Siiddu dahje fiilla sihkkon ii lihkosmuvvan. Muhtun eará lea sáhttán sihkkut dan.',
'badtitle' => 'Fuones bajilčála',
'notloggedin' => 'It leat čálligoahttan sisa',
'nologin' => "Jus dus ii vel leat geavaheaddjidovddaldat, sáhtát '''$1''' dakkára.",
'nologinlink' => 'ráhkadit',
-'createaccount' => 'Ráhkat ođđa geavaheaddjidovddaldaga',
+'createaccount' => 'Ráhkat dovddaldaga',
'gotaccount' => "Jus dus lea jo geavaheaddjidovddaldat, sáhtát '''$1'''.",
'gotaccountlink' => 'Logge sisa',
'createaccountmail' => 'e-poasttain',
'last' => 'ovddit',
'page_first' => 'vuosttas siidu',
'page_last' => 'maŋimus siidu',
+'history-fieldset-title' => 'Bláđe historjjá',
'histfirst' => 'Vuosttas',
'histlast' => 'Maŋimus',
'historysize' => '($1 stávvala)',
'revdelete-submit' => 'Daga',
'pagehist' => 'Siiddu rievdanhistorjá',
'deletedhist' => 'Šluhtejuvvon veršuvnnaid historjá',
+'revdelete-reason-dropdown' => '*Sivat
+** Ii-almmolaš persovnnalaš dieđut
+** Vejolaš gudnenrihkkun
+** Vuovnnalaš geavaheaddjidovddaldat
+** Vuovnnalaš sisdoallu',
# Diffs
+'history-title' => 'Siiddu «$1» historjá',
'lineno' => 'Gurgadas $1:',
'compareselectedversions' => 'Veardde válljejuvvon veršuvnnaid',
'editundo' => 'šluhtte',
'diff-multi' => '(Veršuvnnaid gaskas {{PLURAL:$1|okta rievdadus|$1 eará rievdadusa}}.)',
# Search results
-'searchresults' => 'Ohcama bohtosat',
+'searchresults' => 'Ohcanbohtosat',
'searchresults-title' => 'Ohcanbohtosat: "$1"',
'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
'showingresults' => "{{PLURAL:$1|'''Okta''' boađus|'''$1''' bohtosa}} bohtosa'''$2''' rájes.",
'showingresultsnum' => "Vuolábealde {{PLURAL:$3|lea '''okta''' ohcanboađus|leat '''$3''' ohcanbohtosa}} '''$2.''' bohtosa rájes.",
'powersearch' => 'Oza',
+'powersearch-ns' => 'Oza nammagomuvuođain:',
+'powersearch-redir' => 'Listu ođđasitstivremiin',
+'powersearch-togglelabel' => 'Rievdat válljema:',
+'powersearch-toggleall' => 'Buot',
+'powersearch-togglenone' => 'Ii mihkkege',
# Quickbar
'qbsettings-none' => 'Ii maidige',
'userrights-reason' => 'Sivva',
# Groups
-'group' => 'Joavku',
+'group' => 'Joavku:',
'group-user' => 'geavaheaddjit',
-'group-bot' => 'Robohtat',
-'group-sysop' => 'bájasdoallit',
-'group-bureaucrat' => 'byrokráhtat',
+'group-bot' => 'Bohtat',
+'group-sysop' => 'Administráhtorat',
+'group-bureaucrat' => 'Byrokráhtat',
'group-all' => '(buot)',
-'group-bot-member' => 'robohtta',
-'group-sysop-member' => 'bájasdoalli',
-'group-bureaucrat-member' => 'byrokráhta',
+'group-bot-member' => 'bohtta',
+'group-sysop-member' => 'administráhtorat',
+'group-bureaucrat-member' => 'byrokráhtta',
'grouppage-bot' => '{{ns:project}}:Bohtat',
-'grouppage-sysop' => '{{ns:project}}:Bájasdoallit',
+'grouppage-sysop' => '{{ns:project}}:Administráhtorat',
'grouppage-bureaucrat' => '{{ns:project}}:Byrokráhtat',
# User rights log
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|rievdadus|rievdadusa}}',
'recentchanges' => 'Varas rievdadusat',
-'recentchanges-summary' => 'Dán siiddus sáhtat čuovvut varas rievdadusaid {{GRAMMAR:illative|{{SITENAME}}}}.',
+'recentchanges-summary' => 'Dán siiddus sáhtát čuovvut varas rievdadusaid {{SITENAME}}s.',
'recentchanges-feed-description' => 'Dán siiddus sáhtat čuovvut varas {{GRAMMAR:illative|{{SITENAME}}}} rievdadusaid.',
'rcnote' => 'Vuollin {{PLURAL:$1|lea okta rievdadus|leat $1 varas rievdadusa}} {{PLURAL:$2|ovtta beaivvi|$2 maŋimus jándora}} áigge gitta $3 rádjái.',
'rcnotefrom' => "Vuolábealde leat rievdadusat '''$2''' rájes. Eanemusta '''$1''' mearkkastaga čájehuvvo.",
'rcshowhidemine' => '$1 iežas rievdádusat',
'rclinks' => 'Čájet $1 varas rievdadusa maŋimus $2 beaivve siste.<br />$3',
'diff' => 'erohus',
-'hist' => 'historjá',
+'hist' => 'hist',
'hide' => 'čiega',
'show' => 'čájet',
'minoreditletter' => 'u',
'uploaderror' => 'Vurkenfeaila',
'uploadlog' => 'Fiilalogga',
'uploadlogpage' => 'Fiilalogga',
-'filename' => 'Fiilla namma:',
+'filename' => 'Fiilla namma',
'filedesc' => 'Čoahkkáigeassu',
-'fileuploadsummary' => 'Čoahkkáigeassu',
+'fileuploadsummary' => 'Čoahkkáigeassu:',
'filesource' => 'Gáldu:',
'uploadedfiles' => 'Lasihuvvon fiillat',
'ignorewarning' => 'Vurke fuolatkeahttá varuhusas',
# Statistics
'statistics' => 'Statistihkat',
'statistics-header-users' => 'Geavaheaddjistatistihkat',
+'statistics-articles' => 'Sisdoallosiiddut',
+'statistics-pages' => 'Siiddut',
+'statistics-pages-desc' => 'Buot siiddut dán wikis (ságastallansiiddut, prošeaktasiiddut, ođđasitstivremat, jed.)',
+'statistics-files' => 'Fiillat',
+'statistics-edits' => 'Rievdadusat maŋŋel dan go {{SITENAME}} vuođđuduvvui',
+'statistics-edits-average' => 'Gaskamearálaš rievdadusaid mearri/siidu',
+'statistics-users' => 'Registrerejuvvon [[Special:ListUsers|geavaheaddjit]]',
+'statistics-users-active' => 'Aktiivvalaš geavaheaddjit',
+'statistics-users-active-desc' => 'Geavaheaddjit, geat leat bargan juoidá maŋimus {{PLURAL:$1|beaivvi|$1 beaivvi}} áigge.',
'statistics-mostpopular' => 'Eanemusta gehčojuvvon siiddut',
'disambiguations' => 'Liŋkkat dárkonsiidduide',
'protectedpages-indef' => 'Beare siiddut, maid suodjaleapmi lea bissovaš',
'protectedpages-cascade' => 'Beare siiddut, maid suodjaleapmi lea viiddiduvvon',
'protectedpagestext' => 'Čuovvovaš siiddut leat suodjáluvvon sirdimiin ja rievdadusain',
+'protectedtitles' => 'Suodjaluvvon siidonamat',
'listusers' => 'Geavaheaddjilistu',
'newpages' => 'Ođđa siiddut',
'newpages-username' => 'Geavaheaddjidovddaldat:',
'activeusers-hidebots' => 'Čiega bohtaid',
'activeusers-hidesysops' => 'Čiega administráhtoriid',
+# Special:ListGroupRights
+'listgrouprights-members' => '(listu miellahtuin)',
+
# E-mail user
'mailnologin' => 'Sáddejeaddji čujuhus váilo',
'mailnologintext' => 'Don fertet leat [[Special:UserLogin|čálligoahtán sisa]] ja du [[Special:Preferences|ásahusain]] ferte leat gelbbolaš ja <strong>sihkarastojuvvon</strong> e-poastačujuhus, ovdalgo sáhtat sáddet e-poasta eará geavaheddjiide.',
'deletionlog' => 'sihkkunlogga',
'reverted' => 'Máhcahuvvon ovddit veršuvdnii',
'deletecomment' => 'Sivva',
+'deleteotherreason' => 'Eará sivva:',
# Rollback
'rollback' => 'máhcat ovddit veršuvdnii',
'protectexpiry' => 'Boarásnuvvá',
'protect_expiry_invalid' => 'Boarášnuvvánáigi ii dohket.',
'protect_expiry_old' => 'Boarásnuvvánáigi lea vássán.',
-'protect-default' => '(eai rádjehusat)',
+'protect-default' => 'Suova buot geavaheddjiid',
'protect-level-autoconfirmed' => 'Cakkastala ođđa ja anonyma geavaheddjiid',
-'protect-level-sysop' => 'Dušše bájasdoallit',
+'protect-level-sysop' => 'Suova beare administráhtoriid',
'protect-summary-cascade' => 'viiddiduvvon',
'protect-expiring' => 'boarásnuvvá $1',
'protect-cascade' => 'Viididt suodjálusa guoskat buot siidduit, mat gullet dán siidui',
'protect-othertime' => 'Eará áigi:',
'protect-othertime-op' => 'eará áigi',
+'protect-dropdown' => '** Dávjjes vandalisma
+** Dávjjes spammen
+** Rievdadansoahti
+** Dehálaš siidu',
'protect-expiry-options' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
'restriction-type' => 'Rádjehus',
'restriction-level' => 'Suodjálus',
'infiniteblock' => 'bissovaččat',
'expiringblock' => 'boarásnuvvá $1 $2',
'contribslink' => 'rievdadusat',
+'blocklogentry' => 'esttii geavaheaddji dahje IP-čujuhusa [[$1]], eastima bistin lea $2 $3',
'proxyblocksuccess' => 'Gárvvis.',
# Developer tools
'tooltip-pt-mycontris' => 'Listu iežas rievdadusain',
'tooltip-pt-login' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
'tooltip-pt-anonlogin' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
-'tooltip-pt-logout' => 'Čálligoađe olggos',
+'tooltip-pt-logout' => 'Logge olggos',
'tooltip-ca-talk' => 'Ságastala sisdoalus',
'tooltip-ca-edit' => 'Rievdat dán siiddu',
'tooltip-ca-addsection' => 'Lasit kommeantta dán siidui',
'tooltip-ca-move' => 'Sirdde dán siiddu',
'tooltip-ca-watch' => 'Lasit dán siiddu iežat čuovvunlistui',
'tooltip-ca-unwatch' => 'Sirdde dán siiddu eret du čuovvunlisttus',
-'tooltip-search' => 'Oza {{GRAMMAR:elative|{{SITENAME}}}}',
+'tooltip-search' => 'Oza {{SITENAME}}s',
'tooltip-p-logo' => 'Váldosiidu',
'tooltip-n-mainpage' => 'Mana váldosiidui',
'tooltip-n-portal' => 'Ságastallan prošeavttas',
$fallback = 'pl';
+$namespaceNames = array(
+ NS_SPECIAL => 'Szpecyjalna',
+ NS_TALK => 'Dyskusyjo',
+ NS_USER => 'Używacz',
+ NS_USER_TALK => 'Dyskusyjo_używacza',
+ NS_PROJECT_TALK => 'Dyskusyjo_$1',
+ NS_FILE => 'Plik',
+ NS_FILE_TALK => 'Dyskusyjo_plika',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Dyskusyjo_MediaWiki',
+ NS_TEMPLATE => 'Muster',
+ NS_TEMPLATE_TALK => 'Dyskusyjo_mustra',
+ NS_HELP => 'Půmoc',
+ NS_HELP_TALK => 'Dyskusyjo_půmocy',
+ NS_CATEGORY => 'Kategoryjo',
+ NS_CATEGORY_TALK => 'Dyskusyjo_kategoryji',
+);
+
+$namespaceAliases = array(
+ // Aliases for Polish namespaces (bug 34988).
+ 'Specjalna' => NS_SPECIAL,
+ 'Dyskusja' => NS_TALK,
+ 'Użytkownik' => NS_USER,
+ 'Dyskusja_użytkownika' => NS_USER_TALK,
+ 'Dyskusja_$1' => NS_PROJECT_TALK,
+ 'Dyskusja_pliku' => NS_FILE_TALK,
+ 'Dyskusja_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Szablon' => NS_TEMPLATE,
+ 'Dyskusja_szablonu' => NS_TEMPLATE_TALK,
+ 'Pomoc' => NS_HELP,
+ 'Dyskusja_pomocy' => NS_HELP_TALK,
+ 'Kategoria' => NS_CATEGORY,
+ 'Dyskusja_kategorii' => NS_CATEGORY_TALK,
+);
+
+// Remove Polish gender aliases
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-underline' => 'Podsztrychńyńcy linkůw:',
'userinvalidcssjstitle' => "'''Pozůr:''' Ńy mo skůrki uo mjańe \"\$1\". Pamjyntej, aže zajty užytkowńika zawjyrajůnce CSS i JavaScript powinny začynać śe mouům buchštabům, np. {{ns:user}}:Foo/vector.css.",
'updated' => '(Pomjyńano)',
'note' => "'''Pozůr:'''",
-'previewnote' => "'''To je ino podglůnd - artikel ješče ńy je naškryflany!'''",
+'previewnote' => "'''To je ino podglůnd - artikel jeszcze ńy je spamjyntany!'''",
'previewconflict' => 'Wersyjo podglůndano uodnośi śe do tekstu s pola edycyje na wjyrchu. Tak bydźe wyglůndać zajta jeli zdecyduješ śe jům naškryflać.',
'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_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
'powersearch' => 'Sznupańy zaawansowane',
'powersearch-legend' => 'Šnupańy zaawansowane',
-'powersearch-ns' => 'Šnupej we přestřyńach mjan:',
+'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
'powersearch-redir' => 'Pokož překerowańa',
'powersearch-field' => 'Šnupej',
'powersearch-togglelabel' => 'Zaznocz:',
'tog-enotifwatchlistpages' => 'Padalhan ako ng e-liham kapag nabago ang isa sa mga pahinang binabantayan ko',
'tog-enotifusertalkpages' => 'Padalhan ako ng e-liham kapag binago ang aking pahina ng usapan',
'tog-enotifminoredits' => 'Padalhan din ako ng e-liham para sa mga maliliit na pagbabago ng mga pahina',
-'tog-enotifrevealaddr' => 'Ipakita ang adres ng e-liham ko sa loob ng mga e-liham ng pagpapahayag',
+'tog-enotifrevealaddr' => 'Ipakita ang aking direksiyong e-liham sa loob ng mga e-liham ng pagpapahayag',
'tog-shownumberswatching' => 'Ipakita ang bilang ng mga nagbabantay na tagagamit',
'tog-oldsig' => 'Umiiral na lagda:',
'tog-fancysig' => 'Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)',
'badaccess-group0' => 'Hindi ka pinahintulutang isagawa ang hiniling mong kilos.',
'badaccess-groups' => 'Ang kilos na hiniling mo ay nakatakda lamang para sa mga tagagamit sa {{PLURAL:$2|pangkat na|isa sa mga pangkat na}}: $1.',
-'versionrequired' => 'Kinakailangan ang bersyong $1 ng MediaWiki',
+'versionrequired' => 'Kinakailangan ang bersiyong $1 ng MediaWiki',
'versionrequiredtext' => 'Kinakailangan ang bersyong $1 ng MediaWiki upang magamit ang pahinang ito.
-Tingnan ang [[Special:Version|pahina ng bersyon]].',
+Tingnan ang [[Special:Version|pahina ng bersiyon]].',
'ok' => 'Sige',
'retrievedfrom' => 'Ikinuha mula sa "$1"',
'collapsible-expand' => 'Ibuka',
'thisisdeleted' => 'Tingnan o ibalik ang $1?',
'viewdeleted' => 'Tingnan ang $1?',
-'restorelink' => '{{PLURAL:$1|isang binurang pagbabagp|$1 binurang pagbabago}}',
+'restorelink' => '{{PLURAL:$1|isang binurang pagbabago|$1 binurang pagbabago}}',
'feedlinks' => 'Subo/Karga:',
'feed-invalid' => 'Hindi tanggap na uri ng serbisyo ng pagpaparating.',
'feed-unavailable' => 'Walang serbisyo mula sa sindikasyong pangpaglalathala',
'passwordreset-text' => 'Punuin ang pormularyong ito upang makatanggap ng isang pampaalalang e-liham ng iyong mga detalye ng akawnt.',
'passwordreset-legend' => 'Itakdang muli ang hudyat',
'passwordreset-disabled' => 'Hindi pinagagana sa wiking ito ang muling mga pagtatakda ng hudyat.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng dato sa ibaba}}',
+'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng datos sa ibaba}}',
'passwordreset-username' => 'Pangalan ng tagagamit:',
'passwordreset-domain' => 'Nasasakupan:',
'passwordreset-capture' => 'Tingnan ang lumabas na e-liham?',
'passwordreset-capture-help' => 'Kapag tsetsekan mo ang kahong ito, ang e-liham (may pansamantalang hudyat) ay ipapakita sa iyo at ipapadala rin sa tagagamit.',
-'passwordreset-email' => 'Tirahan ng e-liham:',
-'passwordreset-emailtitle' => 'Mga detalye ng akawnt sa {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa tirahan ng IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng akawnt para sa {{SITENAME}} ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
+'passwordreset-email' => 'Direksiyong e-liham:',
+'passwordreset-emailtitle' => 'Mga detalye ng kuwenta sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa direksiyong IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng kuwenta para sa {{SITENAME}} ($4). Ang sumusunod na {{PLURAL:$3|kuwenta ng tagagamit ay|mga kuwenta ng tagagamit ay}} may kaugnayan sa direksiyong e-liham na ito:
$2
-{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang pansamantalang mga hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
+{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang mga pansamantalang hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
Dapat kang lumagda at pumili ng isang bagong hudyat ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang orihinal mong hudyat, at hindi mo na nais palitan ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng luma mong hudyat.',
'passwordreset-emailtext-user' => 'Ang tagagamit na si $1 sa {{SITENAME}} ay humiling ng isang paalala ng iyong mga akawnt ng detalye para sa {{SITENAME}}
($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
'showlivepreview' => 'Buhay na paunang tingin',
'showdiff' => 'Ipakita ang mga pagbabago',
'anoneditwarning' => "'''Babala:''' Hindi ka nakalagda.
-Matatala ang adres ng IP mo sa kasaysayan ng pagbabago ng pahinang ito.",
-'anonpreviewwarning' => "''Hindi ka nakalagda. Itatala sa inyong pagtatala ang inyong adres ng IP sa kasaysayan ng pagbabago ng pahinang ito.''",
+Matatala ang iyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.",
+'anonpreviewwarning' => "''Hindi ka nakalagda. Itatala sa inyong pagtatala ang inyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.''",
'missingsummary' => "'''Paalala:''' Hindi ka nagbigay ng buod ng pagbabago.
Kapag pinindot mo uli ang Sagip, masasagip ang pagbabago mo na wala nito.",
'missingcommenttext' => 'Magbigay ng isang kumento/puna sa ibaba.',
'summary-preview' => 'Paunang tingin sa buod:',
'subject-preview' => 'Paunang tingin sa paksa/paulo:',
'blockedtitle' => 'Hinarang ang tagagamit',
-'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o adres ng IP.'''
+'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o direksiyong IP.'''
-Ginawa ang pagharang/paghadlang ni $1. Ito ang ibinigay na dahilan: ''$2''.
+Ginawa ni $1 ang pagharang/paghadlang.
+Ito ang ibinigay na dahilan: ''$2''.
* Simula ng pagharang/paghadlang: $8
* Katapusan ng pagharang/paghadlang: $6
* Ang hinarang/hinadlangan ay si: $7
-Maaari kang makipag-ugnayan kay $1 o sa iba pang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
-Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na adres ng e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
-Ang pangkasalukuyang adres ng IP mo ay $3, at ang ID ay #$5.
+Maaari kang makipag-ugnayan kay $1 o sa ibang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
+Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na direksiyong e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
+Ang kasalukuyan mong direksiyong IP ay $3, at ang ID ng pagharang/paghadlang ay #$5.
Pakisama ang lahat ng mga detalye sa anumang mga pagtatanong na ginagawa/gagawin mo.",
'autoblockedtext' => 'Kusang hinadlangan/hinarang ang adres ng IP mo dahil ginamit ito ng ibang tagagamit, na hinadlangan/hinarang ni $1.
Ang ibinigay na dahilan ay:
# Preferences page
'preferences' => 'Mga kagustuhan',
-'mypreferences' => 'Aking mga kagustuhan',
+'mypreferences' => 'Mga nais ko',
'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.',
'prefs-watchlist-token' => 'Balap ng talaan ng mga binabantayan:',
'prefs-misc' => 'Bala-balaki',
'prefs-resetpass' => 'Baguhin ang hudyat',
-'prefs-changeemail' => 'Baguhin ang tirahan na para sa e-liham',
-'prefs-setemail' => 'Magtakda ng bagong tirahan ng e-liham',
+'prefs-changeemail' => 'Baguhin ang direksiyong e-liham',
+'prefs-setemail' => 'Magtakda ng direksiyong e-liham',
'prefs-email' => 'Mga pagpipilian para sa e-liham',
'prefs-rendering' => 'Hitsura',
'saveprefs' => 'Sagipin',
Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
'prefs-help-email' => 'Hindi talaga kailangang may tirahan ng e-liham, subalit kailangan para sa muling pagtatakda ng hudyat, kung makalimutan mo ang hudyat mo.',
'prefs-help-email-others' => 'Mapipili mo rin na makipag-ugnayan sa iyo ang iba sa pamamagitan ng iyong pahina ng tagagamit o usapan na hindi kailangang ilantad ang katauhan mo.',
-'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
+'prefs-help-email-required' => 'Kailangan ang direksiyong e-liham.',
'prefs-info' => 'Payak na kabatiran',
'prefs-i18n' => 'Internasyonalisasyon',
'prefs-signature' => 'Lagda',
'prefs-diffs' => 'Mga pagkakaiba',
# User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang tirahan ng e-liham',
-'email-address-validity-invalid' => 'Magpasok ng isang tanggap na tirahan ng e-liham',
+'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang direkisyong e-liham',
+'email-address-validity-invalid' => 'Magpasok ng isang tanggap na direksiyong e-liham',
# User rights
'userrights' => 'Pamamahala ng mga karapatan ng tagagamit',
'group-autoconfirmed' => 'Mga tagagamit na nakompirma sa kusang paraan (autokompirmasyon)',
'group-bot' => "Mga ''bot''",
'group-sysop' => 'Mga tagapangasiwa',
-'group-bureaucrat' => 'Mga burokrato',
+'group-bureaucrat' => 'Mga burokrata',
'group-suppress' => 'Mga tagapagingat-tago',
'group-all' => '(lahat)',
Para lumitaw ang buod mo doon, kailangan mong kinakamay na baguhin ito.
[[$1|thumb]]",
'fileexists-extension' => "Mayroon talaksan na ganitong pangalan: [[$2|thumb]]
-* Pangalan ng ikakargang talaksan: '''<tt>[[:$1]]</tt>'''
-* Pangalan ng mayroon nang talaksan: '''<tt>[[:$2]]</tt>'''
+* Pangalan ng ikinakargang talaksan: '''<tt>[[:$1]]</tt>'''
+* Pangalan ng umiiral na talaksan: '''<tt>[[:$2]]</tt>'''
Pumili ng ibang pangalan.",
'fileexists-thumbnail-yes' => "Mukhang pinaliit ''(thumbnail)'' na larawan ang talaksan. [[$1|thumb]]
Paki tingin ang talaksan '''<tt>[[:$1]]</tt>'''.
Pakisuri kung buhay ang sayt, maghintay ng kaunti at subukin uli.
Maaaring ibigin mong subukin uli sa isang hindi gaanong abalang panahon.',
-'license' => 'Paglilisensya:',
-'license-header' => 'Paglilisensya',
+'license' => 'Paglilisensiya:',
+'license-header' => 'Paglilisensiya',
'nolicense' => 'Walang napili',
'license-nopreview' => '(Walang makuhang paunang tingin)',
'upload_source_url' => ' (isang tanggap at napupuntahan ng publikong URL)',
'listfiles_user' => 'Tagagamit',
'listfiles_size' => 'Sukat',
'listfiles_description' => 'Paglalarawan',
-'listfiles_count' => 'Mga bersyon',
+'listfiles_count' => 'Mga bersiyon',
# File description page
'file-anchor-link' => 'Talaksan',
'prefixindex-namespace' => 'Lahat ng mga pahinang may unlapi ($1 puwang ng pangalan)',
'shortpages' => 'Mga maiikling pahina',
'longpages' => 'Mga mahahabang pahina',
-'deadendpages' => 'Mga pahinang walang panloob na ugnay (internal link)',
+'deadendpages' => 'Mga pahinang walang kawing panloob (internal link)',
'deadendpagestext' => "Ang mga sumusunod na mga pahina'y hindi umuugnay sa ibang mga pahina sa wiking ito.",
'protectedpages' => 'Mga nakaprotektang pahina',
'protectedpages-indef' => 'Mga walang katiyakang proteksyon lamang',
'emailuser' => 'Padalhan ng e-liham ang tagagamit',
'emailpage' => 'Magpadala ng e-liham sa tagagamit',
'emailpagetext' => 'Magagamit mo ang pormularyo sa ibaba para makapagpadala ng mensahe sa pamamagitan ng isang e-liham para sa tagagamit na ito.
-Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
+Ang ipinasok mong direksiyong e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
'usermailererror' => 'Pagkakamaling sanhi ng pagkakabalik ng liham mula sa puntirya:',
'defemailsubject' => 'E-liham ng {{SITENAME}} mula sa tagagamit na si "$1"',
'usermaildisabled' => 'Hindi pinagana ang e-liham ng tagagamit',
'watchlistfor2' => 'Para sa $1 $2',
'nowatchlist' => 'Wala kang pahinang binabantayan.',
'watchlistanontext' => 'Paki $1 upang makita o mabago ang mga aytem sa iyong binabantayan.',
-'watchnologin' => 'Di ka naka-lagda',
+'watchnologin' => 'Hindi nakalagda',
'watchnologintext' => 'Dapat kang [[Special:UserLogin|nakalagda]] upang mabago ang talaan mo ng mga binabantayan.',
'addwatch' => 'Idagdag sa bantayan',
'addedwatchtext' => "Dinagdag na ang pahinang \"[[:\$1]]\" sa iyong [[Special:Watchlist|Babantayan]].
'enotif_lastvisited' => 'Tingnan ang $1 para sa lahat ng mga pagbabago magmula noong huling pagdalaw mo.',
'enotif_lastdiff' => 'Tingnan ang $1 para makita ang pagbabagong ito.',
'enotif_anon_editor' => 'hindi nakikilalang tagagamit $1',
-'enotif_body' => 'Mahal na $WATCHINGUSERNAME,
+'enotif_body' => 'Mahal naming $WATCHINGUSERNAME,
-Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED noong $PAGEEDITDATE ni $PAGEEDITOR, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
+Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED ni $PAGEEDITOR noong $PAGEEDITDATE, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
$NEWPAGE
-Buod mula sa patnugot: $PAGESUMMARY $PAGEMINOREDIT
+Buod ng patnugot: $PAGESUMMARY $PAGEMINOREDIT
Makipagugnayan sa patnugot:
liham: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
Wala nang iba pang mga pagpapahayag sa pagkakataon ng pagkakaroon ng karagdagang mga pagbabago maliban na lamang kung dadalawin mo ang pahinang ito.
-Maaari mo ring muling itakda ang mga watawat na pangpag-uulat para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
+Maaari mo ring itakda muli ang mga watawat na pangpagpapabatid para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
- Ang iyong palakaibigang sistemang pangpag-uulat ng {{SITENAME}}
+Ang iyong maginhawang sistema ng pagpapabatid ng {{SITENAME}}
--
-Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, puntahan ang
+Upang mabago ang mga katakdaan sa iyong talaan ng mga binabantayan, dalawin ang
+{{canonicalurl:{{#special:Preferences}}}}
+
+Upang baguhin ang mga katakdaan ng bantayan mo, dumalaw sa
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Upang burahin ang pahina mula sa pahina mo ng mga binabantayan, dumalaw sa
$UNWATCHURL
-Balik-tugon at karagdagang tulong:
+Tugon at karagdagang tulong:
{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'undeletepagetext' => 'Ang sumusunod na {{PLURAL:$1|pahina ay nabura na subalit |$1 mga pahina ay nabura na subalit}} nananatili pa rin sa sinupan/arkibo at maaaring bang ibalik mula sa pagkakabura.
Maaaring palagiang linisin o tanggalan ng laman ang sinupan/arkibo.',
'undelete-fieldset-title' => 'Ibalik ang mga pagbabago',
-'undeleteextrahelp' => "Para maibalik ang kabuoan ng kasaysayan ng pahina, iwanang walang laman ang mga kahong lagayan ng mga tsek at pindutin ang '''''Ibalik'''''. Para maisagawa ang pagbabalik na may pagpili, lagyan ng tsek ang mga kahong may kaugnayan sa pagpapabalik ng mga pagbabago at pindutin ang '''''Ibalik'''''.
-Malilinis ang pook ng kumento/puna at iba pang mga kahong lagayan ng mga tsek kapag pinindot ang '''''Magtakda uli'''''.",
+'undeleteextrahelp' => "Upang maibalik ang buong kasaysayan ng pahina, iwanang walang mga tsek ang lahat ng mga kahon at lagitikin ang '''''{{int:undeletebtn}}'''''.
+Upang makapagsagawa ng pagpapanumbalik na may pinipili, tsekan ang mga kahon na tumutugma sa mga pagbabagong ibabalik, at pindutin ang '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => 'Sininop/nilagay sa sinupan o arkibo ang $1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
'undeletehistory' => 'Kapag ibinalik mo ang pahina, ibabalik ang lahat ng mga pagbabago sa kasaysayan.
Kapag nalikha ang isang bagong pahinang may katulad na pangalan mula noong pagbura, lilitaw ang naibalik na mga pagbabago sa sinaunang kasaysayan.',
# Contributions
'contributions' => 'Mga ambag ng tagagamit',
'contributions-title' => 'Mga ambag ng tagagamit na si $1',
-'mycontris' => 'Aking mga ginawa',
+'mycontris' => 'Mga ambag ko',
'contribsub2' => 'Para kay $1 ($2)',
'nocontribs' => 'Walang pagbabagong nakita sa binigay na kondisyon.',
'uctop' => ' (itaas)',
Ang tala ng pagpigil ay ibinigay sa ibaba upang mapagsanggunian:',
'blocklogentry' => 'hinarang/hinadlangan si [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
'reblock-logentry' => 'binago ang itinakdang pagharang/paghadlang kay [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
-'blocklogtext' => 'Tala ito ng paghaharang at pagpapawawalang bisa ng pagharang/paghadlang.
-Hindi nakatala rito ang mga awtomatiko/kusang hinarang/hinadlangang mga adres ng IP.
-Tingnan ang [[Special:BlockList|talaan ng mga hinarang na/hinadlangang IP]] para sa talaan ng pangkasalukuyang gumagana pang mga pinagbabawalan at mga pagharang/paghadlang.',
+'blocklogtext' => 'Isa itong talaan ng mga gawain ng pagharang at hindi pagharang sa tagagamit.
+Hindi nakalista ang mga tirahan ng IP ng kusang hinadlangan.
+Tingnan ang [[Special:BlockList|talaan ng pagharang]] para sa lista ng kasalukuyang may bisa na mga pagbabawal at mga paghadlang.',
'unblocklogentry' => 'tinanggal ang pagharang/paghadlang kay $1',
'block-log-flags-anononly' => 'mga di-kilalang tagagamit lamang',
'block-log-flags-nocreate' => 'Nakapatay ang paglikha ng akawnt',
'tooltip-pt-anonuserpage' => 'Ang pahina ng tagagamit para sa IP na iyong binabago bilang',
'tooltip-pt-mytalk' => 'Ang iyong pahina ng usapan',
'tooltip-pt-anontalk' => 'Usapang tungkol sa mga pagbabagong ginawa sa ip address na ito',
-'tooltip-pt-preferences' => 'Aking mga kagustuhan',
+'tooltip-pt-preferences' => 'Mga nais ko',
'tooltip-pt-watchlist' => 'Ang talaan ng mga pagbabago sa mga pahinang binabantayan mo',
'tooltip-pt-mycontris' => 'Talaan ng mga ambag mo',
'tooltip-pt-login' => 'Hinihimok kang lumagda, bagaman hindi ito kinakailangan.',
# EXIF attributes
'exif-compression-1' => 'Walang kompresyon',
+'exif-compression-2' => 'CCITT Pangkat 3 1-kodigo sa haba ng pagtakbo ng Pangdimensiyong Huffman na May Bahagyang Pagbabago',
'exif-compression-3' => 'Kodigo ng Pangkat 3 ng CCITT',
'exif-compression-4' => 'Kodigo ng Pangkat 4 ng CCITT',
<?php
-/** Tatar (Cyrillic script) (Татарча)
+/** Tatar (Cyrillic script) (татарча)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
'editundo' => 'үткәрмәү',
+'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
# Search results
'searchresults' => 'Эзләү нәтиҗәләре',
'notextmatches' => 'Тиңдәш текстлы битләр юк',
'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' => 'Эзләү көйләнмәләре',
'searchprofile-everything-tooltip' => 'Барлык битләрдә дә эзләү',
'searchprofile-advanced-tooltip' => 'Бирелгән исемнәр мәйданында эзләү',
'search-result-size' => '$1 ({{PLURAL:$2|$2 сүз}})',
+'search-result-category-size' => '{{PLURAL:$1|1 әгъза|$1 әгъза}} ({{PLURAL:$2|1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1 файл|$3 файл}})',
'search-result-score' => 'Релевантлыгы: $1 %',
'search-redirect' => '(юнәлтү $1)',
'search-section' => '($1 бүлеге)',
'protectedpages' => 'Якланган битләр',
'protectedtitles' => 'Тыелган исемнәр',
'listusers' => 'Кулланучылар исемлеге',
+'usercreated' => '$3 $1 көнне $2 вакытта {{GENDER:$3|теркәлде}}',
'newpages' => 'Яңа битләр',
'newpages-username' => 'Кулланучы:',
'ancientpages' => 'Иң иске битләр',
# Watchlist
'watchlist' => 'Күзәтү исемлегем',
'mywatchlist' => 'Күзәтү исемлегем',
+'watchlistfor2' => '$1 $2 өчен',
'nowatchlist' => 'Күзәтү исемлегегездә битләр юк.',
'watchnologin' => 'Кермәдегез',
'watchnologintext' => 'Күзәтү исемлегегезне үзгәртү өчен сез [[Special:UserLogin|керергә]] тиешсез.',
'sp-contributions-talk' => 'бәхәс',
'sp-contributions-search' => 'Кертемне эзләү',
'sp-contributions-username' => 'Кулланучының IP адресы яки исеме:',
+'sp-contributions-toponly' => 'Соңгы версия булган үзгәртүләрне генә күрсәтергә',
'sp-contributions-submit' => 'Эзләү',
# What links here
'hijri-calendar-m7' => 'Раҗәб',
'hijri-calendar-m9' => 'Рамазан',
+# Core parser functions
+'duplicate-defaultsort' => 'Игътибар. Уйланма куелган "$2" бүлгәләү ачкычы элеккеге уйланма куелган "$1" бүлгәләү ачкычын үзгәртә.',
+
# Special:Version
'version' => 'Юрама',
'version-extensions' => 'Куелган киңәйтүләр',
'blankpage' => 'Буш бит',
'intentionallyblankpage' => 'Бу бит махсус буш калдырылган',
+# External image whitelist
+'external_image_whitelist' => '#Бу юлны ничек бар, шулаө калдырыгыз<pre>
+#Монда даими фразаларның фрагментларын куегыз (// арасында торган өлешен)
+#алар тышкы сурәтләрнең URL белән бәйләнерләр.
+#Туры килгәннәре сурәт буларак, туры килмәгәннәре сурәткә сылтама буларак күрсәтеләчәкләр.
+# # билгесе белән башланучы юллар шәрехнамә дип саналалар.
+#Юллар регистрга игътибар бирмиләр.
+
+#Даими фразаларның фрагментларын бу кыр өстендә куегыз. Бу кырны ничек бар, шулай калдырыгыз.</pre>',
+
# Special:Tags
'tags' => 'Гамәлдә булучы үзгәртүләр билгеләре',
'tag-filter' => '[[Special:Tags|Tag]] фильтры:',
'Allmessages' => array( 'Системні_повідомлення' ),
'Allpages' => array( 'Усі_сторінки' ),
'Ancientpages' => array( 'Давні_сторінки' ),
+ 'Badtitle' => array( 'Помилковий_заголовок' ),
'Blankpage' => array( 'Порожня_сторінка' ),
'Block' => array( 'Заблокувати' ),
'Blockme' => array( 'Заблокуйте_мене' ),
'EditWatchlist' => array( 'Правити_список_спостереження' ),
'Emailuser' => array( 'Лист_користувачеві' ),
'Export' => array( 'Експорт' ),
+ 'Fewestrevisions' => array( 'Найменші_перевірки' ),
'FileDuplicateSearch' => array( 'Пошук_дублікатів_файлів' ),
+ 'Filepath' => array( 'Шлях_до_файлу' ),
'Import' => array( 'Імпорт' ),
+ 'Invalidateemail' => array( 'Нечинна_e-mail' ),
'BlockList' => array( 'Список_блокувань', 'Блокування', 'Блокування_IP-адрес' ),
'LinkSearch' => array( 'Пошук_посилань' ),
'Listadmins' => array( 'Список_адміністраторів' ),
'Longpages' => array( 'Найдовші_сторінки' ),
'MergeHistory' => array( 'Об\'єднання_історії' ),
'MIMEsearch' => array( 'Пошук_по_MIME' ),
+ 'Mostcategories' => array( 'Найкатегоризовуваніші' ),
'Mostimages' => array( 'Найбільш_використовувані_файли' ),
+ 'Mostlinkedcategories' => array( 'Найуживаніші_категорії' ),
+ 'Mostlinkedtemplates' => array( 'Найуживаніші_шаблони' ),
+ 'Mostrevisions' => array( 'Найбільш_редаговані' ),
'Movepage' => array( 'Перейменувати' ),
'Mycontributions' => array( 'Мій_внесок' ),
'Mypage' => array( 'Моя_сторінка' ),
'Myuploads' => array( 'Мої_завантаження' ),
'Newimages' => array( 'Нові_файли' ),
'Newpages' => array( 'Нові_сторінки' ),
+ 'PasswordReset' => array( 'Скинути_пароль' ),
'PermanentLink' => array( 'Постійне_посилання' ),
'Popularpages' => array( 'Популярні_сторінки' ),
'Preferences' => array( 'Налаштування' ),
'Protectedtitles' => array( 'Захищені_назви_сторінок' ),
'Randompage' => array( 'Випадкова_сторінка' ),
'Randomredirect' => array( 'Випадкове_перенаправлення' ),
- 'Recentchanges' => array( 'Ð\9dеÑ\89одавні_редагування' ),
+ 'Recentchanges' => array( 'Ð\9dові_редагування' ),
'Recentchangeslinked' => array( 'Пов\'язані_редагування' ),
'Revisiondelete' => array( 'Перевірити_видалення' ),
'Search' => array( 'Пошук' ),
'Unusedcategories' => array( 'Порожні_категорії' ),
'Unusedimages' => array( 'Невикористовувані_файли' ),
'Unusedtemplates' => array( 'Невикористовувані_шаблони' ),
- 'Unwatchedpages' => array( 'СÑ\82оÑ\80Ñ\96нки_за_Ñ\8fкими_не_Ñ\81поÑ\81Ñ\82еÑ\80Ñ\96гаÑ\8eÑ\82Ñ\8c' ),
+ 'Unwatchedpages' => array( 'Ð\9dеÑ\81поÑ\81Ñ\82еÑ\80ежÑ\83ванÑ\96' ),
'Upload' => array( 'Завантаження' ),
'UploadStash' => array( 'Приховане_завантаження' ),
'Userlogin' => array( 'Вхід' ),
'Wantedtemplates' => array( 'Потрібні_шаблони' ),
'Watchlist' => array( 'Список_спостереження' ),
'Whatlinkshere' => array( 'Посилання_сюди' ),
+ 'Withoutinterwiki' => array( 'Без_інтервікі' ),
);
$magicWords = array(
<?php
-/** Vèneto (Vèneto)
+/** vèneto (vèneto)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
'sqlite-no-fts' => '$1 sensa la possibilità de riserca completa nel testo',
# New logging system
-'logentry-delete-delete' => '$1 ga scanselà la pajina $3',
+'logentry-delete-delete' => '$1 ga scansełà ła pajina $3',
'logentry-delete-restore' => '$1 ga ripristinà "$3"',
-'logentry-delete-event' => '$1 ga canbià la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
-'logentry-delete-revision' => '$1 ga canbià la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de la pajina"$3": $4',
-'logentry-delete-event-legacy' => '$1 ga canbià la vixibilità de calche asion del registro de "$3"',
-'logentry-delete-revision-legacy' => '$1 ga canbià la vixibilità par le revixion de la pajina $3',
+'logentry-delete-event' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
+'logentry-delete-revision' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|na revixion|$5 revixion}} de ła pajina"$3": $4',
+'logentry-delete-event-legacy' => '$1 ga canbià ła vixibiłità de calche asion del registro de "$3"',
+'logentry-delete-revision-legacy' => '$1 ga canbià ła vixibiłità par łe revixion de ła pajina $3',
'logentry-suppress-delete' => '$1 ga sconto la pajina "$3"',
'logentry-suppress-event' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
'logentry-suppress-revision' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de "$3": $4',
'logentry-suppress-event-legacy' => '$1 ga canbià de scondón la vixibilità de calche asion del registro de "$3"',
'logentry-suppress-revision-legacy' => '$1 ga canbià de scondón la vixibilità de calche revixion de $3',
'revdelete-content-hid' => 'contegnùo sconto',
-'revdelete-summary-hid' => 'ogeto de la modifega sconto',
+'revdelete-summary-hid' => 'ogeto de ła modifega sconto',
'revdelete-uname-hid' => 'nome utente sconto',
'revdelete-content-unhid' => 'contegnùo ripristinà',
'revdelete-summary-unhid' => 'ogeto ripristinà',
'revdelete-uname-unhid' => 'nome utente ripristinà',
'revdelete-restricted' => 'aplicà restrizioni ai aministradori',
'revdelete-unrestricted' => 'gà cavà le limitazion par i aministradori',
-'logentry-move-move' => '$1 ga spostà la pajina $3 a $4',
-'logentry-move-move-noredirect' => '$1 ga spostà la pajina $3 a $4 sensa metare un rimando',
-'logentry-move-move_redir' => '$1 ga spostà la pajina $3 a $4 metendo un rimando',
+'logentry-move-move' => '$1 ga spostà ła pajina $3 a $4',
+'logentry-move-move-noredirect' => '$1 ga spostà ła pajina $3 a $4 sensa metare un rimando',
+'logentry-move-move_redir' => '$1 ga spostà ła pajina $3 a $4 lasiando un rimando',
'logentry-move-move_redir-noredirect' => '$1 ga spostà la pajina $3 a $4 al posto de un rimando sensa metare un rimando',
'logentry-patrol-patrol' => '$1 ga segnà la revixion $4 de la pajina $3 come verifegà',
'logentry-patrol-patrol-auto' => '$1 ga segnà automategamente la revixion $4 de la pajina $3 come verifegà',
NS_CATEGORY_TALK => 'Categoreye_copene',
);
+$specialPageAliases = array(
+ 'Allpages' => array( 'Totes_les_pådjes' ),
+ 'Block' => array( 'Bloker', 'Blocaedje' ),
+ 'Categories' => array( 'Categoreyes' ),
+ 'Preferences' => array( 'Preferinces' ),
+ 'Prefixindex' => array( 'Indecse_pa_betchete' ),
+ 'Search' => array( 'Cweri' ),
+ 'Specialpages' => array( 'Pådjes_sipeciåles' ),
+ 'Statistics' => array( 'Sitatistikes' ),
+ 'Version' => array( 'Modêye' ),
+ 'Watchlist' => array( 'Pådjes_shuvowes' ),
+);
+
# definixha del cogne po les limeros
# (number format definition)
# en: 12,345.67 -> wa: 12 345,67
# $linkTrail = '/^([a-zåâêîôûçéèA-ZÅÂÊÎÔÛÇÉÈ]+)(.*)$/sDu';
$linkTrail = '/^([a-zåâêîôûçéè]+)(.*)$/sDu';
-#
-# NOTE:
-# sysop = manaedjeu
-# bureaucrat = mwaisse-manaedjeu
-#
-
$messages = array(
# User preference toggles
'tog-underline' => 'Sorlignî les loyéns:',
'otherlanguages' => 'Ôtes lingaedjes',
'redirectedfrom' => '(Redjiblé di $1)',
'redirectpagesub' => 'Pådje di redjiblaedje',
-'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1.',
+'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2 a $1.',
'viewcount' => 'Cisse pådje la a stî léjhowe {{PLURAL:$1|on côp|$1 côps}}.',
'protectedpage' => 'Pådje protedjeye',
'jumpto' => 'Potchî a:',
Fonccion: $1<br />
Cweraedje: $2',
'viewsource' => 'Vey côde sourdant',
-'viewsourcetext' => 'Loukîz li contnou di l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis :',
+'viewsource-title' => 'Côde sourdant di «$1»',
+'viewsourcetext' => "Loukîz li contnou d' l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis:",
'protectedinterface' => "Cisse pådje ci dene on tecse d' eterface pol programe, eyet elle a stî protedjeye po s' waeranti siconte des abus.",
'editinginterface' => "'''Asteme:''' Vos estoz ki candje ene pådje eployeye po fé l' tecse po l' eterface do programe.
Les candjmints ki vso frîz vont candjî l' rivnance di l' eterface po ds ôtes uzeus.
Vosse conte a stî ahivé.
Èn rovyîz nén di candjî les [[Special:Preferences|preferinces di {{SITENAME}}]] a vosse môde.',
-'yourname' => "Vosse no d' elodjaedje",
+'yourname' => "Vosse no d' elodjaedje:",
'yourpassword' => 'Vosse sicret',
'yourpasswordagain' => 'Ritapez vosse sicret',
'remembermypassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
Vos ploz [[Special:Search/{{PAGENAME}}|cweri après l\' tite di cisse pådje ci]] dins des ôtès pådjes,
oudonbén <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås]</span>.',
'blocked-notice-logextract' => '{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.
-Li dierinne intrêye e djournå des blocaedjes est dnêyes chal pa dzo po infôrmåcion:',
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.
* '''Firefox / Safari:''' tchôkîz so ''Shift'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' so on Mac)
* '''Google Chrome:''' tchôkîz so ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)
'revdelete-hide-comment' => "Catchî l' comintaire di candjmint",
'revdelete-hide-user' => "Catchî l' no d' uzeu/adresse IP do candjeu",
'revdelete-hide-restricted' => "Oister foû les dnêyes ossu bén po les manaedjeus k' po les ôtes",
+'revdelete-radio-set' => 'Oyi',
+'revdelete-radio-unset' => 'Neni',
'revdelete-log' => 'Råjhon:',
'revdelete-submit' => 'Apliker {{PLURAL:$1|al modêye tchoezeye|åzès modêyes tchoezeyes}}',
'deletedhist' => 'Istwere disfacêye',
'rclinks' => 'Mostrer les $1 dierins candjmints des dierins $2 djoûs.<br />$3',
'diff' => 'dif.',
'hist' => 'ist.',
-'hide' => 'Muchyî',
-'show' => 'Håyner',
+'hide' => 'catch.',
+'show' => 'håy.',
'minoreditletter' => 'm',
'number_of_watching_users_pageview' => '[shuvou pa $1 {{PLURAL:$1|uzeu|uzeus}}]',
'rc_categories' => 'Limiter åzès categoreyes (separer avou des «|»)',
'filehist-revert' => 'disfé',
'filehist-current' => 'asteure',
'filehist-datetime' => 'Date/Eure',
+'filehist-thumb' => 'Imådjete',
+'filehist-thumbtext' => 'Imådjete pol modêye do $1',
+'filehist-nothumb' => 'Nole imådjete',
'filehist-user' => 'Uzeu',
'filehist-dimensions' => 'Grandeur',
'filehist-filesize' => 'Grandeur do fitchî',
'filehist-comment' => 'Comintaire',
+'filehist-missing' => 'Fitchî mancant',
'imagelinks' => 'Eployaedjes do fitchî',
'linkstoimage' => '{{PLURAL:$1|Li pådje shuvante eploye|Les $1 pådjes shuvantes eployèt}} ciste imådje chal:',
'nolinkstoimage' => "I n' a nole pådje k' eploye ciste imådje chal.",
'shared-repo' => 'on depot pårtaedjî',
# File reversion
+'filerevert' => 'Rimete come divant $1',
'filerevert-comment' => 'Råjhon:',
'filerevert-submit' => 'Disfé',
'brokenredirects-edit' => 'candjî',
'brokenredirects-delete' => 'disfacer',
+'withoutinterwiki' => 'Pådjes sins loyéns eterwiki',
+'withoutinterwiki-summary' => "Les pådjes shuvantes n' ont nén des loyéns viè ds ôtes lingaedjes.",
+'withoutinterwiki-legend' => 'Betchete',
+
'fewestrevisions' => "Årtikes k' on n' î a waire bodjî",
# Miscellaneous special pages
'popularpages' => 'Pådjes les pus léjhowes',
'wantedcategories' => 'Categoreyes les pus rcwerowes',
'wantedpages' => 'Pådjes les pus rcwerowes',
+'wantedfiles' => 'Fitchîs les pus rcwerous',
+'wantedtemplates' => 'Modeles ricwerous',
'mostlinked' => 'Pådjes les pus loyeyes',
'mostlinkedcategories' => 'Categoreyes les pus loyeyes',
'mostlinkedtemplates' => 'Modeles les pus eployîs',
'shortpages' => 'Coûtès pådjes',
'longpages' => 'Longowès pådjes',
'deadendpages' => 'Pådjes sins nou loyén wiki',
+'deadendpagestext' => "Les pådjes shuvantes n' ont nou loyén viè ds ôtès pådjes di {{SITENAME}}.",
'protectedpages' => 'Pådjes protedjeyes',
+'protectedpages-indef' => "Seulmint les protedjaedje disk' a todi",
+'protectedpages-cascade' => 'Seulmint les protedjaedjes e cascåde',
+'protectedpagestext' => "Les pådjes shuvantes sont protedjeyes siconte li displaeçaedje ou l' candjmint do tecse",
+'protectedpagesempty' => 'I gn a pol moumint nole pådje sifwaitmint protedjeye.',
+'protectedtitles' => 'Tites protedjîs',
+'protectedtitlestext' => "Les tites shuvants sont protedjîs, ça fwait k' on n' pout nén ahiver ene pådje lomêye inla.",
+'protectedtitlesempty' => 'I gn a pol moumint nou tite sifwaitmint protedjî.',
'listusers' => 'Djivêye des uzeus',
'usereditcount' => '$1 candjmint{{PLURAL:$1||s}}',
'usercreated' => '{{GENDER:$3|Edjîstré|Edjîstrêye}} li $1 a $2',
[[Special:UnusedCategories|Les categoreyes nén eployeyes]] èn sont nén håynêyes chal.
Loukîz eto [[Special:WantedCategories|les categoreyes dimandêyes]].',
'categoriesfrom' => 'Håyner les categoreyes a pårti di:',
+'special-categories-sort-count' => 'relére pa nombe di cayets',
+'special-categories-sort-abc' => 'relére alfabeticmint',
# Special:DeletedContributions
'deletedcontributions' => 'Contribouwaedjes disfacés',
'deletedcontributions-title' => 'Contribouwaedjes disfacés',
+'sp-deletedcontributions-contribs' => 'contribouwaedjes',
+
+# Special:LinkSearch
+'linksearch' => 'Cweri des dfoûtrinnès hårdêyes',
+'linksearch-pat' => 'Patron pol cweraedje:',
+'linksearch-ns' => 'Espåce di lomaedje:',
+'linksearch-ok' => 'Cweri',
+'linksearch-text' => 'Des caracteres «djokers» polèt esse eployîs, metans «*.wikipedia.org».
+Mins i fåt pol moens on dominne di prumî livea, metans «*.org»<br />
+Protocoles ricnoxhous: <tt>$1</tt> (nelzès metoz nén dins vosse tchinne di cweraedje).',
+'linksearch-line' => "$1 est loyî a pårti d' $2",
+'linksearch-error' => "Les caracteres djokers èn polèt esse eployîs k' a l' atake d' on no d' dominne ou d' lodjoe.",
+
+# Special:ListUsers
+'listusersfrom' => 'Håyner les uzeus a pårti di:',
+'listusers-submit' => 'Vey',
+'listusers-noresult' => 'Nol uzeu di trové.',
+'listusers-blocked' => '({{GENDER:$1|bloké|blokêye}})',
# Special:Log/newusers
'newuserlogpage' => 'Djournå des noveas uzeus',
'protectlogtext' => "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.
Loukîz al [[Special:ProtectedPages|djivêye des pådjes protedjeyes]] po vey les protedjaedjes ki sont en alaedje pol moumint.",
'protectedarticle' => '«[[$1]]» protedjî',
+'modifiedarticleprotection' => "a candjî l' livea d' protedjaedje di «[[$1]]»",
'unprotectedarticle' => 'a disprotedjî «[[$1]]»',
+'movedarticleprotection' => 'a displaecî les parametes di protedjaedje di «[[$1]]» eviè «[[$2]]»',
'protect-title' => 'Protedjant «$1»',
+'protect-title-notallowed' => "Livea d' protedjaedje di «$1»",
'prot_1movedto2' => '[[$1]] displaecî viè [[$2]]',
+'protect-badnamespace-title' => 'Espåce di lomaedjé nén protedjåve',
+'protect-badnamespace-text' => "Les pådjes e cist espåce di lomaedje ci n' polèt nén esse protedjeyes.",
'protect-legend' => "Acertinez l' protedjaedje",
'protectcomment' => 'Råjhon:',
+'protectexpiry' => 'Termene:',
+'protect-unchain-permissions' => "Disclawer d' ôtès tchuzes di protedjaedje",
'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''$1'''.",
'protect-default' => 'Permete a tos les uzeus',
'protect-level-autoconfirmed' => 'Bloker les noveas uzeus et les cis nén edjîstrés',
'protect-level-sysop' => 'Seulmint les manaedjeus',
+'protect-summary-cascade' => 'e cascåde',
+'protect-expiring' => 'finixh li $1 (UTC)',
+'protect-expiring-local' => 'finixh li $1',
+'protect-expiry-indefinite' => 'po todi',
+'protect-cascade' => 'Protedjî eto les modeles eployîs so cisse pådje ci (protedjaedje e cascåde)',
+'protect-othertime' => 'Date di fén:',
+'protect-othertime-op' => 'ôte (a vos del diner)',
+'protect-existing-expiry' => 'Li protedjaedje finixh li $2 a $3',
+'protect-otherreason' => 'Ene råjhon diferinne ou di pus:',
+'protect-otherreason-op' => 'Ôte råjhon',
'protect-expiry-options' => '1 eure:1 hour,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
+'restriction-type' => 'Permission po:',
+'restriction-level' => "Livea d' protedjaedje:",
+'minimum-size' => 'Grandeu minimom',
+'maximum-size' => 'Grandeu macsimom:',
'pagesize' => '(octets)',
# Restrictions (nouns)
-'restriction-edit' => 'Candjî',
-'restriction-move' => 'Displaecî',
+'restriction-edit' => 'candjî',
+'restriction-move' => 'displaecî',
+'restriction-create' => 'ahiver',
+'restriction-upload' => 'eberweter',
+
+# Restriction levels
+'restriction-level-sysop' => 'protedjaedje complet',
+'restriction-level-autoconfirmed' => 'dimey-protedjaedje',
+'restriction-level-all' => 'tos les liveas',
# Undelete
'undelete' => 'Rapexhî des disfacêyès pådjes',
'viewdeletedpage' => 'Vey les disfacêyès pådjes',
'undeletepagetext' => '{{PLURAL:$1|Li pådje shuvante a stî disfacêye mins elle est co ezès årtchives, do côp ele pout esse rapexheye|Les pådjes shuvantes ont stî disfacêyes mins ele sont co ezès årtchives, do côp ele polèt esse rapexheyes}}.
Les årtchives polèt esse rnetieyes di tinzintins.',
+'undelete-fieldset-title' => 'Rapexhî les modêyes',
'undeleteextrahelp' => "Po rapexhî l' istwere etire del pådje, leyîz vudes totes les boesses a clitchî eyet clitchîz sol boton «'''{{int:undeletebtn}}'''».
Po rapexhî seulmint des modêyes k' i gn a, tchoezixhoz les cenes ki vos vloz avou les boesses a clitchî, eyet poy clitchîz sol boton «'''{{int:undeletebtn}}'''».",
'undeleterevisions' => '$1 modêye{{PLURAL:$1||s}} ezès årtchives',
'year' => "Dispu l' anêye (et pus timpe):",
'sp-contributions-newbies' => 'Mostrer seulmint les contribouwaedjes des noveas contes',
+'sp-contributions-newbies-sub' => 'Emey les noveas uzeus',
+'sp-contributions-newbies-title' => 'Contribouwaedjes des noveas uzeus',
+'sp-contributions-blocklog' => 'djournå des blocaedjes',
+'sp-contributions-deleted' => 'contribouwaedjes disfacés',
+'sp-contributions-uploads' => 'eberwetaedjes',
+'sp-contributions-logs' => 'djournås',
'sp-contributions-talk' => 'copiner',
'sp-contributions-userrights' => 'droets',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'sp-contributions-blocked-notice-anon' => 'Ciste adresse IP est blokêye pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'sp-contributions-search' => 'Cweri les contribouwaedjes',
'sp-contributions-username' => "Adresse IP ou no d' uzeu:",
'sp-contributions-submit' => 'Cweri',
# What links here
'whatlinkshere' => 'Pådjes ki loynut chal',
-'whatlinkshere-title' => 'Pådjes ki loynut aviè « $1 »',
+'whatlinkshere-title' => 'Pådjes ki loynut aviè «$1»',
'whatlinkshere-page' => 'Pådje:',
'linkshere' => "Les pådjes ki shuvèt ont des loyéns viè '''[[:$1]]''':",
'nolinkshere' => "Nole pådje avou des loyéns viè '''[[:$1]]'''.",
'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus.
Les adresses IP blokêyes otomaticmint èn sont nén håynêyes.
Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po vey les blocaedjes èn alaedje pol moumint.",
-'unblocklogentry' => '«$1» a stî disbloké',
+'unblocklogentry' => 'a disbloké «$1»',
'range_block_disabled' => "Li possibilité po les manaedjeus di bloker des fortchetes d' adresses IP a stî dismetowe.",
'ipb_expiry_invalid' => 'Tins di blocaedje nén valide.',
'ip_range_invalid' => "Fortchete d' adresses IP nén valide.",
'sorbs_create_account_reason' => "Voste adresse IP si trove dins l' djivêye des procsis å lådje di DNSBL. Vos n' poloz nén ahiver on conte d' uzeu.",
# Developer tools
+'lockdb' => 'Aclawaedje del båze di dnêyes',
+'lockdbsuccesssub' => "L' aclawaedje del båze di dnêyes a stî comifåt",
+'lockdbsuccesstext' => 'Li båze di dnêyes a stî aclawêye.<br />
+Ni rovyîz nén del [[Special:UnlockDB|disserer]] cwand vos åroz tot fwait avou voste etertinaedje.',
'lockedbyandtime' => '(pa $1 li $2 a $3)',
# Move page
'table_pager_prev' => 'Pådje di dvant',
'table_pager_first' => 'Prumire pådje',
'table_pager_last' => 'Dierinne pådje',
+'table_pager_limit' => 'Håyner $1 cayets el pådje',
+'table_pager_limit_label' => 'Cayets par pådje:',
+'table_pager_limit_submit' => 'I va',
+'table_pager_empty' => 'Nou rzultat',
# Auto-summaries
-'autosumm-replace' => 'Li contnou a stî replaecé pa « $1 »',
+'autosumm-blank' => 'Pådje vudeye',
+'autosumm-replace' => 'Li contnou a stî replaecî pa « $1 »',
'autoredircomment' => 'Redjiblaedje viè [[$1]]',
'autosumm-new' => 'Pådje ahivêye avou «$1»',
# Special:Version
'version' => 'Modêye des programes',
+'version-extensions' => "Rawetes d' astalêyes",
+'version-specialpages' => 'Pådjes sipeciåles',
+'version-variables' => 'Variåves',
+'version-antispam' => 'Siconte do spam',
'version-skins' => 'Peas',
'version-other' => 'Ôtes',
+'version-license' => 'Licince',
+'version-software' => 'Programes astalés',
+'version-software-product' => 'Prodût',
'version-software-version' => 'Modêye',
# Special:FilePath
'filepath-page' => 'Fitchî:',
# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Cweraedje après les dobes fitchîs',
'fileduplicatesearch-submit' => 'Cweri',
# Special:SpecialPages
'specialpages-group-other' => 'Ôtès pådjes especiåles',
'specialpages-group-login' => "S' elodjî / si rashire",
'specialpages-group-changes' => 'Dierins candjmints et djournås',
+'specialpages-group-media' => 'Rapoirts et eberwetaedjes multimedia',
'specialpages-group-users' => 'Uzeus et abondroets',
'specialpages-group-highuse' => 'Eployaedje timpesse des pådjes',
+'specialpages-group-pages' => 'Djivêyes di pådjes',
+'specialpages-group-pagetools' => 'Usteyes po les pådjes',
+'specialpages-group-wiki' => 'Usteyes et dnêyes do wiki',
'specialpages-group-redirects' => 'Ridjiblaedjes di pådjes sipeciåles',
+'specialpages-group-spam' => 'Usteyes siconte do spam',
# Special:BlankPage
'blankpage' => 'Vude pådje',
# Special:Tags
+'tag-filter' => 'Passete po ls [[Special:Tags|etiketes]]:',
+'tag-filter-submit' => 'Passete',
'tags-edit' => 'candjî',
'tags-hitcount' => '$1 candjmint{{PLURAL:$1||s}}',
'right-userrights' => 'רעדאַקטירן אלע באַניצער רעכטן',
'right-userrights-interwiki' => 'רעדאַקטירן באַניצער רעכטן פֿון באַניצער אויף אנדערע וויקיס',
'right-siteadmin' => 'פארשליס און שליס-אויף די דאטעבאזע',
+'right-override-export-depth' => 'עקספארטירן בלעטער כולל געלינקטע בלעטער ביז א טיף פון 5',
'right-sendemail' => 'שיקן ע-פאסט צו אנדערע באניצער',
'right-passwordreset' => 'באַקוקן פאַסווארט צוריקשטעלן ע־בריוו',
'action-createpage' => 'שאַפֿן בלעטער',
'action-createtalk' => 'שאַפֿן שמועס בלעטער',
'action-createaccount' => 'שאַפֿן די באַניצער קאנטע',
-'action-minoredit' => 'באַצייכנען די רעדאַקטירונג ווי מינערדיק',
+'action-minoredit' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\93×\99 רע×\93×\90ַק×\98×\99ר×\95× ×\92 ×\95×\95×\99 ×\9e×\99× ×¢×¨×\93×\99ק',
'action-move' => 'באַוועגן דעם בלאַט',
'action-move-subpages' => 'באַוועגן דעם בלאַט מיט זײַנע אונטערבלעטער',
'action-move-rootuserpages' => 'באַוועגן באַניצער הויפטבלעטער',
'action-movefile' => 'באַוועגן די טעקע',
'action-upload' => 'אַרויפֿלאָדן די טעקע',
'action-reupload' => 'איבערשרײַבן די עקזיסטירנדע טעקע',
+'action-reupload-shared' => 'אריבערשרייבן די טעקע אין א געמיינזאמער רעפאזיטאריע',
'action-upload_by_url' => 'ארויפֿלאָדן די טעקע פֿון א URL',
'action-writeapi' => 'ניצן דעם שרײַבן API',
'action-delete' => 'אויסמעקן דעם בלאַט',
'action-suppressionlog' => 'באקוקן דעם פריוואטן לאג',
'action-block' => 'בלאקירן דעם באַניצער פֿון רעדאַקטירן',
'action-protect' => 'ענדערן שיצונג ניוואען פֿאַר דעם בלאַט',
+'action-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
'action-import' => 'אימפארטירן דעם בלאַט פֿון אַן אַנדער וויקי',
'action-importupload' => 'אימפארטירן דעם בלאַט דורך ארויפֿלאָדן אַ טעקע',
'action-patrol' => "אנצייכענען אנדערס' רעדאקטירונגן אלס נאכגעקוקט",
'upload-tryagain' => 'פֿאָרלייגן מאדיפֿיצירטע טעקע באַשרײַבונג',
'uploadnologin' => 'נישט אַרײַנלאגירט',
'uploadnologintext' => 'איר מוזט זײַן [[Special:UserLogin| אַרײַנלאָָגירט]] כדי ארויפֿצולאָדן טעקעס',
+'upload_directory_missing' => 'די ארויפלאד דירעקטאריע ($1) פעלט און דער וועבסערווירער קען זי נישט שאפן.',
'upload_directory_read_only' => 'דער וועבסארווער קען נישט שרייבן צום ארויפלאדן ארכיוו "$1".',
'uploaderror' => 'אַרויפֿלאָדן פֿעלער',
'upload-recreate-warning' => "'''ווארענונג: א טעקע מיט דעם נאמען איז געווארן אויסגעמעקט אדער באוועגט.'''
'badfilename' => 'טעקע נאמען איז געטוישט צו "$1".',
'filetype-mime-mismatch' => 'טעקע סופֿיקס ".$1" שטימט נישט מיטן MIME טיפ פון דער טעקע($2).',
'filetype-badmime' => 'טעקעס מיטן MIME טיפ "$1" טאר מען נישט ארויפלאדן.',
+'filetype-unwanted-type' => "'''\".\$1\"''' איז אן אומרעקאמענדירטער טעקע־טיפ. {{PLURAL:\$3|רעקאמענדירטער טעקע־טיפ איז|רעקאמענדירטע טעקע־טיפן זענען}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|איז נישט קיין דערלויבטער טעקע־טיפ |זענען נישט קיין דערלויבטע טעקע־טיפן}}. {{PLURAL:$3|דערלויבטער טעקע־טיפ איז|דערלויבטע טעקע־טיפן זענען}} $2.',
'filetype-missing' => 'די טעקע האט נישט קיין פארברייטערונג (למשל ".jpg").',
'empty-file' => 'די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.',
'file-too-large' => 'די טעקע וואָס איר האט אײַנגעגעבן איז צו גרויס.',
# Lock manager
'lockmanager-notlocked' => 'מ\'קען נישט אויפֿשליסן "$1"; ער איז נישט פֿארשלאסן.',
+# ZipDirectoryReader
+'zip-wrong-format' => 'ספעציפירטע טעקע איז נישט קיין ZIP טעקע.',
+
# Special:UploadStash
'uploadstash' => 'אַרויפֿלאָד רעזערוו',
'uploadstash-refresh' => 'דערפֿרישן די רשימה פון טעקעס',
'watcherrortext' => 'א גרײַז האט פאסירט ביים ענדערן אײַערע אויפֿפאסן ליסטע אײַנשטעלונגען פֿאר "$1".',
'enotif_mailer' => 'נאטיפאקאציע שיקער {{SITENAME}}',
-'enotif_reset' => 'באַצייכן אלע בלעטער שוין געזען',
+'enotif_reset' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9c×¢ ×\91×\9c×¢×\98ער ש×\95×\99×\9f ×\92×¢×\96×¢×\9f',
'enotif_newpagetext' => 'דאס איז א נייער בלאט.',
-'enotif_impersonal_salutation' => 'באנוצער {{SITENAME}}',
+'enotif_impersonal_salutation' => '{{SITENAME}} באַניצער',
'changed' => 'געטוישט',
-'created' => '×\91×\90ש×\90פן',
-'enotif_subject' => 'דער בלאט $PAGETITLE אין {{grammar:תחילית|{{SITENAME}}}} $CHANGEDORCREATED דורך $PAGEEDITOR',
+'created' => '×\92עש×\90ַפֿן',
+'enotif_subject' => 'דער בלאט $PAGETITLE אין {{SITENAME}} $CHANGEDORCREATED דורך $PAGEEDITOR',
'enotif_lastvisited' => 'זעט $1 פֿאַר אלע ענדערונגען זינט אײַער לעצטן וויזיט.',
'enotif_lastdiff' => 'זעט $1 פאר דער ענדערונג.',
'enotif_anon_editor' => 'אַנאנימער באַניצער $1',
'proxyblocker-disabled' => 'די פֿונקציע איז אומאַקטיווירט.',
'proxyblockreason' => 'אייער איי.פי. אדרעס איז געווארן געבלאקט צוליב דעם ווייל דאס איז א אפענער פראקסי. ביטע פארבינדט זיך מיט אייער אינטערנעט סערוויס פראוויידער אדער טעקס סאפארט צו אינפארמירן זיי איבער דעם ערענסטן זיכערהייט פראבלעם.',
'proxyblocksuccess' => 'געטאן.',
+'cant-block-while-blocked' => 'איר קען נישט בלאקירן קיין אנדערע באניצער ווען איר זענט אליין בלאקירט.',
'ipbnounblockself' => 'איר זענט נישט ערלויבט זיך אליין אויסבלאקירן',
# Developer tools
'tooltip-ca-nstab-template' => 'זעט דעם מוסטער',
'tooltip-ca-nstab-help' => 'זעט דעם הילף בלאַט',
'tooltip-ca-nstab-category' => 'באקוקט דעם קאטעגאריע בלאט',
-'tooltip-minoredit' => 'באצייכן דאס אלס מינערדיגע ענדערונג',
-'tooltip-save' => '×\94×\99×\98 ×\90×\95×\99×£ אייערע ענדערונגען',
+'tooltip-minoredit' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\93×\90ס ×\90×\9cס ×\9e×\99× ×¢×¨×\93×\99×\92×¢ ×¢× ×\93ער×\95× ×\92',
+'tooltip-save' => '×\90×\95×\99פֿ×\94×\99×\98×\9f אייערע ענדערונגען',
'tooltip-preview' => 'פֿארויסדיגע ווײַזונג, זײַט אזוי גוט באניצט די געלעגנהייט פֿארן אויפֿהיטן!',
'tooltip-diff' => 'ווײַזן אייערע ענדערונגען צום טעקסט',
'tooltip-compareselectedversions' => 'פארגלײַכם די צוויי ווערסיעס פון דעם בלאט',
'skinname-vector' => 'וועקטאר',
# Patrolling
-'markaspatrolleddiff' => 'באצייכנען אלס פאטראלירט',
-'markaspatrolledtext' => 'באצייכנען בלאט אלס פאטראלירט',
+'markaspatrolleddiff' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9cס פ×\90×\98ר×\90×\9c×\99ר×\98',
+'markaspatrolledtext' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\91×\9c×\90×\98 ×\90×\9cס פ×\90×\98ר×\90×\9c×\99ר×\98',
'markedaspatrolled' => 'באצייכנט אלס פאטראלירט',
-'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 פֿ×\95×\9f [[:$1]] ×\90×\99×\96 ×\92עצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90לס פאַטארלירט.',
+'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 פֿ×\95×\9f [[:$1]] ×\90×\99×\96 ×\91×\90ַצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90Ö·לס פאַטארלירט.',
'rcpatroldisabled' => 'פאַטראלירן ענדערונגען איז מבוטל געווארן',
'rcpatroldisabledtext' => 'די לעצטע ענדערונגען פאַטראלירן אייגנקייט איז אצינד בטל.',
'markedaspatrollederror' => 'נישט מעגלעך צו צייכענען אלס פאַטראלירט',
'exif-focallength-format' => '$1 מ"מ',
'exif-subjectarea' => 'סוביעקט געגנט',
'exif-flashenergy' => 'פלעש ענערגיע',
-'exif-focalplanexresolution' => 'פאקאל פלעין עקס רעזאלוציע',
-'exif-focalplaneresolutionunit' => 'פאקאל פלעין רעזאלוציע מאס',
-'exif-exposureindex' => 'עקספאוזשער אינדעקס',
+'exif-focalplanexresolution' => 'פאקוס־שטח האריזאנטאל',
+'exif-focalplaneyresolution' => 'פאקוס־שטח ווערטיקאל',
+'exif-focalplaneresolutionunit' => 'פאקוס־שטח רעזאלוציע איינהייט',
+'exif-subjectlocation' => 'סוביעקט ארט',
+'exif-exposureindex' => 'באַלײַכטן אינדעקס',
+'exif-sensingmethod' => 'דערשפירן מעטאד',
'exif-filesource' => 'מקור פֿון דער טעקע',
'exif-scenetype' => 'סצענע טיפ',
'exif-customrendered' => 'קאסטעם בילד פראצעסירונג',
'exif-exposuremode' => 'באַלײַכטן מצב',
-'exif-digitalzoomratio' => 'דיזשיטאלער זום ראשיאו',
+'exif-whitebalance' => 'ווײַס באַלאַנס',
+'exif-digitalzoomratio' => 'דיגיטאלער זום פארהעלטעניש',
'exif-focallengthin35mmfilm' => 'פאקאל לענג אין 35 מ"מ פילם',
+'exif-scenecapturetype' => 'סצענע אויפנעם טיפ',
'exif-gaincontrol' => 'סצענע קאנטראל',
'exif-contrast' => 'קאנטראסט',
'exif-devicesettingdescription' => 'זאך סעטינגס אראפמאלונג',
-'exif-gpslatitude' => 'לאטיטוד',
+'exif-gpslatituderef' => 'צפון אדער דרום גארטל־ליניע',
+'exif-gpslatitude' => 'גארטל־ליניע',
'exif-gpslongituderef' => 'מזרח אדער מערב לענג',
'exif-gpslongitude' => 'געאגראַפֿישע לענג',
'exif-gpsaltituderef' => 'אלטיטוט רעפערענץ',
-'exif-gpsaltitude' => 'אלטיטוט',
+'exif-gpsaltitude' => 'הייך',
+'exif-gpstimestamp' => 'GPS צייט (אטאם־זייגער)',
+'exif-gpssatellites' => 'סאטעליטן געניצט פאר מעסטן',
'exif-gpsdop' => 'מאס פוקנטליכקייט',
+'exif-gpsspeedref' => 'גיך איינהייט',
+'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
'exif-gpsimgdirectionref' => 'רעפערענץ פאר ריכטונג פון בילד',
'exif-gpsimgdirection' => 'ריכטונג פון בילד',
'exif-gpsdestlatituderef' => 'רעפֿערענץ פֿאַר ברייט־ליניע פון ציל',
'exif-gpsdestbearing' => 'ריכטונג פֿון ציל',
'exif-gpsdestdistanceref' => 'רעפֿערענץ פֿאַר ווײַטקייט פֿון ציל',
'exif-gpsdestdistance' => 'ווײַטקייט צום ציל',
+'exif-gpsprocessingmethod' => 'נאמען פון GPS פראצעסירן מעטאד',
'exif-gpsareainformation' => 'נאמען פון GPS געגענט',
-'exif-gpsdatestamp' => 'דאטום GPS',
-'exif-gpsdifferential' => 'דיפראנציאלע קאקרעקציע GPS',
+'exif-gpsdatestamp' => 'GPS דאטע',
+'exif-gpsdifferential' => 'GPS דיפראנציאלע קאקרעקציע',
+'exif-jpegfilecomment' => 'JPEG טעקע הערה',
+'exif-keywords' => 'שליסלווערטער',
+'exif-worldregioncreated' => "וועלטראיאן וואו מ'האט גענומען דאס בילד",
+'exif-countrycreated' => "לאנד וואו מ'האט געמאכט דאס בילד",
'exif-provinceorstatecreated' => "פראווינץ אדער שטאַט וואו מ'האט גענומען דאס בילד",
-'exif-citycreated' => "שטאַט וואו מ'האט געמאכט דאס בילד",
+'exif-citycreated' => "שטאָט וואו מ'האט געמאכט דאס בילד",
+'exif-worldregiondest' => 'וועלטראיאן געוויזן',
'exif-countrydest' => 'לאנד געוויזן',
'exif-countrycodedest' => 'קאד פאר לאנד געוויזן',
'exif-provinceorstatedest' => 'פראווינץ אדער שטאַט געוויזן',
-'exif-citydest' => 'געוויזענע שטאט',
+'exif-citydest' => 'געוויזענע שטָאט',
'exif-objectname' => 'קורצער טיטל',
'exif-source' => 'מקור',
'exif-editstatus' => 'רעדאקציאנעלער סטאטוס פון בילד',
'exif-licenseurl' => 'URL פֿאר קאפירעכט ליצענץ',
'exif-morepermissionsurl' => 'אלטערנאטיווע ליצענצירן אינפארמאציע',
'exif-pngfilecomment' => 'PNG טעקע הערה',
+'exif-contentwarning' => 'אינהאלט ווארענונג',
'exif-giffilecomment' => 'GIF טעקע הערה',
'exif-intellectualgenre' => 'ארט איינהייט',
'exif-subjectnewscode' => 'טעמע קאד',
'hebrew-calendar-m6b' => "אדר ב'",
'hebrew-calendar-m7' => 'ניסן',
'hebrew-calendar-m8' => 'אייר',
-'hebrew-calendar-m9' => 'ס×\99×\95×\95×\9f',
+'hebrew-calendar-m9' => 'סיון',
'hebrew-calendar-m10' => 'תמוז',
'hebrew-calendar-m11' => 'אב',
'hebrew-calendar-m12' => 'אלול',
'upload_source_file' => '(您计算机上的一个文件)',
# Special:ListFiles
-'listfiles-summary' => '该特殊页面显示所有上传的文件。
-当用户过滤图片时,只有当该文件的最新版本由该用户上传时才会显示。',
+'listfiles-summary' => '本特殊页面显示所有上传的文件。当按用户过滤时,只显示输入的用户最后上传的文件版本。',
'listfiles_search_for' => '按媒体名称搜索:',
'imgfile' => '文件',
'listfiles' => '文件列表',
'filehist-user' => '用户',
'filehist-dimensions' => '大小',
'filehist-filesize' => '文件大小',
-'filehist-comment' => '注解',
+'filehist-comment' => '评论',
'filehist-missing' => '文件遗失',
'imagelinks' => '文件用途',
'linkstoimage' => '以下的$1个页面链接到本文件:',
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class CleanupSpam extends Maintenance {
+
public function __construct() {
parent::__construct();
$this->mDescription = "Cleanup all spam from a given hostname";
$this->addOption( 'all', 'Check all wikis in $wgLocalDatabases' );
- $this->addArg( 'hostname', 'Hostname that was spamming' );
+ $this->addOption( 'delete', 'Delete pages containing only spam instead of blanking them' );
+ $this->addArg( 'hostname', 'Hostname that was spamming, single * wildcard in the beginning allowed' );
}
public function execute() {
$dbw = wfGetDB( DB_MASTER );
$dbw->begin( __METHOD__ );
$page = WikiPage::factory( $title );
- if ( !$rev ) {
- // Didn't find a non-spammy revision, blank the page
- $this->output( "blanking\n" );
- $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
- } else {
+ if ( $rev ) {
// Revert to this revision
$this->output( "reverting\n" );
$page->doEdit( $rev->getText(), wfMsgForContent( 'spam_reverting', $domain ),
EDIT_UPDATE, $rev->getId() );
+ } elseif ( $this->hasOption( 'delete' ) ) {
+ // Didn't find a non-spammy revision, blank the page
+ $this->output( "deleting\n" );
+ $page->doDeleteArticle( wfMsgForContent( 'spam_deleting', $domain ) );
+ } else {
+ // Didn't find a non-spammy revision, blank the page
+ $this->output( "blanking\n" );
+ $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
}
$dbw->commit( __METHOD__ );
}
<?php
/**
+ * 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
*/
/**
* Maintenance script to import all scripts in the MediaWiki namespace from a
* local site.
+ *
+ * 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
*/
}
$installer =
- new CliInstaller( $siteName, $adminName, $this->mOptions );
+ InstallerOverrides::getCliInstaller( $siteName, $adminName, $this->mOptions );
$status = $installer->doEnvironmentChecks();
if( $status->isGood() ) {
<?php
/**
+ * Maintenance script to generate first letter data files for Collation.php.
+ *
+ * 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
+ *
* @ingroup Maintenance
* @file
*/
'spambot_username',
'spam_reverting',
'spam_blanking',
+ 'spam_deleting',
),
'info' => array(
'pageinfo-title',
<?php
/**
+ * Simple lock server daemon that accepts lock/unlock requests.
+ *
+ * This code should not require MediaWiki setup or PHP files.
+ *
+ * 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 LockManager Maintenance
*/
-/**
- * This code should not require MediaWiki setup or PHP files.
- */
if ( php_sapi_name() !== 'cli' ) {
die( "This is not a valid entry point.\n" );
}
<?php
/**
- * Command line script to check for an open proxy at a specified location
+ * Command line script to check for an open proxy at a specified location.
+ *
+ * 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
<?php
/**
- * @ingroup Maintenance
+ * Maintenance script to remove old objects from the parser cache.
+ * This only works when the parser cache is in an SQL database.
+ *
+ * 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
*/
require( dirname( __FILE__ ) . '/Maintenance.php' );
<?php
/**
- * @ingroup Maintenance Memcached
+ * 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 Memcached
*/
require_once( dirname( __FILE__ ) . '/commandLine.inc' );
}
function restoreText( $revIds, $xml ) {
- global $wgTmpDirectory, $wgDBname;
+ global $wgDBname;
+ $tmpDir = wfTempDir();
if ( !count( $revIds ) ) {
return;
print "Restoring text from XML backup...\n";
- $revFileName = "$wgTmpDirectory/broken-revlist-$wgDBname";
- $filteredXmlFileName = "$wgTmpDirectory/filtered-$wgDBname.xml";
+ $revFileName = "$tmpDir/broken-revlist-$wgDBname";
+ $filteredXmlFileName = "$tmpDir/filtered-$wgDBname.xml";
// Write revision list
if ( !file_put_contents( $revFileName, implode( "\n", $revIds ) ) ) {
$this->errors['fixed'][$id] = true;
}
}
-
<?php
-
/**
- * @ingroup Testing
- *
* Set of classes to help with test output and such. Right now pretty specific
* to the parser tests but could be more useful one day :)
*
+ * 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 Testing
* @todo Fixme: Make this more generic
*/
+/**
+ * Terminal that supports ANSI escape sequences.
+ */
class AnsiTermColorer {
function __construct() {
}
}
}
-/* A colour-less terminal */
+/**
+ * A colour-less terminal
+ */
class DummyTermColorer {
public function color( $color ) {
return '';
function wfInstallerMain() {
global $wgRequest, $wgLang, $wgMetaNamespace, $wgCanonicalNamespaceNames;
- $installer = new WebInstaller( $wgRequest );
+ $installer = InstallerOverrides::getWebInstaller( $wgRequest );
if ( !$installer->startSession() ) {
$installer->finish();
--- /dev/null
+<?php
+/**
+ * MediaWiki installer overrides.
+ * Modify this file if you are a packager who needs to modify the behavior of the MediaWiki installer.
+ * Altering it is preferred over changing anything in /includes.
+ *
+ * Note: this file doesn't gets included from a global scope, don't use globals directly.
+ */
+
+/*
+
+Example of modifications:
+
+ public static function getLocalSettingsGenerator( Installer $installer ) {
+ return new MyLocalSettingsGenerator( $installer );
+ }
+
+Then add the following to the bottom of this file:
+
+class MyLocalSettingsGenerator extends LocalSettingsGenerator {
+ function getText() {
+ // Modify an existing setting
+ $this->values['wgResourceLoaderMaxQueryLength'] = 512;
+ // add a new setting
+ $ls = parent::getText();
+ return $ls . "\n\$wgUseTex = true;\n";
+ }
+}
+*/
+
+/**
+ * @since 1.20
+ */
+class InstallerOverrides {
+ /**
+ * Instantiates and returns an instance of LocalSettingsGenerator or its descendant classes
+ * @param Installer $installer
+ * @return LocalSettingsGenerator
+ */
+ public static function getLocalSettingsGenerator( Installer $installer ) {
+ return new LocalSettingsGenerator( $installer );
+ }
+
+ /**
+ * Instantiates and returns an instance of WebInstaller or its descendant classes
+ * @param WebRequest $request
+ * @return WebInstaller
+ */
+ public static function getWebInstaller( WebRequest $request ) {
+ return new WebInstaller( $request );
+ }
+
+ /**
+ * Instantiates and returns an instance of CliInstaller or its descendant classes
+ * @param string $siteName
+ * @param string|null $admin
+ * @param array $options
+ * @return CliInstaller
+ */
+ public static function getCliInstaller( $siteName, $admin = null, array $options = array() ) {
+ return new CliInstaller( $siteName, $admin, $options );
+ }
+}
'cu' => 'resources/mediawiki.language/languages/cu.js',
'cy' => 'resources/mediawiki.language/languages/cy.js',
'dsb' => 'resources/mediawiki.language/languages/dsb.js',
+ 'fi' => 'resources/mediawiki.language/languages/fi.js',
'fr' => 'resources/mediawiki.language/languages/fr.js',
'ga' => 'resources/mediawiki.language/languages/ga.js',
'gd' => 'resources/mediawiki.language/languages/gd.js',
'hi' => 'resources/mediawiki.language/languages/hi.js',
'hr' => 'resources/mediawiki.language/languages/hr.js',
'hsb' => 'resources/mediawiki.language/languages/hsb.js',
+ 'hu' => 'resources/mediawiki.language/languages/hu.js',
'hy' => 'resources/mediawiki.language/languages/hy.js',
'ksh' => 'resources/mediawiki.language/languages/ksh.js',
+ 'la' => 'resources/mediawiki.language/languages/la.js',
'ln' => 'resources/mediawiki.language/languages/ln.js',
'lt' => 'resources/mediawiki.language/languages/lt.js',
'lv' => 'resources/mediawiki.language/languages/lv.js',
'mt' => 'resources/mediawiki.language/languages/mt.js',
'nl' => 'resources/mediawiki.language/languages/nl.js',
'nso' => 'resources/mediawiki.language/languages/nso.js',
+ 'os' => 'resources/mediawiki.language/languages/os.js',
'pl' => 'resources/mediawiki.language/languages/pl.js',
'pt' => 'resources/mediawiki.language/languages/pt.js',
'pt-br' => 'resources/mediawiki.language/languages/pt-br.js',
/**
- * jQuery QUnit CompletenessTest 0.3
+ * jQuery QUnit CompletenessTest 0.4
*
* Tests the completeness of test suites for object oriented javascript
* libraries. Written to be used in environments with jQuery and QUnit.
- * Requires jQuery 1.5.2 or higher.
- *
- * Globals: jQuery, QUnit, console.log
+ * Requires jQuery 1.7.2 or higher.
*
* Built for and tested with:
- * - Safari 5
+ * - Chrome 19
* - Firefox 4
+ * - Safari 5
*
- * @author Timo Tijhof, 2011
+ * @author Timo Tijhof, 2011-2012
*/
-( function( $ ) {
+/*global jQuery, QUnit */
+/*jshint eqeqeq:false, eqnull:false, forin:false */
+( function ( $ ) {
+ "use strict";
+
+ var util,
+ hasOwn = Object.prototype.hasOwnProperty,
+ log = (window.console && window.console.log)
+ ? function () { return window.console.log.apply(window.console, arguments); }
+ : function () {};
+
+ // Simplified version of a few jQuery methods, except that they don't
+ // call other jQuery methods. Required to be able to run the CompletenessTest
+ // on jQuery itself as well.
+ util = {
+ keys: Object.keys || function ( object ) {
+ var key, keys = [];
+ for ( key in object ) {
+ if ( hasOwn.call( object, key ) ) {
+ keys.push( key );
+ }
+ }
+ return keys;
+ },
+ extend: function () {
+ var options, name, src, copy,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length;
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+ },
+ each: function ( object, callback ) {
+ var name;
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ },
+ // $.type and $.isEmptyObject are safe as is, they don't call
+ // other $.* methods. Still need to be derefenced into `util`
+ // since the CompletenessTest will overload them with spies.
+ type: $.type,
+ isEmptyObject: $.isEmptyObject
+ };
+
/**
* CompletenessTest
// Keep track in these objects. Keyed by strings with the
// method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
+ this.injectionTracker = {};
this.methodCallTracker = {};
this.missingTests = {};
- this.ignoreFn = undefined === ignoreFn ? function(){ return false; } : ignoreFn;
+ this.ignoreFn = undefined === ignoreFn ? function () { return false; } : ignoreFn;
// Lazy limit in case something weird happends (like recurse (part of) ourself).
- this.lazyLimit = 1000;
+ this.lazyLimit = 2000;
this.lazyCounter = 0;
var that = this;
// Bind begin and end to QUnit.
- QUnit.begin = function(){
- that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
- };
+ QUnit.begin( function () {
+ that.walkTheObject( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
+ log( 'CompletenessTest/walkTheObject/ACTION_INJECT', that );
+ });
+
+ QUnit.done( function () {
+ that.populateMissingTests();
+ log( 'CompletenessTest/populateMissingTests', that );
+
+ var toolbar, testResults, cntTotal, cntCalled, cntMissing;
+
+ cntTotal = util.keys( that.injectionTracker ).length;
+ cntCalled = util.keys( that.methodCallTracker ).length;
+ cntMissing = util.keys( that.missingTests ).length;
- QUnit.done = function(){
- that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_CHECK );
- console.log( 'CompletenessTest.ACTION_CHECK', that );
+ function makeTestResults( blob, title, style ) {
+ var elOutputWrapper, elTitle, elContainer, elList, elFoot;
- // Build HTML representing the outcome from CompletenessTest
- // And insert it into the header.
+ elTitle = document.createElement( 'strong' );
+ elTitle.textContent = title || 'Values';
- var makeList = function( blob, title, style ) {
- title = title || 'Values';
- var html = '<strong>' + mw.html.escape(title) + '</strong>';
- $.each( blob, function( key ) {
- html += '<br />' + mw.html.escape(key);
+ elList = document.createElement( 'ul' );
+ util.each( blob, function ( key ) {
+ var elItem = document.createElement( 'li' );
+ elItem.textContent = key;
+ elList.appendChild( elItem );
});
- html += '<br /><br /><em>— CompletenessTest</em>';
- var $oldResult = $( '#qunit-completenesstest' ),
- $result = $oldResult.length ? $oldResult : $( '<div id="qunit-completenesstest"></div>' );
- return $result.css( style ).html( html );
- };
- if ( $.isEmptyObject( that.missingTests ) ) {
+ elFoot = document.createElement( 'p' );
+ elFoot.innerHTML = '<em>— CompletenessTest</em>';
+
+ elContainer = document.createElement( 'div' );
+ elContainer.appendChild( elTitle );
+ elContainer.appendChild( elList );
+ elContainer.appendChild( elFoot );
+
+ elOutputWrapper = document.getElementById( 'qunit-completenesstest' );
+ if ( !elOutputWrapper ) {
+ elOutputWrapper = document.createElement( 'div' );
+ elOutputWrapper.id = 'qunit-completenesstest';
+ }
+ elOutputWrapper.appendChild( elContainer );
+
+ util.each( style, function ( key, value ) {
+ elOutputWrapper.style[key] = value;
+ });
+ return elOutputWrapper;
+ }
+
+ if ( cntMissing === 0 ) {
// Good
- var $testResults = makeList(
- { 'No missing tests!': true },
- 'missingTests',
+ testResults = makeTestResults(
+ {},
+ 'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. No missing tests!',
{
- background: '#D2E0E6',
+ backgroundColor: '#D2E0E6',
color: '#366097',
- padding: '1em'
+ paddingTop: '1em',
+ paddingRight: '1em',
+ paddingBottom: '1em',
+ paddingLeft: '1em'
}
);
} else {
// Bad
- var $testResults = makeList(
+ testResults = makeTestResults(
that.missingTests,
- 'missingTests',
+ 'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. ' + cntMissing + ' methods not covered:',
{
- background: '#EE5757',
+ backgroundColor: '#EE5757',
color: 'black',
- padding: '1em'
+ paddingTop: '1em',
+ paddingRight: '1em',
+ paddingBottom: '1em',
+ paddingLeft: '1em'
}
);
}
- $( '#qunit-testrunner-toolbar' ).prepend( $testResults );
- };
+ toolbar = document.getElementById( 'qunit-testrunner-toolbar' );
+ if ( toolbar ) {
+ toolbar.insertBefore( testResults, toolbar.firstChild );
+ }
+ });
return this;
};
CompletenessTest.fn = CompletenessTest.prototype = {
/**
- * CompletenessTest.fn.checkTests
+ * CompletenessTest.fn.walkTheObject
*
* This function recursively walks through the given object, calling itself as it goes.
* Depending on the action it either injects our listener into the methods, or
* masterVariable. Not including currName.
* @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
*/
- checkTests: function( currName, currVar, masterVariable, parentPathArray, action ) {
-
- // Handle the lazy limit
- this.lazyCounter++;
- if ( this.lazyCounter > this.lazyLimit ) {
- console.log( 'CompletenessTest.fn.checkTests> Limit reached: ' + this.lazyCounter );
- return null;
- }
+ walkTheObject: function ( currName, currVar, masterVariable, parentPathArray, action ) {
- var type = $.type( currVar ),
+ var key, value, tmpPathArray,
+ type = util.type( currVar ),
that = this;
// Hard ignores
if ( this.ignoreFn( currVar, that, parentPathArray ) ) {
return null;
+ }
- // Functions
- } else if ( type === 'function' ) {
-
- /* CHECK MODE */
-
- if ( action === CompletenessTest.ACTION_CHECK ) {
-
- if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
-
- that.hasTest( parentPathArray.join( '.' ) );
+ // Handle the lazy limit
+ this.lazyCounter++;
+ if ( this.lazyCounter > this.lazyLimit ) {
+ log( 'CompletenessTest.fn.walkTheObject> Limit reached: ' + this.lazyCounter, parentPathArray );
+ return null;
+ }
- // We don't support checking object constructors yet...
- } else {
+ // Functions
+ if ( type === 'function' ) {
- // ...the prototypes are fine tho
- $.each( currVar.prototype, function( key, value ) {
- if ( key === 'constructor' ) return;
+ if ( !currVar.prototype || util.isEmptyObject( currVar.prototype ) ) {
- // Clone and break reference to parentPathArray
- var tmpPathArray = $.extend( [], parentPathArray );
- tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
+ if ( action === CompletenessTest.ACTION_INJECT ) {
- that.hasTest( tmpPathArray.join( '.' ) );
+ that.injectionTracker[ parentPathArray.join( '.' ) ] = true;
+ that.injectCheck( masterVariable, parentPathArray, function () {
+ that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
} );
}
- /* INJECT MODE */
-
- } else if ( action === CompletenessTest.ACTION_INJECT ) {
+ // We don't support checking object constructors yet...
+ // ...we can check the prototypes fine, though.
+ } else {
+ if ( action === CompletenessTest.ACTION_INJECT ) {
- if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
+ for ( key in currVar.prototype ) {
+ if ( hasOwn.call( currVar.prototype, key ) ) {
+ value = currVar.prototype[key];
+ if ( key === 'constructor' ) {
+ continue;
+ }
- // Inject check
- that.injectCheck( masterVariable, parentPathArray, function() {
- that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
- } );
+ // Clone and break reference to parentPathArray
+ tmpPathArray = util.extend( [], parentPathArray );
+ tmpPathArray.push( 'prototype' );
+ tmpPathArray.push( key );
- // We don't support checking object constructors yet...
- } else {
+ that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+ }
+ }
- // ... the prototypes are fine tho
- $.each( currVar.prototype, function( key, value ) {
- if ( key === 'constructor' ) return;
-
- // Clone and break reference to parentPathArray
- var tmpPathArray = $.extend( [], parentPathArray );
- tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
-
- that.checkTests( key, value, masterVariable, tmpPathArray, action );
- } );
}
-
}
- // Recursively. After all, this *is* the completeness test
- } else if ( type === 'object' ) {
-
- $.each( currVar, function( key, value ) {
-
- // Clone and break reference to parentPathArray
- var tmpPathArray = $.extend( [], parentPathArray );
- tmpPathArray.push( key );
+ }
- that.checkTests( key, value, masterVariable, tmpPathArray, action );
+ // Recursively. After all, this is the *completeness* test
+ if ( type === 'function' || type === 'object' ) {
+ for ( key in currVar ) {
+ if ( hasOwn.call( currVar, key ) ) {
+ value = currVar[key];
- } );
+ // Clone and break reference to parentPathArray
+ tmpPathArray = util.extend( [], parentPathArray );
+ tmpPathArray.push( key );
+ that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+ }
+ }
}
},
+ populateMissingTests: function () {
+ var ct = this;
+ util.each( ct.injectionTracker, function ( key ) {
+ ct.hasTest( key );
+ });
+ },
+
/**
* CompletenessTest.fn.hasTest
*
* @param fnName {String}
* @return {Boolean}
*/
- hasTest: function( fnName ) {
+ hasTest: function ( fnName ) {
if ( !( fnName in this.methodCallTracker ) ) {
this.missingTests[fnName] = true;
return false;
* @param objectPathArray {Array}
* @param injectFn {Function}
*/
- injectCheck: function( masterVariable, objectPathArray, injectFn ) {
- var prev,
- curr = masterVariable,
- lastMember;
+ injectCheck: function ( masterVariable, objectPathArray, injectFn ) {
+ var i, len, prev, memberName, lastMember,
+ curr = masterVariable;
+
+ // Get the object in question through the path from the master variable,
+ // We can't pass the value directly because we need to re-define the object
+ // member and keep references to the parent object, member name and member
+ // value at all times.
+ for ( i = 0, len = objectPathArray.length; i < len; i++ ) {
+ memberName = objectPathArray[i];
- $.each( objectPathArray, function( i, memberName ) {
prev = curr;
curr = prev[memberName];
lastMember = memberName;
- });
+ }
// Objects are by reference, members (unless objects) are not.
- prev[lastMember] = function() {
+ prev[lastMember] = function () {
injectFn();
return curr.apply( this, arguments );
};
return forms[2];
}
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'bs', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'instrumental': // instrumental
+ word = 's ' + word;
+ break;
+ case 'lokativ': // locative
+ word = 'o ' + word;
+ break;
+ }
+ return word;
+};
return forms[3];
}
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'dsb', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'instrumental': // instrumental
+ word = 'z ' + word;
+ break;
+ case 'lokatiw': // lokatiw
+ word = 'wo ' + word;
+ break;
+ }
+ return word;
+};
--- /dev/null
+/**
+ * Finnish (Suomi) language functions
+ * @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'fi', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+
+ // vowel harmony flag
+ var aou = word.match( /[aou][^äöy]*$/i );
+ var origWord = word;
+ if ( word.match( /wiki$/i ) ) {
+ aou = false;
+ }
+ //append i after final consonant
+ if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) )
+ word += 'i';
+
+ switch ( form ) {
+ case 'genitive':
+ word += 'n';
+ break;
+ case 'elative':
+ word += ( aou ? 'sta' : 'stä' );
+ break;
+ case 'partitive':
+ word += ( aou ? 'a' : 'ä' );
+ break;
+ case 'illative':
+ // Double the last letter and add 'n'
+ word += word.substr( word.length-1 ) + 'n';
+ break;
+ case 'inessive':
+ word += ( aou ? 'ssa' : 'ssä' );
+ break;
+ default:
+ word = origWord;
+ break;
+ }
+ return word;
+};
}
return forms[2];
};
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'ga', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'ainmlae':
+ switch ( word ) {
+ case 'an Domhnach':
+ word = 'Dé Domhnaigh';
+ break;
+ case 'an Luan':
+ word = 'Dé Luain';
+ break;
+ case 'an Mháirt':
+ word = 'Dé Mháirt';
+ break;
+ case 'an Chéadaoin':
+ word = 'Dé Chéadaoin';
+ break;
+ case 'an Déardaoin':
+ word = 'Déardaoin';
+ break;
+ case 'an Aoine':
+ word = 'Dé hAoine';
+ break;
+ case 'an Satharn':
+ word = 'Dé Sathairn';
+ break;
+ }
+ }
+ return word;
+};
}
return forms[1];
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'he', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'prefixed':
+ case 'תחילית': // the same word in Hebrew
+ // Duplicate prefixed "Waw", but only if it's not already double
+ if ( word.substr( 0, 1 ) === "ו" && word.substr( 0, 2 ) !== "וו" ) {
+ word = "ו" + word;
+ }
+
+ // Remove the "He" if prefixed
+ if ( word.substr( 0, 1 ) === "ה" ) {
+ word = word.substr( 1, word.length );
+ }
+
+ // Add a hyphen (maqaf) before numbers and non-Hebrew letters
+ if ( word.substr( 0, 1 ) < "א" || word.substr( 0, 1 ) > "ת" ) {
+ word = "־" + word;
+ }
+ }
+ return word;
+};
return forms[3];
}
};
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms =mw.language.getData( 'hsb', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'instrumental': // instrumental
+ word = 'z ' + word;
+ break;
+ case 'lokatiw': // lokatiw
+ word = 'wo ' + word;
+ break;
+ }
+ return word;
+};
--- /dev/null
+/**
+ * Hungarian language functions
+ * @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'hu', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'rol':
+ word += 'ról';
+ break;
+ case 'ba':
+ word += 'ba';
+ break;
+ case 'k':
+ word += 'k';
+ break;
+ }
+ return word;
+};
forms = mediaWiki.language.preConvertPlural( forms, 2 );
return ( Math.abs( count ) <= 1 ) ? forms[0] : forms[1];
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'hy', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+
+ // These rules are not perfect, but they are currently only used for site names so it doesn't
+ // matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+
+ switch ( form ) {
+ case 'genitive': // սեռական հոլով
+ if ( word.substr( -1 ) === 'ա' )
+ word = word.substr( 0, word.length -1 ) + 'այի';
+ else if ( word.substr( -1 ) === 'ո' )
+ word = word.substr( 0, word.length - 1 ) + 'ոյի';
+ else if ( word.substr( -4 ) === 'գիրք' )
+ word = word.substr( 0, word.length - 4 ) + 'գրքի';
+ else
+ word = word + 'ի';
+ break;
+ }
+ return word;
+};
--- /dev/null
+/**
+ * Latin (lingua Latina) language functions
+ * @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'la', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'genitive':
+ // only a few declensions, and even for those mostly the singular only
+ word = word.replace( /u[ms]$/i, 'i' ); // 2nd declension singular
+ word = word.replace( /ommunia$/i, 'ommunium' ); // 3rd declension neuter plural (partly)
+ word = word.replace( /a$/i, 'ae' ); // 1st declension singular
+ word = word.replace( /libri$/i,'librorum' ); // 2nd declension plural (partly)
+ word = word.replace( /nuntii$/i, 'nuntiorum' ); // 2nd declension plural (partly)
+ word = word.replace( /tio$/i,'tionis' ); // 3rd declension singular (partly)
+ word = word.replace( /ns$/i, 'ntis' );
+ word = word.replace( /as$/i, 'atis' );
+ word = word.replace( /es$/i ,'ei' ); // 5th declension singular
+ break;
+ case 'accusative':
+ // only a few declensions, and even for those mostly the singular only
+ word = word.replace( /u[ms]$/i, 'um' ); // 2nd declension singular
+ word = word.replace( /ommunia$/i, 'am' ); // 3rd declension neuter plural (partly)
+ word = word.replace( /a$/i, 'ommunia' ); // 1st declension singular
+ word = word.replace( /libri$/i,'libros' ); // 2nd declension plural (partly)
+ word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly)
+ word = word.replace( /tio$/i,'tionem' ); // 3rd declension singular (partly)
+ word = word.replace( /ns$/i, 'ntem' );
+ word = word.replace( /as$/i, 'atem');
+ word = word.replace( /es$/i ,'em' ); // 5th declension singular
+ break;
+ case 'ablative':
+ // only a few declensions, and even for those mostly the singular only
+ word = word.replace( /u[ms]$/i, 'o' ); // 2nd declension singular
+ word = word.replace( /ommunia$/i, 'ommunibus' ); // 3rd declension neuter plural (partly)
+ word = word.replace( /a$/i, 'a' ); // 1st declension singular
+ word = word.replace( /libri$/i,'libris' ); // 2nd declension plural (partly)
+ word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly)
+ word = word.replace( /tio$/i,'tione' ); // 3rd declension singular (partly)
+ word = word.replace( /ns$/i, 'nte' );
+ word = word.replace( /as$/i, 'ate');
+ word = word.replace( /es$/i ,'e' ); // 5th declension singular
+ break;
+ }
+ return word;
+};
--- /dev/null
+/**
+ * Ossetian (Ирон) language functions
+ * @author Santhosh Thottingal
+ */
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'os', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ // Ending for allative case
+ var end_allative = 'мæ';
+ // Variable for 'j' beetwen vowels
+ var jot = '';
+ // Variable for "-" for not Ossetic words
+ var hyphen = '';
+ // Variable for ending
+ var ending = '';
+ // Checking if the $word is in plural form
+ if ( word.match( /тæ$/i ) ) {
+ word = word.substring( 0, word.length - 1 );
+ end_allative = 'æм';
+ }
+ // Works if word is in singular form.
+ // Checking if word ends on one of the vowels: е, ё, и, о, ы, э, ю, я.
+ else if ( word.match( /[аæеёиоыэюя]$/i ) ) {
+ jot = 'й';
+ }
+ // Checking if word ends on 'у'. 'У' can be either consonant 'W' or vowel 'U' in cyrillic Ossetic.
+ // Examples: {{grammar:genitive|аунеу}} = аунеуы, {{grammar:genitive|лæппу}} = лæппуйы.
+ else if ( word.match( /у$/i ) ) {
+ if ( ! word.substring( word.length-2, word.length-1 ).match( /[аæеёиоыэюя]$/i ) ) {
+ jot = 'й';
+ }
+ } else if ( !word.match( /[бвгджзйклмнопрстфхцчшщьъ]$/i ) ) {
+ hyphen = '-';
+ }
+
+ switch ( form ) {
+ case 'genitive':
+ ending = hyphen + jot + 'ы';
+ break;
+ case 'dative':
+ ending = hyphen + jot + 'æн';
+ break;
+ case 'allative':
+ ending = hyphen + end_allative;
+ break;
+ case 'ablative':
+ if ( jot == 'й' ) {
+ ending = hyphen + jot + 'æ';
+ }
+ else {
+ ending = hyphen + jot + 'æй';
+ }
+ break;
+ case 'superessive':
+ ending = hyphen + jot + 'ыл';
+ break;
+ case 'equative':
+ ending = hyphen + jot + 'ау';
+ break;
+ case 'comitative':
+ ending = hyphen + 'имæ';
+ break;
+ }
+ return word + ending;
+};
return forms[2];
}
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'ru', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'genitive': // родительный падеж
+ if ( ( word.substr( word.length - 4 ) == 'вики' ) || ( word.substr( word.length - 4 ) == 'Вики' ) ) {
+ }
+ else if ( word.substr( word.length - 1 ) == 'ь' )
+ word = word.substr(0, word.length - 1 ) + 'я';
+ else if ( word.substr( word.length - 2 ) == 'ия' )
+ word = word.substr(0, word.length - 2 ) + 'ии';
+ else if ( word.substr( word.length - 2 ) == 'ка' )
+ word = word.substr(0, word.length - 2 ) + 'ки';
+ else if ( word.substr( word.length - 2 ) == 'ти' )
+ word = word.substr(0, word.length - 2 ) + 'тей';
+ else if ( word.substr( word.length - 2 ) == 'ды' )
+ word = word.substr(0, word.length - 2 ) + 'дов';
+ else if ( word.substr( word.length - 3 ) == 'ник' )
+ word = word.substr(0, word.length - 3 ) + 'ника';
+ break;
+ }
+ return word;
+};
}
return forms[4];
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'sl', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'mestnik': // locative
+ word = 'o ' + word;
+ break;
+ case 'orodnik': // instrumental
+ word = 'z ' + word;
+ break;
+ }
+ return word;
+};
return forms[2];
}
};
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+ var grammarForms = mw.language.getData( 'uk', 'grammarForms' );
+ if ( grammarForms && grammarForms[form] ) {
+ return grammarForms[form][word] ;
+ }
+ switch ( form ) {
+ case 'genitive': // родовий відмінок
+ if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
+ }
+ else if ( word.substr( word.length - 1 ) == 'ь' )
+ word = word.substr(0, word.length - 1 ) + 'я';
+ else if ( word.substr( word.length - 2 ) == 'ія' )
+ word = word.substr(0, word.length - 2 ) + 'ії';
+ else if ( word.substr( word.length - 2 ) == 'ка' )
+ word = word.substr(0, word.length - 2 ) + 'ки';
+ else if ( word.substr( word.length - 2 ) == 'ти' )
+ word = word.substr(0, word.length - 2 ) + 'тей';
+ else if ( word.substr( word.length - 2 ) == 'ды' )
+ word = word.substr(0, word.length - 2 ) + 'дов';
+ else if ( word.substr( word.length - 3 ) == 'ник' )
+ word = word.substr(0, word.length - 3 ) + 'ника';
+ break;
+ case 'accusative': // знахідний відмінок
+ if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
+ }
+ else if ( word.substr( word.length - 2 ) == 'ія' )
+ word = word.substr(0, word.length - 2 ) + 'ію';
+ break;
+ }
+ return word;
+};
*
*/
-( function( $, mw ) {
+( function ( mw, $ ) {
/**
* Function that's useful when constructing the URI string -- we frequently encounter the pattern of
function cat( pre, val, post, raw ) {
if ( val === undefined || val === null || val === '' ) {
return '';
- } else {
- return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
}
+ return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
}
// Regular expressions to parse many common URIs.
* We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
* so the library is still testable & purely functional.
*/
- mw.UriRelative = function( documentLocation ) {
+ mw.UriRelative = function ( documentLocation ) {
+ var defaultUri;
/**
* Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
if ( uri !== undefined && uri !== null || uri !== '' ) {
if ( typeof uri === 'string' ) {
- this._parse( uri, options );
+ this.parse( uri, options );
} else if ( typeof uri === 'object' ) {
- var _this = this;
- $.each( properties, function( i, property ) {
- _this[property] = uri[property];
+ var uriObj = this;
+ $.each( properties, function ( i, property ) {
+ uriObj[property] = uri[property];
} );
if ( this.query === undefined ) {
this.query = {};
* @param {String} string
* @return {String} encoded for URI
*/
- Uri.encode = function( s ) {
+ Uri.encode = function ( s ) {
return encodeURIComponent( s )
.replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
.replace( /\)/g, '%29').replace( /\*/g, '%2A')
* @param {String} string encoded for URI
* @return {String} decoded string
*/
- Uri.decode = function( s ) {
+ Uri.decode = function ( s ) {
return decodeURIComponent( s.replace( /\+/g, '%20' ) );
};
* @param {Object} options
* @return {Boolean} success
*/
- _parse: function( str, options ) {
- var matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
- var uri = this;
- $.each( properties, function( i, property ) {
+ parse: function ( str, options ) {
+ var q,
+ uri = this,
+ matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+ $.each( properties, function ( i, property ) {
uri[ property ] = matches[ i+1 ];
} );
// uri.query starts out as the query string; we will parse it into key-val pairs then make
// that object the "query" property.
// we overwrite query in uri way to make cloning easier, it can use the same list of properties.
- var q = {};
+ q = {};
// using replace to iterate over a string
if ( uri.query ) {
uri.query.replace( /(?:^|&)([^&=]*)(?:(=)([^&]*))?/g, function ($0, $1, $2, $3) {
+ var k, v;
if ( $1 ) {
- var k = Uri.decode( $1 );
- var v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
+ k = Uri.decode( $1 );
+ v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
// If overrideKeys, always (re)set top level value.
// If not overrideKeys but this key wasn't set before, then we set it as well.
* Returns user and password portion of a URI.
* @return {String}
*/
- getUserInfo: function() {
+ getUserInfo: function () {
return cat( '', this.user, cat( ':', this.password, '' ) );
},
* Gets host and port portion of a URI.
* @return {String}
*/
- getHostPort: function() {
+ getHostPort: function () {
return this.host + cat( ':', this.port, '' );
},
* In most real-world URLs, this is simply the hostname, but it is more general.
* @return {String}
*/
- getAuthority: function() {
+ getAuthority: function () {
return cat( '', this.getUserInfo(), '@' ) + this.getHostPort();
},
* Does not preserve the order of arguments passed into the URI. Does handle escaping.
* @return {String}
*/
- getQueryString: function() {
+ getQueryString: function () {
var args = [];
- $.each( this.query, function( key, val ) {
- var k = Uri.encode( key );
- var vals = val === null ? [ null ] : $.makeArray( val );
- $.each( vals, function( i, v ) {
+ $.each( this.query, function ( key, val ) {
+ var k = Uri.encode( key ),
+ vals = val === null ? [ null ] : $.makeArray( val );
+ $.each( vals, function ( i, v ) {
args.push( k + ( v === null ? '' : '=' + Uri.encode( v ) ) );
} );
} );
* Returns everything after the authority section of the URI
* @return {String}
*/
- getRelativePath: function() {
+ getRelativePath: function () {
return this.path + cat( '?', this.getQueryString(), '', true ) + cat( '#', this.fragment, '' );
},
* Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
* @return {String} the URI string
*/
- toString: function() {
+ toString: function () {
return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
},
* Clone this URI
* @return {Object} new URI object with same properties
*/
- clone: function() {
+ clone: function () {
return new Uri( this );
},
* @param {Object} query parameters in key-val form to override or add
* @return {Object} this URI object
*/
- extend: function( parameters ) {
+ extend: function ( parameters ) {
$.extend( this.query, parameters );
return this;
}
};
- var defaultUri = new Uri( documentLocation );
+ defaultUri = new Uri( documentLocation );
return Uri;
};
mw.Uri = mw.UriRelative( document.location.href );
}
-} )( jQuery, mediaWiki );
+}( mediaWiki, jQuery ) );
// Get last match, stop at hash
var re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ),
m = re.exec( url );
- if ( m && m.length > 1 ) {
+ if ( m ) {
// Beware that decodeURIComponent is not required to understand '+'
// by spec, as encodeURIComponent does not produce it.
return decodeURIComponent( m[1].replace( /\+/g, '%20' ) );
<?php
-global $IP;
-require_once( "$IP/maintenance/backupPrefetch.inc" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/backupPrefetch.inc";
/**
* Tests for BaseDump
$fname = $this->getNewTempFile();
// The header of every prefetch file
- $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+ $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
<siteinfo>
<sitename>wikisvn</sitename>
<base>http://localhost/wiki-svn/index.php/Main_Page</base>
<ip>127.0.0.1</ip>
</contributor>
<comment>BackupDumperTestP1Summary1</comment>
- <text xml:space="preserve">BackupDumperTestP1Text1</text>
<sha1>0bolhl6ol7i6x0e7yq91gxgaan39j87</sha1>
+ <text xml:space="preserve">BackupDumperTestP1Text1</text>
</revision>
</page>
';
<ip>127.0.0.1</ip>
</contributor>
<comment>BackupDumperTestP2Summary1</comment>
- <text xml:space="preserve">BackupDumperTestP2Text1</text>
<sha1>jprywrymfhysqllua29tj3sc7z39dl2</sha1>
+ <text xml:space="preserve">BackupDumperTestP2Text1</text>
</revision>
<revision>
<id>5</id>
<ip>127.0.0.1</ip>
</contributor>
<comment>BackupDumperTestP2Summary4 extra</comment>
- <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
<sha1>6o1ciaxa6pybnqprmungwofc4lv00wv</sha1>
+ <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
</revision>
</page>
';
<ip>127.0.0.1</ip>
</contributor>
<comment>Talk BackupDumperTestP1 Summary1</comment>
- <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
<sha1>nktofwzd0tl192k3zfepmlzxoax1lpe</sha1>
+ <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
</revision>
</page>
';
<?php
-global $IP;
-require_once( "$IP/maintenance/backup.inc" );
-require_once( "$IP/maintenance/backupTextPass.inc" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/backupTextPass.inc";
/**
* Tests for page dumps of BackupDumper
if ( $fname === null ) {
$fname = $this->getNewTempFile();
}
- $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" '
+ $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" '
. 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
- . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ '
- . 'http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+ . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ '
+ . 'http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
<siteinfo>
<sitename>wikisvn</sitename>
<base>http://localhost/wiki-svn/index.php/Main_Page</base>
<?php
-global $IP;
-require_once( "$IP/maintenance/fetchText.php" );
+require_once dirname( __FILE__ ) . "/../../../maintenance/fetchText.php";
/**
* Mock for the input/output of FetchText
<?php
-global $IP;
-require_once( "$IP/maintenance/getSlaveServer.php" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/getSlaveServer.php";
/**
* Tests for getSlaveServer