sublime-*
# MediaWiki install & usage
-cache
-docs/js
-images/[0-9a-f]
-images/archive
-images/deleted
-images/lockdir
-images/temp
-images/thumb
+/cache
+/docs/js
+/images/[0-9a-f]
+/images/archive
+/images/deleted
+/images/lockdir
+/images/temp
+/images/thumb
## Extension:EasyTimeline
-images/timeline
-images/tmp
-maintenance/.mweval_history
-maintenance/.mwsql_history
-maintenance/dev/data
-AdminSettings.php
-LocalSettings.php
-StartProfiler.php
+/images/timeline
+/images/tmp
+/maintenance/.mweval_history
+/maintenance/.mwsql_history
+/maintenance/dev/data
+/AdminSettings.php
+/LocalSettings.php
+/StartProfiler.php
# Building & testing
node_modules/
.idea
.metadata*
.settings
-favicon.ico
-static*
-tags
+/favicon.ico
+/static*
+/tags
HTTP OPTIONS request.
* (bug 44923) action=upload works correctly if the entire file is uploaded in
the first chunk.
+* Added 'continue=' parameter to streamline client iteration over complex query results
+* (bug 44909) API parameters may now be marked as type "upload", which is now
+ used for action=upload's 'file' and 'chunk' parameters. This type will raise
+ an error during parameter validation if the parameter is given but not
+ recognized as an uploaded file.
+* (bug 44244) prop=info may now return the number of people watching each page.
=== API internal changes in 1.21 ===
* For debugging only, a new global $wgDebugAPI removes many API restrictions when true.
* ApiQueryGeneratorBase::setGeneratorMode() now requires a pageset param.
* $wgAPIGeneratorModules is now obsolete and will be ignored.
* Added flags ApiResult::OVERRIDE and ADD_ON_TOP to setElement() and addValue()
+* Internal API calls will now include <warnings> in case of unused parameters
=== Languages updated in 1.21 ===
were using it, you have to either copy it to your extension, or install the
Vector extension (and possibly disable its features using config settings if
you don't want them).
+* Experimental IBM DB2 support was removed due to lack of interest and maintainership
== Compatibility ==
MediaWiki 1.21 requires PHP 5.3.2 or later.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
-support for them is somewhat less mature. There is experimental support for IBM
-DB2 and Oracle.
+support for them is somewhat less mature. There is experimental support for
+Oracle.
The supported versions are:
* PostgreSQL
* SQLite
* Oracle
-* IBM DB2
* MSSQL
More information can be found about each of these databases (known issues,
+++ /dev/null
-== See also ==
-*[http://www.mediawiki.org/wiki/Manual:IBM_DB2 Installation instructions]
-*[http://ca.php.net/manual/en/function.db2-connect.php PHP Manual for DB2 functions]
\ No newline at end of file
'HTMLTextField' => 'includes/HTMLForm.php',
'Http' => 'includes/HttpFunctions.php',
'HttpError' => 'includes/Exception.php',
- 'HttpRequest' => 'includes/HttpFunctions.old.php',
'ICacheHelper' => 'includes/CacheHelper.php',
'IcuCollation' => 'includes/Collation.php',
'IdentityCollation' => 'includes/Collation.php',
'ChronologyProtector' => 'includes/db/LBFactory.php',
'CloneDatabase' => 'includes/db/CloneDatabase.php',
'DatabaseBase' => 'includes/db/Database.php',
- 'DatabaseIbm_db2' => 'includes/db/DatabaseIbm_db2.php',
'DatabaseMssql' => 'includes/db/DatabaseMssql.php',
'DatabaseMysql' => 'includes/db/DatabaseMysql.php',
'DatabaseOracle' => 'includes/db/DatabaseOracle.php',
'DBUnexpectedError' => 'includes/db/DatabaseError.php',
'FakeResultWrapper' => 'includes/db/DatabaseUtility.php',
'Field' => 'includes/db/DatabaseUtility.php',
- 'IBM_DB2Blob' => 'includes/db/DatabaseIbm_db2.php',
- 'IBM_DB2Field' => 'includes/db/DatabaseIbm_db2.php',
- 'IBM_DB2Helper' => 'includes/db/DatabaseIbm_db2.php',
- 'IBM_DB2Result' => 'includes/db/DatabaseIbm_db2.php',
'LBFactory' => 'includes/db/LBFactory.php',
'LBFactory_Fake' => 'includes/db/LBFactory.php',
'LBFactory_Multi' => 'includes/db/LBFactory_Multi.php',
'CliInstaller' => 'includes/installer/CliInstaller.php',
'DatabaseInstaller' => 'includes/installer/DatabaseInstaller.php',
'DatabaseUpdater' => 'includes/installer/DatabaseUpdater.php',
- 'Ibm_db2Installer' => 'includes/installer/Ibm_db2Installer.php',
- 'Ibm_db2Updater' => 'includes/installer/Ibm_db2Updater.php',
'InstallDocFormatter' => 'includes/installer/InstallDocFormatter.php',
'Installer' => 'includes/installer/Installer.php',
'LocalSettingsGenerator' => 'includes/installer/LocalSettingsGenerator.php',
'SearchEngine' => 'includes/search/SearchEngine.php',
'SearchEngineDummy' => 'includes/search/SearchEngine.php',
'SearchHighlighter' => 'includes/search/SearchEngine.php',
- 'SearchIBM_DB2' => 'includes/search/SearchIBM_DB2.php',
'SearchMssql' => 'includes/search/SearchMssql.php',
'SearchMySQL' => 'includes/search/SearchMySQL.php',
'SearchNearMatchResultSet' => 'includes/search/SearchEngine.php',
$wgUseTagFilter = true;
/**
- * If set to an integer, pages that are watched by more users than this
- * threshold will not require the unwatchedpages permission to view the
- * number of watchers.
+ * If set to an integer, pages that are watched by this many users or more
+ * will not require the unwatchedpages permission to view the number of
+ * watchers.
*
* @since 1.21
*/
define( 'LIST_SET', 2 );
define( 'LIST_NAMES', 3);
define( 'LIST_OR', 4);
-define( 'LIST_SET_PREPARED', 8); // List of (?, ?, ?) for DatabaseIbm_db2
/**@}*/
/**
* since the post-edit state should only apply to the load right after the save.
*/
protected function setPostEditCookie() {
- global $wgCookiePrefix, $wgCookieDomain;;
+ global $wgCookiePrefix, $wgCookieDomain;
$revisionId = $this->mArticle->getLatest();
$postEditKey = self::POST_EDIT_COOKIE_KEY_PREFIX . $revisionId;
return substr( $str, 0, $length );
}
+/**
+ * Given an array of non-normalised probabilities, this function will select
+ * an element and return the appropriate key
+ *
+ * @param $weights array
+ *
+ * @return bool|int|string
+ */
+function wfPickRandom( $weights ){
+ if ( !is_array( $weights ) || count( $weights ) == 0 ) {
+ return false;
+ }
+
+ $sum = array_sum( $weights );
+ if ( $sum == 0 ) {
+ # No loads on any of them
+ # In previous versions, this triggered an unweighted random selection,
+ # but this feature has been removed as of April 2006 to allow for strict
+ # separation of query groups.
+ return false;
+ }
+ $max = mt_getrandmax();
+ $rand = mt_rand( 0, $max ) / $max * $sum;
+
+ $sum = 0;
+ foreach ( $weights as $i => $w ) {
+ $sum += $w;
+ if ( $sum >= $rand ) {
+ break;
+ }
+ }
+ return $i;
+}
+
/**
* We want some things to be included as literal characters in our title URLs
* for prettiness, which urlencode encodes by default. According to RFC 1738,
*/
define( 'TS_POSTGRES', 7 );
-/**
- * DB2 format time
- */
-define( 'TS_DB2', 8 );
-
/**
* ISO 8601 basic format with no timezone: 19860209T200000Z. This is used by ResourceLoader
*/
+++ /dev/null
-<?php
-/**
- * Class alias kept for backward compatibility.
- *
- * 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 HTTP
- */
-
-/**
- * HttpRequest was renamed to MWHttpRequest in order
- * to prevent conflicts with PHP's HTTP extension
- * which also defines an HttpRequest class.
- * http://www.php.net/manual/en/class.httprequest.php
- *
- * This is for backwards compatibility.
- * @since 1.17
- */
-class HttpRequest extends MWHttpRequest { }
* Otherwise it will use $wgHTTPProxy (if set)
* Otherwise it will use the environment variable "http_proxy" (if set)
* - noProxy Don't use any proxy at all. Takes precedence over proxy value(s).
- * - sslVerifyHost (curl only) Set to 2 to verify hostname against certificate
- * Setting to 1 (or true) will NOT verify the host name. It will
- * only check its existence. Setting to 0 (or false) disables entirely.
+ * - sslVerifyHost (curl only) Verify hostname against certificate
* - sslVerifyCert (curl only) Verify SSL certificate
* - caInfo (curl only) Provide CA information
* - maxRedirects Maximum number of redirects to follow (defaults to 5)
protected $postData = null;
protected $proxy = null;
protected $noProxy = false;
- /**
- * Parameter passed to Curl that specifies whether
- * to validate SSL certificates.
- *
- * Setting to 0 disables entirely. Setting to 1 checks
- * the existence of a CN, but doesn't verify it. Setting
- * to 2 (the default) actually verifies the host.
- */
- protected $sslVerifyHost = 2;
+ protected $sslVerifyHost = true;
protected $sslVerifyCert = true;
protected $caInfo = null;
protected $method = "GET";
}
$this->curlOptions[CURLOPT_USERAGENT] = $this->reqHeaders['User-Agent'];
- if ( isset( $this->sslVerifyHost ) ) {
- $this->curlOptions[CURLOPT_SSL_VERIFYHOST] = $this->sslVerifyHost;
- }
-
- if ( isset( $this->sslVerifyCert ) ) {
- $this->curlOptions[CURLOPT_SSL_VERIFYPEER] = $this->sslVerifyCert;
- }
+ $this->curlOptions[CURLOPT_SSL_VERIFYHOST] = $this->sslVerifyHost ? 2 : 0;
+ $this->curlOptions[CURLOPT_SSL_VERIFYPEER] = $this->sslVerifyCert;
if ( $this->caInfo ) {
$this->curlOptions[CURLOPT_CAINFO] = $this->caInfo;
public function getImageLimitsFromOption( $user, $optionName ) {
global $wgImageLimits;
- $option = intval( $user->getOption( $optionName ) );
+ $option = $user->getIntOption( $optionName );
if ( !isset( $wgImageLimits[$option] ) ) {
$option = User::getDefaultOption( $optionName );
}
}
/**
- * Add only CSS of one or more modules recognized by the resource loader. Module
- * styles added through this function will be loaded by the resource loader when
- * the page loads.
+ * Add only CSS of one or more modules recognized by the resource loader.
+ *
+ * Module styles added through this function will be added using standard link CSS
+ * tags, rather than as a combined Javascript and CSS package. Thus, they will
+ * load when JavaScript is disabled (unless CSS also happens to be disabled).
*
* @param $modules Mixed: module name (string) or array of module names
*/
$this->mOffset = $this->mRequest->getText( 'offset' );
# Use consistent behavior for the limit options
- $this->mDefaultLimit = intval( $this->getUser()->getOption( 'rclimit' ) );
+ $this->mDefaultLimit = $this->getUser()->getIntOption( 'rclimit' );
if ( !$this->mLimit ) {
// Don't override if a subclass calls $this->setLimit() in its constructor.
list( $this->mLimit, /* $offset */ ) = $this->mRequest->getLimitOffset();
*/
static function getTimestampFromId( $title, $id ) {
$dbr = wfGetDB( DB_SLAVE );
- // Casting fix for DB2
+ // Casting fix for databases that can't take '' for rev_id
if ( $id == '' ) {
$id = 0;
}
TS_RFC2822 => 'D, d M Y H:i:s',
TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500
TS_POSTGRES => 'Y-m-d H:i:s',
- TS_DB2 => 'Y-m-d H:i:s',
);
/**
# TS_POSTGRES
} elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', $ts, $da ) ) {
# TS_POSTGRES
- } elseif (preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.\d\d\d$/', $ts, $da ) ) {
- # TS_DB2
} elseif ( preg_match( '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . # Day of week
'\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' . # dd Mon yyyy
'[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
}
if ( $request->getSessionData( 'wsToken' ) ) {
- $passwordCorrect = $proposedUser->getToken( false ) === $request->getSessionData( 'wsToken' );
+ $passwordCorrect = ( $proposedUser->getToken( false ) === $request->getSessionData( 'wsToken' ) );
$from = 'session';
} elseif ( $request->getCookie( 'Token' ) ) {
- $passwordCorrect = $proposedUser->getToken( false ) === $request->getCookie( 'Token' );
+ # Get the token from DB/cache and clean it up to remove garbage padding.
+ # This deals with historical problems with bugs and the default column value.
+ $token = rtrim( $proposedUser->getToken( false ) ); // correct token
+ $passwordCorrect = ( strlen( $token ) && $token === $request->getCookie( 'Token' ) );
$from = 'cookie';
} else {
# No session or persistent login cookie
*/
public function getStubThreshold() {
global $wgMaxArticleSize; # Maximum article size, in Kb
- $threshold = intval( $this->getOption( 'stubthreshold' ) );
+ $threshold = $this->getIntOption( 'stubthreshold' );
if ( $threshold > $wgMaxArticleSize * 1024 ) {
# If they have set an impossible value, disable the preference
# so we can use the parser cache again.
$limit = 0;
}
if( ( $limit == 0 ) && ( $optionname != '' ) ) {
- $limit = (int)$wgUser->getOption( $optionname );
+ $limit = $wgUser->getIntOption( $optionname );
}
if( $limit <= 0 ) {
$limit = $deflimit;
$desc .= $paramPrefix . $intRangeStr;
}
break;
+ case 'upload':
+ $desc .= $paramPrefix . "Must be posted as a file upload using multipart/form-data";
+ break;
}
}
$pageObj = null;
if ( isset( $params['title'] ) ) {
$titleObj = Title::newFromText( $params['title'] );
- if ( !$titleObj ) {
+ if ( !$titleObj || $titleObj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
if ( !$titleObj->canExist() ) {
? 'watchdefault' : 'watchcreations';
}
# Watch the article based on the user preference
- return (bool)$this->getUser()->getOption( $userOption );
+ return $this->getUser()->getBoolOption( $userOption );
case 'nochange':
return $userWatching;
}
$value = $this->getMain()->getCheck( $encParamName );
+ } elseif ( $type == 'upload' ) {
+ if ( isset( $default ) ) {
+ // Having a default value is not allowed
+ ApiBase::dieDebug( __METHOD__, "File upload param $encParamName's default is set to '$default'. File upload parameters may not have a default." );
+ }
+ if ( $multi ) {
+ ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
+ }
+ $value = $this->getMain()->getUpload( $encParamName );
+ if ( !$value->exists() ) {
+ // This will get the value without trying to normalize it
+ // (because trying to normalize a large binary file
+ // accidentally uploaded as a field fails spectacularly)
+ $value = $this->getMain()->getRequest()->unsetVal( $encParamName );
+ if ( $value !== null ) {
+ $this->dieUsage(
+ "File upload param $encParamName is not a file upload; " .
+ "be sure to use multipart/form-data for your POST and include " .
+ "a filename in the Content-Disposition header.",
+ "badupload_{$encParamName}"
+ );
+ }
+ }
} else {
$value = $this->getMain()->getVal( $encParamName, $default );
$value = $value[0];
}
break;
+ case 'upload': // nothing to do
+ break;
default:
ApiBase::dieDebug( __METHOD__, "Param $encParamName's type is unknown - $type" );
}
'nocreatetext' => array( 'code' => 'cantcreate-anon', 'info' => "Anonymous users can't create new pages" ),
'movenologintext' => array( 'code' => 'cantmove-anon', 'info' => "Anonymous users can't move pages" ),
'movenotallowed' => array( 'code' => 'cantmove', 'info' => "You don't have permission to move pages" ),
- 'confirmedittext' => array( 'code' => 'confirmemail', 'info' => "You must confirm your e-mail address before you can edit" ),
+ 'confirmedittext' => array( 'code' => 'confirmemail', 'info' => "You must confirm your email address before you can edit" ),
'blockedtext' => array( 'code' => 'blocked', 'info' => "You have been blocked from editing" ),
'autoblockedtext' => array( 'code' => 'autoblocked', 'info' => "Your IP address has been blocked automatically, because it was used by a blocked user" ),
'ipb_already_blocked' => array( 'code' => 'alreadyblocked', 'info' => "The user you tried to block was already blocked" ),
'ipb_blocked_as_range' => array( 'code' => 'blockedasrange', 'info' => "IP address \"\$1\" was blocked as part of range \"\$2\". You can't unblock the IP invidually, but you can unblock the range as a whole." ),
'ipb_cant_unblock' => array( 'code' => 'cantunblock', 'info' => "The block you specified was not found. It may have been unblocked already" ),
- 'mailnologin' => array( 'code' => 'cantsend', 'info' => "You are not logged in, you do not have a confirmed e-mail address, or you are not allowed to send e-mail to other users, so you cannot send e-mail" ),
+ 'mailnologin' => array( 'code' => 'cantsend', 'info' => "You are not logged in, you do not have a confirmed email address, or you are not allowed to send email to other users, so you cannot send email" ),
'ipbblocked' => array( 'code' => 'ipbblocked', 'info' => 'You cannot block or unblock users while you are yourself blocked' ),
'ipbnounblockself' => array( 'code' => 'ipbnounblockself', 'info' => 'You are not allowed to unblock yourself' ),
'usermaildisabled' => array( 'code' => 'usermaildisabled', 'info' => "User email has been disabled" ),
- 'blockedemailuser' => array( 'code' => 'blockedfrommail', 'info' => "You have been blocked from sending e-mail" ),
+ 'blockedemailuser' => array( 'code' => 'blockedfrommail', 'info' => "You have been blocked from sending email" ),
'notarget' => array( 'code' => 'notarget', 'info' => "You have not specified a valid target for this action" ),
- 'noemail' => array( 'code' => 'noemail', 'info' => "The user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users" ),
+ 'noemail' => array( 'code' => 'noemail', 'info' => "The user has not specified a valid email address, or has chosen not to receive email from other users" ),
'rcpatroldisabled' => array( 'code' => 'patroldisabled', 'info' => "Patrolling is disabled on this wiki" ),
'markedaspatrollederror-noautopatrol' => array( 'code' => 'noautopatrol', 'info' => "You don't have permission to patrol your own changes" ),
'delete-toobig' => array( 'code' => 'bigdelete', 'info' => "You can't delete this page because it has more than \$1 revisions" ),
'missingtitle-createonly' => array( 'code' => 'missingtitle-createonly', 'info' => "Missing titles can only be protected with 'create'" ),
'cantblock' => array( 'code' => 'cantblock', 'info' => "You don't have permission to block users" ),
'canthide' => array( 'code' => 'canthide', 'info' => "You don't have permission to hide user names from the block log" ),
- 'cantblock-email' => array( 'code' => 'cantblock-email', 'info' => "You don't have permission to block users from sending e-mail through the wiki" ),
+ 'cantblock-email' => array( 'code' => 'cantblock-email', 'info' => "You don't have permission to block users from sending email through the wiki" ),
'unblock-notarget' => array( 'code' => 'notarget', 'info' => "Either the id or the user parameter must be set" ),
'unblock-idanduser' => array( 'code' => 'idanduser', 'info' => "The id and user parameters can't be used together" ),
'cantunblock' => array( 'code' => 'permissiondenied', 'info' => "You don't have permission to unblock users" ),
}
}
+ /**
+ * Die with the $prefix.'badcontinue' error. This call is common enough to make it into the base method.
+ * @param $condition boolean will only die if this value is true
+ * @since 1.21
+ */
+ protected function dieContinueUsageIf( $condition ) {
+ if ( $condition ) {
+ $this->dieUsage(
+ 'Invalid continue param. You should pass the original value returned by the previous query',
+ 'badcontinue' );
+ }
+ }
+
/**
* Return the error message related to a certain array
* @param $error array Element of a getUserPermissionsErrors()-style array
$ret[] = array( 'missingparam', $paramName );
}
}
+ if ( array_key_exists( 'continue', $params ) ) {
+ $ret[] = array(
+ array(
+ 'code' => 'badcontinue',
+ 'info' => 'Invalid continue param. You should pass the original value returned by the previous query'
+ ) );
+ }
}
if ( $this->mustBePosted() ) {
'anononly' => 'Block anonymous users only (i.e. disable anonymous edits for this IP)',
'nocreate' => 'Prevent account creation',
'autoblock' => 'Automatically block the last used IP address, and any subsequent IP addresses they try to login from',
- 'noemail' => 'Prevent user from sending e-mail through the wiki. (Requires the "blockemail" right.)',
+ 'noemail' => 'Prevent user from sending email through the wiki. (Requires the "blockemail" right.)',
'hidename' => 'Hide the username from the block log. (Requires the "hideuser" right.)',
'allowusertalk' => 'Allow the user to edit their own talk page (depends on $wgBlockAllowsUTEdit)',
'reblock' => 'If the user is already blocked, overwrite the existing block',
return $revision;
} elseif( $titleText ) {
$title = Title::newFromText( $titleText );
- if( !$title ) {
+ if( !$title || $title->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $titleText ) );
}
return $title->getLatestRevID();
'password' => "Password (ignored if {$p}mailpassword is set)",
'domain' => 'Domain for external authentication (optional)',
'token' => 'Account creation token obtained in first request',
- 'email' => 'E-mail address of user (optional)',
+ 'email' => 'Email address of user (optional)',
'realname' => 'Real name of user (optional)',
- 'mailpassword' => 'If set to any value, a random password will be e-mailed to the user',
+ 'mailpassword' => 'If set to any value, a random password will be emailed to the user',
'reason' => 'Optional reason for creating the account to be put in the logs',
'language' => 'Language code to set as default for the user (optional, defaults to content language)'
);
$pageObj = $this->getTitleOrPageId( $params );
$titleObj = $pageObj->getTitle();
- if ( $titleObj->isExternal() ) {
- $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
- }
-
$apiResult = $this->getResult();
if ( $params['redirect'] ) {
}
public function getHelpUrls() {
- return 'https://www.mediawiki.org/wiki/API:E-mail';
+ return 'https://www.mediawiki.org/wiki/API:Email';
}
}
// Create title for parser
$title_obj = Title::newFromText( $params['title'] );
- if ( !$title_obj ) {
+ if ( !$title_obj || $title_obj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
ApiBase::PARAM_REQUIRED => true
),
'summary' => null,
- 'xml' => null,
+ 'xml' => array(
+ ApiBase::PARAM_TYPE => 'upload',
+ ),
'interwikisource' => array(
ApiBase::PARAM_TYPE => $wgImportSources
),
wfRunHooks( 'APIAfterExecute', array( &$module ) );
$module->profileOut();
- if ( !$this->mInternalMode ) {
- // Report unused params
- $this->reportUnusedParams();
+ $this->reportUnusedParams();
+ if ( !$this->mInternalMode ) {
//append Debug information
MWDebug::appendDebugInfoToApiResult( $this->getContext(), $this->getResult() );
return $this->getRequest()->getCheck( $name );
}
+ /**
+ * Get a request upload, and register the fact that it was used, for logging.
+ *
+ * @since 1.21
+ * @param $name string Parameter name
+ * @return WebRequestUpload
+ */
+ public function getUpload( $name ) {
+ $this->mParamsUsed[$name] = true;
+ return $this->getRequest()->getUpload( $name );
+ }
+
/**
* Report unused parameters, so the client gets a hint in case it gave us parameters we don't know,
* for example in case of spelling mistakes or a missing 'g' prefix for generators.
$paramsUsed = $this->getParamsUsed();
$allParams = $this->getRequest()->getValueNames();
- // Printer has not yet executed; don't warn that its parameters are unused
- $printerParams = array_map(
- array( $this->mPrinter, 'encodeParamName' ),
- array_keys( $this->mPrinter->getFinalParams() ?: array() )
- );
+ if ( !$this->mInternalMode ) {
+ // Printer has not yet executed; don't warn that its parameters are unused
+ $printerParams = array_map(
+ array( $this->mPrinter, 'encodeParamName' ),
+ array_keys( $this->mPrinter->getFinalParams() ?: array() )
+ );
+ $unusedParams = array_diff( $allParams, $paramsUsed, $printerParams );
+ } else {
+ $unusedParams = array_diff( $allParams, $paramsUsed );
+ }
- $unusedParams = array_diff( $allParams, $paramsUsed, $printerParams );
if( count( $unusedParams ) ) {
$s = count( $unusedParams ) > 1 ? 's' : '';
$this->setWarning( "Unrecognized parameter$s: '" . implode( $unusedParams, "', '" ) . "'" );
if ( isset( $params['from'] ) ) {
$fromTitle = Title::newFromText( $params['from'] );
- if ( !$fromTitle ) {
+ if ( !$fromTitle || $fromTitle->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['from'] ) );
}
} elseif ( isset( $params['fromid'] ) ) {
$fromTalk = $fromTitle->getTalkPage();
$toTitle = Title::newFromText( $params['to'] );
- if ( !$toTitle ) {
+ if ( !$toTitle || $toTitle->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['to'] ) );
}
$toTalk = $toTitle->getTalkPage();
*/
const DISABLE_GENERATORS = 1;
- private $mDbSource, $mParams;
- private $mResolveRedirects, $mConvertTitles, $mAllowGenerator;
+ private $mDbSource;
+ private $mParams;
+ private $mResolveRedirects;
+ private $mConvertTitles;
+ private $mAllowGenerator;
private $mAllPages = array(); // [ns][dbkey] => page_id or negative when missing
private $mTitles = array();
$this->profileOut();
}
+ /**
+ * In case execute() is not called, call this method to mark all relevant parameters as used
+ * This prevents unused parameters from being reported as warnings
+ */
+ public function executeDryRun() {
+ $this->executeInternal( true );
+ }
+
/**
* Populate the PageSet from the request parameters.
*/
public function execute() {
+ $this->executeInternal( false );
+ }
+
+ /**
+ * Populate the PageSet from the request parameters.
+ * @param bool $isDryRun If true, instantiates generator, but only to mark relevant parameters as used
+ */
+ private function executeInternal( $isDryRun ) {
$this->profileIn();
$generatorName = $this->mAllowGenerator ? $this->mParams['generator'] : null;
$tmpPageSet = new ApiPageSet( $dbSource, ApiPageSet::DISABLE_GENERATORS );
$generator->setGeneratorMode( $tmpPageSet );
$this->mCacheMode = $generator->getCacheMode( $generator->extractRequestParams() );
- $generator->requestExtraData( $tmpPageSet );
- $tmpPageSet->execute();
+
+ if ( !$isDryRun ) {
+ $generator->requestExtraData( $tmpPageSet );
+ }
+ $tmpPageSet->executeInternal( $isDryRun );
// populate this pageset with the generator output
$this->profileOut();
$generator->profileIn();
- $generator->executeGenerator( $this );
- wfRunHooks( 'APIQueryGeneratorAfterExecute', array( &$generator, &$this ) );
- $this->resolvePendingRedirects();
+
+ if ( !$isDryRun ) {
+ $generator->executeGenerator( $this );
+ wfRunHooks( 'APIQueryGeneratorAfterExecute', array( &$generator, &$this ) );
+ $this->resolvePendingRedirects();
+ } else {
+ // Prevent warnings from being reported on these parameters
+ $main = $this->getMain();
+ foreach ( $generator->extractRequestParams() as $paramName => $param ) {
+ $main->getVal( $generator->encodeParamName( $paramName ) );
+ }
+ }
$generator->profileOut();
$this->profileIn();
}
$dataSource = 'revids';
}
- // Populate page information with the original user input
- switch( $dataSource ) {
- case 'titles':
- $this->initFromTitles( $this->mParams['titles'] );
- break;
- case 'pageids':
- $this->initFromPageIds( $this->mParams['pageids'] );
- break;
- case 'revids':
- if ( $this->mResolveRedirects ) {
- $this->setWarning( 'Redirect resolution cannot be used together with the revids= parameter. ' .
- 'Any redirects the revids= point to have not been resolved.' );
- }
- $this->mResolveRedirects = false;
- $this->initFromRevIDs( $this->mParams['revids'] );
- break;
- default:
- // Do nothing - some queries do not need any of the data sources.
- break;
+
+ if ( !$isDryRun ) {
+ // Populate page information with the original user input
+ switch( $dataSource ) {
+ case 'titles':
+ $this->initFromTitles( $this->mParams['titles'] );
+ break;
+ case 'pageids':
+ $this->initFromPageIds( $this->mParams['pageids'] );
+ break;
+ case 'revids':
+ if ( $this->mResolveRedirects ) {
+ $this->setWarning( 'Redirect resolution cannot be used together with the revids= parameter. ' .
+ 'Any redirects the revids= point to have not been resolved.' );
+ }
+ $this->mResolveRedirects = false;
+ $this->initFromRevIDs( $this->mParams['revids'] );
+ break;
+ default:
+ // Do nothing - some queries do not need any of the data sources.
+ break;
+ }
}
}
$this->profileOut();
/**
* Given an array of title strings, convert them into Title objects.
- * Alternativelly, an array of Title objects may be given.
+ * Alternatively, an array of Title objects may be given.
* This method validates access rights for the title,
* and appends normalization values to the output.
*
}
} else { // Not $oldid, $pageid, $page. Hence based on $text
$titleObj = Title::newFromText( $title );
- if ( !$titleObj ) {
+ if ( !$titleObj || $titleObj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $title ) );
}
if ( !$titleObj->canExist() ) {
*/
private $mPageSet;
- private $params;
- private $iwUrl;
+ private $mParams;
private $mNamedDB = array();
private $mModuleMgr;
+ private $mGeneratorContinue;
+ private $mUseLegacyContinue;
/**
* @param $main ApiMain
* #5 Execute all requested modules
*/
public function execute() {
- $this->params = $this->extractRequestParams();
- $this->iwUrl = $this->params['iwurl'];
+ $this->mParams = $this->extractRequestParams();
- // Instantiate requested modules
- $modules = array();
- $this->instantiateModules( $modules, 'prop' );
- $this->instantiateModules( $modules, 'list' );
- $this->instantiateModules( $modules, 'meta' );
-
- // Query modules may optimize data requests through the $this->getPageSet()
- // object by adding extra fields from the page table.
- // This function will gather all the extra request fields from the modules.
- foreach ( $modules as $module ) {
- if ( !$this->getRequest()->wasPosted() && $module->mustBePosted() ) {
- $this->dieUsageMsgOrDebug( array( 'mustbeposted', $module->getModuleName() ) );
- }
+ // $pagesetParams is a array of parameter names used by the pageset generator
+ // or null if pageset has already finished and is no longer needed
+ // $completeModules is a set of complete modules with the name as key
+ $this->initContinue( $pagesetParams, $completeModules );
- $module->requestExtraData( $this->mPageSet );
+ // Instantiate requested modules
+ $allModules = array();
+ $this->instantiateModules( $allModules, 'prop' );
+ $propModules = $allModules; // Keep a copy
+ $this->instantiateModules( $allModules, 'list' );
+ $this->instantiateModules( $allModules, 'meta' );
+
+ // Filter modules based on continue parameter
+ $modules = $this->initModules( $allModules, $completeModules, $pagesetParams !== null );
+
+ // Execute pageset if in legacy mode or if pageset is not done
+ if ( $completeModules === null || $pagesetParams !== null ) {
+ // Populate page/revision information
+ $this->mPageSet->execute();
+ // Record page information (title, namespace, if exists, etc)
+ $this->outputGeneralPageInfo();
+ } else {
+ $this->mPageSet->executeDryRun();
}
- // Populate page/revision information
- $this->mPageSet->execute();
$cacheMode = $this->mPageSet->getCacheMode();
- // Record page information (title, namespace, if exists, etc)
- $this->outputGeneralPageInfo();
-
- // Execute all requested modules.
- /**
- * @var $module ApiQueryBase
- */
+ // Execute all unfinished modules
+ /** @var $module ApiQueryBase */
foreach ( $modules as $module ) {
$params = $module->extractRequestParams();
$cacheMode = $this->mergeCacheMode(
// Set the cache mode
$this->getMain()->setCacheMode( $cacheMode );
+
+ if ( $completeModules === null ) {
+ return; // Legacy continue, we are done
+ }
+
+ // Reformat query-continue result section
+ $result = $this->getResult();
+ $qc = $result->getData();
+ if ( isset( $qc['query-continue'] ) ) {
+ $qc = $qc['query-continue'];
+ $result->unsetValue( null, 'query-continue' );
+ } elseif ( $this->mGeneratorContinue !== null ) {
+ $qc = array();
+ } else {
+ // no more "continue"s, we are done!
+ return;
+ }
+
+ // we are done with all the modules that do not have result in query-continue
+ $completeModules = array_merge( $completeModules, array_diff_key( $modules, $qc ) );
+ if ( $pagesetParams !== null ) {
+ // The pageset is still in use, check if all props have finished
+ $incompleteProps = array_intersect_key( $propModules, $qc );
+ if ( count( $incompleteProps ) > 0 ) {
+ // Properties are not done, continue with the same pageset state - copy current parameters
+ $main = $this->getMain();
+ $contValues = array();
+ foreach ( $pagesetParams as $param ) {
+ // The param name is already prefix-encoded
+ $contValues[$param] = $main->getVal( $param );
+ }
+ } elseif ( $this->mGeneratorContinue !== null ) {
+ // Move to the next set of pages produced by pageset, properties need to be restarted
+ $contValues = $this->mGeneratorContinue;
+ $pagesetParams = array_keys( $contValues );
+ $completeModules = array_diff_key( $completeModules, $propModules );
+ } else {
+ // Done with the pageset, finish up with the the lists and meta modules
+ $pagesetParams = null;
+ }
+ }
+
+ $continue = '||' . implode( '|', array_keys( $completeModules ) );
+ if ( $pagesetParams !== null ) {
+ // list of all pageset parameters to use in the next request
+ $continue = implode( '|', $pagesetParams ) . $continue;
+ } else {
+ // we are done with the pageset
+ $contValues = array();
+ $continue = '-' . $continue;
+ }
+ $contValues['continue'] = $continue;
+ foreach ( $qc as $qcModule ) {
+ foreach ( $qcModule as $qcKey => $qcValue ) {
+ $contValues[$qcKey] = $qcValue;
+ }
+ }
+ $this->getResult()->addValue( null, 'continue', $contValues );
+ }
+
+ /**
+ * Parse 'continue' parameter into the list of complete modules and a list of generator parameters
+ * @param array|null $pagesetParams returns list of generator params or null if pageset is done
+ * @param array|null $completeModules returns list of finished modules (as keys), or null if legacy
+ */
+ private function initContinue( &$pagesetParams, &$completeModules ) {
+ $pagesetParams = array();
+ $continue = $this->mParams['continue'];
+ if ( $continue !== null ) {
+ $this->mUseLegacyContinue = false;
+ if ( $continue !== '' ) {
+ // Format: ' pagesetParam1 | pagesetParam2 || module1 | module2 | module3 | ...
+ // If pageset is done, use '-'
+ $continue = explode( '||', $continue );
+ $this->dieContinueUsageIf( count( $continue ) !== 2 );
+ if ( $continue[0] === '-' ) {
+ $pagesetParams = null; // No need to execute pageset
+ } elseif ( $continue[0] !== '' ) {
+ // list of pageset params that might need to be repeated
+ $pagesetParams = explode( '|', $continue[0] );
+ }
+ $continue = $continue[1];
+ }
+ if ( $continue !== '' ) {
+ $completeModules = array_flip( explode( '|', $continue ) );
+ } else {
+ $completeModules = array();
+ }
+ } else {
+ $this->mUseLegacyContinue = true;
+ $completeModules = null;
+ }
+ }
+
+ /**
+ * Validate sub-modules, filter out completed ones, and do requestExtraData()
+ * @param array $allModules An dict of name=>instance of all modules requested by the client
+ * @param array|null $completeModules list of finished modules, or null if legacy continue
+ * @param bool $usePageset True if pageset will be executed
+ * @return array of modules to be processed during this execution
+ */
+ private function initModules( $allModules, $completeModules, $usePageset ) {
+ $modules = $allModules;
+ $tmp = $completeModules;
+ $wasPosted = $this->getRequest()->wasPosted();
+ $main = $this->getMain();
+
+ /** @var $module ApiQueryBase */
+ foreach ( $allModules as $moduleName => $module ) {
+ if ( !$wasPosted && $module->mustBePosted() ) {
+ $this->dieUsageMsgOrDebug( array( 'mustbeposted', $moduleName ) );
+ }
+ if ( $completeModules !== null && array_key_exists( $moduleName, $completeModules ) ) {
+ // If this module is done, mark all its params as used
+ $module->extractRequestParams();
+ // Make sure this module is not used during execution
+ unset( $modules[$moduleName] );
+ unset( $tmp[$moduleName] );
+ } elseif ( $completeModules === null || $usePageset ) {
+ // Query modules may optimize data requests through the $this->getPageSet()
+ // object by adding extra fields from the page table.
+ // This function will gather all the extra request fields from the modules.
+ $module->requestExtraData( $this->mPageSet );
+ } else {
+ // Error - this prop module must have finished before generator is done
+ $this->dieContinueUsageIf( $this->mModuleMgr->getModuleGroup( $moduleName ) === 'prop' );
+ }
+ }
+ $this->dieContinueUsageIf( $completeModules !== null && count( $tmp ) !== 0 );
+ return $modules;
}
/**
* @param $param string Parameter name to read modules from
*/
private function instantiateModules( &$modules, $param ) {
- if ( isset( $this->params[$param] ) ) {
- foreach ( $this->params[$param] as $moduleName ) {
- $modules[] = $this->mModuleMgr->getModule( $moduleName );
+ if ( isset( $this->mParams[$param] ) ) {
+ foreach ( $this->mParams[$param] as $moduleName ) {
+ $instance = $this->mModuleMgr->getModule( $moduleName, $param );
+ if ( $instance === null ) {
+ ApiBase::dieDebug( __METHOD__, 'Error instantiating module' );
+ }
+ // Ignore duplicates. TODO 2.0: die()?
+ if ( !array_key_exists( $moduleName, $modules ) ) {
+ $modules[$moduleName] = $instance;
+ }
}
}
}
if ( $values ) {
$result->addValue( 'query', 'converted', $values );
}
- $values = $pageSet->getInterwikiTitlesAsResult( $result, $this->iwUrl );
+ $values = $pageSet->getInterwikiTitlesAsResult( $result, $this->mParams['iwurl'] );
if ( $values ) {
$result->addValue( 'query', 'interwiki', $values );
}
}
if ( count( $pages ) ) {
- if ( $this->params['indexpageids'] ) {
+ if ( $this->mParams['indexpageids'] ) {
$pageIDs = array_keys( $pages );
// json treats all map keys as strings - converting to match
$pageIDs = array_map( 'strval', $pageIDs );
$result->setIndexedTagName( $pages, 'page' );
$result->addValue( 'query', 'pages', $pages );
}
- if ( $this->params['export'] ) {
+ if ( $this->mParams['export'] ) {
$this->doExport( $pageSet, $result );
}
}
+ /**
+ * This method is called by the generator base when generator in the smart-continue
+ * mode tries to set 'query-continue' value. ApiQuery stores those values separately
+ * until the post-processing when it is known if the generation should continue or repeat.
+ * @param ApiQueryGeneratorBase $module generator module
+ * @param string $paramName
+ * @param mixed $paramValue
+ * @return bool true if processed, false if this is a legacy continue
+ */
+ public function setGeneratorContinue( $module, $paramName, $paramValue ) {
+ if ( $this->mUseLegacyContinue ) {
+ return false;
+ }
+ $paramName = $module->encodeParamName( $paramName );
+ if ( $this->mGeneratorContinue === null ) {
+ $this->mGeneratorContinue = array();
+ }
+ $this->mGeneratorContinue[$paramName] = $paramValue;
+ return true;
+ }
+
/**
* @param $pageSet ApiPageSet Pages to be exported
* @param $result ApiResult Result to output to
// It's not continuable, so it would cause more
// problems than it'd solve
$result->disableSizeCheck();
- if ( $this->params['exportnowrap'] ) {
+ if ( $this->mParams['exportnowrap'] ) {
$result->reset();
// Raw formatter will handle this
$result->addValue( null, 'text', $exportxml );
'export' => false,
'exportnowrap' => false,
'iwurl' => false,
+ 'continue' => null,
);
if ( $flags ) {
$result += $this->getPageSet()->getFinalParams( $flags );
'export' => 'Export the current revisions of all given or generated pages',
'exportnowrap' => 'Return the export XML without wrapping it in an XML result (same format as Special:Export). Can only be used with export',
'iwurl' => 'Whether to get the full URL if the title is an interwiki link',
+ 'continue' => array(
+ 'When present, formats query-continue as key-value pairs that should simply be merged into the original request.',
+ 'This parameter must be set to an empty string in the initial query.',
+ 'This parameter is recommended for all new development, and will be made default in the next API version.' ),
);
}
public function getExamples() {
return array(
- 'api.php?action=query&prop=revisions&meta=siteinfo&titles=Main%20Page&rvprop=user|comment',
- 'api.php?action=query&generator=allpages&gapprefix=API/&prop=revisions',
+ 'api.php?action=query&prop=revisions&meta=siteinfo&titles=Main%20Page&rvprop=user|comment&continue=',
+ 'api.php?action=query&generator=allpages&gapprefix=API/&prop=revisions&continue=',
);
}
if ( $params['enableparser'] ) {
if ( !is_null( $params['title'] ) ) {
$title = Title::newFromText( $params['title'] );
- if ( !$title ) {
+ if ( !$title || $title->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
} else {
$result->enableSizeCheck();
}
- /**
- * Die with the $prefix.'badcontinue' error. This call is common enough to make it into the base method.
- * @param $condition boolean will only die if this value is true
- * @since 1.21
- */
- protected function dieContinueUsageIf( $condition ) {
- if ( $condition ) {
- $this->dieUsage(
- 'Invalid continue param. You should pass the original value returned by the previous query',
- 'badcontinue' );
- }
- }
-
/**
* Get the Query database connection (read-only)
* @return DatabaseBase
array( 'invalidtitle', 'title' ),
array( 'invalidtitle', 'key' ),
) );
- $params = $this->getFinalParams();
- if ( array_key_exists( 'continue', $params ) ) {
- $errors = array_merge( $errors, array(
- array(
- 'code' => 'badcontinue',
- 'info' => 'Invalid continue param. You should pass the original value returned by the previous query'
- ),
- ) );
- }
return $errors;
}
}
}
}
+ /**
+ * Overrides base in case of generator & smart continue to
+ * notify ApiQueryMain instead of adding them to the result right away.
+ * @param $paramName string Parameter name
+ * @param $paramValue string Parameter value
+ */
+ protected function setContinueEnumParameter( $paramName, $paramValue ) {
+ // If this is a generator and query->setGeneratorContinue() returns false, treat as before
+ if ( $this->mGeneratorPageSet === null
+ || !$this->getQuery()->setGeneratorContinue( $this, $paramName, $paramValue )
+ ) {
+ parent::setContinueEnumParameter( $paramName, $paramValue );
+ }
+ }
+
/**
* Execute this module as a generator
* @param $resultPageSet ApiPageSet: All output should be appended to
private $fld_protection = false, $fld_talkid = false,
$fld_subjectid = false, $fld_url = false,
- $fld_readable = false, $fld_watched = false, $fld_notificationtimestamp = false,
+ $fld_readable = false, $fld_watched = false, $fld_watchers = false,
+ $fld_notificationtimestamp = false,
$fld_preload = false, $fld_displaytitle = false;
private $params, $titles, $missing, $everything, $pageCounter;
private $pageRestrictions, $pageIsRedir, $pageIsNew, $pageTouched,
$pageLatest, $pageLength;
- private $protections, $watched, $notificationtimestamps, $talkids, $subjectids, $displaytitles;
+ private $protections, $watched, $watchers, $notificationtimestamps, $talkids, $subjectids, $displaytitles;
+ private $showZeroWatchers = false;
private $tokenFunctions;
$prop = array_flip( $this->params['prop'] );
$this->fld_protection = isset( $prop['protection'] );
$this->fld_watched = isset( $prop['watched'] );
+ $this->fld_watchers = isset( $prop['watchers'] );
$this->fld_notificationtimestamp = isset( $prop['notificationtimestamp'] );
$this->fld_talkid = isset( $prop['talkid'] );
$this->fld_subjectid = isset( $prop['subjectid'] );
$this->getWatchedInfo();
}
+ if ( $this->fld_watchers ) {
+ $this->getWatcherInfo();
+ }
+
// Run the talkid/subjectid query if requested
if ( $this->fld_talkid || $this->fld_subjectid ) {
$this->getTSIDs();
$pageInfo['watched'] = '';
}
+ if ( $this->fld_watchers ) {
+ if ( isset( $this->watchers[$ns][$dbkey] ) ) {
+ $pageInfo['watchers'] = $this->watchers[$ns][$dbkey];
+ } elseif ( $this->showZeroWatchers ) {
+ $pageInfo['watchers'] = 0;
+ }
+ }
+
if ( $this->fld_notificationtimestamp ) {
$pageInfo['notificationtimestamp'] = '';
if ( isset( $this->notificationtimestamps[$ns][$dbkey] ) ) {
}
}
+ /**
+ * Get the count of watchers and put it in $this->watchers
+ */
+ private function getWatcherInfo() {
+ global $wgUnwatchedPageThreshold;
+
+ if ( count( $this->everything ) == 0 ) {
+ return;
+ }
+
+ $user = $this->getUser();
+ $canUnwatchedpages = $user->isAllowed( 'unwatchedpages' );
+ if ( !$canUnwatchedpages && !is_int( $wgUnwatchedPageThreshold ) ) {
+ return;
+ }
+
+ $this->watchers = array();
+ $this->showZeroWatchers = $canUnwatchedpages;
+ $db = $this->getDB();
+
+ $lb = new LinkBatch( $this->everything );
+
+ $this->resetQueryParams();
+ $this->addTables( array( 'watchlist' ) );
+ $this->addFields( array( 'wl_title', 'wl_namespace', 'count' => 'COUNT(*)' ) );
+ $this->addWhere( array(
+ $lb->constructSet( 'wl', $db )
+ ) );
+ $this->addOption( 'GROUP BY', array( 'wl_namespace', 'wl_title' ) );
+ if ( !$canUnwatchedpages ) {
+ $this->addOption( 'HAVING', "COUNT(*) >= $wgUnwatchedPageThreshold" );
+ }
+
+ $res = $this->select( __METHOD__ );
+
+ foreach ( $res as $row ) {
+ $this->watchers[$row->wl_namespace][$row->wl_title] = (int)$row->count;
+ }
+ }
+
public function getCacheMode( $params ) {
$publicProps = array(
'protection',
'protection',
'talkid',
'watched', # private
+ 'watchers', # private
'notificationtimestamp', # private
'subjectid',
'url',
' protection - List the protection level of each page',
' talkid - The page ID of the talk page for each non-talk page',
' watched - List the watched status of each page',
+ ' watchers - The number of watchers, if allowed',
' notificationtimestamp - The watchlist notification timestamp of each page',
' subjectid - The page ID of the parent page for each talk page',
' url - Gives a full URL to the page, and also an edit URL',
'watched' => array(
'watched' => 'boolean'
),
+ 'watchers' => array(
+ 'watchers' => array(
+ ApiBase::PROP_TYPE => 'integer',
+ ApiBase::PROP_NULLABLE => true
+ )
+ ),
'notificationtimestamp' => array(
'notificationtimestamp' => array(
ApiBase::PROP_TYPE => 'timestamp',
$this->addTables( 'recentchanges' );
$index = array( 'recentchanges' => 'rc_timestamp' ); // May change
$this->addTimestampWhereRange( 'rc_timestamp', $params['dir'], $params['start'], $params['end'] );
+
+ if ( !is_null( $params['continue'] ) ) {
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 ) {
+ $this->dieUsage( 'Invalid continue param. You should pass the ' .
+ 'original value returned by the previous query', '_badcontinue' );
+ }
+
+ $timestamp = $this->getDB()->addQuotes( wfTimestamp( TS_MW, $cont[0] ) );
+ $id = intval( $cont[1] );
+ $op = $params['dir'] == 'descending' ? '<' : '>';
+
+ $this->addWhere(
+ "rc_timestamp $op $timestamp OR " .
+ "(rc_timestamp = $timestamp AND " .
+ "rc_id <= $id)"
+ );
+ }
+
+
$this->addWhereFld( 'rc_namespace', $params['namespace'] );
$this->addWhereFld( 'rc_deleted', 0 );
$this->dieUsage( 'You need the patrol right to request the patrolled flag', 'permissiondenied' );
}
+ $this->addFields( 'rc_id' );
/* Add fields to our query if they are specified as a needed parameter. */
- $this->addFieldsIf( array( 'rc_id', 'rc_this_oldid', 'rc_last_oldid' ), $this->fld_ids );
+ $this->addFieldsIf( array( 'rc_this_oldid', 'rc_last_oldid' ), $this->fld_ids );
$this->addFieldsIf( 'rc_comment', $this->fld_comment || $this->fld_parsedcomment );
$this->addFieldsIf( 'rc_user', $this->fld_user );
$this->addFieldsIf( 'rc_user_text', $this->fld_user || $this->fld_userid );
foreach ( $res as $row ) {
if ( ++ $count > $params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
+ $this->setContinueEnumParameter( 'continue', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) . '|' . $row->rc_id );
break;
}
}
$fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
if ( !$fit ) {
- $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
+ $this->setContinueEnumParameter( 'continue', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) . '|' . $row->rc_id );
break;
}
} else {
)
),
'toponly' => false,
+ 'continue' => null,
);
}
'limit' => 'How many total changes to return',
'tag' => 'Only list changes tagged with this tag',
'toponly' => 'Only list changes which are the latest revision',
+ 'continue' => 'When more results are available, use this to continue',
);
}
' rights - Lists all the rights the user(s) has',
' editcount - Adds the user\'s edit count',
' registration - Adds the user\'s registration timestamp',
- ' emailable - Tags if the user can and wants to receive e-mail through [[Special:Emailuser]]',
+ ' emailable - Tags if the user can and wants to receive email through [[Special:Emailuser]]',
' gender - Tags the gender of the user. Returns "male", "female", or "unknown"',
),
'users' => 'A list of users to obtain the same information for',
$addOnTop = $flags & ApiResult::ADD_ON_TOP;
if ( $path !== null ) {
- foreach ( (array) $path as $p ) {
+ foreach ( (array)$path as $p ) {
if ( !isset( $data[$p] ) ) {
if ( $addOnTop ) {
$data = array( $p => array() ) + $data;
* Unset a value previously added to the result set.
* Fails silently if the value isn't found.
* For parameters, see addValue()
- * @param $path array
+ * @param $path array|null
* @param $name string
*/
public function unsetValue( $path, $name ) {
$data = &$this->mData;
- if ( !is_null( $path ) ) {
+ if ( $path !== null ) {
foreach ( (array)$path as $p ) {
if ( !isset( $data[$p] ) ) {
return;
$this->mTitleObj = Title::newFromText( $params['title'] );
- if ( !$this->mTitleObj ) {
+ if ( !$this->mTitleObj || $this->mTitleObj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
if ( !$this->mTitleObj->exists() ) {
public function getDescription() {
return array( 'Update the notification timestamp for watched pages.',
'This affects the highlighting of changed pages in the watchlist and history,',
- 'and the sending of email when the "E-mail me when a page on my watchlist is',
+ 'and the sending of email when the "Email me when a page on my watchlist is',
'changed" preference is enabled.'
);
}
* @file
*/
-
/**
* @ingroup API
*/
class ApiTokens extends ApiBase {
public function execute() {
- wfProfileIn( __METHOD__ );
$params = $this->extractRequestParams();
$res = array();
$types = $this->getTokenTypes();
foreach ( $params['type'] as $type ) {
- $type = strtolower( $type );
-
$val = call_user_func( $types[$type], null, null );
if ( $val === false ) {
}
$this->getResult()->addValue( null, $this->getModuleName(), $res );
- wfProfileOut( __METHOD__ );
}
private function getTokenTypes() {
return $types;
}
wfProfileIn( __METHOD__ );
- $types = array( 'patrol' => 'ApiQueryRecentChanges::getPatrolToken' );
+ $types = array( 'patrol' => array( 'ApiQueryRecentChanges', 'getPatrolToken' ) );
$names = array( 'edit', 'delete', 'protect', 'move', 'block', 'unblock',
'email', 'import', 'watch', 'options' );
foreach ( $names as $name ) {
- $types[$name] = 'ApiQueryInfo::get' . ucfirst( $name ) . 'Token';
+ $types[$name] = array( 'ApiQueryInfo', 'get' . ucfirst( $name ) . 'Token' );
}
wfRunHooks( 'ApiTokensGetTokenTypes', array( &$types ) );
ksort( $types );
}
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
- )
- )
+ $props = array(
+ '' => array(),
);
+
+ self::addTokenProperties( $props, $this->getTokenTypes() );
+
+ return $props;
}
public function getParamDescription() {
$res['id'] = $block->getId();
$target = $block->getType() == Block::TYPE_AUTO ? '' : $block->getTarget();
- $res['user'] = $target;
+ $res['user'] = $target instanceof User ? $target->getName() : $target;
$res['userid'] = $target instanceof User ? $target->getId() : 0;
$res['reason'] = $params['reason'];
$this->getResult()->addValue( null, $this->getModuleName(), $res );
}
$titleObj = Title::newFromText( $params['title'] );
- if ( !$titleObj ) {
+ if ( !$titleObj || $titleObj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
* @return array
*/
private function getChunkResult( $warnings ) {
- global $IP;
-
$result = array();
$result['result'] = 'Continue';
* @return array
*/
protected function performUpload( $warnings ) {
- global $IP;
-
// Use comment as initial page text by default
if ( is_null( $this->mParams['text'] ) ) {
$this->mParams['text'] = $this->mParams['comment'];
),
),
'ignorewarnings' => false,
- 'file' => null,
+ 'file' => array(
+ ApiBase::PARAM_TYPE => 'upload',
+ ),
'url' => null,
'filekey' => null,
'sessionkey' => array(
'filesize' => null,
'offset' => null,
- 'chunk' => null,
+ 'chunk' => array(
+ ApiBase::PARAM_TYPE => 'upload',
+ ),
'async' => false,
'asyncdownload' => false,
$params = $this->extractRequestParams();
$title = Title::newFromText( $params['title'] );
- if ( !$title || $title->getNamespace() < 0 ) {
+ if ( !$title || $title->isExternal() || !$title->canExist() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
*/
final public static function factory( $dbType, $p = array() ) {
$canonicalDBTypes = array(
- 'mysql', 'postgres', 'sqlite', 'oracle', 'mssql', 'ibm_db2'
+ 'mysql', 'postgres', 'sqlite', 'oracle', 'mssql'
);
$dbType = strtolower( $dbType );
$class = 'Database' . ucfirst( $dbType );
+++ /dev/null
-<?php
-/**
- * This is the IBM DB2 database abstraction layer.
- * See maintenance/ibm_db2/README for development notes
- * and other specific information.
- *
- * 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 Database
- * @author leo.petr+mediawiki@gmail.com
- */
-
-/**
- * This represents a column in a DB2 database
- * @ingroup Database
- */
-class IBM_DB2Field implements Field {
- private $name = '';
- private $tablename = '';
- private $type = '';
- private $nullable = false;
- private $max_length = 0;
-
- /**
- * Builder method for the class
- * @param $db DatabaseIbm_db2: Database interface
- * @param $table String: table name
- * @param $field String: column name
- * @return IBM_DB2Field
- */
- static function fromText( $db, $table, $field ) {
- global $wgDBmwschema;
-
- $q = <<<SQL
-SELECT
-lcase( coltype ) AS typname,
-nulls AS attnotnull, length AS attlen
-FROM sysibm.syscolumns
-WHERE tbcreator=%s AND tbname=%s AND name=%s;
-SQL;
- $res = $db->query(
- sprintf( $q,
- $db->addQuotes( $wgDBmwschema ),
- $db->addQuotes( $table ),
- $db->addQuotes( $field )
- )
- );
- $row = $db->fetchObject( $res );
- if ( !$row ) {
- return null;
- }
- $n = new IBM_DB2Field;
- $n->type = $row->typname;
- $n->nullable = ( $row->attnotnull == 'N' );
- $n->name = $field;
- $n->tablename = $table;
- $n->max_length = $row->attlen;
- return $n;
- }
- /**
- * Get column name
- * @return string column name
- */
- function name() { return $this->name; }
- /**
- * Get table name
- * @return string table name
- */
- function tableName() { return $this->tablename; }
- /**
- * Get column type
- * @return string column type
- */
- function type() { return $this->type; }
- /**
- * Can column be null?
- * @return bool true or false
- */
- function isNullable() { return $this->nullable; }
- /**
- * How much can you fit in the column per row?
- * @return int length
- */
- function maxLength() { return $this->max_length; }
-}
-
-/**
- * Wrapper around binary large objects
- * @ingroup Database
- */
-class IBM_DB2Blob {
- private $mData;
-
- public function __construct( $data ) {
- $this->mData = $data;
- }
-
- public function getData() {
- return $this->mData;
- }
-
- public function __toString() {
- return $this->mData;
- }
-}
-
-/**
- * Wrapper to address lack of certain operations in the DB2 driver
- * ( seek, num_rows )
- * @ingroup Database
- * @since 1.19
- */
-class IBM_DB2Result{
- private $db;
- private $result;
- private $num_rows;
- private $current_pos;
- private $columns = array();
- private $sql;
-
- private $resultSet = array();
- private $loadedLines = 0;
-
- /**
- * Construct and initialize a wrapper for DB2 query results
- * @param $db DatabaseBase
- * @param $result Object
- * @param $num_rows Integer
- * @param $sql String
- * @param $columns Array
- */
- public function __construct( $db, $result, $num_rows, $sql, $columns ) {
- $this->db = $db;
-
- if( $result instanceof ResultWrapper ) {
- $this->result = $result->result;
- } else {
- $this->result = $result;
- }
-
- $this->num_rows = $num_rows;
- $this->current_pos = 0;
- if ( $this->num_rows > 0 ) {
- // Make a lower-case list of the column names
- // By default, DB2 column names are capitalized
- // while MySQL column names are lowercase
-
- // Is there a reasonable maximum value for $i?
- // Setting to 2048 to prevent an infinite loop
- for( $i = 0; $i < 2048; $i++ ) {
- $name = db2_field_name( $this->result, $i );
- if ( $name != false ) {
- continue;
- }
- else {
- return false;
- }
-
- $this->columns[$i] = strtolower( $name );
- }
- }
-
- $this->sql = $sql;
- }
-
- /**
- * Unwrap the DB2 query results
- * @return mixed Object on success, false on failure
- */
- public function getResult() {
- if ( $this->result ) {
- return $this->result;
- }
- else return false;
- }
-
- /**
- * Get the number of rows in the result set
- * @return integer
- */
- public function getNum_rows() {
- return $this->num_rows;
- }
-
- /**
- * Return a row from the result set in object format
- * @return mixed Object on success, false on failure.
- */
- public function fetchObject() {
- if ( $this->result
- && $this->num_rows > 0
- && $this->current_pos >= 0
- && $this->current_pos < $this->num_rows )
- {
- $row = $this->fetchRow();
- $ret = new stdClass();
-
- foreach ( $row as $k => $v ) {
- $lc = $this->columns[$k];
- $ret->$lc = $v;
- }
- return $ret;
- }
- return false;
- }
-
- /**
- * Return a row form the result set in array format
- * @return mixed Array on success, false on failure
- * @throws DBUnexpectedError
- */
- public function fetchRow() {
- if ( $this->result
- && $this->num_rows > 0
- && $this->current_pos >= 0
- && $this->current_pos < $this->num_rows )
- {
- if ( $this->loadedLines <= $this->current_pos ) {
- $row = db2_fetch_array( $this->result );
- $this->resultSet[$this->loadedLines++] = $row;
- if ( $this->db->lastErrno() ) {
- throw new DBUnexpectedError( $this->db, 'Error in fetchRow(): '
- . htmlspecialchars( $this->db->lastError() ) );
- }
- }
-
- if ( $this->loadedLines > $this->current_pos ) {
- return $this->resultSet[$this->current_pos++];
- }
-
- }
- return false;
- }
-
- /**
- * Free a DB2 result object
- * @throws DBUnexpectedError
- */
- public function freeResult() {
- unset( $this->resultSet );
- if ( !@db2_free_result( $this->result ) ) {
- throw new DBUnexpectedError( $this, "Unable to free DB2 result\n" );
- }
- }
-}
-
-/**
- * Primary database interface
- * @ingroup Database
- */
-class DatabaseIbm_db2 extends DatabaseBase {
- /*
- * Inherited members
- protected $mLastQuery = '';
- protected $mPHPError = false;
-
- protected $mServer, $mUser, $mPassword, $mConn = null, $mDBname;
- protected $mOpened = false;
-
- protected $mTablePrefix;
- protected $mFlags;
- protected $mTrxLevel = 0;
- protected $mErrorCount = 0;
- protected $mLBInfo = array();
- protected $mFakeSlaveLag = null, $mFakeMaster = false;
- *
- */
-
- /** Database server port */
- protected $mPort = null;
- /** Schema for tables, stored procedures, triggers */
- protected $mSchema = null;
- /** Whether the schema has been applied in this session */
- protected $mSchemaSet = false;
- /** Result of last query */
- protected $mLastResult = null;
- /** Number of rows affected by last INSERT/UPDATE/DELETE */
- protected $mAffectedRows = null;
- /** Number of rows returned by last SELECT */
- protected $mNumRows = null;
- /** Current row number on the cursor of the last SELECT */
- protected $currentRow = 0;
-
- /** Connection config options - see constructor */
- public $mConnOptions = array();
- /** Statement config options -- see constructor */
- public $mStmtOptions = array();
-
- /** Default schema */
- const USE_GLOBAL = 'get from global';
-
- /** Option that applies to nothing */
- const NONE_OPTION = 0x00;
- /** Option that applies to connection objects */
- const CONN_OPTION = 0x01;
- /** Option that applies to statement objects */
- const STMT_OPTION = 0x02;
-
- /** Regular operation mode -- minimal debug messages */
- const REGULAR_MODE = 'regular';
- /** Installation mode -- lots of debug messages */
- const INSTALL_MODE = 'install';
-
- /** Controls the level of debug message output */
- protected $mMode = self::REGULAR_MODE;
-
- /** Last sequence value used for a primary key */
- protected $mInsertId = null;
-
- ######################################
- # Getters and Setters
- ######################################
-
- /**
- * Returns true if this database supports (and uses) cascading deletes
- * @return bool
- */
- function cascadingDeletes() {
- return true;
- }
-
- /**
- * Returns true if this database supports (and uses) triggers (e.g. on the
- * page table)
- * @return bool
- */
- function cleanupTriggers() {
- return true;
- }
-
- /**
- * Returns true if this database is strict about what can be put into an
- * IP field.
- * Specifically, it uses a NULL value instead of an empty string.
- * @return bool
- */
- function strictIPs() {
- return true;
- }
-
- /**
- * Returns true if this database uses timestamps rather than integers
- * @return bool
- */
- function realTimestamps() {
- return true;
- }
-
- /**
- * Returns true if this database does an implicit sort when doing GROUP BY
- * @return bool
- */
- function implicitGroupby() {
- return false;
- }
-
- /**
- * Returns true if this database does an implicit order by when the column
- * has an index
- * For example: SELECT page_title FROM page LIMIT 1
- * @return bool
- */
- function implicitOrderby() {
- return false;
- }
-
- /**
- * Returns true if this database can do a native search on IP columns
- * e.g. this works as expected: .. WHERE rc_ip = '127.42.12.102/32';
- * @return bool
- */
- function searchableIPs() {
- return true;
- }
-
- /**
- * Returns true if this database can use functional indexes
- * @return bool
- */
- function functionalIndexes() {
- return true;
- }
-
- /**
- * Returns a unique string representing the wiki on the server
- * @return string
- */
- public function getWikiID() {
- if( $this->mSchema ) {
- return "{$this->mDBname}-{$this->mSchema}";
- } else {
- return $this->mDBname;
- }
- }
-
- /**
- * Returns the database software identifieir
- * @return string
- */
- public function getType() {
- return 'ibm_db2';
- }
-
- /**
- * Returns the database connection object
- * @return Object
- */
- public function getDb() {
- return $this->mConn;
- }
-
- /**
- *
- * @param $server String: hostname of database server
- * @param $user String: username
- * @param $password String: password
- * @param $dbName String: database name on the server
- * @param $flags Integer: database behaviour flags (optional, unused)
- * @param $schema String
- */
- public function __construct( $server = false, $user = false,
- $password = false,
- $dbName = false, $flags = 0,
- $schema = self::USE_GLOBAL )
- {
- global $wgDBmwschema;
-
- if ( $schema == self::USE_GLOBAL ) {
- $this->mSchema = $wgDBmwschema;
- } else {
- $this->mSchema = $schema;
- }
-
- // configure the connection and statement objects
- $this->setDB2Option( 'db2_attr_case', 'DB2_CASE_LOWER',
- self::CONN_OPTION | self::STMT_OPTION );
- $this->setDB2Option( 'deferred_prepare', 'DB2_DEFERRED_PREPARE_ON',
- self::STMT_OPTION );
- $this->setDB2Option( 'rowcount', 'DB2_ROWCOUNT_PREFETCH_ON',
- self::STMT_OPTION );
- parent::__construct( $server, $user, $password, $dbName, DBO_TRX | $flags );
- }
-
- /**
- * Enables options only if the ibm_db2 extension version supports them
- * @param $name String: name of the option in the options array
- * @param $const String: name of the constant holding the right option value
- * @param $type Integer: whether this is a Connection or Statement otion
- */
- private function setDB2Option( $name, $const, $type ) {
- if ( defined( $const ) ) {
- if ( $type & self::CONN_OPTION ) {
- $this->mConnOptions[$name] = constant( $const );
- }
- if ( $type & self::STMT_OPTION ) {
- $this->mStmtOptions[$name] = constant( $const );
- }
- } else {
- $this->installPrint(
- "$const is not defined. ibm_db2 version is likely too low." );
- }
- }
-
- /**
- * Outputs debug information in the appropriate place
- * @param $string String: the relevant debug message
- */
- private function installPrint( $string ) {
- wfDebug( "$string\n" );
- if ( $this->mMode == self::INSTALL_MODE ) {
- print "<li><pre>$string</pre></li>";
- flush();
- }
- }
-
- /**
- * Opens a database connection and returns it
- * Closes any existing connection
- *
- * @param $server String: hostname
- * @param $user String
- * @param $password String
- * @param $dbName String: database name
- * @throws DBConnectionError
- * @return DatabaseBase a fresh connection
- */
- public function open( $server, $user, $password, $dbName ) {
- wfProfileIn( __METHOD__ );
-
- # Load IBM DB2 driver if missing
- wfDl( 'ibm_db2' );
-
- # Test for IBM DB2 support, to avoid suppressed fatal error
- if ( !function_exists( 'db2_connect' ) ) {
- throw new DBConnectionError( $this, "DB2 functions missing, have you enabled the ibm_db2 extension for PHP?" );
- }
-
- global $wgDBport;
-
- // Close existing connection
- $this->close();
- // Cache conn info
- $this->mServer = $server;
- $this->mPort = $port = $wgDBport;
- $this->mUser = $user;
- $this->mPassword = $password;
- $this->mDBname = $dbName;
-
- $this->openUncataloged( $dbName, $user, $password, $server, $port );
-
- if ( !$this->mConn ) {
- $this->installPrint( "DB connection error\n" );
- $this->installPrint(
- "Server: $server, Database: $dbName, User: $user, Password: "
- . substr( $password, 0, 3 ) . "...\n" );
- $this->installPrint( $this->lastError() . "\n" );
- wfProfileOut( __METHOD__ );
- wfDebug( "DB connection error\n" );
- wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
- wfDebug( $this->lastError() . "\n" );
- throw new DBConnectionError( $this, $this->lastError() );
- }
-
- // Some MediaWiki code is still transaction-less (?).
- // The strategy is to keep AutoCommit on for that code
- // but switch it off whenever a transaction is begun.
- db2_autocommit( $this->mConn, DB2_AUTOCOMMIT_ON );
-
- $this->mOpened = true;
- $this->applySchema();
-
- wfProfileOut( __METHOD__ );
- return $this->mConn;
- }
-
- /**
- * Opens a cataloged database connection, sets mConn
- */
- protected function openCataloged( $dbName, $user, $password ) {
- wfSuppressWarnings();
- $this->mConn = db2_pconnect( $dbName, $user, $password );
- wfRestoreWarnings();
- }
-
- /**
- * Opens an uncataloged database connection, sets mConn
- */
- protected function openUncataloged( $dbName, $user, $password, $server, $port )
- {
- $dsn = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$dbName;CHARSET=UTF-8;HOSTNAME=$server;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
- wfSuppressWarnings();
- $this->mConn = db2_pconnect( $dsn, "", "", array() );
- wfRestoreWarnings();
- }
-
- /**
- * Closes a database connection, if it is open
- * Returns success, true if already closed
- * @return bool
- */
- protected function closeConnection() {
- return db2_close( $this->mConn );
- }
-
- /**
- * Retrieves the most current database error
- * Forces a database rollback
- * @return bool|string
- */
- public function lastError() {
- $connerr = db2_conn_errormsg();
- if ( $connerr ) {
- //$this->rollback( __METHOD__ );
- return $connerr;
- }
- $stmterr = db2_stmt_errormsg();
- if ( $stmterr ) {
- //$this->rollback( __METHOD__ );
- return $stmterr;
- }
-
- return false;
- }
-
- /**
- * Get the last error number
- * Return 0 if no error
- * @return integer
- */
- public function lastErrno() {
- $connerr = db2_conn_error();
- if ( $connerr ) {
- return $connerr;
- }
- $stmterr = db2_stmt_error();
- if ( $stmterr ) {
- return $stmterr;
- }
- return 0;
- }
-
- /**
- * Is a database connection open?
- * @return
- */
- public function isOpen() { return $this->mOpened; }
-
- /**
- * The DBMS-dependent part of query()
- * @param $sql String: SQL query.
- * @throws DBUnexpectedError
- * @return object Result object for fetch functions or false on failure
- */
- protected function doQuery( $sql ) {
- $this->applySchema();
-
- // Needed to handle any UTF-8 encoding issues in the raw sql
- // Note that we fully support prepared statements for DB2
- // prepare() and execute() should be used instead of doQuery() whenever possible
- $sql = utf8_decode( $sql );
-
- $ret = db2_exec( $this->mConn, $sql, $this->mStmtOptions );
- if( $ret == false ) {
- $error = db2_stmt_errormsg();
-
- $this->installPrint( "<pre>$sql</pre>" );
- $this->installPrint( $error );
- throw new DBUnexpectedError( $this, 'SQL error: '
- . htmlspecialchars( $error ) );
- }
- $this->mLastResult = $ret;
- $this->mAffectedRows = null; // Not calculated until asked for
- return $ret;
- }
-
- /**
- * @return string Version information from the database
- */
- public function getServerVersion() {
- $info = db2_server_info( $this->mConn );
- return $info->DBMS_VER;
- }
-
- /**
- * Queries whether a given table exists
- * @return boolean
- */
- public function tableExists( $table, $fname = __METHOD__ ) {
- $schema = $this->mSchema;
-
- $sql = "SELECT COUNT( * ) FROM SYSIBM.SYSTABLES ST WHERE ST.NAME = '" .
- strtoupper( $table ) .
- "' AND ST.CREATOR = '" .
- strtoupper( $schema ) . "'";
- $res = $this->query( $sql );
- if ( !$res ) {
- return false;
- }
-
- // If the table exists, there should be one of it
- $row = $this->fetchRow( $res );
- $count = $row[0];
- if ( $count == '1' || $count == 1 ) {
- return true;
- }
-
- return false;
- }
-
- /**
- * Fetch the next row from the given result object, in object form.
- * Fields can be retrieved with $row->fieldname, with fields acting like
- * member variables.
- * If no more rows are available, false is returned.
- *
- * @param $res array|ResultWrapper SQL result object as returned from Database::query(), etc.
- * @return object|bool
- * @throws DBUnexpectedError Thrown if the database returns an error
- */
- public function fetchObject( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- wfSuppressWarnings();
- $row = db2_fetch_object( $res );
- wfRestoreWarnings();
- if( $this->lastErrno() ) {
- throw new DBUnexpectedError( $this, 'Error in fetchObject(): '
- . htmlspecialchars( $this->lastError() ) );
- }
- return $row;
- }
-
- /**
- * Fetch the next row from the given result object, in associative array
- * form. Fields are retrieved with $row['fieldname'].
- * If no more rows are available, false is returned.
- *
- * @param $res array|ResultWrapper SQL result object as returned from Database::query(), etc.
- * @return array|bool
- * @throws DBUnexpectedError Thrown if the database returns an error
- */
- public function fetchRow( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- if ( db2_num_rows( $res ) > 0) {
- wfSuppressWarnings();
- $row = db2_fetch_array( $res );
- wfRestoreWarnings();
- if ( $this->lastErrno() ) {
- throw new DBUnexpectedError( $this, 'Error in fetchRow(): '
- . htmlspecialchars( $this->lastError() ) );
- }
- return $row;
- }
- return false;
- }
-
- /**
- * Escapes strings
- * Doesn't escape numbers
- *
- * @param $s String: string to escape
- * @return string escaped string
- */
- public function addQuotes( $s ) {
- //$this->installPrint( "DB2::addQuotes( $s )\n" );
- if ( is_null( $s ) ) {
- return 'NULL';
- } elseif ( $s instanceof Blob ) {
- return "'" . $s->fetch( $s ) . "'";
- } elseif ( $s instanceof IBM_DB2Blob ) {
- return "'" . $this->decodeBlob( $s ) . "'";
- }
- $s = $this->strencode( $s );
- if ( is_numeric( $s ) ) {
- return $s;
- } else {
- return "'$s'";
- }
- }
-
- /**
- * Verifies that a DB2 column/field type is numeric
- *
- * @param $type String: DB2 column type
- * @return Boolean: true if numeric
- */
- public function is_numeric_type( $type ) {
- switch ( strtoupper( $type ) ) {
- case 'SMALLINT':
- case 'INTEGER':
- case 'INT':
- case 'BIGINT':
- case 'DECIMAL':
- case 'REAL':
- case 'DOUBLE':
- case 'DECFLOAT':
- return true;
- }
- return false;
- }
-
- /**
- * Alias for addQuotes()
- * @param $s String: string to escape
- * @return string escaped string
- */
- public function strencode( $s ) {
- // Bloody useless function
- // Prepends backslashes to \x00, \n, \r, \, ', " and \x1a.
- // But also necessary
- $s = db2_escape_string( $s );
- // Wide characters are evil -- some of them look like '
- $s = utf8_encode( $s );
- // Fix its stupidity
- $from = array( "\\\\", "\\'", '\\n', '\\t', '\\"', '\\r' );
- $to = array( "\\", "''", "\n", "\t", '"', "\r" );
- $s = str_replace( $from, $to, $s ); // DB2 expects '', not \' escaping
- return $s;
- }
-
- /**
- * Switch into the database schema
- */
- protected function applySchema() {
- if ( !( $this->mSchemaSet ) ) {
- $this->mSchemaSet = true;
- $this->begin( __METHOD__ );
- $this->doQuery( "SET SCHEMA = $this->mSchema" );
- $this->commit( __METHOD__ );
- }
- }
-
- /**
- * Start a transaction (mandatory)
- */
- protected function doBegin( $fname = 'DatabaseIbm_db2::begin' ) {
- // BEGIN is implicit for DB2
- // However, it requires that AutoCommit be off.
-
- // Some MediaWiki code is still transaction-less (?).
- // The strategy is to keep AutoCommit on for that code
- // but switch it off whenever a transaction is begun.
- db2_autocommit( $this->mConn, DB2_AUTOCOMMIT_OFF );
-
- $this->mTrxLevel = 1;
- }
-
- /**
- * End a transaction
- * Must have a preceding begin()
- */
- protected function doCommit( $fname = 'DatabaseIbm_db2::commit' ) {
- db2_commit( $this->mConn );
-
- // Some MediaWiki code is still transaction-less (?).
- // The strategy is to keep AutoCommit on for that code
- // but switch it off whenever a transaction is begun.
- db2_autocommit( $this->mConn, DB2_AUTOCOMMIT_ON );
-
- $this->mTrxLevel = 0;
- }
-
- /**
- * Cancel a transaction
- */
- protected function doRollback( $fname = 'DatabaseIbm_db2::rollback' ) {
- db2_rollback( $this->mConn );
- // turn auto-commit back on
- // not sure if this is appropriate
- db2_autocommit( $this->mConn, DB2_AUTOCOMMIT_ON );
- $this->mTrxLevel = 0;
- }
-
- /**
- * Makes an encoded list of strings from an array
- * $mode:
- * LIST_COMMA - comma separated, no field names
- * LIST_AND - ANDed WHERE clause (without the WHERE)
- * LIST_OR - ORed WHERE clause (without the WHERE)
- * LIST_SET - comma separated with field names, like a SET clause
- * LIST_NAMES - comma separated field names
- * LIST_SET_PREPARED - like LIST_SET, except with ? tokens as values
- * @param array $a
- * @param int $mode
- * @throws DBUnexpectedError
- * @return string
- */
- function makeList( $a, $mode = LIST_COMMA ) {
- if ( !is_array( $a ) ) {
- throw new DBUnexpectedError( $this,
- 'DatabaseIbm_db2::makeList called with incorrect parameters' );
- }
-
- // if this is for a prepared UPDATE statement
- // (this should be promoted to the parent class
- // once other databases use prepared statements)
- if ( $mode == LIST_SET_PREPARED ) {
- $first = true;
- $list = '';
- foreach ( $a as $field => $value ) {
- if ( !$first ) {
- $list .= ", $field = ?";
- } else {
- $list .= "$field = ?";
- $first = false;
- }
- }
- $list .= '';
-
- return $list;
- }
-
- // otherwise, call the usual function
- return parent::makeList( $a, $mode );
- }
-
- /**
- * Construct a LIMIT query with optional offset
- * This is used for query pages
- *
- * @param $sql string SQL query we will append the limit too
- * @param $limit integer the SQL limit
- * @param bool|int $offset SQL offset (default false)
- * @throws DBUnexpectedError
- * @return string
- */
- public function limitResult( $sql, $limit, $offset=false ) {
- if( !is_numeric( $limit ) ) {
- throw new DBUnexpectedError( $this,
- "Invalid non-numeric limit passed to limitResult()\n" );
- }
- if( $offset ) {
- if ( stripos( $sql, 'where' ) === false ) {
- return "$sql AND ( ROWNUM BETWEEN $offset AND $offset+$limit )";
- } else {
- return "$sql WHERE ( ROWNUM BETWEEN $offset AND $offset+$limit )";
- }
- }
- return "$sql FETCH FIRST $limit ROWS ONLY ";
- }
-
- /**
- * Handle reserved keyword replacement in table names
- *
- * @param $name Object
- * @param $format String Ignored parameter Default 'quoted'Boolean
- * @return String
- */
- public function tableName( $name, $format = 'quoted' ) {
- // we want maximum compatibility with MySQL schema
- return $name;
- }
-
- /**
- * Generates a timestamp in an insertable format
- *
- * @param $ts string timestamp
- * @return String: timestamp value
- */
- public function timestamp( $ts = 0 ) {
- // TS_MW cannot be easily distinguished from an integer
- return wfTimestamp( TS_DB2, $ts );
- }
-
- /**
- * Return the next in a sequence, save the value for retrieval via insertId()
- * @param $seqName String: name of a defined sequence in the database
- * @return int next value in that sequence
- */
- public function nextSequenceValue( $seqName ) {
- // Not using sequences in the primary schema to allow for easier migration
- // from MySQL
- // Emulating MySQL behaviour of using NULL to signal that sequences
- // aren't used
- /*
- $safeseq = preg_replace( "/'/", "''", $seqName );
- $res = $this->query( "VALUES NEXTVAL FOR $safeseq" );
- $row = $this->fetchRow( $res );
- $this->mInsertId = $row[0];
- return $this->mInsertId;
- */
- return null;
- }
-
- /**
- * This must be called after nextSequenceVal
- * @return int Last sequence value used as a primary key
- */
- public function insertId() {
- return $this->mInsertId;
- }
-
- /**
- * Updates the mInsertId property with the value of the last insert
- * into a generated column
- *
- * @param $table String: sanitized table name
- * @param $primaryKey Mixed: string name of the primary key
- * @param $stmt Resource: prepared statement resource
- * of the SELECT primary_key FROM FINAL TABLE ( INSERT ... ) form
- */
- private function calcInsertId( $table, $primaryKey, $stmt ) {
- if ( $primaryKey ) {
- $this->mInsertId = db2_last_insert_id( $this->mConn );
- }
- }
-
- /**
- * INSERT wrapper, inserts an array into a table
- *
- * $args may be a single associative array, or an array of arrays
- * with numeric keys, for multi-row insert
- *
- * @param $table String: Name of the table to insert to.
- * @param $args Array: Items to insert into the table.
- * @param $fname String: Name of the function, for profiling
- * @param $options String or Array. Valid options: IGNORE
- *
- * @return bool Success of insert operation. IGNORE always returns true.
- */
- public function insert( $table, $args, $fname = 'DatabaseIbm_db2::insert',
- $options = array() )
- {
- if ( !count( $args ) ) {
- return true;
- }
- // get database-specific table name (not used)
- $table = $this->tableName( $table );
- // format options as an array
- $options = IBM_DB2Helper::makeArray( $options );
- // format args as an array of arrays
- if ( !( isset( $args[0] ) && is_array( $args[0] ) ) ) {
- $args = array( $args );
- }
-
- // prevent insertion of NULL into primary key columns
- list( $args, $primaryKeys ) = $this->removeNullPrimaryKeys( $table, $args );
- // if there's only one primary key
- // we'll be able to read its value after insertion
- $primaryKey = false;
- if ( count( $primaryKeys ) == 1 ) {
- $primaryKey = $primaryKeys[0];
- }
-
- // get column names
- $keys = array_keys( $args[0] );
- $key_count = count( $keys );
-
- // If IGNORE is set, we use savepoints to emulate mysql's behavior
- $ignore = in_array( 'IGNORE', $options ) ? 'mw' : '';
-
- // assume success
- $res = true;
- // If we are not in a transaction, we need to be for savepoint trickery
- if ( !$this->mTrxLevel ) {
- $this->begin( __METHOD__ );
- }
-
- $sql = "INSERT INTO $table ( " . implode( ',', $keys ) . ' ) VALUES ';
- if ( $key_count == 1 ) {
- $sql .= '( ? )';
- } else {
- $sql .= '( ?' . str_repeat( ',?', $key_count-1 ) . ' )';
- }
- $this->installPrint( "Preparing the following SQL:" );
- $this->installPrint( "$sql" );
- $this->installPrint( print_r( $args, true ));
- $stmt = $this->prepare( $sql );
-
- // start a transaction/enter transaction mode
- $this->begin( __METHOD__ );
-
- if ( !$ignore ) {
- //$first = true;
- foreach ( $args as $row ) {
- //$this->installPrint( "Inserting " . print_r( $row, true ));
- // insert each row into the database
- $res = $res & $this->execute( $stmt, $row );
- if ( !$res ) {
- $this->installPrint( 'Last error:' );
- $this->installPrint( $this->lastError() );
- }
- // get the last inserted value into a generated column
- $this->calcInsertId( $table, $primaryKey, $stmt );
- }
- } else {
- $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
- $numrowsinserted = 0;
-
- // always return true
- $res = true;
-
- foreach ( $args as $row ) {
- $overhead = "SAVEPOINT $ignore ON ROLLBACK RETAIN CURSORS";
- db2_exec( $this->mConn, $overhead, $this->mStmtOptions );
-
- $res2 = $this->execute( $stmt, $row );
-
- if ( !$res2 ) {
- $this->installPrint( 'Last error:' );
- $this->installPrint( $this->lastError() );
- }
- // get the last inserted value into a generated column
- $this->calcInsertId( $table, $primaryKey, $stmt );
-
- $errNum = $this->lastErrno();
- if ( $errNum ) {
- db2_exec( $this->mConn, "ROLLBACK TO SAVEPOINT $ignore",
- $this->mStmtOptions );
- } else {
- db2_exec( $this->mConn, "RELEASE SAVEPOINT $ignore",
- $this->mStmtOptions );
- $numrowsinserted++;
- }
- }
-
- $olde = error_reporting( $olde );
- // Set the affected row count for the whole operation
- $this->mAffectedRows = $numrowsinserted;
- }
- // commit either way
- $this->commit( __METHOD__ );
- $this->freePrepared( $stmt );
-
- return $res;
- }
-
- /**
- * Given a table name and a hash of columns with values
- * Removes primary key columns from the hash where the value is NULL
- *
- * @param $table String: name of the table
- * @param $args Array of hashes of column names with values
- * @return Array: tuple( filtered array of columns, array of primary keys )
- */
- private function removeNullPrimaryKeys( $table, $args ) {
- $schema = $this->mSchema;
-
- // find out the primary keys
- $keyres = $this->doQuery( "SELECT NAME FROM SYSIBM.SYSCOLUMNS WHERE TBNAME = '"
- . strtoupper( $table )
- . "' AND TBCREATOR = '"
- . strtoupper( $schema )
- . "' AND KEYSEQ > 0" );
-
- $keys = array();
- for (
- $row = $this->fetchRow( $keyres );
- $row != null;
- $row = $this->fetchRow( $keyres )
- )
- {
- $keys[] = strtolower( $row[0] );
- }
- // remove primary keys
- foreach ( $args as $ai => $row ) {
- foreach ( $keys as $key ) {
- if ( $row[$key] == null ) {
- unset( $row[$key] );
- }
- }
- $args[$ai] = $row;
- }
- // return modified hash
- return array( $args, $keys );
- }
-
- /**
- * UPDATE wrapper, takes a condition array and a SET array
- *
- * @param $table String: The table to UPDATE
- * @param $values array An array of values to SET
- * @param $conds array An array of conditions ( WHERE ). Use '*' to update all rows.
- * @param $fname String: The Class::Function calling this function
- * ( for the log )
- * @param $options array An array of UPDATE options, can be one or
- * more of IGNORE, LOW_PRIORITY
- * @return Boolean
- */
- public function update( $table, $values, $conds, $fname = 'DatabaseIbm_db2::update',
- $options = array() )
- {
- $table = $this->tableName( $table );
- $opts = $this->makeUpdateOptions( $options );
- $sql = "UPDATE $opts $table SET "
- . $this->makeList( $values, LIST_SET_PREPARED );
- if ( $conds != '*' ) {
- $sql .= " WHERE " . $this->makeList( $conds, LIST_AND );
- }
- $stmt = $this->prepare( $sql );
- $this->installPrint( 'UPDATE: ' . print_r( $values, true ) );
- // assuming for now that an array with string keys will work
- // if not, convert to simple array first
- $result = $this->execute( $stmt, $values );
- $this->freePrepared( $stmt );
-
- return $result;
- }
-
- /**
- * DELETE query wrapper
- *
- * Use $conds == "*" to delete all rows
- * @param array $table
- * @param array|string $conds
- * @param string $fname
- * @throws DBUnexpectedError
- * @return bool|ResultWrapper
- */
- public function delete( $table, $conds, $fname = 'DatabaseIbm_db2::delete' ) {
- if ( !$conds ) {
- throw new DBUnexpectedError( $this,
- 'DatabaseIbm_db2::delete() called with no conditions' );
- }
- $table = $this->tableName( $table );
- $sql = "DELETE FROM $table";
- if ( $conds != '*' ) {
- $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
- }
- $result = $this->query( $sql, $fname );
-
- return $result;
- }
-
- /**
- * Returns the number of rows affected by the last query or 0
- * @return Integer: the number of rows affected by the last query
- */
- public function affectedRows() {
- if ( !is_null( $this->mAffectedRows ) ) {
- // Forced result for simulated queries
- return $this->mAffectedRows;
- }
- if( empty( $this->mLastResult ) ) {
- return 0;
- }
- return db2_num_rows( $this->mLastResult );
- }
-
- /**
- * Returns the number of rows in the result set
- * Has to be called right after the corresponding select query
- * @param $res Object result set
- * @return Integer: number of rows
- */
- public function numRows( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
-
- if ( $this->mNumRows ) {
- return $this->mNumRows;
- } else {
- return 0;
- }
- }
-
- /**
- * Moves the row pointer of the result set
- * @param $res Object: result set
- * @param $row Integer: row number
- * @return bool success or failure
- */
- public function dataSeek( $res, $row ) {
- if ( $res instanceof ResultWrapper ) {
- return $res = $res->result;
- }
- if ( $res instanceof IBM_DB2Result ) {
- return $res->dataSeek( $row );
- }
- wfDebug( "dataSeek operation in DB2 database\n" );
- return false;
- }
-
- ###
- # Fix notices in Block.php
- ###
-
- /**
- * Frees memory associated with a statement resource
- * @param $res Object: statement resource to free
- * @throws DBUnexpectedError
- * @return Boolean success or failure
- */
- public function freeResult( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- wfSuppressWarnings();
- $ok = db2_free_result( $res );
- wfRestoreWarnings();
- if ( !$ok ) {
- throw new DBUnexpectedError( $this, "Unable to free DB2 result\n" );
- }
- }
-
- /**
- * Returns the number of columns in a resource
- * @param $res Object: statement resource
- * @return Number of fields/columns in resource
- */
- public function numFields( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- if ( $res instanceof IBM_DB2Result ) {
- $res = $res->getResult();
- }
- return db2_num_fields( $res );
- }
-
- /**
- * Returns the nth column name
- * @param $res Object: statement resource
- * @param $n Integer: Index of field or column
- * @return String name of nth column
- */
- public function fieldName( $res, $n ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- if ( $res instanceof IBM_DB2Result ) {
- $res = $res->getResult();
- }
- return db2_field_name( $res, $n );
- }
-
- /**
- * SELECT wrapper
- *
- * @param $table Array or string, table name(s) (prefix auto-added)
- * @param $vars Array or string, field name(s) to be retrieved
- * @param $conds Array or string, condition(s) for WHERE
- * @param $fname String: calling function name (use __METHOD__)
- * for logs/profiling
- * @param $options array Associative array of options
- * (e.g. array( 'GROUP BY' => 'page_title' )),
- * see Database::makeSelectOptions code for list of
- * supported stuff
- * @param $join_conds array Associative array of table join conditions (optional)
- * (e.g. array( 'page' => array('LEFT JOIN',
- * 'page_latest=rev_id') )
- * @return Mixed: database result resource for fetch functions or false
- * on failure
- */
- public function select( $table, $vars, $conds = '', $fname = 'DatabaseIbm_db2::select', $options = array(), $join_conds = array() )
- {
- $res = parent::select( $table, $vars, $conds, $fname, $options,
- $join_conds );
- $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
-
- // We must adjust for offset
- if ( isset( $options['LIMIT'] ) && isset ( $options['OFFSET'] ) ) {
- $limit = $options['LIMIT'];
- $offset = $options['OFFSET'];
- }
-
- // DB2 does not have a proper num_rows() function yet, so we must emulate
- // DB2 9.5.4 and the corresponding ibm_db2 driver will introduce
- // a working one
- // TODO: Yay!
-
- // we want the count
- $vars2 = array( 'count( * ) as num_rows' );
- // respecting just the limit option
- $options2 = array();
- if ( isset( $options['LIMIT'] ) ) {
- $options2['LIMIT'] = $options['LIMIT'];
- }
- // but don't try to emulate for GROUP BY
- if ( isset( $options['GROUP BY'] ) ) {
- return $res;
- }
-
- $res2 = parent::select( $table, $vars2, $conds, $fname, $options2,
- $join_conds );
-
- $obj = $this->fetchObject( $res2 );
- $this->mNumRows = $obj->num_rows;
-
- return new ResultWrapper( $this, new IBM_DB2Result( $this, $res, $obj->num_rows, $vars, $sql ) );
- }
-
- /**
- * Handles ordering, grouping, and having options ('GROUP BY' => colname)
- * Has limited support for per-column options (colnum => 'DISTINCT')
- *
- * @private
- *
- * @param $options array Associative array of options to be turned into
- * an SQL query, valid keys are listed in the function.
- * @return Array
- */
- function makeSelectOptions( $options ) {
- $preLimitTail = $postLimitTail = '';
- $startOpts = '';
-
- $noKeyOptions = array();
- foreach ( $options as $key => $option ) {
- if ( is_numeric( $key ) ) {
- $noKeyOptions[$option] = true;
- }
- }
-
- $preLimitTail .= $this->makeGroupByWithHaving( $options );
-
- $preLimitTail .= $this->makeOrderBy( $options );
-
- if ( isset( $noKeyOptions['DISTINCT'] )
- || isset( $noKeyOptions['DISTINCTROW'] ) )
- {
- $startOpts .= 'DISTINCT';
- }
-
- return array( $startOpts, '', $preLimitTail, $postLimitTail );
- }
-
- /**
- * Returns link to IBM DB2 free download
- * @return String: wikitext of a link to the server software's web site
- */
- public static function getSoftwareLink() {
- return '[http://www.ibm.com/db2/express/ IBM DB2]';
- }
-
- /**
- * Get search engine class. All subclasses of this
- * need to implement this if they wish to use searching.
- *
- * @return String
- */
- public function getSearchEngine() {
- return 'SearchIBM_DB2';
- }
-
- /**
- * Did the last database access fail because of deadlock?
- * @return Boolean
- */
- public function wasDeadlock() {
- // get SQLSTATE
- $err = $this->lastErrno();
- switch( $err ) {
- // This is literal port of the MySQL logic and may be wrong for DB2
- case '40001': // sql0911n, Deadlock or timeout, rollback
- case '57011': // sql0904n, Resource unavailable, no rollback
- case '57033': // sql0913n, Deadlock or timeout, no rollback
- $this->installPrint( "In a deadlock because of SQLSTATE $err" );
- return true;
- }
- return false;
- }
-
- /**
- * Ping the server and try to reconnect if it there is no connection
- * The connection may be closed and reopened while this happens
- * @return Boolean: whether the connection exists
- */
- public function ping() {
- // db2_ping() doesn't exist
- // Emulate
- $this->close();
- $this->openUncataloged( $this->mDBName, $this->mUser,
- $this->mPassword, $this->mServer, $this->mPort );
-
- return false;
- }
- ######################################
- # Unimplemented and not applicable
- ######################################
-
- /**
- * Only useful with fake prepare like in base Database class
- * @return string
- */
- public function fillPreparedArg( $matches ) {
- $this->installPrint( 'Not useful for DB2: fillPreparedArg()' );
- return '';
- }
-
- ######################################
- # Reflection
- ######################################
-
- /**
- * Returns information about an index
- * If errors are explicitly ignored, returns NULL on failure
- * @param $table String: table name
- * @param $index String: index name
- * @param $fname String: function name for logging and profiling
- * @return Object query row in object form
- */
- public function indexInfo( $table, $index,
- $fname = 'DatabaseIbm_db2::indexExists' )
- {
- $table = $this->tableName( $table );
- $sql = <<<SQL
-SELECT name as indexname
-FROM sysibm.sysindexes si
-WHERE si.name='$index' AND si.tbname='$table'
-AND sc.tbcreator='$this->mSchema'
-SQL;
- $res = $this->query( $sql, $fname );
- if ( !$res ) {
- return null;
- }
- $row = $this->fetchObject( $res );
- if ( $row != null ) {
- return $row;
- } else {
- return false;
- }
- }
-
- /**
- * Returns an information object on a table column
- * @param $table String: table name
- * @param $field String: column name
- * @return IBM_DB2Field
- */
- public function fieldInfo( $table, $field ) {
- return IBM_DB2Field::fromText( $this, $table, $field );
- }
-
- /**
- * db2_field_type() wrapper
- * @param $res Object: result of executed statement
- * @param $index Mixed: number or name of the column
- * @return String column type
- */
- public function fieldType( $res, $index ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- if ( $res instanceof IBM_DB2Result ) {
- $res = $res->getResult();
- }
- return db2_field_type( $res, $index );
- }
-
- /**
- * Verifies that an index was created as unique
- * @param $table String: table name
- * @param $index String: index name
- * @param $fname string function name for profiling
- * @return Bool
- */
- public function indexUnique ( $table, $index,
- $fname = 'DatabaseIbm_db2::indexUnique' )
- {
- $table = $this->tableName( $table );
- $sql = <<<SQL
-SELECT si.name as indexname
-FROM sysibm.sysindexes si
-WHERE si.name='$index' AND si.tbname='$table'
-AND sc.tbcreator='$this->mSchema'
-AND si.uniquerule IN ( 'U', 'P' )
-SQL;
- $res = $this->query( $sql, $fname );
- if ( !$res ) {
- return null;
- }
- if ( $this->fetchObject( $res ) ) {
- return true;
- }
- return false;
-
- }
-
- /**
- * Returns the size of a text field, or -1 for "unlimited"
- * @param $table String: table name
- * @param $field String: column name
- * @return Integer: length or -1 for unlimited
- */
- public function textFieldSize( $table, $field ) {
- $table = $this->tableName( $table );
- $sql = <<<SQL
-SELECT length as size
-FROM sysibm.syscolumns sc
-WHERE sc.name='$field' AND sc.tbname='$table'
-AND sc.tbcreator='$this->mSchema'
-SQL;
- $res = $this->query( $sql );
- $row = $this->fetchObject( $res );
- $size = $row->size;
- return $size;
- }
-
- /**
- * Description is left as an exercise for the reader
- * @param $b Mixed: data to be encoded
- * @return IBM_DB2Blob
- */
- public function encodeBlob( $b ) {
- return new IBM_DB2Blob( $b );
- }
-
- /**
- * Description is left as an exercise for the reader
- * @param $b IBM_DB2Blob: data to be decoded
- * @return mixed
- */
- public function decodeBlob( $b ) {
- return "$b";
- }
-
- /**
- * Convert into a list of string being concatenated
- * @param $stringList Array: strings that need to be joined together
- * by the SQL engine
- * @return String: joined by the concatenation operator
- */
- public function buildConcat( $stringList ) {
- // || is equivalent to CONCAT
- // Sample query: VALUES 'foo' CONCAT 'bar' CONCAT 'baz'
- return implode( ' || ', $stringList );
- }
-
- /**
- * Generates the SQL required to convert a DB2 timestamp into a Unix epoch
- * @param $column String: name of timestamp column
- * @return String: SQL code
- */
- public function extractUnixEpoch( $column ) {
- // TODO
- // see SpecialAncientpages
- }
-
- ######################################
- # Prepared statements
- ######################################
-
- /**
- * Intended to be compatible with the PEAR::DB wrapper functions.
- * http://pear.php.net/manual/en/package.database.db.intro-execute.php
- *
- * ? = scalar value, quoted as necessary
- * ! = raw SQL bit (a function for instance)
- * & = filename; reads the file and inserts as a blob
- * (we don't use this though...)
- * @param $sql String: SQL statement with appropriate markers
- * @param $func String: Name of the function, for profiling
- * @return resource a prepared DB2 SQL statement
- */
- public function prepare( $sql, $func = 'DB2::prepare' ) {
- $stmt = db2_prepare( $this->mConn, $sql, $this->mStmtOptions );
- return $stmt;
- }
-
- /**
- * Frees resources associated with a prepared statement
- * @return Boolean success or failure
- */
- public function freePrepared( $prepared ) {
- return db2_free_stmt( $prepared );
- }
-
- /**
- * Execute a prepared query with the various arguments
- * @param $prepared String: the prepared sql
- * @param $args Mixed: either an array here, or put scalars as varargs
- * @return Resource: results object
- */
- public function execute( $prepared, $args = null ) {
- if( !is_array( $args ) ) {
- # Pull the var args
- $args = func_get_args();
- array_shift( $args );
- }
- $res = db2_execute( $prepared, $args );
- if ( !$res ) {
- $this->installPrint( db2_stmt_errormsg() );
- }
- return $res;
- }
-
- /**
- * For faking prepared SQL statements on DBs that don't support
- * it directly.
- * @param $preparedQuery String: a 'preparable' SQL statement
- * @param $args Array of arguments to fill it with
- * @return String: executable statement
- */
- public function fillPrepared( $preparedQuery, $args ) {
- reset( $args );
- $this->preparedArgs =& $args;
-
- foreach ( $args as $i => $arg ) {
- db2_bind_param( $preparedQuery, $i+1, $args[$i] );
- }
-
- return $preparedQuery;
- }
-
- /**
- * Switches module between regular and install modes
- * @return string
- */
- public function setMode( $mode ) {
- $old = $this->mMode;
- $this->mMode = $mode;
- return $old;
- }
-
- /**
- * Bitwise negation of a column or value in SQL
- * Same as (~field) in C
- * @param $field String
- * @return String
- */
- function bitNot( $field ) {
- // expecting bit-fields smaller than 4bytes
- return "BITNOT( $field )";
- }
-
- /**
- * Bitwise AND of two columns or values in SQL
- * Same as (fieldLeft & fieldRight) in C
- * @param $fieldLeft String
- * @param $fieldRight String
- * @return String
- */
- function bitAnd( $fieldLeft, $fieldRight ) {
- return "BITAND( $fieldLeft, $fieldRight )";
- }
-
- /**
- * Bitwise OR of two columns or values in SQL
- * Same as (fieldLeft | fieldRight) in C
- * @param $fieldLeft String
- * @param $fieldRight String
- * @return String
- */
- function bitOr( $fieldLeft, $fieldRight ) {
- return "BITOR( $fieldLeft, $fieldRight )";
- }
-}
-
-class IBM_DB2Helper {
- public static function makeArray( $maybeArray ) {
- if ( !is_array( $maybeArray ) ) {
- return array( $maybeArray );
- }
-
- return $maybeArray;
- }
-}
* Given an array of non-normalised probabilities, this function will select
* an element and return the appropriate key
*
+ * @deprecated 1.21, use wfPickRandom()
+ *
* @param $weights array
*
- * @return int
+ * @return bool|int|string
*/
function pickRandom( $weights ) {
- if ( !is_array( $weights ) || count( $weights ) == 0 ) {
- return false;
- }
-
- $sum = array_sum( $weights );
- if ( $sum == 0 ) {
- # No loads on any of them
- # In previous versions, this triggered an unweighted random selection,
- # but this feature has been removed as of April 2006 to allow for strict
- # separation of query groups.
- return false;
- }
- $max = mt_getrandmax();
- $rand = mt_rand( 0, $max ) / $max * $sum;
-
- $sum = 0;
- foreach ( $weights as $i => $w ) {
- $sum += $w;
- if ( $sum >= $rand ) {
- break;
- }
- }
- return $i;
+ return wfPickRandom( $weights );
}
/**
*/
class FSFile {
protected $path; // path to file
+ private $sha1Base36 = null; // File Sha1Base36
/**
* Sets up the file object
* 160 log 2 / log 36 = 30.95, so the 160-bit hash fills 31 digits in base 36
* fairly neatly.
*
+ * @param $recache bool
* @return bool|string False on failure
*/
- public function getSha1Base36() {
+ public function getSha1Base36( $recache = false ) {
wfProfileIn( __METHOD__ );
+ if ( $this->sha1Base36 !== null && !$recache ) {
+ wfProfileOut( __METHOD__ );
+ return $this->sha1Base36;
+ }
+
wfSuppressWarnings();
- $hash = sha1_file( $this->path );
+ $this->sha1Base36 = sha1_file( $this->path );
wfRestoreWarnings();
- if ( $hash !== false ) {
- $hash = wfBaseConvert( $hash, 16, 36, 31 );
+
+ if ( $this->sha1Base36 !== false ) {
+ $this->sha1Base36 = wfBaseConvert( $this->sha1Base36, 16, 36, 31 );
}
wfProfileOut( __METHOD__ );
- return $hash;
+ return $this->sha1Base36;
}
/**
* fairly neatly.
*
* @param $path string
+ * @param $recache bool
*
* @return bool|string False on failure
*/
- public static function getSha1Base36FromPath( $path ) {
- $fsFile = new self( $path );
- return $fsFile->getSha1Base36();
+ public static function getSha1Base36FromPath( $path, $recache = false ) {
+ static $sha1Base36 = array();
+
+ if ( !isset( $sha1Base36[$path] ) || $recache ) {
+ $fsFile = new self( $path );
+ $sha1Base36[$path] = $fsFile->getSha1Base36();
+ }
+
+ return $sha1Base36[$path];
}
}
$hash = $this->doGetFileSha1Base36( $params );
wfProfileOut( __METHOD__ . '-miss-' . $this->name );
wfProfileOut( __METHOD__ . '-miss' );
- if ( $hash ) { // don't cache negatives
- $this->cheapCache->set( $path, 'sha1',
- array( 'hash' => $hash, 'latest' => $latest ) );
- }
+ $this->cheapCache->set( $path, 'sha1', array( 'hash' => $hash, 'latest' => $latest ) );
wfProfileOut( __METHOD__ . '-' . $this->name );
wfProfileOut( __METHOD__ );
return $hash;
);
}
+ /**
+ * @see FileJournal::doGetPositionAtTime()
+ * @param $time integer|string timestamp
+ * @return integer|false
+ */
+ protected function doGetPositionAtTime( $time ) {
+ $dbw = $this->getMasterDB();
+
+ $encTimestamp = $dbw->addQuotes( $dbw->timestamp( $time ) );
+ return $dbw->selectField( 'filejournal', 'fj_id',
+ array( 'fj_backend' => $this->backend, "fj_timestamp <= $encTimestamp" ),
+ __METHOD__,
+ array( 'ORDER BY' => 'fj_timestamp DESC' )
+ );
+ }
+
/**
* @see FileJournal::doGetChangeEntries()
* @return Array
*/
abstract protected function doGetCurrentPosition();
+ /**
+ * Get the position ID of the latest journal entry at some point in time
+ *
+ * @param $time integer|string timestamp
+ * @return integer|false
+ */
+ final public function getPositionAtTime( $time ) {
+ return $this->doGetPositionAtTime( $time );
+ }
+
+ /**
+ * @see FileJournal::getPositionAtTime()
+ * @param $time integer|string timestamp
+ * @return integer|false
+ */
+ abstract protected function doGetPositionAtTime( $time );
+
/**
* Get an array of file change log entries.
* A starting change ID and/or limit can be specified.
return false;
}
+ /**
+ * @see FileJournal::doGetPositionAtTime()
+ * @param $time integer|string timestamp
+ * @return integer|false
+ */
+ protected function doGetPositionAtTime( $time ) {
+ return false;
+ }
+
/**
* @see FileJournal::doGetChangeEntries()
* @return Array
+++ /dev/null
-<?php
-/**
- * IBM_DB2-specific installer.
- *
- * 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 Deployment
- */
-
-/**
- * Class for setting up the MediaWiki database using IBM_DB2.
- *
- * @ingroup Deployment
- * @since 1.17
- */
-class Ibm_db2Installer extends DatabaseInstaller {
-
-
- protected $globalNames = array(
- 'wgDBserver',
- 'wgDBport',
- 'wgDBname',
- 'wgDBuser',
- 'wgDBpassword',
- 'wgDBmwschema',
- );
-
- protected $internalDefaults = array(
- '_InstallUser' => 'db2admin'
- );
-
- /**
- * Get the DB2 database extension name
- * @return string
- */
- public function getName() {
- return 'ibm_db2';
- }
-
- /**
- * Determine whether the DB2 database extension is currently available in PHP
- * @return boolean
- */
- public function isCompiled() {
- return self::checkExtension( 'ibm_db2' );
- }
-
- /**
- * Generate a connection form for a DB2 database
- * @return string
- */
- public function getConnectForm() {
- return
- $this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) .
- $this->getTextBox( 'wgDBport', 'config-db-port', array(), $this->parent->getHelpBox( 'config-db-port' ) ) .
- Html::openElement( 'fieldset' ) .
- Html::element( 'legend', array(), wfMessage( 'config-db-wiki-settings' )->text() ) .
- $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-db-name-help' ) ) .
- $this->getTextBox( 'wgDBmwschema', 'config-db-schema', array(), $this->parent->getHelpBox( 'config-db-schema-help' ) ) .
- Html::closeElement( 'fieldset' ) .
- $this->getInstallUserBox();
- }
-
- /**
- * Validate and then execute the connection form for a DB2 database
- * @return Status
- */
- public function submitConnectForm() {
- // Get variables from the request
- $newValues = $this->setVarsFromRequest(
- array( 'wgDBserver', 'wgDBport', 'wgDBname',
- 'wgDBmwschema', 'wgDBuser', 'wgDBpassword' ) );
-
- // Validate them
- $status = Status::newGood();
- if ( !strlen( $newValues['wgDBname'] ) ) {
- $status->fatal( 'config-missing-db-name' );
- } elseif ( !preg_match( '/^[a-zA-Z0-9_]+$/', $newValues['wgDBname'] ) ) {
- $status->fatal( 'config-invalid-db-name', $newValues['wgDBname'] );
- }
- if ( !strlen( $newValues['wgDBmwschema'] ) ) {
- $status->fatal( 'config-invalid-schema' );
- }
- elseif ( !preg_match( '/^[a-zA-Z0-9_]*$/', $newValues['wgDBmwschema'] ) ) {
- $status->fatal( 'config-invalid-schema', $newValues['wgDBmwschema'] );
- }
- if ( !strlen( $newValues['wgDBport'] ) ) {
- $status->fatal( 'config-invalid-port' );
- }
- elseif ( !preg_match( '/^[0-9_]*$/', $newValues['wgDBport'] ) ) {
- $status->fatal( 'config-invalid-port', $newValues['wgDBport'] );
- }
-
- // Submit user box
- if ( $status->isOK() ) {
- $status->merge( $this->submitInstallUserBox() );
- }
- if ( !$status->isOK() ) {
- return $status;
- }
-
- global $wgDBport;
- $wgDBport = $newValues['wgDBport'];
-
- // Try to connect
- $status->merge( $this->getConnection() );
- if ( !$status->isOK() ) {
- return $status;
- }
-
- $this->parent->setVar( 'wgDBuser', $this->getVar( '_InstallUser' ) );
- $this->parent->setVar( 'wgDBpassword', $this->getVar( '_InstallPassword' ) );
-
- return $status;
- }
-
- /**
- * Open a DB2 database connection
- * @return Status
- */
- public function openConnection() {
- $status = Status::newGood();
- try {
- $db = new DatabaseIbm_db2(
- $this->getVar( 'wgDBserver' ),
- $this->getVar( '_InstallUser' ),
- $this->getVar( '_InstallPassword' ),
- $this->getVar( 'wgDBname' ),
- 0,
- $this->getVar( 'wgDBmwschema' )
- );
- $status->value = $db;
- } catch ( DBConnectionError $e ) {
- $status->fatal( 'config-connection-error', $e->getMessage() );
- }
- return $status;
- }
-
- /**
- * Create a DB2 database for MediaWiki
- * @return Status
- */
- public function setupDatabase() {
- $status = $this->getConnection();
- if ( !$status->isOK() ) {
- return $status;
- }
- /**
- * @var $conn DatabaseBase
- */
- $conn = $status->value;
- $dbName = $this->getVar( 'wgDBname' );
- if( !$conn->selectDB( $dbName ) ) {
- $conn->query( "CREATE DATABASE "
- . $conn->addIdentifierQuotes( $dbName )
- . " AUTOMATIC STORAGE YES"
- . " USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM"
- . " PAGESIZE 32768", __METHOD__ );
- $conn->selectDB( $dbName );
- }
- $this->setupSchemaVars();
- return $status;
- }
-
- /**
- * Create tables from scratch.
- * First check if pagesize >= 32k.
- *
- * @return Status
- */
- public function createTables() {
- $status = $this->getConnection();
- if ( !$status->isOK() ) {
- return $status;
- }
- $this->db->selectDB( $this->getVar( 'wgDBname' ) );
-
- if( $this->db->tableExists( 'user' ) ) {
- $status->warning( 'config-install-tables-exist' );
- return $status;
- }
-
- /* Check for pagesize */
- $status = $this->checkPageSize();
- if ( !$status->isOK() ) {
- return $status;
- }
-
- $this->db->setFlag( DBO_DDLMODE ); // For Oracle's handling of schema files
- $this->db->begin( __METHOD__ );
-
- $error = $this->db->sourceFile( $this->db->getSchemaPath() );
- if( $error !== true ) {
- $this->db->reportQueryError( $error, 0, '', __METHOD__ );
- $this->db->rollback( __METHOD__ );
- $status->fatal( 'config-install-tables-failed', $error );
- } else {
- $this->db->commit( __METHOD__ );
- }
- // Resume normal operations
- if( $status->isOk() ) {
- $this->enableLB();
- }
- return $status;
- }
-
- /**
- * Check if database has a tablspace with pagesize >= 32k.
- *
- * @return Status
- */
- public function checkPageSize() {
- $status = $this->getConnection();
- if ( !$status->isOK() ) {
- return $status;
- }
- $this->db->selectDB( $this->getVar( 'wgDBname' ) );
-
- try {
- $result = $this->db->query( 'SELECT PAGESIZE FROM SYSCAT.TABLESPACES FOR READ ONLY' );
- if( $result == false ) {
- $status->fatal( 'config-connection-error', '' );
- } else {
- $row = $this->db->fetchRow( $result );
- while ( $row ) {
- if( $row[0] >= 32768 ) {
- return $status;
- }
- $row = $this->db->fetchRow( $result );
- }
- $status->fatal( 'config-ibm_db2-low-db-pagesize', '' );
- }
- } catch ( DBUnexpectedError $e ) {
- $status->fatal( 'config-connection-error', $e->getMessage() );
- }
-
- return $status;
- }
-
- /**
- * Generate the code to store the DB2-specific settings defined by the configuration form
- * @return string
- */
- public function getLocalSettings() {
- $schema = LocalSettingsGenerator::escapePhpString( $this->getVar( 'wgDBmwschema' ) );
- $port = LocalSettingsGenerator::escapePhpString( $this->getVar( 'wgDBport' ) );
- return
-"# IBM_DB2 specific settings
-\$wgDBmwschema = \"{$schema}\";
-\$wgDBport = \"{$port}\";";
- }
-
- public function __construct( $parent ) {
- parent::__construct( $parent );
- }
-}
+++ /dev/null
-<?php
-/**
- * IBM_DB2-specific updater.
- *
- * 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 Deployment
- */
-
-/**
- * Class for handling updates to IBM_DB2 databases.
- *
- * @ingroup Deployment
- * @since 1.17
- */
-class Ibm_db2Updater extends DatabaseUpdater {
-
- /**
- * Get the changes in the DB2 database scheme since MediaWiki 1.14
- * @return array
- */
- protected function getCoreUpdateList() {
- return array(
- // 1.14
- array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
- array( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
-
- // 1.15
- array( 'addTable', 'change_tag', 'patch-change_tag.sql' ),
- array( 'addTable', 'tag_summary', 'patch-change_tag_summary.sql' ),
- array( 'addTable', 'valid_tag', 'patch-change_valid_tag.sql' ),
-
- // 1.16
- array( 'addTable', 'user_properties', 'patch-user_properties.sql' ),
- array( 'addTable', 'log_search', 'patch-log_search.sql' ),
- array( 'addField', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
- array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ),
- array( 'addTable', 'external_user', 'patch-external_user.sql' ),
- array( 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
- array( 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
- array( 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
-
- // 1.17
- array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ),
- array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
- array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
- array( 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ),
- array( 'addTable', 'msg_resource', 'patch-msg_resource.sql' ),
- array( 'addTable', 'msg_resource_links', 'patch-msg_resource_links.sql' ),
- array( 'addIndex', 'msg_resource_links', 'uq61_msg_resource_links', 'patch-uq_61_msg_resource_links.sql' ),
- array( 'addIndex', 'msg_resource', 'uq81_msg_resource', 'patch-uq_81_msg_resource.sql' ),
- array( 'addTable', 'module_deps', 'patch-module_deps.sql' ),
- array( 'addIndex', 'module_deps', 'uq96_module_deps', 'patch-uq_96_module_deps.sql' ),
- array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api-field.sql' ),
- array( 'addField', 'interwiki', 'iw_wikiid', 'patch-iw_wikiid-field.sql' ),
- array( 'addField', 'categorylinks', 'cl_sortkey_prefix', 'patch-cl_sortkey_prefix-field.sql' ),
- array( 'addField', 'categorylinks', 'cl_collation', 'patch-cl_collation-field.sql' ),
- array( 'addField', 'categorylinks', 'cl_type', 'patch-cl_type-field.sql' ),
-
- //1.18
- array( 'doUserNewTalkTimestampNotNull' ),
- array( 'addIndex', 'user', 'user_email', 'patch-user_email_index.sql' ),
- array( 'modifyField', 'user_properties', 'up_property', 'patch-up_property.sql' ),
- array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
- array( 'addTable', 'user_former_groups', 'patch-user_former_groups.sql'),
- array( 'doRebuildLocalisationCache' ),
-
- // 1.19
- array( 'addIndex', 'logging', 'type_action', 'patch-logging-type-action-index.sql'),
- array( 'dropField', 'user', 'user_options', 'patch-drop-user_options.sql' ),
- array( 'addField', 'revision', 'rev_sha1', 'patch-rev_sha1.sql' ),
- array( 'addField', 'archive', 'ar_sha1', 'patch-ar_sha1.sql' ),
-
- // 1.21
- array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ),
- array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ),
- array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
- array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
- array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
- );
- }
-}
It should '''not''' be accessible via the web, this is why we're not putting it where your PHP files are.
The installer will write a <code>.htaccess</code> file along with it, but if that fails someone can gain access to your raw database.
-That includes raw user data (e-mail addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki.
+That includes raw user data (email addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki.
Consider putting the database somewhere else altogether, for example in <code>/var/lib/mediawiki/yourwiki</code>.",
'config-oracle-def-ts' => 'Default tablespace:',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki supports the following database systems:
$1
'config-support-postgres' => '* $1 is a popular open source database system as an alternative to MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). There may be some minor outstanding bugs, and it is not recommended for use in a production environment.',
'config-support-sqlite' => '* $1 is a lightweight database system which is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
'config-support-oracle' => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
- 'config-support-ibm_db2' => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/ibm-db2.installation.php How to compile PHP with IBM DB2 support])',
'config-header-mysql' => 'MySQL settings',
'config-header-postgres' => 'PostgreSQL settings',
'config-header-sqlite' => 'SQLite settings',
'config-header-oracle' => 'Oracle settings',
- 'config-header-ibm_db2' => 'IBM DB2 settings',
'config-invalid-db-type' => 'Invalid database type',
'config-missing-db-name' => 'You must enter a value for "Database name"',
'config-missing-db-host' => 'You must enter a value for "Database host"',
In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
- 'config-ibm_db2-low-db-pagesize' => "Your DB2 database has a default tablespace with an insufficient pagesize. The pagesize has to be '''32K''' or greater.",
-
'config-site-name' => 'Name of wiki:',
'config-site-name-help' => "This will appear in the title bar of the browser and in various other places.",
'config-site-name-blank' => 'Enter a site name.',
'config-admin-password-blank' => 'Enter a password for the administrator account.',
'config-admin-password-same' => 'The password must not be the same as the username.',
'config-admin-password-mismatch' => 'The two passwords you entered do not match.',
- 'config-admin-email' => 'E-mail address:',
- 'config-admin-email-help' => 'Enter an e-mail address here to allow you to receive e-mail from other users on the wiki, reset your password, and be notified of changes to pages on your watchlist. You can leave this field empty.',
+ 'config-admin-email' => 'Email address:',
+ 'config-admin-email-help' => 'Enter an email address here to allow you to receive email from other users on the wiki, reset your password, and be notified of changes to pages on your watchlist. You can leave this field empty.',
'config-admin-error-user' => 'Internal error when creating an admin with the name "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Internal error when setting a password for the admin "<nowiki>$1</nowiki>": <pre>$2</pre>',
- 'config-admin-error-bademail' => 'You have entered an invalid e-mail address.',
+ 'config-admin-error-bademail' => 'You have entered an invalid email address.',
'config-subscribe' => 'Subscribe to the [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release announcements mailing list].',
'config-subscribe-help' => 'This is a low-volume mailing list used for release announcements, including important security announcements.
You should subscribe to it and update your MediaWiki installation when new versions come out.',
- 'config-subscribe-noemail' => 'You tried to subscribe to the release announcements mailing list without providing an e-mail address.
-Please provide an e-mail address if you wish to subscribe to the mailing list.',
+ 'config-subscribe-noemail' => 'You tried to subscribe to the release announcements mailing list without providing an email address.
+Please provide an email address if you wish to subscribe to the mailing list.',
'config-almost-done' => 'You are almost done!
You can now skip the remaining configuration and install the wiki right now.',
'config-optional-continue' => 'Ask me more questions.',
Wikipedia previously used the GNU Free Documentation License.
The GFDL is a valid license, but it is difficult to understand.
It is also difficult to reuse content licensed under the GFDL.",
- 'config-email-settings' => 'E-mail settings',
- 'config-enable-email' => 'Enable outbound e-mail',
- 'config-enable-email-help' => "If you want e-mail to work, [http://www.php.net/manual/en/mail.configuration.php PHP's mail settings] need to be configured correctly.
-If you do not want any e-mail features, you can disable them here.",
- 'config-email-user' => 'Enable user-to-user e-mail',
- 'config-email-user-help' => 'Allow all users to send each other e-mail if they have enabled it in their preferences.',
+ 'config-email-settings' => 'Email settings',
+ 'config-enable-email' => 'Enable outbound email',
+ 'config-enable-email-help' => "If you want email to work, [http://www.php.net/manual/en/mail.configuration.php PHP's mail settings] need to be configured correctly.
+If you do not want any email features, you can disable them here.",
+ 'config-email-user' => 'Enable user-to-user email',
+ 'config-email-user-help' => 'Allow all users to send each other email if they have enabled it in their preferences.',
'config-email-usertalk' => 'Enable user talk page notification',
'config-email-usertalk-help' => 'Allow users to receive notifications on user talk page changes, if they have enabled it in their preferences.',
'config-email-watchlist' => 'Enable watchlist notification',
'config-email-watchlist-help' => 'Allow users to receive notifications about their watched pages if they have enabled it in their preferences.',
- 'config-email-auth' => 'Enable e-mail authentication',
- 'config-email-auth-help' => "If this option is enabled, users have to confirm their e-mail address using a link sent to them whenever they set or change it.
-Only authenticated e-mail addresses can receive e-mails from other users or change notification e-mails.
-Setting this option is '''recommended''' for public wikis because of potential abuse of the e-mail features.",
- 'config-email-sender' => 'Return e-mail address:',
- 'config-email-sender-help' => 'Enter the e-mail address to use as the return address on outbound e-mail.
+ 'config-email-auth' => 'Enable email authentication',
+ 'config-email-auth-help' => "If this option is enabled, users have to confirm their email address using a link sent to them whenever they set or change it.
+Only authenticated email addresses can receive emails from other users or change notification emails.
+Setting this option is '''recommended''' for public wikis because of potential abuse of the email features.",
+ 'config-email-sender' => 'Return email address:',
+ 'config-email-sender-help' => 'Enter the email address to use as the return address on outbound email.
This is where bounces will be sent.
Many mail servers require at least the domain name part to be valid.',
'config-upload-settings' => 'Images and file uploads',
* $1 - a link to the SQLite home page having the anchor text "SQLite".',
'config-support-oracle' => 'Parameters:
* $1 - a link to the Oracle home page, the anchor text of which is "Oracle".',
- 'config-support-ibm_db2' => 'Used in the DBConnect step of the installer, explaining what is the ibm_db2 database',
'config-connection-error' => '$1 is the external error from the database, such as "DB connection error: Access denied for user \'dba\'@\'localhost\' (using password: YES) (localhost)."
If you\'re translating this message to a right-to-left language, consider writing <nowiki><div dir="ltr">$1.</div></nowiki>. (When the bidi features for HTML5 will be implemented in the browsers, it will probably be a good idea to write it as <nowiki><div dir="auto">$1.</div></nowiki>.)',
* {{msg-mw|config-profile-no-anon}}
* {{msg-mw|config-profile-fishbowl}}
* {{msg-mw|config-profile-private}}',
+ 'config-email-settings' => '{{Identical|E-mail setting}}',
+ 'config-email-user' => '{{Identical|Enable user-to-user e-mail}}',
'config-upload-help' => 'The word "mode" here refers to the access rights given to various user groups when attempting to create and store files and/or subdiretories in the said directory on the server. It also refers to the <code>mode</code> command used to maipulate said right mask under Unix, Linux, and similar operating systems. A less operating-system-centric translation is fine.',
'config-logo-help' => '',
'config-cc-not-chosen' => '{{doc-important|Do not translate the "<code>proceed</code>" part.}}
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => "Skoret eo ar reizhiadoù diaz titouroù da-heul gant MediaWiki :
$1
'config-support-postgres' => "* Ur reizhiad diaz titouroù brudet ha digor eo $1. Gallout a ra ober evit MySQL ([http://www.php.net/manual/en/pgsql.installation.php Penaos kempunañ PHP gant skor PostgreSQL]). Gallout a ra bezañ un nebeud drein bihan enni ha n'eo ket erbedet he implijout en un endro produiñ.",
'config-support-sqlite' => "* $1 zo ur reizhiad diaz titouroù skañv skoret eus ar c'hentañ. ([http://www.php.net/manual/en/pdo.installation.php Penaos kempunañ PHP gant skor SQLite], implijout a ra PDO)",
'config-support-oracle' => '* $1 zo un diaz titouroù kenwerzhel. ([http://www.php.net/manual/en/oci8.installation.php Penaos kempunañ PHP gant skor OCI8])',
- 'config-support-ibm_db2' => '* Un diaz titouroù evit embregerezhioù kenwerzhel eo $1.', # Fuzzy
'config-header-mysql' => 'Arventennoù MySQL',
'config-header-postgres' => 'Arventennoù PostgreSQL',
'config-header-sqlite' => 'Arventennoù SQLite',
'config-header-oracle' => 'Arventennoù Oracle',
- 'config-header-ibm_db2' => 'Arventennoù IBM DB2',
'config-invalid-db-type' => 'Direizh eo ar seurt diaz roadennoù',
'config-missing-db-name' => 'Ret eo deoc\'h merkañ un dalvoudenn evit "Anv an diaz titouroù"',
'config-missing-db-host' => 'Ret eo deoc\'h merkañ un dalvoudenn evit "Ostiz an diaz titouroù"',
'config-optional-continue' => "Sevel muioc'h a goulennoù ouzhin.",
'config-optional-skip' => 'Aet on skuizh, staliañ ar wiki hepken.',
'config-profile' => 'Profil ar gwirioù implijer :',
- 'config-profile-wiki' => 'Wiki hengounel', # Fuzzy
+ 'config-profile-wiki' => 'Wiki digor',
'config-profile-no-anon' => 'Krouidigezh ur gont ret',
'config-profile-fishbowl' => 'Embanner aotreet hepken',
'config-profile-private' => 'Wiki prevez',
'config-install-alreadydone' => "'''Diwallit''': Staliet hoc'h eus MediaWiki dija war a seblant hag emaoc'h o klask e staliañ c'hoazh.
Kit d'ar bajenn war-lerc'h, mar plij.",
'config-install-begin' => 'Pa vo bet pouezet ganeoc\'h war "{{int:config-continue}}" e krogo staliadur MediaWiki.
-Pouezit war Kent mar fell deoc\'h cheñch tra pe dra.', # Fuzzy
+Pouezit war "{{int:config-back}}" mar fell deoc\'h cheñch tra pe dra.',
'config-install-step-done' => 'graet',
'config-install-step-failed' => "c'hwitet",
'config-install-extensions' => 'En ur gontañ an astennoù',
== Kregiñ ganti ==
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]", # Fuzzy
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Roll an arventennoù kefluniañ]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAG MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Roll ar c'haozeadennoù diwar-benn dasparzhoù MediaWiki]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Lec'hiañ MediaWiki en ho yezh", # Fuzzy
);
/** Bosnian (bosanski)
== Toiseach tòiseachaidh ==
* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liosta suidheachadh nan roghainnean]
* [//www.mediawiki.org/wiki/Manual:FAQ CÀBHA MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liosta puist nan sgaoilidhean MediaWiki]",
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liosta puist nan sgaoilidhean MediaWiki]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Cuir do chànan air MediaWiki]",
);
/** Galician (galego)
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-type-ibm_db2' => 'IBM DB2',
'config-support-mysql' => '* $1 je primarny cil za MediaWiki a podpěruje so najlěpje ([http://www.php.net/manual/en/mysql.installation.php Nawod ke kompilowanju PHP z MySQL-podpěru])',
'config-support-postgres' => '* $1 je popularny system datoweje banki zjawneho žórła jako alternatiwa k MySQL ([http://www.php.net/manual/en/pgsql.installation.php nawod za kompilowanje PHP z podpěru PostgreSQL]). Móhło hišće někotre zmylki eksistować, a njeporuča so jón w produktiwnej wokolinje wužiwać.',
'config-support-oracle' => '* $1 je komercielna předewzaćelska datowa banka. ([http://www.php.net/manual/en/oci8.installation.php Nawod za kompilowanje PHP z OCI8-podpěru])',
- 'config-support-ibm_db2' => '* $1 je komercielna předewzaćelska datowa banka. ([http://www.php.net/manual/en/ibm-db2.installation.php How to compile PHP with IBM DB2 support])',
'config-header-mysql' => 'Nastajenja MySQL',
'config-header-postgres' => 'Nastajenja PostgreSQL',
'config-header-sqlite' => 'Nastajenja SQLite',
'config-header-oracle' => 'Nastajenja Oracle',
- 'config-header-ibm_db2' => 'Nastajenja IBM DB2',
'config-invalid-db-type' => 'Njepłaćiwy typ datoweje banki',
'config-missing-db-name' => 'Dyrbiš hódnotu za "Mjeno datoweje banki" zapodać',
'config-missing-db-host' => 'Dyrbiš hódnotu za "Database host" zapodać',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki mendukung sistem basis data berikut:
$1
'config-support-postgres' => '* $1 adalah sistem basis data sumber terbuka populer sebagai alternatif untuk MySQL ([http://www.php.net/manual/en/pgsql.installation.php cara mengompilasi PHP dengan dukungan PostgreSQL]). Mungkin ada beberapa bug terbuka dan alternatif ini tidak direkomendasikan untuk dipakai dalam lingkungan produksi.',
'config-support-sqlite' => '* $1 adalah sistem basis data yang ringan yang sangat baik dukungannya. ([http://www.php.net/manual/en/pdo.installation.php cara mengompilasi PHP dengan dukungan SQLite], menggunakan PDO)',
'config-support-oracle' => '* $1 adalah basis data komersial untuka perusahaan. ([http://www.php.net/manual/en/oci8.installation.php cara mengompilasi PHP dengan dukungan OCI8])',
- 'config-support-ibm_db2' => '* $1 adalah basis data-perusahaan komersial.', # Fuzzy
'config-header-mysql' => 'Pengaturan MySQL',
'config-header-postgres' => 'Pengaturan PostgreSQL',
'config-header-sqlite' => 'Pengaturan SQLite',
'config-header-oracle' => 'Pengaturan Oracle',
- 'config-header-ibm_db2' => 'Pengaturan IBM DB2',
'config-invalid-db-type' => 'Jenis basis data tidak sah',
'config-missing-db-name' => 'Anda harus memasukkan nilai untuk "Nama basis data"',
'config-missing-db-host' => 'Anda harus memasukkan nilai untuk "Inang basis data"',
Ini lebih efisien daripada modus UTF-8 MySQL dan memungkinkan Anda untuk menggunakan ragam penuh karakter Unicode.
Dalam '''modus UTF-8''', MySQL akan tahu apa set karakter data dan dapat menampilkan dan mengubahnya sesuai keperluan, tetapi tidak akan mengizinkan Anda menyimpan karakter di atas [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
- 'config-ibm_db2-low-db-pagesize' => "Basis data DB2 Anda tidak memiliki pagesize yang cukup untuk tablespace bawaan. Pagesize harus sama atau lebih dari '''32K'''.",
'config-site-name' => 'Nama wiki:',
'config-site-name-help' => 'Ini akan muncul di bilah judul peramban dan di berbagai tempat lainnya.',
'config-site-name-blank' => 'Masukkan nama situs.',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki は以下のデータベース システムに対応しています:
$1
'config-support-postgres' => '* $1は、MySQLの代替として人気があるオープンソースのデータベースシステムです ([http://www.php.net/manual/en/pgsql.installation.php PostgreSQLに対応したPHPをコンパイルする方法])',
'config-support-sqlite' => '* $1は、良くサポートされている、軽量データベースシステムです。([http://www.php.net/manual/ja/pdo.installation.php SQLiteに対応したPHPをコンパイルする方法]、PDOを使用)',
'config-support-oracle' => '* $1は商業企業のデータベースです。([http://www.php.net/manual/en/oci8.installation.php OCI8サポートなPHPをコンパイルする方法])',
- 'config-support-ibm_db2' => '* $1 は商業企業のデータベースです。([http://www.php.net/manual/en/ibm-db2.installation.php IBM DB2に対応したPHPをコンパイルする方法])',
'config-header-mysql' => 'MySQL の設定',
'config-header-postgres' => 'PostgreSQL の設定',
'config-header-sqlite' => 'SQLite の設定',
'config-header-oracle' => 'Oracle の設定',
- 'config-header-ibm_db2' => 'IBM DB2 の設定',
'config-invalid-db-type' => '無効なデータベースの種類',
'config-missing-db-name' => '「データベース名」を入力してください',
'config-missing-db-host' => '「データベースのホスト」を入力してください',
'config-project-namespace-help' => "ウィキペディアの例に従い、多くのウィキは、コンテンツのページとは分離したポリシーページを「'''プロジェクトの名前空間'''」に持っています。
この名前空間内のページのページ名はすべて特定の接頭辞で始まります。それをここで指定できます。
通常、この接頭辞はウィキ名に基づきますが、「#」や「:」のような区切り文字を含めることはできません。",
- 'config-ns-invalid' => '"<nowiki>$1</nowiki>"のように指定された名前空間は無効です。
-違うプロジェクト名前空間を指定してください。',
+ 'config-ns-invalid' => '指定した名前空間「<nowiki>$1</nowiki>」は無効です。
+別のプロジェクト名前空間を指定してください。',
'config-admin-box' => '管理アカウント',
'config-admin-name' => '名前:',
'config-admin-password' => 'パスワード:',
'config-admin-password-confirm' => 'パスワードの再入力:',
- 'config-admin-help' => '希望するユーザー名をここに入力してください (例: "Joe Bloggs")。
+ 'config-admin-help' => '希望するユーザー名をここに入力してください (例:「Joe Bloggs」)。
この名前でこのウィキにログインすることになります。',
'config-admin-name-blank' => '管理者のユーザー名を入力してください。',
'config-admin-name-invalid' => '指定したユーザー名「<nowiki>$1</nowiki>」は無効です。
'config-admin-password-mismatch' => '入力された2つのパスワードが一致しません。',
'config-admin-email' => 'メールアドレス:',
'config-admin-email-help' => 'メールアドレスを入力してください。他の利用者からのメールの受け取り、パスワードのリセット、ウォッチリストに登録したページの更新通知に使用します。空欄のままにすることもできます。',
- 'config-admin-error-user' => '"<nowiki>$1</nowiki>"という名前の管理者を作成する際に内部エラーが発生しました。',
- 'config-admin-error-password' => '管理者"<nowiki>$1</nowiki>"のパスワードを設定する際に内部エラーが発生しました: <pre>$2</pre>',
+ 'config-admin-error-user' => '「<nowiki>$1</nowiki>」という名前の管理者を作成する際に内部エラーが発生しました。',
+ 'config-admin-error-password' => '管理者「<nowiki>$1</nowiki>」のパスワードを設定する際に内部エラーが発生しました: <pre>$2</pre>',
+ 'config-admin-error-bademail' => '無効なメールアドレスを入力しました。',
'config-subscribe' => '[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce リリース告知のメーリングリスト]を購読する。',
'config-subscribe-help' => 'これは、リリースの告知 (重要なセキュリティに関する案内を含む) に使用される、流量が少ないメーリングリストです。
このメーリングリストを購読して、新しいバージョンが出た場合にMediaWikiを更新してください。',
* @author පසිඳු කාවින්ද
*/
$messages['yi'] = array(
+ 'config-information' => 'אינפֿארמאציע',
'config-back' => '→ צוריק',
+ 'config-continue' => 'פֿארזעצן ←',
'config-page-language' => 'שפראַך',
'config-page-name' => 'נאָמען',
'config-page-options' => 'ברירות',
+ 'config-db-type' => 'דאטנבאזע טיפ:',
+ 'config-db-name' => 'דאטנבאזע נאָמען:',
+ 'config-project-namespace' => 'פראיעקט נאָמענטייל:',
'config-ns-generic' => 'פראיעקט',
'config-admin-name' => 'אײַער נאָמען:',
'config-admin-password' => 'פאַסווארט:',
+ 'config-admin-password-mismatch' => 'די צוויי פאסוועטרט איר האט איינגעגעבן שטימען נישט.',
'config-admin-email' => 'בליצפּאָסט אַדרעס:',
+ 'config-install-tables' => 'שאפן טאבעלעס',
+ 'config-install-tables-exist' => "'''ווארענונג''': זעט אויס אז די מעדיעוויקי טאבעלעס עקזיסטירן שוין.
+איבערהיפן שאפֿן.",
+ 'config-download-localsettings' => 'אראפלאדן <code>LocalSettings.php</code>',
'config-help' => 'הילף',
+ 'config-nofile' => 'מ\'האט נישט געקענט טרעפן די טעקע "$1". צי האט מען זי אויסגעמעקט?',
'mainpagetext' => "'''מעדיעוויקי אינסטאלירט מיט דערפאלג.'''",
'mainpagedocfooter' => "גיט זיך אן עצה מיט [//meta.wikimedia.org/wiki/Help:Contents באניצער'ס וועגווײַזער] פֿאר אינפֿארמאציע וויאזוי זיך באנוצן מיט וויקי ווייכוואַרג.
== נוצליכע וועבלינקען פֿאַר אנהייבערס ==
* [//www.mediawiki.org/wiki/Manual:Configuration_settings רשימה פון קאנפֿיגוראציעס]
* [//www.mediawiki.org/wiki/Manual:FAQ אפֿט געפֿרעגטע שאלות]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce מעדיעוויקי באפֿרײַאונג פאסטליסטע]",
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce מעדיעוויקי באפֿרײַאונג פאסטליסטע]* [//www.mediawiki.org/wiki/Localisation#Translation_resources איבערזעצן מעדיעוויקי אין אײַער שפראך]",
);
/** Yoruba (Yorùbá)
'postgres',
'oracle',
'sqlite',
- 'ibm_db2',
);
/**
'cursor_west' => null,
'four_notation_quantity' => null,
'four_notation_color' => null,
+ 'box_shadow' => null,
+ 'text_shadow1' => null,
+ 'text_shadow2' => null,
'bg_horizontal_percentage' => null,
'bg_horizontal_percentage_x' => null,
);
$patterns['ident'] = "-?{$patterns['nmstart']}{$patterns['nmchar']}*";
$patterns['quantity'] = "{$patterns['num']}(?:\s*{$patterns['unit']}|{$patterns['ident']})?";
$patterns['possibly_negative_quantity'] = "((?:-?{$patterns['quantity']})|(?:inherit|auto))";
- $patterns['color'] = "(#?{$patterns['nmchar']}+)";
+ $patterns['color'] = "(#?{$patterns['nmchar']}+|(?:rgba?|hsla?)\([ \d.,%-]+\))";
$patterns['url_chars'] = "(?:{$patterns['url_special_chars']}|{$patterns['nonAscii']}|{$patterns['escape']})*";
$patterns['lookahead_not_open_brace'] = "(?!({$patterns['nmchar']}|\r?\n|\s|#|\:|\.|\,|\+|>)*?{)";
$patterns['lookahead_not_closing_paren'] = "(?!{$patterns['url_chars']}?{$patterns['valid_after_uri_chars']}\))";
$patterns['rtl_in_url'] = "/{$patterns['lookbehind_not_letter']}(rtl){$patterns['lookahead_for_closing_paren']}/i";
$patterns['cursor_east'] = "/{$patterns['lookbehind_not_letter']}([ns]?)e-resize/";
$patterns['cursor_west'] = "/{$patterns['lookbehind_not_letter']}([ns]?)w-resize/";
- $patterns['four_notation_quantity'] = "/{$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}/i";
- $patterns['four_notation_color'] = "/(-color\s*:\s*){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}/i";
+ $patterns['four_notation_quantity'] = "/(:\s*){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s*[;}])/i";
+ $patterns['four_notation_color'] = "/(-color\s*:\s*){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}(\s*[;}])/i";
+ $patterns['box_shadow'] = "/(box-shadow\s*:\s*(?:inset\s*)?){$patterns['possibly_negative_quantity']}/i";
+ $patterns['text_shadow1'] = "/(text-shadow\s*:\s*){$patterns['color']}(\s*){$patterns['possibly_negative_quantity']}/i";
+ $patterns['text_shadow2'] = "/(text-shadow\s*:\s*){$patterns['possibly_negative_quantity']}/i";
// The two regexes below are parenthesized differently then in the original implementation to make the
// callback's job more straightforward
$patterns['bg_horizontal_percentage'] = "/(background(?:-position)?\s*:\s*[^%]*?)(-?{$patterns['num']})(%\s*(?:{$patterns['quantity']}|{$patterns['ident']}))/";
$css = self::fixCursorProperties( $css );
$css = self::fixFourPartNotation( $css );
$css = self::fixBackgroundPosition( $css );
+ $css = self::fixShadows( $css );
// Detokenize stuff we tokenized before
$css = $comments->detokenize( $css );
* @return string
*/
private static function fixFourPartNotation( $css ) {
- $css = preg_replace( self::$patterns['four_notation_quantity'], '$1$2$7$4$5$6$3', $css );
- $css = preg_replace( self::$patterns['four_notation_color'], '$1$2$3$8$5$6$7$4', $css );
+ $css = preg_replace( self::$patterns['four_notation_quantity'], '$1$2$3$8$5$6$7$4$9', $css );
+ $css = preg_replace( self::$patterns['four_notation_color'], '$1$2$3$8$5$6$7$4$9', $css );
+
+ return $css;
+ }
+
+ /**
+ * Negates horizontal offset in box-shadow and text-shadow rules.
+ *
+ * @param $css string
+ * @return string
+ */
+ private static function fixShadows( $css ) {
+ // Flips the sign of a CSS value, possibly with a unit.
+ // (We can't just negate the value with unary minus due to the units.)
+ $flipSign = function ( $cssValue ) {
+ // Don't mangle zeroes
+ if ( intval( $cssValue ) === 0 ) {
+ return $cssValue;
+ } elseif ( $cssValue[0] === '-' ) {
+ return substr( $cssValue, 1 );
+ } else {
+ return "-" . $cssValue;
+ }
+ };
+
+ $css = preg_replace_callback( self::$patterns['box_shadow'], function ( $matches ) use ( $flipSign ) {
+ return $matches[1] . $flipSign( $matches[2] );
+ }, $css );
+
+ $css = preg_replace_callback( self::$patterns['text_shadow1'], function ( $matches ) use ( $flipSign ) {
+ return $matches[1] . $matches[2] . $matches[3] . $flipSign( $matches[4] );
+ }, $css );
+
+ $css = preg_replace_callback( self::$patterns['text_shadow2'], function ( $matches ) use ( $flipSign ) {
+ return $matches[1] . $flipSign( $matches[2] );
+ }, $css );
return $css;
}
$entry = $this->entry;
$params = $this->extractParameters();
$params[0] = Message::rawParam( $this->getPerformerElement() );
- $params[1] = $entry->getPerformer()->getName();
+ $params[1] = $this->canView( LogPage::DELETED_USER ) ? $entry->getPerformer()->getName() : '';
$params[2] = Message::rawParam( $this->makePageLink( $entry->getTarget() ) );
// Bad things happens if the numbers are not in correct order
+++ /dev/null
-<?php
-/**
- * IBM DB2 search engine
- *
- * Copyright © 2004 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
- *
- * 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 Search
- */
-
-/**
- * Search engine hook base class for IBM DB2
- * @ingroup Search
- */
-class SearchIBM_DB2 extends SearchEngine {
-
- /**
- * Creates an instance of this class
- * @param $db DatabaseIbm_db2: database object
- */
- function __construct( $db ) {
- parent::__construct( $db );
- }
-
- /**
- * Perform a full text search query and return a result set.
- *
- * @param $term String: raw search term
- * @return SqlSearchResultSet
- */
- function searchText( $term ) {
- $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), true ) ) );
- return new SqlSearchResultSet( $resultSet, $this->searchTerms );
- }
-
- /**
- * Perform a title-only search query and return a result set.
- *
- * @param $term String: taw search term
- * @return SqlSearchResultSet
- */
- function searchTitle( $term ) {
- $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), false ) ) );
- return new SqlSearchResultSet( $resultSet, $this->searchTerms );
- }
-
-
- /**
- * Return a partial WHERE clause to exclude redirects, if so set
- * @return String
- */
- function queryRedirect() {
- if ( $this->showRedirects ) {
- return '';
- } else {
- return 'AND page_is_redirect=0';
- }
- }
-
- /**
- * Return a partial WHERE clause to limit the search to the given namespaces
- * @return String
- */
- function queryNamespaces() {
- if( is_null( $this->namespaces ) )
- return '';
- $namespaces = implode( ',', $this->namespaces );
- if ( $namespaces == '' ) {
- $namespaces = '0';
- }
- return 'AND page_namespace IN (' . $namespaces . ')';
- }
-
- /**
- * Return a LIMIT clause to limit results on the query.
- * @return String
- */
- function queryLimit( $sql ) {
- return $this->db->limitResult( $sql, $this->limit, $this->offset );
- }
-
- /**
- * Does not do anything for generic search engine
- * subclasses may define this though
- * @return String
- */
- function queryRanking( $filteredTerm, $fulltext ) {
- // requires Net Search Extender or equivalent
- // return ' ORDER BY score(1)';
- return '';
- }
-
- /**
- * Construct the full SQL query to do the search.
- * The guts shoulds be constructed in queryMain()
- * @param $filteredTerm String
- * @param $fulltext Boolean
- * @return String
- */
- function getQuery( $filteredTerm, $fulltext ) {
- return $this->queryLimit( $this->queryMain( $filteredTerm, $fulltext ) . ' ' .
- $this->queryRedirect() . ' ' .
- $this->queryNamespaces() . ' ' .
- $this->queryRanking( $filteredTerm, $fulltext ) . ' ' );
- }
-
-
- /**
- * Picks which field to index on, depending on what type of query.
- * @param $fulltext Boolean
- * @return String
- */
- function getIndexField( $fulltext ) {
- return $fulltext ? 'si_text' : 'si_title';
- }
-
- /**
- * Get the base part of the search query.
- *
- * @param $filteredTerm String
- * @param $fulltext Boolean
- * @return String
- */
- function queryMain( $filteredTerm, $fulltext ) {
- $match = $this->parseQuery( $filteredTerm, $fulltext );
- $page = $this->db->tableName( 'page' );
- $searchindex = $this->db->tableName( 'searchindex' );
- return 'SELECT page_id, page_namespace, page_title ' .
- "FROM $page,$searchindex " .
- 'WHERE page_id=si_page AND ' . $match;
- }
-
- /** @todo document
- * @return string
- */
- function parseQuery( $filteredText, $fulltext ) {
- global $wgContLang;
- $lc = SearchEngine::legalSearchChars();
- $this->searchTerms = array();
-
- # @todo FIXME: This doesn't handle parenthetical expressions.
- $m = array();
- $q = array();
-
- if ( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
- $filteredText, $m, PREG_SET_ORDER ) ) {
- foreach( $m as $terms ) {
-
- // Search terms in all variant forms, only
- // apply on wiki with LanguageConverter
- $temp_terms = $wgContLang->autoConvertToAllVariants( $terms[2] );
- if( is_array( $temp_terms )) {
- $temp_terms = array_unique( array_values( $temp_terms ));
- foreach( $temp_terms as $t )
- $q[] = $terms[1] . $wgContLang->normalizeForSearch( $t );
- }
- else
- $q[] = $terms[1] . $wgContLang->normalizeForSearch( $terms[2] );
-
- if ( !empty( $terms[3] ) ) {
- $regexp = preg_quote( $terms[3], '/' );
- if ( $terms[4] )
- $regexp .= "[0-9A-Za-z_]+";
- } else {
- $regexp = preg_quote(str_replace( '"', '', $terms[2]), '/' );
- }
- $this->searchTerms[] = $regexp;
- }
- }
-
- $searchon = $this->db->strencode( join( ',', $q ) );
- $field = $this->getIndexField( $fulltext );
-
- // requires Net Search Extender or equivalent
- //return " CONTAINS($field, '$searchon') > 0 ";
-
- return " lcase($field) LIKE lcase('%$searchon%')";
- }
-
- /**
- * Create or update the search index record for the given page.
- * Title and text should be pre-processed.
- *
- * @param $id Integer
- * @param $title String
- * @param $text String
- */
- function update( $id, $title, $text ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->replace( 'searchindex',
- array( 'si_page' ),
- array(
- 'si_page' => $id,
- 'si_title' => $title,
- 'si_text' => $text
- ), 'SearchIBM_DB2::update' );
- // ?
- //$dbw->query( "CALL ctx_ddl.sync_index('si_text_idx')" );
- //$dbw->query( "CALL ctx_ddl.sync_index('si_title_idx')" );
- }
-
- /**
- * Update a search index record's title only.
- * Title should be pre-processed.
- *
- * @param $id Integer
- * @param $title String
- */
- function updateTitle( $id, $title ) {
- $dbw = wfGetDB( DB_MASTER );
-
- $dbw->update( 'searchindex',
- array( 'si_title' => $title ),
- array( 'si_page' => $id ),
- 'SearchIBM_DB2::updateTitle',
- array() );
- }
-}
$opts->add( 'hidepatrolled', $this->getUser()->getBoolOption( 'newpageshidepatrolled' ) );
$opts->add( 'hidebots', false );
$opts->add( 'hideredirs', true );
- $opts->add( 'limit', (int)$this->getUser()->getOption( 'rclimit' ) );
+ $opts->add( 'limit', $this->getUser()->getIntOption( 'rclimit' ) );
$opts->add( 'offset', '' );
$opts->add( 'namespace', '0' );
$opts->add( 'username', '' );
public function getDefaultOptions() {
$opts = new FormOptions();
- $opts->add( 'days', (int)$this->getUser()->getOption( 'rcdays' ) );
- $opts->add( 'limit', (int)$this->getUser()->getOption( 'rclimit' ) );
+ $opts->add( 'days', $this->getUser()->getIntOption( 'rcdays' ) );
+ $opts->add( 'limit', $this->getUser()->getIntOption( 'rclimit' ) );
$opts->add( 'from', '' );
$opts->add( 'hideminor', $this->getUser()->getBoolOption( 'hideminor' ) );
// source view for textual content
$sourceView = Xml::element( 'textarea', array(
'readonly' => 'readonly',
- 'cols' => intval( $user->getOption( 'cols' ) ),
- 'rows' => intval( $user->getOption( 'rows' ) ) ),
+ 'cols' => $user->getIntOption( 'cols' ),
+ 'rows' => $user->getIntOption( 'rows' ) ),
$content->getNativeData() . "\n" );
$previewButton = Xml::element( 'input', array(
? 'filereuploadsummary'
: 'fileuploadsummary',
'default' => $this->mComment,
- 'cols' => intval( $this->getUser()->getOption( 'cols' ) ),
+ 'cols' => $this->getUser()->getIntOption( 'cols' ),
'rows' => 8,
)
);
case self::SUCCESS:
# We've verified now, update the real record
$user = $this->getUser();
- if( (bool)$this->mRemember != (bool)$user->getOption( 'rememberpassword' ) ) {
+ if( (bool)$this->mRemember != $user->getBoolOption( 'rememberpassword' ) ) {
$user->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
$user->saveSettings();
} else {
# Toggle watchlist content (all recent edits or just the latest)
if( $values['extended'] ) {
- $limitWatchlist = intval( $user->getOption( 'wllimit' ) );
+ $limitWatchlist = $user->getIntOption( 'wllimit' );
$usePage = false;
} else {
# Top log Ids for a page are not stored
* @ingroup Templates
*/
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die( "NoLocalSettings.php is not a valid MediaWiki entry point\n" );
+}
+
if ( !isset( $wgVersion ) ) {
$wgVersion = 'VERSION';
}
* Get the base 36 SHA1 of the file
* @return string
*/
- protected function getTempFileSha1Base36() {
+ public function getTempFileSha1Base36() {
return FSFile::getSha1Base36FromPath( $this->mTempPath );
}
* Get the base 36 SHA1 of the file
* @return string
*/
- protected function getTempFileSha1Base36() {
+ public function getTempFileSha1Base36() {
return $this->mFileProps['sha1'];
}
+++ /dev/null
-<?php
-/**
- * Lithuanian (Lietuvių) specific code.
- *
- * 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 Language
- */
-
-/**
- * Lithuanian (Lietuvių)
- *
- * @ingroup Language
- */
-class LanguageLt extends Language {
- /* Word forms (with examples):
- 1 - vienas (1) lapas, dvidešimt vienas (21) lapas
- 2 - trys (3) lapai
- 3 - penkiolika (15) lapų
- */
-
- /**
- * Lithuanian plural forms as per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#lt
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) { return ''; }
-
- // if the number is not mentioned in message, then use $form[0] for singular and $form[1] for plural or zero
- if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
-
- $forms = $this->preConvertPlural( $forms, 3 );
- // Form[0] if n mod 10 is 1 and n mod 100 not in 11..19;
- if ( $count % 10 == 1 && $count % 100 != 11 ) return $forms[0];
- // Forms[1] if n mod 10 in 2..9 and n mod 100 not in 11..19;
- if ( $count % 10 >= 2 && ( $count % 100 < 10 || $count % 100 >= 20 ) ) return $forms[1];
- return $forms[2];
- }
-}
+++ /dev/null
-<?php
-/**
- * Latvian (Latviešu) specific code.
- *
- * 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
- * @author Niklas Laxström
- * @copyright Copyright © 2006, Niklas Laxström
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @ingroup Language
- */
-
-/**
- * Latvian (Latviešu)
- *
- * @ingroup Language
- */
-class LanguageLv extends Language {
- /**
- * Plural form transformations. Using the first form for words with the last digit 1, but not for words with the last digits 11, and the second form for all the others.
- *
- * Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}}
- *
- * @param $count Integer
- * @param $forms Array
- * @return String
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) { return ''; }
-
- // @todo FIXME: CLDR defines 3 plural forms instead of 2. Form for 0 is missing.
- // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#lv
- $forms = $this->preConvertPlural( $forms, 2 );
-
- return ( ( $count % 10 == 1 ) && ( $count % 100 != 11 ) ) ? $forms[0] : $forms[1];
- }
-}
* @author Ali1
* @author Alnokta
* @author Antime
+ * @author Arjanizary
* @author Avocato
* @author Bassem JARKAS
* @author Chaos
'october-gen' => 'أكتوبر',
'november-gen' => 'نوفمبر',
'december-gen' => 'ديسمبر',
-'jan' => 'Ù\8aÙ\86اÙ\8aر',
-'feb' => 'فبراير',
-'mar' => 'مارس',
-'apr' => 'أبريل',
-'may' => 'مايو',
-'jun' => 'يونيو',
-'jul' => 'يوليو',
-'aug' => 'أغسطس',
-'sep' => 'سبتÙ\85بر',
-'oct' => 'Ø£Ù\83تÙ\88بر',
-'nov' => 'نوفمبر',
-'dec' => 'ديسمبر',
+'jan' => 'Ù\83اÙ\86Ù\88Ù\86 اÙ\84ثاÙ\86Ù\8a',
+'feb' => 'شباط',
+'mar' => 'آذار',
+'apr' => 'نيسان',
+'may' => 'أيار',
+'jun' => 'حزيران',
+'jul' => 'تموز',
+'aug' => 'آب',
+'sep' => 'Ø£Ù\8aÙ\84Ù\88Ù\84',
+'oct' => 'تشرÙ\8aÙ\86 اÙ\84Ø£Ù\88Ù\84',
+'nov' => 'تشرين الثاني',
+'dec' => 'كانون الأول',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|لا تصنيف|تصنيف|تصنيفان|تصنيفات}}',
'loginlanguagelabel' => 'اللغة: $1',
'suspicious-userlogout' => 'رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "خطأ غير معروف في وظيفة البريد PHP's mail()",
'user-mail-no-addy' => 'لقد حاولت إرسال بريد إلكتروني دون عنوان بريد إلكتروني.',
'user-mail-no-body' => 'محاول ارسال بريد إلكتروني فارغ أو ذو نص قصير.',
'prefs-displaywatchlist' => 'خصائص العرض',
'prefs-diffs' => 'فروقات',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'يبدو أن عنوان البريد الإلكتروني صالح',
'email-address-validity-invalid' => 'أدخل عنوان بريد إلكتروني صالح',
ربما ينبغي أن تصل إلى صفحة أكثر ملائمة. <br />
تعامل الصفحة كصفحة توضيح إذا كان بها قالب موجود في [[MediaWiki:Disambiguationspage]]",
+'pageswithprop' => 'صفحات مع خاصية الصفحة',
+'pageswithprop-text' => 'تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.',
+'pageswithprop-prop' => 'اسم الخاصية:',
+
'doubleredirects' => 'تحويلات مزدوجة',
'doubleredirectstext' => 'هذه الصفحة تعرض الصفحات التي تحول إلى صفحات تحويل أخرى.
كل سطر يحتوي على وصلات للتحويلة الأولى والثانية وهدف التحويلة الثانية، والذي عادة ما يشير إلى صفحة الهدف "الحقيقية"، التي من المفترض أن تحول إليها التحويلة الأولى.
'listgrouprights-addgroup-self-all' => 'يمكنه إضافة كل المجموعات إلى حسابه الخاص',
'listgrouprights-removegroup-self-all' => 'يمكنه إزالة كل المجموعات من حسابه الخاص',
-# E-mail user
+# Email user
'mailnologin' => 'لا يوجد عنوان للإرسال',
'mailnologintext' => 'يجب أن تقوم [[Special:UserLogin|بتسجيل الدخول]] وإدخال بريد إلكتروني صالح في صفحة [[Special:Preferences|التفضيلات]] لتتمكن من إرسال الرسائل لمستخدمين آخرين.',
'emailuser' => 'إرسال رسالة لهذا المستخدم',
'import-error-interwiki' => 'تعذر أستيراد الصفحة "$1" بسبب أن إسمها محجوز للربط الخارجي (interwiki).',
'import-error-special' => 'صفحة "$1" لم تستورد لأنها تنتمي إلى نطاق خاص يمنع الصفحات.',
'import-error-invalid' => 'تعذر أستيراد الصفحة "$1" بسبب أن إسمها غير صحيح.',
+'import-error-unserialize' => 'مراجعة $2 من صفحة " $1 " لا يمكن أن يكون أونسيرياليزيد. وأفيد المراجعة استخدام طراز المحتوى $3 تسلسل ك $4 .',
'import-options-wrong' => 'خطأ {{PLURAL:$2|خيار|خيارات}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'إن عنوان الصفحة الجذر المعطاة هي ذات عنوان غير صالح.',
'import-rootpage-nosubpage' => 'إن النطاق "$1" لصفحة الجذر لا يسمح بصفحات فرعية.',
'monthsall' => 'الكل',
'limitall' => 'الكل',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'تأكيد عنوان البريد الإلكتروني',
'confirmemail_noemail' => 'ليس لديك عنوان بريد إلكتروني صحيح مسجل في [[Special:Preferences|تفضيلاتك]].',
'confirmemail_text' => '{{SITENAME}} يجب تأكيد عنوانك الإلكتروني قبل استخدام خصائص البريد الإلكتروني.
'duration-centuries' => '{{PLURAL: $1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
'duration-millennia' => '{{PLURAL: $1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
+# Unknown messages
+'pageswithprop-legend' => 'صفحات مع خاصية الصفحة',
+'pageswithprop-submit' => 'اذهب',
);
'listgrouprights-removegroup-self' => 'ܠܚܝ {{PLURAL:$2|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}} ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ: $1',
'listgrouprights-removegroup-self-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ',
-# E-mail user
+# Email user
'mailnologin' => 'ܠܝܬ ܡܘܢܥܐ ܠܫܘܕܪܐ',
'emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
'emailpage' => 'ܫܕܪ ܐܓܪܬܐ ܒܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ',
'monthsall' => 'ܟܠ',
'limitall' => 'ܟܠ',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ܫܪܪ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
'confirmemail_subject' => 'ܫܘܪܪܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܡܢ {{SITENAME}}',
'confirmemail_invalidated' => 'ܫܘܪܪܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܐܬܒܛܠ',
'logentry-move-move_redir-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ ܘܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
'logentry-patrol-patrol' => '$1 ܫܘܕܥ ܬܢܝܬܐ $4 ܕܦܐܬܐ $3 ܟܪܝܟܬܐ',
'logentry-patrol-patrol-auto' => '$1 ܝܬܐܝܬ ܫܘܕܥ ܬܢܝܬܐ $4 ܕܦܐܬܐ $3 ܟܪܝܟܬܐ',
-'logentry-newusers-newusers' => 'Ü\9aÜ\98Ü«Ü\92Ü¢Ü\90 Ü\95Ü¡Ü¦Ü Ü\9aÜ¢Ü\90 $1 Ü\90ܬÜ\92ܪÜ\90',
-'logentry-newusers-create' => 'Ü\9aÜ\98Ü«Ü\92Ü¢Ü\90 Ü\95Ü¡Ü¦Ü Ü\9aÜ¢Ü\90 $1 Ü\90ܬÜ\92ܪÜ\90',
-'logentry-newusers-create2' => 'Ü\9aÜ\98Ü«Ü\92Ü¢Ü\90 Ü\95Ü¡Ü¦Ü Ü\9aÜ¢Ü\90 $3 Ü\90ܬÜ\92ܪÜ\90 ܒܝܕ $1',
+'logentry-newusers-newusers' => 'Ü\9aÜ\98Ü«Ü\92Ü¢Ü\90 Ü\95Ü¡Ü¦Ü Ü\9aÜ¢Ü\90 $1 Ü\90ܬܬÜ\9fÜ\9dÜ¢',
+'logentry-newusers-create' => 'Ü\9aÜ\98Ü«Ü\92Ü¢Ü\90 Ü\95Ü¡Ü¦Ü Ü\9aÜ¢Ü\90 $1 Ü\90ܬܬÜ\9fÜ\9dÜ¢',
+'logentry-newusers-create2' => 'Ü\9aÜ\98Ü«Ü\92Ü¢Ü\90 Ü\95Ü¡Ü¦Ü Ü\9aÜ¢Ü\90 $3 Ü\90ܬܬÜ\9fÜ\9dÜ¢ ܒܝܕ $1',
'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
'rightsnone' => '(ܠܐ ܡܕܡ)',
'loginlanguagelabel' => 'Llingua: $1',
'suspicious-userlogout' => "Negósete'l pidimientu de desconexón porque paez que vien d'un restolador frañíu o d'un proxy de caché.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Fallu desconocíu na función mail() de PHP.',
'user-mail-no-addy' => 'Intentasti unviar un corréu electrónicu ensin direición.',
'user-mail-no-body' => "Trató d'unviar un corréu electrónicu con un cuerpu baleru o curtiu enforma.",
'prefs-displaywatchlist' => 'Opciones de vista',
'prefs-diffs' => 'Diferencies',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'La direición de corréu paez válida',
'email-address-validity-invalid' => 'Escribi una direición de corréu válida',
'disambiguations-text' => "Les siguientes páxines contienen polo menos un enllaz a una '''páxina de dixebra'''. En cuenta d'ello habríen enllaciar a una páxina más apropiada.<br />
Una páxina tratase como una páxina de dixebra si usa una plantía que tea enllaciada dende [[MediaWiki:Disambiguationspage]]",
+'pageswithprop' => 'Páxines con una propiedá de páxina',
+'pageswithprop-text' => "Esta páxina llista les páxines qu'usen una propiedá de páxina determinada.",
+'pageswithprop-prop' => 'Nome de la propiedá:',
+
'doubleredirects' => 'Redireiciones dobles',
'doubleredirectstext' => 'Esta páxina llista páxines que redireicionen a otres páxines de redireición.
Cada filera contién enllaces a la primer y segunda redireición, asina como al oxetivu de la segunda redireición, que de vezu ye la páxina oxetivu "real", onde tendría d\'empobinar la primer redireición.
'listgrouprights-addgroup-self-all' => 'Amestar tolos grupos a la cuenta propia',
'listgrouprights-removegroup-self-all' => 'Desaniciar tolos grupos de la cuenta propia',
-# E-mail user
+# Email user
'mailnologin' => "Ensin direición d'unviu",
'mailnologintext' => 'Has tar [[Special:UserLogin|identificáu]]
y tener una direición de corréu válida nes tos [[Special:Preferences|preferencies]]
'monthsall' => 'toos',
'limitall' => 'toos',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar direición de corréu',
'confirmemail_noemail' => "Nun tienes una direición de corréu válida nes tos [[Special:Preferences|preferencies d'usuariu]].",
'confirmemail_text' => "{{SITENAME}} requier que valides la to direición de corréu enantes d'usar les
'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
+# Unknown messages
+'pageswithprop-legend' => 'Páxines con una propiedá de páxina',
+'pageswithprop-submit' => 'Dir',
);
'loginlanguagelabel' => 'Мова: $1',
'suspicious-userlogout' => 'Ваш запыт на выхад з сыстэмы быў адхілены, таму што выглядае, што ён быў дасланы пашкоджаным браўзэрам альбо кэшаваным проксі-сэрвэрам.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Узьнікла невядомая памылка ў функцыі PHP mail()',
'user-mail-no-addy' => 'Спроба даслаць электронны ліст без адрасу дастаўкі',
'user-mail-no-body' => 'Спроба даслаць ліст з пустым або надзвычай кароткім зьместам.',
'prefs-displaywatchlist' => 'Налады паказу',
'prefs-diffs' => 'Розьніцы вэрсіяў',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Выглядае слушна',
'email-address-validity-invalid' => 'Неабходны слушны адрас!',
Замест гэтага, яны павінны спасылацца на пэўныя старонкі.<br />
Старонка лічыцца шматзначнай, калі яна ўтрымлівае шаблён назва якога знаходзіцца на старонцы [[MediaWiki:Disambiguationspage]]",
+'pageswithprop' => 'Старонкі з уласьцівасьцямі старонак',
+'pageswithprop-text' => 'На гэтай старонцы адлюстроўваюцца старонкі, якія ўжываюць пэўныя ўласьцівасьці старонак',
+'pageswithprop-prop' => 'Імя ўласьцівасьці:',
+
'doubleredirects' => 'Двайныя перанакіраваньні',
'doubleredirectstext' => 'На гэтай старонцы пададзены сьпіс перанакіраваньняў на іншыя перанакіраваньні. Кожны радок утрымлівае спасылкі на першае і другое перанакіраваньне, а таксама мэтавую старонку другога перанакіраваньня, якая звычайна зьяўляецца «сапраўднай» мэтавай старонкай, куды павіннае спасылацца першае перанакіраваньне.
<del>Закрэсьленыя</del> элемэнты былі выпраўленыя.',
'listgrouprights-addgroup-self-all' => 'Можа дадаць уласны рахунак да ўсіх груп',
'listgrouprights-removegroup-self-all' => 'Можа выдаліць уласны рахунак з ўсіх груп',
-# E-mail user
+# Email user
'mailnologin' => 'Няма адрасу атрымальніка',
'mailnologintext' => 'Вам неабходна [[Special:UserLogin|ўвайсьці ў сыстэму]] і мець пацьверджаны адрас электроннай пошты ў Вашых [[Special:Preferences|наладах]], каб дасылаць лісты іншым удзельнікам.',
'emailuser' => 'Даслаць ліст',
'monthsall' => 'усе',
'limitall' => 'усе',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Пацьвердзіць адрас электроннай пошты',
'confirmemail_noemail' => 'Вы не пазначылі слушны адрас электроннай пошты ў Вашых [[Special:Preferences|наладах удзельніка]].',
'confirmemail_text' => '{{SITENAME}} патрабуе, каб Вы пацьвердзілі Ваш адрас электроннай пошты перад ўжываньнем магчымасьцяў электроннай пошты. Актывізуйце кнопку ніжэй, каб даслаць ліст з пацьверджаньнем на Ваш адрас. Ліст будзе ўтрымліваць спасылку з кодам; загрузіце спасылку ў Вашым браўзэры, каб пацьвердзіць, што Ваш адрас электроннай пошты зьяўляецца слушным.',
'duration-centuries' => '$1 {{PLURAL:$1|стагодзьдзе|стагодзьдзі|стагодзьдзяў}}',
'duration-millennia' => '$1 {{PLURAL:$1|тысячагодзьдзе|тысячагодзьдзі|тысячагодзьдзяў}}',
+# Unknown messages
+'pageswithprop-legend' => 'Старонкі з уласьцівасьцямі старонак',
+'pageswithprop-submit' => 'Паказаць',
);
'loginlanguagelabel' => 'Език: $1',
'suspicious-userlogout' => 'Заявката ви за излизане от системата беше отхвърлена, тъй като изглежда е била изпратена погрешка от браузъра или кеширащото прокси.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Неизвестна грешка в mail() функцията на PHP',
'user-mail-no-addy' => 'Опитвате се да изпратите е-писмо без да е посочен адрес за електронна поща.',
'prefs-displaywatchlist' => 'Видими настройки',
'prefs-diffs' => 'Разлики',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Адресът за е-поща изглежда валиден',
'email-address-validity-invalid' => 'Въведете валиден адрес за е-поща',
'listgrouprights-addgroup-self-all' => 'Може да добавя всички групи към своята сметка',
'listgrouprights-removegroup-self-all' => 'Може да премахва всички групи от собствената сметка',
-# E-mail user
+# Email user
'mailnologin' => 'Няма електронна поща',
'mailnologintext' => 'Необходимо е да [[Special:UserLogin|влезете]] и да посочите валидна електронна поща в [[Special:Preferences|настройките]] си, за да може да пращате писма на други потребители.',
'emailuser' => 'Писмо до потребителя',
'monthsall' => 'всички',
'limitall' => 'всички',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Потвърждаване на адрес за електронна поща',
'confirmemail_noemail' => 'Не сте посочили валиден адрес за електронна поща в [[Special:Preferences|настройки си]].',
'confirmemail_text' => '{{SITENAME}} изисква да потвърдите адреса си за електронна поща преди да използвате възможностите за е-поща. Натиснете долния бутон, за да ви бъде изпратено писмо, съдържащо специално генерирана препратка, чрез която ще можете да потвърдите валидността на адреса си.',
'allpagessubmit' => 'जाईं',
'allpagesprefix' => 'उपसर्ग के साथे पन्ना प्रदर्शन:',
-# E-mail user
+# Email user
'emailuser' => 'ई प्रयोगकर्ता के ईमेल करीं',
# Watchlist
'monthsall' => 'सब',
'limitall' => 'सब',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'इ-मेल पता कन्फर्म करीं',
# Special:SpecialPages
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Rummad |Rummad }}',
'category_header' => 'Niver a bennadoù er rummad "$1"',
-'subcategories' => 'Isrummad',
+'subcategories' => 'Isrummadoù',
'category-media-header' => 'Restroù liesvedia er rummad "$1"',
'category-empty' => "''N'eus na pajenn na media ebet er rummad-mañ evit ar mare.''",
'hidden-categories' => '{{PLURAL:$1|Rummad kuzhet|Rummad kuzhet}}',
'youhavenewmessagesmulti' => "Kemennoù nevez zo ganeoc'h war $1",
'editsection' => 'kemmañ',
'editold' => 'kemmañ',
-'viewsourceold' => 'gwelet ar vammenn',
+'viewsourceold' => 'sellet ouzh tarzh an destenn',
'editlink' => 'kemmañ',
'viewsourcelink' => 'gwelet an tarzh',
'editsectionhint' => 'Kemmañ ar rann : $1',
'loginlanguagelabel' => 'Yezh : $1',
'suspicious-userlogout' => 'Distaolet eo bet ho koulenn digevreañ rak kaset e oa bet gant ur merdeer direizhet pe krubuilhadenn ur proksi, evit doare.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "Fazi dianav en arc'hwel postel () PHP",
'user-mail-no-addy' => "Klasket kas ur postel hep lakaat ur chomlec'h postel.",
'prefs-displaywatchlist' => 'Dibarzhioù diskwel',
'prefs-diffs' => "Diforc'hioù",
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "Reizh eo ar chomlec'h postel war a seblant",
'email-address-validity-invalid' => "Ebarzhit ur chomlec'h postel reizh",
'rclinks' => "Diskouez an $1 kemm diwezhañ c'hoarvezet e-pad an $2 devezh diwezhañ<br />$3",
'diff' => "diforc'h",
'hist' => 'ist',
-'hide' => 'kuzhat',
+'hide' => 'Kuzhat',
'show' => 'Diskouez',
'minoreditletter' => 'D',
'newpageletter' => 'N',
'rc-old-title' => 'bet krouet da gentañ gant an anv "$1"',
# Recent changes linked
-'recentchangeslinked' => 'Heuliañ al liammoù',
-'recentchangeslinked-feed' => 'Heuliañ al liammoù',
-'recentchangeslinked-toolbox' => 'Heuliañ al liammoù',
+'recentchangeslinked' => 'Heuliañ ar pajennoù liammet',
+'recentchangeslinked-feed' => 'Heuliañ ar pajennoù liammet',
+'recentchangeslinked-toolbox' => 'Heuliañ ar pajennoù liammet',
'recentchangeslinked-title' => 'Kemmoù a denn da "$1"',
'recentchangeslinked-noresult' => 'Kemm ebet war ar pajennoù liammet e-pad an amzer spisaet.',
'recentchangeslinked-summary' => "Rollet eo war ar bajenn dibar-mañ ar c'hemmoù diwezhañ bet degaset war ar pajennoù liammet ouzh ur bajenn lakaet (pe ouzh izili ur rummad lakaet).
Padal e tlefent kas war-eeun d'an danvez anezho.<br />
Sellet e vez ouzh ur bajenn evel ouzh ur bajenn disheñvelout ma ra gant ur patrom liammet ouzh [[MediaWiki:Disambiguationspage]]",
+'pageswithprop-prop' => 'Anv ar perzh :',
+
'doubleredirects' => 'Adkasoù doubl',
'doubleredirectstext' => 'Rollañ a ra ar bajenn-mañ ar pajennoù a adkas da bajennoù adkas all.
War bep linenn ez eus liammoù war-du pajennoù an adkas kentañ hag en eil adkas, hag ivez war-du pajenn-dal an eil adkas zo sañset bezañ ar pal "gwirion" a zlefe an adkas kentañ kas di.
'listgrouprights-addgroup-self-all' => 'Gallout a ra ouzhpennañ an holl strolladoù da gont an-unan',
'listgrouprights-removegroup-self-all' => 'Gallout a ra tennañ kuit an holl strolladoù eus kont an-unan.',
-# E-mail user
+# Email user
'mailnologin' => "Chomlec'h ebet",
'mailnologintext' => "Ret eo deoc'h bezañ [[Special:UserLogin|kevreet]]
ha bezañ merket ur chomlec'h postel reizh en ho [[Special:Preferences|penndibaboù]]
'monthsall' => 'an holl',
'limitall' => 'An holl',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Kadarnaat ar chomlec'h postel",
'confirmemail_noemail' => "N'hoc'h eus ket spisaet chomlec'h postel mat ebet en ho [[Special:Preferences|penndibaboù implijer]].",
'confirmemail_text' => "Rankout a ra ar wiki-mañ bezañ gwiriet ho chomlec'h postel a-raok gallout implijout nep arc'hwel postel. Implijit ar bouton a-is evit kas ur postel kadarnaat d'ho chomlec'h. Ul liamm ennañ ur c'hod a vo er postel. Kargit al liamm-se en o merdeer evit kadarnaat ho chomlec'h.",
'logentry-newusers-create' => 'Krouet eo bet ar gont implijer $1',
'logentry-newusers-create2' => 'Gant $1 eo bet krouet ar gont implijer $3',
'logentry-newusers-autocreate' => 'Krouet eo bet kont $1 ent emgefre',
+'logentry-rights-autopromote' => '$1 zo bet anvet ent emgefre a $4 da $5',
'rightsnone' => '(netra)',
# Feedback
'api-error-ok-but-empty' => 'Fazi diabarzh : respont ebet a-berzh ar servijer.',
'api-error-overwrite' => "N'eo ket aotreet frikañ ur restr zo anezhi c'hoazh.",
'api-error-stashfailed' => "Fazi diabarzh : dibosupl d'ar servijer enrollañ ar restr padennek.",
+'api-error-publishfailed' => "Fazi diabarzh : dibosupl d'ar servijer embann ar restr padennek.",
'api-error-timeout' => "N'eo ket bet ar servijer evit respont en termen lakaet.",
'api-error-unclassified' => "C'hoarvezet ez eus ur gudenn dianav.",
'api-error-unknown-code' => 'Fazi dianav : "$1"',
'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
+# Unknown messages
+'pageswithprop-submit' => 'Mont',
);
'titleprotected' => 'Naslov stranice je zaštićen od postavljanja od strane korisnika [[User:$1|$1]].
Iz razloga "\'\'$2\'\'".',
'invalidtitle-knownnamespace' => 'Neispravan naslov s imenskim prostorom "$2" i tekstom "$3"',
+'invalidtitle-unknownnamespace' => 'Neispravan naslov s imenskim prostorom br. $1 i tekstom "$2"',
'exception-nologin' => 'Niste prijavljeni',
'exception-nologin-text' => 'Ova stranica ili aktivnost zahtijeva da budete prijavljeni na ovom wikiju.',
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer je poslan preko pokvarenog preglednika ili keširanog proksija.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Nepoznata greška u PHP funkciji mail()',
'user-mail-no-addy' => 'Pokušaj slanja e-maila bez navedene e-mail adrese.',
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tražiti u povezanim zapisima] ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
'noarticletext-nopermission' => 'Trenutno nema teksta na ovoj stranici.
Možete [[Special:Search/{{PAGENAME}}|tražiti ovaj naslov stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane zapisnike]</span>, ali nemate dozvolu da napravite ovu stranicu.',
+'missing-revision' => 'Uređivanje broj $1 na stranici "{{PAGENAME}}" ne postoji.
+
+Ovo se obično dešava kada pratite zastarjelu vezu na stranice koja je obrisana.
+Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokol brisanja].',
'userpage-userdoesnotexist' => 'Korisnički račun "<nowiki>$1</nowiki>" nije registrovan.
Molimo provjerite da li želite napraviti/izmijeniti ovu stranicu.',
'userpage-userdoesnotexist-view' => 'Korisnički račun "$1" nije registrovan.',
'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)',
+'converter-manual-rule-error' => 'Pronađena je greška u pravilu za ručno pretvaranje jezika',
# "Undo" feature
'undo-success' => 'Izmjena se može vratiti.
'prefs-displaywatchlist' => 'Postavke izgleda',
'prefs-diffs' => 'Razlike',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Izgleda valjano',
'email-address-validity-invalid' => 'Neophodna valjana adresa!',
'uploadnewversion-linktext' => 'Postavite noviju verziju ove datoteke',
'shared-repo-from' => 'iz $1',
'shared-repo' => 'dijeljeni repozitorijum',
+'upload-disallowed-here' => 'Ne možete prepisati ovu datoteku.',
# File reversion
'filerevert' => 'Vrati $1',
'listgrouprights-addgroup-self-all' => 'Može dodati sve grupe na svoj račun',
'listgrouprights-removegroup-self-all' => 'Može ukloniti sve grupe sa svog računa',
-# E-mail user
+# Email user
'mailnologin' => 'Nema adrese za slanje',
'mailnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]]
i imati ispravnu adresu e-pošte u vašim [[Special:Preferences|podešavanjima]]
'monthsall' => 'sve',
'limitall' => 'sve',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
'confirmemail_noemail' => 'Niste unijeli tačnu e-mail adresu u Vaše [[Special:Preferences|korisničke postavke]].',
'confirmemail_text' => 'Ova viki zahtjeva da potvrdite adresu Vaše e-pošte prije nego što koristite mogućnosti e-pošte. Aktivirajte dugme ispod kako bi ste poslali poštu za potvrdu na Vašu adresu. Pošta uključuje link koji sadrži kod; učitajte link u Vaš preglednik da bi ste potvrdili da je adresa Vaše e-pošte validna.',
'loginlanguagelabel' => 'Llengua: $1',
'suspicious-userlogout' => "S'ha denegat la vostra petició per tancar la sessió ja què sembla que va ser enviada per un navegador defectuós o un proxy cau.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Error desconegut en la funció mail() de PHP',
'user-mail-no-addy' => "S'ha intentat enviar un missatge de correu electrònic sense adreça.",
'prefs-displaywatchlist' => 'Opcions de visualització',
'prefs-diffs' => 'Difs',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "L'adreça de correu electrònic sembla vàlida",
'email-address-validity-invalid' => 'Escriviu una adreça vàlida de correu electrònic',
'listgrouprights-addgroup-self-all' => 'Afegir-se a qualsevol grup',
'listgrouprights-removegroup-self-all' => 'Abandona tots els grups',
-# E-mail user
+# Email user
'mailnologin' => "No enviïs l'adreça",
'mailnologintext' => "Heu d'haver [[Special:UserLogin|entrat]]
i tenir una direcció electrònica vàlida en les vostres [[Special:Preferences|preferències]]
'monthsall' => 'tots',
'limitall' => 'tots',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Confirma l'adreça de correu electrònic",
'confirmemail_noemail' => "No heu introduït una direcció vàlida de correu electrònic en les vostres [[Special:Preferences|preferències d'usuari]].",
'confirmemail_text' => "El projecte {{SITENAME}} necessita que valideu la vostra adreça de correu
'newwindow' => '(لە پەڕەیەکی نوێدا دەکرێتەوە)',
'cancel' => 'ھەڵیوەشێنەوە',
'moredotdotdot' => 'زیاتر',
+'morenotlisted' => 'درێژەی پێرست...',
'mypage' => 'پەڕه',
'mytalk' => 'لێدوان',
'anontalk' => 'وتووێژ بۆ ئەم ئایپی یە',
'search-interwiki-default' => '$1 ئەنجام:',
'search-interwiki-more' => '(زیاتر)',
'search-relatedarticle' => 'پەیوەست',
-'mwsuggest-disable' => 'پێشنیارەکانی AJAX نیشان مەدە',
+'mwsuggest-disable' => 'پێشنیارەکانی گەڕان ناچالاک بکە',
'searcheverything-enable' => 'لە ھەموو بۆشاییناوەکان دا بگەڕێ',
'searchrelated' => 'پەیوەست',
'searchall' => 'ھەموو',
'timezoneregion-australia' => 'ئۆسترالیا',
'timezoneregion-europe' => 'ئەورووپا',
'timezoneregion-indian' => 'ئوقیانووسی ھیند',
-'timezoneregion-pacific' => 'ئوقیانووسی پاسیفیک',
+'timezoneregion-pacific' => 'ئۆقیانووسی پاسیفیک',
'allowemail' => 'ڕێگە بدە بە بەکارھێنەرانی تر کە ئیمەیلم بۆ بنێرن',
'prefs-searchoptions' => 'گەڕان',
'prefs-namespaces' => 'بۆشاییناوەکان',
'prefs-displaywatchlist' => 'ھەڵبژاردەکانی نیشاندان',
'prefs-diffs' => 'جیاوازییەکان',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ناونیشانی ئیمەیل دروست وە بەر چاو دێت',
'email-address-validity-invalid' => 'ناونیشانێکی دروستی ئیمەیل بنووسە',
'listgrouprights-addgroup-self-all' => 'زیادکردنی هەموو گرووپەکان بۆ سهر ههژماری خۆ',
'listgrouprights-removegroup-self-all' => 'لابردنی هەموو گرووپەکان له سهر ههژماری خۆ',
-# E-mail user
+# Email user
'mailnologin' => 'ناونیشان بۆ ناردن نییه',
'mailnologintext' => 'دهبێ له [[Special:UserLogin|ژوورهوه]] بیت و ناونیشانێکی بڕواپێکراوی ئیمهیلت له ناو [[Special:Preferences|ههڵبژاردهکان]] دیاری کردبێت تا بتوانی ئیمهیل بنێریت بۆ بهکارهێنهرانی دیکه.',
'emailuser' => 'ئیمەیل بنێرە بۆ ئەم بەکارھێنەرە',
'''ئاگاداربە: '''ھەناردنی ھەموو مێژووی پەڕەکان لەم فۆرمەوە لەبەر ھۆکاری ڕێخستن، داخراوە.",
'export-submit' => 'هەناردن',
'export-addcattext' => 'پەڕەکان زێدەبکە لە پۆلی:',
-'export-addcat' => 'زÛ\8eدÛ\95بکە',
+'export-addcat' => 'زÛ\8cاد بکە',
'export-addnstext' => 'پەڕەکان زێدەبکە لە بۆشاییناوی:',
'export-addns' => 'زێدەبکە',
'export-download' => 'وەک پەڕگە پاشەکەوتی بکە',
'pageinfo-robot-noindex' => 'نەشیاو بۆ پێرستکردن',
'pageinfo-views' => 'ژمارەی بینینەکان',
'pageinfo-watchers' => 'ژمارەی چاودێرانی پەڕە',
+'pageinfo-few-watchers' => 'کەمتر لە $1 {{PLURAL:$1|چاوەدێر}}',
'pageinfo-redirects-name' => 'ڕەوانەکەرەکان بۆ ئەم پەڕەیە',
'pageinfo-subpages-name' => 'ژێرپەڕەکانی ئەم پەڕەیە',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ڕەوانەکەر}}; $3 {{PLURAL:$3|ڕەوانەنەکەر}})',
'monthsall' => 'ھەموو',
'limitall' => 'ھەموو',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'بڕواپێکردنی ناونیشانی ئیمەیل',
'confirmemail_noemail' => 'لە [[Special:Preferences|هەڵبژاردەکانی بەکارهێنەر]] ناونیشانی ئیمەیلی گونجاوت دیاری نەکردووە.',
'confirmemail_text' => '{{SITENAME}} بە پێویستی دەزانێ پێش کەڵک وەرگرتن لە تایبەتمەندیەکانی ئیمەیل، ناونیشانی ئیمەیلی خۆت ڕاچاو بکەیت.
'loginlanguagelabel' => 'Jazyk: $1',
'suspicious-userlogout' => 'Váš požadavek na odhlášení byl odmítnut, neboť to vypadá, že ho poslal rozbitý prohlížeč nebo cachující proxy.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Neznámá chyba v PHP funkci mail()',
'user-mail-no-addy' => 'Pokus o odeslání e-mailu bez e-mailové adresy',
'user-mail-no-body' => 'Pokus o odeslání prázdného nebo nesmyslně krátkého e-mailu.',
'prefs-displaywatchlist' => 'Možnosti zobrazení',
'prefs-diffs' => 'Porovnání verzí',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mailová adresa vypadá platně',
'email-address-validity-invalid' => 'Zadejte platnou e-mailovou adresu',
Asi by místo toho měly odkazovat na konkrétnější stránku.<br />
Stránka je považována za rozcestník, pokud používá některou ze šablon odkazovaných na [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Stránky s vlastností',
+'pageswithprop-text' => 'Tato stránka obsahuje seznam stránek, které používají zadanou vlastnost stránky.',
+'pageswithprop-prop' => 'Název vlastnosti:',
+
'doubleredirects' => 'Dvojitá přesměrování',
'doubleredirectstext' => 'Na této stránce je seznam přesměrování vedoucích na další přesměrování.
Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl druhého přesměrování, který obvykle ukazuje jméno „skutečné“ cílové stránky, na kterou by mělo první přesměrování odkazovat.
'listgrouprights-addgroup-self-all' => 'Přidání svého účtu do libovolné skupiny',
'listgrouprights-removegroup-self-all' => 'Vyřazení svého účtu z libovolné skupiny',
-# E-mail user
+# Email user
'mailnologin' => 'Bez odesílací adresy',
'mailnologintext' => 'Pokud chcete posílat e-maily jiným uživatelům, musíte se [[Special:UserLogin|přihlásit]] a mít platnou e-mailovou adresu ve svém [[Special:Preferences|nastavení]].',
'emailuser' => 'Poslat e-mail',
'monthsall' => 'všechny',
'limitall' => 'vše',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potvrzení e-mailové adresy',
'confirmemail_noemail' => 'Ve svém [[Special:Preferences|uživatelském nastavení]] jste nezadali platnou e-mailovou adresu.',
'confirmemail_text' => 'Tato wiki vyžaduje, abyste před využíváním některých funkcí potvrdili svoji e-mailovou adresu. Kliknutím na tlačítko níže odešlete potvrzovací e-mail na vámi uvedenou adresu. Tento e-mail obsahuje odkaz a potvrzovací kód; zobrazením odkazované stránky ve svém internetovém prohlížeči potvrdíte, že zadaná adresa je platná.',
'duration-centuries' => '$1 {{PLURAL:$1|století}}',
'duration-millennia' => '$1 {{PLURAL:$1|tisíciletí}}',
+# Unknown messages
+'pageswithprop-legend' => 'Stránky s vlastností',
+'pageswithprop-submit' => 'Provést',
);
'loginlanguagelabel' => 'Sprache: $1',
'suspicious-userlogout' => 'Deine Abmeldeanfrage wurde verweigert, da sie vermutlich von einem defekten Browser oder einem Cache-Proxy gesendet wurde.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
'user-mail-no-addy' => 'Versuchte, eine E-Mail ohne Angabe einer E-Mail-Adresse zu versenden.',
'user-mail-no-body' => 'Es wurde versucht, eine E-Mail mit einem leeren oder zu kurzen Textkörper zu versenden.',
'prefs-displaywatchlist' => 'Anzeigeoptionen',
'prefs-diffs' => 'Versionsvergleich',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Diese E-Mail-Adresse scheint gültig zu sein.',
'email-address-validity-invalid' => 'Eine gültige E-Mail-Adresse ist erforderlich.',
'listgrouprights-addgroup-self-all' => 'Kann alle Gruppen zum eigenen Konto hinzufügen',
'listgrouprights-removegroup-self-all' => 'Kann alle Gruppen vom eigenen Konto entfernen',
-# E-mail user
+# Email user
'mailnologin' => 'Fehler beim E-Mail-Versand',
'mailnologintext' => 'Du musst [[Special:UserLogin|angemeldet sein]] und eine bestätigte E-Mail-Adresse in deinen [[Special:Preferences|Einstellungen]] eingetragen haben, um anderen Benutzern E-Mails schicken zu können.',
'emailuser' => 'E-Mail an diesen Benutzer',
'pageinfo-header-restrictions' => 'Seitenschutz',
'pageinfo-header-properties' => 'Seiteneigenschaften',
'pageinfo-display-title' => 'Anzeigetitel',
-'pageinfo-default-sort' => 'Standard-Sortierschlüssel',
+'pageinfo-default-sort' => 'Standardsortierschlüssel',
'pageinfo-length' => 'Seitenlänge (in Bytes)',
'pageinfo-article-id' => 'Seitenkennnummer',
'pageinfo-language' => 'Seiteninhaltssprache',
'monthsall' => 'alle',
'limitall' => 'alle',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-Mail-Adresse bestätigen (Authentifizierung)',
'confirmemail_noemail' => 'Du hast keine gültige E-Mail-Adresse in deinen [[Special:Preferences|persönlichen Einstellungen]] eingetragen.',
'confirmemail_text' => '{{SITENAME}} erfordert, dass du deine E-Mail-Adresse bestätigst (authentifizieren), bevor du die erweiterten E-Mail-Funktionen benutzen kannst. Klicke bitte auf die unten stehende, mit „Bestätigungscode zuschicken“ beschriftete Schaltfläche, damit eine automatisch erstellte E-Mail an die angegebene Adresse geschickt wird. Diese E-Mail enthält eine Web-Adresse mit einem Bestätigungscode. Indem du diese Webseite in deinem Webbrowser öffnest, bestätigst du, dass die angegebene E-Mail-Adresse korrekt und gültig ist.',
'loginlanguagelabel' => 'Zıwan: $1',
'suspicious-userlogout' => 'Waştişê tu ya veciyayişi kebul nibiya cunki ihtimal o ke waştiş yew browser ya zi proksiyê heripiyaye ra ameya.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "PHP's mail() fonksiyoni de xırabin vıcyê.",
'user-mail-no-addy' => 'Bê E-posta kerd ju e-posta bırşo cırê.',
'prefs-displaywatchlist' => 'Weçinayışê mocnayışi',
'prefs-diffs' => 'Ferqi',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'e-posta adresi raştayo',
'email-address-validity-invalid' => 'e-postayo raştay defiye de',
'listgrouprights-addgroup-self-all' => 'şıma eşkeni hesabê xo re heme gruban têare bıkerî',
'listgrouprights-removegroup-self-all' => 'şıma hesabê xo ra eşkeni heme gruban bıveci',
-# E-mail user
+# Email user
'mailnologin' => 'adresa erşawıtışi/ruşnayişi çina.',
'mailnologintext' => 'qey karberanê binan re e-posta erşawıtış de gani şıma [[Special:UserLogin|hesab aker]]ê [[Special:Preferences|pelê tercihani]] de gani yew e-postayo meqbul bıbo.',
'emailuser' => 'Ena karberi rê mesac bırse',
'monthsall' => 'pêro',
'limitall' => 'pêro',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Adresê e-posta tesdiq ker',
'confirmemail_noemail' => 'Yew emaîlê tu raştîyê çin o ke [[Special:Preferences|tercihê karberî]] ayar bike.',
'confirmemail_text' => 'Qey gurweyayışê e-postayê wikiyi gani veror e-postayê şıma araşt bıbo.
'loginlanguagelabel' => 'Rěc: $1',
'suspicious-userlogout' => 'Twójo póžedanje za wótzjawjenim jo se wótpokazało, dokulaž zda se, až jo se pósłało pśez wobškóźony wobglědowak abo pufrowański proksy',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Njeznata zmólka w PHP-funkciji mail()',
'user-mail-no-addy' => 'Jo se wopytało, e-mail bźez e-mailoweje adrese pósłaś',
'user-mail-no-body' => 'Jo se wopytało, e-mail bźez teksta abo z pśekrotkim tekstom pósłaś',
'prefs-displaywatchlist' => 'Zwobraznjowańske opcije',
'prefs-diffs' => 'Rozdźěle',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Zda se, až e-mailowa adresa jo płaśiwa',
'email-address-validity-invalid' => 'Zapódaj płaśiwu e-mailowu adresu',
'listgrouprights-addgroup-self-all' => 'Móžo wše kupki swójskemu kontoju pśidaś',
'listgrouprights-removegroup-self-all' => 'Móžo wše kupki ze swójskego konta wótpóraś',
-# E-mail user
+# Email user
'mailnologin' => 'Njejo móžno e-mailku pósłaś.',
'mailnologintext' => 'Dejš [[Special:UserLogin|pśizjawjony]] byś a płaśiwu e-mailowu adresu w swójich [[Special:Preferences|nastajenjach]] měś, aby drugim wužywarjam e-mail pósłał.',
'emailuser' => 'Toś tomu wužywarjeju e-mail pósłaś',
'monthsall' => 'wšykne',
'limitall' => 'wšykne',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-mailowu adresu wobkšuśiś.',
'confirmemail_noemail' => 'W swójich [[Special:Preferences|nastajenjach]] njejsy płaśecu e-mailowu adresu zapódał.',
'confirmemail_text' => '{{SITENAME}} pomina, až wobkšuśijoš swóju e-mailowu adresu, nježlic až móžoš e-mailowe funkcije wužywaś. Tłocyš-lic na tłocatko, dostanjoš e-mailku, w kótarejž jo wótkaz z wobkšuśenskim gronidłom. Tłocenje na wótkaz wobkšuśijo, až twója e-mailowa adresa jo korektna.',
'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
'showingresultsheader' => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
-'nonefound' => "'''Note''': Only some namespaces are searched by default.
+'nonefound' => "'''Note:''' Only some namespaces are searched by default.
Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc), or use the desired namespace as prefix.",
'search-nonefound' => 'There were no results matching the query.',
'powersearch' => 'Advanced search',
'exif-iimcategory-evn' => 'Environment',
'exif-iimcategory-hth' => 'Health',
'exif-iimcategory-hum' => 'Human interest',
-'exif-iimcategory-lab' => 'Labour',
+'exif-iimcategory-lab' => 'Labor',
'exif-iimcategory-lif' => 'Lifestyle and leisure',
'exif-iimcategory-pol' => 'Politics',
'exif-iimcategory-rel' => 'Religion and belief',
'loginlanguagelabel' => 'Lingvo: $1',
'suspicious-userlogout' => 'Via peto por elsaluti estis malpermesita ĉar verŝajne ĝi estis sendita de trompita retumilo aŭ kaŝiganta proksima servilo.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Nekonata eraro en la funkcio mail() de PHP',
'user-mail-no-addy' => 'Provis sendi retpoŝton sen retpoŝtadreso.',
'prefs-displaywatchlist' => 'Montraj opcioj',
'prefs-diffs' => 'Diferencoj',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Ŝajnas ke la retpoŝtadreso estas valida',
'email-address-validity-invalid' => 'Tajpu validan retpoŝtadreson',
'hist' => 'historio',
'hide' => 'Kaŝi',
'show' => 'Montri',
-'minoreditletter' => 'E',
+'minoreditletter' => 'e',
'newpageletter' => 'N',
'boteditletter' => 'R',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|priatentanta uzanto|priatentantaj uzantoj}}]',
'listgrouprights-addgroup-self-all' => 'Povas aldoni ĉiujn grupojn al propra konto',
'listgrouprights-removegroup-self-all' => 'Povas forigi ĉiujn grupojn de propra konto',
-# E-mail user
+# Email user
'mailnologin' => 'Neniu alsendota adreso',
'mailnologintext' => 'Vi nepre estu [[Special:UserLogin|salutanta]] kaj havanta validan retpoŝtadreson en viaj [[Special:Preferences|preferoj]] por retpoŝti al aliaj uzantoj.',
'emailuser' => 'Retpoŝti ĉi tiun uzanton',
'monthsall' => 'ĉiuj',
'limitall' => 'ĉiuj',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Konfirmi retadreson',
'confirmemail_noemail' => 'Vi ne havas validan retpoŝtan adreson notitan en viaj [[Special:Preferences|Preferoj]].',
'confirmemail_text' => 'Ĉi tiu vikio postulas ke vi validigu vian retadreson antaŭ ol uzadi la retmesaĝpreferojn. Bonvolu alklaki la suban butonon por sendi konfirmesaĝon al via adreso. La mesaĝo entenos ligilon kun kodo; bonvolu alŝuti la ligilon en vian foliumilon por konfirmi ke via retadreso validas.',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Página',
-'nstab-user' => 'Usuario',
+'nstab-user' => 'Página de usuari{{gender:{{#titleparts:{{BASEPAGENAME}}|1}}|o|a|o}}',
'nstab-media' => 'Media',
'nstab-special' => 'Página especial',
'nstab-project' => 'Página del proyecto',
'loginlanguagelabel' => 'Idioma: $1',
'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
'user-mail-no-addy' => 'Se ha intentado enviar correo electrónico sin una dirección de correo electrónico.',
'user-mail-no-body' => 'Trató de enviar un correo electrónico con un cuerpo vacío o excesivamente corto.',
'prefs-displaywatchlist' => 'Opciones de visualización',
'prefs-diffs' => 'Diferencias',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'La dirección de correo electrónico parece ser válida',
'email-address-validity-invalid' => 'Introduce una dirección de correo válida',
'listgrouprights-addgroup-self-all' => 'Agregar todos los grupos a tu propia cuenta',
'listgrouprights-removegroup-self-all' => 'Eliminar todos los grupos de tu propia cuenta',
-# E-mail user
+# Email user
'mailnologin' => 'Ninguna dirección de envio',
'mailnologintext' => 'Debes [[Special:UserLogin|iniciar sesión]] y tener una dirección electrónica válida en tus [[Special:Preferences|preferencias]] para enviar un correo electrónico a otros usuarios.',
'emailuser' => 'Enviar un correo electrónico a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}',
'monthsall' => 'todos',
'limitall' => 'Todos',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar dirección de correo electrónico',
'confirmemail_noemail' => 'No tienes una dirección de correo electrónico válida en tus [[Special:Preferences|preferencias de usuario]].',
'confirmemail_text' => '{{SITENAME}} requiere la validación de tu dirección de correo antes de usarlo. Pulsa el botón de abajo para enviar la confirmación.
'loginlanguagelabel' => 'Keel: $1',
'suspicious-userlogout' => 'Sinu väljalogimiskatse nurjus, sest see näis olevat katkise veebilehitseja või puhverserveri saadetud.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Tundmatu tõrge PHP funktsioonis mail().',
'user-mail-no-addy' => 'Püüdsid saata e-kirja ilma meiliaadressita.',
'prefs-displaywatchlist' => 'Kuvasätted',
'prefs-diffs' => 'Erinevused',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Sobiv e-posti aadress',
'email-address-validity-invalid' => 'Sisesta sobiv e-posti aadress.',
'listgrouprights-addgroup-self-all' => 'Oma konto kõigisse rühmadesse lisada',
'listgrouprights-removegroup-self-all' => 'Eemaldada ennast kõigist rühmadest',
-# E-mail user
+# Email user
'mailnologin' => 'Saatja aadress puudub',
'mailnologintext' => 'Pead olema [[Special:UserLogin|sisse logitud]] ja sul peab [[Special:Preferences|eelistustes]] olema kehtiv e-posti aadress, et saata teistele kasutajatele e-kirju.',
'emailuser' => 'Saada sellele kasutajale e-kiri',
'monthsall' => 'kõik',
'limitall' => 'iga',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-posti aadressi kinnitamine',
'confirmemail_noemail' => 'Sul pole [[Special:Preferences|eelistuste leheküljel]] e-posti aadressi määranud.',
'confirmemail_text' => 'Enne kui saad e-postiga seotud teenuseid kasutada, pead oma e-posti aadressi õigsust kinnitama. Allpool olevat nuppu klõpsates saadetakse sulle e-posti teel kinnituskood. Aadressi kinnitamiseks klõpsa e-kirjas olevat linki.',
'loginlanguagelabel' => 'Hizkuntza: $1',
'suspicious-userlogout' => 'Saioa amaitzeko egin duzun eskaria ukatu da. Izan ere, ematen du eskari hori gaizki dabilen nabigatzaile edo cache proxy batek bidali duela.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'PHPren mail() funtzioan arazo ezezagun bat egon da.',
# Change password dialog
'prefs-displaywatchlist' => 'Aukerak erakutsi',
'prefs-diffs' => 'Ezberdintasunak',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-posta helbidea zuzena dela dirudi',
'email-address-validity-invalid' => 'E-posta helbide zuzena idatzi',
'listusers-editsonly' => 'Aldaketak egin dituzten erabiltzaileak soilik erakutsi',
'listusers-creationsort' => 'Sorrera dataren arabera sailkatu',
'usereditcount' => '{{PLURAL:$1|aldaketa $1|$1 aldaketa}}',
-'usercreated' => '$2-(e)tan $1-(a)n {{GENDER:$3|sortua}},',
+'usercreated' => '{{GENDER:$3|Sortze data}}: $1, $2',
'newpages' => 'Orrialde berriak',
'newpages-username' => 'Erabiltzaile izena:',
'ancientpages' => 'Orrialde zaharrenak',
'linksearch-error' => 'Komodinak izenaren hasieran bakarrik agertu beharko lirateke.',
# Special:ListUsers
-'listusersfrom' => 'Hemendik aurrerako erabiltzaileak bistaratu:',
+'listusersfrom' => 'Honela hasten diren erabiltzaileak bistaratu:',
'listusers-submit' => 'Erakutsi',
'listusers-noresult' => 'Ez da erabiltzailerik aurkitu.',
'listusers-blocked' => '(blokeatua)',
'listgrouprights-addgroup-self-all' => 'Talde guztiak norbere kontura gehitu',
'listgrouprights-removegroup-self-all' => 'Talde guztiak norbere kontutik ezabatu',
-# E-mail user
+# Email user
'mailnologin' => 'Bidalketa helbiderik ez',
'mailnologintext' => 'Beste erabiltzaileei e-posta mezuak bidaltzeko [[Special:UserLogin|saioa hasi]] eta baliozko e-posta helbidea behar duzu izan zure [[Special:Preferences|hobespenetan]].',
'emailuser' => 'Erabiltzaile honi e-posta bidali',
'monthsall' => 'guztiak',
'limitall' => 'guztiak',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-posta helbidea egiaztatu',
'confirmemail_noemail' => 'Ez daukazu e-posta helbiderik zehaztuta zure [[Special:Preferences|hobespenetan]].',
'confirmemail_text' => 'Wiki honetan zure e-posta helbidea egiaztatzea beharrezkoa da e-postarekin zerikusia duten ezaugarriak erabili aurretik. Beheko botoia jo zure helbidera egiaztapen mezu bat bidaltzeko. Mezuan kode bat duen lotura bat joango da atxikita; lotura hori zure nabigatzailean ireki ezazu e-posta helbidea egiaztatzeko.',
'vector-action-protect' => 'محافظت',
'vector-action-undelete' => 'احیا',
'vector-action-unprotect' => 'تغییر سطح حفاظت',
-'vector-simplesearch-preference' => 'فعال کردن جستجوی ساده (فقط در پوستهٔ برداری)',
+'vector-simplesearch-preference' => 'فعال کردن نوار جستجوی سادهشده (فقط در پوستهٔ برداری)',
'vector-view-create' => 'ایجاد',
'vector-view-edit' => 'ویرایش',
'vector-view-history' => 'نمایش تاریخچه',
'loginlanguagelabel' => 'زبان: $1',
'suspicious-userlogout' => 'درخواست شما برای خروج از سامانه رد شد زیرا به نظر میرسد که این درخواست توسط یک مرورگر معیوب یا پروکسی میانگیر ارسال شده باشد.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'خطای ناشناخته در تابع mail() پیاچپی',
'user-mail-no-addy' => 'تلاش برای ارسال نامه بدون یک آدرس رایانامه.',
'user-mail-no-body' => 'تلاش برای فرستادن پستالکترونیک بیدلیل کوتاه یا خالی',
'prefs-displaywatchlist' => 'گزینههای نمایش',
'prefs-diffs' => 'تفاوتها',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'نشانی رایانامه معتبر به نظر می رسد',
'email-address-validity-invalid' => 'نشانی رایانامهٔ معتبر وارد کنید',
'listgrouprights-addgroup-self-all' => 'میتواند حساب خود را به تمام گروهها اضافه کند',
'listgrouprights-removegroup-self-all' => 'میتواند حساب خود را از تمام گروهها حذف کند',
-# E-mail user
+# Email user
'mailnologin' => 'نشانیای از فرستنده موجود نیست',
'mailnologintext' => 'برای فرستادن رایانامه به کاربران دیگر باید [[Special:UserLogin|به سامانه وارد شوید]] و نشانی رایانامهٔ معتبری در [[Special:Preferences|ترجیحات]] خود داشته باشید.',
'emailuser' => 'فرستادن نامه به این کاربر',
شما میتوانید سطح محافظت این صفحه را تغییر بدهید اما این کار تاثیری بر محافظت آبشاری صفحه نخواهد گذاشت.',
'protect-default' => 'همهٔ کاربرها',
'protect-fallback' => 'فقط به کاربرهایی که دسترسی «$1» دارند، اجازه داده میشود',
-'protect-level-autoconfirmed' => 'فقط به کاربرهای تائیدشده اجازه بده',
+'protect-level-autoconfirmed' => 'اجازه فقط برای به کاربرهای تائیدشده',
'protect-level-sysop' => 'فقط مدیران',
'protect-summary-cascade' => 'آبشاری',
'protect-expiring' => 'زمان سرآمدن $1 (UTC)',
'monthsall' => 'همهٔ ماهها',
'limitall' => 'همه',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'تأیید نشانی رایانامه',
'confirmemail_noemail' => 'شما در صفحهٔ [[Special:Preferences|ترجیحات کاربری]] خود نشانی رایانامه معتبری وارد نکردهاید.',
'confirmemail_text' => 'این ویکی شما را ملزم به تأیید اعتبار رایانامه خود، پیش از استفاده از خدمات رایانامه در اینجا میکند. دکمهٔ زیرین را فعال کنید تا نامهٔ تأییدی به نشانی رایانامهٔ شما فرستاده شود. این نامه دربردارندهٔ پیوندی خواهد بود که حاوی یک کد است. پیوند را در مرورگر خود بار کنید (اجرا) کنید تا اعتبار نشانی رایانامهٔ شما تایید شود.',
'loginlanguagelabel' => 'Kieli: $1',
'suspicious-userlogout' => 'Pyyntösi kirjautua ulos evättiin, koska se näytti rikkinäisen selaimen tai välimuistipalvelimen lähettämältä.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Tuntematon virhe PHP:n mail()-funktiossa',
'user-mail-no-addy' => 'Yritit lähettää sähköpostia ilman sähköpostiosoitetta.',
'user-mail-no-body' => 'Sähköpostin sisältö ei ole tarpeeksi pitkä.',
'prefs-displaywatchlist' => 'Näyttöasetukset',
'prefs-diffs' => 'Erot',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Sähköpostiosoite vaikuttaa kelvolliselta',
'email-address-validity-invalid' => 'Virheellinen sähköpostiosoite',
'listgrouprights-addgroup-self-all' => 'Voi lisätä itsensä kaikkiin ryhmiin',
'listgrouprights-removegroup-self-all' => 'Voi poistaa itsensä kaikista ryhmistä',
-# E-mail user
+# Email user
'mailnologin' => 'Lähettäjän osoite puuttuu',
'mailnologintext' => 'Sinun pitää olla [[Special:UserLogin|kirjautuneena sisään]] ja [[Special:Preferences|asetuksissasi]] pitää olla toimiva ja <strong>varmennettu</strong> sähköpostiosoite, jotta voit lähettää sähköpostia muille käyttäjille.',
'emailuser' => 'Lähetä sähköpostia tälle käyttäjälle',
'monthsall' => 'kaikki',
'limitall' => 'kaikki',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Varmenna sähköpostiosoite',
'confirmemail_noemail' => 'Sinulla ei ole kelvollista sähköpostiosoitetta [[Special:Preferences|asetuksissasi]].',
'confirmemail_text' => 'Tämä wiki vaatii sähköpostiosoitteen varmentamisen, ennen kuin voit käyttää sähköpostitoimintoja. Lähetä alla olevasta painikkeesta varmennusviesti osoitteeseesi. Viesti sisältää linkin, jonka avaamalla varmennat sähköpostiosoitteesi.',
'duration-centuries' => '$1 {{PLURAL:$1|vuosisata|vuosisataa}}',
'duration-millennia' => '$1 {{PLURAL:$1|vuosituhat|vuosituhatta}}',
+# Unknown messages
+'pageswithprop-submit' => 'Siirry',
);
* @author McDutchie
* @author Meithal
* @author Moyg
+ * @author Nicolas NALLET
* @author Nicolas Raoul
* @author Nnemo
* @author Od1n
'loginlanguagelabel' => 'Langue : $1',
'suspicious-userlogout' => "Votre demande de déconnexion a été refusée car il semble qu'elle a été envoyée par un navigateur cassé ou la mise en cache d'un proxy.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Erreur inconnue dans la fonction mail() de PHP.',
'user-mail-no-addy' => "Tenté d'envoyer un courriel sans adresse de courriel",
'user-mail-no-body' => "Essai d'envoi d'un courriel avec un corps vide ou déraisonnablement court.",
'prefs-edit-boxsize' => 'Taille de la fenêtre de modification.',
'rows' => 'Rangées :',
'columns' => 'Colonnes :',
-'searchresultshead' => 'Recherches',
+'searchresultshead' => 'Filtrer avec cette valeur',
'resultsperpage' => 'Nombre de réponses par page :',
'stub-threshold' => 'Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) :',
'stub-threshold-disabled' => 'Désactivé',
'prefs-displaywatchlist' => "Options d'affichage",
'prefs-diffs' => 'Différences',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Semble valide',
'email-address-validity-invalid' => 'Une adresse valide est nécessaire !',
'listgrouprights-addgroup-self-all' => "Peut s'ajouter tous les groupes à son propre compte",
'listgrouprights-removegroup-self-all' => 'Peut se retirer tous les groupes de son propre compte',
-# E-mail user
+# Email user
'mailnologin' => "Pas d'adresse d'expéditeur",
'mailnologintext' => "Vous devez être [[Special:UserLogin|identifié]] et avoir indiqué une adresse électronique valide dans vos [[Special:Preferences|préférences]] pour pouvoir envoyer des courriels à d'autres utilisateurs.",
'emailuser' => 'Lui envoyer un courriel',
'monthsall' => 'tous',
'limitall' => 'tous',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Confirmer l'adresse de courriel",
'confirmemail_noemail' => "Vous n'avez pas défini une adresse de courriel valide dans vos [[Special:Preferences|préférences]].",
'confirmemail_text' => 'Ce wiki nécessite la vérification de votre adresse de courriel avant de pouvoir utiliser toute fonction de messagerie.
'tog-hidepatrolled' => 'Cachiér los changements gouardâs dedens los dèrriérs changements',
'tog-newpageshidepatrolled' => 'Cachiér les pâges gouardâyes entre-mié la lista de les pâges novèles',
'tog-extendwatchlist' => 'Ètendre la lista de siuvu por montrar tôs los changements et pas ren que los ples novéls',
-'tog-usenewrc' => 'Rassemblar los changements per pâge dedens los dèrriérs changements et la lista de siuvu (il at fôta de JavaScript)',
+'tog-usenewrc' => 'Rassemblar los changements per pâge dedens los dèrriérs changements et la lista de siuvu (at fôta de JavaScript)',
'tog-numberheadings' => 'Numerotar ôtomaticament los titros de sèccion',
-'tog-showtoolbar' => 'Montrar la bârra d’outils de changement (il at fôta de JavaScript)',
-'tog-editondblclick' => 'Changiér des pâges sur doblo-clic (il at fôta de JavaScript)',
+'tog-showtoolbar' => 'Montrar la bârra d’outils de changement (at fôta de JavaScript)',
+'tog-editondblclick' => 'Changiér des pâges sur doblo-clic (at fôta de JavaScript)',
'tog-editsection' => 'Activar lo changement de sèccions avouéc los lims « [changiér] »',
-'tog-editsectiononrightclick' => 'Activar lo changement de sèccions per clic drêt sur lors titros (il at fôta de JavaScript)',
-'tog-showtoc' => 'Montrar la trâbla de les matiéres (por les pâges qu’ont més de 3 sèccions)',
+'tog-editsectiononrightclick' => 'Activar lo changement de sèccions per clic drêt sur lors titros (at fôta de JavaScript)',
+'tog-showtoc' => 'Montrar la trâbla de les matiéres (por les pâges qu’ant més de 3 sèccions)',
'tog-rememberpassword' => 'Sè rapelar de mon contresegno sur ceti navigator (por lo més $1 jorn{{PLURAL:$1||s}})',
'tog-watchcreations' => 'Apondre les pâges que fé et pués los fichiérs que tèlèchârjo a ma lista de siuvu',
'tog-watchdefault' => 'Apondre les pâges et los fichiérs que chanjo a ma lista de siuvu',
'tog-shownumberswatching' => 'Montrar lo nombro d’utilisators que siuvont na pâge',
'tog-oldsig' => 'Signatura ègzistenta :',
'tog-fancysig' => 'Trètar la signatura coment de vouiquitèxto (sen lim ôtomatico)',
-'tog-externaleditor' => 'Empleyér per dèfôt un changior de tèxto de defôr (solament por los utilisators avanciês, il at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
-'tog-externaldiff' => 'Empleyér per dèfôt un comparator de defôr (solament por los utilisators avanciês, il at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
+'tog-externaleditor' => 'Empleyér per dèfôt un changior de tèxto de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
+'tog-externaldiff' => 'Empleyér per dèfôt un comparator de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
'tog-showjumplinks' => 'Activar los lims d’accèssibilitât « {{int:jumpto}} »',
-'tog-uselivepreview' => 'Empleyér l’apèrçu rapido (il at fôta de JavaScript) (èxpèrimentâl)',
+'tog-uselivepreview' => 'Empleyér l’apèrçu rapido (at fôta de JavaScript) (èxpèrimentâl)',
'tog-forceeditsummary' => 'Mè balyér na semonce quand j’é pas buchiê de rèsumâ de changement',
'tog-watchlisthideown' => 'Cachiér los mins changements dedens la lista de siuvu',
'tog-watchlisthidebots' => 'Cachiér los changements fêts per des robots dedens la lista de siuvu',
# General errors
'error' => 'Fôta',
-'databaseerror' => 'Fôta de la bâsa de donâs',
-'dberrortext' => 'Na fôta de sintaxa de la demanda dens la bâsa de donâs est arrevâye.
+'databaseerror' => 'Fôta de la bâsa de balyês',
+'dberrortext' => 'Na fôta de sintaxa de la demanda dens la bâsa de balyês est arrevâye.
Cen pôt endicar na cofierie dedens la programeria.
-La dèrriére demanda trètâye per la bâsa de donâs ére :
+La dèrriére demanda trètâye per la bâsa de balyês ére :
<blockquote><code>$1</code></blockquote>
dês la fonccion « <code>$2</code> ».
-La bâsa de donâs at retornâ la fôta « <samp>$3 : $4</samp> ».',
-'dberrortextcl' => 'Na fôta de sintaxa de la demanda dens la bâsa de donâs est arrevâye.
-La dèrriére demanda trètâye per la bâsa de donâs ére :
+La bâsa de balyês at retornâ la fôta « <samp>$3 : $4</samp> ».',
+'dberrortextcl' => 'Na fôta de sintaxa de la demanda dens la bâsa de balyês est arrevâye.
+La dèrriére demanda trètâye per la bâsa de balyês ére :
« $1 »
dês la fonccion « $2 ».
-La bâsa de donâs at retornâ la fôta « $3 : $4 ».',
+La bâsa de balyês at retornâ la fôta « $3 : $4 ».',
'laggedslavemode' => "'''Atencion :''' cela pâge pôt pas contegnir tôs los dèrriérs changements fêts.",
-'readonly' => 'Bâsa de donâs vèrrolyêe',
-'enterlockreason' => 'Buchiéd na rêson du vèrroly et pués n’èstimacion de la sina durâ',
-'readonlytext' => 'Ora la bâsa de donâs est vèrrolyêe por les entrâs novèles et los ôtros changements, de sûr por pèrmetre la sina mantegnence, dês cen tot tornerat en ôrdre.
+'readonly' => 'Bâsa de balyês vèrrolyêe',
+'enterlockreason' => 'Buchiéd na rêson du vèrroly et pués un’èstimacion de la sina durâ',
+'readonlytext' => 'Ora la bâsa de balyês est vèrrolyêe por les entrâs novèles et los ôtros changements, de sûr por pèrmetre la sina mantegnence, dês cen tot tornerat en ôrdre.
L’administrator que l’at vèrrolyê at balyê cet’èxplicacion : $1',
-'missing-article' => 'La bâsa de donâs at pas trovâ lo tèxto d’una pâge qu’el arêt diu trovar, apelâye « $1 » $2.
+'missing-article' => 'La bâsa de balyês at pas trovâ lo tèxto d’una pâge qu’el arêt diu trovar, apelâye « $1 » $2.
En g·ènèral cen arreve en siuvent un lim d’una dif d’un historico dèpassâ(ye) de vers na pâge qu’est étâye suprimâye.
Se vos plét, signalâd-la a un [[Special:ListUsers/sysop|administrator]] sen oubliar de lui endicar l’URL du lim.',
'missingarticle-rev' => '(numerô de vèrsion : $1)',
'missingarticle-diff' => '(dif : $1, $2)',
-'readonly_lag' => 'La bâsa de donâs est étâye vèrrolyêe ôtomaticament pendent que los sèrviors secondèros ratrapont lor retârd sur lo sèrvior principâl.',
+'readonly_lag' => 'La bâsa de balyês est étâye vèrrolyêe ôtomaticament pendent que los sèrviors secondèros ratrapont lor retârd sur lo sèrvior principâl.',
'internalerror' => 'Fôta de dedens',
'internalerror_info' => 'Fôta de dedens : $1',
'fileappenderrorread' => 'Y at pas moyen de liére « $1 » pendent l’aponsa.',
'badtitle' => 'Crouyo titro',
'badtitletext' => 'Lo titro de la pâge demandâye est pas justo, vouedo ou ben o est un titro entèrlengoua ou entèrvouiqui mâl-liyê.
Contint de sûr yon ou ben un mouél de caractèros que pôvont pas étre empleyês dedens los titros.',
-'perfcached' => 'Cetes donâs sont en cacho et pôvont pas étre a jorn. Por lo més {{PLURAL:$1|un rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
-'perfcachedts' => 'Cetes donâs sont en cacho et sont étâyes betâyes a jorn por lo dèrriér côp a $1. Por lo més {{PLURAL:$1|un rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
-'querypage-no-updates' => 'Ora les mises a jorn por ceta pâge sont dèsactivâyes.
-Les donâs ique seront pas betâyes a jorn.',
+'perfcached' => 'Cetes balyês sont en cacho et pôvont pas étre a jorn. Por lo més {{PLURAL:$1|un rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
+'perfcachedts' => 'Cetes balyês sont en cacho et sont étâyes betâyes a jorn por lo dèrriér côp a $1. Por lo més {{PLURAL:$1|un rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
+'querypage-no-updates' => 'Ora les mêses a jorn por ceta pâge sont dèsactivâyes.
+Les balyês ique seront pas betâyes a jorn.',
'wrong_wfQuery_params' => 'Paramètros fôx dessus wfQuery()<br />
Fonccion : $1<br />
Demanda : $2',
'protectedpagetext' => 'Ceta pâge est étâye protègiêe por empachiér son changement ou ben d’ôtres accions.',
'viewsourcetext' => 'Vos pouede vêre et copiyér lo tèxto sôrsa de ceta pâge :',
'viewyourtext' => "Vos pouede vêre et copiyér lo tèxto sôrsa de '''voutros changements''' a ceta pâge :",
-'protectedinterface' => 'Cela pâge-que balye de tèxto d’entèrface por la programeria sur ceti vouiqui, et el est vêr protègiêe por èvitar los abus.
+'protectedinterface' => 'Cela pâge-que balye de tèxto d’entèrface por la programeria sur ceti vouiqui et est vêr protègiêe por èvitar los abus.
Por apondre ou ben changiér des traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.',
'editinginterface' => "'''Atencion :''' vos éte aprés changiér na pâge empleyêe por fâre lo tèxto d’entèrface de la programeria.
Los changements sè cognetront sur l’aparence de l’entèrface utilisator por los ôtros utilisators de ceti vouiqui.
'securelogin-stick-https' => 'Réstar branchiê en HTTPS aprés lo branchement',
'yourdomainname' => 'Voutron domêno :',
'password-change-forbidden' => 'Vos pouede pas changiér los contresegnos sur ceti vouiqui.',
-'externaldberror' => 'Ou ben na fôta est arrevâye avouéc la bâsa de donâs d’ôtentificacion de defôr ou ben vos éte pas ôtorisâ{{GENDER:||ye|(ye)}} a betar a jorn voutron compto de defôr.',
+'externaldberror' => 'Ou ben na fôta est arrevâye avouéc la bâsa de balyês d’ôtentificacion de defôr ou ben vos éte pas ôtorisâ{{GENDER:||ye|(ye)}} a betar a jorn voutron compto de defôr.',
'login' => 'Branchement',
'nav-login-createaccount' => 'Sè branchiér / fâre un compto',
'loginprompt' => "Vos dête activar los tèmouens (''cookies'') por vos branchiér a {{SITENAME}}.",
'passwordremindertitle' => 'Contresegno temporèro novél por {{SITENAME}}',
'passwordremindertext' => 'Yon (probâblament vos, dês l’adrèce IP $1) at demandâ un contresegno
novél por {{SITENAME}} ($4). Un contresegno temporèro est étâ fêt por
-l’utilisator « $2 » et il est « $3 ». S’o ére voutra entencion, vos vos devréd
+l’utilisator « $2 » et est « $3 ». S’o ére voutron entencion, vos vos devréd
branchiér et pués chouèsir un contresegno novél.
Voutron contresegno temporèro èxpirerat dens {{PLURAL:$5|un jorn|$5 jorns}}.
de voutron contresegno et que vos souhètâd pas més lo changiér, vos
pouede ignorar ceti mèssâjo et continuar a empleyér voutron viely contresegno.',
'noemail' => 'Nion’adrèce èlèctronica est étâye encartâye por l’utilisator « $1 ».',
-'noemailcreate' => 'Vos dête balyér n’adrèce èlèctronica justa',
+'noemailcreate' => 'Vos dête balyér un’adrèce èlèctronica justa',
'passwordsent' => 'Un contresegno novél est étâ mandâ a l’adrèce èlèctronica de l’utilisator « $1 ».
Se vos plét, tornâd-vos branchiér aprés l’avêr reçu.',
'blocked-mailpassword' => 'Voutron adrèce IP est blocâye en ècritura, la fonccion de sovegnence du contresegno est vêr dèsactivâye por èvitar los abus.',
'throttled-mailpassword' => 'Un mèssâjo de sovegnence de voutron contresegno est ja étâ mandâ pendent {{PLURAL:$1|l’hora passâye|les $1 hores passâyes}}.
Por èvitar los abus, ren que yon serat mandâ per {{PLURAL:$1|hora|entèrvalo de $1 hores}}.',
'mailerror' => 'Fôta pendent l’èxpèdicion du mèssâjo : $1',
-'acct_creation_throttle_hit' => 'Des visitors de cél vouiqui-que qu’emplèyont voutron adrèce IP ont fêt $1 compto{{PLURAL:$1||s}} pendent lo jorn passâ, cen qu’est lo més ôtorisâ dens ceti temps.
+'acct_creation_throttle_hit' => 'Des visitors de cél vouiqui-que qu’emplèyont voutron adrèce IP ant fêt $1 compto{{PLURAL:$1||s}} pendent lo jorn passâ, cen qu’est lo més ôtorisâ dens ceti temps.
Du côp los visitors qu’emplèyont cel’adrèce IP pôvont fâre gins de compto por lo moment.',
'emailauthenticated' => 'Voutron adrèce èlèctronica est étâye ôtentifiâye lo $2 a $3.',
'emailnotauthenticated' => 'Voutron adrèce èlèctronica est p’oncor ôtentifiâye.
Nion mèssâjo serat mandâ por châcuna de cetes fonccionalitâts.',
-'noemailprefs' => 'Spècifiâd n’adrèce èlèctronica dens voutres prèferences por empleyér cetes fonccionalitâts.',
+'noemailprefs' => 'Spècifiâd un’adrèce èlèctronica dens voutres prèferences por empleyér cetes fonccionalitâts.',
'emailconfirmlink' => 'Confirmâd voutron adrèce èlèctronica',
'invalidemailaddress' => 'Cet’adrèce èlèctronica pôt pas étre accèptâye, semble avêr un format pas justo.
-Se vos plét, buchiéd n’adrèce bien formatâye ou ben lèssiéd cél champ vouedo.',
+Se vos plét, buchiéd un’adrèce bien formatâye ou ben lèssiéd cél champ vouedo.',
'cannotchangeemail' => 'Les adrèces èlèctroniques des comptos pôvont pas étre changiêes sur ceti vouiqui.',
'emaildisabled' => 'Ceti seto pôt pas mandar des mèssâjos.',
'accountcreated' => 'Compto fêt',
Se vos plét, atende devant que tornar èprovar.',
'login-abort-generic' => 'Voutra tentativa de branchement at pas reussi - Anulâye',
'loginlanguagelabel' => 'Lengoua : $1',
-'suspicious-userlogout' => 'Voutra demanda de dèbranchement est étâye refusâye, semble qu’el est étâye mandâye per un navigator câsso ou ben la misa en cacho d’un proxi.',
+'suspicious-userlogout' => 'Voutra demanda de dèbranchement est étâye refusâye, semble qu’el est étâye mandâye per un navigator câsso ou ben la mêsa en cacho d’un proxi.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Fôta encognua dens la fonccion mail() de PHP.',
-'user-mail-no-addy' => 'Il at èprovâ de mandar un mèssâjo sen adrèce èlèctronica.',
-'user-mail-no-body' => 'Il at èprovâ de mandar un mèssâjo avouéc un côrp vouedo ou ben dèrêsonâblament côrt.',
+'user-mail-no-addy' => 'Èprôva de mandar un mèssâjo sen adrèce èlèctronica.',
+'user-mail-no-body' => 'Èprôva de mandar un mèssâjo avouéc un côrp vouedo ou ben dèrêsonâblament côrt.',
# Change password dialog
'resetpass' => 'Changiér lo contresegno',
'resetpass-temp-password' => 'Contresegno temporèro :',
# Special:PasswordReset
-'passwordreset' => 'Remisa a zérô du contresegno',
+'passwordreset' => 'Remês’a zérô du contresegno',
'passwordreset-text' => 'Rempléd ceti formulèro por recêvre un mèssâjo de sovegnence des dètalys de voutron compto.',
-'passwordreset-legend' => 'Remetre a zérô lo contresegno',
-'passwordreset-disabled' => 'La remisa a zérô des contresegnos est étâye dèsactivâye sur ceti vouiqui.',
-'passwordreset-pretext' => '{{PLURAL:$1||Buchiéd yona de les piéces de donâs ce-desot}}',
+'passwordreset-legend' => 'Rebetar a zérô lo contresegno',
+'passwordreset-disabled' => 'La remês’a zérô des contresegnos est étâye dèsactivâye sur ceti vouiqui.',
+'passwordreset-pretext' => '{{PLURAL:$1||Buchiéd yona de les piéces de balyês ce-desot}}',
'passwordreset-username' => 'Nom d’utilisator :',
'passwordreset-domain' => 'Domêno :',
'passwordreset-capture' => 'Est-o que vos voléd vêre lo mèssâjo que rèsulte ?',
Vos vos pouede veriér vers $1 ou ben yon des ôtros [[{{MediaWiki:Grouppage-sysop}}|administrators]] por nen discutar.
-Notâd que vos porréd pas empleyér la fonccionalitât « Lui mandar un mèssâjo » du muens que vos èyâd n’adrèce èlèctronica justa encartâye dens voutres [[Special:Preferences|prèferences]] et que vos seyâd pas étâ blocâ de l’empleyér.
+Notâd que vos porréd pas empleyér la fonccionalitât « Lui mandar un mèssâjo » du muens que vos èyâd un’adrèce èlèctronica justa encartâye dens voutres [[Special:Preferences|prèferences]] et que vos seyâd pas étâ blocâ de l’empleyér.
Voutron adrèce IP d’ora est $3, et l’identifient de blocâjo est $5.
Se vos plét, entrebetâd tôs los dètalys ce-dessus dedens na demanda la quinta que seye que vos faréd.",
Se vos éte arrevâ{{GENDER:||ye|(ye)}} ice per fôta, clicâd sur lo boton '''Devant''' de voutron navigator.",
'anontalkpagetext' => "----''O est la pâge de discussion d’un utilisator anonimo qu’at p’oncor fêt un compto ou ben que nen emplèye pas.
Por cen nos devens empleyér la sin’adrèce IP numerica por lo recognetre.
-N’adrèce IP d’ense pôt étre partagiêe per un mouél d’utilisators.
-Se vos éte {{GENDER:|un utilisator|n’utilisatrice|un utilisator}} anonim{{GENDER:|o|a|o}} et pués se vos constatâd que des comentèros que vos regârdont pas vos sont étâs adrèciês, se vos plét [[Special:UserLogin/signup|féte un compto]] ou ben [[Special:UserLogin|branchiéd-vos]] por èvitar tota confusion que vint avouéc d’ôtros utilisators anonimos.''",
+Un’adrèce IP d’ense pôt étre partagiêe per un mouél d’utilisators.
+Se vos éte {{GENDER:|un utilisator|un’utilisatrice|un utilisator}} anonim{{GENDER:|o|a|o}} et pués se vos constatâd que des comentèros que vos regârdont pas vos sont étâs adrèciês, se vos plét [[Special:UserLogin/signup|féte un compto]] ou ben [[Special:UserLogin|branchiéd-vos]] por èvitar tota confusion que vint avouéc d’ôtros utilisators anonimos.''",
'noarticletext' => 'Ora y at gins de tèxto dedens cela pâge.
Vos pouede [[Special:Search/{{PAGENAME}}|fâre na rechèrche sur cél titro]] dedens les ôtres pâges,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechèrchiér dedens los jornals liyês]
'token_suffix_mismatch' => "'''Voutron changement est pas étâ accèptâ, voutron cliant at mècllâ los caractèros de ponctuacion dedens lo jeton de changement.'''
Lo changement est étâ refusâ por empachiér la corrupcion du tèxto de la pâge.
Des côps ceti problèmo arreve quand vos empleyéd un sèrviço de proxi Vouèbe anonimo qu’est pas de sûr.",
-'edit_form_incomplete' => "'''Quârques parties du formulèro de changement ont pas avengiê lo sèrvior ; controlâd que voutros changements sont entiérs et pués tornâd èprovar.'''",
+'edit_form_incomplete' => "'''Quârques parties du formulèro de changement ant pas avengiê lo sèrvior ; controlâd que voutros changements sont entiérs et pués tornâd èprovar.'''",
'editing' => 'Changement de $1',
'creating' => 'Crèacion de $1',
'editingsection' => 'Changement de $1 (sèccion)',
'''Empleyéd gins d’ôvra desot drêt d’ôtor sen pèrmission èxprèssa !'''",
'longpageerror' => "'''Fôta : lo tèxto que vos éd mandâ fât {{PLURAL:$1|un Kio|$1 Kio}}, cen que dèpâsse la limita fixâye a {{PLURAL:$2|un Kio|$2 Kio}}.'''
Pôt pas étre encartâ.",
-'readonlywarning' => "'''Atencion : la bâsa de donâs est étâye vèrrolyêe por mantegnence, vos porréd vêr pas encartar voutros changements d’abôrd.'''
+'readonlywarning' => "'''Atencion : la bâsa de balyês est étâye vèrrolyêe por mantegnence, vos porréd vêr pas encartar voutros changements d’abôrd.'''
Vos pouede copiyér et côlar voutron tèxto dedens un fichiér tèxto et pués l’encartar por ples târd.
-L’administrator qu’at vèrrolyê la bâsa de donâs at balyê cet’èxplicacion : $1",
-'protectedpagewarning' => "'''Atencion : ceta pâge est étâye protègiêe de façon que solament los utilisators qu’ont lo statut d’administrator la pouessont changiér.'''
+L’administrator qu’at vèrrolyê la bâsa de balyês at balyê cet’èxplicacion : $1",
+'protectedpagewarning' => "'''Atencion : ceta pâge est étâye protègiêe de façon que solament los utilisators qu’ant lo statut d’administrator la pouessont changiér.'''
Por refèrence, la dèrriére entrâ du jornal est balyêe ce-desot :",
'semiprotectedpagewarning' => "'''Nota :''' ceta pâge est étâye protègiêe de façon que solament los utilisators encartâs la pouessont changiér.
Por refèrence, la dèrriére entrâ du jornal est balyêe ce-desot :",
-'cascadeprotectedwarning' => "'''Atencion :''' cela pâge-que est étâye protègiêe de façon que solament los utilisators qu’ont lo statut d’administrator la pouessont changiér, perce qu’el est entrebetâye dedens {{PLURAL:$1|ceta pâge protègiêe|cetes pâges protègiêes}} avouéc la « protèccion en cascâda » activâye :",
+'cascadeprotectedwarning' => "'''Atencion :''' cela pâge-que est étâye protègiêe de façon que solament los utilisators qu’ant lo statut d’administrator la pouessont changiér, perce qu’el est entrebetâye dedens {{PLURAL:$1|ceta pâge protègiêe|cetes pâges protègiêes}} avouéc la « protèccion en cascâda » activâye :",
'titleprotectedwarning' => "'''Atencion : ceta pâge est étâye protègiêe de façon que des [[Special:ListGroupRights|drêts spècificos]] sont nècèssèros por la povêr fâre.'''
Por refèrence, la dèrriére entrâ du jornal est balyêe ce-desot :",
'templatesused' => '{{PLURAL:$1|Modèlo empleyê|Modèlos empleyês}} per ceta pâge :',
Ègziste ja.',
'defaultmessagetext' => 'Mèssâjo per dèfôt',
'content-failed-to-parse' => 'Falyita de l’analisa du contegnu de $2 por lo modèlo $1 : $3',
-'invalid-content-data' => 'Donâs du contegnu pas justes',
+'invalid-content-data' => 'Balyês du contegnu pas justes',
'content-not-allowed-here' => 'Lo contegnu « $1 » est pas ôtorisâ sur la pâge [[$2]]',
# Content models
'cur' => 'd’ora',
'next' => 'aprés',
'last' => 'devant',
-'page_first' => 'Premiére',
+'page_first' => 'premiére',
'page_last' => 'dèrriére',
'histlegend' => "Chouèx de difs : pouentâd les câses de les vèrsions a comparar et pués apoyéd dessus « Entrâ » ou ben lo boton d’avâl.<br />
Lègenda : '''({{int:cur}})''' = difèrence avouéc la vèrsion d’ora, '''({{int:last}})''' = difèrence avouéc la vèrsion devant, '''{{int:minoreditletter}}''' = petiôt changement.",
'history-feed-item-nocomment' => '$1 lo $3 a $4',
'history-feed-empty' => 'La pâge demandâye ègziste pas.
Pôt-étre el est étâye suprimâye du vouiqui ou ben renomâye.
-Èprovâd de [[Special:Search|rechèrchiér sur lo vouiqui]] por trovar des pâges novèles que vont avouéc.',
+Èprovâd de [[Special:Search|rechèrchiér sur lo vouiqui]] por trovar des pâges novèles que vant avouéc.',
# Revision deletion
'rev-deleted-comment' => '(rèsumâ de changement enlevâ)',
'revdelete-confirm' => 'Se vos plét, confirmâd qu’o est franc cen que vos voléd fâre, que vos en compregnéd les consèquences et pués que vos o féte en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].',
'revdelete-suppress-text' => "La rèprèssion dêt étre empleyêe '''ren que''' dens cetos câs :
* Enformacions que pôvont étre difamatouères
-* Enformacions a sè que vont pas avouéc
+* Enformacions a sè que vant pas avouéc
*: ''adrèces et numerôs de tèlèfono, numerôs de sècuritât sociâla, et tot cen que vat avouéc''",
'revdelete-legend' => 'Dèfenir des rèstriccions de visibilitât',
'revdelete-hide-text' => 'Cachiér lo tèxto de la vèrsion',
'revdelete-hide-name' => 'Cachiér l’accion et la ciba',
'revdelete-hide-comment' => 'Cachiér lo rèsumâ de changement',
'revdelete-hide-user' => 'Cachiér lo nom d’utilisator / l’adrèce IP du contributor',
-'revdelete-hide-restricted' => 'Rèprimar celes donâs ux administrators et pués ux ôtros',
+'revdelete-hide-restricted' => 'Rèprimar celes balyês ux administrators et pués ux ôtros',
'revdelete-radio-same' => '(pas changiér)',
'revdelete-radio-set' => 'Ouè',
'revdelete-radio-unset' => 'Nan',
-'revdelete-suppress' => 'Rèprimar celes donâs ux administrators et pués ux ôtros',
+'revdelete-suppress' => 'Rèprimar celes balyês ux administrators et pués ux ôtros',
'revdelete-unsuppress' => 'Enlevar les rèstriccions sur les vèrsions refêtes',
'revdelete-log' => 'Rêson :',
'revdelete-submit' => 'Aplicar a {{PLURAL:$1|la vèrsion chouèsia|les vèrsions chouèsies}}',
Vos y éd pas accès.',
'revdelete-modify-no-access' => 'Fôta en changient la piéce datâye du $1 a $2 : el est marcâye coment « rètrenta ».
Vos y éd pas accès.',
-'revdelete-modify-missing' => 'Fôta en changient la piéce avouéc l’identifient $1 : el est manquenta dedens la bâsa de donâs !',
+'revdelete-modify-missing' => 'Fôta en changient la piéce avouéc l’identifient $1 : el est manquenta dedens la bâsa de balyês !',
'revdelete-no-change' => "'''Atencion :''' la piéce datâye du $1 a $2 at ja la configuracion de visibilitât demandâye.",
'revdelete-concurrent-change' => 'Fôta en changient la piéce datâye du $1 a $2 : lo sin statut semble étre étâ changiê per un ôtro justo que vos èprovâvâd d’o changiér.
Se vos plét, controlâd los jornals.',
'revdelete-only-restricted' => 'Fôta en cachient la piéce datâye du $1 a $2 : vos pouede pas rèprimar celes piéces de la vua ux administrators sen chouèsir avouéc des ôtros chouèx de visibilitât.',
'revdelete-reason-dropdown' => '*Rêsons corentes de suprèssion
** Violacion du drêt d’ôtor
-** Comentèros ou ben enformacions a sè que vont pas avouéc
+** Comentèros ou ben enformacions a sè que vant pas avouéc
** Nom d’utilisator que vat pas avouéc
** Enformacions que pôvont étre difamatouères',
'revdelete-otherreason' => 'Ôtra rêson / rêson de ples :',
# Suppression log
'suppressionlog' => 'Jornal de les suprèssions',
-'suppressionlogtext' => 'Vê-que na lista de les suprèssions et des blocâjos qu’ont de contegnu cachiê ux administrators.
+'suppressionlogtext' => 'Vê-que na lista de les suprèssions et des blocâjos qu’ant de contegnu cachiê ux administrators.
Vêde la [[Special:BlockList|lista des blocâjos]] por la lista des banissements et des blocâjos que sont ora actifs.',
# History merging
'mergehistory-list' => 'Historico des changements que pôvont étre fusionâs',
'mergehistory-merge' => 'Cetes vèrsions de [[:$1]] pôvont étre fusionâyes dedens [[:$2]].
Empleyéd la colona de botons de chouèx por fusionar ren que les vèrsions fêtes du comencement tant qu’a la dâta spècifiâye.
-Notâd que l’usâjo des lims de navigacion remetrat a zérô cela colona.',
+Notâd que l’usâjo des lims de navigacion rebeterat a zérô cela colona.',
'mergehistory-go' => 'Montrar los changements que pôvont étre fusionâs',
'mergehistory-submit' => 'Fusionar les vèrsions',
'mergehistory-empty' => 'Niona vèrsion pôt étre fusionâye.',
'searchresults' => 'Rèsultats de la rechèrche',
'searchresults-title' => 'Rèsultats de la rechèrche por « $1 »',
'searchresulttext' => 'Por més d’enformacions sur la rechèrche dedens {{SITENAME}}, vêde [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Vos éd rechèrchiê « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totes les pâges que començont per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pâges qu’ont un lim de vers « $1 »]])",
+'searchsubtitle' => "Vos éd rechèrchiê « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totes les pâges que començont per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pâges qu’ant un lim de vers « $1 »]])",
'searchsubtitleinvalid' => "Vos éd rechèrchiê « '''$1''' »",
'toomanymatches' => 'Un mouél de corrèspondances est étâ retornâ, se vos plét èprovâd na rechèrche difèrenta',
'titlematches' => 'Corrèspondances dedens los titros de les pâges',
# Quickbar
'qbsettings' => 'Bârra rapida',
'qbsettings-none' => 'Pas yona',
-'qbsettings-fixedleft' => 'Fixa a gôche',
-'qbsettings-fixedright' => 'Fixa a drêta',
-'qbsettings-floatingleft' => 'Fllotenta a gôche',
-'qbsettings-floatingright' => 'Fllotenta a drêta',
+'qbsettings-fixedleft' => 'Fix’a gôche',
+'qbsettings-fixedright' => 'Fix’a drêta',
+'qbsettings-floatingleft' => 'Fllotent’a gôche',
+'qbsettings-floatingright' => 'Fllotent’a drêta',
'qbsettings-directionality' => 'Fixa, d’aprés la dirèccionalitât d’ècritura de voutra lengoua',
# Preferences page
'prefs-misc' => 'De totes sôrtes',
'prefs-resetpass' => 'Changiér lo contresegno',
'prefs-changeemail' => 'Changiér l’adrèce èlèctronica',
-'prefs-setemail' => 'Dèfenir n’adrèce èlèctronica',
+'prefs-setemail' => 'Dèfenir un’adrèce èlèctronica',
'prefs-email' => 'Chouèx de mèssageria èlèctronica',
'prefs-rendering' => 'Aparence',
'saveprefs' => 'Encartar',
Vê-que na valor fêta per hasârd que vos pouede empleyér : $1',
'savedprefs' => 'Voutres prèferences sont étâyes encartâyes.',
'timezonelegend' => 'Fus horèro :',
-'localtime' => 'Hora locala :',
+'localtime' => 'Hora locâla :',
'timezoneuseserverdefault' => 'Empleyér la valor du vouiqui per dèfôt ($1)',
'timezoneuseoffset' => 'Ôtro (spècifiar lo dècalâjo)',
'timezoneoffset' => 'Dècalâjo horèro¹ :',
Cel’enformacion serat publica.',
'email' => 'Mèssageria èlèctronica',
'prefs-help-realname' => 'U chouèx : se vos lo balyéd, serat empleyê por vos atribuar voutres ôvres.',
-'prefs-help-email' => 'U chouèx : mas el est nècèssèra por remetre a zérô voutron contresegno, se vos vegnévâd a l’oubliar.',
+'prefs-help-email' => 'L’adrèce èlèctronica est u chouèx, mas el est nècèssèra por rebetar a zérô voutron contresegno, se vos vegnévâd a l’oubliar.',
'prefs-help-email-others' => 'Vos porriâd asse-ben chouèsir de lèssiér los ôtros sè veriér vers vos per mèssageria èlèctronica avouéc un lim sur voutra pâge utilisator ou ben de discussion sen que seye nècèssèro de rèvèlar voutron identitât.',
-'prefs-help-email-required' => 'N’adrèce èlèctronica est nècèssèra.',
+'prefs-help-email-required' => 'Un’adrèce èlèctronica est nècèssèra.',
'prefs-info' => 'Enformacions de bâsa',
'prefs-i18n' => 'Entèrnacionalisacion',
'prefs-signature' => 'Signatura',
'prefs-displaywatchlist' => 'Chouèx de vua',
'prefs-diffs' => 'Difèrences',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'L’adrèce èlèctronica semble justa',
-'email-address-validity-invalid' => 'Buchiéd n’adrèce èlèctronica justa',
+'email-address-validity-invalid' => 'Buchiéd un’adrèce èlèctronica justa',
# User rights
'userrights' => 'Administracion des drêts d’utilisator',
* Na petiôt’ètêla (*) endique que vos pouede pas enlevar cela tropa setout que vos l’éd apondua ou ben l’una l’ôtra.',
'userrights-reason' => 'Rêson :',
'userrights-no-interwiki' => 'Vos éd pas la pèrmission de changiér des drêts d’utilisator dessus d’ôtros vouiquis.',
-'userrights-nodatabase' => 'La bâsa de donâs « $1 » ègziste pas ou ben el est pas locala.',
+'userrights-nodatabase' => 'La bâsa de balyês « $1 » ègziste pas ou ben est pas locâla.',
'userrights-nologin' => 'Vos vos dête [[Special:UserLogin|branchiér]] avouéc un compto d’administrator por balyér des drêts d’utilisator.',
'userrights-notallowed' => 'Voutron compto at pas la pèrmission de balyér ou ben enlevar des drêts d’utilisator.',
'userrights-changeable-col' => 'Les tropes que vos pouede changiér',
'right-reupload' => 'Ècllafar un fichiér ègzistent',
'right-reupload-own' => 'Ècllafar un fichiér ègzistent tèlèchargiê per sè-mémo',
'right-reupload-shared' => 'Ècllafar localament un fichiér present sur un dèpôt de fichiérs mèdia partagiê',
-'right-upload_by_url' => 'Tèlèchargiér un fichiér dês n’URL',
+'right-upload_by_url' => 'Tèlèchargiér un fichiér dês un’URL',
'right-purge' => 'Purgiér lo cacho du seto d’una pâge sen confirmacion',
'right-autoconfirmed' => 'Changiér les pâges mié-protègiêes',
'right-bot' => 'Étre trètâ coment na mètoda ôtomatisâye',
-'right-nominornewtalk' => 'Pas dècllenchiér la notificacion de mèssâjo novél quand font un petiôt changement sur la pâge de discussion d’un utilisator',
+'right-nominornewtalk' => 'Pas dècllenchiér la notificacion de mèssâjo novél quand fant un petiôt changement sur la pâge de discussion d’un utilisator',
'right-apihighlimits' => 'Empleyér des limites ples hôtes dedens les demandes API',
'right-writeapi' => 'Empleyér l’API d’ècritura',
'right-delete' => 'Suprimar des pâges',
-'right-bigdelete' => 'Suprimar des pâges qu’ont un grôs historico',
-'right-deletelogentry' => 'Suprimar et refâre n’entrâ spècifica du jornal',
+'right-bigdelete' => 'Suprimar des pâges qu’ant un grôs historico',
+'right-deletelogentry' => 'Suprimar et refâre un’entrâ spècifica du jornal',
'right-deleterevision' => 'Suprimar et refâre na vèrsion spècifica d’una pâge',
'right-deletedhistory' => 'Vêre les entrâs suprimâyes de l’historico sen lor tèxto',
'right-deletedtext' => 'Vêre lo tèxto suprimâ et los changements entre les vèrsions suprimâyes',
'right-mergehistory' => 'Fusionar los historicos de les pâges',
'right-userrights' => 'Changiér tôs los drêts d’un utilisator',
'right-userrights-interwiki' => 'Changiér los drêts d’utilisator des utilisators que sont sur un ôtro vouiqui',
-'right-siteadmin' => 'Vèrrolyér et dèvèrrolyér la bâsa de donâs',
+'right-siteadmin' => 'Vèrrolyér et dèvèrrolyér la bâsa de balyês',
'right-override-export-depth' => 'Èxportar les pâges avouéc les pâges liyêes tant qu’a na provondior de 5 nivéls',
'right-sendemail' => 'Mandar un mèssâjo ux ôtros utilisators',
-'right-passwordreset' => 'Vêre los mèssâjos de remisa a zérô des contresegnos',
+'right-passwordreset' => 'Vêre los mèssâjos de remês’a zérô des contresegnos',
# Special:Log/newusers
'newuserlogpage' => 'Jornal de les crèacions d’utilisators',
'action-upload' => 'tèlèchargiér cél fichiér',
'action-reupload' => 'ècllafar cél fichiér ègzistent',
'action-reupload-shared' => 'ècllafar localament cél fichiér present sur un dèpôt partagiê',
-'action-upload_by_url' => 'tèlèchargiér cél fichiér dês n’URL',
+'action-upload_by_url' => 'tèlèchargiér cél fichiér dês un’URL',
'action-writeapi' => 'empleyér l’API d’ècritura',
'action-delete' => 'suprimar cela pâge',
'action-deleterevision' => 'suprimar cela vèrsion',
'action-mergehistory' => 'fusionar l’historico de cela pâge',
'action-userrights' => 'changiér tôs los drêts d’utilisator',
'action-userrights-interwiki' => 'changiér los drêts d’utilisator des utilisators que sont sur un ôtro vouiqui',
-'action-siteadmin' => 'vèrrolyér ou ben dèvèrrolyér la bâsa de donâs',
+'action-siteadmin' => 'vèrrolyér ou ben dèvèrrolyér la bâsa de balyês',
'action-sendemail' => 'mandar des mèssâjos',
# Recent changes
'rc_categories_any' => 'Totes',
'rc-change-size-new' => '$1 octèt{{PLURAL:$1||s}} aprés changement',
'newsectionsummary' => '/* $1 */ novèla sèccion',
-'rc-enhanced-expand' => 'Montrar los dètalys (il at fôta de JavaScript)',
+'rc-enhanced-expand' => 'Montrar los dètalys (at fôta de JavaScript)',
'rc-enhanced-hide' => 'Cachiér los dètalys',
'rc-old-title' => 'fêta avouéc lo titro originâl « $1 »',
'upload-tryagain' => 'Mandar la dèscripcion du fichiér changiê',
'uploadnologin' => 'Pas branchiê(ye)',
'uploadnologintext' => 'Vos dête étre [[Special:UserLogin|branchiê(ye)]] por povêr tèlèchargiér des fichiérs.',
-'upload_directory_missing' => 'Lo rèpèrtouèro de tèlèchargement ($1) est manquent et il at pas possu étre fêt per lo sèrvior Vouèbe.',
+'upload_directory_missing' => 'Lo rèpèrtouèro de tèlèchargement ($1) est manquent et at pas possu étre fêt per lo sèrvior Vouèbe.',
'upload_directory_read_only' => 'Lo rèpèrtouèro de tèlèchargement ($1) est pas accèssiblo en ècritura dês lo sèrvior Vouèbe.',
'uploaderror' => 'Fôta pendent lo tèlèchargement',
'upload-recreate-warning' => "'''Atencion : un fichiér avouéc cél nom est étâ suprimâ ou ben dèplaciê.'''
'filename-tooshort' => 'Lo nom du fichiér est trop côrt.',
'filetype-banned' => 'Cél tipo de fichiér est dèfendu.',
'verification-error' => 'Cél fichiér pâsse pas lo contrôlo des fichiérs.',
-'hookaborted' => 'Lo changement que vos éd èprovâ de fâre est étâ anulâ per n’èxtension.',
+'hookaborted' => 'Lo changement que vos éd èprovâ de fâre est étâ anulâ per un’èxtension.',
'illegal-filename' => 'Lo nom du fichiér est pas ôtorisâ.',
'overwrite' => 'Ècllafar un fichiér ègzistent est pas ôtorisâ.',
'unknown-error' => 'Na fôta encognua est arrevâ.',
* Nom du fichiér a tèlèchargiér : <strong>[[:$1]]</strong>
* Nom du fichiér ègzistent : <strong>[[:$2]]</strong>
Se vos plét, chouèsésséd-nen un ôtro.',
-'fileexists-thumbnail-yes' => "Lo fichiér semble étre n’émâge en talye rèduita ''(figura)''.
+'fileexists-thumbnail-yes' => "Lo fichiér semble étre un’émâge en talye rèduita ''(figura)''.
[[$1|thumb]]
Se vos plét, controlâd lo fichiér <strong>[[:$1]]</strong>.
Se lo fichiér controlâ est la mém’émâge avouéc la talye originâla, y at pas fôta de tèlèchargiér na figura.",
'file-thumbnail-no' => "Lo nom du fichiér comence per <strong>$1</strong>.
-Semble étre n’émâge en talye rèduita ''(figura)''.
+Semble étre un’émâge en talye rèduita ''(figura)''.
Se vos éd cel’émâge en plêna rèsolucion, tèlèchargiéd-la, ôtrament changiéd lo sin nom, se vos plét.",
'fileexists-forbidden' => 'Un fichiér avouéc cél nom ègziste ja et pôt pas étre ècllafâ.
Se vos voléd adés tèlèchargiér voutron fichiér, se vos plét tornâd arriér et pués empleyéd un novél nom.
'backend-fail-notsame' => 'Un fichiér pas pariér ègziste ja a « $1 ».',
'backend-fail-invalidpath' => '« $1 » est pas un chemin de stocâjo justo.',
'backend-fail-delete' => 'Y at pas moyen de suprimar lo fichiér « $1 ».',
-'backend-fail-describe' => 'Y at pas moyen de changiér les mètadonâs du fichiér « $1 ».',
+'backend-fail-describe' => 'Y at pas moyen de changiér les mètabalyês du fichiér « $1 ».',
'backend-fail-alreadyexists' => 'Lo fichiér « $1 » ègziste ja.',
'backend-fail-store' => 'Y at pas moyen de stocar lo fichiér « $1 » dedens « $2 ».',
'backend-fail-copy' => 'Y at pas moyen de copiyér lo fichiér « $1 » vers « $2 ».',
'backend-fail-usable' => 'Y at pas moyen de liére d’ècrire lo fichiér « $1 » a côsa de pèrmissions ensufisentes ou ben de rèpèrtouèros / conteniors manquents.',
# File journal errors
-'filejournal-fail-dbconnect' => 'Y at pas moyen de sè branchiér a la bâsa de donâs du jornal por lo sistèmo de stocâjo « $1 ».',
-'filejournal-fail-dbquery' => 'Y at pas moyen de betar a jorn la bâsa de donâs du jornal por lo sistèmo de stocâjo « $1 ».',
+'filejournal-fail-dbconnect' => 'Y at pas moyen de sè branchiér a la bâsa de balyês du jornal por lo sistèmo de stocâjo « $1 ».',
+'filejournal-fail-dbquery' => 'Y at pas moyen de betar a jorn la bâsa de balyês du jornal por lo sistèmo de stocâjo « $1 ».',
# Lock manager
'lockmanager-notlocked' => 'Y at pas moyen de dèvèrrolyér « $1 » ; il est pas vèrrolyê.',
'lockmanager-fail-acquirelock' => 'Y at pas moyen d’avêr lo vèrroly por « $1 ».',
'lockmanager-fail-openlock' => 'Y at pas moyen d’uvrir lo fichiér de vèrroly por « $1 ».',
'lockmanager-fail-releaselock' => 'Y at pas moyen de relâchiér lo vèrroly por « $1 ».',
-'lockmanager-fail-db-bucket' => 'Y at pas moyen de sè veriér vers prod de bâses de donâs de vèrroly dedens la sèlye $1.',
-'lockmanager-fail-db-release' => 'Y at pas moyen de relâchiér los vèrrolys sur la bâsa de donâs $1.',
+'lockmanager-fail-db-bucket' => 'Y at pas moyen de sè veriér vers prod de bâses de balyês de vèrroly dedens la sèlye $1.',
+'lockmanager-fail-db-release' => 'Y at pas moyen de relâchiér los vèrrolys sur la bâsa de balyês $1.',
'lockmanager-fail-svr-acquire' => 'Y at pas moyen d’avêr des vèrrolys sur lo sèrvior $1.',
'lockmanager-fail-svr-release' => 'Y at pas moyen de relâchiér los vèrrolys sur lo sèrvior $1.',
'uploadstash-summary' => 'Ceta pâge balye accès ux fichiérs que sont tèlèchargiês ou ben en côrs de tèlèchargement, mas sont p’oncor publeyês dedens lo vouiqui. Celos fichiérs sont p’oncor visiblos, solament por l’utilisator que los at tèlèchargiês.',
'uploadstash-clear' => 'Èfaciér los fichiérs en cacho',
'uploadstash-nofiles' => 'Vos éd gins de fichiér en cacho.',
-'uploadstash-badtoken' => 'L’ègzécucion de cel’accion at pas reussi, pôt-étre perce que voutros identifients de changement ont èxpirâ. Tornâd èprovar.',
+'uploadstash-badtoken' => 'L’ègzécucion de cel’accion at pas reussi, pôt-étre perce que voutros identifients de changement ant èxpirâ. Tornâd èprovar.',
'uploadstash-errclear' => 'L’èfacement des fichiérs at pas reussi.',
'uploadstash-refresh' => 'Rafrèchir la lista des fichiérs',
'invalid-chunk-offset' => 'Dèplacement de bocon pas justo',
'upload-curl-error28' => 'Dèlê dèpassâ pendent lo tèlèchargement',
'upload-curl-error28-text' => 'Lo seto at tardâ bien a rèpondre.
Se vos plét, controlâd que lo seto est en legne, atende un pou et pués tornâd èprovar.
-Vos pouede asse-ben èprovar a n’hora de muendra afluence.',
+Vos pouede asse-ben èprovar a un’hora de muendra afluence.',
'license' => 'Licence :',
'license-header' => 'Licence',
'nolicense' => 'Pas yona chouèsia',
'license-nopreview' => '(Apèrçu pas disponiblo)',
-'upload_source_url' => ' (n’URL justa et accèssibla publicament)',
+'upload_source_url' => ' (un’URL justa et accèssibla publicament)',
'upload_source_file' => ' (un fichiér sur voutron ordenator)',
# Special:ListFiles
'filerevert-defaultcomment' => 'Rèvocâ a la vèrsion du $1 a $2',
'filerevert-submit' => 'Rèvocar',
'filerevert-success' => "'''[[Media:$1|$1]]''' est étâ rèvocâ a la [$4 vèrsion du $2 a $3].",
-'filerevert-badversion' => 'Y at gins de vèrsion locala devant de cél fichiér avouéc l’horodatâjo balyê.',
+'filerevert-badversion' => 'Y at gins de vèrsion locâla devant de cél fichiér avouéc l’horodatâjo balyê.',
# File deletion
'filedelete' => 'Suprimar $1',
'statistics-views-peredit' => 'Vues per changement',
'statistics-users' => '[[Special:ListUsers|Utilisators]] encartâs',
'statistics-users-active' => 'Utilisators actifs',
-'statistics-users-active-desc' => 'Utilisators qu’ont fêt por lo muens n’accion pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}',
+'statistics-users-active-desc' => 'Utilisators qu’ant fêt por lo muens un’accion pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}',
'statistics-mostpopular' => 'Pâges les ples vues',
-'disambiguations' => 'Pâges qu’ont des lims de vers des pâges d’homonimia',
+'disambiguations' => 'Pâges qu’ant des lims de vers des pâges d’homonimia',
'disambiguationspage' => 'Template:Homonimia',
-'disambiguations-text' => "Cetes pâges ont por lo muens un lim de vers na '''pâge d’homonimia'''.
+'disambiguations-text' => "Cetes pâges ant por lo muens un lim de vers na '''pâge d’homonimia'''.
Devriant pletout pouentar vers na pâge que vat avouéc.<br />
Na pâge est trètâye coment na pâge d’homonimia s’emplèye un modèlo liyê a [[MediaWiki:Disambiguationspage]].",
'brokenredirects-delete' => 'suprimar',
'withoutinterwiki' => 'Pâges sen lims entèrlengoues',
-'withoutinterwiki-summary' => 'Cetes pâges ont gins de lim de vers d’ôtres lengoues.',
+'withoutinterwiki-summary' => 'Cetes pâges ant gins de lim de vers d’ôtres lengoues.',
'withoutinterwiki-legend' => 'Prèfixo',
'withoutinterwiki-submit' => 'Montrar',
'move' => 'Dèplaciér',
'movethispage' => 'Dèplaciér ceta pâge',
'unusedimagestext' => 'Cetos fichiérs ègzistont, mas sont pas entrebetâs dedens niona pâge.
-Se vos plét, notâd que d’ôtros setos Vouèbe pôvont avêr un lim de vers un fichiér avouéc n’URL drêta, donc un fichiér pôt adés étre listâ ique pendent qu’il est en usâjo actif.',
+Se vos plét, notâd que d’ôtros setos Vouèbe pôvont avêr un lim de vers un fichiér avouéc un’URL drêta, donc un fichiér pôt adés étre listâ ique pendent qu’il est en usâjo actif.',
'unusedcategoriestext' => 'Cetes catègories ègzistont, mas nion’ôtra pâge niona catègorie les emplèye.',
'notargettitle' => 'Niona ciba',
'notargettext' => 'Vos éd pas spècifiâ na pâge un utilisator ciba sur laquinta / loquint vos souhètâd fâre cel’accion.',
'allpagesnext' => 'Aprés',
'allpagessubmit' => 'Listar',
'allpagesprefix' => 'Fâre vêre les pâges que començont per lo prèfixo :',
-'allpagesbadtitle' => 'Lo titro de la pâge balyêe est pas justo ou ben il at un prèfixo entèrlengoua ou entèrvouiqui resèrvâ.
+'allpagesbadtitle' => 'Lo titro de la pâge balyêe est pas justo ou ben contint un prèfixo entèrlengoua ou entèrvouiqui resèrvâ.
Contint de sûr yon ou ben un mouél de caractèros que pôvont pas étre empleyês dedens los titros.',
'allpages-bad-ns' => '{{SITENAME}} at gins d’èspâço de noms « $1 ».',
'allpages-hide-redirects' => 'Cachiér les redirèccions',
'linksearch-ns' => 'Èspâço de noms :',
'linksearch-ok' => 'Rechèrchiér',
'linksearch-text' => 'Des caractèros j·oquères coment « *.wikipedia.org » pôvont étre empleyês.
-Ils ont fôta de por lo muens un domêno de nivél de dessus, per ègzemplo « *.org ».<br />
+Ils ant fôta de por lo muens un domêno de nivél de dessus, per ègzemplo « *.org ».<br />
{{PLURAL:$2|Protocolo recognu|Protocolos recognus}} : <code>$1</code> (http:// per dèfôt se nion protocolo est spècifiâ).',
'linksearch-line' => '$1 est liyê dês $2',
'linksearch-error' => 'Los caractèros j·oquères pôvont étre empleyês ren qu’u comencement du nom de domêno de l’hôto.',
# Special:ActiveUsers
'activeusers' => 'Lista des utilisators actifs',
-'activeusers-intro' => 'O est na lista des utilisators qu’ont ègzèrciê n’activitât la quinta que seye pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}.',
+'activeusers-intro' => 'O est na lista des utilisators qu’ant ègzèrciê un’activitât la quinta que seye pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}.',
'activeusers-count' => '$1 accion{{PLURAL:$1||s}} pendent {{PLURAL:$3|lo jorn passâ|los $3 jorns passâs}}',
'activeusers-from' => 'Fâre vêre los utilisators dês :',
'activeusers-hidebots' => 'Cachiér los robots',
'listgrouprights-addgroup-self-all' => 'Sè pôt apondre totes les tropes a son prôpro compto',
'listgrouprights-removegroup-self-all' => 'Sè pôt enlevar totes les tropes de son prôpro compto',
-# E-mail user
+# Email user
'mailnologin' => 'Nion’adrèce d’èxpèdior',
-'mailnologintext' => 'Vos dête étre [[Special:UserLogin|branchiê]] et avêr spècifiâ n’adrèce èlèctronica justa dens voutres [[Special:Preferences|prèferences]] por povêr mandar des mèssâjos a d’ôtros utilisators.',
+'mailnologintext' => 'Vos dête étre [[Special:UserLogin|branchiê]] et avêr spècifiâ un’adrèce èlèctronica justa dens voutres [[Special:Preferences|prèferences]] por povêr mandar des mèssâjos a d’ôtros utilisators.',
'emailuser' => 'Lui mandar un mèssâjo',
'emailuser-title-target' => 'Mandar un mèssâjo a cet’utilisat{{GENDER:$1|or|rice}}',
'emailuser-title-notarget' => 'Mandar un mèssâjo a l’utilisator',
'usermaildisabled' => 'L’èxpèdicion de mèssâjos entre utilisators est dèsactivâye',
'usermaildisabledtext' => 'Vos pouede pas mandar de mèssâjos a d’ôtros utilisators sur ceti vouiqui',
'noemailtitle' => 'Nion’adrèce èlèctronica',
-'noemailtext' => 'Cet’utilisator at pas spècifiâ n’adrèce èlèctronica justa.',
+'noemailtext' => 'Cet’utilisator at pas spècifiâ un’adrèce èlèctronica justa.',
'nowikiemailtitle' => 'Niona mèssageria èlèctronica ôtorisâye',
'nowikiemailtext' => 'Cél utilisator at chouèsi de pas recêvre de mèssâjos de la pârt d’ôtros utilisators.',
'emailnotarget' => 'Nom d’utilisator du dèstinatèro pas ègzistent pas justo.',
'emailuserfooter' => 'Ceti mèssâjo est étâ mandâ per « $1 » a « $2 » per la fonccion « Lui mandar un mèssâjo » de {{SITENAME}}.',
# User Messenger
-'usermessage-summary' => 'Il at lèssiê un mèssâjo sistèmo.',
+'usermessage-summary' => 'At lèssiê un mèssâjo sistèmo.',
'usermessage-editor' => 'Mèssagiér du sistèmo',
'usermessage-template' => 'MediaWiki:MèssâjoUtilisator',
'blocklist-params' => 'Paramètres de blocâjo',
'blocklist-reason' => 'Rêson',
'ipblocklist-submit' => 'Rechèrchiér',
-'ipblocklist-localblock' => 'Blocâjo local',
+'ipblocklist-localblock' => 'Blocâjo locâl',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Ôtro blocâjo|Ôtros blocâjos}}',
'infiniteblock' => 'sen fin',
'expiringblock' => 'èxpire lo $1 a $2',
'monthsall' => 'tôs',
'limitall' => 'tôs',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar l’adrèce èlèctronica',
'confirmemail_noemail' => 'Vos éd pas dèfeni una adrèce èlèctronica valida dens voutres [[Special:Preferences|prèferences]].',
'confirmemail_text' => '{{SITENAME}} at fôta du contrôlo de voutra adrèce èlèctronica devant que povêr utilisar tota fonccion de mèssageria.
'loginlanguagelabel' => 'Cànan: $1',
'suspicious-userlogout' => "Chaidh d' iarrtas airson clàradh a-mach a dhiùltadh a chionn 's gu bheil coltas gun deach a chur le brabhsair briste no le progsaidh tasglannaidh.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Mearachd neo-aithichte san fheart mail() aig PHP.',
'user-mail-no-addy' => 'Cha do ghabh am post-d a chur leis nach robh seòladh puist-d ann.',
'user-mail-no-body' => 'Bha bodhaig na teachdaireachd bàn no air leth goirid.',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
'nmembers' => '$1 {{PLURAL:$1|bhall|bhall|buill|ball}}',
-'nviews' => '$1 {{PLURAL:$1|sealladh|shealladh|sealladh|shealladh|seallaidhean|sealladh}}',
+'nviews' => '$1 {{PLURAL:$1|sealladh|shealladh|seallaidhean|sealladh}}',
'uncategorizedpages' => 'Duilleagan gun roinn-seòrsa',
'uncategorizedcategories' => 'Roinnean-seòrsa gun roinn-seòrsa',
'unusedimages' => 'Faidhlichean gun chleachdadh',
# Special:Categories
'categories' => 'Roinnean-seòrsa',
-'categoriespagetext' => "Tha duilleagan no meadhan {{PLURAL:$1|san roinn-seòrsa|san roinn-seòrsa|san roinn-seòrsa|san roinn-seòrsa|sna roinntean-seòrsa|san roinn-seòrsa}} a leanas.
+'categoriespagetext' => "Tha duilleagan no meadhan {{PLURAL:$1|san roinn-seòrsa|sna roinntean-seòrsa|}} a leanas.
Chan fhaicear [[Special:UnusedCategories|roinntean-seòrsa gun chleachdadh an-seo]].
Thoir sùil air na [[Special:WantedCategories|roinntean-seòrsa a thathar 'gan iarraidh cuideachd]].",
# Special:LinkSearch
-'linksearch' => 'Ceanglaichean dhan taobh a-muigh',
+'linksearch' => 'Lorg sna ceanglaichean dhan taobh a-muigh',
'linksearch-line' => "Tha $1 a' ceangal an-seo o $2",
# Special:ListGroupRights
'listgrouprights-members' => '(liosta de bhuill)',
-# E-mail user
+# Email user
'emailuser' => 'Cuir post-dealain dhan chleachdaiche seo',
'emailfrom' => 'O:',
'emailto' => 'Gu:',
'mywatchlist' => 'An clàr-faire',
'watchlistfor2' => 'Do $1 $2',
'nowatchlist' => "Chan eil rud sam bith air a' chlàr-fhaire agad.",
-'addedwatchtext' => "Chaidh an duilleag \"[[:\$1]]\" a chur ri [[Special:Watchlist|do chlàr-faire]].
-Nochdaidh mùthaidhean a nithear air an duilleag seo 's air an duilleag deasbaireachd a tha co-cheangailte ris an-seo san àm ri teachd agus nochdaidh an duilleag ann an litrichean '''troma''' ann an [[Special:RecentChanges|liosta nam mùthaidhean ùra]] gum bi e furasta ri fhaicinn.",
+'addedwatchtext' => 'Chaidh an duilleag "[[:$1]]" a chur ri [[Special:Watchlist|do chlàr-faire]].
+Nochdaidh mùthaidhean a nithear air an duilleag seo \'s air an duilleag deasbaireachd a tha co-cheangailte ris an-seo san àm ri teachd.',
'removedwatchtext' => 'Chaidh an duilleag "[[:$1]]" a thoirt air falbh o [[Special:Watchlist|do chlàr-faire]].',
'watch' => 'Cum sùil air',
'watchthispage' => 'Cum sùil air an duilleag seo',
'watchlist-details' => 'Tha {{PLURAL:$1|$1 duilleag|$1 dhuilleag|$1 duilleagan|$1 duilleag}} air do chlàr-faire, gun luaidh air na duilleagan deasbaireachd.',
'watchmethod-recent' => "A' sgrùdadh deasachaidhean ùra airson duilleagan air d' fhaire",
'watchmethod-list' => "A' sgrùdadh duilleagan air d' fhaire airson deasachaidhean ùra",
-'watchlistcontains' => 'Tha $1 {{PLURAL:$1|duilleag|dhuilleag|duilleag|dhuilleag|duilleagan|duilleag}} air do chlàr-faire.',
-'wlnote' => 'Seo $1 {{PLURAL:$1|mhùthadh mu dheireadh|mhùthadh mu dheireadh|na mùthaidhean mu dheireadh|mùthadh mu dheireadh}} anns na $2 {{PLURAL:$2|uair|uair|uairean|uair}} mu dheireadh.',
+'watchlistcontains' => 'Tha $1 {{PLURAL:$1|duilleag|dhuilleag|duilleagan|duilleag}} air do chlàr-faire.',
+'wlnote' => 'Seo {{PLURAL:$1|an $1 mhùthadh|$1 mhùthadh|na $1 mùthaidhean|$1 mùthadh}} mu dheireadh san {{PLURAL:$2|$2 uair a thìde|$2 uair a thìde|$2 uairean a thìde|$2 uair a thìde}} mu dheireadh, mar a bha e $3, $4.',
'wlshowlast' => 'Seall na $1 uairean a thìde mu dheireadh $2 làithean mu dheireadh $3',
'watchlist-options' => 'Roghainnean mo chlàir-faire',
# Protect
'protectlogpage' => 'Loga an dìon',
-'protectlogtext' => "Tha liosta na chaidh a dhìon 's a neo-dhìon gu h-ìosal.
-Cuir sùil air [[Special:ProtectedPages|liosta nan duilleagan fo dhìon]] airson liosta na fheadhainn a tha fo dhìon an-dràsta fhèin.",
+'protectlogtext' => 'Tha liosta na chaidh a dhìon gu h-ìosal.
+Cuir sùil air [[Special:ProtectedPages|liosta nan duilleagan fo dhìon]] airson liosta na fheadhainn a tha fo dhìon an-dràsta fhèin.',
'protectedarticle' => '"[[$1]]" air a dhìon',
'modifiedarticleprotection' => 'a dh\'atharraich an ìre dìon de "[[$1]]"',
'unprotectedarticle' => 'a neo-dhìon "[[$1]]"',
'protect-text' => "Chì thu an ìre dìon dhen duilleag '''$1''' an-seo agus is urrainn dhut atharrachadh an-seo.",
'protect-locked-access' => "Chan eil cead aig a' chunntas agad an ìre dìon de dhuilleag atharrachadh.
Seo roghainnean làithreach na duilleige '''$1''':",
-'protect-cascadeon' => "Tha an duilleag seo fo dhìon an-dràsta a chionn 's gu bheil e air a ghabhail a-steach {{PLURAL:$1|san duilleag|sna duilleagan|san duilleag|sna duilleagan|san duilleag|sna duilleagan}} a leanas aig a bheil dìon easach air.
+'protect-cascadeon' => "Tha an duilleag seo fo dhìon an-dràsta a chionn 's gu bheil e air a ghabhail a-steach {{PLURAL:$1|$1 duilleag|$1 dhuilleag|$1 duilleagan|$1 duilleag}} a leanas aig a bheil dìon easach air.
'S urrainn dhut ìre dìon na duilleige seo atharrachadh ach cha bhi buaidh air an dìon easach.",
'protect-default' => 'Ceadaich a h-uile cleachdaiche',
-'protect-fallback' => 'Iarr cead "$1"',
-'protect-level-autoconfirmed' => 'Cuir bacadh air cleachdaichean ùra is feadhainn gun chlàrachadh',
-'protect-level-sysop' => 'Rianadairean a-mhàin',
+'protect-fallback' => 'Na ceadaich ach do chleachdaichean aig a bheil cead "$1"',
+'protect-level-autoconfirmed' => 'Na ceadaich ach cleachdaichean a chaidh an dearbhadh gu fèin-obrachail',
+'protect-level-sysop' => 'Na ceadaich ach rianadairean',
'protect-summary-cascade' => 'mar eas',
'protect-expiring' => 'falbhaidh an ùine air $1 (UTC)',
'protect-cascade' => "Dìon duilleagan a tha 'gan gabhail a-steach san duilleag seo (dìon mar eas)",
'restriction-level' => 'Ìre bacaidh:',
# Undelete
-'undeleterevisions' => 'Chaidh $1 {{PLURAL:$1|leth-bhreac|leth-bhreac|leth-bhreac|leth-bhreac|leth-bhreacan|leth-bhreac}} a chur san tasg-lann',
+'undeleterevisions' => 'Chaidh {{PLURAL:$1|$1 leth-bhreac|$1 leth-bhreac|$1 leth-bhreacan|$1 leth-bhreac}} a chur san tasg-lann',
'undeletelink' => 'seall/aisig',
'undeleteviewlink' => 'seall',
'ipboptions' => '2 uair a thìde:2 hours, 1 latha:1 day, 3 làithean:3 days, 1 seachdain:1 week, 2 sheachdain:2 weeks, 1 mhìos:1 month, 3 mìosan:3 months, 6 mìosan:6 months, 1 bhliadhna:1 year,neo-chrìochnach:infinite',
'badipaddress' => "Chan eil an seòladh IP aig a' cleachdair seo iomchaidh",
'blockipsuccesssub' => "Shoirbhich leat leis a' bhacadh",
-'blockipsuccesstext' => "Tha [[Special:Contributions/$1|$1]] air a bhacadh.
-<br />Faic [[Special:BlockList|Liosta nan IP baicte]] na bacaidhean a dh'ath-sgrùdadh.",
+'blockipsuccesstext' => 'Chaidh [[Special:Contributions/$1|$1]] a bhacadh.
+<br />Faic [[Special:BlockList|liosta nan IP bacte]] gus sùile a thoirt air na bacaidhean.',
'unblockip' => 'Neo-bhac an cleachdaiche',
'ipusubmit' => 'Thoir air falbh am bacadh seo',
'ipblocklist' => 'Cleachdaichean a chaidh a bhacadh',
'movepagetext' => "Ma chleachdas tu am foirm gu h-ìosal, cuiridh tu ainm ùr air 's gluaisidh tu a h-eachdraidh gu lèir dhan ainm ùr.
Bidh an seann tiotal 'na ath-sheòladh dhan tiotal ùr an uairsin.
'S urrainn dhut ath-sheòladh sam bith a tha a' dol dhan tiotal tùsail ùrachadh leis fhèin.
-Mura dèan thu sin, dèan cinntach gun cuir thu sùil air eagal 's gum bi [[Special:DoubleRedirects|ath-sheòlaidhean dùbailte]] no [[Special:BrokenRedirects|briste]] ann.
+Mura dèan thu sin, dèan cinnteach gun cuir thu sùil air eagal 's gum bi [[Special:DoubleRedirects|ath-sheòlaidhean dùbailte]] no [[Special:BrokenRedirects|briste]] ann.
'S ann ort-sa a tha an t-uallach airson dèanamh cinntach gu bheil na ceanglaichean a' dol dha na h-àitichean ceart.
Thoir an aire '''nach dèid''' an duilleag a ghluasad ma tha duilleag air an tiotal ùr mu thràth ach ma bhios e falamh no 'na ath-sheòladh 's mur eil eachdraidh deasachaidh ann.
'''Rabhadh!'''
Faodaidh seo a bhith 'na atharrachadh mòr ris nach bi dùil air duilleag air a bheil fèill mhòr;
-dèan cinntach gu bheil thu a' tuigsinn dè a' bhuaidh a bhios agad mus dèid thu air adhart.",
+dèan cinnteach gu bheil thu a' tuigsinn dè a' bhuaidh a bhios agad mus dèid thu air adhart.",
'movepagetalktext' => "Thèid an duilleag deasbaireachd a tha co-cheangailte ris a ghluasad 'na cois '''ach:'''
*Ma tha duilleag deasbaireachd nach eil falamh aig an ainm ùr mu thràth, no
*Ma bheir thu air falbh a' chromag on bhogsa gu h-ìosal
'tooltip-summary' => 'Cuir a-steach gearr-chunntas',
# Attribution
-'anonymous' => '{{PLURAL:$1|Cleachdaiche|Cleachdaichean|Cleachdaichean|Cleachdaichean|Cleachdaichean|Cleachdaichean}} gun ainm o {{SITENAME}}',
+'anonymous' => '{{PLURAL:$1|cleachdaiche|cleachdaichean}} gun ainm o {{SITENAME}}',
'siteuser' => 'cleachdaiche {{SITENAME}} $1',
'othercontribs' => 'Stèidhichte air obair le $1.',
'others' => 'eile',
-'siteusers' => '{{PLURAL:$2|chleachdaiche|chleachdaiche|chleachdaiche|chleachdaiche|cleachdaichean|cleachdaiche}} {{SITENAME}} $1',
+'siteusers' => '{{PLURAL:$2|cleachdaiche|cleachdaichean}} {{SITENAME}} $1',
# Browsing diffs
'previousdiff' => '← Mùthadh nas sine',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Páxina',
-'nstab-user' => 'Páxina de {{GENDER:{{BASEPAGENAME}}|usuario|usuaria}}',
+'nstab-user' => 'Páxina de {{GENDER:{{#titleparts:{{BASEPAGENAME}}|1}}|usuario|usuaria}}',
'nstab-media' => 'Páxina multimedia',
'nstab-special' => 'Páxina especial',
'nstab-project' => 'Páxina do proxecto',
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => 'Rexeitouse a súa petición de saír do sistema porque semella que a enviou un navegador roto ou a caché dun proxy.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Erro descoñecido na función mail() do PHP.',
'user-mail-no-addy' => 'Intentou enviar un correo sen enderezo de correo electrónico.',
'user-mail-no-body' => 'Intentou enviar un correo baleiro ou cun corpo curto de máis.',
'prefs-displaywatchlist' => 'Opcións de visualización',
'prefs-diffs' => 'Diferenzas',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'O enderezo de correo electrónico semella válido',
'email-address-validity-invalid' => 'Escriba un enderezo de correo electrónico válido',
'listgrouprights-addgroup-self-all' => 'Pode engadir todos os grupos pola súa propia conta',
'listgrouprights-removegroup-self-all' => 'Pode eliminar todos os grupos pola súa propia conta',
-# E-mail user
+# Email user
'mailnologin' => 'Non existe enderezo para o envío',
'mailnologintext' => 'Debe [[Special:UserLogin|acceder ao sistema]] e ter rexistrado un enderezo de correo electrónico válido nas súas [[Special:Preferences|preferencias]] para enviar correos electrónicos a outros usuarios.',
'emailuser' => 'Enviar un correo electrónico a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}',
'monthsall' => 'todos',
'limitall' => 'todas',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar o enderezo de correo electrónico',
'confirmemail_noemail' => 'Non ten rexistrado ningún enderezo de correo electrónico válido nas súas [[Special:Preferences|preferencias de usuario]].',
'confirmemail_text' => '{{SITENAME}} require que lle dea validez ao seu enderezo de correo electrónico antes de utilizar as funcións relacionadas con el.
'loginlanguagelabel' => 'שפה: $1',
'suspicious-userlogout' => 'בקשתכם לצאת מהחשבון נדחתה כיוון שנראה שהיא נשלחה על ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'שגיאה לא ידועה בפונקציה mail() של PHP',
'user-mail-no-addy' => 'ניסיון לשלוח דוא"ל ללא כתובת דוא"ל.',
'user-mail-no-body' => 'ניסיון לשלוח דוא"ל עם תוכן ריק או קצר מאוד.',
'prefs-displaywatchlist' => 'אפשרויות תצוגה',
'prefs-diffs' => 'הבדלים בין גרסאות',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'כתובת הדואר האלקטרוני נראית תקינה',
'email-address-validity-invalid' => 'יש להקליד כתובת דואר אלקטרוני תקינה',
ייתכן שעליהם לקשר במקום זאת לדף מתאים יותר.<br />
דף נחשב לדף פירושונים אם הוא משתמש בתבנית המקושרת מהדף [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'דפים עם מאפיין דף',
+'pageswithprop-text' => 'הדף הזה נותן רשימה של דפים שמשתמשים במאפיין דף מסוים.',
+'pageswithprop-prop' => 'שם המאפיין:',
+
'doubleredirects' => 'הפניות כפולות',
'doubleredirectstext' => 'בדף הזה מופיעה רשימת דפי הפניה שמפנים לדפי הפניה אחרים.
כל שורה מכילה קישור לשתי ההפניות הראשונות, וכן את היעד של ההפניה השנייה, שהיא לרוב היעד ה"אמיתי" של ההפניה, שההפניה הראשונה אמורה להצביע אליו.
'listgrouprights-addgroup-self-all' => 'הוספת כל הקבוצות לחשבון האישי',
'listgrouprights-removegroup-self-all' => 'הסרת כל הקבוצות מהחשבון האישי',
-# E-mail user
+# Email user
'mailnologin' => 'אין כתובת לשליחה',
'mailnologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] ולהגדיר לעצמכם כתובת דואר אלקטרוני תקינה ב[[Special:Preferences|העדפות המשתמש]] שלכם כדי לשלוח דואר למשתמש אחר.',
'emailuser' => 'שליחת דואר אלקטרוני למשתמש זה',
'monthsall' => 'הכול',
'limitall' => 'הכול',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'אימות כתובת דוא"ל',
'confirmemail_noemail' => 'אין לכם כתובת דוא"ל תקפה המוגדרת ב[[Special:Preferences|העדפות המשתמש]] שלכם.',
'confirmemail_text' => 'אתר זה דורש שתאמתו את כתובת הדוא"ל שלכם לפני שתשתמשו בשירותי הדוא"ל. לחצו על הכפתור למטה כדי לשלוח דוא"ל עם קוד אימות לכתובת הדוא"ל שהזנתם. טענו את הקישור בדפדפן שלכם כדי לאשר שכתובת הדוא"ל תקפה.',
'duration-centuries' => '{{PLURAL:$1|מאה שנה|מאתיים שנה|$1 מאות שנים}}',
'duration-millennia' => '{{PLURAL:$1|אלף שנה|אלפיים שנה|$1 אלפי שנים}}',
+# Unknown messages
+'pageswithprop-legend' => 'דפים עם מאפיין דף',
+'pageswithprop-submit' => 'שליחה',
);
* @file
*
* @author Anjoeli9806
+ * @author Berniemack
* @author Erythrii
* @author Jose77
* @author Kguirnela
'underline-always' => 'Pirmi',
'underline-never' => 'Indi',
-'underline-default' => 'Human na nga iya sang brawser',
+'underline-default' => 'Gintakda sang browser ukon panit',
# Font style option in Special:Preferences
'editfont-style' => 'Ilisan ang laragway sang font sa lugar:',
'newwindow' => '(gabukas sa bag-o nga bintana)',
'cancel' => 'Kanselahon',
'moredotdotdot' => 'Madamo pa...',
-'mypage' => 'Akon panid',
-'mytalk' => 'Akon paghisayranay',
+'morenotlisted' => 'Madamu pa ang wala nalista...',
+'mypage' => 'Akon Panid',
+'mytalk' => 'Paghisayranay',
'anontalk' => 'Paghisayranay sang sining IP address',
'navigation' => 'Nabigayson',
'and' => ' kag',
'vector-action-protect' => 'Pangapinan',
'vector-action-undelete' => 'Dulaon ang pagpanas',
'vector-action-unprotect' => 'Ilisan ang pagpangapin',
-'vector-simplesearch-preference' => 'Sugtan ang mas ginpamaayo nga suhestiyon sa pagpangita (Para sa vector nga panit lamang)',
+'vector-simplesearch-preference' => 'Sugdan ang mas ginpamaayo nga suhestiyon sa pagpangita (Para sa vector nga panit lamang)',
'vector-view-create' => 'Himuon',
'vector-view-edit' => 'Ilisan',
'vector-view-history' => 'Lantawon ang kasaysayan',
'namespaces' => 'Ngalan-espasyo',
'variants' => 'Mga nagkalain-lain',
+'navigation-heading' => 'Menu sang nabigasyon',
'errorpagetitle' => 'Sala/Eror',
'returnto' => 'Balik sa $1.',
'tagline' => 'Halin sa {{SITENAME}}',
'actionthrottled' => 'Ang paghulag ginpunggan',
'actionthrottledtext' => 'Bilang pagpangontra sa span, ginalimitahan ka sa pagbuhat sang sini nga paghulag sa tuman ka damo nga beses sa malip-ot nga tinion, kag naglapaw ka na sa sini nga patakaran.
Palihog tilawan mo liwat pagkatapos sang malip-ot nga tinion.',
-'protectedpagetext' => 'Ang ini nga panid ginpangapinan agod to mapunggan ang pag-ilis sini.',
+'protectedpagetext' => 'Ang ini nga panid ginprotektaran agud mapunggan ang pag-ilis sini.',
'viewsourcetext' => 'Mahimo mo nga makita kag makopya ang ginhalinan sang sini nga panid:',
'viewyourtext' => "Mahimo mo nga makita kag makopya ang ginhalinan sang '''imo mga pagbag-o''' sa sini nga panid:",
'protectedinterface' => 'Ang ini nga panid nagahatag sang mga teksto sang interface para sa software, kag ginapangapinan agod indi maabuso.',
Makapadayon ka sa gihapon sa paggamit sang {{SITENAME}} nga indi makilal-an, ukon mahimo ka man <span class='plainlinks'>[$1 magsulod liwat]</span> bilang amo sa gihapon ukon lain nga nga manug-gamit.
Tandaan nga may mga panid nga mahimo ma-display sa gihapon nga daw nakasulod ka sa gihapon, hasta mapanas mo na ang tinago sang imo brawser.",
+'welcomeuser' => 'Malipayon nga pag-abot. $1!',
+'welcomecreation-msg' => 'Nahimo na ang imo nga account.
+Indi pagkalimtan ang pag-ilis sa imo nga [[Special:Preferences|{{SITENAME}} pagpasulabi]].',
'yourname' => 'Ngalan sang Manog-gamit:',
'yourpassword' => 'Kontra-senyas:',
'yourpasswordagain' => 'Suliton ang kontra-senyas:',
'loginlanguagelabel' => 'Hambalanon: $1',
'suspicious-userlogout' => 'Ang imo pagpangabay nga mag-guha ginpungga bangud nga ini mahimo nga ginpadala sang guba nga brawser ukon sang proksy nga nagapang-tago.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Wala nahibaluan nga sala sa kapuslanan nga sulat() sang PHP.',
'user-mail-no-addy' => 'Gintilawan nga magpadala sang e-mail biskan wala sang e-mail adres.',
+'user-mail-no-body' => 'Nakatilaw magpadala sang email nga waay unod ukon malip-ot katama ang unod sang mensahe.',
# Change password dialog
'resetpass' => 'Ilisan ang pasword',
'changeemail-oldemail' => 'E-mail adres sa subong:',
'changeemail-newemail' => 'Bag-o nga e-mail adres:',
'changeemail-none' => '(wala)',
+'changeemail-password' => 'Ang imong {{SITENAME}} nga password:',
'changeemail-submit' => 'Ilisan and E-mail',
'changeemail-cancel' => 'Kanselahon',
Pwede ka [[Special:Search/{{PAGENAME}}|mangita para sa titulo sang ini nga pahina]] sa iban man nga pahina,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mangita ka sang kaparehas nga logs],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} islan ini nga pahina]</span>.',
-'noarticletext-nopermission' => 'Wala subong sang teksto ang ini nga panid.
+'noarticletext-nopermission' => 'Wala subong sang teksto ang sini nga panid.
Pwede ka [[Special:Search/{{PAGENAME}}|mangita para sa titulo sang ini nga panid]] sa iban man nga panid,
ukon <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mangita ka sang kaparehas nga logs]</span>.',
'missing-revision' => 'Ang ini nga pag-ilis nga #$1 sang panid nga ginhinanglan nga "{{PAGENAME}}" wala naga-eksister.
'edit-already-exists' => 'Indi mahimo ang bag-o nga panid.
Naga-eksister na ini.',
'defaultmessagetext' => 'Teksto sang mensahe nga wala pa ma-ilisan',
+'content-failed-to-parse' => 'Di matuman ang pag-parse $2 nga unod para sa $1 nga modelo: $3',
+'invalid-content-data' => 'May ara sala sa data.',
+'content-not-allowed-here' => '"$1" nga sulod indi pwede sa panid [[$2]]',
+
+# Content models
+'content-model-wikitext' => 'tekstong wiki',
+'content-model-text' => 'tekstong ordinaryo',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Pahibalo:''' Ang ini nga panid may yara sang madamo nga mahal nga pagtawag sang kapusalanan parser.
# Preferences page
'preferences' => 'Mga Ginabasehan',
-'mypreferences' => 'Akon pagpalabi',
+'mypreferences' => 'Mga Ginabasehan',
'prefs-edits' => 'Numero sang mga gin-ilisan:',
'prefsnologin' => 'Wala naka-sulod',
'prefsnologintext' => 'Kinahanglan nga ikaw <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakasulod]</span> agod nga mabuhat ang pag-ilis sang mga ginapalabi.',
'prefs-help-email-others' => 'Mahimo mo man pilion nga ma-kontak ka sang iban paagi sa e-mail paagi sa isa ka link sa imo manuggamit ukon gina-hisayranay nga panid.
Ang imo adres sang e-mail wala ginapakita kon kontakon ka sang iban.',
'prefs-help-email-required' => 'Kinahanglan ang imo e-mail',
+'prefs-info' => 'Tig-una nga impormasyon',
+'prefs-i18n' => 'nternasyonalisasyon',
'prefs-signature' => 'pirma',
+'prefs-dateformat' => 'Porma sang petsa ukon adlaw',
+'prefs-timeoffset' => 'Pagintsakto sa oras',
+'prefs-advancedediting' => 'Mas progresibo nga pilian',
+'prefs-advancedrc' => 'Mas progresibo nga pilian',
+'prefs-advancedrendering' => 'Mas progresibo nga pilian',
+'prefs-advancedsearchoptions' => 'Mas progresibo nga pilian',
+'prefs-advancedwatchlist' => 'Mas progresibo nga pilian',
+'prefs-displayrc' => 'Ipagwa ang mga pagpilian',
+'prefs-displaysearchoptions' => 'Ipagwa ang mga pagpilian',
+'prefs-displaywatchlist' => 'Ipagwa ang mga pagpilian',
+'prefs-diffs' => 'Mga ginalainan',
+
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'Ang nasambit nga e-mail pwede batunon',
+'email-address-validity-invalid' => 'Magsulod sang isa ka mabaton nga e-mail address.',
+
+# User rights
+'userrights' => 'Tagdumala sang mga derecho sang mga tig-gamit',
+'userrights-lookup-user' => 'Tagdumalaon ang mga grupo sang tiggamit',
+'userrights-user-editname' => 'Mag-intra sang isa ka pangalan sang tiggamit:',
+'editusergroup' => 'Lainon ang mga grupo sang tiggamit',
+'editinguser' => "Guinabag-o ang kinamatarong sang naga-usar '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => 'Lainon ang mga grupo sang tiggamit',
+'saveusergroups' => 'Luwason ang mga grupo sang tiggamit',
+'userrights-groupsmember' => 'Kaupod sang:',
+'userrights-groupsmember-auto' => 'Kaupod sang:',
+'userrights-groups-help' => 'Pwede nyo lainon ang mga grupo sang tiggamit sini sa:
+* Kahon nga may ara check nga nagasiling ang tiggamit amo nga kaupod sa grupo.
+* Kahot nga wala sing check nagasiling nga indi kaupod ang tiggamit sa grupo.
+* Ginaindikar sang * nga ginadilian na ang pagpanas sa grupo kon imo na ni nga gindugang, ukon ang suli sini.',
+'userrights-reason' => 'Rason:',
+'userrights-no-interwiki' => 'Wala ka permiso nga lainon ang layi sang tiggamit sa iban nga mga wiki.',
+'userrights-nodatabase' => 'Wala nagagwa ang datos $1 ukon indi ini lokal.',
+'userrights-nologin' => 'Kinahanglang [[Special:UserLogin|log in]] pinaagi sa isa account nga tagdumala para matagaan sang derecho sang tiggamit.',
+'userrights-notallowed' => 'Ang imo nga account waay sing permiso para magdugang ukon magpanas sang kinamatarong sang mga naga-usar.',
+'userrights-changeable-col' => 'Mga grupo nga pwede mong baguhon.',
+'userrights-unchangeable-col' => 'Mga grupo nga indi mo pwede baguhon.',
# Groups
'group' => 'Grupo:',
+'group-user' => 'Mga Naga-usar',
+'group-autoconfirmed' => 'Mga naga-usar nga awtomatikong guinkompirma',
+'group-bot' => 'Mga bot',
'group-sysop' => 'Mga Administrador',
-
+'group-bureaucrat' => 'Mga byurokratiko',
+'group-all' => '(tanan)',
+
+'group-user-member' => '{{GENDER:$1|naga-usar}}',
+'group-autoconfirmed-member' => '{GENDER:$1|naga-usar nga awtomatikong nakompirma}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|tagdumala}}',
+'group-bureaucrat-member' => '{{GENDER:$1|byurokratiko}}',
+'group-suppress-member' => '{{GENDER:$1|oversight}}',
+
+'grouppage-user' => '{{ns:project}}:Mga Naga-usar',
+'grouppage-autoconfirmed' => '{{ns:project}}:Mga naga-usar nga awtomatikong nakompirma.',
+'grouppage-bot' => '{{ns:project}}:Bots',
'grouppage-sysop' => '{{ns:project}}:Mga Administrador',
+'grouppage-bureaucrat' => '{{ns:project}}:Mga Byurokratiko',
# Rights
'right-read' => 'Basahan ang panid',
'right-edit' => 'Ilisan ang panid',
+'right-createpage' => 'Maghimo sang mga panid (nga indi mga panid sang diskusyon)',
+'right-createtalk' => 'Maghimu sang mga panid para sa diskusyon.',
+'right-createaccount' => 'Maghimu sang bag-o nga mga accounts para sa mga naga-usar',
+'right-minoredit' => 'Markahan kon gamay ukon dyutay lang ang guinbag-o sa unod.',
+'right-move' => 'Saylohon ining panid:',
+'right-move-subpages' => 'Saylohon ang mga panid lakip sa mga panid nga kaupod sini',
+'right-move-rootuserpages' => 'Saylohon ang mga panid nga gingikanan.',
+'right-movefile' => 'Isaylo ang mga dokumento ukon files.',
+'right-suppressredirect' => 'Indi makahimu sang isa ka pagsaylo halin sa mga daan nga nalan kon ginasaylo na sa isa ka panid.',
+'right-upload' => 'Magkarga sang mga files',
+'right-reupload' => 'Islan ang mga naga-eksistar nga mga files.',
+'right-reupload-own' => 'Islan ang mga files nga ginkarga sang iya kaugalingon.',
+'right-reupload-shared' => 'Islan ang mga files sa ginabahin nga bulutangan sang midya sa lokal.',
+'right-upload_by_url' => 'Magkarga sang mga files ukon dokumento halin sa isa ka URL address.',
+'right-purge' => 'Limpyuha ang bulutangan sang site para sa isa ka panid nga waay sing kumpirmasyon',
+'right-autoconfirmed' => 'Islan ang mga panid nga ginprotektar dyutay.',
+'right-bot' => 'Mahimo nga isa ka proseso nga awtomatiko',
+'right-nominornewtalk' => 'Wala nga dyutay nga pagbag-o sa mga panid sang diskusyon para makasugod sang isa ka abiso nagasiling nga may bag-ong mensahe.',
+'right-apihighlimits' => 'Mag-usar sang mas mataas nga limitasyon para sa mga pamangkot sa API.',
+'right-writeapi' => 'Pag-usar sang ginsulat nga API',
+'right-delete' => 'Panason ang panid',
+'right-bigdelete' => 'Panason ang mga panid nga may daku nga maragtas',
+'right-deletelogentry' => 'Panason kag indi panason ang mga partikular nga mga log entries',
+'right-deleterevision' => 'Panason kag indi panason ang mga partikular nga mga pagbag-o sang mga panid.',
+'right-deletedhistory' => 'Tan-awa ang mga ginpanas nga mga entries nga waay kaupod nga teksto.',
+'right-deletedtext' => 'Tan-awa ang napanas nga mga teksto kag pagbag-o sa tunga sang duha ka rebisyon.',
+'right-browsearchive' => 'Pangitaa ang mga ginpanas nga mga panid',
+'right-undelete' => 'Buhion liwat ang isa ka panid.',
+'right-suppressrevision' => 'Liwaton kag ibalik ang mga pagbag-o nga gintago halin sa mga tagdumala.',
+'right-suppressionlog' => 'Tan-awon ang mga pribadong log.',
+'right-block' => 'Indi pasugtan ang iban nga mga naga-usar sa pagbag-o',
+'right-blockemail' => 'Indi pasugtan ang isa ka naga-usar para magpadala sang email.',
+'right-hideuser' => 'Indi pasugta ang ang isa ka naga-usar kag itago ini halin sa publiko.',
+'right-ipblock-exempt' => 'Indi pag-agihan ang mga indi ginpasugtan nga mga IP blocks, auto blocks kag range blocks.',
+'right-proxyunbannable' => 'Indi pagagihan ang mga awtomatiko nga pagharang sang mga proxies.',
+'right-unblockself' => 'Panason ang pagkaharang sa ila kaugalingon',
+'right-protect' => 'Islan ang grado sang proteksyon kag baguhon ang mga ginprotektar nga mga panid',
+'right-editprotected' => 'Baguhon ang mga panid nga ginprotekta (waay sing proteksyon nga de-grado)',
+'right-editinterface' => 'Baguhon ang user interface.',
+'right-editusercssjs' => 'Baguhon ang mga CSS kag Javascript nga files sang iban nga naga-usar.',
+'right-editusercss' => 'Baguhon ang mga CSS files sang iban nga naga-usar.',
+'right-edituserjs' => 'Baguhon ang mga Javascript files sang iban nga mga naga-usar.',
+'right-rollback' => 'Dasigay nga ibalik sa nahauna nga estado ang mga pagbag-o sang ulihi nga naga-usar nga nabag-o sa isa ka partikular nga panid.',
+'right-markbotedits' => 'Markahan ang mga rolled back nga mga ginbag-o bilang mga ginbag-o sang mga bot.',
+'right-noratelimit' => 'Indi maapektuhan sang mga limitasyon.',
+'right-import' => 'Mag-importe sang mga panid halin sa iban nga wikis',
+'right-importupload' => 'Mag-importe sang mga panid halin sa pagkarga sang files',
+'right-patrol' => 'Markahan bilang "ginabantayan" ang mga pagbag-o sang iban.',
+'right-autopatrol' => 'Awtomatikong markahan nga ginabantayan ang mga pagbag-o sa sarili.',
+'right-patrolmarks' => 'Tan-awa ang mga sining karon lamang nga mga ginbag-o kag markahan ini nga ginabantayan',
+'right-unwatchedpages' => 'Tan-awa ang listahan sang mga indi ginabantayan nga mga panid',
+'right-mergehistory' => 'Tingbon ang mga maragtas sang mga panid',
+'right-userrights' => 'Baguhon ang tanan nga kinamatarong sang mga naga-usar',
+'right-userrights-interwiki' => 'Bagohon ang kinamatarong sang mga naga-usar sa iban nga mga wiki.',
+'right-siteadmin' => 'Isira kag abrihan ang bulutangan sang mga impormasyon',
+'right-override-export-depth' => 'Ipagwa ang mga panid kaupod ang mga sugpon nga mga panid tubtub isa idalum nga 5.',
+'right-sendemail' => 'Magpadala sang email sa iban nga naga-usar',
+'right-passwordreset' => 'Tan-awa ang mga email sang password reset',
# Special:Log/newusers
'newuserlogpage' => 'Naga-usar nga ginhimo log',
+'newuserlogpagetext' => 'Ini ang isa ka log sang mga ginhimo sang naga-usar',
# User rights log
'rightslog' => 'Karapatan sang naga-usar log',
+'rightslogtext' => 'Ini ang lista sang mga ginbag-o nga mga kinamatarong sang naga-usar.',
# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'Basahon ang ini nga panid',
'action-edit' => 'islan ini nga pahina',
+'action-createpage' => 'Maghimo sang mga panid',
+'action-createtalk' => 'Maghimo sang mga panid sang mga diskusyon.',
+'action-createaccount' => 'Himuon ini sang account sang naga-gamit.',
+'action-minoredit' => 'Markahan ang sini nga pagbag-o nga dyutay ukon gamay lang',
+'action-move' => 'Isaylo ang sini nga panid',
+'action-move-subpages' => 'Isaylo ang sini nga panid, lakip na sa mga panid nga kaupod sini',
+'action-move-rootuserpages' => 'Isaylo ang mga panid nga guingikanan',
+'action-movefile' => 'Isaylo sini nga file',
+'action-upload' => 'Kargahon sini nga file',
+'action-reupload' => 'Lainon ang naga-eksistar na nga file',
+'action-reupload-shared' => 'Lainon ang mga file sa bulutangan nga ginabahin',
+'action-upload_by_url' => 'Ikarga sini nga file halin sa isa ka URL',
+'action-writeapi' => 'Pag-usar sang ginsulat nga API',
+'action-delete' => 'Panason ini nga pahina',
+'action-deleterevision' => 'Panason ang sini nga pagbag-o',
+'action-deletedhistory' => 'Tan-awon ang ginpanas nga maragtas sang sini nga panid',
+'action-browsearchive' => 'Pangitaa ang mga ginpanas nga mga panid',
+'action-undelete' => 'Indi panason ang sini nga panid',
+'action-suppressrevision' => 'Ireview kag ibalik ang mga gintago nga mga rebisyon',
+'action-suppressionlog' => 'Tan-awa ang sini nga pribado nga log.',
+'action-block' => 'Indi pasugtan ang iban nga mga naga-usar sa pagbag-o',
+'action-protect' => 'Baguhon ang nibel sang proteksyon para sa sini nga panid',
+'action-rollback' => 'Dasigay nga ibalik sa nahauna nga estado ang mga pagbag-o sang ulihi nga naga-usar nga nabag-o sa isa ka partikular nga panid.',
+'action-import' => 'Importehon ang sini nga panid halin sa iban nga wiki',
+'action-importupload' => 'Importehon ang sini nga panid halin sa ginkarga nga file',
+'action-patrol' => 'Markahan bilang "ginabantayan" ang mga pagbag-o sang iban.',
+'action-autopatrol' => 'Markahan bilang "ginabantayan" ang imo nga mga ginhimo nga pagbag-o',
+'action-mergehistory' => 'Tingbon ang mga maragtas sang mga panid',
+'action-userrights' => 'Baguhon ang tanan nga kinamatarong sang mga naga-usar',
+'action-userrights-interwiki' => 'Bagohon ang kinamatarong sang mga naga-usar sa iban nga mga wiki.',
+'action-siteadmin' => 'Isira kag abrihan ang bulutangan sang mga impormasyon',
+'action-sendemail' => 'Magpadala sang mga email',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|bag-ohon|mga ginbag-o}}',
'recentchanges' => 'Mga Bag-o nga Inislan',
'recentchanges-legend' => 'Mga pililian sa bag-o lang na himo',
+'recentchanges-summary' => 'La-uton ang pina gid ka bag-o nga nahimo sa may wiki sa ini nga feed',
'recentchanges-feed-description' => 'La-uton ang pina gid ka bag-o nga nahimo sa may wiki sa ini nga feed.',
+'recentchanges-label-newpage' => 'Ang sini nga pagbag-o nakahimo sang bag-o nga panid',
'recentchanges-label-minor' => 'Diotay ilis ini',
+'recentchanges-label-bot' => 'Ang sini nga pagbag-o ginubra sang isa ka bot',
+'recentchanges-label-unpatrolled' => 'Ang sini nga pagbag-o indi pa ginbantayan',
'rcnote' => "Diri sa idalum {{PLURAL:$1|ay '''1''' na bag-o|sang nagligad '''$1''' mga nabag-o}} sa naligad {{PLURAL:$2|adlaw|'''$2''' adlaw}}, sang mga $5, $4.",
+'rcnotefrom' => "Yara sa idalum ang mga guinbag-o halin '''$2''' (tubtub '''$1''' ang ginpagwa).",
'rclistfrom' => 'Ipakita ang bag-o lang nahimo halin sa $1',
'rcshowhideminor' => '$1 menor nga mga inislan',
'rcshowhidebots' => '$1 bots',
'rcshowhideliu' => '$1 mga ga-usar nga naka sulod',
'rcshowhideanons' => '$1 di nagpakilala nga mga ga-usar',
+'rcshowhidepatr' => '$1 ginabantyan nga pagbag-o',
'rcshowhidemine' => '$1 akon mga inislan',
'rclinks' => 'Ipakita ang nagligad $1 nga nabag-o lang sang $2 adlaw<br />$3',
'diff' => 'diff',
'minoreditletter' => 'm',
'newpageletter' => 'B',
'boteditletter' => 'b',
+'number_of_watching_users_pageview' => '[$1 ginabantayan {{PLURAL:$1|naga-usar|mga naga-usar}}]',
+'rc_categories' => 'Limitahan ang mga kategorya (ibulag lakip sang "|")',
+'rc_categories_any' => 'Bisan ano',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte|mga bytes}} despues sang pagbag-o',
+'newsectionsummary' => '/* $1 */ bag-o nga seksyon',
'rc-enhanced-expand' => 'Ipakita ang mga detalye (nagakilanlan sang JavaScript)',
'rc-enhanced-hide' => 'Tagu-on ang mga detalye',
+'rc-old-title' => 'orihinal nga ginhimo bilang "$1"',
# Recent changes linked
'recentchangeslinked' => 'May labot nga pag-ilis',
'recentchangeslinked-feed' => 'May labot nga pag-ilis',
'recentchangeslinked-toolbox' => 'May labot nga pag-ilis',
'recentchangeslinked-title' => 'Mga ginlain nga kapareho kay "$1"',
+'recentchangeslinked-noresult' => 'Wala mga pagbag-o sa mga sugpon nga mga panid sa ginhatag nga tiempo.',
'recentchangeslinked-summary' => "Ini ang mga lista sang mga bag-o lang gid nga nahimo nga mga pahina nga gintabid halin sa gin klaro nga pahina (o mga katapo sa mga kategorya nga gin klaro).
Mga Pahina sa [[Special:Watchlist|imo lista-lantaw]] ay '''dukot'''.",
'recentchangeslinked-page' => 'Ngalan ka Pahina:',
# Upload
'upload' => 'Uplod file',
'uploadbtn' => 'Karga file',
+'reuploaddesc' => 'Kanselahon ang pag-karga kag magbalik sa porma sang pag-karga.',
+'upload-tryagain' => 'Ipasa ang ginlarawan nga ginbag-o nga file',
'uploadnologin' => 'Wala naka-sulod',
+'uploadnologintext' => 'Kinahanglan [[Special:UserLogin|nakalagda]] para makarga ang mga files.',
+'upload_directory_missing' => 'Nadula ang direktoryo sang pag-karga ($1) kag indi na ini mahimo sang webserver.',
+'upload_directory_read_only' => 'Ang direktoryo sang pag-karga ($1) indi pwede masulat sang webserver.',
+'uploaderror' => 'May sala sa pag-karga',
+'upload-recreate-warning' => "'''Abiso: Ang isa ka file nga amo ang iya ngalan ginpanas na ukon ginsaylo'''
+
+Ang log sang pagpanas kag pagsaylo para sa sini nga panid ginahatag diri para sa imo nga kombinyensya.",
+'uploadtext' => "Usaron ang porma sa idalum para makakarga sang mga file. Para matan-aw ukon mapangita ang mga file nga ginkarga na, kadto sa:[Special:FileList|lista sang mga files nga ginkarga]], ang mga ginkarga liwat nakalista sa: [[Special:Log/upload|lista sang mga ginkarga]], ang mga ginpanas [[Special:Log/delete|lista sang mga ginpanas]].
+
+Para maupod ang isa ka file sa isa ka panid, usaron ang sini nga sugpon sa mga masunod nga mga porma:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' para mausar ang bilog nga bersyon sang file
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' para mausar ang isa ka 200 ka pixel nga mas pinalapad nga bersyon sa isa ka karton sa wala nga bahin lakip ang 'alt teksto' bilang paglarawan
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' para direkta nga masugpunan ang file, bisan indi na ini ipagwa.",
+'upload-permitted' => 'Mga ginpasugtan nga mga tipo sang files: $1',
+'upload-preferred' => 'Mga mas gusto nga mga tipo sang mga file: $1',
+'upload-prohibited' => 'Mga ginadilian nga mga tipo sang mga files: $1',
+'uploadlog' => 'Lista sang mga ginkarga',
'uploadlogpage' => 'Uplod log',
+'uploadlogpagetext' => 'Ara sa idalum ang listahan sang pinakaulihi nga mga ginkarnga nga mga files: [[Special:NewFiles|gallery of new files]] para sa mas biswal nga pagtan-aw.',
+'filename' => 'Ngalan sang file',
'filedesc' => 'Kabilogan',
'fileuploadsummary' => 'Kabilogan:',
+'filereuploadsummary' => 'Mga pagbag-o sang file:',
+'filestatus' => 'Ang estado sang copyright:',
+'filesource' => 'Guinghalinan:',
+'uploadedfiles' => 'Mga ginkarga nga file',
+'ignorewarning' => 'Indi pagsapaka ang abiso kag basta luwason lang ang file',
+'ignorewarnings' => 'Indi pagsapaka ang tanan nga mga abiso',
+'minlength1' => 'Kinahanglan may ara isa ka letra para sa ngalan sang file.',
+'illegalfilename' => 'Ang ngalan sang file "$1" may ara nga mga karakter nga ginadilian sa mga titulo sang mga panid. Palihug maghatag sang iban nga ngalan sa file kag kargahon ini liwat.',
+'filename-toolong' => 'Ang mga ngalan sang files indi pwede masubra sa 240 ka bytes.',
+'badfilename' => 'Ang ngalan sang file ginbag-o bilang "$1".',
+'filetype-mime-mismatch' => 'Ang sugpon sang file ".$1" indi nagaparehas sa na nabal-an nga tipo nga MIME sang file ($2).',
+'filetype-badmime' => 'Ginadilian ang pagkarga sang mga files nga may tipo nga MIME "$1"',
+'filetype-bad-ie-mime' => 'Indi makarga ang sini nga file tungod ang Internet Explorer gindetect ini bilang "$1", nga ginadilian kag isa ka potensyal nga file nga makahalit.',
+'filetype-unwanted-type' => "Isa ka indi gusto nga tipo sang file ang '''\".\$1\"'''
+Ang gusto nga {{PLURAL:\$3|tipo sang file amo|mga tipo sang file amo ang}} \$2.",
'empty-file' => 'Ang dokumeto ginapadala mo wala unod.',
'file-too-large' => 'Ang dokumeto ginapadala mo madako gid.',
'filename-tooshort' => 'Ang ngalan sang dokumento malipot gid.',
'uploadedimage' => 'na-uplod "[[$1]]"',
'watchthisupload' => 'Bantayan ining panid',
+'license' => 'Pagpanglisensya',
'license-header' => 'Pagpanglisensya',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Historya file',
'filehist-help' => 'I-klik sa may petsa/oras para makita ang file sa ina nga oras.',
+'filehist-revert' => 'Ibalik',
'filehist-current' => 'subong',
'filehist-datetime' => 'Petsa/Oras',
'filehist-thumb' => 'Thumbnail',
'filehist-user' => 'Naga-usar',
'filehist-dimensions' => 'Mga Takus',
'filehist-comment' => 'Komentar',
-'imagelinks' => 'File Tabid',
+'imagelinks' => 'Pagusar sang file',
'linkstoimage' => 'Ang nagakasunod {{PLURAL:$1|pahina nga mga tabid|$1 mga pahina mga tabid}} sa sini nga file:',
+'nolinkstoimage' => 'Waay sing panid nga nakasugpon sa sini nga file.',
'sharedupload' => 'Ini nga file gikan sa $1 kag pwede ma usar sang iban nga mga proyekto.',
+'sharedupload-desc-here' => 'Ang sini nga file amo halin sa $1 kag pwede ini mausar sa lain nga mga proyekto. Ang ginalarawan sang iya nga [$2 panid sang paglarawan sang file] amo ang ginpagwa sa idalum.',
'uploadnewversion-linktext' => 'Uplod sang bag-o nga bersiyon sang sini nga file',
# File deletion
# Statistics
'statistics' => 'Mga Statistik',
+'disambiguationspage' => 'Template:disambig',
+
'brokenredirects-edit' => 'ilisan',
'brokenredirects-delete' => 'panason',
'nmembers' => '$1 {{PLURAL:$1|membro|mga membro}}',
'popularpages' => 'Ang panid nagakilala gid',
'prefixindex' => 'Tanan nga mga pahina nga may-ara prefiks',
+'usercreated' => '{{GENDER:$3|Ginhimo}} sa $1 kag $2',
'newpages' => 'Mga Bag-o nga Pahina',
'newpages-username' => 'Ngalan sang Manog-gamit:',
'move' => 'Saylohon',
'allpagesnext' => 'Dason',
'allpagessubmit' => 'Sige',
+# Special:Categories
+'categories' => 'Mga kategorya',
+
# Special:LinkSearch
'linksearch' => 'Eksternal na mga tabid',
'linksearch-ok' => 'Pangita-a',
+'linksearch-line' => '$1 amo nakasugpon sa $2',
# Special:ListGroupRights
'listgrouprights-group' => 'Grupo',
'listgrouprights-members' => '(lista sang mga membro)',
-# E-mail user
+# Email user
'emailuser' => 'I-email ini nga naga-usar',
# Watchlist
-'watchlist' => 'Akon Ginabantayan',
-'mywatchlist' => 'Akon Ginabantayan',
+'watchlist' => 'Ginabantayan',
+'mywatchlist' => 'Ginabantayan',
+'watchlistfor2' => 'Para sa $1 $2',
'watchnologin' => 'Wala naka-sulod',
'addedwatchtext' => "Ang pahina \"[[:\$1]]\" ay nadugang sa imo [[Special:Watchlist|lista sang pagtan-aw]].
Buwas-damlag nga pagbag-o sang pahina kag ang iya upod na hisayrany pahina ay ipagalista didto, kag ang pahina magapakita balang '''dukot''' sa may [[Special:RecentChanges|lista sang mga bag-o lang na-islan]] para mahapos lang ini kuhaon.",
'confirmdeletetext' => 'Ikaw ay magapanas sang pahina upod sang tanan niya nga historya.
Palihog lang nga sigurado nga kinagusto mo ini nga himuon, nga na-intindihan mo ang resulta sang ginahimo mo, kag ang gina obra mo ga santo upod sa [[{{MediaWiki:Policy-url}}|polisiya]].',
'actioncomplete' => 'Kompleto nga aksiyon',
+'actionfailed' => 'Indi madinalag-on ang paghulag',
'deletedtext' => '"$1" ay nakakas na.
Lantawa $2 para sa mga lista sang mga bag-o lang ginkakas.',
'dellogpage' => 'Ginkakas na log',
# Undelete
'undeletelink' => 'tan-aw/ginbalik',
+'undeleteviewlink' => 'Tan-awa',
'undelete-search-submit' => 'Pangita-a',
# Namespace form on various pages
'blanknamespace' => '(Mayor)',
# Contributions
-'contributions' => 'Naga-usar nga mga kontribusyon',
+'contributions' => 'Mga kontribusyon sang {{GENDER:$1|naga-usar}}',
'contributions-title' => 'Mga Kontribusyon sang Naga-Usar para $1',
-'mycontris' => 'Akon contribusyon',
+'mycontris' => 'Kontribusyon',
'contribsub2' => 'Para $1 ($2)',
'uctop' => '(ibabaw)',
'month' => 'Halin sa bulan (kag sang timprano):',
'sp-contributions-newbies' => 'Ipakita ang mga kontribusyon sang mga bag-o nga akawnts lamang',
'sp-contributions-blocklog' => 'pugong log',
+'sp-contributions-uploads' => 'Mga ginkarga',
+'sp-contributions-logs' => 'Mga lista',
'sp-contributions-talk' => 'Hisayranay',
'sp-contributions-search' => 'Mangita para sa mga knotribusyon',
'sp-contributions-username' => 'IP Adres ukon ngalan sang naga-user:',
+'sp-contributions-toponly' => 'Ipagwa lang ang mga ginbag-o nga mga ulihi nga rebisyon',
'sp-contributions-submit' => 'Pangita-a',
# What links here
'whatlinkshere-title' => 'Mga pahina nga naga tabid sa $1',
'whatlinkshere-page' => 'Pahina:',
'linkshere' => "Ang mga sumunod nga pahina ay nagatabid sa '''[[:$1]]''':",
+'nolinkshere' => "Waay panid nga nakasugpon sa '''[[:$1]]'''.",
'isredirect' => 'pahina sa ginadirekta liwat',
'istemplate' => 'transklusyon',
-'isimage' => 'laragway tabid',
+'isimage' => 'Ang sugpon sang file',
'whatlinkshere-prev' => '{{PLURAL:$1|antes|antes $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|dasun|dasun $1}}',
'whatlinkshere-links' => '← mga tabid',
'whatlinkshere-hideredirs' => '$1 mga gin direkta liwat',
'whatlinkshere-hidetrans' => '$1 mga transklusyon',
'whatlinkshere-hidelinks' => '$1 mga tabid',
+'whatlinkshere-hideimages' => '$1 sugpon sang file',
'whatlinkshere-filters' => 'Mga Sala-an',
# Block/unblock
'blockip' => 'i-Pugong ang naga-usar',
'ipbreason' => 'Rason:',
+'ipbother' => 'Iban nga oras:',
'ipboptions' => '2 oras:2 hours,1 adlaw:1 day,3 adlaw:3 days,1 semana:1 week,2 semana:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tu-ig:1 year,wala katapusan:infinite',
+'ipbotheroption' => 'lain',
+'ipbotherreason' => 'Iban ukon dugang nga rason:',
+'ipbhidename' => 'Itago ang ngalan sang tiggamit sa mga pagbag-o kag mga listahan.',
'ipblocklist' => 'Napunggan nga mga manug-usar',
+'blocklist-rangeblocks' => 'Itago ang mga bloke sang ginasakupan',
+'blocklist-reason' => 'Rason:',
'ipblocklist-submit' => 'Pangita-a',
+'emailblock' => 'Gintapna ang e-mail',
'blocklink' => 'harang',
'unblocklink' => 'di pagpugong',
'change-blocklink' => 'pagbag-o sang pugong',
'unblocklogentry' => 'di pagpugong $1',
'block-log-flags-nocreate' => 'paghimo sang akawnt ay gin untat',
+# Developer tools
+'lockconfirm' => 'Huo, gusto ko gid isirado ang bulutangan sang impormasyon.',
+'unlockconfirm' => 'Huo, gusto ko gid abrihon ang bulutangan sang impormasyon.',
+'lockbtn' => 'Isira ang bulutangan sang impormasyon.',
+'unlockbtn' => 'Abrihon ang bulutangan sang impormasyon.',
+
# Move page
'move-page-legend' => 'Saylohon ining panid',
'movepagetext' => "Sa pagamit sang lista sa idalum ay magahatag ini sang bag-o na ngalan, pagasaylohon niya ang tanan nga historya sa bag-o nga ngalan.
# Export
'export' => 'Eksport sa mga pahina',
+'exporttext' => 'Pwede mo ipagwa ang isa ka teksto kag lainon ang maragtas sang isa ka partikular nga panid ukon grupo sang mga panid nga nakabutang sa XML. Pwede ini ipagwa sa iban nga wiki pinaagi sa MediaWiki [[Special:Import|pahinang angkat]].
+
+Para magwa ang mga panid, isulod ang titulo sa text box sa idalum, isa ka titulo tagsa kurit, kag pilion kon gusto mo ang subong nga bersyon ukon ang mga daan nga bersyon, kaupod ang mga panid sang maragtas, ukon ang subong nga bersyon kaupod ang impormasyon sang mga pinakaulihi nga guinbag-o.
+
+Sa ulihi nga kaso, pwede ka magusar sang isa ka sugpon, tulad sa [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para sa panid "[[{{MediaWiki:Mainpage}}]]".',
+'exportall' => 'Ipagwa tanan nga mga panid',
# Namespace 8 related
'allmessages' => 'Mga mensahe sang sistema',
+'allmessagesname' => 'Ngalan',
+'allmessagesdefault' => 'Ang gindestino nga teksto',
# Thumbnails
'thumbnail-more' => 'Padaku-on',
+'thumbnail_error' => 'May ara sala sa paghimo sang thumbnail: $1',
+
+# Special:Import
+'import-options-wrong' => 'Sala {{PLURAL:$2|pili|mga pagpilian}}: <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'Ang ginhatag nga gingikanan nga panid indi mabaton ang iya nga titulo.',
+'import-rootpage-nosubpage' => 'Ang espasyo sang ngalan nga "$1" nga gingikanang panid indi ginapasugtan ang kaupod nga mga panid.',
+
+# Import log
+'importlogpage' => 'Listahan sang mga importe',
+'importlogpagetext' => 'Mga importeng administratibo sang mga panid nga may maragtas sang pagbag-o halin sa iban nga wiki.',
+
+# JavaScriptTest
+'javascripttest-pagetext-frameworks' => 'Palihug pilion ang isa sa mga masunod nga mga testing frameworks: $1',
+'javascripttest-pagetext-skins' => 'Pilion ang isa ka panit para magdalagan sa imo nga eksamin:',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Ang imo kaugalingon nga pahina',
+'tooltip-pt-anonuserpage' => 'Ang panid sang tiggamit para sa IP address imo ginbag-o bilang',
'tooltip-pt-mytalk' => 'Ang imo pahina sang paghisayranay',
+'tooltip-pt-anontalk' => 'Istorya kapin sa mga pagbag-o nga ginhimo sa ip address nga ini',
'tooltip-pt-preferences' => 'Akon pagpalabi',
'tooltip-pt-watchlist' => 'Ang lista sang mga pahina nga imo ginabantayan para bag-ohon',
'tooltip-pt-mycontris' => 'Lista sang imo kontribusyon',
'tooltip-pt-login' => 'Gina-abi-abi ikaw nga man magsulod paagi sa pag log-in, apang indi ini kinahanglan gid buhaton',
+'tooltip-pt-anonlogin' => 'Ginasuportahan ka nga magsulod, ugaling indi ini kinahanglan.',
'tooltip-pt-logout' => 'Mag guha',
'tooltip-ca-talk' => 'Paghisayranay nahanungod sini nga panid',
'tooltip-ca-edit' => 'Puede nimo islan ang unod sang sini nga panid. Palihog gamit sang preview button antes permanentehon ang gin ilisan.',
Pwede mo matan-aw ang iya ginhalinan',
'tooltip-ca-history' => 'Nagligad nga rebisyon sa sini nga pahina',
'tooltip-ca-protect' => 'Protektahan ini nga pahina',
+'tooltip-ca-unprotect' => 'Ilisan ang pagpangapin sa sini nga panid',
'tooltip-ca-delete' => 'Panason ini nga pahina',
+'tooltip-ca-undelete' => 'Ibalik ang mga paglain nga ginhimo sa panid nga ini antes nga ini ginpanas.',
'tooltip-ca-move' => 'Saylohon ining panid',
'tooltip-ca-watch' => 'I-dugang ini nga pahina sa imo listahan sang palangitaon',
'tooltip-ca-unwatch' => 'Kuhaon ini nga pahina sa imo lista sang ginabantayan',
'tooltip-t-permalink' => 'Permanente nga tabid sa sini nga rebisyon sang pahina',
'tooltip-ca-nstab-main' => 'Tan-awon ang unod sang pahina',
'tooltip-ca-nstab-user' => 'Tan-awon ang pahina sang naga-usar',
+'tooltip-ca-nstab-media' => 'Tan-awon ang panid sang midya.',
'tooltip-ca-nstab-special' => 'Espesyal ini nga pahina, indi mo ini ma islan sang iya kaugalingon nga pahina',
'tooltip-ca-nstab-project' => 'Tan-awon ang pahina ka proyekto',
'tooltip-ca-nstab-image' => 'Tan-awon ang pahina sang file',
+'tooltip-ca-nstab-mediawiki' => 'Tan-awon ang mensahe sang sistema',
'tooltip-ca-nstab-template' => 'Tan-awon ang templeyt',
+'tooltip-ca-nstab-help' => 'Tan-awon ang panid sang bulig',
'tooltip-ca-nstab-category' => 'Tan-awon ang pahina nga kategorya',
'tooltip-minoredit' => 'Markahan ini bilang menor nga pag-ilis',
'tooltip-save' => 'Permanentehon ang imo gin islan',
'tooltip-diff' => 'Ipakita ang mga bag-o nga nahimo mo sa teksto',
'tooltip-compareselectedversions' => 'Lantawa ang ginalian sang duwa ka napilian nga rebisyon sa sini nga pahina',
'tooltip-watch' => 'Idugang ini nga pahina sa imo lista nga ginabantayan',
+'tooltip-watchlistedit-normal-submit' => 'Pagpanason ang mga titulo',
+'tooltip-watchlistedit-raw-submit' => 'Iupdate ang listahan sang mga ginatan-aw.',
+'tooltip-recreate' => 'Liwat nga himuon ang panid bisan ini napanas na',
+'tooltip-upload' => 'Sugdan ang pagkarga',
'tooltip-rollback' => '"Panumbalik" ginabalik ang (mga) na-islan sa sini nga pahina sa pinaka ulihi nga kontributor sa isa lang ka klik',
'tooltip-undo' => '"Indi pag-obrahon" ginabalik ang gin-islan kag gabukas sa isaln form sa may prebyu mode.
Gapasugot sa pagdugang sang rason sa kabilugan.',
+'tooltip-preferences-save' => 'kon pagpalabi',
'tooltip-summary' => 'Maghatag sing diutay nga eksplikasyon',
+# Metadata
+'notacceptable' => 'Indi makahatag sang impormasyon ang serbidor sang wiki sa porma nga mabasahan sang imo nga kliyente.',
+
+# Attribution
+'anonymous' => 'Indi kilala {{PLURAL:$1|tagagamit|mga tagagamit}} sang {{SITENAME}}',
+'siteuser' => 'Tiggamit {{SITENAME}} sang $1',
+
# Browsing diffs
'previousdiff' => '← Mas daan nga na-islan',
'nextdiff' => 'Mas bag-o nga gin-islan →',
Kung ang ini nga file ginliwat halin sa orihinal nga porma, basi indi gina pakita ang naliwat nga file sang iban nga mga detalye.',
'metadata-expand' => 'Ipakita ang mga dugang nga detalye',
'metadata-collapse' => 'Tagu-on ang mga dugang nga detalye',
-'metadata-fields' => 'EXIF metadata fields nga nalista sa ini nga mensahe ay pagadal-on sa mga laragway nga gina pakita sa pahina kun ang metadata table ay narumpag.
+'metadata-fields' => 'Ang mga imahen sang EXIF metadata fields nga nalista sa ini nga mensahe ay pagadal-on sa mga laragway nga gina pakita sa pahina kun ang metadata table ay narumpag.
Ang iban ay pagataguon sang default.
-* make
-* model
+* himo
+* modelo
* datetimeoriginal
-* exposuretime
+* tyempo sang exposure
* fnumber
* isospeedratings
* focallength
-* artist
+* artista
* copyright
* imagedescription
* gpslatitude
* gpslongitude
* gpsaltitude',
+# EXIF tags
+'exif-lightsource' => 'Ginghalinan sang sanag',
+'exif-flash' => 'Igpat',
+'exif-subjectarea' => 'Subject area',
+'exif-flashenergy' => 'Kabaskug sang igpat',
+'exif-focalplaneyresolution' => 'Resolusyong Y sa focal plane',
+'exif-focalplaneresolutionunit' => 'Yunit sang resolusyon sang focal plane',
+'exif-subjectlocation' => 'Lokasyon sang tuyo',
+'exif-exposureindex' => 'Antas sang exposure',
+'exif-sensingmethod' => 'Pamaagi sang pagpabatyag',
+'exif-filesource' => 'Ginhalinan sang file',
+'exif-scenetype' => 'Tipo sang larawan',
+'exif-customrendered' => 'Ginaproseso ang ginpersonalisado nga imahen',
+'exif-exposuremode' => 'Tipo sang exposure',
+'exif-whitebalance' => 'Balanse sang kaputian',
+'exif-digitalzoomratio' => 'Antas sang digital zoom',
+'exif-focallengthin35mmfilm' => 'Laba sang pokus sang film nga 35 mm',
+'exif-scenecapturetype' => 'Tipo sang pag-kuha sang litrato',
+
# External editor support
'edit-externally' => 'Islan ini nga file gamit ang eksternal nga aplikasyon',
'edit-externally-help' => '(Lantawa ang [//www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
'watchlisttools-edit' => 'Tan-awon kag islan ang listahan nga ginalantaw',
'watchlisttools-raw' => 'Islan ang hindi pa tapos na listahan sang nagalantaw',
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Abiso:\'\'\' Ang default sort key nga "$2" ginabag-o sang nauna nga default sort key nga "$1".',
+
# Special:Version
'version-specialpages' => 'Pinasahi nga mga panid',
# Special:SpecialPages
'specialpages' => 'Espesyal nga mga panid',
+# External image whitelist
+'external_image_whitelist' => ' #Pabay-an lang ang ini nga linya nga amu ni<pre>
+#Ibutang ang mga piraso sang mga regular nga expressions (amo lang nga parte nga yara sa tunga sang //) sa idalum
+#Ini ibagay sa mga URLs sang mga imahen (hotlinked ukon ginsugpon) sa gwa.
+#Ang mga nagakabagay nga mga imahen ini igapagwa, kon indi ang sugpon ukon link lang sang imahen ang igapagwa.
+#Mga linya nga nagasugod sa # tratuhon bilang komento.
+#Ini indi sensitibo sa kapitalisasyon
+
+#Ibutang ang tanan nga regex fragments sa babaw sang linya. Pabay-i lang ang linya nga amu ina</pre>',
+
+# Special:Tags
+'tag-filter' => 'Ginpangsala sa [[Special:Tags|marka]]:',
+
# New logging system
'revdelete-restricted' => 'ginapatuman nga pagbawal sa mga administrador',
'revdelete-unrestricted' => 'ginkakas nga pagbawal sa mga administrador',
'loginlanguagelabel' => 'Rěč: $1',
'suspicious-userlogout' => 'Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Njeznaty zmylk w PHP-funkciji mail()',
'user-mail-no-addy' => 'Je so spytało e-mejl bjez e-mejloweje adresy słać.',
'user-mail-no-body' => 'Je so spytało, e-mejl bjez teksta abo z překrótkim tekstom pósłać',
'prefs-displaywatchlist' => 'Zwobraznjenske opcije',
'prefs-diffs' => 'Rozdźěle',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Zda so, zo e-mejlowa adresa je płaćiwa',
'email-address-validity-invalid' => 'Zapodaj płaćiwu e-mejlowu adresu',
'listgrouprights-addgroup-self-all' => 'Móže wšě skupiny swójskemu kontu přidać',
'listgrouprights-removegroup-self-all' => 'Móže wšě skupiny ze swójskeho konta wotstronić',
-# E-mail user
+# Email user
'mailnologin' => 'Njejsy přizjewjeny.',
'mailnologintext' => 'Dyrbiš [[Special:UserLogin|přizjewjeny]] być a płaćiwu e-mejlowu adresu w swojich [[Special:Preferences|nastajenjach]] měć, zo by druhim wužiwarjam mejlki pósłać móhł.',
'emailuser' => 'Wužiwarjej mejlku pósłać',
'monthsall' => 'wšě',
'limitall' => 'wšě',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Emailowu adresu wobkrućić',
'confirmemail_noemail' => 'Njejsy płaćiwu e-mejlowu adresu w swojich [[Special:Preferences|nastajenjach]] podał.',
'confirmemail_text' => 'Tutón wiki žada, zo swoju e-mejlowu adresu wobkrućiš, prjedy hač e-mejlowe funkcije wužiješ. Zaktiwuzij tłóčatko deleka, zo by swojej adresy wobkrućensku mejlku pósłał. Mejlka zapřijmje wotkaz, kotryž kod wobsahuje; wočiń wotkaz we swojim wobhladowaku, zo by wobkrućił, zo twoja e-mejlowa adresa je płaćiwa.',
'loginlanguagelabel' => 'Nyelv: $1',
'suspicious-userlogout' => 'A kijelentkezési kérésed vissza lett utasítva, mert úgy tűnik, hogy egy hibás böngésző vagy gyorsítótárazó proxy küldte.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Ismeretlen hiba a PHP mail() függvényében',
'user-mail-no-addy' => 'E-mail üzenetet próbáltál küldeni e-mail cím megadása nélkül.',
'user-mail-no-body' => 'Üres vagy nagyon rövid email-t próbáltál küldeni.',
'prefs-displaywatchlist' => 'Megjelenítési beállítások',
'prefs-diffs' => 'Eltérések (diffek)',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Az e-mail cím érvényesnek tűnik',
'email-address-validity-invalid' => 'Írj be egy érvényes e-mail címet',
'listgrouprights-addgroup-self-all' => 'az összes csoportot hozzáadhatja a saját fiókjához',
'listgrouprights-removegroup-self-all' => 'az összes csoporból eltávolíthatja a saját fiókját',
-# E-mail user
+# Email user
'mailnologin' => 'Nincs feladó',
'mailnologintext' => 'Ahhoz hogy másoknak e-mailt küldhess, [[Special:UserLogin|be kell jelentkezned]] és meg kell adnod egy érvényes e-mail címet a [[Special:Preferences|beállításaidban]].',
'emailuser' => 'E-mail küldése ezen szerkesztőnek',
'monthsall' => 'mind',
'limitall' => 'mind',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-mail cím megerősítése',
'confirmemail_noemail' => 'Nincs érvényes e-mail cím megadva a [[Special:Preferences|beállításaidnál]].',
'confirmemail_text' => 'Meg kell erősítened az e-mail címed, mielőtt használhatnád a(z) {{SITENAME}} levelezési rendszerét. Nyomd meg az alsó gombot, hogy kaphass egy e-mailt, melyben megtalálod a megerősítéshez szükséges kódot. Töltsd be a kódot a böngésződbe, hogy aktiválhasd az e-mail címedet.',
Խնդրում ենք սպասել որոշ ժամանակ կրկին փորձելուց առաջ։',
'loginlanguagelabel' => 'Լեզու՝ $1',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Անհայտ սխալ PHP-ի mail() ֆունկցիայում',
'user-mail-no-addy' => 'Փորձվեց ուղարկել էլ․ նամակ առանց էլ․ հասցեի։',
'prefs-displaywatchlist' => 'Ցուցադրման ընտրանքներ',
'prefs-diffs' => 'Տարբերություններ',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Էլ. հասցեն վավերական է',
'email-address-validity-invalid' => 'Մուտքագրեք վավերական էլ. հասցե',
'listgrouprights-members' => '(անդամների ցանկ)',
'listgrouprights-addgroup' => 'Ավելացնեել {{PLURAL:$2|խումբ|խմբեր}}՝ $1',
-# E-mail user
+# Email user
'mailnologin' => 'Ուղարկման հասցե չկա',
'mailnologintext' => 'Անհրաժեշտ է [[Special:UserLogin|մտնել համակարգ]] և ունենալ գործող էլ-փոստի հասցե ձեր [[Special:Preferences|նախընտրություններում]]՝ ուրիշ մասնակիցներին էլեկտրոնային նամակներ ուղարկելու համար։',
'emailuser' => 'էլ-նամակ ուղարկել այս մասնակցին',
'monthsall' => 'բոլոր',
'limitall' => 'բոլոր',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Էլ-հասցեի վավերացում',
'confirmemail_noemail' => 'Դուք չեք նշել գործող էլ-հասցե ձեր [[Special:Preferences|նախընտրություններում]]։',
'confirmemail_text' => 'Այս վիքիում անհրաժեշտ է վավերացնել էլ-հասցեն մինչև էլ-փոստի վրա հիմնված հնարավորությունների օգտագործելը։ Մատնահարեք ստորև կոճակին՝ ձեր հասցեին վավերացման նամակ ուղարկելու համար։ Ուղերձում կգտնեք վավերացման կոդով հղում, որին հետևելով կվավերացնեք ձեր էլ-հասցեն։',
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => 'Le requesta de clauder le session ha essite refusate proque illo pare haber essite inviate per un navigator o proxy de cache defectuose.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Error incognite in le function mail() de PHP',
'user-mail-no-addy' => 'Tentava inviar e-mail sin adresse de e-mail.',
'user-mail-no-body' => 'Tentava inviar e-mail con texto vacue o multo curte.',
'search-interwiki-default' => 'Resultatos de $1:',
'search-interwiki-more' => '(plus)',
'search-relatedarticle' => 'Connexe',
-'mwsuggest-disable' => 'Disactivar suggestiones via AJAX',
+'mwsuggest-disable' => 'Disactivar suggestiones de recerca',
'searcheverything-enable' => 'Cercar in tote le spatios de nomines',
'searchrelated' => 'connexe',
'searchall' => 'totes',
'prefs-displaywatchlist' => 'Optiones de presentation',
'prefs-diffs' => 'Differentias',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Sembla valide',
'email-address-validity-invalid' => 'Un adresse valide es obligatori!',
Istes debe forsan ligar directemente al articulo sur le thema in question.<br />
Un pagina se tracta como pagina de disambiguation si illo usa un patrono que es ligate ab [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Paginas con un proprietate de pagina',
+'pageswithprop-text' => 'Iste pagina lista le paginas que usa un certe proprietate de pagina.',
+'pageswithprop-prop' => 'Nomine del proprietate:',
+
'doubleredirects' => 'Redirectiones duple',
'doubleredirectstext' => 'Iste pagina lista paginas de redirection verso altere paginas de redirection.
Cata linea contine ligamines al prime e al secunde redirection, con le destination del secunde redirection. Iste es normalmente le "ver" pagina de destination, al qual le prime redirection tamben deberea punctar.
'listgrouprights-addgroup-self-all' => 'Pote adder tote le gruppos al proprie conto',
'listgrouprights-removegroup-self-all' => 'Pote remover tote le gruppos del proprie conto',
-# E-mail user
+# Email user
'mailnologin' => 'Necun adresse de invio',
'mailnologintext' => 'Tu debe [[Special:UserLogin|aperir un session]]
e haber un adresse de e-mail valide in tu [[Special:Preferences|preferentias]]
'enotif_subject_moved' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|renominate}} per $2',
'enotif_subject_restored' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|restaurate}} per $2',
'enotif_subject_changed' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|modificate}} per $2',
+'enotif_body_intro_deleted' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|delite}} le $PAGEEDITDATE per $2, vide $3.',
+'enotif_body_intro_created' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|create}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.',
+'enotif_body_intro_moved' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|renominate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.',
+'enotif_body_intro_restored' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|restaurate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.',
+'enotif_body_intro_changed' => 'Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|modificate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.',
'enotif_lastvisited' => 'Vide $1 pro tote le modificationes depost tu ultime visita.',
'enotif_lastdiff' => 'Vide $1 pro revider iste modification.',
'enotif_anon_editor' => 'usator anonyme $1',
'enotif_body' => 'Car $WATCHINGUSERNAME,
-
-Le pagina de {{SITENAME}} titulate $PAGETITLE ha essite $CHANGEDORCREATED le $PAGEEDITDATE per $PAGEEDITOR. Vide $PAGETITLE_URL pro le version actual.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
Summario del redactor: $PAGESUMMARY $PAGEMINOREDIT
Pro contactar le redactor:
-e-mail: $PAGEEDITOR_EMAIL
+mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Si tu non visita iste pagina, tu non recipera altere notificationes in caso de modificationes ulterior.
-Como alternativa tu pote reinitialisar le optiones de notification pro tote le paginas in tu observatorio.
+Tu non recipera altere notificationes de activitate si tu non visita iste pagina. Tu pote anque reinitialisar le optiones de notification pro tote le paginas in tu observatorio.
- Le systema de notification de {{SITENAME}}, a tu servicio
+Le systema de notification de {{SITENAME}}, a tu servicio
--
Pro configurar le notification per e-mail, visita
'prot_1movedto2' => 'displaciava [[$1]] verso [[$2]]',
'protect-badnamespace-title' => 'Spatio de nomines non protegibile',
'protect-badnamespace-text' => 'Le paginas in iste spatio de nomines non pote esser protegite.',
+'protect-norestrictiontypes-text' => 'Iste pagina non pote esser protegite perque il non ha alcun typo de restriction disponibile.',
+'protect-norestrictiontypes-title' => 'Pagina non protegibile',
'protect-legend' => 'Confirmar protection',
'protectcomment' => 'Motivo:',
'protectexpiry' => 'Expiration:',
'move-page' => 'Renominar $1',
'move-page-legend' => 'Renominar pagina',
'movepagetext' => "Per medio del formulario hic infra tu pote renominar un pagina, transferente tote su historia al nove nomine.
-Le titulo anterior devenira un pagina de redirection verso le nove titulo.
+Le ancian titulo devenira un pagina de redirection verso le nove titulo.
Tu pote actualisar automaticamente le redirectiones que puncta verso le titulo original.
Si tu prefere non facer isto, non oblida de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].
Tu ha le responsabilitate de assecurar que le ligamines continua a punctar verso le paginas correcte.
Isto pote esser un cambio drastic e inexpectate pro un pagina popular;
per favor assecura te de haber comprendite le consequentias de isto ante de continuar.",
'movepagetext-noredirectfixer' => "Per medio del formulario infra tu pote renominar un pagina, transferente tote su historia al nove nomine.
-Le titulo anterior devenira un pagina de redirection verso le nove titulo.
-Assecura te de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].
+Le ancian titulo devenira un pagina de redirection verso le nove titulo.
+Non oblida de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].
Tu ha le responsabilitate de assecurar que le ligamines continua a punctar verso le paginas correcte.
-Nota que le pagina '''non''' essera renominate si existe ja un pagina sub le nove titulo, salvo si illo es vacue o un redirection e non ha un historia de modificationes passate.
-Isto vole dicer que tu pote renominar un pagina retro a su titulo original si tu ha committite un error, ben que tu non pote superscriber un pagina existente.
+Nota que le pagina '''non''' essera renominate si existe jam un pagina sub le nove titulo, excepte si iste es un redirection sin historia de modificationes passate.
+Isto te lassa le possibilitate de restaurar le titulo original de un pagina si tu ha committite un error, sin permitter te de supplantar un pagina existente.
'''Attention!'''
Isto pote esser un cambio drastic e inexpectate pro un pagina popular;
'import-error-interwiki' => 'Le pagina "$1" non es importate perque su nomine es reservate pro ligation externe (interwiki).',
'import-error-special' => 'Le pagina "$1" non es importate perque illo pertine a un spatio de nomines special que non permitte paginas.',
'import-error-invalid' => 'Le pagina "$1" non es importate perque su nomine es invalide.',
+'import-error-unserialize' => 'Le version $2 del pagina "$1" non pote esser disserialisate. Il ha essite reportate que iste version usa le modello de contento $3 serialisate como $4.',
'import-options-wrong' => 'Mal {{PLURAL:$2|option|optiones}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Le pagina radice specificate es un titulo invalide.',
'import-rootpage-nosubpage' => 'Le spatio de nomines "$1" del pagina radice non permitte subpaginas.',
'pageinfo-robot-noindex' => 'Non indexabile',
'pageinfo-views' => 'Numero de visitas',
'pageinfo-watchers' => 'Numero de observatores del pagina',
+'pageinfo-few-watchers' => 'Minus de $1 {{PLURAL:$1|observator|observatores}}',
'pageinfo-redirects-name' => 'Redirectiones verso iste pagina',
'pageinfo-subpages-name' => 'Subpaginas de iste pagina',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirection|redirectiones}}; $3 {{PLURAL:$3|non-redirection|non-redirectiones}})',
'pageinfo-magic-words' => '{{PLURAL:$1|Parola|Parolas}} magic ($1)',
'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoria|Categorias}} celate ($1)',
'pageinfo-templates' => '{{PLURAL:$1|Patrono|Patronos}} transcludite ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Pagina|Paginas}} in que iste pagina es transcludite ($1)',
'pageinfo-toolboxlink' => 'Information sur le pagina',
'pageinfo-redirectsto' => 'Redirige a',
'pageinfo-redirectsto-info' => 'info',
'pageinfo-protect-cascading' => 'Protection in cascada a partir de hic',
'pageinfo-protect-cascading-yes' => 'Si',
'pageinfo-protect-cascading-from' => 'Protection in cascada a partir de',
+'pageinfo-category-info' => 'Information de categoria',
+'pageinfo-category-pages' => 'Numero de paginas',
+'pageinfo-category-subcats' => 'Numero de subcategorias',
+'pageinfo-category-files' => 'Numero de files',
# Skin names
'skinname-standard' => 'Classic',
'file-nohires' => 'Non disponibile in resolution plus alte.',
'svg-long-desc' => 'File SVG, dimensiones nominal: $1 × $2 pixels, grandor del file: $3',
'svg-long-desc-animated' => 'File SVG animate, dimensiones nominal: $1 × $2 pixels, grandor del file: $3',
+'svg-long-error' => 'File SVG invalide: $1',
'show-big-image' => 'Plen resolution',
'show-big-image-preview' => ' Dimension de iste previsualisation: $1.',
'show-big-image-other' => 'Altere {{PLURAL:$2|resolution|resolutiones}}: $1.',
'minutes' => '{{PLURAL:$1|$1 minuta|$1 minutas}}',
'hours' => '{{PLURAL:$1|$1 hora|$1 horas}}',
'days' => '{{PLURAL:$1|$1 die|$1 dies}}',
+'months' => '{{PLURAL:$1|$1 mense|$1 menses}}',
+'years' => '{{PLURAL:$1|$1 anno|$1 annos}}',
'ago' => '$1 retro',
'just-now' => 'Justo nunc',
'monthsall' => 'totes',
'limitall' => 'totes',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar adresse de e-mail',
'confirmemail_noemail' => 'Tu non ha configurate un adresse de e-mail valide in tu [[Special:Preferences|preferentias de usator]].',
'confirmemail_text' => '{{SITENAME}} require que tu valida tu adresse de e-mail ante que tu usa functiones involvente e-mail.
'specialpages-group-highuse' => 'Paginas multo usate',
'specialpages-group-pages' => 'Listas de paginas',
'specialpages-group-pagetools' => 'Instrumentos pro paginas',
-'specialpages-group-wiki' => 'Datos e instrumentos pro Wiki',
+'specialpages-group-wiki' => 'Datos e instrumentos',
'specialpages-group-redirects' => 'Redirection de paginas special',
'specialpages-group-spam' => 'Instrumentos antispam',
'logentry-newusers-newusers' => 'Le conto de usator $1 ha essite create',
'logentry-newusers-create' => 'Le conto de usator $1 ha essite create',
'logentry-newusers-create2' => 'Le conto de usator $3 ha essite create per $1',
+'logentry-newusers-byemail' => 'Le conto de usator $3 ha essite create per $1 e le contrasigno ha essite inviate per e-mail',
'logentry-newusers-autocreate' => 'Le conto $1 ha essite create automaticamente',
'logentry-rights-rights' => '$1 cambiava le appertinentia a gruppos pro $3 de $4 a $5',
'logentry-rights-rights-legacy' => '$1 cambiava le appertinentia a gruppos pro $3',
'api-error-ok-but-empty' => 'Error interne: nulle responsa del servitor.',
'api-error-overwrite' => 'Superscriber un file existente non es permittite.',
'api-error-stashfailed' => 'Error interne: le servitor non poteva immagazinar le file temporari.',
+'api-error-publishfailed' => 'Error interne: le servitor non poteva publicar le file temporari.',
'api-error-timeout' => 'Le servitor non ha respondite intra le tempore expectate.',
'api-error-unclassified' => 'Un error incognite ha occurrite.',
'api-error-unknown-code' => 'Error incognite: "$1"',
'duration-centuries' => '$1 {{PLURAL:$1|seculo|seculos}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennio|millennios}}',
+# Unknown messages
+'pageswithprop-legend' => 'Paginas con un proprietate de pagina',
+'pageswithprop-submit' => 'Va',
);
'loginlanguagelabel' => 'Bahasa: $1',
'suspicious-userlogout' => 'Permintaan Anda untuk keluar log ditolak karena tampaknya dikirim oleh penjelajah yang rusak atau proksi penyinggah.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Kesalahan yang tidak dikenal dalam fungsi mail() PHP',
'user-mail-no-addy' => 'Mencoba mengirimkan surel tanpa alamat surel.',
'user-mail-no-body' => 'Mencoba untuk mengirim surel kosong atau terlalu pendek.',
'converter-manual-rule-error' => 'Kesalahan terdeteksi di aturan manual konversi bahasa',
# "Undo" feature
-'undo-success' => 'Suntingan ini dapat dibatalkan. Tolong cek perbandingan di bawah untuk meyakinkan bahwa benar itu yang Anda ingin lakukan, lalu simpan perubahan tersebut untuk menyelesaikan pembatalan suntingan.',
-'undo-failure' => 'Suntingan ini tidak dapat dibatalkan karena konflik penyuntingan antara.',
-'undo-norev' => 'Suntingan ini tidak dapat dibatalkan karena halaman tidak ditemukan atau telah dihapuskan.',
-'undo-summary' => 'Membatalkan revisi $1 oleh [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]])',
+'undo-success' => 'Suntingan ini dapat dibalikkan. Silakan periksa perbandingan di bawah untuk meyakinkan bahwa benar itu yang Anda ingin lakukan, lalu simpan perubahan tersebut untuk menyelesaikan pembalikkan suntingan.',
+'undo-failure' => 'Suntingan ini tidak dapat dibalikkan karena konflik penyuntingan antara.',
+'undo-norev' => 'Suntingan ini tidak dapat dibalikkan karena halaman tidak ditemukan atau telah dihapuskan.',
+'undo-summary' => 'Membalikkan revisi $1 oleh [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]])',
# Account creation failure
'cantcreateaccounttitle' => 'Akun tak dapat dibuat',
'lineno' => 'Baris $1:',
'compareselectedversions' => 'Bandingkan versi terpilih',
'showhideselectedversions' => 'Tampilkan/sembunyikan versi terpilih',
-'editundo' => 'batalkan',
+'editundo' => 'balikkan',
'diff-multi' => '({{PLURAL:$1|Satu|$1}} revisi antara oleh {{PLURAL:$2|satu|$2}} pengguna tak ditampilkan)',
'diff-multi-manyusers' => '({{PLURAL:$1|Satu|$1}} revisi antara oleh lebih dari $2 {{PLURAL:$2|satu|$2}} pengguna tak ditampilkan)',
'difference-missing-revision' => '{{PLURAL:$2|Satu revisi|$2 revisi}} dari perbedaan ini ($1) {{PLURAL:$2|tidak|tidak}} ditemukan.
'prefs-displaywatchlist' => 'Pilihan tampilan',
'prefs-diffs' => 'Beda',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Alamat surel tampaknya sah',
'email-address-validity-invalid' => 'Masukkan alamat surel yang sah',
'filehist-help' => 'Klik pada tanggal/waktu untuk melihat berkas ini pada saat tersebut.',
'filehist-deleteall' => 'hapus semua',
'filehist-deleteone' => 'hapus',
-'filehist-revert' => 'kembalikan',
+'filehist-revert' => 'batalkan',
'filehist-current' => 'terkini',
'filehist-datetime' => 'Tanggal/Waktu',
'filehist-thumb' => 'Miniatur',
'upload-disallowed-here' => 'Anda tidak bisa menimpa berkas ini.',
# File reversion
-'filerevert' => 'Kembalikan $1',
-'filerevert-legend' => 'Kembalikan berkas',
-'filerevert-intro' => "Anda mengembalikan '''[[Media:$1|$1]]''' ke versi [$4 pada $3, $2].",
+'filerevert' => 'Batalkan $1',
+'filerevert-legend' => 'Batalkan berkas',
+'filerevert-intro' => "Anda membatalkan '''[[Media:$1|$1]]''' ke versi [$4 pada $3, $2].",
'filerevert-comment' => 'Alasan:',
-'filerevert-defaultcomment' => 'Dikembalikan ke versi pada $2, $1',
-'filerevert-submit' => 'Kembalikan',
-'filerevert-success' => "'''[[Media:$1|$1]]''' telah dikembalikan ke versi [$4 pada $3, $2]",
+'filerevert-defaultcomment' => 'Dibatalkan ke versi pada $2, $1',
+'filerevert-submit' => 'Batalkan',
+'filerevert-success' => "'''[[Media:$1|$1]]''' telah dibatalkan ke versi [$4 pada $3, $2]",
'filerevert-badversion' => 'Tidak ada versi lokal terdahulu dari berkas ini dengan stempel waktu yang dimaksud.',
# File deletion
'listgrouprights-addgroup-self-all' => 'Dapat menambahkan semua grup ke akun sendiri',
'listgrouprights-removegroup-self-all' => 'Menghapus semua kelompok dari akun sendiri',
-# E-mail user
+# Email user
'mailnologin' => 'Tidak ada alamat surel',
'mailnologintext' => 'Anda harus [[Special:UserLogin|masuk log]] dan mempunyai alamat surel yang sah di dalam [[Special:Preferences|preferensi]] untuk mengirimkan surel kepada pengguna lain.',
'emailuser' => 'Surel pengguna',
'dellogpage' => 'Log penghapusan',
'dellogpagetext' => 'Di bawah ini adalah log penghapusan halaman. Semua waktu yang ditunjukkan adalah waktu server.',
'deletionlog' => 'log penghapusan',
-'reverted' => 'Dikembalikan ke revisi sebelumnya',
+'reverted' => 'Dibatalkan ke revisi sebelumnya',
'deletecomment' => 'Alasan:',
'deleteotherreason' => 'Alasan lain/tambahan:',
'deletereasonotherlist' => 'Alasan lain',
'rollbacklinkcount' => 'kembalikan $1 {{PLURAL:$1|suntingan|suntingan}}',
'rollbacklinkcount-morethan' => 'kembalikan lebih dari $1 {{PLURAL:$1|suntingan|suntingan}}',
'rollbackfailed' => 'Pengembalian gagal dilakukan',
-'cantrollback' => 'Tidak dapat mengembalikan suntingan;
+'cantrollback' => 'Tidak dapat membatalkan suntingan;
kontributor terakhir adalah satu-satunya penulis halaman ini.',
'alreadyrolled' => 'Tidak dapat melakukan pengembalian ke revisi terakhir [[:$1]] oleh [[User:$2|$2]] ([[User talk:$2|bicara]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
pengguna lain telah menyunting atau melakukan pengembalian terhadap halaman ini.
Suntingan terakhir dilakukan oleh [[User:$3|$3]] ([[User talk:$3|bicara]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Komentar penyuntingan adalah: \"''\$1''\".",
-'revertpage' => '←Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]]) dikembalikan ke versi terakhir oleh [[User:$1|$1]]',
+'revertpage' => '←Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]]) dibatalkan ke versi terakhir oleh [[User:$1|$1]]',
'revertpage-nouser' => 'Pengembalian suntingan oleh (pengguna dihapus) ke suntingan terakhir oleh [[User:$1|$1]]',
-'rollback-success' => 'Pengembalian suntingan oleh $1; dikembalikan ke versi terakhir oleh $2.',
+'rollback-success' => 'Pembatalan suntingan oleh $1; dibatalkan ke versi terakhir oleh $2.',
# Edit tokens
'sessionfailure-title' => 'Kegagalan sesi',
'movesubpagetext' => 'Halaman ini memiliki $1 {{PLURAL:$1|subhalaman|subhalaman}} seperti ditampilkan berikut.',
'movenosubpage' => 'Halaman ini tak memiliki subhalaman.',
'movereason' => 'Alasan:',
-'revertmove' => 'kembalikan',
+'revertmove' => 'batalkan',
'delete_and_move' => 'Hapus dan pindahkan',
'delete_and_move_text' => '==Penghapusan diperlukan==
Halaman yang dituju, "[[:$1]]", telah mempunyai isi. Apakah Anda hendak menghapusnya untuk memberikan ruang bagi pemindahan?',
'tooltip-watchlistedit-raw-submit' => 'Perbarui daftar pantauan',
'tooltip-recreate' => 'Buat ulang halaman walaupun sebenarnya telah dihapus',
'tooltip-upload' => 'Mulai pemuatan',
-'tooltip-rollback' => 'Mengembalikan suntingan-suntingan di halaman ini ke kontributor terakhir dalam satu kali klik.',
-'tooltip-undo' => 'Mengembalikan revisi ini dan membuka kotak penyuntingan dengan mode pratayang. Alasan dapat ditambahkan di kotak ringkasan.',
+'tooltip-rollback' => '"Kembalikan" membatalkan suntingan-suntingan di halaman ini ke kontributor terakhir dalam satu kali klik.',
+'tooltip-undo' => '"Balikkan" membatalkan revisi ini dan membuka kotak penyuntingan dengan mode pratayang. Alasan dapat ditambahkan di kotak ringkasan.',
'tooltip-preferences-save' => 'Simpan preferensi',
'tooltip-summary' => 'Masukkan sebuah ringkasan pendek',
Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hitam.',
'spamprotectionmatch' => 'Teks berikut ini memancing filter spam kami: $1',
'spambot_username' => 'Pembersihan span MediaWiki',
-'spam_reverting' => 'Mengembalikan ke versi terakhir yang tak memiliki pranala ke $1',
+'spam_reverting' => 'Membatalkan ke versi terakhir yang tak memiliki pranala ke $1',
'spam_blanking' => 'Semua revisi yang memiliki pranala ke $1, pengosongan',
'spam_deleting' => 'Semua revisi yang memiliki pranala ke $1, penghapusan',
'monthsall' => 'semua',
'limitall' => 'semua',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Konfirmasi alamat surel',
'confirmemail_noemail' => 'Anda tidak memberikan alamat surel yang sah di [[Special:Preferences|preferensi pengguna]] Anda.',
'confirmemail_text' => '{{SITENAME}} mengharuskan Anda untuk melakukan konfirmasi atas alamat surel Anda sebelum fitur-fitur surel dapat digunakan.
'htmlform-int-toohigh' => 'Nilai yang Anda masukkan melebihi nilai maksimum $1',
'htmlform-required' => 'Nilai ini diperlukan',
'htmlform-submit' => 'Kirim',
-'htmlform-reset' => 'Batalkan perubahan',
+'htmlform-reset' => 'Balikkan perubahan',
'htmlform-selectorother-other' => 'Lain-lain',
# SQLite database support
'loginlanguagelabel' => 'Pagsasao: $1',
'suspicious-userlogout' => 'Naiparit ti panagkiddawmo a rummuar ngamin ket kasla inpatulod ti nadadael a "panagbasabasa" wenno "caching proxy".',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Di am-ammo a biddut iti surat ti PHP () a pamay-an.',
'user-mail-no-addy' => 'Pinadas nga impatulod ti e-surat nga awan ti e-surat a pagtaengan.',
'user-mail-no-body' => 'Nangpadaska a nangipatulod ti e-surat nga awan linaonna wenno ababa laeng a bagi.',
'prefs-displaywatchlist' => 'Ipakita dagiti pagpilian',
'prefs-diffs' => 'Sabali',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Ti e-surat a pagtaengan ket kasla umiso',
'email-address-validity-invalid' => 'Ikabil ti umiso nga e-surat a pagtaengan',
'listgrouprights-addgroup-self-all' => 'Inayon amin dagiti bunggoy ti bukodmo a pakabilangan',
'listgrouprights-removegroup-self-all' => 'Ikkatem amin dagiti bunggoy ti bukod a pakabilangan',
-# E-mail user
+# Email user
'mailnologin' => 'Awan ti pagipatulodan a pagtaengan',
'mailnologintext' => 'Masapul a [[Special:UserLogin|nakastrekka]] ken adda umisu nga e-surat a pagtaengan idiay [[Special:Preferences|kaykayatmo]] ti agipatulod ti e-surat kadagiti sabsabali nga agar-aramat.',
'emailuser' => 'E-suratan daytoy nga agar-aramat',
'monthsall' => 'amin',
'limitall' => 'amin',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Pasingkedan ti e-surat a pagtaengam',
'confirmemail_noemail' => 'Awan ti umisu nga e-surat a pagtaengam a naikabil idiay [[Special:Preferences|kaykayat ti agar-aramat]].',
'confirmemail_text' => 'Ti {{SITNAME}} ket masapulna a pasingkedam ti e-surat a pagtaengam sakbay nga agusar ti -surat a langa.
{{SITENAME}} notar vefkökur til að skrá inn notendur.
Þú hefur lokað fyrir vefkökur.
Gjörðu svo vel og opnaðu fyrir þær, skráðu þig svo inn með notandanafni og lykilorði.',
-'nocookieslogin' => '{{SITENAME}} notar vefkökur til innskráningar. Vafrinn þinn er ekki að taka á móti þeim sem gerir það ókleyft að innskrá þig. Vinsamlegast virkjaðu móttöku kakna í vafranum þínum til að geta skráð þig inn.',
+'nocookieslogin' => '{{SITENAME}} notar vefkökur til innskráningar. Vafrinn þinn er ekki að taka á móti þeim. Vinsamlegast virkjaðu móttöku kakna í vafranum þínum til að geta skráð þig inn.',
'nocookiesfornew' => 'Notenda aðgangurinn var ekki stofnaður, því ekki fannst uppruni beiðnarinnar.
Gakktu úr skugga um að vefkökur séu virkar, endurhladdu þessari síðu og reyndu aftur.',
'noname' => 'Þú hefur ekki tilgreint gilt notandanafn.',
'loginlanguagelabel' => 'Tungumál: $1',
'suspicious-userlogout' => 'Beiðni um útskráningu hafnað því hún var líklegast send frá biluðum vafra eða vefseli sem hefur vistað vefsíðuna í flýtiminni.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Óþekkt villa í PHP mail() aðgerð.',
'user-mail-no-addy' => 'Gat ekki sent tölvupóst því ekkert tölvupóstfang fannst.',
'user-mail-no-body' => 'Reyndi að senda tölvupóst með engu eða verulega stuttu meginmáli.',
Núverandi vistfang þitt er $3, og bönnunarnúmerið er #$5.
Vinsamlegast tilgreindu allt að ofanverðu í fyrirspurnum þínum.",
'blockednoreason' => 'engin ástæða gefin',
-'whitelistedittext' => 'Þú þarft að $1 til að breyta síðum.',
+'whitelistedittext' => 'Þú þarft að $1 þig til að breyta síðum.',
'confirmedittext' => 'Þú verður að staðfesta netfangið þitt áður en þú getur breytt síðum. Vinsamlegast stilltu og staðfestu netfangið þitt í gegnum [[Special:Preferences|stillingarnar]].',
'nosuchsectiontitle' => 'Hluti ekki til',
'nosuchsectiontext' => 'Þú reyndir að breyta hluta sem er ekki til.
Hlutinn gæti hafa verið fluttur til eða hent á meðan þú varst að skoða síðuna.',
'loginreqtitle' => 'Innskráningar krafist',
'loginreqlink' => 'innskrá',
-'loginreqpagetext' => 'Þú þarft að $1 til að geta séð aðrar síður.',
+'loginreqpagetext' => 'Þú þarft að $1 þig til að geta séð aðrar síður.',
'accmailtitle' => 'Lykilorð sent.',
'accmailtext' => "Lykilorðið fyrir [[User talk:$1|$1]] hefur verið sent á $2.
'prefs-displaywatchlist' => 'Útlitsmöguleikar',
'prefs-diffs' => 'Breytingar',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Netfang virðist vera virkt.',
'email-address-validity-invalid' => 'Settu inn rétt netfang',
'listgrouprights-addgroup-self-all' => 'Bæta sjálfum sér í alla hópa',
'listgrouprights-removegroup-self-all' => 'Fjarlægja sjálfan sig úr öllum hópum',
-# E-mail user
+# Email user
'mailnologin' => 'Ekkert netfang til að senda á',
'mailnologintext' => 'Þú verður að vera [[Special:UserLogin|innskráð(ur)]] auk þess að hafa gilt netfang í [[Special:Preferences|stillingunum]] þínum til að senda tölvupóst til annara notenda.',
'emailuser' => 'Senda þessum notanda tölvupóst',
'mywatchlist' => 'Vaktlisti',
'watchlistfor2' => 'Eftir $1 $2',
'nowatchlist' => 'Vaktlistinn er tómur.',
-'watchlistanontext' => 'Vinsamlegast $1 til að skoða eða breyta vaktlistanum þínum.',
+'watchlistanontext' => 'Vinsamlegast $1ðu þig til að skoða eða breyta vaktlistanum þínum.',
'watchnologin' => 'Óinnskráð(ur)',
'watchnologintext' => 'Þú verður að vera [[Special:UserLogin|innskáð(ur)]] til að geta breytt vaktlistanum.',
'addwatch' => 'Bæta á vaktlistann',
'monthsall' => 'allir',
'limitall' => 'alla',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Staðfesta netfang',
'confirmemail_noemail' => 'Þú hefur ekki gefið upp gilt netfang í [[Special:Preferences|notandastillingum]] þínum.',
'confirmemail_text' => '{{SITENAME}} krefst þess að þú staðfestir netfangið þitt áður en að þú getur notað eiginleika tengt því. Smelltu á hnappinn að neðan til að fá staðfestingarpóst sendan á netfangið. Pósturinn mun innihalda tengil með kóða í sér; opnaðu tengilinn í vafranum til að staðfesta að netfangið sé rétt.',
Póstþjónninn skilaði: $1',
'confirmemail_invalid' => 'Ógildur staðfestingarkóði. Hann gæti verið útrunninn.',
-'confirmemail_needlogin' => 'Þú verður að $1 til að staðfesta netfangið þitt.',
+'confirmemail_needlogin' => 'Þú verður að $1 þig til að staðfesta netfangið þitt.',
'confirmemail_success' => 'Netfang þitt hefur verið staðfest. Þú getur nú [[Special:UserLogin|skráð þig inn]] og vafrað um wiki-kerfið.',
'confirmemail_loggedin' => 'Netfang þitt hefur verið staðfest.',
'confirmemail_error' => 'Eitthvað fór úrskeiðis við vistun staðfestingarinnar.',
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => 'La tua richiesta di disconnessione è stata negata perché sembra inviata da un browser non funzionante o un proxy di caching.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Errore sconosciuto nella funzione PHP mail()',
'user-mail-no-addy' => 'Hai cercato di inviare una e-mail senza un indirizzo.',
'user-mail-no-body' => 'Tentato di inviare una e-mail con un testo vuoto o estremamente breve.',
'prefs-displaywatchlist' => 'Opzioni di visualizzazione',
'prefs-diffs' => 'Differenze',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "L'indirizzo e-mail sembra valido",
'email-address-validity-invalid' => 'Inserisci un indirizzo e-mail valido',
Esse potrebbero dover puntare a una pagina più appropriata.<br />
Vengono considerate pagine di disambiguazione tutte quelle che contengono i template elencati in [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Pagine con una pagina di proprietà',
+'pageswithprop-text' => 'Questa pagina elenca le pagine che utilizzano una particolare pagina di proprietà.',
'pageswithprop-prop' => 'Nome proprietà:',
'doubleredirects' => 'Redirect doppi',
'listgrouprights-addgroup-self-all' => 'Può aggiungersi a tutti i gruppi',
'listgrouprights-removegroup-self-all' => 'Può rimuoversi da tutti i gruppi',
-# E-mail user
+# Email user
'mailnologin' => 'Nessun indirizzo cui inviare il messaggio',
'mailnologintext' => 'Per inviare messaggi e-mail ad altri utenti è necessario [[Special:UserLogin|accedere al sito]] e aver registrato un indirizzo valido nelle proprie [[Special:Preferences|preferenze]].',
'emailuser' => "Scrivi all'utente",
'monthsall' => 'tutti',
'limitall' => 'tutti',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Conferma indirizzo email',
'confirmemail_noemail' => 'Non è stato indicato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]].',
'confirmemail_text' => "{{SITENAME}} richiede la verifica dell'indirizzo e-mail prima di poter usare le relative funzioni. Premere il pulsante qui sotto per inviare una richiesta di conferma al proprio indirizzo; nel messaggio è presente un collegamento che contiene un codice. Visitare il collegamento con il proprio browser per confermare che l'indirizzo e-mail è valido.",
'duration-millennia' => '$1 {{PLURAL:$1|millennio|millenni}}',
# Unknown messages
+'pageswithprop-legend' => 'Pagine con una pagina di proprietà',
'pageswithprop-submit' => 'Vai',
);
'loginlanguagelabel' => '言語: $1',
'suspicious-userlogout' => '壊れたブラウザーまたはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
'user-mail-no-addy' => 'メールアドレスなしでメールを送信しようとしました。',
'user-mail-no-body' => '本文が空、またはあまりにも短いメールは送信できません。',
追加の制限がかけられない限り、{{SITENAME}}の他の管理者は同じインターフェイスを使って非表示の内容の取得や復元ができます。",
'revdelete-confirm' => 'この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。',
'revdelete-suppress-text' => "秘匿は、'''以下の場合に限って'''使用すべきです:
-* 名誉毀損の恐れのある記述
+* 名誉毀損のおそれがある記述
* 非公開個人情報
*: ''自宅の住所、電話番号、社会保障番号など''",
'revdelete-legend' => '閲覧レベル制限を設定',
'prefs-displaywatchlist' => '表示の設定',
'prefs-diffs' => '差分',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'メールアドレスは有効のようです',
'email-address-validity-invalid' => '有効なメールアドレスを入力してください',
'listgrouprights-removegroup-all' => '全グループを除去可能',
'listgrouprights-addgroup-self' => '自身のアカウントに{{PLURAL:$2|グループ}}を追加: $1',
'listgrouprights-removegroup-self' => '自身のアカウントから{{PLURAL:$2|グループ}}を除去: $1',
-'listgrouprights-addgroup-self-all' => '自分のアカウントに全グループを追加可能',
-'listgrouprights-removegroup-self-all' => '自分のアカウントから全グループを除去可能',
+'listgrouprights-addgroup-self-all' => '自身のアカウントに全グループを追加可能',
+'listgrouprights-removegroup-self-all' => '自身のアカウントから全グループを除去可能',
-# E-mail user
+# Email user
'mailnologin' => '送信アドレスがありません',
'mailnologintext' => '他の利用者宛にメールを送信するためには、[[Special:UserLogin|ログイン]]し、[[Special:Preferences|個人設定]]で有効なメールアドレスを設定する必要があります。',
'emailuser' => 'この利用者にメールを送信',
'monthsall' => 'すべて',
'limitall' => 'すべて',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'メールアドレスの確認',
'confirmemail_noemail' => '[[Special:Preferences|個人設定]]で有効なメールアドレスが指定されていません。',
'confirmemail_text' => '{{SITENAME}}では、メール機能を使用する前にメールアドレスの検証が必要です。
'scarytranscludetoolong' => '[URLが長すぎます]',
# Delete conflict
-'deletedwhileediting' => "'''警告''': このページが、編集開始後に削除されました!",
+'deletedwhileediting' => "'''警告:''' このページが、編集開始後に削除されました!",
'confirmrecreate' => "あなたが編集を開始した後、[[User:$1|$1]] ([[User talk:$1|トーク]]) がこのページを以下の理由で削除しました:
: ''$2''
このままこのページを本当に再作成していいか確認してください。",
'duration-millennia' => '$1{{PLURAL:$1|,000 年}}',
# Unknown messages
+'pageswithprop-legend' => 'ページプロパティがあるページ',
'pageswithprop-submit' => '実行',
);
'loginlanguagelabel' => 'ენა: $1',
'suspicious-userlogout' => 'თქვენი მოთხოვნა გასვლის შესახებ გაუქმებულია, რადგანაც იგი გავს ქეშირებადი პროქსის ან არაკორექტული ბრაუზერის მოთხოვნას.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'ამოუცნობი შეცდომა PHP-ის mail() ფუნქციაში',
'user-mail-no-addy' => 'ცდილობდა ელ-ფოსტის გაგზავნას ელ-ფოსტის მისამართის გარეშე.',
'user-mail-no-body' => 'ცდილობდა ცარიელი ან უაზროდ მოკლე შინაარსის ელექტრონული წერილის გაგზავნას.',
'revdelete-hide-name' => 'დამალეთ მოქმედება და მისი ობიექტი',
'revdelete-hide-comment' => 'რედაქტირების კომენტარის დამალვა',
'revdelete-hide-user' => 'რედაქტორის მომხ. სახელის/IP-ს დამალვა',
-'revdelete-hide-restricted' => 'á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83\94á\83\97 á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83\90á\83\93á\83\9bá\83\98á\83\9cá\83\97á\83\90á\83\92á\83\90á\83\9cá\83\90á\83ª',
+'revdelete-hide-restricted' => 'á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83\94á\83\97 á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83\90á\83\93á\83\9bá\83\98á\83\9cá\83\98á\83¡á\83¢á\83 á\83\90á\83¢á\83\9dá\83 á\83\97á\83\90á\83\92á\83\90á\83\9c',
'revdelete-radio-same' => '(არ შეცვალოთ)',
'revdelete-radio-set' => 'დიახ',
'revdelete-radio-unset' => 'არა',
-'revdelete-suppress' => 'á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83\94á\83\97 á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83\90á\83\93á\83\9bá\83\98á\83\9cá\83\97á\83\90á\83\92á\83\90á\83\9cá\83\90á\83ª',
+'revdelete-suppress' => 'á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83\94á\83\97 á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83\90á\83\93á\83\9bá\83\98á\83\9cá\83\98á\83¡á\83¢á\83 á\83\90á\83¢á\83\9dá\83 á\83\97á\83\90á\83\92á\83\90á\83\9c',
'revdelete-unsuppress' => 'მოხსენით შეზღუდვა ვერსიების აღდგენისგან',
'revdelete-log' => 'მიზეზი:',
'revdelete-submit' => '{{PLURAL:$1|არჩეული ვერსიის|არჩეული ვერსიების}} განხორციელება',
'prefs-displaywatchlist' => 'გამოსახვის კონფიგურაციები',
'prefs-diffs' => 'სხვაობა ვერსიებს შორის',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ელ-ფოსტის მისამართი სწორად გამოიყურება',
'email-address-validity-invalid' => 'მიუთითეთ სწორი ელ-ფოსტის მისამართი',
'newsectionsummary' => '/* $1 */ ახალი სექცია',
'rc-enhanced-expand' => 'დამატებითი ინფორმაციის ჩვენება (მოითხოვს ჯავასკრიპტს)',
'rc-enhanced-hide' => 'დამატებითი ინფორმაციის დამალვა',
-'rc-old-title' => 'თავდაპირველად შექმნილი როგორც "$1"',
+'rc-old-title' => 'თავდაპირველად შექმნილი როგორც „$1“',
# Recent changes linked
'recentchangeslinked' => 'დაკავშირებული ცვლილებები',
'listgrouprights-addgroup-self-all' => 'შეუძლია ყელა ჯგუფია ჩამატება ანგარიშს.',
'listgrouprights-removegroup-self-all' => 'შეუძლია თავისი ანგარიშის ყველა ჯგუფის წაშლა.',
-# E-mail user
+# Email user
'mailnologin' => 'გამგზავნი მისამართი არ არის მითითებული.',
'mailnologintext' => 'თქვენ უნდა [[Special:UserLogin|წარადგენილი იყოთ სისტემისადმი]] და გქონდეთ წესიერი ელექტრონული ფოსტის მისამართი თქვენს [[Special:Preferences|კონფიგურაციაში]] იმისთვის, რომ გაუგზავნოთ წერილების სხვა მომხმარებლებს.',
'emailuser' => 'გაუგზავნეთ იმეილი ამ მომხმარებელს',
'monthsall' => 'ყველა',
'limitall' => 'ყველა',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ელ. ფოსტის მისამართის დადასტურება',
'confirmemail_noemail' => 'თქვენ არ გაქვს მითითებული მართებული ელმისამართი [[Special:Preferences|მომხმარებლის პარამეტრებში]].',
'confirmemail_text' => '{{SITENAME}} ითხოვს თქვენი ელ. ფოსტის დადასტურებას, სანამ ელ.
$messages = array(
# User preference toggles
'tog-underline' => 'គូសបន្ទាត់ក្រោមតំណភ្ជាប់៖',
-'tog-justify' => 'á\9e\8fá\9f\86រឹមកថាខណ្ឌ',
-'tog-hideminor' => 'á\9e\9bá\9e¶á\9e\80á\9f\8bâ\80\8bá\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8fá\9e·á\9e\85á\9e\8fá\9e½á\9e\85â\80\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\94á\9f\86លាស់ប្ដូរថ្មីៗ',
-'tog-hidepatrolled' => 'លាក់កំណែប្រែដែលបានល្បាត នៅក្នុងបំលាស់ប្ដូរថ្មីៗ',
-'tog-newpageshidepatrolled' => 'លាក់ទំព័រដែលបានល្បាត ពីបញ្ជីទំព័រថ្មី',
-'tog-extendwatchlist' => 'á\9e\96á\9e\84á\9f\92á\9e\9aá\9e¸á\9e\80â\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93â\80\8bá\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bâ\80\8bá\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a á\9e\98á\9e·á\9e\93â\80\8bá\9e\98á\9f\82á\9e\93â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\82â\80\8bá\9e\94á\9f\86លាស់ប្ដូរថ្មីៗនោះទេ',
-'tog-usenewrc' => ' បំលាស់ប្ដូរជាក្រុមតាមទំព័រ ក្នុងបំលាស់ប្តូរថ្មីៗនិងបញ្ជីតាមដាន (តម្រូវឲ្យមាន JavaScript)',
+'tog-justify' => 'á\9e\8fá\9e\98á\9f\92រឹមកថាខណ្ឌ',
+'tog-hideminor' => 'á\9e\9bá\9e¶á\9e\80á\9f\8bâ\80\8bá\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8fá\9e·á\9e\85á\9e\8fá\9e½á\9e\85â\80\8bá\9e\96á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\94á\9e\93á\9f\92លាស់ប្ដូរថ្មីៗ',
+'tog-hidepatrolled' => 'លាក់កំណែប្រែដែលបានល្បាតពីបញ្ជីបន្លាស់ប្ដូរថ្មីៗ',
+'tog-newpageshidepatrolled' => 'លាក់ទំព័រដែលបានល្បាតពីបញ្ជីទំព័រថ្មី',
+'tog-extendwatchlist' => 'á\9e\96á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\8fâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93â\80\8bá\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bâ\80\8bá\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9e¶á\9f\86á\9e\84á\9e¢á\9e\9fá\9f\8b á\9e\98á\9e·á\9e\93â\80\8bá\9e\98á\9f\82á\9e\93â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\82â\80\8bá\9e\94á\9e\93á\9f\92លាស់ប្ដូរថ្មីៗនោះទេ',
+'tog-usenewrc' => 'បន្លាស់ប្ដូរជាក្រុមតាមទំព័រ ក្នុងបន្លាស់ប្តូរថ្មីៗនិងបញ្ជីតាមដាន (តម្រូវឲ្យមាន JavaScript)',
'tog-numberheadings' => 'បង្ហាញលេខចំណងជើងរងដោយស្វ័យប្រវត្តិ',
'tog-showtoolbar' => 'បង្ហាញរបារឧបករណ៍កែប្រែ (តម្រូវអោយមាន JavaScript)',
'tog-editondblclick' => 'កែប្រែទំព័រដោយចុចពីរដងជាប់គ្នា (តម្រូវអោយមាន JavaScript)',
-'tog-editsection' => 'á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8fá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82â\80\8bá\9e\95á\9f\92á\9e\93á\9f\82á\9e\80á\9e\8eá\9e¶á\9e\98á\9e½á\9e\99â\80\8bá\9e\8fá\9e¶á\9e\98â\80\8bá\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8b[កែប្រែ]',
-'tog-editsectiononrightclick' => 'អនុញ្ញាតកែប្រែផ្នែកណាមួយ ដោយចុចស្តាំកណ្តុរលើចំណងជើងរបស់វា (តម្រូវអោយមាន JavaScript)',
-'tog-showtoc' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\8fá\9e¶á\9e\9aá\9e¶á\9e\84á\9e\98á\9e¶á\9e\8fá\9e·á\9e\80á\9e¶ (á\9e\85á\9f\86á\9e\96á\9f\84á\9f\87ទំព័រដែលមានចំណងជើងរងលើសពី៣)',
+'tog-editsection' => 'á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8fá\9e¢á\9f\84á\9e\99á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82â\80\8bá\9e\95á\9f\92á\9e\93á\9f\82á\9e\80á\9e\8eá\9e¶á\9e\98á\9e½á\9e\99â\80\8bá\9e\8fá\9e¶á\9e\98â\80\8bá\9e\9aá\9e\99á\9f\88á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8b [កែប្រែ]',
+'tog-editsectiononrightclick' => 'á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8fâ\80\8bá\9e¢á\9f\84á\9e\99á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82â\80\8bâ\80\8bá\9e\95á\9f\92á\9e\93á\9f\82á\9e\80á\9e\8eá\9e¶á\9e\98á\9e½á\9e\99 á\9e\8aá\9f\84á\9e\99â\80\8bá\9e\85á\9e»á\9e\85á\9e\9fá\9f\92á\9e\8fá\9e¶á\9f\86á\9e\80á\9e\8eá\9f\92á\9e\8fá\9e»á\9e\9aâ\80\8bá\9e\9bá\9e¾â\80\8bá\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9cá\9e¶ (á\9e\8fá\9e\98á\9f\92á\9e\9aá\9e¼á\9e\9cá\9e¢á\9f\84á\9e\99á\9e\98á\9e¶á\9e\93 JavaScript)',
+'tog-showtoc' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\8fá\9e¶á\9e\9aá\9e¶á\9e\84á\9e\98á\9e¶á\9e\8fá\9e·á\9e\80á\9e¶ (á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bទំព័រដែលមានចំណងជើងរងលើសពី៣)',
'tog-rememberpassword' => 'ចងចាំការកត់ឈ្មោះចូលរបស់ខ្ញុំលើកុំព្យូទ័រនេះ (សំរាប់រយៈពេលយ៉ាងយូរ$1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
'tog-watchcreations' => 'បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំបង្កើតទៅបញ្ជីតាមដានរបស់ខ្ញុំ',
'tog-watchdefault' => 'បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំកែប្រែទៅបញ្ជីតាមដានរបស់ខ្ញុំ',
'tog-watchdeletion' => 'បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំលុបចោលទៅបញ្ជីតាមដានរបស់ខ្ញុំ',
'tog-minordefault' => "ចំណាំគ្រប់កំណែប្រែរបស់ខ្ញុំថាជា'កំណែប្រែតិចតួច'",
'tog-previewontop' => 'បង្ហាញការមើលមុនពីលើប្រអប់កែប្រែ',
-'tog-previewonfirst' => 'បង្ហាញការមើលមុនចំពោះកំណែប្រែដំបូង',
+'tog-previewonfirst' => 'បង្ហាញការមើលមុនសម្រាប់កំណែប្រែដំបូងគេ',
'tog-nocache' => 'មិនប្រើសតិភ្ជាប់នៃទំព័រ',
-'tog-enotifwatchlistpages' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\80á\9e¶á\9e\9bá\9e\94á\9e¾â\80\8bá\9e\98á\9e¶á\9e\93á\9e\94á\9f\86លាស់ប្ដូរនៃទំព័រណាមួយដែលមានក្នុងបញ្ជីតាមដានរបស់ខ្ញុំ',
-'tog-enotifusertalkpages' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\80á\9e¶á\9e\9bá\9e\94á\9e¾â\80\8bá\9e\98á\9e¶á\9e\93á\9e\94á\9f\86លាស់ប្ដូរនៅក្នុងទំព័រពិភាក្សារបស់ខ្ញុំ',
-'tog-enotifminoredits' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\96á\9f\81á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\94á\9f\86លាស់ប្ដូរតិចតួចលើទំព័រឬឯកសារផងដែរ',
-'tog-enotifrevealaddr' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84â\80\8bâ\80\8bá\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\80á\9f\92á\9e\9aá\9e¾á\9e\93á\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80â\80\8bá\9e\93á\9e¶á\9e\93á\9e¶',
+'tog-enotifwatchlistpages' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\80á\9e¶á\9e\9bá\9e\94á\9e¾â\80\8bá\9e\98á\9e¶á\9e\93á\9e\94á\9e\93á\9f\92លាស់ប្ដូរនៃទំព័រណាមួយដែលមានក្នុងបញ្ជីតាមដានរបស់ខ្ញុំ',
+'tog-enotifusertalkpages' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\80á\9e¶á\9e\9bá\9e\94á\9e¾â\80\8bá\9e\98á\9e¶á\9e\93á\9e\94á\9e\93á\9f\92លាស់ប្ដូរនៅក្នុងទំព័រពិភាក្សារបស់ខ្ញុំ',
+'tog-enotifminoredits' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\96á\9f\81á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\94á\9e\93á\9f\92លាស់ប្ដូរតិចតួចលើទំព័រឬឯកសារផងដែរ',
+'tog-enotifrevealaddr' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84â\80\8bâ\80\8bá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\80á\9f\92á\9e\9aá\9e¾á\9e\93á\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80â\80\8b',
'tog-shownumberswatching' => 'បង្ហាញចំនួនអ្នកប្រើប្រាស់ដែលតាមដានទំព័រនេះ',
'tog-oldsig' => 'ហត្ថលេខាមានហើយ៖',
'tog-fancysig' => 'ចុះហត្ថលេខាជាអត្ថបទវិគី (ដោយគ្មានតំណភ្ជាប់ស្វ័យប្រវត្តិ)',
'tog-watchlisthideliu' => 'លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់ដែលបានកត់ឈ្មោះចូលពីបញ្ជីតាមដាន',
'tog-watchlisthideanons' => 'លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់អនាមិកពីបញ្ជីតាមដាន',
'tog-watchlisthidepatrolled' => 'លាក់កំណែប្រែដែលបានល្បាតពីបញ្ជីតាមដាន',
-'tog-ccmeonemails' => 'ផ្ញើច្បាប់ចម្លងអ៊ីមែលដែលខ្ញុំផ្ញើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀតមកខ្ញុំផងដែរ',
-'tog-diffonly' => 'á\9e\80á\9e»á\9f\86á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\81á\9f\92á\9e\9bá\9e¹á\9e\98á\9e\9fá\9e¶á\9e\9aá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\85á\9e\96á\9e¸á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8fá\9e¶á\9e\9aá\9e¶á\9e\84á\9e\94á\9f\92á\9e\9aá\9f\80á\9e\94á\9e\92á\9f\80á\9e\94á\9e\85á\9f\86á\9e\93ុចខុសគ្នា',
+'tog-ccmeonemails' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e\85á\9f\92á\9e\94á\9e¶á\9e\94á\9f\8bá\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84â\80\8bá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\95á\9f\92á\9e\89á\9e¾á\9e\91á\9f\85á\9e\80á\9e¶á\9e\93á\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\91á\9f\80á\9e\8fá\9e\98á\9e\80á\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\81á\9f\92á\9e\9bá\9e½á\9e\93á\9e¯á\9e\84á\9e\95á\9e\84á\9e\8aá\9f\82á\9e\9a',
+'tog-diffonly' => 'á\9e\80á\9e»á\9f\86á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\81á\9f\92á\9e\9bá\9e¹á\9e\98á\9e\9fá\9e¶á\9e\9aá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\85á\9e\96á\9e¸á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8fá\9e¶á\9e\9aá\9e¶á\9e\84á\9e\94á\9f\92á\9e\9aá\9f\80á\9e\94á\9e\92á\9f\80á\9e\94á\9e\85á\9f\86á\9e\8eុចខុសគ្នា',
'tog-showhiddencats' => 'បង្ហាញចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់',
'tog-norollbackdiff' => 'បំភ្លេចភាពខុសគ្នាបន្ទាប់ពីអនុវត្តការស្ដារវិញ',
'underline-default' => 'តាមលំនាំដើមនៃកម្មវិធីរុករក',
# Font style option in Special:Preferences
-'editfont-style' => 'កែសម្រួលរចនាបទពុម្ពអក្សរសម្រាប់តំបន់',
+'editfont-style' => 'រចនាបថពុម្ពអក្សរក្នុងប្រអប់កែប្រែ៖',
'editfont-default' => 'លំនាំដើមនៃកម្មវិធីរុករក',
'editfont-monospace' => 'ពុម្ពអក្សរដែលដកឃ្លាតែមួយ',
'editfont-sansserif' => 'ពុម្ពអក្សរគ្មានកន្ទុយ (Sans-serif font)',
'category-file-count' => '{{PLURAL:$2|ចំណាត់ថ្នាក់ក្រុមនេះមានឯកសារមួយដូចខាងក្រោម។|{{PLURAL:$1|ឯកសារមួយ|ឯកសារចំនួន$1}}ក្នុងចំណោមឯកសារសរុប $2 ដូចខាងក្រោមស្ថិតនៅក្នុងចំណាត់ថ្នាក់ក្រុមនេះ។}}',
'category-file-count-limited' => '{{PLURAL:$1|ឯកសារមួយ|ឯកសារចំនួន$1}}ដូចខាងក្រោមស្ថិតនៅក្នុងចំណាត់ថ្នាក់ក្រុមនេះ។',
'listingcontinuesabbrev' => 'បន្ត',
-'index-category' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾លិបិក្រម',
-'noindex-category' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾លិបិក្រម',
-'broken-file-category' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\91á\9e¶á\9f\86á\9e\84á\9e¡á\9e¶á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\81á\9e¼á\9e\85',
+'index-category' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93លិបិក្រម',
+'noindex-category' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\82á\9f\92á\9e\98á\9e¶á\9e\93លិបិក្រម',
+'broken-file-category' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\91á\9e¶á\9f\86á\9e\84á\9e¡á\9e¶á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\8aá\9e¶á\9e\85á\9f\8bá\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8b',
'about' => 'អំពី',
'article' => 'មាតិកាអត្ថបទ',
'retrievedfrom' => 'បានពី "$1"',
'youhavenewmessages' => 'អ្នកមាន $1 ($2)។',
'newmessageslink' => 'សារថ្មីៗ',
-'newmessagesdifflink' => 'á\9e\94á\9f\86លាស់ប្ដូរចុងក្រោយ',
+'newmessagesdifflink' => 'á\9e\94á\9e\93á\9f\92លាស់ប្ដូរចុងក្រោយ',
'youhavenewmessagesfromusers' => 'អ្នកមាន $1 ទទួលបានពី {{PLURAL:$3|អ្នកប្រើប្រាស់ម្នាក់|អុ្នកប្រើប្រាស់ចំនួន $3 នាក់}} ($2)។',
'youhavenewmessagesmanyusers' => 'អ្នកមាន $1 ទទួលបានពីអ្នកប្រើប្រាស់ជាច្រើន ($2)។',
'newmessageslinkplural' => '{{PLURAL:$1|សារថ្មីមួយ|សារថ្មី}}',
'page-rss-feed' => 'បម្រែបម្រួល RSS Feed នៃ "$1"',
'page-atom-feed' => 'បម្រែបម្រួល Atom Feed នៃ "$1"',
'red-link-title' => '$1 (ទំព័រនេះមិនទាន់មាននៅឡើយទេ)',
-'sort-descending' => 'á\9e\8fá\9f\86រៀបតាមលំដាប់ចុះ',
-'sort-ascending' => 'á\9e\8fá\9f\86រៀបតាមលំដាប់ឡើង',
+'sort-descending' => 'á\9e\8fá\9e\98á\9f\92រៀបតាមលំដាប់ចុះ',
+'sort-ascending' => 'á\9e\8fá\9e\98á\9f\92រៀបតាមលំដាប់ឡើង',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'អត្ថបទ',
'nstab-category' => 'ចំណាត់ថ្នាក់ក្រុម',
# Main script and global functions
-'nosuchaction' => 'á\9e\98á\9e·á\9e\93មានសកម្មភាពបែបនេះទេ',
+'nosuchaction' => 'á\9e\82á\9f\92មានសកម្មភាពបែបនេះទេ',
'nosuchactiontext' => 'សកម្មភាពបានបង្ហាញដោយ URL មិនត្រឹមត្រូវ។
អ្នកប្រហែលជាបានវាយ URL ខុស បើមិនដូច្នេះទេមានតែតំណភ្ជាប់មិនត្រឹមត្រូវ។
នេះក៏អាចបញ្ជាក់ប្រាប់ពីកំហុសនៅក្នុងផ្នែកទន់ប្រើដោយ {{SITENAME}} ។',
-'nosuchspecialpage' => 'á\9e\98á\9e·á\9e\93មានទំព័រពិសេសបែបនេះទេ',
+'nosuchspecialpage' => 'á\9e\82á\9f\92មានទំព័រពិសេសបែបនេះទេ',
'nospecialpagetext' => '<strong>អ្នកបានស្នើរកទំព័រពិសេសមិនទាន់មាន។</strong>
អ្នកអាចមើលបញ្ជីនៃទំព័រពិសេសៗនៅ [[Special:SpecialPages|{{int:specialpages}}]]។',
# General errors
'error' => 'មានបញ្ហា',
'databaseerror' => 'មូលដ្ឋានទិន្នន័យមានបញ្ហា',
-'laggedslavemode' => "'''á\9e\94á\9f\92á\9e\9aá\9e\99á\9f\90á\9e\8fá\9f\92á\9e\93á\9f\96''' á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87â\80\8bá\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\91á\9e»á\9e\80â\80\8bá\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\90á\9f\92á\9e\98á\9e¸á\9f\97ទេ។",
+'laggedslavemode' => "'''á\9e\94á\9f\92á\9e\9aá\9e\99á\9f\90á\9e\8fá\9f\92á\9e\93á\9f\96''' á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87â\80\8bá\9e\94á\9f\92á\9e\9aá\9e á\9f\82á\9e\9bá\9e\87á\9e¶á\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99ទេ។",
'readonly' => 'មូលដ្ឋានទិន្នន័យត្រូវបានចាក់សោ',
'enterlockreason' => 'សូមផ្ដល់ហេតុផលសម្រាប់ការជាប់សោ ព្រមទាំងកាលបរិច្ឆេទដោះសោវិញ',
'readonlytext' => 'ពេលនេះមូលដ្ឋានទិន្នន័យកំពុងជាប់សោ ដើម្បីកុំឱ្យមានការបញ្ចូលទិន្នន័យថ្មីៗឬការកែប្រែផ្សេងៗ។ នេះប្រហែលគ្រាន់តែជាការត្រួតពិនិត្យនិងថែទាំមូលដ្ឋានទិន្នន័យប្រចាំថ្ងៃ ដែលជាធម្មតាវានឹងវិលមកសភាពដើមវិញក្នុងពេលឆាប់ៗ។
'cannotdelete' => 'មិនអាចលុបចោលទំព័រឬឯកសារដែលមានឈ្មោះ "$1"បានទេ។
វាប្រហែលជាត្រូវបាននរណាម្នាក់ផ្សេងទៀតលុបចោលហើយ។',
-'cannotdelete-title' => 'មិនអាចលុបទំព័រ "$1"',
+'cannotdelete-title' => 'មិនអាចលុបទំព័រ "$1"បានទេ',
'badtitle' => 'ចំណងជើងមិនល្អ',
-'badtitletext' => 'ចំណងជើងទំព័រដែលបានស្នើ គ្មានសុពលភាព, ទទេ, ឬ ចំណងជើងតំណភ្ជាប់អន្តរភាសាឬអន្តរវិគី មិនត្រឹមត្រូវ ។ ប្រហែលជាមានតួអក្សរមួយឬច្រើន ដែលជាតួអក្សរហាមប្រើក្នុងចំណងជើង។',
+'badtitletext' => 'ចំណងជើងទំព័រដែលបានស្នើមិនអាចប្រើបាន គ្មានសរសេរអ្វី ឬមានចំណងជើងតំណភ្ជាប់អន្តរភាសាឬអន្តរវិគីមិនត្រឹមត្រូវ ។ វាក៏ប្រហែលជាមានតួអក្សរមួយឬច្រើន ដែលជាតួអក្សរហាមប្រើក្នុងចំណងជើងផងដែរ។',
'perfcached' => 'ទិន្នន័យទាំងនេះត្រូវបានដាក់ទៅសតិភ្ជាប់និងប្រហែលជាមិនទាន់សម័យ ។ ជាអតិបរមា {{PLURAL:$1|លទ្ធផលមួយ|លទ្ធផលចំនួន $1}} អាចប្រើបាននៅក្នុងសតិភ្ជាប់។',
'perfcachedts' => 'ទិន្នន័យខាងក្រោមនេះត្រូវបានដាក់ក្នុងសតិភ្ជាប់ និង បានត្រូវបន្ទាន់សម័យចុងក្រោយនៅ $1។ ជាអតិបរមា {{PLURAL:$4|លទ្ធផលមួយ|លទ្ធផលចំនួន $4}} អាចប្រើបាននៅក្នុងសតិភ្ជាប់។',
'querypage-no-updates' => 'ការបន្ទាន់សម័យសម្រាប់ទំព័រនេះគឺមិនអាចធ្វើទៅរួចទេនាពេលឥឡូវទេ។
សូមព្យាយាមម្ដងទៀតក្នុងរយៈពេលប៉ុន្មាននាទីទៀត។',
'protectedpagetext' => 'ទំព័រនេះបានត្រូវការពារមិនឱ្យកែប្រែឬធ្វើសកម្មភាពផ្សេងទៀតលើវា។',
'viewsourcetext' => 'អ្នកអាចមើលនិងចម្លងកូដរបស់ទំព័រនេះ៖',
-'viewyourtext' => "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\98á\9e¾á\9e\9bá\9e\93á\9e·á\9e\84á\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84á\9e\80á\9e¼á\9e\8aá\9e\9aá\9e\94á\9e\9fá\9f\8b'''á\9e\80á\9e¶á\9e\9aá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80'''á\9e\91á\9f\85កាន់ទំព័រនេះ៖",
+'viewyourtext' => "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\98á\9e¾á\9e\9bá\9e\93á\9e·á\9e\84á\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84á\9e\80á\9e¼á\9e\8aá\9e\9aá\9e\94á\9e\9fá\9f\8b'''á\9e\80á\9e¶á\9e\9aá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80'''á\9e\98á\9e\80កាន់ទំព័រនេះ៖",
'protectedinterface' => 'ទំព័រនេះផ្ដល់នូវអត្ថបទអន្តរមុខសម្រាប់សូហ្វវែរនៅក្នុងវិគីនេះ និងត្រូវបានចាក់សោដើម្បីចៀសវាងការបំពាន។
ដើម្បីបន្ថែមឬផ្លាស់ប្ដូរការបកប្រែសំរាប់វិគីទាំងអស់ សូមប្រើប្រាស់ [//translatewiki.net/ translatewiki.net] ដែលជាគំរោងបកប្រែរបស់MediaWiki។',
'editinginterface' => "'''ប្រយ័ត្ន៖''' អ្នកកំពុងតែកែប្រែទំព័រដែលបានប្រើប្រាស់ដើម្បីផ្ដល់ជូនអន្តរមុខសម្រាប់សូហ្វវែរ។ បំលាស់ប្ដូរចំពោះទំព័រនេះនឹងប៉ះពាល់ដល់ទ្រង់ទ្រាយរបស់ទំព័រអន្តរមុខសំរាប់អ្នកប្រើប្រាស់ជាច្រើន ដែលប្រើប្រាស់វិគីនេះ។ ដើម្បីបន្ថែមឬផ្លាស់ប្ដូរការបកប្រែសំរាប់វិគីទាំងអស់ សូបប្រើប្រាស់ [//translatewiki.net/wiki/Main_Page?setlang=km translatewiki.net] គម្រោងបកប្រែរបស់មេឌាវិគី ។",
'filereadonlyerror' => 'មិនអាចកែប្រែឯកសារ "$1" បានទេពីព្រោះថតឯកសារ "$2" ស្ថិតក្នុងម៉ូដសំរាប់តែអានប៉ុណ្ណោះ។
អភិបាលដែលបានចាក់សោរវាបានផ្ដល់សេចក្ដីពន្យល់បែបនេះ៖ "$3"។',
+'invalidtitle-knownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះ "$2" និងអត្ថបទ "$3"',
+'invalidtitle-unknownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះមិនស្គាល់លេខ $1 និងអត្ថបទ "$2"',
'exception-nologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'exception-nologin-text' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¬á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\93á\9f\81á\9f\87á\9e\8fá\9f\86រូវអោយអ្នកធ្វើការកត់ឈ្មោះចូលទៅក្នុងវិគីនេះ។',
+'exception-nologin-text' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¬á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\93á\9f\81á\9f\87á\9e\8fá\9e\98á\9f\92រូវអោយអ្នកធ្វើការកត់ឈ្មោះចូលទៅក្នុងវិគីនេះ។',
# Virus scanner
'virus-badscanner' => "ការកំណត់រចនាសម្ព័ន្ធមិនល្អ៖ កម្មវិធីស្កេនមេរោគមិនស្គាល់៖ ''$1''",
'welcomecreation-msg' => 'គណនីរបស់អ្នកត្រូវបានបង្កើតហើយ។
កុំភ្លេចផ្លាស់ប្ដូរ[[Special:Preferences|ចំណង់ចំណូលចិត្ត{{SITENAME}}]]របស់អ្នក។',
'yourname' => 'អត្តនាម៖',
-'yourpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់៖',
-'yourpasswordagain' => 'á\9e\9cá\9e¶á\9e\99á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ម្តងទៀត៖',
+'yourpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់៖',
+'yourpasswordagain' => 'á\9e\9cá\9e¶á\9e\99á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ម្តងទៀត៖',
'remembermypassword' => 'ចងចាំកំណត់ឈ្មោះចូលរបស់ខ្ញុំក្នុងកុំព្យូទ័រនេះ (សំរាប់រយៈពេលយូរបំផុត $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
'securelogin-stick-https' => 'នៅភ្ជាប់ទៅ HTTPS ដដែលបន្ទាប់ពីចុះឈ្មោះចូលហើយក៏ដោយ',
'yourdomainname' => 'ដូម៉ែនរបស់អ្នក៖',
-'password-change-forbidden' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ក្នុងវិគីនេះទេ។',
+'password-change-forbidden' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ក្នុងវិគីនេះទេ។',
'externaldberror' => 'មានបញ្ហាក្នុងការបញ្ជាក់ផ្ទៀងផ្ទាត់មូលដ្ឋានទិន្នន័យ ឬអ្នកមិនត្រូវបានអនុញ្ញាតឲ្យបន្ទាន់សម័យគណនីខាងក្រៅរបស់អ្នក។
',
'login' => 'កត់ឈ្មោះចូល',
'nav-login-createaccount' => 'កត់ឈ្មោះចូលឬបង្កើតគណនី',
-'loginprompt' => 'អ្នកត្រូវតែមានខូគី ដើម្បីអាចកត់ឈ្មោះចូល{{SITENAME}}។',
+'loginprompt' => 'á\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82â\80\8bá\9e\98á\9e¶á\9e\93â\80\8bá\9e\81á\9e¼á\9e\82á\9e¸ á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e¢á\9e¶á\9e\85â\80\8bá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bâ\80\8b{{SITENAME}}á\9e\94á\9e¶á\9e\93á\9f\94',
'userlogin' => 'កត់ឈ្មោះចូលឬបង្កើតគណនី',
'userloginnocreate' => 'កត់ឈ្មោះចូល',
'logout' => 'កត់ឈ្មោះចេញ',
'createaccount' => 'បង្កើតគណនី',
'gotaccount' => "បើលោកអ្នកមានគណនីសម្រាប់ប្រើហើយ សូម'''$1'''។",
'gotaccountlink' => 'កត់ឈ្មោះចូល',
-'userlogin-resetlink' => 'á\9e\8fá\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9f\86á\9e¢á\9e·á\9e\8fá\9e\9fá\9f\86រាប់កត់ឈ្មោះចូលហើយ?',
+'userlogin-resetlink' => 'á\9e\8fá\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9e\98á\9f\92á\9e¢á\9e·á\9e\8fá\9e\9fá\9e\98á\9f\92រាប់កត់ឈ្មោះចូលហើយ?',
'createaccountmail' => 'ប្រើប្រាស់ពាក្យសំងាត់ព្រៀងបណ្ដោះអាសនុ្ន រួចផ្ញើវាទៅកាន់អាសយដ្ឋានអ៊ីមែលខាងក្រោម',
'createaccountreason' => 'មូលហេតុ៖',
-'badretype' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93បញ្ចូលនោះ គឺមិនស៊ីគ្នាទេ។',
+'badretype' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93á\9e\9cá\9e¶á\9e\99បញ្ចូលនោះ គឺមិនស៊ីគ្នាទេ។',
'userexists' => 'អត្តនាមដែលអ្នកបានវាយបញ្ចូលមានគេប្រើហើយ។
សូមជ្រើសរើសអត្តនាមផ្សេងពីនេះ។',
'loginerror' => 'កំហុសនៃការកត់ឈ្មោះចូល',
សូមពិនិត្យអក្ខរាវិរុទ្ធរបស់អ្នក ។',
'nouserspecified' => 'អ្នកត្រូវតែផ្ដល់អត្តនាម។',
'login-userblocked' => 'អ្នកប្រើប្រាស់នេះស្ថិតក្រោមការហាមឃាត់។ មិនអនុញ្ញាតអោយកត់ឈ្មោះចូលទេ។',
-'wrongpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93បញ្ចូលមិនត្រឹមត្រូវទេ។
+'wrongpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\9cá\9e¶á\9e\99បញ្ចូលមិនត្រឹមត្រូវទេ។
សូមព្យាយាមម្តងទៀត។',
-'wrongpasswordempty' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93បញ្ចូលទេ។
+'wrongpasswordempty' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9cá\9e¶á\9e\99បញ្ចូលទេ។
សូមព្យាយាមម្តងទៀត។',
-'passwordtooshort' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ត្រូវមានយ៉ាងតិចណាស់ {{PLURAL:$1|១ តួអក្សរ|$1តួអក្សរ}}។',
-'password-name-match' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82á\9e\81á\9e»á\9e\9fá\9e\82á\9f\92á\9e\93á\9e¶á\9e\96á\9e¸á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87របស់អ្នក។',
-'password-login-forbidden' => 'á\9e á\9e¶á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\98á\9e\98á\9e·á\9e\93á\9e¢á\9f\84á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¾á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98á\9e\93á\9e·á\9e\84á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់នេះ។',
-'mailmypassword' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មី',
-'passwordremindertitle' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់បណ្តោះអាសន្នថ្មីសម្រាប់{{SITENAME}}',
-'passwordremindertext' => 'á\9e\98á\9e¶á\9e\93á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8eá\9e¶á\9e\98á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8b (á\9e\94á\9f\92á\9e\9aá\9e á\9f\82á\9e\9bá\9e\87á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80, á\9e\96á\9e¸á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93 IP $1) á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\92á\9e\93á\9e¾á\9e\9fá\9e»á\9f\86á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីមួយពី {{SITENAME}} ($4)។
-á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\98á\9e½á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8b "$2" á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9f\85á\9e\87á\9e¶ "$3"á\9f\94 á\9e\94á\9e¾á\9e\9fá\9e·á\9e\93á\9e\87á\9e¶á\9e\93á\9f\81á\9f\87á\9e\87á\9e¶á\9e\85á\9f\81á\9e\8fá\9e\93á\9e¶á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80 á\9e\9fá\9e¼á\9e\98á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bâ\80\8bá\9e á\9e¾á\9e\99á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មី។
-á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់បណ្ដោះអាសន្នរបស់អ្នក នឹងត្រូវផុតកំណត់ក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5ថ្ងៃ}} ។
-
-á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e\9aá\9e\8eá\9e¸á\9e\98á\9e¶á\9e\93á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8eá\9e¶á\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\9fá\9f\92á\9e\93á\9e¾á\9e\9fá\9e»á\9f\86á\9e\93á\9f\81á\9f\87 á\9e¬ á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\80á\9e\83á\9e¾á\9e\89á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\85á\9e¶á\9e\9fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\9cá\9e·á\9e\89 á\9e á\9e¾á\9e\99á\9e\98á\9e·á\9e\93á\9e\85á\9e\84á\9f\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\91á\9f\81á\9e\93á\9f\84á\9f\87 á\9e\9fá\9e¼á\9e\98á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e¸á\9e\9fá\9e¶á\9e\9aá\9e\93á\9f\81á\9f\87 á\9e á\9e¾á\9e\99á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ចាស់របស់អ្នកបន្តទៀត។',
+'passwordtooshort' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ត្រូវមានយ៉ាងតិចណាស់ {{PLURAL:$1|១ តួអក្សរ|$1តួអក្សរ}}។',
+'password-name-match' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82á\9e\81á\9e»á\9e\9fá\9e\82á\9f\92á\9e\93á\9e¶á\9e\96á\9e¸á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98របស់អ្នក។',
+'password-login-forbidden' => 'á\9e á\9e¶á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\98á\9e\98á\9e·á\9e\93á\9e¢á\9f\84á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¾á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98á\9e\93á\9e·á\9e\84á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់នេះ។',
+'mailmypassword' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មី',
+'passwordremindertitle' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់បណ្តោះអាសន្នថ្មីសម្រាប់{{SITENAME}}',
+'passwordremindertext' => 'á\9e\98á\9e¶á\9e\93á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8eá\9e¶á\9e\98á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8b (á\9e\94á\9f\92á\9e\9aá\9e á\9f\82á\9e\9bá\9e\87á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80, á\9e\96á\9e¸á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93 IP $1) á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\92á\9e\93á\9e¾á\9e\9fá\9e»á\9f\86á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីមួយពី {{SITENAME}} ($4)។
+á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\98á\9e½á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8b "$2" á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9f\85á\9e\87á\9e¶ "$3"á\9f\94 á\9e\94á\9e¾á\9e\9fá\9e·á\9e\93á\9e\87á\9e¶á\9e\93á\9f\81á\9f\87á\9e\87á\9e¶á\9e\85á\9f\81á\9e\8fá\9e\93á\9e¶á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80 á\9e\9fá\9e¼á\9e\98á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bâ\80\8bá\9e á\9e¾á\9e\99á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មី។
+á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់បណ្ដោះអាសន្នរបស់អ្នក នឹងត្រូវផុតកំណត់ក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5ថ្ងៃ}} ។
+
+á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e\9aá\9e\8eá\9e¸á\9e\98á\9e¶á\9e\93á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8eá\9e¶á\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\9fá\9f\92á\9e\93á\9e¾á\9e\9fá\9e»á\9f\86á\9e\93á\9f\81á\9f\87 á\9e¬ á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\80á\9e\83á\9e¾á\9e\89á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\85á\9e¶á\9e\9fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\9cá\9e·á\9e\89 á\9e á\9e¾á\9e\99á\9e\98á\9e·á\9e\93á\9e\85á\9e\84á\9f\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\91á\9f\81á\9e\93á\9f\84á\9f\87 á\9e\9fá\9e¼á\9e\98á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e¸á\9e\9fá\9e¶á\9e\9aá\9e\93á\9f\81á\9f\87 á\9e á\9e¾á\9e\99á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ចាស់របស់អ្នកបន្តទៀត។',
'noemail' => 'គ្មានអាសយដ្ឋានអ៊ីមែលណាមួយត្រូវបានកត់ត្រាទុកសម្រាប់អ្នកប្រើឈ្មោះ "$1" ទេ។',
'noemailcreate' => 'អ្នកត្រូវតែផ្ដល់អាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវមួយ',
-'passwordsent' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីត្រូវបានផ្ញើទៅអាសយដ្ឋានអ៊ីមែលដែលបានចុះបញ្ជីសម្រាប់អ្នកប្រើឈ្មោះ "$1" ។
+'passwordsent' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីត្រូវបានផ្ញើទៅអាសយដ្ឋានអ៊ីមែលដែលបានចុះបញ្ជីសម្រាប់អ្នកប្រើឈ្មោះ "$1" ។
-á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bâ\80\8bá\9e\98á\9f\92á\9e\8fá\9e\84á\9e\91á\9f\80á\9e\8fâ\80\8bá\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\94á\9f\8bá\9e\96á\9e¸â\80\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\91á\9e\91á\9e½á\9e\9bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីនោះ។',
-'blocked-mailpassword' => 'á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e á\9e¶á\9e\98á\9e\83á\9e¶á\9e\8fá\9f\8bá\9e\98á\9e·á\9e\93á\9e¢á\9f\84á\9e\99á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82 á\9e\93á\9e·á\9e\84á\9e\98á\9e·á\9e\93á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8fá\9e±á\9f\92á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e\9fá\9e\84á\9f\92á\9e\82á\9f\92á\9e\9aá\9f\84á\9f\87á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដើម្បីបង្ការការបំពានទេ។',
-'eauthentsent' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\95á\9f\92á\9e\91á\9f\80á\9e\84á\9e\95á\9f\92á\9e\91á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\89á\9e¾á\9e\91á\9f\85â\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87ហើយ។
+á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bâ\80\8bá\9e\98á\9f\92á\9e\8fá\9e\84á\9e\91á\9f\80á\9e\8fâ\80\8bá\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\94á\9f\8bá\9e\96á\9e¸â\80\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\91á\9e\91á\9e½á\9e\9bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីនោះ។',
+'blocked-mailpassword' => 'á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e á\9e¶á\9e\98á\9e\83á\9e¶á\9e\8fá\9f\8bá\9e\98á\9e·á\9e\93á\9e¢á\9f\84á\9e\99á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82 á\9e\93á\9e·á\9e\84á\9e\98á\9e·á\9e\93á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8fá\9e±á\9f\92á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e\9fá\9e\84á\9f\92á\9e\82á\9f\92á\9e\9aá\9f\84á\9f\87á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដើម្បីបង្ការការបំពានទេ។',
+'eauthentsent' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\95á\9f\92á\9e\91á\9f\80á\9e\84á\9e\95á\9f\92á\9e\91á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\89á\9e¾á\9e\91á\9f\85â\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\85á\9e»á\9f\87á\9e\8fá\9f\92á\9e\9aá\9e¶ហើយ។
មុននឹងមានអ៊ីមែលផ្សេងមួយទៀតត្រូវផ្ញើទៅគណនីនេះ អ្នកត្រូវតែធ្វើតាមសេចក្តីណែនាំក្នុងអ៊ីមែលនោះ ដើម្បីបញ្ជាក់ថាគណនីបច្ចុប្បន្នពិតជារបស់អ្នកពិតប្រាកដមែន។',
-'throttled-mailpassword' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ត្រូវបានផ្ញើទៅឱ្យអ្នកតាំងពី{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}មុននេះហើយ។
+'throttled-mailpassword' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ត្រូវបានផ្ញើទៅឱ្យអ្នកតាំងពី{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}មុននេះហើយ។
-á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\84á\9f\92á\9e\80á\9e¶á\9e\9aá\9e¢á\9f\86á\9e\96á\9e¾á\9e\94á\9f\86á\9e\96á\9e¶á\9e\93 á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់តែមួយគត់នឹងត្រូវបានផ្ញើក្នុងរយៈពេល{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}។',
+á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\84á\9f\92á\9e\80á\9e¶á\9e\9aá\9e¢á\9f\86á\9e\96á\9e¾á\9e\94á\9f\86á\9e\96á\9e¶á\9e\93 á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់តែមួយគត់នឹងត្រូវបានផ្ញើក្នុងរយៈពេល{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}។',
'mailerror' => 'បញ្ហាក្នុងការផ្ញើអ៊ីមែល៖ $1',
'acct_creation_throttle_hit' => 'អ្នកទស្សនាវិគីនេះដោយប្រើប្រាស់អាសយដ្ឋានIPរបស់អ្នក បានបង្កើត{{PLURAL:$1|គណនីមួយ|គណនីចំនួន$1}}នៅថ្ងៃចុងក្រោយ។ ចំនួននេះជាចំនួនអតិបរមារដែលត្រូវបានអនុញ្ញាតសម្រាប់រយៈពេលនេះ។
'emailconfirmlink' => 'ផ្ទៀងផ្ទាត់បញ្ជាក់អាសយដ្ឋានអ៊ីមែលរបស់អ្នក',
'invalidemailaddress' => 'អាសយដ្ឋានអ៊ីមែលនេះមិនអាចទទួលយកបានទេដោយសារវាមានទម្រង់មិនត្រឹមត្រូវ។
-á\9e\9fá\9e¼á\9e\98á\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bâ\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e\98á\9e½á\9e\99â\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93â\80\8bá\9e\91á\9e\98á\9f\92á\9e\9aá\9e\84á\9f\8bâ\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9c á\9e¬á\9e\98á\9e½á\9e\99á\9e\80á\9f\8fá\9e\91á\9e»á\9e\80á\9e\9cá\9e¶á\9e\9bá\9e\93á\9f\84á\9f\87á\9e±á\9f\92á\9e\99នៅទំនេរ។',
+á\9e\9fá\9e¼á\9e\98á\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bâ\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e\98á\9e½á\9e\99â\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93â\80\8bá\9e\91á\9e\98á\9f\92á\9e\9aá\9e\84á\9f\8bâ\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9c á\9e¬á\9e\98á\9e½á\9e\99á\9e\80á\9f\8fá\9e\91á\9e»á\9e\80á\9e±á\9f\92á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¡á\9f\84á\9f\87á\9e\93á\9f\84á\9f\87នៅទំនេរ។',
'cannotchangeemail' => 'អាសយដ្ឋានអ៊ីមែលរបស់គណនីមិនអាចប្ដូរបានទេនៅលើវិគីនេះ។',
'emaildisabled' => 'វិបសៃថ៍នេះមិនអាចផ្ញើអ៊ីមែលបានទេ។',
'accountcreated' => 'គណនីរបស់លោកអ្នកត្រូវបានបង្កើតហើយ',
អ្នកអាចបំភ្លេចពីសារនេះ ប្រសិនបើគណនីនេះត្រូវបានបង្កើតដោយមានបញ្ហា។',
'usernamehasherror' => 'អត្តនាមមិនអាចមានតួអក្សរដែលជាសញ្ញាបានទេ',
-'login-throttled' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\86រេចច្រើនដងពេកហើយ។
+'login-throttled' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92រេចច្រើនដងពេកហើយ។
សូមរងចាំមួយរយៈ មុនពេលសាកល្បងម្ដងទៀត។',
-'login-abort-generic' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e»á\9f\87á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\86រេចទេ។ ការចុះឈ្មោះចូលត្រូវបានបោះបង់។',
+'login-abort-generic' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e»á\9f\87á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92រេចទេ។ ការចុះឈ្មោះចូលត្រូវបានបោះបង់។',
'loginlanguagelabel' => 'ភាសា៖ $1',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'កំហុសមិនស្គាល់នៅក្នុងអនុគមន៍ mail() របស់ PHP',
'user-mail-no-addy' => 'បានព្យាយាមផ្ញើអ៊ីមែលដោយមិនបានដាក់អាសដ្ឋានអ៊ីមែល។',
# Change password dialog
-'resetpass' => 'â\80\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់',
-'resetpass_announce' => 'អ្នកបានកត់ឈ្មោះចូលដោយអក្សរកូដអ៊ីមែលបណ្តោះអាសន្នមួយ។
+'resetpass' => 'â\80\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់',
+'resetpass_announce' => 'អ្នកបានកត់ឈ្មោះចូលដោយអក្សរកូដបណ្តោះអាសន្នមួយដែលយើងខ្ញុំបានអ៊ីមែលទៅឱ្យ។
-á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e\94á\9e\89á\9f\92á\9e\85á\9e\94á\9f\8bâ\80\8bá\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9b á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82â\80\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីមួយនៅទីនេះ៖',
+á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e\94á\9e\89á\9f\92á\9e\85á\9e\94á\9f\8bâ\80\8bá\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9b á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82â\80\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីមួយនៅទីនេះ៖',
'resetpass_text' => '<!-- បន្ថែមឃ្លានៅទីនេះ -->',
-'resetpass_header' => 'á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់គណនី',
-'oldpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ចាស់៖',
-'newpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មី៖',
-'retypenew' => 'á\9e\9fá\9e¼á\9e\98á\9e\9cá\9e¶á\9e\99á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីម្តងទៀត៖',
-'resetpass_submit' => 'á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់និងកត់ឈ្មោះចូល',
-'resetpass_success' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរបានសំរេចហើយ! ឥឡូវនេះកំពុងកត់ឈ្មោះចូល...',
-'resetpass_forbidden' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់មិនអាចផ្លាស់ប្តូរបានទេ',
+'resetpass_header' => 'á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់គណនី',
+'oldpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ចាស់៖',
+'newpassword' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មី៖',
+'retypenew' => 'á\9e\9fá\9e¼á\9e\98á\9e\9cá\9e¶á\9e\99á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីម្តងទៀត៖',
+'resetpass_submit' => 'á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់និងកត់ឈ្មោះចូល',
+'resetpass_success' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរបានសំរេចហើយ! ឥឡូវនេះកំពុងកត់ឈ្មោះចូល...',
+'resetpass_forbidden' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់មិនអាចផ្លាស់ប្តូរបានទេ',
'resetpass-no-info' => 'អ្នកចាំបាច់ត្រូវតែកត់ឈ្មោះចូល ដើម្បីចូលទៅកាន់ទំព័រនេះដោយផ្ទាល់។',
-'resetpass-submit-loggedin' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់',
+'resetpass-submit-loggedin' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់',
'resetpass-submit-cancel' => 'បោះបង់',
'resetpass-wrong-oldpass' => 'ពាក្យសម្ងាត់បណ្ដោះអាសន្ន ឬបច្ចុប្បន្នមិនត្រឹមត្រូវ។
-á\9e¢á\9f\92á\9e\93á\9e\80â\80\8bâ\80\8bá\9e\94á\9f\92á\9e\9aá\9e á\9f\82á\9e\9bâ\80\8bá\9e\87á\9e¶â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\9bá\9f\81á\9e\81â\80\8bá\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\9aá\9e½á\9e\85á\9e á\9e¾á\9e\8fá\9e\99 á\9e¬â\80\8bá\9e\94á\9e¶á\9e\93á\9e\9fá\9f\92á\9e\93á\9e¾â\80\8bá\9e\9fá\9e»á\9f\86â\80\8bá\9e\9bá\9f\81á\9e\81សម្ងាត់បណ្ដោះអាសន្នថ្មីមួយហើយ។',
-'resetpass-temp-password' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់បណ្តោះអាសន្ន:',
+á\9e¢á\9f\92á\9e\93á\9e\80â\80\8bâ\80\8bá\9e\94á\9f\92á\9e\9aá\9e á\9f\82á\9e\9bâ\80\8bá\9e\87á\9e¶â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\9aá\9e½á\9e\85á\9e á\9e¾á\9e\99 á\9e¬â\80\8bá\9e\94á\9e¶á\9e\93á\9e\9fá\9f\92á\9e\93á\9e¾â\80\8bá\9e\9fá\9e»á\9f\86â\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99សម្ងាត់បណ្ដោះអាសន្នថ្មីមួយហើយ។',
+'resetpass-temp-password' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់បណ្តោះអាសន្ន:',
# Special:PasswordReset
-'passwordreset' => 'á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់សាឡើងវិញ',
+'passwordreset' => 'á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់សាឡើងវិញ',
'passwordreset-text' => 'បំពេញសំណុំបែបបទនេះដើម្បីទទួលបានអ៊ីម៉ែលក្រើនរំលឹកពីព័ត៌មានលំអិតរបស់គណនីរបស់អ្នក។',
-'passwordreset-legend' => 'á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9f\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដើម',
-'passwordreset-disabled' => 'á\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9f\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដើមត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
+'passwordreset-legend' => 'á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9f\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដើម',
+'passwordreset-disabled' => 'á\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9f\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដើមត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
'passwordreset-pretext' => '{{PLURAL:$1||វាយបញ្ចូលផ្នែកមួយនៃទិន្នន័យខាងក្រោម}}',
'passwordreset-username' => 'អត្តនាម៖',
'passwordreset-domain' => 'ដូម៉ែន៖',
'passwordreset-capture' => 'មើលអ៊ីមែលលទ្ធផល?',
-'passwordreset-capture-help' => 'á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\82á\9e¼á\9e\9fá\9e\92á\9e¸á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\93á\9f\81á\9f\87 á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9b (á\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់បណ្ដោះអាសន្ន) មិនត្រូវបានបង្ហាញដូចគ្នានឹងអ៊ីមែលដែលនឹងត្រូវផ្ញើទៅទៅកាន់អ្នកប្រើប្រាស់ដែរ។',
+'passwordreset-capture-help' => 'á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\82á\9e¼á\9e\9fá\9e\92á\9e¸á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\93á\9f\81á\9f\87 á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9b (á\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់បណ្ដោះអាសន្ន) មិនត្រូវបានបង្ហាញដូចគ្នានឹងអ៊ីមែលដែលនឹងត្រូវផ្ញើទៅទៅកាន់អ្នកប្រើប្រាស់ដែរ។',
'passwordreset-email' => 'អាសយដ្ឋានអ៊ីមែល៖',
'passwordreset-emailtitle' => 'ព័ត៌មានលំអិតពីគណនីនៅលើ {{SITENAME}}',
'passwordreset-emailtext-ip' => 'មាននរណាម្នាក់ (ប្រហែលជាខ្លួនអ្នកផ្ទាល់, មកពីអាស័យដ្ឋាន IP $1) បានស្នើសុំសារក្រើនរំលឹកពីព័ត៌មានពិស្ដារ
$2
-{{PLURAL:$3|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\93á\9f\81á\9f\87|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់បណ្ដោះអាសន្នទាំងនេះ}} និងហួសសុពលភាពក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5 ថ្ងៃ}}។
-á\9e\99á\9e\80á\9e\9bá\9f\92á\9e¢á\9e¢á\9f\92á\9e\93á\9e\80á\9e\82á\9e½á\9e\9aá\9e\8fá\9f\82á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីមួយ។ ប្រសិនបើមាននរណាម្នាក់ផ្សេងធ្វើការស្នើសុំនេះ
-á\9e¬á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\80á\9e\83á\9e¾á\9e\89á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដើមរបស់អ្នកហើយអ្នកមិនប្រាថ្នាផ្លាស់ប្ដូរវាទៀតទេនោះ អ្នកគ្រាន់តែ
-á\9e\80á\9e»á\9f\86á\9e\81á\9f\92á\9e\9cá\9e\9bá\9f\8bá\9e\87á\9e¶á\9e\98á\9e½á\9e\99á\9e\9fá\9e¶á\9e\9aá\9e\98á\9e½á\9e\99á\9e\93á\9f\81á\9f\87 á\9e á\9e¾á\9e\99á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ចាស់របស់អ្នកទៅបានហើយ។',
+{{PLURAL:$3|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\93á\9f\81á\9f\87|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់បណ្ដោះអាសន្នទាំងនេះ}} និងហួសសុពលភាពក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5 ថ្ងៃ}}។
+á\9e\99á\9e\80á\9e\9bá\9f\92á\9e¢á\9e¢á\9f\92á\9e\93á\9e\80á\9e\82á\9e½á\9e\9aá\9e\8fá\9f\82á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីមួយ។ ប្រសិនបើមាននរណាម្នាក់ផ្សេងធ្វើការស្នើសុំនេះ
+á\9e¬á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\80á\9e\83á\9e¾á\9e\89á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដើមរបស់អ្នកហើយអ្នកមិនប្រាថ្នាផ្លាស់ប្ដូរវាទៀតទេនោះ អ្នកគ្រាន់តែ
+á\9e\94á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e¢á\9f\86á\9e\96á\9e¸á\9e\9fá\9e¶á\9e\9aá\9e\98á\9e½á\9e\99á\9e\93á\9f\81á\9f\87 á\9e á\9e¾á\9e\99á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ចាស់របស់អ្នកទៅបានហើយ។',
'passwordreset-emailtext-user' => 'អ្នកប្រើប្រាស់ $1 នៅក្នុង {{SITENAME}} បានស្នើសុំសារក្រើនរំលឹកអំពីព័ត៌មានពិស្ដាររបស់គណនីរបស់អ្នកនៅក្នុង {{SITENAME}} ($4)។
{{PLURAL:$3|គណនី|គណនី}}អ្នកប្រើប្រាស់ដូចតទៅនេះមានជាប់ទាក់ទិននឹងអាស័យដ្ឋានអ៊ីមែលនេះ៖
$2
-{{PLURAL:$3|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\93á\9f\81á\9f\87|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់បណ្ដោះអាសន្នទាំងនេះ}} និងហួសសុពលភាពក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5 ថ្ងៃ}}។
-á\9e\99á\9e\80á\9e\9bá\9f\92á\9e¢á\9e¢á\9f\92á\9e\93á\9e\80á\9e\82á\9e½á\9e\9aá\9e\8fá\9f\82á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ថ្មីមួយ។ ប្រសិនបើមាននរណាម្នាក់ផ្សេងធ្វើការស្នើសុំនេះ
-á\9e¬á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\80á\9e\83á\9e¾á\9e\89á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដើមរបស់អ្នកហើយអ្នកមិនប្រាថ្នាផ្លាស់ប្ដូរវាទៀតទេនោះ អ្នកគ្រាន់តែ
-á\9e\80á\9e»á\9f\86á\9e\81á\9f\92á\9e\9cá\9e\9bá\9f\8bá\9e\87á\9e¶á\9e\98á\9e½á\9e\99á\9e\9fá\9e¶á\9e\9aá\9e\98á\9e½á\9e\99á\9e\93á\9f\81á\9f\87 á\9e á\9e¾á\9e\99á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ចាស់របស់អ្នកទៅបានហើយ។',
-'passwordreset-emailelement' => 'á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8b៖ $1
-á\9e\9bá\9f\81á\9e\81សម្ងាត់បណ្ដោះអាសន្ន៖ $2',
-'passwordreset-emailsent' => 'á\9e¢á\9e¸á\9e»á\9e\98á\9f\82á\9e\9bá\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9e\98á\9e½á\9e\99បានផ្ញើទៅហើយ។',
+{{PLURAL:$3|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\93á\9f\81á\9f\87|á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់បណ្ដោះអាសន្នទាំងនេះ}} និងហួសសុពលភាពក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5 ថ្ងៃ}}។
+á\9e\99á\9e\80á\9e\9bá\9f\92á\9e¢á\9e¢á\9f\92á\9e\93á\9e\80á\9e\82á\9e½á\9e\9aá\9e\8fá\9f\82á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ថ្មីមួយ។ ប្រសិនបើមាននរណាម្នាក់ផ្សេងធ្វើការស្នើសុំនេះ
+á\9e¬á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\80á\9e\83á\9e¾á\9e\89á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដើមរបស់អ្នកហើយអ្នកមិនប្រាថ្នាផ្លាស់ប្ដូរវាទៀតទេនោះ អ្នកគ្រាន់តែ
+á\9e\94á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e¢á\9f\86á\9e\96á\9e¸á\9e\9fá\9e¶á\9e\9aá\9e\98á\9e½á\9e\99á\9e\93á\9f\81á\9f\87 á\9e á\9e¾á\9e\99á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ចាស់របស់អ្នកទៅបានហើយ។',
+'passwordreset-emailelement' => 'á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98៖ $1
+á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99សម្ងាត់បណ្ដោះអាសន្ន៖ $2',
+'passwordreset-emailsent' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9e\98á\9e½á\9e\99á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cបានផ្ញើទៅហើយ។',
'passwordreset-emailsent-capture' => 'អ៊ីមែលរំលឹកមួយដូចបង្ហាញខាងក្រោមត្រូវបានផ្ញើទៅហើយ។',
'passwordreset-emailerror-capture' => 'អ៊ីមែលរំលឹកមួយដូចបង្ហាញខាងក្រោមត្រូវបានបង្កើតហើយ ប៉ុន្តែការផ្ញើទៅកាន់អ្នកប្រើប្រាស់មិនបានសំរេចទេ៖ $1',
# Special:ChangeEmail
'changeemail' => 'ផ្លាស់ប្ដូរអាសយដ្ឋានអ៊ីមែល',
'changeemail-header' => 'ផ្លាស់ប្ដូរអាសយដ្ឋានអ៊ីមែលសំរាប់គណនីនេះ',
-'changeemail-text' => 'á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\9fá\9f\86á\9e\93á\9e»á\9f\86á\9e\94á\9f\82á\9e\94á\9e\94á\9e\91á\9e\93á\9f\81á\9f\87á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9f\94 á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\84á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដើម្បីអះអាងលើការផ្លាស់ប្ដូរនេះ។',
+'changeemail-text' => 'á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\9fá\9f\86á\9e\93á\9e»á\9f\86á\9e\94á\9f\82á\9e\94á\9e\94á\9e\91á\9e\93á\9f\81á\9f\87á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9f\94 á\9e¢á\9f\92á\9e\93á\9e\80á\9e\93á\9e¹á\9e\84á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដើម្បីអះអាងលើការផ្លាស់ប្ដូរនេះ។',
'changeemail-no-info' => 'អ្នកចាំបាច់ត្រូវតែកត់ឈ្មោះចូល ដើម្បីចូលទៅកាន់ទំព័រនេះដោយផ្ទាល់។',
'changeemail-oldemail' => 'អាសយដ្ឋានអ៊ីមែលបច្ចុប្បន្ន៖',
'changeemail-newemail' => 'អាសយដ្ឋានអ៊ីមែលថ្មី៖',
'preview' => 'មើលជាមុន',
'showpreview' => 'បង្ហាញការមើលជាមុន',
'showlivepreview' => 'មើលជាមុនដោយផ្ទាល់',
-'showdiff' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\94á\9f\86លាស់ប្ដូរ',
+'showdiff' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\94á\9e\93á\9f\92លាស់ប្ដូរ',
'anoneditwarning' => "'''ប្រយ័ត្ន ៖''' អ្នកមិនបានកត់ឈ្មោះចូលទេ។ អាសយដ្ឋានIPរបស់អ្នកនឹងត្រូវបានកត់ត្រាទុកក្នុងប្រវត្តិកែប្រែនៃទំព័រនេះ។",
'anonpreviewwarning' => "''អ្នកមិនបានកត់ឈ្មោះចូលទេ។ ប្រសិនបើអ្នកធ្វើការរក្សាទុក នោះអាសយដ្ឋានIPរបស់អ្នកនឹងត្រូវបានកត់ត្រាទុកក្នុងប្រវត្តិកែប្រែនៃទំព័រនេះ។''",
'missingsummary' => "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ចំណារពន្យល់អំពីកំណែប្រែនេះទេ។
បើសិនជាអ្នកចុច '''រក្សាទុក''' ម្ដងទៀតនោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានចំណារពន្យល់។",
-'missingcommenttext' => 'á\9e\9fá\9e¼á\9e\98á\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\98á\9e½á\9e\99á\9e\9cá\9e·á\9e\85á\9e¶á\9e\9aនៅខាងក្រោម។',
-'missingcommentheader' => "'''á\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9f\96''' á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e±á\9f\92á\9e\99á\9e\93á\9e¼á\9e\9c á\9e\94á\9f\92á\9e\9aá\9e\92á\9e¶á\9e\93á\9e\94á\9e\91/á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84 á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9cá\9e·á\9e\85á\9e¶á\9e\9aនេះទេ។
+'missingcommenttext' => 'á\9e\9fá\9e¼á\9e\98á\9e\9cá\9e¶á\9e\99á\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\99á\9f\84á\9e\94á\9e\9bá\9f\8bá\9e\98á\9e½á\9e\99នៅខាងក្រោម។',
+'missingcommentheader' => "'''á\9e\9aá\9f\86á\9e\9bá\9e¹á\9e\80á\9f\96''' á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e±á\9f\92á\9e\99á\9e\93á\9e¼á\9e\9c á\9e\94á\9f\92á\9e\9aá\9e\92á\9e¶á\9e\93á\9e\94á\9e\91/á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84 á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\98á\9e\8fá\9e·á\9e\99á\9f\84á\9e\94á\9e\9bá\9f\8bនេះទេ។
បើសិនជាអ្នកចុច \"{{int:savearticle}}\" ម្ដងទៀតនោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។",
'summary-preview' => 'ការមើលជាមុនរបស់ចំណារពន្យល់:',
'subject-preview' => 'ការមើលជាមុនរបស់ប្រធានបទ/ចំណងជើង:',
'loginreqtitle' => 'តម្រូវអោយកត់ឈ្មោះចូល',
'loginreqlink' => 'កត់ឈ្មោះចូល',
'loginreqpagetext' => 'អ្នកត្រូវតែ$1ដើម្បីមើលទំព័រដទៃផ្សេងទៀត។',
-'accmailtitle' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ត្រូវបានផ្ញើរួចហើយ។',
-'accmailtext' => "á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ដែលបានបង្កើតដោយចៃដន្យសម្រាប់ [[User talk:$1|$1]] ត្រូវបានផ្ញើទៅ $2 ហើយ។
+'accmailtitle' => 'á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ត្រូវបានផ្ញើរួចហើយ។',
+'accmailtext' => "á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ដែលបានបង្កើតដោយចៃដន្យសម្រាប់ [[User talk:$1|$1]] ត្រូវបានផ្ញើទៅ $2 ហើយ។
-á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bâ\80\8bá\9e\82á\9e\8eá\9e\93á\9e¸â\80\8bá\9e\90á\9f\92á\9e\98á\9e¸â\80\8bá\9e\93á\9f\81á\9f\87 á\9e¢á\9e¶á\9e\85â\80\8bâ\80\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\94á\9e¶á\9e\93á\9e\93á\9f\85â\80\8bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a ''[[Special:ChangePassword|á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់]]'' បន្ទាប់ពីកត់ឈ្មោះចូលហើយ។",
+á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bâ\80\8bá\9e\82á\9e\8eá\9e\93á\9e¸â\80\8bá\9e\90á\9f\92á\9e\98á\9e¸â\80\8bá\9e\93á\9f\81á\9f\87 á\9e¢á\9e¶á\9e\85â\80\8bâ\80\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\94á\9e¶á\9e\93á\9e\93á\9f\85â\80\8bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a ''[[Special:ChangePassword|á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់]]'' បន្ទាប់ពីកត់ឈ្មោះចូលហើយ។",
'newarticle' => '(ថ្មី)',
'newarticletext' => "អ្នកបានតាមតំណភ្ជាប់ទៅទំព័រដែលមិនទាន់មាននៅឡើយ។
ដើម្បីបង្កើតទំព័រនេះ សូមចាប់ផ្ដើមវាយក្នុងប្រអប់ខាងក្រោម (សូមមើល [[{{MediaWiki:Helppage}}|ទំព័រជំនួយ]] សម្រាប់ព័ត៌មានបន្ថែម)។
'userinvalidcssjstitle' => "'''ប្រយ័ត្ន៖''' គ្មានសំបក \"\$1\"។ ចងចាំថា ទំព័រផ្ទាល់ខ្លួន .css និង .js ប្រើប្រាស់ ចំណងជើង ជាអក្សរតូច, ឧទាហរណ៍ {{ns:user}}:Foo/vector.css ត្រឹមត្រូវ, រីឯ {{ns:user}}:Foo/Vector.css មិនត្រឹមត្រូវ។",
'updated' => '(បានបន្ទាន់សម័យ)',
'note' => "'''ចំណាំ៖'''",
-'previewnote' => "'''á\9e\9fá\9e¼á\9e\98á\9e\85á\9e¶á\9f\86á\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\82á\9f\92á\9e\9aá\9e¶á\9e\93á\9f\8bá\9e\8fá\9f\82á\9e\87á\9e¶â\80\8bá\9e\80á\9e¶á\9e\9aá\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\80á\9e¶á\9e\9aá\9e\98á\9e¾á\9e\9bá\9e\87á\9e¶á\9e\98á\9e»á\9e\93á\9e\94á\9f\89á\9e»á\9e\8eá\9f\92á\9e\8eá\9f\84á\9f\87á\9f\94 á\9e\94á\9f\86លាស់ប្ដូររបស់អ្នកមិនទាន់បានរក្សាទុកទេ!'''",
+'previewnote' => "'''á\9e\9fá\9e¼á\9e\98á\9e\85á\9e¶á\9f\86á\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\82á\9f\92á\9e\9aá\9e¶á\9e\93á\9f\8bá\9e\8fá\9f\82á\9e\87á\9e¶â\80\8bá\9e\80á\9e¶á\9e\9aá\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\80á\9e¶á\9e\9aá\9e\98á\9e¾á\9e\9bá\9e\87á\9e¶á\9e\98á\9e»á\9e\93á\9e\94á\9f\89á\9e»á\9e\8eá\9f\92á\9e\8eá\9f\84á\9f\87á\9f\94 á\9e\94á\9e\93á\9f\92លាស់ប្ដូររបស់អ្នកមិនទាន់បានរក្សាទុកទេ!'''",
'continue-editing' => 'ទៅកាន់កន្លែងសំរាប់ធ្វើការកែប្រែ',
'previewconflict' => 'ការមើលមុននេះយោងតាមអត្ថបទក្នុងប្រអប់កែប្រែខាងលើ។ ទំព័រអត្ថបទនឹងបង្ហាញចេញបែបនេះប្រសិនបើអ្នកជ្រើសរើសរក្សាទុក។',
'session_fail_preview' => "'''សូមអភ័យទោស! យើងមិនអាចរក្សាទុកការកែប្រែរបស់អ្នកបានទេ ដោយសារបាត់ទិន្នន័យវេនការងារ។
'editingold' => "'''បម្រាម:អ្នកកំពុងតែកែកំណែប្រែដែលហួសសម័យរបស់ទំព័រនេះ។
ប្រសិនបើអ្នករក្សាវាទុក កំណែប្រែពីមុនទាំងប៉ុន្មាននឹងត្រូវបាត់បង់។'''",
-'yourdiff' => 'á\9e\85á\9f\86á\9e\93ុចខុសគ្នា',
-'copyrightwarning' => "á\9e\9fá\9e¼á\9e\98á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bá\9e\9fá\9e\98á\9f\92á\9e\82á\9e¶á\9e\9bá\9f\8bâ\80\8bá\9e\90á\9e¶ á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\80á\9e¶á\9e\9aá\9e\9aá\9e½á\9e\98á\9e\85á\9f\86á\9e\8eá\9f\82á\9e\80â\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\93á\9f\85á\9e\9bá\9e¾{{SITENAME}} á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93â\80\8bá\9e\95á\9f\92á\9e\9fá\9e\96á\9f\92á\9e\9cá\9e\95á\9f\92á\9e\9fá\9e¶á\9e\99â\80\8bá\9e\8fá\9e¶á\9e\98â\80\8bá\9e\9bá\9e·á\9e\81á\9e·á\9e\8fá\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8f $2 (á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\98á\9e¾á\9e\9b $1 á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93â\80\8bá\9e\9bá\9f\86អិត) ។ បើអ្នកមិនចង់ឱ្យត្រូវបានអ្នកដទៃធ្វើការកែប្រែ ផ្សព្វផ្សាយបន្តសំណេររបស់អ្នកទេនោះ សូមអ្នកកុំដាក់ស្នើវានៅទីនេះអី។<br />
+'yourdiff' => 'á\9e\85á\9f\86á\9e\8eុចខុសគ្នា',
+'copyrightwarning' => "á\9e\9fá\9e¼á\9e\98á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bá\9e\9fá\9e\98á\9f\92á\9e\82á\9e¶á\9e\9bá\9f\8bâ\80\8bá\9e\90á\9e¶ á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\80á\9e¶á\9e\9aá\9e\9aá\9e½á\9e\98á\9e\85á\9f\86á\9e\8eá\9f\82á\9e\80â\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\93á\9f\85á\9e\9bá\9e¾{{SITENAME}} á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93â\80\8bá\9e\95á\9f\92á\9e\9fá\9e\96á\9f\92á\9e\9cá\9e\95á\9f\92á\9e\9fá\9e¶á\9e\99â\80\8bá\9e\8fá\9e¶á\9e\98â\80\8bá\9e\9bá\9e·á\9e\81á\9e·á\9e\8fá\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8f $2 (á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\98á\9e¾á\9e\9b $1 á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93â\80\8bá\9e\9bá\9e\98á\9f\92អិត) ។ បើអ្នកមិនចង់ឱ្យត្រូវបានអ្នកដទៃធ្វើការកែប្រែ ផ្សព្វផ្សាយបន្តសំណេររបស់អ្នកទេនោះ សូមអ្នកកុំដាក់ស្នើវានៅទីនេះអី។<br />
អ្នកត្រូវសន្យាថា អ្នកសរសេរវាដោយខ្លួនអ្នក ឬបានចម្លងវាពីកម្មសិទ្ធិសាធារណៈឬពីប្រភពសេរី ។
'''មិនត្រូវដាក់ស្នើការងារមានជាប់កម្មសិទ្ឋិបញ្ញាដោយគ្មានការអនុញ្ញាតទេ!'''",
'copyrightwarning2' => "សូមធ្វើការកត់សម្គាល់ថា គ្រប់ការរួមចំណែកទៅ {{SITENAME}} អាចត្រូវបានកែប្រែ ផ្លាស់ប្ដូរ រឺលុបចោល ដោយអ្នករួមចំណែកដទៃទៀត។
'last' => 'ចុងក្រោយ',
'page_first' => 'ដំបូង',
'page_last' => 'ចុងក្រោយ',
-'histlegend' => "ជម្រើស៖ សូមគូសក្នុងកូនប្រអប់ពីមុខកំណែដែលអ្នកចង់ប្រៀបធៀប រួចចុចច្នុច enter ឬប៊ូតុងនៅខាងក្រោម។<br />
+'histlegend' => "ជម្រើស៖ សូមគូសក្នុងកូនប្រអប់ពីមុខកំណែដែលអ្នកចង់ប្រៀបធៀប រួចចុចច្នុច ENTER ឬប៊ូតុងនៅខាងក្រោម។<br />
'''ពាក្យតំណាង'''៖(បច្ចុប្បន្ន) = ភាពខុសគ្នាជាមួយនឹងកំណែបច្ចុប្បន្ន, (ចុងក្រោយ) = ភាពខុសគ្នារវាងកំណែប្រែពីមុន, តិច = កំណែប្រែតិចតួច",
'history-fieldset-title' => 'ស្វែងរកក្នុងប្រវត្តិ',
'history-show-deleted' => 'តែទំព័រលុបចោលប៉ុណ្ណោះ',
'revdelete-unsuppress' => 'ដកចេញការដាក់កំហិតលើកំណែដែលបានស្តារឡើងវិញ',
'revdelete-log' => 'មូលហេតុ៖',
'revdelete-submit' => 'អនុវត្តទៅលើ{{PLURAL:$1|កំណែ|កំណែទាំងឡាយ}}ដែលបានជ្រើសយក',
-'revdelete-success' => "'''á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99á\9e\82á\9f\86á\9e á\9e¾á\9e\89á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\86រេច។'''",
+'revdelete-success' => "'''á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99á\9e\82á\9f\86á\9e á\9e¾á\9e\89á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92រេច។'''",
'revdelete-failure' => "'''មិនអាចបន្ទាន់សម័យគំហើញនៃកំណែប្រែបាន៖'''
$1",
'logdelete-success' => "'''បានកំណត់គំហើញកំណត់ហេតុដោយជោគជ័យ។'''",
'searchprofile-project-tooltip' => 'ស្វែងរកក្នុង $1',
'searchprofile-images-tooltip' => 'ស្វែងរកឯកសាររូបភាព',
'searchprofile-everything-tooltip' => 'ស្វែងរកក្នុងខ្លឹមសារទាំងអស់(រួមបញ្ចូលទាំងទំព័រពិភាក្សា)',
-'searchprofile-advanced-tooltip' => 'á\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e\97á\9f\81á\9e\91á\9e\80á\9f\86á\9e\93ត់ដោយអ្នកប្រើប្រាស់',
+'searchprofile-advanced-tooltip' => 'á\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e\97á\9f\81á\9e\91á\9e\80á\9f\86á\9e\8eត់ដោយអ្នកប្រើប្រាស់',
'search-result-size' => '$1({{PLURAL:$2|១ពាក្យ|$2ពាក្យ}})',
'search-result-category-size' => '{{PLURAL:$1|សមាជិកម្នាក់|សមាជិក$1នាក់}} ({{PLURAL:$2|ចំណាត់ថ្នាក់ក្រុមរង១|$2 ចំណាត់ថ្នាក់ក្រុមរង}}, {{PLURAL:$3|1 ឯកសារ|$3 ឯកសារ}})',
'search-result-score' => 'កម្រិតទាក់ទិន៖ $1%',
'search-interwiki-default' => 'លទ្ធផលពី$1៖',
'search-interwiki-more' => '(បន្ថែមទៀត)',
'search-relatedarticle' => 'ទាក់ទិន',
-'mwsuggest-disable' => 'á\9e\98á\9e·á\9e\93á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\9fá\9f\86á\9e\93ើAJAX',
+'mwsuggest-disable' => 'á\9e\98á\9e·á\9e\93á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\9fá\9f\86á\9e\8eើAJAX',
'searcheverything-enable' => 'ស្វែងរកនៅក្នុងលំហឈ្មោះទាំងអស់',
'searchrelated' => 'ទាក់ទិន',
'searchall' => 'ទាំងអស់',
'search-nonefound' => 'មិនមានលទ្ធផលណាមួយត្រូវគ្នានឹងសំណើសុំនេះទេ',
'powersearch' => 'ស្វែងរកថ្នាក់ខ្ពស់',
'powersearch-legend' => 'ស្វែងរកថ្នាក់ខ្ពស់',
-'powersearch-ns' => 'á\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e\97á\9f\81á\9e\91៖',
+'powersearch-ns' => 'á\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9bá\9f\86á\9e á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87៖',
'powersearch-redir' => 'បញ្ជីការបញ្ជូនបន្ត',
'powersearch-field' => 'ស្វែងរក',
'powersearch-togglelabel' => 'គូសធីក៖',
'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
'prefsnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
'prefsnologintext' => 'អ្នកចាំបាច់ត្រូវតែ<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} កត់ឈ្មោះចូល]</span> ដើម្បីកំណត់ចំណង់ចំណូលចិត្តរបស់អ្នក។',
-'changepassword' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់',
+'changepassword' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់',
'prefs-skin' => 'សំបក',
'skin-preview' => 'មើលជាមុន',
'datedefault' => 'គ្មានចំណូលចិត្ត',
'prefs-labs' => 'មុខងារពិសេសថ្មីៗដែលស្ថិតក្រោមការពិសោធន៍នៅឡើយ',
'prefs-user-pages' => 'ទំព័រអ្នកប្រើប្រាស់',
'prefs-personal' => 'ប្រវត្តិរូប',
-'prefs-rc' => 'á\9e\94á\9f\86លាស់ប្ដូរថ្មីៗ',
+'prefs-rc' => 'á\9e\94á\9e\93á\9f\92លាស់ប្ដូរថ្មីៗ',
'prefs-watchlist' => 'បញ្ជីតាមដាន',
'prefs-watchlist-days' => 'ចំនួនថ្ងៃត្រូវបង្ហាញក្នុងបញ្ជីតាមដាន៖',
'prefs-watchlist-days-max' => 'អតិបរមា $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}}',
'prefs-watchlist-edits' => 'ចំនួនអតិបរមានៃបំលាស់ប្តូរត្រូវបង្ហាញក្នុងបញ្ជីតាមដានដែលបានពង្រីក៖',
'prefs-watchlist-edits-max' => 'ចំនួនអតិបរមា៖ ១០០០',
'prefs-misc' => 'ផ្សេងៗ',
-'prefs-resetpass' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់',
+'prefs-resetpass' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់',
'prefs-changeemail' => 'ផ្លាស់ប្ដូរអ៊ីមែល',
'prefs-setemail' => 'ដាក់អាសយដ្ឋានអ៊ីមែលមួយ',
'prefs-email' => '
ជំរើសទាក់ទិននឹងអ៊ីមែល',
'prefs-rendering' => 'ការរចនា',
'saveprefs' => 'រក្សាទុក',
-'resetprefs' => 'á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9bá\9e\94á\9f\86លាស់ប្ដូរមិនបានរក្សាទុក',
+'resetprefs' => 'á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9bá\9e\94á\9e\93á\9f\92លាស់ប្ដូរមិនបានរក្សាទុក',
'restoreprefs' => 'ស្ដារការកំណត់ទាំងអស់ទៅលំនាំដើម',
'prefs-editing' => 'កំណែប្រែ',
'prefs-edit-boxsize' => 'ទំហំរបស់ផ្ទាំងកែប្រែទំព័រ។',
'resultsperpage' => 'ចំនួនលទ្ធផលក្នុងមួយទំព័រ៖',
'stub-threshold' => 'ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href="#" class="stub">តំណភ្ជាប់ទៅទំព័រកំប៉ិចកំប៉ុក</a> (គិតជាបៃ)៖',
'stub-threshold-disabled' => 'មិនប្រើ',
-'recentchangesdays' => 'ចំនួនថ្ងៃបង្ហាញក្នុង ទំព័របំលាស់ប្តូរថ្មីៗ៖',
+'recentchangesdays' => 'ចំនួនថ្ងៃបង្ហាញក្នុងទំព័របន្លាស់ប្តូរថ្មីៗ៖',
'recentchangesdays-max' => '(អតិបរមា $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
'recentchangescount' => 'ចំនួនកំណែប្រែដែលត្រូវបង្ហាញតាមលំនាំដើម:',
'prefs-help-recentchangescount' => 'រាប់បញ្ចូលទាំងការកែប្រែនាពេលថ្មី ប្រវត្តិទំព័រនិងកំណត់ហេតុនានា។',
'prefs-help-gender' => 'ដាក់ក៏បានមិនដាក់ក៏បាន៖ ប្រើសំរាប់អោយសូហ្វវែរហៅតាមភេទអោយបាមត្រឹមត្រូវ។ ព័ត៌មាននេះនឹងត្រូវបង្ហាញជាសាធារណៈ។',
'email' => 'អ៊ីមែល',
'prefs-help-realname' => 'អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់លើការរួមចំណែកនានារបស់អ្នក។',
-'prefs-help-email' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\8fá\9e\94á\9e¶á\9e\93á\9e\98á\9e·á\9e\93á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\80á\9f\8fá\9e\94á\9e¶á\9e\93á\9f\94 á\9e\94á\9f\89á\9e»á\9e\93á\9f\92á\9e\8aá\9f\82á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e¢á\9f\84á\9e\99á\9e\93á\9e¹á\9e\84á\9e\98á\9e¶á\9e\93á\9e\94á\9f\92á\9e\9aá\9e\99á\9f\84á\9e\87á\9e\93á\9f\8dá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ ពេលដែលអ្នកភ្លេចវា។',
+'prefs-help-email' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\8fá\9e\94á\9e¶á\9e\93á\9e\98á\9e·á\9e\93á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\80á\9f\8fá\9e\94á\9e¶á\9e\93á\9f\94 á\9e\94á\9f\89á\9e»á\9e\93á\9f\92á\9e\8aá\9f\82á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e¢á\9f\84á\9e\99á\9e\93á\9e¹á\9e\84á\9e\98á\9e¶á\9e\93á\9e\94á\9f\92á\9e\9aá\9e\99á\9f\84á\9e\87á\9e\93á\9f\8dá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ ពេលដែលអ្នកភ្លេចវា។',
'prefs-help-email-others' => 'អ្នកក៏អាចជ្រើសរើសការផ្ដល់លទ្ឋភាពឱ្យអ្នកដទៃទាក់ទងអ្នកតាមរយៈទំព័រអ្នកប្រើប្រាស់ឬទំព័រពិភាក្សារបស់អ្នកដោយមិនចាំបាច់ឱ្យគេដឹងពីអត្តសញ្ញាណរបស់អ្នកផងដែរ។',
'prefs-help-email-required' => 'អាសយដ្ឋានអ៊ីមែលត្រូវការជាចាំបាច់។',
'prefs-info' => 'ព័ត៌មានផ្ទាល់ខ្លួន',
'prefs-displaywatchlist' => 'ជំរើសការបង្ហាញ',
'prefs-diffs' => 'ភាពខុសគ្នា',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'អាសយដ្ឋានអ៊ីមែលហាក់មានសុពលភាព',
'email-address-validity-invalid' => 'បញ្ចូលអាសយដ្ឋានអ៊ីមែលដែលមានសុពលភាព',
'group-user' => 'អ្នកប្រើប្រាស់',
'group-autoconfirmed' => 'អ្នកប្រើប្រាស់ទទួលស្គាល់ដោយស្វ័យប្រវត្តិ',
'group-bot' => 'រូបយន្ត',
-'group-sysop' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e\97á\9e·á\9e\94á\9e¶á\9e\9b',
+'group-sysop' => 'អភិបាល',
'group-bureaucrat' => 'អ្នកការិយាល័យ',
'group-suppress' => 'អធិការ',
'group-all' => '(ទាំងអស់)',
'group-user-member' => '{{GENDER:$1|អ្នកប្រើប្រាស់}}',
'group-autoconfirmed-member' => '{{GENDER:$1|អ្នកប្រើប្រាស់ទទួលស្គាល់ដោយស្វ័យប្រវត្តិ}}',
'group-bot-member' => '{{GENDER:$1|រូបយន្ត}}',
-'group-sysop-member' => '{{GENDER:$1|á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e\97á\9e·á\9e\94á\9e¶á\9e\9b}}',
+'group-sysop-member' => '{{GENDER:$1|អភិបាល}}',
'group-bureaucrat-member' => '{{GENDER:$1|អ្នកការិយាល័យ}}',
'group-suppress-member' => '{{GENDER:$1|អធិការ}}',
'right-writeapi' => 'ការប្រើប្រាស់ API សម្រាប់សរសេរ',
'right-delete' => 'លុបទំព័រចោល',
'right-bigdelete' => 'លុបទំព័រទាំងឡាយដែលមានប្រវត្តិវែង',
+'right-deletelogentry' => 'លប់និងឈប់លុបកំណត់ហេតុច្បាស់លាស់ណាមួយ',
'right-deleterevision' => 'លុបនិងឈប់លុបកំណែប្រែច្បាស់លាស់នៃទំព័រ',
-'right-deletedhistory' => 'មើលកំនត់ត្រាប្រវត្តិដែលត្រូវបានលុបចោល ដោយគ្មានអត្ថបទភ្ជាប់របស់វា',
+'right-deletedhistory' => 'មើលកំណត់ត្រាប្រវត្តិដែលត្រូវបានលុបចោល ដោយគ្មានអត្ថបទភ្ជាប់របស់វា',
+'right-deletedtext' => 'មើលផ្នែកអត្ថបទដែលបានលប់និងបន្លាស់ប្ដូររវាងកំណែទាំងឡាយដែលបានលុបចោល',
'right-browsearchive' => 'ស្វែងរកទំព័រដែលត្រូវបានលុបចោល',
'right-undelete' => 'ឈប់លុបទំព័រមួយ',
-'right-suppressrevision' => 'á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99á\9e\93á\9e·á\9e\84á\9e\9fá\9f\92á\9e\8aá\9e¶á\9e\9aá\9e\80á\9f\86á\9e\8eá\9f\82á\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e\97á\9e·á\9e\94á\9e¶á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\9bá\9e¶á\9e\80á\9f\8b',
+'right-suppressrevision' => 'ពិនិត្យនិងស្ដារកំណែដែលអភិបាលបានលាក់',
'right-suppressionlog' => 'មើលកំណត់ហេតុឯកជន',
'right-block' => 'ហាមមិនឱ្យអ្នកប្រើប្រាស់ដទៃទៀតធ្វើការកែប្រែ',
'right-blockemail' => 'ហាមឃាត់អ្នកប្រើប្រាស់ម្នាក់មិនអោយផ្ញើអ៊ីមែល',
'right-editusercss' => 'កែប្រែឯកសារ CSS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត',
'right-edituserjs' => 'កែប្រែឯកសារ JS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត',
'right-rollback' => 'ត្រឡប់យ៉ាងរហ័សនូវកំណែប្រែទំព័រវិសេសណាមួយដែលធ្វើឡើងដោយអ្នកប្រើប្រាស់ចុងក្រោយគេ។',
-'right-markbotedits' => 'á\9e\85á\9f\86á\9e\93á\9e¶á\9f\86á\9e\80á\9f\86á\9e\93á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8fá\9f\92á\9e\9aá\9e¡á\9e\94á\9f\8bá\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89á\9e\91á\9e¶á\9f\86á\9e\84á\9e¡á\9e¶á\9e\99á\9e\90á\9e¶á\9e\87á\9e¶á\9e\80á\9f\86á\9e\93ែប្រែដោយរូបយន្ត',
+'right-markbotedits' => 'á\9e\85á\9f\86á\9e\8eá\9e¶á\9f\86á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8fá\9f\92á\9e\9aá\9e¡á\9e\94á\9f\8bá\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89á\9e\91á\9e¶á\9f\86á\9e\84á\9e¡á\9e¶á\9e\99á\9e\90á\9e¶á\9e\87á\9e¶á\9e\80á\9f\86á\9e\8eែប្រែដោយរូបយន្ត',
'right-noratelimit' => 'មិនទទួលរងឥទ្ធិពលពីការដាក់កំហិតណាទាំងអស់',
'right-import' => 'នាំចូលទំព័រនានាពីវិគីផ្សេងៗទៀត',
'right-importupload' => 'នាំចូលទំព័រនានាពីឯកសារដែលបានផ្ទុកឡើង',
'right-patrol' => 'ចំណាំកំណែប្រែរបស់អ្នកដ៏ទៃថាជាកំណែប្រែបានល្បាត',
-'right-autopatrol' => 'á\9e\80á\9e\8fá\9f\8bá\9e\9fá\9e\98á\9f\92á\9e\82á\9e¶á\9e\9bá\9f\8bá\9e\8aá\9f\84á\9e\99á\9e\9fá\9f\92á\9e\9cá\9f\90á\9e\99á\9e\94á\9f\92á\9e\9aá\9e\9cá\9e\8fá\9f\92á\9e\8fá\9e·á\9e\93á\9e¼á\9e\9cá\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\90á\9e¶á\9e\87á\9e¶á\9e\80á\9f\86á\9e\93ែប្រែបានល្បាត',
-'right-patrolmarks' => 'á\9e\98á\9e¾á\9e\80កំណត់សម្គាល់ល្បាតដែលផ្លាស់ប្តូរថ្មីៗ',
+'right-autopatrol' => 'á\9e\80á\9e\8fá\9f\8bá\9e\9fá\9e\98á\9f\92á\9e\82á\9e¶á\9e\9bá\9f\8bá\9e\8aá\9f\84á\9e\99á\9e\9fá\9f\92á\9e\9cá\9f\90á\9e\99á\9e\94á\9f\92á\9e\9aá\9e\9cá\9e\8fá\9f\92á\9e\8fá\9e·á\9e\93á\9e¼á\9e\9cá\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\90á\9e¶á\9e\87á\9e¶á\9e\80á\9f\86á\9e\8eែប្រែបានល្បាត',
+'right-patrolmarks' => 'á\9e\98á\9e¾á\9e\9bកំណត់សម្គាល់ល្បាតដែលផ្លាស់ប្តូរថ្មីៗ',
'right-unwatchedpages' => 'បង្ហាញបញ្ជីទំព័រនានាដែលមិនត្រូវបានមើល',
'right-mergehistory' => 'ច្របាច់ប្រវត្តិរបស់ទំព័រនានាបញ្ចូលគ្នា',
-'right-userrights' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9aá\9e¶á\9e\9bá\9f\8bá\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\93á\9f\83á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶ស់',
+'right-userrights' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e¢ស់',
'right-userrights-interwiki' => 'កែប្រែសិទ្ធិអ្នកប្រើប្រាស់នៅលើវិគីផ្សេងៗទៀត',
'right-siteadmin' => 'ចាក់សោនិងបើកសោមូលដ្ឋានទិន្នន័យ',
'right-override-export-depth' => 'នាំចេញទំព័ររួមទាំងទំព័រដែលមានភ្ជាប់តំណភ្ជាប់រហូតដល់លំដាប់ទី៥',
'right-sendemail' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ',
-'right-passwordreset' => 'á\9e\98á\9e¾á\9e\9bá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9fá\9f\86á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\86ងាត់ឡើងវិញ',
+'right-passwordreset' => 'á\9e\98á\9e¾á\9e\9bá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\9fá\9f\86á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92ងាត់ឡើងវិញ',
# Special:Log/newusers
'newuserlogpage' => 'កំណត់ហេតុនៃការបង្កើតគណនី',
'action-sendemail' => 'ផ្ញើអ៊ីមែល',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a|á\9e\94á\9f\86លាស់ប្ដូរ}}',
-'recentchanges' => 'á\9e\94á\9f\86លាស់ប្ដូរថ្មីៗ',
+'nchanges' => '$1 {{PLURAL:$1|á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a|á\9e\94á\9e\93á\9f\92លាស់ប្ដូរ}}',
+'recentchanges' => 'á\9e\94á\9e\93á\9f\92លាស់ប្ដូរថ្មីៗ',
'recentchanges-legend' => 'ជម្រើសនានា សម្រាប់ការបង្ហាញបន្លាស់ប្ដូរថ្មីៗ',
'recentchanges-summary' => 'តាមដានរាល់បំលាស់ប្ដូរថ្មីៗបំផុតចំពោះវិគីនៅលើទំព័រនេះ។',
'recentchanges-feed-description' => 'តាមដានបន្លាស់ប្ដូរថ្មីៗបំផុតនៃវិគីនេះក្នុងមតិព័ត៌មាននេះ។',
'recentchanges-label-minor' => 'នេះជាការកែប្រែតិចតួចមួយប៉ុណ្ណោះ',
'recentchanges-label-bot' => 'ការកែប្រែនេះត្រូវបានធ្វើឡើងដោយរូបយន្ត',
'recentchanges-label-unpatrolled' => 'ការកែប្រែនេះមិនទាន់ត្រូវបានល្បាតទេ',
-'rcnote' => "á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98â\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\87á\9e¶â\80\8b{{PLURAL:$1|á\9f¡á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a|'''$1'''á\9e\94á\9f\86លាស់ប្ដូរ}}ចុងក្រោយក្នុងរយៈពេល{{PLURAL:$2|ថ្ងៃ|'''$2'''ថ្ងៃ}}ចុងក្រោយគិតត្រឹម$5 $4 ។",
-'rcnotefrom' => "á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\93á\9f\81á\9f\87á\9e\87á\9e¶á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\93á\9e¶á\9e\93á\9e¶á\9e\82á\9e·á\9e\8fá\9e\85á\9e¶á\9e\94á\9f\8bá\9e\8fá\9e¶á\9f\86á\9e\84á\9e\96á\9e¸ '''$2''' (á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e¢á\9e\8fá\9e·á\9e\94á\9e\9aá\9e\98á\9e¶ '''$1''' á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a)។",
-'rclistfrom' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\94á\9f\86លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
+'rcnote' => "á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98â\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\87á\9e¶â\80\8b{{PLURAL:$1|á\9f¡á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a|'''$1'''á\9e\94á\9e\93á\9f\92លាស់ប្ដូរ}}ចុងក្រោយក្នុងរយៈពេល{{PLURAL:$2|ថ្ងៃ|'''$2'''ថ្ងៃ}}ចុងក្រោយគិតត្រឹម$5 $4 ។",
+'rcnotefrom' => "á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\93á\9f\81á\9f\87á\9e\87á\9e¶á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\93á\9e¶á\9e\93á\9e¶á\9e\82á\9e·á\9e\8fá\9e\85á\9e¶á\9e\94á\9f\8bá\9e\8fá\9e¶á\9f\86á\9e\84á\9e\96á\9e¸ '''$2''' (á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e¢á\9e\8fá\9e·á\9e\94á\9e\9aá\9e\98á\9e¶á\9e\85á\9f\86á\9e\93á\9e½á\9e\93 '''$1''')។",
+'rclistfrom' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\94á\9e\93á\9f\92លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
'rcshowhideminor' => '$1កំណែប្រែតិចតួច',
'rcshowhidebots' => '$1រូបយន្ត',
'rcshowhideliu' => '$1អ្នកប្រើប្រាស់ដែលបានកត់ឈ្មោះចូល',
'rcshowhideanons' => '$1អ្នកប្រើប្រាស់អនាមិក',
'rcshowhidepatr' => '$1កំណែប្រែដែលបានល្បាត',
'rcshowhidemine' => '$1កំណែប្រែរបស់ខ្ញុំ',
-'rclinks' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\94á\9f\86លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ<br />$3',
+'rclinks' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\94á\9e\93á\9f\92លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ<br />$3',
'diff' => 'ប្រៀបធៀប',
'hist' => 'ប្រវត្តិ',
'hide' => 'លាក់',
'rc_categories' => 'កម្រិតទីតាំងចំណាត់ថ្នាក់ក្រុម(ខណ្ឌដោយសញ្ញា "|")',
'rc_categories_any' => 'មួយណាក៏បាន',
'rc-change-size' => '$1',
-'rc-change-size-new' => '$1 {{PLURAL:$1|á\9e\94á\9f\83|á\9e\94á\9f\83}} á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\94á\9f\8bá\9e\96á\9e¸á\9e\94á\9f\86លាស់ប្ដូរ',
+'rc-change-size-new' => '$1 {{PLURAL:$1|á\9e\94á\9f\83|á\9e\94á\9f\83}} á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\94á\9f\8bá\9e\96á\9e¸á\9e\94á\9e\93á\9f\92លាស់ប្ដូរ',
'newsectionsummary' => '/* $1 */ ផ្នែកថ្មី',
'rc-enhanced-expand' => 'បង្ហាញព័ត៌មានលំអិត (តម្រូវអោយមាន JavaScript)',
'rc-enhanced-hide' => 'លាក់ព័ត៌មានលំអិត',
# Recent changes linked
'recentchangeslinked' => 'បន្លាស់ប្ដូរពាក់ព័ន្ធ',
-'recentchangeslinked-feed' => 'á\9e\94á\9f\86លាស់ប្ដូរពាក់ព័ន្ធ',
+'recentchangeslinked-feed' => 'á\9e\94á\9e\93á\9f\92លាស់ប្ដូរពាក់ព័ន្ធ',
'recentchangeslinked-toolbox' => 'បន្លាស់ប្ដូរពាក់ព័ន្ធ',
'recentchangeslinked-title' => 'បន្លាស់ប្ដូរទាក់ទងនឹង "$1"',
'recentchangeslinked-noresult' => 'គ្មានបន្លាស់ប្ដូរលើទំព័រដែលត្រូវបានតភ្ជាប់ ក្នុងថេរវេលាដែលត្រូវបានផ្តល់ឱ្យ ។',
'uploadnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
'uploadnologintext' => 'អ្នកត្រូវតែ [[Special:UserLogin|កត់ឈ្មោះចូល]] ដើម្បីមានសិទ្ធិផ្ទុកឯកសារទាំងឡាយឡើង។',
'upload_directory_missing' => 'ថតសំរាប់ទុកឯកសារផ្ទុកឡើង ($1) បាត់ ហើយប្រព័ន្ធបំរើការមិនអាចបង្កើតវាបានទេ។',
-'upload_directory_read_only' => 'á\9e\94á\9f\92á\9e\9aá\9e\96á\9f\90á\9e\93á\9f\92á\9e\92á\9e\94á\9f\86រើការមិនអាចសរសេរចូលទៅក្នុងថតសំរាប់ទុកឯកសារផ្ទុកឡើង ($1) ទេ។',
+'upload_directory_read_only' => 'á\9e\94á\9f\92á\9e\9aá\9e\96á\9f\90á\9e\93á\9f\92á\9e\92á\9e\94á\9e\98á\9f\92រើការមិនអាចសរសេរចូលទៅក្នុងថតសំរាប់ទុកឯកសារផ្ទុកឡើង ($1) ទេ។',
'uploaderror' => 'បញ្ហាក្នុងការផ្ទុកឡើង',
'upload-recreate-warning' => "''ប្រយ័ត្ន៖ ឯកសារដែលមានឈ្មោះដូចគ្នានេះត្រូវបានលុបចោលឬប្ដូរទីតាំង។'''
'filename' => 'ឈ្មោះឯកសារ',
'filedesc' => 'ចំណារពន្យល់',
'fileuploadsummary' => 'ចំណារពន្យល់៖',
-'filereuploadsummary' => 'á\9e\94á\9f\86លាស់ប្ដូរឯកសារ៖',
+'filereuploadsummary' => 'á\9e\94á\9e\93á\9f\92លាស់ប្ដូរឯកសារ៖',
'filestatus' => 'ស្ថានភាពរក្សាសិទ្ធិ៖',
'filesource' => 'ប្រភព',
'uploadedfiles' => 'ឯកសារដែលត្រូវបានផ្ទុកឡើង',
-'ignorewarning' => 'មិនខ្វល់ការព្រមាន ហើយរក្សាទុកឯកសារតែម្តង។',
-'ignorewarnings' => 'មិនខ្វល់ការព្រមានណាមួយ',
+'ignorewarning' => 'á\9e\98á\9e·á\9e\93á\9e\81á\9f\92á\9e\9cá\9e\9bá\9f\8bâ\80\8bá\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\96á\9f\92á\9e\9aá\9e\98á\9e¶á\9e\93 á\9e á\9e¾á\9e\99á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\91á\9e»á\9e\80â\80\8bá\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aâ\80\8bá\9e\8fá\9f\82á\9e\98á\9f\92á\9e\8fá\9e\84á\9f\94',
+'ignorewarnings' => 'á\9e\98á\9e·á\9e\93á\9e\81á\9f\92á\9e\9cá\9e\9bá\9f\8bâ\80\8bá\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\96á\9f\92á\9e\9aá\9e\98á\9e¶á\9e\93â\80\8bá\9e\8eá\9e¶á\9e\98á\9e½á\9e\99',
'minlength1' => 'ឈ្មោះឯកសារត្រូវមានយ៉ាងតិច១អក្សរ។',
'illegalfilename' => 'ឈ្មោះឯកសារ "$1" មានអក្សរហាមឃាត់ក្នុងចំណងជើងទំព័រ។ សូមប្តូរឈ្មោះឯកសារ ហើយព្យាយាមផ្ទុកវាឡើងម្តងទៀត។',
'filename-toolong' => 'ឈ្មោះឯកសារមិនអាចវែងជាង 240 បៃទេ។',
-'badfilename' => 'ឈ្មោះឯកសារ បានត្រូវប្តូរ ជា "$1" ។',
+'badfilename' => 'ឈ្មោះឯកសារត្រូវបានប្តូរជា "$1" ។',
'filetype-mime-mismatch' => 'កន្ទុយរបស់ឯកសារ ".$1" មិនត្រូវគ្នានឹងប្រភេទ MIME របស់ឯកសារ ($2) ទេ។',
'filetype-badmime' => 'ឯកសារប្រភេទ MIME "$1" មិនត្រូវបានអនុញ្ញាតឱ្យផ្ទុកឡើង។',
'filetype-bad-ie-mime' => 'មិនអាចផ្ទុកឯកសារនេះឡើងបានទេ ព្រោះInternet Explorerបានរកឃើញថាឯកសារនេះជា "$1" ដែលជាប្រភេទឯកសារហាមឃាត់និងមានគ្រោះថ្នាក់ខ្លាំង។',
{{PLURAL:$3|ប្រភេទឯកសារ|ប្រភេទឯកសារ}}ដែលគេចង់បានគឺ $2។',
'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|មិនមែនជាប្រភេទឯកសារដែលត្រូវបានគេអនុញ្ញាតទេ|មិនមែនជាប្រភេទឯកសារដែលត្រូវបានគេអនុញ្ញាតទេ}}។
{{PLURAL:$3|ប្រភេទឯកសារ|ប្រភេទឯកសារ}}ដែលត្រូវបានគេអនុញ្ញាតគឺ $2 ។',
-'filetype-missing' => 'ឯកសារ មិនមានកន្ទុយ (ដូចជា ".jpg")។',
+'filetype-missing' => 'ឯកសារគ្មានកន្ទុយ (ដូចជា ".jpg")។',
'empty-file' => 'ឯកសារដែលអ្នកបានដាក់ស្នើគឺទទេ។',
'file-too-large' => 'ឯកសារដែលអ្នកបានដាក់ស្នើធំពេកហើយ។',
'filename-tooshort' => 'ឈ្មោះឯកសារខ្លីពេកហើយ។',
'uploadscripted' => 'ឯកសារនេះមានកូដHTMLឬស្គ្រីបដែលអាចអោយឧបករណ៍រាវរកវិបសាយមានការយល់ច្រលំ។',
'uploadvirus' => 'ឯកសារមានមេរោគ!
-á\9e\9fá\9f\81á\9e\85á\9e\80á\9f\92á\9e\8fá\9e¸á\9e\9bá\9f\86អិត៖ $1',
+á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9e\98á\9f\92អិត៖ $1',
'uploadjava' => 'ឯកសារនេះជាប្រភេទ ZIP ដែលមានផ្ទុក Java .class។
ការផ្ទុកឡើងឯកសារ Java ត្រូវបានហាមឃាត់ ព្រោះវាអាចធ្វើមានបញ្ហាក្នុងការឆ្លងកុងត្រូលសុវត្តិភាព។',
'upload-source' => 'ឯកសារប្រភព',
MGP # ម៉ាក Pentax
PICT # ផ្សេងៗ
#</pre> <!-- leave this line exactly as it is -->',
-'upload-success-subj' => 'á\9e\95á\9f\92á\9e\91á\9e»á\9e\80á\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aá\9e¡á\9e¾á\9e\84á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\86រេច',
-'upload-success-msg' => 'á\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\91á\9e»á\9e\80á\9e¡á\9e¾á\9e\84á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\96á\9e¸ [$2] á\9e\94á\9e¶á\9e\93á\9e\91á\9e\91á\9e½á\9e\9bá\9e\87á\9f\84á\9e\82á\9e\87á\9f\90យ។ អ្នកអាចរកវាបាននៅទៅនេះ៖ [[:{{ns:file}}:$1]]',
+'upload-success-subj' => 'á\9e\95á\9f\92á\9e\91á\9e»á\9e\80á\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aá\9e¡á\9e¾á\9e\84á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92រេច',
+'upload-success-msg' => 'á\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\91á\9e»á\9e\80á\9e¡á\9e¾á\9e\84á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\96á\9e¸ [$2] á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85á\9e á\9e¾យ។ អ្នកអាចរកវាបាននៅទៅនេះ៖ [[:{{ns:file}}:$1]]',
'upload-failure-subj' => 'បញ្ហាក្នុងការផ្ទុកឡើង',
'upload-failure-msg' => 'មានបញ្ហាមួយជាមួយការផ្ទុកឡើងរបស់អ្នកពី [$2]៖
'upload-file-error' => 'បញ្ហាផ្នែកខាងក្នុង',
'upload-file-error-text' => 'បញ្ហាផ្នែកខាងក្នុងបានកើតឡើង នៅពេលព្យាយាមបង្កើតឯកសារបណ្ដោះអាសន្នមួយនៅក្នុងម៉ាស៊ីនបម្រើការ។
-á\9e\9fá\9e¼á\9e\98á\9e\91á\9f\86á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\91á\9f\86á\9e\93á\9e\84[[Special:ListUsers/sysop|á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e\97á\9e·á\9e\94á\9e¶á\9e\9b]]á\9f\94',
+សូមទំនាក់ទំនង[[Special:ListUsers/sysop|អភិបាល]]។',
'upload-misc-error' => 'បញ្ហាក្នុងការផ្ទុកឡើង',
'upload-misc-error-text' => 'បញ្ហាដែលមិនស្គាល់មួយបានកើតឡើងនៅក្នុងកំឡុងពេលផ្ទុកឡើង។
ចូរផ្ទៀងផ្ទាត់ថា URL គឺមានសុពលភាពហើយអាចដំណើរការ រួចហើយព្យាយាមម្តងទៀត។
-á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e\94á\9e\89á\9f\92á\9e á\9e¶á\9e\93á\9f\85á\9e\8fá\9f\82á\9e\80á\9e¾á\9e\8fá\9e¡á\9e¾á\9e\84 á\9e\9fá\9e¼á\9e\98á\9e\91á\9f\86á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\91á\9f\86á\9e\93á\9e\84[[Special:ListUsers/sysop|អ្នកអភិបាល]]។',
-'upload-too-many-redirects' => 'URLá\9e\93á\9f\81á\9f\87á\9e\98á\9e¶á\9e\93á\9e\8fá\9f\86á\9e\93ភ្ជាប់បញ្ជូនបន្តច្រើនពេកហើយ',
+á\9e\94á\9f\92á\9e\9aá\9e\9fá\9e·á\9e\93á\9e\94á\9e¾á\9e\94á\9e\89á\9f\92á\9e á\9e¶á\9e\93á\9f\85á\9e\8fá\9f\82á\9e\80á\9e¾á\9e\8fá\9e¡á\9e¾á\9e\84 á\9e\9fá\9e¼á\9e\98á\9e\91á\9e¶á\9e\80á\9f\8bá\9e\91á\9e\84á\9e\91á\9f\85[[Special:ListUsers/sysop|អ្នកអភិបាល]]។',
+'upload-too-many-redirects' => 'URLá\9e\93á\9f\81á\9f\87á\9e\98á\9e¶á\9e\93á\9e\8fá\9f\86á\9e\8eភ្ជាប់បញ្ជូនបន្តច្រើនពេកហើយ',
'upload-unknown-size' => 'មិនដឹងទំហំ',
'upload-http-error' => 'មានកំហុសHTTPមួយបានកើតឡើង៖ $1',
'backend-fail-maxsize' => 'មិនអាចសរសេរឯកសារ "$1" បានទេពីព្រោះវាមានទំហំធំជាង {{PLURAL:$2|មួយបៃ|$2 បៃ}}.',
# Special:UploadStash
-'uploadstash-errclear' => 'á\9e\80á\9e¶á\9e\9aá\9e\9fá\9f\86á\9e¢á\9e¶á\9e\8fá\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9f\86រេច។',
+'uploadstash-errclear' => 'á\9e\80á\9e¶á\9e\9aá\9e\9fá\9e\98á\9f\92á\9e¢á\9e¶á\9e\8fá\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92រេច។',
'uploadstash-refresh' => 'ផ្ទុកបញ្ជីឯកសារឡើងវិញ',
# img_auth script messages
អ្នកគួរតែសាកល្បងនៅពេលដែលវិបសាយនេះមិនសូវរវល់។',
'license' => 'អាជ្ញាប័ណ្ណ',
-'license-header' => 'á\9e\8aá\9e¶á\9e\80á\9f\8bâ\80\8bá\9e\87á\9e¶អាជ្ញាប័ណ្ណ',
+'license-header' => 'á\9e\80á\9e¶á\9e\9aá\9e\8aá\9e¶á\9e\80á\9f\8bអាជ្ញាប័ណ្ណ',
'nolicense' => 'គ្មាន',
'license-nopreview' => '(មិនទាន់មានការបង្ហាញការមើលជាមុនទេ)',
-'upload_source_url' => ' (URL ត្រឹមត្រូវនិងបើកចំហជាសាធារណៈ)',
-'upload_source_file' => ' (ឯកសារក្នុងកុំព្យូទ័ររបស់អ្នក)',
+'upload_source_url' => '(URL ត្រឹមត្រូវនិងបើកចំហជាសាធារណៈ)',
+'upload_source_file' => '(ឯកសារក្នុងកុំព្យូទ័ររបស់អ្នក)',
# Special:ListFiles
'listfiles-summary' => 'ទំព័រពិសេសនេះបង្ហាញគ្រប់ឯកសារដែលបានផ្ទុកឡើង។
'filehist-filesize' => 'ទំហំឯកសារ',
'filehist-comment' => 'យោបល់',
'filehist-missing' => 'ឯកសារបាត់បង់',
-'imagelinks' => 'á\9e\94á\9f\86á\9e\9aá\9e¾á\9e\94á\9f\86រាស់ឯកសារ',
+'imagelinks' => 'á\9e\94á\9e\98á\9f\92á\9e\9aá\9e¾á\9e\94á\9e\98á\9f\92រាស់ឯកសារ',
'linkstoimage' => '{{PLURAL:$1|ទំព័រ|$1 ទំព័រ}} ខាងក្រោមមានតំណភ្ជាប់មកឯកសារនេះ ៖',
'linkstoimage-more' => 'មាន{{PLURAL:$1|តំណភ្ជាប់ទំព័រ}}ច្រើនជាង $1 មកកាន់ឯកសារនេះ។
បញ្ជីនេះបង្ហាញអំពី{{PLURAL:$1|តំណភ្ជាប់ទំព័រដំបូង|តំណភ្ជាប់ទំព័រ $1ដំបូង}}មកកាន់ឯកសារនេះប៉ុណ្ណោះ។
'nolinkstoimage' => 'គ្មានទំព័រណាមួយដែលតភ្ជាប់មកឯកសារនេះទេ។',
'morelinkstoimage' => 'មើល [[Special:WhatLinksHere/$1|តំណភ្ជាប់បន្ថែមទៀត]] ដែលតភ្ជាប់មកកាន់ឯកសារនេះ។',
'linkstoimage-redirect' => '$1 (ឯកសារបញ្ជូនបន្ត) $2',
-'duplicatesoffile' => '{{PLURAL:$1|file is a duplicate|$1 á\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aâ\80\8bá\9e\87á\9e¶á\9e\85á\9f\92á\9e\94á\9e¶á\9e\94á\9f\8bá\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84}}á\9e\8aá\9e¼á\9e\85á\9e\8fá\9e\91á\9f\85â\80\8bá\9e\93á\9f\83â\80\8bá\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aâ\80\8bá\9e\93á\9f\81á\9f\87â\80\8b ([[Special:FileDuplicateSearch/$2|á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93â\80\8bá\9e\9bá\9f\86អិត]])៖',
+'duplicatesoffile' => '{{PLURAL:$1|file is a duplicate|$1 á\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aâ\80\8bá\9e\87á\9e¶á\9e\85á\9f\92á\9e\94á\9e¶á\9e\94á\9f\8bá\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84}}á\9e\8aá\9e¼á\9e\85á\9e\8fá\9e\91á\9f\85â\80\8bá\9e\93á\9f\83â\80\8bá\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aâ\80\8bá\9e\93á\9f\81á\9f\87â\80\8b ([[Special:FileDuplicateSearch/$2|á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93â\80\8bá\9e\9bá\9e\98á\9f\92អិត]])៖',
'sharedupload' => 'ឯកសារនេះបានមកពី $1 និងអាចត្រូវបានប្រើប្រាស់នៅគម្រោងដទៃទៀត។',
'sharedupload-desc-there' => 'ឯកសារនេះមកពី $1 និងអាចត្រូវបានប្រើប្រាស់ដោយគម្រោងផ្សេងៗដទៃទៀត។
សូមមើល[ទំព័របរិយាយឯកសារ $2] សម្រាប់ព័ត៌មានបន្ថែម។',
-'sharedupload-desc-here' => 'ឯកសារនេះមានប្រភពមកពី $1 និងអាចត្រូវបានប្រើដោយគំរោងដ៏ទៃទៀត។
-ការពណ៌នានៅលើ [$2 ទំព័រពណ៌នា]អំពីវា មានបង្ហាញខាងក្រោមនេះ។',
+'sharedupload-desc-here' => 'ឯកសារនេះមានប្រភពមកពី $1 និងអាចត្រូវបានប្រើដោយគម្រោងដ៏ទៃទៀត។
+ការពណ៌នានៅលើ[$2 ទំព័រពណ៌នា]អំពីវា មានបង្ហាញខាងក្រោមនេះ។',
+'sharedupload-desc-edit' => 'ឯកសារនេះមានប្រភពមកពី $1 និងអាចត្រូវបានប្រើដោយគម្រោងដ៏ទៃទៀត។
+ប្រហែលជាអ្នកចង់កែប្រែការពណ៌នានៅលើ[$2 ទំព័រពណ៌នា]អំពីវានៅទីនោះ។',
+'sharedupload-desc-create' => 'ឯកសារនេះមានប្រភពមកពី $1 និងអាចត្រូវបានប្រើដោយគម្រោងដ៏ទៃទៀត។
+ប្រហែលជាអ្នកកែប្រែការពណ៌នានៅលើ[$2 ទំព័រពណ៌នា]អំពីវានៅទីនោះ។',
'filepage-nofile' => 'គ្មានឯកសារដែលមានឈ្មោះនេះទេ។',
-'filepage-nofile-link' => 'គ្មានរូបភាពដែលមានឈ្មោះនេះទេ។ ប៉ុន្តែអ្នកអាច [$1 ផ្ទុកវាឡើង] ។',
+'filepage-nofile-link' => 'គ្មានរូបភាពដែលមានឈ្មោះនេះទេ។ ប៉ុន្តែអ្នកអាច[$1 ផ្ទុកវាឡើង] ។',
'uploadnewversion-linktext' => 'ផ្ទុកឡើងមួយកំណែថ្មីនៃឯកសារនេះ',
'shared-repo-from' => 'ពី $1',
'shared-repo' => 'ឃ្លាំងរួម',
'statistics-edits' => 'ការកែប្រែទំព័រចាប់តាំងពី{{SITENAME}}ត្រូវបានដំឡើង',
'statistics-edits-average' => 'កំណែប្រែជាមធ្យមក្នុងមួយទំព័រ',
'statistics-views-total' => 'ចំនួនការចូលមើលសរុប',
-'statistics-views-total-desc' => 'á\9e\98á\9e·á\9e\93á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\80á\9e¶á\9e\9aá\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93និងទំព័រពិសេសៗទេ',
+'statistics-views-total-desc' => 'á\9e\98á\9e·á\9e\93á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\80á\9e¶á\9e\9aá\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9e\9aá\9e¼á\9e\94á\9e\9aá\9e¶á\9e\84និងទំព័រពិសេសៗទេ',
'statistics-views-peredit' => 'ចំនួនការចូលមើលក្នុងមួយកំណែប្រែ',
'statistics-users' => '[[Special:ListUsers|អ្នកប្រើប្រាស់]]ដែលបានចុះឈ្មោះ',
'statistics-users-active' => 'អ្នកប្រើប្រាស់សកម្ម',
'protectedtitlesempty' => 'មិនមានចំណងជើងណាដែលត្រូវបានការពារជាមួយនឹងប៉ារ៉ាម៉ែតទាំងនេះទេនាពេលថ្មីៗនេះ។',
'listusers' => 'បញ្ជីអ្នកប្រើប្រាស់',
'listusers-editsonly' => 'បង្ហាញតែអ្នកប្រើប្រាស់ដែលបានកែប្រែអត្ថបទប៉ុណ្ណោះ',
-'listusers-creationsort' => 'á\9e\8fá\9f\86រៀបតាមលំដាប់កាលបរិច្ឆេទបង្កើត',
+'listusers-creationsort' => 'á\9e\8fá\9e\98á\9f\92រៀបតាមលំដាប់កាលបរិច្ឆេទបង្កើត',
'usereditcount' => '$1 {{PLURAL:$1|កំណែប្រែ|កំណែប្រែ}}',
'usercreated' => '{{GENDER:$3|បានបង្កើត}}នៅ$1 $2',
'newpages' => 'ទំព័រថ្មីៗ',
# Special:Log
'specialloguserlabel' => 'អ្នកប្រព្រឹត្តិ៖',
-'speciallogtitlelabel' => 'á\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85 (á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84á\9e¢á\9e\8fá\9f\92á\9e\8fបទឬអត្តនាមអ្នកប្រើប្រាស់)៖',
+'speciallogtitlelabel' => 'á\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85 (á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84á\9e¢á\9e\8fá\9f\92á\9e\90បទឬអត្តនាមអ្នកប្រើប្រាស់)៖',
'log' => 'កំណត់ហេតុ',
'all-logs-page' => 'កំណត់ហេតុសាធារណៈទាំងអស់',
'alllogstext' => 'ការបង្ហាញកំណត់ហេតុទាំងអស់របស់{{SITENAME}}។
'allpagesnext' => 'បន្ទាប់',
'allpagessubmit' => 'ទៅ',
'allpagesprefix' => 'បង្ហាញទំព័រដែលចាប់ផ្ដើមដោយ ៖',
-'allpagesbadtitle' => 'ចំណងជើងទំព័រដែលត្រូវបានផ្តល់ឱ្យគឺគ្មានសុពលភាពឬក៏មានបុព្វបទដែលមានអន្តរភាសាឬអន្តរវីគី។ ប្រហែលជាវាមានអក្សរមួយឬច្រើន ដែលមិនអាចត្រូវប្រើនៅក្នុងចំណងជើង។',
-'allpages-bad-ns' => '{{SITENAME}}á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\94á\9f\92á\9e\9aá\9e\97á\9f\81á\9e\91"$1"ទេ។',
+'allpagesbadtitle' => 'ចំណងជើងទំព័រដែលត្រូវបានផ្តល់ឱ្យគឺគ្មានសុពលភាពឬក៏មានបុព្វបទដែលមានអន្តរភាសាឬអន្តរវីគី។ ប្រហែលជាវាមានអក្សរមួយឬច្រើន ដែលគេហាមមិនឱ្យប្រើនៅក្នុងចំណងជើង។',
+'allpages-bad-ns' => '{{SITENAME}}á\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9e\9bá\9f\86á\9e á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87"$1"ទេ។',
'allpages-hide-redirects' => 'លាក់ការបញ្ជូនបន្ត',
# SpecialCachedPage
# Special:ListUsers
'listusersfrom' => 'បង្ហាញអ្នកប្រើប្រាស់ចាប់ផ្តើមពី៖',
'listusers-submit' => 'បង្ហាញ',
-'listusers-noresult' => 'á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\93á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98នេះទេ។',
+'listusers-noresult' => 'á\9e\9aá\9e\80á\9e\98á\9e·á\9e\93á\9e\83á\9e¾á\9e\89á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bនេះទេ។',
'listusers-blocked' => '(ស្ថិតក្រោមការហាមឃាត់)',
# Special:ActiveUsers
'activeusers-count' => '{{PLURAL:$1|សកម្មភាព|សកម្មភាព}}ចំនួន$1 ក្នុងរយៈពេល{{PLURAL:$3|១ថ្ងៃ|$3 ថ្ងៃ}}ចុងក្រោយ',
'activeusers-from' => 'បង្ហាញអត្តនាមផ្ដើមដោយ៖',
'activeusers-hidebots' => 'លាក់រូបយន្ត',
-'activeusers-hidesysops' => 'á\9e\9bá\9e¶á\9e\80á\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e\97á\9e·á\9e\94á\9e¶á\9e\9b',
+'activeusers-hidesysops' => 'លាក់អភិបាល',
'activeusers-noresult' => 'អ្នកប្រើប្រាស់រកមិនឃើញ។',
# Special:ListGroupRights
'listgrouprights-addgroup-self-all' => 'បន្ថែមក្រុមទាំងអស់ទៅគណនីផ្ទាល់ខ្លួន',
'listgrouprights-removegroup-self-all' => 'យកចេញក្រុមទាំងអស់ពីគណនីផ្ទាល់ខ្លួន',
-# E-mail user
-'mailnologin' => 'á\9e\98á\9e·á\9e\93មានអាសយដ្ឋានផ្ញើទេ',
+# Email user
+'mailnologin' => 'á\9e\82á\9f\92មានអាសយដ្ឋានផ្ញើទេ',
'mailnologintext' => 'អ្នកត្រូវតែ [[Special:UserLogin|កត់ឈ្មោះចូល]] និង មានអាសយដ្ឋានអ៊ីមែលមានសុពលភាពមួយ ក្នុង[[Special:Preferences|ចំណង់ចំណូលចិត្ត]]របស់អ្នក ដើម្បីមានសិទ្ធិផ្ញើអ៊ីមែលទៅអ្នកប្រើប្រាស់ដទៃទៀត។',
'emailuser' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់នេះ',
'emailuser-title-target' => 'ផ្ញើសារទៅកាន់ {{GENDER:$1|អ្នកប្រើប្រាស់}} នេះ',
'noemailtext' => 'អ្នកប្រើប្រាស់នេះមិនបានផ្ដល់អាសយដ្ឋានអ៊ីមែលដែលមានសុពលភាពទេ។',
'nowikiemailtitle' => 'មិនអនុញ្ញាតអោយប្រើអ៊ីមែល',
'nowikiemailtext' => 'អ្នកប្រើប្រាស់នេះបានជ្រើសរើសមិនទទួលអ៊ីមែលពីអ្នកប្រើប្រាស់ដទៃទៀត។',
-'emailnotarget' => 'á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98á\9e¢á\9f\92á\9e\93á\9e\80á\9e\91á\9e\91á\9e½á\9e\9bá\9e\98á\9e·á\9e\93á\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e¬á\9e\87á\9e¶á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98á\9e\8aá\9f\82á\9e\9bá\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9f\94',
+'emailnotarget' => 'អត្តនាមអ្នកទទួលមិនត្រឹមត្រូវឬគ្មាន។',
'emailtarget' => 'វាយបញ្ចូលអត្តនាមអ្នកទទួល',
'emailusername' => 'អត្តនាម៖',
'emailusernamesubmit' => 'ដាក់ស្នើ',
# Watchlist
'watchlist' => 'បញ្ជីតាមដាន',
'mywatchlist' => 'បញ្ជីតាមដាន',
-'watchlistfor2' => 'á\9e\9fá\9f\86រាប់ $1 $2',
+'watchlistfor2' => 'á\9e\9fá\9e\98á\9f\92រាប់ $1 $2',
'nowatchlist' => 'គ្មានអ្វីនៅក្នុងបញ្ជីតាមដានរបស់អ្នកទេ។',
'watchlistanontext' => 'សូម $1 ដើម្បីមើលឬកែប្រែរបស់ក្នុងបញ្ជីតាមដានរបស់អ្នក។',
'watchnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
'enotif_mailer' => 'ភ្នាក់ងារផ្ញើអ៊ីមែលផ្ដល់ដំណឹងរបស់ {{SITENAME}}',
'enotif_reset' => 'កត់សម្គាល់រាល់គ្រប់ទំព័រដែលបានចូលមើល',
'enotif_impersonal_salutation' => 'អ្នកប្រើប្រាស់ {{SITENAME}}',
-'enotif_lastvisited' => 'á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99 $1 á\9e\85á\9f\86á\9e\96á\9f\84á\9f\87á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9a á\9e\8fá\9e¶á\9f\86á\9e\84á\9e\96á\9e¸á\9e\96á\9f\81á\9e\9bá\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9b ចុងក្រោយ។',
-'enotif_lastdiff' => 'á\9e\9fá\9e¼á\9e\98á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99$1á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\98á\9e¾á\9e\9bá\9e\94á\9f\86លាស់ប្តូរនេះ។',
+'enotif_lastvisited' => 'á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99 $1 á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\8fá\9e¶á\9f\86á\9e\84á\9e\96á\9e¸á\9e\96á\9f\81á\9e\9bá\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9bចុងក្រោយ។',
+'enotif_lastdiff' => 'á\9e\9fá\9e¼á\9e\98á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99$1á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\98á\9e¾á\9e\9bá\9e\94á\9e\93á\9f\92លាស់ប្តូរនេះ។',
'enotif_anon_editor' => 'អ្នកប្រើប្រាស់អនាមិក $1',
'enotif_body' => 'ជូនចំពោះ $WATCHINGUSERNAME ជាទីរាប់អាន,
'historywarning' => "'''ប្រយ័ត្ន៖''' ទំព័រដែលអ្នកបំរុងនឹងលុប មានប្រវត្តិចំនួនប្រហែល $1 {{PLURAL:$1|កំណែ|កំណែ}}៖",
'confirmdeletetext' => 'អ្នកប្រុងនឹងលុបចោលទាំងស្រុង នូវទំព័រមួយដោយរួមបញ្ចូលទាំងប្រវត្តិកែប្រែរបស់វាផង។
សូមអ្នកអះអាងថា អ្នកពិតជាមានចេតនាធ្វើបែបហ្នឹង និងថាអ្នកបានយល់ច្បាស់ពីផលវិបាកទាំងឡាយដែលអាចកើតមាន និងសូមអះអាងថា អ្នកធ្វើស្របតាម [[{{MediaWiki:Policy-url}}|គោលការណ៍]]។',
-'actioncomplete' => 'á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\9aá\9e½á\9e\85á\9e\9aá\9e¶á\9e\9bá\9f\8bá\9e\87á\9e¶á\9e\9fá\9f\92á\9e\90á\9e¶á\9e\96á\9e\9a',
-'actionfailed' => 'á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96â\80\8bá\9e\94á\9e\9aá\9e¶á\9e\87á\9f\90á\9e\99',
+'actioncomplete' => 'á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85',
+'actionfailed' => 'á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96â\80\8bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85',
'deletedtext' => '"$1"ត្រូវបានលុបចោលរួចហើយ។
សូមមើល$2សំរាប់បញ្ជីនៃការលុបចោលនាពេលថ្មីៗ។',
'tooltip-pt-mytalk' => 'ទំព័រពិភាក្សារបស់អ្នក',
'tooltip-pt-anontalk' => 'ការពិភាក្សាអំពីកំណែប្រែដែលធ្វើឡើងចេញពីអាសយដ្ឋាន IP នេះ',
'tooltip-pt-preferences' => 'ចំណង់ចំណូលចិត្ត',
-'tooltip-pt-watchlist' => 'á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸â\80\8bá\9e\93á\9f\83â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\86á\9e\96á\9e»á\9e\84â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e½á\9e\8fá\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99â\80\8bá\9e\9aá\9e\80â\80\8bá\9e\94á\9f\86លាស់ប្ដូរ',
+'tooltip-pt-watchlist' => 'á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸â\80\8bá\9e\93á\9f\83â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\86á\9e\96á\9e»á\9e\84â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e½á\9e\8fá\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99â\80\8bá\9e\9aá\9e\80â\80\8bá\9e\94á\9e\93á\9f\92លាស់ប្ដូរ',
'tooltip-pt-mycontris' => 'បញ្ជីនៃការរួមចំណែករបស់អ្នក',
'tooltip-pt-login' => 'អ្នកត្រូវបានលើកទឹកចិត្តឱ្យកត់ឈ្មោះចូល។ ប៉ុន្តែនេះមិនមែនជាការបង្ខំទេ។',
'tooltip-pt-anonlogin' => 'អ្នកត្រូវបានលើកទឹកចិត្តឱ្យកត់ឈ្មោះចូល មិនមែនជាការបង្ខំទេ។',
'tooltip-ca-talk' => 'ការពិភាក្សាអំពីទំព័រខ្លឹមសារនេះ',
'tooltip-ca-edit' => "អ្នកអាចកែប្រែទំព័រនេះ ។ សូមប្រើប្រាស់ប៊ូតុង 'បង្ហាញការមើលមុន' មុននឹងរក្សាទុកវា ។",
'tooltip-ca-addsection' => 'ចាប់ផ្ដើមផ្នែកថ្មីមួយក្នុងទំព័រពិភាក្សានេះ',
-'tooltip-ca-viewsource' => 'ទំព័រនេះបានត្រូវការពារ ។ អ្នកអាចមើលអក្សរកូដរបស់វា ។',
+'tooltip-ca-viewsource' => 'ទំព័រនេះបានត្រូវការពារ ។ អ្នកអាចមើលអក្សរកូដរបស់វាបាន ។',
'tooltip-ca-history' => 'កំណែកន្លងមករបស់ទំព័រនេះ ។',
'tooltip-ca-protect' => 'ការពារទំព័រនេះ',
'tooltip-ca-unprotect' => 'ផ្លាស់ប្ដូរការការពារទំព័រនេះ',
'tooltip-p-logo' => 'ទំព័រដើម',
'tooltip-n-mainpage' => 'ចូលមើលទំព័រដើម',
'tooltip-n-mainpage-description' => 'ចូលមើលទំព័រដើម',
-'tooltip-n-portal' => 'អំពីគម្រោង វិធីប្រើប្រាស់ និង ការស្វែងរកព័ត៌មាន',
+'tooltip-n-portal' => 'អំពីគម្រោង វិធីប្រើប្រាស់ និងការស្វែងរកព័ត៌មាន',
'tooltip-n-currentevents' => 'រកមើលព័ត៌មានទាក់ទិននឹងព្រឹត្តិការណ៍បច្ចុប្បន្ន',
'tooltip-n-recentchanges' => 'បញ្ជីនៃបន្លាស់ប្ដូរថ្មីៗនៅក្នុងវិគីនេះ',
'tooltip-n-randompage' => 'ផ្ទុកទំព័រចៃដន្យមួយទំព័រ',
'tooltip-ca-nstab-help' => 'មើលទំព័រជំនួយ',
'tooltip-ca-nstab-category' => 'មើលទំព័រចំណាត់ថ្នាក់ក្រុម',
'tooltip-minoredit' => "ចំណាំកំណែប្រែនេះថាជា 'កំណែប្រែតិចតួច'",
-'tooltip-save' => 'á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\94á\9f\86លាស់ប្ដូររបស់អ្នកទុក',
-'tooltip-preview' => 'មើលមុនបំលាស់ប្ដូររបស់អ្នក។ សូមប្រើប្រាស់វាមុននឹងរក្សាទុក!',
-'tooltip-diff' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾â\80\8bâ\80\8bá\9e\85á\9f\86á\9e\96á\9f\84á\9f\87á\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91á\9f\94',
+'tooltip-save' => 'á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\94á\9e\93á\9f\92លាស់ប្ដូររបស់អ្នកទុក',
+'tooltip-preview' => 'មើលបន្លាស់ប្ដូររបស់អ្នកជាមុន។ សូមប្រើប្រាស់វាមុននឹងរក្សាទុក!',
+'tooltip-diff' => 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89â\80\8bá\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾â\80\8bâ\80\8bá\9e\9bá\9e¾á\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91',
'tooltip-compareselectedversions' => 'មើលភាពខុសគ្នារវាងកំណែទាំង២របស់ទំព័រនេះ។',
'tooltip-watch' => 'បន្ថែមទំព័រនេះទៅបញ្ជីតាមដានរបស់អ្នក',
'tooltip-recreate' => 'បង្កើតទំព័រនេះឡើងវិញ ទោះបីជាវាបានត្រូវលុបចេញក៏ដោយ',
'tooltip-upload' => 'ចាប់ផ្តើមផ្ទុកឡើងឯកសារ',
'tooltip-rollback' => '"ត្រឡប់"កំណែប្រែធ្វើឡើងដោយអ្នករួមចំណែកចុងក្រោយគេ ទៅកំណែប្រែមុននោះវិញ ដោយគ្រាន់តែចុចមួយច្នុចប៉ុណ្ណោះ',
'tooltip-undo' => '"មិនធ្វើវិញ" ត្រឡប់កំណែនេះឡើងវិញ និងបើកបែបបទកែប្រែក្នុងទម្រង់មើលជាមុន។
-á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9e\93á\9f\92á\9e\90á\9f\82á\9e\98â\80\8bá\9e\98á\9e¼á\9e\9bâ\80\8bá\9e á\9f\81á\9e\8fá\9e»â\80\8bá\9e\93á\9f\85â\80\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84â\80\8bá\9e\9fá\9f\81á\9e\85á\9e\80á\9f\92á\9e\8aá\9e¸â\80\8bá\9e\9fá\9e\84á\9f\92á\9e\81á\9f\81á\9e\94បាន។',
+á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9e\93á\9f\92á\9e\90á\9f\82á\9e\98â\80\8bá\9e\98á\9e¼á\9e\9bâ\80\8bá\9e á\9f\81á\9e\8fá\9e»â\80\8bá\9e\93á\9f\85â\80\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84â\80\8bá\9e\85á\9f\86á\9e\8eá\9e¶á\9e\9aá\9e\96á\9e\93á\9f\92á\9e\99á\9e\9bá\9f\8bបាន។',
'tooltip-preferences-save' => 'រក្សាទុកចំណង់ចំណូលចិត្ត',
-'tooltip-summary' => 'á\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bចំណារពន្យល់ថ្មីមួយ',
+'tooltip-summary' => 'á\9e\9fá\9e\9aá\9e\9fá\9f\81á\9e\9aចំណារពន្យល់ថ្មីមួយ',
# Stylesheets
'common.css' => '/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើគ្រប់សំបកទាំងអស់ */',
'file-info' => 'ទំហំឯកសារ៖ $1, ប្រភេទ MIME ៖ $2',
'file-info-size' => '$1 × $2 ភីកសែល ទំហំឯកសារ៖ $3 ប្រភេទ MIME៖ $4',
'file-info-size-pages' => '$1 × $2 ភិចសែល, ទំហំឯកសារ: $3, ប្រភេទ MIME: $4, $5 {{PLURAL:$5|ទំព័រ|ទំព័រ}}',
-'file-nohires' => 'គ្មានភាពម៉ត់ ដែលខ្ពស់ជាង។',
+'file-nohires' => 'គ្មានភាពម៉ត់ខ្ពស់ជាងនេះទេ។',
'svg-long-desc' => 'ឯកសារប្រភេទSVG $1 × $2 ភីកសែល ទំហំឯកសារ៖ $3',
'svg-long-desc-animated' => 'ឯកសារជីវចល SVG, ជាធម្មតា $1 × $2 ភិចសែល, ទំហំឯកសារ: $3',
'show-big-image' => 'រូបភាពពេញ',
'monthsall' => 'ទាំងអស់',
'limitall' => 'ទាំងអស់',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'បញ្ជាក់ទទួលស្គាល់អាសយដ្ឋានអ៊ីមែល',
'confirmemail_noemail' => 'អ្នកមិនមានអាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវមួយ ដាក់នៅក្នុង[[Special:Preferences|ចំណង់ចំណូលចិត្ត]]របស់អ្នកទេ។',
'confirmemail_text' => '{{SITENAME}}តំរូវអោយអ្នកបញ្ជាក់សុពលភាពរបស់អាសយដ្ឋានអ៊ីមែលរបស់អ្នកមុននឹងអ្នកមានសិទ្ធប្រើមុខងារអ៊ីមែល។
'watchlistedit-raw-removed' => '{{PLURAL:$1|១ចំណងជើងបានត្រូវ|$1ចំណងជើងបានត្រូវ}}ដកចេញ៖',
# Watchlist editing tools
-'watchlisttools-view' => 'á\9e\98á\9e¾á\9e\9bá\9e\94á\9f\86លាស់ប្ដូរពាក់ព័ន្ធ',
+'watchlisttools-view' => 'á\9e\98á\9e¾á\9e\9bá\9e\94á\9e\93á\9f\92លាស់ប្ដូរពាក់ព័ន្ធ',
'watchlisttools-edit' => 'មើលនិងកែប្រែបញ្ជីតាមដាន',
'watchlisttools-raw' => 'កែប្រែបញ្ជីតាមដានឆៅ',
'loginlanguagelabel' => '언어: $1',
'suspicious-userlogout' => '브라우저에 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
'user-mail-no-addy' => '받는이의 이메일 주소가 없으면 이메일을 보낼 수 없습니다.',
'user-mail-no-body' => '비어 있거나 지나치게 짧은 본문으로 이메일을 보내려고 했습니다.',
'prefs-displaywatchlist' => '보이기 설정',
'prefs-diffs' => '차이',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => '이메일 주소가 유효한 것으로 보입니다.',
'email-address-validity-invalid' => '유효한 이메일 주소를 입력해주세요.',
'listgrouprights-addgroup-self-all' => '자신에게 모든 권한을 부여',
'listgrouprights-removegroup-self-all' => '자신의 계정에서 모든 권한을 해제',
-# E-mail user
+# Email user
'mailnologin' => '보낼 이메일 주소가 없음',
'mailnologintext' => '다른 사용자에게 이메일을 보내려면 [[Special:UserLogin|로그인]]한 다음 [[Special:Preferences|사용자 환경 설정]]에서 자신의 이메일 주소를 저장해야 합니다.',
'emailuser' => '이메일 보내기',
'monthsall' => '모든 달',
'limitall' => '모두',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => '이메일 주소 확인',
'confirmemail_noemail' => '[[Special:Preferences|환경 설정]]에 이메일을 설정하지 않았습니다.',
'confirmemail_text' => '{{SITENAME}}에서는 이메일 기능을 사용하기 전에 이메일 인증을 받아야 합니다.
'loginlanguagelabel' => 'Тил: $1',
'suspicious-userlogout' => 'Терс браузер неда кэш этиучу прокси берген соруугъа ушагъаны ючюн, Сизни чыгъаргъа сорууугъуз алынмагъанды.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "PHP's mail() функцияда белгили болмагъан халат",
'user-mail-no-addy' => 'Бир e-mail адрес болмагъанлай e-mail иерге кюрешди',
'prefs-displaywatchlist' => 'Кёрюнюуню джарашдырыулары',
'prefs-diffs' => 'Версияланы башхалыкълары',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mail адрес тюзге ушайды',
'email-address-validity-invalid' => 'Тюз e-mail адрес джазыгъыз!',
'listgrouprights-addgroup-self-all' => 'Бютеу къауумланы кесини тергеу джазыууна къошаллыкъды',
'listgrouprights-removegroup-self-all' => 'Кесини тергеу джазыуундан бютеу къауумланы къораталлыкъды',
-# E-mail user
+# Email user
'mailnologin' => 'Джиберирге адрес джокъду',
'mailnologintext' => 'Башха къошулуучулагъа эл. почта джиберелир ючюн [[Special:UserLogin|системагъа кирирге]] керексиз эм [[Special:Preferences|джарашдырыуланы]] бетинде джараулу эл. почта адрес болургъа керекди.',
'emailuser' => 'Къошулуучугъа письмо',
'markedaspatrollederror' => 'Сыналмаганды',
'markedaspatrollederrortext' => 'Сыналгъан кибик белгилер ючюн версия белгилерге керексиз.',
'markedaspatrollederror-noautopatrol' => 'Кесигизни тюрлендириулеригизни, сыналгъан кибик белгилерге эркинлигигиз джокъду.',
+'markedaspatrollednotify' => '«$1» бетдеги бу тюрлениу тинтиб къаралгъанча белгиленди.',
# Patrol log
'patrol-log-page' => 'Патруль этиуню журналы',
'monthsall' => 'бютеу',
'limitall' => 'бютеую',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Электорн адресни мюкюл эт',
'confirmemail_noemail' => '[[Special:Preferences|джарашдырыулада]] тамамланнган, джараулу электрон адресигиз джокоъду.',
'confirmemail_text' => 'Викини электрон почтасыны адреси бла хайырланыб башлауну аллы бла, аны мюкюл этериге керекди.
'listgrouprights-addgroup-self-all' => 'Addere omnes greges ad rationem propriam',
'listgrouprights-removegroup-self-all' => 'Removere omnes greges ex ratione propria',
-# E-mail user
+# Email user
'emailuser' => 'Litteras electronicas usori mittere',
'emailpage' => 'Mittere litteras electronicas huic usori',
'emailpagetext' => 'Forma subter nuntium ad usorem mittet.
'namespacesall' => 'omnia',
'monthsall' => 'omnes',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Inscriptionem electronicam adfirmare',
'confirmemail_noemail' => 'Non est tibi inscriptio electronica valida in [[Special:Preferences|tuis praeferentiis]] posita.',
'confirmemail_text' => '{{SITENAME}} te postulat inscriptionem tuam electronicam adfirmare priusquam proprietatibus litterarum electronicarum fruaris. Imprime botonem subter ut nuntium adfirmationis tibi mittatur. Nuntio nexus inerit quod est scribendus in tuo navigatro interretiali ut validum adfirmes tuam inscriptionem electronicam.',
'loginlanguagelabel' => 'Sprooch: $1',
'suspicious-userlogout' => 'Är Ufro fir Iech auszeloggen gouf refuséiert well et esou ausgesäit wéi wann se vun engem Futtise Browser oder Proxy-Tëschespäicher kënnt.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Onbekannte Feeler an der PHP-Mail-Fonctioun',
'user-mail-no-addy' => 'Huet versicht eng Mail ouni Mailadress ze schécken',
'user-mail-no-body' => 'Et gouf probéiert eng E-Mail ouni Text oder mat engem ze kuerzen Text ze schécken.',
'prefs-displaywatchlist' => 'Optioune vun deem wat gewise gëtt',
'prefs-diffs' => 'Ënnerscheeder',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "D'E-Mailadress schéngt valabel ze sinn",
'email-address-validity-invalid' => 'Gitt eng valabel e-Mailadress an',
'backend-fail-create' => 'De Fichier $1 konnt net geschriwwe ginn.',
'backend-fail-maxsize' => 'De Fichier $1 konnt net geschriwwe gi well e méi grouss ass wéi {{PLURAL:$2|ee Byte|$2 Byten}}.',
'backend-fail-readonly' => 'De Späicher-Backend "$1" kann elo nëmme geliest ginn (read-only). De Grond deen ugi gouf war: "$2"',
+'backend-fail-connect' => 'Keng Verbindung mam Backend vum Späicher "$1".',
+'backend-fail-internal' => 'Onbekannte Feeler am Backend vum Späicher: "$1"',
# Lock manager
'lockmanager-notlocked' => '"$1" konnt net fräigeschalt ginn; $1 ass net gespaart.',
Si sollte am beschten op déi eigentlech gemengte Säit verlinkt sinn.<br />
Eng Säite gëtt als Homonymie-Säit behandelt, wa si eng Schabloun benotzt déi vu [[MediaWiki:Disambiguationspage]] verlinkt ass.",
+'pageswithprop' => 'Säite mat enger Säiten-Eegeschaft',
+'pageswithprop-prop' => 'Numm vun der Eegeschaft:',
+
'doubleredirects' => 'Duebel Viruleedungen',
'doubleredirectstext' => 'Op dëser Säit stinn déi Säiten déi op aner Viruleedungssäite viruleeden.
An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun der zweeter Viruleedung, déi normalerweis déi "richteg" Zilsäit ass, op déi déi éischt Viruleedung hilinke soll.
'listgrouprights-addgroup-self-all' => 'däerf all Gruppe bäi säin eegene Benotzerkont derbäisetzen',
'listgrouprights-removegroup-self-all' => 'Däerf all Gruppe vu sengem eegene Benotzerkont ewechhuelen',
-# E-mail user
+# Email user
'mailnologin' => 'Keng E-Mailadress',
'mailnologintext' => 'Dir musst [[Special:UserLogin|ugemellt]] sinn an eng gëlteg E-Mail Adress an Äre [[Special:Preferences|Astellungen]] aginn hunn, fir engem anere Benotzer eng E-Mail ze schécken.',
'emailuser' => 'Dësem Benotzer eng E-Mail schécken',
'monthsall' => 'all',
'limitall' => 'all',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-Mailadress confirméieren',
'confirmemail_noemail' => 'Dir hutt keng gëlteg E-Mail-Adress an Äre [[Special:Preferences|Benotzerastellungen]] agedro.',
'confirmemail_text' => "Ier Dir d'E-Mailfunktioune vun {{SITENAME}} benotze kënnt musst dir als éischt Är E-Mailadress confirméieren. Dréckt w.e.g. de Knäppchen hei ënnendrënner fir eng Confirmatiouns-E-Mail op déi Adress ze schécken déi Dir uginn hutt. An där E-Mail steet e Link mat engem Code, deen dir dann an Ärem Browser opmaache musst fir esou ze bestätegen, datt Är Adress och wierklech existéiert a valabel ass.",
'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
+# Unknown messages
+'pageswithprop-legend' => 'Säite mat enger Säiten-Eegeschaft',
+'pageswithprop-submit' => 'Lass',
);
'listgrouprights-group' => 'КIеретI',
'listgrouprights-members' => '(уьзвийрин сиягь)',
-# E-mail user
+# Email user
'emailuser' => 'Уртахдиз чар кхьихь',
'emailusername' => 'Уртахдин тlвар:',
'emailusernamesubmit' => 'Ракъурун',
'loginlanguagelabel' => 'fiteny : $1',
'suspicious-userlogout' => "Ny fangataham-pialanao dia tsy nekena satria ohatry ny nalfan'ny mpizahan-tsehatra simba izy na kasy ny proxy.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "Hadisoana tsy fantatra tao amin'ny tao mial() an'i PHP.",
'user-mail-no-addy' => 'Nanandrana nandefa imailaka tsy misy adiresy imailaka.',
'prefs-displaywatchlist' => 'Safidin-tseho',
'prefs-diffs' => 'Diff',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Adiresy imailaka mameno fepetra',
'email-address-validity-invalid' => 'Ilaina ny mametraka adiresy imailaka mameno fepetra',
'listgrouprights-addgroup-self-all' => "Manampy ny vondrom-pikambana rehetra amin'ny kaontiny",
'listgrouprights-removegroup-self-all' => "Manala ny vondrom-pikambana rehetra amin'ny kaontiny",
-# E-mail user
+# Email user
'mailnologin' => 'Tsy misy adiresy handefasana ny tenimiafina',
'mailnologintext' => "Mila [[Special:UserLogin|miditra]] ianao sady manana imailaka mandeha sy voamarina ao amin'ny [[Special:Preferences|mombamomba anao]] vao afaka mandefa imailaka amin'ny mpikambana hafa.",
'emailuser' => 'Andefaso imailaka io mpikambana io',
'monthsall' => 'rehetra',
'limitall' => 'rehetra',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Fanamarinana adiresy imailaka.',
'confirmemail_noemail' => "Tsy nilaza adiresy imailaka azo ampiasaina ianao tao amin'ny [[Special:Preferences|safidinao]].",
'confirmemail_text' => "
'vector-simplesearch-preference' => 'Aktifkan kotak pancarian sadarano (hanyo kulik Vector)',
'vector-view-create' => 'Buek',
'vector-view-edit' => 'Suntiang',
-'vector-view-history' => 'Riwayaik lalu',
+'vector-view-history' => 'Riwayaik',
'vector-view-view' => 'Baco',
'vector-view-viewsource' => 'Caliak sumber',
'actions' => 'Tindakan',
Jikok urang lain nan malakukan pamintaan iko, atau jikok Sanak alah mangingek kato sandi Sanak dan akan tetap manggunokan kato sandi tasabuik, sila abaikan pasan iko dan tatap gunokan kato sandi lamo Sanak.',
'noemail' => 'Indak ado alamaik surel nan tacatat untuak pangguno "$1".',
'noemailcreate' => 'Sanak paralu manyadiokan alamaik surel nan sah',
-'passwordsent' => 'Kato sandi baharu alah dikiriman ka alamaik surel nan didaftakan untuak "$1".
-Sila masuak log baliak sasudah manarimo surel tasabuik.',
+'passwordsent' => 'Kato sandi baru alah dikiriman ka alamaik surel nan didaftakan untuak "$1".
+Silakan masuak log baliak sasudah manarimo surel tasabuik.',
'blocked-mailpassword' => 'Alamaik IP Sanak diblokir dari panyuntingan dan karanonyo indak diizinan manggunokan fungsi pangingek kato sandi untuak mancegah panyalahgunoan.',
-'eauthentsent' => 'Sabuah surel untuak konfirmasi alah dikirim ka alamaik surel.
-Sanak harus mangikuti instruksi di dalam surel tasabuik untuak malakukan konfirmasi bahawa alamaik tasabuik adolah batua kapunyoan Sanak. {{SITENAME}} indak akan mangaktifan fitur surel jikok langkah iko alun dilakuan.',
+'eauthentsent' => 'Surel untuak konfirmasi alah dikirim ka alamaik surel Sanak.
+Ikuti instruksi dalam surel tasabuik untuak malakuan konfirmasi jikok alamaik tasabuik adolah batua punyo Sanak. {{SITENAME}} indak akan mangaktifan fitur surel jikok langkah ko alun dilakuan.',
'throttled-mailpassword' => 'Suatu pangingat kato sandi alah dikiriman dalam {{PLURAL:$1|jam|$1 jam}} tarakhir.
Untuak manghindari panyalahgunoan, hanyo ciek kato sandi nan akan dikiriman satiok {{PLURAL:$1|jam|$1 jam}}.',
'mailerror' => 'Kasalahan dalam mangirimkan surel: $1',
'acct_creation_throttle_hit' => 'Pangunjung wiki iko jo alamaik IP nan samo jo Sanak alah mambuek {{PLURAL:$1|1 akun|$1 akun}} dalam sahari tarakhir, hinggo jumlah maksimum nan diizinan.
Karanonyo, pangunjuang jo alamaik IP iko indak dapek baliak mambuek akun lain untuak samantaro.',
'emailauthenticated' => 'Alamaik surel Sanak lah dikonfirmasi pado $3, $2.',
-'emailnotauthenticated' => 'Alamaik surel Sanak alum dikonfirmasi. Sabalun dikonfirmasi Sanak ndak bisa manggunokan fitur surel.',
-'noemailprefs' => 'Sanak harus mamasukan alamaik surel di preferensi Sanak untuak dapek manggunokan fitur-fitur iko.',
-'emailconfirmlink' => 'Konfirmasikan alamaik surel Sanak',
-'invalidemailaddress' => 'Alamaik surel iko indak dapek ditarimo karano formatnyo indak sasuai.
-Harap masuakan alamaik surel dalam format nan batua atau kosoangan isian tasabuik.',
-'cannotchangeemail' => 'Alamat e-mail sanak indak bisa diubah di wiki ko.',
-'emaildisabled' => 'Situs iko indak bisa mangirim e-mail.',
+'emailnotauthenticated' => 'Alamaik surel Sanak alun dikonfirmasi. Sabalun dikonfirmasi Sanak indak dapek manggunoan fitur surel.',
+'noemailprefs' => 'Sanak harus mamasukan alamaik surel di pangaturan Sanak untuak dapek manggunoan fitur-fitur ko.',
+'emailconfirmlink' => 'Konfirmasi alamaik surel Sanak',
+'invalidemailaddress' => 'Alamaik surel iko indak dapek ditarimo dek formatnyo indak sasuai.
+Harap masuakan alamaik surel dalam format nan bana atau kosoangan isian tasabuik.',
+'cannotchangeemail' => 'Alamaik surel Sanak indak bisa diubah di wiki ko.',
+'emaildisabled' => 'Situs web ko indak dapek mangirim surel.',
'accountcreated' => 'Akun dibuek',
'accountcreatedtext' => 'Akun pangguno untuak $1 alah dibuek.',
'createaccount-title' => 'Pambuekan akun untuak {{SITENAME}}',
'createaccount-text' => 'Sasaurang alah mambuek sabuah akun untuak alamaik surel Sanak di {{SITENAME}} ($4) jo namo "$2" dan kato sandi "$3". Sanak dianjuakan untuak masuak log dan mangganti kato sandi Sanak kini.
-Sanak dapek maabaikan pasan iko jikok akun iko dibuek karano suatu kasalahan.',
+Sanak dapek mangacuahkan pasan ko jikok akun ko dibuek dek ado kasalahan.',
'usernamehasherror' => 'Namo pangguno indak bisa mangandung tando paga',
'login-throttled' => 'Sanak alah bakali-kali mancoba masuak log.
Sila manunggu sabalun mancubo baliak.',
'loginlanguagelabel' => 'Baso: $1',
'suspicious-userlogout' => 'Pamintaan Sanak untuak kalua log ditolak karano tampaknyo dikirim oleh panjalajah nan rusak atau proksi panyinggah.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Kasalahan nan indak dikana dalam fungsi mail() PHP',
-'user-mail-no-addy' => 'Mancubo mangirim e-mail tanpa alamat e-mail nan sah.',
+'user-mail-no-addy' => 'Mancubo mangirim surel tanpa alamaik surel nan sah.',
'user-mail-no-body' => 'Mancubo kirim surel kosong atau pasan talalu pendek',
# Change password dialog
'resetpass' => 'Tuka kato sandi',
-'resetpass_announce' => 'Sanak alah masauk log jo kode samantaro nan dikirim malalui surel. Untuak malanjuikkan, Sanak harus mamasuakan kato sandi baru di siko:',
+'resetpass_announce' => 'Sanak alah masauk log jo kode samantaro nan dikirim malalui surel. Untuak malanjuikan, Sanak harus mamasuakan kato sandi baru di siko:',
'resetpass_header' => 'Tuka kato sandi akun',
'oldpassword' => 'Kato sandi lamo:',
'newpassword' => 'Kato sandi baharu:',
# Special:PasswordReset
'passwordreset' => 'Setel ulang sandi',
-'passwordreset-text' => 'Langkapi formulir iko untuak manarimo surel pangingek detail akun Sanak.',
+'passwordreset-text' => 'Lengkapi formulir ko untuak manarimo surel pangingek pado detil akun Sanak.',
'passwordreset-legend' => 'Tuka baliak kato sandi',
'passwordreset-disabled' => 'Panukaran baliak kato sandi alah dimatian di wiki iko.',
'passwordreset-pretext' => '{{PLURAL:$1||Masuakan ciek data di bawah iko}}',
'passwordreset-username' => 'Namo pangguno:',
'passwordreset-domain' => 'Domain:',
'passwordreset-capture' => 'Caliak kaputusannyo?',
-'passwordreset-capture-help' => 'Kalau sanak meancek boks iko, e-mail (jo kato kunci samantaro) akan dicaliakkan ka sanak.',
+'passwordreset-capture-help' => 'Kalau sanak mancentang kotak ko, surel (jo kato sandi samantaro) akan nampak jo Sanak.',
'passwordreset-email' => 'Alamaik surel:',
'passwordreset-emailtitle' => 'Detail akun di {{SITENAME}}',
'passwordreset-emailtext-ip' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek
-detail akun untuak {{SITENAME}} ($4). {{PLURAL:$3|Akun|Akun-akun}} barikuik
-takaik jo alamaik surel iko:
+detil akun untuak {{SITENAME}} ($4). {{PLURAL:$3|Akun}} barikuik takaik jo alamaik surel iko:
$2
-{{PLURAL:$3|Sandi samantaro|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|sahari|$5 hari}}.
-Sanak harus masuak dan mamiliah sandi baharu kini. Jikok urang lain mambuek
-pamintaan iko atau jikok Sanak ingek sandi asali dan indak lai
-ingin maubahnyo, Sanak dapek mabaikan pasan iko dan taruih manggunoan sandi lamo.',
-'passwordreset-emailtext-user' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek detail akun untuak {{SITENAME}} ($4).
-{{PLURAL:$3|Akun|Akun-akun}} barikuik takaik jo alamaik surel iko:
+{{PLURAL:$3|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|$5 hari}}.
+Sanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan sandi lamo.',
+'passwordreset-emailtext-user' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek detil akun untuak {{SITENAME}} ($4).
+{{PLURAL:$3|Akun}} barikuik takaik jo alamaik surel ko:
$2
-{{PLURAL:$3|Sandi samantaro|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|sahari|$5 hari}}.
-Sanak harus masuak dan mamiliah sandi baharu kini. Jikok urang lain mambuek
-pamintaan iko atau jikok Sanak ingek sandi asali dan indak lai
-ingin maubahnyo, Sanak dapek maabaikan pasan iko dan taruih manggunokan sandi lamo.',
+{{PLURAL:$3|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|$5 hari}}.
+Sanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan sandi lamo.',
'passwordreset-emailelement' => 'Namo pangguno: $1
Sandi samantaro: $2',
'passwordreset-emailsent' => 'Surel pangingek alah dikiriman.',
'passwordreset-emailerror-capture' => 'Surel pangingek, nan ditampilkan di bawah, alah dibuek, tapi pengirimannyo gagal ka pangguno: $1',
# Special:ChangeEmail
-'changeemail' => 'Tuka alamat e-mail.',
-'changeemail-header' => 'Ganti alamat e-mail.',
+'changeemail' => 'Tuka alamaik surel.',
+'changeemail-header' => 'Ganti alamaik surel.',
'changeemail-text' => 'Isi formulir ko untuak mangganti alamat surel. Sanak harus mamasuakkan kato sandi untuak mayakinkan parubahan.',
'changeemail-no-info' => 'Sanak harus masuak log untuak mangakses laman ko.',
'changeemail-oldemail' => 'Alamat surel kini:',
'nowiki_tip' => 'Abaikan format wiki',
'image_tip' => 'Cantumkan berkas',
'media_tip' => 'Pautan berkas',
-'sig_tip' => 'Tandotangan sanak jo waktu',
+'sig_tip' => 'Tandotangan sanak jo wakatu',
'hr_tip' => 'Garih mandata',
# Edit pages
'subject' => 'Subjek/judul:',
'minoredit' => 'Suntiangan ketek',
'watchthis' => 'Pantau laman ko',
-'savearticle' => 'Simpan laman',
+'savearticle' => 'Simpan',
'preview' => 'Caliak',
-'showpreview' => 'Caliak pratonton',
+'showpreview' => 'Pratonton',
'showlivepreview' => 'Pratayang langsuang',
-'showdiff' => 'Caliak parubahan',
+'showdiff' => 'Parubahan',
'anoneditwarning' => "'''Ingek:''' Sanak alun masuak log.
Alamat IP sanak tacatat pado riwayaik suntiangan laman ko.",
'anonpreviewwarning' => "''Sanak alun masuak log. Manyimpan laman akan manyababkan alamaik IP Sanak tacatat pado riwayat suntiangan laman iko.''",
* '''Firefox / Safari:''' Tahan ''Shift'' sambia mangklik ''Reload'', atau takan ''Ctrl-F5'' atau ''Ctrl-R'' (''⌘-R'' di Mac)
* '''Google Chrome:''' Takan ''Ctrl-Shift-R'' (''⌘-Shift-R'' di Mac)
* '''Internet Explorer:''' Tahan ''Ctrl'' sambia mangklik ''Refresh'', atau takan ''Ctrl-F5''
-* '''Opera:''' Barasiahkan tembolok di ''Tools → Preferences''",
+* '''Opera:''' Barasiahkan singgahan di ''Tools → Preferences''",
'usercssyoucanpreview' => "'''Tips:''' Gunoan tombol \"{{int:showpreview}}\" untuak mauji CSS baharu Sanak sabalun manyimpannyo.",
'userjsyoucanpreview' => "'''Tips:''' Gunoan tombol \"{{int:showpreview}}\" untuak mauji JS baharu Sanak sabalun manyimpannyo.",
'usercsspreview' => "'''Ingeklah bahawa Sanak sadang manampilan pratayang dari CSS Sanak.
'userinvalidcssjstitle' => "'''Paringatan:''' Kulik \"\$1\" indak ditamuan. Harap diingek bahawa laman .css dan .js manggunokan huruf kecil, contoh {{ns:user}}:Foo/vector.css dan bukannyo {{ns:user}}:Foo/Vector.css.",
'updated' => '(Dipabaharui)',
'note' => "'''Catatan:'''",
-'previewnote' => "'''Ingek ko hanyo pratonton'''
+'previewnote' => "'''Ingek iko hanyo pratonton'''
Parubahan Sanak alun disimpan!",
'continue-editing' => 'Pai ka area mangedit.',
'previewconflict' => 'Pratayang iko mancaminan teks pado bagian ateh kotak suntiangan teks sabagaimano akan taliek bilo Sanak manyimpannyo.',
'session_fail_preview' => "'''Maaf, kami ndak dapek mangolah suntiangan Sanak akibat tahapuihnyo data sesi.
Sila cubo sakali lai.
Jikok masih indak barhasil, cubolah [[Special:UserLogout|kalua log]] dan masuak log baliak.'''",
-'session_fail_preview_html' => "'''Kami indak dapek mamproses suntiangan Sanak karano hilangnyo data sesi.'''
+'session_fail_preview_html' => "'''Kami indak dapek mamproses suntiangan Sanak karano hilangnyo sesi data.'''
-''Karano {{SITENAME}} mangizinan panggunoan HTML mantah, pratayang alah disurukan sabagai pancagahan terhadap serangan JavaScript.''
+''Dek {{SITENAME}} mangizinan panggunoan HTML mantah, pratonton alah disuruakan sabagai pancagahan terhadok sarangan JavaScript.''
-'''Jikok iko marupokan upayo suntiangan nan sahih, sila cubo lai.
-Jikok masih tatap indak bahasil, cubolah [[Special:UserLogout|kalua log]] dan masuak baliak.'''",
+'''Jikok iko marupoan suntiangan nan sah, silakan cubo lai.
+Jikok masih jo indak barasil, cubolah [[Special:UserLogout|kalua log]] dan masuak baliak.'''",
'token_suffix_mismatch' => "'''Suntiangan Sanak ditolak karano aplikasi klien Sanak maubah karakter tando baco pado suntiangan.'''
Suntiangan tasabuik ditolak untuak mancegah kasalahan pado teks laman.
Hal iko kadang tajadi jikok Sanak manggunokan layanan proxy anonim babasis web nan bamasalah.",
'editing' => 'Manyuntiang $1',
'creating' => 'Mambuek $1',
'editingsection' => 'Suntiang $1 (bagian)',
-'editingcomment' => 'Manyuntiang $1 (bahagian baharu)',
+'editingcomment' => 'Manyuntiang $1 (bagian baru)',
'editconflict' => 'Konflik panyuntiangan: $1',
-'explainconflict' => "Urang lain alah manyuntiang laman iko sajak Sanak mulai manyuntiangnyo.
-Bagian ateh teks iko manganduang teks laman saat iko.
+'explainconflict' => "Urang lain lah manyuntiang laman ko sajak Sanak mulai manyuntiangnyo.
+Bagian ateh teks ko manganduang teks laman saat kini ko.
Parubahan nan Sanak lakuan ditunjuakan pado bagian bawah teks.
-Sanak hanyo paralu magabungan parubahan Sanak jo teks nan alah ado.
-'''Hanyo''' teks pado bagian ateh lamanlah nan akan disimpan apobilo Sanak manakan \"{{int:savearticle}}\".",
+Sanak hanyo paralu manggabungan parubahan Sanak jo teks nan lah ado.
+'''Hanyo''' teks pado bagian ateh lamanlah nan akan disimpan jikok Sanak manakan \"{{int:savearticle}}\".",
'yourtext' => 'Teks Sanak',
'storedversion' => 'Versi tasimpan',
-'nonunicodebrowser' => "'''Paringatan: Panjalajah web Sanak indak mandukung unicode.'''
-Alah tadapek sabuah solusi agar Sanak dapek manyuntiang laman jo aman: karakter non-ASCII akan muncua dalam kotak edit sabagai kode heksadesimal.",
+'nonunicodebrowser' => "'''Paringatan: Panjalajah web Sanak indak mandukuang Unicode.'''
+Alah ado solusi bia Sanak dapek manyuntiang laman sacaro aman: karakter non-ASCII akan muncua dalam kotak suntiang sabagai kode heksadesimal.",
'editingold' => "'''Paringatan:
-Sanak manyuntiang revisi lama suatu laman.
-Jikok Sanak manyimpannyo, parubahan-parubahan nan dibuek sajak revisi iko akan hilang.'''",
+Sanak manyuntiang revisi lamo suatu laman.
+Jikok Sanak manyimpannyo, parubahan-parubahan nan dibuek sajak revisi ko akan hilang.'''",
'yourdiff' => 'Pambedoan',
'copyrightwarning' => "Untuak diingek bahaso apo nan disumbang kapado {{SITENAME}} dianggap lah dilapeh di bawah $2 (caliak $1 untuak langkoknyo).
Jikok awak indak ingin apo nan ditulih tu disuntiang dan disebaran, jan dikirim tulisan tu ka siko.<br />
Awak musti bajanji juo bahaso iko adolah asia karya awak surang, atau disalin dari sumber miliak basamo atau sumber bebas lainnyo.
'''Jan dikirim karya bahak cipta nan indak baizin!'''",
'copyrightwarning2' => "Parhatikan bahawa sadoalah kontribusi terhadap {{SITENAME}} dapek disuntiang, diubah, atau dihapuih oleh panyumbang lainnyo. Jikok Sanak indak ingin tulisan Sanak disuntiang urang lain, jan kiriman ka siko.<br />Sanak jua bajanji bahawa iko adolah hasil karyo Sanak surang, atau disalin dari sumber miliak umum atau sumber bebas nan lain (liek $1 untuak informasi labiah lanjuik). '''JAN KIRIMAN KARYO NAN DILINDUNGI HAK CIPTA TANPA IJIN!'''",
-'longpageerror' => "'''KASALAHAN: Teks nan Sanak kiriman sagadang {{PLURAL:$1|kilobita|$1 kilobita}}, nan barati labiah gadang dari jumlah maksimum {{PLURAL:$2|kilobita|$2 kilobita}}. Teks indak dapek disimpan.'''",
+'longpageerror' => "'''Kasalahan: Teks nan Sanak kiriman sagadang {{PLURAL:$1|$1 kilobita}}, barati labiah gadang dari jumlah maksimum {{PLURAL:$2|$2 kilobita}}. Teks indak dapek disimpan.'''",
'readonlywarning' => "'''PARINGATAN: Basis data sadang dikunci untuak pamaliharaan, sahinggo saat iko Sanak indak dapek manyimpan hasil suntiangan.'''
Sanak mungkin paralu manyalin teks suntiangan Sanak ko dan simpankan ka sabuah berkas teks guno mamuekannyo baliak kundian.
Entri catatan tarakhir disadioan di bawah untuak referensi:",
'semiprotectedpagewarning' => "'''Paringatan: Laman iko sadang dilinduangi sahinggo hanyo pangguno tadafta nan bisa manyuntiangnyo.'''
Entri catatan tarakhir disadioan di bawah untuak referensi:",
-'cascadeprotectedwarning' => "'''PARINGATAN:''' Laman iko sadang dilinduangi sahinggo hanyo pangguno jo hak akses pangurus sajo nan dapek manyuntiangnyo karano disaratokan dalam {{PLURAL:$1|laman|laman-laman}} barikuik nan alah dilinduangi jo opsi 'palinduangan runtun':",
+'cascadeprotectedwarning' => "'''Paringatan:''' Laman ko sadang dilinduangi jadi hanyo pangguno jo hak akses panguruih sajo nan dapek manyuntiangnyo karano disaratoan dalam {{PLURAL:$1|laman}} nan alah dilinduangi jo palinduangan batingkek:",
'titleprotectedwarning' => "'''Paringatan: Laman iko alah dilinduangi sahinggo diparaluan [[Special:ListGroupRights|hak khusus]] untuak mambueknyo.'''
Entri catatan tarakhir disadioan di bawah untuak referensi:",
-'templatesused' => '{{PLURAL:$1|Templat}} yang digunoan di laman ko:',
-'templatesusedpreview' => '{{PLURAL:$1|Templat|Templat}} yang digunoan dalam pratonton ko:',
-'templatesusedsection' => '{{PLURAL:$1|Templat|Templat}} nan digunoan di bagian iko:',
+'templatesused' => '{{PLURAL:$1|Templat}} nan digunoan di laman ko:',
+'templatesusedpreview' => '{{PLURAL:$1|Templat}} nan digunoan dalam pratonton ko:',
+'templatesusedsection' => '{{PLURAL:$1|Templat}} nan digunoan di bagian ko:',
'template-protected' => '(dilinduangi)',
-'template-semiprotected' => '(semi-perlindungan)',
+'template-semiprotected' => '(palinduangan semi)',
'hiddencategories' => 'Laman ko marupokan kalompok dari {{PLURAL:$1|$1 kategori tapandam}}:',
-'nocreatetext' => '{{SITENAME}} alah mambatasi pambuekan laman-laman baharu.
-Sanak dapek baliak dan manyuntiang laman nan alah ado, atau sila [[Special:UserLogin|masuak log atau mambuek akun]].',
+'nocreatetext' => '{{SITENAME}} lah mambatasi pambuekan laman-laman baru.
+Sanak dapek baliak dan manyuntiang laman nan alah ado, atau [[Special:UserLogin|masuak log - mambuek akun]].',
'nocreate-loggedin' => 'Sanak ndak mampunyoi hak akses untuak mambuek laman baharu.',
'sectioneditnotsupported-title' => 'Panyuntiangan bagian indak didukuang',
'sectioneditnotsupported-text' => 'Panyuntiangan bagian indak didukuang di laman suntiang iko.',
'permissionserrors' => 'Kasalahan Hak Akses',
-'permissionserrorstext' => 'Sanak ndak mampunyoi hak untuak malakuan hal itu karano {{PLURAL:$1|alasan|alasan-alasan}} barikuik:',
+'permissionserrorstext' => 'Sanak indak ado hak untuak malakuannyo dek {{PLURAL:$1|alasan}} barikuik:',
'permissionserrorstext-withaction' => 'Awak indak punyo hak akses untuak $2, karano {{PLURAL:$1|alasan}} barikuik:',
'recreate-moveddeleted-warn' => "'''Ingek: Sanak mambuek ulang suatu laman nan alah dihapuih.'''
'powersearch-togglelabel' => 'Piliah:',
'powersearch-toggleall' => 'Sadonyo',
'powersearch-togglenone' => 'Dak ado',
+'search-external' => 'Pancarian lua',
+'searchdisabled' => 'Pancarian {{SITENAME}} dimatian.
+Sanak samantaro dapek mancari lewaik Google.
+Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
+
+# Quickbar
+'qbsettings' => 'Bar pinteh',
+'qbsettings-none' => 'Indak ado',
+'qbsettings-fixedleft' => 'Rato kiri',
+'qbsettings-fixedright' => 'Rato kanan',
+'qbsettings-floatingleft' => 'Mangambang di kiri',
+'qbsettings-floatingright' => 'Mangambang di kanan',
+'qbsettings-directionality' => 'Tetap, tagantuang pado skrip bahaso Sanak',
# Preferences page
'preferences' => 'Pangaturan',
'mypreferences' => 'Pangaturan',
'prefs-edits' => 'Jumlah suntiangan:',
+'prefsnologin' => 'Alun masuak log',
'prefsnologintext' => 'Sanak musti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuak log]</span> untuak mengeset pangaturan.',
'changepassword' => 'Tuka kato sandi',
'prefs-skin' => 'Kulik',
'prefs-displaywatchlist' => 'Pilihan tampilan',
'prefs-diffs' => 'Pabedoan',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Alamaik surel nampaknyo sah',
-'email-address-validity-invalid' => 'Masuakkan alamaik surel nan sah',
+'email-address-validity-invalid' => 'Masuakan alamaik surel nan sah',
# User rights
'userrights' => 'Manajemen hak pangguno',
'userrights-lookup-user' => 'Mangatua kalompok pangguno',
-'userrights-user-editname' => 'Masuakkan namo pangguno:',
+'userrights-user-editname' => 'Masuakan namo pangguno:',
'editusergroup' => 'Suntiang kalompok pangguno',
+'editinguser' => "Mangganti hak akses pangguno '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => 'Suntiang kalompok pangguno',
+'saveusergroups' => 'Simpan kalompok pangguno',
+'userrights-groupsmember' => 'Anggota dari:',
+'userrights-groupsmember-auto' => 'Anggota implisit dari:',
+'userrights-groups-help' => 'Sanak dapek mangubah kalompok pangguno ko:
+* Kotak jo tando cek marupoan kalompok pangguno tasabuik
+* Kotak tanpa tando cek bararti pangguno ko bukan anggota kalompok tasabuik
+* Tando * manandoi Sanak indak dapek mambatalan kalompok tasabuik bilo Sanak alah manambahannyo, atau sabaliaknyo.',
+'userrights-reason' => 'Alasan:',
+'userrights-no-interwiki' => 'Sanak indak bahak untuak mangubah hak pangguno di wiki lain.',
+'userrights-nodatabase' => 'Basis data $1 indak ado atau bukan disiko.',
+'userrights-nologin' => 'Sanak musti [[Special:UserLogin|masuak log]] jo akun panguruih untuak dapek mangubah hak pangguno.',
+'userrights-notallowed' => 'Akun Sanak indak ado izin untuak manambah atau malapeh hak pangguno.',
+'userrights-changeable-col' => 'Kalompok nan dapek Sanak ubah',
+'userrights-unchangeable-col' => 'Kalompok nan indak dapek Sanak ubah',
# Groups
'group' => 'Kalompok:',
'group-all' => '(sadonyo)',
'group-user-member' => '{{GENDER:$1|pangguno}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|pangguno takonfirmasi otomatis}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|panguruih}}',
+'group-bureaucrat-member' => '{{GENDER:$1|birokrat}}',
+'group-suppress-member' => '{{GENDER:$1|pangawas}}',
'grouppage-user' => '{{ns:project}}:Pangguno',
-'grouppage-sysop' => '{{ns:project}}:Pengurus',
+'grouppage-autoconfirmed' => '{{ns:project}}:Pangguno takonfirmasi otomatis',
+'grouppage-bot' => '{{ns:project}}:Bot',
+'grouppage-sysop' => '{{ns:project}}:Panguruih',
+'grouppage-bureaucrat' => '{{ns:project}}:Birokrat',
+'grouppage-suppress' => '{{ns:project}}:Pangawas',
# Rights
+'right-read' => 'Mambaco laman',
+'right-edit' => 'Manyuntiang laman',
'right-createpage' => 'Mambuek laman baru (nan bukan laman diskusi)',
'right-createtalk' => 'Mambuek laman diskusi',
'right-createaccount' => 'Mambuek akun baru',
+'right-minoredit' => 'Manandoi suntiangan ketek',
+'right-move' => 'Mamindahan laman',
+'right-move-subpages' => 'Mamindahan laman jo kasado sub laman',
+'right-move-rootuserpages' => 'Mamindahan laman pangguno',
+'right-movefile' => 'Mamindahan berkas',
+'right-suppressredirect' => 'Indak mambuek pangaliahan wakatu mamindahan laman',
+'right-upload' => 'Mamuek berkas',
+'right-reupload' => 'Manimpo berkas lamo',
+'right-reupload-own' => 'Manimpo berkas nan dimuek surang',
# Special:Log/newusers
'newuserlogpage' => 'Log pangguno baru',
+'newuserlogpagetext' => 'Di bawah ko log pandaftaran pangguno baru',
# User rights log
'rightslog' => 'Log parubahan hak akses',
'rclinks' => 'Tunjuakkan $1 parubahan tabaru dalam $2 hari tarakhia<br />$3',
'diff' => 'bedo',
'hist' => 'sijarah',
-'hide' => 'Suruakkan',
-'show' => 'Tampilkan',
+'hide' => 'Suruakan',
+'show' => 'Tunjuakan',
'minoreditletter' => 'k',
'newpageletter' => 'B',
'boteditletter' => 'b',
'license-header' => 'Lisensi',
# Special:ListFiles
+'listfiles' => 'Dafta berkas',
+'listfiles_thumb' => 'Miniatur',
+'listfiles_date' => 'Tanggal',
+'listfiles_name' => 'Namo',
'listfiles_user' => 'Pangguno',
'listfiles_size' => 'Ukuran',
'listfiles_description' => 'Katarangan',
'file-anchor-link' => 'Berkas',
'filehist' => 'Riwayaik berkas',
'filehist-help' => 'Klik pado tanggal/waktu untuak malihek berkas pado maso tu',
-'filehist-revert' => 'baliakkan',
+'filehist-deleteall' => 'hapuih sadonyo',
+'filehist-deleteone' => 'hapuih',
+'filehist-revert' => 'baliakan',
'filehist-current' => 'kini ko',
-'filehist-datetime' => 'Tanggal/Waktu',
+'filehist-datetime' => 'Tanggal/Wakatu',
'filehist-thumb' => 'Miniatur',
'filehist-thumbtext' => 'Miniatur untuak versi per $1',
'filehist-nothumb' => 'Miniatur indak ado',
'imagelinks' => 'Panggunoan berkas',
'linkstoimage' => 'Barikuik ko {{PLURAL:$1|$1 laman nan takaik}} jo berkas:',
'nolinkstoimage' => 'Indak ado laman nan batauik ka berkas ko.',
+'linkstoimage-redirect' => '$1 (pangaliahan berkas) $2',
'sharedupload' => 'Berkas ko barasal dari $1 dan mungkin digunoan oleh berbagai proyek lain.',
'sharedupload-desc-here' => 'Berkas ko dari $1, mungkin juo digunoan untuak proyek-proyek lain.
Informasi dari [$2 laman katarangannyo] ado di bawah.',
+'filepage-nofile' => 'Indak ado berkas banomo iko.',
+'filepage-nofile-link' => 'Indak ado berkas banamo iko, tapi sanak dapek [$1 mamueknyo].',
'uploadnewversion-linktext' => 'Unggah versi baru dari berkas ko',
+'shared-repo-from' => 'dari $1',
+'shared-repo' => 'repositori basamo',
+'upload-disallowed-here' => 'Sanak indak dapaek manimpo berkas ko.',
+
+# File reversion
+'filerevert' => 'Baliakan $1',
+'filerevert-legend' => 'Baliakan berkas',
+'filerevert-intro' => "Sanank ka mambaliakan berkas '''[[Media:$1|$1]]''' ka versi [$4 pado $3, $2].",
+'filerevert-comment' => 'Alasan:',
+'filerevert-defaultcomment' => 'Baliakan ka versi pado $2, $1',
+'filerevert-submit' => 'Baliakan',
+'filerevert-success' => "'''[[Media:$1|$1]]''' lah dibaliakan ka versi [$4 pado $3, $2]",
+'filerevert-badversion' => 'Indak ado versi lokal tadahulu dari berkas ko pado wakatu nan dituju.',
+
+# File deletion
+'filedelete' => 'Hapuih $1',
+'filedelete-legend' => 'Hapuih berkas',
# Random page
'randompage' => 'Laman sumbarang',
'doubleredirects' => 'Pangaliahan ganda',
+'withoutinterwiki-submit' => 'Tunjuakan',
+
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bita}}',
'ncategories' => '$1 {{PLURAL:$1|kategori}}',
'deadendpages' => 'Laman buntu',
'deadendpagestext' => 'Laman-laman ko indak ad pautan ka laman lain di {{SITENAME}}.',
'protectedpages' => 'Laman nan dilinduangi',
+'protectedpages-indef' => 'Untuak palinduangan salamonyo',
+'protectedpages-cascade' => 'Untuak palinduangan batingkek',
'usereditcount' => '$1 {{PLURAL:$1|suntiangan}}',
'usercreated' => '{{GENDER:$3|Dibuek}} pado $1 pukua $2',
'newpages' => 'Laman baru',
'booksources-go' => 'Tuju',
# Special:Log
+'specialloguserlabel' => 'Pangguno:',
+'speciallogtitlelabel' => 'Target (judul atau pangguno):',
'log' => 'Log',
+'all-logs-page' => 'Sado log publik',
+'alllogstext' => 'Gabungan kasado log nan ado di {{SITENAME}}.
+Sanak dapek mamiliah jenis log nan ado, namo pangguno (bedoan huruf ketek/gadang), atau judul laman (bedoan huruf ketek/gadang).',
+'logempty' => 'Indak basobok entri log nan sasuai.',
+'log-title-wildcard' => 'Cari judul nan diawali jo teks ko',
+'showhideselectedlogentries' => 'Tunjuakan/Suruakan entri log tapiliah',
# Special:AllPages
'allpages' => 'Kasado laman',
'alphaindexline' => '$1 sampai $2',
+'nextpage' => 'Laman salanjuiknyo ($1)',
'prevpage' => 'Laman sabalunnyo ($1)',
-'allpagesfrom' => 'Tampilkan laman mulai dari:',
-'allpagesto' => 'Tampilkan laman hinggo:',
-'allarticles' => 'Semua laman',
+'allpagesfrom' => 'Tunjuakan laman mulai dari:',
+'allpagesto' => 'Tunjuakan laman sampai:',
+'allarticles' => 'Kasado laman',
+'allinnamespace' => 'Kasado laman (ruang namo $1)',
+'allnotinnamespace' => 'Kasado laman (bukan ruang namo $1)',
+'allpagesprev' => 'Sabalun',
+'allpagesnext' => 'Lanjuik',
'allpagessubmit' => 'Tuju',
+'allpagesprefix' => 'Tunjuakan laman jo awalan:',
+'allpages-bad-ns' => '{{SITENAME}} indak ado ruang namo "$1".',
+'allpages-hide-redirects' => 'Suruakan pangaliahan',
+
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Caliak versi baru.',
# Special:Categories
'categories' => 'Kategori',
'categoriespagetext' => '{{PLURAL:$1|Isi kategori}} ko ado laman atau media.
[[Special:UnusedCategories|Kategori nan indak tapakai]] indak nampak di siko.
Lihek pulo [[Special:WantedCategories|kategori nan diinginkan]].',
+'categoriesfrom' => 'Tunjuakan kategori mulai jo:',
+'special-categories-sort-count' => 'uruikan manuruik jumlah',
+'special-categories-sort-abc' => 'uruikan manuruik abjad',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Jariah nan dihapuih',
+'deletedcontributions-title' => 'Jariah nan dihapuih',
+'sp-deletedcontributions-contribs' => 'Jariah',
# Special:LinkSearch
'linksearch' => 'Pancarian pautan lua',
+'linksearch-pat' => 'Pola pancarian:',
+'linksearch-ns' => 'Ruang namo:',
+'linksearch-ok' => 'Cari',
'linksearch-line' => '$1 tapauik dari $2',
+# Special:ListUsers
+'listusersfrom' => 'Tunjuakan pangguno mulai dari:',
+'listusers-submit' => 'Tunjuakan',
+'listusers-noresult' => 'Pangguno indak basobok.',
+'listusers-blocked' => '(tasakek)',
+
+# Special:ActiveUsers
+'activeusers' => 'Dafta pangguno aktif',
+'activeusers-from' => 'Tunjuakan pangguno mulai dari:',
+'activeusers-hidebots' => 'Suruakan bot',
+'activeusers-hidesysops' => 'Suruakan panguruih',
+'activeusers-noresult' => 'Pangguno indak basobok',
+
# Special:ListGroupRights
+'listgrouprights' => 'Dafta kalompok pangguno',
+'listgrouprights-group' => 'Kalompok',
+'listgrouprights-rights' => 'Hak',
+'listgrouprights-helppage' => 'Help:Hak akses',
'listgrouprights-members' => '(dafta anggota)',
-# E-mail user
+# Email user
'emailuser' => 'Surel pangguno',
'emailuser-title-target' => 'Kirim surel ka {{GENDER:$1|panggun}} ko',
'emailuser-title-notarget' => 'Kirim surel',
'emailccme' => 'Kirimkan denai salinan pasan.',
# Watchlist
-'watchlist' => 'Dafta pantau',
-'mywatchlist' => 'Dafta pantau',
+'watchlist' => 'Pantauan',
+'mywatchlist' => 'Pantauan',
'watchlistfor2' => 'Untuak $1 $2',
-'addedwatchtext' => "Laman \"[[:\$1]]\" lah ditambahkan ka [[Special:Watchlist|senarai pantauan awak]].
-Parubahan laman ko tamasuak laman otanyo akan ditampilkan dalam '''cetak taba''' pado [[Special:RecentChanges|senarai parubahan]] agar lebih mudah manjagonyo.",
+'addedwatchtext' => "Laman \"[[:\$1]]\" lah ditambahkan ka [[Special:Watchlist|dafta pantauan Sanak]].
+Parubahan laman ko tamasuak laman rundiangnyo akan ditampilan pado [[Special:RecentChanges|dafta parubahan]] '''bacetak taba''' agar labiah mudah mancaliaknyo.",
'removewatch' => 'Hapuih dari dafta pantau',
'removedwatchtext' => 'Laman "[[:$1]]" lah dihapuih dari [[Special:Watchlist|dafta pantau Sanak]].',
'watch' => 'Pantau',
# Protect
'protectlogpage' => 'Log palinduangan',
+'protectlogtext' => 'Di bawah ko dafta parubahan tahadok palinduangan laman.
+Caliak [[Special:ProtectedPages|dafta laman talinduang]] untuak dafta palinduangan laman tabaru.',
'protectedarticle' => 'malinduangkan "[[$1]]"',
-'modifiedarticleprotection' => 'maubah tingkek perlindungan "[[$1]]"',
+'modifiedarticleprotection' => 'maubah tingkek palinduangan "[[$1]]"',
'protectcomment' => 'Alasan:',
'protectexpiry' => 'Kadaluwarsa:',
'protect_expiry_invalid' => 'Maso kadaluwarsa indak balaku',
'protect_expiry_old' => 'Maso kadaluwarsa adolah pado maso lampau',
-'protect-text' => "Awak buliah malihek jo mangganti tingkek perlindungan di siko untuak laman '''$1'''.",
-'protect-locked-access' => "Akun awak indak berhak untuak maubah tingkek perlindungan laman ko.
-Berikut ko pengaturan yang balaku untuak laman '''$1''':",
+'protect-text' => "Sanak buliah malihek jo mangganti tingkek palinduangan untuak laman '''$1'''.",
+'protect-locked-access' => "Akun Sanak indak bahak untuak maubah tingkek palinduangan laman ko.
+Barikuik ko pangaturan nan balaku untuak laman '''$1''':",
'protect-cascadeon' => 'Laman ko sedang dilindungi karano tamasuak dalam {{PLURAL:$1|laman|laman}} aktif perlindungan batingkek.
Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlindungan batingkeknyo.',
'protect-default' => 'Semua pangguno diizinkan',
'protect-existing-expiry' => 'Alah sampai: $3, $2',
'protect-otherreason' => 'Alasan lain/tambahan:',
'protect-otherreason-op' => 'Alasan lain',
-'restriction-type' => 'Perlindungan:',
+'protect-dropdown' => '*Alasan umum palinduangan
+** Vandal baulang
+** Spam baulang
+** Parang suntiangan
+** Laman balalu lintas tinggi
+** Digunoan di Palanta
+** Templat baresiko tinggi
+** Berkas nan banyak digunoan
+** Baulang kali dihapuih dalam waktu dakek
+** Baulang kali dialiahan tanpa barundiang
+** Baulang kali dikosongan
+** Pamintaan pangguno',
+'protect-edit-reasonlist' => 'Suntiang alasan palinduangan',
+'protect-expiry-options' => '1 jam:1 hour,1 ari:1 day,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 taun:1 year,salamonyo:infinite',
+'restriction-type' => 'Palinduangan:',
'restriction-level' => 'Tingkek larangan:',
'minimum-size' => 'Ukuran min',
'maximum-size' => 'Ukuran max',
'restriction-create' => 'Buek',
'restriction-upload' => 'Muek',
+# Restriction levels
+'restriction-level-sysop' => 'palinduangan panuah',
+'restriction-level-autoconfirmed' => 'palinduangan semi',
+'restriction-level-all' => 'sado tingkek',
+
# Undelete
-'undeletelink' => 'caliak/cegakkan',
+'undelete' => 'Caliak laman nan dihapuih',
+'undeletepage' => 'Caliak dan baliakan laman tahapuih',
+'undeletepagetitle' => "'''Iko dafta revisi nan dihapuih dari [[:$1|$1]]'''.",
+'viewdeletedpage' => 'Caliak laman nan dihapuih',
+'undelete-nodiff' => 'Indak ado basobok revisi lamo',
+'undeletebtn' => 'Baliakan',
+'undeletelink' => 'caliak/baliakan',
'undeleteviewlink' => 'caliak',
# Namespace form on various pages
'year' => 'Dari taun (dan sabalunnyo):',
'sp-contributions-newbies' => 'Tampilkan jariah pangguno baru sajo',
+'sp-contributions-newbies-sub' => 'Untuak pangguno baru',
+'sp-contributions-newbies-title' => 'Jariah pangguno baru',
'sp-contributions-blocklog' => 'log pamblokiran',
-'sp-contributions-deleted' => 'kontribusi pangguno nan lah batiadoan',
+'sp-contributions-deleted' => 'jariah pangguno nan lah dihapuih',
'sp-contributions-uploads' => 'muek',
'sp-contributions-logs' => 'log',
'sp-contributions-talk' => 'maota',
+'sp-contributions-userrights' => 'pangalolaan hak pangguno',
+'sp-contributions-blocked-notice' => 'Pangguno ko sadang kanai sakek. log pamblokiran tarakhia ditunjuakan disiko untuak referensi:',
+'sp-contributions-blocked-notice-anon' => 'Alamaik IP ko tangah diblokir.
+Entri log pamblokiran tabaru ado di bawah ko untuak referensi:',
'sp-contributions-search' => 'Cari jariah',
'sp-contributions-username' => 'Alamat IP atau namo pangguno:',
'sp-contributions-toponly' => 'Hanyo manampilan suntiangan nan tarakhia',
'whatlinkshere-page' => 'Laman:',
'linkshere' => "Laman-laman ko bakaik ka '''[[:$1]]''':",
'nolinkshere' => "Indak ado laman nan punyo tautan ka '''[[:$1]]'''.",
-'isredirect' => 'laman pengaliahan',
+'nolinkshere-ns' => "Indak ado pautan laman ka '''[[:$1]]''' pado ruang namo nan dipiliah.",
+'isredirect' => 'laman pangaliahan',
'istemplate' => 'transklusi',
'isimage' => 'pautan berkas',
'whatlinkshere-prev' => '{{PLURAL:$1|sabalunnyo}}',
'ipb-blockingself' => 'Angku ka manyakek diri surang! Lai yakin apo nan dikarajoan?',
'ipb-edit-dropdown' => 'Suntiang alasan manyakek',
'ipb-unblock-addr' => 'Lapeh sakek $1',
-'blocklist' => 'Pangguno tablokir',
-'ipblocklist' => 'Pangguno tablokir',
+'ipb-unblock' => 'Lapeh sakek pangguno atau alamaik IP',
+'ipb-blocklist' => 'Caliak nan disakek',
+'ipb-blocklist-contribs' => 'Jariah untuak $1',
+'unblockip' => 'Lapeh sakek',
+'unblockiptext' => 'Gunoan formulir ko untuak mangambalian hak akses alamaik IP atau pangguno nan kanai sakek',
+'ipusubmit' => 'Lapeh sakek ko',
+'unblocked' => '[[User:$1|$1]] lah dilapeh sakeknyo',
+'unblocked-range' => '$1 lah dilapeh sakeknyo',
+'unblocked-id' => 'Sakek $1 lah dilapeh',
+'blocklist' => 'Pangguno kanai sakek',
+'ipblocklist' => 'Pangguno kanai sakek',
+'ipblocklist-legend' => 'Cari pangguno kanai sakek',
+'blocklist-userblocks' => 'Suruakan akun tasakek',
+'blocklist-tempblocks' => 'Suruakan sakek samantaro',
+'blocklist-addressblocks' => 'Suruakan ciek IP tasakek',
+'blocklist-rangeblocks' => 'Suruakan wilayah sakek',
+'blocklist-timestamp' => 'tando wakatu',
+'blocklist-target' => 'Target',
+'blocklist-expiry' => 'Kadaluwarsa',
+'blocklist-by' => 'Panguruih nan manyakek',
+'blocklist-params' => 'Parameter sakek',
+'blocklist-reason' => 'Alasan',
+'ipblocklist-submit' => 'Cari',
+'ipblocklist-localblock' => 'Sakek lokal',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Sakek}} lain',
+'infiniteblock' => 'salamonyo',
+'expiringblock' => 'habih pado $1 di $2',
+'anononlyblock' => 'hanyo anon.',
+'noautoblockblock' => 'sakek otomatis dimatian',
+'createaccountblock' => 'mambuek akun dimatian',
+'emailblock' => 'surel diblokir',
+'blocklist-nousertalk' => 'indak dapek manyuntiang laman maota surang',
+'ipblocklist-empty' => 'Dafta sakek ko kosong.',
+'ipblocklist-no-results' => 'Alamaik IP atau pangguno nan dimintak indak disakek.',
'blocklink' => 'sakek',
-'unblocklink' => 'hilangkan sakek',
+'unblocklink' => 'lapeh sakek',
'change-blocklink' => 'ubah sakek',
'contribslink' => 'jariah',
-'blocklogpage' => 'Log pamblokiran',
+'emaillink' => 'kirim surel',
+'autoblocker' => 'Sakek otomatis dek alamaik IP lah digunoan jo "[[User:$1|$1]]".
+Alasan disakek untuak $1 adolah "\'\'$2\'\'"',
+'blocklogpage' => 'Log sakek',
'blocklogentry' => 'Manyakek [[$1]] dalam maso $2 $3',
-'unblocklogentry' => 'mahilangkan sakek $1',
-'block-log-flags-nocreate' => 'mambuek akun dimatikan',
+'unblocklogentry' => 'lapeh sakek $1',
+'block-log-flags-anononly' => 'hanyo pangguno anonim',
+'block-log-flags-nocreate' => 'mambuek akun dimatian',
+'block-log-flags-noautoblock' => 'sakek otomatis dimatian',
+'block-log-flags-noemail' => 'surel diblokir',
+'block-log-flags-nousertalk' => 'indak dapek manyuntiang laman maota surang',
+'block-log-flags-angry-autoblock' => 'sistim sakek otomatis diaktifkan',
+'block-log-flags-hiddenname' => 'namo pangguno tasuruak',
+'ipb_already_blocked' => '"$1" alah disakek',
+'ipb-needreblock' => '$1 alah tasakek. Apo nio diubah pangaturannyo?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Sakek}} lain',
'blockme' => 'Sakek denai',
+'proxyblocker' => 'Sakek proksi',
+'proxyblocker-disabled' => 'Fungsi ko dimatian',
+
+# Developer tools
+'lockdb' => 'Kunci basis data',
+'unlockdb' => 'Bukak kunci basis data',
# Move page
+'move-page' => 'Pindahan $1',
+'move-page-legend' => 'Pindahan laman',
'movepagetext' => "Formulir di bawah ko digunoan untuak maubah namo suatu laman dan mamindahan sadonyo data riwayaik ka namo baru.
Judua lamo tu ka manjadi laman paraliahan manuju judua nan baru.
Awak dapek mampabarui paraliahan-paraliahan nan manuju ka judua lamo sacaro otomatis.
Dalam kasus tu, kok amuah Angku dapek mamindahkan ataupun manggabuangkan laman sacaro manual.",
'movearticle' => 'Pindahkan laman',
+'movenologin' => 'Alun masuak log',
+'movenologintext' => 'Sanak musti pangguno tadafta dan [[Special:UserLogin|masuak lo]] untuak mamindahan laman.',
+'movenotallowed' => 'Sanak indak ado izin untuak mamindahan laman.',
+'movenotallowedfile' => 'Sanak indak ado izin untuak mamindahan berkas.',
+'cant-move-user-page' => 'Sanak indak ado izin untuak mamindahan laman pangguno (bagian dari sub laman).',
+'cant-move-to-user-page' => 'Sanak indak ado izin untuak mamindahan laman ka laman pangguno (salain ka sub laman pangguno).',
'newtitle' => 'Ka judul baru:',
'move-watch' => 'Pantau laman ko',
-'movepagebtn' => 'Pindahkan laman',
+'movepagebtn' => 'Pindahan laman',
'pagemovedsub' => 'Pamindahan berhasil',
-'movepage-moved' => '\'\'\'"$1" lah dipindahkan ka "$2"\'\'\'',
-'articleexists' => 'Laman dengan namo tu lah ado, atau namo yang awak pilih indak tapek. Silakan pilih namo lain',
-'talkexists' => "'''Laman tersebut berhasil dipindahkan, tapi laman otanyo indak dapek dipindahkan karano lah ado laman ota pado judul yang baru. Silakan digabuang laman ota tu sacaro manual.'''",
-'movedto' => 'dipindahkan ka',
-'movetalk' => 'Pindahkan laman ota yang takaik',
-'movelogpage' => 'Log pemindahan',
+'movepage-moved' => '\'\'\'"$1" lah dipindahan ka "$2"\'\'\'',
+'movepage-moved-redirect' => 'Pangaliahan lah dibuek.',
+'movepage-moved-noredirect' => 'Pangaliahan indak dibuek.',
+'articleexists' => 'Laman nan banamo tu lah ado, atau namo nan Sanak piliah indak tapek.
+Silakan piliah namo lain.',
+'cantmove-titleprotected' => 'Sanak indak dapek mamindahan laman kasiko dek judul barunyo kanai linduang dari dibuek',
+'talkexists' => "'''Laman tasabuik barasil dipindahan, tapi laman rundiangnyo indak dapek dipindahan dek lah ado laman rundiang disinan. Silakan digabuang laman rundiang tu sacaro manual.'''",
+'movedto' => 'pindahan ka',
+'movetalk' => 'Pindahan laman rundiang nan takaik',
+'move-subpages' => 'Pindahan sub laman (sampai $1)',
+'move-talk-subpages' => 'Pindahan sub laman dari laman rundiang (sampai $1)',
+'movelogpage' => 'Log pamindahan',
'movereason' => 'Alasan:',
'revertmove' => 'baliakkan',
'thumbnail-more' => 'Pagadang',
'thumbnail_error' => 'Gagal mambuek miniatur: $1',
+# Special:Import
+'importstart' => 'Mangimpor laman...',
+
+# Import log
+'import-logentry-upload' => 'mangimpor [[$1]] malalui pamuekan berkas',
+
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Laman pangguno Sanak',
'tooltip-pt-anonuserpage' => 'Laman pangguno IP Sanak',
'markaspatrolledtext' => 'Tandoi laman ko lah dipatroli',
'markedaspatrolled' => 'Tandoi lah dipatroli',
+# Patrol log
+'patrol-log-page' => 'Log patroli',
+'log-show-hide-patrol' => '$1 log patroli',
+
# Browsing diffs
'previousdiff' => '← Revisi sabalunnyo',
'nextdiff' => 'Revisi salanjuiknyo →',
'monthsall' => 'sadonyo',
'limitall' => 'sadonyo',
+# Watchlist editor
+'watchlistedit-raw-titles' => 'Judul:',
+'watchlistedit-raw-submit' => 'Pabarui pantauan',
+'watchlistedit-raw-done' => 'Pantauan Sanak lah dipabarui',
+'watchlistedit-raw-added' => '{{PLURAL:$1|$1 judul lah}} ditambahan:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|$1 judul lah}} dibuang:',
+
# Watchlist editing tools
-'watchlisttools-view' => 'Tampilkan parubahan takaik',
-'watchlisttools-edit' => 'Tampilkan sarato suntiang dafta pantau',
+'watchlisttools-view' => 'Tunjuakan parubahan takaik',
+'watchlisttools-edit' => 'Tunjuakan sarato suntiang dafta pantau',
'watchlisttools-raw' => 'Suntiang pantauan mantah',
# Signatures
'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|maota]])',
# Core parser functions
+'unknown_extension_tag' => 'Tag ekstensi "$1" indak tau',
'duplicate-defaultsort' => '\'\'\'Peringatan:\'\'\' Kunci panguruitan default "$2" sabalunnyo mangabaikan kunci panguruitan default "$1".',
# Special:Version
'version-license' => 'Lisensi',
'version-poweredby-credits' => "Wiki ko didukuang jo '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'lainnyo',
+'version-software' => 'Parangkaik lunak tapasang',
+'version-software-product' => 'Produk',
'version-software-version' => 'Versi',
'version-entrypoints-header-url' => 'URL',
'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Artikel path]',
'loginlanguagelabel' => 'Јазик: $1',
'suspicious-userlogout' => 'Вашето барање за одјава е одбиено бидејќи се чини дека е испратено од расипан прелистувач или кеширачки застапник (proxy).',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Непозната грешка во функцијата mail() на PHP',
'user-mail-no-addy' => 'Се обидовте да испратите порака без да внесете адреса',
'user-mail-no-body' => 'Се обидовте да испратите писмо кое е празно или со неразумно куса содржина.',
'prefs-displaywatchlist' => 'Нагодувања на приказот',
'prefs-diffs' => 'Разлики',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Исправно',
'email-address-validity-invalid' => 'Се бара исправна адреса!',
'listgrouprights-addgroup-self-all' => 'Може да ги додаде сите групи на сопствената корисничка сметка',
'listgrouprights-removegroup-self-all' => 'Може да ги избрише сите групи од сопствената корисничка сметка',
-# E-mail user
+# Email user
'mailnologin' => 'Нема адреса за праќање',
'mailnologintext' => 'Мора да сте [[Special:UserLogin|најавени]] и да имате важечка е-поштенска адреса во вашите [[Special:Preferences|нагодувања]] за да може да праќате е-пошта до други корисници.',
'emailuser' => 'Пиши е-пошта на корисникот',
'monthsall' => 'сите',
'limitall' => 'сите',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Потврда на е-поштенска адреса',
'confirmemail_noemail' => 'Немате наведено важечка е-поштенска адреса во вашите [[Special:Preferences|нагодувања]].',
'confirmemail_text' => '{{SITENAME}} бара да ја потврдите вашата е-поштенска адреса пред да ги користите можностите за е-пошта.
'loginlanguagelabel' => 'ഭാഷ: $1',
'suspicious-userlogout' => 'ലോഗൗട്ട് ചെയ്യാനുള്ള താങ്കളുടെ അഭ്യർത്ഥന നിരസിച്ചിരിക്കുന്നു, കാരണം അത് തകർന്ന ബ്രൗസറിൽ നിന്നോ കാഷിങ് പ്രോക്സിയിൽ നിന്നോ ഉണ്ടായതുപോലെ അനുഭവപ്പെടുന്നു.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'പി.എച്ച്.പി.യുടെ main() ഫങ്ഷനിൽ അപരിചിതമായ പിഴവ്',
'user-mail-no-addy' => 'ഇമെയിൽ വിലാസം ഇല്ലാതെയാണ് ഇമെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചത്',
'user-mail-no-body' => 'ശൂന്യമായതോ അസാമാന്യമായി ചെറുതോ ആയ ഉള്ളടക്കമുള്ള ഇമെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചു.',
# Preferences page
'preferences' => 'ക്രമീകരണങ്ങൾ',
'mypreferences' => 'ക്രമീകരണങ്ങൾ',
-'prefs-edits' => 'à´\86à´\95àµ\86 തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ൾ:',
+'prefs-edits' => 'ആകെ തിരുത്തുകൾ:',
'prefsnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
'prefsnologintext' => 'ഉപയോക്തൃക്രമീകരണങ്ങൾ മാറ്റാൻ താങ്കൾ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ലോഗിൻ]</span> ചെയ്തിരിക്കണം.',
'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
'prefs-displaywatchlist' => 'പ്രദർശന ഐച്ഛികങ്ങൾ',
'prefs-diffs' => 'വ്യത്യാസങ്ങൾ',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'സാധുതയുള്ളതെന്ന് തോന്നുന്നു',
'email-address-validity-invalid' => 'സാധുതയുള്ള വിലാസം ആവശ്യമാണ്!',
'listgrouprights-addgroup-self-all' => 'എല്ലാ സംഘങ്ങളേയും സ്വന്തം അംഗത്വത്തിൽ ചേർക്കുക',
'listgrouprights-removegroup-self-all' => 'സ്വന്തം അംഗത്വത്തിൽ നിന്ന് എല്ലാ സംഘങ്ങളേയും നീക്കംചെയ്യുക',
-# E-mail user
+# Email user
'mailnologin' => 'അയയ്ക്കാനുള്ള വിലാസം ലഭ്യമല്ല',
'mailnologintext' => 'മറ്റ് ഉപയോക്താക്കൾക്കു ഇമെയിലയക്കുവാൻ താങ്കൾ [[Special:UserLogin|ലോഗിൻ]] ചെയ്തിരിക്കുകയും, സാധുവായ ഒരു ഇമെയിൽ വിലാസം താങ്കളുടെ [[Special:Preferences|ക്രമീകരണങ്ങൾ]] താളിൽ സജ്ജീകരിച്ചിരിക്കുകയും വേണം.',
'emailuser' => 'ഈ ഉപയോക്താവിനു ഇമെയിൽ അയക്കുക',
'pageinfo-title' => '"$1" എന്ന താളിന്റെ വിവരങ്ങൾ',
'pageinfo-not-current' => 'ക്ഷമിക്കുക, പഴയ നാൾപ്പതിപ്പുകളിൽ ഈ വിവരം പ്രദർശിപ്പിക്കുക അസാദ്ധ്യമാണ്.',
'pageinfo-header-basic' => 'അടിസ്ഥാനവിവരങ്ങൾ',
-'pageinfo-header-edits' => 'തിരàµ\81à´¤àµ\8dതൽà´\9aà´°à´¿à´¤àµ\8dà´°à´\82',
+'pageinfo-header-edits' => 'തിരàµ\81à´¤àµ\8dà´¤àµ\81à´\95à´³àµ\81à´\9fàµ\86 നാൾവഴി',
'pageinfo-header-restrictions' => 'സംരക്ഷണം',
'pageinfo-header-properties' => 'താളിന്റെ ഗുണഗണങ്ങൾ',
'pageinfo-display-title' => 'പ്രദർശിപ്പിക്കേണ്ട തലക്കെട്ട്',
'monthsall' => 'എല്ലാം',
'limitall' => 'എല്ലാം',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ഇ-മെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
'confirmemail_noemail' => '[[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളുടെ കൂടെ]] സാധുവായൊരു ഇ-മെയിൽ വിലാസം സജ്ജീകരിച്ചിട്ടില്ല.',
'confirmemail_text' => '{{SITENAME}} സംരംഭത്തിൽ ഇ-മെയിൽ സൗകര്യം ഉപയോഗിക്കണമെങ്കിൽ താങ്കൾ താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിന്റെ സാധുത തെളിയിച്ചിരിക്കണം. താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് സ്ഥിരീകരണ മെയിൽ അയക്കുവാൻ താഴെയുള്ള ബട്ടൺ അമർത്തുക. താങ്കൾക്ക് അയക്കുന്ന ഇ-മെയിലിൽ ഒരു സ്ഥിരീകരണ കോഡ് ഉണ്ട്. ആ കോഡിൽ അമർത്തിയാൽ താങ്കളുടെ വിലാസത്തിന്റെ സാധുത തെളിയിക്കപ്പെടും.',
'duration-centuries' => '{{PLURAL:$1|ഒരു നൂറ്റാണ്ട്|$1 നൂറ്റാണ്ട്}}',
'duration-millennia' => '{{PLURAL:$1|ഒരു സഹസ്രാബ്ദം|$1 സഹസ്രാബ്ദം}}',
+# Unknown messages
+'pageswithprop-submit' => 'പോകൂ',
);
'loginlanguagelabel' => 'Bahasa: $1',
'suspicious-userlogout' => 'Permintaan anda untuk log keluar ditolak kerana ia kelihatan seperti dihantar oleh pelayar rosak atau proksi pengagregatan.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Ralat tak diketahui dalam fungsi mail() PHP',
'user-mail-no-addy' => 'E-eml cuba dihantar tanpa alamat e-mel',
'user-mail-no-body' => 'Anda telah cuba menghantar e-mel dengan isi yang kosong atau terlampau ringkas.',
'prefs-displaywatchlist' => 'Pilihan paparan',
'prefs-diffs' => 'Beza',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Alamat e-mel adalah sah',
'email-address-validity-invalid' => 'Sila masukkan alamat e-mel yang sah',
Pautan ini sepatutnya ditujukan ke topik yang sepatutnya.<br />
Sesebuah laman dianggap sebagai laman penyahkekaburan jika ia menggunakan templat yang dipaut dari [[MediaWiki:Disambiguationspage]]",
+'pageswithprop' => 'Halaman dengan sifat halaman',
+'pageswithprop-text' => 'Halaman ini menyenaraikan halaman-halaman yang menggunakan sifat halaman yang tertentu.',
+'pageswithprop-prop' => 'Nama sifat:',
+
'doubleredirects' => 'Lencongan berganda',
'doubleredirectstext' => 'Yang berikut ialah senarai laman yang melencong ke laman lencongan lain. Setiap baris mengandungi pautan ke laman lencongan pertama dan kedua, serta baris pertama bagi teks lencongan kedua, lazimnya merupakan laman sasaran "sebenar", yang sepatutnya ditujui oleh lencongan pertama.
Masukan yang <del>dipotong</del> telah diselesaikan.',
'listgrouprights-addgroup-self-all' => 'Menyertai semua kumpulan',
'listgrouprights-removegroup-self-all' => 'Keluar daripada semua kumpulan',
-# E-mail user
+# Email user
'mailnologin' => 'Tiada alamat e-mel',
'mailnologintext' => 'Anda perlu [[Special:UserLogin|log masuk]]
terlebih dahulu dan mempunyai alamat e-mel yang sah dalam
'monthsall' => 'semua',
'limitall' => 'semua',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Sahkan alamat e-mel',
'confirmemail_noemail' => 'Anda belum menetapkan alamat e-mel yang sah dalam [[Special:Preferences|laman keutamaan]] anda.',
'confirmemail_text' => '{{SITENAME}} menghendaki supaya anda mengesahkan alamat e-mel anda sebelum menggunakan ciri-ciri e-mel.
'duration-centuries' => '$1 abad',
'duration-millennia' => '$1 alaf',
+# Unknown messages
+'pageswithprop-legend' => 'Halaman dengan sifat halaman',
+'pageswithprop-submit' => 'Pergi',
);
'loginlanguagelabel' => 'Språk: $1',
'suspicious-userlogout' => 'Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Ukjent feil i PHPs mail()-funksjon',
'user-mail-no-addy' => 'Forsøkte å sende e-post uten e-postadresse',
'user-mail-no-body' => 'Prøvde å sende e-post med tom eller for kort brødtekst.',
'prefs-displaywatchlist' => 'Visningsalternativer',
'prefs-diffs' => 'Forskjeller',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-postadressen ser gyldig ut',
'email-address-validity-invalid' => 'Skriv inn en gyldig e-postadresse',
De burde i stedet lenke til en passende innholdsside.<br />
En side anses om en pekerside om den inneholder en mal som det lenkes til fra [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Sider med sideverdi',
+
'doubleredirects' => 'Doble omdirigeringer',
'doubleredirectstext' => 'Denne siden lister opp de sidene som er omdirigeringer til andre omdirigeringssider.
Hver rad inneholder lenker til første og andre omdirigering, samt målet for den andre omdirigeringen, som vanligvis er den «virkelige» målsiden som den første omdirigeringen burde peke til.
'listgrouprights-addgroup-self-all' => 'Kan legge til alle grupper til egen konto',
'listgrouprights-removegroup-self-all' => 'Kan ta bort alle grupper fra egen konto',
-# E-mail user
+# Email user
'mailnologin' => 'Ingen avsenderadresse',
'mailnologintext' => 'Du må være [[Special:UserLogin|logget inn]] og ha en gyldig e-postadresse satt i [[Special:Preferences|brukerinnstillingene]] for å sende e-post til andre brukere.',
'emailuser' => 'E-post til denne brukeren',
Om du velger å ikke gjøre det, sjekk at flyttingen ikke fører til [[Special:DoubleRedirects|doble]] eller [[Special:BrokenRedirects|ødelagte omdirigeringer]].
Du er ansvarlig for at lenker fortsetter å peke til de sidene de er ment å peke til.
-Legg merke til at siden '''ikke''' kan flyttes hvis det allerede finnes en side med den nye tittelen, med mindre den er tom eller er en omdirigeringsside uten historikk.
+Legg merke til at siden '''ikke''' kan flyttes hvis det allerede finnes en side med den nye tittelen, med mindre sistnevnte er tom eller er en omdirigeringsside uten historikk.
Det betyr at du kan flytte en side tilbake dit den kom fra hvis du gjør en feil, og du kan ikke overskrive eksisterende sider ved et uhell.
'''Advarsel!'''
'monthsall' => 'alle',
'limitall' => 'alle',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Bekreft e-postadresse',
'confirmemail_noemail' => 'Du har ikke oppgitt en gyldig e-postadresse i [[Special:Preferences|innstillingene dine]].',
'confirmemail_text' => 'Du må bekrefte e-postadressen din før du kan benytte deg av e-posttjenester på {{SITENAME}}. Trykk på knappen under for å sende en bekreftelsesmelding til e-postadressen din. Meldingen vil inneholde en lenke med en kode; følg lenken for å bekrefte at e-postadressen er gyldig.',
'duration-centuries' => '$1 {{PLURAL:$1|århundre|århundrer}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
+# Unknown messages
+'pageswithprop-legend' => 'Sider med en sideverdi',
);
'loginlanguagelabel' => 'भाषा: $1',
'suspicious-userlogout' => 'तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'PHP मेल() क्रियामा अज्ञात त्रुटि',
'user-mail-no-addy' => 'इमेल ठेगाना बिना नै इमेल पठाउन खोजिएको थियो।',
'prefs-displaywatchlist' => 'प्रदर्शन विकल्पहरू',
'prefs-diffs' => 'diffs(भिन्नता)',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ई मेल ठेगाना मान्य भएको प्रतीत हुन्छ',
'email-address-validity-invalid' => 'मान्य ईमेल ठेगाना दिनुहोस्',
'listgrouprights-removegroup-self' => '{{PLURAL:$2|समूह|समूहहरु}} यस $1 खाताबाट हटाउने',
'listgrouprights-addgroup-self-all' => 'सबै समूहहरु निजी खातामा थप्ने',
-# E-mail user
+# Email user
'mailnologin' => 'ईमेल पठाउने ठेगाना नै भएन ।',
'mailnologintext' => 'तपाईले अरु प्रयोगकर्ताहरुलाई ईमेल पठाउनको लागि आफु पहिले [[Special:UserLogin|प्रवेश(लगइन)गरेको]] हुनुपर्छ र [[Special:Preferences|आफ्नो रोजाइहरुमा]] एउटा वैध ईमेल ठेगाना भएको हुनुपर्छ।',
'emailuser' => 'यो प्रयोगकर्तालाई ई-मेल पठाउनुहोस्',
'monthsall' => 'सबै',
'limitall' => 'सबै',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'इमेल ठेगाना पक्का गर्नुहोस्',
'confirmemail_noemail' => 'तपाईको प्रयोगकर्ता [[Special:Preferences|अभिरुचीमा]] मान्य इमेल ठेगाना राखीएको छैन ।',
'confirmemail_pending' => 'तपाईको इमेलमा प्रपाणिकरण कोड पहिले नै पठाइ सकिएको छ;
'loginlanguagelabel' => 'Språk: $1',
'suspicious-userlogout' => 'Førespurnaden din om å logge ut vart nekta fordi han såg ut til å vere sendt av ein øydelagt nettlesar eller mellomtenar.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Ukjend feil i PHPs mail()-funksjon',
'user-mail-no-addy' => '↓Prøvde å senda e-post utan e-postadresse',
'user-mail-no-body' => 'Freista å senda e-post med tom eller urimeleg stutt brødtekst.',
'showpreview' => 'Førehandsvis',
'showlivepreview' => 'Levande førehandsvising',
'showdiff' => 'Vis skilnader',
-'anoneditwarning' => "'''Åtvaring:''' Du er ikkje innlogga. IP-adressa di vert lagra i historikken for sida.",
+'anoneditwarning' => "'''Åtvaring:''' Du er ikkje innlogga.
+IP-adressa di vert lagra i endringshistorikken til sida.",
'anonpreviewwarning' => "''Du er ikkje innlogga. Lagrar du vil IP-adressa di verta førd opp i endringshistorikken til denne sida.''",
'missingsummary' => "'''Påminning:''' Du har ikkje skrive noko endringssamandrag. Dersom du trykkjer «Lagre» ein gong til, vert endringa di lagra utan.",
'missingcommenttext' => 'Ver venleg og skriv ein kommentar nedanfor.',
'prefs-i18n' => 'Internasjonalisering',
'prefs-signature' => 'Signatur',
'prefs-dateformat' => 'Datoformat',
-'prefs-timeoffset' => 'Tidsforskuving',
+'prefs-timeoffset' => 'Tidforskuving',
'prefs-advancedediting' => 'Avanserte val',
'prefs-advancedrc' => 'Avanserte val',
'prefs-advancedrendering' => 'Avanserte val',
'prefs-displaywatchlist' => 'Val for vising',
'prefs-diffs' => 'Skilnader',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-postadressa ser ut til å vera gyldig',
'email-address-validity-invalid' => 'Skriv inn ei gyldig e-postaddresse.',
Dei bør kan henda lenkja til ei meir passande side i staden.<br />
Ei side vert handsama som ei fleirtydingsside om ho nyttar ein mal som er lenkja til frå [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Sider med ein sideeigenskap',
+'pageswithprop-text' => 'Denne sida listar opp sider som nyttar ein viss sideeigenskap.',
+'pageswithprop-prop' => 'Namn på eigenskap:',
+
'doubleredirects' => 'Doble omdirigeringar',
'doubleredirectstext' => 'Kvar line inneheld lenkjer til den første og den andre omdirigeringa, og den første lina frå den andre omdirigeringsteksten. Det gjev som regel den «rette» målartikkelen, som den første omdirigeringa skulle ha peikt på. <del>Overstrykne</del> liner har vorte retta på.',
'double-redirect-fixed-move' => '[[$1]] har blitt flytta, og er no ei omdirigering til [[$2]]',
'listgrouprights-addgroup-self-all' => 'Kan leggja til alle gruppene til sin eigen konto',
'listgrouprights-removegroup-self-all' => 'Kan ta vekk alle gruppene frå sin eigen konto',
-# E-mail user
+# Email user
'mailnologin' => 'Inga avsendaradresse',
'mailnologintext' => 'Du lyt vera [[Special:UserLogin|innlogga]] og ha ei gyldig e-postadresse sett i [[Special:Preferences|brukarinnstillingane]] for å sende e-post åt andre brukarar.',
'emailuser' => 'Send e-post åt denne brukaren',
'monthsall' => 'alle',
'limitall' => 'alle',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Stadfest e-postadresse',
'confirmemail_noemail' => 'Du har ikkje gjeve ei gyldig e-postadresse i [[Special:Preferences|innstillingane dine]].',
'confirmemail_text' => '{{SITENAME}} krev at du stadfester e-postadressa di
'duration-centuries' => '$1 {{PLURAL:$1|hundreår|hundreår}}',
'duration-millennia' => '$1 {{PLURAL:$1|tusenår|tusenår}}',
+# Unknown messages
+'pageswithprop-legend' => 'Sider med ein sideeigenskap',
+'pageswithprop-submit' => 'Gå',
);
'loginlanguagelabel' => 'Lenga: $1',
'suspicious-userlogout' => 'Vòstra demanda de desconnexion es estada refusada perque sembla qu’es estada mandada per un navigador copat o la mesa en escondedor d’un proxy.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Error desconeguda dins la foncion mail() de PHP.',
# Change password dialog
'prefs-displaywatchlist' => "Opcions d'afichatge",
'prefs-diffs' => 'Diferéncias',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "L'adreça electronica sembla bona",
'email-address-validity-invalid' => 'entrar una adreça electronica valida',
'listgrouprights-addgroup-self-all' => 'Se pòt apondre totes los gropes a son compte pròpri',
'listgrouprights-removegroup-self-all' => 'Se pòt levar totes los gropes de son compte pròpri',
-# E-mail user
+# Email user
'mailnologin' => "Pas d'adreça",
'mailnologintext' => 'Vos cal èsser [[Special:UserLogin|connectat(ada)]]
e aver indicat una adreça electronica valida dins vòstras [[Special:Preferences|preferéncias]]
'monthsall' => 'totes',
'limitall' => 'totes',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Confirmar l'adreça de corrièr electronic",
'confirmemail_noemail' => 'L’adreça de corrièr electronic configurada dins vòstras [[Special:Preferences|preferéncias]] es pas valida.',
'confirmemail_text' => '{{SITENAME}} necessita la verificacion de vòstra adreça de corrièr electronic abans de poder utilizar tota foncion de messatjariá. Utilizatz lo boton çaijós per mandar un corrièr electronic de confirmacion a vòstra adreça. Lo corrièr contendrà un ligam contenent un còde, cargatz aqueste ligam dins vòstre navigador per validar vòstra adreça.',
'november-gen' => 'ନଭେମ୍ବର',
'december-gen' => 'ଡିସେମ୍ବର',
'jan' => 'ଜାନୁଆରୀ',
-'feb' => 'ଫà\87ବà\8dରà\81ଆରୀ',
+'feb' => 'ଫà\87ବà\83ଆରୀ',
'mar' => 'ମାର୍ଚ୍ଚ',
'apr' => 'ଅପ୍ରେଲ',
'may' => 'ମଇ',
'feedlinks' => 'ଫିଡ଼:',
'feed-invalid' => 'ଅଚଳ ସବସ୍କ୍ରିପସନ ଫିଡ଼ ପ୍ରକାର ।',
'feed-unavailable' => 'ସିଣ୍ଡିକେସନ ଫିଡ଼ସବୁ ମିଳୁନାହିଁ',
-'site-rss-feed' => '$1 à¬\86ରà\87ସà\87ସ ଫିଡ଼',
+'site-rss-feed' => '$1 à¬\86ରà¬\8fସà¬\8fସ ଫିଡ଼',
'site-atom-feed' => '$1 ଆଟମ ଫିଡ଼',
'page-rss-feed' => '$1 ଟି ଆରେସେସ ଫିଡ଼',
'page-atom-feed' => '$1 ଟି ଆଟମ ଫିଡ଼',
'filereadonlyerror' => 'ଫାଇଲ ଧାରକ "$2"ଟି ଖାଲି ପଢିବା ହେବାଭଳି ରହିଥିବା ହେତୁ ଏଥିରେ ଥିବା $1 ପାଇଲଟିକୁ ବଦଳା ଯାଇପାରିବ ନାହିଁ ।
ଯେଉଁ ପରିଚ୍ଛା ଏହାକୁ ବନ୍ଦ କରିଛନ୍ତି ସେ ଏହି ବିବରଣୀ ଦେଇଛନ୍ତି: "$3"',
-'invalidtitle-knownnamespace' => '"$2" ନà\87ମà\8dସà\8dପà\87ସ à¬\8fବà¬\82 "$3" ଲà\87à¬\96ାଥିବା à¬\85ବà\88ଧ ଶà\80ରà\8dଷà¬\95 ।',
+'invalidtitle-knownnamespace' => '"$2" ନେମସ୍ପେସ ଏବଂ "$3" ଲେଖାଥିବା ଅବୈଧ ଶୀର୍ଷକ ।',
'invalidtitle-unknownnamespace' => '"$1" ନେମ୍ସ୍ପେସ ଏବଂ "$2" ଲେଖାଥିବା ଅବୈଧ ଶୀର୍ଷକ ।',
'exception-nologin' => 'ଲଗ ଇନ କରିନାହାନ୍ତି',
'exception-nologin-text' => 'ଏହା କରିବାକୁ ହେଲେ ଆପଣଙ୍କୁ ଏହି ଉଇକିରେ ଲଗଇନ କରିବାକୁ ପଡିବ ।',
ଯଦି ଭୁଲରେ ଏହି ଖାତାଟି ତିଆରି କରାଯାଇଥାଏ, ତେବେ ଏହି ସୂଚନାଟିକୁ ଅଣଦେଖା କରିବେ ।',
'usernamehasherror' => 'ଇଉଜର ନାମରେ ହାସ ଅକ୍ଷର (hash characters) ରହି ପାରିବନାହିଁ',
'login-throttled' => 'ଆପଣ ବହୁ ଥର ଲଗ ଇନ କରିବାର ଉଦ୍ୟମ କରିଅଛନ୍ତି ।
-ଦୟାକରି ଆଉଥରେ ଚେଷ୍ଟା କରିବା ଆଗରୁ କିଛି କାଳ ଅପେକ୍ଷ କରନ୍ତୁ ।',
+ଦୟାକରି ଆଉଥରେ ଚେଷ୍ଟା କରିବା ଆଗରୁ କିଛି କାଳ ଅପେକ୍ଷା କରନ୍ତୁ ।',
'login-abort-generic' => 'ଆପଣଙ୍କ ଲଗ ଇନ ଅସଫଳ ହେଲା - ନାକଚ କରିଦିଆଗଲା',
'loginlanguagelabel' => 'ଭାଷା: $1',
'suspicious-userlogout' => 'ଲଗ ଆଉଟ କରିବା ନିମନ୍ତେ ଆପଣ କରିଥିବା ଆବେଦନ ନାକଚ କରିଦିଆଗଲା କାରଣ ଲାଗୁଅଛି ଯେ ଏହା ଏକ ଅସ୍ଥିର ବ୍ରାଉଜରରୁ ପଠାଯାଇଅଛି ଅବା ପ୍ରକ୍ସି ଧରାଯାଇଅଛି ।',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'PHP ର ମେଲ() କାମରେ ଅଜଣା ଅସୁବିଧା ।',
'user-mail-no-addy' => 'ଏକ ଇ-ମେଲ ଠିକଣା ବିନା ଇ-ମେଲ ପଠାଇବାକୁ ଚେଷ୍ଟା କଲୁଁ ।',
'user-mail-no-body' => 'ଏକ ଖାଲି କିମ୍ବା ଅଦରକାରୀ ଛୋଟ ଲେଖା ଥିବା ମେଲ ପଠେଇବାକୁ ଚେଷ୍ଟା କରିଥିଲେ',
'newpassword' => 'ନୂଆ ପାସୱାର୍ଡ଼:',
'retypenew' => 'ପାସୱାର୍ଡ଼ ଆଉଥରେ ଦିଅନ୍ତୁ:',
'resetpass_submit' => 'ପାସୱାର୍ଡ଼ଟିଏ ଦେଇ ଲଗ ଇନ କରନ୍ତୁ',
-'resetpass_success' => 'à¬\86ପଣà¬\99à\8dà¬\95 ପାସବାର୍ଡ଼ଟି ବଦଳାଇ ଦିଆଗଲା !
+'resetpass_success' => 'à¬\86ପଣà¬\99à\8dà¬\95 ପାସà±ାର୍ଡ଼ଟି ବଦଳାଇ ଦିଆଗଲା !
ଏବେ ଲଗ ଇନ କରୁଅଛୁଁ...',
-'resetpass_forbidden' => 'ପାସବାର୍ଡ଼ମାନ ବଦଳା ଯାଇପାରିବ ନାହିଁ',
+'resetpass_forbidden' => 'ପାସà±ାର୍ଡ଼ମାନ ବଦଳା ଯାଇପାରିବ ନାହିଁ',
'resetpass-no-info' => 'ଏହି ପୃଷ୍ଠାଟିକୁ ସିଧା ଖୋଲିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଲଗ ଇନ କରିବାକୁ ପଡ଼ିବ ।',
'resetpass-submit-loggedin' => 'ପାସୱାର୍ଡ଼ ବଦଳାନ୍ତୁ',
'resetpass-submit-cancel' => 'ନାକଚ',
'passwordreset' => 'ପାସୱାର୍ଡ଼ ପୁନସ୍ଥାପନ କରନ୍ତୁ',
'passwordreset-text' => 'ନିଜ ଖାତାର ସବିଶେଷ ବିବରଣୀ ଏକ ଇ-ମେଲରେ ପାଇବା ପାଇଁ ଏହି ଆବେଦନ ପତ୍ରଟି ପୂରଣ କରନ୍ତୁ ।',
'passwordreset-legend' => 'ପାସୱାର୍ଡ଼ ପୁନସ୍ଥାପନ କରନ୍ତୁ',
-'passwordreset-disabled' => 'ପାସବାର୍ଡ଼କୁ ପୁରାପୁରି ମୂଳକୁ ଫେରାଇବା ଏହି ଉଇକିରେ ଅଚଳ କରାଯାଇଅଛି ।',
+'passwordreset-disabled' => 'ପାସà±ାର୍ଡ଼କୁ ପୁରାପୁରି ମୂଳକୁ ଫେରାଇବା ଏହି ଉଇକିରେ ଅଚଳ କରାଯାଇଅଛି ।',
'passwordreset-pretext' => '{{PLURAL:$1||ତଳେ ଥିବା ତଥ୍ୟସମୂହରୁ କୌଣସି ଗୋଟିଏ ଦିଅନ୍ତୁ}}',
'passwordreset-username' => 'ବ୍ୟବହାରକାରୀଙ୍କ ନାମ:',
'passwordreset-domain' => 'ଡୋମେନ:',
'loginreqtitle' => 'ଲଗ ଇନ ଲୋଡ଼ା',
'loginreqlink' => 'ଲଗଇନ',
'loginreqpagetext' => 'ବାକି ପୃଷ୍ଠାମାନ ଦେଖିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ $1 କରିବାକୁ ପଡ଼ିବ ।',
-'accmailtitle' => 'ପାସବାର୍ଡ଼ଟି ପଠାଇ ଦିଆଗଲା ।',
-'accmailtext' => "[[User talk:$1|$1]]à¬\99à\8dà¬\95 ନିମନà\8dତà\87 à¬\8fà¬\95 ଯାହିତାହି ପାସବାର୍ଡ଼ $2ଙ୍କ ନିକଟକୁ ପଠାଗଲା ।
+'accmailtitle' => 'ପାସà±ାର୍ଡ଼ଟି ପଠାଇ ଦିଆଗଲା ।',
+'accmailtext' => "[[User talk:$1|$1]]à¬\99à\8dà¬\95 ନିମନà\8dତà\87 à¬\8fà¬\95 ଯାହିତାହି ପାସà±ାର୍ଡ଼ $2ଙ୍କ ନିକଟକୁ ପଠାଗଲା ।
-à¬\8fହି ପାସବାରà\8dଡ଼à¬\9fି ''[[Special:ChangePassword|ପାସବାରà\8dଡ଼ ବଦଳାଇବା]]'' ପୃଷ୍ଠାରେ ଲଗଇନ କରି କରାଯାଇପାରିବ ।",
+à¬\8fହି ପାସà±à¬¾à¬°à\8dଡ଼à¬\9fି ''[[Special:ChangePassword|ପାସà±à¬¾à¬°à\8dଡ଼ ବଦଳାଇବା]]'' ପୃଷ୍ଠାରେ ଲଗଇନ କରି କରାଯାଇପାରିବ ।",
'newarticle' => '(ନୁଆ)',
'newarticletext' => "ଆପଣ ଖୋଲିଥିବା ଲିଙ୍କଟିରେ ଏଯାଏଁ କିଛିବି ପୃଷ୍ଠା ନାହିଁ ।
ଏହି ପୃଷ୍ଠାଟିକୁ ତିଆରି କରିବା ପାଇଁ ତଳ ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ (ଅଧିକ ଜାଣିବା ପାଇଁ [[{{MediaWiki:Helppage}}|ସାହାଯ୍ୟ ପୃଷ୍ଠା]] ଦେଖନ୍ତୁ) ।
ଯଦି ଆପଣ ଏଠାକୁ ଭୁଲରେ ଆସିଯାଇଥାନ୍ତି ତେବେ ଆପଣଙ୍କ ବ୍ରାଉଜରର '''Back''' ପତିଟି ଦବାନ୍ତୁ ।",
'anontalkpagetext' => "----''ଏହା ଏକ IP ଖାତା ଖୋଲିନଥିବା ବା ଖାତା ବ୍ୟବହାର କରିନଥିବା ଜଣେ ବେନାମି ସଭ୍ୟଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠା ।
-ତà\87ଣà\81 à¬\86ମà\8dà¬à\87 ସà¬\99à\8dà¬\96à\8dà\9fା ଦà\87à¬\87 ସà\82à¬\9aିତ IP ଠିକଣା ଦେଇ ତାହାଙ୍କୁ ଜାଣିବା ।
+ତà\87ଣà\81 à¬\86ମà\8dà¬à\87 ସà¬\82à¬\96à\8dà\9fା ଦà\87à¬\87 ସà\82à¬\9aà\80ତ IP ଠିକଣା ଦେଇ ତାହାଙ୍କୁ ଜାଣିବା ।
ଏହି ପ୍ରକାରର IP ଠିକଣା ବହୁ ସଭ୍ୟଙ୍କ ଦେଇ ବଣ୍ଟା ବି ଯାଇପାରେ ।
ଯଦି ଆପଣ ଜଣେ ଅଜଣା ସଭ୍ୟ ଓ ଭାବୁଛନ୍ତି ଇଆଡୁ ସିଆଡୁ ମତାମତ ସବୁ ଆପଣଙ୍କ ଉପରେ ଦିଆଯାଇଛି ତେବେ ଦୟାକରି [[Special:UserLogin/signup|ନୂଆ ଖାତାଟିଏ ଖୋଲନ୍ତୁ]] କିମ୍ବା [[Special:UserLogin|ଆଗରୁ ଥିବା ଖାତାରେ ଲଗ ଇନ କରନ୍ତୁ]] ଯାହା ବେନାମି ସଭ୍ୟଙ୍କୁ ନେଇ ଉପୁଜିଥିବା ଦ୍ଵନ୍ଦର ସମାଧାନ କରିବ ।''",
'noarticletext' => 'ଏହି ପୃଷ୍ଠାଟିରେ କିଛି ବି ଲେଖା ନାହିଁ ।
'edit-conflict' => 'ବଦଳାଇବା ଦ୍ଵନ୍ଦ.',
'edit-no-change' => 'ଆପଣଙ୍କ ସମ୍ପାଦନାକୁ ଅଣଦେଖା କରାଗଲା, କାରଣ ଲେଖାରେ କିଛି ବି ବଦଳ କରାଯାଇନଥିଲା ।',
'edit-already-exists' => 'ନୂଆ ପୃଷ୍ଠାଟିଏ ତିଆରି କରିପାରିଲୁଁ ନାହିଁ ।
-à¬\8fହା à¬\85ଗରୁ ଅଛି ।',
+à¬\8fହା à¬\86ଗରୁ ଅଛି ।',
'defaultmessagetext' => 'ଡିଫଲ୍ଟ ମେସେଜ ଲେଖାଗୁଡିକ',
'content-failed-to-parse' => '$1 ପ୍ରକାର ପାଇଁ $2 ଲେଖାକୁ ବର୍ଣ୍ଣନା କରିପାରିଲା ନାହିଁ: $3',
'invalid-content-data' => 'ଅବୈଧ ଆଧାର ତଥ୍ୟ',
'gender-unknown' => 'ଲୁଚାଯାଇଥିବା',
'gender-male' => 'ପୁରୁଷ',
'gender-female' => 'ନାରୀ',
-'prefs-help-gender' => 'à¬\87à¬\9aà\8dà¬\9bାଧିନ: ସଫà\8dà¬\9fବେରରେ ଲିଙ୍ଗବାଚକ ସମ୍ବୋଧନ ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଇଥାଏ ।
+'prefs-help-gender' => 'à¬\87à¬\9aà\8dà¬\9bାଧିନ: ସଫà\8dà¬\9fà±େରରେ ଲିଙ୍ଗବାଚକ ସମ୍ବୋଧନ ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଇଥାଏ ।
ଏହି ତଥ୍ୟ ସାଧାରଣରେ ପ୍ରକାଶିତ ।',
'email' => 'ଇ-ମେଲ',
'prefs-help-realname' => 'ପ୍ରକୃତ ନାମ ଦେବା ଆପଣଙ୍କ ଉପରେ ନିର୍ଭର କରେ ।
ଯଦି ଆପଣ ଏହା ଦିଅନ୍ତି, ତେବେ ଏହା ଆପଣଙ୍କ କାମ ପାଇଁ ଶ୍ରେୟ ଦେବାରେ ବ୍ୟବହାର କରାଯାଇପାରିବ ।',
-'prefs-help-email' => 'à¬\87-ମà\87ଲ ଠିà¬\95ଣାà¬\9fି à¬\87à¬\9aà\8dà¬\9bାଧà\80ନ, à¬\95ିନà\8dତà\81 à¬\86ପଣ ପାସବାରà\8dଡ଼à¬\9fି ଯଦି ଭୁଲିଗଲେ ତାହା ଆଉଥରେ ତିଆରିବା ପାଇଁ ଏହା କାମରେ ଲାଗିବ ।',
+'prefs-help-email' => 'à¬\87-ମà\87ଲ ଠିà¬\95ଣାà¬\9fି à¬\87à¬\9aà\8dà¬\9bାଧà\80ନ, à¬\95ିନà\8dତà\81 à¬\86ପଣ ଯଦି ପାସà±à¬¾à¬°à\8dଡ଼à¬\9fି ଭୁଲିଗଲେ ତାହା ଆଉଥରେ ତିଆରିବା ପାଇଁ ଏହା କାମରେ ଲାଗିବ ।',
'prefs-help-email-others' => 'ଆପଣ ନିଜର ଇ-ମେଲଟିଏ ନିଜର ସଭ୍ୟ ବା ଆଲୋଚନା ପୃଷ୍ଠାରେ ଦେଇ ଅନ୍ୟମାନଙ୍କୁ ଇ-ମେଲରେ ଯୋଗଯୋଗ କରିବାର ସୁବିଧା ଦେଇପାରିବେ ।
ଆପଣଙ୍କୁ କେହି ମେଲ କଲେ ଆପଣଙ୍କ ଇ-ମେଲ ତାହାଙ୍କୁ ଦେଖାଯିବ ନାହିଁ ।',
'prefs-help-email-required' => 'ଇ-ମେଲ ଠିକଣାଟି ଲୋଡ଼ା ।',
'prefs-displaywatchlist' => 'ଦେଖଣା ବିକଳ୍ପ',
'prefs-diffs' => 'ତଫାତସବୁ',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ଇ-ମେଲ ଠିକଣା ବୈଧ ଭଳି ଲାଗୁଅଛି',
'email-address-validity-invalid' => 'ଏକ ସଠିକ ଇ-ମେଲ ଠିକଣା ଦିଅନ୍ତୁ',
'right-deletedtext' => 'ଲିଭାଇ ଦିଆଯାଇଥିବା ଲେଖା ଓ ଲିଭାଇ ଦିଆଯାଇଥିବା ଲେଖା ଭିତରର ସଙ୍କଳନର ବଦଳ ଦେଖିବେ',
'right-browsearchive' => 'ଲିଭାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ଖୋଜିବେ',
'right-undelete' => 'ଲିଭାଇ ଦିଆଯାଇଥିବା ପୃଷ୍ଠାଟିଏକୁ ଫେରାଇ ଆଣିବେ',
-'right-suppressrevision' => 'ପରିà¬\9bାମାନଙ୍କଠାରୁ ଲୁଚାଯାଇଥିବା ସଙ୍କଳନ ପରଖିବେ ଓ ଲେଉଟାଇବେ',
+'right-suppressrevision' => 'ପରିà¬\9aାଳà¬\95ମାନଙ୍କଠାରୁ ଲୁଚାଯାଇଥିବା ସଙ୍କଳନ ପରଖିବେ ଓ ଲେଉଟାଇବେ',
'right-suppressionlog' => 'ବ୍ୟକ୍ତିଗତ ଲଗ ଦେଖାଇବେ',
'right-block' => 'ବାକି ସଭ୍ୟମାନଙ୍କୁ ସମ୍ପାଦନାରୁ ବାରଣ କରିବେ',
'right-blockemail' => 'ଇ-ମେଲ ପଠାଇବାରୁ ଜଣେ ସଭ୍ୟଙ୍କୁ ବାରଣ କରିବେ',
'listgrouprights-addgroup-self-all' => 'ନିଜ ଖାତାରେ ସବୁଯାକ ଗୋଠ ଯୋଡ଼ିବେ',
'listgrouprights-removegroup-self-all' => 'ନିଜ ଖାତାରୁ ସବୁଯାକ ଗୋଠ ହଟାଇଦେବେ',
-# E-mail user
+# Email user
'mailnologin' => 'ଗୋଟିଏ ବି ପଠାଇବା ଠିକଣା ନାହିଁ',
'mailnologintext' => 'ଆପଣ ନିଜ [[Special:Preferences|ପସନ୍ଦସବୁ]]ରେ [[Special:UserLogin|ଲଗ ଇନ]] କରିଥିଲେ ଓ ନିଜର ଏକ ସଚଳ ଇ-ମେଲ ଠିକଣା ଥିଲେ ଯାଇ ବାକି ସବୁ ସଭ୍ୟଙ୍କୁ ଇ-ମେଲ ପଠାଇପାରିବେ ।',
'emailuser' => 'ଏହି ସଭ୍ୟଙ୍କୁ ଇମେଲ କରିବେ',
'monthsall' => 'ସବୁ',
'limitall' => 'ସବୁ',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ଆପଣଙ୍କ ଇମେଲ ଠିକଣା ଟି ଠିକ ବୋଲି ଥୟ କରନ୍ତୁ',
'confirmemail_noemail' => '[[Special:Preferences|ଆପଣଙ୍କ ପସନ୍ଦ]] ଭିତରେ ଏକ ସଠିକ ଇମେଲ ଠିକଣା ଦିଆଯାଇନାହିଁ ।',
'confirmemail_text' => 'ଆପଣା ଇମେଲ ସୁବିଧା ବ୍ୟବହାର କରିବା ଆଗରୁ {{SITENAME}}ରେ ଆପଣଙ୍କର ଇମେଲ ଠିକଣା ଥୟ କରିବାକୁ ପଡ଼ିବ ।
'login-abort-generic' => 'غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو',
'loginlanguagelabel' => 'ژبه: $1',
-# E-mail sending
+# Email sending
'user-mail-no-addy' => 'د يوې برېښليک پتې پرته د برېښليک لېږلو هڅه شوې.',
# Change password dialog
'prefs-displaywatchlist' => 'د ښکارېدنې خوښنې',
'prefs-diffs' => 'توپيرونه',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'برېښليک پته سمه ښکاري',
'email-address-validity-invalid' => 'يوه سمه برېښليک پته وليکۍ',
'listgrouprights-addgroup-self-all' => 'خپل ګڼون کې ټولې ډلې ورګډول',
'listgrouprights-removegroup-self-all' => 'خپل ګڼون نه ټولې ډلې ليري کول',
-# E-mail user
+# Email user
'mailnologin' => 'هېڅ کومه لېږل شوې پته نشته',
'emailuser' => 'کارن ته برېښليک لېږل',
'emailuser-title-target' => 'دې {{GENDER:$1|کارن}} ته برېښليک لېږل',
'monthsall' => 'ټول',
'limitall' => 'ټول',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'د برېښليک پتې پخلی وکړی',
'confirmemail_noemail' => 'تاسې يوه سمه برېښليک پته نه ده ثبته کړې مهرباني وکړی [[Special:Preferences|د کارن غوره توبونه]] مو بدل کړۍ.',
'confirmemail_send' => 'يو تاييدي کوډ لېږل',
'loginlanguagelabel' => 'Língua: $1',
'suspicious-userlogout' => 'O seu pedido para sair foi negado porque parece ter sido enviado por um browser danificado ou por um proxy com cache.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Erro desconhecido na função mail() do PHP',
'user-mail-no-addy' => 'Tentou enviar uma mensagem sem um endereço de correio electrónico',
'prefs-displaywatchlist' => 'Opções de apresentação',
'prefs-diffs' => 'Diferenças',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Parece válido',
'email-address-validity-invalid' => 'Endereço válido necessário!',
'listgrouprights-addgroup-self-all' => 'Adicionar a própria conta a todos os grupos',
'listgrouprights-removegroup-self-all' => 'Remover a própria conta de todos os grupos',
-# E-mail user
+# Email user
'mailnologin' => 'Não existe endereço de envio',
'mailnologintext' => 'Precisa de estar [[Special:UserLogin|autenticado]] e possuir um endereço de correio válido nas suas [[Special:Preferences|preferências]], para poder enviar correio electrónico a outros utilizadores.',
'emailuser' => 'Enviar correio electrónico a este utilizador',
'monthsall' => 'todos',
'limitall' => 'tudo',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar endereço de correio electrónico',
'confirmemail_noemail' => 'Não tem um endereço de correio electrónico válido nas suas [[Special:Preferences|preferências de utilizador]].',
'confirmemail_text' => 'A {{SITENAME}} requer que valide o seu endereço de correio electrónico antes de usar as funcionalidades de correio.
'loginlanguagelabel' => 'Idioma: $1',
'suspicious-userlogout' => 'Sua solicitação para sair foi negada porque aparentemente foi enviada por um navegador danificado ou por um servidor proxy com cache.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Erro desconhecido na função mail() do PHP',
'user-mail-no-addy' => 'Tentou enviar uma mensagem sem um endereço de e-mail.',
'user-mail-no-body' => 'Você tentou enviar com o campo de e-mail vazio ou com poucos caracteres.',
'prefs-displaywatchlist' => 'Opções de exibição',
'prefs-diffs' => 'Diferenças',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Parece válido',
'email-address-validity-invalid' => 'Forneça um endereço de e-mail válido',
Talvez fosse melhor que possuissem links para uma página mais específica.</br>
Uma página é considerada como de desambiguação se utilizar uma predefinição que esteja definida em [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Páginas com uma propriedade de página',
+'pageswithprop-text' => 'Esta página lista as páginas que usam uma determinada propriedade de página.',
+'pageswithprop-prop' => 'Nome da propriedade:',
+
'doubleredirects' => 'Redirecionamentos duplos',
'doubleredirectstext' => 'Esta página lista as páginas que redirecionam para outros redirecionamentos.
Cada linha contém links para o primeiro e o segundo redirecionamentos, juntamente com o alvo do segundo redirecionamento, que é geralmente a verdadeira página de destino, para a qual o primeiro redirecionamento deveria apontar.
'listgrouprights-addgroup-self-all' => 'Pode adicionar todos os grupos à própria conta',
'listgrouprights-removegroup-self-all' => 'Pode remover todos os grupos da própria conta',
-# E-mail user
+# Email user
'mailnologin' => 'Nenhum endereço de envio',
'mailnologintext' => 'Necessita de estar [[Special:UserLogin|autenticado]] e de possuir um endereço de e-mail válido nas suas [[Special:Preferences|preferências]] para poder enviar um e-mail a outros usuários.',
'emailuser' => 'Enviar-lhe um e-mail',
'protect-fallback' => 'Permitir apenas os usuários com privilégio de "$1"',
'protect-level-autoconfirmed' => 'Permitir apenas usuários auto-confirmados',
'protect-level-sysop' => 'Permitir apenas administradores',
-'protect-summary-cascade' => 'p. progressiva',
+'protect-summary-cascade' => 'em cascata',
'protect-expiring' => 'expira em $1 (UTC)',
'protect-expiring-local' => 'expira $1',
'protect-expiry-indefinite' => 'indefinidamente',
'import-error-interwiki' => 'A página "$1" não pôde ser importada pois seu nome está reservado para um link interwik.',
'import-error-special' => 'A página "$1" não pôde ser importada porque ela pertence a um espaço nominal especial que não suporta páginas.',
'import-error-invalid' => 'A página "$1" não pôde ser importada por seu nome ser inválido.',
+'import-error-unserialize' => 'Revisão $2 da página " $1 " não pôde ser desserializada. A revisão foi relatada para usar o modelo de conteúdo $3 serializado como $4',
'import-options-wrong' => '{{PLURAL:$2|Opção com erro|Opções com erros}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'A página raiz dada é um título inválido.',
'import-rootpage-nosubpage' => 'O espaço nominal $1 da página principal não permite subpáginas.',
'pageinfo-robot-noindex' => 'Não indexável',
'pageinfo-views' => 'Número de visitas',
'pageinfo-watchers' => 'Número de vigilantes da página',
+'pageinfo-few-watchers' => 'Menos de $1 {{PLURAL:$1|vigilante|vigilantes}}',
'pageinfo-redirects-name' => 'Redirecionamentos para esta página',
'pageinfo-subpages-name' => 'Subpáginas desta página',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirecionamento|redirecionamentos}}; $3 {{PLURAL:$3|não redirecionamento|não redirecionamentos}})',
'monthsall' => 'todos',
'limitall' => 'todas',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmar endereço de E-mail',
'confirmemail_noemail' => 'Não possui um endereço de e-mail válido indicado nas suas [[Special:Preferences|preferências de usuário]].',
'confirmemail_text' => '{{SITENAME}} requer o seu endereço de e-mail esteja validado antes de utilizar as funcionalidades que requerem um endereço de e-mail.
'watchlistedit-normal-explain' => 'Os títulos das páginas de sua lista de vigiadas são exibidos abaixo.
Para remover um título, marque a caixa ao lado do mesmo e clique "{{int:Watchlistedit-normal-submit}}".
Você pode também [[Special:EditWatchlist/raw|editar a lista de páginas vigiadas em forma de texto]].',
-'watchlistedit-normal-submit' => 'Remover Títulos',
+'watchlistedit-normal-submit' => 'Remover páginas',
'watchlistedit-normal-done' => '{{PLURAL:$1|um título foi removido|$1 títulos foram removidos}} de sua lista de páginas vigiadas:',
'watchlistedit-raw-title' => 'Edição crua da lista de páginas vigiadas',
'watchlistedit-raw-legend' => 'Edição crua da lista de páginas vigiadas',
'api-error-ok-but-empty' => 'Erro interno: não há resposta do servidor.',
'api-error-overwrite' => 'Não é permitido sobrescrever um arquivo já existente.',
'api-error-stashfailed' => 'Erro interno: o servidor não conseguiu armazenar o arquivo temporário.',
+'api-error-publishfailed' => 'Erro interno: O servidor falhou ao publicar o arquivo temporário.',
'api-error-timeout' => 'O servidor não respondeu dentro do tempo esperado.',
'api-error-unclassified' => 'Ocorreu um erro desconhecido',
'api-error-unknown-code' => 'Erro desconhecido: "$1"',
'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
'duration-millennia' => '$1 {{PLURAL:$1|milênio|milênios}}',
+# Unknown messages
+'pageswithprop-legend' => 'Páginas com uma propriedade de página',
+'pageswithprop-submit' => 'Ir',
);
* @author Usarker
* @author Verdy p
* @author Vinhtantran
+ * @author Vivaelcelta
* @author Waldir
* @author Whym
* @author Yekrats
Parameters:
* $1 - number of files shown',
-'listingcontinuesabbrev' => 'Shown in contiuation of each first letter group.
+'listingcontinuesabbrev' => 'Shown in contiuation of each first letter group. This message follows the first letter.
+
See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.',
'index-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__INDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [[mw:Help:Magic_words#Behavior_switches|MediaWiki]].',
'noindex-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [[mw:Help:Magic_words#Behavior_switches|MediaWiki]].',
Used to identify the source of copied information.',
'help' => 'General text (noun) used in the sidebar (by default).
-See also [[MediaWiki:Helppage/{{SUBPAGENAME}}|{{int:helppage}}]] and [[MediaWiki:Edithelp/{{SUBPAGENAME}}|{{int:edithelp}}]].
+See also {{msg-mw|Helppage}} and {{msg-mw|Edithelp}}.
See also:
* {{msg-mw|Help}}
* {{msg-mw|Accesskey-search}}
* {{msg-mw|Tooltip-search}}
{{Identical|Search}}',
-'searchbutton' => 'The button you can see in the sidebar, below the search input box. The "Go" button is [[MediaWiki:Searcharticle/{{SUBPAGENAME}}]].
-
+'searchbutton' => 'The button you can see in the sidebar, below the search input box. The "Go" button is {{msg-mw|Searcharticle}}.
{{Identical|Search}}',
'go' => 'See also:
* {{msg-mw|Go}}
* {{msg-mw|Accesskey-search-go}}
* {{msg-mw|Tooltip-search-go}}
{{Identical|Go}}',
-'searcharticle' => 'Button description in the search menu displayed on every page. The "Search" button is [[MediaWiki:Searchbutton/{{SUBPAGENAME}}]].
-
+'searcharticle' => 'Button description in the search menu displayed on every page. The "Search" button is {{msg-mw|Searchbutton}}.
{{Identical|Go}}',
'history' => '{{Identical|Page history}}',
'history_short' => 'Text used on the history tab.
* {{msg-mw|Accesskey-ca-nstab-main}}
* {{msg-mw|Tooltip-ca-nstab-main}}
{{Identical|Page}}',
-'nstab-user' => 'The name for the tab of the user namespace. Example: [[User:Example]]. It is possible to use <nowiki>{{GENDER:{{BASEPAGENAME}}|male form|female form}}</nowiki> if needed.
+'nstab-user' => 'The name for the tab of the user namespace. Example: [[User:Example]]. It is possible to use <nowiki>
+{{GENDER:{{#titleparts:{{BASEPAGENAME}}|1}}|male form|female form}}</nowiki> if needed.
See also:
* {{msg-mw|Nstab-user}}
* $1 - an URL to [[Special:Userlogin]] containing <code>returnto</code> and <code>returntoquery</code> parameters',
'welcomeuser' => 'Text for a welcome heading that users see after registering a user account. $1 is the username of the new user. See [[bugzilla:42215]]',
'welcomecreation-msg' => 'A welcome message users see after registering a user account, following a welcomeuser heading. $1 is the username of the new user. Replaces welcomecreation in 1.21wmf5,see [[bugzilla:42215]]',
-'yourname' => "In user preferences
-
-<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is '''NOT''' supported.
-
+'yourname' => "{{doc-important|<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is '''NOT''' supported.}}
+In user preferences.
{{Identical|Username}}",
'yourpassword' => 'In user preferences
'notloggedin' => 'This message is displayed in the standard skin when not logged in. The message is placed above the login link in the top right corner of pages.
{{Identical|Not logged in}}',
-'nologin' => 'A message shown in the log in form. $1 is a link to the account creation form, and the text of it is "[[MediaWiki:Nologinlink/{{SUBPAGENAME}}|{{int:nologinlink}}]]".',
-'nologinlink' => 'Text of the link to the account creation form. Before that link, the message [[MediaWiki:Nologin/{{SUBPAGENAME}}]] appears.
+'nologin' => 'A message shown in the log in form. Parameters:
+* $1 - a link to the account creation form, and the text of it is {{msg-mw|Nologinlink}}',
+'nologinlink' => 'Text of the link to the account creation form. Before that link, the message {{msg-mw|Nologin}} appears.
{{Identical|Create an account}}',
'createaccount' => 'The title of [[Special:CreateAccount]], where users can register a new account. Used on [[Special:SpecialPages]] and on the submit button in the form where you register a new account.
{{Identical|Create account}}',
'gotaccount' => 'A message shown in the account creation form.
* $1 - a link to the log in form, and the text of it is {{msg-mw|Gotaccountlink}}',
-'gotaccountlink' => 'Text of the link to the log in form. Before that link, the message [[MediaWiki:Gotaccount/{{SUBPAGENAME}}]] appears.
-
+'gotaccountlink' => 'Text of the link to the log in form. Before that link, the message {{msg-mw|Gotaccount}} appears.
{{Identical|Log in}}',
'userlogin-resetlink' => 'Used on the login page.',
'createaccountmail' => 'Button text for creating a new account and sending the new password to the specified e-mail address directly, as used on [[Special:UserLogin/signup]] if creating accounts by e-mail is allowed.',
'noname' => 'Error message.',
'loginsuccesstitle' => 'The title of the page saying that you are logged in. The content of the page is the message {{msg-mw|Loginsuccess}}.
{{Identical|Login successful}}',
-'loginsuccess' => 'The content of the page saying that you are logged in. The title of the page is "[[MediaWiki:Loginsuccesstitle/{{SUBPAGENAME}}|{{int:loginsuccesstitle}}]]". $1 is the name of the logged in user.
+'loginsuccess' => 'The content of the page saying that you are logged in. The title of the page is {{msg-mw|Loginsuccesstitle}}.
-<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is supported.',
+Parameters:
+* $1 - the name of the logged in user
+{{Gender}}',
'nosuchuser' => 'Displayed when trying to log in with an unexisting username. When you are not allowed to create an account, the message {{msg-mw|nosuchusershort}} is displayed.',
'nosuchusershort' => "Displayed when trying to log in with a non-existant username. This message is only shown when you can't create an account, otherwise the message {{msg-mw|nosuchusershort}} is displayed.",
'nouserspecified' => 'Used as error message when username to fetch is not specified.',
* $1 - password reminder resend time (in hours)',
'mailerror' => 'Used as error message in sending confirmation mail to user. Parameters:
* $1 - new mail address',
-'acct_creation_throttle_hit' => 'Errormessage at [[Special:CreateAccount]].
+'acct_creation_throttle_hit' => 'Error message at [[Special:CreateAccount]].
+
"in the last day" precisely means: during the lasts 86400 seconds (24 hours) ending right now.',
'emailauthenticated' => 'In user preferences ([[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}) and on [[Special:ConfirmEmail]].
{{Identical|Language}}',
'suspicious-userlogout' => 'Used when the logout request looks suspicious, in Special:UserLogout.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Used as error message when <code>mail()</code> returned empty error message.',
'user-mail-no-addy' => 'This is the error message in case an e-mail could not be sent because there was no e-mail address to send it to.',
'user-mail-no-body' => 'This is the error message in case an e-mail has an empty or unreasonably short body',
* $3 - the number of repetitions in $2
* $4 - base URL of the wiki',
'passwordreset-emailelement' => "This is a body of a reminder email to allow them into the system with a new password. Parameters:
-* $1 will be the user's login name. This parameter can be used for GENDER.
-* $2 will be the temporary password given by the system.",
+* $1 - the user's login name. This parameter can be used for GENDER.
+* $2 - the temporary password given by the system",
'passwordreset-emailsent' => 'Used in [[Special:PasswordReset]].
See also:
'blockedtitle' => 'Used as title displayed for blocked users. The corresponding message body is one of the following messages:
* {{msg-mw|Blockedtext|notext=1}}
* {{msg-mw|Autoblockedtext|notext=1}}',
-'blockedtext' => 'Text displayed to blocked users. Parameters:
+'blockedtext' => "Text displayed to blocked users. Parameters:
* $1 - the blocking sysop (with a link to his/her userpage)
* $2 - the reason for the block
* $3 - the current IP address of the blocked user
-* $4 - the blocking sysop’s username (plain text, without the link)
+* $4 - the blocking sysop's username (plain text, without the link)
* $5 - the unique numeric identifier of the applied autoblock
* $6 - the expiry of the block
* $7 - the intended target of the block (what the blocking user specified in the blocking form)
-* $8 - the timestamp when the block started',
-'autoblockedtext' => 'Text displayed to automatically blocked users. Parameters:
+* $8 - the timestamp when the block started",
+'autoblockedtext' => "Text displayed to automatically blocked users. Parameters:
* $1 - the blocking sysop (with a link to his/her userpage)
* $2 - the reason for the block
* $3 - the current IP address of the blocked user
-* $4 - the blocking sysop’s username (plain text, without the link). Use it for GENDER.
+* $4 - the blocking sysop's username (plain text, without the link). Use it for GENDER.
* $5 - the unique numeric identifier of the applied autoblock
* $6 - the expiry of the block
* $7 - the intended target of the block (what the blocking user specified in the blocking form)
-* $8 - the timestamp when the block started',
+* $8 - the timestamp when the block started",
'blockednoreason' => 'Substituted with <code>$2</code> in the following message if the reason is not given:
* {{msg-mw|cantcreateaccount-text}}.
{{Identical|No reason given}}',
* {{msg-mw|edit-gone-missing}}
* {{msg-mw|edit-conflict}}
* {{msg-mw|edit-no-change}}',
-'defaultmessagetext' => 'Caption above the default message text shown on the left-hand side of a diff displayed after clicking “Show changes” when creating a new page in the MediaWiki: namespace',
+'defaultmessagetext' => 'Caption above the default message text shown on the left-hand side of a diff displayed after clicking "Show changes" when creating a new page in the MediaWiki: namespace',
'content-failed-to-parse' => "Error message indicating that the page's content can not be saved because it is syntactically invalid. This may occurr for content types using serialization or a strict markup syntax.
*$1 – content model ({{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}})
*$2 – content format as MIME type (e.g. <tt>text/css</tt>)
*$3 – specific error message",
'invalid-content-data' => "Error message indicating that the page's content can not be saved because it is invalid. This may occurr for content types with internal consistency constraints.",
'content-not-allowed-here' => 'Error message indicating that the desired content model is not supported in given localtion.
-* $1 is the human readable name of the content model: {{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}}
-* $2 is the title of the page in question.',
+* $1 - the human readable name of the content model: {{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}}
+* $2 - the title of the page in question',
# Content models
'content-model-wikitext' => 'Name for the wikitext content model, used when decribing what type of content a page contains.
* $2 is a date (optional)
* $3 is a time (optional)',
'revisionasof' => 'Used on a difference page when comparing different versions of a page or when viewing an non-current version of a page. See {{msg-mw|Currentrev-asof}} for the message for the current version.
-* $1 is the date/time at which the revision was created. Example: "\'\'Revision as of 14:44, 24 January 2008\'\'".
-* $2 is the date at which the revision was created.
-* $3 is the time at which the revision was created.',
+* $1 - the date/time at which the revision was created. Example: "\'\'Revision as of 14:44, 24 January 2008\'\'".
+* $2 - the date at which the revision was created
+* $3 - the time at which the revision was created',
'revision-info' => 'Appears just below the page title when an old version of the page is being viewed.
Parameters:
*Parameter $1 is the number of revisions
*Parameter $2 is the number of distinct users who made those revisions",
'diff-multi-manyusers' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and the intermediate revisions have been edited by more than 100 users. Parameters:
-* $1 is the number of revisions, will always be 101 or more.
-* $2 is the number of users that were found, which was limited at 100.",
+* $1 - the number of revisions, will always be 101 or more
+* $2 - the number of users that were found, which was limited at 100",
'difference-missing-revision' => 'Text displayed when the requested revision does not exist using a diff link.
Example: [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with invalid revision#]
* {{msg-mw|Searchprofile-advanced|message}}
* {{msg-mw|Searchprofile-advanced-tooltip|tooltip}}',
'search-result-size' => 'Shown per line of a [[Special:Search|search result]]
-* $1 is the size of the page in bytes, but no need to add "byte" or similar as the unit is added by special function.
-* $2 is the sum of all words in this page.',
+* $1 - the size of the page in bytes, but no need to add "byte" or similar as the unit is added by special function
+* $2 - the sum of all words in this page',
'search-result-category-size' => '* $1 - number of members in this category. $1 is equal to $2+$3.
* $2 - number of subcategories
* $3 - number of files',
'search-relatedarticle' => 'This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]
{{Identical|Related}}',
'mwsuggest-disable' => "The text of an option on the 'search options' tab of a user's Preferences.",
-'searcheverything-enable' => 'Used in [[Special:Preferences]], tab “Search”.',
+'searcheverything-enable' => 'Used in [[Special:Preferences]], tab "Search".',
'searchrelated' => 'This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]
{{Identical|Related}}',
'searchall' => '{{Identical|All}}',
* {{msg-mw|Prefs-watchlist-edits}}',
'prefs-diffs' => 'Used in [[Special:Preferences]], tab "Misc".',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Used as hint for {{msg-mw|changeemail-newemail}} field in [[Special:ChangeEmail]], when the provided E-mail address is valid.',
'email-address-validity-invalid' => 'Used as warning for {{msg-mw|changeemail-newemail}} field in [[Special:ChangeEmail]], when the provided E-mail address is invalid.',
'userrights-groupsmember' => 'Used when editing user groups in [[Special:Userrights]]. The message is followed by a list of group names.
Parameters:
-* $1 - the number of items in the list following the message, for PLURAL.
-* $2 - the user name, for GENDER.',
+* $1 - the number of items in the list following the message, for PLURAL
+* $2 - the user name, for GENDER',
'userrights-groupsmember-auto' => 'Used when editing user groups in [[Special:Userrights]]. The message is followed by a list of group names.
"Implicit" is for groups that the user was automatically added to (such as "autoconfirmed"); cf. {{msg-mw|userrights-groupsmember}}
Parameters
-* $1 - the number of items in the list following the message, for PLURAL.
-* $2 - the user name, for GENDER.',
+* $1 - the number of items in the list following the message, for PLURAL
+* $2 - the user name, for GENDER',
'userrights-groupsmember-type' => '{{optional}}
Parameters:
* $1 is list of group names.
* {{msg-mw|http-invalid-url}}
* {{msg-mw|upload-copy-upload-invalid-domain}}
* {{msg-mw|tmp-create-error}}',
-'large-file' => 'Variables $1 and $2 have appropriate unit symbols already. See for example [[Mediawiki:size-kilobytes]].',
+'large-file' => 'Variables $1 and $2 have appropriate unit symbols already. See for example {{msg-mw|Size-kilobytes}}.',
'largefileserver' => 'Error message when uploading a file whose size is larger than the maximum allowed',
'emptyfile' => 'Error message when trying to upload an empty file',
'windows-nonascii-filename' => 'Used as error message when uploading a file.
'backend-fail-alreadyexists' => 'Parameters:
* $1 is a filename.',
'backend-fail-store' => 'Parameters:
-* $1 is a filename
-* $2 is a storage path.',
+* $1 - a filename
+* $2 - a storage path',
'backend-fail-copy' => 'Parameters:
-* $1 is a file path
-* $2 is a file path.',
+* $1 - a file path
+* $2 - a file path',
'backend-fail-move' => 'Parameters:
-* $1 is a file path
-* $2 is a file path.',
+* $1 - a file path
+* $2 - a file path',
'backend-fail-opentemp' => 'Used as error message.
{{Related|Backend-fail}}',
'backend-fail-writetemp' => 'Used as error message.
'backend-fail-contenttype' => '$1 is a storage (file) path',
'backend-fail-batchsize' => 'Error message when the limit of operations to be done at once in the file backend was reached.
Parameters:
-* $1 is the number of operations attempted at once in this case.
-* $2 is the maximum number of operations that can be attempted at once.
+* $1 - the number of operations attempted at once in this case
+* $2 - the maximum number of operations that can be attempted at once
A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
'backend-fail-usable' => 'Parameters:
* {{msg-mw|Upload-curl-error28|title}}
* {{msg-mw|Upload-curl-error28-text|body}}',
-'license' => 'This appears in the upload form for the license drop-down. The header in the file description page is now at {{msg-mw|License-header}}.',
+'license' => 'This appears in the upload form for the license drop-down. The header in the file description page is now at {{msg-mw|License-header}}.
+{{Identical|Licensing}}',
'license-header' => 'Used as section header in [[Special:Upload]].
See also:
* {{msg-mw|Filedesc}}
* {{msg-mw|Filestatus}}
-* {{msg-mw|Filesource}}',
+* {{msg-mw|Filesource}}
+{{Identical|Licensing}}',
'nolicense' => '{{Identical|None selected}}',
'license-nopreview' => 'Error message when a certain license does not exist',
'upload_source_url' => 'Used in [[Special:Upload]].
'deletedcontributions-title' => 'Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.
{{Identical|Deleted user contributions}}',
-'sp-deletedcontributions-contribs' => 'Link to user’s contributions on [[Special:DeletedContributions]].
-{{Identical|Contribution}}',
+'sp-deletedcontributions-contribs' => "Link to user's contributions on [[Special:DeletedContributions]].
+{{Identical|Contribution}}",
# Special:LinkSearch
'linksearch' => 'Title of [[Special:LinkSearch|special page]] and legend of fieldset on that page.
* $1 is the text from the 'right-...' messages, i.e. {{msg-mw|right-edit}}
* $2 is the codename of this right",
'listgrouprights-addgroup' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
-* $1 is an enumeration of group names.
-* $2 is the number of group names in $1.
-See also {{msg|listgrouprights-removegroup}}.',
+* $1 - an enumeration of group names
+* $2 - the number of group names in $1
+See also:
+* {{msg-mw|listgrouprights-removegroup}}',
'listgrouprights-removegroup' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
-* $1 is an enumeration of group names.
-* $2 is the number of group names in $1.
-See also {{msg|listgrouprights-addgroup}}.',
+* $1 - an enumeration of group names
+* $2 - the number of group names in $1
+See also:
+* {{msg-mw|listgrouprights-addgroup}}',
'listgrouprights-addgroup-all' => 'Used on [[Special:ListGroupRights]].
{{Related|Listgrouprights}}',
'listgrouprights-removegroup-all' => 'Used on [[Special:ListGroupRights]].
{{Related|Listgrouprights}}',
'listgrouprights-addgroup-self' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
-* $1 are the group names.
-* $2 is the number of group names in $1.',
+* $1 - the group names
+* $2 - the number of group names in $1',
'listgrouprights-removegroup-self' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
-* $1 are the group names.
-* $2 is the number of group names in $1.',
+* $1 - the group names
+* $2 - the number of group names in $1',
'listgrouprights-addgroup-self-all' => 'Used on [[Special:ListGroupRights]].
{{Related|Listgrouprights}}',
'listgrouprights-removegroup-self-all' => 'Used on [[Special:ListGroupRights]].
{{Related|Listgrouprights}}',
-# E-mail user
+# Email user
'mailnologin' => 'Used in [[Special:EmailUser]].
Used as title of the error message {{msg-mw|Mailnologintext}}.',
'emailpage' => "Title of special page [[Special:EmailUser]], when it is the destination of the sidebar link {{msg-mw|Emailuser}} on a user's page.",
'emailpagetext' => 'This is the text that is displayed above the e-mail form on [[Special:EmailUser]].
-Special:EmailUser appears when you click on the link "E-mail this user" in the sidebar, but only if there is an e-mail address in the recipient\'s user preferences. If there isn\'t then the message [[Mediawiki:Noemailtext]] will appear instead of Special:EmailUser.',
+Special:EmailUser appears when you click on the link "E-mail this user" in the sidebar, but only if there is an e-mail address in the recipient\'s user preferences. If there isn\'t then the message {{msg-mw|Noemailtext}} will appear instead of Special:EmailUser.',
'defemailsubject' => 'The default subject of EmailUser emails. Parameters:
* $1 is the username of the user sending the email and can be used for GENDER.',
'usermaildisabled' => 'Caption for an error message ({{msg-mw|Usermaildisabledtext}}) shown when the user-to-user e-mail feature is disabled on the wiki (see [[mw:Manual:$wgEnableEmail]], [[mw:Manual:$wgEnableUserEmail]]).',
* {{msg-mw|Watchmethod-recent}}',
'watchlistcontains' => '* $1 - number of pages in your watchlist',
'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
+
Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
-* $1 is the number of changes shown,
-* $2 is the number of hours for which the changes are shown,
-* $3 is a date alone,
-* $4 is a time alone.',
+
+Parameters:
+* $1 - the number of changes shown
+* $2 - the number of hours for which the changes are shown
+* $3 - a date alone
+* $4 - a time alone',
'wlshowlast' => 'Appears on [[Special:Watchlist]]. Parameters:
* $1 - a choice of different numbers of hours ("1 | 2 | 6 | 12")
* $2 - a choice of different numbers of days ("1 | 3 | 7")
* {{msg-mw|enotif reset|Submit button text}}',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Text displayed when clicked on the watch tab: [[MediaWiki:Watch/{{SUBPAGENAME}}|{{int:watch}}]]. It means the wiki is adding that page to your watchlist.',
-'unwatching' => 'Text displayed when clicked on the unwatch tab: [[MediaWiki:Unwatch/{{SUBPAGENAME}}|{{int:unwatch}}]]. It means the wiki is removing that page from your watchlist.',
+'watching' => 'Text displayed when clicked on the watch tab: {{msg-mw|Watch}}. It means the wiki is adding that page to your watchlist.',
+'unwatching' => 'Text displayed when clicked on the unwatch tab: {{msg-mw|Unwatch}}. It means the wiki is removing that page from your watchlist.',
'watcherrortext' => 'When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed.
This message is used raw and should not contain wikitext.
{{Identical|View deleted pages}}',
'undeletepagetext' => '* $1 - number of pages',
'undelete-fieldset-title' => 'Used as the title of the fieldset.',
-'undeleteextrahelp' => "Help message displayed when restoring history of a page. In your language, ''Restore'' is called ''[[MediaWiki:Undeletebtn/{{SUBPAGENAME}}|{{int:Undeletebtn}}]]'' ({{msg|Undeletebtn}}), The ''Reset'' button is called ''[[MediaWiki:Undeletereset/{{SUBPAGENAME}}|{{int:Undeletereset}}]]'' ({{msg|Undeletereset}}).",
+'undeleteextrahelp' => "Help message displayed when restoring history of a page.
+
+In your language, ''Restore'' is called {{msg-mw|Undeletebtn}}, the ''Reset'' button is called {{msg-mw|Undeletereset}}.",
'undeleterevisions' => '* $1 - number of revisions',
'undeletehistory' => 'Used in [[Special:Undelete]].
'blocklog-showsuppresslog' => 'Parameters:
* $1 is the blocked user. Can be used for GENDER (optional)',
'blocklogentry' => 'This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:
-* $1 is the blocked user or IP (with link to contributions and talk)
-* $2 is the duration of the block (hours, days etc.) or the specified expiry date
-* $3 contains "(details) (\'\'reason\'\')"
-See also {{msg-mw|Blocklistline}}.',
+* $1 - the blocked user or IP (with link to contributions and talk)
+* $2 - the duration of the block (hours, days etc.) or the specified expiry date
+* $3 - contains "(details) (\'\'reason\'\')"
+See also:
+* {{msg-mw|Blocklistline}}',
'reblock-logentry' => 'This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:
* $1 is the user being reblocked
* $2 is the expiry time of the block
'import-error-special' => '* $1 - page title',
'import-error-invalid' => '* $1 - page title',
'import-error-unserialize' => 'Import error message displayed when a revision could not be unserialized.
-This may happen if the content got corrupted or the serialization format is mis-reported. Parameters:
-* $1 is the name of the page the offending revision belongs to.
-* $2 is the ID of the offending revision, as reported in the dump that is being imported.
-* $3 is the content model reported for the offending revision in the dump that is being imported.
-* $4 is the serialization format reported for the offending revision in the dump that is being imported.',
+
+This may happen if the content got corrupted or the serialization format is mis-reported.
+
+Parameters:
+* $1 - the name of the page the offending revision belongs to
+* $2 - the ID of the offending revision, as reported in the dump that is being imported
+* $3 - the content model reported for the offending revision in the dump that is being imported
+* $4 - the serialization format reported for the offending revision in the dump that is being imported',
'import-options-wrong' => 'Used on [[Special:Import]], when one of the options has an error.',
'import-rootpage-invalid' => 'Used on [[Special:Import]], when the root page is invalid.',
'import-rootpage-nosubpage' => 'Used on [[Special:Import]], when the import namespace does not support subpages. Parameters:
* {{msg-mw|Accesskey-t-upload}}
* {{msg-mw|Tooltip-t-upload}}
{{Identical|Upload file}}',
-'tooltip-t-specialpages' => 'The tooltip when hovering over the link "[[MediaWiki:Specialpages/{{SUBPAGENAME}}|{{int:specialpages}}]]" going to a list of all special pages available in the wiki.
+'tooltip-t-specialpages' => 'The tooltip when hovering over the link {{msg-mw|Specialpages}} going to a list of all special pages available in the wiki.
See also:
* {{msg-mw|Specialpages}}
# Attribution
'anonymous' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
-This message appears at the very end of the list of names in the message [[MediaWiki:Othercontribs/{{SUBPAGENAME}}|othercontribs]]. If there are no anonymous users in the credits list then this message does not appear at all.
-* $1 is the number of anonymous users in the message',
+This message appears at the very end of the list of names in the message {{msg-mw|Othercontribs}}.
+
+If there are no anonymous users in the credits list then this message does not appear at all.
+
+Parameters:
+* $1 - the number of anonymous users in the message',
'siteuser' => "This message is shown when viewing the credits of a page ([{{fullurl:Main Page|action=credits}} example]). Note that this action is disabled by default, but currently enabled on translatewiki.net. This message is the variable $3 in the message {{msg-mw|lastmodifiedatby}}. This message only appears if a user has not entered their 'real name' in their preferences. See also {{msg-mw|Siteusers}}.
Parameters:
* $2 - (Optional) the count of names in $1',
'others' => 'The following explanation is guesswork. This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net - to use type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar).
-The message appears at the end of the list of credits given in the message [[Mediawiki:Othercontribs/{{SUBPAGENAME}}]] if the number of contributors is above a certain level.
+The message appears at the end of the list of credits given in the message {{msg-mw|Othercontribs}} if the number of contributors is above a certain level.
{{Identical|Other}}',
'siteusers' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
-It should be in a form that fits with [[MediaWiki:Othercontribs/{{SUBPAGENAME}}|othercontribs]].
-* $1 is a list of user names (example: "\'\'Jim, Janet, Jane, Joe\'\'") where the user has not put his \'real name\' in his preferences.
-* $2 is the number of user names in $1
+It should be in a form that fits with {{msg-mw|Othercontribs}}.
-If there is more than one user in the list then the message {{msg-mw|and}} appears before the last name. If $2 is NIL then this message does not appear at all.
+Parameters:
+* $1 - a list of user names (example: "\'\'Jim, Janet, Jane, Joe\'\'") where the user has not put his \'real name\' in his preferences.
+* $2 - the number of user names in $1
-See also {{msg-mw|Siteuser}}.',
+If there is more than one user in the list then the message {{msg-mw|And}} appears before the last name. If $2 is NULL then this message does not appear at all.
+
+See also:
+* {{msg-mw|Siteuser}}',
'anonusers' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Support|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
-It should be in a form that fits with [[MediaWiki:Othercontribs/{{SUBPAGENAME}}|othercontribs]].
-* $1 is a list of IP addresses
-* $2 is the number of IP addresses in $1
+It should be in a form that fits with {{msg-mw|Othercontribs}}.
+
+Parameters:
+* $1 - a list of IP addresses
+* $2 - the number of IP addresses in $1
If there is more than one user in the list then the message {{msg-mw|and}} appears before the last name. If $2 is NIL then this message does not appear at all.
-See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
+See also:
+* {{msg-mw|Anonuser}}
+* {{msg-mw|Siteusers}}',
'creditspage' => "This message is the ''contentSub'' (the grey subtitle) shown when viewing credits of a page (example: {{fullurl:Project:News|action=credits}}). Note that the credits action is disabled by default (currently enabled on translatewiki.net).",
'nocredits' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}) but when there are no credits available. Note that the credits action is disabled by default (currently enabled on translatewiki.net).',
Used as link text, linked to '{{int:Prefixindex}}' page ([[Special:PrefixIndex]]).",
'pageinfo-subpages-value' => 'Parameters:
-* $1 is the number of subpages of the page.
-* $2 is the number of subpages of the page that are redirects.
-* $3 is the number of subpages of the page that are not redirects.',
+* $1 - the number of subpages of the page
+* $2 - the number of subpages of the page that are redirects
+* $3 - the number of subpages of the page that are not redirects',
'pageinfo-firstuser' => 'The user who created the page.',
'pageinfo-firsttime' => 'The date and time the page was created.',
'pageinfo-lastuser' => 'The last user who edited the page.',
'widthheightpage' => 'This message is used on image pages in the dimensions column in the file history section for images with more than one page.
Parameters:
-* $1 is the width of the image pages in pixels.
-* $2 is the height of the image pages in pixels.
-* $3 is the number of pages in the file.',
+* $1 - the width of the image pages in pixels
+* $2 - the height of the image pages in pixels
+* $3 - the number of pages in the file',
'file-info' => 'File info displayed on file description page.',
'file-info-size' => 'File info displayed on file description page.
'file-info-size-pages' => 'File info displayed on file description page, when the file is a multi-page document, with at least two pages. Like {{msg-mw|file-info-size}} but $5 is the total number of pages in the document.
Parameters:
-* $1 is the width of the image pages in pixels.
-* $2 is the height of the image pagess in pixels.
-* $3 is the file size as a number followed by a unit — for example: 99 KB
-* $4 is the MIME type, a formalized textual information — for example: <code>image/jpeg</code>
-* $5 is the total number of pages in the document.',
+* $1 - the width of the image pages in pixels
+* $2 - the height of the image pagess in pixels
+* $3 - the file size as a number followed by a unit — for example: 99 KB
+* $4 - the MIME type, a formalized textual information — for example: <code>image/jpeg</code>
+* $5 - the total number of pages in the document',
'file-nohires' => 'File info displayed on file description page. For example of message in use see [[:File:Mouse10.gif]].',
'svg-long-desc' => 'Displayed under an SVG image at the image description page. Note that argument 3 is a string that includes the file size unit symbol. See for example [[:File:Yes check.svg]].
-Start with a lowercase letter, unless the first word is “SVG”.',
+Start with a lowercase letter, unless the first word is "SVG".',
'svg-long-desc-animated' => 'Displayed under an SVG image at the image description page if the image is animated. Non-animated images use {{msg-mw|svg-long-desc}}.
-* $1 is the width in pixels
-* $2 is the height in pixels, and
-* $3 is the file size including a unit (for example "10 KB").
+* $1 - the width in pixels
+* $2 - the height in pixels
+* $3 - the file size including a unit (for example "10 KB")
-Start with a lowercase letter, unless the first word is “SVG”.',
+Start with a lowercase letter, unless the first word is "SVG".',
'svg-long-error' => 'Displayed for invalid SVG file metadata. Parameters:
* $1 - the error message
See also:
'show-big-image' => 'Displayed under an image at the image description page, when it is displayed smaller there than it was uploaded.',
'show-big-image-preview' => 'Message shown under the image description page thumbnail, next to {{msg-mw|show-big-image-other}}.',
'show-big-image-other' => 'Message shown under the image description page thumbnail, next to {{msg-mw|show-big-image-preview}}, if the image is in high resolution.',
-'show-big-image-size' => '
-Parameters:
-* $1 is the width of the image(s) in pixels.
-* $2 is the height of the image(s) in pixels.',
+'show-big-image-size' => 'Parameters:
+* $1 - the width of the image(s) in pixels
+* $2 - the height of the image(s) in pixels',
'file-info-gif-looped' => 'Part of the information provided about a [[w:Gif|.gif file]] on its file description page. Looped means repeating in the context of an animated gif. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop. For example of message in use see [[:File:Mouse10.gif]].',
'file-info-gif-frames' => 'Part of the information provided about a [[w:Gif|.gif file]] on its file description page.',
'file-info-png-looped' => 'Part of the information provided about a [[w:APNG|.apng file]] on its file description page. Looped means repeating indefinetly in the context of an animated png. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop.',
# Metadata
'metadata' => 'The title of a section on an image description page, with information and data about the image. For example of message in use see [[commons:File:Titan-crystal_bar.JPG|Commons]].
{{Identical|Metadata}}',
-'metadata-expand' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see "[[MediaWiki:Metadata-collapse/{{SUBPAGENAME}}|{{int:metadata-collapse}}]]".',
-'metadata-collapse' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link "[[MediaWiki:Metadata-expand/{{SUBPAGENAME}}|{{int:metadata-expand}}]]", you can see more data and information. This message is for the link to hide back the less important data.',
+'metadata-expand' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see {{msg-mw|Metadata-collapse}}.',
+'metadata-collapse' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link {{msg-mw|Metadata-expand}}, you can see more data and information. This message is for the link to hide back the less important data.',
'metadata-fields' => '{{doc-important|Do not translate list items, only translate the text! So leave "<code>* make</code>" and the other items exactly as they are.}}
The sentences are for explanation only and are not shown to the user.',
'metadata-langitem' => '{{optional}}
'exif-iimcategory-hum' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
'exif-iimcategory-lab' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}
-"Labour" here refers to all news on labour issues; employment; unemployment; work relations; labour disputes; strikes; legislation; unions; job related issues; government policy. (at least, according to Reuters.)',
+"Labor" here refers to all news on labor issues; employment; unemployment; work relations; labor disputes; strikes; legislation; unions; job related issues; government policy. (at least, according to Reuters.)',
'exif-iimcategory-lif' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
'exif-iimcategory-pol' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
'exif-iimcategory-rel' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
'namespacesall' => 'In special page [[Special:WhatLinksHere]]. Drop-down box option for namespace.
{{Identical|All}}',
-'monthsall' => 'Used in a drop-down box on [[Special:Contributions]] as an option for "all months". See also [[MediaWiki:Month/{{SUBPAGENAME}}]].
-
+'monthsall' => 'Used in a drop-down box on [[Special:Contributions]] as an option for "all months". See also {{msg-mw|Month}}.
{{Identical|All}}',
'limitall' => 'Used on [[Special:AllMessages]] (and potentially other TablePager based tables) to display "all" the messages.
{{Identical|All}}',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Title of [[Special:ConfirmEmail]] page.',
'confirmemail_noemail' => 'Failure message on [[Special:ConfirmEmail]].',
'confirmemail_text' => 'Explanation on [[Special:ConfirmEmail]]',
'api-error-badtoken' => 'API error message that can be used for client side localisation of API errors.',
'api-error-copyuploaddisabled' => 'API error message that can be used for client side localisation of API errors.',
'api-error-duplicate' => 'API error message that can be used for client side localisation of API errors. Parameters:
-* $1 is a number of files
-* $2 is a link to a list of duplicate files.',
+* $1 - a number of files
+* $2 - a link to a list of duplicate files',
'api-error-duplicate-archive' => 'API error message that can be used for client side localisation of API errors. Parameters:
-* $1 is a number of files
-* $2 is a link to a list of duplicate files.',
+* $1 - a number of files
+* $2 - a link to a list of duplicate files',
'api-error-duplicate-archive-popup-title' => 'API error message that can be used for client side localisation of API errors. Parameters:
* $1 is a number of files.',
'api-error-duplicate-popup-title' => 'This message is a pop-up title shown in case one or more files exactly equal to the one just uploaded are already present. The word "duplicate" is an adjective.',
'loginlanguagelabel' => 'Limba: $1',
'suspicious-userlogout' => 'Cererea dumneavoastră de a închide sesiunea a fost refuzată întrucât pare că a fost trimisă printr-o eroare a navigatorului sau de un proxy memorat în cache.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Eroare necunoscută în funcția PHP mail()',
'user-mail-no-addy' => 'S-a încercat trimiterea e-mailului fără o adresă de e-mail.',
'user-mail-no-body' => 'S-a încercat trimiterea unui e-mail fără conținut sau nejustificat de scurt.',
'prefs-displaywatchlist' => 'Opțiuni de afișare',
'prefs-diffs' => 'Diferențe',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Adresa de e-mail pare validă',
'email-address-validity-invalid' => 'Introduceți o adresă de e-mail validă',
Acestea ar trebui să conțină legături către un articol mai potrivit.<br />
O pagină este considerată o pagină de dezambiguizare dacă folosește formate care apar la [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Pagini cu o proprietate de pagină',
+'pageswithprop-text' => 'Această pagină listează paginile care utilizează o anumită proprietate de pagină.',
+'pageswithprop-prop' => 'Numele proprietății:',
+
'doubleredirects' => 'Redirecționări duble',
'doubleredirectstext' => 'Această listă conține pagini care redirecționează la alte pagini de redirecționare.
Fiecare rând conține legături la primele două redirecționări, precum și ținta celei de-a doua redirecționări, care este de obicei pagina țintă "reală", către care ar trebui să redirecționeze prima pagină.
'listgrouprights-addgroup-self-all' => 'Pot fi adăugate toate grupurile contului propriu',
'listgrouprights-removegroup-self-all' => 'Pot fi șterse toate grupurile din contul propriu',
-# E-mail user
+# Email user
'mailnologin' => 'Nu există adresă de trimitere',
'mailnologintext' => 'Trebuie să fii [[Special:UserLogin|autentificat]] și să ai o adresă validă de e-mail în [[Special:Preferences|preferințe]] pentru a trimite e-mail altor utilizatori.',
'emailuser' => 'Trimiteți un e-mail',
'monthsall' => 'toate',
'limitall' => 'toate',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Confirmă adresa de e-mail',
'confirmemail_noemail' => 'Nu aveți o adresă de e-mail validă setată la [[Special:Preferences|preferințe]].',
'confirmemail_text' => '{{SITENAME}} solicită validarea adresei de e-mail înaintea utilizării funcțiilor specifice poștei electronice.
'duration-centuries' => '$1 {{PLURAL:$1|secol|secole|de secole}}',
'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenii|de milenii}}',
+# Unknown messages
+'pageswithprop-legend' => 'Pagini cu o proprietate de pagină',
+'pageswithprop-submit' => 'Du-te',
);
'loginlanguagelabel' => 'Lénga: $1',
'suspicious-userlogout' => "'A richiesta toje de assè ha state bloccate purcè pare ca ha state mannate da 'nu browser scuasciate o da 'a cache de 'nu proxy.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "Errore scanusciute jndr'à funzione PHP mail()",
'user-mail-no-addy' => "E' pruvate a mannà 'na mail senze 'u 'ndirizze mail",
'user-mail-no-body' => "Pruvate a mannà 'na mail cu 'nu cuèrpe vacande o troppe curte.",
'prefs-displaywatchlist' => "Fà vedè l'opzione",
'prefs-diffs' => 'Diff',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "L'indirizze e-mail pare valide",
'email-address-validity-invalid' => "Mitte 'n'indirizze e-mail valide",
'listgrouprights-addgroup-self-all' => "Mitte tutte le gruppe sus a 'u cunde utende mije",
'listgrouprights-removegroup-self-all' => "Live tutte le gruppe da 'u cunde utende mije",
-# E-mail user
+# Email user
'mailnologin' => 'Nisciune indirizze de invie',
'mailnologintext' => "Tu a essere [[Special:UserLogin|collegate]] e a avè 'n'indirizze email valide jndr'à le [[Special:Preferences|preferenze]] tue pe mannà 'na mail a otre utinde.",
'emailuser' => "Manne n'email a stu utende",
'monthsall' => 'tutte',
'limitall' => 'tutte',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Conferme l'indirizze e-mail",
'confirmemail_noemail' => "Tu non ge tine 'n'indirizze e-mail valide configurate sus a le [[Special:Preferences|preferenze tue]].",
'confirmemail_text' => "{{SITENAME}} richiede ca tu ha validà l'indirizze email tue apprime de ausà 'a funzione de l'email.
'loginlanguagelabel' => 'Язык: $1',
'suspicious-userlogout' => 'Ваш запрос на завершение сеанса отклонён, так как он похож на запрос, отправленный некорректным браузером или кэширующим прокси.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Неизвестная ошибка в PHP-функции mail()',
'user-mail-no-addy' => 'Пытался отправить электронное письмо без адреса электронной почты',
'user-mail-no-body' => 'Пытался отправить электронное письмо с пустым или бессмысленно коротким содержанием.',
'prefs-displaywatchlist' => 'Настройки отображения',
'prefs-diffs' => 'Разница версий',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Выглядит корректно',
'email-address-validity-invalid' => 'Введите корректный адрес электронной почты!',
Вместо этого они, вероятно, должны указывать на соответствующую конкретную страницу.<br />
Страница считается многозначной, если на ней размещён шаблон, имя которого указано на странице [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Страницы с переопределёнными свойствами',
+'pageswithprop-text' => 'Здесь перечислены страницы, у которых были вручную переопределены отдельные свойства.',
+'pageswithprop-prop' => 'Название свойства:',
+
'doubleredirects' => 'Двойные перенаправления',
'doubleredirectstext' => 'На этой странице представлен список перенаправлений на другие перенаправления.
Каждая строка содержит ссылки на первое и второе перенаправления, а также целевую страницу второго перенаправления, в которой обычно указывается название страницы, куда должно ссылаться первое перенаправление.
'listgrouprights-addgroup-self-all' => 'Может добавлять все группы к своей учётной записи',
'listgrouprights-removegroup-self-all' => 'может удалять все группы со своей учётной записи',
-# E-mail user
+# Email user
'mailnologin' => 'Адрес для отправки отсутствует',
'mailnologintext' => 'Вы должны [[Special:UserLogin|представиться системе]] и иметь действительный адрес электронной почты в ваших [[Special:Preferences|настройках]], чтобы иметь возможность отправлять электронную почту другим участникам.',
'emailuser' => 'Письмо участнику',
'monthsall' => 'все',
'limitall' => 'все',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Подтверждение адреса электронной почты',
'confirmemail_noemail' => 'Вы не задали корректный адрес электронной почты в своих [[Special:Preferences|настройках]].',
'confirmemail_text' => 'Вики-движок требует подтверждения адреса электронной почты перед тем, как начать с ним работать.
'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
+# Unknown messages
+'pageswithprop-legend' => 'Страницы с переопределёнными свойствами',
+'pageswithprop-submit' => 'Найти',
);
'youhavenewmessages' => 'भवदर्थम् $1 सन्ति। ($2).',
'newmessageslink' => 'नूतनाः सन्देशाः',
'newmessagesdifflink' => 'अन्तिमं परिवर्तनम्',
-'youhavenewmessagesfromusers' => 'à¤à¤µà¤¦à¤°à¥\8dथà¤\82 {{PLURAL:$3|à¤\85नà¥\8dयसà¥\8dमातà¥\8d सदसà¥\8dयातà¥\8d सनà¥\8dदà¥\87शà¥\8bऽसà¥\8dति।|$3 à¤\85नà¥\8dयà¥\87à¤à¥\8dयà¤\83 सदसà¥\8dयà¥\87à¤à¥\8dयà¤\83 सनà¥\8dदà¥\87शाà¤\83 सनà¥\8dति।}}। (सदà¥\8dयà¤\83 परिवरà¥\8dतनमà¥\8d।)',
+'youhavenewmessagesfromusers' => 'à¤à¤µà¤¦à¤°à¥\8dथमà¥\8d {{PLURAL:$3|à¤\85नà¥\8dयसà¥\8dमातà¥\8d सदसà¥\8dयातà¥\8d|$3 सदसà¥\8dयà¥\87à¤à¥\8dयà¤\83}} $1 à¤\85सà¥\8dति ($2)।',
'youhavenewmessagesmanyusers' => 'नैकेभ्यः योजकेभ्यः ते $1 सन्ति $2 ।',
'newmessageslinkplural' => '{{PLURAL:$1|नूतनः सन्देशः|नूतनसन्देशाः}}',
'newmessagesdifflinkplural' => 'सद्यः {{PLURAL:$1|परिवर्तनम्|परिवर्तनानि}}',
'loginlanguagelabel' => 'भाषा : $1',
'suspicious-userlogout' => 'भवतः सत्राद् बहिर्गमनस्य अनुरोधः अस्वीकृतोऽस्ति, यस्मादेतत् भग्नादेकस्मात् ब्राउज़र्तः अथवा स्वल्पसञ्चयि-प्रॉक्सितः प्रेषित आसीत्।',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'पीएच्पी इत्येतस्य mail() फलने अज्ञाता काऽपि त्रुटिर्जाता।',
'user-mail-no-addy' => 'ईपत्रसङ्केतं विना ईपत्रप्रेषणस्य प्रयासः कृतः ।',
'prefs-displaywatchlist' => 'प्रदर्शनविकल्पाः',
'prefs-diffs' => 'अन्तरम्',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'प्रयुक्तः विद्युन्मानपत्रसङ्केतः मानितः ।',
'email-address-validity-invalid' => 'मान्यः विद्युन्मानपत्रसङ्केतः योजनीयः ।',
'listgrouprights-addgroup-self-all' => 'स्वस्थाने सर्वसमूहान योजयतु ।',
'listgrouprights-removegroup-self-all' => 'स्वस्थानात् सर्वसमूहान् अपनयतु ।',
-# E-mail user
+# Email user
'mailnologin' => 'सम्प्रेषणस्य सङ्केतः नास्ति ।',
'mailnologintext' => 'अस्य योजकेभ्यः विद्युन्मानपत्रप्रेषणार्थम् [[Special:UserLogin|नामाभिलेखनम्]] आवश्यकम् [[Special:Preferences|आद्यता]]यां प्रेषयितुं विद्युन्मानपत्रसङ्केतः आवश्यकः ।',
'emailuser' => 'एतस्मै योजकाय ईपत्रं प्रेष्यताम्',
'monthsall' => 'सर्वाणि',
'limitall' => 'सर्वाणि',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ईपत्रसङ्केतः प्रमाणीक्रियताम्',
'confirmemail_noemail' => 'भवतः योजकाद्यतायां व्यवस्थापितः विद्युन्मानपत्रसङ्केतः मान्यं नाश्ति । [[Special:Preferences|user preferences]]',
'confirmemail_text' => '{{SITENAME}} इत्यत्र विद्युन्मानसुविधोपयोगात् पूर्वं भवतः विद्युन्मानपत्रसङ्केतं मान्यं करोतु ।
'listgrouprights-addgroup-self-all' => 'Junci tutti li gruppa ô propriu account',
'listgrouprights-removegroup-self-all' => 'Può livari tutti li gruppi dô propriu account',
-# E-mail user
+# Email user
'mailnologin' => 'Nuddu ndirizzu cui mannari lu missaggiu',
'mailnologintext' => 'Hai a fari lu [[Special:UserLogin|login]] e aver riggistratu na casella e-mail vàlida ntê tò [[Special:Preferences|prifirenzi]] pi mannari posta alittrònica a àutri Utenti.',
'emailuser' => "Manna n'imail a stu utenti",
'namespacesall' => 'Tutti',
'monthsall' => 'tutti',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Cunferma ndirizzu e-mail',
'confirmemail_noemail' => 'Nun hà statu ndicatu un ndirizzu e-mail vàlidu ntê propi [[Special:Preferences|prifirenzi]].',
'confirmemail_text' => "Stu situ richiedi la virìfica di l ndirizzu e-mail prima di putiri usari li funzioni cunnessi a l'email. Prèmiri lu pulsanti ccà sutta pi mannari na richiesta di cunferma a lu propiu ndirizzu; ntô missaggiu è prisenti un culligamenti ca cunteni un còdici. Visitari lu culligamentu cu lu propiu browser pi cunfirmari ca lu ndirizzu e-mail è vàlidu.",
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer je poslan preko pokvarenog preglednika ili keširanog proksija.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Nepoznata greška u PHP funkciji mail()',
'user-mail-no-addy' => 'Pokušaj slanja e-maila bez e-mail adrese.',
'user-mail-no-body' => 'Pokušano slanje e-maila s praznim ili nerazumno kratkim sadržajem.',
'prefs-displaywatchlist' => 'Postavke prikaza',
'prefs-diffs' => 'Razlike',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mail adresa izgleda valjano',
'email-address-validity-invalid' => 'Unesite valjanu e-mail adresu',
'listgrouprights-addgroup-self-all' => 'Može dodati sve grupe na svoj račun',
'listgrouprights-removegroup-self-all' => 'Može ukloniti sve grupe sa svog računa',
-# E-mail user
+# Email user
'mailnologin' => 'Nema adrese za slanje',
'mailnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] i imati ispravnu adresu e-pošte u vašim [[Special:Preferences|podešavanjima]] da biste slali e-poštu drugim korisnicima.',
'emailuser' => 'Pošalji E-mail ovom korisniku',
'monthsall' => 'sve',
'limitall' => 'sve',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
'confirmemail_noemail' => 'Niste unijeli tačnu e-mail adresu u Vaše [[Special:Preferences|korisničke postavke]].',
'confirmemail_text' => 'Ova viki zahtjeva da potvrdite adresu Vaše e-pošte prije nego što koristite mogućnosti e-pošte. ž
'loginlanguagelabel' => 'Jazyk: $1',
'suspicious-userlogout' => 'Vaša požiadavka odhlásiť sa bola zamietnutá, pretože to vyzerá, že ju poslal pokazený prehliadač alebo proxy server.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Neznáma chyba vo funkcii PHP mail()',
'user-mail-no-addy' => 'Pokus o odoslanie e-mailu bez e-mailovej adresy.',
'prefs-displaywatchlist' => 'Možnosti zobrazenia',
'prefs-diffs' => 'Rozdiely',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Formát e-mailovej adresa vyzerá byť správny',
'email-address-validity-invalid' => 'Zadajte platnú e-mailovú adresu',
'listgrouprights-addgroup-self-all' => 'Do vlastného účtu je možné pridať všetky skupiny',
'listgrouprights-removegroup-self-all' => 'Z vlastného účtu je možné odstrániť všetky skupiny',
-# E-mail user
+# Email user
'mailnologin' => 'Žiadna adresa na zaslanie',
'mailnologintext' => 'Musíte byť [[Special:UserLogin|prihlásený]] a mať platnú e-mailovú adresu vo vašich [[Special:Preferences|nastaveniach]], aby ste mohli iným používateľom posielať e-maily.',
'emailuser' => 'E-mail tomuto používateľovi',
'monthsall' => 'všetky',
'limitall' => 'všetky',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potvrdiť e-mailovú adresu',
'confirmemail_noemail' => 'Nenastavili ste platnú emailovú adresu vo svojich [[Special:Preferences|Nastaveniach]].',
'confirmemail_text' => '{{SITENAME}} vyžaduje, aby ste potvrdili platnosť vašej e-mailovej adresy
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaša zahteva za odjavo je bila zavrnjena, saj kaže, da je bila poslana iz pokvarjenega brskalnika ali proxyja s predpomnilnikom.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Neznana napaka v funkciji PHP mail()',
'user-mail-no-addy' => 'Poskušal poslati e-pošto brez e-poštnega naslova',
'user-mail-no-body' => 'Poskušali ste poslati e-pošto s prazno ali nerazumno kratko vsebino.',
'prefs-displaywatchlist' => 'Možnosti prikaza',
'prefs-diffs' => 'Primerjave',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Izgleda veljaven',
'email-address-validity-invalid' => 'Obvezen je veljaven naslov!',
Namesto tega bi morda bilo bolje, da se povezujejo na primernejše strani.<br />
Stran se obravnava kot razločitvena, če uporablja predloge, povezane z [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Strani z lastnostmi strani',
+'pageswithprop-text' => 'Stran navaja vse strani, ki uporabljajo določene lastnosti strani.',
+'pageswithprop-prop' => 'Ime lastnosti:',
+
'doubleredirects' => 'Dvojne preusmeritve',
'doubleredirectstext' => 'Ta stran navaja strani, ki se preusmerjajo na druge preusmeritvene strani.
Vsaka vrstica vsebuje povezavo do prve in druge preusmeritve, kakor tudi do cilja druge preusmeritve, ki je po navadi »prava« ciljna stran, na katero naj bi kazala prva preusmeritev.
'listgrouprights-addgroup-self-all' => 'Lastni račun dodaj v vse skupine',
'listgrouprights-removegroup-self-all' => 'Lastni račun odstrani iz vseh skupin',
-# E-mail user
+# Email user
'mailnologin' => 'Manjka naslov pošiljatelja',
'mailnologintext' => 'Za pošiljanje e-pošte drugim uporabnikom se [[Special:UserLogin|prijavite]] in v [[Special:Preferences|nastavitvah]] vpišite veljaven e-poštni naslov.',
'emailuser' => 'Pošlji uporabniku e-pismo',
'dellogpage' => 'Dnevnik brisanja',
'dellogpagetext' => 'Spodaj je prikazan seznam nedavnih brisanj.',
'deletionlog' => 'dnevnik brisanja',
-'reverted' => 'Vrnjeno na prejšnje urejanje.',
+'reverted' => 'Vrnjeno na prejšnjo redakcijo.',
'deletecomment' => 'Razlog:',
'deleteotherreason' => 'Drugi/dodatni razlogi:',
'deletereasonotherlist' => 'Drug razlog',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
'video-dims' => '$1, $2 × $3',
'seconds-abbrev' => '$1 s',
-'minutes-abbrev' => '$1 m',
+'minutes-abbrev' => '$1 min',
'hours-abbrev' => '$1 h',
'days-abbrev' => '$1 d',
'seconds' => '$1 {{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}',
'monthsall' => 'vse',
'limitall' => 'vse',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potrditev naslova elektronske pošte',
'confirmemail_noemail' => 'Nimate določenega veljavnega e-poštnega naslova v vaših [[Special:Preferences|uporabniških nastavitvah]].',
'confirmemail_text' => 'Za uporabo e-poštnih možnosti {{GRAMMAR:rodilnik|{{SITENAME}}}} morate najprej potrditi svoj e-poštni naslov.
'confirm-unwatch-button' => 'V redu',
'confirm-unwatch-top' => 'Odstranim stran z vašega spiska nadzorov?',
+# Separators for various lists, etc.
+'percent' => '$1 %',
+
# Multipage image navigation
'imgmultipageprev' => '← prejšnja stran',
'imgmultipagenext' => 'naslednja stran →',
'duration-centuries' => '$1 {{PLURAL:$1|stoletje|stoletji|stoletja|stoletij}}',
'duration-millennia' => '$1 {{PLURAL:$1|tisočletje|tisočletji|tisočletja|tisočletij}}',
+# Unknown messages
+'pageswithprop-legend' => 'Strani z lastnostmi strani',
+'pageswithprop-submit' => 'Pojdi',
);
'login-abort-generic' => 'Ma u soo gali karin gudaha - waa la noqay',
'loginlanguagelabel' => 'Luqada: $1',
-# E-mail sending
+# Email sending
'user-mail-no-addy' => "Isku dayday in aa dirto e-mail ayada oo ciwaan e-mail la'aan ah.",
# Change password dialog
# Special:ListGroupRights
'listgrouprights-members' => '(Inta ka mid ah liiskooda)',
-# E-mail user
+# Email user
'mailnologin' => "Ma'jiro cinwaan wax lagu diro",
'mailnologintext' => 'Waa in aad [[Special:UserLogin|gudaha ku jirtaa]]
kuna haysatid E-boosto sax ah [[Special:Preferences|dooqyadaada]],
# Rollback
'rollback_short' => 'Soo celi',
'rollbacklink' => 'dib u soo celi',
+'rollbacklinkcount-morethan' => 'soo celinta in kabadan $1 {{PLURAL:$1|badal|badallo}}',
'revertpage' => 'Wuxuu dib u noqay badalkii oo sameeyay [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) kuna celiyay badalkii ka danbeeyay oo sameeyay [[User:$1|$1]]',
'revertpage-nouser' => 'Wuxuu dib u noqay bedelyada (magaca isticmaalaha waa laga saaray) kuna celiyay [[User:$1|$1]]',
'rollback-success' => 'Wuxuu dib u noqay bedelka oo sameeyay $1;
'namespacesall' => 'dhamaan',
'monthsall' => 'Dhamaan',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail_noemail' => 'Kuma haysatid cinwaan E-boosto sax [[Special:Preferences|isticmaala dooqiisa]].',
# action=watch/unwatch
'loginlanguagelabel' => 'Språk: $1',
'suspicious-userlogout' => 'Din begäran om att logga ut nekades eftersom det ser ut som det skickades av en trasig webbläsare eller cachande proxy.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
'user-mail-no-addy' => 'Försökte skicka e-post utan en e-postadress',
'user-mail-no-body' => 'Försökte skicka e-post med tomt eller orimligt kort innehåll.',
'prefs-displaywatchlist' => 'Visningalternativ',
'prefs-diffs' => 'Skillnader',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Ser giltig ut',
'email-address-validity-invalid' => 'Giltig adress krävs!',
De bör troligtvis ändras så att de länkar till en mer passande sida istället.<br />
En sida anses vara en förgreningssida om den inkluderar en mall som länkas till från [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Sidor med en sidegenskap',
+'pageswithprop-text' => 'Denna sida listar sidor som använder en speciell sidegenskap.',
+'pageswithprop-prop' => 'Egenskapsnamn:',
+
'doubleredirects' => 'Dubbla omdirigeringar',
'doubleredirectstext' => 'Det här är en lista över sidor som dirigerar om till andra omdirigeringssidor. Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt till målet för den andra omdirigeringen. Målet för den andra omdirigeringen är ofta den "riktiga" sidan, som den första omdirigeringen egentligen ska leda till.
<del>Stryk över</del> poster som har åtgärdats.',
'listgrouprights-addgroup-self-all' => 'Kan lägga till alla grupperna till sitt eget konto',
'listgrouprights-removegroup-self-all' => 'Kan ta bort alla grupperna från sitt eget konto',
-# E-mail user
+# Email user
'mailnologin' => 'Ingen adress att skicka till',
'mailnologintext' => 'För att kunna skicka e-post till andra användare, måste du vara [[Special:UserLogin|inloggad]] och ha angivit en korrekt e-postadress i dina [[Special:Preferences|användarinställningar]].',
'emailuser' => 'Skicka e-post till den här användaren',
'monthsall' => 'alla',
'limitall' => 'alla',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Bekräfta e-postadress',
'confirmemail_noemail' => 'Du har inte angivit någon giltig e-postadress i dina [[Special:Preferences|inställningar]].',
'confirmemail_text' => 'Innan du kan använda {{SITENAME}}s funktioner för e-post måste du bekräfta din e-postadress. Aktivera knappen nedan för att skicka en bekräftelsekod till din e-postadress. Mailet kommer att innehålla en länk, som innehåller en kod. Genom att klicka på den länken eller kopiera den till din webbläsares fönster för webbadresser, bekräftar du att din e-postadress fungerar.',
'duration-centuries' => '$1 {{PLURAL:$1|sekel|sekel}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
+# Unknown messages
+'pageswithprop-legend' => 'Sidor med en sidegenskap',
+'pageswithprop-submit' => 'Gå',
);
'listgrouprights-rights' => 'Priviléjiu',
'listgrouprights-members' => '(lista membru nian)',
-# E-mail user
+# Email user
'emailuser' => "Haruka korreiu eletróniku ba uza-na'in ne'e",
'defemailsubject' => '{{SITENAME}} - korreiu eletróniku husi uza-na\'in "$1"',
'noemailtitle' => "Lá'os diresaun korreiu eletróniku",
'loginlanguagelabel' => 'ภาษา: $1',
'suspicious-userlogout' => 'คำขอล็อกเอาต์ของคุณถูกปฏิเสธเพราะดูเหมือนส่งมาจากเบราว์เซอร์หรือพร็อกซีแคชที่เสีย',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'เกิดข้อผิดพลาดไม่ทราบสาเหตุในฟังก์ชัน mail() ของพีเอชพี',
'user-mail-no-addy' => 'พยายามส่งอีเมลโดยไม่มีที่อยู่อีเมล',
'user-mail-no-body' => 'พยายามส่งอีเมลที่มีเนื้อหาว่างหรือสั้นอย่างไร้เหตุผล',
'prefs-displaywatchlist' => 'ตัวเลือกผลแสดง',
'prefs-diffs' => 'ผลต่าง',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ที่อยู่อีเมลดูถูกต้อง',
'email-address-validity-invalid' => 'ป้อนที่อยู่อีเมลที่ถูกต้อง',
'listgrouprights-addgroup-self-all' => 'เพิ่มทุกกลุ่มเข้าไปในบัญชีนี้',
'listgrouprights-removegroup-self-all' => 'นำทุกกลุ่มออกจากบัญชีนี้',
-# E-mail user
+# Email user
'mailnologin' => 'ไม่มีที่อยู่ส่ง',
'mailnologintext' => 'คุณต้อง[[Special:UserLogin|ล็อกอิน]]และมีที่อยู่อีเมลที่สมเหตุสมผลใน[[Special:Preferences|การตั้งค่า]]ของคุณ ในการส่งอีเมลหาผู้ใช้อื่น',
'emailuser' => 'ส่งอีเมลหาผู้ใช้นี้',
'monthsall' => 'ทั้งหมด',
'limitall' => 'ทั้งหมด',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ยืนยันอีเมล',
'confirmemail_noemail' => 'ไม่ได้ใส่อีเมลในส่วน [[Special:Preferences|การตั้งค่าส่วนตัว]]',
'confirmemail_text' => 'ถ้าต้องการใช้คำสั่งพิเศษในด้านอีเมสล จำเป็นต้องใส่ค่าอีเมลก่อน โดยกดที่ปุ่มด้านล่าง และทางระบบจะส่งไปที่อีเมลนี้ ในอีเมลจะมีลิงก์ซึ่งมีรหัสสำหรับยืนยันอีเมล',
'loginlanguagelabel' => 'Dil: $1',
'suspicious-userlogout' => 'Çıkış isteğiniz reddedildi çünkü bozuk bir tarayıcı ya da önbellekli vekil tarafından gönerilmiş gibi görünüyor.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "PHP's mail() fonksiyonunda bilinmeyen hata",
'user-mail-no-addy' => 'Bir e-posta adresi olmadan e-posta göndermeye çalıştı.',
'italic_tip' => 'Eğik yazı',
'link_sample' => 'Bağlantı başlığı',
'link_tip' => 'İç bağlantı',
-'extlink_sample' => 'http://www.example.com adres açıklaması',
+'extlink_sample' => 'http://www.example.com bağlantı başlığı',
'extlink_tip' => 'Dış bağlantı (Adresin önüne http:// koymayı unutmayın)',
'headline_sample' => 'Başlık metni',
'headline_tip' => '2. seviye başlık',
'revisionasof' => '$1 tarihindeki hâli',
'revision-info' => '$2 tarafından oluşturulmuş $1 tarihli sürüm',
'previousrevision' => '← Önceki hâli',
-'nextrevision' => 'Sonraki hali →',
+'nextrevision' => 'Sonraki hâli →',
'currentrevisionlink' => 'en güncel halini göster',
'cur' => 'fark',
'next' => 'sonraki',
'search-interwiki-default' => '$1 sonuçlar:',
'search-interwiki-more' => '(daha çok)',
'search-relatedarticle' => 'ilgili',
-'mwsuggest-disable' => 'AJAX önerilerini devre dışı bırak',
+'mwsuggest-disable' => 'Arama önerilerini devre dışı bırak',
'searcheverything-enable' => 'Tüm ad alanlarında ara',
'searchrelated' => 'ilgili',
'searchall' => 'hepsi',
'prefs-displaywatchlist' => 'Görüntüleme seçenekleri',
'prefs-diffs' => 'Farklar',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-posta adresi geçerli görünüyor',
'email-address-validity-invalid' => 'Geçerli bir e-posta adresi girin',
'listgrouprights-addgroup-self-all' => 'Kendi hesabına tüm grupları ekleyebilir',
'listgrouprights-removegroup-self-all' => 'Kendi hesabından tüm grupları çıkarabilir',
-# E-mail user
+# Email user
'mailnologin' => 'Gönderi adresi yok.',
'mailnologintext' => 'Diğer kullanıcılara e-posta gönderebilmeniz için [[Special:UserLogin|oturum aç]]malısınız ve [[Special:Preferences|tercihler]] sayfasında geçerli bir e-posta adresiniz olmalı.',
'emailuser' => 'Bu kullanıcıya e-posta gönder',
'nocontribs' => 'Bu kriterlere uyan değişiklik bulunamadı',
'uctop' => '(son)',
'month' => 'Ay:',
-'year' => 'Yıl:',
+'year' => 'Bu yıla kadar (ve önceki yıllar):',
'sp-contributions-newbies' => 'Sadece yeni kullanıcıların katkılarını göster',
'sp-contributions-newbies-sub' => 'Yeni kullanıcılar için',
'monthsall' => 'hepsi',
'limitall' => 'tümü',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'E-posta adresini onayla',
'confirmemail_noemail' => '[[Special:Preferences|Kullanıcı tercihlerinizde]] tanımlanmış uygun bir e-posta adresiniz yok.',
'confirmemail_text' => "Viki'nin e-posta işlevlerini kullanmabilmek için, önce e-posta adresinizin doğrulanması gerekiyor.
'autosumm-blank' => 'Sayfayı boşalttı',
'autosumm-replace' => "Sayfa içeriği '$1' ile değiştiriliyor",
'autoredircomment' => '[[$1]] sayfasına yönlendirildi',
-'autosumm-new' => "Sayfa oluşturdu, içeriği: '$1'",
+'autosumm-new' => 'Yeni sayfa: "$1"',
# Live preview
'livepreview-loading' => 'Yükleniyor...',
* @author AlexSm
* @author Andrijko Z.
* @author Arturyatsko
+ * @author AtUkr
* @author Base
* @author Dim Grits
* @author DixonD
'loginlanguagelabel' => 'Мова: $1',
'suspicious-userlogout' => 'Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Невідома помилка в PHP-mail() функції',
'user-mail-no-addy' => 'Спроба надсилання електронної пошти без зазначеної адреси електронної пошти.',
'user-mail-no-body' => 'Спроба надіслати електронного листа з порожнім або надто коротким вмістом.',
'prefs-displaywatchlist' => 'Налаштування показу',
'prefs-diffs' => 'Різниці версій',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Адреса електронної пошти є чинною',
'email-address-validity-invalid' => 'Введіть чинну адресу електронної пошти',
Ймовірно, вони повинні вказувати на відповідну конкретну статтю.<br />
Сторінка вважається багатозначною, якщо на ній розміщений шаблон, назва якого є на сторінці [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Сторінки з перевизначеними властивостями',
+'pageswithprop-text' => 'Тут перераховані сторінки, у яких були вручну перевизначені окремі властивості.',
+'pageswithprop-prop' => 'Назва властивості:',
+
'doubleredirects' => 'Подвійні перенаправлення',
'doubleredirectstext' => 'На цій сторінці наведено список перенаправлень на інші перенаправлення.
Кожен рядок містить посилання на перше та друге перенаправлення, а також перший рядок тексту другого перенаправлення, що зазвичай містить «реальне» перенаправлення на необхідну сторінку, куди повинно вказувати й перше перенаправлення.
'listgrouprights-addgroup-self-all' => 'Може додавати всі групи до свого облікового запису',
'listgrouprights-removegroup-self-all' => 'може вилучати всі групи зі свого облікового запису',
-# E-mail user
+# Email user
'mailnologin' => 'Відсутня адреса для відправки',
'mailnologintext' => 'Ви повинні [[Special:UserLogin|ввійти до системи]] і мати підтверджену адресу електронної пошти у ваших [[Special:Preferences|налаштуваннях]], щоб мати змогу надсилати електронну пошту іншим користувачам.',
'emailuser' => 'Надіслати листа',
'importinterwiki' => 'Міжвікі імпорт',
'import-interwiki-text' => 'Вкажіть вікі й назву імпортованої сторінки.
Дати змін й імена авторів буде збережено.
-Ð\92Ñ\81Ñ\96 опеÑ\80аÑ\86Ñ\96Ñ\97 межвÑ\96кÑ\96 імпорту реєструються в [[Special:Log/import|відповідному протоколі]].',
+УÑ\81Ñ\96 опеÑ\80аÑ\86Ñ\96Ñ\97 мÑ\96жвÑ\96кÑ\96-імпорту реєструються в [[Special:Log/import|відповідному протоколі]].',
'import-interwiki-source' => 'Вікі/сторінка-джерело',
'import-interwiki-history' => 'Копіювати всю історію змін цієї сторінки',
'import-interwiki-templates' => 'Включити всі шаблони',
'monthsall' => 'всі',
'limitall' => 'усі',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Підтвердження адреси ел. пошти',
'confirmemail_noemail' => 'Ви не зазначили коректну адресу електронної пошти у ваших [[Special:Preferences|налаштуваннях користувача]].',
'confirmemail_text' => 'Вікі-двигун потребує підтвердження адреси електронної пошти перед початком роботи. Натисніть на кнопку, щоб за вказаною адресою одержати листа, який міститиме посилання на спеціальну сторінку, після відкриття якої у браузері адреса електронної пошти буде вважатися підтвердженою.',
'duration-centuries' => '$1 {{PLURAL:$1|століття|століття|століть}}',
'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
+# Unknown messages
+'pageswithprop-legend' => 'Сторінки з перевизначеними властивостями',
+'pageswithprop-submit' => 'Перейти',
);
'listgrouprights-helppage' => 'Help:Guruhlar huquqlari',
'listgrouprights-members' => '(a’zolar ro‘yxati)',
-# E-mail user
+# Email user
'emailuser' => 'Foydalanuvchiga maktub',
'emailuser-title-target' => 'Ushbu {{GENDER:$1|foydalanuvchi}}ga maktub joʻnatish',
'emailuser-title-notarget' => 'Foydalanuvchiga elektron maktub yozish',
'defemailsubject' => '{{SITENAME}} — $1 tomonidan maktub',
'usermaildisabled' => 'Foydalanuvchi elektron pochtasi o‘chirilgan',
'noemailtitle' => 'Elektron pochta manzili mavjud emas',
-'noemailtext' => "Bu foydalanuvchi e-mail manzil ko'rsatgani yo'q.",
+'noemailtext' => 'Bu foydalanuvchi e-mail manzil koʻrsatgani yoʻq.',
'nowikiemailtitle' => 'Maktub joʻnatishga ruxsat yoʻq',
'emailtarget' => 'Oluvchi ishtirokchining ismini kiriting',
'emailusername' => 'Ishtirokchi nomi:',
'loginlanguagelabel' => 'Ngôn ngữ: $1',
'suspicious-userlogout' => 'Đã bỏ qua yêu cầu đăng xuất bạn, hình như được gửi từ trình duyệt hoặc máy proxy nhớ đệm hư.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Lỗi không rõ trong hàm PHP mail()',
'user-mail-no-addy' => 'Không có địa chỉ để gửi thư điện tử đến',
'user-mail-no-body' => 'Không thể gửi thư điện tử rỗng hoặc có nội dung ngắn một cách vô lý.',
'prefs-displaywatchlist' => 'Tùy chọn hiển thị',
'prefs-diffs' => 'Khác biệt',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Có vẻ hợp lệ',
'email-address-validity-invalid' => 'Yêu cầu địa chỉ hợp lệ!',
'listgrouprights-addgroup-self-all' => 'Có thể đưa tài khoản của chính mình vào tất cả các nhóm',
'listgrouprights-removegroup-self-all' => 'Có thể loại tài khoản của chính mình ra khỏi tất cả các nhóm',
-# E-mail user
+# Email user
'mailnologin' => 'Không có địa chỉ gửi thư',
'mailnologintext' => 'Bạn phải [[Special:UserLogin|đăng nhập]] và khai báo một địa chỉ thư điện tử hợp lệ trong phần [[Special:Preferences|tùy chọn cá nhân]] thì mới gửi được thư cho người khác.',
'emailuser' => 'Gửi thư cho người này',
'monthsall' => 'tất cả',
'limitall' => 'tất cả',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Xác nhận thư điện tử',
'confirmemail_noemail' => 'Bạn chưa đưa vào địa chỉ thư điện tử hợp lệ ở [[Special:Preferences|tùy chọn cá nhân]].',
'confirmemail_text' => '{{SITENAME}} đòi hỏi bạn xác minh thư điện tử của mình
'login-abort-generic' => 'An imo paglog-in in diri malinamposon - Naundang',
'loginlanguagelabel' => 'Pinulongan: $1',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Waray kasabti ha kanan PHP mail() function.',
# Change password dialog
'prefs-displaywatchlist' => 'Mga pirilion hiunong han ginpapakita',
'prefs-diffs' => 'Mga kaibhan',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mail address in baga puydi',
# User rights
'listgrouprights-addgroup-all' => 'Igdugang ngatanan nga mga hugpo',
'listgrouprights-removegroup-all' => 'Igtanggal ngatanan nga mga hugpo',
-# E-mail user
+# Email user
'emailuser' => 'Ig-e-mail ini nga gumaramit',
'emailuser-title-target' => 'Ig-E-mail ini nga {{HENERO:$1|gumaramit}}',
'emailuser-title-notarget' => 'Gumaramit han e-mail',
'monthsall' => 'ngatanan',
'limitall' => 'ngatanan',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Igkompirma an e-mail address',
'confirmemail_sent' => 'Ginpadara an kompirmasyon han e-mail.',
'confirmemail_needlogin' => 'Kinahanglanon mo hin $1 para makakompirma han imo e-mail address.',
'loginlanguagelabel' => 'שפראך: $1',
'suspicious-userlogout' => ' אײַער בקשה אַרויסלאָגירן זיך איז אפגעלייגט געווארן ווייַל אייגנטלעך איז זי געשיקט דורך אַ צעבראכענעם בלעטערער אָדער א פראקסי מיט א זאפאס.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'אומבאַקאַנט טעות אין()mail פֿונקציע פֿון PHP.',
'user-mail-no-addy' => 'געפרוווט צו שיקן ע-פּאָסט אָן אַן ע-פּאָסט אַדרעס.',
'user-mail-no-body' => 'האט פרובירט צו שיקן א בליצבריוו וואס זיין אינהאלט איז ליידיק אדער גאר קורץ.',
'prefs-displaywatchlist' => 'ווײַזן אפציעס',
'prefs-diffs' => 'צווישנשיידן',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ע-פּאָסט אַדרעס זעט אויס גילטיק',
'email-address-validity-invalid' => 'לייגט אַרײַן א גילטיקן ע־פאסט אַדרעס',
'listgrouprights-addgroup-self-all' => 'צולייגן אַלע גרופעס צו אייגענער קאנטע',
'listgrouprights-removegroup-self-all' => 'אראָפנעמען אַלע גרופעס פֿון אייגענער קאנטע',
-# E-mail user
+# Email user
'mailnologin' => 'נישטא קיין אדרעס צו שיקן',
'mailnologintext' => 'איר ברויכט זײַן [[Special:UserLogin|אַרײַנלאגירט]] און האָבן א גילטיגן ע־פאסט אַדרעס אין אײַער [[Special:Preferences|פרעפֿערענצן]] צו שיקן ע־פאסט צו אַנדערע באַניצער.',
'emailuser' => 'שיקן ע-פאסט צו דעם באַניצער',
'tooltip-pt-anonlogin' => "עס איז רעקאָמענדירט זיך אײַנשרײַבן; ס'איז אָבער נישט קײַן פֿליכט",
'tooltip-pt-logout' => 'ארויסלאגירן',
'tooltip-ca-talk' => 'שמועס וועגן דעם אינהאַלט בלאַט',
-'tooltip-ca-edit' => "איר קענט ענדערן דעם בלאט. ביטע באניצט דעם ''פֿאָרויסדיקער אויסקוק'' קנעפל בעפֿארן אפהיטן",
+'tooltip-ca-edit' => "איר קענט ענדערן דעם בלאט. ביטע באניצט דעם ''פֿארויסקוק'' קנעפל בעפֿארן אפהיטן",
'tooltip-ca-addsection' => 'אָנהייבן א נײַע אָפטיילונג',
'tooltip-ca-viewsource' => 'דאס איז א פֿארשלאסענער בלאט, איר קענט נאר באַקוקן זיין מקור',
'tooltip-ca-history' => 'פריערדיגע ווערסיעס פון דעם בלאט.',
'spamprotectiontitle' => 'ספעם באשיצונג פילטער',
'spambot_username' => 'מעדיעוויקי ספאם פוצן',
'spam_reverting' => 'צוריקגעשטעלט צו דער לעצטער ווערסיע אן לינקען צו $1',
+'spam_blanking' => 'אלע רעוויזיעס האבן לינקען צו $1, אויסליידיקן',
'spam_deleting' => 'אלע רעוויזיעס האבן לינקען צו $1, אויסמעקן',
# Info page
'pageinfo-robot-noindex' => 'נישט אינדעקסירבאר',
'pageinfo-views' => 'צאַל קוקן',
'pageinfo-watchers' => '!צאָל בלאט אויפֿפאַסער',
+'pageinfo-few-watchers' => 'ווינציקער ווי $1 {{PLURAL:$1|אויפֿפאסער}}',
'pageinfo-redirects-name' => 'ווײַטערפירונגען צו דעם בלאט',
'pageinfo-subpages-name' => 'אונטערבלעטער פון דעם בלאט',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ווײַטערפירונג|ווײַטערפירונגען}}; $3 {{PLURAL:$3|סתם בלאט|סתם בלעטער}})',
'pageinfo-magic-words' => '{{PLURAL:$1|מאגיש ווארט|מאגישע ווערטער}} ($1)',
'pageinfo-hidden-categories' => 'באהאלטענע {{PLURAL:$1|קאטעגאריע|קאטעגאריעס}} ($1)',
'pageinfo-templates' => ' {{PLURAL:$1|אריבערגעשלאסענער מוסטער|אריבערגשלאסענע מוסטערן}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|בלאט|בלעטער}} אריבעגעשלאסן אויף ($1)',
'pageinfo-toolboxlink' => 'בלאַט־אינפֿארמאַציע',
'pageinfo-redirectsto' => 'פירט ווײַטער צו',
'pageinfo-redirectsto-info' => 'אינפֿארמאַציע',
'pageinfo-contentpage' => 'געציילט ווי אן אינהאלט בלאט',
'pageinfo-contentpage-yes' => 'יאָ',
+'pageinfo-protect-cascading' => 'שיצונגען קאסקאדירן פון דאנעט',
'pageinfo-protect-cascading-yes' => 'יאָ',
+'pageinfo-protect-cascading-from' => 'שיצונגען קאסקאדירן פון',
'pageinfo-category-info' => 'קאטעגאריע אינפארמאציע',
'pageinfo-category-pages' => 'צאָל בלעטער',
'pageinfo-category-subcats' => 'צאָל אונטערקאטעגאריעס',
'exif-sharpness' => 'שארף',
'exif-devicesettingdescription' => 'אפאראט שטעלונגען אראפמאלונג',
'exif-imageuniqueid' => 'בילד־ID',
+'exif-gpsversionid' => 'GPS טאַג ווערסיע',
'exif-gpslatituderef' => 'צפון אדער דרום גארטל־ליניע',
'exif-gpslatitude' => 'גארטל־ליניע',
'exif-gpslongituderef' => 'מזרח אדער מערב לענג',
'exif-gpstimestamp' => 'GPS צייט (אטאם־זייגער)',
'exif-gpssatellites' => 'סאטעליטן געניצט פאר מעסטן',
'exif-gpsstatus' => 'אויפנעמער סטאטוס',
+'exif-gpsmeasuremode' => 'מעסטן מאדע',
'exif-gpsdop' => 'מאס פוקנטליכקייט',
'exif-gpsspeedref' => 'גיך איינהייט',
'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
'exif-sharpness-1' => 'ווייך',
'exif-sharpness-2' => 'הארט',
-'exif-subjectdistancerange-0' => '×\90×\95×\9e×\91×\90Ö·×\95×\95×\99סט',
+'exif-subjectdistancerange-0' => '×\90×\95×\9e×\91×\90Ö·×\95×\95×\90×\95סט',
'exif-subjectdistancerange-1' => 'מאקרא',
'exif-subjectdistancerange-2' => 'נאנטע ווייזונג',
'exif-subjectdistancerange-3' => 'ווײַטע ווײַזונג',
'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|מעטער|מעטער}} איבערן ים־שפיגלl',
'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|מעטער|מעטער}} אונטערן ים־שפיגל',
+'exif-gpsstatus-a' => "מ'האלט אינמיטן מעסטן",
+
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ק"מ אין א שעה',
'exif-gpsspeed-m' => 'מייל פער שעה',
'monthsall' => 'אלע',
'limitall' => 'אַלע',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'באַשטעטיקט בליצפּאָסט אַדרעס',
'confirmemail_noemail' => 'איר האט נישט קיין גוטן בליצבריוו אַדרעס אין אײַער [[Special:Preferences|באניצער פרעפֿערענצן]].',
'confirmemail_text' => 'די וויקי פארלאנגט אז איר זאלט באשטעטיגן אייער בליצפאסט אדרעס איידער איר באניצט זיך מיט דער ע-פאסט באדינסט. דרוקט אויפן קנעפל אונטן כדי צו שיקן א באשטעטיגונג קאד צו אייער אדרעס. לאדט אן דעם לינק אין אייער בלעטערער צו באשטעטיגן אז אייער אדרעס איז גילטיג.',
'version' => 'ווערסיע',
'version-extensions' => 'אינסטאלירטע פארברייטערונגען',
'version-specialpages' => 'ספעציעלע בלעטער',
+'version-parserhooks' => 'פארזער פארברייטונגען',
'version-variables' => 'וואַריאַבלען',
'version-skins' => 'באניצער־אייבערפלאכן',
'version-other' => 'אנדער',
'loginlanguagelabel' => 'Èdè: $1',
'suspicious-userlogout' => 'Ìtọrọ tí ẹ ṣe láti bọ́sóde jẹ̀ kíkọ̀ nítorípé ó dà bí pé ó jẹ́ fífiránṣẹ́ látọ̀dọ̀ awòtakùn (browser) àìdára tàbí ẹ̀rọ-ìwọ̀fà ìmúpamọ́ onígbàdíẹ̀.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Àsìṣe àìmọ̀ nínú ìgbéṣe mail() ti PHP',
'user-mail-no-addy' => 'Ó fẹ́ fi e-mail ránṣẹ́ láìsí àdírẹ́sì e-mail.',
'prefs-displaywatchlist' => 'Ìfihàn àwọn àṣàyàn',
'prefs-diffs' => 'Àwọn ìyàtọ̀',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Àdírẹ́ẹ̀sì e-mail dà bí èyí tótọ́',
'email-address-validity-invalid' => 'Ẹ tẹ e-mail tótọ́',
'listgrouprights-addgroup-self-all' => 'Ìfikún gbogbo ẹgbẹ́ mọ́ àpamọ́ araẹni',
'listgrouprights-removegroup-self-all' => 'Ìyọkúrò gbogbo ẹgbẹ́ kúrò nínú àpamọ́ araẹni',
-# E-mail user
+# Email user
'mailnologin' => 'Kò sí àdírẹ́sì àfiránṣẹ́',
'mailnologintext' => 'Ẹ gbọ́dọ̀ ti [[Special:UserLogin|wọlé]] kí ẹ sì ní àdírẹ́ẹ̀sì e-mail oníìbámu nínú [[Special:Preferences|àwọn ìfẹ́ràn]] yín láti le baà le fi e-mail ránṣẹ́ sí àwọn onísẹ míràn.',
'emailuser' => 'Ẹ fi e-mail ránṣẹ́ sí oníṣe yìí',
'monthsall' => 'gbogbo',
'limitall' => 'gbogbo',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Ṣè'múdájú àdírẹ́ẹ̀sì e-mail",
'confirmemail_noemail' => 'Ẹ kò tíì ṣètò àdírẹ́ẹ̀sì e-mail tó tótọ́ nínú [[Special:Preferences|ìfẹ́ràn oníṣe]] yín.',
'confirmemail_send' => 'Fi àmìọ̀rọ̀ ìmúdájú ránṣẹ́',
'loginlanguagelabel' => '语言:$1',
'suspicious-userlogout' => '注销请求被拒绝,因为它似乎是由有设计缺陷的浏览器或缓存代理发出的。',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => '在 PHP 的 mail() 函数中的未知错误',
'user-mail-no-addy' => '尝试发送邮件而不附带电子邮件地址。',
'user-mail-no-body' => '试图发送空的或者主体短得不合理的电子邮件。',
'passwordreset-text' => '完成该表格以接收你账户信息的邮件提醒。',
'passwordreset-legend' => '重置密码',
'passwordreset-disabled' => '此wiki已经禁用密码重置。',
-'passwordreset-pretext' => '{{PLURAL:$1||输入下面的数据块之一}}',
+'passwordreset-pretext' => '{{PLURAL:$1||输入下面的数据项之一}}',
'passwordreset-username' => '用户名:',
'passwordreset-domain' => '域:',
'passwordreset-capture' => '查看生成的电子邮件吗?',
'prefs-displaywatchlist' => '显示',
'prefs-diffs' => '差异对比',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => '电子邮件地址有效',
'email-address-validity-invalid' => '请输入有效的电子邮件地址',
'disambiguationspage' => 'Template:消歧义',
'disambiguations-text' => "以下的页面都有到'''消歧义页'''的链接,但它们可能可以链接到更适当的页面。<br />一个页面如果使用了[[MediaWiki:Disambiguationspage]]内的模板,则会被视为消歧义页。",
+'pageswithprop-prop' => '属性名称:',
+
'doubleredirects' => '双重重定向页',
'doubleredirectstext' => '本页面列出重定向至其他重定向页的页面。每行含有第一及第二重定向的链接和第二重定向的目标(通常是第一重定向应该指向的“真实”目标页面)。<del>带删除线的</del>条目已被解决。',
'double-redirect-fixed-move' => '[[$1]]已被移动。它现在重定向至[[$2]]。',
'listgrouprights-addgroup-self-all' => '添加所有用户组至自己的账户',
'listgrouprights-removegroup-self-all' => '删除自己的账户的所有用户组',
-# E-mail user
+# Email user
'mailnologin' => '无电子邮件地址',
'mailnologintext' => '你必须[[Special:UserLogin|登录]]并在你的[[Special:Preferences|系统设置]]中拥有有效的电子邮件地址才能向其他用户发送电子邮件。',
'emailuser' => '电邮联系',
'monthsall' => '全部',
'limitall' => '全部',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => '确认邮箱地址',
'confirmemail_noemail' => '你还没有在你的[[Special:Preferences|系统设置]]中设置有效的电子邮件地址。',
'confirmemail_text' => '{{SITENAME}}要求您在使用邮件功能之前验证您的邮箱地址。
'duration-centuries' => '$1个世纪',
'duration-millennia' => '$1千年',
+# Unknown messages
+'pageswithprop-submit' => '提交',
);
'loginlanguagelabel' => '語言:$1',
'suspicious-userlogout' => '您登出的要求已經被拒絕,因為它可能是由已損壞的瀏覽器或者快取代理傳送。',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => '在 PHP 的 mail() 參數中的未知錯誤',
'user-mail-no-addy' => '嘗試不帶電郵地址發送電郵。',
'user-mail-no-body' => '試圖發送空的或主體不合理短的電子郵件。',
'showingresults' => '下面顯示從第 <b>$2</b> 條開始的 <b>$1</b> 條結果:',
'showingresultsnum' => "下面顯示從第 '''$2''' 條開始的 '''{{PLURAL:$3|1|$3}}''' 條結果。",
'showingresultsheader' => "對'''$4'''的{{PLURAL:$5|第'''$1'''至第'''$3'''項結果|第'''$1 - $2'''項,共'''$3'''項結果}}",
-'nonefound' => "'''注意''': 只有一些名字空間是會作為預設搜尋。嘗試''all:''去搜尋全部的頁面(包埋討論頁面、模板等),或可用需要的名字空間作為前綴。",
+'nonefound' => "'''注意:'''只有一些名字空間是會作為預設搜尋。嘗試''all:''去搜尋全部的頁面(包埋討論頁面、模板等),或可用需要的名字空間作為前綴。",
'search-nonefound' => '在查詢中無結果相符。',
'powersearch' => '進階搜尋',
'powersearch-legend' => '進階搜尋',
'prefs-displaywatchlist' => '顯示選項',
'prefs-diffs' => '差異',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => '電子郵件地址有效',
'email-address-validity-invalid' => '請提供一個有效的電子郵件地址',
'listgrouprights-addgroup-self-all' => '在自己的賬戶中加入所有群組',
'listgrouprights-removegroup-self-all' => '在自己的賬戶中移除所有群組',
-# E-mail user
+# Email user
'mailnologin' => '無電郵地址',
'mailnologintext' => '您必須先[[Special:UserLogin|登入]]
並在[[Special:Preferences|偏好設定]]
'monthsall' => '全部',
'limitall' => '全部',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => '確認郵箱位址',
'confirmemail_noemail' => '您沒有在您的[[Special:Preferences|用戶設定]]裡面輸入一個有效的 email 位址。',
'confirmemail_text' => '{{SITENAME}}要求您在使用郵件功能之前驗證您的郵箱位址。
'scarytranscludetoolong' => '[URL 地址太長]',
# Delete conflict
-'deletedwhileediting' => '警告: 此頁在您開始編輯之後已經被刪除﹗',
+'deletedwhileediting' => "'''警告:'''此頁在您開始編輯之後已經被刪除﹗",
'confirmrecreate' => "在您開始編輯這個頁面後,用戶[[User:$1|$1]] ([[User talk:$1|對話]])以下列原因刪除了這個頁面:
: ''$2''
請確認在您重新創建頁面前三思。",
* @file
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
+ * @author Pablo Castellano <pablo@anche.no>
*/
require_once( __DIR__ . '/Maintenance.php' );
*/
class CreateAndPromote extends Maintenance {
+ static $permitRoles = array( 'sysop', 'bureaucrat' );
+
public function __construct() {
parent::__construct();
- $this->mDescription = "Create a new user account";
- $this->addOption( "sysop", "Grant the account sysop rights" );
- $this->addOption( "bureaucrat", "Grant the account bureaucrat rights" );
+ $this->mDescription = "Create a new user account and/or grant it additional rights";
+ $this->addOption( "force", "If acccount exists already, just grant it rights or change password." );
+ foreach( self::$permitRoles as $role ) {
+ $this->addOption( $role, "Add the account to the {$role} group" );
+ }
$this->addArg( "username", "Username of new user" );
- $this->addArg( "password", "Password to set" );
+ $this->addArg( "password", "Password to set (not required if --force is used)", false);
}
public function execute() {
$username = $this->getArg( 0 );
$password = $this->getArg( 1 );
-
- $this->output( wfWikiID() . ": Creating and promoting User:{$username}..." );
+ $force = $this->hasOption( 'force' );
+ $inGroups = array();
$user = User::newFromName( $username );
if ( !is_object( $user ) ) {
$this->error( "invalid username.", true );
- } elseif ( 0 != $user->idForName() ) {
- $this->error( "account exists.", true );
}
- # Try to set the password
- try {
- $user->setPassword( $password );
- } catch ( PasswordError $pwe ) {
- $this->error( $pwe->getText(), true );
+ $exists = ( 0 !== $user->idForName() );
+
+ if ( $exists && !$force ) {
+ $this->error( "Account exists. Perhaps you want the --force option?", true );
+ } else if ( !$exists && !$password ) {
+ $this->error( "Argument <password> required!", false );
+ $this->maybeHelp( true );
+ } else if ( $exists ) {
+ $inGroups = $user->getGroups();
}
- # Insert the account into the database
- $user->addToDatabase();
- $user->saveSettings();
+ $promotions = array_diff( array_filter( self::$permitRoles, array( $this, 'hasOption' ) ), $inGroups );
- # Promote user
- if ( $this->hasOption( 'sysop' ) ) {
- $user->addGroup( 'sysop' );
+ if ( $exists && !$password && count( $promotions ) === 0 ) {
+ $this->output( "Account exists and nothing to do.\n" );
+ return;
+ } else if ( count( $promotions ) !== 0 ) {
+ $promoText = "User:{$username} into " . implode( ', ', $promotions ) . "...\n";
+ if ( $exists ) {
+ $this->output( wfWikiID() . ": Promoting $promoText" );
+ } else {
+ $this->output( wfWikiID() . ": Creating and promoting $promoText" );
+ }
}
- if ( $this->hasOption( 'bureaucrat' ) ) {
- $user->addGroup( 'bureaucrat' );
+
+ if ( $password ) {
+ # Try to set the password
+ try {
+ $user->setPassword( $password );
+ if ( $exists ) {
+ $this->output( "Password set.\n" );
+ $user->saveSettings();
+ }
+ } catch ( PasswordError $pwe ) {
+ $this->error( $pwe->getText(), true );
+ }
}
- # Increment site_stats.ss_users
- $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
- $ssu->doUpdate();
+ if ( !$exists ) {
+ # Insert the account into the database
+ $user->addToDatabase();
+ $user->saveSettings();
+ }
+
+ # Promote user
+ array_map( array( $user, 'addGroup' ), $promotions );
+
+ if ( !$exists ) {
+ # Increment site_stats.ss_users
+ $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
+ $ssu->doUpdate();
+ }
$this->output( "done.\n" );
}
+++ /dev/null
--- good
-ALTER TABLE user_groups ADD CONSTRAINT USER_GROUPS_FK1 FOREIGN KEY (ug_user) REFERENCES user(user_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE user_newtalk ADD CONSTRAINT USER_NEWTALK_FK1 FOREIGN KEY (user_id) REFERENCES user(user_id) ON DELETE CASCADE
-;
-
--- referenced value not found
-ALTER TABLE revision ADD CONSTRAINT REVISION_PAGE_FK FOREIGN KEY (rev_page) REFERENCES page(page_id) ON DELETE CASCADE
-;
--- referenced value not found
-ALTER TABLE revision ADD CONSTRAINT REVISION_USER_FK FOREIGN KEY (rev_user) REFERENCES user(user_id) ON DELETE RESTRICT
-;
-
--- good
-ALTER TABLE page_restrictions ADD CONSTRAINT PAGE_RESTRICTIONS_PAGE_FK FOREIGN KEY (pr_page) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE page_props ADD CONSTRAINT PAGE_PROPS_PAGE_FK FOREIGN KEY (pp_page) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- cannot contain null values
--- ALTER TABLE archive ADD CONSTRAINT ARCHIVE_USER_FK FOREIGN KEY (ar_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- referenced value not found
-ALTER TABLE redirect ADD CONSTRAINT REDIRECT_FROM_FK FOREIGN KEY (rd_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- referenced value not found
-ALTER TABLE pagelinks ADD CONSTRAINT PAGELINKS_FROM_FK FOREIGN KEY (pl_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE templatelinks ADD CONSTRAINT TEMPLATELINKS_FROM_FK FOREIGN KEY (tl_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE imagelinks ADD CONSTRAINT IMAGELINKS_FROM_FK FOREIGN KEY (il_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE categorylinks ADD CONSTRAINT CATEGORYLINKS_FROM_FK FOREIGN KEY (cl_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE externallinks ADD CONSTRAINT EXTERNALLINKS_FROM_FK FOREIGN KEY (el_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- good
-ALTER TABLE langlinks ADD CONSTRAINT LANGLINKS_FROM_FK FOREIGN KEY (ll_from) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
--- cannot contain null values
--- ALTER TABLE ipblocks ADD CONSTRAINT IPBLOCKS_USER_FK FOREIGN KEY (ipb_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- good
-ALTER TABLE ipblocks ADD CONSTRAINT IPBLOCKS_BY_FK FOREIGN KEY (ipb_by) REFERENCES user(user_id) ON DELETE CASCADE
-;
-
--- cannot contain null values
--- ALTER TABLE image ADD CONSTRAINT IMAGE_USER_FK FOREIGN KEY (img_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- cannot contain null values
--- ALTER TABLE oldimage ADD CONSTRAINT OLDIMAGE_USER_FK FOREIGN KEY (oi_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- good
-ALTER TABLE oldimage ADD CONSTRAINT OLDIMAGE_NAME_FK FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE
-;
-
--- cannot contain null values
--- ALTER TABLE filearchive ADD CONSTRAINT FILEARCHIVE_DELETED_USER_FK FOREIGN KEY (fa_deleted_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- cannot contain null values
--- ALTER TABLE filearchive ADD CONSTRAINT FILEARCHIVE_USER_FK FOREIGN KEY (fa_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- cannot contain null values
--- ALTER TABLE recentchanges ADD CONSTRAINT RECENTCHANGES_USER_FK FOREIGN KEY (rc_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- cannot contain null values
--- ALTER TABLE recentchanges ADD CONSTRAINT RECENTCHANGES_CUR_ID_FK FOREIGN KEY (rc_cur_id) REFERENCES page(page_id) ON DELETE SET NULL
---;
-
--- good
-ALTER TABLE watchlist ADD CONSTRAINT WATCHLIST_USER_FK FOREIGN KEY (wl_user) REFERENCES user(user_id) ON DELETE CASCADE
-;
-
--- cannot contain null values
--- ALTER TABLE protected_titles ADD CONSTRAINT PROTECTED_TITLES_USER_FK FOREIGN KEY (pt_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
-
--- cannot contain null values
--- ALTER TABLE logging ADD CONSTRAINT LOGGING_USER_FK FOREIGN KEY (log_user) REFERENCES user(user_id) ON DELETE SET NULL
---;
\ No newline at end of file
+++ /dev/null
---
--- patch-categorylinks-better-collation.sql
---
---
--- Track category inclusions *used inline*
--- This tracks a single level of category membership
--- (folksonomic tagging, really).
---
-CREATE TABLE categorylinks (
- cl_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- cl_to VARCHAR(255) NOT NULL,
- -- cl_sortkey has to be at least 86 wide
- -- in order to be compatible with the old MySQL schema from MW 1.10
- --cl_sortkey VARCHAR(86),
- cl_sortkey VARCHAR(230) FOR BIT DATA NOT NULL ,
- cl_sortkey_prefix VARCHAR(255) FOR BIT DATA NOT NULL ,
- cl_timestamp TIMESTAMP(3) NOT NULL,
- cl_collation VARCHAR(32) FOR BIT DATA NOT NULL ,
- cl_type VARCHAR(6) FOR BIT DATA NOT NULL
-);
+++ /dev/null
-CREATE UNIQUE INDEX change_tag_rc_tag ON change_tag (ct_rc_id,ct_tag);
-CREATE UNIQUE INDEX change_tag_log_tag ON change_tag (ct_log_id,ct_tag);
-CREATE UNIQUE INDEX change_tag_rev_tag ON change_tag (ct_rev_id,ct_tag);
--- Covering index, so we can pull all the info only out of the index.
-CREATE INDEX change_tag_tag_id ON change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+++ /dev/null
--- A table to track tags for revisions, logs and recent changes.
-CREATE TABLE change_tag (
- ct_rc_id INTEGER,
- ct_log_id INTEGER,
- ct_rev_id INTEGER,
- ct_tag varchar(255) NOT NULL,
- ct_params CLOB(64K) INLINE LENGTH 4096
-);
+++ /dev/null
--- Rollup table to pull a LIST of tags simply
-CREATE TABLE tag_summary (
- ts_rc_id INTEGER,
- ts_log_id INTEGER,
- ts_rev_id INTEGER,
- ts_tags CLOB(64K) INLINE LENGTH 4096 NOT NULL
-);
+++ /dev/null
-CREATE TABLE valid_tag (
- vt_tag varchar(255) NOT NULL PRIMARY KEY
-);
+++ /dev/null
-ALTER TABLE categorylinks ADD cl_collation VARCHAR(32) FOR BIT DATA NOT NULL
+++ /dev/null
-ALTER TABLE categorylinks ADD cl_sortkey_prefix VARCHAR(255) FOR BIT DATA NOT NULL
+++ /dev/null
-ALTER TABLE categorylinks ADD cl_type VARCHAR(6) FOR BIT DATA NOT NULL
+++ /dev/null
-CREATE TABLE external_user (
- -- Foreign key to user_id
- eu_local_id BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
-
- -- Some opaque identifier provided by the external database
- eu_external_id VARCHAR(255) NOT NULL
-);
+++ /dev/null
-CREATE TABLE ipblocks (
- ipb_id INTEGER NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- --DEFAULT nextval('ipblocks_ipb_id_val'),
- ipb_address VARCHAR(1024),
- ipb_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- ipb_by BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE CASCADE,
- ipb_by_text VARCHAR(255) NOT NULL DEFAULT '',
- ipb_reason VARCHAR(1024) NOT NULL,
- ipb_timestamp TIMESTAMP(3) NOT NULL,
- ipb_auto SMALLINT NOT NULL DEFAULT 0,
- ipb_anon_only SMALLINT NOT NULL DEFAULT 0,
- ipb_create_account SMALLINT NOT NULL DEFAULT 1,
- ipb_enable_autoblock SMALLINT NOT NULL DEFAULT 1,
- ipb_expiry TIMESTAMP(3) NOT NULL,
- ipb_range_start VARCHAR(1024),
- ipb_range_end VARCHAR(1024),
- ipb_deleted SMALLINT NOT NULL DEFAULT 0,
- ipb_block_email SMALLINT NOT NULL DEFAULT 0,
- ipb_allow_usertalk SMALLINT NOT NULL DEFAULT 0
-
-);
+++ /dev/null
-ALTER TABLE interwiki ADD iw_api CLOB(64K) INLINE LENGTH 4096 NOT NULL
+++ /dev/null
-CREATE TABLE interwiki (
- iw_prefix VARCHAR(32) NOT NULL UNIQUE,
- iw_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- iw_api CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- iw_wikiid varchar(64) NOT NULL,
- iw_local SMALLINT NOT NULL,
- iw_trans SMALLINT NOT NULL DEFAULT 0
-);
+++ /dev/null
-ALTER TABLE interwiki ADD iw_wikiid varchar(64) NOT NULL
+++ /dev/null
-CREATE TABLE "IWLINKS"
-(
-"IWL_FROM" INT NOT NULL ,
-"IWL_PREFIX" VARCHAR(20) FOR BIT DATA NOT NULL ,
-"IWL_TITLE" VARCHAR(255) FOR BIT DATA NOT NULL
-)
-;
+++ /dev/null
-CREATE TABLE l10n_cache (
- -- Language code
- lc_lang VARCHAR(32) NOT NULL,
- -- Cache key
- lc_key VARCHAR(255) NOT NULL,
- -- Value
- lc_value CLOB(16M) INLINE LENGTH 4096 NOT NULL
-);
+++ /dev/null
-CREATE TABLE log_search (
- -- The type of ID (rev ID, log ID, rev TIMESTAMP(3), username)
- ls_field VARCHAR(32) FOR BIT DATA NOT NULL,
- -- The value of the ID
- ls_value varchar(255) NOT NULL,
- -- Key to log_id
- ls_log_id BIGINT NOT NULL default 0
-);
+++ /dev/null
-CREATE TABLE log_search (
- -- The type of ID (rev ID, log ID, rev TIMESTAMP(3), username)
- ls_field VARCHAR(32) FOR BIT DATA NOT NULL,
- -- The value of the ID
- ls_value varchar(255) NOT NULL,
- -- Key to log_id
- ls_log_id BIGINT NOT NULL default 0
-);
+++ /dev/null
-CREATE TABLE logging (
- log_id BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- --PRIMARY KEY DEFAULT nextval('log_log_id_seq'),
- log_type VARCHAR(32) NOT NULL,
- log_action VARCHAR(32) NOT NULL,
- log_timestamp TIMESTAMP(3) NOT NULL,
- log_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- -- Name of the user who performed this action
- log_user_text VARCHAR(255) NOT NULL default '',
- log_namespace SMALLINT NOT NULL,
- log_title VARCHAR(255) NOT NULL,
- log_page BIGINT,
- log_comment VARCHAR(255),
- log_params CLOB(64K) INLINE LENGTH 4096,
- log_deleted SMALLINT NOT NULL DEFAULT 0
-);
+++ /dev/null
-CREATE TABLE "MODULE_DEPS" (
-"MD_MODULE" VARCHAR(255) FOR BIT DATA NOT NULL ,
-"MD_SKIN" VARCHAR(32) FOR BIT DATA NOT NULL ,
-"MD_DEPS" CLOB(16M) INLINE LENGTH 4096 NOT NULL
-)
-;
+++ /dev/null
-CREATE TABLE "MSG_RESOURCE"
-(
-"MR_RESOURCE" VARCHAR(255) FOR BIT DATA NOT NULL ,
-"MR_LANG" VARCHAR(32) FOR BIT DATA NOT NULL ,
-"MR_BLOB" BLOB NOT NULL ,
-"MR_TIMESTAMP" TIMESTAMP(3) NOT NULL
-)
-;
+++ /dev/null
-CREATE TABLE "MSG_RESOURCE_LINKS"
-(
-"MRL_RESOURCE" VARCHAR(255) FOR BIT DATA NOT NULL ,
-"MRL_MESSAGE" VARCHAR(255) FOR BIT DATA NOT NULL
-)
-;
+++ /dev/null
-CREATE TABLE redirect (
- rd_from BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- --REFERENCES page(page_id) ON DELETE CASCADE,
- rd_namespace SMALLINT NOT NULL DEFAULT 0,
- rd_title VARCHAR(255) NOT NULL DEFAULT '',
- rd_interwiki varchar(32),
- rd_fragment VARCHAR(255)
-);
+++ /dev/null
-CREATE TABLE site_stats (
- ss_row_id BIGINT NOT NULL UNIQUE,
- ss_total_views BIGINT DEFAULT 0,
- ss_total_edits BIGINT DEFAULT 0,
- ss_good_articles BIGINT DEFAULT 0,
- ss_total_pages INTEGER DEFAULT -1,
- ss_users INTEGER DEFAULT -1,
- ss_active_users INTEGER DEFAULT -1,
- ss_admins INTEGER DEFAULT -1,
- ss_images INTEGER DEFAULT 0
-);
+++ /dev/null
-CREATE TABLE updatelog (
- ul_key VARCHAR(255) NOT NULL PRIMARY KEY
-);
+++ /dev/null
-CREATE UNIQUE INDEX "UQ61_MSG_RESOURCE_LINKS" ON "MSG_RESOURCE_LINKS"
-(
-"MRL_MESSAGE",
-"MRL_RESOURCE"
-)
-ALLOW REVERSE SCANS
-;
+++ /dev/null
-CREATE UNIQUE INDEX "UQ81_MSG_RESOURCE" ON "MSG_RESOURCE"
-(
-"MR_RESOURCE"
-,"MR_LANG"
-)
-ALLOW REVERSE SCANS
-;
+++ /dev/null
-CREATE UNIQUE INDEX "UQ96_MODULE_DEPS" ON "MODULE_DEPS"
-(
-"MD_MODULE"
-,"MD_SKIN"
-)
-ALLOW REVERSE SCANS
-;
+++ /dev/null
-CREATE TABLE user_properties (
- -- Foreign key to user.user_id
- up_user BIGINT NOT NULL,
-
- -- Name of the option being saved. This is indexed for bulk lookup.
- up_property VARCHAR(32) FOR BIT DATA NOT NULL,
-
- -- Property value as a string.
- up_value CLOB(64K) INLINE LENGTH 4096
-);
+++ /dev/null
--- IBM DB2
-
--- SQL to create the initial tables for the MediaWiki database.
--- This is read and executed by the install script; you should
--- not have to run it by itself unless doing a manual install.
-
--- Notes:
--- * DB2 will convert all table and column names to all caps internally.
--- * DB2 has a 32k limit on SQL filesize, so it may be necessary
--- to split this into two files soon.
-
-
-CREATE TABLE user (
- -- Needs to start with 0
- user_id BIGINT
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
- user_name VARCHAR(255) NOT NULL UNIQUE,
- user_real_name VARCHAR(255),
- user_password VARCHAR(1024),
- user_newpassword VARCHAR(1024),
- user_newpass_time TIMESTAMP(3),
- user_token VARCHAR(255),
- user_email VARCHAR(1024),
- user_email_token VARCHAR(255),
- user_email_token_expires TIMESTAMP(3),
- user_email_authenticated TIMESTAMP(3),
- -- obsolete, replace by user_properties table
- -- user_options CLOB(64K) INLINE LENGTH 4096,
- user_touched TIMESTAMP(3),
- user_registration TIMESTAMP(3),
- user_editcount INTEGER
-);
-CREATE INDEX user_email_token_idx
- ON user (user_email_token);
-CREATE UNIQUE INDEX user_include_idx
- ON user (user_id)
- INCLUDE (user_name, user_real_name, user_password, user_newpassword,
- user_newpass_time, user_token,
- user_email, user_email_token, user_email_token_expires,
- user_email_authenticated,
- user_touched, user_registration, user_editcount);
-CREATE UNIQUE INDEX user_email
- ON user (user_email);
-
-
-
--- Create a dummy user to satisfy fk contraints especially with revisions
-INSERT INTO user(
- user_name, user_real_name, user_password, user_newpassword, user_newpass_time,
- user_email, user_email_authenticated, user_token, user_registration, user_editcount
-)
-VALUES (
- 'Anonymous', '', NULL, NULL, CURRENT_TIMESTAMP,
- NULL, NULL, NULL, CURRENT_TIMESTAMP, 0
-);
-
-
-
-CREATE TABLE user_groups (
- ug_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE CASCADE,
- ug_group VARCHAR(255) NOT NULL
-);
-CREATE INDEX user_groups_unique
- ON user_groups (ug_user, ug_group);
-
-
-
-CREATE TABLE user_newtalk (
- -- registered users key
- user_id BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE CASCADE,
- -- anonymous users key
- user_ip VARCHAR(40),
- user_last_timestamp TIMESTAMP(3)
-);
-CREATE INDEX user_newtalk_id_idx
- ON user_newtalk (user_id);
-CREATE INDEX user_newtalk_ip_idx
- ON user_newtalk (user_ip);
-CREATE UNIQUE INDEX user_newtalk_include_idx
- ON user_newtalk (user_id, user_ip)
- INCLUDE (user_last_timestamp);
-
-
-
-CREATE TABLE page (
- page_id BIGINT
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- page_namespace SMALLINT NOT NULL,
- page_title VARCHAR(255) NOT NULL,
- page_restrictions VARCHAR(1024),
- page_counter BIGINT NOT NULL DEFAULT 0,
- page_is_redirect SMALLINT NOT NULL DEFAULT 0,
- page_is_new SMALLINT NOT NULL DEFAULT 0,
- page_random NUMERIC(15,14) NOT NULL,
- page_touched TIMESTAMP(3),
- page_latest BIGINT NOT NULL, -- FK?
- page_len BIGINT NOT NULL
-);
-CREATE UNIQUE INDEX page_unique_name
- ON page (page_namespace, page_title);
-CREATE INDEX page_random_idx
- ON page (page_random);
-CREATE INDEX page_len_idx
- ON page (page_len);
-CREATE UNIQUE INDEX page_id_include
- ON page (page_id)
- INCLUDE (page_namespace, page_title, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len);
-CREATE UNIQUE INDEX page_name_include
- ON page (page_namespace, page_title)
- INCLUDE (page_id, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len);
-
-
-
-CREATE TABLE revision (
- rev_id BIGINT
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- rev_page BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page (page_id) ON DELETE CASCADE,
- rev_text_id BIGINT, -- FK
- rev_comment VARCHAR(1024),
- rev_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE RESTRICT,
- rev_user_text VARCHAR(255) NOT NULL,
- rev_timestamp TIMESTAMP(3) NOT NULL,
- rev_minor_edit SMALLINT NOT NULL DEFAULT 0,
- rev_deleted SMALLINT NOT NULL DEFAULT 0,
- rev_len BIGINT,
- rev_parent_id BIGINT DEFAULT NULL,
- rev_sha1 VARCHAR(255) NOT NULL DEFAULT ''
-);
-CREATE UNIQUE INDEX revision_unique
- ON revision (rev_page, rev_id);
-CREATE INDEX rev_text_id_idx
- ON revision (rev_text_id);
-CREATE INDEX rev_timestamp_idx
- ON revision (rev_timestamp);
-CREATE INDEX rev_user_idx
- ON revision (rev_user);
-CREATE INDEX rev_user_text_idx
- ON revision (rev_user_text);
-
-
-
-CREATE TABLE text ( -- replaces reserved word 'text'
- old_id INTEGER
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- old_text CLOB(16M) INLINE LENGTH 4096,
- old_flags VARCHAR(1024)
-);
-
-
-
-CREATE TABLE page_restrictions (
- pr_id BIGINT
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- pr_page INTEGER NOT NULL DEFAULT 0,
- --(used to be nullable)
- -- REFERENCES page (page_id) ON DELETE CASCADE,
- pr_type VARCHAR(60) NOT NULL,
- pr_level VARCHAR(60) NOT NULL,
- pr_cascade SMALLINT NOT NULL,
- pr_user INTEGER,
- pr_expiry TIMESTAMP(3)
- --PRIMARY KEY (pr_page, pr_type)
-);
---ALTER TABLE page_restrictions ADD CONSTRAINT page_restrictions_pk PRIMARY KEY (pr_page, pr_type);
-CREATE UNIQUE INDEX pr_pagetype
- ON page_restrictions (pr_page, pr_type);
-CREATE INDEX pr_typelevel
- ON page_restrictions (pr_type, pr_level);
-CREATE INDEX pr_level
- ON page_restrictions (pr_level);
-CREATE INDEX pr_cascade
- ON page_restrictions (pr_cascade);
-
-
-
-CREATE TABLE page_props (
- pp_page INTEGER NOT NULL DEFAULT 0,
- -- REFERENCES page (page_id) ON DELETE CASCADE,
- pp_propname VARCHAR(255) NOT NULL,
- pp_value CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- PRIMARY KEY (pp_page, pp_propname)
-);
-CREATE INDEX page_props_propname
- ON page_props (pp_propname);
-
-
-
-CREATE TABLE archive (
- ar_namespace SMALLINT NOT NULL,
- ar_title VARCHAR(255) NOT NULL,
- ar_text CLOB(16M) INLINE LENGTH 4096,
- ar_comment VARCHAR(1024),
- ar_user BIGINT NOT NULL,
- -- no foreign keys in MySQL
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- ar_user_text VARCHAR(255) NOT NULL,
- ar_timestamp TIMESTAMP(3) NOT NULL,
- ar_minor_edit SMALLINT NOT NULL DEFAULT 0,
- ar_flags VARCHAR(1024),
- ar_rev_id INTEGER,
- ar_text_id INTEGER,
- ar_deleted SMALLINT NOT NULL DEFAULT 0,
- ar_len INTEGER,
- ar_page_id INTEGER,
- ar_parent_id INTEGER,
- ar_sha1 VARCHAR(255) NOT NULL DEFAULT ''
-);
-CREATE INDEX archive_name_title_timestamp
- ON archive (ar_namespace, ar_title, ar_timestamp);
-CREATE INDEX archive_user_text
- ON archive (ar_user_text);
-
-
-
-CREATE TABLE redirect (
- rd_from BIGINT NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- --REFERENCES page(page_id) ON DELETE CASCADE,
- rd_namespace SMALLINT NOT NULL DEFAULT 0,
- rd_title VARCHAR(255) NOT NULL DEFAULT '',
- rd_interwiki VARCHAR(32),
- rd_fragment VARCHAR(255)
-);
-CREATE INDEX redirect_ns_title
- ON redirect (rd_namespace, rd_title, rd_from);
-
-
-CREATE TABLE pagelinks (
- pl_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- pl_namespace SMALLINT NOT NULL,
- pl_title VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX pagelink_unique
- ON pagelinks (pl_from, pl_namespace, pl_title);
-
-
-
-CREATE TABLE templatelinks (
- tl_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- tl_namespace SMALLINT NOT NULL,
- tl_title VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX templatelinks_unique
- ON templatelinks (tl_namespace, tl_title, tl_from);
-CREATE UNIQUE INDEX tl_from_idx
- ON templatelinks (tl_from, tl_namespace, tl_title);
-
-
-
-CREATE TABLE imagelinks (
- il_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- il_to VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX il_from_idx
- ON imagelinks (il_to, il_from);
-CREATE UNIQUE INDEX il_to_idx
- ON imagelinks (il_from, il_to);
-
-
-
-CREATE TABLE categorylinks (
- cl_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- cl_to VARCHAR(255) NOT NULL,
- -- cl_sortkey has to be at least 86 wide
- -- in order to be compatible with the old MySQL schema from MW 1.10
- --cl_sortkey VARCHAR(86),
- cl_sortkey VARCHAR(230) FOR BIT DATA NOT NULL,
- cl_sortkey_prefix VARCHAR(255) FOR BIT DATA NOT NULL,
- cl_timestamp TIMESTAMP(3) NOT NULL,
- cl_collation VARCHAR(32) FOR BIT DATA NOT NULL,
- cl_type VARCHAR(6) FOR BIT DATA NOT NULL
-);
-CREATE UNIQUE INDEX cl_from
- ON categorylinks (cl_from, cl_to);
-CREATE INDEX cl_sortkey
- ON categorylinks (cl_to, cl_sortkey, cl_from);
-
-
-
-CREATE TABLE externallinks (
- el_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- el_to VARCHAR(1024) NOT NULL,
- el_index VARCHAR(1024) NOT NULL
-);
-CREATE INDEX externallinks_from_to
- ON externallinks (el_from, el_to);
-CREATE INDEX externallinks_index
- ON externallinks (el_index);
-
-
-
---
--- Track external user accounts, if ExternalAuth is used
---
-CREATE TABLE external_user (
- -- Foreign key to user_id
- eu_local_id BIGINT NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
-
- -- Some opaque identifier provided by the external database
- eu_external_id VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX eu_external_id_idx
- ON external_user (eu_external_id)
- INCLUDE (eu_local_id);
-CREATE UNIQUE INDEX eu_local_id_idx
- ON external_user (eu_local_id)
- INCLUDE (eu_external_id);
-
-
-
-CREATE TABLE langlinks (
- ll_from BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page (page_id) ON DELETE CASCADE,
- ll_lang VARCHAR(20),
- ll_title VARCHAR(255)
-);
-CREATE UNIQUE INDEX langlinks_unique
- ON langlinks (ll_from, ll_lang);
-CREATE INDEX langlinks_lang_title
- ON langlinks (ll_lang, ll_title);
-
-
-
-CREATE TABLE site_stats (
- ss_row_id BIGINT NOT NULL UNIQUE,
- ss_total_views BIGINT DEFAULT 0,
- ss_total_edits BIGINT DEFAULT 0,
- ss_good_articles BIGINT DEFAULT 0,
- ss_total_pages INTEGER DEFAULT -1,
- ss_users INTEGER DEFAULT -1,
- ss_active_users INTEGER DEFAULT -1,
- ss_admins INTEGER DEFAULT -1,
- ss_images INTEGER DEFAULT 0
-);
-
-
-
-CREATE TABLE hitcounter (
- hc_id BIGINT NOT NULL
-);
-
-
-
-CREATE TABLE ipblocks (
- ipb_id INTEGER NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- ipb_address VARCHAR(1024),
- ipb_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- ipb_by BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE CASCADE,
- ipb_by_text VARCHAR(255) NOT NULL DEFAULT '',
- ipb_reason VARCHAR(1024) NOT NULL,
- ipb_timestamp TIMESTAMP(3) NOT NULL,
- ipb_auto SMALLINT NOT NULL DEFAULT 0,
- ipb_anon_only SMALLINT NOT NULL DEFAULT 0,
- ipb_create_account SMALLINT NOT NULL DEFAULT 1,
- ipb_enable_autoblock SMALLINT NOT NULL DEFAULT 1,
- ipb_expiry TIMESTAMP(3) NOT NULL,
- ipb_range_start VARCHAR(1024),
- ipb_range_end VARCHAR(1024),
- ipb_deleted SMALLINT NOT NULL DEFAULT 0,
- ipb_block_email SMALLINT NOT NULL DEFAULT 0,
- ipb_allow_usertalk SMALLINT NOT NULL DEFAULT 0,
- ipb_parent_block_id INTEGER DEFAULT NULL
- -- REFERENCES ipblocks(ipb_id) ON DELETE SET NULL
-
-);
-CREATE INDEX ipb_address
- ON ipblocks (ipb_address);
-CREATE INDEX ipb_user
- ON ipblocks (ipb_user);
-CREATE INDEX ipb_range
- ON ipblocks (ipb_range_start, ipb_range_end);
-
-
-
-CREATE TABLE image (
- img_name VARCHAR(255) NOT NULL
- PRIMARY KEY,
- img_size BIGINT NOT NULL,
- img_width INTEGER NOT NULL,
- img_height INTEGER NOT NULL,
- img_metadata CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
- img_bits SMALLINT,
- img_media_type VARCHAR(255),
- img_major_mime VARCHAR(255) DEFAULT 'unknown',
- img_minor_mime VARCHAR(32) DEFAULT 'unknown',
- img_description VARCHAR(1024) NOT NULL DEFAULT '',
- img_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- img_user_text VARCHAR(255) NOT NULL DEFAULT '',
- img_timestamp TIMESTAMP(3),
- img_sha1 VARCHAR(255) NOT NULL DEFAULT ''
-);
-CREATE INDEX img_size_idx
- ON image (img_size);
-CREATE INDEX img_timestamp_idx
- ON image (img_timestamp);
-CREATE INDEX img_sha1
- ON image (img_sha1);
-
-
-CREATE TABLE oldimage (
- oi_name VARCHAR(255) NOT NULL DEFAULT '',
- oi_archive_name VARCHAR(255) NOT NULL,
- oi_size BIGINT NOT NULL,
- oi_width INTEGER NOT NULL,
- oi_height INTEGER NOT NULL,
- oi_bits SMALLINT NOT NULL,
- oi_description VARCHAR(1024),
- oi_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- oi_user_text VARCHAR(255) NOT NULL,
- oi_timestamp TIMESTAMP(3) NOT NULL,
- oi_metadata CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
- oi_media_type VARCHAR(255),
- oi_major_mime VARCHAR(255) NOT NULL DEFAULT 'unknown',
- oi_minor_mime VARCHAR(255) NOT NULL DEFAULT 'unknown',
- oi_deleted SMALLINT NOT NULL DEFAULT 0,
- oi_sha1 VARCHAR(255) NOT NULL DEFAULT ''
- --FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE
-);
-CREATE INDEX oi_name_timestamp
- ON oldimage (oi_name, oi_timestamp);
-CREATE INDEX oi_name_archive_name
- ON oldimage (oi_name, oi_archive_name);
-CREATE INDEX oi_sha1
- ON oldimage (oi_sha1);
-
-
-
-CREATE TABLE filearchive (
- fa_id INTEGER NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- fa_name VARCHAR(255) NOT NULL,
- fa_archive_name VARCHAR(255),
- fa_storage_group VARCHAR(255),
- fa_storage_key VARCHAR(64) DEFAULT '',
- fa_deleted_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- fa_deleted_timestamp TIMESTAMP(3) NOT NULL,
- fa_deleted_reason VARCHAR(255),
- fa_size BIGINT NOT NULL,
- fa_width INTEGER NOT NULL,
- fa_height INTEGER NOT NULL,
- fa_metadata CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
- fa_bits SMALLINT,
- fa_media_type VARCHAR(255),
- fa_major_mime VARCHAR(255) DEFAULT 'unknown',
- fa_minor_mime VARCHAR(255) DEFAULT 'unknown',
- fa_description VARCHAR(1024) NOT NULL,
- fa_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- fa_user_text VARCHAR(255) NOT NULL,
- fa_timestamp TIMESTAMP(3),
- fa_deleted SMALLINT NOT NULL DEFAULT 0
-);
-CREATE INDEX fa_name_time
- ON filearchive (fa_name, fa_timestamp);
-CREATE INDEX fa_dupe
- ON filearchive (fa_storage_group, fa_storage_key);
-CREATE INDEX fa_notime
- ON filearchive (fa_deleted_timestamp);
-CREATE INDEX fa_nouser
- ON filearchive (fa_deleted_user);
-
-
-
-CREATE TABLE recentchanges (
- rc_id INTEGER NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- rc_timestamp TIMESTAMP(3) NOT NULL,
- rc_cur_time TIMESTAMP(3) NOT NULL,
- rc_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- rc_user_text VARCHAR(255) NOT NULL,
- rc_namespace SMALLINT NOT NULL,
- rc_title VARCHAR(255) NOT NULL,
- rc_comment VARCHAR(255),
- rc_minor SMALLINT NOT NULL DEFAULT 0,
- rc_bot SMALLINT NOT NULL DEFAULT 0,
- rc_new SMALLINT NOT NULL DEFAULT 0,
- rc_cur_id BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES page(page_id) ON DELETE SET NULL,
- rc_this_oldid BIGINT NOT NULL,
- rc_last_oldid BIGINT NOT NULL,
- rc_type SMALLINT NOT NULL DEFAULT 0,
- rc_moved_to_ns SMALLINT,
- rc_moved_to_title VARCHAR(255),
- rc_patrolled SMALLINT NOT NULL DEFAULT 0,
- rc_ip VARCHAR(40), -- was CIDR type
- rc_old_len INTEGER,
- rc_new_len INTEGER,
- rc_deleted SMALLINT NOT NULL DEFAULT 0,
- rc_logid BIGINT NOT NULL DEFAULT 0,
- rc_log_type VARCHAR(255),
- rc_log_action VARCHAR(255),
- rc_params CLOB(64K) INLINE LENGTH 4096
-);
-CREATE INDEX rc_timestamp
- ON recentchanges (rc_timestamp);
-CREATE INDEX rc_namespace_title
- ON recentchanges (rc_namespace, rc_title);
-CREATE INDEX rc_cur_id
- ON recentchanges (rc_cur_id);
-CREATE INDEX new_name_timestamp
- ON recentchanges (rc_new, rc_namespace, rc_timestamp);
-CREATE INDEX rc_ip
- ON recentchanges (rc_ip);
-
-
-
-CREATE TABLE watchlist (
- wl_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE CASCADE,
- wl_namespace SMALLINT NOT NULL DEFAULT 0,
- wl_title VARCHAR(255) NOT NULL,
- wl_notificationtimestamp TIMESTAMP(3)
-);
-CREATE UNIQUE INDEX wl_user_namespace_title
- ON watchlist (wl_namespace, wl_title, wl_user);
-
-
-
-CREATE TABLE interwiki (
- iw_prefix VARCHAR(32) NOT NULL UNIQUE,
- iw_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- iw_api CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- iw_wikiid VARCHAR(64) NOT NULL,
- iw_local SMALLINT NOT NULL,
- iw_trans SMALLINT NOT NULL DEFAULT 0
-);
-
-
-
-CREATE TABLE querycache (
- qc_type VARCHAR(255) NOT NULL,
- qc_value BIGINT NOT NULL,
- qc_namespace INTEGER NOT NULL,
- qc_title VARCHAR(255) NOT NULL
-);
-CREATE INDEX querycache_type_value
- ON querycache (qc_type, qc_value);
-
-
-
-CREATE TABLE querycache_info (
- qci_type VARCHAR(255) UNIQUE NOT NULL,
- qci_timestamp TIMESTAMP(3)
-);
-
-
-
-CREATE TABLE querycachetwo (
- qcc_type VARCHAR(255) NOT NULL,
- qcc_value BIGINT NOT NULL DEFAULT 0,
- qcc_namespace INTEGER NOT NULL DEFAULT 0,
- qcc_title VARCHAR(255) NOT NULL DEFAULT '',
- qcc_namespacetwo INTEGER NOT NULL DEFAULT 0,
- qcc_titletwo VARCHAR(255) NOT NULL DEFAULT ''
-);
-CREATE INDEX querycachetwo_type_value
- ON querycachetwo (qcc_type, qcc_value);
-CREATE INDEX querycachetwo_title
- ON querycachetwo (qcc_type, qcc_namespace, qcc_title);
-CREATE INDEX querycachetwo_titletwo
- ON querycachetwo (qcc_type, qcc_namespacetwo, qcc_titletwo);
-
-
-
-CREATE TABLE objectcache (
- keyname VARCHAR(255) NOT NULL UNIQUE, -- was nullable
- value CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
- exptime TIMESTAMP(3) NOT NULL
-);
-CREATE INDEX objectcacache_exptime
- ON objectcache (exptime);
-
-
-
-CREATE TABLE transcache (
- tc_url VARCHAR(255) NOT NULL UNIQUE,
- tc_contents CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- tc_time TIMESTAMP(3) NOT NULL
-);
-
-
-
-CREATE TABLE logging (
- log_id BIGINT NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- log_type VARCHAR(32) NOT NULL,
- log_action VARCHAR(32) NOT NULL,
- log_timestamp TIMESTAMP(3) NOT NULL,
- log_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- -- Name of the user who performed this action
- log_user_text VARCHAR(255) NOT NULL DEFAULT '',
- log_namespace SMALLINT NOT NULL,
- log_title VARCHAR(255) NOT NULL,
- log_page BIGINT,
- log_comment VARCHAR(255),
- log_params CLOB(64K) INLINE LENGTH 4096,
- log_deleted SMALLINT NOT NULL DEFAULT 0
-);
-CREATE INDEX logging_type_name
- ON logging (log_type, log_timestamp);
-CREATE INDEX logging_user_time
- ON logging (log_timestamp, log_user);
-CREATE INDEX logging_page_time
- ON logging (log_namespace, log_title, log_timestamp);
-CREATE INDEX log_user_type_time
- ON logging (log_user, log_type, log_timestamp);
-CREATE INDEX log_page_id_time
- ON logging (log_page, log_timestamp);
-CREATE UNIQUE INDEX type_action
- ON logging (log_type, log_action, log_timestamp);
-
-
-
-CREATE TABLE trackbacks (
- tb_id INTEGER NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- -- foreign key also in MySQL
- tb_page INTEGER,
- -- REFERENCES page(page_id) ON DELETE CASCADE,
- tb_title VARCHAR(255) NOT NULL,
- tb_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- tb_ex CLOB(64K) INLINE LENGTH 4096,
- tb_name VARCHAR(255)
-);
-CREATE INDEX trackback_page
- ON trackbacks (tb_page);
-
-
-
-CREATE TABLE job (
- job_id BIGINT NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- job_cmd VARCHAR(255) NOT NULL,
- job_namespace SMALLINT NOT NULL,
- job_title VARCHAR(255) NOT NULL,
- job_params CLOB(64K) INLINE LENGTH 4096 NOT NULL
-);
-CREATE INDEX job_cmd_namespace_title
- ON job (job_cmd, job_namespace, job_title);
-
-
-
---TODO
---CREATE FUNCTION add_interwiki (TEXT, INT, SMALLINT) RETURNS INT LANGUAGE SQL AS
---$mw$
--- INSERT INTO interwiki (iw_prefix, iw_url, iw_local) VALUES ($1,$2,$3);
--- SELECT 1;
---$mw$;
-
-
-
--- hack implementation
--- should be replaced with OmniFind, Contains(), etc
-CREATE TABLE searchindex (
- si_page BIGINT NOT NULL,
- si_title VARCHAR(255) NOT NULL DEFAULT '',
- si_text CLOB NOT NULL
-);
-
-
-
--- This table is not used unless profiling is turned on
-CREATE TABLE profiling (
- pf_count INTEGER NOT NULL DEFAULT 0,
- pf_time NUMERIC(18,10) NOT NULL DEFAULT 0,
- pf_memory NUMERIC(18,10) NOT NULL DEFAULT 0,
- pf_name VARCHAR(255) NOT NULL,
- pf_server VARCHAR(255)
-);
-CREATE UNIQUE INDEX pf_name_server
- ON profiling (pf_name, pf_server);
-
-
-
-CREATE TABLE protected_titles (
- pt_namespace INTEGER NOT NULL,
- pt_title VARCHAR(255) NOT NULL,
- pt_user BIGINT NOT NULL DEFAULT 0,
- -- REFERENCES user(user_id) ON DELETE SET NULL,
- pt_reason VARCHAR(1024),
- pt_timestamp TIMESTAMP(3) NOT NULL,
- pt_expiry TIMESTAMP(3),
- pt_create_perm VARCHAR(60) NOT NULL DEFAULT ''
-);
-CREATE UNIQUE INDEX protected_titles_unique
- ON protected_titles (pt_namespace, pt_title);
-
-
-
-CREATE TABLE updatelog (
- ul_key VARCHAR(255) NOT NULL
- PRIMARY KEY
-);
-
-
-
-CREATE TABLE category (
- cat_id INTEGER NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- cat_title VARCHAR(255) NOT NULL,
- cat_pages INTEGER NOT NULL DEFAULT 0,
- cat_subcats INTEGER NOT NULL DEFAULT 0,
- cat_files INTEGER NOT NULL DEFAULT 0,
- cat_hidden SMALLINT NOT NULL DEFAULT 0
-);
-CREATE UNIQUE INDEX category_title
- ON category (cat_title);
-CREATE INDEX category_pages
- ON category (cat_pages);
-
-
-
--- A table to track tags for revisions, logs and recent changes.
-CREATE TABLE change_tag (
- ct_rc_id INTEGER,
- ct_log_id INTEGER,
- ct_rev_id INTEGER,
- ct_tag VARCHAR(255) NOT NULL,
- ct_params CLOB(64K) INLINE LENGTH 4096
-);
-CREATE UNIQUE INDEX change_tag_rc_tag
- ON change_tag (ct_rc_id, ct_tag);
-CREATE UNIQUE INDEX change_tag_log_tag
- ON change_tag (ct_log_id, ct_tag);
-CREATE UNIQUE INDEX change_tag_rev_tag
- ON change_tag (ct_rev_id, ct_tag);
--- Covering index, so we can pull all the info only out of the index.
-CREATE INDEX change_tag_tag_id
- ON change_tag (ct_tag, ct_rc_id, ct_rev_id, ct_log_id);
-
-
-
--- Rollup table to pull a LIST of tags simply
-CREATE TABLE tag_summary (
- ts_rc_id INTEGER,
- ts_log_id INTEGER,
- ts_rev_id INTEGER,
- ts_tags CLOB(64K) INLINE LENGTH 4096 NOT NULL
-);
-CREATE UNIQUE INDEX tag_summary_rc_id
- ON tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX tag_summary_log_id
- ON tag_summary (ts_log_id);
-CREATE UNIQUE INDEX tag_summary_rev_id
- ON tag_summary (ts_rev_id);
-
-
-
-CREATE TABLE valid_tag (
- vt_tag VARCHAR(255) NOT NULL
- PRIMARY KEY
-);
-
-
-
---
--- User preferences and perhaps other fun stuff. :)
--- Replaces the old user.user_options blob, with a couple nice properties:
---
--- 1) We only store non-default settings, so changes to the DEFAULTs
--- are now reflected for everybody, not just new accounts.
--- 2) We can more easily do bulk lookups, statistics, or modifications of
--- saved options since it's a sane table structure.
---
-CREATE TABLE user_properties (
- -- Foreign key to user.user_id
- up_user BIGINT NOT NULL,
- -- Name of the option being saved. This is indexed for bulk lookup.
- up_property VARCHAR(255) FOR BIT DATA NOT NULL,
- -- Property value as a string.
- up_value CLOB(64K) INLINE LENGTH 4096
-);
-CREATE UNIQUE INDEX user_properties_user_property
- ON user_properties (up_user, up_property);
-CREATE INDEX user_properties_property
- ON user_properties (up_property);
-
-CREATE TABLE log_search (
- -- The type of ID (rev ID, log ID, rev TIMESTAMP(3), username)
- ls_field VARCHAR(32) FOR BIT DATA NOT NULL,
- -- The value of the ID
- ls_value VARCHAR(255) NOT NULL,
- -- Key to log_id
- ls_log_id BIGINT NOT NULL DEFAULT 0
-);
-CREATE UNIQUE INDEX ls_field_val
- ON log_search (ls_field, ls_value, ls_log_id);
-CREATE INDEX ls_log_id
- ON log_search (ls_log_id);
-
-
-
--- Table for storing localisation data
-CREATE TABLE l10n_cache (
- -- Language code
- lc_lang VARCHAR(32) NOT NULL,
- -- Cache key
- lc_key VARCHAR(255) NOT NULL,
- -- Value
- lc_value CLOB(16M) INLINE LENGTH 4096 NOT NULL
-);
-CREATE INDEX lc_lang_key
- ON l10n_cache (lc_lang, lc_key);
-
-
-
-CREATE TABLE msg_resource_links
-(
- mrl_resource VARCHAR(255) FOR BIT DATA NOT NULL,
- mrl_message VARCHAR(255) FOR BIT DATA NOT NULL
-);
-CREATE UNIQUE INDEX uq61_msg_resource_links
- ON msg_resource_links (mrl_message, mrl_resource);
--- All DB2 indexes DEFAULT to allowing reverse scans
-
-
-
-CREATE TABLE msg_resource
-(
- mr_resource VARCHAR(255) FOR BIT DATA NOT NULL,
- mr_lang VARCHAR(32) FOR BIT DATA NOT NULL,
- mr_blob CLOB(64K) INLINE LENGTH 4096 NOT NULL,
- mr_timestamp TIMESTAMP(3) NOT NULL
-);
-CREATE UNIQUE INDEX uq81_msg_resource
- ON msg_resource (mr_resource, mr_lang);
--- All DB2 indexes DEFAULT to allowing reverse scans
-
-
-
-CREATE TABLE module_deps (
- md_module VARCHAR(255) FOR BIT DATA NOT NULL,
- md_skin VARCHAR(32) FOR BIT DATA NOT NULL,
- md_deps CLOB(16M) INLINE LENGTH 4096 NOT NULL
-);
-CREATE UNIQUE INDEX uq96_module_deps
- ON module_deps (md_module, md_skin);
--- All DB2 indexes DEFAULT to allowing reverse scans
-
-
-
-CREATE TABLE iwlinks
-(
- iwl_from INTEGER NOT NULL,
- iwl_prefix VARCHAR(20) FOR BIT DATA NOT NULL,
- iwl_title VARCHAR(255) FOR BIT DATA NOT NULL
-);
-
-
-
---
--- Store information about newly uploaded files before they're
--- moved into the actual filestore
---
-CREATE TABLE uploadstash (
- us_id BIGINT NOT NULL
- PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
- -- the user who uploaded the file.
- us_user BIGINT NOT NULL,
- -- file key. this is how applications actually search for the file.
- -- this might go away, or become the primary key.
- us_key VARCHAR(255) NOT NULL,
- -- the original path
- us_orig_path VARCHAR(255) NOT NULL,
- -- the temporary path at which the file is actually stored
- us_path VARCHAR(255) NOT NULL,
- -- which type of upload the file came from (sometimes)
- us_source_type VARCHAR(50),
- -- the date/time on which the file was added
- us_timestamp TIMESTAMP(3) NOT NULL,
- us_status VARCHAR(50) NOT NULL,
- -- file properties from File::getPropsFromPath. these may prove unnecessary.
- --
- us_size BIGINT NOT NULL,
- -- this hash comes from File::sha1Base36(), and is 31 characters
- us_sha1 VARCHAR(31) NOT NULL,
- us_mime VARCHAR(255),
- -- Media type as defined by the MEDIATYPE_xxx constants, should duplicate definition in the image table
- us_media_type VARCHAR(30)
- CONSTRAINT my_constraint
- CHECK (
- us_media_type in (
- 'UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA',
- 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'
- )
- ) DEFAULT NULL,
- -- image-specific properties
- us_image_width BIGINT,
- us_image_height BIGINT,
- us_image_bits INTEGER
-);
--- sometimes there's a delete for all of a user's stuff.
-CREATE INDEX us_user
- ON uploadstash (us_user);
--- pick out files by key, enforce key UNIQUEness
-CREATE UNIQUE INDEX us_key
- ON uploadstash (us_key);
--- the abandoned upload cleanup script needs this
-CREATE INDEX us_timestamp
- ON uploadstash (us_timestamp);
-
-
-
--- Stores the groups the user has once belonged to.
--- The user may still belong these groups. Check user_groups.
-CREATE TABLE user_former_groups (
- ufg_user BIGINT NOT NULL DEFAULT 0,
- ufg_group VARCHAR(16) FOR BIT DATA NOT NULL
-);
-CREATE UNIQUE INDEX ufg_user_group
- ON user_former_groups (ufg_user, ufg_group);
* @file
*/
+if ( PHP_SAPI != 'cli' ) {
+ die( "This filter can only be run from the command line.\n" );
+}
+
$source = file_get_contents( $argv[1] );
$regexp = '#\@var\s+([^\s]+)([^/]+)/\s+(var|public|protected|private)\s+(\$[^\s;=]+)#';
$replac = '${2} */ ${3} ${1} ${4}';
$this->addOption( 'end', 'Ending journal ID', false, true );
$this->addOption( 'posdir', 'Directory to read/record journal positions', false, true );
$this->addOption( 'posdump', 'Just dump current journal position into the position dir.' );
+ $this->addOption( 'postime', 'For position dumps, get the ID at this time', false, true );
$this->addOption( 'verbose', 'Verbose mode', false, false, 'v' );
$this->setBatchSize( 50 );
}
if ( !$this->hasOption( 'posdir' ) ) {
$this->error( "Param posdir required!", 1 );
}
- $id = (int)$src->getJournal()->getCurrentPosition(); // default to 0
+ if ( $this->hasOption( 'postime' ) ) {
+ $id = (int)$src->getJournal()->getPositionAtTime( $this->getOption( 'postime' ) );
+ } else {
+ $id = (int)$src->getJournal()->getCurrentPosition();
+ }
$this->output( "Current journal position is $id.\n" );
if ( file_put_contents( $posFile, $id, LOCK_EX ) !== false ) {
$this->output( "Saved journal position file.\n" );
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
- -moz-box-shadow: 0px 1px 4px #ccc;
- -webkit-box-shadow: 0px 1px 4px #ccc;
- box-shadow: 0px 1px 4px #ccc;
padding: 0 3px;
text-align: center;
font-size: 12px;
$(this).data( '_delayedBindTimerID-' + encEvent + '-' + timeout, timerID );
} );
}
-
+
// Bottom half
$(this).bind( '_delayedBind-' + encEvent + '-' + timeout, data, callback );
} );
},
-
+
/**
* Cancel the timers for delayed events on the selected elements.
*/
}
} );
},
-
+
/**
* Unbind an event bound with delayedBind()
*/
*
* @author Timo Tijhof, 2011-2012
*/
-/*global jQuery, QUnit */
-/*jshint eqeqeq:false, eqnull:false, forin:false */
( function ( $ ) {
'use strict';
e.preventDefault();
return false; // Because the submit is special, return false as well.
}
-
+
// Continue natural browser handling other wise
return true;
} );
( function ( mw, $ ) {
+ // Only a view can be a post-edit.
+ if ( mw.config.get( 'wgAction' ) !== 'view' ) {
+ return;
+ }
+
// Matches EditPage::POST_EDIT_COOKIE_KEY_PREFIX
var cookieKey = mw.config.get( 'wgCookiePrefix' ) + 'PostEditRevision' + mw.config.get( 'wgCurRevisionId' );
*/
get: function ( selection, fallback ) {
var results, i;
+ // If we only do this in the `return` block, it'll fail for the
+ // call to get() from the mutli-selection block.
+ fallback = arguments.length > 1 ? fallback : null;
if ( $.isArray( selection ) ) {
selection = slice.call( selection );
results = {};
- for ( i = 0; i < selection.length; i += 1 ) {
+ for ( i = 0; i < selection.length; i++ ) {
results[selection[i]] = this.get( selection[i], fallback );
}
return results;
}
if ( typeof selection === 'string' ) {
- if ( this.values[selection] === undefined ) {
- if ( fallback !== undefined ) {
- return fallback;
- }
- return null;
+ if ( !hasOwn.call( this.values, selection ) ) {
+ return fallback;
}
return this.values[selection];
}
}
return true;
}
- if ( typeof selection === 'string' && value !== undefined ) {
+ if ( typeof selection === 'string' && arguments.length > 1 ) {
this.values[selection] = value;
return true;
}
var s;
if ( $.isArray( selection ) ) {
- for ( s = 0; s < selection.length; s += 1 ) {
- if ( this.values[selection[s]] === undefined ) {
+ for ( s = 0; s < selection.length; s++ ) {
+ if ( typeof selection[s] !== 'string' || !hasOwn.call( this.values, selection[s] ) ) {
return false;
}
}
return true;
}
- return this.values[selection] !== undefined;
+ return typeof selection === 'string' && hasOwn.call( this.values, selection );
}
};
*
* @private
* @param {string|string[]} dependencies Module name or array of string module names
- * @param {Function} ready Callback to execute when all dependencies are ready
- * @param {Function} error Callback to execute when any dependency fails
+ * @param {Function} [ready] Callback to execute when all dependencies are ready
+ * @param {Function} [error] Callback to execute when any dependency fails
* @param {boolean} [async] If true, load modules asynchronously even if
* document ready has not yet occurred.
*/
return;
}
// Since some modules are not yet ready, queue up a request.
- request( filtered, null, null, async );
+ request( filtered, undefined, undefined, async );
},
/**
':' + ( d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds() ) +
'.' + ( d.getMilliseconds() < 10 ? '00' + d.getMilliseconds() : ( d.getMilliseconds() < 100 ? '0' + d.getMilliseconds() : d.getMilliseconds() ) ),
$log = $( '#mw-log-console' );
-
+
if ( !$log.length ) {
$log = $( '<div id="mw-log-console"></div>' ).css( {
overflow: 'auto',
<!-- jumpto -->
<div id="jump-to-nav" class="mw-jump">
<?php $this->msg( 'jumpto' ) ?>
- <a href="#mw-head"><?php $this->msg( 'jumptonavigation' ) ?></a><?php $this->msg( 'comma-separator' ) ?>
+ <a href="#mw-navigation"><?php $this->msg( 'jumptonavigation' ) ?></a><?php $this->msg( 'comma-separator' ) ?>
<a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
</div>
<!-- /jumpto -->
}
$this->runDisabled = isset( $options['run-disabled'] );
+ $this->runParsoid = isset( $options['run-parsoid'] );
$this->hooks = array();
$this->functionHooks = array();
# language=XXX set content language to XXX for this test
# variant=XXX set the variant of language for this test (eg zh-tw)
# disabled do not run test
+# parsoid parsoid-only test (not run by PHP parser)
+# php php-only test (not run by the parsoid parser)
# showtitle make the first line the title
# comment run through Linker::formatComment() instead of main parser
# local format section links in edit comment text as local links
!!end
-
!! test
Italics and bold: other quote tests: (3,(2,2),3)
!! input
</p>
!!end
+
+!! test
+Italicized possessive
+!! input
+The ''[[Main Page]]'''s talk page.
+!! result
+<p>The <i><a href="/wiki/Main_Page" title="Main Page">Main Page</a>'</i>s talk page.
+</p>
+!! end
+
###
### <nowiki> test cases
###
!! test
Definition Lists: Nesting: Multi-level (Parsoid only)
!! options
-disabled
+parsoid
!! input
;t1 :d1
;;t2 ::d2
!! test
Definition Lists: Nesting: Test 2 (Parsoid only)
!! options
-disabled
+parsoid
!! input
;t1
::d2
!! test
Definition Lists: Nesting: Test 3 (Parsoid only)
!! options
-disabled
+parsoid
!! input
:;t1
::::d2
</p>
!! end
+!! test
+External links: link text with spaces
+!! input
+[http://www.example.com a b c]
+[http://www.example.com ''a'' ''b'']
+!! result
+<p><a rel="nofollow" class="external text" href="http://www.example.com">a b c</a>
+<a rel="nofollow" class="external text" href="http://www.example.com"><i>a</i> <i>b</i></a>
+</p>
+!! end
+
!! test
External links: wiki links within external link (Bug 3695)
!! input
</p>
!! end
-!!test
-Text in square brackets that is not a link should parse as text
-!!input
-[foo]
-[{{echo|foo}}]
-[url={{echo|foo}}]
-[url=http://example.com]
-!!result
-<p>[foo]
-[foo]
-[url=foo]
-[url=<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>]
-</p>
-!!end
-
!! test
URL-encoding in URL functions (single parameter)
!! input
[{{echo|foo}} ''bar'']
[{{echo|foo}}l's] errand
[{{echo|foo}}l's errand]
+[url={{echo|foo}}]
+[url=http://example.com]
!! result
<p>[foo]
[foo bar]
[foo <i>bar</i>]
[fool's] errand
[fool's errand]
+[url=foo]
+[url=<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>]
</p>
!! end
List embedded in a non-block tag
(Ugly Parsoid output -- worth fixing; Disabled for PHP parser since it relies on Tidy)
!! options
-disabled
+parsoid
!!input
<small>
* foo
!!end
!!test
-Templates: Wiki Tables: 1. Fostering of entire template content
+Templates: Wiki Tables: 1a. Fostering of entire template content
!!input
{|
{{echo|a}}
!!end
+!!test
+Templates: Wiki Tables: 1b. Fostering of entire template content
+!!input
+{|
+{{echo|<div>}}
+foo
+{{echo|</div>}}
+|}
+!!result
+<table>
+<div>
+<p>foo
+</p>
+</div>
+<tr><td></td></tr></table>
+
+!!end
+
!!test
Templates: Wiki Tables: 2. Fostering of partial template content
!!input
!!end
!!test
-Templates: Wiki Tables: 4. Templated tags, regular td-tags
+Templates: Wiki Tables: 5. Templated tags, regular td-tags
!!input
{{tbl-start}}
|foo
!!end
!!test
-Templates: Wiki Tables: 4. Templated tags, templated td-tags
+Templates: Wiki Tables: 6. Templated tags, templated td-tags
!!input
{{tbl-start}}
{{!}}foo
Templates: Ugly templates: 1. Navbox template parses badly leading to table misnesting
(Parsoid-centric)
!! options
-disabled
+parsoid
!!input
{|
|{{echo|foo</table>}}
Templates: Ugly templates: 2. Navbox template parses badly leading to table misnesting
(Parsoid-centric)
!! options
-disabled
+parsoid
!!input
<table>
<tr>
</p>
!! end
+!! test
+Localized image handling (1).
+!! options
+language=es
+!! input
+[[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]]
+!! result
+<div class="floatleft"><a href="/wiki/Foo" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+
+!! end
+
+!! test
+Localized image handling (2).
+!! options
+language=es
+!! input
+[[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]]
+!! result
+<div class="thumb tleft"><div class="thumbinner" style="width:182px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+
+!! end
+
+!! test
+"border", "frameless" and "class" attributes on an image.
+!! input
+[[File:Foobar.jpg|frameless|border|class=extra|caption]]
+!! result
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="extra thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+</p>
+!! end
+
!! article
File:Barfoo.jpg
!! text
!! test
Parsoid-only: HTML tag with broken attribute value quoting
!! options
-disabled
+parsoid
!! input
<span title="Hello world>Foo</span>
!! result
!! test
Parsoid-only: Table with broken attribute value quoting on consecutive lines
!! options
-disabled
+parsoid
!! input
{|
| title="Hello world|Foo
<table>
<tr>
<td title="Hello world">Foo
-</td><td style="color: red;">Bar
+</td><td style="color: red">Bar
</td></tr></table>
!! end
!!end
+!!test
+Empty table rows go away
+!!input
+{|
+| Hello
+| there
+|- class="foo"
+|-
+|}
+!! result
+<table>
+<tr>
+<td> Hello
+</td>
+<td> there
+</td></tr>
+
+</table>
+
+!! end
+
TODO:
more images
more tables
* @ingroup Testing
*/
-$otions = array( 'quick', 'color', 'quiet', 'help', 'show-output', 'record', 'run-disabled' );
+$otions = array( 'quick', 'color', 'quiet', 'help', 'show-output', 'record', 'run-disabled', 'run-parsoid' );
$optionsWithArgs = array( 'regex', 'filter', 'seed', 'setversion' );
require_once( __DIR__ . '/../maintenance/commandLine.inc' );
--seed <n> Start the fuzz test from the specified seed
--help Show this help message
--run-disabled run disabled tests
+ --run-parsoid run parsoid tests (normally disabled)
ENDS;
exit( 0 );
$testClassRegex = implode( '|', array(
'ApiFormatTestBase',
'ApiTestCase',
+ 'ApiQueryTestBase',
+ 'ApiQueryContinueTestBase',
'MediaWikiLangTestCase',
'MediaWikiTestCase',
'PHPUnit_Framework_TestCase',
array( TS_RFC2822, 'Tue, 31 Jul 2012 19:01:08 GMT', '20120731190108' ),
array( TS_ORACLE, '31-07-2012 19:01:08.000000', '20120731190108' ),
array( TS_POSTGRES, '2012-07-31 19:01:08 GMT', '20120731190108' ),
- array( TS_DB2, '2012-07-31 19:01:08', '20120731190108' ),
// Some extremes and weird values
array( TS_ISO_8601, '9999-12-31T23:59:59Z', '99991231235959' ),
array( TS_UNIX, '-62135596801', '00001231235959' )
*/
class ApiCreateAccountTest extends ApiTestCase {
function setUp() {
- global $wgHooks;
parent::setUp();
LoginForm::setCreateaccountToken();
-
- $hooks = $wgHooks;
- Hooks::clear( 'AlternateUserMailer' );
- $hooks['AlternateUserMailer'] = array( function () { return false; } );
- $this->setMwGlobals( array( 'wgHooks' => $hooks ) );
+ $this->setMwGlobals( array( 'wgEnableEmail' => true ) );
}
/**
* @expectedException UsageException
*/
function testInvalidEmail() {
- global $wgEnableEmail;
- if ( !$wgEnableEmail ) {
- $this->markTestSkipped( 'email is not enabled, so createaccount does not check it' );
- }
$this->doApiRequest( array(
'action' => 'createaccount',
'name' => 'Test User',
* http://www.gnu.org/copyleft/gpl.html
*
* @file
- *
- * These tests validate basic functionality of the api query module
+ */
+
+require_once( 'ApiQueryTestBase.php' );
+
+/** These tests validate basic functionality of the api query module
*
* @group API
* @group Database
* @group medium
*/
-class ApiQueryBasicTest extends ApiTestCase {
+class ApiQueryBasicTest extends ApiQueryTestBase {
/**
* Create a set of pages. These must not change, otherwise the tests might give wrong results.
* @see MediaWikiTestCase::addDBData()
self::$categorymembers ) );
}
- /**
- * Merges all requests (parameter arrays) into one
- * @return array
- */
- private function merge( /*...*/ ) {
- $request = array();
- $expected = array();
- foreach ( func_get_args() as $v ) {
- $request = array_merge_recursive( $request, $v[0] );
- $this->mergeExpected( $expected, $v[1] );
- }
- return array( $request, $expected );
- }
-
/**
* Recursively merges the expected values in the $item into the $all
*/
}
}
- /**
- * Checks that the request's result matches the expected results.
- * @param $values array is a two element array( request, expected_results )
- * @throws Exception
- */
- private function check( $values ) {
- $request = $values[0];
- $expected = $values[1];
- if ( !array_key_exists( 'action', $request ) ) {
- $request['action'] = 'query';
- }
- foreach ( $request as &$val ) {
- if ( is_array( $val ) ) {
- $val = implode( '|', array_unique( $val ) );
- }
- }
- $result = $this->doApiRequest( $request );
- $result = $result[0];
- $expected = array( 'query' => $expected );
- try {
- $this->assertQueryResults( $expected, $result );
- } catch ( Exception $e ) {
- print( "\nRequest:\n" );
- print_r( $request );
- print( "\nExpected:\n" );
- print_r( $expected );
- print( "\nResult:\n" );
- print_r( $result );
- throw $e; // rethrow it
- }
- }
-
/**
* Recursively compare arrays, ignoring mismatches in numeric key and pageids.
* @param $expected array expected values
--- /dev/null
+<?php
+/**
+ * Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
+ *
+ * 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 3 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
+ */
+
+require_once( 'ApiQueryContinueTestBase.php' );
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiQueryContinue2Test extends ApiQueryContinueTestBase {
+ /**
+ * Create a set of pages. These must not change, otherwise the tests might give wrong results.
+ * @see MediaWikiTestCase::addDBData()
+ */
+ function addDBData() {
+ try {
+ $this->editPage( 'AQCT73462-A', '**AQCT73462-A** [[AQCT73462-B]] [[AQCT73462-C]]' );
+ $this->editPage( 'AQCT73462-B', '[[AQCT73462-A]] **AQCT73462-B** [[AQCT73462-C]]' );
+ $this->editPage( 'AQCT73462-C', '[[AQCT73462-A]] [[AQCT73462-B]] **AQCT73462-C**' );
+ $this->editPage( 'AQCT73462-A', '**AQCT73462-A** [[AQCT73462-B]] [[AQCT73462-C]]' );
+ $this->editPage( 'AQCT73462-B', '[[AQCT73462-A]] **AQCT73462-B** [[AQCT73462-C]]' );
+ $this->editPage( 'AQCT73462-C', '[[AQCT73462-A]] [[AQCT73462-B]] **AQCT73462-C**' );
+ } catch ( Exception $e ) {
+ $this->exceptionFromAddDBData = $e;
+ }
+ }
+
+ /**
+ * @medium
+ */
+ public function testA() {
+ $this->mVerbose = false;
+ $mk = function( $g, $p, $gDir ) {
+ return array(
+ 'generator' => 'allpages',
+ 'gapprefix' => 'AQCT73462-',
+ 'prop' => 'links',
+ 'gaplimit' => "$g",
+ 'pllimit' => "$p",
+ 'gapdir' => $gDir ? "ascending" : "descending",
+ );
+ };
+ // generator + 1 prop + 1 list
+ $data = $this->query( $mk(99,99,true), 1, 'g1p', false );
+ $this->checkC( $data, $mk(1,1,true), 6, 'g1p-11t' );
+ $this->checkC( $data, $mk(2,2,true), 3, 'g1p-22t' );
+ $this->checkC( $data, $mk(1,1,false), 6, 'g1p-11f' );
+ $this->checkC( $data, $mk(2,2,false), 3, 'g1p-22f' );
+ }
+}
--- /dev/null
+<?php
+/**
+ * Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
+ *
+ * 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
+ */
+
+require_once( 'ApiQueryContinueTestBase.php' );
+
+/**
+ * These tests validate the new continue functionality of the api query module by
+ * doing multiple requests with varying parameters, merging the results, and checking
+ * that the result matches the full data received in one no-limits call.
+ *
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiQueryContinueTest extends ApiQueryContinueTestBase {
+ /**
+ * Create a set of pages. These must not change, otherwise the tests might give wrong results.
+ * @see MediaWikiTestCase::addDBData()
+ */
+ function addDBData() {
+ try {
+ $this->editPage( 'Template:AQCT-T1', '**Template:AQCT-T1**' );
+ $this->editPage( 'Template:AQCT-T2', '**Template:AQCT-T2**' );
+ $this->editPage( 'Template:AQCT-T3', '**Template:AQCT-T3**' );
+ $this->editPage( 'Template:AQCT-T4', '**Template:AQCT-T4**' );
+ $this->editPage( 'Template:AQCT-T5', '**Template:AQCT-T5**' );
+
+ $this->editPage( 'AQCT-1', '**AQCT-1** {{AQCT-T2}} {{AQCT-T3}} {{AQCT-T4}} {{AQCT-T5}}' );
+ $this->editPage( 'AQCT-2', '[[AQCT-1]] **AQCT-2** {{AQCT-T3}} {{AQCT-T4}} {{AQCT-T5}}' );
+ $this->editPage( 'AQCT-3', '[[AQCT-1]] [[AQCT-2]] **AQCT-3** {{AQCT-T4}} {{AQCT-T5}}' );
+ $this->editPage( 'AQCT-4', '[[AQCT-1]] [[AQCT-2]] [[AQCT-3]] **AQCT-4** {{AQCT-T5}}' );
+ $this->editPage( 'AQCT-5', '[[AQCT-1]] [[AQCT-2]] [[AQCT-3]] [[AQCT-4]] **AQCT-5**' );
+ } catch ( Exception $e ) {
+ $this->exceptionFromAddDBData = $e;
+ }
+ }
+
+ /**
+ * Test smart continue - list=allpages
+ * @medium
+ */
+ public function test1List() {
+ $this->mVerbose = false;
+ $mk = function( $l ) {
+ return array(
+ 'list' => 'allpages',
+ 'apprefix' => 'AQCT-',
+ 'aplimit' => "$l",
+ );
+ };
+ $data = $this->query( $mk(99), 1, '1L', false );
+
+ // 1 list
+ $this->checkC( $data, $mk(1), 5, '1L-1' );
+ $this->checkC( $data, $mk(2), 3, '1L-2' );
+ $this->checkC( $data, $mk(3), 2, '1L-3' );
+ $this->checkC( $data, $mk(4), 2, '1L-4' );
+ $this->checkC( $data, $mk(5), 1, '1L-5' );
+ }
+
+ /**
+ * Test smart continue - list=allpages|alltransclusions
+ * @medium
+ */
+ public function test2Lists() {
+ $this->mVerbose = false;
+ $mk = function( $l1, $l2 ) {
+ return array(
+ 'list' => 'allpages|alltransclusions',
+ 'apprefix' => 'AQCT-',
+ 'atprefix' => 'AQCT-',
+ 'atunique' => '',
+ 'aplimit' => "$l1",
+ 'atlimit' => "$l2",
+ );
+ };
+ // 2 lists
+ $data = $this->query( $mk(99,99), 1, '2L', false );
+ $this->checkC( $data, $mk(1,1), 5, '2L-11' );
+ $this->checkC( $data, $mk(2,2), 3, '2L-22' );
+ $this->checkC( $data, $mk(3,3), 2, '2L-33' );
+ $this->checkC( $data, $mk(4,4), 2, '2L-44' );
+ $this->checkC( $data, $mk(5,5), 1, '2L-55' );
+ }
+
+ /**
+ * Test smart continue - generator=allpages, prop=links
+ * @medium
+ */
+ public function testGen1Prop() {
+ $this->mVerbose = false;
+ $mk = function( $g, $p ) {
+ return array(
+ 'generator' => 'allpages',
+ 'gapprefix' => 'AQCT-',
+ 'gaplimit' => "$g",
+ 'prop' => 'links',
+ 'pllimit' => "$p",
+ );
+ };
+ // generator + 1 prop
+ $data = $this->query( $mk(99,99), 1, 'G1P', false );
+ $this->checkC( $data, $mk(1,1), 11, 'G1P-11' );
+ $this->checkC( $data, $mk(2,2), 6, 'G1P-22' );
+ $this->checkC( $data, $mk(3,3), 4, 'G1P-33' );
+ $this->checkC( $data, $mk(4,4), 3, 'G1P-44' );
+ $this->checkC( $data, $mk(5,5), 2, 'G1P-55' );
+ }
+
+ /**
+ * Test smart continue - generator=allpages, prop=links|templates
+ * @medium
+ */
+ public function testGen2Prop() {
+ $this->mVerbose = false;
+ $mk = function( $g, $p1, $p2 ) {
+ return array(
+ 'generator' => 'allpages',
+ 'gapprefix' => 'AQCT-',
+ 'gaplimit' => "$g",
+ 'prop' => 'links|templates',
+ 'pllimit' => "$p1",
+ 'tllimit' => "$p2",
+ );
+ };
+ // generator + 2 props
+ $data = $this->query( $mk(99,99,99), 1, 'G2P', false );
+ $this->checkC( $data, $mk(1,1,1), 16, 'G2P-111' );
+ $this->checkC( $data, $mk(2,2,2), 9, 'G2P-222' );
+ $this->checkC( $data, $mk(3,3,3), 6, 'G2P-333' );
+ $this->checkC( $data, $mk(4,4,4), 4, 'G2P-444' );
+ $this->checkC( $data, $mk(5,5,5), 2, 'G2P-555' );
+ $this->checkC( $data, $mk(5,1,1), 10, 'G2P-511' );
+ $this->checkC( $data, $mk(4,2,2), 7, 'G2P-422' );
+ $this->checkC( $data, $mk(2,3,3), 7, 'G2P-233' );
+ $this->checkC( $data, $mk(2,4,4), 5, 'G2P-244' );
+ $this->checkC( $data, $mk(1,5,5), 5, 'G2P-155' );
+ }
+
+ /**
+ * Test smart continue - generator=allpages, prop=links, list=alltransclusions
+ * @medium
+ */
+ public function testGen1Prop1List() {
+ $this->mVerbose = false;
+ $mk = function( $g, $p, $l ) {
+ return array(
+ 'generator' => 'allpages',
+ 'gapprefix' => 'AQCT-',
+ 'gaplimit' => "$g",
+ 'prop' => 'links',
+ 'pllimit' => "$p",
+ 'list' => 'alltransclusions',
+ 'atprefix' => 'AQCT-',
+ 'atunique' => '',
+ 'atlimit' => "$l",
+ );
+ };
+ // generator + 1 prop + 1 list
+ $data = $this->query( $mk(99,99,99), 1, 'G1P1L', false );
+ $this->checkC( $data, $mk(1,1,1), 11, 'G1P1L-111' );
+ $this->checkC( $data, $mk(2,2,2), 6, 'G1P1L-222' );
+ $this->checkC( $data, $mk(3,3,3), 4, 'G1P1L-333' );
+ $this->checkC( $data, $mk(4,4,4), 3, 'G1P1L-444' );
+ $this->checkC( $data, $mk(5,5,5), 2, 'G1P1L-555' );
+ $this->checkC( $data, $mk(5,5,1), 4, 'G1P1L-551' );
+ $this->checkC( $data, $mk(5,5,2), 2, 'G1P1L-552' );
+ }
+
+ /**
+ * Test smart continue - generator=allpages, prop=links|templates,
+ * list=alllinks|alltransclusions, meta=siteinfo
+ * @medium
+ */
+ public function testGen2Prop2List1Meta() {
+ $this->mVerbose = false;
+ $mk = function( $g, $p1, $p2, $l1, $l2 ) {
+ return array(
+ 'generator' => 'allpages',
+ 'gapprefix' => 'AQCT-',
+ 'gaplimit' => "$g",
+ 'prop' => 'links|templates',
+ 'pllimit' => "$p1",
+ 'tllimit' => "$p2",
+ 'list' => 'alllinks|alltransclusions',
+ 'alprefix' => 'AQCT-',
+ 'alunique' => '',
+ 'allimit' => "$l1",
+ 'atprefix' => 'AQCT-',
+ 'atunique' => '',
+ 'atlimit' => "$l2",
+ 'meta' => 'siteinfo',
+ 'siprop' => 'namespaces',
+ );
+ };
+ // generator + 1 prop + 1 list
+ $data = $this->query( $mk(99,99,99,99,99), 1, 'G2P2L1M', false );
+ $this->checkC( $data, $mk(1,1,1,1,1), 16, 'G2P2L1M-11111' );
+ $this->checkC( $data, $mk(2,2,2,2,2), 9, 'G2P2L1M-22222' );
+ $this->checkC( $data, $mk(3,3,3,3,3), 6, 'G2P2L1M-33333' );
+ $this->checkC( $data, $mk(4,4,4,4,4), 4, 'G2P2L1M-44444' );
+ $this->checkC( $data, $mk(5,5,5,5,5), 2, 'G2P2L1M-55555' );
+ $this->checkC( $data, $mk(5,5,5,1,1), 4, 'G2P2L1M-55511' );
+ $this->checkC( $data, $mk(5,5,5,2,2), 2, 'G2P2L1M-55522' );
+ $this->checkC( $data, $mk(5,1,1,5,5), 10, 'G2P2L1M-51155' );
+ $this->checkC( $data, $mk(5,2,2,5,5), 5, 'G2P2L1M-52255' );
+ }
+
+ /**
+ * Test smart continue - generator=templates, prop=templates
+ * @medium
+ */
+ public function testSameGenAndProp() {
+ $this->mVerbose = false;
+ $mk = function( $g, $gDir, $p, $pDir ) {
+ return array(
+ 'titles' => 'AQCT-1',
+ 'generator' => 'templates',
+ 'gtllimit' => "$g",
+ 'gtldir' => $gDir ? 'ascending' : 'descending',
+ 'prop' => 'templates',
+ 'tllimit' => "$p",
+ 'tldir' => $pDir ? 'ascending' : 'descending',
+ );
+ };
+ // generator + 1 prop
+ $data = $this->query( $mk(99,true,99,true), 1, 'G=P', false );
+
+ $this->checkC( $data, $mk(1,true,1,true), 4, 'G=P-1t1t' );
+ $this->checkC( $data, $mk(2,true,2,true), 2, 'G=P-2t2t' );
+ $this->checkC( $data, $mk(3,true,3,true), 2, 'G=P-3t3t' );
+ $this->checkC( $data, $mk(1,true,3,true), 4, 'G=P-1t3t' );
+ $this->checkC( $data, $mk(3,true,1,true), 2, 'G=P-3t1t' );
+
+ $this->checkC( $data, $mk(1,true,1,false), 4, 'G=P-1t1f' );
+ $this->checkC( $data, $mk(2,true,2,false), 2, 'G=P-2t2f' );
+ $this->checkC( $data, $mk(3,true,3,false), 2, 'G=P-3t3f' );
+ $this->checkC( $data, $mk(1,true,3,false), 4, 'G=P-1t3f' );
+ $this->checkC( $data, $mk(3,true,1,false), 2, 'G=P-3t1f' );
+
+ $this->checkC( $data, $mk(1,false,1,true), 4, 'G=P-1f1t' );
+ $this->checkC( $data, $mk(2,false,2,true), 2, 'G=P-2f2t' );
+ $this->checkC( $data, $mk(3,false,3,true), 2, 'G=P-3f3t' );
+ $this->checkC( $data, $mk(1,false,3,true), 4, 'G=P-1f3t' );
+ $this->checkC( $data, $mk(3,false,1,true), 2, 'G=P-3f1t' );
+
+ $this->checkC( $data, $mk(1,false,1,false), 4, 'G=P-1f1f' );
+ $this->checkC( $data, $mk(2,false,2,false), 2, 'G=P-2f2f' );
+ $this->checkC( $data, $mk(3,false,3,false), 2, 'G=P-3f3f' );
+ $this->checkC( $data, $mk(1,false,3,false), 4, 'G=P-1f3f' );
+ $this->checkC( $data, $mk(3,false,1,false), 2, 'G=P-3f1f' );
+ }
+
+ /**
+ * Test smart continue - generator=allpages, list=allpages
+ * @medium
+ */
+ public function testSameGenList() {
+ $this->mVerbose = false;
+ $mk = function( $g, $gDir, $l, $pDir ) {
+ return array(
+ 'generator' => 'allpages',
+ 'gapprefix' => 'AQCT-',
+ 'gaplimit' => "$g",
+ 'gapdir' => $gDir ? 'ascending' : 'descending',
+ 'list' => 'allpages',
+ 'apprefix' => 'AQCT-',
+ 'aplimit' => "$l",
+ 'apdir' => $pDir ? 'ascending' : 'descending',
+ );
+ };
+ // generator + 1 list
+ $data = $this->query( $mk(99,true,99,true), 1, 'G=L', false );
+
+ $this->checkC( $data, $mk(1,true,1,true), 5, 'G=L-1t1t' );
+ $this->checkC( $data, $mk(2,true,2,true), 3, 'G=L-2t2t' );
+ $this->checkC( $data, $mk(3,true,3,true), 2, 'G=L-3t3t' );
+ $this->checkC( $data, $mk(1,true,3,true), 5, 'G=L-1t3t' );
+ $this->checkC( $data, $mk(3,true,1,true), 5, 'G=L-3t1t' );
+ $this->checkC( $data, $mk(1,true,1,false), 5, 'G=L-1t1f' );
+ $this->checkC( $data, $mk(2,true,2,false), 3, 'G=L-2t2f' );
+ $this->checkC( $data, $mk(3,true,3,false), 2, 'G=L-3t3f' );
+ $this->checkC( $data, $mk(1,true,3,false), 5, 'G=L-1t3f' );
+ $this->checkC( $data, $mk(3,true,1,false), 5, 'G=L-3t1f' );
+ $this->checkC( $data, $mk(1,false,1,true), 5, 'G=L-1f1t' );
+ $this->checkC( $data, $mk(2,false,2,true), 3, 'G=L-2f2t' );
+ $this->checkC( $data, $mk(3,false,3,true), 2, 'G=L-3f3t' );
+ $this->checkC( $data, $mk(1,false,3,true), 5, 'G=L-1f3t' );
+ $this->checkC( $data, $mk(3,false,1,true), 5, 'G=L-3f1t' );
+ $this->checkC( $data, $mk(1,false,1,false), 5, 'G=L-1f1f' );
+ $this->checkC( $data, $mk(2,false,2,false), 3, 'G=L-2f2f' );
+ $this->checkC( $data, $mk(3,false,3,false), 2, 'G=L-3f3f' );
+ $this->checkC( $data, $mk(1,false,3,false), 5, 'G=L-1f3f' );
+ $this->checkC( $data, $mk(3,false,1,false), 5, 'G=L-3f1f' );
+ }
+}
--- /dev/null
+<?php
+/**
+ *
+ *
+ * Created on Jan 1, 2013
+ *
+ * Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
+ *
+ * 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
+ */
+
+require_once( 'ApiQueryTestBase.php' );
+
+abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
+
+ /**
+ * Enable to print in-depth debugging info during the test run
+ */
+ protected $mVerbose = false;
+
+ /**
+ * Run query() and compare against expected values
+ */
+ protected function checkC( $expected, $params, $expectedCount, $id, $continue = true ) {
+ $result = $this->query( $params, $expectedCount, $id, $continue );
+ $this->assertResult( $expected, $result, $id );
+ }
+
+ /**
+ * Run query in a loop until no more values are available
+ * @param array $params api parameters
+ * @param int $expectedCount max number of iterations
+ * @param string $id unit test id
+ * @param boolean $useContinue true to use smart continue
+ * @return mixed: merged results data array
+ * @throws Exception
+ */
+ protected function query( $params, $expectedCount, $id, $useContinue = true ) {
+ if ( isset( $params['action'] ) ) {
+ $this->assertEquals( 'query', $params['action'], 'Invalid query action');
+ } else {
+ $params['action'] = 'query';
+ }
+ if ( $useContinue && !isset( $params['continue'] ) ) {
+ $params['continue'] = '';
+ }
+ $count = 0;
+ $result = array();
+ $continue = array();
+ do {
+ $request = array_merge( $params, $continue );
+ uksort( $request, function( $a, $b ) {
+ // put 'continue' params at the end - lazy method
+ $a = strpos( $a, 'continue' ) !== false ? 'zzz ' . $a : $a;
+ $b = strpos( $b, 'continue' ) !== false ? 'zzz ' . $b : $b;
+ return strcmp( $a, $b );
+ } );
+ $reqStr = http_build_query( $request );
+ //$reqStr = str_replace( '&', ' & ', $reqStr );
+ $this->assertLessThan( $expectedCount, $count, "$id more data: $reqStr" );
+ if ( $this->mVerbose ) {
+ print ("$id (#$count): $reqStr\n");
+ }
+ try {
+ $data = $this->doApiRequest( $request );
+ } catch ( Exception $e ) {
+ throw new Exception( "$id on $count", 0, $e );
+ }
+ $data = $data[0];
+ if ( isset( $data['warnings'] ) ) {
+ $warnings = json_encode( $data['warnings'] );
+ $this->fail( "$id Warnings on #$count in $reqStr\n$warnings" );
+ }
+ $this->assertArrayHasKey( 'query', $data, "$id no 'query' on #$count in $reqStr" );
+ if ( isset( $data['continue'] ) ) {
+ $continue = $data['continue'];
+ unset( $data['continue'] );
+ } else {
+ $continue = array();
+ }
+ if ( $this->mVerbose ) {
+ $this->printResult( $data );
+ }
+ $this->mergeResult( $result, $data );
+ $count++;
+ if ( empty( $continue ) ) {
+ // $this->assertEquals( $expectedCount, $count, "$id finished early" );
+ if ( $expectedCount > $count ) {
+ print "***** $id Finished early in $count turns. $expectedCount was expected\n";
+ }
+ return $result;
+ } elseif ( !$useContinue ) {
+ $this->assertFalse( 'Non-smart query must be requested all at once' );
+ }
+ } while( true );
+ }
+
+ private function printResult( $data ) {
+ $q = $data['query'];
+ $print = array();
+ if (isset($q['pages'])) {
+ foreach ($q['pages'] as $p) {
+ $m = $p['title'];
+ if (isset($p['links'])) {
+ $m .= '/[' . implode(',', array_map(
+ function ($v) {
+ return $v['title'];
+ },
+ $p['links'])) . ']';
+ }
+ if (isset($p['categories'])) {
+ $m .= '/(' . implode(',', array_map(
+ function ($v) {
+ return str_replace('Category:', '', $v['title']);
+ },
+ $p['categories'])) . ')';
+ }
+ $print[] = $m;
+ }
+ }
+ if (isset($q['allcategories'])) {
+ $print[] = '*Cats/(' . implode(',', array_map(
+ function ($v) { return $v['*']; },
+ $q['allcategories'])) . ')';
+ }
+ self::GetItems( $q, 'allpages', 'Pages', $print );
+ self::GetItems( $q, 'alllinks', 'Links', $print );
+ self::GetItems( $q, 'alltransclusions', 'Trnscl', $print );
+ print(' ' . implode(' ', $print) . "\n");
+ }
+
+ private static function GetItems( $q, $moduleName, $name, &$print ) {
+ if (isset($q[$moduleName])) {
+ $print[] = "*$name/[" . implode(',',
+ array_map( function ($v) { return $v['title']; },
+ $q[$moduleName])) . ']';
+ }
+ }
+
+ /**
+ * Recursively merge the new result returned from the query to the previous results.
+ * @param mixed $results
+ * @param mixed $newResult
+ * @param bool $numericIds If true, treat keys as ids to be merged instead of appending
+ */
+ protected function mergeResult( &$results, $newResult, $numericIds = false ) {
+ $this->assertEquals( is_array( $results ), is_array( $newResult ), 'Type of result and data do not match' );
+ if ( !is_array( $results ) ) {
+ $this->assertEquals( $results, $newResult, 'Repeated result must be the same as before' );
+ } else {
+ $sort = null;
+ foreach( $newResult as $key => $value ) {
+ if ( !$numericIds && $sort === null ) {
+ if ( !is_array( $value ) ) {
+ $sort = false;
+ } elseif ( array_key_exists( 'title', $value ) ) {
+ $sort = function( $a, $b ) {
+ return strcmp( $a['title'], $b['title'] );
+ };
+ } else {
+ $sort = false;
+ }
+ }
+ $keyExists = array_key_exists( $key, $results );
+ if ( is_numeric( $key ) ) {
+ if ( $numericIds ) {
+ if ( !$keyExists ) {
+ $results[$key] = $value;
+ } else {
+ $this->mergeResult( $results[$key], $value );
+ }
+ } else {
+ $results[] = $value;
+ }
+ } elseif ( !$keyExists ) {
+ $results[$key] = $value;
+ } else {
+ $this->mergeResult( $results[$key], $value, $key === 'pages' );
+ }
+ }
+ if ( $numericIds ) {
+ ksort( $results, SORT_NUMERIC );
+ } elseif ( $sort !== null && $sort !== false ) {
+ uasort( $results, $sort );
+ }
+ }
+ }
+}
--- /dev/null
+<?php
+/**
+ *
+ *
+ * Created on Feb 10, 2013
+ *
+ * Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
+ *
+ * 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 3 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
+ */
+
+
+/** This class has some common functionality for testing query module
+ */
+abstract class ApiQueryTestBase extends ApiTestCase {
+
+ const PARAM_ASSERT = <<<STR
+Each parameter must be an array of two elements,
+first - an array of params to the API call,
+and the second array - expected results as returned by the API
+STR;
+
+ /**
+ * Merges all requests parameter + expected values into one
+ * @param ... list of arrays, each of which contains exactly two
+ * @return array
+ */
+ protected function merge( /*...*/ ) {
+ $request = array();
+ $expected = array();
+ foreach ( func_get_args() as $v ) {
+ list( $req, $exp ) = $this->validateRequestExpectedPair( $v );
+ $request = array_merge_recursive( $request, $req );
+ $this->mergeExpected( $expected, $exp );
+ }
+ return array( $request, $expected );
+ }
+
+ /**
+ * Check that the parameter is a valid two element array,
+ * with the first element being API request and the second - expected result
+ */
+ private function validateRequestExpectedPair( $v ) {
+ $this->assertType( 'array', $v, self::PARAM_ASSERT );
+ $this->assertEquals( 2, count($v), self::PARAM_ASSERT );
+ $this->assertArrayHasKey( 0, $v, self::PARAM_ASSERT );
+ $this->assertArrayHasKey( 1, $v, self::PARAM_ASSERT );
+ $this->assertType( 'array', $v[0], self::PARAM_ASSERT );
+ $this->assertType( 'array', $v[1], self::PARAM_ASSERT );
+ return $v;
+ }
+
+ /**
+ * Recursively merges the expected values in the $item into the $all
+ */
+ private function mergeExpected( &$all, $item ) {
+ foreach ( $item as $k => $v ) {
+ if ( array_key_exists( $k, $all ) ) {
+ if ( is_array ( $all[$k] ) ) {
+ $this->mergeExpected( $all[$k], $v );
+ } else {
+ $this->assertEquals( $all[$k], $v );
+ }
+ } else {
+ $all[$k] = $v;
+ }
+ }
+ }
+
+ /**
+ * Checks that the request's result matches the expected results.
+ * @param $values array is a two element array( request, expected_results )
+ * @throws Exception
+ */
+ protected function check( $values ) {
+ list( $req, $exp ) = $this->validateRequestExpectedPair( $values );
+ if ( !array_key_exists( 'action', $req ) ) {
+ $req['action'] = 'query';
+ }
+ foreach ( $req as &$val ) {
+ if ( is_array( $val ) ) {
+ $val = implode( '|', array_unique( $val ) );
+ }
+ }
+ $result = $this->doApiRequest( $req );
+ $this->assertResult( array( 'query' => $exp ), $result[0], $req );
+ }
+
+ protected function assertResult( $exp, $result, $message = '' ) {
+ try {
+ $this->assertResultRecursive( $exp, $result );
+ } catch ( Exception $e ) {
+ if ( is_array( $message ) ) {
+ $message = http_build_query( $message );
+ }
+ print( "\nRequest: $message\n" );
+ print( "\nExpected:\n" );
+ print_r( $exp );
+ print( "\nResult:\n" );
+ print_r( $result );
+ throw $e; // rethrow it
+ }
+ }
+
+ /**
+ * Recursively compare arrays, ignoring mismatches in numeric key and pageids.
+ * @param $expected array expected values
+ * @param $result array returned values
+ */
+ private function assertResultRecursive( $expected, $result ) {
+ reset( $expected );
+ reset( $result );
+ while ( true ) {
+ $e = each( $expected );
+ $r = each( $result );
+ // If either of the arrays is shorter, abort. If both are done, success.
+ $this->assertEquals( (bool)$e, (bool)$r );
+ if ( !$e ) {
+ break; // done
+ }
+ // continue only if keys are identical or both keys are numeric
+ $this->assertTrue( $e['key'] === $r['key'] || ( is_numeric( $e['key'] ) && is_numeric( $r['key'] ) ) );
+ // don't compare pageids
+ if ( $e['key'] !== 'pageid' ) {
+ // If values are arrays, compare recursively, otherwise compare with ===
+ if ( is_array( $e['value'] ) && is_array( $r['value'] ) ) {
+ $this->assertResultRecursive( $e['value'], $r['value'] );
+ } else {
+ $this->assertEquals( $e['value'], $r['value'] );
+ }
+ }
+ }
+ }
+}
'#settings td p strong'
),
array(
- # Not sure how 4+ values should behave,
- # testing to make sure changes are detected
- '.foo { x-unknown: 1 2 3 4 5; }',
- '.foo { x-unknown: 1 4 3 2 5; }',
+ // Test the colors regex
+ '.foo { border-color: red green blue white }',
+ '.foo { border-color: red white blue green }',
),
array(
- '.foo { x-unknown: 1 2 3 4 5 6; }',
- '.foo { x-unknown: 1 4 3 2 5 6; }',
+ // Test the colors regex harder
+ '.foo { border-color: red #f00 rgb(255, 0, 0%) rgba(100%, 0, 0, 0) }',
+ '.foo { border-color: red rgba(100%, 0, 0, 0) rgb(255, 0, 0%) #f00 }',
+ ),
+ array(
+ // Do not bork 4+ values
+ '.foo { x-unknown: 1 2 3 4 5; }'
+ ),
+ array(
+ '.foo { x-unknown: 1 2 3 4 5 6; }'
),
// Shorthand / Three notation
'.foo { padding: 1px; }'
),
+ // text-shadow and box-shadow
+ array(
+ '.foo { box-shadow: -6px 3px 8px 5px rgba(0, 0, 0, 0.25); }',
+ '.foo { box-shadow: 6px 3px 8px 5px rgba(0, 0, 0, 0.25); }',
+ ),
+ array(
+ '.foo { box-shadow: inset -6px 3px 8px 5px rgba(0, 0, 0, 0.25); }',
+ '.foo { box-shadow: inset 6px 3px 8px 5px rgba(0, 0, 0, 0.25); }',
+ ),
+ array(
+ '.foo { text-shadow: orange 2px 0; }',
+ '.foo { text-shadow: orange -2px 0; }',
+ ),
+ array(
+ '.foo { text-shadow: 2px 0 orange; }',
+ '.foo { text-shadow: -2px 0 orange; }',
+ ),
+ array(
+ // Don't mangle zeroes
+ '.foo { text-shadow: orange 0 2px; }'
+ ),
+
// Direction
// Note: This differs from the Python implementation,
// see also CSSJanus::fixDirection for more info.
public $keepUploads = false;
public $runDisabled = false;
+ public $runParsoid = false;
public $regex = '';
public $showProgress = true;
public $savedInitialGlobals = array();
/** @dataProvider providerPlural */
function testPlural( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( 'zero', 'one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
function providerPlural() {
return array(
- array( 'other', 0 ), #this must be zero form as per CLDR
+ array( 'zero', 0 ),
array( 'one', 1 ),
array( 'other', 11 ),
array( 'one', 21 ),
$wgLocaltimezone = 'UTC';
$wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+
+ // Bug 44192 Do not attempt to send a real e-mail
+ Hooks::clear( 'AlternateUserMailer' );
+ Hooks::register( 'AlternateUserMailer',
+ function() { return false; }
+ );
}
public function execute() {
assert.strictEqual( window.mw, window.mediaWiki, 'mw alias to mediaWiki' );
} );
- QUnit.test( 'mw.Map', 17, function ( assert ) {
+ QUnit.test( 'mw.Map', 27, function ( assert ) {
var arry, conf, funky, globalConf, nummy, someValues;
- assert.ok( mw.Map, 'mw.Map defined' );
-
conf = new mw.Map();
// Dummy variables
funky = function () {};
arry = [];
nummy = 7;
- // Tests for input validation
- assert.strictEqual( conf.get( 'inexistantKey' ), null, 'Map.get returns null if selection was a string and the key was not found' );
- assert.strictEqual( conf.set( 'myKey', 'myValue' ), true, 'Map.set returns boolean true if a value was set for a valid key string' );
+ // Single get and set
+
+ assert.strictEqual( conf.set( 'foo', 'Bar' ), true, 'Map.set returns boolean true if a value was set for a valid key string' );
+ assert.equal( conf.get( 'foo' ), 'Bar', 'Map.get returns a single value value correctly' );
+
+ assert.strictEqual( conf.get( 'example' ), null, 'Map.get returns null if selection was a string and the key was not found' );
+ assert.strictEqual( conf.get( 'example', arry ), arry, 'Map.get returns fallback by reference if the key was not found' );
+ assert.strictEqual( conf.get( 'example', undefined ), undefined, 'Map.get supports `undefined` as fallback instead of `null`' );
+
+ assert.strictEqual( conf.get( 'constructor' ), null, 'Map.get does not look at Object.prototype of internal storage (constructor)' );
+ assert.strictEqual( conf.get( 'hasOwnProperty' ), null, 'Map.get does not look at Object.prototype of internal storage (hasOwnProperty)' );
+
+ conf.set( 'hasOwnProperty', function () { return true; } );
+ assert.strictEqual( conf.get( 'example', 'missing' ), 'missing', 'Map.get uses neutral hasOwnProperty method (positive)' );
+
+ conf.set( 'example', 'Foo' );
+ conf.set( 'hasOwnProperty', function () { return false; } );
+ assert.strictEqual( conf.get( 'example' ), 'Foo', 'Map.get uses neutral hasOwnProperty method (negative)' );
+
+ assert.strictEqual( conf.set( 'constructor', 42 ), true, 'Map.set for key "constructor"' );
+ assert.strictEqual( conf.get( 'constructor' ), 42, 'Map.get for key "constructor"' );
+
+ assert.strictEqual( conf.set( 'ImUndefined', undefined ), true, 'Map.set allows setting value to `undefined`' );
+ assert.equal( conf.get( 'ImUndefined', 'fallback' ), undefined , 'Map.get supports retreiving value of `undefined`' );
+
assert.strictEqual( conf.set( funky, 'Funky' ), false, 'Map.set returns boolean false if key was invalid (Function)' );
assert.strictEqual( conf.set( arry, 'Arry' ), false, 'Map.set returns boolean false if key was invalid (Array)' );
assert.strictEqual( conf.set( nummy, 'Nummy' ), false, 'Map.set returns boolean false if key was invalid (Number)' );
- assert.equal( conf.get( 'myKey' ), 'myValue', 'Map.get returns a single value value correctly' );
- assert.strictEqual( conf.get( nummy ), null, 'Map.get ruturns null if selection was invalid (Number)' );
+
assert.strictEqual( conf.get( funky ), null, 'Map.get ruturns null if selection was invalid (Function)' );
+ assert.strictEqual( conf.get( nummy ), null, 'Map.get ruturns null if selection was invalid (Number)' );
+
+ conf.set( String( nummy ), 'I used to be a number' );
+
+ assert.strictEqual( conf.exists( 'doesNotExist' ), false, 'Map.exists where property does not exist' );
+ assert.strictEqual( conf.exists( 'ImUndefined' ), true, 'Map.exists where value is `undefined`' );
+ assert.strictEqual( conf.exists( nummy ), false, 'Map.exists where key is invalid but looks like an existing key' );
// Multiple values at once
someValues = {
'notExist': null
}, 'Map.get return includes keys that were not found as null values' );
- assert.strictEqual( conf.exists( 'foo' ), true, 'Map.exists returns boolean true if a key exists' );
- assert.strictEqual( conf.exists( 'notExist' ), false, 'Map.exists returns boolean false if a key does not exists' );
// Interacting with globals and accessing the values object
assert.strictEqual( conf.get(), conf.values, 'Map.get returns the entire values object by reference (if called without arguments)' );
conf.set( 'globalMapChecker', 'Hi' );
- assert.ok( false === 'globalMapChecker' in window, 'new mw.Map did not store its values in the global window object by default' );
+ assert.ok( 'globalMapChecker' in window === false, 'new mw.Map did not store its values in the global window object by default' );
globalConf = new mw.Map( true );
globalConf.set( 'anotherGlobalMapChecker', 'Hello' );
}
if ( ( ( preg_match( '/\\bdisabled\\b/i', $this->sectionData['options'] ) && !$this->parserTest->runDisabled )
+ || ( preg_match( '/\\bparsoid\\b/i', $this->sectionData['options'] ) && !$this->parserTest->runParsoid )
|| !preg_match( "/" . $this->parserTest->regex . "/i", $this->sectionData['test'] ) )
) {
# disabled test