* DB_SLAVE is deprecated. DB_REPLICA should be used instead.
* wfUsePHP() is deprecated.
* wfFixSessionID() was removed.
+* wfShellExec() and related functions are deprecated, use Shell::command().
== Compatibility ==
MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
+ 'MediaWiki\\ProcOpenError' => __DIR__ . '/includes/exception/ProcOpenError.php',
'MediaWiki\\Search\\ParserOutputSearchDataExtractor' => __DIR__ . '/includes/search/ParserOutputSearchDataExtractor.php',
'MediaWiki\\Services\\CannotReplaceActiveServiceException' => __DIR__ . '/includes/services/CannotReplaceActiveServiceException.php',
'MediaWiki\\Services\\ContainerDisabledException' => __DIR__ . '/includes/services/ContainerDisabledException.php',
'MediaWiki\\Session\\SessionProviderInterface' => __DIR__ . '/includes/session/SessionProviderInterface.php',
'MediaWiki\\Session\\Token' => __DIR__ . '/includes/session/Token.php',
'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php',
+ 'MediaWiki\\ShellDisabledError' => __DIR__ . '/includes/exception/ShellDisabledError.php',
+ 'MediaWiki\\Shell\\Command' => __DIR__ . '/includes/shell/Command.php',
+ 'MediaWiki\\Shell\\Result' => __DIR__ . '/includes/shell/Result.php',
+ 'MediaWiki\\Shell\\Shell' => __DIR__ . '/includes/shell/Shell.php',
'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
'MediaWiki\\Tidy\\BalanceActiveFormattingElements' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceElement' => __DIR__ . '/includes/tidy/Balancer.php',
use Liuggio\StatsdClient\Sender\SocketSender;
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\ProcOpenError;
use MediaWiki\Session\SessionManager;
use MediaWiki\MediaWikiServices;
+use MediaWiki\Shell\Shell;
use Wikimedia\ScopedCallback;
use Wikimedia\Rdbms\DBReplicationWaitError;
* @param string $args,... strings to escape and glue together,
* or a single array of strings parameter
* @return string
+ * @deprecated since 1.30 use MediaWiki\Shell::escape()
*/
function wfEscapeShellArg( /*...*/ ) {
$args = func_get_args();
- if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
- // If only one argument has been passed, and that argument is an array,
- // treat it as a list of arguments
- $args = reset( $args );
- }
-
- $first = true;
- $retVal = '';
- foreach ( $args as $arg ) {
- if ( !$first ) {
- $retVal .= ' ';
- } else {
- $first = false;
- }
-
- if ( wfIsWindows() ) {
- // Escaping for an MSVC-style command line parser and CMD.EXE
- // @codingStandardsIgnoreStart For long URLs
- // Refs:
- // * https://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
- // * https://technet.microsoft.com/en-us/library/cc723564.aspx
- // * T15518
- // * CR r63214
- // Double the backslashes before any double quotes. Escape the double quotes.
- // @codingStandardsIgnoreEnd
- $tokens = preg_split( '/(\\\\*")/', $arg, -1, PREG_SPLIT_DELIM_CAPTURE );
- $arg = '';
- $iteration = 0;
- foreach ( $tokens as $token ) {
- if ( $iteration % 2 == 1 ) {
- // Delimiter, a double quote preceded by zero or more slashes
- $arg .= str_replace( '\\', '\\\\', substr( $token, 0, -1 ) ) . '\\"';
- } elseif ( $iteration % 4 == 2 ) {
- // ^ in $token will be outside quotes, need to be escaped
- $arg .= str_replace( '^', '^^', $token );
- } else { // $iteration % 4 == 0
- // ^ in $token will appear inside double quotes, so leave as is
- $arg .= $token;
- }
- $iteration++;
- }
- // Double the backslashes before the end of the string, because
- // we will soon add a quote
- $m = [];
- if ( preg_match( '/^(.*?)(\\\\+)$/', $arg, $m ) ) {
- $arg = $m[1] . str_replace( '\\', '\\\\', $m[2] );
- }
- // Add surrounding quotes
- $retVal .= '"' . $arg . '"';
- } else {
- $retVal .= escapeshellarg( $arg );
- }
- }
- return $retVal;
+ return call_user_func_array( Shell::class . '::escape', $args );
}
/**
*
* @return bool|string False or 'disabled'
* @since 1.22
+ * @deprecated since 1.30 use MediaWiki\Shell::isDisabled()
*/
function wfShellExecDisabled() {
- static $disabled = null;
- if ( is_null( $disabled ) ) {
- if ( !function_exists( 'proc_open' ) ) {
- wfDebug( "proc_open() is disabled\n" );
- $disabled = 'disabled';
- } else {
- $disabled = false;
- }
- }
- return $disabled;
+ return Shell::isDisabled() ? 'disabled' : false;
}
/**
* method. Set this to a string for an alternative method to profile from
*
* @return string Collected stdout as a string
+ * @deprecated since 1.30 use class MediaWiki\Shell\Shell
*/
function wfShellExec( $cmd, &$retval = null, $environ = [],
$limits = [], $options = []
) {
- global $IP, $wgMaxShellMemory, $wgMaxShellFileSize, $wgMaxShellTime,
- $wgMaxShellWallClockTime, $wgShellCgroup;
-
- $disabled = wfShellExecDisabled();
- if ( $disabled ) {
+ if ( Shell::isDisabled() ) {
$retval = 1;
+ // Backwards compatibility be upon us...
return 'Unable to run external programs, proc_open() is disabled.';
}
- $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
- $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller();
-
- $envcmd = '';
- foreach ( $environ as $k => $v ) {
- if ( wfIsWindows() ) {
- /* Surrounding a set in quotes (method used by wfEscapeShellArg) makes the quotes themselves
- * appear in the environment variable, so we must use carat escaping as documented in
- * https://technet.microsoft.com/en-us/library/cc723564.aspx
- * Note however that the quote isn't listed there, but is needed, and the parentheses
- * are listed there but doesn't appear to need it.
- */
- $envcmd .= "set $k=" . preg_replace( '/([&|()<>^"])/', '^\\1', $v ) . '&& ';
- } else {
- /* Assume this is a POSIX shell, thus required to accept variable assignments before the command
- * http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_01
- */
- $envcmd .= "$k=" . escapeshellarg( $v ) . ' ';
- }
- }
if ( is_array( $cmd ) ) {
- $cmd = wfEscapeShellArg( $cmd );
+ $cmd = Shell::escape( $cmd );
}
- $cmd = $envcmd . $cmd;
+ $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
+ $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller();
- $useLogPipe = false;
- if ( is_executable( '/bin/bash' ) ) {
- $time = intval( isset( $limits['time'] ) ? $limits['time'] : $wgMaxShellTime );
- if ( isset( $limits['walltime'] ) ) {
- $wallTime = intval( $limits['walltime'] );
- } elseif ( isset( $limits['time'] ) ) {
- $wallTime = $time;
- } else {
- $wallTime = intval( $wgMaxShellWallClockTime );
- }
- $mem = intval( isset( $limits['memory'] ) ? $limits['memory'] : $wgMaxShellMemory );
- $filesize = intval( isset( $limits['filesize'] ) ? $limits['filesize'] : $wgMaxShellFileSize );
-
- if ( $time > 0 || $mem > 0 || $filesize > 0 || $wallTime > 0 ) {
- $cmd = '/bin/bash ' . escapeshellarg( "$IP/includes/limit.sh" ) . ' ' .
- escapeshellarg( $cmd ) . ' ' .
- escapeshellarg(
- "MW_INCLUDE_STDERR=" . ( $includeStderr ? '1' : '' ) . ';' .
- "MW_CPU_LIMIT=$time; " .
- 'MW_CGROUP=' . escapeshellarg( $wgShellCgroup ) . '; ' .
- "MW_MEM_LIMIT=$mem; " .
- "MW_FILE_SIZE_LIMIT=$filesize; " .
- "MW_WALL_CLOCK_LIMIT=$wallTime; " .
- "MW_USE_LOG_PIPE=yes"
- );
- $useLogPipe = true;
- } elseif ( $includeStderr ) {
- $cmd .= ' 2>&1';
- }
- } elseif ( $includeStderr ) {
- $cmd .= ' 2>&1';
- }
- wfDebug( "wfShellExec: $cmd\n" );
-
- // Don't try to execute commands that exceed Linux's MAX_ARG_STRLEN.
- // Other platforms may be more accomodating, but we don't want to be
- // accomodating, because very long commands probably include user
- // input. See T129506.
- if ( strlen( $cmd ) > SHELL_MAX_ARG_STRLEN ) {
- throw new Exception( __METHOD__ .
- '(): total length of $cmd must not exceed SHELL_MAX_ARG_STRLEN' );
- }
-
- $desc = [
- 0 => [ 'file', 'php://stdin', 'r' ],
- 1 => [ 'pipe', 'w' ],
- 2 => [ 'file', 'php://stderr', 'w' ] ];
- if ( $useLogPipe ) {
- $desc[3] = [ 'pipe', 'w' ];
- }
- $pipes = null;
- $scoped = Profiler::instance()->scopedProfileIn( __FUNCTION__ . '-' . $profileMethod );
- $proc = proc_open( $cmd, $desc, $pipes );
- if ( !$proc ) {
- wfDebugLog( 'exec', "proc_open() failed: $cmd" );
+ try {
+ $result = Shell::command( [] )
+ ->unsafeParams( (array)$cmd )
+ ->environment( $environ )
+ ->limits( $limits )
+ ->includeStderr( $includeStderr )
+ ->profileMethod( $profileMethod )
+ ->execute();
+ } catch ( ProcOpenError $ex ) {
$retval = -1;
return '';
}
- $outBuffer = $logBuffer = '';
- $emptyArray = [];
- $status = false;
- $logMsg = false;
-
- /* According to the documentation, it is possible for stream_select()
- * to fail due to EINTR. I haven't managed to induce this in testing
- * despite sending various signals. If it did happen, the error
- * message would take the form:
- *
- * stream_select(): unable to select [4]: Interrupted system call (max_fd=5)
- *
- * where [4] is the value of the macro EINTR and "Interrupted system
- * call" is string which according to the Linux manual is "possibly"
- * localised according to LC_MESSAGES.
- */
- $eintr = defined( 'SOCKET_EINTR' ) ? SOCKET_EINTR : 4;
- $eintrMessage = "stream_select(): unable to select [$eintr]";
-
- $running = true;
- $timeout = null;
- $numReadyPipes = 0;
-
- while ( $running === true || $numReadyPipes !== 0 ) {
- if ( $running ) {
- $status = proc_get_status( $proc );
- // If the process has terminated, switch to nonblocking selects
- // for getting any data still waiting to be read.
- if ( !$status['running'] ) {
- $running = false;
- $timeout = 0;
- }
- }
-
- $readyPipes = $pipes;
-
- // Clear last error
- // @codingStandardsIgnoreStart Generic.PHP.NoSilencedErrors.Discouraged
- @trigger_error( '' );
- $numReadyPipes = @stream_select( $readyPipes, $emptyArray, $emptyArray, $timeout );
- if ( $numReadyPipes === false ) {
- // @codingStandardsIgnoreEnd
- $error = error_get_last();
- if ( strncmp( $error['message'], $eintrMessage, strlen( $eintrMessage ) ) == 0 ) {
- continue;
- } else {
- trigger_error( $error['message'], E_USER_WARNING );
- $logMsg = $error['message'];
- break;
- }
- }
- foreach ( $readyPipes as $fd => $pipe ) {
- $block = fread( $pipe, 65536 );
- if ( $block === '' ) {
- // End of file
- fclose( $pipes[$fd] );
- unset( $pipes[$fd] );
- if ( !$pipes ) {
- break 2;
- }
- } elseif ( $block === false ) {
- // Read error
- $logMsg = "Error reading from pipe";
- break 2;
- } elseif ( $fd == 1 ) {
- // From stdout
- $outBuffer .= $block;
- } elseif ( $fd == 3 ) {
- // From log FD
- $logBuffer .= $block;
- if ( strpos( $block, "\n" ) !== false ) {
- $lines = explode( "\n", $logBuffer );
- $logBuffer = array_pop( $lines );
- foreach ( $lines as $line ) {
- wfDebugLog( 'exec', $line );
- }
- }
- }
- }
- }
-
- foreach ( $pipes as $pipe ) {
- fclose( $pipe );
- }
-
- // Use the status previously collected if possible, since proc_get_status()
- // just calls waitpid() which will not return anything useful the second time.
- if ( $running ) {
- $status = proc_get_status( $proc );
- }
-
- if ( $logMsg !== false ) {
- // Read/select error
- $retval = -1;
- proc_close( $proc );
- } elseif ( $status['signaled'] ) {
- $logMsg = "Exited with signal {$status['termsig']}";
- $retval = 128 + $status['termsig'];
- proc_close( $proc );
- } else {
- if ( $status['running'] ) {
- $retval = proc_close( $proc );
- } else {
- $retval = $status['exitcode'];
- proc_close( $proc );
- }
- if ( $retval == 127 ) {
- $logMsg = "Possibly missing executable file";
- } elseif ( $retval >= 129 && $retval <= 192 ) {
- $logMsg = "Probably exited with signal " . ( $retval - 128 );
- }
- }
- if ( $logMsg !== false ) {
- wfDebugLog( 'exec', "$logMsg: $cmd" );
- }
+ $retval = $result->getExitCode();
- return $outBuffer;
+ return $result->getStdout();
}
/**
* @param array $limits Optional array with limits(filesize, memory, time, walltime)
* this overwrites the global wgMaxShell* limits.
* @return string Collected stdout and stderr as a string
+ * @deprecated since 1.30 use class MediaWiki\Shell\Shell
*/
function wfShellExecWithStderr( $cmd, &$retval = null, $environ = [], $limits = [] ) {
return wfShellExec( $cmd, $retval, $environ, $limits,
}
$cmd[] = $script;
// Escape each parameter for shell
- return wfEscapeShellArg( array_merge( $cmd, $parameters ) );
+ return Shell::escape( array_merge( $cmd, $parameters ) );
}
/**
fclose( $yourtextFile );
# Check for a conflict
- $cmd = wfEscapeShellArg( $wgDiff3, '-a', '--overlap-only', $mytextName,
+ $cmd = Shell::escape( $wgDiff3, '-a', '--overlap-only', $mytextName,
$oldtextName, $yourtextName );
$handle = popen( $cmd, 'r' );
pclose( $handle );
# Merge differences
- $cmd = wfEscapeShellArg( $wgDiff3, '-a', '-e', '--merge', $mytextName,
+ $cmd = Shell::escape( $wgDiff3, '-a', '-e', '--merge', $mytextName,
$oldtextName, $yourtextName );
$handle = popen( $cmd, 'r' );
$result = '';
fclose( $newtextFile );
// Get the diff of the two files
- $cmd = "$wgDiff " . $params . ' ' . wfEscapeShellArg( $oldtextName, $newtextName );
+ $cmd = "$wgDiff " . $params . ' ' . Shell::escape( $oldtextName, $newtextName );
$h = popen( $cmd, 'r' );
if ( !$h ) {
* @file
*/
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
/**
* API interface for page purging
$r['linkupdate'] = true;
if ( $enableParserCache ) {
- $pcache = ParserCache::singleton();
+ $pcache = MediaWikiServices::getInstance()->getParserCache();
$pcache->save( $p_result, $page, $popts );
}
}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki;
+
+use Exception;
+
+class ProcOpenError extends Exception {
+ public function __construct() {
+ parent::__construct( 'proc_open() returned error!' );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki;
+
+use Exception;
+
+/**
+ * @since 1.30
+ */
+class ShellDisabledError extends Exception {
+ public function __construct() {
+ parent::__construct( 'Unable to run external programs, proc_open() is disabled' );
+ }
+}
return '';
}
+ public function getOOUI( $value ) {
+ $this->tagFilter = ChangeTags::buildTagFilterSelector(
+ $value, true, $this->mParent->getContext() );
+ if ( $this->tagFilter ) {
+ return parent::getOOUI( $value );
+ }
+ return new OOUI\FieldLayout( new OOUI\Widget() );
+ }
+
public function getInputHTML( $value ) {
if ( $this->tagFilter ) {
// we only need the select field, HTMLForm should handle the label
}
return '';
}
+
+ public function getInputOOUI( $value ) {
+ if ( $this->tagFilter ) {
+ // we only need the select field, HTMLForm should handle the label
+ return $this->tagFilter[1];
+ }
+ return '';
+ }
}
if ( $page->getTouched() >= $this->params['rootJobTimestamp'] || $opportunistic ) {
// Cache is suspected to be up-to-date. As long as the cache rev ID matches
// and it reflects the job's triggering change, then it is usable.
- $parserOutput = ParserCache::singleton()->getDirty( $page, $parserOptions );
+ $parserOutput = $services->getParserCache()->getDirty( $page, $parserOptions );
if ( !$parserOutput
|| $parserOutput->getCacheRevisionId() != $revision->getId()
|| $parserOutput->getCacheTime() < $skewedTimestamp
&& $parserOutput->isCacheable()
) {
$ctime = wfTimestamp( TS_MW, (int)$start ); // cache time
- ParserCache::singleton()->save(
+ $services->getParserCache()->save(
$parserOutput, $page, $parserOptions, $ctime, $revision->getId()
);
}
'url' => 'http://localhost:8000/',
'prefix' => 'localhost',
'domain' => 'localhost',
+ 'timeout' => null,
'forwardCookies' => false,
'HTTPProxy' => null,
], $params );
// Ensure that the url parameter has a trailing slash.
- $mparams['url'] = preg_replace(
- '#/?$#',
- '/',
- $mparams['url']
- );
+ if ( substr( $mparams['url'], -1 ) !== '/' ) {
+ $mparams['url'] .= '/';
+ }
// Ensure the correct domain format: strip protocol, port,
// and trailing slash if present. This lets us use
// $wgCanonicalServer as a default value, which is very convenient.
# Allow frames by default
$outputPage->allowClickjacking();
- $parserCache = ParserCache::singleton();
+ $parserCache = MediaWikiServices::getInstance()->getParserCache();
$parserOptions = $this->getParserOptions();
# Render printable version, use printable version cache
}
if ( $useParserCache ) {
- $parserOutput = ParserCache::singleton()->get( $this, $parserOptions );
+ $parserOutput = MediaWikiServices::getInstance()->getParserCache()
+ ->get( $this, $parserOptions );
if ( $parserOutput !== false ) {
return $parserOutput;
}
// Save it to the parser cache.
// Make sure the cache time matches page_touched to avoid double parsing.
- ParserCache::singleton()->save(
+ MediaWikiServices::getInstance()->getParserCache()->save(
$editInfo->output, $this, $editInfo->popts,
$revision->getTimestamp(), $editInfo->revid
);
*
* @file
*/
+use MediaWiki\MediaWikiServices;
class PoolWorkArticleView extends PoolCounterWork {
/** @var WikiPage */
/** @var int */
private $revid;
+ /** @var ParserCache */
+ private $parserCache;
+
/** @var ParserOptions */
private $parserOptions;
$this->cacheable = $useParserCache;
$this->parserOptions = $parserOptions;
$this->content = $content;
- $this->cacheKey = ParserCache::singleton()->getKey( $page, $parserOptions );
+ $this->parserCache = MediaWikiServices::getInstance()->getParserCache();
+ $this->cacheKey = $this->parserCache->getKey( $page, $parserOptions );
$keyPrefix = $this->cacheKey ?: wfMemcKey( 'articleview', 'missingcachekey' );
parent::__construct( 'ArticleView', $keyPrefix . ':revid:' . $revid );
}
}
if ( $this->cacheable && $this->parserOutput->isCacheable() && $isCurrent ) {
- ParserCache::singleton()->save(
+ $this->parserCache->save(
$this->parserOutput, $this->page, $this->parserOptions, $cacheTime, $this->revid );
}
* @return bool
*/
public function getCachedWork() {
- $this->parserOutput = ParserCache::singleton()->get( $this->page, $this->parserOptions );
+ $this->parserOutput = $this->parserCache->get( $this->page, $this->parserOptions );
if ( $this->parserOutput === false ) {
wfDebug( __METHOD__ . ": parser cache miss\n" );
* @return bool
*/
public function fallback() {
- $this->parserOutput = ParserCache::singleton()->getDirty( $this->page, $this->parserOptions );
+ $this->parserOutput = $this->parserCache->getDirty( $this->page, $this->parserOptions );
if ( $this->parserOutput === false ) {
wfDebugLog( 'dirty', 'dirty missing' );
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Shell;
+
+use Exception;
+use MediaWiki\ProcOpenError;
+use MediaWiki\ShellDisabledError;
+use Profiler;
+
+/**
+ * Class used for executing shell commands
+ *
+ * @since 1.30
+ */
+class Command {
+ /** @var string */
+ private $command = '';
+
+ /** @var array */
+ private $limits = [];
+
+ /** @var string[] */
+ private $env = [];
+
+ /** @var string */
+ private $method;
+
+ /** @var bool */
+ private $useStderr = false;
+
+ /** @var bool */
+ private $everExecuted = false;
+
+ /**
+ * Constructor. Don't call directly, instead use Shell::command()
+ */
+ public function __construct() {
+ if ( Shell::isDisabled() ) {
+ throw new ShellDisabledError();
+ }
+ }
+
+ /**
+ * Destructor. Makes sure programmer didn't forget to execute the command after all
+ */
+ public function __destruct() {
+ if ( !$this->everExecuted ) {
+ $message = __CLASS__ . " was instantiated, but execute() was never called.";
+ if ( $this->method ) {
+ $message .= " Calling method: {$this->method}.";
+ }
+ $message .= " Command: {$this->command}";
+ trigger_error( $message, E_USER_NOTICE );
+ }
+ }
+
+ /**
+ * Adds parameters to the command. All parameters are sanitized via Shell::escape().
+ *
+ * @param string|string[] $args,...
+ * @return $this
+ */
+ public function params( /* ... */ ) {
+ $args = func_get_args();
+ if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
+ // If only one argument has been passed, and that argument is an array,
+ // treat it as a list of arguments
+ $args = reset( $args );
+ }
+ $this->command .= ' ' . Shell::escape( $args );
+
+ return $this;
+ }
+
+ /**
+ * Adds unsafe parameters to the command. These parameters are NOT sanitized in any way.
+ *
+ * @param string|string[] $args,...
+ * @return $this
+ */
+ public function unsafeParams( /* ... */ ) {
+ $args = func_get_args();
+ if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
+ // If only one argument has been passed, and that argument is an array,
+ // treat it as a list of arguments
+ $args = reset( $args );
+ }
+ $this->command .= implode( ' ', $args );
+
+ return $this;
+ }
+
+ /**
+ * Sets execution limits
+ *
+ * @param array $limits Optional array with limits(filesize, memory, time, walltime).
+ * This overrides the global wgMaxShell* limits.
+ * @return $this
+ */
+ public function limits( array $limits ) {
+ $this->limits = $limits;
+
+ return $this;
+ }
+
+ /**
+ * Sets environment variables which should be added to the executed command environment
+ *
+ * @param string[] $env array of variable name => value
+ * @return $this
+ */
+ public function environment( array $env ) {
+ $this->env = $env;
+
+ return $this;
+ }
+
+ /**
+ * Sets calling function for profiler. By default, the caller for execute() will be used.
+ *
+ * @param string $method
+ * @return $this
+ */
+ public function profileMethod( $method ) {
+ $this->method = $method;
+
+ return $this;
+ }
+
+ /**
+ * Controls whether stderr should be included in stdout, including errors from limit.sh.
+ * Default: don't include.
+ *
+ * @param bool $yesno
+ * @return $this
+ */
+ public function includeStderr( $yesno = true ) {
+ $this->useStderr = $yesno;
+
+ return $this;
+ }
+
+ /**
+ * Executes command. Afterwards, getExitCode() and getOutput() can be used to access execution
+ * results.
+ *
+ * @return Result
+ * @throws Exception
+ * @throws ProcOpenError
+ * @throws ShellDisabledError
+ */
+ public function execute() {
+ global $IP, $wgMaxShellMemory, $wgMaxShellFileSize, $wgMaxShellTime,
+ $wgMaxShellWallClockTime, $wgShellCgroup;
+
+ $this->everExecuted = true;
+
+ $profileMethod = $this->method ?: wfGetCaller();
+
+ $envcmd = '';
+ foreach ( $this->env as $k => $v ) {
+ if ( wfIsWindows() ) {
+ /* Surrounding a set in quotes (method used by wfEscapeShellArg) makes the quotes themselves
+ * appear in the environment variable, so we must use carat escaping as documented in
+ * https://technet.microsoft.com/en-us/library/cc723564.aspx
+ * Note however that the quote isn't listed there, but is needed, and the parentheses
+ * are listed there but doesn't appear to need it.
+ */
+ $envcmd .= "set $k=" . preg_replace( '/([&|()<>^"])/', '^\\1', $v ) . '&& ';
+ } else {
+ /* Assume this is a POSIX shell, thus required to accept variable assignments before the command
+ * http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_01
+ */
+ $envcmd .= "$k=" . escapeshellarg( $v ) . ' ';
+ }
+ }
+
+ $cmd = $envcmd . trim( $this->command );
+
+ $useLogPipe = false;
+ if ( is_executable( '/bin/bash' ) ) {
+ $time = intval( isset( $this->limits['time'] ) ? $this->limits['time'] : $wgMaxShellTime );
+ if ( isset( $this->limits['walltime'] ) ) {
+ $wallTime = intval( $this->limits['walltime'] );
+ } elseif ( isset( $this->limits['time'] ) ) {
+ $wallTime = $time;
+ } else {
+ $wallTime = intval( $wgMaxShellWallClockTime );
+ }
+ $mem = intval( isset( $this->limits['memory'] ) ? $this->limits['memory'] : $wgMaxShellMemory );
+ $filesize = intval( isset( $this->limits['filesize'] )
+ ? $this->limits['filesize']
+ : $wgMaxShellFileSize );
+
+ if ( $time > 0 || $mem > 0 || $filesize > 0 || $wallTime > 0 ) {
+ $cmd = '/bin/bash ' . escapeshellarg( "$IP/includes/limit.sh" ) . ' ' .
+ escapeshellarg( $cmd ) . ' ' .
+ escapeshellarg(
+ "MW_INCLUDE_STDERR=" . ( $this->useStderr ? '1' : '' ) . ';' .
+ "MW_CPU_LIMIT=$time; " .
+ 'MW_CGROUP=' . escapeshellarg( $wgShellCgroup ) . '; ' .
+ "MW_MEM_LIMIT=$mem; " .
+ "MW_FILE_SIZE_LIMIT=$filesize; " .
+ "MW_WALL_CLOCK_LIMIT=$wallTime; " .
+ "MW_USE_LOG_PIPE=yes"
+ );
+ $useLogPipe = true;
+ } elseif ( $this->useStderr ) {
+ $cmd .= ' 2>&1';
+ }
+ } elseif ( $this->useStderr ) {
+ $cmd .= ' 2>&1';
+ }
+ wfDebug( __METHOD__ . ": $cmd\n" );
+
+ // Don't try to execute commands that exceed Linux's MAX_ARG_STRLEN.
+ // Other platforms may be more accomodating, but we don't want to be
+ // accomodating, because very long commands probably include user
+ // input. See T129506.
+ if ( strlen( $cmd ) > SHELL_MAX_ARG_STRLEN ) {
+ throw new Exception( __METHOD__ .
+ '(): total length of $cmd must not exceed SHELL_MAX_ARG_STRLEN' );
+ }
+
+ $desc = [
+ 0 => [ 'file', 'php://stdin', 'r' ],
+ 1 => [ 'pipe', 'w' ],
+ 2 => [ 'file', 'php://stderr', 'w' ],
+ ];
+ if ( $useLogPipe ) {
+ $desc[3] = [ 'pipe', 'w' ];
+ }
+ $pipes = null;
+ $scoped = Profiler::instance()->scopedProfileIn( __FUNCTION__ . '-' . $profileMethod );
+ $proc = proc_open( $cmd, $desc, $pipes );
+ if ( !$proc ) {
+ wfDebugLog( 'exec', "proc_open() failed: $cmd" );
+ throw new ProcOpenError();
+ }
+ $outBuffer = $logBuffer = '';
+ $emptyArray = [];
+ $status = false;
+ $logMsg = false;
+
+ /* According to the documentation, it is possible for stream_select()
+ * to fail due to EINTR. I haven't managed to induce this in testing
+ * despite sending various signals. If it did happen, the error
+ * message would take the form:
+ *
+ * stream_select(): unable to select [4]: Interrupted system call (max_fd=5)
+ *
+ * where [4] is the value of the macro EINTR and "Interrupted system
+ * call" is string which according to the Linux manual is "possibly"
+ * localised according to LC_MESSAGES.
+ */
+ $eintr = defined( 'SOCKET_EINTR' ) ? SOCKET_EINTR : 4;
+ $eintrMessage = "stream_select(): unable to select [$eintr]";
+
+ $running = true;
+ $timeout = null;
+ $numReadyPipes = 0;
+
+ while ( $running === true || $numReadyPipes !== 0 ) {
+ if ( $running ) {
+ $status = proc_get_status( $proc );
+ // If the process has terminated, switch to nonblocking selects
+ // for getting any data still waiting to be read.
+ if ( !$status['running'] ) {
+ $running = false;
+ $timeout = 0;
+ }
+ }
+
+ $readyPipes = $pipes;
+
+ // Clear last error
+ // @codingStandardsIgnoreStart Generic.PHP.NoSilencedErrors.Discouraged
+ @trigger_error( '' );
+ $numReadyPipes = @stream_select( $readyPipes, $emptyArray, $emptyArray, $timeout );
+ if ( $numReadyPipes === false ) {
+ // @codingStandardsIgnoreEnd
+ $error = error_get_last();
+ if ( strncmp( $error['message'], $eintrMessage, strlen( $eintrMessage ) ) == 0 ) {
+ continue;
+ } else {
+ trigger_error( $error['message'], E_USER_WARNING );
+ $logMsg = $error['message'];
+ break;
+ }
+ }
+ foreach ( $readyPipes as $fd => $pipe ) {
+ $block = fread( $pipe, 65536 );
+ if ( $block === '' ) {
+ // End of file
+ fclose( $pipes[$fd] );
+ unset( $pipes[$fd] );
+ if ( !$pipes ) {
+ break 2;
+ }
+ } elseif ( $block === false ) {
+ // Read error
+ $logMsg = "Error reading from pipe";
+ break 2;
+ } elseif ( $fd == 1 ) {
+ // From stdout
+ $outBuffer .= $block;
+ } elseif ( $fd == 3 ) {
+ // From log FD
+ $logBuffer .= $block;
+ if ( strpos( $block, "\n" ) !== false ) {
+ $lines = explode( "\n", $logBuffer );
+ $logBuffer = array_pop( $lines );
+ foreach ( $lines as $line ) {
+ wfDebugLog( 'exec', $line );
+ }
+ }
+ }
+ }
+ }
+
+ foreach ( $pipes as $pipe ) {
+ fclose( $pipe );
+ }
+
+ // Use the status previously collected if possible, since proc_get_status()
+ // just calls waitpid() which will not return anything useful the second time.
+ if ( $running ) {
+ $status = proc_get_status( $proc );
+ }
+
+ if ( $logMsg !== false ) {
+ // Read/select error
+ $retval = -1;
+ proc_close( $proc );
+ } elseif ( $status['signaled'] ) {
+ $logMsg = "Exited with signal {$status['termsig']}";
+ $retval = 128 + $status['termsig'];
+ proc_close( $proc );
+ } else {
+ if ( $status['running'] ) {
+ $retval = proc_close( $proc );
+ } else {
+ $retval = $status['exitcode'];
+ proc_close( $proc );
+ }
+ if ( $retval == 127 ) {
+ $logMsg = "Possibly missing executable file";
+ } elseif ( $retval >= 129 && $retval <= 192 ) {
+ $logMsg = "Probably exited with signal " . ( $retval - 128 );
+ }
+ }
+
+ if ( $logMsg !== false ) {
+ wfDebugLog( 'exec', "$logMsg: $cmd" );
+ }
+
+ return new Result( $retval, $outBuffer );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Shell;
+
+/**
+ * Returned by MediaWiki\Shell\Command::execute()
+ *
+ * @since 1.30
+ */
+class Result {
+ /** @var int */
+ private $exitCode;
+
+ /** @var string */
+ private $stdout;
+
+ /**
+ * @param int $exitCode
+ * @param string $stdout
+ */
+ public function __construct( $exitCode, $stdout ) {
+ $this->exitCode = $exitCode;
+ $this->stdout = $stdout;
+ }
+
+ /**
+ * Returns exit code of the process
+ *
+ * @return int
+ */
+ public function getExitCode() {
+ return $this->exitCode;
+ }
+
+ /**
+ * Returns stdout of the process
+ *
+ * @return string
+ */
+ public function getStdout() {
+ return $this->stdout;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Class used for executing shell commands
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Shell;
+
+/**
+ * Executes shell commands
+ *
+ * @since 1.30
+ *
+ * Use call chaining with this class for expressiveness:
+ * $result = Shell::command( 'some command' )
+ * ->environment( [ 'ENVIRONMENT_VARIABLE' => 'VALUE' ] )
+ * ->limits( [ 'time' => 300 ] )
+ * ->execute();
+ *
+ * ... = $result->getExitCode();
+ * ... = $result->getStdout();
+ */
+class Shell {
+
+ /**
+ * Returns a new instance of this class
+ *
+ * @param string|string[] $command If string, a properly shell-escaped command line,
+ * or an array of unescaped arguments, in which case each value will be escaped
+ * Example: [ 'convert', '-font', 'font name' ] would produce "'convert' '-font' 'font name'"
+ * @return Command
+ */
+ public static function command( $command ) {
+ $args = func_get_args();
+ if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
+ // If only one argument has been passed, and that argument is an array,
+ // treat it as a list of arguments
+ $args = reset( $args );
+ }
+ $command = new Command();
+ return $command->params( $args );
+ }
+
+ /**
+ * Check if this class is effectively disabled via php.ini config
+ *
+ * @return bool
+ */
+ public static function isDisabled() {
+ static $disabled = null;
+
+ if ( is_null( $disabled ) ) {
+ if ( !function_exists( 'proc_open' ) ) {
+ wfDebug( "proc_open() is disabled\n" );
+ $disabled = true;
+ } else {
+ $disabled = false;
+ }
+ }
+
+ return $disabled;
+ }
+
+ /**
+ * Version of escapeshellarg() that works better on Windows.
+ *
+ * Originally, this fixed the incorrect use of single quotes on Windows
+ * (https://bugs.php.net/bug.php?id=26285) and the locale problems on Linux in
+ * PHP 5.2.6+ (bug backported to earlier distro releases of PHP).
+ *
+ * @param string $args,... strings to escape and glue together, or a single array of
+ * strings parameter
+ * @return string
+ */
+ public static function escape( /* ... */ ) {
+ $args = func_get_args();
+ if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
+ // If only one argument has been passed, and that argument is an array,
+ // treat it as a list of arguments
+ $args = reset( $args );
+ }
+
+ $first = true;
+ $retVal = '';
+ foreach ( $args as $arg ) {
+ if ( !$first ) {
+ $retVal .= ' ';
+ } else {
+ $first = false;
+ }
+
+ if ( wfIsWindows() ) {
+ // Escaping for an MSVC-style command line parser and CMD.EXE
+ // @codingStandardsIgnoreStart For long URLs
+ // Refs:
+ // * https://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
+ // * https://technet.microsoft.com/en-us/library/cc723564.aspx
+ // * T15518
+ // * CR r63214
+ // Double the backslashes before any double quotes. Escape the double quotes.
+ // @codingStandardsIgnoreEnd
+ $tokens = preg_split( '/(\\\\*")/', $arg, -1, PREG_SPLIT_DELIM_CAPTURE );
+ $arg = '';
+ $iteration = 0;
+ foreach ( $tokens as $token ) {
+ if ( $iteration % 2 == 1 ) {
+ // Delimiter, a double quote preceded by zero or more slashes
+ $arg .= str_replace( '\\', '\\\\', substr( $token, 0, -1 ) ) . '\\"';
+ } elseif ( $iteration % 4 == 2 ) {
+ // ^ in $token will be outside quotes, need to be escaped
+ $arg .= str_replace( '^', '^^', $token );
+ } else { // $iteration % 4 == 0
+ // ^ in $token will appear inside double quotes, so leave as is
+ $arg .= $token;
+ }
+ $iteration++;
+ }
+ // Double the backslashes before the end of the string, because
+ // we will soon add a quote
+ $m = [];
+ if ( preg_match( '/^(.*?)(\\\\+)$/', $arg, $m ) ) {
+ $arg = $m[1] . str_replace( '\\', '\\\\', $m[2] );
+ }
+
+ // Add surrounding quotes
+ $retVal .= '"' . $arg . '"';
+ } else {
+ $retVal .= escapeshellarg( $arg );
+ }
+ }
+ return $retVal;
+ }
+}
"Tokoabibi"
]
},
+ "tog-hidecategorization": "midimut kasabelih kakuniza",
+ "tog-numberheadings": "satangahan lunuk pabanggu",
+ "tog-watchlisthidecategorization": "midimut kasabelih kakuniza",
+ "tog-showhiddencats": "paazih madimutay a kakuniza",
"underline-always": "mahizatuay",
"underline-never": "caaytu",
+ "editfont-default": "saazih sakaluk pataayaw tu kawaw a sulyang",
"editfont-monospace": "malecad ilaed a kataci nu silit",
"editfont-sansserif": "pacabay tu telay a kataci nu sulit",
"sunday": "pilipayan",
"view": "ciwsace",
"view-foreign": "i $1 miciwsace",
"edit": "mikawaway-kalumyiti",
+ "edit-local": "itiniay buhci tu kamu nu mikawaway tu kalumyiti",
"create": "patizeng",
"create-local": "cunusen itiniay a buhci tu kamu",
"delete": "misipu",
"jumpto": "taayaw:",
"jumptonavigation": "pasubana’ tu miidangay",
"jumptosearch": "kilim",
+ "pool-queuefull": "laylay saculuk matumestu",
"pool-errorunknown": "caay kapulita ku mungangaw",
"aboutsite": "mahizaay {{SITENAME}}",
"aboutpage": "Project:mahizaay",
"viewsourceold": "ciwsace sakatizeng bangu",
"editlink": "mikawaway-kalumyiti",
"viewsourcelink": "ciwsace sakatizeng bangu",
- "editsectionhint": "mikawaway tu kalumyiti tusil: $1",
+ "editsectionhint": "mikawaway-kalumyiti tusil: $1",
"toc": "dilyikotoling",
"showtoc": "paazih",
"hidetoc": "midimut",
"site-atom-feed": "$1 a Atom saangangan",
"page-atom-feed": "$1 a Atom saangangan",
"red-link-title": "$1 (kasabelih nayai’ tu)",
+ "sort-descending": "nay tabakiay katukuh adidi kasalaylay",
"nstab-main": "kasabelih",
"nstab-user": "misaungayay a kasabelih",
"nstab-media": "myiti kasabelih",
"databaseerror-query": "palalitemuh tu kawaw: $1",
"databaseerror-function": "sakapaluwaluway: $1",
"databaseerror-error": "mungangaw: $1",
+ "readonly": "pamutektu sulu nu nasulitan",
"internalerror": "ilabuay a mungangaw",
"internalerror_info": "ilabuay a mungangaw: $1",
"badtitle": "a’cusay a pyawti",
"yourpassword": "mima:",
"userlogin-yourpassword": "mima",
"userlogin-yourpassword-ph": "suliten nu misuay a mima",
- "createacct-yourpassword-ph": "pisulitan ku mima",
+ "createacct-yourpassword-ph": "pisuliten tu mima",
"createacct-yourpasswordagain": "malucekay tu mima",
"createacct-yourpasswordagain-ph": "pisulitan ku mima kinacacay aca",
"userlogin-remembermypassword": "i balucu’en aku patalabu setyitase",
"cannotlogin-title": "la’cus patalabu",
+ "cannotloginnow-title": "la’cus patalabu ayza",
+ "cannotcreateaccount-title": "la’cusay panganganen ku canghaw",
+ "yourdomainname": "numisuay a calay-subal(wangyi):",
"login": "patalabu",
"nav-login-createaccount": "patalabu / panganganen ku canghaw",
"logout": "katahkal",
"createaccount": "panganganen ku canghaw",
"userlogin-resetpassword-link": "maliyuh ku mima kisu haw?",
"userlogin-helplink2": "patalabu miedap",
+ "createacct-emailrequired": "imyiyo(email) puenengan",
"createacct-emailoptional": "imyiyo(email) tigami (u pili’ay sasulitan)",
"createacct-email-ph": "pisulitan ku imyiyo(email) nu misu",
"createacct-reason": "mahicaay",
"createacct-submit": "panganganen ku misuay a canghaw",
"createacct-another-submit": "panganganen ku canghaw",
+ "createacct-continue-submit": "palalid patizeng tu canghaw",
"createacct-benefit-heading": "{{SITENAME}} paanin tu nisulitan tu nu tapangay mahiza kisuan.",
- "createacct-benefit-body1": "saka{{PLURAL:$1|ku mikawaway tu kalumyiti}}",
+ "createacct-benefit-body1": "saka{{PLURAL:$1|mikawaway-kalumyiti}}",
"createacct-benefit-body2": "{{PLURAL:$1| kasabelih}}",
"createacct-benefit-body3": "cay katenesay{{PLURAL:$1|paaninay tu kalusasing}}",
"loginerror": "patalabu mungangaw",
+ "createacct-error": "canghaw patizeng mungangaw",
"loginsuccesstitle": "patalabutu",
"mailmypassword": "miliyaw miteka setin mima",
"accountcreated": "panganganen tu ku canghaw",
"pt-createaccount": "panganganen ku canghaw",
"pt-userlogout": "katahkal",
"changepassword": "misumad tu mima",
+ "resetpass_header": "misumad canghaw mima",
"oldpassword": "malumannay a mima",
"newpassword": "baluhay a mima:",
"botpasswords": "kikay-tademaw a mima",
+ "botpasswords-label-appid": "kalungangan nu kikay-tademaw:",
"botpasswords-label-create": "patizeng",
"botpasswords-label-update": "misabaluhay",
"botpasswords-label-cancel": "palawpes",
"botpasswords-label-delete": "masipu",
"botpasswords-label-resetpassword": "miliyaw miteka setin mima",
+ "botpasswords-label-grants": "matatungusay a tungus:",
"botpasswords-label-grants-column": "pabeli tu kinli",
+ "resetpass_forbidden": "la’cus misumad tu mima",
+ "resetpass_forbidden-reason": "la’cus misumad tu mima: $1",
"resetpass-submit-loggedin": "misumad tu mima",
"resetpass-submit-cancel": "palawpes",
"resetpass-temp-password": "nanunuz a mima:",
"passwordreset": "miliyaw miteka setin mima",
"passwordreset-username": "misaungayay a kalungangan:",
"passwordreset-domain": "calay-subal(wangyi) kalungangan:",
+ "passwordreset-email": "imyiyo(email) puenengan:",
"changeemail-none": "(nayi’)",
+ "changeemail-submit": "misumad imyiyo(email)",
"resettokens": "miliyaw patizeng sabuhat a mima",
"resettokens-tokens": "sabuhat:",
"bold_sample": "kibetulay a sulit",
"hr_tip": "Sapisasuala (cayka yadah kawiza)",
"summary": "pecu’ nu lacul:",
"subject": "taazihan tu kawaw:",
- "minoredit": "payni mikilulay a mikawaway tu kalumyiti",
+ "minoredit": "payni mikilulay a mikawaway-kalumyiti",
"watchthis": "miazih tuyni kasabelih",
"savearticle": "misuped kasabelih",
"savechanges": "misuped tu sumad",
"newarticletext": "masasiket kisu tu nayi’ay tu kasabelih.\namipatizeng tina kasabelih, kaisasa mikawaway tu kalumyiti atilad misulit ku lacul (kahica nu kawaw piazih tu tatenga’ay [$1 misaungay a buhci tu kamu kasabelih ]).\namahica caay padeteng tayza tina kasabelih kisu haw, pihaymaw sapecec saazihay a <strong>tatiku</strong> pipenecan.",
"noarticletext": "kina kasabelih inayi’ lacul ayza,kapah tu kisu i zumaay a kasabelih [[Special:Search/{{PAGENAME}}| mikilim kina kasabelih pyawti ]]、<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mikilim sasuala nasulitan nakawawan ] caay sa[{{fullurl:{{FULLPAGENAME}}|action=edit}} patizeng kina kasabelih ]</span>.",
"noarticletext-nopermission": "tina kasabelih ayza inayi’ lacul,\nkapah tu kisu i zuma kasabelih [[Special:Search/{{PAGENAME}}| kilim kina kasabelih pyawti ]],acasa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} kilim sasuala nasulitan nakawawan ]</span>,uyzasa inayi’ ku tungus patizeng tina kasabelih.",
- "updated": "(misabaluhay)",
+ "updated": "(misabaluh tuway)",
"continue-editing": "taayaw mikawaway-kalumyiti nikatatapal",
"editing": "mikawaway tu kalumyiti $1 ayza",
"creating": "patizeng ayza $1",
"editingsection": "mikawaway tu kalumyiti ayza $1 (tusil)",
"yourtext": "numisuay a sulit",
+ "storedversion": "misupedtu tu sumad",
"yourdiff": "sasizuma",
"templatesused": "uyni kasabelih pisaungay tu isasaay {{PLURAL:$1|taazihan mitudung}}:",
"template-protected": "(madiputay)",
"permissionserrorstext-withaction": "namakay isasaay {{PLURAL:$1|mahicaay}}, inayi’ kisu situngus miteka $2 miteka tuway misaungay:",
"moveddeleted-notice": "kina kasabelih masipu tu.\nisasa nipabeli kina kasabelihay a masipu atu milimad nasulitan nakawawan, taneng miazih tu tatenga’ay.",
"edit-conflict": "mikawaway-kalumyiti sasula’cus",
+ "defaultmessagetext": "pataayaw tu kawaw palatuh a sulit",
+ "invalid-content-data": "lacul kalunasulitan la’cus",
"content-model-text": "sulit a dada’",
"content-json-empty-object": "inayi’ay a tuutuud",
"content-json-empty-array": "inayi’ay a papazengan tu nisulitan",
"rev-delundel": "misumad ku maazihay",
"rev-showdeleted": "paazih",
"revdelete-show-file-submit": "hang",
+ "revdelete-legend": "misetin paazih a kelec",
"revdelete-hide-text": "masumad nu ayaway a sulit",
+ "revdelete-hide-image": "midimut lacul nu tangan",
"revdelete-hide-comment": "pecu’ nu lacul mikawaway-kalumyiti",
+ "revdelete-radio-same": "(amana misumad)",
"revdelete-radio-set": "midimut",
"revdelete-log": "mahicaay:",
"revdel-restore": "misumad ku maazihay",
"pagehist": "kasabelih nazipa’an",
"deletedhist": "masiputu tu nazipa’an",
"revdelete-reasonotherlist": "zuma a mahicaay",
+ "revdelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti",
"revdelete-offender": "masumad nu ayaway masacudaday:",
+ "mergehistory-from": "saangangan kasabelih:",
"mergehistory-into": "pabalucu’an kasabelih:",
"mergehistory-reason": "mahicaay:",
"mergelog": "mikabu tu nasulitan nazipa’an",
"diff-multi-sameuser": "(malecaday misaungayay {{PLURAL:$1| ilaed izaw ku $1 a sumad}}inayi’ paazih)",
"searchresults": "heci nu makatepa",
"searchresults-title": "$1 heci nu makatepa",
+ "titlematches": "kasabelih satangah matatungus",
+ "textmatches": "kasabelih lacul matatungus",
"prevn": "ayaw saka {{PLURAL:$1|$1}}",
"nextn": "zikuzan saka {{PLURAL:$1|$1}}",
"prev-page": "ayaway a belih",
"prefs-skin": "nuhekalan",
"skin-preview": "pataayaway miazih",
"datedefault": "sulyang nu pataayaw tu kawaw",
+ "prefs-labs": "mitanam henay a sasahicaan",
"prefs-rc": "capi a demaiday a sumad",
"prefs-watchlist": "miazihay a piazihan tu sulit",
+ "prefs-editwatchlist": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti",
"prefs-misc": "zuma",
"prefs-resetpass": "misumad tu mima",
+ "prefs-email": "imyiyo(email) mapili’ay",
"prefs-rendering": "nuhekalan",
"saveprefs": "suped",
"prefs-editing": "mikawaway-kalumyiti",
"stub-threshold-sample-link": "maaziahan",
"stub-threshold-disabled": "mapasatezep",
"localtime": "itiniay a tuki:",
+ "servertime": "sefuci-kikay a tuki:",
"timezoneregion-africa": "Afilika",
"timezoneregion-america": "Amilikaco",
"timezoneregion-antarctica": "Nancico",
"timezoneregion-arctic": "Sasaamisan",
"timezoneregion-asia": "Yaco",
"timezoneregion-australia": "Awco",
- "timezoneregion-europe": "Oco",
+ "timezoneregion-europe": "Ouco",
"timezoneregion-indian": "Intuyang-bayu’",
"timezoneregion-pacific": "Taypinyang-bayu’",
"prefs-searchoptions": "kilim",
"prefs-displayrc": "paazih tu mapiliay",
"prefs-tokenwatchlist": "sabuhat",
"prefs-diffs": "sasizuma",
+ "userrights": "tungus nu misaungayay",
+ "userrights-lookup-user": "mipili’ misaungayay",
"userrights-groupsmember": "canan a luyaluy:",
"userrights-reason": "mahicaay:",
"userrights-expiry-current": "kakatekuhan $1",
"grouppage-bureaucrat": "{{ns:project}}:situngusay a mikawaway",
"right-read": "miasip kasabelih",
"right-edit": "kasabelih mikawaway-kalumyiti",
+ "right-createtalk": "patizeng matatengil kasabelih",
"right-move": "milimad kasabelih",
+ "right-move-categorypages": "milimad kakuniza a kasabelih",
"right-movefile": "milimad tu tangan",
"right-upload": "patapabaw tu tangan",
"right-writeapi": "pisaungay suliten API",
"right-delete": "misipu tu kasabelih",
+ "right-mergehistory": "mikabu kasabelih nazipa’an",
"grant-group-page-interaction": "kasasukamu tu kasabelih",
"grant-group-file-interaction": "kasasukamu tu myiti",
+ "grant-group-email": "pabahel imyiyo(email)",
+ "grant-group-high-volume": "mileku sayadah a saungay nu binawlan",
+ "grant-group-administration": "mileku tu mikuwanay a kawaw",
"grant-group-other": "zuma saungay nu binawlan",
"grant-createaccount": "panganganen ku canghaw",
"grant-highvolume": "masibek mikawaway-kalumyiti",
+ "grant-privateinfo": "misuped-miala madimut kasikazan a cesyun",
+ "grant-uploadfile": "patapabaw ku baluhay a tangan",
"grant-basic": "anganganay a tungus",
"newuserlogpage": "patizeng misaungayay nasulitan nakawawan",
- "action-edit": "mikawaway tu kalumyiti uyni kasabelih",
+ "action-edit": "mikawaway-kalumyiti uyni a kasabelih",
+ "action-move-categorypages": "milimad kakuniza a kasabelih",
"action-movefile": "milimad tina tangan",
+ "action-upload": "patapabaw tina tangan",
"action-deleterevision": "misipu tu masumaday nu ayaway",
+ "action-deletelogentry": "masipu nasulitan nazipa’an kasacacay",
+ "action-sendemail": "pabahel imyiyo(email)",
+ "nchanges": "$1 {{PLURAL:$1|misumad}}",
"enhancedrc-history": "nazipa’an",
"recentchanges": "capi a demaiday a sumad",
"recentchanges-legend": "capi a demiad masumaday a mapiliay",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (piazih tu tatenga’ay [[Special:NewPages| baluhayay a kasabelih]])",
"recentchanges-submit": "paazih",
"rcfilters-days-show-hours": "$1 {{PLURAL:$1|tuki}}",
+ "rcfilters-quickfilters": "suped sebseb sakaluk",
+ "rcfilters-savedqueries-defaultlabel": "suped sebseb sakaluk",
"rcfilters-savedqueries-rename": "miliyaw miteka pangangan",
"rcfilters-savedqueries-setdefault": "paceken pataayaw tu kawaw",
"rcfilters-savedqueries-new-name-label": "kalungangan",
"rcfilters-savedqueries-cancel-label": "palawpes",
- "rcfilters-filterlist-title": "kilim",
+ "rcfilters-filterlist-title": "sakacucek nu misapili’",
+ "rcfilters-highlightbutton-title": "pulita sacuzu’ a heci",
+ "rcfilters-highlightmenu-title": "mipili’ tu kilit",
+ "rcfilters-filterlist-noresults": "caykatepa sakacucek nu misapili’",
"rcfilters-filtergroup-authorship": "paaninay a masacudaday",
"rcfilters-filter-editsbyself-label": "numisuay a mikawaway-kalumyiti",
"rcfilters-filter-editsbyself-description": "numisuay a paanin",
+ "rcfilters-filter-editsbyother-label": "zumaay tatemaw a sumad",
"rcfilters-filter-user-experience-level-registered-label": "pangangan tuway",
"rcfilters-filter-user-experience-level-unregistered-label": "caay henay pangangan",
"rcfilters-filter-user-experience-level-newcomer-label": "baluhayay a misaungayay",
"rcfilters-filter-logactions-label": "saungay a nasulitan nazipa’an",
"rcfilters-filtergroup-lastRevision": "sabaluhay masumad",
"rclistfrom": "paazih nay $3 $2 baluhayay a sumad katukuh ayza",
- "rcshowhideminor": "$1 mikilulay mikawaway tu kalumyiti",
+ "rcshowhideminor": "$1 mikilulay mikawaway-kalumyiti",
"rcshowhideminor-show": "paazih",
- "rcshowhideminor-hide": "Hide",
- "rcshowhidebots": "$1 kikay a tademaw",
+ "rcshowhideminor-hide": "midimut",
+ "rcshowhidebots": "$1 kikay-tademaw",
"rcshowhidebots-show": "paazih",
"rcshowhidebots-hide": "midimut",
"rcshowhideliu": "$1 mapangangan tuway a misaungayay",
"rc_categories_any": "amahicahica tu mipili’ay",
"rc-change-size-new": "masumadtu sa u $1 {{PLURAL:$1|wyiyincu}}",
"newsectionsummary": "/* $1 */ baluhay a tusil",
+ "rc-enhanced-expand": "paazih pulita kalunasulitan",
+ "rc-enhanced-hide": "midimut pulitaay a kalunasulitan",
"recentchangeslinked": "sasuala a sumad",
"recentchangeslinked-feed": "sasuala a sumad",
"recentchangeslinked-toolbox": "sasuala a sumad",
"filereuploadsummary": "tangan misaimed:",
"filestatus": "nisanga’an niza tu tungus a kawaw setyitase:",
"filesource": "saangangan:",
+ "ignorewarnings": "sekipo sacahamin patalaw",
"uploadwarning": "patapabaw patalaw",
+ "savefile": "misuped tu tangan",
"upload-source": "saangangan a tangan",
"upload-description": "tangan sapuelac",
"upload-options": "patapabaw mapiliay",
+ "watchthisupload": "miazih tina tangan",
"upload-file-error": "ilabuay a mungangaw",
"upload-dialog-button-cancel": "palawpes",
"upload-dialog-button-back": "tatiku",
"upload-form-label-infoform-description": "patahkal",
"upload-form-label-infoform-categories": "kakuniza",
"upload-form-label-infoform-date": "demiad",
+ "uploadstash": "patapabaw ku sulu nu pisipetan",
+ "uploadstash-refresh": "misabaluhay tu tangan piazihan tu sulit",
+ "invalid-chunk-offset": "la’cus atilad kakitizaan",
"img-auth-accessdenied": "kakaian misuped-miala",
"upload-curl-error28": "patapabaw mautang",
"license": "sapabeli tu kinli a cedang",
"license-header": "sapabeli tu kinli a cedang",
"nolicense": "caay henay mipili’",
+ "license-nopreview": "(amana pataayaway miazih)",
"listfiles-delete": "misipu",
"imgfile": "tangan",
- "listfiles": "tangan-tangan misiket",
+ "listfiles": "piazihan tu sulit nu tangan",
"listfiles_thumb": "sukep tu zunga",
"listfiles_date": "demiad",
"listfiles_name": "kalungangan",
"listfiles_count": "baziyong",
"listfiles-latestversion": "ayzaay a baziyong",
"listfiles-latestversion-yes": "hang",
- "listfiles-latestversion-no": "caay",
+ "listfiles-latestversion-no": "nayi’",
"file-anchor-link": "tangan",
"filehist": "tangan nu nazipa’an",
"filehist-help": "sapecec ku demiad/tuki sapiciwsace ku tuki nina demiad a tangan baziyong",
"filehist-dimensions": "ditek",
"filehist-filesize": "hacica-tabaki ku tangan",
"filehist-comment": "pacunus sakacaay kapawan",
- "imagelinks": "tangan sadama tu kawaw",
+ "imagelinks": "sakapaluwaluway nu tangan",
"linkstoimage": "isasaay {{PLURAL:$1| kasabelih misiket |saka $1 a kasabelih misiket}}katukuh tina tangan:",
"nolinkstoimage": "nayi’ ku kasabelih masasiket katukuh tini a tangan.",
"sharedupload-desc-here": "kina tangan nay $1 hakay satu pisaungay tu zuma a cwanan.\nisasaay paazih kuyniay a tangan i [$2 tangan patahkal kasabelih] a patahkalay a lacul.",
"filedelete-comment": "mahicaay:",
"filedelete-submit": "masipu",
"filedelete-reason-otherlist": "zuma a mahicaay",
+ "filedelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti",
+ "filedelete-maintenance-title": "la’cus masipu tu tangan",
"download": "patasasa'",
+ "listredirects": "miliyaw patatuzu’ piazihan tu sulit",
+ "listduplicatedfiles": "misaliyaw tu tangan piazihan tu sulit",
"randompage": "kakibalucu’ ay a kasabelih",
+ "randomincategory": "kakibalucu’ kakuniza a kasabelih",
+ "randomincategory-legend": "kakibalucu’ kakuniza a kasabelih",
"randomincategory-submit": "mileku",
+ "randomredirect": "kakibalucu’ miliyaw patatuzu’",
"statistics": "sausi",
"statistics-header-pages": "kasabelih sausi",
"statistics-header-edits": "sausi mikawaway-kalumyiti",
"withoutinterwiki-submit": "paazih",
"nbytes": "$1 {{PLURAL:$1|wyiyincu}}",
"ncategories": "{{PLURAL:$1|kakuniza}}",
+ "nlinks": "$1 {{PLURAL:$1|masasiket}}",
"nmembers": "$1 {{PLURAL:$1|ku mamikawaw}}",
+ "nrevisions": "$1 {{PLURAL:$1|masumad nu ayaway}}",
+ "nimagelinks": "{{PLURAL:$1|kasabelih}}",
"lonelypages": "masipulu’ a kasabelih",
+ "uncategorizedtemplates": "sapi kakuniza taazihan mitudung",
+ "wantedcategories": "maydihay a kakuniza",
+ "wantedpages": "maydihay a kasabelih",
+ "wantedfiles": "maydihay a tangan",
+ "wantedtemplates": "maydihay a taazihan mitudung",
"prefixindex-submit": "paazih",
+ "shortpages": "ma’ngadisay a kasabelih",
"longpages": "mangasiway a kasabelih",
+ "deadendpages": "inayi’ masasiket kasabelih",
"protectedpages": "madiputay a kasabelih",
"protectedpages-timestamp": "demiad tatukian",
"protectedpages-page": "kasabelih",
"protectedpages-submit": "paazih tu kasabelih",
"protectedtitles": "madiputay a satangahan",
"protectedtitles-submit": "paazih tu satangahan",
+ "listusers": "misaungayay a piazihan tu sulit",
+ "listusers-desc": "pisaungay nay tabakiay katukuh adidi’ kasalaylay",
"newpages": "baluhay kasabelih",
"newpages-submit": "paazih",
+ "newpages-username": "misaungayay a kalungangan:",
"ancientpages": "samalumanay a kasabelih",
"move": "milimad",
"notargettitle": "inayi’ ku pabalucu’an",
"pager-older-n": "{{PLURAL:$1| kusa malumanay}}",
"suppress": "malangat",
+ "apihelp": "buhci tu kamu nu API",
+ "apisandbox": "bunac haku nu API",
"apisandbox-fullscreen": "micuwat tu sapat",
"apisandbox-submit": "miawaw tu milunguc",
"apisandbox-reset": "palawpis",
"apisandbox-dynamic-parameters-add-label": "micunus aazihen a sulyang:",
"apisandbox-dynamic-parameters-add-placeholder": "kalungangan nu aazihen a sulyang",
"apisandbox-deprecated-parameters": "mapasatezepay a aazihen a sulyang",
+ "apisandbox-fetch-token": "lunuk suliten mima-sacukcuk",
+ "apisandbox-submit-invalid-fields-title": "izaw tu ku langat la’cus",
"apisandbox-results": "heci",
"apisandbox-continue": "palalid",
"apisandbox-continue-clear": "palawpis",
"specialloguserlabel": "mileku-misaungayay:",
"log": "nasulitan nakawawan",
"logeventslist-submit": "paazih",
+ "all-logs-page": "sacahamin pabinawlan nasulitan nazipa’an",
"checkbox-select": "mipili’: $1",
"checkbox-all": "hamin",
"checkbox-none": "nayi’",
"allpagessubmit": "mileku",
"categories": "kakuniza",
"categories-submit": "paazih",
+ "linksearch": "ihekal masasiket mikilim",
+ "linksearch-pat": "mikilim aazihen a sulit:",
"linksearch-ns": "pangangananay a salaedan:",
"linksearch-ok": "kilim",
"listusers-submit": "paazih",
+ "listusers-noresult": "caykatepa misaungayay.",
"listusers-blocked": "(malangat tuway)",
+ "activeusers-noresult": "caykatepa misaungayay.",
"listgrouprights-group": "luyaluy",
+ "listgrouprights-rights": "kinli",
+ "listgrouprights-members": "(sakawaway piazihan tu sulit)",
+ "listgrouprights-addgroup-all": "micunus sacahamin a luyaluy",
+ "listgrouprights-removegroup-all": "misipu sacahamin luyaluy",
+ "listgrouprights-namespaceprotection-header": "pangangananay a salaedan mikelec",
"listgrants": "pabeli tu kinli",
"listgrants-rights": "kinli",
"trackingcategories": "mikilul nazikuzan kakuniza",
+ "trackingcategories-desc": "kakuniza milisimet a tatungus",
"trackingcategories-disabled": "mapasatezep kakuniza tuway",
+ "mailnologin": "inayi’ pabahel puenengan",
+ "usermaildisabled": "mapasatezep imyiyo(email)",
+ "emailusername": "misaungayay a kalungangan:",
"emailusernamesubmit": "patayzaan",
- "emailfrom": "nay:",
+ "emailfrom": "patigamiay:",
"emailto": "katukuh:",
"emailsubject": "taazihan tu kawaw:",
"emailmessage": "palatuh:",
"watchthispage": "miazih tuyni kasabelih",
"unwatch": "palawpes aazihan",
"unwatchthispage": "pahanhan miazih",
+ "notanarticle": "caay ku lacul nu kasabelih",
"watchlist-hide": "midimut",
"wlshowhideminor": "cayka yadah ku misumad",
"wlshowhidebots": "kikay a tademaw",
+ "wlshowhideliu": "napangangan a misaungayay",
"wlshowhideanons": "paceba panganganay a misaungayay",
"wlshowhidepatr": "tayza mikibi mikawaway-kalumyiti",
"wlshowhidemine": "numakuay a mikawaway-kalumyiti",
"wlshowhidecategorization": "kasabelih nu kakuniza",
"unwatching": "palawpes aazihan...",
"enotif_anon_editor": "paceba panganganay a misaungayay $1",
+ "enotif_minoredit": "payni mikilulay a mikawaway-kalumyiti",
"deletepage": "misipu tu kasabelih",
"confirm": "malucekaytu",
"delete-confirm": "misipu \"$1\"",
"rollbacklink": "panukasan",
"rollbacklinkcount": "patiku {{PLURAL:$1|mikawaway tu kalumyiti}}",
"rollbackfailed": "patiku mungangaw",
+ "sessionfailure-title": "kasasiket mungangaw",
+ "changecontentmodel": "misumad lacul tatudungen misanga’",
"changecontentmodel-title-label": "kasabelih satangahan",
"changecontentmodel-model-label": "tatudungen misanga’ nu baluhay a lacul",
"changecontentmodel-reason-label": "mahicaay:",
"protect-legend": "malucekay tu midiputay",
"protectcomment": "mahicaay:",
"protectexpiry": "kakatekuhan:",
+ "protect_expiry_invalid": "la’cusay a kakatekuhan",
+ "protect_expiry_old": "Expiration time is in the past.",
+ "protect-level-sysop": "mahasa mikuwanay a cacay",
"protect-summary-cascade": "patatusul",
"protect-expiring": "kakatekuhan $1 (UTC)",
+ "protect-expiring-local": "kakatekuhan katukuh i $1",
"protect-expiry-indefinite": "inayi’ u sungliw",
"protect-othertime": "zuma a tatukian:",
"protect-otherreason-op": "zuma a mahicaay",
+ "protect-edit-reasonlist": "midiput a mahicaay nu mikawaway-kalumyiti",
"restriction-type": "pabeli tu kinli mahasa:",
"restriction-level": "kelec kasaselal:",
"minimum-size": "makaadidi’ay a sausi",
"uctop": "(ayza)",
"month": "sazikuzay demiad nabuladan:",
"year": "sazikuzay demiad mihcaan:",
+ "sp-contributions-newbies-sub": "paanin nu baluhay a canghaw",
"sp-contributions-blocklog": "milangat tu nasulitan nakawawan",
"sp-contributions-uploads": "patapabaw",
"sp-contributions-logs": "nasulitan nakawawan",
"sp-contributions-talk": "sasukamu",
"sp-contributions-search": "mikilim tu paanin",
+ "sp-contributions-hideminor": "midimut mikilulay mikawaway-kalumyiti",
"sp-contributions-submit": "kilim",
"whatlinkshere": "masasiket katukuh uyniyay a kasabelih",
"whatlinkshere-title": "masasiket tazumaay a \"$1\" kasabelih",
"whatlinkshere-page": "Kasabelih:",
"linkshere": "isasaay a kasabelih masasiket tazuma tu <strong>[[:$1]]</strong>:",
"isredirect": "miliyaw tazuma kasabelih",
- "istemplate": "nicaliwan",
+ "istemplate": "palaculen tu kasabelih",
"isimage": "tangan-tangan misiket",
"whatlinkshere-prev": "saka {{PLURAL:$1|nuayaway}}",
"whatlinkshere-next": "saka {{PLURAL:$1|nuzikuzan}}",
"whatlinkshere-hidetrans": "$1 nicaliwan",
"whatlinkshere-hidelinks": "$1 masasiket",
"whatlinkshere-hideimages": "$1 tangan-tangan misiket",
- "whatlinkshere-filters": "kilim",
+ "whatlinkshere-filters": "sakacucek nu misapili’",
"whatlinkshere-submit": "mileku",
"block": "milangat misaungayay",
"blockip-legend": "milangat misaungayay",
"ipbexpiry": "kakatekuhan:",
"ipbreason": "mahicaay:",
+ "ipbsubmit": "milangat tina misaungayay",
"ipbother": "zuma a tatukian:",
"ipb-confirm": "malucekay tu langat",
"blockipsuccesssub": "milangat malahci",
+ "ipb-edit-dropdown": "malangat a mahicaay nu mikawaway-kalumyiti",
"ipb-blocklist-duration-left": "$1 pakawili",
"ipusubmit": "misipu tina langat",
"autoblocklist-submit": "kilim",
+ "blocklist-userblocks": "midimut canghaw malangat",
+ "blocklist-tempblocks": "midimut nanunuz malangat",
"blocklist-timestamp": "demiad tatukian",
"blocklist-target": "pabalucu’an",
"blocklist-expiry": "kakatekuhan",
+ "blocklist-by": "milangat a mikuwanay",
"blocklist-params": "milangat tu aazihen a sulyang",
"blocklist-reason": "mahicaay",
"ipblocklist-submit": "kilim",
"ipblocklist-localblock": "milangat itiniay",
"infiniteblock": "inayi’ u sungliw",
- "blocklink": "malangat",
+ "noautoblockblock": "mapasatezep lunuk milangat",
+ "emailblock": "mapasatezep imyiyo(email)",
+ "blocklink": "milangat",
"change-blocklink": "misumad tu langat",
"contribslink": "paanin",
+ "emaillink": "pabahel imyiyo(email)",
"blocklogpage": "milangat tu nasulitan nakawawan",
+ "block-log-flags-noautoblock": "mapasatezep lunuk milangat",
+ "block-log-flags-noemail": "mapasatezep imyiyo(email)",
"lockdb": "pamutek tu sulu nu kalunasulitan",
"lockbtn": "pamutek tu sulu nu kalunasulitan",
"move-page": "milimad $1",
"movelogpage": "milimad ku nasulitan nakawawan",
"movereason": "mahicaay:",
"export": "patahkal ku kasabelih",
+ "exportall": "patahkal sacahamin kasabelih",
"export-submit": "patahkal",
+ "export-download": "misuped sapatangan",
"export-templates": "yamalyilu taazihan mitudung",
"allmessages": "sisetyimo palatuh",
"allmessagesname": "kalungangan",
+ "allmessagesdefault": "pataayaw tu kawaw palatuh a sulit",
"allmessages-filter-legend": "kilim",
"allmessages-filter-unmodified": "caay henay misumad",
"allmessages-filter-all": "hamin",
"allmessages-filter-modified": "masumad tuway",
+ "allmessages-prefix": "ahizan saayaway a sulit mikilim:",
"allmessages-language": "kamu:",
"allmessages-filter-submit": "mileku",
"allmessages-filter-translate": "mibelih",
"thumbnail-more": "patabaki(micuwat)",
"filemissing": "tangan mahedaw",
"import": "pacumuden kasabelih",
+ "import-interwiki-sourcepage": "saangangan kasabelih:",
+ "import-interwiki-templates": "yamalyilu sacahamin taazihan mitudung",
"import-interwiki-submit": "pacumud",
"import-upload-filename": "kalungangan nu tangan:",
"import-comment": "pacunus sakacaay kapawan:",
+ "import-revision-count": "$1 {{PLURAL:$1|masumad nu ayaway}}",
+ "importsuccess": "pahezek tuway pacumud!",
"importlogpage": "pacumuden nasulitan nazipa’an",
"tooltip-pt-userpage": "{{GENDER:|misaungayay nu misu}} kasabelih",
"tooltip-pt-mytalk": "{{GENDER:|misuay }}sasukamu a kasabelih",
"tooltip-pt-logout": "katahkal",
"tooltip-pt-createaccount": "taneng kami pauuh kisuan panganganen tu cacay canghaw atu patalabu, anu caay ku tabakiay a pisaungay.",
"tooltip-ca-talk": "matatengil tu mahizaay lacul nu kasabelih",
- "tooltip-ca-edit": "mikawaway tu kalumyiti uyni kasabelih",
+ "tooltip-ca-edit": "mikawaway-kalumyiti uyni a kasabelih",
"tooltip-ca-viewsource": "uyni kasabelih madiputay tuway.\nkapah kisu miciwsace tuyni kasabelih sakatizeng bangu",
"tooltip-ca-history": "uyini kasabelih nasawniay a sumad",
"tooltip-ca-move": "milimad tina kasabelih",
"tooltip-ca-nstab-template": "ciwsace taazihan mitudung",
"tooltip-ca-nstab-category": "ciwsace kakuniza a kasabelih",
"tooltip-save": "misuped misuay a pisumad",
+ "tooltip-publish": "patiyak tu sumad nu misu",
"tooltip-preview": "kay iayaw nu pisuped miazih tu nu misuay nisumad.",
"tooltip-diff": "paazih hica sa kisu labuay a nisumadan",
"tooltip-watch": "paynien kasabelih micunus misuay cyinse piazihan tu sulit",
"tooltip-upload": "miteka patapabaw",
"tooltip-rollback": "sapecec \"patiku\" misiket, kapah patiku tayza nuayawanay a paanin tu nisulitan tina kasabelih mikawaway tu kalumyiti",
"tooltip-undo": "\"patiku\" kapah tu patiku tuyni mikawaway tu kalumyiti payni pataayaway miazih muse miwawah mikawaway tu kalumyiti aazihan cudad, saka caay cayaw nu labu micunus mahicaay.",
+ "tooltip-preferences-save": "pisuped tu setin nu kanamuhan",
"tooltip-summary": "kapisulitan apuyu’ay a pecu’ nu lacul",
"others": "zuma",
"creditspage": "kasabelih kasakumi nu misayingaay",
"pageinfo-header-properties": "susin nu kasabelih",
"pageinfo-display-title": "paazih tu satangahan",
"pageinfo-article-id": "kasabelih ID",
+ "pageinfo-language": "kasabelih lacul a kamu",
"pageinfo-language-change": "misumad",
+ "pageinfo-content-model": "kasabelih a lacul tatudungen misanga’",
"pageinfo-content-model-change": "misumad",
"pageinfo-robot-noindex": "amana",
+ "pageinfo-watchers": "kasabelih miazihay a nikayadah",
"pageinfo-firstuser": "kasabelih patizengay",
+ "pageinfo-firsttime": "patizeng demiad nu kasabelih",
"pageinfo-lastuser": "capiay a mikawaway-kalumyiti",
+ "pageinfo-lasttime": "capiay a demiad nu mikawaway-kalumyiti",
+ "pageinfo-edits": "pulung nikayadah nu mikawaway-kalumyiti",
"pageinfo-authors": "papina nu masacudaday",
"pageinfo-recent-authors": "capiay masacudaday a nikayadah",
"pageinfo-toolboxlink": "kasabelih cesyun",
"pageinfo-redirectsto-info": "katinengan",
"pageinfo-contentpage-yes": "hang",
"pageinfo-protect-cascading-yes": "hang",
+ "pageinfo-protect-cascading-from": "patatusul midiput namakay",
"pageinfo-category-info": "kakuniza a cesyun",
"pageinfo-category-total": "papina nu sakawaway",
"pageinfo-category-pages": "kasabelih nikayadah",
"pageinfo-category-subcats": "sailuc-kasasizuma nikayadah",
"pageinfo-category-files": "tangan nikayadah",
+ "markaspatrolleddiff": "silusi natayza mikibi tuway",
+ "markedaspatrolled": "silusi natayza mikibi tuway",
"patrol-log-page": "tayza mikibi nasulitan nazipa’an",
"log-show-hide-patrol": "$1 tayza mikibi nasulitan nazipa’an",
"log-show-hide-tag": "$1 aazihen a paya nasulitan nazipa’an",
"confirm-markpatrolled-button": "malucekay",
"previousdiff": "← malumanay a mikawaway tu kalumyiti",
"nextdiff": "baluhayay mikawaway tu kalumyit →",
+ "thumbsize": "sukep tu zunga hacica-tabaki:",
"widthheightpage": "$1 × $2, $3 {{PLURAL:$3|ku kasabelih}}",
"file-info-size": "$1 × $2 syangsu, hacica ku tabaki nu tangan: $3, MIME kakuniza: $4",
"file-info-size-pages": "$1 × $2 syangsu, hacica ku tabaki nu tangan:$3,MIME kakuniza: $4, $5 {{PLURAL:$5|ku kasabelih}}",
"file-info-png-frames": "$1 {{PLURAL:$1|misabacu}}",
"newimages": "baluhay tangan a sulu nu zunga",
"newimages-legend": "kilim",
+ "noimages": "inayi’ amahicahica tu zunga.",
"gallery-slideshow-toggle": "ketun mibalic sukep tu zunga",
"ilsubmit": "kilim",
"bydate": "ahizan tu demiad",
"days": "$1 {{PLURAL:$1|a demiad}}",
"ago": "ayaw nu $1",
"just-now": "nasawni",
+ "monday-at": "sakacacay a demiad nu lipay i$1",
+ "friday-at": "sakalima a demied nu lipay i $1",
+ "saturday-at": "sakaenem a demiad nu lipay i $1",
"metadata": "pulita tu kalunasulitan",
"metadata-help": "uyni tangan labuay amin yamalyilu zuma cesyun, uyni a cesyun akay nay suewyi sasasing asaca sapisekyin i tapang asaca suwyihwa saayaw katukuh pahzekan a nakawawan mapacunusay. anu nay tangan saayaway setyitase masumadtu, hatizaay pulita kalunasulitan akay la’cus mileku mabetil a misumad tu tangan.",
"metadata-fields": "i tini palatuh patahkal i labuay a EXIF pulita tu kalunasulitanay a kakitizaan, yamalyilu i zunga paazih kasabelih, sapipulita tu cudad nu nasulitan malepi’ paazih palatuh.\nzumaay a pulita tu cudad pataayaw tu kawaw midimut.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
"exif-imagewidth": "ahebal",
- "exif-imagelength": "u takalaw",
+ "exif-imagelength": "takalaw sulyang",
"exif-bitspersample": "paysyangsuay a wyiyin",
"exif-compression": "piepian mipecec a sasakawawen",
"exif-photometricinterpretation": "pacamel-palacul tu syangsu",
"exif-planarconfiguration": "kalunasulitan misilsil",
"exif-xresolution": "sasuala katingalaw",
"exif-yresolution": "mitelekay katingalaw",
+ "exif-stripoffsets": "iga kalunasulitan kakitizaan",
"exif-rowsperstrip": "cacay ku kaus papina ku tusil",
"exif-whitepoint": "sangelacay hacica-kulit",
"exif-primarychromaticities": "sausi sulyang nu kulit",
"exif-referenceblackwhite": "umeniay-sangelacay miazih tu tatenga’ay nikayadah",
"exif-datetime": "tangan misumaday a demiad atu tuki",
"exif-imagedescription": "satangahan nu iga",
- "exif-make": "sasasing misanga’ay tu kalutuud",
- "exif-model": "sasasing silosi nu nisanga’an",
+ "exif-make": "sasasing-kikay misanga’ tu kalutuuday",
+ "exif-model": "sasasing nu nisanga’an a banggu",
"exif-software": "pisaungay zwanti",
"exif-artist": "masacudaday",
"exif-copyright": "nizaay nisanga’an tu tungus a kawaw",
"exif-exifversion": "Exif baziyong / sapad",
"exif-colorspace": "kalukulit salaedan",
"exif-componentsconfiguration": "paysyangsu yamalyilu",
+ "exif-compressedbitsperpixel": "iga piepian mipecec a muse",
"exif-pixelxdimension": "zunga nu hacica-ahebal",
"exif-pixelydimension": "zunga nu hacica-takalaw",
+ "exif-usercomment": "misaungayay a buhci tu kamu",
"exif-datetimeoriginal": "kalunasulitan masangaay’ a demiad atu tuki",
"exif-datetimedigitized": "suwyihwaay a demiad atu tuki",
"exif-exposuretime": "mapaedil a lawad",
"exif-exposureprogram": "mapaedil a muse",
+ "exif-spectralsensitivity": "edil-selal saahemi’han",
+ "exif-isospeedratings": "ISO suli",
+ "exif-maxaperturevalue": "satabakiay a likat-mulu i lala’ nu kitakit",
"exif-subjectdistance": "ilaed nu satangahan",
"exif-meteringmode": "miditek tu edil a muse",
"exif-lightsource": "katahkalan nu likat",
"exif-sensingmethod": "mise nu nikasumad nay edil",
"exif-filesource": "saangangan nu tangan",
"exif-scenetype": "makaazihay nikalahizaan",
+ "exif-customrendered": "pakuniza misanga’ iga",
"exif-whitebalance": "sapalalen nu salengacay",
+ "exif-scenecapturetype": "makaazihay masasing nikalahizaan",
"exif-gaincontrol": "makaazihay misimaw",
"exif-contrast": "e-contrast",
"exif-saturation": "matumesay a sulyang",
+ "exif-devicesettingdescription": "sakaluk setin sapuelac",
"exif-gpslatituderef": "pyiwyi asaca nanwyi",
"exif-gpslongituderef": "tongcing asaca sicing",
"exif-gpsaltituderef": "nutakalaw namakay bayu’ miazih tu tatenga’ay a sulyang",
+ "exif-gpssatellites": "sapiditekay a zizuisi",
"exif-gpsstatus": "pizawis sakaluk setyitase",
"exif-gpsmeasuremode": "miditek a muse",
"exif-gpsdop": "miditek a tatungus",
"exif-gpsspeedref": "saduba’ kalamkam a sacacaycacay",
"exif-gpsdestlatitude": "pabalucu’an a wyitu",
"exif-gpsdestlongituderef": "pabalucu’an a cintu",
+ "exif-gpsdatestamp": "GPS a demiad",
"exif-keywords": "aazihen dulit",
+ "exif-worldregioncreated": "zunga masasing a kakitizaan",
+ "exif-provinceorstatecreated": "yakuwanan a sasing",
+ "exif-citycreated": "yatukay a sasing",
"exif-countrydest": "paazih tu kanatal",
+ "exif-countrycodedest": "paazih kanatal a kodo",
"exif-provinceorstatedest": "paazih seng asaca cou",
"exif-citydest": "paazihay a tukay",
"exif-objectname": "sapuyuay a ngangan",
"exif-specialinstructions": "sazumaay buhci tu kamu",
"exif-headline": "satangahan",
+ "exif-credit": "misanga’/nipabeli’ay",
"exif-source": "saangangan",
+ "exif-editstatus": "zunga setyitase nu binawlan sapuelac",
"exif-urgency": "hacica ku kalah",
"exif-locationdest": "patahkal kahicelaan",
+ "exif-locationdestcode": "kakitizaan kodo sapuelac",
"exif-contact": "patakusan a cesyun",
"exif-writer": "misacudaday",
"exif-languagecode": "kamu",
+ "exif-iimversion": "IIM baziyong",
"exif-iimcategory": "kakuniza",
"exif-iimsupplementalcategory": "micunus kakuniza",
"exif-datetimereleased": "patiyak i",
"exif-serialnumber": "sasasing salaylay a banggu",
"exif-cameraownername": "sasasing nizaay",
"exif-label": "aazihen paya",
+ "exif-rightscertificate": "nisanga’an niza tu tungus a kawaw nu makuwanay a pincen",
"exif-copyrighted": "nisanga’an niza tu tungus a kawaw setyitase",
"exif-usageterms": "mamaala a cedang",
+ "exif-webstatement": "nabalucu'an nu i telay nisanga’an niza tu tungus a kawaw",
+ "exif-morepermissionsurl": "paliyuh pabeli tu kinli a cesyun",
"exif-disclaimer": "caay pimuku tu sikining",
"exif-contentwarning": "lacul mipatalaw",
"exif-intellectualgenre": "kasacacay nikalahizaan",
"exif-event": "sapuelac tu sikikawaw",
"exif-organisationinimage": "sapuelac nu mikumi",
"exif-personinimage": "sapuelac tu tademaw",
+ "exif-originalimageheight": "takalaway nu caayhen masait",
"exif-compression-1": "caay henay piepian mipecec",
"exif-copyrighted-true": "madiput nu nisanga’an niza tu tungus a kawaw",
+ "exif-copyrighted-false": "caay kapulita nu nisanga’an niza tu tungus a kawaw setyitase",
"exif-unknowndate": "caay kapulita ku demiad",
"exif-orientation-1": "tatungus",
"exif-orientation-2": "mabelih tu zazay",
"exif-orientation-4": "mabelih tu mitelekay",
"exif-planarconfiguration-1": "pu’nel-kizemu a kese",
"exif-planarconfiguration-2": "kimpi’ a kese",
+ "exif-colorspace-65535": "caay henay masitudung ku kulit",
"exif-componentsconfiguration-0": "inayi’",
"exif-exposureprogram-0": "caay henay misaheci",
"exif-exposureprogram-1": "palima",
"exif-exposureprogram-3": "likat maluayaw",
"exif-exposureprogram-4": "kiyata maluayaw",
"exif-subjectdistance-value": "$1 mi",
+ "exif-meteringmode-2": "pikuwanan pacunus lalet",
+ "exif-meteringmode-5": "muse",
"exif-meteringmode-255": "zuma",
- "exif-lightsource-1": "edil",
+ "exif-lightsource-1": "likat",
"exif-lightsource-2": "inkwang a tinghuy",
"exif-lightsource-4": "sabelabelatay a tinghuy",
"exif-lightsource-9": "cilalah a demiad",
"exif-lightsource-10": "kenutan",
"exif-lightsource-11": "iduutay",
"exif-lightsource-255": "zuma katahkalan nu likat",
+ "exif-flash-fired-0": "sabelabelatay a tinghui caay henay miwawah",
+ "exif-flash-fired-1": "sabelabelatay a tinghui miwawah tuway",
"exif-flash-mode-3": "lunuk muse",
+ "exif-flash-function-1": "inayi’ sasahicaan nu sabelabelatay a tinghui",
"exif-flash-redeye-1": "muse nu kasatezep tu sumanahay a mata",
"exif-focalplaneresolutionunit-2": "incun",
+ "exif-sensingmethod-1": "caay henay misaheci",
"exif-filesource-3": "sulyangay a sasasing",
+ "exif-scenetype-1": "besuc han misasingay a zunga",
"exif-customrendered-0": "habutuday a laylay",
"exif-customrendered-1": "pakuniza misanga’ay a laylay",
"exif-exposuremode-0": "lunuk mapaedil",
"exif-exposuremode-1": "lima-saungay mapaedil",
+ "exif-exposuremode-2": "lunuk laup mapacedil",
"exif-whitebalance-0": "lunuk sapalalen nu salengacay",
+ "exif-whitebalance-1": "lima-saungay sapalalen nu salengacay",
"exif-scenecapturetype-0": "tatungus",
"exif-scenecapturetype-1": "makaazihay",
"exif-scenecapturetype-2": "sassing nu tademaw",
"exif-sharpness-0": "tatungus",
"exif-sharpness-1": "pu’nel",
"exif-sharpness-2": "takalaw",
+ "exif-subjectdistancerange-1": "ciyuci",
"exif-subjectdistancerange-2": "pakatepalay a azih",
"exif-subjectdistancerange-3": "pakabatatay a azih",
"exif-gpslatitude-n": "pyiwyi",
"exif-iimcategory-hum": "u zazan nu tademaw",
"exif-iimcategory-lab": "makawaw",
"exif-iimcategory-lif": "nikauzip atu pahanhanan",
+ "exif-iimcategory-pol": "cengcey",
"exif-iimcategory-rel": "papazaan atu papayzaan",
+ "exif-iimcategory-sci": "kagak atu keci",
"exif-iimcategory-soi": "binawlan a munday",
"exif-iimcategory-spo": "wundukay",
"exif-iimcategory-wea": "demidad",
"exif-urgency-normal": "tatungus ($1)",
+ "exif-urgency-high": "takalaw ($1)",
"namespacesall": "hamin",
"monthsall": "hamin",
"recreate": "miliyaw miteka patizeng",
"quotation-marks": "\"$1\"",
"imgmultipagenext": "zikuzan a belih →",
"imgmultigo": "mileku!",
+ "img-lang-default": "(pataayaw tu kawaw a kamu)",
"img-lang-go": "mileku",
"ascending_abbrev": "masalaylay adidi’ay katukuh tabakiay",
"descending_abbrev": "masalaylay tabakiay katukuh adidi’ay",
"table_pager_limit_submit": "mileku",
"table_pager_empty": "inayi’ ku heci",
"autosumm-blank": "nayi’ ku cacan a kasabelih",
+ "autosumm-newblank": "patizeng nayi’ ku cacan a kasabelih",
+ "watchlistedit-normal-title": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti",
"watchlistedit-normal-submit": "misipu satangahan",
+ "watchlistedit-clear-title": "misipu miazihay a piazihan tu sulit",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| sasukamu ]])",
"timezone-local": "itizaay",
"version": "baziyong",
+ "version-skins": "malacul tu nuhekalan",
"version-specialpages": "sazumaay a kasabelih",
"version-parserhooks": "kulawid nu saheciay sakaluk",
"version-other": "zuma",
"version-ext-colheader-description": "patahkal",
"version-ext-colheader-credits": "masacudaday",
"version-poweredby-others": "zuma",
+ "version-software": "malacul tu ku zwanti",
"version-software-product": "nasang’ay a tuutuud",
"version-software-version": "baziyong",
+ "version-entrypoints": "sacumud URL",
"version-entrypoints-header-url": "URL",
"version-libraries-library": "sulu nu cengse",
"version-libraries-version": "baziyong",
"redirect-page": "kasabelih ID",
"redirect-file": "kalungangan nu tangan",
"redirect-logid": "nasulitan nazipa’an ID",
+ "redirect-not-exists": "caykatepa ku sulyang",
+ "fileduplicatesearch": "mikilim masaliyaw a tangan",
"fileduplicatesearch-filename": "kalungangan nu tangan:",
"fileduplicatesearch-submit": "kilim",
"specialpages": "sazumaay a kasabelih",
"specialpages-group-maintenance": "aazihen a cudad nu midiputay",
+ "specialpages-group-other": "sazumaay cidek a kasabelih",
"specialpages-group-login": "patalabu / panganganen ku canghaw",
"specialpages-group-highuse": "sawsawniay a kasabelih",
"specialpages-group-pages": "piazihan tu sulit nu kasabelih",
"specialpages-group-pagetools": "kasabelih sakaluk",
"specialpages-group-wiki": "kalunasulitan atu sakaluk",
+ "specialpages-group-developer": "saayaway miteka a misakakawaway sakaluk",
"blankpage": "salengacay a kasabelih",
"tag-filter": "[[Special:Tags|aazihen paya]] kilim:",
"tag-filter-submit": "kilim",
"tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|aazihen paya’}}]]: $2)",
+ "tag-mw-contentmodelchange": "lacul tatudungen misanga’ misumad",
"tags-tag": "aazihen a paya kalungangan",
"tags-source-header": "saangangan",
"tags-actions-header": "saungay",
"tags-delete": "masipu",
"tags-activate": "miteka’",
"tags-deactivate": "mapasatezep",
+ "tags-hitcount": "$1 {{PLURAL:$1|misumad}}",
"tags-create-heading": "patizeng baluhay aazihen a paya",
"tags-create-tag-name": "aazihen a paya kalungangan:",
"tags-create-reason": "mahicaay:",
"tags-activate-submit": "miteka’",
"tags-deactivate-title": "mapasatezep tu aazihen a paya",
"tags-deactivate-reason": "mahicaay:",
+ "tags-edit-title": "aazihen a paya mikawaway-kalumyiti",
"tags-edit-manage-link": "aazihen a paya nu kuwan",
"tags-edit-new-tags": "baluhay aazihen a paya:",
+ "tags-edit-chosen-placeholder": "mipili’ hatizaay aazihen a paya",
"tags-edit-reason": "mahicaay:",
"comparepages": "sasutili’ay a kasabelih",
"compare-page1": "sakacacay a belih",
"logentry-delete-delete": "$1 {{GENDER:$2|masiputu}} kasabelih $3",
"restore-count-files": "{{PLURAL:$1|1 tangan}}",
"revdelete-content-hid": "madimut tu ku lacul",
+ "revdelete-content-unhid": "palawpes midimut tu lacul",
"logentry-move-move": "$1 {{GENDER:$2|milimad tuway}} kasabelih $3 katukuh $4",
"logentry-newusers-create": "{{GENDER:$2|patizeng}} misaungayay canghaw tuway $1",
"logentry-upload-upload": "$1 {{GENDER:$2|masayacay tuway}} $3",
"feedback-back": "tatiku",
"feedback-cancel": "palawpes",
"feedback-close": "pahezek",
+ "feedback-external-bug-report-button": "munday nu patubeli",
"feedback-message": "palatuh:",
"feedback-subject": "taazihan tu kawaw:",
"feedback-submit": "patayzaan",
"duration-centuries": "$1 {{PLURAL:$1|lasubu a mihca}}",
"duration-millennia": "$1 {{PLURAL:$1|malebut a mihca}}",
"limitreport-cputime-value": "$1 {{PLURAL:$1|a beti}}",
+ "limitreport-walltime": "tatengaay pisaungay a lawad-tuki",
"limitreport-walltime-value": "$1 {{PLURAL:$1|a beti}}",
+ "limitreport-expansiondepth": "satakalaw micuwat ilabu",
"expandtemplates": "micuwat tu taazihan a mitudung",
"expand_templates_input": "suliten:",
"expand_templates_output": "heci",
"expand_templates_ok": "malucekay",
"expand_templates_remove_comments": "misipu buhci tu kamu",
"expand_templates_preview": "pataayaway miazih",
+ "pagelanguage": "misumad kasabelih a kamu",
"pagelang-language": "kamu",
"pagelang-select-lang": "mipili’ tu kamu",
"pagelang-reason": "mahicaay:",
"pagelang-submit": "patayzaan",
+ "right-pagelang": "misumad kasabelih a kamu",
+ "action-pagelang": "misumad kasabelih a kamu",
+ "log-name-pagelang": "kamu misumad a nasulitan nazipa’an",
+ "mediastatistics": "myiti sausi cesyun",
+ "mediastatistics-table-extensions": "kapah saungay a mikilulay a ngangan nu tangan",
"mediastatistics-table-count": "tangan nikayadah",
"mediastatistics-table-totalbytes": "pulung sausi nu hacica-tabaki",
"mediastatistics-header-bitmap": "pacepacekan a zunga",
"mediastatistics-header-archive": "piepian mipecec tuway a kese",
"mediastatistics-header-total": "sacahamin a tangan",
"json-error-syntax": "sakilul nu kamu mungangaw",
+ "headline-anchor-title": "misasiket tina tusil",
"special-characters-group-latin": "u sulit nu Latin",
"special-characters-group-latinextended": "lalad tu sulit nu Lating",
"special-characters-group-ipa": "nu kanatalay a silusi nu ngiha’",
"special-characters-group-symbols": "sawantan",
"special-characters-group-greek": "u sulit nu Sila",
+ "special-characters-group-greekextended": "lalad tu sulit-bacu nu Sila",
"special-characters-group-cyrillic": "u sulit nu Selafu",
"special-characters-group-arabic": "u sulit nu Alapu",
+ "special-characters-group-arabicextended": "lalad tu sulit nu Alapo",
"special-characters-group-hebrew": "u kamu nu Hipulay",
"special-characters-group-bangla": "u sulit nu Muncyala",
"special-characters-group-tamil": "u sulit nu tanmil",
"mw-widgets-mediasearch-noresults": "caykatepa ku heci.",
"mw-widgets-titleinput-description-new-page": "kasabelih nayai’ tu",
"mw-widgets-categoryselector-add-category-placeholder": "micunus tu kakuniza...",
- "mw-widgets-usersmultiselect-placeholder": "ngalepen tu cunus...",
+ "mw-widgets-usersmultiselect-placeholder": "micunus sangaleben...",
"randomrootpage": "kakibalucu’ lamitay kasabelih",
+ "log-action-filter-block": "milangat nikalahizaan:",
+ "log-action-filter-delete": "misipu nikalahizaan:",
+ "log-action-filter-import": "pacumud nikalahizaan:",
+ "log-action-filter-move": "milimad nikalahizaan:",
+ "log-action-filter-patrol": "tayza mikibi nikalahizaan:",
+ "log-action-filter-protect": "midiput nikalahizaan:",
+ "log-action-filter-upload": "nikalahizaan nu patapabaw:",
"log-action-filter-all": "hamin",
- "log-action-filter-block-block": "malangat",
+ "log-action-filter-block-block": "milangat",
"log-action-filter-block-reblock": "milangat tu sapisumad",
"log-action-filter-delete-delete": "misipu kasabelih",
+ "log-action-filter-delete-delete_redir": "miliyaw patatuzu’ mipakutay tu sulit",
+ "log-action-filter-delete-restore": "kasabelih milawpes tu sipu",
"log-action-filter-delete-event": "misipu nasulitan nazipa’an",
"log-action-filter-delete-revision": "misumad nu ayaway a sipu",
"log-action-filter-managetags-create": "patizeng aazihen paya",
"log-action-filter-protect-move_prot": "midiputay milimad tuway",
"log-action-filter-rights-rights": "lima-saungay misumad",
"log-action-filter-rights-autopromote": "lunuk misumad",
+ "log-action-filter-suppress-event": "nasulitan nazipa’an satezep paazih",
+ "log-action-filter-suppress-revision": "masumad nu ayaway satezep paazih",
+ "log-action-filter-suppress-delete": "kasabelih satezep paazih",
"log-action-filter-upload-upload": "baluhay a patapabaw",
"log-action-filter-upload-overwrite": "miliyaw patapabaw",
+ "authmanager-authplugin-setpass-failed-title": "misumad mima mungangaw",
"authmanager-authplugin-setpass-bad-domain": "la’cusay a calay-subal(wangyi).",
"authmanager-email-label": "imyiyo(email)",
+ "authmanager-email-help": "imyiyo(email) puenengan",
"authmanager-realname-label": "tatengaay a ngangan",
"authmanager-provider-temporarypassword": "nanunuz a mima",
+ "authprovider-confirmlink-request-label": "manakanca masasiket tu canghaw",
"authprovider-resetpass-skip-label": "sekipo",
"authform-wrongtoken": "mima-sacukcuk mungangaw",
+ "specialpage-securitylevel-not-allowed-title": "amana",
"cannotauth-not-allowed-title": "caykataneng ku tungus",
"changecredentials": "misumad tu sapangangan",
"removecredentials": "misipu sapangangan",
"credentialsform-account": "canghaw kalungangan:",
"linkaccounts": "masasiket tu canghaw",
"linkaccounts-submit": "masasiket tu canghaw",
+ "revid": "masumad nu ayaway $1",
"pageid": "kasabelih ID $1"
}
"credentialsform-account": "Назва рахунку:",
"cannotlink-no-provider-title": "Няма рахункаў для далучэньня",
"cannotlink-no-provider": "Няма рахункаў для далучэньня.",
- "linkaccounts": "Далучэньне рахункаў"
+ "linkaccounts": "Далучэньне рахункаў",
+ "linkaccounts-success-text": "Рахунак быў далучаны."
}
"rcfilters-filter-watchlistactivity-unseen-label": "تغییرات دیده نشده",
"rcfilters-filter-watchlistactivity-unseen-description": "تغییرات در صفحاتی که شما تغییرات رخ داده در آنها را مشاهده نکردید.",
"rcfilters-filter-watchlistactivity-seen-label": "تغییرات دیدهشده",
+ "rcfilters-filter-watchlistactivity-seen-description": "تغییرات صفحاتی که شما بازدید کردید از زمانی که تغییرات اعمال شدهاست.",
"rcfilters-filtergroup-changetype": "نوع تغییرات",
"rcfilters-filter-pageedits-label": "ویرایشهای صفحه",
"rcfilters-filter-pageedits-description": "ویرایشهای محتوای ویکی، بحثها، توضیحات رده...",
"rcfilters-liveupdates-button-title-off": "نمایش تغییرات جدید همچنان که رخ میدهند",
"rcfilters-watchlist-markseen-button": "نشانهگذاری تمام تغییرات بهعنوان خواندهشده",
"rcfilters-watchlist-edit-watchlist-button": "ویرایش فهرست صفحههای پیگیریهایتان",
+ "rcfilters-watchlist-showupdated": "تغییرات صفحاتی که شما بازدید نکردید از زمانی که تغییرات رخ داده به صورت <strong>پررنگ</strong>، با نشانگر توپر.",
"rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شدهاست|نشان داده شدهاند}}).",
"rclistfromreset": "از نو کردن انتخاب تاریخ",
"rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2",
"uploadlogpage": "יומן העלאות",
"uploadlogpagetext": "להלן רשימה של העלאות הקבצים האחרונות שבוצעו.\nראו את [[Special:NewFiles|גלריית הקבצים החדשים]] להצגה ויזואלית שלהם.",
"filename": "שם הקובץ",
- "filedesc": "<div style=\"direction: rtl;\">תקציר</div>",
+ "filedesc": "תקציר",
"fileuploadsummary": "תיאור:",
"filereuploadsummary": "השינויים בקובץ:",
"filestatus": "מעמד זכויות יוצרים:",
"upload-curl-error28": "הסתיים זמן ההמתנה להעלאה",
"upload-curl-error28-text": "לאתר לקח זמן רב מדי לענות. אנא בדקו שהאתר זמין, המתינו מעט ונסו שוב. ייתכן שתרצו לנסות בזמן פחות עמוס.",
"license": "רישיון:",
- "license-header": "<div style=\"direction: rtl;\">רישיון</div>",
+ "license-header": "רישיון",
"nolicense": "אין",
"licenses-edit": "עריכת אפשרויות רישיון",
"license-nopreview": "(תצוגה מקדימה לא זמינה)",
"createacct-yourpassword-ph": "Unesite zaporku",
"yourpasswordagain": "Ponovno upišite zaporku",
"createacct-yourpasswordagain": "Potvrdi zaporku",
- "createacct-yourpasswordagain-ph": "Unesite zaporku ponovno",
+ "createacct-yourpasswordagain-ph": "Unesite zaporku ponovo",
"userlogin-remembermypassword": "Zapamti me",
"userlogin-signwithsecure": "Rabi sigurnu vezu",
"cannotlogin-title": "Prijava nije moguća",
"notloggedin": "Niste prijavljeni",
"userlogin-noaccount": "Nemate suradnički račun?",
"userlogin-joinproject": "Pridružite se {{SITENAME}}",
- "createaccount": "Otvori novi suradnički račun",
+ "createaccount": "Stvori račun",
"userlogin-resetpassword-link": "Zaboravili ste zaporku?",
"userlogin-helplink2": "Pomoć pri prijavi",
"userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nRabite donji obrazac da biste se prijavili kao drugi suradnik.",
"createaccountmail-help": "Može se rabiti da se nekome stvori račun bez da se sazna zaporka.",
"createacct-realname": "Stvarno ime (neobvezatno)",
"createacct-reason": "Razlog",
- "createacct-reason-ph": "Zašto stvarate drugi račun",
+ "createacct-reason-ph": "Zašto stvarate još jedan račun?",
"createacct-reason-help": "Poruka koja se prikazuje u evidenciji stvaranja suradničkih računa",
"createacct-submit": "Stvorite svoj suradnički račun",
"createacct-another-submit": "Otvori račun",
"createacct-benefit-heading": "{{SITENAME}} su stvorili ljudi poput Vas.",
"createacct-benefit-body1": "{{PLURAL:$1|uređivanje|uređivanja}}",
"createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}",
- "createacct-benefit-body3": "{{PLURAL:$1|nedavni suradnik|nedavnih suradnika}}",
+ "createacct-benefit-body3": "{{PLURAL:$1|nedavni suradnik|nedavna suradnika|nedavnih suradnika}}",
"badretype": "Unesene zaporke nisu istovjetne.",
"usernameinprogress": "Stvaranje računa za ovo suradničko ime upravo je u tijeku.\nMolimo, pričekajte.",
"userexists": "Uneseno suradničko ime već je u upotrebi.\nUnesite neko drugo ime.",
"recentchanges-submit": "Megjelenítés",
"rcfilters-tag-remove": "$1 eltávolítása",
"rcfilters-legend-heading": "<strong>Rövidítések listája:</strong>",
+ "rcfilters-other-review-tools": "<strong>Egyéb hasznos hivatkozások</strong>",
+ "rcfilters-group-results-by-page": "Csoportosítás eredményei lapok szerint",
"rcfilters-grouping-title": "Csoportosítás",
"rcfilters-activefilters": "Aktív szűrők",
"rcfilters-advancedfilters": "Haladó szűrők",
"rcfilters-highlighted-filters-list": "Kiemelve: $1",
"rcfilters-quickfilters": "Mentett szűrők",
"rcfilters-quickfilters-placeholder-title": "Nincs mentett hivatkozás",
+ "rcfilters-quickfilters-placeholder-description": "Hogy elmentsd szűrőid beállításait és később újra használhasd őket, kattints a könyvjelző ikonra az „aktív szűrők” mezőben, feljebb.",
"rcfilters-savedqueries-defaultlabel": "Mentett szűrők",
"rcfilters-savedqueries-rename": "Átnevezés",
"rcfilters-savedqueries-setdefault": "Beállítás alapértelmezettként",
"rcfilters-empty-filter": "Nincs aktív szűrő. Minden közreműködés látható.",
"rcfilters-filterlist-title": "Szűrők",
"rcfilters-filterlist-whatsthis": "Hogy működnek?",
- "rcfilters-filterlist-feedbacklink": "Visszajelzés küldése az új (beta) szűrőkről",
+ "rcfilters-filterlist-feedbacklink": "Mond el nekünk, mit gondolsz az (új) szűrőkről",
"rcfilters-highlightbutton-title": "Kiemelt találatok",
"rcfilters-highlightmenu-title": "Válassz egy színt",
"rcfilters-highlightmenu-help": "Válassz színt ennek a tulajdonságnak kijelöléséhez",
"rcfilters-filterlist-noresults": "Nem található szűrő",
"rcfilters-noresults-conflict": "Nincs találat, mert a keresési kritériumok konfliktusban vannak",
"rcfilters-state-message-subset": "Ennek a szűrőnek nincs hatása, mert az eredményét {{PLURAL:$2|tartalmazza a következő, nagyobb szűrő|tartalmazzák a következő, nagyobb szűrők}} (próbáld meg kiemelni a megkülönböztetéshez): $1",
- "rcfilters-state-message-fullcoverage": "Az összes szűrő kijelölése egy csoportban ugyanaz, mint ha semmit nem választanál ki, így ennek a szűrőnek nincs hatása. A csoport tartalmazza: $1",
+ "rcfilters-state-message-fullcoverage": "Az összes szűrő kijelölése ebben a csoportban ugyanaz, mintha semmit nem választanál ki, így ennek a szűrőnek nincs hatása. A csoport tartalmazza: $1",
"rcfilters-filtergroup-authorship": "Hozzájárulás szerzője",
"rcfilters-filter-editsbyself-label": "Saját változtatásaid",
"rcfilters-filter-editsbyself-description": "A te hozzájárulásaid.",
"rcfilters-filter-watchlist-watchednew-description": "A figyelőlistádon szereplő lapokon az utolsó látogatásod után történt változtatások.",
"rcfilters-filter-watchlist-notwatched-label": "Figyelőlistán nem szereplők",
"rcfilters-filter-watchlist-notwatched-description": "Minden változtatás, kivéve a figyelőlistádon szereplő lapoké.",
+ "rcfilters-filtergroup-watchlistactivity": "Figyelőlista aktivitás",
+ "rcfilters-filter-watchlistactivity-unseen-label": "Még nem látott változtatások",
"rcfilters-filtergroup-changetype": "Változtatás típusa",
"rcfilters-filter-pageedits-label": "Lapszerkesztések",
"rcfilters-filter-pageedits-description": "A wiki tartalom szerkesztése, beszélgetések, kategória leírások...",
"rcfilters-filter-previousrevision-description": "Minden változtatás a legutóbbiak kivételével",
"rcfilters-filter-excluded": "Kizárva",
"rcfilters-tag-prefix-namespace-inverted": "<strong>:nem</strong> $1",
+ "rcfilters-exclude-button-off": "A kiválasztottak kizárása",
+ "rcfilters-exclude-button-on": "A kiválasztottak kizárva",
"rcfilters-view-advanced-filters-label": "Haladó szűrők",
"rcfilters-view-tags": "Megjelölt szerkesztések",
"rcfilters-view-namespaces-tooltip": "Találatok szűrése névtér szerint",
"rcfilters-view-return-to-default-tooltip": "Vissza a főszűrőmenübe.",
"rcfilters-liveupdates-button": "Élő frissítések",
"rcfilters-liveupdates-button-title-on": "Élő frissítések kikapcsolása",
+ "rcfilters-liveupdates-button-title-off": "A legfrissebb változtatások mutatása, amint megtörténnek",
"rcfilters-watchlist-markseen-button": "Összes változtatás megjelölése olvasottként",
+ "rcfilters-watchlist-edit-watchlist-button": "A figyelőlistád szerkesztése",
"rcnotefrom": "Alább a <strong>$3 $4</strong> óta történt változtatások láthatóak (legfeljebb <b>$1</b> db).",
"rclistfromreset": "Dátumválasztás visszaállítása",
"rclistfrom": "$3, $2 után történt változtatások megtekintése",
},
"tog-underline": "Джибериулени черт:",
"tog-hideminor": "Джангы тюрлениулени тизмесинде гитче тюрлениулени кёргюзме",
- "tog-hidepatrolled": "Джангы тюрлениулени тизмесинде тинтилген тюрлениулени кёргюзме",
+ "tog-hidepatrolled": "Джангы тюрлениулени тизмесинден тинтилген тюрлениулени джашыр",
"tog-newpageshidepatrolled": "Джангы бетлени тизмесинде тинтилген бетлени кёргюзме",
"tog-extendwatchlist": "Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт",
"tog-usenewrc": "Ахыр тюрлениуледе эм кёздеги тизмеде бетлени тюрлениулерин къауумлашдыр",
"anontalk": "Бу IP-адресге сюзюу бет",
"navigation": "Навигация",
"and": " эм",
- "qbfind": "Излеу",
- "qbbrowse": "Къарау",
- "qbedit": "Тюрлендир",
- "qbpageoptions": "Бу бет",
- "qbmyoptions": "Бетлерим",
"faq": "FAQ",
- "faqpage": "Project:FAQ",
"actions": "Этиуле",
"namespaces": "Атланы аламы",
"variants": "Вариантла",
"edit-local": "Локал айгъакълауну тюрлендириу",
"create": "Къура",
"create-local": "Локал айгъакълау къош",
- "editthispage": "Бу бетни тюрлендир",
- "create-this-page": "Бу бетни къура",
"delete": "Кетер",
- "deletethispage": "Бу бетни кетер",
- "undeletethispage": "Бу бетни ызына сал",
"undelete_short": "{{PLURAL:$1|Бир тюрлендириуню$1 тюрлендириуню}} ызына сал",
"viewdeleted_short": "{{PLURAL:$1|Бир кетерилген тюрлендириуню|$1 кетерилген тюрлендириуню}} кёрюу",
"protect": "Джакъла",
"protect_change": "тюрлендир",
- "protectthispage": "Бу бетни джакъла",
"unprotect": "Джакълауну тюрлендир",
- "unprotectthispage": "Бу бетни джакълауун тюрлендир",
"newpage": "Джангы бет",
- "talkpage": "Бу бетни сюз",
"talkpagelinktext": "сюзюу",
"specialpage": "Къуллукъ бет",
"personaltools": "Энчи адырла",
- "articlepage": "Статьягъа къарау",
"talk": "Сюзюу",
"views": "Къараула",
"toolbox": "Адырла",
- "userpage": "Къошулуучуну энчи бетине къарау",
- "projectpage": "Проектни бетине къара",
+ "tool-link-userrights": "{{GENDER:$1|Къошулуучуну}} группаларын тюрлендир",
+ "tool-link-emailuser": "Бу {{GENDER:$1|къошулуучугъа}} email джибер",
"imagepage": "Файлны бетине къара",
"mediawikipage": "Билдириуню бетине къара",
"templatepage": "Шаблонну бетине къара",
"nstab-template": "Шаблон",
"nstab-help": "Болушлукъ бет",
"nstab-category": "Категория",
+ "mainpage-nstab": "Баш бет",
"nosuchaction": "Быллай амал джокъду",
"nosuchactiontext": "URL-да белгиленнген амал терсди.\nСиз URL-ну терс джазгъан болурсуз, неда терс джибериу бла кёчгенсиз.\nБу {{SITENAME}} проектде да хатаны кёргюзюрге боллукъду.",
"nosuchspecialpage": "Быллай къуллукъ бет джокъду",
"rightslogtext": "Бу къошулуучуну хакъларыны тюрлениуюню журналыды",
"action-read": "бу бетни окъуу",
"action-edit": "бу бетни тюрлендириу",
- "action-createpage": "бетни къурау",
- "action-createtalk": "сюзюу бетни къурау",
+ "action-createpage": "бу бетни къура",
+ "action-createtalk": "бу сюзюу бетни къурау",
"action-createaccount": "бу тергеу джазыуну (аккаунтну) къурау",
"action-minoredit": "бу тюрлениуню гитче кибик белгилеу",
"action-move": "бу бетни атын тюрлендириу",
"action-upload_by_url": "URL адресден бу файлны джюклеу",
"action-writeapi": "API хайырландырыу тюрлендириулеге",
"action-delete": "бу бетни кетериу",
- "action-deleterevision": "беÑ\82ни бÑ\83 веÑ\80Ñ\81иÑ\8fÑ\81ын кетериу",
- "action-deletedhistory": "бу бетни кетерилген тарихине къарау",
+ "action-deleterevision": "беÑ\82ни веÑ\80Ñ\81иÑ\8fлаÑ\80ын кетериу",
+ "action-deletedhistory": "бетни кетерилген тарихине къарау",
"action-browsearchive": "кетерилген бетлени излеу",
- "action-undelete": "бу бетни ызына салыу",
- "action-suppressrevision": "бу джашырылгъан версиясына бетни къарау эм ызына салыу",
+ "action-undelete": "бетни ызына салыу",
+ "action-suppressrevision": "бетни джашырылгъан версияларына къарау эм ызына салыу",
"action-suppressionlog": "бу энчи журналгъа къарау",
"action-block": "Къошулуучуну блок этиу, тюрлендириуле этерге къоймау",
"action-protect": "бу бетни джакълау дараджасын тюрлендириу",
"action-rollback": "бетни ахыр тюрлендирген къошулуучуну тюрлендириулерин дженгил ызына алыу",
- "action-import": "бу бетни башха викиден импорт этиу",
- "action-importupload": "бу бетни джюкленнген файлдан импорт этиу",
+ "action-import": "бетлени башха викиден импорт этиу",
+ "action-importupload": "бетлени джюкленнген файлдан импорт этиу",
"action-patrol": "башхаланы тюрлендириулерин патруль этилиннгенлеча белгилеу",
"action-autopatrol": "кесими тюрлендириулерими патруль этилиннгенлеча белгилеу",
"action-unwatchedpages": "киши кёзюнде тутмагъан бетлени тизмесине къарау",
"action-sendemail": "E-mail джибериу",
"action-editmywatchlist": "кёзде тургъан тизменги тюрлендириу",
"action-viewmywatchlist": "кёзде тургъан тизменги кёрюу",
- "nchanges": "$1 {{PLURAL:$1|тюрлениу|тюрлениу}}",
+ "nchanges": "$1 {{PLURAL:$1|тюрлениу}}",
"enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ахыр кере киргенден бери}}",
"enhancedrc-history": "тарих",
"recentchanges": "Ахыр тюрлениуле",
"recentchanges-legend-heading": "<strong>Легенда: </strong>",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])",
"recentchanges-legend-plusminus": "(''±123'')",
- "rcnotefrom": "Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле",
+ "rcfilters-other-review-tools": "<strong>Башха тинтиу адырла</strong>",
+ "rcfilters-activefilters": "Актив фильтрле",
+ "rcfilters-limit-shownum": "Ахыр {{PLURAL:$1|тюрлениуню}} кёргюзт",
+ "rcfilters-quickfilters-placeholder-title": "Сакъланнган джибериуле алкъын джокъдула",
+ "rcfilters-savedqueries-defaultlabel": "Сакъланнган фильтрле",
+ "rcnotefrom": "Тюбюрекде <strong>$3, $4</strong> башлаб (<strong>$1</strong> дери) {{PLURAL:$5|тюрлендириу}} кёрюнедиле",
"rclistfrom": "$3 $2 башлаб джангы тюрлениулени кёргюз",
"rcshowhideminor": "гитче тюрлениулени $1",
"rcshowhideminor-show": "кёргюз",
"newpageletter": "Дж",
"boteditletter": "б",
"number_of_watching_users_pageview": "[$1 {{PLURAL:$1|кёзюнде тутуучу къошулуучу}}]",
- "rc_categories": "Категориялагъа юлеш («|» бла айыр)",
- "rc_categories_any": "Ð\9aÑ\8aайсы да",
+ "rc_categories": "Къуру бу категорияладан («|» бла айыр):",
+ "rc_categories_any": "Сайланнгандан кÑ\8aайÑ\81Ñ\8bсы да",
"rc-change-size": "$1",
"rc-change-size-new": "Тюрлениуден сора ёлчеми: $1 {{PLURAL:$1|байт}}",
"newsectionsummary": "/* $1 */ Джангы бёлюм",
"reuploaddesc": "Джюклеу формасына ызына къайт",
"upload-tryagain": "Тюрлетилген файл ангылатыуну джибер",
"uploadnologin": "Сиситемагъа кирмегенсиз",
- "uploadnologintext": "Файлла джюклер ючюн [[Special:UserLogin|системагъа кирирге]] керексиз.",
+ "uploadnologintext": "Файлла джюклер ючюн $1 керекди.",
"upload_directory_missing": "Джюклеу директория ($1) табылмайды эмда веб-сервер бла къуралалмайды.",
"upload_directory_read_only": "Веб-сервер файл джюкленнегн ($1) папкагъа джазыу эркинлиги джокъду.",
"uploaderror": "Джюклеуню хатасы",
"upload-recreate-warning": "'''Эс бёлюгюз. Быллай аты бла файл кетерилген этгенди неда аты тюрленилиннгенди.'''\n\nБу бетге кетериуле бла ат тюрлендириулени журналы тюбюрекде бериледи:",
"uploadtext": "Файл джюклер ючюн тюбюндеги форманы хайырлан.\nАлландан джюкленнген файлланы кёрюр неда излер ючюн [[Special:FileList|джюкленнген файлланы тизмесине]] къарагъыз, (джангыдан) джюкленнгенле [[Special:Log/upload|джюклеу журналында]], кетерилгенле [[Special:Log/delete|кетериу журналында]] тутуладыла.\n\nБетге файл салыр ючюн байлмыгъызда тюбюндеги формаларыны бирин хайырланыгъыз;\n* Файлны бютеу ёлчемини салыр ючюн: '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''\n* Сол къыйрда бир тёртгюл ичинде, тюбюндеда ангылатыуу бла, 200 пиксел ёлчеми бла хайырландырыргъа излей эсегиз: '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|тюбюнде ангылатыу]]</nowiki></code>'''\n* Файлны кёргюзмей, файлгъа дижбиреиу берирге излей эсегиз: '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>'''",
- "upload-permitted": "Эркинлик берилген файлланы типлери: $1.",
- "upload-preferred": "Изленнген файлланы типлери: $1.",
- "upload-prohibited": "Джасакъ этилген файлланы типлери: $1.",
+ "upload-permitted": "Эркинлик берилген файлланы {{PLURAL:$2|типи|типлери}}: $1.",
+ "upload-preferred": "Изленнген файлланы {{PLURAL:$2|типи|типлери}}: $1.",
+ "upload-prohibited": "Джасакъ этилген файлланы {{PLURAL:$2|типи|типлери}}: $1.",
"uploadlogpage": "Джюклеулени журналы",
"uploadlogpagetext": "Тюбюнде эм ахыр къошулгъан файлланы тизмеси барды.\nДагъыда [[Special:NewFiles|dosyalджангы файлланы галереясына]] къара, анда джангы джюклеулени юсюнден билгиле толу кёрюгюзюлгендиле.",
"filename": "Файлны аты",
"filetype-mime-mismatch": "«.$1» файл MIME-типге ($2) келишмейди.",
"filetype-badmime": "«$1» MIME типли файлланы джюклениуюне эркинлик берлимейди.",
"filetype-bad-ie-mime": "Internet Explorer, буну эркинлик берилмеген эмда потенциал заран берлик «$1» файл тип кибик таныгъаны ючюн бу файл джюклениллик тюлдю.",
- "filetype-unwanted-type": "'''\".$1\"''' изленмеген файл типиди.\nИзленнген {{PLURAL:$3|1=файл тип|файл типле}} $2.",
- "filetype-banned-type": "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.\nЭркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}}: $2.",
+ "filetype-unwanted-type": "'''«.$1»''' — изленмеген файл типди.\nИзленнген {{PLURAL:$3|1=файл тип|файл типле}} — $2.",
+ "filetype-banned-type": "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.\nЭркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}} — $2.",
"filetype-missing": "Файлны кенглешиуу джокъду (сёз ючюн, «.jpg» кибик)",
"empty-file": "Сиз ийген файл бошду.",
"file-too-large": "Сиз ийген файл асыры уллуду.",
"alllogstext": "{{SITENAME}} ючюн бютеу бар болгъан журналланы бирлешген тизмеси.\nЖурнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (ол да уллу-гитче харифге кёре) элерге боллукъсуз.",
"logempty": "Журналлагъа келишген билги джокъду.",
"log-title-wildcard": "Бу символладан башланнган башлыкъланы изле",
+ "checkbox-select": "Сайлау: $1",
+ "checkbox-all": "Барын да",
+ "checkbox-none": "Бирин да",
+ "checkbox-invert": "Инвертле",
"allpages": "Бютеу бетле",
"nextpage": "Эндиги бет ($1)",
"prevpage": "Алдагъы бет ($1)",
"tooltip-search": "Бу сёзню изле",
"tooltip-search-go": "Тамам быллай аты болгъан бетге кёч",
"tooltip-search-fulltext": "Бу текст болгъан бетлени таб",
- "tooltip-p-logo": "Баш бет",
+ "tooltip-p-logo": "Баш бетге кёчюу",
"tooltip-n-mainpage": "Баш бетге кёчюу",
"tooltip-n-mainpage-description": "Баш бетге кёчюу",
"tooltip-n-portal": "Проектни юсюнден, сизни не этерге боллугъугъузню юсюнден, хар не къайда болгъаныны юсюнден",
"confirmrecreate-noreason": "Сиз тюрлендириуле этген заманда [[User:$1|$1]] ([[User talk:$1|сюзюу]]) къошулуучу бу бетни кетергенди. Бетни кертиси бла ызына салыргъа излегенигизни бегитигиз.",
"recreate": "Джанландыр",
"unit-pixel": "пикс.",
+ "confirm-purge-title": "Бу бетни кэшы ариула",
"confirm_purge_button": "OK",
- "confirm-purge-top": "Бу бетни кеши кетерилсинми?",
+ "confirm-purge-top": "Бу бетни кэшы ариулансынмы?",
"confirm-purge-bottom": "Бетни кеши кетерилгенден сора, андан сора келген версиясы кёргюзюллюкдю.",
"confirm-watch-button": "ОК",
"confirm-unwatch-button": "ОК",
"fileduplicatesearch-result-n": "«$1» файлны {{PLURAL:$2|1 келишген дубликаты|$2 келишген дубликаты}} барды.",
"fileduplicatesearch-noresults": "«$1» деген файл табылмады.",
"specialpages": "Къуллукъ бетле",
- "specialpages-note": "* Тюз къуллукъ бетле.\n* <span class=\"mw-specialpagerestricted\">Кирирге эркинлик чекленнген къуллукъ бетле.</span>",
"specialpages-group-maintenance": "Техника баджарыуну отчетлары",
"specialpages-group-other": "Башха къуллукъ бетле",
"specialpages-group-login": "Системагъа кириу / Аккаунт къурау",
"compare-rev2": "Экинчи версия",
"compare-submit": "Тенглешдир",
"compare-title-not-exists": "Белгиленнген башлыкъ джокъду.",
+ "diff-form": "'''форма'''",
"dberr-problems": "Кечериксиз! Бу сайтда техника джаны бла проблемала чыкъгъандыла.",
"dberr-again": "Талай минутну сакълаб, джангыдан кириб кёрюгюз.",
"dberr-info": "(билги базаны сервери бла байлам къурулалмайды: $1)",
"viewsource": "Ber código-fuonte",
"actionthrottled": "Acion lhemitada",
"viewsourcetext": "Tu puodes ber i copiar l código desta páigina.",
+ "translateinterface": "Pa poner ó altarar traduçones pa todas las wikis, cunsidre outelizar la [https://translatewiki.net/wiki/Main_Page?setlang=mwl translatewiki.net], un porjeto çtinado a la traduçon de l MediaWiki.",
"virus-scanfailed": "la berificaçon falhou (código $1)",
"virus-unknownscanner": "antibírus çcoincido:",
"yourname": "Nome de outelizador(a):",
"filesource": "Fuonte:",
"ignorewarnings": "Eignorar qualquiera abiso",
"savefile": "Grabar fexeiro",
+ "uploaddisabled": "Ambio de fexeiros zatibado.",
"watchthisupload": "Begiar este fexeiro",
"upload-dialog-title": "Cargar fexeiro",
"upload-curl-error28": "Ultrapassado l tiempo lhemite pa l ambio de l fexeiro",
"Macofe",
"Amire80",
"Matma Rex",
- "Ibrahim khashrowdi"
+ "Ibrahim khashrowdi",
+ "Baloch Khan"
]
},
"tog-underline": "کرښنې تړنې:",
"anontalk": "خبرې اترې",
"navigation": "گرځښت",
"and": " او",
- "qbfind": "موندل",
- "qbbrowse": "سپړل",
- "qbedit": "سمول",
- "qbpageoptions": "همدا مخ",
- "qbmyoptions": "زما پاڼې",
"faq": "ډ-ځ-پ",
- "faqpage": "Project:ډ-ځ-پ",
"actions": "کړنې",
"namespaces": "نوم-تشيالونه",
"variants": "ډولونه",
"searcharticle": "ورځه",
"history": "د مخ پېښليک",
"history_short": "پېښليک",
+ "history_small": "تاریخ",
"updatedmarker": "زما د وروستي راتگ نه راپدېخوا اوسمهاله شوی",
"printableversion": "چاپي بڼه",
"permalink": "تلپاتې تړنه",
"edit-local": "سيمه ايزې څرگندونې سمول",
"create": "جوړول",
"create-local": "سيمه ايزې څرگندونې ورگډول",
- "editthispage": "همدا مخ سمول",
- "create-this-page": "همدا مخ ليکل",
"delete": "ړنگول",
- "deletethispage": "دا مخ ړنگول",
- "undeletethispage": "دا مخ ناړنگول",
"undelete_short": "{{PLURAL:$1|يو سمون|$1 سمونې}} ناړنگول",
"viewdeleted_short": "{{PLURAL:$1|يو ړنگ شوی سمون|$1 ړنگ شوي سمونونه}} کتل",
"protect": "ژغورل",
"protect_change": "بدلون",
- "protectthispage": "همدا مخ ژغورل",
"unprotect": "ژغورنه بدلول",
- "unprotectthispage": "د دې مخ ژغورنه بدلول",
"newpage": "نوی مخ",
- "talkpage": "د دې مخ په اړه خبرې اترې کول",
"talkpagelinktext": "خبرې اترې",
"specialpage": "ځانگړی مخ",
"personaltools": "شخصي اوزار",
- "articlepage": "د مخ مېنځپانگه ښکاره کول",
"talk": "خبرې اترې",
"views": "کتنې",
"toolbox": "اوزارونه",
- "userpage": "د کارن پاڼه کتل",
- "projectpage": "د پروژې مخ کتل",
+ "tool-link-userrights": "د{{GENDER:$1|کارن}} ګروپونه بدل کړي",
+ "tool-link-userrights-readonly": "د{{GENDER:$1|کارن}} ګروپونه ښکاره کړي",
+ "tool-link-emailuser": "دې {{GENDER:$1|کارن}} ته برېښناليک لېږل",
"imagepage": "د دوتنې مخ کتل",
"mediawikipage": "پيغام مخ کتل",
"templatepage": "د کينډۍ مخ کتل",
"virus-scanfailed": "ځيرڅارنه بريالۍ نه شوه (کوډ $1)",
"virus-unknownscanner": "ناڅرگند ضدويروس:",
"logouttext": "'''اوس تاسې د غونډال څخه ووتلئ.'''\n\nدا په پام کې وساتۍ چې تر څو تاسې د خپل کتنمل حافظه نه وي سپينه کړې، نو ځينې مخونو کې به لا تر اوسه پورې په غونډال کې ننوتي ښکارۍ.",
+ "cannotlogoutnow-title": "وس نسم کولاي بهر تري ووځم",
"welcomeuser": "$1، ښه راغلې!",
"welcomecreation-msg": "گڼون مو جوړ شو.\nد [[Special:Preferences|{{SITENAME}} غوره توبونه]] بدلول مو مه هېروۍ.",
"yourname": "کارن-نوم:",
"createacct-yourpasswordagain-ph": "پټنوم مو بيا وټاپئ",
"userlogin-remembermypassword": "غونډال کې مې ننوتلی وساته",
"userlogin-signwithsecure": "خوندي اړيکتيا کارول",
+ "cannotloginnow-title": "نسم کولای چې دننه سم",
"cannotcreateaccount-title": "گڼونونه نه شي جوړېدای",
"yourdomainname": "ستاسې شپول:",
"password-change-forbidden": "تاسې په دې ويکي باندې خپل پټنوم نه شی بدلولی.",
"botpasswords-label-update": "اوسمهالول",
"botpasswords-label-cancel": "ناگارل",
"botpasswords-label-delete": "ړنگول",
+ "botpasswords-label-resetpassword": "پټوم بدل کړي",
+ "botpasswords-label-grants": "تطبیق وړ ګرانټ:",
"resetpass_forbidden": "پټنومونه مو نه شي بدلېدلای",
"resetpass-no-info": "دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.",
"resetpass-submit-loggedin": "پټنوم بدلول",
"editusergroup": "{{GENDER:$1|کارن}} ډلې سمول",
"editinguser": "د <strong>[[User:$1|$1]]</strong> {{GENDER:$1|کارن}} رښتې بدلول $2",
"userrights-editusergroup": "کارن ډلې سمول",
+ "userrights-viewusergroup": "د{{GENDER:$1|کارن}} ګروپونه ښکاره کړي",
"saveusergroups": "{{GENDER:$1|کارن}} ډلې خوندي کول",
"userrights-groupsmember": "غړی د:",
"userrights-groupsmember-auto": "ضمني غړی د:",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|د نويو مخونو لړليک]] هم وگورئ)",
"recentchanges-legend-plusminus": "(<em>±123</em>)",
"recentchanges-submit": "ښکاره کول",
+ "rcfilters-tag-remove": "لرې کړئ'$1'",
+ "rcfilters-savedqueries-rename": "نوم بدلول",
"rcfilters-filterlist-title": "چاڼگران",
"rcfilters-filter-user-experience-level-newcomer-label": "نوي راغلي",
"rcfilters-filter-user-experience-level-learner-label": "زده کوونکي",
"unblocked-range": "له $1 بنديز ليرې شو",
"unblocked-ip": "له [[Special:Contributions/$1|$1]] څخه بنديز ليرې شو.",
"blocklist": "بنديز لگېدلي کارنان",
+ "autoblocklist-submit": "پلټل",
"ipblocklist": "بنديز لگېدلي کارنان",
"ipblocklist-legend": "يو بنديز شوی کارن موندل",
"blocklist-userblocks": "گڼون بنديزونه پټول",
"patrol-log-header": "دا د څارل شويو مخکتنو يو يادښت دی.",
"log-show-hide-patrol": "د څارنې يادښت $1",
"log-show-hide-tag": "نښلن يادښت $1",
+ "confirm-markpatrolled-button": "ښه",
"deletedrevision": "د $1 زړه ړنگه شوې بڼه",
"filedeleteerror-short": "د دوتنې د ړنگولو ستونزه: $1",
"filedeleteerror-long": "د دوتنې په ړنگولو کې تېروتنې پېښې شوې:\n\n$1",
"fileduplicatesearch-noresults": "د \"$1\" په نوم دوتنه و نه موندل شوه.",
"specialpages": "ځانگړي مخونه",
"specialpages-note-top": "څرگندونې",
- "specialpages-note": "* نورماله ځانگړي مخونه.\n* <strong class=\"mw-specialpagerestricted\">محدوده ځانگړي مخونه.</strong>",
"specialpages-group-maintenance": "د څارنې راپورونه",
"specialpages-group-other": "نور ځانگړي مخونه",
"specialpages-group-login": "ننوتل / گڼون جوړول",
"authmanager-realname-label": "اصلي نوم",
"authmanager-realname-help": "د کارن اصلي نوم",
"authprovider-resetpass-skip-label": "تېرېدل",
+ "specialpage-securitylevel-not-allowed-title": "اجازه نسته",
"changecredentials-submit": "بدلول",
"removecredentials-submit": "غورځول",
"credentialsform-account": "گڼون نوم:"
"Санюн Вадик",
"MustangDSG",
"Valeri'swiki",
- "Marat-avgust"
+ "Marat-avgust",
+ "Ernác"
]
},
"tog-underline": "Подчёркивание ссылок:",
"recentchanges-legend-plusminus": "(''±123'')",
"recentchanges-submit": "Показать",
"rcfilters-tag-remove": "Удалить '$1'",
- "rcfilters-legend-heading": "<strong>СпиÑ\81ок Ñ\81окÑ\80аÑ\89ений:</strong>",
+ "rcfilters-legend-heading": "<strong>Ð\9aÑ\8aÑ\8bÑ\81Ñ\85аÑ\80Ñ\82Ñ\8bÑ\83ланÑ\8b Ñ\82измеÑ\81и:</strong>",
"rcfilters-other-review-tools": "<strong>Другие инструменты проверки</strong>",
"rcfilters-group-results-by-page": "Группировать результаты по странице",
"rcfilters-grouping-title": "Группировка",
"tog-watchuploads": "منھنجا نوان چاڙهيل فائيلس نظر ۾ فھرست ۾ شامل ڪريو",
"tog-watchrollback": "انهن صفحن کي منهنجي نظر ۾ فھرست تي رکو، جن ۾ تبديلين کي مون واپس ورايو آهي",
"tog-minordefault": "سمورين تبديلين کي بنان چئي معمولي ترميم تصور ڪريو",
- "tog-previewontop": "ترميمي دٻيءَ مٿان پيش نگاهہ ڏيکاريو",
- "tog-previewonfirst": "پهرين ترميم تي پيش نگاهہ ڏيکاريو",
+ "tog-previewontop": "ترميمي دٻيءَ مٿان پيش نگاھ ڏيکاريو",
+ "tog-previewonfirst": "پهرين ترميم تي پيش نگاھ ڏيکاريو",
"tog-enotifwatchlistpages": "منهنجي نظر ۾ فھرست اندر شامل ڪنهن صفحي يا فائيل ۾ تبديل پيش اچي مون کي برقٽپال اماڻيو",
"tog-enotifusertalkpages": "منهنجي مباحثي صفحي ۾ تبديليءَ جي صورت ۾ مون کي برقٽپال اماڻيو",
"tog-enotifminoredits": "صفحن ۾ معمولي ترميمن جي صورت ۾ بہ مون کي برقٽپال ڪريو",
"tog-norollbackdiff": "واپس ورائڻ کان پوءِ تفاوت نہ ڏيکاريو",
"tog-useeditwarning": "مونکي خبردار ڪريو جڏهن مان هڪ ترميم وارو صفحو بغير تبديلين سانڍڻ جي ڇڏيان",
"tog-prefershttps": "هميشہ محفوظ ڪنيڪشن استعمال ڪريو جڏهن داخل ٿيل هجو",
- "underline-always": "هميشہ",
+ "underline-always": "سدائين",
"underline-never": "ڪڏهن بہ نہ",
"underline-default": "پيش طَي چَم يا جھانگُو",
"editfont-style": "ايراضي جو فونٽ اسٽائيل سنواريو:",
"category_header": "\"$1\" زمري جا صفحا",
"subcategories": "ذيلي زمرا",
"category-media-header": " \"$1\" زمري اندر ذريعات",
- "category-empty": "''فيالوقت هن زمري ۾ ڪي بہ صفحا يا ذريعات شامل ناهن.''",
+ "category-empty": "<em>فيالوقت هن زمري ۾ ڪي بہ صفحا يا ذريعات شامل ناهن.</em>",
"hidden-categories": "{{PLURAL:$1|لڪيل زمرو|لڪيل زمرا}}",
"hidden-category-category": "لڪل زمرا",
"category-subcat-count": "{{PLURAL:$2|ھن زمري ۾ رڳو ھيٺيون ذيلي زمرو آهي.|هن زمري ۾ ڪل $2 مان ھيٺيان {{PLURAL:$1|subcategory|$1 ذيلي زمرا}} آھن.}}",
"article": "موادي صفحو",
"newwindow": "(نئين دريءَ ۾ کلندو)",
"cancel": "رد",
- "moredotdotdot": "اڃا...",
+ "moredotdotdot": "وڌيڪ...",
"morenotlisted": "ھي فھرست نامڪمل بہ ٿي سگھي ٿي.",
- "mypage": "منهنجو صفحو",
+ "mypage": "صفحو",
"mytalk": "بحث",
"anontalk": "بحث",
"navigation": "رھنمائي",
"help": "مدد",
"search": "ڳولا",
"searchbutton": "ڳوليو",
- "go": "کوليو",
+ "go": "هلو",
"searcharticle": "وڃو",
"history": "صفحي جي سوانح",
"history_short": "سوانح",
"undelete_short": "اڻڊاهيو {{PLURAL:$1|هڪ ترميم|$1 ترميمون}}",
"viewdeleted_short": "ڏسو {{PLURAL:$1|هڪ ڊاٺل ترميم|$1 ڊاٺل ترميمون}}",
"protect": "تحفظيو",
- "protect_change": "تبديل ڪريو",
+ "protect_change": "مٽايو",
"unprotect": "تحفظ بدلايو",
"newpage": "نئون صفحو",
"talkpagelinktext": "بحث",
"talk": "بحث",
"views": "ڏيٺون",
"toolbox": "اوزارَ",
- "tool-link-userrights": "{{GENDER:$1|Ù\8aÙ\88زر}} گرÙ\88Ú¾ تبدÙ\8aÙ\84 ڪريو",
+ "tool-link-userrights": "{{GENDER:$1|Ù\88اھپ}} گرÙ\88Ú¾ Ù\85ٽايو",
"tool-link-userrights-readonly": "{{GENDER:$1|يوزر}} گروھ ڏسو",
- "tool-link-emailuser": "Ú¾Ù\86 {{GENDER:$1|Ù\8aÙ\88زر}} ڏانھن برقٽپال موڪليو",
- "imagepage": "ذريعاتي صفحو ڏسو",
+ "tool-link-emailuser": "Ú¾Ù\86 {{GENDER:$1|Ù\88اھپ}} ڏانھن برقٽپال موڪليو",
+ "imagepage": "فائيل صفحو ڏسو",
"mediawikipage": "نياپي جو صفحو ڏسو",
"templatepage": "سانچي جو صفحو ڏسو",
- "viewhelppage": "امدادي صفحو ڏسو",
+ "viewhelppage": "مددي صفحو ڏسو",
"categorypage": "زمراتي صفحو ڏسو",
"viewtalkpage": "بحث ڏسو",
"otherlanguages": "ٻين ٻولين ۾",
"poolcounter-usage-error": "استعمال جي خرابي: $1",
"aboutsite": "{{SITENAME}} بابت",
"aboutpage": "Project:بابت",
- "copyright": "ڪجھہ ٻيو ڄاڻايل نہ هجڻ جي صورت ۾ سمورو مواد $1 تحت ميسر ڪجي ٿو.",
+ "copyright": "ڪجھ ٻيو ڄاڻايل نہ هجڻ جي صورت ۾ سمورو مواد $1 تحت ميسر ڪجي ٿو.",
"copyrightpage": "{{ns:project}}:تاليف جا حق",
"currentevents": "ھاڻوڪا واقعا",
"currentevents-url": "Project:ھاڻوڪا واقعا",
"portal-url": "Project:نياتي باب",
"privacy": "ذاتيات پاليسي",
"privacypage": "Project:ذاتيات پاليسي",
- "badaccess": "اجازتÙ\86اÙ\85Û\81 چُڪَ",
+ "badaccess": "اجازتÙ\8a چُڪَ",
"versionrequired": "ذريعاتوڪي جو ورزن $1 درڪار",
"versionrequiredtext": "هيءُ صفحو استعمال ڪرڻ لاءِ ذريعاتوڪي جو ورزن $1 درڪار آهي. وڌيڪ ڄاڻڻ لاءِ [[Special:Version|ورزن بابت صفحو]] ڏسو.",
"ok": "ٺيڪ",
"retrievedfrom": "\"$1\" تان ورتل",
- "youhavenewmessages": "توهان لاءِ $1 ($2) آهن.",
+ "youhavenewmessages": "{{PLURAL:$3|توھان وٽ}} $1 ($2) آھن.",
"youhavenewmessagesmanyusers": "توهان لاءِ ڪيترن ئي يُوزرس ($2) طرفان $1 آيل آهن.",
"newmessageslinkplural": "{{PLURAL:$1|ھڪ نئون پيغام|999=نوان پيغام}}",
"newmessagesdifflinkplural": "آخري {{PLURAL:$1|تبديلي|999=تبديليون}}",
"confirmable-confirm": "ڇا{{GENDER:$1|توهانکي}} پڪ آهي؟",
"confirmable-yes": "ها",
"confirmable-no": "نہ",
- "thisisdeleted": "$1 کي ڏسڻ يا بحالڻ چاهيندا؟",
- "viewdeleted": "$1 Ú\8fسÙ\86دا؟",
- "restorelink": "{{PLURAL:$1|Ù\87ÚªÚ\99Ù\8a Ú\8aاٺÙ\84 ترÙ\85Ù\8aÙ\85|$1 Ú\8aاٺل ترميمون}}",
+ "thisisdeleted": "$1 کي ڏسندئو يا بحاليندئو؟",
+ "viewdeleted": "$1 Ú\8fسÙ\86دئÙ\88؟",
+ "restorelink": "{{PLURAL:$1|Ù\87ÚªÚ\99Ù\8a Ú\8aاٿÙ\84 ترÙ\85Ù\8aÙ\85|$1 Ú\8aاٿل ترميمون}}",
"feedlinks": "روان رسد:",
- "site-rss-feed": "$1 آر ايس ايس روان رسد",
+ "site-rss-feed": "$1 آرايسايس روان رسد",
"site-atom-feed": "$1 اڻو روان رسد",
"page-rss-feed": "\"$1\" RSS برق مواد",
"page-atom-feed": "\"$1\" اڻو روان رسد",
"nstab-image": "فائيل",
"nstab-mediawiki": "نياپو",
"nstab-template": "سانچو",
- "nstab-help": "امدادي صفحو",
+ "nstab-help": "مددي صفحو",
"nstab-category": "زمرو",
"mainpage-nstab": "مک صفحو",
"nosuchaction": "اهڙو ڪو بہ عمل نہ آهي",
"prefs-diffs": "تفاوت",
"prefs-help-prefershttps": "هيءَ ترجيح توهان جي ايند داخل ٿيڻ تي عمل ۾ ايندي.",
"userrights": "يُوزر حق",
- "userrights-lookup-user": "ÚªÙ\88 Ù\8aÙ\88زر چونڊيو",
+ "userrights-lookup-user": "ÚªÙ\88 Ù\88اھپ چونڊيو",
"userrights-user-editname": "يُوزرنانءُ ڄاڻايو:",
- "editusergroup": "Ù\8aÙ\88زر گروھ اتاريو",
+ "editusergroup": "Ù\88اھپ گروھ اتاريو",
"userrights-editusergroup": "{{GENDER:$1|يوزر}} گروھ سنواريو",
- "saveusergroups": "{{GENDER:$1|Ù\8aÙ\88زر}} گروھ سانڍيو",
+ "saveusergroups": "{{GENDER:$1|Ù\88اھپ}} گروھ سانڍيو",
"userrights-groupsmember": "برڪن:",
"userrights-groupsmember-auto": "رڪن واجبي:",
"userrights-reason": "سبب:",
"right-import": "ٻين وڪيز کان صفحا درآمديو",
"right-importupload": "ڪو فائيل چاڙهي صفحا درآمديو",
"right-mergehistory": "صفحن جي سوانح سنواريو",
- "right-userrights": "سÚ\80 Ù\8aÙ\88زر ØÙ\82 ترÙ\85Ù\8aÙ\85 Úªريو",
+ "right-userrights": "سÚ\80 Ù\88اھپ ØÙ\82 سÙ\86Ù\88اريو",
"right-userrights-interwiki": "هن وڪي جي يوزرس جا حق ترميم ڪريو",
"right-siteadmin": "اعدادخانو بنديو ۽ کوليو",
"right-override-export-depth": "5ئين اونهائيءَ تائين ڳنڍيل صفحن سميت صفحا برآمديو",
"grant-basic": "بنيادي حقَ",
"grant-viewdeleted": "ڊَٺَلَ فائيلَ ۽ صفحا ڏسو",
"grant-viewmywatchlist": "پنهنجي نظرھيٺ فھرست ڏسو",
- "newuserlogpage": "Ù\8aÙ\88زر تخليق لاگ",
+ "newuserlogpage": "Ù\88اھپ تخليق لاگ",
"rightslog": "يُوزر حق لاگ",
"action-read": "هي صفحو پڙهو",
"action-edit": "هن صفحي کي سسنواريو",
"action-createpage": "ھي صفحو تخليق ڪريو",
"action-createtalk": "ھي مباحثي صفحو تخليق ڪريو",
- "action-createaccount": "هي يوزر کاتو تخليق ڪريو",
+ "action-createaccount": "ھي واھپ کاتو سرجيو",
"action-history": "هن صفحي جي سوانح ڏسو",
"action-minoredit": "هن ترميم کي معمولي طور نشان لڳايو",
"action-move": "هيءَُ صفحو چوريو",
"action-importupload": "ڪو فائيل چاڙهي صفحا درآمديو",
"action-unwatchedpages": "اڻ ڏٺل صفحن جي فھرست ڏسو",
"action-mergehistory": "هن صفحي جي سوانح ضم ڪريو",
- "action-userrights": "سÚ\80 Ù\8aÙ\88زر ØÙ\82 ترÙ\85Ù\8aÙ\85 Úªريو",
+ "action-userrights": "سÚ\80 Ù\88اھپ ØÙ\82 سÙ\86Ù\88اريو",
"action-userrights-interwiki": "ٻين وڪيز جي يوزرس جا حق ترميم ڪريو",
"action-siteadmin": "اعدادخاني کي بند ڪريو يا کوليو",
"action-sendemail": "برقٽپال اماڻيو",
"sp-deletedcontributions-contribs": "ڀاڱيداريون",
"linksearch-ns": "نانءُپولار",
"linksearch-ok": "ڳوليو",
- "listusersfrom": "تÙ\8a شرÙ\88ع ÚªÙ\86دÚ\99 Ù\8aÙ\88زر ڏيکاريو:",
+ "listusersfrom": "تÙ\8a شرÙ\88ع ÚªÙ\86دÚ\99 Ù\88اھپ ڏيکاريو:",
"listusers-submit": "ڏيکاريو",
"listusers-noresult": "ڪو بہ يُوزر نہ لڌو",
"listusers-blocked": "(بندشيل)",
"activeusers-excludegroups": "گروھن سان تعلق رکندڙ گروھ ڇڏيو:",
"activeusers-noresult": "ڪي بہ يُوزرس نہ لڌا.",
"activeusers-submit": "سرگرم يُوزرس ڏيکاريو",
- "listgrouprights": "Ù\8aÙ\88زر گرÙ\88Ù¾ جا ØÙ\82",
+ "listgrouprights": "Ù\88اھپ گرÙ\88Ú¾ جا ØÙ\82",
"listgrouprights-group": "گروهہ:",
"listgrouprights-rights": "حق",
"listgrouprights-members": "(رڪنن جي فھرست)",
"trackingcategories-nodesc": "ڪا به تشريح موجود نه آهي.",
"trackingcategories-disabled": "زمرو ناقابلِ ڪار بڻايل آهي.",
"emailuser": "هن واھپ کي برق ٽپال اماڻيو",
- "emailuser-title-target": "Ú¾Ù\86 {{GENDER:$1|Ù\8aÙ\88زر}} ڏانھن برقٽپال موڪليو",
+ "emailuser-title-target": "Ú¾Ù\86 {{GENDER:$1|Ù\88اھپ}} ڏانھن برقٽپال موڪليو",
"emailuser-title-notarget": "واھپ ڏانھن برقٽپال اماڻيو",
- "usermaildisabled": "Ù\8aÙ\88زر اÙ\8aÙ\85Ù\8aÙ\84 Ù\86اÙ\82ابÙ\84Ù\90 ڪار بڻيل",
+ "usermaildisabled": "Ù\88اھپ برÙ\82ٽپاÙ\84 Ù\86اÙ\82ابÙ\84Ù\90ڪار بڻيل",
"usermaildisabledtext": "توهان هن وڪي تي ٻين يوزرس ڏانهن ايميل نٿا موڪلي سگھو",
"noemailtitle": "برقٽپال پتو ناھي",
"noemailtext": "هن واھپ ڪو بہ قابلِڪار برقٽپال پتو نہ ڄاڻايو آهي.",
"tooltip-invert": "هن دٻي تي نشان لڳايو صحفن ۾ تبديليون لڪائڻ لاءِ چونڊيل نانءَپولار مان (۽ لاڳاپيل نانءُپولار جيڪڏهن نشان لڳل)",
"namespace_association": "منسلڪ نانءُپولار",
"blanknamespace": "(مُک)",
- "contributions": "{{GENDER:$1|Ù\8aÙ\88زر}} جون ڀاڱيداريون",
+ "contributions": "{{GENDER:$1|Ù\88اھپ}} جون ڀاڱيداريون",
"contributions-title": "يُوزر ڀاڱيداريون براءِ $1",
"mycontris": "ڀاڱيداريون",
"anoncontribs": "ڀاڱيداريون",
"import-upload-filename": "فائيل نانءُ:",
"import-comment": "تاثر:",
"importlogpage": "درآمد لاگ",
- "tooltip-pt-userpage": "{{GENDER:|تÙ\88ھاÙ\86جÙ\88 Ù\8aÙ\88زر}} صفحو",
- "tooltip-pt-mytalk": "{{GENDER:|تÙ\88ھاÙ\86جÙ\88}} Ù\8aÙ\88زر صفحو",
+ "tooltip-pt-userpage": "{{GENDER:|تÙ\88ھاÙ\86جÙ\88 Ù\88اھپ}} صفحو",
+ "tooltip-pt-mytalk": "{{GENDER:|تÙ\88ھاÙ\86جÙ\88}} Ù\88اھپ صفحو",
"tooltip-pt-preferences": "{{GENDER:|توھانجون}} ترجيحون",
"tooltip-pt-watchlist": "صفحن جي فھرست جيڪي توھان تبديلين لاءِ نظر ۾ رکيا آھن",
"tooltip-pt-mycontris": "{{GENDER:|توھانجي}} ڀاڱيدارين جي فھرست",
"tooltip-t-recentchangeslinked": "ويجھڙائيءَ ۾ صفحن ۾ ٿيل تبديليون هن صفحي سان ڳنڍيل آهن",
"tooltip-feed-atom": "هن صفحي لاءِ ايٽم فيڊ",
"tooltip-t-contributions": "{{GENDER:$1|ھن يوزر}} جي ڀاڱيدارين جي فھرست",
- "tooltip-t-emailuser": "{{GENDER:$1|Ú¾Ù\86 Ù\8aÙ\88زر}} ڏانھن برقٽپال موڪليو",
+ "tooltip-t-emailuser": "{{GENDER:$1|Ú¾Ù\86 Ù\88اھپ}} ڏانھن برقٽپال موڪليو",
"tooltip-t-upload": "فائيل چاڙهيو",
"tooltip-t-specialpages": "سڀني خاص صفحن جي فھرست",
"tooltip-t-print": "هن صفحي جو ڇاپائتو پرت",
"tooltip-rollback": "\"واپس ورايو\" ھن صفحي ۾ پوئين ڀاڱيدار جي ڪيل ترميم(ن) کي ھڪ ٽڙڪ سان اڻڪري ٿو",
"tooltip-preferences-save": "ترجيحون سانڍيو",
"tooltip-summary": "ننڍو خلاصو ڏيو",
- "anonymous": "گمنام {{PLURAL:$1|يوزر|يوزرس}} جو {{SITENAME}}",
+ "anonymous": "{{SITENAME}} جا گمنام {{PLURAL:$1|واھپ|واھپَ}}",
"simpleantispam-label": "اينٽي-اسپام روڪ.\nھن کي <strong>نہ</strong> ڀريو!",
"pageinfo-toolboxlink": "صفحي جي معلومات",
"pageinfo-contentpage-yes": "ها",
"logentry-delete-delete": "$1 {{GENDER:$2|ڊاٿو}} صفحو $3",
"revdelete-uname-hid": "يُوزرنانءُ لڪل",
"logentry-move-move": "$1 {{GENDER:$2|چوريو}} صفحو $3 ڏانهن $4",
- "logentry-newusers-create": "Ù\8aÙ\88زر کاتو $1 {{GENDER:$2|سرجيو ويو}}",
+ "logentry-newusers-create": "Ù\88اھپ کاتو $1 {{GENDER:$2|سرجيو ويو}}",
"logentry-upload-upload": "$1 {{GENDER:$2|چاڙهيو}} $3",
"rightsnone": "(ڪو بہ نہ)",
"feedback-back": "پوئتي",
"sharedupload": "Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.",
"sharedupload-desc-here": "Ieu berkas asalna ti $1 anu bisa jadi dipaké ku proyék séjén. \nPedaran ti [$2 kaca pedaranana] dipidangkeun di handap.",
"filepage-nofile": "Taya berkas nu ngaranna kieu.",
+ "filepage-nofile-link": "Taya berkan nu ngaranna kieu, tapi anjeun bisa [$1 ngunjalkeunna].",
"uploadnewversion-linktext": "ngamuatkeun vérsi anyar koropak ieu",
"shared-repo-from": "ti $1",
"shared-repo": "hiji répositori réréongan",
"filerevert-submit": "Balikkeun",
"filerevert-success": "'''[[Media:$1|$1]]''' geus dipulangkeun ka [vérsi $4, $3, $2].",
"filerevert-badversion": "Euweuh vérsi lokal tiheula ti koropak ieu kalawan cap waktu anu dimaksud.",
+ "filerevert-identical": "Vérsi berkas ayeuna geus idéntik jeung berkas nu dipilih.",
"filedelete": "Ngahapus $1",
"filedelete-legend": "Ngahapus gambar",
"filedelete-intro": "Anjeun rék ngahapus koropak '''[[Media:$1|$1]]''' katut sagala jujutanana.",
"sp-contributions-newbies": "Témbongkeun kontribusi ti akun anyar wungkul",
"sp-contributions-newbies-sub": "Pikeun akun anyar",
"sp-contributions-blocklog": "log peungpeuk",
- "sp-contributions-deleted": "kontribusi nu dihapus",
+ "sp-contributions-suppresslog": "kontribusi {{GENDER:$1|pamaké}} nu disamunikeun",
+ "sp-contributions-deleted": "kontribusi {{GENDER:$1|pamaké}} nu dipupus",
"sp-contributions-uploads": "unggahan",
"sp-contributions-logs": "log",
"sp-contributions-talk": "obrolan",
- "sp-contributions-userrights": "ngatur hak pamaké",
+ "sp-contributions-userrights": "Ménéjemén hak aksés {{GENDER:$1|pamaké}}",
"sp-contributions-blocked-notice": "Ieu pamaké keur dipeungpeuk.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:",
"sp-contributions-blocked-notice-anon": "Ieu alamat IP keur dipeungpeuk.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:",
"sp-contributions-search": "Paluruh kontribusi",
"blocklist-userblocks": "Sumputkeun peungpeukan akun",
"blocklist-tempblocks": "Sumputkeun peungpeukan saheulaanan",
"blocklist-addressblocks": "Sumputkeun pameungpeukan IP tunggal",
+ "blocklist-rangeblocks": "Nyumputkeun hontalan peungpeuk",
"blocklist-timestamp": "Cap titimangsa",
"blocklist-target": "Udagan",
"blocklist-expiry": "Kadaluwarsa",
"change-blocklink": "Robah status blokir",
"contribslink": "kontribusi",
"emaillink": "kirim surélék",
- "autoblocker": "Otomatis dipeungpeuk kusabab alamat IP anjeun dipaké ku \"[[User:$1|$1]]\".\nAlesan: \"$2\"",
+ "autoblocker": "Otomatis dipeungpeuk kusabab alamat IP anjeun dipaké ku \"[[User:$1|$1]]\".\nAlesan nu dibikeun pikeun pameungpeukan nyaéta: \"$2\"",
"blocklogpage": "Log_peungpeuk",
"blocklog-showlog": "Ieu pamaké saméméhna geus kungsi dipeungpeuk.\nPikeun rujukan, logna dipidangkeun di handap ieu:",
"blocklogentry": "meungpeuk [[$1]] nepi ka $2 $3",
"range_block_disabled": "Pangabisa kuncén pikeun nyieun sarupaning peungpeuk geus ditumpurkeun.",
"ipb_expiry_invalid": "Wanci daluwarsa teu bener.",
"ipb_expiry_old": "Waktu kadaluwarsana mah baheula.",
+ "ipb_expiry_temp": "Pameungpeukan sandiasma nu samunikeun kudu permanén.",
"ipb_already_blocked": "\"$1\" geus dipeungpeuk",
"ipb-needreblock": "$1 geus dipeungpeuk. Rék dirobah sétinganana?",
"ipb-otherblocks-header": "{{PLURAL:$1|Peungpeuk|Peungpeuk}} lianna",
"delete_and_move_confirm": "Enya, hapus kaca éta",
"delete_and_move_reason": "Hapus sangkan bisa mindahkeun",
"selfmove": "Judul sumber jeung tujuanana sarua, lain gé mindahkeun atuh!",
+ "immobile-source-namespace": "Teu bisa ngalihkeun kaca dina ngaranspasi \"$1\".",
+ "immobile-target-namespace": "Teu bisa ngalihkeun kaca ka ngaranspasi \"$1\".",
"immobile-target-namespace-iw": "Tutumbu interwiki teu bisa dipaké salaku tujul pamindahan.",
"immobile-source-page": "Ieu kaca teu bisa dipindahkeun.",
"immobile-target-page": "Teu bisa mindahkeun ka judul nu ditujul.",
"djvu_page_error": "Kaca DjVu teu kawadahan",
"djvu_no_xml": "Hanteu bisa nyokot XML pikeun berkas DjVu",
"thumbnail-temp-create": "Teu bisa nyieun berkas leutik témporer",
+ "thumbnail-dest-create": "Teu bisa nyimpen berkas leutik ka tujuan",
"thumbnail_invalid_params": "Kasalahan paraméter miniatur",
"thumbnail_toobigimagearea": "Berkas kalawan diménsi leuwih badag batan $1",
"thumbnail_dest_directory": "Diréktori nu dituju teu bisa dijieun",
"import-interwiki-submit": "Impor",
"import-mapping-default": "Impor ka lokasi standar",
"import-mapping-namespace": "Impor ka ngaranspasi:",
+ "import-mapping-subpage": "Impor minangka subkaca ti kaca di handap:",
"import-upload-filename": "Ngaran berkas:",
"import-comment": "Ringkesan:",
- "importtext": "Mangga ékspor koropakna ti sumber nu dipaké ku wiki migunakeun fungsi Special:Export, simpen na piringan anjeun, teras muatkeun di dieu.",
+ "importtext": "Mangga ékspor koropakna ti sumber nu dipaké ku wiki ngagunakeun [[Special:Export|fungsi ékspor]], simpen na piringan anjeun, teras muatkeun di dieu.",
"importstart": "Ngimpor kaca...",
"import-revision-count": "$1 {{PLURAL:$1|vérsi heubeul}}",
"importnopages": "henteu aya kaca keur diimpor.",
+ "imported-log-entries": "Geus diimpor $1 {{PLURAL:$1|saéntri log|éntri log}}.",
"importfailed": "Ngimpor gagal: $1",
"importunknownsource": "Tipeu sumber impor teu dipikawanoh",
"importcantopen": "Teu bisa muka koropak impor",
"importbadinterwiki": "Tutumbu antarwiki awon",
"importsuccess": "Ngimpor geus hasil!",
- "importnosources": "Teu aya sumber impor transwiki nu geus dijieun tur ngamuat jujutan sacara langsung geus dinon-aktifkeun.",
+ "importnosources": "Taya wiki ti nu diimpor nu geus dijieun sarta pamuatan jujuta sacara langsung geus di non-aktifkeun.",
"importnofile": "Euweuh koropak impor nu dimuat.",
"importuploaderrorsize": "Koropak impor gagal dimuat. Ukuranana ngaleuwihan wates nu diwenangkeun.",
"importuploaderrorpartial": "Koropak impor gagal dimuat sagemblengna.",
"exif-fixtureidentifier": "Ngaran fikstur",
"exif-locationdest": "Lokasi nu digambarkeun",
"exif-locationdestcode": "Kodeu lokasi nu digambarkeun",
+ "exif-contact": "Informasi kontak",
"exif-writer": "Nu nulis",
"exif-languagecode": "Basa",
"exif-iimversion": "Vérsi IIM",
"exif-lightsource-19": "Cahya baku C",
"exif-lightsource-24": "Tungsten studio ISO",
"exif-lightsource-255": "Sumber cahya séjén",
+ "exif-flash-fired-0": "Lampu kilat teu hurung",
"exif-flash-fired-1": "Buricak hurung",
"exif-flash-mode-3": "modeu otomatis",
"exif-focalplaneresolutionunit-2": "inci",
"blankpage": "Kaca kosong",
"intentionallyblankpage": "Ieu kaca ngahaja dikosongkeun.",
"external_image_whitelist": " #Antepkeun ieu baris sakumaha ayana<pre>\n#Paké fragmén éxprési régulér (ukur bagian anu aya di antara //) di handap\n#Ieu fragmén bakal dicocogkeun jeung URL gambar-gambar éksternal\n#Fragmén anu cocog bakal dipidangkeun minangka gambar, lamun henteu nu katémbong ukur tutumbuna #Baris nu dimimitian ku # bakal dianggap koméntar\n#Ieu teu ngabédakeun gedé leutikna aksara\n#Teundeun sakabéh fragmén éxprési régulér luhureun ieu baris. Antepkeun ieu baris sakumaha ayana</pre>",
+ "tags": "Tag parobahan valid",
"tag-filter": "Saringan [[Special:Tags|tag]]:",
"tag-filter-submit": "Saring",
"tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)",
+ "tag-mw-contentmodelchange": "parobahan modél kontén",
"tags-title": "Tag",
"tags-tag": "Ngaran tag",
"tags-source-header": "Sumber",
"tags-deactivate-reason": "Alesan:",
"tags-deactivate-submit": "Pareuman",
"tags-edit-title": "Édit tag",
+ "tags-edit-manage-link": "Kokola tag",
"tags-edit-existing-tags": "Tag nu aya:",
"tags-edit-existing-tags-none": "<em>Taya</em>",
"tags-edit-new-tags": "Tag anyar:",
"tags-edit-chosen-no-results": "Euweuh tag nu luyu",
"tags-edit-reason": "Alesan:",
"tags-edit-revision-submit": "Larapkeun parobahan kana {{PLURAL:$1|ieu révisi|$1 révisi}}",
+ "tags-edit-success": "Parobahan dilarapkeun.",
"comparepages": "Bandinkeun kaca",
"compare-page1": "Kaca 1",
"compare-page2": "Kaca 2",
"htmlform-float-invalid": "Niléy anu diasupkeun lain angka.",
"htmlform-int-toolow": "Niléy anu diasupkeun kurang ti $1 anu pangleutikna",
"htmlform-int-toohigh": "Niléy anu diasupkeun leuwih ti $1 anu panggedéna",
+ "htmlform-required": "Ieu niléy diperlukeun",
"htmlform-submit": "Kirim",
"htmlform-reset": "Bolaykeun parobahan",
"htmlform-selectorother-other": "Lianna",
"htmlform-date-placeholder": "TTTT-BB-HH",
"htmlform-time-placeholder": "JJ:MM:DD",
"htmlform-datetime-placeholder": "TTTT-BB-HH JJ:MM:DD",
+ "htmlform-title-not-creatable": "\"$1\" lain mangrupa judul kaca nu bisa dijieun",
"htmlform-title-not-exists": "$1 euweuh.",
"htmlform-user-not-exists": "<strong>$1</strong> taya.",
"logentry-delete-delete": "$1 {{GENDER:$2|ngahapus}} kaca $3",
"logentry-upload-upload": "$1 {{GENDER:$2|ngamuat}} $3",
"log-name-tag": "Log tag",
"rightsnone": "(euweuh)",
+ "rightslogentry-temporary-group": "$1 (samentara, nika $2)",
"feedback-adding": "Nambahkeun eupan balik kana kaca...",
"feedback-back": "Balik deui",
"feedback-cancel": "Bolay",
"feedback-useragent": "Agén pamaké:",
"searchsuggest-search": "Paluruh {{SITENAME}}",
"searchsuggest-containing": "ngandung...",
+ "api-error-badtoken": "Kasalahan internal: Token goréng.",
"duration-seconds": "$1 {{PLURAL:$1|detik|detik}}",
"duration-minutes": "$1 {{PLURAL:$1|menit|menit}}",
"duration-hours": "$1 {{PLURAL:$1|jam|jam}}",
"authmanager-realname-label": "Ngaran asli",
"authmanager-realname-help": "Ngaran asli pamaké",
"authmanager-provider-password": "Oténtikasi dumasar kecap sandi",
+ "authmanager-provider-temporarypassword": "Kecap sandi samentara",
+ "authprovider-confirmlink-success-line": "$1: Numbukeun ngahasil.",
"authprovider-resetpass-skip-label": "Liwatan",
"authprovider-resetpass-skip-help": "Liwatan pamulangan kecap sandi",
"authform-newtoken": "Token leungit. $1",
"cannotauth-not-allowed": "Anjeun teu diidinan pikeun maké ieu kaca",
"changecredentials": "Robah krédensial",
"changecredentials-submit": "Robah krédensial",
+ "changecredentials-invalidsubpage": "$1 téh jinis krédensial nu teu sah.",
"removecredentials": "Pupus krédensial",
"removecredentials-submit": "Pupus krédensial",
"removecredentials-success": "Krédensial Anda geus dipupus.",
"restrictionsfield-help": "Hiji alamat IP atawa pantengan CIDR per baris. Pikeun ngahurungkeun sakumna, paké:\n<pre>0.0.0.0/0\n::/0</pre>",
"revid": "révisi $1",
"pageid": "ID kaca $1",
+ "rawhtml-notallowed": "Tag <html> teu bisa dipaké di luar kaca normal.",
"gotointerwiki": "Ninggalkeun{{SITENAME}}",
"gotointerwiki-invalid": "Judul nu ditangtukeun teu sah.",
"undelete-cantedit": "Anjeun teu bisa ngabolaykeun pamupusan ieu kaca lantaran anjeun teu bisa ngédit ieu kaca.",
"unwatchthispage": "停止监视",
"notanarticle": "非内容页面",
"notvisiblerev": "上次由不同用户所作的版本已经删除",
- "watchlist-details": "æ\82¨ç\9a\84ç\9b\91è§\86å\88\97表ä¸æ\9c\89{{PLURAL:$1|$1个页é\9d¢}}ï¼\88å\8f\8a讨论页)。",
+ "watchlist-details": "æ\82¨ç\9a\84ç\9b\91è§\86å\88\97表ä¸æ\9c\89{{PLURAL:$1|$1个页é\9d¢}}ï¼\88å\8c\85å\90«讨论页)。",
"wlheader-enotif": "已启用电子邮件通知。",
"wlheader-showupdated": "您上次访问后发生更改的页面<strong>加粗</strong>显示。",
"wlnote": "下面是{{PLURAL:$2|过去<strong>$2</strong>小时}}的{{PLURAL:$1|最后<strong>$1</strong>个更改}},截至$3 $4。",
require_once __DIR__ . '/Maintenance.php';
+use MediaWiki\MediaWikiServices;
+
/**
* @ingroup Maintenance
*/
$scanned = 0;
$withcache = 0;
$withdiff = 0;
+ $parserCache = MediaWikiServices::getInstance()->getParserCache();
while ( $pages-- > 0 ) {
$row = $dbr->selectRow( 'page', '*',
[
$parserOptions = $page->makeParserOptions( 'canonical' );
- $parserOutputOld = ParserCache::singleton()->get( $page, $parserOptions );
+ $parserOutputOld = $parserCache->get( $page, $parserOptions );
if ( $parserOutputOld ) {
$t1 = microtime( true );
}
.fancycaptcha-captcha-container {
- background-color: #f8f8f8;
- border: 1px solid #c9c9c9;
- padding: 10px;
- text-align: center;
+ background-color: #f8f9fa;
margin-bottom: 15px;
+ border: 1px solid #c8ccd1;
+ border-radius: 2px;
+ padding: 8px;
+ text-align: center;
}
.mw-createacct-captcha-assisted {
/* Put a border around the fancycaptcha-image-container. */
.fancycaptcha-captcha-and-reload {
- border: 1px solid #c9c9c9;
+ border: 1px solid #c8ccd1;
+ border-radius: 2px 2px 0 0;
/* Other display formats end up too wide */
display: table-cell;
width: 270px;
background-color: #fff;
}
+.fancycaptcha-captcha-container .mw-ui-input {
+ margin-top: -1px;
+ border-color: #c8ccd1;
+ border-radius: 0 0 2px 2px;
+}
+
/* Make the fancycaptcha-image-container full-width within its parent. */
.fancycaptcha-image-container {
width: 100%;
--- /dev/null
+<?php
+
+use MediaWiki\Shell\Command;
+
+/**
+ * @group Shell
+ */
+class CommandTest extends PHPUnit_Framework_TestCase {
+ /**
+ * @expectedException PHPUnit_Framework_Error_Notice
+ */
+ public function testDestruct() {
+ if ( defined( 'HHVM_VERSION' ) ) {
+ $this->markTestSkipped( 'destructors are unreliable in HHVM' );
+ }
+ $command = new Command();
+ $command->params( 'true' );
+ }
+
+ private function requirePosix() {
+ if ( wfIsWindows() ) {
+ $this->markTestSkipped( 'This test requires a POSIX environment.' );
+ }
+ }
+
+ /**
+ * @dataProvider provideExecute
+ */
+ public function testExecute( $commandInput, $expectedExitCode, $expectedOutput ) {
+ $this->requirePosix();
+
+ $command = new Command();
+ $result = $command
+ ->params( $commandInput )
+ ->execute();
+
+ $this->assertSame( $expectedExitCode, $result->getExitCode() );
+ $this->assertSame( $expectedOutput, $result->getStdout() );
+ }
+
+ public function provideExecute() {
+ return [
+ 'success status' => [ 'true', 0, '' ],
+ 'failure status' => [ 'false', 1, '' ],
+ 'output' => [ [ 'echo', '-n', 'x', '>', 'y' ], 0, 'x > y' ],
+ ];
+ }
+
+ public function testEnvironment() {
+ $this->requirePosix();
+
+ $command = new Command();
+ $result = $command
+ ->params( [ 'printenv', 'FOO' ] )
+ ->environment( [ 'FOO' => 'bar' ] )
+ ->execute();
+ $this->assertSame( "bar\n", $result->getStdout() );
+ }
+
+ public function testOutput() {
+ global $IP;
+
+ $this->requirePosix();
+
+ $command = new Command();
+ $result = $command
+ ->params( [ 'ls', "$IP/index.php" ] )
+ ->execute();
+ $this->assertSame( "$IP/index.php", trim( $result->getStdout() ) );
+
+ $command = new Command();
+ $result = $command
+ ->params( [ 'ls', 'index.php', 'no-such-file' ] )
+ ->includeStderr()
+ ->execute();
+ $this->assertRegExp( '/^.+no-such-file.*$/m', $result->getStdout() );
+ }
+
+ public function testT69870() {
+ $commandLine = wfIsWindows()
+ // 333 = 331 + CRLF
+ ? ( 'for /l %i in (1, 1, 1001) do @echo ' . str_repeat( '*', 331 ) )
+ : 'printf "%-333333s" "*"';
+
+ // Test several times because it involves a race condition that may randomly succeed or fail
+ for ( $i = 0; $i < 10; $i++ ) {
+ $command = new Command();
+ $output = $command->unsafeParams( $commandLine )
+ ->execute()
+ ->getStdout();
+ $this->assertEquals( 333333, strlen( $output ) );
+ }
+ }
+}
--- /dev/null
+<?php
+
+use MediaWiki\Shell\Shell;
+
+/**
+ * @group Shell
+ */
+class ShellTest extends PHPUnit_Framework_TestCase {
+ public function testIsDisabled() {
+ $this->assertInternalType( 'bool', Shell::isDisabled() ); // sanity
+ }
+
+ /**
+ * @dataProvider provideEscape
+ */
+ public function testEscape( $args, $expected ) {
+ if ( wfIsWindows() ) {
+ $this->markTestSkipped( 'This test requires a POSIX environment.' );
+ }
+ $this->assertSame( $expected, call_user_func_array( [ Shell::class, 'escape' ], $args ) );
+ }
+
+ public function provideEscape() {
+ return [
+ 'simple' => [ [ 'true' ], "'true'" ],
+ 'with args' => [ [ 'convert', '-font', 'font name' ], "'convert' '-font' 'font name'" ],
+ 'array' => [ [ [ 'convert', '-font', 'font name' ] ], "'convert' '-font' 'font name'" ],
+ ];
+ }
+}