$config = "{$this->basedir}/config";
$url = false;
if ( is_readable( $config ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$configArray = parse_ini_file( $config, true );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$remote = false;
// Use the "origin" remote repo if available or any other repo if not.
if ( $wasRelative ) {
$url = "http:$url";
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$bits = parse_url( $url );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
// parse_url() returns an array without scheme for some invalid URLs, e.g.
// parse_url("%0Ahttp://example.com") == [ 'host' => '%0Ahttp', 'path' => 'example.com' ]
if ( !$bits || !isset( $bits['scheme'] ) ) {
/**
* Reference-counted warning suppression
*
- * @deprecated since 1.26, use MediaWiki\suppressWarnings() directly
+ * @deprecated since 1.26, use Wikimedia\suppressWarnings() directly
* @param bool $end
*/
function wfSuppressWarnings( $end = false ) {
- MediaWiki\suppressWarnings( $end );
+ Wikimedia\suppressWarnings( $end );
}
/**
- * @deprecated since 1.26, use MediaWiki\restoreWarnings() directly
+ * @deprecated since 1.26, use Wikimedia\restoreWarnings() directly
* Restore error level to previous value
*/
function wfRestoreWarnings() {
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
/**
}
// Turn off the normal warning, we're doing our own below
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = mkdir( $dir, $mode, true ); // PHP5 <3
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$ok ) {
// directory may have been created on another request since we last checked
# This check may also protect against code injection in
# case of broken installations.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$haveDiff3 = $wgDiff3 && file_exists( $wgDiff3 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$haveDiff3 ) {
wfDebug( "diff3 not found\n" );
}
global $wgDiff;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$haveDiff = $wgDiff && file_exists( $wgDiff );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
# This check may also protect against code injection in
# case of broken installations.
$conflimit = wfShorthandToInteger( $wgMemoryLimit );
if ( $conflimit == -1 ) {
wfDebug( "Removing PHP's memory limit\n" );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
ini_set( 'memory_limit', $conflimit );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $conflimit;
} elseif ( $conflimit > $memlimit ) {
wfDebug( "Raising PHP's memory limit to $conflimit bytes\n" );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
ini_set( 'memory_limit', $conflimit );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $conflimit;
}
}
}
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$result = unpack( $format, $data );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $result === false ) {
// If it cannot extract the packed data.
function diff( $t1, $t2 ) {
# Need to do a null concatenation with warnings off, due to bugs in the current version of xdiff
# "String is not zero-terminated"
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$diff = xdiff_string_rabdiff( $t1, $t2 ) . '';
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $diff;
}
*/
function patch( $base, $diff ) {
if ( function_exists( 'xdiff_string_bpatch' ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$text = xdiff_string_bpatch( $base, $diff ) . '';
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $text;
}
$port = $info['port'];
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$sock = $host ? fsockopen(
$host,
$port,
// If it takes more than 100ms to connect to ourselves there is a problem...
0.100
) : false;
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$invokedWithSuccess = true;
if ( $sock ) {
# this breaks strtotime().
$clientHeader = preg_replace( '/;.*$/', '', $clientHeader );
- MediaWiki\suppressWarnings(); // E_STRICT system time bitching
+ Wikimedia\suppressWarnings(); // E_STRICT system time bitching
$clientHeaderTime = strtotime( $clientHeader );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$clientHeaderTime ) {
wfDebug( __METHOD__
. ": unable to parse the client's If-Modified-Since header: $clientHeader\n" );
$wgFileExtensions = array_values( array_diff( $wgFileExtensions, $wgFileBlacklist ) );
if ( $wgInvalidateCacheOnLocalSettingsChange ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', filemtime( "$IP/LocalSettings.php" ) ) );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
if ( $wgNewUserLog ) {
* explicitly set. Inspired by phpMyAdmin's treatment of the problem.
*/
if ( is_null( $wgLocaltimezone ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$wgLocaltimezone = date_default_timezone_get();
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
date_default_timezone_set( $wgLocaltimezone );
if ( !preg_match( '!^https?://!', $url ) ) {
$url = 'http://unused' . $url;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$a = parse_url( $url );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $a ) {
$path = isset( $a['path'] ) ? $a['path'] : '';
$this->getRequest()->response()->statusHeader( 304 );
// Avoid outputting the compressed representation of a zero-length body
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
ini_set( 'zlib.output_compression', 0 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
wfClearOutputBuffers();
return false;
}
if ( $meta ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$metadata = unserialize( $file->getMetadata() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $metadata && $version !== 'latest' ) {
$metadata = $file->convertMetadataVersion( $metadata, $version );
}
"apihelp-options-example-reset": "Vrátit všechna nastavení.",
"apihelp-parse-param-summary": "Shrnutí, které se má parsovat.",
"apihelp-parse-paramvalue-prop-displaytitle": "Přidává název parsovaného wikitextu.",
+ "apihelp-parse-param-disablestylededuplication": "Neodstraňovat duplicitní in-line styly ve výstupu parseru.",
"apihelp-parse-param-preview": "Parsovat v režimu náhledu.",
"apihelp-parse-example-page": "Parsovat stránku.",
"apihelp-parse-example-text": "Parsovat wikitext.",
"apihelp-query+allrevisions-example-ns-main": "Liste die ersten 50 Bearbeitungen im Hauptnamensraum auf.",
"apihelp-query+mystashedfiles-param-prop": "Welche Eigenschaften für die Dateien abgerufen werden sollen.",
"apihelp-query+mystashedfiles-paramvalue-prop-size": "Ruft die Dateigröße und Bildabmessungen ab.",
+ "apihelp-query+mystashedfiles-paramvalue-prop-type": "Ruft den MIME- und Medientyp der Datei ab.",
"apihelp-query+mystashedfiles-param-limit": "Wie viele Dateien zurückgegeben werden sollen.",
"apihelp-query+alltransclusions-summary": "Liste alle Transklusionen auf (eingebettete Seiten die {{x}} benutzen), einschließlich nicht vorhandener.",
"apihelp-query+alltransclusions-param-from": "Der Titel der Transklusion bei dem die Auflistung beginnen soll.",
"apihelp-parse-param-disablepp": "Utiliser <var>$1disablelimitreport</var> à la place.",
"apihelp-parse-param-disableeditsection": "Omettre les liens de modification de section de la sortie de l’analyseur.",
"apihelp-parse-param-disabletidy": "Ne pas exécuter de nettoyage du code HTML (par exemple, réagencer) sur la sortie de l'analyseur.",
+ "apihelp-parse-param-disablestylededuplication": "Ne pas dupliquer les feuilles de style incluses, dans la sortie de l'analyseur.",
"apihelp-parse-param-generatexml": "Générer un arbre d’analyse XML (nécessite le modèle de contenu <code>$1</code> ; remplacé par <kbd>$2prop=parsetree</kbd>).",
"apihelp-parse-param-preview": "Analyser en mode aperçu.",
"apihelp-parse-param-sectionpreview": "Analyser en mode aperçu de section (active aussi le mode aperçu).",
function loadDependencyValues() {
if ( is_null( $this->timestamp ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
# Dependency on a non-existent file stores "false"
# This is a valid concept!
$this->timestamp = filemtime( $this->filename );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
* @return bool
*/
function isExpired() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$lastmod = filemtime( $this->filename );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $lastmod === false ) {
if ( $this->timestamp === false ) {
# Still nonexistent
* @return void
*/
public function clearCache() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
unlink( $this->cachePath() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->mCached = false;
}
*/
protected function readPHPFile( $_fileName, $_fileType ) {
// Disable APC caching
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
include $_fileName;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
ini_set( 'apc.cache_by_default', $_apcEnabled );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $_fileType == 'core' || $_fileType == 'extension' ) {
$data = compact( self::$allKeys );
public function parseParams() {
$rcParams = $this->getAttribute( 'rc_params' );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$unserializedParams = unserialize( $rcParams );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $unserializedParams;
}
}
$this->socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_set_nonblock( $this->socket );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = socket_connect( $this->socket, $ip, $this->port );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$ok ) {
$error = socket_last_error( $this->socket );
if ( $error !== self::EINPROGRESS ) {
} elseif ( IP::isIPv6( $this->host ) ) {
throw new MWException( '$wgSquidServers does not support IPv6' );
} else {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$this->ip = gethostbyname( $this->host );
if ( $this->ip === $this->host ) {
$this->ip = false;
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
return $this->ip;
*/
public function close() {
if ( $this->socket ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
socket_set_block( $this->socket );
socket_shutdown( $this->socket );
socket_close( $this->socket );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
$this->socket = null;
$this->readBuffer = '';
$buf = substr( $this->writeBuffer, 0, self::BUFFER_SIZE );
$flags = 0;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$bytesSent = socket_send( $socket, $buf, strlen( $buf ), $flags );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $bytesSent === false ) {
$error = socket_last_error( $socket );
}
$buf = '';
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$bytesRead = socket_recv( $socket, $buf, self::BUFFER_SIZE, 0 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $bytesRead === false ) {
$error = socket_last_error( $socket );
if ( $error != self::EAGAIN && $error != self::EINTR ) {
}
$exceptSockets = null;
$timeout = min( $startTime + $this->timeout - microtime( true ), 1 );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$numReady = socket_select( $readSockets, $writeSockets, $exceptSockets, $timeout );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $numReady === false ) {
wfDebugLog( 'squid', __METHOD__ . ': Error in stream_select: ' .
socket_strerror( socket_last_error() ) . "\n" );
function __destruct() {
if ( $this->mOpened ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$this->close();
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
$session_mode = $this->mFlags & DBO_SYSDBA ? OCI_SYSDBA : OCI_DEFAULT;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( $this->mFlags & DBO_PERSISTENT ) {
$this->mConn = oci_pconnect(
$this->mUser,
$session_mode
);
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $this->mUser != $this->mDBname ) {
// change current schema in session
$explain_count
);
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$this->mLastResult = $stmt = oci_parse( $this->mConn, $sql );
if ( $stmt === false ) {
}
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $explain_count > 0 ) {
return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table ' .
}
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
$e = oci_error( $stmt );
$this->mAffectedRows = oci_num_rows( $stmt );
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( isset( $lob ) ) {
foreach ( $lob as $lob_v ) {
}
$sql = 'ALTER SESSION SET CURRENT_SCHEMA=' . strtoupper( $db );
$stmt = oci_parse( $this->mConn, $sql );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$success = oci_execute( $stmt );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$success ) {
$e = oci_error( $stmt );
if ( $e['code'] != '1435' ) {
}
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
$e = oci_error( $stmt );
$this->mAffectedRows = oci_num_rows( $stmt );
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( isset( $lob ) ) {
foreach ( $lob as $lob_v ) {
$transport = UDPTransport::newFromString( $file );
$transport->emit( $text );
} else {
- \MediaWiki\suppressWarnings();
+ \Wikimedia\suppressWarnings();
$exists = file_exists( $file );
$size = $exists ? filesize( $file ) : false;
if ( !$exists ||
) {
file_put_contents( $file, $text, FILE_APPEND );
}
- \MediaWiki\restoreWarnings();
+ \Wikimedia\restoreWarnings();
}
}
$catcher = self::CAUGHT_BY_HANDLER;
// The set_error_handler callback is independent from error_reporting.
// Filter out unwanted errors manually (e.g. when
- // MediaWiki\suppressWarnings is active).
+ // Wikimedia\suppressWarnings is active).
$suppressed = ( error_reporting() & $e->getSeverity() ) === 0;
if ( !$suppressed ) {
$logger = LoggerFactory::getInstance( $channel );
}
// Cleanup for disk source files...
foreach ( $sourceFSFilesToDelete as $file ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
unlink( $file ); // FS cleanup
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
return $status;
}
if ( $this->followRedirects && $this->canFollowRedirects() ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( !curl_setopt( $curlHandle, CURLOPT_FOLLOWLOCATION, true ) ) {
$this->logger->debug( __METHOD__ . ": Couldn't set CURLOPT_FOLLOWLOCATION. " .
"Probably open_basedir is set.\n" );
// Continue the processing. If it were in curl_setopt_array,
// processing would have halted on its entry
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
if ( $this->profiler ) {
* @return Status
*/
static function newFromFile( $filename ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$file = fopen( $filename, 'rt' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$file ) {
return Status::newFatal( "importcantopen" );
}
return $status;
}
global $IP;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$rows = file( "$IP/maintenance/interwiki.list",
FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$interwikis = [];
if ( !$rows ) {
return Status::newFatal( 'config-install-interwiki-list' );
// phpcs:ignore MediaWiki.VariableAnalysis.UnusedGlobalVariables
global $wgExtensionDirectory, $wgStyleDirectory;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$_lsExists = file_exists( "$IP/LocalSettings.php" );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$_lsExists ) {
return false;
* @return bool
*/
protected function envCheckPCRE() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$regexd = preg_replace( '/[\x{0430}-\x{04FF}]/iu', '', '-АБВГД-' );
// Need to check for \p support too, as PCRE can be compiled
// with utf8 support, but not unicode property support.
// check that \p{Zs} (space separators) matches
// U+3000 (Ideographic space)
$regexprop = preg_replace( '/\p{Zs}/u', '', "-\xE3\x80\x80-" );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $regexd != '--' || $regexprop != '--' ) {
$this->showError( 'config-pcre-no-utf8' );
// it would be good to check other popular languages here, but it'll be slow.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
foreach ( $scriptTypes as $ext => $contents ) {
foreach ( $contents as $source ) {
unlink( $dir . $file );
if ( $text == 'exec' ) {
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $ext;
}
}
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return false;
}
* Some long-running pages (Install, Upgrade) will want to do this
*/
protected function disableTimeLimit() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
set_time_limit( 0 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
# Called early on in the installer, later we just want to sanity check
# if it's still writable
if ( $create ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = wfMkdirParents( $dir, 0700, __METHOD__ );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$ok ) {
return Status::newFatal( 'config-sqlite-mkdir-error', $dir );
}
"config-memory-bad": "<strong>Upozornění:</strong> <code>memory_limit</code> je v PHP nastaven na $1.\nTo je pravděpodobně příliš málo.\nInstalace může selhat!",
"config-apc": "Je nainstalováno [http://www.php.net/apc APC]",
"config-apcu": "Je nainstalováno [http://www.php.net/apcu APCu]",
- "config-wincache": "Je nainstalována [https://www.iis.net/download/WinCacheForPhp WinCache]",
+ "config-wincache": "Je nainstalováno [https://www.iis.net/download/WinCacheForPhp WinCache]",
"config-no-cache-apcu": "<strong>Upozornění:</strong> Nebylo nalezeno [http://www.php.net/apcu APCu], \nani [http://www.iis.net/download/WinCacheForPhp WinCache].\nCachování objektů není povoleno.",
"config-mod-security": "<strong>Upozornění:</strong> váš webový server má zapnuto [https://modsecurity.org/ mod_security]/mod_security2. Mnoho běžných konfigurací bude způsobovat potíže MediaWiki a dalším programům, které umožňují ukládat libovolný obsah.\nPokud je to možné, mělo by se to vypnout. Jinak se v případě, že narazíte na náhodné chyby, podívejte do [https://modsecurity.org/documentation/ dokumentace mod_security] nebo kontaktujte technickou podporu vašeho poskytovatele.",
"config-diff3-bad": "Nebyl nalezen GNU diff3.",
"config-cache-options": "Nastavení cachování objektů:",
"config-cache-help": "Cachování objektů se používá pro vylepšení rychlosti MediaWiki tím, že se cachují často používaná data.\nStředním až velkým serverům se jeho zapnutí důrazně doporučuje, i menší servery pocítí jeho výhody.",
"config-cache-none": "Bez cachování (o žádnou funkcionalitu nepřijdete, na větších wiki však může dojít ke zhoršení rychlosti)",
- "config-cache-accel": "Cachování PHP objektů (APC, APCu, XCache nebo WinCache)",
+ "config-cache-accel": "Cachování PHP objektů (APC, APCu nebo WinCache)",
"config-cache-memcached": "Použít Memcached (vyžaduje další nastavení a konfiguraci)",
"config-memcached-servers": "Servery Memcached:",
"config-memcached-help": "Seznam IP adres, které se mají používat pro Memcached.\nUveďte jednu na řádek spolu s portem. Například:\n 127.0.0.1:11211\n 192.168.1.25:1234",
"config-apc": "[http://www.php.net/apc APC] е воспоставен",
"config-apcu": "[http://www.php.net/apcu APCu] е воспоставен",
"config-wincache": "[https://www.iis.net/download/WinCacheForPhp WinCache] е воспоставен",
- "config-no-cache-apcu": "<strong>Предупредување:</strong> Не можев да го најдам [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache].\nМеѓускладирањето на објекти не е овозможено",
+ "config-no-cache-apcu": "<strong>Предупредување:</strong> Не можев да го најдам [http://www.php.net/apcu APCu] или [http://www.iis.net/download/WinCacheForPhp WinCache].",
"config-mod-security": "'''Предупредување''': на вашиот опслужувач има овозможено [https://modsecurity.org/ mod_security]. Ако не е поставено како што треба, ова може да предизвика проблеми кај МедијаВики и други програми што им овозможуваат на корисниците да објавуваат произволни содржини.\nПогледнете ја [https://modsecurity.org/documentation/ mod_security документацијата] или обратете се кај домаќинот ако наидете на случајни грешки.",
"config-diff3-bad": "GNU diff3 не е пронајден.",
"config-git": "Го пронајдов Git програмот за контрола на верзии: <code>$1</code>.",
"config-cache-options": "Нагодувања за меѓускладирање на објекти:",
"config-cache-help": "Меѓускладирањето на објекти се користи за зголемување на брзината на МедијаВики со меѓускладирање на често употребуваните податоци.\nОва многу се препорачува на средни до големи викија, но од тоа ќе имаат полза и малите викија.",
"config-cache-none": "Без меѓускладирање (не се остранува ниедна функција, но може да влијае на брзината кај поголеми викија)",
- "config-cache-accel": "Меѓускладирање на PHP-објекти (APC, APCu, XCache или WinCache)",
+ "config-cache-accel": "Меѓускладирање на PHP-објекти (APC, APCu или WinCache)",
"config-cache-memcached": "Користи Memcached (бара дополнително поставување и нагодување)",
"config-memcached-servers": "Memcached-опслужувачи:",
"config-memcached-help": "Список на IP-адреси за употреба во Memcached.\nТреба да се наведе по една во секој ред, како и портата што ќе се користи. На пример:\n 127.0.0.1:11211\n 192.168.1.25:1234",
$files[] = dirname( __DIR__ );
foreach ( $files as $file ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$stat = stat( $file );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $stat ) {
// stat() duplicates data into numeric and string keys so kill off all the numeric ones
foreach ( $stat as $k => $v ) {
}
// /dev/urandom is generally considered the best possible commonly
// available random source, and is available on most *nix systems.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$urandom = fopen( "/dev/urandom", "rb" );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
// Attempt to read all our random data from urandom
// php's fread always does buffered reads based on the stream's chunk_size
unset( $params['latest'] ); // sanity
// Check that the specified temp file is valid...
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = ( is_file( $tmpPath ) && filesize( $tmpPath ) == 0 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$ok ) { // not present or not empty
$status->fatal( 'backend-fail-opentemp', $tmpPath );
protected function doGetFileContentsMulti( array $params ) {
$contents = [];
foreach ( $this->doGetLocalReferenceMulti( $params ) as $path => $fsFile ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$contents[$path] = $fsFile ? file_get_contents( $fsFile->getPath() ) : false;
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
return $contents;
is_int( $header ) ? HttpStatus::header( $header ) : header( $header );
};
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$info = stat( $this->path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !is_array( $info ) ) {
if ( $sendErrors ) {
return $status;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = file_get_contents( $params['src'] );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $data === false ) { // source doesn't exist?
$status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
return $status;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$sha1Hash = sha1_file( $params['src'] );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $sha1Hash === false ) { // source doesn't exist?
$status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
}
protected function getSourceSha1Base36() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$hash = sha1_file( $this->params['src'] );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $hash !== false ) {
$hash = Wikimedia\base_convert( $hash, 16, 36, 31 );
}
* @return string|bool TS_MW timestamp or false on failure
*/
public function getTimestamp() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$timestamp = filemtime( $this->path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $timestamp !== false ) {
$timestamp = wfTimestamp( TS_MW, $timestamp );
}
return $this->sha1Base36;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$this->sha1Base36 = sha1_file( $this->path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $this->sha1Base36 !== false ) {
$this->sha1Base36 = Wikimedia\base_convert( $this->sha1Base36, 16, 36, 31 );
$tmpDirectory = self::getUsableTempDirectory();
}
$path = wfTempDir() . '/' . $prefix . $hex . $ext;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$newFileHandle = fopen( $path, 'x' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $newFileHandle ) {
fclose( $newFileHandle );
$tmpFile = new self( $path );
*/
public function purge() {
$this->canDelete = false; // done
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = unlink( $this->path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
unset( self::$pathsCollect[$this->path] );
*/
public static function purgeAllOnShutdown() {
foreach ( self::$pathsCollect as $path ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
unlink( $path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
if ( isset( $this->handles[$path] ) ) {
$handle = $this->handles[$path];
} else {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$handle = fopen( $this->getLockPath( $path ), 'a+' );
if ( !$handle ) { // lock dir missing?
mkdir( $this->lockDir, 0777, true );
$handle = fopen( $this->getLockPath( $path ), 'a+' ); // try again
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
if ( $handle ) {
// Either a shared or exclusive lock
*/
private function doGuessMimeType( $file, $ext ) {
// Read a chunk of the file
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$f = fopen( $file, 'rb' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$f ) {
return 'unknown/unknown';
}
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$gis = getimagesize( $file );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $gis && isset( $gis['mime'] ) ) {
$mime = $gis['mime'];
$timeout = $this->_connect_timeout;
$errno = $errstr = null;
for ( $i = 0; !$sock && $i < $this->_connect_attempts; $i++ ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( $this->_persistent == 1 ) {
$sock = pfsockopen( $ip, $port, $errno, $errstr, $timeout );
} else {
$sock = fsockopen( $ip, $port, $errno, $errstr, $timeout );
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
if ( !$sock ) {
$this->_error_log( "Error connecting to $host: $errstr" );
use Psr\Log\LoggerInterface;
use Wikimedia\ScopedCallback;
use Wikimedia\Timestamp\ConvertibleTimestamp;
-use MediaWiki;
+use Wikimedia;
use BagOStuff;
use HashBagOStuff;
use InvalidArgumentException;
$fname = false,
callable $inputCallback = null
) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$fp = fopen( $filename, 'r' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( false === $fp ) {
throw new RuntimeException( "Could not open \"{$filename}\".\n" );
if ( $this->mConn ) {
// Avoid connection leaks for sanity. Normally, resources close at script completion.
// The connection might already be closed in zend/hhvm by now, so suppress warnings.
- \MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$this->closeConnection();
- \MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->mConn = false;
$this->mOpened = false;
}
namespace Wikimedia\Rdbms;
-use MediaWiki;
+use Wikimedia;
use Exception;
use stdClass;
$connectionInfo['PWD'] = $password;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$this->mConn = sqlsrv_connect( $server, $connectionInfo );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $this->mConn === false ) {
throw new DBConnectionError( $this, $this->lastError() );
use DateTime;
use DateTimeZone;
-use MediaWiki;
+use Wikimedia;
use InvalidArgumentException;
use Exception;
use stdClass;
}
if ( strlen( $dbName ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$success = $this->selectDB( $dbName );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$success ) {
$this->queryLogger->error(
"Error selecting database {db_name} on server {db_server}",
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = $this->mysqlFreeResult( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$ok ) {
throw new DBUnexpectedError( $this, "Unable to free MySQL result" );
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$row = $this->mysqlFetchObject( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$errno = $this->lastErrno();
// Unfortunately, mysql_fetch_object does not reset the last errno.
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$row = $this->mysqlFetchArray( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$errno = $this->lastErrno();
// Unfortunately, mysql_fetch_array does not reset the last errno.
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$n = $this->mysqlNumRows( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
// Unfortunately, mysql_num_rows does not reset the last errno.
// We are not checking for any errors here, since
public function lastError() {
if ( $this->mConn ) {
# Even if it's non-zero, it can still be invalid
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$error = $this->mysqlError( $this->mConn );
if ( !$error ) {
$error = $this->mysqlError();
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
} else {
$error = $this->mysqlError();
}
use Wikimedia\Timestamp\ConvertibleTimestamp;
use Wikimedia\WaitConditionLoop;
-use MediaWiki;
+use Wikimedia;
use Exception;
/**
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = pg_free_result( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$ok ) {
throw new DBUnexpectedError( $this, "Unable to free Postgres result\n" );
}
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$row = pg_fetch_object( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
# @todo FIXME: HACK HACK HACK HACK debug
# @todo hashar: not sure if the following test really trigger if the object
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$row = pg_fetch_array( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$conn = $this->getBindingHandle();
if ( pg_last_error( $conn ) ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$n = pg_num_rows( $res );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$conn = $this->getBindingHandle();
if ( pg_last_error( $conn ) ) {
}
if ( $this->charset !== 'UTF-8' ) {
// don't convert if already utf-8
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$content = iconv( $this->charset, 'UTF-8//IGNORE', $content );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
// Ensure the XMP block does not have an xml doctype declaration, which
// Even with LIBXML_NOWARNING set, XMLReader::read gives a warning
// when parsing truncated XML, which causes unit tests to fail.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
while ( $reader->read() ) {
if ( $reader->nodeType === XMLReader::ELEMENT ) {
// Reached the first element without hitting a doctype declaration
break;
}
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !is_null( $result ) ) {
return $result;
public function getParameters() {
if ( !isset( $this->params ) ) {
$blob = $this->getRawParameters();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$params = LogEntryBase::extractParams( $blob );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $params !== false ) {
$this->params = $params;
$this->legacy = false;
require_once 'Mail.php';
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory( 'smtp', $wgSMTP );
if ( PEAR::isError( $mail_object ) ) {
wfDebug( "PEAR::Mail factory failed: " . $mail_object->getMessage() . "\n" );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return Status::newFatal( 'pear-mail-error', $mail_object->getMessage() );
}
$status = self::sendWithPear( $mail_object, $chunk, $headers, $body );
// FIXME : some chunks might be sent while others are not!
if ( !$status->isOK() ) {
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $status;
}
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return Status::newGood();
} else {
// PHP mail()
'-layers', 'merge',
'-background', 'white',
];
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$xcfMeta = unserialize( $image->getMetadata() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $xcfMeta
&& isset( $xcfMeta['colorType'] )
&& $xcfMeta['colorType'] === 'greyscale-alpha'
return $metadata;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$unser = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( is_array( $unser ) ) {
if ( isset( $unser['error'] ) ) {
return false;
* @return array
*/
protected function extractTreesFromMetadata( $metadata ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
try {
// Set to false rather than null to avoid further attempts
$metaTree = false;
} catch ( Exception $e ) {
wfDebug( "Bogus multipage XML metadata\n" );
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return [ 'MetaTree' => $metaTree, 'TextTree' => $textTree ];
}
}
function getInfo() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$file = fopen( $this->mFilename, 'rb' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $file === false ) {
wfDebug( __METHOD__ . ": missing or failed file read\n" );
$this->debugFile( $this->basename, __FUNCTION__, true );
if ( function_exists( 'exif_read_data' ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = exif_read_data( $this->file, 0, true );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
} else {
throw new MWException( "Internal error: exif_read_data not present. " .
"\$wgShowEXIF may be incorrectly set or not checked by an extension." );
break;
}
if ( $charset ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$val = iconv( $charset, 'UTF-8//IGNORE', $val );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
} else {
// if valid utf-8, assume that, otherwise assume windows-1252
$valCopy = $val;
UtfNormal\Validator::quickIsNFCVerify( $valCopy ); // validates $valCopy.
if ( $valCopy !== $val ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$val = iconv( 'Windows-1252', 'UTF-8//IGNORE', $val );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
if ( $metadata === self::BROKEN_FILE ) {
return self::METADATA_GOOD;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$exif = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] )
|| $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version()
) {
if ( !$data ) {
return 0;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = unserialize( $data );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( isset( $data['Orientation'] ) ) {
# See http://sylvana.net/jpegcrop/exif_orientation.html
switch ( $data['Orientation'] ) {
return self::METADATA_GOOD;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$data || !is_array( $data ) ) {
wfDebug( __METHOD__ . " invalid GIF metadata\n" );
$original = parent::getLongDesc( $image );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$metadata = unserialize( $image->getMetadata() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$metadata || $metadata['frameCount'] <= 1 ) {
return $original;
*/
public function getLength( $file ) {
$serMeta = $file->getMetadata();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$metadata = unserialize( $serMeta );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$metadata || !isset( $metadata['duration'] ) || !$metadata['duration'] ) {
return 0.0;
UtfNormal\Validator::quickIsNFCVerify( $dataCopy );
if ( $dataCopy !== $data ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = iconv( 'windows-1252', 'UTF-8', $data );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
$commentCount = count( $comment );
*/
private static function convIPTCHelper( $data, $charset ) {
if ( $charset ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = iconv( $charset, "UTF-8//IGNORE", $data );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $data === false ) {
$data = "";
wfDebugLog( 'iptc', __METHOD__ . " Error converting iptc data charset $charset to utf-8" );
}
function getImageSize( $image, $path ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$gis = getimagesize( $path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $gis;
}
// turns $com to valid utf-8.
// thus if no change, its utf-8, otherwise its something else.
if ( $com !== $oldCom ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$com = $oldCom = iconv( 'windows-1252', 'UTF-8//IGNORE', $oldCom );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
// Try it again, if its still not a valid string, then probably
// binary junk or some really weird encoding, so don't extract.
function convertMetadataVersion( $metadata, $version = 1 ) {
if ( !is_array( $metadata ) ) {
// unserialize to keep return parameter consistent.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ret = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $ret;
}
return self::METADATA_GOOD;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$data || !is_array( $data ) ) {
wfDebug( __METHOD__ . " invalid png metadata\n" );
global $wgLang;
$original = parent::getLongDesc( $image );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$metadata = unserialize( $image->getMetadata() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$metadata || $metadata['frameCount'] <= 0 ) {
return $original;
*/
public function getLength( $file ) {
$serMeta = $file->getMetadata();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$metadata = unserialize( $serMeta );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$metadata || !isset( $metadata['duration'] ) || !$metadata['duration'] ) {
return 0.0;
// if compressed
if ( $items[2] == "\x01" ) {
if ( function_exists( 'gzuncompress' ) && $items[4] === "\x00" ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$items[5] = gzuncompress( $items[5] );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $items[5] === false ) {
// decompression failed
fseek( $fh, self::$crcSize, SEEK_CUR );
continue;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$content = iconv( 'ISO-8859-1', 'UTF-8', $content );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $content === false ) {
throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
continue;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$content = gzuncompress( $content );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $content === false ) {
// decompression failed
continue;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$content = iconv( 'ISO-8859-1', 'UTF-8', $content );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $content === false ) {
throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
$ok = symlink( $srcPath, $lnPath );
/** @noinspection PhpUnusedLocalVariableInspection */
$cleaner = new ScopedCallback( function () use ( $tmpDir, $lnPath ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
unlink( $lnPath );
rmdir( $tmpDir );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
} );
if ( !$ok ) {
wfDebugLog( 'thumbnail',
}
function unpackMetadata( $metadata ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$unser = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( isset( $unser['version'] ) && $unser['version'] == self::SVG_METADATA_VERSION ) {
return $unser;
} else {
// Because we cut off the end of the svg making an invalid one. Complicated
// try catch thing to make sure warnings get restored. Seems like there should
// be a better way.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
try {
$this->read();
} catch ( Exception $e ) {
// Note, if this happens, the width/height will be taken to be 0x0.
// Should we consider it the default 512x512 instead?
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
libxml_disable_entity_loader( $oldDisable );
throw $e;
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
libxml_disable_entity_loader( $oldDisable );
}
return self::METADATA_GOOD;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$data = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$data || !is_array( $data ) ) {
wfDebug( __METHOD__ . " invalid WebP metadata\n" );
$metadata = $file->getMetadata();
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$metadata = unserialize( $metadata );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $metadata == false ) {
return false;
* @return bool
*/
public function canRender( $file ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$xcfMeta = unserialize( $file->getMetadata() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( isset( $xcfMeta['colorType'] ) && $xcfMeta['colorType'] === 'index-coloured' ) {
return false;
}
*/
protected function unserialize( $serial ) {
if ( function_exists( 'gzinflate' ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$decomp = gzinflate( $serial );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( false !== $decomp ) {
$serial = $decomp;
$xml .= "</list>";
$dom = new DOMDocument();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$result = $dom->loadXML( $xml );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$result ) {
// Try running the XML through UtfNormal to get rid of invalid characters
$xml = UtfNormal\Validator::cleanUp( $xml );
}
$dom = new DOMDocument;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$result = $dom->loadXML( $xml );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$result ) {
// Try running the XML through UtfNormal to get rid of invalid characters
$xml = UtfNormal\Validator::cleanUp( $xml );
$badtag = true;
} elseif ( $slash ) {
# Closing a tag... is it the one we just opened?
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ot = array_pop( $tagstack );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $ot != $t ) {
if ( isset( $htmlsingleallowed[$ot] ) ) {
# and see if we find a match below them
$optstack = [];
array_push( $optstack, $ot );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ot = array_pop( $tagstack );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
while ( $ot != $t && isset( $htmlsingleallowed[$ot] ) ) {
array_push( $optstack, $ot );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ot = array_pop( $tagstack );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
if ( $t != $ot ) {
# No match. Push the optional elements back again
$badtag = true;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ot = array_pop( $optstack );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
while ( $ot ) {
array_push( $tagstack, $ot );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ot = array_pop( $optstack );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
}
} else {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
array_push( $tagstack, $ot );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
# <li> can be nested in <ul> or <ol>, skip those cases:
if ( !isset( $htmllist[$ot] ) || !isset( $listtags[$t] ) ) {
}
/**
+ * @codeCoverageIgnore
* @return bool
*/
public function checkDependencies() {
if ( !isset( $this->loaded[$dependencyName]['version'] ) ) {
// If we depend upon any version, and none is set, that's fine.
if ( $constraint === '*' ) {
- wfDebug( "{$dependencyName} does not expose it's version, but {$checkedExt}
- mentions it with constraint '*'. Assume it's ok so." );
+ wfDebug( "{$dependencyName} does not expose its version, but {$checkedExt}"
+ . " mentions it with constraint '*'. Assume it's ok so." );
return false;
} else {
// Otherwise, mark it as incompatible.
- return "{$dependencyName} does not expose it's version, but {$checkedExt}
- requires: {$constraint}.";
+ return "{$dependencyName} does not expose its version, but {$checkedExt}"
+ . " requires: {$constraint}.";
}
} else {
// Try to get a constraint for the dependency version
* @return int UNIX timestamp
*/
protected static function safeFilemtime( $filePath ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$mtime = filemtime( $filePath ) ?: 1;
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $mtime;
}
if ( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
$filteredText, $m, PREG_SET_ORDER ) ) {
foreach ( $m as $bits ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
list( /* all */, $modifier, $term, $nonQuoted, $wildcard ) = $bits;
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $nonQuoted != '' ) {
$term = $nonQuoted;
if ( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
$filteredText, $m, PREG_SET_ORDER ) ) {
foreach ( $m as $bits ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
list( /* all */, $modifier, $term, $nonQuoted, $wildcard ) = $bits;
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $nonQuoted != '' ) {
$term = $nonQuoted;
$m = [];
while ( preg_match( '/\$([0-9]*?)/sm', $value, $m ) ) {
list( $src, $var ) = $m;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$varValue = $this->context[$var];
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$value = str_replace( $src, $varValue, $value );
}
return $value;
function buildSidebar() {
global $wgEnableSidebarCache, $wgSidebarCacheExpiry;
- $callback = function () {
+ $callback = function ( $old = null, &$ttl = null ) {
$bar = [];
$this->addToSidebar( $bar, 'sidebar' );
Hooks::run( 'SkinBuildSidebar', [ $this, &$bar ] );
+ if ( MessageCache::singleton()->isDisabled() ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE; // bug T133069
+ }
return $bar;
};
- if ( $wgEnableSidebarCache ) {
- $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
- $sidebar = $cache->getWithSetCallback(
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ $sidebar = $wgEnableSidebarCache
+ ? $cache->getWithSetCallback(
$cache->makeKey( 'sidebar', $this->getLanguage()->getCode() ),
- MessageCache::singleton()->isDisabled()
- ? $cache::TTL_UNCACHEABLE // bug T133069
- : $wgSidebarCacheExpiry,
+ $wgSidebarCacheExpiry,
$callback,
[ 'lockTSE' => 30 ]
- );
- } else {
- $sidebar = $callback();
- }
+ )
+ : $callback();
// Apply post-processing to the cached value
Hooks::run( 'SidebarBeforeOutput', [ $this, &$sidebar ] );
$buffer = WikiExporter::STREAM;
// This might take a while... :D
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
set_time_limit( 0 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
$exporter = new WikiExporter( $db, $history, $buffer );
return Status::newFatal( 'locknoconfirm' );
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$fp = fopen( $this->getConfig()->get( 'ReadOnlyFile' ), 'w' );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( false === $fp ) {
# This used to show a file not found error, but the likeliest reason for fopen()
if ( $offender ) {
if ( $offender->getId() > 0 ) {
$qc = [ 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() ];
- } elseif ( empty( $opts->getValue( 'offender' ) ) === false ) {
+ } elseif ( !empty( $opts->getValue( 'offender' ) ) ) {
$qc = [ 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ];
}
}
}
$readOnlyFile = $this->getConfig()->get( 'ReadOnlyFile' );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$res = unlink( $readOnlyFile );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $res ) {
return Status::newGood();
* we're definitely dealing with revision data and we may proceed, if not, we'll leave it
* to extensions to subscribe to the hook to parse the row.
*/
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
try {
$rev = new Revision( $row );
$validRevision = (bool)$rev->getId();
} catch ( Exception $e ) {
$validRevision = false;
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $validRevision ) {
$attribs['data-mw-revid'] = $rev->getId();
* we're definitely dealing with revision data and we may proceed, if not, we'll leave it
* to extensions to subscribe to the hook to parse the row.
*/
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
try {
$rev = Revision::newFromArchiveRow( $row );
$validRevision = (bool)$rev->getId();
} catch ( Exception $e ) {
$validRevision = false;
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $validRevision ) {
$attribs['data-mw-revid'] = $rev->getId();
// detect the encoding in case is specifies an encoding not whitelisted in self::$safeXmlEncodings
$attemptEncodings = [ 'UTF-16', 'UTF-16BE', 'UTF-32', 'UTF-32BE' ];
foreach ( $attemptEncodings as $encoding ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$str = iconv( $encoding, 'UTF-8', $contents );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $str != '' && preg_match( "!<\?xml\b(.*?)\?>!si", $str, $matches ) ) {
if ( preg_match( $encodingRegex, $matches[1], $encMatch )
&& !in_array( strtoupper( $encMatch[1] ), self::$safeXmlEncodings )
protected static function findExecutable( $path, $name, $versionInfo = false ) {
$command = $path . DIRECTORY_SEPARATOR . $name;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$file_exists = is_executable( $command );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $file_exists ) {
if ( !$versionInfo ) {
$filePaths = (array)$filePaths;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( count( $filePaths ) === 1 ) {
$hash = $instance->getFileContentsHashInternal( $filePaths[0], $algo );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $hash;
}
return $instance->getFileContentsHashInternal( $filePath, $algo ) ?: '';
}, $filePaths );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$hashes = implode( '', $hashes );
return $hashes ? hash( $algo, $hashes ) : false;
}
// Try to get some ID that uniquely identifies this machine (RFC 4122)...
if ( !preg_match( '/^[0-9a-f]{12}$/i', $nodeId ) ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( wfIsWindows() ) {
// https://technet.microsoft.com/en-us/library/bb490913.aspx
$csv = trim( wfShellExec( 'getmac /NH /FO CSV' ) );
wfShellExec( '/sbin/ifconfig -a' ), $m );
$nodeId = isset( $m[1] ) ? str_replace( ':', '', $m[1] ) : '';
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !preg_match( '/^[0-9a-f]{12}$/i', $nodeId ) ) {
$nodeId = MWCryptRand::generateHex( 12, true );
$nodeId[1] = dechex( hexdec( $nodeId[1] ) | 0x1 ); // set multicast bit
return $ts;
}
- MediaWiki\suppressWarnings(); // E_STRICT system time bitching
+ Wikimedia\suppressWarnings(); // E_STRICT system time bitching
# Generate an adjusted date; take advantage of the fact that mktime
# will normalize out-of-range values so we don't have to split $minDiff
# into hours and minutes.
(int)substr( $ts, 0, 4 ) ); # Year
$date = date( 'YmdHis', $t );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $date;
}
# *input* string. We just ignore those too.
# REF: https://bugs.php.net/bug.php?id=37166
# REF: https://phabricator.wikimedia.org/T18885
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$text = iconv( $in, $out . '//IGNORE', $string );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $text;
}
"recentchangeslinked-feed": "sasuala a sumad",
"recentchangeslinked-toolbox": "sasuala a sumad",
"recentchangeslinked-title": "pulung \"$1\" sasuala a sumaday",
- "recentchangeslinked-summary": "uyni kasabelih pasilsil micuzu’ kasabelih masasiketay saca hamin kasabelihan (hakya u matuzu’ay kakuniza\nilabu saca hamin mamikawaw)izaw ku misumaday kasabelih piazihan tu sulit.\nizawtu ku [[Special:Watchlist|sapacukat a sulit nu misu]] ilabuay a kasabelih apatahkal ku <strong>kibetulay a sulit</strong> sacuzu’.",
+ "recentchangeslinked-summary": "uyni kasabelih pasilsil micuzu’ kasabelih masasiketay saca hamin kasabelihan (hakya u matuzu’ay kakuniza\nilabu saca hamin mamikawaw)izaw ku misumaday kasabelih piazihan tu sulit.\nizawtu ku [[Special:Watchlist|sapacukat a sulit nu misu]] ilabuay a kasabelih apatahkal ku <strong>kibetulay a sulit</strong> sacuzu’.",
"recentchangeslinked-page": "kasabelih kalungangan:",
"recentchangeslinked-to": "Show changes to pages linked to the given page instead\nmisumad ku paazih masasiket tayza matuzu’ay kasabelih a nisumad",
"recentchanges-page-added-to-category": "[[:$1]] macunus tu ta kakuniza",
"right-upload_by_url": "Загрузка файлаў з URL-адрасу",
"right-purge": "ачыстка кэшу старонак бяз запыту пацьверджаньня",
"right-autoconfirmed": "Ня дзейнічаюць абмежаваньні хуткасьці па IP",
- "right-bot": "лічыцца аўтаматычным працэсам",
+ "right-bot": "Ð\9bічыцца аўтаматычным працэсам",
"right-nominornewtalk": "не паведамляць удзельнікам пра новыя паведамленьні на іх старонках гутарак, калі зробленыя там праўкі былі дробнымі",
"right-apihighlimits": "менш абмежаваньняў на выкананьне API-запытаў",
"right-writeapi": "выкарыстаньне API для запісу",
"watchlistedit-clear-titles": "Старонкі:",
"watchlistedit-clear-submit": "Ачысьціць сьпіс назіраньня (гэта незваротна!)",
"watchlistedit-clear-done": "Ваш сьпіс назіраньня быў ачышчаны.",
+ "watchlistedit-clear-jobqueue": "Ваш сьпіс назіраньня ачышчаецца. Гэта можа заняць некаторы час!",
"watchlistedit-clear-removed": "{{PLURAL:$1|$1 запіс быў выдалены|$1 запісы былі выдаленыя|$1 запісаў былі выдаленыя}}:",
"watchlistedit-too-many": "Зашмат старонак, каб паказаць іх тут.",
"watchlisttools-clear": "Ачысьціць сьпіс назіраньня",
"postedit-confirmation-created": "Stránka byla založena.",
"postedit-confirmation-restored": "Stránka byla obnovena.",
"postedit-confirmation-saved": "Vaše změny byly uloženy.",
- "postedit-confirmation-published": "Vaše editace byla uložena.",
+ "postedit-confirmation-published": "Vaše editace byla zveřejněna.",
"edit-already-exists": "Nepodařilo se vytvořit novou stránku, protože již existuje.",
"defaultmessagetext": "Výchozí text hlášení",
"content-failed-to-parse": "Nepodařilo se zpracovat data $2 do modelu $1: $3",
"suppress": "Forigu",
"querypage-disabled": "Tiu ĉi speciala paĝo estas malfunkciigita pro rendimentaj kialoj.",
"apihelp": "Helpo pri API",
- "apihelp-no-such-module": "La modjulo „$1” ne estis trovita.",
+ "apihelp-no-such-module": "La modulo „$1” ne estis trovita.",
"apisandbox": "API testejo",
"apisandbox-jsonly": "JavaScript estas postulita por uzi la API provejon.",
"apisandbox-api-disabled": "API estas malŝalta en ĉi tiu retejo.",
"watchlistedit-clear-titles": "Titres :",
"watchlistedit-clear-submit": "Effacer la liste de suivi (ceci est permanent !)",
"watchlistedit-clear-done": "Votre liste de suivi a été effacée.",
+ "watchlistedit-clear-jobqueue": "Votre liste de suivi est en cours de supression. Ce qui peut prendre un certain temps.",
"watchlistedit-clear-removed": "{{PLURAL:$1|Un titre a été|$1 titres ont été}} retirés :",
"watchlistedit-too-many": "Il y a trop de pages à afficher ici.",
"watchlisttools-clear": "Effacer la liste de suivi",
"lockmanager-fail-closelock": "Non poteva clauder le file de serratura pro \"$1\".",
"lockmanager-fail-deletelock": "Non poteva deler le file de serratura pro \"$1\".",
"lockmanager-fail-acquirelock": "Non poteva acquirer un serratura pro \"$1\".",
- "lockmanager-fail-openlock": "Non poteva aperir le file de serratura pro \"$1\".",
+ "lockmanager-fail-openlock": "Non poteva aperir le file de serratura pro \"$1\". Assecura te que le directorio de incargamento es configurate correctemente e que tu servitor web ha le permission de scriber in ille directorio. Vide https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory pro plus information.",
"lockmanager-fail-releaselock": "Non poteva liberar le file de serratura pro \"$1\".",
"lockmanager-fail-db-bucket": "Non poteva contactar sufficiente bases de datos de serratura in situla $1.",
"lockmanager-fail-db-release": "Non poteva liberar le serraturas sur le base de datos $1.",
"rollback-success": "Revocava modificationes per {{GENDER:$3|$1}};\nretornava al version per {{GENDER:$4|$2}}.",
"rollback-success-notify": "Modificationes de $1 revertite;\nultime version de $2 restaurate. [$3 Monstrar cambiamentos]",
"sessionfailure-title": "Error de session",
- "sessionfailure": "Il pare haber un problema con tu session de conto;\niste action ha essite cancellate como precaution contra le sequestramento de sessiones.\nPer favor preme \"retro\" e recarga le pagina de ubi tu ha venite, postea reprova.",
+ "sessionfailure": "Il pare haber un problema con tu session;\niste action ha essite cancellate como precaution contra le robamento de sessiones.\nPer favor, resubmitte le formulario.",
"changecontentmodel": "Cambiar le modello de contento de un pagina",
"changecontentmodel-legend": "Cambiar modello de contento",
"changecontentmodel-title-label": "Titulo del pagina",
"autosumm-blank": "Ngothongaké kaca",
"autosumm-replace": "←Ngganti kaca karo '$1'",
"autoredircomment": "Ngeneraké kaca menyang [[$1]]",
+ "autosumm-changed-redirect-target": "Ngowahi jujuganing alihan saka [[$1]] menyang [[$2]]",
"autosumm-new": "Gawé kaca sing isi '$1'",
"autosumm-newblank": "Nggawé kaca barès",
"lag-warn-normal": "Owah-owahan pungkasan sing luwih anyar tinimbang $1 {{PLURAL:$1|detik|detik}} mbokmanawa ora metu ing pratélan iki.",
"tog-watchdefault": "បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំកែប្រែទៅបញ្ជីតាមដានរបស់ខ្ញុំ",
"tog-watchmoves": "បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំប្តូរទីតាំងទៅបញ្ជីតាមដានរបស់ខ្ញុំ",
"tog-watchdeletion": "បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំលុបចោលទៅបញ្ជីតាមដានរបស់ខ្ញុំ",
+ "tog-watchuploads": "បន្ថែមឯកសារថ្មីដែលខ្ញុំផ្ទុកឡើងទៅទំព័រតាមដានរបស់ខ្ញុំ",
"tog-watchrollback": "បន្ថែមទំព័រដែលខ្ញុំបានមូលត្រឡប់ទៅកាន់បញ្ជីតាមដានរបស់ខ្ញុំ",
"tog-minordefault": "ចំណាំគ្រប់កំណែប្រែរបស់ខ្ញុំថាជាកំណែប្រែតិចតួច",
"tog-previewontop": "បង្ហាញការមើលមុនពីលើប្រអប់កែប្រែ",
"tog-previewonfirst": "បង្ហាញការមើលមុនសម្រាប់កំណែប្រែដំបូងគេ",
- "tog-enotifwatchlistpages": "ផ្ញើអ៊ីមែលមកខ្ញុំកាលបើមានបន្លាស់ប្ដូរនៃទំព័រណាមួយដែលមានក្នុងបញ្ជីតាមដានរបស់ខ្ញុំ",
- "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á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bá\9e\93á\9f\85â\80\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\97á\9e¶á\9e\80á\9f\92á\9e\9fá\9e¶â\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86",
+ "tog-enotifwatchlistpages": "ផ្ញើអ៊ីមែលមកខ្ញុំកាលបើទំព័រឬឯកសារណាមួយដែលមានក្នុងបញ្ជីតាមដានរបស់ខ្ញុំត្រូវបានផ្លាស់ប្ដូរ",
+ "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\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\97á\9e¶á\9e\80á\9f\92á\9e\9fá\9e¶â\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a",
"tog-enotifminoredits": "ផ្ញើអ៊ីមែលមកខ្ញុំពេលមានបន្លាស់ប្ដូរតិចតួចលើទំព័រឬឯកសារផងដែរ",
"tog-enotifrevealaddr": "បង្ហាញអាសយដ្ឋានអ៊ីមែលរបស់ខ្ញុំក្នុងអ៊ីមែលក្រើនរំលឹក",
"tog-shownumberswatching": "បង្ហាញចំនួនអ្នកប្រើប្រាស់ដែលតាមដានទំព័រនេះ",
- "tog-oldsig": "á\9e á\9e\8fá\9f\92á\9e\90á\9e\9bá\9f\81á\9e\81á\9e¶á\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e¶á\9e\93á\9e á\9e¾á\9e\99៖",
+ "tog-oldsig": "á\9e á\9e\8fá\9f\92á\9e\90á\9e\9bá\9f\81á\9e\81á\9e¶á\9e\98á\9e¶á\9e\93á\9e\9fá\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80៖",
"tog-fancysig": "ចុះហត្ថលេខាជាអត្ថបទវិគី (ដោយគ្មានតំណភ្ជាប់ស្វ័យប្រវត្តិ)",
- "tog-uselivepreview": "á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\80á\9e¶á\9e\9aá\9e\98á\9e¾á\9e\9bá\9e\98á\9e»á\9e\93á\9e\9aá\9e á\9f\90á\9e\9f",
+ "tog-uselivepreview": "á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\80á\9e¶á\9e\9aá\9e\98á\9e¾á\9e\9bá\9e\98á\9e»á\9e\93á\9e\8aá\9f\84á\9e\99á\9e\98á\9e·á\9e\93á\9e\85á\9e¶á\9f\86á\9e\94á\9e¶á\9e\85á\9f\8bá\9e\95á\9f\92á\9e\91á\9e»á\9e\80á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89",
"tog-forceeditsummary": "សូមរំលឹកខ្ញុំកាលបើខ្ញុំទុកប្រអប់ចំណារពន្យល់ឱ្យនៅទំនេរ",
"tog-watchlisthideown": "លាក់កំណែប្រែរបស់ខ្ញុំពីបញ្ជីតាមដាន",
"tog-watchlisthidebots": "លាក់កំណែប្រែរបស់រូបយន្តពីបញ្ជីតាមដាន",
"tog-watchlisthideminor": "លាក់កំណែប្រែតិចតួចពីបញ្ជីតាមដាន",
"tog-watchlisthideliu": "លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់ដែលបានកត់ឈ្មោះចូលពីបញ្ជីតាមដាន",
+ "tog-watchlistreloadautomatically": "ផ្ទុកបញ្ជីតាមដានឡើងវិញដោយស្វ័យប្រវត្តិពេលដែលតម្រងត្រូវបានផ្លាស់ប្ដូរ (ត្រូវការJavaScript)",
+ "tog-watchlistunwatchlinks": "បន្ថែមតំណភ្ជាប់ មិនតាមដាន/តាមដាន ផ្ទាល់ទៅវត្ថុក្នុងបញ្ជីតាមដាន(ត្រូវការJavaScript សម្រាប់មុខងារឆ្លាស់ទៅឆ្លាស់មក)",
"tog-watchlisthideanons": "លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់អនាមិកពីបញ្ជីតាមដាន",
"tog-watchlisthidepatrolled": "លាក់កំណែប្រែដែលបានល្បាតពីបញ្ជីតាមដាន",
"tog-watchlisthidecategorization": "លាក់ការដាក់ចំណាត់ថ្នាក់ក្រុមទំព័រ",
"subcategories": "កូនចំណាត់ថ្នាក់ក្រុម",
"category-media-header": "ឯកសារមេឌាដែលមានក្នុងចំណាត់ថ្នាក់ក្រុម \"$1\"",
"category-empty": "''ចំណាត់ថ្នាក់ក្រុមនេះមិនមានផ្ទុកអត្ថបទឬឯកសារមេឌាណាមួយទេ។''",
- "hidden-categories": "{{PLURAL:|á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\98á\9e½á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e¶á\9e\80á\9f\8b|á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\85á\9f\86á\9e\93á\9e½á\9e\93$1á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e¶á\9e\80á\9f\8b}}",
+ "hidden-categories": "{{PLURAL:|á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\98á\9e½á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e¶á\9e\80á\9f\8b|á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e¶á\9e\80á\9f\8bá\9e\85á\9f\86á\9e\93á\9e½á\9e\93$1}}",
"hidden-category-category": "ចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់",
"category-subcat-count": "{{PLURAL:$2|ចំណាត់ថ្នាក់ក្រុមនេះមានតែកូនចំណាត់ថ្នាក់ក្រុមមួយដូចខាងក្រោមទេ។|ចំណាត់ថ្នាក់ក្រុមនេះមាន{{PLURAL:$1|កូនចំណាត់ថ្នាក់ក្រុមមួយ|កូនចំណាត់ថ្នាក់ក្រុមចំនួន$1}}ដូចខាងក្រោម ក្នុងចំណោមកូនចំណាត់ថ្នាក់ក្រុមសរុបចំនួន$2។}}",
"category-subcat-count-limited": "ចំណាត់ថ្នាក់ក្រុមនេះមាន {{PLURAL:$1|កូនចំណាត់ថ្នាក់ក្រុមមួយ|កូនចំណាត់ថ្នាក់ក្រុមចំនួន$1}}ដូចខាងក្រោម។",
"edit": "កែប្រែ",
"edit-local": "កែប្រែចំណារពន្យល់ដើម",
"create": "បង្កើត",
- "create-local": "ចំណារពន្យល់ដើម",
+ "create-local": "á\9e\94á\9e\93á\9f\92á\9e\90á\9f\82á\9e\98á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\9aá\9e\96á\9e\93á\9f\92á\9e\99á\9e\9bá\9f\8bá\9e\8aá\9e¾á\9e\98",
"delete": "លុបចោល",
"undelete_short": "ឈប់លុប{{PLURAL:$1|កំណែប្រែមួយ|កំណែប្រែចំនួន$1}}វិញ",
- "viewdeleted_short": "á\9e\98á\9e¾á\9e\9b{{PLURAL:$1|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\98á\9e½á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9b|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\85á\9f\86á\9e\93á\9e½á\9e\93 $1 á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9b}}",
+ "viewdeleted_short": "á\9e\98á\9e¾á\9e\9b{{PLURAL:$1|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\98á\9e½á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9b|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9bá\9e\85á\9f\86á\9e\93á\9e½á\9e\93 $1}}",
"protect": "ការពារ",
"protect_change": "ផ្លាស់ប្តូរ",
"unprotect": "ប្ដូរការការពារ",
"jumptosearch": "ស្វែងរក",
"view-pool-error": "សូមអភ័យទោស។ ប្រព័ន្ធបម្រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។\n\n$1",
"generic-pool-error": "សូមអភ័យទោស។ ប្រព័ន្ធបម្រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។",
- "pool-errorunknown": "កំហុសមិនស្គាល់",
+ "pool-errorunknown": "បញ្ហាមិនស្គាល់",
+ "poolcounter-usage-error": "បញ្ហាបម្រើបម្រាស់៖ $1",
"aboutsite": "អំពី{{SITENAME}}",
"aboutpage": "Project:អំពី",
"copyright": "ខ្លឹមសារអត្ថបទប្រើប្រាស់បានក្រោមអាជ្ញាបណ្ឌ$1 លើកលែងតែមានបញ្ជាក់ផ្សេងពីនោះ។",
"youhavenewmessagesfromusers": "អ្នកមាន $1 ទទួលបានពី {{PLURAL:$3|អ្នកប្រើប្រាស់ម្នាក់|អុ្នកប្រើប្រាស់ចំនួន $3 នាក់}} ($2)។",
"youhavenewmessagesmanyusers": "អ្នកមាន $1 ទទួលបានពីអ្នកប្រើប្រាស់ជាច្រើន ($2)។",
"newmessageslinkplural": "{{PLURAL:$1|សារថ្មីមួយ|សារថ្មី}}",
- "newmessagesdifflinkplural": "{{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លាស់ប្ដូរ}}ចុងក្រោយ",
+ "newmessagesdifflinkplural": "{{PLURAL:$1|á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a|999=á\9e\94á\9e\93á\9f\92លាស់ប្ដូរ}}ចុងក្រោយ",
"youhavenewmessagesmulti": "អ្នកមានសារថ្មីៗនៅ $1",
"editsection": "កែប្រែ",
"editold": "កែប្រែ",
"toc": "មាតិកា",
"showtoc": "បង្ហាញ",
"hidetoc": "លាក់",
- "collapsible-collapse": "á\9e\94á\9e\84á\9f\92á\9e\9aá\9e½á\9e\98",
+ "collapsible-collapse": "á\9e\94á\9e\84á\9f\92á\9e\9aá\9e½á\9e\89",
"collapsible-expand": "ពន្លាត",
"confirmable-confirm": "តើ {{GENDER:$1|អ្នក}} ប្រាកដហើយ?",
- "confirmable-yes": "បាទ/ចាស",
+ "confirmable-yes": "បាទ/ចាស៎",
"confirmable-no": "ទេ",
"thisisdeleted": "មើល ឬ ស្ដារ $1 ឡើងវិញ?",
"viewdeleted": "មើល $1?",
- "restorelink": "{{PLURAL:$1|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\98á\9e½á\9e\99á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9b|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\85á\9f\86á\9e\93á\9e½á\9e\93 $1 á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9b}}",
+ "restorelink": "{{PLURAL:$1|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\98á\9e½á\9e\99á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9b|á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94á\9e\85á\9f\84á\9e\9bá\9e\85á\9f\86á\9e\93á\9e½á\9e\93 $1}}",
"feedlinks": "Feed៖",
"feed-invalid": "ប្រភេទfeedដែលគ្មានសុពលភាព។",
"feed-unavailable": "បម្រែបម្រួល Syndication feeds មិនទាន់មាននៅឡើយទេ",
"cannotlogoutnow-title": "មិនអាចកត់ឈ្មោះចេញបានទេនៅពេលនេះ",
"cannotlogoutnow-text": "មិនអាចកត់ឈ្មោះចេញបានទេពេលកំពុងប្រើ$1។",
"welcomeuser": "សូមស្វាគមន៍ $1!",
- "welcomecreation-msg": "á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8fá\9e á\9e¾á\9e\99á\9f\94\ná\9e\80á\9e»á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a[[Special:Preferences|á\9e\85á\9f\86á\9e\8eá\9e\84á\9f\8bá\9e\85á\9f\86á\9e\8eá\9e¼á\9e\9bá\9e\85á\9e·á\9e\8fá\9f\92á\9e\8f{{SITENAME}}]]á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80។",
+ "welcomecreation-msg": "á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8fá\9e á\9e¾á\9e\99á\9f\94\ná\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9a[[Special:Preferences|á\9e\85á\9f\86á\9e\8eá\9e\84á\9f\8bá\9e\85á\9f\86á\9e\8eá\9e¼á\9e\9bá\9e\85á\9e·á\9e\8fá\9f\92á\9e\8f]]{{SITENAME}}á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9e¶á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\90á\9f\92á\9e\93á\9e¶។",
"yourname": "អត្តនាម៖",
"userlogin-yourname": "អត្តនាម",
"userlogin-yourname-ph": "បញ្ចូលអត្តនាមរបស់អ្នក",
"createacct-yourpasswordagain": "អះអាងពាក្យសម្ងាត់",
"createacct-yourpasswordagain-ph": "បញ្ចូលពាក្យសម្ងាត់ម្ដងទៀត",
"userlogin-remembermypassword": "រក្សាស្ថានភាពកត់ឈ្មោះចូលរបស់ខ្ញុំ",
- "userlogin-signwithsecure": "á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\8fá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bមានសុវត្ថិភាព",
+ "userlogin-signwithsecure": "á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9e\8eá\9f\92á\9e\8aá\9e¶á\9e\89មានសុវត្ថិភាព",
"cannotlogin-title": "មិនអាចកត់ឈ្មោះចូលបានទេ",
"cannotlogin-text": "មិនអាចកត់ឈ្មោះចូលបានទេ។",
"cannotloginnow-title": "មិនអាចកត់ឈ្មោះចូលបានទេនៅពេលនេះ",
"userlogin-noaccount": "តើលោកអ្នកមិនទាន់មានគណនីសម្រាប់ប្រើទេឬ?",
"userlogin-joinproject": "សូមចូលជាសមាជិក {{SITENAME}}",
"createaccount": "បង្កើតគណនី",
- "userlogin-resetpassword-link": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e á\9e¾á\9e\99?",
+ "userlogin-resetpassword-link": "á\9e\8fá\9e¾á\9e¢á\9f\92á\9e\93á\9e\80á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e á\9e¾á\9e\99á\9e¬?",
"userlogin-helplink2": "ជំនួយលើការកត់ឈ្មោះចូល",
"userlogin-loggedin": "អ្នកបានកត់ឈ្មោះចូលជា {{GENDER:$1|$1}} ហើយ។\nប្រើសំណុំបែបបទខាងក្រោមដើម្បីកត់ឈ្មោះចូលជាអ្នកប្រើប្រាស់ផ្សេងម្នាក់ទៀត។",
"userlogin-reauth": "អ្នកត្រូវតែកត់ឈ្មោះចូលម្ដងទៀតដើម្បីបញ្ជាក់ថាអ្នកជា{{GENDER:$1|$1}}។",
"createacct-benefit-body1": "{{PLURAL:$1|កំណែ|កំណែ}}",
"createacct-benefit-body2": "{{PLURAL:$1|ទំព័រ|ទំព័រ}}",
"createacct-benefit-body3": "{{PLURAL:$1|អ្នករួមចំណែក|អ្នករួមចំណែក}}ថ្មីៗ",
- "badretype": "ពាក្យសម្ងាត់ដែលអ្នកបានវាយបញ្ចូលនោះ គឺមិនស៊ីគ្នាទេ។",
+ "badretype": "ពាក្យសម្ងាត់ដែលអ្នកបានវាយបញ្ចូលនោះមិនត្រូវគ្នាទេ។",
"usernameinprogress": "ការបង្កើតគណនីសម្រាប់អ្នកប្រើប្រាស់នេះកំពុងប្រព្រឹត្តទៅ។ សូមរង់ចាំបន្តិច។",
"userexists": "អត្តនាមដែលអ្នកបានវាយបញ្ចូលមានគេប្រើហើយ។\nសូមជ្រើសរើសអត្តនាមផ្សេងពីនេះ។",
- "loginerror": "á\9e\80á\9f\86á\9e á\9e»á\9e\9fá\9e\93á\9f\83ការកត់ឈ្មោះចូល",
+ "loginerror": "á\9e\94á\9e\89á\9f\92á\9e á\9e¶á\9e\80á\9f\92á\9e\93á\9e»á\9e\84ការកត់ឈ្មោះចូល",
"createacct-error": "បញ្ហាក្នុងការបង្កើតគណនី",
"createaccounterror": "មិនអាចបង្កើតគណនីបានទេ៖ $1",
"nocookiesnew": "គណនីប្រើប្រាស់របស់អ្នកត្រូវបានបង្កើតហើយ ក៏ប៉ុន្តែអ្នកមិនទាន់បានកត់ឈ្មោះចូលទេ។\n\n{{SITENAME}}ប្រើប្រាស់ខូឃី ដើម្បីកត់ឈ្មោះចូល។\n\nអ្នកបានជ្រើសមិនប្រើខូឃី។\n\nសូមជ្រើសប្រើខូឃីវិញ រួចកត់ឈ្មោះចូលដោយប្រើអត្តនាមថ្មីនិងពាក្យសំងាត់ថ្មីរបស់អ្នក។",
"nocookieslogin": "{{SITENAME}}ប្រើខូឃីដើម្បីកត់ឈ្មោះចូល។\n\nអ្នកបានជ្រើសមិនប្រើខូឃី។\n\nសូមជ្រើសប្រើខូឃីវិញ រួចព្យាយាមម្តងទៀត។",
"nocookiesforlogin": "{{int:nocookieslogin}}",
+ "createacct-loginerror": "គណនីត្រូវបានបង្កើតបានសម្រេចហើយ ប៉ុន្តែអ្នកមិនអាចកត់ឈ្មោះចូលដោយស្វ័យប្រវត្តិទេ។\nសូមបន្តទៅ [[Special:UserLogin|កត់ឈ្មោះចូលដោយខ្លួនឯង]]។",
"noname": "អ្នកមិនបានផ្ដល់អត្តនាមត្រឹមត្រូវទេ។",
- "loginsuccesstitle": "á\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ហើយ",
- "loginsuccess": "'''ពេលនេះអ្នកបានកត់ឈ្មោះចូល{{SITENAME}}ដោយប្រើឈ្មោះ \"$1\"ហើយ។'''",
+ "loginsuccesstitle": "á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\94á\9e¶á\9e\93ហើយ",
+ "loginsuccess": "<strong>ពេលនេះអ្នកបានកត់ឈ្មោះចូល{{SITENAME}}ដោយប្រើឈ្មោះ \"$1\"ហើយ។</strong>",
"nosuchuser": "មិនមានអ្នកប្រើដែលមានឈ្មោះ \"$1\" ទេ។\n\nសូមពិនិត្យក្រែងលោមានកំហុសអក្ខរាវិរុទ្ធឬ [[Special:CreateAccount|បង្កើតគណនីថ្មី]]។",
"nosuchusershort": "គ្មានអ្នកប្រើដែលមានឈ្មោះ $1\" ទេ។\n\nសូមពិនិត្យអក្ខរាវិរុទ្ធរបស់អ្នក ។",
"nouserspecified": "អ្នកត្រូវតែផ្ដល់អត្តនាម។",
"wrongpasswordempty": "ពាក្យសម្ងាត់មិនបានវាយបញ្ចូលទេ។\n\nសូមព្យាយាមម្តងទៀត។",
"passwordtooshort": "ពាក្យសម្ងាត់ត្រូវមានយ៉ាងតិចណាស់ {{PLURAL:$1|១ តួអក្សរ|$1តួអក្សរ}}។",
"passwordtoolong": "ពាក្យសម្ងាត់មិនអាចវែងជាង{{PLURAL:$1|1 តួ|$1 តួ}}ទេ។",
+ "passwordtoopopular": "ពាក្យសម្ងាត់ដែលមានគេប្រើជាទូទៅមិនអាចប្រើបានទេ។ សូមជ្រើសរើសពាក្យសម្ងាត់ដែលពិសេសខុសគេ។",
"password-name-match": "ពាក្យសម្ងាត់ត្រូវតែខុសគ្នាពីអត្តនាមរបស់អ្នក។",
"password-login-forbidden": "ហាមប្រាមមិនអោយប្រើអត្តនាមនិងពាក្យសម្ងាត់នេះ។",
"mailmypassword": "កំណត់ពាក្យសម្ងាត់សាឡើងវិញ",
"noemail": "គ្មានអាសយដ្ឋានអ៊ីមែលណាមួយត្រូវបានកត់ត្រាទុកសម្រាប់អ្នកប្រើឈ្មោះ \"$1\" ទេ។",
"noemailcreate": "អ្នកត្រូវតែផ្ដល់អាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវមួយ",
"passwordsent": "ពាក្យសម្ងាត់ថ្មីត្រូវបានផ្ញើទៅអាសយដ្ឋានអ៊ីមែលដែលបានចុះបញ្ជីសម្រាប់អ្នកប្រើឈ្មោះ \"$1\" ។\n\nសូមកត់ឈ្មោះចូលម្តងទៀតបន្ទាប់ពីអ្នកបានទទួលពាក្យសម្ងាត់ថ្មីនោះ។",
- "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á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\84á\9f\92á\9e\80á\9e¶á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\94á\9f\86á\9e\96á\9e¶á\9e\93á\9e\91á\9f\81។",
+ "blocked-mailpassword": "á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\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 á\9f\94 á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\84á\9f\92á\9e\80á\9e¶á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\94á\9f\86á\9e\96á\9e¶á\9e\93 á\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á\9e\84á\9e¶á\9e\8fá\9f\8bá\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\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPá\9e\93á\9f\81á\9f\87។",
"eauthentsent": "អ៊ីមែលសម្រាប់ផ្ទៀងផ្ទាត់បញ្ជាក់ត្រូវបានផ្ញើទៅអាសយដ្ឋានអ៊ីមែលដែលបានផ្ដល់ជូនហើយ។\n\nមុននឹងមានអ៊ីមែលផ្សេងមួយទៀតត្រូវផ្ញើទៅគណនីនេះ អ្នកត្រូវតែធ្វើតាមសេចក្តីណែនាំក្នុងអ៊ីមែលនោះ ដើម្បីបញ្ជាក់ថាគណនីបច្ចុប្បន្នពិតជារបស់អ្នកពិតប្រាកដមែន។",
"throttled-mailpassword": "អ៊ីមែលប្ដូរពាក្យសម្ងាត់ត្រូវបានផ្ញើទៅឱ្យអ្នកតាំងពី{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}មុននេះហើយ។\n\nដើម្បីបង្ការអំពើបំពាន អ៊ីមែលប្ដូរពាក្យសម្ងាត់តែមួយគត់នឹងត្រូវបានផ្ញើក្នុងរយៈពេល{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}។",
"mailerror": "បញ្ហាក្នុងការផ្ញើអ៊ីមែល៖ $1",
- "acct_creation_throttle_hit": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\91á\9e\9fá\9f\92á\9e\9fá\9e\93á\9e¶â\80\8bá\9e\9cá\9e·á\9e\82á\9e¸â\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\8aá\9f\84á\9e\99â\80\8bá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPá\9e\9aá\9e\94á\9e\9fá\9f\8bâ\80\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8b á\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8f{{PLURAL:$1|á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\98á\9e½á\9e\99|á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\85á\9f\86á\9e\93á\9e½á\9e\93$1}}á\9e\93á\9f\85â\80\8bá\9e\90á\9f\92á\9e\84á\9f\83â\80\8bá\9e\85á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\99។ ចំនួននេះជាចំនួនអតិបរមារដែលត្រូវបានអនុញ្ញាតសម្រាប់រយៈពេលនេះ។\n\nហេតុនេះ អ្នកទស្សនាដោយប្រើប្រាស់អាសយដ្ឋានIPនេះមិនអាចបង្កើតគណនីបន្ថែមទៀតនៅខណៈនេះបានទេ។",
+ "acct_creation_throttle_hit": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\91á\9e\9fá\9f\92á\9e\9fá\9e\93á\9e¶â\80\8bá\9e\9cá\9e·á\9e\82á\9e¸â\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\8aá\9f\84á\9e\99â\80\8bá\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPá\9e\9aá\9e\94á\9e\9fá\9f\8bâ\80\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8b á\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8f{{PLURAL:$1|á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\98á\9e½á\9e\99|á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\85á\9f\86á\9e\93á\9e½á\9e\93$1}}á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9aá\9e\99á\9f\88á\9e\96á\9f\81á\9e\9b$2á\9e\90á\9f\92á\9e\98á\9e¸á\9f\97á\9e\93á\9f\81á\9f\87។ ចំនួននេះជាចំនួនអតិបរមារដែលត្រូវបានអនុញ្ញាតសម្រាប់រយៈពេលនេះ។\n\nហេតុនេះ អ្នកទស្សនាដោយប្រើប្រាស់អាសយដ្ឋានIPនេះមិនអាចបង្កើតគណនីបន្ថែមទៀតនៅខណៈនេះបានទេ។",
"emailauthenticated": "អាសយដ្ឋានអ៊ីមែលរបស់លោកអ្នកត្រូវបានបញ្ជាក់ទទួលស្គាល់នៅ$2នៅ$3។",
"emailnotauthenticated": "អាសយដ្ឋានអ៊ីមែលរបស់លោកអ្នក មិនទាន់ត្រូវបានបញ្ជាក់ទទួលស្គាល់នៅឡើយទេ។\n\nគ្មានអ៊ីមែលដែលនឹងត្រូវបានផ្ញើ សម្រាប់មុខងារពិសេសណាមួយដូចខាងក្រោមទេ។",
"noemailprefs": "ផ្ដល់អាសយដ្ឋានអ៊ីមែលនៅក្នុងចំណង់ចំណូលចិត្តរបស់អ្នកដើម្បីប្រើប្រាស់មុខងារពិសេសទាំងនេះ។",
"resetpass_submit": "ដាក់ប្រើពាក្យសម្ងាត់និងកត់ឈ្មោះចូល",
"changepassword-success": "ពាក្យសម្ងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរហើយ!",
"changepassword-throttled": "អ្នកបានព្យាយាមកត់ឈ្មោះចូលជាប់ៗគ្នាច្រើនដងពេកហើយ។\nសូមរង់ចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។",
+ "botpasswords": "ពាក្យសម្ងាត់រូបយន្ត",
+ "botpasswords-summary": "<em>ពាក្យសម្ងាត់រូបយន្ត</em> អនុញ្ញាតអោយចូលទៅក្នុងគណនីរបស់អ្នកប្រើប្រាស់ម្នាក់ តាមរយៈ API ដោយមិនចាំបាច់ប្រើមុខងារកត់ឈ្មោះចូលធម្មតា។ សិទ្ធិអ្នកប្រើប្រាស់ពេលកត់ឈ្មោះចូលដោយប្រើពាក្យសម្ងាត់រូបយន្តមានកំហិត។\n\nប្រសិនបើអ្នកគ្មានមូលហេតុប្រើប្រាស់ពាក្យសម្ងាត់នេះទេ អ្នកមិនគួរប្រើវាទេ។ គ្មាននរណាម្នាក់មានសិទ្ធិស្នើសុំអ្នកអោយបង្កើតវាហើយប្រាប់ទៅពួកគេទេ។",
+ "botpasswords-disabled": "មិនប្រើពាក្យសម្ងាត់រូបយន្ត។",
+ "botpasswords-no-central-id": "ដើម្បីប្រើពាក្យសម្ងាត់រូបយន្ត អ្នកត្រូវតែកត់ឈ្មោះចូលទៅក្នុងគណនីមជ្ឈិម។",
+ "botpasswords-existing": "ពាក្យសម្ងាត់រូបយន្តមានហើយ",
+ "botpasswords-createnew": "បង្កើតពាក្យសម្ងាត់រូបយន្តថ្មី",
+ "botpasswords-editexisting": "កែប្រែពាក្យសម្ងាត់រូបយន្តមានហើយ",
+ "botpasswords-label-appid": "ឈ្មោះរូបយន្ត៖",
+ "botpasswords-label-create": "បង្កើត",
+ "botpasswords-label-update": "បន្ទាន់សម័យ",
+ "botpasswords-label-cancel": "បោះបង់",
+ "botpasswords-label-delete": "លុបចោល",
+ "botpasswords-label-resetpassword": "កំណត់ពាក្យសម្ងាត់ឡើងវិញ",
+ "botpasswords-label-grants": "សិទ្ធិដែលអាចប្រើបាន៖",
+ "botpasswords-label-grants-column": "ផ្ដល់សិទ្ធិហើយ",
+ "botpasswords-bad-appid": "ឈ្មោះរូបយន្ត«$1»ប្រើមិនបានទេ។",
"resetpass_forbidden": "ពាក្យសម្ងាត់មិនអាចផ្លាស់ប្តូរបានទេ",
"resetpass-no-info": "អ្នកចាំបាច់ត្រូវតែកត់ឈ្មោះចូល ដើម្បីចូលទៅកាន់ទំព័រនេះដោយផ្ទាល់។",
"resetpass-submit-loggedin": "ប្តូរពាក្យសម្ងាត់",
"passwordreset-emailtext-user": "អ្នកប្រើប្រាស់ $1 នៅក្នុង {{SITENAME}} បានស្នើសុំស្ដារពាក្យសម្ងាត់របស់អ្នកនៅក្នុង {{SITENAME}} ($4)។\n {{PLURAL:$3|គណនី|គណនី}}អ្នកប្រើប្រាស់ដូចតទៅនេះមានជាប់ទាក់ទិននឹងអាសយដ្ឋានអ៊ីមែលនេះ៖\n\n$2\n\n{{PLURAL:$3|ពាក្យសម្ងាត់បណ្ដោះអាសន្ននេះ|ពាក្យសម្ងាត់បណ្ដោះអាសន្នទាំងនេះ}} និងហួសសុពលភាពក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5 ថ្ងៃ}}។\nយកល្អអ្នកគួរតែកត់ឈ្មោះចូលរួចជ្រើសរើសពាក្យសម្ងាត់ថ្មីមួយ។ ប្រសិនបើមាននរណាម្នាក់ផ្សេងធ្វើការស្នើសុំនេះ \nឬប្រសិនបើអ្នកនឹកឃើញពាក្យសម្ងាត់ដើមរបស់អ្នក ហើយអ្នកមិនប្រាថ្នាផ្លាស់ប្ដូរវាទៀតទេនោះ អ្នកគ្រាន់តែ\nបំភ្លេចអំពីសារមួយនេះ ហើយបន្តប្រើប្រាស់ពាក្យសម្ងាត់ចាស់របស់អ្នកទៅបានហើយ។",
"passwordreset-emailelement": "អត្តនាម៖ \n$1\n\nពាក្យសម្ងាត់បណ្ដោះអាសន្ន៖ \n$2",
"passwordreset-emailsentemail": "បើសិនជានេះអាសយដ្ឋានអ៊ីមែលដែលត្រូវបានចុះឈ្មោះសម្រាប់គណនីរបស់អ្នក នោះអ៊ីមែលសម្រាប់ស្ដារពាក្យសម្ងាត់មួយនឹងត្រូវបានផ្ញើទៅ។",
+ "passwordreset-invalidemail": "អាសយដ្ឋានអ៊ីមែលមិនត្រឹមត្រូវ",
"changeemail": "ផ្លាស់ប្ដូរឬលុបអាសយដ្ឋានអ៊ីមែល",
"changeemail-header": "សូមបំពេញសំណុំបែបបទនេះដើម្បីផ្លាស់ប្ដូរអាសយដ្ឋានអ៊ីមែល។ បើសិនជាអ្នកចង់លុបការតភ្ជាប់អាសយដ្ឋានអ៊ីមែលពីគណនីរបស់អ្នក សូមដាក់ប្រឡោះអាសយដ្ឋានថ្មីអោយនៅទំនេរពេលសម្រេចដាក់សំណុំបែបបទ។",
"changeemail-no-info": "អ្នកចាំបាច់ត្រូវតែកត់ឈ្មោះចូល ដើម្បីចូលទៅកាន់ទំព័រនេះដោយផ្ទាល់។",
"changeemail-submit": "ផ្លាស់ប្ដូរអ៊ីមែល",
"changeemail-throttled": "អ្នកបានព្យាយាមកត់ឈ្មោះចូលច្រើនដងពេកហើយ។\nសូមរង់ចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។",
"changeemail-nochange": "សូមវាយបញ្ចូលអាសយដ្ឋានអ៊ីមែលផ្សេងមួយទៀត។",
+ "resettokens": "កំណត់កូនសោរឡើងវិញ",
+ "resettokens-text": "អ្នកអាចកំណត់ឡើងវិញនូវកូនសោរដែលអនុញ្ញាតអោយចូលទៅមើលទិន្នន័យផ្ទាល់ខ្លួនដែលទាក់ទិនគណនីរបស់អ្នក។\n\nអ្នកគួរធ្វើបែបនេះប្រសិនបើអ្នកច្រលំចែកចាយវាទៅនរណាម្នាក់ ឬក្នុងករណីដែលគណនីរបស់អ្នកត្រូវបានគេបំពាន។",
+ "resettokens-no-tokens": "គ្មានកូនសោរសម្រាប់កំណត់ឡើងវិញទេ។",
+ "resettokens-tokens": "កូនសោរ៖",
+ "resettokens-token-label": "$1 (តម្លៃបច្ចុប្បន្ន $2)",
+ "resettokens-done": "កូនសោរកំណត់ឡើងវិញហើយ។",
+ "resettokens-resetbutton": "កំណត់ឡើងវិញនូវកូនសោរដែលបានរើស។",
"bold_sample": "អក្សរដិត",
"bold_tip": "អក្សរដិត",
"italic_sample": "អក្សរទ្រេត",
"missingcommentheader": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ប្រធានបទរបស់មតិយោបល់នេះទេ។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត នោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។",
"summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់៖",
"subject-preview": "ការមើលជាមុនរបស់ប្រធានបទ៖",
- "previewerrortext": "មានបញ្ហាកើតឡើងពេលព្យាយាមើលជាមុនបន្លាស់ប្ដូររបស់អ្នក។",
+ "previewerrortext": "á\9e\98á\9e¶á\9e\93á\9e\94á\9e\89á\9f\92á\9e á\9e¶á\9e\80á\9e¾á\9e\8fá\9e¡á\9e¾á\9e\84á\9e\96á\9f\81á\9e\9bá\9e\96á\9f\92á\9e\99á\9e¶á\9e\99á\9e¶á\9e\98á\9e\98á\9e¾á\9e\9bá\9e\87á\9e¶á\9e\98á\9e»á\9e\93á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9f\94",
"blockedtitle": "អ្នកប្រើនេះត្រូវបានហាមឃាត់ហើយ",
"blockedtext": "'''ឈ្មោះគណនីឬអាសយដ្ឋានIPរបស់អ្នកស្ថិតក្រោមការហាមឃាត់ហើយ។'''\n\nការហាមឃាត់ត្រូវបានធ្វើដោយ $1\n\nដោយសំអាងលើហេតុផល ''$2''។\n\n\n* ចាប់ផ្ដើមការហាមឃាត់ ៖ $8\n* ផុតកំណត់ការហាមឃាត់ ៖ $6\n* គណនីហាមឃាត់់ ៖ $7\n\n\nអ្នកអាចទាក់ទងទៅ $1 ឬ [[{{MediaWiki:Grouppage-sysop}}|អ្នកអភិបាល]]ដទៃទៀតដើម្បីពិភាក្សាពីការហាមឃាត់នេះ ។\n\nអ្នកមិនអាចប្រើប្រាស់មុខងារ \"អ៊ីមែលទៅអ្នកប្រើប្រាស់នេះ\" បានទេ លើកលែងតែអាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវមួយត្រូវបានផ្ដល់អោយក្នុង[[Special:Preferences|ចំណង់ចំណូលចិត្ត]]របស់លោកអ្នកហើយលោកអ្នកមិនត្រូវបានគេហាមឃាត់មិនឱ្យប្រើប្រាស់មុខងារនោះ។\n\nអាសយដ្ឋានIPបច្ចុប្បន្នរបស់លោកអ្នកគឺ $3 និងអត្តលេខហាមឃាត់គឺ #$5 ។\n\nសូមបញ្ចូលព័ត៌មានលំអិតទាំងអស់ខាងលើនេះ ក្នុងអ៊ីមែលទាក់ទងនឹងបញ្ហានេះ។",
"autoblockedtext": "អាសយដ្ឋានIPរបស់អ្នកបានត្រូវហាមឃាត់ដោយស្វ័យប្រវត្តិ ព្រោះវាត្រូវបានប្រើប្រាស់ដោយអ្នកប្រើប្រាស់ម្នាក់ទៀត ដែលត្រូវបានហាមឃាត់ដោយ $1 ។\n\nមូលហេតុលើកឡើង៖\n\n:''$2''\n\n* ការចាប់ផ្តើមហាមឃាត់៖ $8\n* ពេលផុតកំណត់ហាមឃាត់៖ $6\n* គណនីហាមឃាត់៖ $7\n\nអ្នកអាចទាក់ទង $1 ឬ[[{{MediaWiki:Grouppage-sysop}}|អ្នកអភិបាល]]ណាម្នាក់ ដើម្បីពិភាក្សាអំពីការហាមឃាត់នេះ។\n\nសូមកត់សម្គាល់ថាអ្នកមិនអាចប្រើប្រាស់មុខងារ \"អ៊ីមែលអ្នកប្រើប្រាស់នេះ\" បានទេ លុះត្រាតែមានអាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវមួយ បានចុះឈ្មោះក្នុង[[Special:Preferences|ចំណង់ចំណូលចិត្ត]]របស់អ្នក ហើយអ្នកមិនត្រូវបានហាមឃាត់មិនឱ្យប្រើប្រាស់មុខងារនោះ ។\n\nអាសយដ្ឋានIPបច្ចុប្បន្នរបស់អ្នកគឺ $3។ អត្តលេខហាមឃាត់គឺ #$5។\nសូមបញ្ចូលព័ត៌មានលំអិតទាំងអស់ខាងលើនេះ ក្នុងអ៊ីមែលទាក់ទងនឹងបញ្ហានេះ។",
"nohistory": "មិនមានប្រវត្តិកំណែប្រែចំពោះទំព័រនេះ។",
"currentrev": "កំណែបច្ចុប្បន្ន",
"currentrev-asof": "កំណែប្រែបច្ចុប្បន្ន $1",
- "revisionasof": "កំណែរបស់ $1",
+ "revisionasof": "កំណែនៅ $1",
"revision-info": "កំណែនៅ $1 ដោយ {{GENDER:$6|$2}}$7",
"previousrevision": "← កំណែមុន",
"nextrevision": "កំណែបន្ទាប់ →",
"next": "បន្ទាប់",
"last": "មុន",
"page_first": "ដំបូង",
- "page_last": "á\9e\85á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\99",
- "histlegend": "á\9e\87á\9e\98á\9f\92á\9e\9aá\9e¾á\9e\9fá\9f\96 á\9e\9fá\9e¼á\9e\98á\9e\82á\9e¼á\9e\9fá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e¼á\9e\93á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\96á\9e¸á\9e\98á\9e»á\9e\81á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e\84á\9f\8bá\9e\94á\9f\92á\9e\9aá\9f\80á\9e\94á\9e\92á\9f\80á\9e\94 á\9e\9aá\9e½á\9e\85á\9e\85á\9e»á\9e\85á\9e\85á\9f\92á\9e\93á\9e»á\9e\85 ENTER á\9e¬á\9e\94á\9f\8aá\9e¼á\9e\8fá\9e»á\9e\84á\9e\93á\9f\85á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9f\94<br />\n'''á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\8fá\9f\86á\9e\8eá\9e¶á\9e\84'''á\9f\96(á\9e\94á\9e\85á\9f\92á\9e\85á\9e»á\9e\94á\9f\92á\9e\94á\9e\93á\9f\92á\9e\93) = á\9e\97á\9e¶á\9e\96á\9e\81á\9e»á\9e\9fá\9e\82á\9f\92á\9e\93á\9e¶á\9e\87á\9e¶á\9e\98á\9e½á\9e\99á\9e\93á\9e¹á\9e\84á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9e\85á\9f\92á\9e\85á\9e»á\9e\94á\9f\92á\9e\94á\9e\93á\9f\92á\9e\93, (á\9e\85á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\99) = á\9e\97á\9e¶á\9e\96á\9e\81á\9e»á\9e\9fá\9e\82á\9f\92á\9e\93á\9e¶á\9e\9aá\9e\9cá\9e¶á\9e\84á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\96á\9e¸á\9e\98á\9e»á\9e\93, á\9e\8fá\9e·á\9e\85 = á\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",
+ "page_last": "á\9e\98á\9e»á\9e\93",
+ "histlegend": "á\9e\87á\9e\98á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\94á\9f\92á\9e\9aá\9f\80á\9e\94á\9e\92á\9f\80á\9e\94á\9f\96 á\9e\9fá\9e¼á\9e\98á\9e\82á\9e¼á\9e\9fá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e¼á\9e\93á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\96á\9e¸á\9e\98á\9e»á\9e\81á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e\84á\9f\8bá\9e\94á\9f\92á\9e\9aá\9f\80á\9e\94á\9e\92á\9f\80á\9e\94 á\9e\9aá\9e½á\9e\85á\9e\85á\9e»á\9e\85á\9e\85á\9f\92á\9e\93á\9e»á\9e\85 ENTER á\9e¬á\9e\94á\9f\8aá\9e¼á\9e\8fá\9e»á\9e\84á\9e\93á\9f\85á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9f\94<br />\ná\9e\9fá\9e\98á\9f\92á\9e\82á\9e¶á\9e\9bá\9f\8bá\9f\96 <strong>({{int:cur}})</strong> = á\9e\97á\9e¶á\9e\96á\9e\81á\9e»á\9e\9fá\9e\82á\9f\92á\9e\93á\9e¶á\9e\87á\9e¶á\9e\98á\9e½á\9e\99á\9e\93á\9e¹á\9e\84á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9e\85á\9f\92á\9e\85á\9e»á\9e\94á\9f\92á\9e\94á\9e\93á\9f\92á\9e\93, <strong>({{int:last}})</strong> = á\9e\97á\9e¶á\9e\96á\9e\81á\9e»á\9e\9fá\9e\82á\9f\92á\9e\93á\9e¶á\9e\87á\9e¶á\9e\98á\9e½á\9e\99á\9e\93á\9e¹á\9e\84á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\98á\9e»á\9e\93, <strong>{{int:minoreditletter}}</strong> = á\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á\9f\94",
"history-fieldset-title": "ស្វែងរកកំណែប្រែ",
"history-show-deleted": "តែកំណែប្រែលុបចោលប៉ុណ្ណោះ",
"histfirst": "ចាស់ជាងគេ",
"history-feed-description": "ប្រវត្តិនៃកំណែទំព័រនេះលើវិគី",
"history-feed-item-nocomment": "ដោយ$1នៅវេលា$2",
"history-feed-empty": "ទំព័រដែលអ្នកបានស្នើមិនមានទេ។\nប្រហែលជាវាត្រូវបានគេលុបចោលពីវីគីឬត្រូវបានគេដាក់ឈ្មោះថ្មី។\nសូមសាក [[Special:Search|ស្វែងរកនៅក្នុងវិគី]] ដើម្បីរកទំព័រថ្មីដែលមានការទាក់ទិន។",
- "rev-deleted-comment": "(ចំណារពន្យល់ត្រូវបានដកចេញ)",
+ "history-edit-tags": "កែប្រែស្លាករបស់កំណែដែលបានជ្រើសរើស",
+ "rev-deleted-comment": "(ចំណារពន្យល់ត្រូវបានលុបចេញ)",
"rev-deleted-user": "(អត្តនាមត្រូវបានលុបចេញ)",
- "rev-deleted-event": "(á\9e\9fá\9f\81á\9e\85á\9e\80á\9f\92á\9e\8aá\9e¸á\9e\9bá\9e\98á\9f\92á\9e¢á\9e·á\9e\8fá\9e¢á\9f\86á\9e\96á\9e¸á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e á\9f\81á\9e\8fá\9e»á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e\80ចេញ)",
+ "rev-deleted-event": "(á\9e\9fá\9f\81á\9e\85á\9e\80á\9f\92á\9e\8aá\9e¸á\9e\9bá\9e\98á\9f\92á\9e¢á\9e·á\9e\8fá\9e¢á\9f\86á\9e\96á\9e¸á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e á\9f\81á\9e\8fá\9e»á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\9bá\9e»á\9e\94ចេញ)",
"rev-deleted-user-contribs": "[បានលុបចេញអត្តនាមឬអាសដ្ឋានIP នេះហើយ - ការកែប្រែលាក់មិនអោយអ្នករួមចំណែកដទៃមើលឃើញ]",
"rev-deleted-text-permission": "កំណែប្រែនៃទំព័រនេះត្រូវបាន'''លុបចោល'''។\nប្រហែលជាមានព័ត៌មានលម្អិតនៅក្នុង[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់ហេតុនៃការលុបចោល]។",
"rev-deleted-text-unhide": "កំណែប្រែនៃទំព័រនេះត្រូវបាន'''លុបចោល'''។\nប្រហែលជាមានព័ត៌មានលម្អិតនៅក្នុង[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់ហេតុនៃការលុបចោល]។\nអ្នកនៅតែអាច[$1 មើលកំណែនេះ]ប្រសិនបើអ្នកចង់។",
"revdelete-nooldid-text": "អ្នកមិនបានផ្ដល់កំណែគោលដៅសំរាប់អនុវត្តសកម្មភាពនេះ ឬកំណែគោលដៅដែលបានផ្ដល់អោយមិនមាន ឬអ្នកកំពុងព្យាយាមលាក់កំណែបច្ចុប្បន្ន។",
"revdelete-no-file": "មិនមានឯកសារដែលអ្នកចង់រកទេ។",
"revdelete-show-file-confirm": "តើអ្នកប្រាកដហើយថាអ្នកចង់មើលកំណែប្រែដែលបានលុបនៃឯកសារ \"<nowiki>$1</nowiki>\" ពី $2 នៅ $3 ?",
- "revdelete-show-file-submit": "បាទ / ចាស៎",
+ "revdelete-show-file-submit": "បាទ/ចាស៎",
"logdelete-selected": "{{PLURAL:$1|ព្រឹត្តិការណ៍កំណត់ហេតុដែលបានជ្រើសយក}}:",
"revdelete-suppress-text": "ការហាមឃាត់គួរត្រូវបានអនុវត្តិលើករណីដូចខាងក្រោមនេះប៉ុណ្ណោះ៖\n* ព័ត៌មានបង្ខូចកេរ្ដិ៍ឈ្មោះធ្ងន់ធ្ងរ\n* ព័ត៌មានផ្ទាល់ខ្លួនមិនសមរម្យ\n*: ''អាសយដ្ឋាននៃគេហដ្ឋាន លេខទូរស័ព្ទ និងលេខអត្តសញ្ញាណប័ណ្ឌជាដើម''",
"revdelete-legend": "ដាក់កំហិតគំហើញ",
"revdelete-unsuppress": "ដកចេញការដាក់កំហិតលើកំណែដែលបានស្តារឡើងវិញ",
"revdelete-log": "មូលហេតុ៖",
"revdelete-submit": "អនុវត្តទៅលើ{{PLURAL:$1|កំណែ|កំណែទាំងឡាយ}}ដែលបានជ្រើសយក",
- "revdelete-success": "'''បន្ទាន់សម័យគំហើញកំណែបានសម្រេច។'''",
- "revdelete-failure": "'''មិនអាចបន្ទាន់សម័យគំហើញនៃកំណែប្រែបាន៖'''\n$1",
- "logdelete-success": "'''បានកំណត់គំហើញកំណត់ហេតុដោយជោគជ័យ។'''",
- "logdelete-failure": "'''មិនអាចកំណត់គំហើញនៃកំណត់ហេតុបាន៖'''\n$1",
+ "revdelete-success": "បន្ទាន់សម័យគំហើញកំណែបានសម្រេច។",
+ "revdelete-failure": "បន្ទាន់សម័យគំហើញនៃកំណែប្រែមិនបានសម្រេចទេ៖\n$1",
+ "logdelete-success": "កំណត់គំហើញកំណត់ហេតុបានសម្រេច។",
+ "logdelete-failure": "កំណត់គំហើញនៃកំណត់ហេតុមិនបានសម្រេចទេ៖\n$1",
"revdel-restore": "ផ្លាស់ប្ដូរគំហើញ",
"pagehist": "ប្រវត្តិទំព័រ",
"deletedhist": "ប្រវត្តិដែលត្រូវបានលុប",
"mergehistory-empty": "គ្មានកំណែណាមួយអាចច្របាច់បញ្ចូលគ្នាទេ។",
"mergehistory-done": "$3 {{PLURAL:$3|កំណែ|កំណែ}}របស់$1 បានច្របាច់បញ្ចូលគ្នាទៅ[[:$2]]បានសំរេចហើយ។",
"mergehistory-fail": "មិនអាចធ្វើការច្របាច់ប្រវត្តិបញ្ចូលគ្នា។ សូមពិនិត្យទំព័រនេះ និងប៉ារ៉ាម៉ែត្រពេលវេលាឡើងវិញ។",
+ "mergehistory-fail-bad-timestamp": "ត្រាពេលវេលាមិនត្រឹមត្រូវ។",
+ "mergehistory-fail-invalid-source": "ទំព័រប្រភពមិនត្រឹមត្រូវ។",
+ "mergehistory-fail-invalid-dest": "ទំព័រគោលដៅមិនត្រឹមត្រូវ។",
"mergehistory-no-source": "ទំព័រប្រភព $1 មិនមានទេ។",
"mergehistory-no-destination": "ទំព័រគោលដៅ $1 មិនមានទេ។",
"mergehistory-invalid-source": "ទំព័រប្រភពត្រូវតែមានចំណងជើងបានការ។",
"showingresults": "ខាងក្រោមកំពុងបង្ហាញរហូតដល់ {{PLURAL:$1|'''១''' លទ្ឋផល|'''$1''' លទ្ឋផល}} ចាប់ផ្ដើមពីលេខ #'''$2'''។",
"search-showingresults": "{{PLURAL:$4|លទ្ធផល <strong>$1</strong> របស់ <strong>$3</strong>|លទ្ធផល <strong>$1 - $2</strong> របស់ <strong>$3</strong>}}",
"search-nonefound": "មិនមានលទ្ធផលណាមួយត្រូវគ្នានឹងសំណើសុំនេះទេ",
+ "search-nonefound-thiswiki": "រកមិនឃើញលទ្ធផលត្រូវនឹងពាក្យដែលអ្នកចង់រកនៅក្នុងវិបសាយនេះទេ។",
"powersearch-legend": "ស្វែងរកថ្នាក់ខ្ពស់",
"powersearch-ns": "ស្វែងរកក្នុងលំហឈ្មោះ៖",
"powersearch-togglelabel": "គូសធីក៖",
"prefs-namespaces": "លំហឈ្មោះ",
"default": "លំនាំដើម",
"prefs-files": "ឯកសារ",
- "prefs-custom-css": "CSS កែសម្រួល",
- "prefs-custom-js": "JavaScript កែសម្រួល",
- "prefs-common-css-js": "CSS/JavaScriptá\9e\9aá\9e½á\9e\98á\9e\9fá\9f\86á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\9fá\9f\86á\9e\94á\9e\80á\9e\91á\9e¶á\9f\86á\9e\84á\9e¢á\9e\9fá\9f\8b",
- "prefs-reset-intro": "á\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e¢á\9e¶á\9e\85â\80\8bá\9e\94á\9f\92á\9e\9aá\9e¾â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e¡á\9e¾á\9e\84â\80\8bá\9e\9cá\9e·á\9e\89â\80\8bá\9e\93á\9e¼á\9e\9câ\80\8bá\9e\85á\9f\86á\9e\8eá\9e¼á\9e\9bâ\80\8bá\9e\85á\9e·á\9e\8fá\9f\92á\9e\8fâ\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bâ\80\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\8aá\9e¼á\9e\85â\80\8bá\9e\9bá\9f\86á\9e\93á\9e¶á\9f\86â\80\8bá\9e\8aá\9e¾á\9e\98â\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bâ\80\8bá\9e\8fá\9f\86á\9e\94á\9e\93á\9f\8bâ\80\8bá\9e\9cá\9e·á\9e\89â\80\8bá\9f\94\ná\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96â\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\98á\9e·á\9e\93â\80\8bá\9e¢á\9e¶á\9e\85â\80\8bá\9e\92á\9f\92á\9e\9cá\9e¾â\80\8bá\9e¡á\9e¾á\9e\84â\80\8bá\9e\9cá\9e·á\9e\89â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\91á\9f\81â\80\8bá\9f\94",
+ "prefs-custom-css": "CSSកម្លាយ",
+ "prefs-custom-js": "JavaScriptកម្លាយ",
+ "prefs-common-css-js": "CSS/JavaScriptá\9e\9aá\9e½á\9e\98á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e\9fá\9f\86á\9e\94á\9e\80á\9e\91á\9e¶á\9f\86á\9e\84á\9e¢á\9e\9fá\9f\8bá\9f\96",
+ "prefs-reset-intro": "á\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e¢á\9e¶á\9e\85â\80\8bá\9e\94á\9f\92á\9e\9aá\9e¾â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸â\80\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\85á\9f\86á\9e\8eá\9e\84á\9f\8bá\9e\85á\9f\86á\9e\8eá\9e¼á\9e\9bâ\80\8bá\9e\85á\9e·á\9e\8fá\9f\92á\9e\8fâ\80\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bâ\80\8bá\9e¢á\9f\92á\9e\93á\9e\80â\80\8bá\9e\8aá\9e¼á\9e\85â\80\8bá\9e\9bá\9f\86á\9e\93á\9e¶á\9f\86â\80\8bá\9e\8aá\9e¾á\9e\98â\80\8bá\9e¡á\9e¾á\9e\84â\80\8bá\9e\9cá\9e·á\9e\89â\80\8bá\9f\94\ná\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96â\80\8bá\9e\93á\9f\81á\9f\87â\80\8bá\9e\98á\9e·á\9e\93â\80\8bá\9e¢á\9e¶á\9e\85â\80\8bá\9e\88á\9e\94á\9f\8bá\9e\92á\9f\92á\9e\9cá\9e¾â\80\8bá\9e¡á\9e¾á\9e\84â\80\8bá\9e\9cá\9e·á\9e\89â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\91á\9f\81â\80\8bá\9f\94",
"prefs-emailconfirm-label": "បញ្ជាក់ទទួលស្គាល់អ៊ីមែល៖",
"youremail": "អ៊ីមែល៖",
"username": "{{GENDER:$1|អត្តនាម}}៖",
"prefs-dateformat": "ទម្រង់កាលបរិច្ឆេទ",
"prefs-timeoffset": "គម្លាតម៉ោង",
"prefs-advancedediting": "ជម្រើសទូទៅ",
- "prefs-editor": "á\9e¢á\9f\92á\9e\93á\9e\80កែប្រែ",
- "prefs-preview": "មើលជាមុន",
+ "prefs-editor": "á\9e§á\9e\94á\9e\80á\9e\9aá\9e\8eá\9f\8dកែប្រែ",
+ "prefs-preview": "á\9e§á\9e\94á\9e\80á\9e\9aá\9e\8eá\9f\8dá\9e\98á\9e¾á\9e\9bá\9e\87á\9e¶á\9e\98á\9e»á\9e\93",
"prefs-advancedrc": "ជម្រើសថ្នាក់ខ្ពស់",
+ "prefs-opt-out": "ជម្រើសមិនប្រើមុខងារជឿនលឿន",
"prefs-advancedrendering": "ជម្រើសថ្នាក់ខ្ពស់",
"prefs-advancedsearchoptions": "ជម្រើសថ្នាក់ខ្ពស់",
"prefs-advancedwatchlist": "ជម្រើសថ្នាក់ខ្ពស់",
"userrights-user-editname": "បញ្ចូលអត្តនាម៖",
"editusergroup": "ផ្ទុកក្រុមអ្នកប្រើប្រាស់",
"editinguser": "ប្ដូរសិទ្ធិរបស់{{GENDER:$1|អ្នកប្រើប្រាស់}} <strong>[[User:$1|$1]]</strong> $2",
+ "viewinguserrights": "កំពុងមើលសិទ្ធិរបស់ {{GENDER:$1|អ្នកប្រើប្រាស់}} <strong>[[User:$1|$1]]</strong> $2",
"userrights-editusergroup": "កែប្រែក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}",
- "saveusergroups": "រក្សាក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}ទុក",
- "userrights-groupsmember": "ក្រុមសមាជិកភាព៖",
+ "userrights-viewusergroup": "មើលក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}",
+ "saveusergroups": "រក្សាទុកក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}",
+ "userrights-groupsmember": "សមាជិករបស់៖",
"userrights-groupsmember-auto": "សមាជិកស្វ័យប្រវត្តិរបស់៖",
- "userrights-groups-help": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9e¶á\9e\93á\9e¶á\9e\8aá\9f\82á\9e\9bá\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\81á\9f\87á\9e\93á\9f\85á\9f\96\n* á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\82á\9e¼á\9e\9fá\9e\92á\9e¸á\9e\80á\9e\98á\9e¶á\9e\93á\9e\93á\9f\90á\9e\99á\9e\90á\9e¶á\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\81á\9f\87á\9e\9fá\9f\92á\9e\90á\9e·á\9e\8fá\9e\93á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\93á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85á\9e á\9e¾á\9e\99\n* á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9e\82á\9e¼á\9e\9fá\9e\92á\9e¸á\9e\80á\9e\98á\9e¶á\9e\93á\9e\93á\9f\90á\9e\99á\9e\90á\9e¶á\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\81á\9f\87á\9e\98á\9e·á\9e\93á\9e\9fá\9f\92á\9e\90á\9e·á\9e\8fá\9e\93á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\93á\9f\84á\9f\87á\9e\91á\9f\81\n* á\9e\9fá\9e\89á\9f\92á\9e\89á\9e¶ * á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9f\84á\9f\87á\9e\85á\9f\81á\9e\89á\9e\91á\9f\81á\9e\96á\9f\81á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93â\80\8bá\9e\94á\9e\93á\9f\92á\9e\90á\9f\82á\9e\98á\9e\9cá\9e¶á\9e á\9e¾á\9e\99á\9f\94",
+ "userrights-groups-help": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9e¶á\9e\93á\9e¶á\9e\8aá\9f\82á\9e\9bá\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\81á\9f\87á\9e\93á\9f\85á\9f\96\n* á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\82á\9e¼á\9e\9fá\9e\92á\9e¸á\9e\80á\9e\98á\9e¶á\9e\93á\9e\93á\9f\90á\9e\99á\9e\90á\9e¶á\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\81á\9f\87á\9e\9fá\9f\92á\9e\90á\9e·á\9e\8fá\9e\93á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85á\9e á\9e¾á\9e\99á\9f\94\n* á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9e\82á\9e¼á\9e\9fá\9e\92á\9e¸á\9e\80á\9e\98á\9e¶á\9e\93á\9e\93á\9f\90á\9e\99á\9e\90á\9e¶á\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\81á\9f\87á\9e\98á\9e·á\9e\93á\9e\9fá\9f\92á\9e\90á\9e·á\9e\8fá\9e\93á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9f\84á\9f\87á\9e\91á\9f\81á\9f\94\n* á\9e\9fá\9e\89á\9f\92á\9e\89á\9e¶ * á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\85á\9e¼á\9e\9bá\9e¬á\9e\8aá\9e\80á\9e\85á\9f\81á\9e\89á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9f\84á\9f\87á\9e\85á\9f\81á\9e\89á\9e\91á\9f\81á\9e\96á\9f\81á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93â\80\8bá\9e\92á\9f\92á\9e\9cá\9e¾á\9e\9cá\9e¶á\9e\98á\9f\92á\9e\8aá\9e\84á\9e á\9e¾á\9e\99á\9f\94\n* á\9e\9fá\9e\89á\9f\92á\9e\89á\9e¶ # á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\82á\9e\80á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\93á\9f\92á\9e\90á\9e\99á\9e\9aá\9e\99á\9f\88á\9e\96á\9f\81á\9e\9bá\9e\95á\9e»á\9e\8fá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9fá\9e\98á\9e¶á\9e\87á\9e·á\9e\80á\9e\97á\9e¶á\9e\96á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98á\9e\93á\9f\81á\9f\87 á\9e\8fá\9f\82á\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\96á\9e\93á\9f\92á\9e\99á\9e¶á\9e\94á\9e¶á\9e\93á\9e\91á\9f\81",
"userrights-reason": "មូលហេតុ៖",
"userrights-no-interwiki": "អ្នកគ្មានការអនុញ្ញាតកែប្រែសិទ្ធិរបស់អ្នកប្រើប្រាស់លើវិគីផ្សេងទេ។",
"userrights-nodatabase": "មូលដ្ឋានទិន្នន័យ $1 មិនមាន ឬ ស្ថិតនៅខាងក្រៅ។",
"right-siteadmin": "ចាក់សោនិងបើកសោមូលដ្ឋានទិន្នន័យ",
"right-override-export-depth": "នាំចេញទំព័ររួមទាំងទំព័រដែលមានភ្ជាប់តំណភ្ជាប់រហូតដល់លំដាប់ទី៥",
"right-sendemail": "ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ",
+ "grant-basic": "សិទ្ធិបឋម",
+ "grant-viewdeleted": "មើលឯកសារនិងទំព័រដែលបានលុបចោល",
+ "grant-viewmywatchlist": "មើលបញ្ជីតាមដានរបស់អ្នក",
"newuserlogpage": "កំណត់ហេតុនៃការបង្កើតគណនី",
"newuserlogpagetext": "នេះជាកំណត់ហេតុនៃការបង្កើតអ្នកប្រើប្រាស់។",
"rightslog": "កំណត់ហេតុនៃការប្តូរសិទ្ធិអ្នកប្រើប្រាស់",
"enhancedrc-history": "ប្រវត្តិ",
"recentchanges": "បន្លាស់ប្ដូរថ្មីៗ",
"recentchanges-legend": "ជម្រើសនានាសម្រាប់ការបង្ហាញបន្លាស់ប្ដូរថ្មីៗ",
- "recentchanges-summary": "á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93á\9e\9aá\9e¶á\9e\9bá\9f\8bá\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\90á\9f\92á\9e\98á\9e¸á\9f\97á\9e\94á\9f\86á\9e\95á\9e»á\9e\8fá\9e\85á\9f\86á\9e\96á\9f\84á\9f\87á\9e\9cá\9e·á\9e\82á\9e¸នៅលើទំព័រនេះ។",
+ "recentchanges-summary": "á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93á\9e\9aá\9e¶á\9e\9bá\9f\8bá\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\90á\9f\92á\9e\98á\9e¸á\9f\97á\9e\94á\9f\86á\9e\95á\9e»á\9e\8fá\9e\85á\9f\86á\9e\96á\9f\84á\9f\87á\9e\9cá\9e·á\9e\82á\9e¸á\9e\93á\9f\81á\9f\87នៅលើទំព័រនេះ។",
"recentchanges-noresult": "គ្មានកំណែប្រែក្នុងរយៈពេលដែលបានផ្ដល់អោយដែលត្រូវនឹងលក្ខខណ្ឌទាំងនេះទេ។",
"recentchanges-feed-description": "តាមដានបន្លាស់ប្ដូរថ្មីៗបំផុតនៃវិគីនេះក្នុងមតិព័ត៌មាននេះ។",
"recentchanges-label-newpage": "ការកែប្រែនេះបានបង្កើតទំព័រថ្មីមួយ",
"rcshowhidemine": "$1កំណែប្រែរបស់ខ្ញុំ",
"rcshowhidemine-show": "បង្ហាញ",
"rcshowhidemine-hide": "លាក់",
+ "rcshowhidecategorization": "$1 ការដាក់ដកចំណាត់ថ្នាក់ក្រុមទំព័រ",
"rcshowhidecategorization-show": "បង្ហាញ",
"rcshowhidecategorization-hide": "លាក់",
"rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយ ដែលធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ",
"rc-change-size": "$1",
"rc-change-size-new": "$1 {{PLURAL:$1|បៃ|បៃ}} បន្ទាប់ពីបន្លាស់ប្ដូរ",
"newsectionsummary": "/* $1 */ ផ្នែកថ្មី",
- "rc-enhanced-expand": "á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9f\86អិត",
- "rc-enhanced-hide": "á\9e\9bá\9e¶á\9e\80á\9f\8bá\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9f\86អិត",
- "rc-old-title": "បង្កើតឡើងដំបូងដោយ \"$1\"",
+ "rc-enhanced-expand": "á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9e\98á\9f\92អិត",
+ "rc-enhanced-hide": "á\9e\9bá\9e¶á\9e\80á\9f\8bá\9e\96á\9f\90á\9e\8fá\9f\8cá\9e\98á\9e¶á\9e\93á\9e\9bá\9e\98á\9f\92អិត",
+ "rc-old-title": "បង្កើតឡើងដំបូងដោយ «$1»",
"recentchangeslinked": "បន្លាស់ប្ដូរពាក់ព័ន្ធ",
"recentchangeslinked-feed": "បន្លាស់ប្ដូរពាក់ព័ន្ធ",
"recentchangeslinked-toolbox": "បន្លាស់ប្ដូរពាក់ព័ន្ធ",
- "recentchangeslinked-title": "បន្លាស់ប្ដូរពាក់ព័ន្ធនឹង \"$1\"",
+ "recentchangeslinked-title": "បន្លាស់ប្ដូរពាក់ព័ន្ធនឹង «$1»",
"recentchangeslinked-summary": "នេះជាបញ្ជីបន្លាស់ប្ដូរនានា ដែលត្រូវបានធ្វើឡើងនៅលើទំព័រទាំងឡាយ ដែលមានតំណភ្ជាប់ពីទំព័រកំណត់មួយ(ឬ មានតំណភ្ជាប់ទៅទំព័រ ដែលមានក្នុងចំណាត់ថ្នាក់ក្រុមណាមួយ) នាពេលថ្មីៗនេះ ។ ទំព័រនានាក្នុង[[Special:Watchlist|បញ្ជីតាមដានរបស់អ្នក]]ត្រូវបានសរសេរជា '''អក្សរដិត''' ។",
"recentchangeslinked-page": "ឈ្មោះទំព័រ៖",
"recentchangeslinked-to": "បង្ហាញបន្លាស់ប្ដូររបស់ទំព័រដែលមានតំណភ្ជាប់នឹងទំព័រដែលបានផ្ដល់ឱ្យវិញ",
"upload-http-error": "មានកំហុសHTTPមួយបានកើតឡើង៖ $1",
"upload-dialog-title": "ផ្ទុកឯកសារឡើង",
"upload-dialog-button-cancel": "បោះបង់",
+ "upload-dialog-button-back": "ត្រឡប់ក្រោយ",
"upload-dialog-button-done": "រួចរាល់",
"upload-dialog-button-save": "រក្សាទុក",
"upload-dialog-button-upload": "ផ្ទុកឡើង",
"listfiles_count": "កំណែ",
"listfiles-show-all": "រាប់បញ្ចូលទាំងកំណែចាស់ៗរបស់រូបភាព",
"listfiles-latestversion": "កំណែបច្ចុប្បន្ន",
- "listfiles-latestversion-yes": "បាទ / ចាស៎",
+ "listfiles-latestversion-yes": "បាទ/ចាស៎",
"listfiles-latestversion-no": "ទេ",
"file-anchor-link": "ឯកសារ",
"filehist": "ប្រវត្តិឯកសារ",
"mostrevisions": "អត្ថបទដែលត្រូវបានកែប្រែច្រើនបំផុត",
"prefixindex": "ទំព័រទាំងអស់ជាមួយបុព្វបទ",
"prefixindex-namespace": "ទំព័រទាំងអស់ដែលមានបុព្វបទ (លំហឈ្មោះ $1)",
+ "prefixindex-submit": "បង្ហាញ",
"prefixindex-strip": "កាត់ចោលបុព្វបទក្នុងបញ្ជី",
"shortpages": "ទំព័រខ្លីៗ",
"longpages": "ទំព័រវែងៗ",
"usereditcount": "$1 {{PLURAL:$1|កំណែប្រែ|កំណែប្រែ}}",
"usercreated": "{{GENDER:$3|បានបង្កើត}}នៅ$1 $2",
"newpages": "ទំព័រថ្មីៗ",
+ "newpages-submit": "បង្ហាញ",
"newpages-username": "អត្តនាម៖",
"ancientpages": "ទំព័រចាស់ៗ",
"move": "ប្ដូរទីតាំង",
"querypage-disabled": "ទំព័រពិសេសនេះត្រូវបានបិទមិនអោយប្រើដោយសារមូលហេតុដំណើរការ។",
"apihelp": "ជំនួយAPI",
"apihelp-no-such-module": "រកមិនឃើញម៉ូឌុល \"$1\" ទេ។",
+ "apisandbox-unfullscreen": "បង្ហាញទំព័រ",
"apisandbox-submit": "ដាក់សំណើ",
"apisandbox-reset": "ជម្រះ",
"apisandbox-examples": "ឧទាហរណ៍",
"specialloguserlabel": "អ្នកប្រព្រឹត្តិ៖",
"speciallogtitlelabel": "គោលដៅ (ចំណងជើងអត្ថបទឬអត្តនាមអ្នកប្រើប្រាស់)៖",
"log": "កំណត់ហេតុ",
+ "logeventslist-submit": "បង្ហាញ",
"all-logs-page": "កំណត់ហេតុសាធារណៈទាំងអស់",
"alllogstext": "ការបង្ហាញកំណត់ហេតុទាំងអស់របស់{{SITENAME}}។\n\nអ្នកអាចបង្រួមការបង្ហាញដោយជ្រើសរើសប្រភេទកំណត់ហេតុ អត្តនាម ឬ ទំព័រពាក់ព័ន្ធ។",
"logempty": "គ្មានអ្វីក្នុងកំណត់ហេតុដែលត្រូវនឹងអ្វីដែលអ្នកចង់រកទេ។",
"allpages-hide-redirects": "លាក់ការបញ្ជូនបន្ត",
"cachedspecial-refresh-now": "មើ់លកំណែថ្មីបំផុត។",
"categories": "ចំណាត់ថ្នាក់ក្រុម",
+ "categories-submit": "បង្ហាញ",
"categoriespagetext": "{{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុម|ចំណាត់ថ្នាក់ក្រុម}}ខាងក្រោមនេះមានអត្ថបទឬមេឌា។\n[[Special:UnusedCategories|ចំណាត់ថ្នាក់ក្រុមមិនប្រើ]]ត្រូវបានបង្ហាញទីនេះ។\nសូមមើលផងដែរ [[Special:WantedCategories|ចំណាត់ថ្នាក់ក្រុមដែលគ្រប់គ្នាចង់បាន]]។",
"categoriesfrom": "បង្ហាញចំណាត់ថ្នាក់ក្រុមចាប់ផ្តើមដោយ៖",
"deletedcontributions": "ការរួមចំណែកដែលត្រូវបានលុបចោល",
"wlheader-showupdated": "ទំព័រដែលត្រូវបានផ្លាស់ប្តូរតាំងពីពេលចូលមើលចុងក្រោយរបស់អ្នក ត្រូវបានបង្ហាញជា '''អក្សរដិត'''។",
"wlnote": "ខាងក្រោមនេះ {{PLURAL:$1|ជាបន្លាស់ប្ដូរចុងក្រោយ|ជាបន្លាស់ប្ដូរចុងក្រោយចំនួន <strong>$1</strong>}} នៅក្នុងរយៈពេល{{PLURAL:$2|១ម៉ោង|<strong>$2</strong> ម៉ោង}} គិតចាប់ពីម៉ោង $4 ថ្ងៃ $3។",
"wlshowlast": "បង្ហាញ $1ម៉ោងចុងក្រោយ $2ថ្ងៃចុងក្រោយ",
+ "watchlist-hide": "លាក់",
+ "watchlist-submit": "បង្ហាញ",
"watchlist-options": "ជម្រើសនានាក្នុងបញ្ជីតាមដាន",
"watching": "កំពុងតាមដាន...",
"unwatching": "ឈប់តាមដាន...",
"delete-confirm": "លុប\"$1\"ចោល",
"delete-legend": "លុបចោល",
"historywarning": "'''ប្រយ័ត្ន៖''' ទំព័រដែលអ្នកបំរុងនឹងលុប មានប្រវត្តិចំនួនប្រហែល $1 {{PLURAL:$1|កំណែ|កំណែ}}៖",
+ "historyaction-submit": "បង្ហាញ",
"confirmdeletetext": "អ្នកប្រុងនឹងលុបចោលទាំងស្រុង នូវទំព័រមួយដោយរួមបញ្ចូលទាំងប្រវត្តិកែប្រែរបស់វាផង។\nសូមអ្នកអះអាងថា អ្នកពិតជាមានចេតនាធ្វើបែបហ្នឹង និងថាអ្នកបានយល់ច្បាស់ពីផលវិបាកទាំងឡាយដែលអាចកើតមាន និងសូមអះអាងថា អ្នកធ្វើស្របតាម [[{{MediaWiki:Policy-url}}|គោលការណ៍]]។",
"actioncomplete": "សកម្មភាពបានសម្រេច",
"actionfailed": "សកម្មភាពមិនបានសម្រេច",
"undelete-error-short": "បញ្ហាក្នុងការស្ដារឯកសារ ៖ $1",
"undelete-error-long": "កំហុសផ្សេងៗបានកើតឡើងក្នុងពេលកំពុងឈប់លុបឯកសារនេះ៖\n$1",
"undelete-show-file-confirm": "តើអ្នកប្រាកដហើយថាអ្នកពិតជាចង់មើលកំណែដែលត្រូវបានលុបចោលរបស់ឯកសារ \"<nowiki>$1</nowiki>\" ពីថ្ងៃ $2 ម៉ោង $3?",
- "undelete-show-file-submit": "បាទ/ចាស",
+ "undelete-show-file-submit": "បាទ/ចាស៎",
"namespace": "លំហឈ្មោះ:",
"invert": "ក្រៅពីនោះ",
"tooltip-invert": "គូសធីកប្រអប់នេះដើម្បីលាក់កំណែប្រែរបស់ទំព័រដែលស្ថិតនៅក្នុងលំហឈ្មោះដែលបានជ្រើសយក (និងលំហឈ្មោះដែលទាក់ទិន ប្រសិនបើគូសធីក)",
"unlockdb": "ដោះសោមូលដ្ឋានទិន្នន័យ",
"lockdbtext": "ការចាក់សោមូលដ្ឋានទិន្នន័យនឹងផ្អាកមិនឱ្យអ្នកប្រើប្រាស់ទាំងអស់ធ្វើការកែប្រែទំព័រនានា ផ្លាស់ប្ដូរចំណូលចិត្តរបស់ពួកគេ កែប្រែបញ្ជីតាមដានរបស់ពួកគេ និងធ្វើអ្វីៗទាំងឡាយណាដែលត្រូវការការកែប្រែនៅក្នុងមូលដ្ឋានទិន្នន័យនេះ។\n\nសូមអះអាងថានេះពិតជាអ្វីដែលអ្នកចង់ធ្វើ ហើយថាអ្នកនឹងដោះសោមូលដ្ឋានទិន្នន័យវិញនៅពេលដែលការថែទាំរបស់អ្នកបានបញ្ចប់។",
"unlockdbtext": "ការដោះសោមូលដ្ឋានទិន្នន័យនឹងផ្ដល់លទ្ធភាពឱ្យអ្នកប្រើប្រាស់ទាំងអស់ធ្វើការកែប្រែទំព័រនានា ផ្លាស់ប្ដូរចំណូលចិត្តរបស់ពួកគេ កែប្រែបញ្ជីតាមដានរបស់ពួកគេ និងធ្វើអ្វីៗទាំងឡាយណាដែលត្រូវការការកែប្រែនៅក្នុងមូលដ្ឋានទិន្នន័យនេះ។\n\nសូមអះអាងថានេះពិតជាអ្វីដែលអ្នកចង់ធ្វើ។",
- "lockconfirm": "បាទ/ចាស, ខ្ញុំពិតជាចង់ចាក់សោមូលដ្ឋានទិន្នន័យមែន។",
- "unlockconfirm": "បាទ/ចាស, ខ្ញុំពិតជាចង់ដោះសោមូលដ្ឋានទិន្នន័យមែន។",
+ "lockconfirm": "បាទ/ចាស៎, ខ្ញុំពិតជាចង់ចាក់សោមូលដ្ឋានទិន្នន័យមែន។",
+ "unlockconfirm": "បាទ/ចាស៎, ខ្ញុំពិតជាចង់ដោះសោមូលដ្ឋានទិន្នន័យមែន។",
"lockbtn": "ចាក់សោមូលដ្ឋានទិន្នន័យ",
"unlockbtn": "ដោះសោមូលដ្ឋានទិន្នន័យ",
"locknoconfirm": "អ្នកមិនបានពិនិត្យមើលប្រអប់បញ្ជាក់ទទួលស្គាល់ទេ។",
"anonymous": "{{PLURAL:$1|user|អ្នកប្រើប្រាស់}}អនាមិកនៃ {{SITENAME}}",
"siteuser": "អ្នកប្រើប្រាស់{{SITENAME}} $1",
"anonuser": "អ្នកប្រើប្រាស់{{SITENAME}}អនាមិក $1",
- "lastmodifiedatby": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\85á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\99á\9e\8aá\9f\84á\9e\99 $3 á\9e\93á\9f\85á\9e\9cá\9f\81á\9e\9bá\9e¶ $2,$1។",
+ "lastmodifiedatby": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\85á\9e»á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\99á\9e\8aá\9f\84á\9e\99 $3 á\9e\93á\9f\85á\9e\9cá\9f\81á\9e\9bá\9e¶ $2 $1។",
"othercontribs": "ផ្អែកលើការងាររបស់$1។",
"others": "ផ្សេងៗទៀត",
"siteusers": "{{PLURAL:$2|អ្នកប្រើប្រាស់|អ្នកប្រើប្រាស់}} {{SITENAME}} $1",
"pageinfo-redirectsto": "បញ្ជូនបន្តទៅកាន់",
"pageinfo-redirectsto-info": "ព័ត៌មាន",
"pageinfo-contentpage": "រាប់ជាទំព័រដែលមានខ្លឹមសារនៅខាងក្នុង",
- "pageinfo-contentpage-yes": "បាទ/ចាស",
+ "pageinfo-contentpage-yes": "បាទ/ចាស៎",
"pageinfo-protect-cascading": "ការការពារត្រូវបានដាក់ជាថ្នាក់ពីទីនេះទៅ",
- "pageinfo-protect-cascading-yes": "បាទ/ចាស",
+ "pageinfo-protect-cascading-yes": "បាទ/ចាស៎",
"pageinfo-protect-cascading-from": "ការការពារត្រូវបានដាក់ជាថ្នាក់ពី",
"pageinfo-category-info": "ព័ត៌មានចំណាត់ថ្នាក់ក្រុម",
"pageinfo-category-total": "ចំនួនសមាជិកសរុប",
"patrol-log-page": "កំណត់ហេតុនៃការតាមដាន",
"patrol-log-header": "នេះជាកំណត់ហេតុនៃកំណែប្រែដែលបានតាមដាន",
"log-show-hide-patrol": "កំណត់ហេតុនៃការតាមដាន $1",
+ "confirm-markpatrolled-button": "យល់ព្រម",
"deletedrevision": "កំណែចាស់ដែលត្រូវបានលុបចេញ $1",
"filedeleteerror-short": "កំហុសនៃការលុបឯកសារ៖ $1",
"filedeleteerror-long": "កំហុសពេលលុបឯកសារចេញ៖\n\n$1",
"confirm-watch-top": "បន្ថែមទំព័រនេះទៅក្នុងបញ្ជីតាមដានរបស់អ្នកឬ?",
"confirm-unwatch-button": "យល់ព្រម",
"confirm-unwatch-top": "ដកទំព័រនេះចេញពីបញ្ជីតាមដានរបស់ខ្ញុំឬ?",
+ "confirm-rollback-button": "យល់ព្រម",
"quotation-marks": "«$1»",
"imgmultipageprev": "← ទំព័រមុន",
"imgmultipagenext": "ទំព័របន្ទាប់ →",
"tags-title": "ស្លាក",
"tags-intro": "ទំព័ររាយនាមស្លាកទាំងឡាយដែលកម្មវិធី software អាចកត់សម្គាល់កំណែជាមួយ និងអត្ថន័យរបស់វា។",
"tags-tag": "ឈ្មោះស្លាក",
- "tags-display-header": "Appearance លើបញ្ជីបំលាស់ប្ដូរ",
+ "tags-display-header": "ពាក្យបង្ហាញលើបញ្ជីបន្លាស់ប្ដូរ",
"tags-description-header": "បរិយាយពេញលេញនៃអត្ថន័យ",
"tags-source-header": "ប្រភព",
"tags-active-header": "សកម្ម?",
- "tags-hitcount-header": "á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bដែលមានស្លាក",
+ "tags-hitcount-header": "á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aដែលមានស្លាក",
"tags-actions-header": "សកម្មភាព",
- "tags-active-yes": "បាទ/ចាស",
+ "tags-active-yes": "បាទ/ចាស៎",
"tags-active-no": "ទេ",
"tags-source-none": "គ្មានគេប្រើទៀតទេ",
"tags-edit": "កែប្រែ",
"compare-invalid-title": "ចំណងជើងដែលអ្នកបានផ្ដល់អោយមិនត្រឹមត្រូវទេ",
"compare-title-not-exists": "ចំណងជើងដែលអ្នកផ្ដល់អោយមិនមានទេ។",
"diff-form": "'''សំនុំបែបបទ'''មួយ",
+ "diff-form-submit": "បង្ហាញភាពខុសគ្នា",
"dberr-problems": "សូមអភ័យទោស! វិបសាយនេះកំពុងជួបបញ្ហាបច្ចេកទេស។",
"dberr-again": "សូមរង់ចាំប៉ុន្មាននាទីសិនហើយផ្ទុកឡើងវិញម្ដងទៀត។",
"dberr-info": "(មិនអាចទាក់ទងទៅប្រភពទិន្នន័យបានទេ៖ $1)",
"limitreport-walltime": "រយៈពេលប្រើប្រាស់ពិតប្រាកដ",
"limitreport-walltime-value": "$1 {{PLURAL:$1|វិនាទី|វិនាទី}}",
"expandtemplates": "ពង្រីកទំព័រគំរូ",
- "expand_templates_input": "á\9e\9fá\9e\9aá\9e\9fá\9f\81á\9e\9aá\9e\83á\9f\92á\9e\9bá\9e¶",
+ "expand_templates_input": "á\9e\9fá\9e\9aá\9e\9fá\9f\81á\9e\9aá\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91á\9e\9cá\9e·á\9e\82á\9e¸",
"expand_templates_output": "លទ្ធផល",
"expand_templates_ok": "យល់ព្រម",
"expand_templates_remove_comments": "ដកចេញ វិចារនានា",
"pagelanguage": "ប្ដូរភាសាទំព័រ",
"pagelang-language": "ភាសា",
"pagelang-use-default": "ប្រើភាសាតាមលំនាំដើម",
+ "pagelang-select-lang": "ជ្រើសរើសភាសា",
+ "pagelang-unchanged-language": "ភាសាទំព័រ $1 ត្រូវបានកំណត់ជា $2 រួចហើយ។",
+ "pagelang-unchanged-language-default": "ភាសាទំព័រ $1 ត្រូវបានកំណត់ជាភាសាអត្ថបទលំនាំដើមរបស់វិគីរួចហើយ។",
"right-pagelang": "ប្ដូរភាសាទំព័រ",
+ "action-pagelang": "ប្ដូរភាសាទំព័រនេះ",
"log-name-pagelang": "កំណត់ហេតុបន្លាស់ប្ដូរភាសា",
"log-description-pagelang": "នេះជាកំណត់ហេតុបន្លាស់ប្ដូរភាសាទំព័រ។",
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|បានផ្លាស់ប្ដូរ}}ភាសារបស់ $3 ពី $4 ទៅ $5",
"special-characters-group-latin": "អក្សរឡាតាំង",
"special-characters-group-latinextended": "អក្សរឡាតាំងផ្សេងទៀត",
"special-characters-group-ipa": "អក្ខរក្រមសំលេងអន្តរជាតិ",
"special-characters-group-symbols": "សញ្ញា",
"special-characters-group-greek": "អក្សរក្រិច",
+ "special-characters-group-greekextended": "អក្សរក្រិចបន្ថែម",
"special-characters-group-cyrillic": "អក្សរស៊ីរីល",
"special-characters-group-arabic": "អក្សរអារ៉ាប់",
"special-characters-group-arabicextended": "អក្សរអារ៉ាប់បន្ថែម",
"pool-timeout": "Tiempo de asperar esta asperando por el kandado",
"pool-queuefull": "Kola de lavoro esta yeno",
"pool-errorunknown": "Yerro deskonosido",
- "aboutsite": "Encima de {{SITENAME}}",
+ "aboutsite": "Sovre {{SITENAME}}",
"aboutpage": "Project:Encima de",
"copyright": "El kontenido se puede topar debasho de la $1 salvo ke indika al kontrario.",
"copyrightpage": "{{ns:project}}:Derechos del otor",
"rcfilters-activefilters": "Aktívne filtre",
"rcfilters-advancedfilters": "Pokročilé filtre",
"rcfilters-limit-title": "Zobraziť zmeny",
+ "rcfilters-limit-and-date-label": "{{PLURAL:$1|Jedna úprava|$1 úpravy|$1 úprav}}, $2",
"rcfilters-days-title": "Posledné dni",
"rcfilters-hours-title": "Posledné hodiny",
"rcfilters-days-show-days": "$1 {{PLURAL:$1|deň|dni|dní}}",
"recentchangeslinked-feed": "M’ubuy quw zyuwaw na sinbahan",
"recentchangeslinked-toolbox": "M’ubuy quw zyuwaw na sinbahan",
"recentchangeslinked-title": "Wal m’ubuy squw sinbahan na \"$1\"",
- "recentchangeslinked-summary": "ani mkuw quw cyux niya’ spsbaq ssyansa zngayan tay sqaniy aniy p‘ubuy sa qsahuy kwara’ zzngayan (ini’ ga kwara’ nyux maki’ sqaniy kawayal niya’ s’nakun) ka wayal niya’ bkgun kwara’ qu zngayan ka wayal sbahun.\ncyux maki’ sa qsahuy na [[Special:Watchlist|bnkuw su’ ka cyux su’ ktan]] ka zngayan ga musa’ niya’ <strong>biru’ qthuy</strong>buru’.",
+ "recentchangeslinked-summary": "ani mkuw quw cyux niya’ spsbaq ssyansa zngayan tay sqaniy aniy p‘ubuy sa qsahuy kwara’ zzngayan (ini’ ga kwara’ nyux maki’ sqaniy kawayal niya’ s’nakun) ka wayal niya’ bkgun kwara’ qu zngayan ka wayal sbahun.\ncyux maki’ sa qsahuy na [[Special:Watchlist|bnkuw su’ ka cyux su’ ktan]] ka zngayan ga musa’ niya’ <strong>biru’ qthuy</strong>buru’.",
"recentchangeslinked-page": "Lalu’ na zzngayan:",
"recentchangeslinked-to": "Sbah squw m’ay’ubuy zngayan sqaniy ka sinbahan na pinkaykita’ niya’ squw m’ay’ubuy sa sngayan sqaniy",
"upload": "Pawsa’ sa kktan zayzyuwaw na biru’",
"hidetoc": "يوشۇرۇش",
"collapsible-collapse": "قاتلاش",
"collapsible-expand": "ياي",
+ "confirmable-confirm": "{{GENDER:$1|سىز}} جەزملەشتۈرەلەمسىز ؟",
"confirmable-yes": "ھەئە",
"confirmable-no": "ياق",
"thisisdeleted": "كۆرسەت ياكى ئەسلىگە كەلتۈر $1 ؟",
"databaseerror-query": "سوراق: $1",
"databaseerror-function": "فۇنكىسىيە: $1",
"databaseerror-error": "خاتا: $1",
+ "transaction-duration-limit-exceeded": "چۈنكى يازغان ۋاقتى سېكۇنت ( $1 ) ئېشىپ كەتتى چەكلىمىسىگە ئۇچرىمايدۇ ، كۆپ مىقداردا كىسىپ بەرپا قىلىش كېچىكتۈرۈش ئالدىنى ئېلىش ئۈچۈن ، بۇ $2 قېتىمقى بىر تەرەپ قىلىش ئاللىقاچان توختىتىلدى . ئەگەر سىز ھازىر شۇنىڭ بىلەن بىر ۋاقىتتا نۇرغۇن تۈرنى ئۆزگەرتىش ، كىچىك مەشغۇلات ئېلىپ بېرىلدى .",
"laggedslavemode": "ئاگاھلاندۇرۇش: بەت يېقىنقى يېڭىلاشنى ئۆز ئىچىگە ئالمىغان بولۇشى مۇمكىن.",
"readonly": "ساندان قۇلۇپلانغان",
"enterlockreason": "قۇلۇپلىنىش سەۋەبىنى كىرگۈزۈڭ، قايتا ئېچىشنىڭ مۆلچەر ۋاقتىنىمۇ ئۆز ئىچىگە ئالىدۇ",
"no-null-revision": "\"$1\" بېتى ئۈچۈن يېڭىدىن قۇرۇق ئۆزگەرتىش قىلالمىدى",
"badtitle": "خاتا ماۋزۇ",
"badtitletext": "ئىلتىماس قىلىنغان بەتنىڭ ماۋزۇسى ئىناۋەتسىز، مەۋجۇد ئەمەس، تىل ھالقىغان ياكى wiki ئۇلانمىسىدىن ھالقىغان ماۋزۇ خاتالىقى.\nئۇ بىر ياكى بىر قانچە ماۋزۇغا ئىشلەتكىلى بولمايدىغان ھەرپنى ئۆز ئىچىگە ئالغان.",
+ "title-invalid-empty": "ئىلتىماس قىلغان بەت ماۋزۇدىكى بوش ياكى ئىسىم نامى پەقەت ئۆز ئىچىگە ئالىدۇ .",
+ "title-invalid-utf8": "تەلەپ بەت ماۋزۇسى ئۆز ئىچىگە ئالغان بىر كۈچكە ئىگە ئەمەس UTF - 8 .",
+ "title-invalid-interwiki": "ھالقىغان ئۇلىنىش ئىلتىماس قىلغان بەت ۋىكى ماۋزۇسى ئۆز ئىچىگە ئالىدۇ ، ئۇ ماۋزۇنى ئىشلىتىشكە بولمايدۇ .",
+ "title-invalid-talk-namespace": "ئىلتىماس قىلغان بەت مەۋجۇت بولۇپ تۇرالمايدۇ مۇلاھىزە بېتى ماۋزۇ نەقىل كەلتۈردى .",
+ "title-invalid-characters": "تەلەپ بەت ماۋزۇسى ئىناۋەتسىز ھەرپ - بەلگە ئۆز ئىچىگە ئالىدۇ : \"$1\".",
+ "title-invalid-relative": "ماۋزۇ نىسپىي يول بار . مۇناسىۋەتلىك بەت ماۋزۇسى ( \\ ، . . . / ) كۈچكە ئىگە ئەمەس ، ئابونتنىڭ كۆز يۈگۈرتكۈچ دائىم بۇ بەتكە يېتىپ كەلدى .",
+ "title-invalid-magic-tilde": "تەلەپ بەت ماۋزۇسى ئۆز ئىچىگە ئالغان ئىناۋەتسىز ئۈزلۈكسىز دولقۇن (</nowiki>~~~<nowiki>).",
+ "title-invalid-leading-colon": "تەلەپ بەت ماۋزۇسى بېشىدا بىر ئىناۋەتسىز قوش چېكىت ( : ) ئۆز ئىچىگە ئالىدۇ .",
"perfcached": "تۆۋەندىكىسى غەملەك سانلىق مەلۇماتى، شۇڭلاشقا يېڭى بولماسلىقى مۇمكىن. ئەڭ كۆپ بولغاندا غەملەكتىكى {{PLURAL:$1|بىر تۈر|$1 تۈر}} نى ئىشلەتكىلى بولىدۇ.",
"perfcachedts": "تۆۋەندىكىسى غەملەك سانلىق مەلۇماتى، ئاخىرقى يېڭىلانغان ۋاقتى $1. ئەڭ كۆپ بولغاندا غەملەكتىكى {{PLURAL:$1|بىر تۈر|$1 تۈر}} نى ئىشلەتكىلى بولىدۇ.",
"querypage-no-updates": "نۆۋەتتە مەزكۇر بەتنى يېڭىلاش چەكلەندى.\n\nبۇ جايدىكى سانلىق مەلۇماتنى دەرھال يېڭىلىغىلى بولمايدۇ.",
"userlogin-resetpassword-link": "پارولىڭىزنى ئۇنتۇپ قالدىڭىزمۇ؟",
"userlogin-helplink2": "كىرىشتىن ياردەم",
"userlogin-loggedin": "سىز ئاللىقاچان {{GENDER:$1|$1}} ھالىتىدە تىزىمغا كىرىپ بولدىڭىز. تۆۋەندىكىلەرنى تولدۇرۇپ باشقا ئىشلەتكۈچى ھالىتىدە تىزىمغا كىرىڭ.",
+ "userlogin-reauth": "سىز چوقۇم يەنە بىر قېتىم سىز تىزىملىتىش ئىسپاتى {{GENDER:$1|$1}}",
"userlogin-createanother": "باشقا ھېسابات قۇرىمەن",
"createacct-emailrequired": "ئېلخەت ئادرېسى",
"createacct-emailoptional": "ئېلخەت ئادرېسى (ئىختىيارى)",
"createacct-email-ph": "ئېلخەت ئادرېسىڭىزنى كىرگۈزۈڭ",
"createacct-another-email-ph": "ئېلخەت ئادرېسى كىرگۈزۈڭ",
"createaccountmail": "ۋاقىتلىق ئىختىيارىي پارولنى ئىشلەت ھەمدە بەلگىلەنگەن ئېلېكتىرونلۇق خەت ئادرېسىغا ئەۋەت",
+ "createaccountmail-help": "يەنە بىر ئادەم تەرىپىدىن ئىشلىتىلىدۇ بەرپا قىلىش ھېسابى خەۋەر تاپقاندىن كېيىن ، مەخپىي نومۇرنىڭ ھاجىتى يوق .",
"createacct-realname": "ھەقىقى ئىسمىڭىز (ئىختىيارى)",
"createacct-reason": "سەۋەبى",
"createacct-reason-ph": "نېمىشقا باشقا ھېسابات قۇرماقچى بولدىڭىز",
"createacct-benefit-body2": "{{PLURAL:$1|بەت}}",
"createacct-benefit-body3": "يېقىنقى {{PLURAL:$1|تۆھپىكار|تۆھپىكارلار}}",
"badretype": "سىز كىرگۈزگەن پارول ماس كەلمىدى.",
+ "usernameinprogress": "بۇ ئابونت نامى ئاللىقاچان ئېلىپ بېرىلماقتا ئىسچوت بەرپا قىلىش . بىر دەم ساقلاڭ .",
"userexists": "كىرگۈزگەن ئىشلەتكۈچى ئاتى ئىشلىتىلىۋاتىدۇ.\nباشقا ئاتنى تاللاڭ.",
"loginerror": "تىزىمغا كىرىش خاتالىقى",
"createacct-error": "ھېسابات قۇرۇش خاتالىقى",
"nocookieslogin": "{{SITENAME}} تور بېكىتى تىزىمغا كىرگەن ئىشلەتكۈچىلەرگە cookies ئىشلىتىدۇ .\n\nسىز cookies نى چەكلىگەن.\n\nئۇنى قوزغىتىپ قايتا سىناڭ.",
"nocookiesfornew": "ئىشلەتكۈچى ھېساباتى قۇرۇلمىدى، ئۇنىڭ مەنبەسىنى جەزملىيەلمەيمىز.\ncookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتنى قايتا يۈكلەپ ئاندىن قايتا سىناڭ.",
"nocookiesforlogin": "{{int:nocookieslogin}}",
+ "createacct-loginerror": "ھېساب قۇرۇش مۇۋەپپەقىيەتلىك بولدى ، لېكىن سىز ئاپتوماتىك چىقىدۇ . داۋاملىق [ [Special:userLogin|manual login : قول بىلەن تىزىملىتىش [ گە قاراڭ]] .",
"noname": "سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى نامىنى بەلگىلىمىدىڭىز.",
"loginsuccesstitle": "تىزىمغا كىردىڭىز",
"loginsuccess": "'''سىز {{SITENAME}} غا \"$1\" سالاھىيىتىدە كىردىڭىز.'''",
"wrongpassword": "كىرگۈزگەن پارول خاتا.\nقايتا سىناڭ.",
"wrongpasswordempty": "پارول كىرگۈزمىدىڭىز\nقايتا سىناڭ.",
"passwordtooshort": "ئىم ئاز دېگەندە {{PLURAL:$1|1 ھەرپ|$1 ھەرپ}} بولۇشى لازىم.",
+ "passwordtoopopular": "ئومۇمىي تاللاش مەخپىي نومۇر ئىشلىتىشكە بولمايدۇ . تېخىمۇ تەڭداشسىز بولغان مەخپىي نومۇر تاللاڭ .",
"password-name-match": "پارولىڭىز ئىشلەتكۈچى نامىڭىزدىن پەرقلىنىشى لازىم.",
"password-login-forbidden": "بۇ ئىشلەتكۈچى نامى ۋە پارول چەكلەنگەن.",
"mailmypassword": "پارولنى ئەسلىگە قايتۇرماق",
"createaccount-text": "بەزىلەر {{SITENAME}} دا ئېلخەت ئادرېسىڭىزنى ئىشلىتىپ، \"$2\" نامىدىكى ($4) يېڭى ھېسابات قۇردى، پارول \"$3\".\nسىز تىزىمغا كىرىپ پارولنى ئۆزگەرتىڭ.\n\nئەگەر بۇ ھېسابات خاتا قۇرۇلغان بولسا بۇ ئۇچۇرغا پەرۋا قىلماڭ.",
"login-throttled": "سىز بۇ ھېساباتتا تىزىمغا كىرىشنى كۆپ قېتىم سىنىدىڭىز.\n$1 ساقلاپ، ئاندىن قايتا سىناڭ.",
"login-abort-generic": "تىزىمغا كىرەلمىدىڭىز - چېكىندى",
+ "login-migrated-generic": "سىزنىڭ ھېسابات نومۇرىڭىز ئاللىبۇرۇن يۆتكەلدى ، ھەمدە سىزنىڭ ئابونت ۋىكى نامىڭىزنى بۇ يەردە مەۋجۇت ئەمەس .",
"loginlanguagelabel": "تىل: $1",
"suspicious-userlogout": "تىزىمدىن چىقىش ئىلتىماسىڭىز رەت قىلىندى، چۈنكى ئۇ بەلكىم بۇزۇلغان توركۆرگۈ ياكى غەملەك ۋاكالەتچىسى يوللىغان بولۇشى مۇمكىن.",
"createacct-another-realname-tip": "ھەقىقىي ئىسمىڭىز ئىختىيارى.\nئەگەر تەمىنلەشنى تاللىسىڭىز، ئۇ سىزنىڭ تۆھپىڭىزنىڭ ئىمزاسى بولىدۇ.",
"changepassword-success": "پارولىڭىز ئوڭۇشلۇق ئۆزگەرتىلدى!",
"changepassword-throttled": "سىز بۇ ھېساباتتا تىزىمغا كىرىشنى كۆپ قېتىم سىنىدىڭىز.\n$1 ساقلاپ، ئاندىن قايتا سىناڭ.",
"botpasswords": "ماشىنا ئادەم پارولى",
+ "botpasswords-summary": "<em> ماشىنا ئادەم مەخپىي نومۇرى </em> يول ئىشلەتكەن ھېساب ئاساسلىق تىزىملاش ئىسپاتى بولمىغان ئەھۋال ئاستىدا ، API ئارقىلىق زىيارەت قىلىنىدىغان ئابونت سچوتى . مەخپى نۇمۇرنى تىزىمغا ئالدۇرغان ۋاقىتتا ئىشلەتكىلى بولىدىغان ماشىنا ئارقىلىق ئابونت ھوقۇق دائىرىسى چەكلەنگەن بولىدۇ . \n\nبىلمەيمەن نېمىشقا بۇنداق ئەھۋال ئاستىدا ، سىز بۇ ئىقتىدارنى ئىشلەتكەن . ھەرقانداق ئادەم بۇ مەخپىي نومۇر ھاسىل قىلىش ھەمدە ئۇلار سىزگە كېرەك ئىدى .",
"botpasswords-disabled": "ماشىنا ئادەم پارولى چەكلەنگەن.",
+ "botpasswords-no-central-id": "ماشىنا ئادەم مەخپىي نومۇر ئىشلىتىش كېرەك ، سىز چوقۇم ئابونت كىرىش ئاللىقاچان مەركەزلەشكەن .",
"botpasswords-existing": "نۆۋەتتە بار ماشىنا ئادەم پارولى",
"botpasswords-createnew": "يېڭى ماشىنا ئادەم پارولى قۇرۇش",
+ "botpasswords-editexisting": "تەھرىرلەش ھازىرقى ماشىنا ئادەم مەخپىي نومۇرى",
"botpasswords-label-appid": "ماشىنا ئادەم نامى:",
"botpasswords-label-create": "قۇرۇش",
"botpasswords-label-update": "يېڭىلاش",
"uploaded-script-svg": "اپلوڈ کردہ SVG فائل میں scriptable عنصر \"$1\" ملا۔",
"uploaded-hostile-svg": "اپلوڈ کردہ ایس وی جی فائل کے اسٹائل عنصر میں غیر محفوظ سی ایس ایس دریافت ہوئی ہے۔",
"uploaded-event-handler-on-svg": "ایونٹ ہینڈلر صفات <code> $1 = \"$2\" </code> کو ترتیب دینے کی اجازت نہیں ہے کہ SVG فائلوں میں.",
+ "uploaded-href-unsafe-target-svg": "اپلوڈ کردہ ایسویجی فائل میں غیر محفوظ href ملا، <code><$1 $2=\"$3\"></code>",
"uploaded-setting-href-svg": "والدین \"عنصر\" ٹیگ کا استعمال کرتے ہوئے \"href\" شامل کرنے کے لئے والدین عنصر کو منسوب کیا جاتا ہے.",
"uploadscriptednamespace": "اس ایس وی جی فائل میں غیر قانونی نام فضا \"<nowiki>$1</nowiki>\" موجود ہے۔",
"uploadinvalidxml": "اپلوڈ کردہ فائل میں موجود ایکس ایم ایل کا تجزیہ نہیں کیا جا سکا۔",
"uploadstash-bad-path-unknown-type": "نامعلوم قسم \"$1\"",
"uploadstash-bad-path-unrecognized-thumb-name": "غیر معروف نام تصغیر",
"uploadstash-file-not-found": "اسکرین میں کلیدی \"$1\" نہیں مل سکا.",
+ "uploadstash-file-not-found-no-thumb": "تصغیر حاصل نہیں کیا جا سکا۔",
+ "uploadstash-file-not-found-no-local-path": "تصغیر شدہ آئٹم کے لیے کوئی مقامی پاتھ موجود نہیں۔",
"uploadstash-file-not-found-missing-content-type": "لاپتہ مواد کی قسم ہیڈر.",
+ "uploadstash-file-not-found-not-exists": "کوئی پاتھ یا سادہ فائل نہیں ملی۔",
+ "uploadstash-file-too-large": "$1 بائٹ سے بڑی فائل نہیں دکھائی جا سکتی ہے۔",
+ "uploadstash-not-logged-in": "کوئی بھی صارف لاگ ان نہیں ہے، فائلیں صارفین سے متعلق ہونی چاہئیں۔",
+ "uploadstash-wrong-owner": "یہ فائل ($1) اس صارف سے متعلق نہیں ہے۔",
+ "uploadstash-no-such-key": "ایسی کسی کلید ($1) کو حذف نہیں کیا جا سکتا۔",
"uploadstash-no-extension": "توسیع نہیں ہے۔",
"uploadstash-zero-length": "فائل کا طول صفر ہے۔",
"invalid-chunk-offset": "آفسیٹ کا قطعہ نادرست ہے",
"apisandbox-loading-results": "اے پی آئی کے نتائج موصول ہو رہے ہیں۔۔۔",
"apisandbox-results-error": "اے پی آئی کوئری کا جواب لوڈ ہونے کے دوران میں نقص واقع ہوا: $1",
"apisandbox-request-selectformat-label": "درخواست کے اعداد و شمار کے طور پر دکھائیں:",
+ "apisandbox-request-format-url-label": "یوآرایل کوئیری اسٹرنگ",
"apisandbox-request-url-label": "درخواست کا ربط:",
"apisandbox-request-json-label": "JSON درخواست:",
"apisandbox-request-time": "درخواست کا وقت: {{PLURAL:$1|$1 ملی سیکنڈ}}",
"import-mapping-namespace": "کسی نام فضا میں درآمد کریں:",
"import-mapping-subpage": "درج ذیل صفحہ کے ذیلی صفحات کے طور پر درآمد کریں:",
"import-upload-filename": "فائل کا نام:",
+ "import-upload-username-prefix": "بین الویکی سابقہ:",
"import-comment": "تبصرہ:",
"importtext": "براہ کرم [[Special:Export|برآمد کی سہولت]] کے ذریعہ اصل ویکی سے فائل برآمد کریں۔\nاور اسے اپنے کمپیوٹر میں محفوظ کرکے یہاں اپلوڈ کریں۔",
"importstart": "صفحات درآمد کیے جا رہے ہیں۔۔۔",
"imported-log-entries": "درآمد کردہ $1 {{PLURAL:$1|اندراج نوشتہ|اندراجات نوشتہ}}۔",
"importfailed": "درآمد ناکام: <nowiki>$1</nowiki>",
"importunknownsource": "درآمد کے ماخذ کی نوعیت نامعلوم ہے",
+ "importnoprefix": "کوئی بین الویکی سابقہ فراہم نہیں کیا گیا",
"importcantopen": "درآمد فائل کھل نہیں سکی",
"importbadinterwiki": "غلط بین الویکی ربط",
"importsuccess": "درآمد مکمل!",
"pageinfo-category-subcats": "تعداد ذیلی زمرہ جات",
"pageinfo-category-files": "فائلوں کی تعداد",
"pageinfo-user-id": "صارف آئی ڈی",
+ "pageinfo-file-hash": "ہیش قدر",
"markaspatrolleddiff": "بطور مراجعت شدہ نشان زد کریں",
"markaspatrolledtext": "اس صفحہ کو بطور مراجعت شدہ نشان زد کریں",
"markaspatrolledtext-file": "فائل کے اس نسخے کو مراجعت شدہ نشان زد کریں",
"newimages-hidepatrolled": "مراجعت شدہ اپلوڈ چھپائیں",
"newimages-mediatype": "میڈیا قسم:",
"noimages": "دیکھنے کیلئے کچھ نہیں ہے۔",
+ "gallery-slideshow-toggle": "تصغیر شدہ تصویروں کو فعال یا غیر فعال کریں",
"ilsubmit": "تلاش",
"bydate": "بلحاظ تاریخ",
"sp-newimages-showfrom": "$2، $1 کے بعد اپلوڈ کی جانے والی فائلیں دکھائیں",
"watchlistedit-clear-titles": "عناوین:",
"watchlistedit-clear-submit": "زیرنظر فہرست صاف کریں (یہ دائمی ہے!)",
"watchlistedit-clear-done": "آپ کی زیرنظر فہرست صاف ہو چکی ہے۔",
+ "watchlistedit-clear-jobqueue": "آپ کی زیر نظر فہرست کی صفائی جاری ہے۔ اسے مکمل ہونے میں کچھ وقت لگ سکتا ہے!",
"watchlistedit-clear-removed": "{{PLURAL:$1|1 عنوان حذف کیا گیا|$1 عناوین حذف کیے گئے}}:",
"watchlistedit-too-many": "نمائش کے لیے صفحات کی تعداد بہت زیادہ ہے۔",
"watchlisttools-clear": "زیرنظر فہرست کی صفائی",
"tag-mw-contentmodelchange": "مواد کے ماڈل میں تبدیلی",
"tag-mw-contentmodelchange-description": "ترامیم جو صفحہ کے [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel مواد کے ماڈل کو تبدیل کرتی ہیں]",
"tag-mw-new-redirect": "نیا رجوع مکرر",
+ "tag-mw-new-redirect-description": "ترامیم جو ایک نیا رجوع مکرر بناتی ہیں یا صفحہ کو رجوع مکرر کر دیتی ہیں",
"tag-mw-removed-redirect": "رجوع مکرر ہٹایا",
+ "tag-mw-removed-redirect-description": "ترامیم جو کسی موجودہ رجوع مکرر کو غیر رجوع مکرر ميں بدل دیتی ہیں",
"tag-mw-changed-redirect-target": "ہدف رجوع مکرر کی تبدیلی",
+ "tag-mw-changed-redirect-target-description": "ترامیم جو ایک رجوع مکرر کے ہدف کو بدل یتی ہیں",
"tag-mw-blank": "صفحہ سے تمام مواد حذف",
+ "tag-mw-blank-description": "ترامیم جو صفحہ کو خالی کرتی ہیں",
"tag-mw-replace": "مواد کی تبدیلی",
+ "tag-mw-replace-description": "ترامیم جو ایک صفحہ سے 90% مواد حذف کرتی ہیں",
"tag-mw-rollback": "استرجع",
+ "tag-mw-rollback-description": "ترامیم جو استرجع ربط استعمال کرتے ہوئے پچھلی ترامیم استرجع کرتی ہیں",
"tag-mw-undo": "رد ترمیم",
+ "tag-mw-undo-description": "ترامیم جو رد ترمیم ربط استعمال کرتے ہوئے پچھلی ترامیم رد کرتی ہیں",
"tags-title": "ٹیگ",
"tags-intro": "اس صفحہ میں ان تمام ٹیگوں کی فہرست درج ہے، جنہیں سافٹ ویئر کسی ترمیم پر مفہوم کے ساتھ نشان زد کرتا ہے۔",
"tags-tag": "ٹیگ کا نام",
"restrictionsfield-badip": "آئی پی پتا یا رینج نادرست ہے: $1",
"restrictionsfield-label": "آئی پی کی اجازت یافتہ رینج:",
"restrictionsfield-help": "فی سطر ایک آئی پی پتا یا سی آئی ڈی آر رینج۔ تمام کو فعال کرنے کے لیے <br><code>0.0.0.0/0</code><br><code>::/0</code> استعمال کریں",
+ "edit-error-short": "خطا: $1",
+ "edit-error-long": "خطائیں:\n\n$1",
"revid": "نسخہ $1",
"pageid": "صفحہ کا شناختی نمبر $1",
"rawhtml-notallowed": "\n<html> ٹیگ عام صفحات کے باہر استعمال نہیں کیا جا سکتا۔",
"watchlistedit-clear-titles": "標題:",
"watchlistedit-clear-submit": "清空監視清單 (無法還原)",
"watchlistedit-clear-done": "已清空您的監視清單。",
+ "watchlistedit-clear-jobqueue": "您的監視列表正在清空。這需要花一些時間!",
"watchlistedit-clear-removed": "已移除 $1 個標題:",
"watchlistedit-too-many": "太多要在此處顯示的頁面。",
"watchlisttools-clear": "清空監視清單",
$wgShowSQLErrors = true;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
set_time_limit( 0 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->adjustMemoryLimit();
}
}
public function execute() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$content = file_get_contents( $this->getOption( 'file' ) );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $content === false ) {
$this->fatalError( 'Unable to open input file' );
}
}
private function getTextSpawned( $id ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( !$this->spawnProc ) {
// First time?
$this->openSpawn();
}
$text = $this->getTextSpawnedOnce( $id );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $text;
}
}
private function closeSpawn() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( $this->spawnRead ) {
fclose( $this->spawnRead );
}
pclose( $this->spawnProc );
}
$this->spawnProc = false;
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
private function getTextSpawnedOnce( $id ) {
$this->error( 'WARNING: You have provided the options "dbpass" and "dbpassfile". '
. 'The content of "dbpassfile" overrides "dbpass".' );
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$dbpass = file_get_contents( $dbpassfile ); // returns false on failure
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $dbpass === false ) {
$this->fatalError( "Couldn't open $dbpassfile" );
}
$this->error( 'WARNING: You have provided the options "pass" and "passfile". '
. 'The content of "passfile" overrides "pass".' );
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$pass = file_get_contents( $passfile ); // returns false on failure
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $pass === false ) {
$this->fatalError( "Couldn't open $passfile" );
}
$parser = new JSParser();
foreach ( $files as $filename ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$js = file_get_contents( $filename );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $js === false ) {
$this->output( "$filename ERROR: could not read file\n" );
$this->errs++;
/** A general output object. Need to be overridden */
class StatsOutput {
function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$return = sprintf( '%.' . $accuracy . 'f%%', 100 * $subset / $total );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return $return;
}
}
function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$v = round( 255 * $subset / $total );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $revert ) {
# Weigh reverse with factor 20 so coloring takes effect more quickly as
}
}
- MediaWiki\suppressWarnings(); // header notices
+ Wikimedia\suppressWarnings(); // header notices
// Cache ?action=view
$wgRequestTime = microtime( true ); # T24852
ob_start();
$context->getOutput()->clearHTML();
$historyHtml = ob_get_clean();
$historyCache->saveToFileCache( $historyHtml );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $rebuilt ) {
$this->output( "Re-cached page '$title' (id {$row->page_id})..." );
$this->db->query( 'BEGIN IMMEDIATE TRANSACTION', __METHOD__ );
$ourFile = $this->db->getDbFilePath();
$this->output( " Copying database file $ourFile to $fileName... " );
- MediaWiki\suppressWarnings( false );
+ Wikimedia\suppressWarnings();
if ( !copy( $ourFile, $fileName ) ) {
$err = error_get_last();
$this->error( " {$err['message']}" );
}
- MediaWiki\suppressWarnings( true );
+ Wikimedia\restoreWarnings();
$this->output( " Releasing lock...\n" );
$this->db->query( 'COMMIT TRANSACTION', __METHOD__ );
}
$text = $secondaryRow->old_text;
if ( in_array( 'external', $flags ) ) {
$url = $text;
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
list( /* $proto */, $path ) = explode( '://', $url, 2 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $path == "" ) {
return false;
[ 'file', 'php://stdout', 'w' ],
[ 'file', 'php://stderr', 'w' ]
];
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$proc = proc_open( "$cmd --replica-id $i", $spec, $pipes );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$proc ) {
$this->critical( "Error opening replica DB process: $cmd" );
exit( 1 );
* @singleton
*/
-/* eslint-disable no-use-before-define */
/* global Uint8Array */
( function ( mw, $ ) {
return mw.msg( sizeMsgs[ 0 ], Math.round( s ) );
}
+ /**
+ * Start loading a file into memory; when complete, pass it as a
+ * data URL to the callback function. If the callbackBinary is set it will
+ * first be read as binary and afterwards as data URL. Useful if you want
+ * to do preprocessing on the binary data first.
+ *
+ * @param {File} file
+ * @param {Function} callback
+ * @param {Function} callbackBinary
+ */
+ function fetchPreview( file, callback, callbackBinary ) {
+ var reader = new FileReader();
+ if ( callbackBinary && 'readAsBinaryString' in reader ) {
+ // To fetch JPEG metadata we need a binary string; start there.
+ // TODO
+ reader.onload = function () {
+ callbackBinary( reader.result );
+
+ // Now run back through the regular code path.
+ fetchPreview( file, callback );
+ };
+ reader.readAsBinaryString( file );
+ } else if ( callbackBinary && 'readAsArrayBuffer' in reader ) {
+ // readAsArrayBuffer replaces readAsBinaryString
+ // However, our JPEG metadata library wants a string.
+ // So, this is going to be an ugly conversion.
+ reader.onload = function () {
+ var i,
+ buffer = new Uint8Array( reader.result ),
+ string = '';
+ for ( i = 0; i < buffer.byteLength; i++ ) {
+ string += String.fromCharCode( buffer[ i ] );
+ }
+ callbackBinary( string );
+
+ // Now run back through the regular code path.
+ fetchPreview( file, callback );
+ };
+ reader.readAsArrayBuffer( file );
+ } else if ( 'URL' in window && 'createObjectURL' in window.URL ) {
+ // Supported in Firefox 4.0 and above <https://developer.mozilla.org/en/DOM/window.URL.createObjectURL>
+ // WebKit has it in a namespace for now but that's ok. ;)
+ //
+ // Lifetime of this URL is until document close, which is fine
+ // for Special:Upload -- if this code gets used on longer-running
+ // pages, add a revokeObjectURL() when it's no longer needed.
+ //
+ // Prefer this over readAsDataURL for Firefox 7 due to bug reading
+ // some SVG files from data URIs <https://bugzilla.mozilla.org/show_bug.cgi?id=694165>
+ callback( window.URL.createObjectURL( file ) );
+ } else {
+ // This ends up decoding the file to base-64 and back again, which
+ // feels horribly inefficient.
+ reader.onload = function () {
+ callback( reader.result );
+ };
+ reader.readAsDataURL( file );
+ }
+ }
+
+ /**
+ * Clear the file upload preview area.
+ */
+ function clearPreview() {
+ $( '#mw-upload-thumbnail' ).remove();
+ }
+
/**
* Show a thumbnail preview of PNG, JPEG, GIF, and SVG files prior to upload
* in browsers supporting HTML5 FileAPI.
} : null );
}
- /**
- * Start loading a file into memory; when complete, pass it as a
- * data URL to the callback function. If the callbackBinary is set it will
- * first be read as binary and afterwards as data URL. Useful if you want
- * to do preprocessing on the binary data first.
- *
- * @param {File} file
- * @param {Function} callback
- * @param {Function} callbackBinary
- */
- function fetchPreview( file, callback, callbackBinary ) {
- var reader = new FileReader();
- if ( callbackBinary && 'readAsBinaryString' in reader ) {
- // To fetch JPEG metadata we need a binary string; start there.
- // TODO
- reader.onload = function () {
- callbackBinary( reader.result );
-
- // Now run back through the regular code path.
- fetchPreview( file, callback );
- };
- reader.readAsBinaryString( file );
- } else if ( callbackBinary && 'readAsArrayBuffer' in reader ) {
- // readAsArrayBuffer replaces readAsBinaryString
- // However, our JPEG metadata library wants a string.
- // So, this is going to be an ugly conversion.
- reader.onload = function () {
- var i,
- buffer = new Uint8Array( reader.result ),
- string = '';
- for ( i = 0; i < buffer.byteLength; i++ ) {
- string += String.fromCharCode( buffer[ i ] );
- }
- callbackBinary( string );
-
- // Now run back through the regular code path.
- fetchPreview( file, callback );
- };
- reader.readAsArrayBuffer( file );
- } else if ( 'URL' in window && 'createObjectURL' in window.URL ) {
- // Supported in Firefox 4.0 and above <https://developer.mozilla.org/en/DOM/window.URL.createObjectURL>
- // WebKit has it in a namespace for now but that's ok. ;)
- //
- // Lifetime of this URL is until document close, which is fine
- // for Special:Upload -- if this code gets used on longer-running
- // pages, add a revokeObjectURL() when it's no longer needed.
- //
- // Prefer this over readAsDataURL for Firefox 7 due to bug reading
- // some SVG files from data URIs <https://bugzilla.mozilla.org/show_bug.cgi?id=694165>
- callback( window.URL.createObjectURL( file ) );
- } else {
- // This ends up decoding the file to base-64 and back again, which
- // feels horribly inefficient.
- reader.onload = function () {
- callback( reader.result );
- };
- reader.readAsDataURL( file );
- }
- }
-
- /**
- * Clear the file upload preview area.
- */
- function clearPreview() {
- $( '#mw-upload-thumbnail' ).remove();
- }
-
/**
* Check if the file does not exceed the maximum size
*
/*!
* @author Neil Kandalgaonkar, 2010
- * @author Timo Tijhof, 2011-2013
+ * @author Timo Tijhof
* @since 1.18
*/
-/* eslint-disable no-use-before-define */
-
( function ( mw, $ ) {
/**
* Parse titles into an object structure. Note that when using the constructor
* mw.Title.makeTitle( NS_TEMPLATE, 'Template:Foo' ).getPrefixedText(); // => 'Template:Template:Foo'
*
* @class mw.Title
- * @constructor
- * @param {string} title Title of the page. If no second argument given,
- * this will be searched for a namespace
- * @param {number} [namespace=NS_MAIN] If given, will used as default namespace for the given title
- * @throws {Error} When the title is invalid
*/
- function Title( title, namespace ) {
- var parsed = parse( title, namespace );
- if ( !parsed ) {
- throw new Error( 'Unable to parse title' );
- }
-
- this.namespace = parsed.namespace;
- this.title = parsed.title;
- this.ext = parsed.ext;
- this.fragment = parsed.fragment;
- }
/* Private members */
- // eslint-disable-next-line vars-on-top
var
namespaceIds = mw.config.get( 'wgNamespaceIds' ),
return trimToByteLength( name, FILENAME_MAX_BYTES - extension.length - 1 ) + '.' + extension;
};
+ /**
+ * @method constructor
+ * @param {string} title Title of the page. If no second argument given,
+ * this will be searched for a namespace
+ * @param {number} [namespace=NS_MAIN] If given, will used as default namespace for the given title
+ * @throws {Error} When the title is invalid
+ */
+ function Title( title, namespace ) {
+ var parsed = parse( title, namespace );
+ if ( !parsed ) {
+ throw new Error( 'Unable to parse title' );
+ }
+
+ this.namespace = parsed.namespace;
+ this.title = parsed.title;
+ this.ext = parsed.ext;
+ this.fragment = parsed.fragment;
+ }
+
/* Static members */
/**
// guaranteed to give accurate results. For example, it may introduce
// differences in the number of line breaks in <pre> tags.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
if ( !$this->doc->loadXML( '<html><body>' . $text . '</body></html>' ) ) {
$this->invalid = true;
}
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->xpath = new DOMXPath( $this->doc );
$this->body = $this->xpath->query( '//body' )->item( 0 );
}
function guessVarSize( $var ) {
$length = 0;
try {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$length = strlen( serialize( $var ) );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
} catch ( Exception $e ) {
}
return $length;
* @param string $function
*/
public function hideDeprecated( $function ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
wfDeprecated( $function );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
/**
# This check may also protect against code injection in
# case of broken installations.
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$haveDiff3 = $wgDiff3 && file_exists( $wgDiff3 );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( !$haveDiff3 ) {
$this->markTestSkipped( "Skip test, since diff3 is not configured" );
--- /dev/null
+{
+ "name": "FooBar",
+ "license-name": "not a license identifier",
+ "manifest_version": 1
+}
+
--- /dev/null
+{
+ "name": "FooBar",
+ "manifest_version": 1
+}
--- /dev/null
+{
+ "name": "FooBar",
+ "license-name": [ "array" ],
+ "manifest_version": 1
+}
--- /dev/null
+{
+ "name": "FooBar",
+ "manifest_version": 999999
+}
--- /dev/null
+{
+ "name": "FooBar"
+}
--- /dev/null
+This is definitely not JSON.
--- /dev/null
+{
+ "name": "FooBar",
+ "manifest_version": -2
+}
}
public function testGetCommentErrors() {
- MediaWiki\suppressWarnings();
- $reset = new ScopedCallback( 'MediaWiki\restoreWarnings' );
+ Wikimedia\suppressWarnings();
+ $reset = new ScopedCallback( 'Wikimedia\restoreWarnings' );
$store = $this->makeStore( MIGRATION_OLD );
$res = $store->getComment( 'dummy', [ 'dummy' => 'comment' ] );
public function testWfMkdirParents() {
// Should not return true if file exists instead of directory
$fname = $this->getNewTempFile();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$ok = wfMkdirParents( $fname );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->assertFalse( $ok );
}
'UploadPath' => $uploadPath,
] );
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$actual = OutputPage::transformResourcePath( $conf, $path );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->assertEquals( $expected ?: $path, $actual );
}
'text_id' => 123456789, // not in the test DB
] );
- MediaWiki\suppressWarnings(); // bad text_id will trigger a warning.
+ Wikimedia\suppressWarnings(); // bad text_id will trigger a warning.
$this->assertNull( $rev->getContent(),
"getContent() should return null if the revision's text blob could not be loaded." );
$this->assertNull( $rev->getContent(),
"getContent() should return null if the revision's text blob could not be loaded." );
- MediaWiki\suppressWarnings( 'end' );
+ Wikimedia\restoreWarnings();
}
public function provideGetSize() {
* @covers \MediaWiki\Storage\RevisionStore::newMutableRevisionFromArray
*/
public function testConstructFromArrayWithBadPageId() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$rev = new Revision( [ 'page' => 77777777 ] );
$this->assertSame( 77777777, $rev->getPage() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
public function provideConstructFromArray_userSetAsExpected() {
public function testConstructFromRowWithBadPageId() {
$this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', MIGRATION_OLD );
$this->overrideMwServices();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$rev = new Revision( (object)[ 'rev_page' => 77777777 ] );
$this->assertSame( 77777777, $rev->getPage() );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
public function provideGetRevisionText() {
}
public static function provideGetMessageFromException() {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$usageException = new UsageException(
'<b>Something broke!</b>', 'ue-code', 0, [ 'xxx' => 'yyy', 'baz' => 23 ]
);
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
return [
'Normal exception' => [
MWExceptionHandler::getRedactedTraceAsString( $dbex )
)->inLanguage( 'en' )->useDatabase( false )->text();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$usageEx = new UsageException( 'Usage exception!', 'ue', 0, [ 'foo' => 'bar' ] );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$apiEx1 = new ApiUsageException( null,
StatusValue::newFatal( new ApiRawMessage( 'An error', 'sv-error1' ) ) );
$chunkSessionKey = false;
$resultOffset = 0;
// Open the file:
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$handle = fopen( $filePath, "r" );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $handle === false ) {
$this->markTestIncomplete( "could not open file: $filePath" );
while ( !feof( $handle ) ) {
// Get the current chunk
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$chunkData = fread( $handle, $chunkSize );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
// Upload the current chunk into the $_FILE object:
$this->fakeUploadChunk( 'chunk', 'blob', $mimeType, $chunkData );
$row->rc_deleted = 'bar';
$row->rc_comment = 'comment';
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$rc = RecentChange::newFromRow( $row );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$expected = [
'rc_foo' => 'AAA',
$this->assertInstanceOf( \Wikimedia\Rdbms\DBConnectionError::class, $e );
$this->assertFalse( $db->isOpen() );
} else {
- \MediaWiki\suppressWarnings();
+ \Wikimedia\suppressWarnings();
$this->assertFalse( $db->selectDB( 'garbage-db' ) );
- \MediaWiki\restoreWarnings();
+ \Wikimedia\restoreWarnings();
}
$lb->reuseConnection( $db ); // don't care
public static function setUpBeforeClass() {
parent::setUpBeforeClass();
MWDebug::init();
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
}
public static function tearDownAfterClass() {
parent::tearDownAfterClass();
MWDebug::deinit();
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
}
/**
// disable conversion of notices
PHPUnit_Framework_Error_Notice::$enabled = false;
// have to keep the user notice from being output
- \MediaWiki\suppressWarnings();
+ \Wikimedia\suppressWarnings();
$res = $formatter->format( [ 'channel' => 'marty' ] );
- \MediaWiki\restoreWarnings();
+ \Wikimedia\restoreWarnings();
PHPUnit_Framework_Error_Notice::$enabled = $noticeEnabled;
$this->assertNull( $res );
}
]
];
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$actual = $be->sanitizeOpHeaders( $input );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$this->assertEquals( $expected, $actual, "Header sanitized properly" );
}
// JSMin+'s parser will throw an exception if output is not valid JS.
// suppression of warnings needed for stupid crap
if ( $expectedValid ) {
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$parser = new JSParser();
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
$parser->parse( $minified, 'minify-test.js', 1 );
}
--- /dev/null
+<?php
+/**
+ * Copyright (C) 2018 Kunal Mehta <legoktm@member.fsf.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.
+ *
+ */
+
+/**
+ * @covers ExtensionJsonValidator
+ */
+class ExtensionJsonValidatorTest extends MediaWikiTestCase {
+
+ /**
+ * @dataProvider provideValidate
+ */
+ public function testValidate( $file, $expected ) {
+ // If a dependency is missing, skip this test.
+ $validator = new ExtensionJsonValidator( function ( $msg ) {
+ $this->markTestSkipped( $msg );
+ } );
+
+ if ( is_string( $expected ) ) {
+ $this->setExpectedException(
+ ExtensionJsonValidationError::class,
+ $expected
+ );
+ }
+
+ $dir = __DIR__ . '/../../data/registration/';
+ $this->assertSame(
+ $expected,
+ $validator->validate( $dir . $file )
+ );
+ }
+
+ public function provideValidate() {
+ return [
+ [
+ 'notjson.txt',
+ 'notjson.txt is not valid JSON'
+ ],
+ [
+ 'no_manifest_version.json',
+ 'no_manifest_version.json does not have manifest_version set.'
+ ],
+ [
+ 'old_manifest_version.json',
+ 'old_manifest_version.json is using a non-supported schema version'
+ ],
+ [
+ 'newer_manifest_version.json',
+ 'newer_manifest_version.json is using a non-supported schema version'
+ ],
+ [
+ 'bad_spdx.json',
+ "bad_spdx.json did not pass validation.
+[license-name] Invalid SPDX license identifier, see <https://spdx.org/licenses/>"
+ ],
+ [
+ 'invalid.json',
+ "invalid.json did not pass validation.
+[license-name] Array value found, but a string is required"
+ ],
+ [
+ 'good.json',
+ true
+ ],
+ ];
+ }
+
+}
'FakeDependency' => [
'version' => '1.0.0',
],
+ 'NoVersionGiven' => [],
] );
$this->assertEquals( $expected, $checker->checkArray( [
'FakeExtension' => $given,
],
[]
],
+ [
+ [
+ 'extensions' => [
+ 'NoVersionGiven' => '*'
+ ]
+ ],
+ [],
+ ],
+ [
+ [
+ 'extensions' => [
+ 'NoVersionGiven' => '1.0',
+ ]
+ ],
+ [ 'NoVersionGiven does not expose its version, but FakeExtension requires: 1.0.' ],
+ ],
+ [
+ [
+ 'extensions' => [
+ 'Missing' => '*',
+ ]
+ ],
+ [ 'FakeExtension requires Missing to be installed.' ],
+ ],
+ [
+ [
+ 'extensions' => [
+ 'FakeDependency' => '2.0.0',
+ ]
+ ],
+ // phpcs:ignore Generic.Files.LineLength.TooLong
+ [ 'FakeExtension is not compatible with the current installed version of FakeDependency (1.0.0), it requires: 2.0.0.' ],
+ ]
];
}
);
$wrap->setEnableFlags( 'warn' );
- \MediaWiki\suppressWarnings();
+ \Wikimedia\suppressWarnings();
ini_set( 'session.serialize_handler', $handler );
- \MediaWiki\restoreWarnings();
+ \Wikimedia\restoreWarnings();
if ( ini_get( 'session.serialize_handler' ) !== $handler ) {
$this->markTestSkipped( "Cannot set session.serialize_handler to \"$handler\"" );
}
$hmac = hash_hmac( 'sha256', $sealed, $hmacKey, true );
$encrypted = base64_encode( $hmac ) . '.' . $sealed;
$session->set( 'test', $encrypted );
- \MediaWiki\suppressWarnings();
+ \Wikimedia\suppressWarnings();
$this->assertEquals( 'defaulted', $session->getSecret( 'test', 'defaulted' ) );
- \MediaWiki\restoreWarnings();
+ \Wikimedia\restoreWarnings();
}
}
continue;
}
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$contents = file_get_contents( $filePath );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( $contents === false ) {
$actual[$class] = "[couldn't read file '$filePath']";
// Fix IE brokenness
$imsString = preg_replace( '/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"] );
// Calculate time
- MediaWiki\suppressWarnings();
+ Wikimedia\suppressWarnings();
$imsUnix = strtotime( $imsString );
- MediaWiki\restoreWarnings();
+ Wikimedia\restoreWarnings();
if ( wfTimestamp( TS_UNIX, $img->getTimestamp() ) <= $imsUnix ) {
HttpStatus::header( 304 );
return;