The skins/common/wikiprintable.css file no longer exists. Return value of
Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
module instead or base your skin on SkinTemplate.
+* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
+ of media handler overriding MediaHandler::parseParamString.
+* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
+ to the Vector skin in core.
== Compatibility ==
'ExtractThumbParameters': Called when extracting thumbnail parameters from a
thumbnail file name.
+DEPRECATED: Media handler should override MediaHandler::parseParamString instead.
$thumbname: the base name of the thumbnail file
&$params: the currently extracted params (has source name, temp or archived zone)
* - DBO_DEFAULT -- turns on DBO_TRX only if !$wgCommandLineMode (recommended)
* - DBO_DEBUG -- equivalent of $wgDebugDumpSql
* - DBO_TRX -- wrap entire request in a transaction
- * - DBO_IGNORE -- ignore errors (not useful in LocalSettings.php)
* - DBO_NOBUFFER -- turn off buffering (not useful in LocalSettings.php)
* - DBO_PERSISTENT -- enables persistent database connections
* - DBO_SSL -- uses SSL/TLS encryption in database connections, if available
static function jobs() {
if ( !isset( self::$jobs ) ) {
$dbr = wfGetDB( DB_SLAVE );
- self::$jobs = $dbr->estimateRowCount( 'job' );
+ self::$jobs = array_sum( JobQueueGroup::singleton()->getQueueSizes() );
/* Zero rows still do single row read for row that doesn't exist, but people are annoyed by that */
if ( self::$jobs == 1 ) {
self::$jobs = 0;
foreach ( $ipchain as $i => $curIP ) {
$curIP = IP::sanitizeIP( IP::canonicalize( $curIP ) );
if ( wfIsTrustedProxy( $curIP ) && isset( $ipchain[$i + 1] ) ) {
- if ( wfIsConfiguredProxy( $curIP ) || // bug 48919
- ( IP::isPublic( $ipchain[$i + 1] ) || $wgUsePrivateIPs )
+ if ( wfIsConfiguredProxy( $curIP ) || // bug 48919; treat IP as sane
+ IP::isPublic( $ipchain[$i + 1] ) ||
+ $wgUsePrivateIPs
) {
- $ip = IP::canonicalize( $ipchain[$i + 1] );
+ $nextIP = IP::canonicalize( $ipchain[$i + 1] );
+ if ( !$nextIP && wfIsConfiguredProxy( $ip ) ) {
+ // We have not yet made it past CDN/proxy servers of this site,
+ // so either they are misconfigured or there is some IP spoofing.
+ throw new MWException( "Invalid IP given in XFF '$forwardedFor'." );
+ }
+ $ip = $nextIP;
continue;
}
}
wfRunHooks( 'GetIP', array( &$ip ) );
if ( !$ip ) {
- throw new MWException( "Unable to determine IP" );
+ throw new MWException( "Unable to determine IP." );
}
wfDebug( "IP: $ip\n" );
} elseif ( $curid ) {
// URLs like this are generated by RC, because rc_title isn't always accurate
$ret = Title::newFromID( $curid );
- } elseif ( $title == '' && $action != 'delete' ) {
- $ret = Title::newMainPage();
} else {
$ret = Title::newFromURL( $title );
// Alias NS_MEDIA page URLs to NS_FILE...we only use NS_MEDIA
$wgContLang->findVariantLink( $title, $ret );
}
}
- // For non-special titles, check for implicit titles
- if ( is_null( $ret ) || !$ret->isSpecialPage() ) {
+
+ // If title is not provided, always allow oldid and diff to set the title.
+ // If title is provided, allow oldid and diff to override the title, unless
+ // we are talking about a special page which might use these parameters for
+ // other purposes.
+ if ( $ret === null || !$ret->isSpecialPage() ) {
// We can have urls with just ?diff=,?oldid= or even just ?diff=
$oldid = $request->getInt( 'oldid' );
$oldid = $oldid ? $oldid : $request->getInt( 'diff' );
}
}
+ // Use the main page as default title if nothing else has been provided
+ if ( $ret === null && strval( $title ) === '' && $action !== 'delete' ) {
+ $ret = Title::newMainPage();
+ }
+
if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
$ret = SpecialPage::getTitleFor( 'Badtitle' );
}
$title = Title::newFromText( NS_MAIN, 'REDIR' );
$this->context->setTitle( $title );
$output = $this->context->getOutput();
+ // Since we only do this redir to change proto, always send a vary header
+ $output->addVaryHeader( 'X-Forwarded-Proto' );
$output->redirect( $redirUrl );
$output->output();
wfProfileOut( __METHOD__ );
* code should use lastErrno() and lastError() to handle the
* situation as appropriate.
*
+ * Do not use this function outside of the Database classes.
+ *
* @param $ignoreErrors bool|null
*
* @return bool The previous value of the flag.
* @param $flag Integer: DBO_* constants from Defines.php:
* - DBO_DEBUG: output some debug info (same as debug())
* - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
- * - DBO_IGNORE: ignore errors (same as ignoreErrors())
* - DBO_TRX: automatically start transactions
* - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
* and removes it in command line mode
$this->lockedOwnTrx = true;
}
$this->locked++;
+ // Bug 54736: use simple lock to handle when the file does not exist.
+ // SELECT FOR UPDATE only locks records not the gaps where there are none.
+ $cache = wfGetMainCache();
+ $key = $this->getCacheKey();
+ if ( !$cache->lock( $key, 60 ) ) {
+ throw new MWException( "Could not acquire lock for '{$this->getName()}.'" );
+ }
+ $dbw->onTransactionIdle( function() use ( $cache, $key ) {
+ $cache->delete( $key ); // release on commit
+ } );
}
return $dbw->selectField( 'image', '1',
'config-outdated-sqlite' => "'''Warnung:''' SQLite $1 ass installéiert. Allerdengs brauch MediaWiki SQLite $2 oder méi nei. SQLite ass dofir net disponibel.",
'config-memory-bad' => "'''Opgepasst:''' De Parameter <code>memory_limit</code> vu PHP ass $1.
Dat ass wahrscheinlech ze niddreg.
-D'Installatioun kéint net fonctionnéieren.",
+D'Installatioun kéint net funktionéieren.",
'config-xcache' => '[http://xcache.lighttpd.net/ XCache] ass installéiert',
'config-apc' => '[http://www.php.net/apc APC] ass installéiert',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] ass installéiert',
'config-advanced-settings' => 'Erweidert Astellungen',
'config-extensions' => 'Erweiderungen',
'config-install-step-done' => 'fäerdeg',
- 'config-install-step-failed' => 'huet net fonctionnéiert',
+ 'config-install-step-failed' => 'huet net funktionéiert',
'config-install-extensions' => 'Mat den Ereiderungen',
'config-install-database' => 'Datebank gëtt installéiert',
'config-install-pg-plpgsql' => 'No der Sprooch PL/pgSQL sichen',
'config-pg-no-plpgsql' => "Fir d'Datebank $1 muss d'Datebanksprooch PL/pgSQL installéiert ginn",
'config-install-user' => 'Datebank Benotzer uleeën',
'config-install-user-alreadyexists' => 'De Benotzer "$1" gëtt et schonn!',
- 'config-install-user-create-failed' => 'D\'Opmaache vum Benotzer "$1" huet net fonctionnéiert: $2',
- 'config-install-user-grant-failed' => 'D\'Bäisetze vu Rechter fir de Benotzer "$1" huet net fonctionnéiert: $2',
+ 'config-install-user-create-failed' => 'D\'Opmaache vum Benotzer "$1" huet net funktionéiert: $2',
+ 'config-install-user-grant-failed' => 'D\'Bäisetze vu Rechter fir de Benotzer "$1" huet net funktionéiert: $2',
'config-install-user-missing' => 'De Benotzer "$1" deen ugi gouf gëtt et net.',
'config-install-user-missing-create' => 'De spezifizéierte Benotzer "$1" gëtt et net.
Klickt d\'Checkbox "Benotzerkont uleeën" wann Dir dee Benotzer uleeë wëllt.',
'config-admin-password-confirm' => 'پټنوم يو ځل بيا:',
'config-admin-email' => 'برېښليک پته:',
'config-profile-wiki' => 'پرانيستې ويکي',
- 'config-license-pd' => 'Ù¼Ù\88Ù\84Ú«ړی شپول',
+ 'config-license-pd' => 'Ù¼Ù\88Ù\84Ú¯ړی شپول',
'config-email-settings' => 'د برېښليک امستنې',
'config-install-step-done' => 'ترسره شو',
'config-install-tables' => 'لښتيالونه جوړول',
Para atualizar esta instalação, insira no box abaixo o valor de <code>$wgUpgradeKey</code>.
Essa informação pode ser encontrada no arquivo <code>LocalSettings.php</code>',
'config-localsettings-cli-upgrade' => 'Foi detectada a existência do arquivo <code><code>LocalSettings.php</code></code>.
-Esta instalação deverá ser atualizada através do <code>update.php</code>',
+Atualize esta instalação executando o arquivo <code>update.php</code>',
'config-localsettings-key' => 'Chave de atualização:',
'config-localsettings-badkey' => 'A chave fornecida está incorreta.',
'config-upgrade-key-missing' => 'Foi detectada uma instalação existente do MediaWiki.
-Para atualizar esta instalação, por favor insira a seguinte linha na parte inferior do seu <code>LocalSettings.php</code>:
+Para atualizar esta instalação, insira a seguinte linha na parte inferior do seu <code>LocalSettings.php</code>:
+
+$1',
+ 'config-localsettings-incomplete' => 'O arquivo <code>LocalSettings.php</code> parece incompleto.
+A variável $1 não está definida.
+Altere seu <code>LocalSettings.php</code> com a definição dessa variável e clique em "{{int:Config-continue}}".',
+ 'config-localsettings-connection-error' => 'Ocorreu um erro ao conectar ao banco de dados através das configurações presentes ou no <code>LocalSettings.php</code> ou no <code>AdminSettings.php</code>. Corrija essas configurações e tente novamente.
$1',
'config-session-error' => 'Erro ao iniciar a sessão: $1',
Reinicie o processo de instalação.',
'config-no-session' => 'Os seus dados de sessão foram perdidos!
Verifique o seu php.ini e certifique-se de que em <code>session.save_path</code> está definido um diretório apropriado.',
- 'config-your-language' => 'A sua língua:',
- 'config-your-language-help' => 'Selecione a língua que será usada durante o processo de instalação.',
- 'config-wiki-language' => 'Língua da wiki:',
- 'config-wiki-language-help' => 'Selecione a língua que será predominante na wiki.',
+ 'config-your-language' => 'Seu idioma:',
+ 'config-your-language-help' => 'Selecione o idioma que será usado durante o processo de instalação.',
+ 'config-wiki-language' => 'Idioma do wiki:',
+ 'config-wiki-language-help' => 'Selecione o idioma em que o wiki será predominantemente escrito.',
'config-back' => '← Voltar',
'config-continue' => 'Continuar →',
- 'config-page-language' => 'Língua',
+ 'config-page-language' => 'Idioma',
'config-page-welcome' => 'Bem-vindo(a) ao MediaWiki!',
- 'config-page-dbconnect' => 'Ligar à base de dados',
+ 'config-page-dbconnect' => 'Conectar ao banco de dados',
'config-page-upgrade' => 'Atualizar a instalação existente',
- 'config-page-dbsettings' => 'Configurações da base de dados',
+ 'config-page-dbsettings' => 'Configurações do banco de dados',
'config-page-name' => 'Nome',
'config-page-options' => 'Opções',
'config-page-install' => 'Instalar',
- 'config-page-complete' => 'Terminado!',
+ 'config-page-complete' => 'Concluído!',
'config-page-restart' => 'Reiniciar a instalação',
'config-page-readme' => 'Leia-me',
'config-page-releasenotes' => 'Notas de lançamento',
'config-page-existingwiki' => 'Wiki existente',
'config-help-restart' => 'Deseja limpar todos os dados salvos que você introduziu e reiniciar o processo de instalação?',
'config-restart' => 'Sim, reiniciar',
- 'config-welcome' => '=== Verificações do ambiente ===
-São realizadas verificações básicas para determinar se este ambiente é apropriado para instalação do MediaWiki.
-Você deverá fornecer os resultados destas verificações se você precisar de ajuda durante a instalação.', # Fuzzy
+ 'config-welcome' => '=== Verificações de ambiente ===
+São realizadas verificações básicas para determinar se este ambiente é apropriado para a instalação do MediaWiki.
+Lembre-se de incluir estas informações se for procurar por suporte para a conclusão da instalação.',
'config-copyright' => "=== Direitos autorais e Termos de uso ===
$1
Consulte a licença GNU General Public License para mais detalhes.
Em conjunto com este programa você deve ter recebido <doclink href=Copying>uma cópia da licença GNU General Public License</doclink>; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/copyleft/gpl.html leia-a na internet].",
- 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]
-* [//www.mediawiki.org/wiki/Help:Contents/pt Ajuda]
-* [//www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico]
-* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]', # Fuzzy
+ 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki Página principal do MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Manual de uso]
+* [//www.mediawiki.org/wiki/Manual:Contents Manual administrativo]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
+----
+* <doclink href=Readme>Leia-me</doclink>
+* <doclink href=ReleaseNotes>Notas de lançamento</doclink>
+* <doclink href=Copying>Licença</doclink>
+* <doclink href=UpgradeDoc>Como fazer upgrade</doclink>',
'config-env-good' => 'O ambiente foi verificado.
Você pode instalar o MediaWiki.',
'config-env-bad' => 'O ambiente foi verificado.
'config-env-php' => 'O PHP $1 está instalado.',
'config-unicode-using-utf8' => 'A usar o utf8_normalize.so, de Brian Viper, para a normalização Unicode.',
'config-unicode-using-intl' => 'Usando a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.',
- 'config-unicode-pure-php-warning' => "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode.
-Se o seu site tem um alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalização Unicode].", # Fuzzy
- 'config-no-db' => 'Não foi possível encontrar um driver de banco de dados adequado!', # Fuzzy
+ 'config-unicode-pure-php-warning' => "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode sendo usada, em seu lugar, a lenta implementação de PHP puro.
+Se o seu site tem um alto volume de tráfego, informe-se sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalização Unicode].",
+ 'config-no-db' => 'Não foi possível encontrar um driver de banco de dados adequado! É necessário instalar um driver de banco de dados para o PHP.
+São suportados os seguintes tipos de bancos de dados: $1.
+
+Se estiver em uma hospedagem partilhada, peça à sua empresa de hospedagem para instalar um driver de banco de dados adequado.
+Se você mesmo tiver compilado o PHP, reconfigure-o com um cliente de banco de dados ativado usando, por exemplo, <code>./configure --with-mysql</code>.
+Se você instalou o PHP a partir de um pacote do Debian ou do Ubuntu, instale também o módulo php5-mysql.',
'config-no-fts3' => "' ' 'Aviso' ' ': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
'config-register-globals' => "' ' 'Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está ativada.'''
' ' 'Desative-a, se puder.'''
'config-admin-name' => 'Seu nome:',
'config-admin-password' => 'Senha:',
'config-license-pd' => 'Domínio público',
- 'config-logo-help' => 'O tema padrão do MediaWiki inclui espaço para um logotipo de 135x160 pixels no canto superior esquerdo.
-Faça o upload de uma imagem com estas dimensões e introduza aqui a URL dessa imagem.
+ 'config-logo-help' => 'Faça o upload de uma imagem de tamanho adequado e insira seu URL aqui.
-Se você não pretende usar um logotipo, deixe este campo em branco.', # Fuzzy
+Você pode usar <code>$wgStylePath</code> ou <code>$wgScriptPath</code> se o seu logotipo for associado a esses diretórios.',
'config-advanced-settings' => 'Configuração avançada',
'config-extensions' => 'Extensões',
'config-install-step-done' => 'feito',
return new ArrayIterator( array() ); // not implemented
}
+ /**
+ * Do not use this function outside of JobQueue/JobQueueGroup
+ *
+ * @return string
+ * @since 1.22
+ */
+ public function getCoalesceLocationInternal() {
+ return null;
+ }
+
+ /**
+ * Check whether each of the given queues are empty.
+ * This is used for batching checks for queues stored at the same place.
+ *
+ * @param array $types List of queues types
+ * @return array|null (list of non-empty queue types) or null if unsupported
+ * @throws MWException
+ * @since 1.22
+ */
+ final public function getSiblingQueuesWithJobs( array $types ) {
+ $section = new ProfileSection( __METHOD__ );
+ return $this->doGetSiblingQueuesWithJobs( $types );
+ }
+
+ /**
+ * @see JobQueue::getSiblingQueuesWithJobs()
+ * @param array $types List of queues types
+ * @return array|null (list of queue types) or null if unsupported
+ */
+ protected function doGetSiblingQueuesWithJobs( array $types ) {
+ return null; // not supported
+ }
+
+ /**
+ * Check the size of each of the given queues.
+ * For queues not served by the same store as this one, 0 is returned.
+ * This is used for batching checks for queues stored at the same place.
+ *
+ * @param array $types List of queues types
+ * @return array|null (job type => whether queue is empty) or null if unsupported
+ * @throws MWException
+ * @since 1.22
+ */
+ final public function getSiblingQueueSizes( array $types ) {
+ $section = new ProfileSection( __METHOD__ );
+ return $this->doGetSiblingQueueSizes( $types );
+ }
+
+ /**
+ * @see JobQueue::getSiblingQueuesSize()
+ * @param array $types List of queues types
+ * @return array|null (list of queue types) or null if unsupported
+ */
+ protected function doGetSiblingQueueSizes( array $types ) {
+ return null; // not supported
+ }
+
/**
* Call wfIncrStats() for the queue overall and for the queue type
*
}
}
+ public function getCoalesceLocationInternal() {
+ return $this->cluster ? "DBCluster:{$this->cluster}" : "LBFactory:{$this->wiki}";
+ }
+
+ protected function doGetSiblingQueuesWithJobs( array $types ) {
+ list( $dbr, $scope ) = $this->getSlaveDB();
+ $res = $dbr->select( 'job', 'DISTINCT job_cmd',
+ array( 'job_cmd' => $types ), __METHOD__ );
+
+ $types = array();
+ foreach ( $res as $row ) {
+ $types[] = $row->job_cmd;
+ }
+ return $types;
+ }
+
+ protected function doGetSiblingQueueSizes( array $types ) {
+ list( $dbr, $scope ) = $this->getSlaveDB();
+ $res = $dbr->select( 'job', array( 'job_cmd', 'COUNT(*) AS count' ),
+ array( 'job_cmd' => $types ), __METHOD__, array( 'GROUP BY' => 'job_cmd' ) );
+
+ $sizes = array();
+ foreach ( $res as $row ) {
+ $sizes[$row->job_cmd] = (int)$row->count;
+ }
+ return $sizes;
+ }
+
/**
* Recycle or destroy any jobs that have been claimed for too long
*
return $iterator;
}
+ public function getCoalesceLocationInternal() {
+ return "JobQueueFederated:wiki:" . $this->wiki;
+ }
+
+ protected function doGetSiblingQueuesWithJobs( array $types ) {
+ $result = array();
+ foreach ( $this->partitionQueues as $queue ) {
+ $nonEmpty = $queue->doGetSiblingQueuesWithJobs( $types );
+ if ( is_array( $nonEmpty ) ) {
+ $result = array_merge( $result, $nonEmpty );
+ } else {
+ return null; // not supported on all partitions; bail
+ }
+ }
+ return array_values( array_unique( $result ) );
+ }
+
+ protected function doGetSiblingQueueSizes( array $types ) {
+ $result = array();
+ foreach ( $this->partitionQueues as $queue ) {
+ $sizes = $queue->doGetSiblingQueueSizes( $types );
+ if ( is_array( $sizes ) ) {
+ foreach ( $sizes as $type => $size ) {
+ $result[$type] = isset( $result[$type] ) ? $result[$type] + $size : $size;
+ }
+ } else {
+ return null; // not supported on all partitions; bail
+ }
+ }
+ return $result;
+ }
+
public function setTestingPrefix( $key ) {
foreach ( $this->partitionQueues as $queue ) {
$queue->setTestingPrefix( $key );
protected $wiki; // string; wiki ID
+ /** @var array Map of (bucket => (queue => JobQueue, types => list of types) */
+ protected $coalescedQueues;
+
const TYPE_DEFAULT = 1; // integer; jobs popped by default
const TYPE_ANY = 2; // integer; any job
*/
public function getQueuesWithJobs() {
$types = array();
- foreach ( $this->getQueueTypes() as $type ) {
- if ( !$this->get( $type )->isEmpty() ) {
- $types[] = $type;
+ foreach ( $this->getCoalescedQueues() as $info ) {
+ $nonEmpty = $info['queue']->getSiblingQueuesWithJobs( $this->getQueueTypes() );
+ if ( is_array( $nonEmpty ) ) { // batching features supported
+ $types = array_merge( $types, $nonEmpty );
+ } else { // we have to go through the queues in the bucket one-by-one
+ foreach ( $info['types'] as $type ) {
+ if ( !$this->get( $type )->isEmpty() ) {
+ $types[] = $type;
+ }
+ }
}
}
return $types;
}
+ /**
+ * Get the size of the queus for a list of job types
+ *
+ * @return Array Map of (job type => size)
+ */
+ public function getQueueSizes() {
+ $sizeMap = array();
+ foreach ( $this->getCoalescedQueues() as $info ) {
+ $sizes = $info['queue']->getSiblingQueueSizes( $this->getQueueTypes() );
+ if ( is_array( $sizes ) ) { // batching features supported
+ $sizeMap = $sizeMap + $sizes;
+ } else { // we have to go through the queues in the bucket one-by-one
+ foreach ( $info['types'] as $type ) {
+ $sizeMap[$type] = $this->get( $type )->getSize();
+ }
+ }
+ }
+ return $sizeMap;
+ }
+
+ /**
+ * @return array
+ */
+ protected function getCoalescedQueues() {
+ global $wgJobTypeConf;
+
+ if ( $this->coalescedQueues === null ) {
+ $this->coalescedQueues = array();
+ foreach ( $wgJobTypeConf as $type => $conf ) {
+ $queue = JobQueue::factory(
+ array( 'wiki' => $this->wiki, 'type' => 'null' ) + $conf );
+ $loc = $queue->getCoalesceLocationInternal();
+ if ( !isset( $this->coalescedQueues[$loc] ) ) {
+ $this->coalescedQueues[$loc]['queue'] = $queue;
+ $this->coalescedQueues[$loc]['types'] = array();
+ }
+ if ( $type === 'default' ) {
+ $this->coalescedQueues[$loc]['types'] = array_merge(
+ $this->coalescedQueues[$loc]['types'],
+ array_diff( $this->getQueueTypes(), array_keys( $wgJobTypeConf ) )
+ );
+ } else {
+ $this->coalescedQueues[$loc]['types'][] = $type;
+ }
+ }
+ }
+
+ return $this->coalescedQueues;
+ }
+
/**
* Check if jobs should not be popped of a queue right now.
* This is only used for performance, such as to avoid spamming
foreach ( $props as $prop ) {
$keys[] = $this->getQueueKey( $prop );
}
- $res = ( $conn->delete( $keys ) !== false );
+ return ( $conn->delete( $keys ) !== false );
} catch ( RedisException $e ) {
$this->throwRedisException( $this->server, $conn, $e );
}
}
}
+ public function getCoalesceLocationInternal() {
+ return "RedisServer:" . $this->server;
+ }
+
+ protected function doGetSiblingQueuesWithJobs( array $types ) {
+ return array_keys( array_filter( $this->doGetSiblingQueueSizes( $types ) ) );
+ }
+
+ protected function doGetSiblingQueueSizes( array $types ) {
+ $sizes = array(); // (type => size)
+ $types = array_values( $types ); // reindex
+ try {
+ $conn = $this->getConnection();
+ $conn->multi( Redis::PIPELINE );
+ foreach ( $types as $type ) {
+ $conn->lSize( $this->getQueueKey( 'l-unclaimed', $type ) );
+ }
+ $res = $conn->exec();
+ if ( is_array( $res ) ) {
+ foreach ( $res as $i => $size ) {
+ $sizes[$types[$i]] = $size;
+ }
+ }
+ } catch ( RedisException $e ) {
+ $this->throwRedisException( $this->server, $conn, $e );
+ }
+ return $sizes;
+ }
+
/**
* This function should not be called outside JobQueueRedis
*
/**
* @param $prop string
+ * @param $type string|null
* @return string
*/
- private function getQueueKey( $prop ) {
+ private function getQueueKey( $prop, $type = null ) {
+ $type = is_string( $type ) ? $type : $this->type;
list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
if ( strlen( $this->key ) ) { // namespaced queue (for testing)
- return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, $this->key, $prop );
+ return wfForeignMemcKey( $db, $prefix, 'jobqueue', $type, $this->key, $prop );
} else {
- return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, $prop );
+ return wfForeignMemcKey( $db, $prefix, 'jobqueue', $type, $prop );
}
}
* Merge a parameter array into a string appropriate for inclusion in filenames
*
* @param $params array Array of parameters that have been through normaliseParams.
+ * @return String
*/
abstract function makeParamString( $params );
/**
* Parse a param string made with makeParamString back into an array
*
- * @param $str string
+ * @param $str string The parameter string without file name (e.g. 122px)
+ * @return Array|Boolean Array of parameters or false on failure.
*/
abstract function parseParamString( $str );
public static function isValidModuleName( $moduleName ) {
return !preg_match( '/[|,!]/', $moduleName ) && strlen( $moduleName ) <= 255;
}
+
+ /**
+ * Returns LESS compiler set up for use with MediaWiki
+ *
+ * @since 1.22
+ * @return lessc
+ */
+ public static function getLessCompiler() {
+ global $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths;
+
+ $less = new lessc();
+ $less->setPreserveComments( true );
+ $less->setVariables( self::getLESSVars() );
+ $less->setImportDir( $wgResourceLoaderLESSImportPaths );
+ foreach ( $wgResourceLoaderLESSFunctions as $name => $func ) {
+ $less->registerFunction( $name, $func );
+ }
+ return $less;
+ }
+
+ /**
+ * Get global LESS variables.
+ *
+ * $since 1.22
+ * @return array: Map of variable names to string CSS values.
+ */
+ public static function getLESSVars() {
+ global $wgResourceLoaderLESSVars;
+
+ static $lessVars = null;
+ if ( $lessVars === null ) {
+ $lessVars = $wgResourceLoaderLESSVars;
+ // Sort by key to ensure consistent hashing for cache lookups.
+ ksort( $lessVars );
+ }
+ return $lessVars;
+ }
}
* @param string $path
* @return string: the stylesheet language name
*/
- protected function getStyleSheetLang( $path ) {
+ public function getStyleSheetLang( $path ) {
return preg_match( '/\.less$/i', $path ) ? 'less' : 'css';
}
);
}
+ /**
+ * Returns all style files used by this module
+ * @return array
+ */
+ public function getAllStyleFiles() {
+ $files = array();
+ foreach( (array)$this->styles as $key => $value ) {
+ if ( is_array( $value ) ) {
+ $path = $key;
+ } else {
+ $path = $value;
+ }
+ $files[] = $this->getLocalPath( $path );
+ }
+ return $files;
+ }
+
/**
* Gets the contents of a list of JavaScript files.
*
protected static function getLESSCacheKey( $fileName ) {
global $wgShowExceptionDetails;
- $vars = json_encode( self::getLESSVars() );
+ $vars = json_encode( ResourceLoader::getLESSVars() );
$hash = md5( $fileName . $vars );
return wfMemcKey( 'resourceloader', 'less', (string)$wgShowExceptionDetails, $hash );
}
$source = $fileName;
}
- $compiler = self::lessCompiler();
+ $compiler = ResourceLoader::getLessCompiler();
$expire = 0;
try {
$result = $compiler->cachedCompile( $source );
private static $jsParser;
private static $parseCacheVersion = 1;
- /** @var array Global LESS variables */
- private static $lessVars;
-
/**
* Validate a given script file; if valid returns the original source.
* If invalid, returns replacement JS source that throws an exception.
return self::$jsParser;
}
- /**
- * @since 1.22
- * @return lessc
- */
- protected static function lessCompiler() {
- global $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths;
-
- $less = new lessc();
- $less->setPreserveComments( true );
- $less->setVariables( self::getLESSVars() );
- $less->setImportDir( $wgResourceLoaderLESSImportPaths );
- foreach ( $wgResourceLoaderLESSFunctions as $name => $func ) {
- $less->registerFunction( $name, $func );
- }
- return $less;
- }
-
- /**
- * Get global LESS variables.
- *
- * @since 1.22
- * @return array: Map of variable names to string CSS values.
- */
- protected static function getLESSVars() {
- global $wgResourceLoaderLESSVars;
-
- if ( self::$lessVars === null ) {
- self::$lessVars = $wgResourceLoaderLESSVars;
- // Sort by key to ensure consistent hashing for cache lookups.
- ksort( self::$lessVars );
- }
- return self::$lessVars;
- }
-
/**
* Safe version of filemtime(), which doesn't throw a PHP warning if the file doesn't exist
* but returns 1 instead.
wfProfileIn( __METHOD__ );
- $page = WikiPage::newFromId( $this->id );
+ $page = WikiPage::newFromId( $this->id, WikiPage::READ_LATEST );
$indexTitle = Title::indexTitle( $this->title->getNamespace(), $this->title->getText() );
foreach ( SearchEngine::getSearchTypes() as $type ) {
if ( $wgSecureLogin && wfCanIPUseHTTPS( $this->getRequest()->getIP() ) ) {
$url = wfAppendQuery( $url, 'fromhttp=1' );
$this->getOutput()->redirect( $url );
+ // Since we only do this redir to change proto, always vary
+ $this->getOutput()->addVaryHeader( 'X-Forwarded-Proto' );
return;
} else {
// A wiki without HTTPS login support should set $wgServer to
}
return $word;
}
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 4 );
-
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2: return $forms[1];
- case 3:
- case 4: return $forms[2];
- default: return $forms[3];
- }
- }
}
+++ /dev/null
-<?php
-/**
- * Hindi (हिन्दी) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Hindi (हिन्दी)
- *
- * @ingroup Language
- */
-class LanguageHi extends Language {
- /**
- * Use singular form for zero
- *
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 2 );
-
- return ( $count <= 1 ) ? $forms[0] : $forms[1];
- }
-}
+++ /dev/null
-<?php
-/**
- * Malagasy (Malagasy) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Malagasy (Malagasy)
- *
- * @ingroup Language
- */
-class LanguageMg extends Language {
- /**
- * Use singular form for zero
- *
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 2 );
-
- return ( $count <= 1 ) ? $forms[0] : $forms[1];
- }
-}
+++ /dev/null
-<?php
-/**
- * Maltese (Malti) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Niklas Laxström
- * @ingroup Language
- */
-
-/**
- * Maltese (Malti)
- *
- * @ingroup Language
- */
-class LanguageMt extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
-
- $forms = $this->preConvertPlural( $forms, 4 );
-
- if ( $count == 1 ) {
- $index = 0;
- } elseif ( $count == 0 || ( $count % 100 > 1 && $count % 100 < 11 ) ) {
- $index = 1;
- } elseif ( $count % 100 > 10 && $count % 100 < 20 ) {
- $index = 2;
- } else {
- $index = 3;
- }
- return $forms[$index];
- }
-}
* @ingroup Language
*/
class LanguagePl extends Language {
-
- /**
- * @param $count string
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 3 );
- $count = abs( $count );
- if ( $count == 1 ) {
- return $forms[0]; // singular
- }
- switch ( $count % 10 ) {
- case 2:
- case 3:
- case 4:
- if ( $count / 10 % 10 != 1 ) {
- return $forms[1]; // plural
- }
- default:
- return $forms[2]; // plural genitive
- }
- }
-
/**
* @param $_ string
* @return string
+++ /dev/null
-<?php
-/**
- * Serbo-Croatian (Srpskohrvatski / Српскохрватски) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Serbo-Croatian (Srpskohrvatski / Српскохрватски)
- *
- * @ingroup Language
- */
-class LanguageSh extends Language {
-
- /**
- * @param $count string
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
-
- // if no number with word, then use $form[0] for singular and $form[1] for plural or zero
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#sh
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * Slovak (Slovenčina) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Slovak (Slovenčina)
- *
- * @ingroup Language
- */
-class LanguageSk extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count == 1 ) {
- $index = 0;
- } elseif ( $count == 2 || $count == 3 || $count == 4 ) {
- $index = 1;
- } else {
- $index = 2;
- }
- return $forms[$index];
- }
-}
+++ /dev/null
-<?php
-/**
- * Tigrinya (ትግርኛ) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Tigrinya (ትግርኛ)
- *
- * @ingroup Language
- */
-class LanguageTi extends Language {
- /**
- * Use singular form for zero
- *
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 2 );
-
- return ( $count <= 1 ) ? $forms[0] : $forms[1];
- }
-}
+++ /dev/null
-<?php
-/**
- * Tagalog (Tagalog) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Tagalog (Tagalog)
- *
- * @ingroup Language
- */
-class LanguageTl extends Language {
- /**
- * Use singular form for zero
- *
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 2 );
-
- return ( $count <= 1 ) ? $forms[0] : $forms[1];
- }
-}
* @ingroup Language
*/
class LanguageWa extends Language {
- /**
- * Use singular form for zero
- *
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 2 );
-
- return ( $count <= 1 ) ? $forms[0] : $forms[1];
- }
/**
* Dates in Walloon are "1î d' <monthname>" for 1st of the month,
'table_pager_empty' => 'لا نتائج',
# Auto-summaries
-'autosumm-blank' => 'Ø£Ù\81رغ الصفحة',
+'autosumm-blank' => 'Ø¥Ù\81راغ الصفحة',
'autosumm-replace' => "استبدال الصفحة ب'$1'",
'autoredircomment' => 'تحويل إلى [[$1]]',
'autosumm-new' => "أنشأ الصفحة ب'$1'",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'Tocante a {{SITENAME}}',
'aboutpage' => 'Project:Tocante a',
-'copyright' => 'El conteníu ta disponible baxo los términos de la $1.',
+'copyright' => "El conteníu ta disponible baxo los términos de la $1 si nun s'indica otra cosa.",
'copyrightpage' => "{{ns:project}}:Drechos d'autor",
'currentevents' => 'Fechos actuales',
'currentevents-url' => 'Project:Fechos actuales',
'action-protect' => 'camudar los niveles de proteición pa esta páxina',
'action-rollback' => "Revertir rápido les ediciones del caberu usuariu qu'editó una páxina determinada",
'action-import' => 'importar esta páxina dende otra wiki',
-'action-importupload' => "importar esta páxina dende una xubida d'archivu",
+'action-importupload' => 'importar esta páxina dende un ficheru xubíu',
'action-patrol' => "marcar les ediciones d'otros como supervisaes",
'action-autopatrol' => 'marcar la to edición como supervisada',
'action-unwatchedpages' => 'ver la llista de páxines non vixilaes',
'listusers' => "Llista d'usuarios",
'listusers-editsonly' => 'Amosar namái usuarios con ediciones',
'listusers-creationsort' => 'Ordenar por data de creación',
+'listusers-desc' => "Ordenar n'orde descendente",
'usereditcount' => '$1 {{PLURAL:$1|edición|ediciones}}',
'usercreated' => "{{GENDER:$3|Creáu el|Creada'l}} $1 a les $2",
'newpages' => 'Páxines nueves',
La postrer edición foi fecha por [[User:$3|$3]] ([[User talk:$3|alderique]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "El resume de la edición yera: \"''\$1''\".",
'revertpage' => 'Revertíes les ediciones de [[Special:Contributions/$2|$2]] ([[User talk:$2|alderique]]) hasta la cabera versión de [[User:$1|$1]]',
-'revertpage-nouser' => "Revertíes les ediciones d'un usuariu tapecíu a la cabera revisión de [[User:$1|$1]]",
+'revertpage-nouser' => 'Revertíes les ediciones de (usuariu desaniciáu) a la cabera revisión de {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Revertíes les ediciones de $1; camudáu a la última versión de $2.',
# Edit tokens
'limitreport-ppvisitednodes' => 'Cuenta de noyos visitaos pol preprocesador',
'limitreport-ppgeneratednodes' => 'Cuenta de noyos xeneraos pol preprocesador',
'limitreport-postexpandincludesize' => "Tamañu d'inclusión de post-espansión",
-'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-templateargumentsize' => 'Tamañu del argumentu de plantía',
-'limitreport-templateargumentsize-value' => '$1/$2 bytes',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-expansiondepth' => "Máxima fondura d'espansión",
'limitreport-expensivefunctioncount' => "Cuenta de funciones d'analís costoses",
'action-block' => 'блякаваньне гэтага ўдзельніка ад рэдагаваньняў',
'action-protect' => 'зьмену ўзроўню абароны гэтай старонкі',
'action-rollback' => 'хуткі адкат рэдагаваньняў апошняга ўдзельніка, які рэдагаваў старонку',
-'action-import' => 'імпарт гэтай старонкі зь іншай вікі',
-'action-importupload' => 'імпарт гэтай старонкі праз загрузку файла',
+'action-import' => 'імпарт старонак зь іншай вікі',
+'action-importupload' => 'імпарт старонак праз загрузку файла',
'action-patrol' => 'пазначэньне чужых рэдагаваньняў як «патруляваныя»',
'action-autopatrol' => 'пазначэньне ўласных рэдагаваньняў як «патруляваныя»',
'action-unwatchedpages' => 'прагляд сьпісу старонак, за якімі ніхто не назірае',
Апошнія зьмены зробленыя [[User:$3|$3]] ([[User talk:$3|гутаркі]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Кароткае апісаньне зьменаў было: «''$1''».",
'revertpage' => 'Рэдагаваньні [[Special:Contributions/$2|$2]] ([[User talk:$2|гутаркі]]) скасаваныя да папярэдняй вэрсіі [[User:$1|$1]]',
-'revertpage-nouser' => 'Рэдагаваньні схаванага ўдзельніка скасаваныя да папярэдняй вэрсіі [[User:$1|$1]]',
+'revertpage-nouser' => 'Рэдагаваньні схаванага ўдзельніка скасаваныя да папярэдняй вэрсіі {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Адмененыя рэдагаваньні $1;
вернутая папярэдняя вэрсія $2.',
'limitreport-ppvisitednodes' => 'Колькасьць наведаных прэпрацэсарам вузлоў',
'limitreport-ppgeneratednodes' => 'Колькасьць створаных прэпрацэсарам вузлоў',
'limitreport-postexpandincludesize' => 'Памер уключэньняў па разгортваньні',
-'limitreport-postexpandincludesize-value' => '$1/$2 байт',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байт}}',
'limitreport-templateargumentsize' => 'Памер аргумэнтаў шаблёнаў',
-'limitreport-templateargumentsize-value' => '$1/$2 байт',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт}}',
'limitreport-expansiondepth' => 'Найбольшая глыбіня разгортваньня',
'limitreport-expensivefunctioncount' => 'Колькасьць дарагіх функцыяў парсэра',
'logentry-delete-event-legacy' => 'Kemmet eo bet gwelusted darvoudoù ar marilh $3 gant $1',
'logentry-delete-revision-legacy' => 'Kemmet eo bet gwelusted ar reizhadennoù war ar bajenn $3 gant $1',
'logentry-suppress-delete' => '$1 {{GENDER:$2|en deus dilamet}} ar bajenn $3',
-'logentry-suppress-event' => "Kemmet eo bet dre guzh gwelusted {{PLURAL:$5|un darvoud eus ar marilh|$5 darvoudoù eus ar marilh}} d'an $3 gant $1 : $4",
+'logentry-suppress-event' => "Kemmet eo bet dre guzh gwelusted {{PLURAL:$5|un darvoud eus ar marilh|$5 darvoud eus ar marilh}} d'an $3 gant $1 : $4",
'logentry-suppress-revision' => 'Kemmet eo bet dre guzh gwelusted {{PLURAL:$5|reizhadenn|$5 reizhadenn}} war ar bajenn $3 gant $1 : $4',
'logentry-suppress-event-legacy' => "Kemmet eo bet dre guzh gwelusted darvoudoù ar marilh d'an $3 gant $1",
'logentry-suppress-revision-legacy' => 'Kemmet eo bet dre guzh gwelusted ar reizhadennoù war ar bajenn $3 gant $1',
'limitreport-cputime-value' => '$1 {{PLURAL:$1|eiladenn}}',
'limitreport-walltime' => 'Amzer implij gwirion',
'limitreport-walltime-value' => '$1 {{PLURAL:$1|eiladenn}}',
-'limitreport-postexpandincludesize-value' => '$1/$2 okted',
-'limitreport-templateargumentsize-value' => '$1/$2 okted',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|okted}}',
+'limitreport-templateargumentsize' => 'Ment arguzenn ar patrom',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|okted}}',
);
'viewtalkpage' => 'بینینی لێدوان',
'otherlanguages' => 'بە زمانەکانی تر',
'redirectedfrom' => '(ڕەوانەکراوە لە $1ەوە)',
-'redirectpagesub' => 'پەڕەی ڕەوانەکردن',
+'redirectpagesub' => 'پەڕەی ڕەوانەکەر',
'lastmodifiedat' => 'ئەم پەڕەیە دواجار لە $2ی $1 نوێ کراوەتەوە.',
'viewcount' => 'ئەم پەڕەیە {{PLURAL:$1|یەکجار|$1 جار}} بینراوە.',
'protectedpage' => 'پەڕەی پارێزراو',
'linkshere' => "ئەم پەڕانە بەستەریان ھەیە بۆ '''[[:$1]]''':",
'nolinkshere' => "هیچ لاپەڕەیەک بەستەری نەداوە بە '''[[:$1]]'''.",
'nolinkshere-ns' => "هیچ لاپەڕەیەک بەستەری نەداوە بە '''[[:$1]]''' لە بۆشاییناوی هەڵبژێردراو.",
-'isredirect' => 'پەڕەی ڕەوانەکردن',
+'isredirect' => 'پەڕەی ڕەوانەکەر',
'istemplate' => 'بەکارھێنراو',
'isimage' => 'بەستەری پەڕگە',
-'whatlinkshere-prev' => '{{PLURAL:$1|پێشتر|$1 ی پێشتر}}',
-'whatlinkshere-next' => '{{PLURAL:$1|دیکە|$1 ی دیکە}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|پێشتر|$1ی پێشتر}}',
+'whatlinkshere-next' => '{{PLURAL:$1|دیکە|$1ی تر}}',
'whatlinkshere-links' => '← بەستەرەکان',
'whatlinkshere-hideredirs' => 'ڕەوانەکەرەکان $1',
'whatlinkshere-hidetrans' => '$1 ھێنانەناوەوەکان',
'action-block' => 'znemožnit tomuto uživateli editování',
'action-protect' => 'změnit úrovně ochrany této stránky',
'action-rollback' => 'rychle revertovat úpravy posledního uživatele editujícího danou stránku',
-'action-import' => 'importovat tuto stránku z jiné wiki',
-'action-importupload' => 'importovat tuto stránku z nahraného souboru',
+'action-import' => 'importovat stránky z jiné wiki',
+'action-importupload' => 'importovat stránky z načteného souboru',
'action-patrol' => 'označit úpravy ostatních jako zhlédnuté',
'action-autopatrol' => 'označit vlastní úpravy jako zhlédnuté',
'action-unwatchedpages' => 'zobrazit seznam nesledovaných stránek',
'listusers' => 'Uživatelé',
'listusers-editsonly' => 'Zobrazit pouze uživatele s editacemi',
'listusers-creationsort' => 'Seřadit podle data registrace',
+'listusers-desc' => 'Řadit sestupně',
'usereditcount' => '$1 {{PLURAL:$1|editace|editace|editací}}',
'usercreated' => '{{GENDER:$3|Registrován|Registrována|Registrován(a)}} $1 v $2',
'newpages' => 'Nejnovější stránky',
Poslední editaci této stránky provedl(a) [[User:$3|$3]] ([[User talk:$3|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Shrnutí editace bylo: ''„$1“''.",
'revertpage' => 'Editace uživatele „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskuse]]) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“',
-'revertpage-nouser' => 'Editace skrytého uživatele vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“',
+'revertpage-nouser' => 'Editace skrytého uživatele vráceny do předchozího stavu, jehož {{GENDER:$1|autorem|autorkou}} je „[[User:$1|$1]]“',
'rollback-success' => 'Editace uživatele $1 byly vráceny na poslední verzi od uživatele $2.',
# Edit tokens
'action-block' => 'atal y defnyddiwr hwn rhag golygu',
'action-protect' => 'newid lefelau gwarchod y dudalen hon',
'action-rollback' => 'gwrthdroi golygiadau defnyddiwr diwethaf rhyw dudalen, yn sydyn',
-'action-import' => "mewnforio'r dudalen hon o wici arall",
-'action-importupload' => "mewnforio'r dudalen hon drwy uwchlwytho ffeil XML",
+'action-import' => 'mewnforio tudalennau o wici arall',
+'action-importupload' => 'mewnforio tudalennau drwy uwchlwytho ffeil',
'action-patrol' => 'marcio bod golygiad defnyddiwr arall wedi derbyn ymweliad patrôl',
'action-autopatrol' => 'cael derbyn marc ymweliad patrôl ar eich golygiad',
'action-unwatchedpages' => 'gweld rhestr y tudalennau heb neb yn eu gwylio',
'listusers' => 'Rhestr defnyddwyr',
'listusers-editsonly' => 'Dangos y defnyddwyr hynny sydd wedi golygu rhywbeth yn unig',
'listusers-creationsort' => 'Trefnwch yn ôl dyddiad creu',
+'listusers-desc' => 'Trefnu gan ddisgyn',
'usereditcount' => '$1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad|golygiad|o olygiadau}}',
'usercreated' => '{{GENDER:$3|Crëwyd}} ar $1 am $2',
'newpages' => 'Erthyglau newydd',
[[User:$3|$3]] ([[User talk:$3|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) a wnaeth y golygiad diwethaf.",
'editcomment' => "Crynodeb y golygiad oedd: \"''\$1''\".",
'revertpage' => 'Wedi gwrthdroi golygiadau gan [[Special:Contributions/$2|$2]] ([[User talk:$2|Sgwrs]]); wedi adfer y golygiad diweddaraf gan [[User:$1|$1]]',
-'revertpage-nouser' => 'Wedi gwrthdroi golygiadau gan ddefnyddiwr cudd; wedi adfer y golygiad diweddaraf gan [[User:$1|$1]]',
+'revertpage-nouser' => 'Wedi gwrthdroi golygiadau gan ddefnyddiwr cudd; wedi adfer y golygiad diweddaraf gan {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => "Gwrthdrowyd y golygiadau gan $1;
wedi gwrthdroi i'r golygiad olaf gan $2.",
* @author Li-sung
* @author Locos epraix
* @author Lyzzy
+ * @author MBq
* @author MF-Warburg
* @author Man77
* @author Melancholie
'createacct-imgcaptcha-ph' => 'Gib den Text ein, den du oben siehst.',
'createacct-submit' => 'Dein Benutzerkonto erstellen',
'createacct-another-submit' => 'Anderes Benutzerkonto erstellen',
-'createacct-benefit-heading' => '{{SITENAME}} wird von Leuten wie dir erstellt.',
+'createacct-benefit-heading' => '{{SITENAME}} wird von Menschen wie dir geschaffen.',
'createacct-benefit-body1' => '{{PLURAL:$1|Bearbeitung|Bearbeitungen}}',
'createacct-benefit-body2' => '{{PLURAL:$1|Seite|Seiten}}',
'createacct-benefit-body3' => '{{PLURAL:$1|aktiver Autor|aktive Autoren}}',
Die letzte Änderung stammt von [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Die Änderungszusammenfassung lautet: ''„$1“''.",
'revertpage' => 'Änderungen von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) wurden auf die letzte Version von [[User:$1|$1]] zurückgesetzt',
-'revertpage-nouser' => 'Änderungen von einem versteckten Benutzer rückgängig gemacht und letzte Version von [[User:$1|$1]] wiederhergestellt',
+'revertpage-nouser' => 'Änderungen von einem versteckten Benutzer rückgängig gemacht und letzte Version von {{GENDER:$1|[[User:$1|$1]]}} wiederhergestellt',
'rollback-success' => 'Die Änderungen von $1 wurden rückgängig gemacht und die letzte Version von $2 wurde wiederhergestellt.',
# Edit tokens
'tag-filter-submit' => 'Filter',
'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Markierung|Markierungen}}]]: $2)',
'tags-title' => 'Markierungen',
-'tags-intro' => 'Diese Seite zeigt alle Markierungen, die für Bearbeitungen verwendet werden, sowie deren Bedeutung.',
+'tags-intro' => 'Diese Seite zeigt alle Markierungen, die für Bearbeitungen verwendet wurden, sowie deren Bedeutung.
+
+Bei entsprechender Einstellung können die Missbrauchfilter beliebige Markierungen in die Versionsgeschichte setzen. Man kann die Versionsgeschichte dann nach den Markierungen filtern.',
'tags-tag' => 'Markierungsname',
'tags-display-header' => 'Benennung auf den Änderungslisten',
'tags-description-header' => 'Vollständige Beschreibung',
You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
'rev-suppressed-diff-view' => "One of the revisions of this diff has been '''suppressed'''.
You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
-'rev-delundel' => 'show/hide',
+'rev-delundel' => 'change visibility',
'rev-showdeleted' => 'show',
'revisiondelete' => 'Delete/undelete revisions',
'revdelete-nooldid-title' => 'Invalid target revision',
'difference-multipage' => '(Difference between pages)',
'lineno' => 'Line $1:',
'compareselectedversions' => 'Compare selected revisions',
-'showhideselectedversions' => 'Show/hide selected revisions',
+'showhideselectedversions' => 'Change visibility of selected revisions',
'editundo' => 'undo',
'diff-empty' => '(No difference)',
'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
You can narrow down the view by selecting a log type, the username (case-sensitive), or the affected page (also case-sensitive).',
'logempty' => 'No matching items in log.',
'log-title-wildcard' => 'Search titles starting with this text',
-'showhideselectedlogentries' => 'Show/hide selected log entries',
+'showhideselectedlogentries' => 'Change visibility of selected log entries',
# Special:AllPages
'allpages' => 'All pages',
'prefs-skin' => 'پوسته',
'skin-preview' => 'پیشنمایش',
'datedefault' => 'بدون ترجیح',
-'prefs-beta' => 'ویژگی های بتا',
+'prefs-beta' => 'ویژگیهای آزمایشی',
'prefs-datetime' => 'تاریخ و زمان',
'prefs-labs' => 'گزینههای آزمایشی',
'prefs-user-pages' => 'صفحههای کاربری',
'action-block' => 'estää tätä käyttäjää muokkaamasta',
'action-protect' => 'muuttaa tämän sivun suojaustasoa',
'action-rollback' => 'käyttää nopeaa palautusta kumoamaan viimeisen käyttäjän viimeiset muutokset sivuun',
-'action-import' => 'tuoda tätä sivua toisesta wikistä',
-'action-importupload' => 'tuoda tätä sivua tiedostosta',
+'action-import' => 'tuoda sivuja toisesta wikistä',
+'action-importupload' => 'tuoda sivuja tiedostosta',
'action-patrol' => 'merkitä muiden muokkauksia tarkastetuiksi',
'action-autopatrol' => 'saada muokkaukset automaattisesti tarkastetuiksi',
'action-unwatchedpages' => 'tarkastella tarkkailemattomien sivujen listaa',
'listusers' => 'Käyttäjälista',
'listusers-editsonly' => 'Näytä vain käyttäjät, joilla on muokkauksia',
'listusers-creationsort' => 'Lajittele tunnuksen luontipäivämäärän mukaan',
+'listusers-desc' => 'Lajittele alenevassa järjestyksessä',
'usereditcount' => '$1 {{PLURAL:$1|muokkaus|muokkausta}}',
'usercreated' => '{{GENDER:$3|Luotu}} $1 kello $2',
'newpages' => 'Uudet sivut',
Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|keskustelu]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Muokkauksen yhteenveto oli: ''$1''.",
'revertpage' => 'Käyttäjän [[Special:Contributions/$2|$2]] ([[User talk:$2|keskustelu]]) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.',
-'revertpage-nouser' => 'Käyttäjän (käyttäjänimi poistettu) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.',
+'revertpage-nouser' => 'Käyttäjän (käyttäjänimi poistettu) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän {{GENDER:$1|[[User:$1|$1]]}} tekemään versioon',
'rollback-success' => 'Käyttäjän $1 tekemät muokkaukset kumottiin ja sivu palautettiin käyttäjän $2 versioon.',
# Edit tokens
'action-block' => 'bloquer en écriture cet utilisateur',
'action-protect' => 'modifier les niveaux de protection pour cette page',
'action-rollback' => 'annuler rapidement les modifications du dernier utilisateur qui a modifié une page donnée',
-'action-import' => "importer cette page à partir d'un autre wiki",
-'action-importupload' => "importer cette page à partir d'un fichier",
+'action-import' => 'importer des pages depuis un autre wiki',
+'action-importupload' => 'importer des pages depuis un fichier téléchargé',
'action-patrol' => 'marquer la modification des autres comme relue',
'action-autopatrol' => 'avoir votre modification marquée comme relue',
'action-unwatchedpages' => 'voir la liste des pages non suivies',
'listusers' => 'Liste des utilisateurs',
'listusers-editsonly' => 'Ne montrer que les utilisateurs ayant au moins une contribution',
'listusers-creationsort' => 'Trier par date de création',
+'listusers-desc' => 'Trier en ordre descendant',
'usereditcount' => '$1 modification{{PLURAL:$1||s}}',
'usercreated' => '{{GENDER:$3|Créé}} le $1 à $2',
'newpages' => 'Nouvelles pages',
La dernière modification de la page a été effectuée par [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
'editcomment' => "Le résumé de la modification était : « ''$1'' ».",
'revertpage' => 'Révocation des modifications de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) vers la dernière version de [[User:$1|$1]]',
-'revertpage-nouser' => 'Révocation des modifications par un utilisateur masqué à la dernière version par [[User:$1|$1]]',
+'revertpage-nouser' => 'Révocation des modifications par un utilisateur masqué à la dernière version par {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Révocation des modifications effectuées par $1 ;
rétablissement de la dernière version par $2.',
# Contributions
'contributions' => 'Contributions de l’{{GENDER:$1|utilisateur|utilisatrice}}',
-'contributions-title' => 'Liste des contributions de l’utilisat{{GENDER:|eur|rice|eur}} $1',
+'contributions-title' => 'Liste des contributions de l’utilisat{{GENDER:$1|eur|rice|eur}} $1',
'mycontris' => 'Contributions',
'contribsub2' => 'Pour $1 ($2)',
'nocontribs' => "Aucune modification correspondant à ces critères n'a été trouvée.",
'action-block' => 'לחסום משתמש זה מעריכה',
'action-protect' => 'לשנות את רמת ההגנה על דף זה',
'action-rollback' => 'לשחזר במהירות את עריכות המשתמש האחרון שערך דף מסוים',
-'action-import' => '×\9c×\99×\99×\91×\90 ×\93×£ ×\96×\94 מאתר ויקי אחר',
-'action-importupload' => '×\9c×\99×\99×\91×\90 ×\93×£ ×\96×\94 באמצעות העלאת קובץ',
+'action-import' => '×\9c×\99×\99×\91×\90 ×\93פ×\99×\9d מאתר ויקי אחר',
+'action-importupload' => '×\9c×\99×\99×\91×\90 ×\93פ×\99×\9d באמצעות העלאת קובץ',
'action-patrol' => 'לסמן עריכות של אחרים כבדוקות',
'action-autopatrol' => 'לסמן את עריכותיך כבדוקות',
'action-unwatchedpages' => 'לצפות ברשימת הדפים שאינם במעקב',
'listusers' => 'רשימת משתמשים',
'listusers-editsonly' => 'הצגת משתמשים עם עריכות בלבד',
'listusers-creationsort' => 'סידור לפי תאריך היצירה',
+'listusers-desc' => 'סידור בסדר יורד',
'usereditcount' => '{{PLURAL:$1|עריכה אחת|$1 עריכות}}',
'usercreated' => '{{GENDER:$3|נוצר|נוצרה}} ב־$2, $1',
'newpages' => 'דפים חדשים',
העריכה האחרונה הייתה של [[User:$3|$3]] ([[User talk:$3|שיחה]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "תקציר העריכה היה: \"'''\$1'''\".",
'revertpage' => 'שוחזר מעריכות של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]]) לעריכה האחרונה של [[User:$1|$1]]',
-'revertpage-nouser' => 'שוחזר מעריכות של משתמש מוסתר לעריכה האחרונה של [[User:$1|$1]]',
+'revertpage-nouser' => 'שוחזר מעריכות של משתמש מוסתר לעריכה האחרונה של {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'שוחזר מעריכה של $1 לעריכה האחרונה של $2',
# Edit tokens
# New logging system
'logentry-delete-delete' => '$1 {{GENDER:$2|מחק|מחקה}} את הדף $3',
-'logentry-delete-restore' => '$1 {{GENDER:$2|שחזר|שחזרה}} את הדף $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|שחזר|שחזרה}} את הדף $3‏',
'logentry-delete-event' => '$1 {{GENDER:$2|שינה|שינתה}} את מצב התצוגה של {{PLURAL:$5|פעולת יומן|$5 פעולות יומן}} של $3: $4',
'logentry-delete-revision' => '$1 {{GENDER:$2|שינה|שינתה}} את מצב התצוגה של {{PLURAL:$5|גרסה|$5 גרסאות}} בדף $3: $4',
'logentry-delete-event-legacy' => '$1 {{GENDER:$2|שינה|שינתה}} את מצב התצוגה של פעולות יומן של $3',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'A proposito de {{SITENAME}}',
'aboutpage' => 'Project:A proposito',
-'copyright' => 'Le contento es disponibile sub $1.',
+'copyright' => 'Le contento es disponibile sub $1 si non alteremente specificate.',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Actualitates',
'currentevents-url' => 'Project:Actualitates',
'welcomecreation-msg' => 'Tu conto ha essite create.
Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].',
'yourname' => 'Nomine de usator:',
-'userlogin-yourname' => 'Nomine de usator�',
+'userlogin-yourname' => 'Nomine de usator',
'userlogin-yourname-ph' => 'Entra tu nomine de usator',
'createacct-another-username-ph' => 'Entra le nomine de usator',
'yourpassword' => 'Contrasigno:',
'action-block' => 'blocar iste usator de facer modificationes',
'action-protect' => 'cambiar le nivellos de protection pro iste pagina',
'action-rollback' => 'revocar rapidemente le modificationes del ultime usator qui modificava un particular pagina',
-'action-import' => 'importar iste pagina ab un altere wiki',
-'action-importupload' => 'importar iste pagina ex un file incargate',
+'action-import' => 'importar paginas ab un altere wiki',
+'action-importupload' => 'importar paginas ex un file incargate',
'action-patrol' => 'marcar le modificationes de alteros como patruliate',
'action-autopatrol' => 'haber tu modification marcate como patruliate',
'action-unwatchedpages' => 'vider le lista de paginas non observate',
'listusers' => 'Lista de usatores',
'listusers-editsonly' => 'Monstrar solmente usatores con modificationes',
'listusers-creationsort' => 'Ordinar per data de creation',
+'listusers-desc' => 'Ordinar in senso descendente',
'usereditcount' => '$1 {{PLURAL:$1|modification|modificationes}}',
'usercreated' => '{{GENDER:$3|Create}} le $1 a $2',
'newpages' => 'Nove paginas',
Le ultime modification esseva facite per [[User:$3|$3]] ([[User talk:$3|discussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Le summario del modification esseva: \"''\$1''\".",
'revertpage' => 'Reverteva modificationes per [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]]) al ultime version per [[User:$1|$1]]',
-'revertpage-nouser' => 'Reverteva modificationes per un usator celate al ultime version per [[User:$1|$1]]',
+'revertpage-nouser' => 'Reverteva modificationes per un usator celate al ultime version per {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Revocava modificationes per $1;
retornava al version per $2.',
'limitreport-ppvisitednodes' => 'Numero de nodos de preprocessor visitate',
'limitreport-ppgeneratednodes' => 'Numero de nodos de preprocessor generate',
'limitreport-postexpandincludesize' => 'Dimension de inclusion post expansion',
-'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-templateargumentsize' => 'Dimension del argumento del patrono',
-'limitreport-templateargumentsize-value' => '$1/$2 bytes',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-expansiondepth' => 'Maxime profunditate de expansion',
'limitreport-expensivefunctioncount' => 'Numero de functiones analysator costose',
'action-block' => 'bloccare questo utente in scrittura',
'action-protect' => 'modificare i livelli di protezione per questa pagina',
'action-rollback' => "annullare rapidamente le modifiche dell'ultimo utente che ha modificato una determinata pagina",
-'action-import' => "importare questa pagina da un'altra wiki",
-'action-importupload' => 'importare questa pagina tramite upload da file',
+'action-import' => "importare pagine da un'altra wiki",
+'action-importupload' => 'importare pagine tramite upload da file',
'action-patrol' => 'segnare le modifiche degli altri utenti come verificate',
'action-autopatrol' => 'segnare le proprie modifiche come verificate',
'action-unwatchedpages' => 'visionare la lista di pagine non osservate',
'listusers' => 'Elenco degli utenti',
'listusers-editsonly' => 'Mostra solo utenti con dei contributi',
'listusers-creationsort' => 'Ordina per data di creazione',
+'listusers-desc' => 'Ordina in senso decrescente',
'usereditcount' => '$1 {{PLURAL:$1|contributo|contributi}}',
'usercreated' => '{{GENDER:$3|Creato/a}} il $1 alle $2',
'newpages' => 'Pagine più recenti',
La modifica più recente alla pagina è stata apportata da [[User:$3|$3]] ([[User talk:$3|discussione]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "L'oggetto della modifica era: \"''\$1''\".",
'revertpage' => 'Annullate le modifiche di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussione]]), riportata alla versione precedente di [[User:$1|$1]]',
-'revertpage-nouser' => 'Annullate le modifiche di un utente nascosto, riportata alla versione precedente di [[User:$1|$1]]',
+'revertpage-nouser' => 'Annullate le modifiche di un utente nascosto, riportata alla versione precedente di {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => "Annullate le modifiche di $1; pagina riportata all'ultima versione di $2.",
# Edit tokens
'right-noratelimit' => '速度制限を受けない',
'right-import' => '他のウィキからページを取り込み',
'right-importupload' => 'ファイルアップロードでページを取り込み',
-'right-patrol' => '他人の編集を巡回済みにする',
+'right-patrol' => '他の利用者の編集を巡回済みにする',
'right-autopatrol' => '自身の編集を自動で巡回済みにする',
'right-patrolmarks' => '最近の更新で巡回済み印を閲覧',
'right-unwatchedpages' => 'ウォッチされていないページ一覧を閲覧',
'action-block' => 'この利用者の編集ブロック',
'action-protect' => 'このページの保護レベルの変更',
'action-rollback' => '特定ページを最後に編集した利用者の編集の即時巻き戻し',
-'action-import' => 'ä»\96ã\81®ã\82¦ã\82£ã\82ã\81\8bã\82\89ã\81®ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å\8f\96ã\82\8aè¾¼ã\81¿',
-'action-importupload' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82¢ã\83\83ã\83\97ã\83ã\83¼ã\83\89ã\81§ã\81®ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¸ã\81®å\8f\96ã\82\8aè¾¼ã\81¿',
+'action-import' => '他のウィキからのページの取り込み',
+'action-importupload' => 'ファイルアップロードでのページへの取り込み',
'action-patrol' => '他の利用者の編集を巡回済みにする',
'action-autopatrol' => '自分の編集を巡回済みにする',
'action-unwatchedpages' => 'ウォッチされていないページ一覧の閲覧',
'listusers' => '利用者一覧',
'listusers-editsonly' => '投稿記録のある利用者のみを表示',
'listusers-creationsort' => '作成日順に並べ替え',
+'listusers-desc' => '降順に並べ替える',
'usereditcount' => '$1 {{PLURAL:$1|回編集}}',
'usercreated' => '$1 $2 に{{GENDER:$3|作成}}',
'newpages' => '新しいページ',
このページの最後の編集は[[User:$3|$3]] ([[User talk:$3|トーク]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) によるものです。',
'editcomment' => "編集内容の要約:「''$1''」",
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|トーク]]) による編集を[[User:$1|$1]]による直前の版へ差し戻しました',
-'revertpage-nouser' => '非表示の利用者による編集を[[User:$1|$1]]による直前の版へ差し戻しました',
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|トーク]]) による編集を [[User:$1|$1]] による直前の版へ差し戻しました',
+'revertpage-nouser' => '非表示の利用者による編集を {{GENDER:$1|[[User:$1|$1]]}} による直前の版へ差し戻しました',
'rollback-success' => '$1による編集を差し戻しました。
$2による直前の版へ変更されました。',
'rc_categories_any' => 'Apa waé',
'rc-change-size-new' => '$1 {{PLURAL:$1|bita|bita}} sakwisé diowah',
'newsectionsummary' => '/* $1 */ bagéyan anyar',
-'rc-enhanced-expand' => 'Tuduhaké princèn (merlokaké JavaScript)',
+'rc-enhanced-expand' => 'Tuduhaké princèn',
'rc-enhanced-hide' => 'Dhelikaké princèn',
'rc-old-title' => 'wigatiné digawé minangka "$1"',
'logentry-newusers-create2' => 'Akun panganggo $3 digawé déning $1',
'logentry-newusers-byemail' => 'Akun pengguna $3 dibuat oleh $1 dan kata sandi dikirim melalui e-mail',
'logentry-newusers-autocreate' => 'Akun $1 digawé otomatis',
-'logentry-rights-rights' => 'ngganti kaanggotan kelompok kanggo $3 saka $4 dadi $5',
+'logentry-rights-rights' => '$1 {{GENDER:$2|ngganti}} kaanggotan kelompok kanggo $3 saka $4 dadi $5',
'logentry-rights-rights-legacy' => '$1 mengubah keanggotaan grup $3',
'logentry-rights-autopromote' => 'otomatis ditawakaké saka $4 nèng $5',
'rightsnone' => '(ora ana)',
'markedaspatrollederror' => 'შეუძლებელია ამ სტატიის მოhttp://translatewiki.net/w/i.php?title=MediaWiki:Markedaspatrollederror/ka&action=edit&loadgroup=core&loadtask=untranslatedნიშნვნა პატრულირებულად.',
'markedaspatrollederrortext' => 'თქვენ უნდა მონიშნოთ ვერსია, რომელიც პატრულირებულად ჩაითვლება.',
'markedaspatrollederror-noautopatrol' => 'თქვენ ვერ მონიშნავთ თქვენივე შესწორებებს პატრულირებულად.',
-'markedaspatrollednotify' => 'ეს ცვლილება გვერდზე $1 პატრულირებულად მოინიშნა.',
+'markedaspatrollednotify' => 'ეს ცვლილება გვერდზე „$1“ პატრულირებულად მოინიშნა.',
'markedaspatrollederrornotify' => 'პატრულირებულად მონიშვნა ვერ მოხერხდა.',
# Patrol log
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => '{{SITENAME}} 소개',
'aboutpage' => 'Project:소개',
-'copyright' => '내용은 별도로 표시되지 않을 경우 $1 라이선스에 따라 이용할 수 있습니다.',
+'copyright' => '내용은 별도로 명시하지 않을 경우 $1에 따라 사용할 수 있습니다.',
'copyrightpage' => '{{ns:project}}:저작권',
'currentevents' => '요즘 화제',
'currentevents-url' => 'Project:요즘 화제',
'limitreport-postexpandincludesize' => '전개한 뒤 포함 크기',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|바이트}}',
'limitreport-templateargumentsize' => '틀 인수 크기',
-'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|}}바이트',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|바이트}}',
'limitreport-expansiondepth' => '최대 전개 깊이',
'limitreport-expensivefunctioncount' => '부하 높은 파서 함수 수',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => '{{SITENAME}} сайтны юсюнден',
'aboutpage' => 'Project:Суратлау',
-'copyright' => 'Информация мунга кёре хайырланады: $1',
+'copyright' => 'Ичиндегиси, $1 лицензиягъа кёре бериледи (башха белгиленмеген эсе).',
'copyrightpage' => '{{ns:project}}:Авторлукъ хакъла',
'currentevents' => 'Бусагъатда бола тургъанла',
'currentevents-url' => 'Project:Бусагъатда бола тургъанла',
'action-suppressionlog' => 'haec acta privata inspicere',
'action-block' => 'hunc usorem obstruere ne recensere potest',
'action-protect' => 'protectionem huius paginae mutare',
-'action-import' => 'paginam ex vico alio importare',
-'action-importupload' => 'paginam ex fasciculo imponendo importare',
+'action-import' => 'paginas ex vico alio importare',
+'action-importupload' => 'paginas ex fasciculo imponendo importare',
'action-unwatchedpages' => 'indicem paginarum non custoditarum inspicere',
'action-mergehistory' => 'historiam huius paginae confundere',
'action-userrights' => 'omnes potestates usorum recensere',
'action-block' => 'dëse Benotzer fir Ännerungen ze spären',
'action-protect' => 'de Protektiounsstatus vun dëser Säit änneren',
'action-rollback' => "Ännerunge vum läschte Benotzer vun enger spezieller Säit séier z'récksetzen ''(rollback)''",
-'action-import' => "dës Säit aus enger anerer Wiki z'importéieren",
-'action-importupload' => "dës Säit duerch d'Eropluede vun engem Fichier importéieren",
+'action-import' => 'Säiten aus enger anerer Wiki importéieren',
+'action-importupload' => "Säiten duerch d'Eropluede vun engem Fichier importéieren",
'action-patrol' => "d'Ännerunge vun Aneren als nogekuckt markéieren",
'action-autopatrol' => 'eegen Ännerungen als nogekuckt ze markéieren',
'action-unwatchedpages' => "d'Lëscht vun den net iwwerwaachte Säiten ze kucken",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'Par {{grammar:akuzatīvs|{{SITENAME}}}}',
'aboutpage' => 'Project:Par',
-'copyright' => 'Saturs ir pieejams saskaņā ar $1.',
+'copyright' => 'Saturs ir pieejams saskaņā ar $1, ja vien nav norādīts citādi.',
'copyrightpage' => '{{ns:project}}:Autortiesības',
'currentevents' => 'Aktualitātes',
'currentevents-url' => 'Project:Aktualitātes',
'protectedinterface' => 'Šī lapa satur programmatūras interfeisā lietotu tekstu un ir bloķēta pret izmaiņām, lai pasargātu no bojājumiem.',
'editinginterface' => "'''Brīdinājums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatūras lietotāja saskarnē (''interfeisā''). Šīs lapas izmaiņas ietekmēs lietotāja saskarni citiem lietotājiem. Pēc modificēšanas, šīs izmaiņas būtu lietderīgi pievienot arī [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], kas ir MediaWiki lokalizēšanas projekts.",
'namespaceprotected' => "Tev nav atļaujas izmainīt lapas, kas atrodas '''$1''' ''namespacē''.",
+'customcssprotected' => 'Jums nav tiesību rediģēt šo CSS lapu, jo tā satur cita lietotāja personiskos iestatījumus.',
+'customjsprotected' => 'Jums nav tiesību rediģēt šo JavaScript lapu, jo tā satur cita lietotāja personiskos iestatījumus.',
+'mycustomcssprotected' => 'Jums nav tiesību rediģēt šo CSS lapu.',
+'mycustomjsprotected' => 'Jums nav tiesību rediģēt šo JavaScript lapu.',
+'myprivateinfoprotected' => 'Jums nav tiesību rediģēt savu privāto informāciju.',
+'mypreferencesprotected' => 'Jums nav tiesību rediģēt savus iestatījumus.',
'ns-specialprotected' => 'Nevar izmainīt īpašās lapas.',
'titleprotected' => "Šī lapa ir aizsargāta pret izveidošanu. To aizsargāja [[User:$1|$1]].
Norādītais iemesls bija ''$2''.",
# Database error messages
'dberr-header' => 'Šim viki ir problēma',
-'dberr-problems' => 'Atvainojiet! Šai vietnei ir radušās tehniskas problēmas.',
+'dberr-problems' => 'Atvainojiet!
+Šai vietnei ir radušās tehniskas problēmas.',
'dberr-again' => 'Uzgaidiet dažas minūtes un pārlādējiet šo lapu.',
'dberr-info' => '(Nevar sazināties ar datubāzes serveri: $1)',
'dberr-usegoogle' => 'Pa to laiku Jūs varat izmantot Google meklēšanu.',
'action-block' => 'оневозможи го овој корисник да уредува',
'action-protect' => 'измени го степенот на заштита на оваа страница',
'action-rollback' => 'брзо отповикување на измени направени од последниот уредник на страницата',
-'action-import' => 'Ñ\83вези Ñ\98а оваа Ñ\81Ñ\82Ñ\80аниÑ\86а од друго вики',
-'action-importupload' => 'Ñ\83вези Ñ\98а оваа Ñ\81Ñ\82Ñ\80аниÑ\86а од подигнаÑ\82а подаÑ\82оÑ\82ека',
+'action-import' => 'Ñ\83воз на Ñ\81Ñ\82Ñ\80аниÑ\86и од друго вики',
+'action-importupload' => 'Ñ\83воз на Ñ\81Ñ\82Ñ\80аниÑ\86и Ñ\81о подигаÑ\9aе подаÑ\82оÑ\82еки',
'action-patrol' => 'означи ги уредувањата на другите како проверени',
'action-autopatrol' => 'вашите уредувања да се обележуват како испатролирани',
'action-unwatchedpages' => 'преглед на список на ненабљудувани страници',
'listusers' => 'Список на корисници',
'listusers-editsonly' => 'Прикажи само корисници кои уредувале',
'listusers-creationsort' => 'Подреди по датум на создавање',
+'listusers-desc' => 'Подреди по надолен редослед',
'usereditcount' => '$1 {{PLURAL:$1|уредување|уредувања}}',
'usercreated' => '{{GENDER:$3|Создадена}} на $1 во $2 ч.',
'newpages' => 'Нови страници',
Последното уредување го изврши [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Коментарот на уредувањето беше: „''$1''“.",
'revertpage' => 'Отстрането уредувањето на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), вратено на последната верзија на [[User:$1|$1]]',
-'revertpage-nouser' => 'Ð\92Ñ\80аÑ\82ени Ñ\83Ñ\80едÑ\83ваÑ\9aа од Ñ\81кÑ\80иен коÑ\80иÑ\81ник на поÑ\81леднаÑ\82а Ñ\80евизиÑ\98а од [[User:$1|$1]]',
+'revertpage-nouser' => 'Ð\92Ñ\80аÑ\82ени Ñ\83Ñ\80едÑ\83ваÑ\9aа од Ñ\81кÑ\80иен коÑ\80иÑ\81ник на поÑ\81леднаÑ\82а Ñ\80евизиÑ\98а на {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Откажани уредувањата на $1; вратено на последната верзија на $2.',
# Edit tokens
# General errors
'error' => 'Fout',
'databaseerror' => 'Databasefout',
+'databaseerror-function' => 'Functie: $1',
+'databaseerror-error' => 'Fout: $1',
'laggedslavemode' => "'''Waarschuwing:''' in deze pagina zijn recente wijzigingen mogelijk nog niet verwerkt.",
'readonly' => 'Database geblokkeerd',
'enterlockreason' => 'Geef een reden op voor de blokkade en geef op wanneer die waarschijnlijk wordt opgeheven',
'action-block' => 'deze gebruiker een bewerkingsblokkade op te leggen',
'action-protect' => 'het beveiligingsniveau van deze pagina aan te passen',
'action-rollback' => 'bewerkingen van de laatste gebruiker die een pagina heeft bewerkt snel terugdraaien',
-'action-import' => 'deze pagina van een andere wiki te importeren',
-'action-importupload' => 'deze pagina uit een bestandsupload importeren',
+'action-import' => "pagina's importeren van een andere wiki",
+'action-importupload' => 'deze pagina importeren uit een bestandsupload',
'action-patrol' => 'bewerkingen van anderen als gecontroleerd te markeren',
'action-autopatrol' => 'eigen bewerkingen als gecontroleerd te laten markeren',
'action-unwatchedpages' => "de lijst met pagina's die niet op een volglijst staan te bekijken",
'listusers' => 'Gebruikerslijst',
'listusers-editsonly' => 'Alleen gebruikers met bewerkingen weergeven',
'listusers-creationsort' => 'Sorteren op registratiedatum',
+'listusers-desc' => 'Sorteren in aflopende volgorde',
'usereditcount' => '$1 {{PLURAL:$1|bewerking|bewerkingen}}',
'usercreated' => '{{GENDER:$3|Geregistreerd}} op $1 om $2',
'newpages' => "Nieuwe pagina's",
De meest recente bewerking is gemaakt door [[User:$3|$3]] ([[User talk:$3|overleg]]{{int:pipe-separator}}[[Special:Contributions/$3|bijdragen]]).',
'editcomment' => "De bewerkingssamenvatting was: \"''\$1''\".",
'revertpage' => 'Wijzigingen door [[Special:Contributions/$2|$2]] ([[User talk:$2|Overleg]]) hersteld tot de laatste versie door [[User:$1|$1]]',
-'revertpage-nouser' => 'Wijzigingen door een verborgen gebruiker teruggedraaid naar de laatste versie door [[User:$1|$1]]',
+'revertpage-nouser' => 'Wijzigingen door een verborgen gebruiker teruggedraaid naar de laatste versie door {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'De wijzigingen door $1 zijn teruggedraaid.
De laatste versie van $2 is hersteld.',
'dberr-problems' => 'Onze excuses. Deze site ondervindt op het moment technische problemen.',
'dberr-again' => 'Wacht een aantal minuten en probeer het daarna opnieuw.',
'dberr-info' => '(Kan geen verbinding maken met de databaseserver: $1)',
+'dberr-info-hidden' => '(Kan geen verbinding maken met de databaseserver)',
'dberr-usegoogle' => 'Wellicht kunt u in de tussentijd zoeken via Google.',
'dberr-outofdate' => "Let op: hun indexen van onze pagina's zijn wellicht niet recent.",
'dberr-cachederror' => 'Deze pagina is een kopie uit de cache en is wellicht niet de meest recente versie.',
'tog-extendwatchlist' => 'ਸਿਰਫ਼ ਤਾਜ਼ਾ ਹੀ ਨਹੀਂ, ਸਗੋਂ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਵਖਾਉਣ ਲਈ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਨੂੰ ਵਧਾਓ',
'tog-usenewrc' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਅਤੇ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਸਫ਼ੇ ਮੁਤਾਬਕ ਤਬਦੀਲੀਆਂ ਦੇ ਗਰੁੱਕ ਬਣਾਓ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
'tog-numberheadings' => 'ਆਟੋ-ਨੰਬਰ ਸਿਰਨਾਵੇਂ',
-'tog-showtoolbar' => 'ਸੋਧ ਸੰਦਬਕਸਾ ਵੇਖੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
-'tog-editondblclick' => "ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਸਫ਼ੇ ਸੋਧੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)",
+'tog-showtoolbar' => 'ਸੋਧ ਸੰਦਬਕਸਾ ਵੇਖੋ',
+'tog-editondblclick' => "ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਸਫ਼ੇ ਸੋਧੋ",
'tog-editsection' => '[ਸੋਧੋ] ਲਿੰਕਾਂ ਰਾਹੀਂ ਭਾਗ ਸੋਧਣਾ ਚਾਲੂ ਕਰੋ',
'tog-editsectiononrightclick' => 'ਸੈਕਸ਼ਨ ਸਿਰਲੇਖਾਂ ’ਤੇ ਸੱਜੀ ਕਲਿੱਕ ਨਾਲ਼ ਸੋਧ ਚਾਲੂ ਕਰੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
'tog-showtoc' => 'ਤਤਕਰਾ ਵਿਖਾਓ (੩ ਤੋਂ ਵੱਧ ਸਿਰਲੇਖਾਂ ਵਾਲੇ ਸਫ਼ਿਆਂ ਲਈ)',
'tog-shownumberswatching' => 'ਨਜ਼ਰ ਰੱਖ ਰਹੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਗਿਣਤੀ ਵਖਾਓ',
'tog-oldsig' => 'ਮੌਜੂਦਾ ਦਸਤਖ਼ਤ:',
'tog-fancysig' => 'ਦਸਤਖ਼ਤ ਨੂੰ ਬਤੌਰ ਵਿਕੀਲਿਖਤ ਮੰਨੋ (ਬਿਨਾਂ ਆਟੋਮੈਟਿਕ ਲਿੰਕ)',
-'tog-uselivepreview' => 'ਸਿੱਧà©\80 à¨\9dਲà¨\95 ਵਰਤà©\8b (à¨\9cਾਵਾਸà¨\95ਰਿਪà¨\9f ਲà©\8bà©\9cà©\80à¨\82ਦà©\80 ਹà©\88) (ਤà¨\9cਰਬà©\87-à¨\85ਧà©\80ਨ)',
+'tog-uselivepreview' => 'ਸਿੱਧੀ ਝਲਕ ਵਰਤੋ (ਤਜਰਬੇ-ਅਧੀਨ)',
'tog-forceeditsummary' => 'ਜਦੋਂ ਮੈਂ ਖ਼ਾਲੀ ਸੋਧ ਸਾਰ ਦੇਵਾਂ ਤਾਂ ਮੈਨੂੰ ਆਗਾਹ ਕਰੋ',
'tog-watchlisthideown' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚੋਂ ਮੇਰੀਆਂ ਸੋਧਾਂ ਲੁਕਾਓ',
'tog-watchlisthidebots' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚੋਂ ਬੋਟਾਂ ਦੀਆਂ ਸੋਧਾਂ ਲੁਕਾਓ',
'newwindow' => '(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦੀ ਹੈ)',
'cancel' => 'ਰੱਦ ਕਰੋ',
'moredotdotdot' => 'ਹੋਰ...',
-'morenotlisted' => '....ਹੋਰ ਸੂਚੀਬੱਧ ਨਹੀਂ',
+'morenotlisted' => 'ਇਹ ਸੂਚੀ ਪੂਰੀ ਨਹੀਂ ਹੈ।',
'mypage' => 'ਸਫ਼ਾ',
'mytalk' => 'ਗੱਲ-ਬਾਤ',
'anontalk' => 'ਇਸ IP ਲਈ ਗੱਲ-ਬਾਤ',
HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
'badsiglength' => 'ਦਸਤਖ਼ਤ ਬਹੁਤ ਲੰਬਾ ਹੋ ਗਿਆ ਹੈ। ਇਹ {{PLURAL:$1|ਅੱਖਰ|ਅੱਖਰਾਂ}} ਤੋਂ ਲੰਬਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ।',
'yourgender' => 'ਲਿੰਗ:',
-'gender-unknown' => 'à¨\9c਼ਾਹਰ ਨਹà©\80à¨\82 à¨\95à©\80ਤਾ',
-'gender-male' => 'ਮਰਦ',
-'gender-female' => 'à¨\94ਰਤ',
+'gender-unknown' => 'ਮà©\88à¨\82 ਦੱਸਣਾ ਨਹà©\80à¨\82 à¨\9aਾਹà©\81ੰਦਾ/à¨\9aਾਹà©\81ੰਦà©\80',
+'gender-male' => 'à¨\89ਹ ਵਿà¨\95à©\80 ਸਫ਼à©\87 ਸà©\8bਧਦਾ ਹà©\88',
+'gender-female' => 'à¨\89ਹ ਵਿà¨\95à©\80 ਸਫ਼à©\87 ਸà©\8bਧਦà©\80 ਹà©\88',
'email' => 'ਈਮੇਲ',
'prefs-help-realname' => 'ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।',
'prefs-help-email' => 'ਤੁਹਾਡੀ ਮਰਜੀ ਹੈ ਈਮੇਲ ਪਤਾ ਦਿਓ ਜਾਂ ਨਾ ਦਿਓ ਪਰ ਪਾਸਵਰਡ ਭੁੱਲ ਜਾਣ ਤੇ ਨਵਾਂ ਪਾਸਵਰਡ ਹਾਸਲ ਕਰਨ ਲਈ ਇਹ ਜਰੂਰੀ ਹੈ।',
'prefs-signature' => 'ਦਸਤਖ਼ਤ',
'prefs-dateformat' => 'ਮਿਤੀ ਦਾ ਅੰਦਾਜ਼',
'prefs-timeoffset' => 'ਸਮੇਂ ਦਾ ਆਫ਼ਸੈੱਟ',
-'prefs-advancedediting' => 'ਆਮ',
+'prefs-advancedediting' => 'ਆਮ ਚੋਣਾਂ',
'prefs-editor' => 'ਸੰਪਾਦਕ',
'prefs-preview' => 'ਝਲਕ',
'prefs-advancedrc' => 'ਤਕਨੀਕੀ ਚੋਣਾਂ',
'userrights-reason' => 'ਕਾਰਨ:',
'userrights-no-interwiki' => 'ਤੁਹਾਨੂੰ ਦੂਜੇ ਵਿਕੀਆਂ ਤੇ ਮੈਂਬਰਾਂ ਦੇ ਹੱਕਾਂ ਵਿਚ ਤਬਦੀਲੀ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।',
'userrights-nodatabase' => 'ਡੈਟਾਬੇਸ $1 ਮੌਜੂਦ ਨਹੀਂ ਜਾਂ ਮਕਾਮੀ ਨਹੀਂ ਹੈ।',
-'userrights-notallowed' => 'ਤà©\81ਹਾਡà©\87 à¨\96ਾਤà©\87 ਨà©\82à©° ਮà©\88à¨\82ਬਰ ਨà©\82à©° ਹੱà¨\95 ਦà©\87ਣ à¨\9cਾà¨\82 à¨\96à©\8bਹਣ ਦà©\80 à¨\87à¨\9cਾà¨\9c਼ਤ ਨਹà©\80à¨\82 ਹà©\88।',
+'userrights-notallowed' => 'ਤà©\81ਹਾਨà©\82à©° ਨà©\82à©° ਯà©\82à¨\9c਼ਰ ਹੱà¨\95 ਦà©\87ਣ à¨\9cਾà¨\82 à¨\96à©\8bਹਣ ਦà©\80 à¨\87à¨\9cਾà¨\9c਼ਤ ਨਹà©\80à¨\82 ਹà©\88।',
'userrights-changeable-col' => 'ਉਹ ਸਮੂਹ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਬਦਲ ਸਕਦੇ ਹੋ',
'userrights-unchangeable-col' => 'ਉਹ ਸਮੂਹ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਬਦਲ ਨਹੀਂ ਸਕਦੇ',
'right-block' => 'ਦੂਜੇ ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਸੋਧ ਕਰਨ ਤੇ ਪਾਬੰਦੀ ਲਾਉਣੀ',
'right-blockemail' => 'ਵਰਤੋਂਕਾਰ ਦੇ ਈ-ਮੇਲ ਭੇਜਣ ਤੇ ਪਾਬੰਦੀ ਲਾਉਣੀ',
'right-hideuser' => 'ਵਰਤੋਂਕਾਰ ਦੇ ਨਾਂ ਤੇ ਪਾਬੰਦੀ ਲਾਉਣੀ ਅਤੇ ਇਸਨੂੰ ਲੋਕਾਂ ਤੋਂ ਲੁਕਾਉਣਾ',
-'right-unblockself' => 'à¨\86ਪਣà©\87-à¨\86ਪ ਰà©\8bà¨\95 ਹà¨\9fਾà¨\89ਣ',
+'right-unblockself' => 'à¨\95ਿਸà©\87 ਤà©\8bà¨\82 ਪਾਬੰਦà©\80 ਹà¨\9fਾà¨\93',
'right-editinterface' => 'ਵਰਤੋਂਕਾਰ ਇੰਟਰਫ਼ੇਸ ਸੋਧੋ',
'right-editusercss' => 'ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ CSS ਫ਼ਾਈਲਾਂ ਸੋਧਣ',
'right-edituserjs' => 'ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਜਾਵਾਸਕਰਿਪਟ ਫ਼ਾਈਲਾਂ ਸੋਧਣ',
'action-suppressionlog' => 'ਇਹ ਨਿੱਜੀ ਇੰਦਰਾਜ ਵੇਖੋ',
'action-block' => 'ਇਸ ਮੈਂਬਰ ਦੇ ਸੋਧ ਕਰਨ ਤੇ ਪਾਬੰਦੀ ਲਾਓ',
'action-protect' => 'ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ',
-'action-import' => 'ਹà©\8bਰ ਵਿà¨\95à©\80 ਤà©\8bà¨\82 à¨\87ਹ ਸਫ਼ਾ ਮੰà¨\97ਾà¨\93',
+'action-import' => 'ਹà©\8bਰ ਵਿà¨\95à©\80 ਤà©\8bà¨\82 à¨\87ਹ ਸਫ਼ਾ ਲਵà©\8b',
'action-importupload' => 'ਫ਼ਾਈਲ ਅੱਪਲੋਡ ਤੋਂ ਇਹ ਸਫ਼ਾ ਮੰਗਾਓ',
'action-unwatchedpages' => 'ਨਜ਼ਰ ਨਾ ਰੱਖੇ ਜਾ ਰਹੇ ਸਫ਼ਿਆਂ ਦੀ ਸੂਚੀ ਵੇਖੋ',
'action-mergehistory' => 'ਇਸ ਸਫ਼ੇ ਦੇ ਅਤੀਤ ਨੂੰ ਰਲ਼ਾਉਣ',
'number_of_watching_users_pageview' => '[$1 ਵੇਖ ਰਹੇ ਹਨ {{PLURAL:$1|ਯੂਜ਼ਰ}}]',
'rc_categories_any' => 'ਕੋਈ ਵੀ',
'newsectionsummary' => '/* $1 */ ਨਵਾਂ ਭਾਗ',
-'rc-enhanced-expand' => 'ਵà©\87ਰਵਾ ਵà©\87à¨\96ਾà¨\93 (à¨\9cਾਵਾਸà¨\95à©\8dਰਿਪà¨\9f ਲà©\8bà©\9cà©\80à¨\82ਦà©\80 ਹà©\88)',
+'rc-enhanced-expand' => 'ਵà©\87ਰਵà©\87 ਵà©\87à¨\96ਾà¨\93',
'rc-enhanced-hide' => 'ਵੇਰਵਾ ਲੁਕਾਓ',
'rc-old-title' => 'ਅਸਲ ਵਿੱਚ "$1" ਵਜੋਂ ਬਣਾਇਆ',
'pageinfo-article-id' => 'ਸਫ਼ੇ ਦੀ ਸ਼ਨਾਖ਼ਤ',
'pageinfo-language' => 'ਸਫ਼ੇ ਦੀ ਸਮੱਗਰੀ ਦੀ ਭਾਸ਼ਾ',
'pageinfo-robot-policy' => 'ਇੰਜਨ ਦੀ ਹਾਲਤ ਖੋਜੋ',
-'pageinfo-robot-index' => 'ਤਤà¨\95ਰਾਯà©\8bà¨\97',
-'pageinfo-robot-noindex' => 'à¨\97਼à©\88ਰ-ਤਤà¨\95ਰਾਯà©\8bà¨\97',
+'pageinfo-robot-index' => 'ਮਨà¨\9c਼à©\82ਰ ਹà©\88',
+'pageinfo-robot-noindex' => 'ਨਾ-ਮਨà¨\9c਼à©\82ਰ',
'pageinfo-views' => 'ਵਖਾਵਿਆਂ ਦੀ ਗਿਣਤੀ',
'pageinfo-watchers' => 'ਸਫ਼ੇ ’ਤੇ ਨਜ਼ਰ ਰੱਖਣ ਵਾਲਿਆਂ ਦੀ ਗਿਣਤੀ',
'pageinfo-subpages-name' => 'ਇਸ ਸਫ਼ੇ ਦੇ ਉਪ-ਸਫ਼ੇ',
'action-block' => 'zablokowania temu użytkownikowi możliwości edycji',
'action-protect' => 'zmiany poziomu zabezpieczenia tej strony',
'action-rollback' => 'szybkiego wycofania zmian wprowadzonych przez użytkownika, który jako ostatni edytował tę stronę',
-'action-import' => 'importu tej strony z innej wiki',
-'action-importupload' => 'importu tej strony poprzez przesłanie pliku',
+'action-import' => 'importu stron z innej wiki',
+'action-importupload' => 'importu stron poprzez przesłanie pliku',
'action-patrol' => 'oznaczenia cudzej edycji jako „sprawdzonej”',
'action-autopatrol' => 'oznaczenia własnej edycji jako „sprawdzonej”',
'action-unwatchedpages' => 'podglądu listy nieobserwowanych stron',
'listusers' => 'Lista użytkowników',
'listusers-editsonly' => 'Pokaż tylko użytkowników z edycjami',
'listusers-creationsort' => 'Sortuj według daty utworzenia',
+'listusers-desc' => 'Sortuj w kolejności malejącej',
'usereditcount' => '$1 {{PLURAL:$1|edycja|edycje|edycji}}',
'usercreated' => '{{GENDER:$3|Utworzył|Utworzyła|Utworzone}} $1 o $2',
'newpages' => 'Nowe strony',
'anoneditwarning' => "'''Atension:''' A l'é nen rintrà ant ël sistema. Soa adrëssa IP a sarà registrà ant la stòria dle modìfiche ëd sa pàgina.",
'anonpreviewwarning' => "''A l'é nen rintrà ant ël sistema. An salvand a sarà memorisà soa adrëssa IP ant la stòria dle modìfiche ëd sa pàgina.''",
'missingsummary' => "'''Nòta:''' a l'ha butà gnun resumé dla modìfica. Se a sgnaca «{{int:savearticle}}» n'àutra vira, soa modìfica a resterà salvà sensa resumé.",
-'missingcommenttext' => 'Për piasì che a buta un coment ambelessì sota.',
-'missingcommentheader' => "'''Ch'a arcòrda:''' A l'ha pa dàit soget o intestassion për sto coment-sì.
-Se a sgnaca torna \"{{int:savearticle}}\", soa modìfica a sarà salvà sensa gnun-a intestassion.",
+'missingcommenttext' => 'Për piasì, che a buta un coment sì-sota.',
+'missingcommentheader' => "'''Ch'a arcòrda:''' A l'ha pa dàit ëd soget o d'intestassion për cost coment.
+Se a sgnaca torna «{{int:savearticle}}», soa modìfica a sarà salvà sensa gnun-a intestassion.",
'summary-preview' => "Preuva dl'oget:",
'subject-preview' => "Preuva d'oget/intestassion:",
'blockedtitle' => "Belavans cost ëstranòm-sì a resta col ëd n'utent che a l'é stàit disabilità a fé 'd modìfiche a j'artìcoj.",
'tog-extendwatchlist' => 'يوازې د وروستني بدلونونو د ښکاره کولو لپاره نه بلکه د ټولو بدلونونو د ښکاره کولو لپاره کتنلړ غځول',
'tog-usenewrc' => 'په کتنلړ او وروستي بدلونو مخ باندې ډله ايز بدلونونه (جاوا سکرېپټ ته اړتيا ده)',
'tog-numberheadings' => 'د سرليکونو خپلکاره شمېرايښودنه',
-'tog-showtoolbar' => 'د سÙ\85Ù\88Ù\84Ù\88 تÙ\88کپټÙ\87 Ú\9aکارÙ\87 Ú©Ù\88Ù\84 (جاÙ\88اسکرÛ\90پټ)',
-'tog-editondblclick' => 'په دوه کلېک سره د مخونو سمون (د جاواسکرېپټ اړتيا ده)',
+'tog-showtoolbar' => 'د سÙ\85Ù\88Ù\86 اÙ\88زارپټÙ\87 Ú\9aکارÙ\87 Ú©Ù\88Ù\84',
+'tog-editondblclick' => 'په دوه کلېک سره د مخونو سمون',
'tog-editsection' => 'د [سمول] تړنې له لوري د يوې ليکنې يوه برخه د سمون وړ گرځول',
'tog-editsectiononrightclick' => 'د ښي کلېک سره د سرليکونو د برخې سمون چارنول (جاواسکرېپټ ته اړتيا)',
'tog-showtoc' => 'نيوليک ښکاره کول (د هغو مخونو لپاره چې له ۳ نه ډېر سرليکونه لري)',
'enterlockreason' => 'د بنديز يو سبب وليکۍ، او همداراز د بنديز د ليرې کېدلو يوه اټکليزه نېټه هم څرگنده کړۍ',
'missing-article' => 'توکبنسټ د "$1" $2 په نامه د ورکړ شوي مخ متن چې بايد موندلی يې وای، و نه موند.
-دا ستÙ\88Ù\86زÙ\87 اکثراÙ\8b د Ù\8aÙ\88Ù\87 Ú\93Ù\86Ú« شوي مخ د پېښليک يا توپير د تړنو په څارلو کې رامېنځ ته کېږي.
+دا ستÙ\88Ù\86زÙ\87 اکثراÙ\8b د Ù\8aÙ\88Ù\87 Ú\93Ù\86Ú¯ شوي مخ د پېښليک يا توپير د تړنو په څارلو کې رامېنځ ته کېږي.
که چېرته داسې نه وي، نو بيا کېدای شي چې په ساوترې کې کومه تېروتنه رابرسېره شوې وي.
لطفاً د دې چارې راپور د URL په نښه کولو سره يوه [[Special:ListUsers/sysop|پازوال]] ته ورکړۍ.',
'permissionserrors' => 'د پرېښې تېروتنه',
'permissionserrorstext' => 'تاسې د لاندې {{PLURAL:$1|سبب|سببونو}} پخاطر د دې کړنې اجازه نه لرۍ:',
'permissionserrorstext-withaction' => 'تاسې د $2 اجازه نه لری، دا د {{PLURAL:$1|دغه سبب|دغو سببونو}} پخاطر:',
-'recreate-moveddeleted-warn' => "'''Ú«Ù\88اÚ\9aÙ\86Ù\87: تاسÛ\90 د Ù\8aÙ\88Ù\87 داسÛ\90 Ù\85Ø® بÙ\8aاجÙ\88Ú\93Ù\88Ù\86Ù\87 Ú©Ù\88Û\8d Ú©Ù\88Ù\85 Ú\86Û\90 Ù\8aÙ\88 Ú\81Ù\84 پخÙ\88ا Ú\93Ù\86Ú« شوی وو.'''
+'recreate-moveddeleted-warn' => "'''Ú¯Ù\88اÚ\9aÙ\86Ù\87: تاسÛ\90 د Ù\8aÙ\88Ù\87 داسÛ\90 Ù\85Ø® بÙ\8aاجÙ\88Ú\93Ù\88Ù\86Ù\87 Ú©Ù\88Û\8d Ú©Ù\88Ù\85 Ú\86Û\90 Ù\8aÙ\88 Ú\81Ù\84 پخÙ\88ا Ú\93Ù\86Ú¯ شوی وو.'''
-پکار دÙ\87 Ú\86Û\90 تاسÛ\90 Ù¾Ù\87 دÛ\90 Ú\81اÙ\86 Ù¾Ù\88Ù\87 Ú©Ú\93Û\8d Ú\86Û\90 اÙ\8aا دا تاسÛ\90 تÙ\87 Ù\88Ú\93 دÙ\87 Ú\86Û\90 د Ù\87Ù\85دÛ\90 Ù\85Ø® جÙ\88Ú\93Ù\88Ù\84 Ù¾Ù\87 پرÙ\84Ù\87 پسÛ\90 تÙ\88Ú«ه وکړۍ.
-ستاسÛ\90 د اساÙ\86تÙ\8aاÙ\88Ù\88 Ù\84پارÙ\87 د Ù\87Ù\85دÛ\90 Ù\85Ø® د Ú\93Ù\86Ú«ېدلو يادښت هم ورکړ شوی:",
-'moveddeleted-notice' => 'دا Ù\85Ø® Ú\93Ù\86Ú« شوی.
-دÙ\84تÙ\87 Ù\84اÙ\86دÛ\90 د دÛ\90 Ù\85Ø® د Ú\93Ù\86Ú«Û\90دÙ\86Û\90 اÙ\88 Ù\84Û\90Ú\96دÛ\90دÙ\86Û\90 Ù\8aادÚ\9aت د سرÚ\86Ù\8aÙ\86Û\90 Ù¾Ù\87 تÙ\88Ú«ه ورکړ شوی.',
+پکار دÙ\87 Ú\86Û\90 تاسÛ\90 Ù¾Ù\87 دÛ\90 Ú\81اÙ\86 Ù¾Ù\88Ù\87 Ú©Ú\93Û\8d Ú\86Û\90 اÙ\8aا دا تاسÛ\90 تÙ\87 Ù\88Ú\93 دÙ\87 Ú\86Û\90 د Ù\87Ù\85دÛ\90 Ù\85Ø® جÙ\88Ú\93Ù\88Ù\84 Ù¾Ù\87 پرÙ\84Ù\87 پسÛ\90 تÙ\88Ú¯ه وکړۍ.
+ستاسÛ\90 د اساÙ\86تÙ\8aاÙ\88Ù\88 Ù\84پارÙ\87 د Ù\87Ù\85دÛ\90 Ù\85Ø® د Ú\93Ù\86Ú¯ېدلو يادښت هم ورکړ شوی:",
+'moveddeleted-notice' => 'دا Ù\85Ø® Ú\93Ù\86Ú¯ شوی.
+دÙ\84تÙ\87 Ù\84اÙ\86دÛ\90 د دÛ\90 Ù\85Ø® د Ú\93Ù\86Ú¯Û\90دÙ\86Û\90 اÙ\88 Ù\84Û\90Ú\96دÛ\90دÙ\86Û\90 Ù\8aادÚ\9aت د سرÚ\86Ù\8aÙ\86Û\90 Ù¾Ù\87 تÙ\88Ú¯ه ورکړ شوی.',
'log-fulllog' => 'بشپړ يادښت کتل',
'edit-gone-missing' => 'د دې مخ اوسمهالول و نه کړای شول.
-داسÛ\90 Ú\9aکارÙ\8a Ú\86Û\90 دا Ù\85Ø® Ú\93Ù\86Ú« شوی.',
+داسÛ\90 Ú\9aکارÙ\8a Ú\86Û\90 دا Ù\85Ø® Ú\93Ù\86Ú¯ شوی.',
'edit-conflict' => 'د سمولو خنډ',
'edit-no-change' => 'ستاسې سمون بابېزه وګڼل شو، دا ځکه چې تاسې په متن کې کوم بدلون نه دی راوستلی.',
'postedit-confirmation' => 'ستاسې سمون خوندي شو.',
'post-expand-template-inclusion-warning' => "'''ګواښنه:''' دا کينډۍ د خپل ټاکلي بريد نه ډېره لويه ده.
ځينې کينډۍ به په کې ګډې نه شي.",
'post-expand-template-inclusion-category' => 'هغه مخونه چې په کې د کارېدلو کينډيو شمېر له ټاکلې کچې ډېر دی',
-'post-expand-template-argument-warning' => "'''Ú«واښنه:''' دا مخ لږ تر لږه د يوې کينډۍ عاملين لري چې بې حده لوی دی.
-دا عاÙ\85Ù\84Ù\8aÙ\86 Ú\93Ù\86Ú« شول.",
-'post-expand-template-argument-category' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\86Û\90 د Ú©Ù\8aÙ\86Ú\89Û\8d Ú\93Ù\86Ú« شوي عاملين لري.',
+'post-expand-template-argument-warning' => "'''Ú¯واښنه:''' دا مخ لږ تر لږه د يوې کينډۍ عاملين لري چې بې حده لوی دی.
+دا عاÙ\85Ù\84Ù\8aÙ\86 Ú\93Ù\86Ú¯ شول.",
+'post-expand-template-argument-category' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\86Û\90 د Ú©Ù\8aÙ\86Ú\89Û\8d Ú\93Ù\86Ú¯ شوي عاملين لري.',
# "Undo" feature
-'undo-norev' => 'دا سمون ناکړ کېدلای نه شي دا ځکه چې دا سمون نشته او يا هم ړنګ شوی.',
+'undo-norev' => 'دا سمون ناکړل کېدای نه شي دا ځکه چې دا سمون نشته او يا هم ړنگ شوی.',
# Account creation failure
'cantcreateaccounttitle' => 'گڼون نه شي جوړېدای',
لنډيز: (اوس) = د اوسنۍ بڼې سره توپير،
(وروست) = د وروستۍ بڼې سره توپير، و = وړه سمونه.',
'history-fieldset-title' => 'پېښليک سپړل',
-'history-show-deleted' => 'Ù\8aÙ\88اÚ\81Û\90 Ú\93Ù\86Ú« شوي',
+'history-show-deleted' => 'Ù\8aÙ\88اÚ\81Û\90 Ú\93Ù\86Ú¯ شوي',
'histfirst' => 'تر ټولو زاړه',
'histlast' => 'تر ټولو نوي',
'historysize' => '({{PLURAL:$1|1 بايټ|$1 بايټونه}})',
'history-feed-title' => 'د مخکتنو پېښليک',
'history-feed-item-nocomment' => '$1 په $2',
'history-feed-empty' => 'ستاسې غوښتلی مخ نه شته.
-Ú©Û\90داÛ\8c Ø´Ù\8a Ú\86Û\90 دا Ù\84Ù\87 Ù\88Ù\8aÚ©Ù\8a Ù\86Ù\87 Ú\93Ù\86Ú« شوی وي، او يا هم په بل نوم بدل شوی وي.
+Ú©Û\90داÛ\8c Ø´Ù\8a Ú\86Û\90 دا Ù\84Ù\87 Ù\88Ù\8aÚ©Ù\8a Ù\86Ù\87 Ú\93Ù\86Ú¯ شوی وي، او يا هم په بل نوم بدل شوی وي.
تاسې په دې ويکي د اړوندو نوؤ مخونو لپاره [[Special:Search|د پلټنې هڅه وکړۍ]].',
# Revision deletion
'revdelete-selected' => "'''د [[:$1]] {{PLURAL:$2|ټاکلې بڼه|ټاکلې بڼې}}:'''",
'revdelete-legend' => 'د ښکارېدنې محدوديتونه ټاکل',
'revdelete-hide-text' => 'د مخکتنې متن پټول',
-'revdelete-hide-image' => 'د دÙ\88تÙ\86Û\90 Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«ه پټول',
+'revdelete-hide-image' => 'د دÙ\88تÙ\86Û\90 Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯ه پټول',
'revdelete-hide-name' => 'کړنه او موخه پټول',
'revdelete-hide-comment' => 'د سمون لنډيز پټول',
'revdelete-hide-user' => 'د سمونګر کارن-نوم/آی پي پته پټول',
'searchall' => 'ټول',
'showingresults' => "دلته لاندې تر {{PLURAL:$1|'''1''' پايله|'''$1''' پايلې}} ښکاره شوي پيل له #'''$2''' شوی.",
'showingresultsheader' => "د «'''$4'''» لپاره {{PLURAL:$5|له '''$1''' نه تر '''$3''' پايله|له '''$1 نه تر $2''' پايلې، ټولې پايلې '''$3''' }}",
-'nonefound' => "'''Ù\8aادÚ\9aت''': Ù\8aÙ\88ازÛ\90 Ù\8aÙ\88 Ú\85Ù\88 Ù\86Ù\88Ù\85-تشÙ\8aاÙ\84Ù\88Ù\86Ù\88 Ù¾Ù\87 تÙ\84Ù\88اÙ\84Ù\8aزÙ\87 تÙ\88Ú«ه پلټل کېږي.
-د ''Ù¼Ù\88Ù\84:'' Ù\85ختاÚ\93Ù\8a Ù¾Ù\87 کارÙ\88Ù\84Ù\88 سرÙ\87 بÙ\87 ستاسÛ\90 د Ù¾Ù\84Ù¼Ù\86Û\90 Ù\84پارÙ\87Ø\8c Ù¾Ù\87 Ù¼Ù\88Ù\84Ù\87 Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«Ù\87 Ú©Û\90 Ù¾Ù\84Ù¼Ù\86Ù\87 Ù\88Ø´Ù\8a (د خبرÙ\88اترÙ\88Ø\8c Ú©Ù\8aÙ\86Ú\89Û\8d اÙ\88 Ù\86Ù\88رÙ\88 Ù\85Ø®Ù\88Ù\86Ù\88 Ù¾Ù\87 Ú«Ú\89Ù\88Ù\86), اÙ\88 Ù\8aا Ù\87Ù\85 د خپÙ\84Û\90 Ø®Ù\88Ú\9aÛ\90 Ù\86Ù\88Ù\85-تشÙ\8aاÙ\84 د Ù\85ختاÚ\93Ù\8a Ù¾Ù\87 تÙ\88Ú«ه وکاروۍ.",
+'nonefound' => "'''Ù\8aادÚ\9aت''': Ù\8aÙ\88ازÛ\90 Ù\8aÙ\88 Ú\85Ù\88 Ù\86Ù\88Ù\85-تشÙ\8aاÙ\84Ù\88Ù\86Ù\88 Ù¾Ù\87 تÙ\84Ù\88اÙ\84Ù\8aزÙ\87 تÙ\88Ú¯ه پلټل کېږي.
+د ''Ù¼Ù\88Ù\84:'' Ù\85ختاÚ\93Ù\8a Ù¾Ù\87 کارÙ\88Ù\84Ù\88 سرÙ\87 بÙ\87 ستاسÛ\90 د Ù¾Ù\84Ù¼Ù\86Û\90 Ù\84پارÙ\87Ø\8c Ù¾Ù\87 Ù¼Ù\88Ù\84Ù\87 Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯Ù\87 Ú©Û\90 Ù¾Ù\84Ù¼Ù\86Ù\87 Ù\88Ø´Ù\8a (د خبرÙ\88اترÙ\88Ø\8c Ú©Ù\8aÙ\86Ú\89Û\8d اÙ\88 Ù\86Ù\88رÙ\88 Ù\85Ø®Ù\88Ù\86Ù\88 Ù¾Ù\87 Ú¯Ú\89Ù\88Ù\86), اÙ\88 Ù\8aا Ù\87Ù\85 د خپÙ\84Û\90 Ø®Ù\88Ú\9aÛ\90 Ù\86Ù\88Ù\85-تشÙ\8aاÙ\84 د Ù\85ختاÚ\93Ù\8a Ù¾Ù\87 تÙ\88Ú¯ه وکاروۍ.",
'search-nonefound' => 'ستاسې دغوښتنې اړونده پايلې و نه موندل شوې.',
'powersearch' => 'ژوره پلټنه',
'powersearch-legend' => 'ژوره پلټنه',
'timezoneuseserverdefault' => 'د ويکي تلواليزه بڼه کارول ($1)',
'timezoneuseoffset' => 'بل (توپير ځانگړی کړی)',
'timezoneoffset' => 'توپير¹:',
-'servertime' => 'د پاÙ\84Ù\86Ú«ر وخت:',
+'servertime' => 'د پاÙ\84Ù\86Ú¯ر وخت:',
'guesstimezone' => 'له کتنمل نه ډکول',
'timezoneregion-africa' => 'افريقا',
'timezoneregion-america' => 'امريکا',
'prefs-signature' => 'لاسليک',
'prefs-dateformat' => 'د نېټې بڼه',
'prefs-timeoffset' => 'د وخت واټن',
-'prefs-advancedediting' => 'Ù¼Ù\88Ù\84Ú«ړی',
+'prefs-advancedediting' => 'Ù¼Ù\88Ù\84Ú¯ړی',
'prefs-editor' => 'سمونګر',
'prefs-preview' => 'مخليدنه',
'prefs-advancedrc' => 'پرمختللې خوښنې',
'right-writeapi' => 'د API کښنې کارېدنه',
'right-delete' => 'مخونه ړنگول',
'right-bigdelete' => 'د اوږدو پېښليکونو مخونه ړنگول',
-'right-browsearchive' => 'Ú\93Ù\86Ú« شوي مخونه پلټل',
+'right-browsearchive' => 'Ú\93Ù\86Ú¯ شوي مخونه پلټل',
'right-undelete' => 'يو مخ ناړنګول',
'right-suppressionlog' => 'شخصي يادښتونه کتل',
'right-block' => 'پر نورو کارنانو د سمون د آسانتياوؤ بنديز لګول',
'right-edituserjs' => 'د نورو کارنانو د JS (جاوا سکرېپټ) دوتنې سمول',
'right-unwatchedpages' => 'د ناکتلو مخونو يو لړليک کتل',
'right-userrights' => 'د کارن ټولې رښتې سمول',
-'right-userrights-interwiki' => 'Ù¾Ù\87 Ù\86Ù\88رÙ\88 Ù\88Ù\8aÚ©Ù\8a Ú«انو د نورو کارنانو کارن-رښتې سمول',
+'right-userrights-interwiki' => 'Ù¾Ù\87 Ù\86Ù\88رÙ\88 Ù\88Ù\8aÚ©Ù\8a Ú¯انو د نورو کارنانو کارن-رښتې سمول',
'right-sendemail' => 'نورو کارنانو ته برېښليک لېږل',
# Special:Log/newusers
'action-writeapi' => 'د API کښنه کارول',
'action-delete' => 'همدا مخ ړنگول',
'action-deleterevision' => 'دا مخکتنه ړنگول',
-'action-deletedhistory' => 'د دÛ\90 Ù\85Ø® Ú\93Ù\86Ú« شوی پېښليک کتل',
-'action-browsearchive' => 'Ú\93Ù\86Ú« مخونه پلټل',
+'action-deletedhistory' => 'د دÛ\90 Ù\85Ø® Ú\93Ù\86Ú¯ شوی پېښليک کتل',
+'action-browsearchive' => 'Ú\93Ù\86Ú¯ مخونه پلټل',
'action-undelete' => 'همدا مخ ناړنګول',
'action-suppressionlog' => 'دا شخصي يادښت کتل',
'action-block' => 'پر دې کارن د سمون د آسانتياوؤ بنديز لګول',
'action-unwatchedpages' => 'د ناکتلو مخونو لړليک کتل',
'action-mergehistory' => 'د دې مخ پېښليک سره اخږل',
'action-userrights' => 'د کارن ټولې رښتې سمول',
-'action-userrights-interwiki' => 'Ù¾Ù\87 Ù\86Ù\88رÙ\88 Ù\88Ù\8aÚ©Ù\8a Ú«انو د کارنانو رښتې سمول',
+'action-userrights-interwiki' => 'Ù¾Ù\87 Ù\86Ù\88رÙ\88 Ù\88Ù\8aÚ©Ù\8a Ú¯انو د کارنانو رښتې سمول',
'action-siteadmin' => 'توکبنسټ کولپول يا نه کولپول',
'action-sendemail' => 'برېښليکونه لېږل',
'filehist-help' => 'په يوې نېټې/يوه وخت وټوکۍ چې د هماغه وخت او نېټې دوتنه چې په هماغه وخت کې څنګه ښکارېده هماغسې درښکاره شي.',
'filehist-deleteall' => 'ټول ړنگول',
'filehist-deleteone' => 'ړنگول',
-'filehist-revert' => 'Ù¾Ù\87 Ú\85Ù¼ Ú«رځول',
+'filehist-revert' => 'Ù¾Ù\87 Ú\85Ù¼ Ú¯رځول',
'filehist-current' => 'اوسنی',
'filehist-datetime' => 'نېټه/وخت',
'filehist-thumb' => 'بټنوک',
# File reversion
'filerevert-comment' => 'سبب:',
-'filerevert-submit' => 'Ù¾Ù\87 Ú\85Ù¼ Ú«رځول',
+'filerevert-submit' => 'Ù¾Ù\87 Ú\85Ù¼ Ú¯رځول',
# File deletion
'filedelete' => '$1 ړنگول',
'filedelete-intro' => "تاسې د '''[[Media:$1|$1]]''' دوتنې او د ورسره ټول پېښليک د ړنګولو په حال کې ياست.",
'filedelete-comment' => 'سبب:',
'filedelete-submit' => 'ړنگول',
-'filedelete-success' => "'''$1''' Ú\93Ù\86Ú« شو.",
+'filedelete-success' => "'''$1''' Ú\93Ù\86Ú¯ شو.",
'filedelete-nofile' => "'''$1''' نشته.",
'filedelete-otherreason' => 'بل/اضافه سبب:',
'filedelete-reason-otherlist' => 'بل سبب',
-'filedelete-reason-dropdown' => '*د Ú\93Ù\86Ú«Ù\88Ù\84Ù\88 Ù¼Ù\88Ù\84Ú«ړی سبب
+'filedelete-reason-dropdown' => '*د Ú\93Ù\86Ú¯Ù\88Ù\84Ù\88 Ù¼Ù\88Ù\84Ú¯ړی سبب
** د رښتو نه غاړه غړونه
-** Ú©Ù¼ Ù\85Ù¼ دÙ\88Ù\87 Ú«ونې دوتنه',
+** Ú©Ù¼ Ù\85Ù¼ دÙ\88Ù\87 Ú¯ونې دوتنه',
'filedelete-edit-reasonlist' => 'د ړنګولو سببونه سمول',
'filedelete-maintenance-title' => 'دوتنه نه شي ړنګېدی',
'unwatchedpages' => 'ناکتلي مخونه',
# List redirects
-'listredirects' => 'د Ù\88رګرځېدنو لړليک',
+'listredirects' => 'د Ù\88رگرځېدنو لړليک',
# Unused templates
'unusedtemplates' => 'ناکارېدلې کينډۍ',
'randompage-nopages' => 'په لانديني {{PLURAL:$2|نوم-تشيال|نوم-تشيالونو}} کې هېڅ کوم مخ نشته: $1.',
# Random redirect
-'randomredirect' => 'Ù\86اټاکÙ\84Û\8c Ù\88رګرځېدنه',
+'randomredirect' => 'Ù\86اټاکÙ\84Û\8c Ù\88رگرځېدنه',
# Statistics
'statistics' => 'شمار',
'statistics-header-hooks' => 'بل شمار',
'statistics-articles' => 'مېنځپانگيز مخونه',
'statistics-pages' => 'مخونه',
-'statistics-pages-desc' => 'د Ù\88Ù\8aÚ©Ù\8a Ù¼Ù\88Ù\84 Ù\85Ø®Ù\88Ù\86Ù\87Ø\8c د خبرÙ\88 اترÙ\88Ø\8c Ù\85Ø® ګرÚ\81Û\90دÙ\86Ù\88Ø\8c اÙ\88 Ù\84ا Ù\86Ù\88رÙ\88 Ù\85Ø®Ù\88Ù\86Ù\88 Ù¾Ù\87 Ú«ډون.',
+'statistics-pages-desc' => 'د Ù\88Ù\8aÚ©Ù\8a Ù¼Ù\88Ù\84 Ù\85Ø®Ù\88Ù\86Ù\87Ø\8c د خبرÙ\88 اترÙ\88Ø\8c Ù\85Ø® گرÚ\81Û\90دÙ\86Ù\88Ø\8c اÙ\88 Ù\84ا Ù\86Ù\88رÙ\88 Ù\85Ø®Ù\88Ù\86Ù\88 Ù¾Ù\87 Ú¯ډون.',
'statistics-files' => 'پورته شوې دوتنې',
'statistics-edits' => 'د {{SITENAME}} د جوړېدو راهيسې د مخونو سمون',
'statistics-edits-average' => 'پر يوه مخ د سمون منځوۍ کچه',
'pageswithprop-submit' => 'ورځه',
-'doubleredirects' => 'دÙ\88Ù\87 Ú\81Ù\84Ù\8a Ù\88رګرځېدنې',
+'doubleredirects' => 'دÙ\88Ù\87 Ú\81Ù\84Ù\8a Ù\88رگرځېدنې',
-'brokenredirects' => 'Ù\85اتÛ\90 Ù\88رګرځېدنې',
+'brokenredirects' => 'Ù\85اتÛ\90 Ù\88رگرځېدنې',
'brokenredirects-edit' => 'سمول',
'brokenredirects-delete' => 'ړنگول',
'wantedfiles' => 'غوښتلې دوتنې',
'wantedtemplates' => 'غوښتلې کينډۍ',
'mostlinked' => 'د ډېرو تړنو مخونه',
-'mostlinkedcategories' => 'د Ú«ڼو تړنو وېشنيزې',
+'mostlinkedcategories' => 'د Ú¯ڼو تړنو وېشنيزې',
'mostlinkedtemplates' => 'د ډېرو تړنو کينډۍ',
-'mostcategories' => 'د Ú«ڼو وېشنيزو مخونه',
+'mostcategories' => 'د Ú¯ڼو وېشنيزو مخونه',
'mostimages' => 'د ډېرو تړنو انځورونه',
'mostinterwikis' => 'د ډېرو خپلمنځي تړنو مخونه',
'mostrevisions' => 'ډېر کتلي مخونه',
'allpagesnext' => 'راتلونکي',
'allpagessubmit' => 'ورځه',
'allpagesprefix' => 'هغه مخونه ښکاره کړه چې مختاړی يې وي:',
-'allpagesbadtitle' => 'Ù\88رکÚ\93 Ø´Ù\88Û\8c سرÙ\84Ù\8aÚ© سÙ\85 Ù\86Ù\87 دÛ\8c اÙ\88 Ù\8aا Ù\87Ù\85 د Ú\98بÙ\88 اÙ\88 Ù\8aا د بÛ\90Ù\84ابÛ\90Ù\84Ù\88 Ù\88Ù\8aÚ©Ù\8a Ú«انو مختاړی لري. ستاسو په سرليک کې يو يا څو داسې ابېڅې دي کوم چې په سرليک کې نه شي کارېدلی.',
+'allpagesbadtitle' => 'Ù\88رکÚ\93 Ø´Ù\88Û\8c سرÙ\84Ù\8aÚ© سÙ\85 Ù\86Ù\87 دÛ\8c اÙ\88 Ù\8aا Ù\87Ù\85 د Ú\98بÙ\88 اÙ\88 Ù\8aا د بÛ\90Ù\84ابÛ\90Ù\84Ù\88 Ù\88Ù\8aÚ©Ù\8a Ú¯انو مختاړی لري. ستاسو په سرليک کې يو يا څو داسې ابېڅې دي کوم چې په سرليک کې نه شي کارېدلی.',
'allpages-bad-ns' => '{{SITENAME}} د "$1" په نامه هېڅ کوم نوم-تشيال نه لري.',
'allpages-hide-redirects' => 'مخ ګرځونې پټول',
'enotif_mailer' => 'د {{SITENAME}} خبرتيايي برېښليک',
'enotif_reset' => 'ټول مخونه کتل شوي نخښه کول',
'enotif_impersonal_salutation' => '{{SITENAME}} کارن',
-'enotif_subject_deleted' => 'د {{SITENAME}} Ù\85Ø® $1 د {{gender:$2|$2}} Ù\84Ø®Ù\88ا Ú\93Ù\86Ú« شوی',
+'enotif_subject_deleted' => 'د {{SITENAME}} Ù\85Ø® $1 د {{gender:$2|$2}} Ù\84Ø®Ù\88ا Ú\93Ù\86Ú¯ شوی',
'enotif_subject_created' => 'د {{SITENAME}} مخ $1 د {{gender:$2|$2}} لخوا جوړ شوی',
'enotif_subject_moved' => 'د {{SITENAME}} مخ $1 د {{gender:$2|$2}} لخوا لېږدول شوی',
'enotif_subject_restored' => 'د {{SITENAME}} مخ $1 د {{gender:$2|$2}} لخوا بيازېرمل شوی',
'enotif_subject_changed' => 'د {{SITENAME}} مخ $1 د {{gender:$2|$2}} لخوا بدل شوی',
-'enotif_body_intro_deleted' => 'د {{SITENAME}} Ù\85Ø® $1 Ù¾Ù\87 $ د {{gender:$2|$2}} Ù\84Ø®Ù\88ا Ú\93Ù\86Ú« Ø´Ù\88Û\8cØ\8c $3 Ù\88Ú«ورۍ.',
+'enotif_body_intro_deleted' => 'د {{SITENAME}} Ù\85Ø® $1 Ù¾Ù\87 $ د {{gender:$2|$2}} Ù\84Ø®Ù\88ا Ú\93Ù\86Ú¯ Ø´Ù\88Û\8cØ\8c $3 Ù\88Ú¯ورۍ.',
'enotif_body_intro_created' => 'د {{SITENAME}} مخ $1 په $PAGEEDITDATE د {{gender:$2|$2}} لخوا جوړ شوی، د اوسنۍ بڼې کتلو لپاره $3 وګورۍ.',
'enotif_body_intro_moved' => 'د {{SITENAME}} مخ $1 په $PAGEEDITDATE د {{gender:$2|$2}} لخوا لېږدول شوی، د اوسنۍ بڼې کتلو لپاره $3 وګورۍ.',
'enotif_body_intro_restored' => 'د {{SITENAME}} مخ $1 په $PAGEEDITDATE د {{gender:$2|$2}} لخوا بيازېرمل شوی، د اوسنۍ بڼې کتلو لپاره $3 وګورۍ.',
# Delete
'deletepage' => 'مخ ړنگول',
'confirm' => 'تاييد',
-'excontent' => 'د Ù\85Ø® Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«ه دا وه: "$1"',
-'excontentauthor' => 'د Ù\85Ø® Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«ه دا وه: "$1" (او يواځينی ونډه وال "[[Special:Contributions/$2|$2]]" وه)',
+'excontent' => 'د Ù\85Ø® Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯ه دا وه: "$1"',
+'excontentauthor' => 'د Ù\85Ø® Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯ه دا وه: "$1" (او يواځينی ونډه وال "[[Special:Contributions/$2|$2]]" وه)',
'exblank' => 'مخ تش وه',
-'delete-confirm' => '"$1" Ú\93Ù\86Ú«Ù\88ول',
+'delete-confirm' => '"$1" Ú\93Ù\86Ú¯ول',
'delete-legend' => 'ړنگول',
'historywarning' => "ګواښنه:''' تاسې چې د کوم مخ د ړنګېدو تکل لری، هغه د نژدې $1 {{PLURAL:$1|بڼې|بڼو}} يو پېښليک لري:",
'confirmdeletetext' => 'تاسې د تل لپار يو مخ يا انځور د هغه ټول پېښليک سره د دغه توکبنسټ نه ړنګوۍ. که چېرته تاسې ددې کړنې په پايله پوه ياست او يا ستاسو همدا کړنه د دې پاڼې د [[{{MediaWiki:Policy-url}}|تګلارې]] سره سمون خوري نو لطفاً د دې تاييد وکړی.',
'actioncomplete' => 'بشپړه کړنه',
'actionfailed' => 'کړنه نابريالۍ شوه',
-'deletedtext' => '"$1" Ú\93Ù\86Ú« شوی.
-د Ù\86Ù\88Ù\88 Ú\93Ù\86Ú« Ø´Ù\88Ù\88 سÙ\88اÙ\86ØÙ\88 Ù\84پارÙ\87 $2 Ù\88Ú«ورۍ.',
+'deletedtext' => '"$1" Ú\93Ù\86Ú¯ شوی.
+د Ù\86Ù\88Ù\88 Ú\93Ù\86Ú¯ Ø´Ù\88Ù\88 سÙ\88اÙ\86ØÙ\88 Ù\84پارÙ\87 $2 Ù\88Ú¯ورۍ.',
'dellogpage' => 'د ړنګولو يادښت',
-'dellogpagetext' => 'دا Ù\84اÙ\86دÛ\90 د Ù\86Ù\88Ù\88 Ú\93Ù\86Ú« شوو کړنو لړليک دی.',
+'dellogpagetext' => 'دا Ù\84اÙ\86دÛ\90 د Ù\86Ù\88Ù\88 Ú\93Ù\86Ú¯ شوو کړنو لړليک دی.',
'deletionlog' => 'د ړنګولو يادښت',
'deletecomment' => 'سبب:',
'deleteotherreason' => 'بل/اضافه سبب:',
'deletereasonotherlist' => 'بل سبب',
-'deletereason-dropdown' => '*د Ú\93Ù\86Ú«Ù\88Ù\84Ù\88 Ù¼Ù\88Ù\84Ú«ړی سبب
+'deletereason-dropdown' => '*د Ú\93Ù\86Ú¯Ù\88Ù\84Ù\88 Ù¼Ù\88Ù\84Ú¯ړی سبب
** د ليکوال غوښتنه
** د رښتو تېری
** د پوهې سره دښمني',
'restriction-level-all' => 'هر يو پوړ',
# Undelete
-'undelete' => 'Ú\93Ù\86Ú« شوي مخونه کتل',
-'undeletepage' => 'Ú\93Ù\86Ú« Ø´Ù\88Ù\8a Ù\85Ø®Ù\88Ù\86Ù\87 کتÙ\84 اÙ\88 بÛ\90رتÙ\87 پرځای کول',
-'viewdeletedpage' => 'Ú\93Ù\86Ú« شوي مخونه کتل',
+'undelete' => 'Ú\93Ù\86Ú¯ شوي مخونه کتل',
+'undeletepage' => 'Ú\93Ù\86Ú¯ Ø´Ù\88Ù\8a Ù\85Ø®Ù\88Ù\86Ù\87 کتÙ\84 اÙ\88 بÙ\8aا پرځای کول',
+'viewdeletedpage' => 'Ú\93Ù\86Ú¯ شوي مخونه کتل',
'undeletebtn' => 'بيازېرمل',
'undeletelink' => 'کتل/بيازېرمل',
'undeleteviewlink' => 'کتل',
'undeletecomment' => 'سبب:',
'undeletedfiles' => '{{PLURAL:$1|1 دوتنه بيازېرمه شوه|$1 دوتنې بيازېرمه شوې}}',
'undelete-header' => 'د وروستيو ړنګو شوو مخونو لپاره [[Special:Log/delete|د ړنګولو يادښت]] وګورۍ.',
-'undelete-search-box' => 'Ú\93Ù\86Ú« شوي مخونه لټول',
+'undelete-search-box' => 'Ú\93Ù\86Ú¯ شوي مخونه لټول',
'undelete-search-prefix' => 'هغه مخونه ښکاره کړه چې پېلېږي په:',
'undelete-search-submit' => 'پلټل',
'undelete-show-file-submit' => 'هو',
'ipusubmit' => 'دا بنديز ليرې کول',
'unblocked' => 'له [[User:$1|$1]] بنديز ليري شو',
'unblocked-range' => 'له $1 بنديز ليرې شو',
-'blocklist' => 'بÙ\86دÙ\8aز Ù\84Ú«ېدلي کارنان',
-'ipblocklist' => 'بÙ\86دÙ\8aز Ù\84Ú«ېدلي کارنان',
+'blocklist' => 'بÙ\86دÙ\8aز Ù\84Ú¯ېدلي کارنان',
+'ipblocklist' => 'بÙ\86دÙ\8aز Ù\84Ú¯ېدلي کارنان',
'ipblocklist-legend' => 'يو بنديز شوی کارن موندل',
'blocklist-userblocks' => 'گڼون بنديزونه پټول',
'blocklist-tempblocks' => 'لنډمهاله بنديزونه پټول',
'movesubpagetext' => 'همدا مخ $1 {{PLURAL:$1|څېرمه مخ لري چې لاندې ښودل شوی|څېرمه مخونه لري چې لاندې ښودل شوي}}.',
'movenosubpage' => 'دا مخ کوم څېرمه مخونه نه لري.',
'movereason' => 'سبب:',
-'revertmove' => 'Ù¾Ù\87 Ú\85Ù¼ Ú«رځول',
+'revertmove' => 'Ù¾Ù\87 Ú\85Ù¼ Ú¯رځول',
'delete_and_move' => 'ړنگول او لېږدول',
-'delete_and_move_confirm' => 'Ù\87Ù\88, دا Ù\85Ø® Ú\93Ù\86Ú« کړه',
+'delete_and_move_confirm' => 'Ù\87Ù\88, دا Ù\85Ø® Ú\93Ù\86Ú¯ کړه',
'immobile-source-page' => 'دا مخ نه لېږدېدنونکی دی',
'imageinvalidfilename' => 'د موخنې دوتنې نوم سم نه دی',
'move-leave-redirect' => 'يو ورګرځونکی مخ پر ځای پرېښودل',
'exportall' => 'ټول مخونه صادرول',
'export-submit' => 'صادرول',
'export-addcattext' => 'مخونو د ورګډولو وېشنيزه:',
-'export-addcat' => 'Ù\88رګډول',
+'export-addcat' => 'Ù\88رگډول',
'export-addnstext' => 'د نوم-تشيال نه مخونه ورګډول:',
'export-addns' => 'ورګډول',
'export-download' => 'د دوتنې په بڼه خوندي کول',
'tooltip-t-specialpages' => 'د ټولو ځانگړو پاڼو لړليک',
'tooltip-t-print' => 'د دې مخ چاپي بڼه',
'tooltip-t-permalink' => 'د دې مخ د همدې بڼې تلپاتې تړنه',
-'tooltip-ca-nstab-main' => 'د Ù\85Ø® Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«ه کتل',
+'tooltip-ca-nstab-main' => 'د Ù\85Ø® Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯ه کتل',
'tooltip-ca-nstab-user' => 'د کارن پاڼه کتل',
'tooltip-ca-nstab-media' => 'د رسنۍ مخ کتل',
'tooltip-ca-nstab-special' => 'دا يو ځانگړی مخ دی، تاسې په دې مخ کې سمون نه شی کولای.',
'pageinfo-robot-noindex' => 'ليکلړوړ نه',
'pageinfo-views' => 'د کتنو شمېر',
'pageinfo-watchers' => 'د مخ د کتونکو شمېر',
-'pageinfo-redirects-name' => 'دې مخ ته ورګرځونې',
+'pageinfo-redirects-name' => 'دې مخ ته د ورگرځونو شمېر',
'pageinfo-subpages-name' => 'دې مخ ته څېرمه مخونه',
'pageinfo-firstuser' => 'مخ جوړونکی',
'pageinfo-firsttime' => 'د مخ جوړېدنې نېټه',
'exif-giffilecomment' => 'د GIF دوتنې تبصره',
'exif-copyrighted-true' => 'په رښتو سمبال',
-'exif-copyrighted-false' => 'ټولګړی شپول',
+'exif-copyrighted-false' => 'د خپراوي د رښتو دريځ نه دی ټاکل شوی',
'exif-unknowndate' => 'نامالومه نېټه',
'table_pager_empty' => 'بې پايلو',
# Auto-summaries
-'autosumm-blank' => 'د مخ مېنځپانګه ليرې شوه',
+'autosumm-blank' => 'مخ تش شو',
'autosumm-replace' => "دا مخ د '$1' پرځای راوستل",
'autoredircomment' => '[[$1]] ته وګرځولی شو',
'autosumm-new' => 'د "$1" تورو مخ جوړ شو',
# Special:Version
'version' => 'بڼه',
-'version-extensions' => 'Ù\84Ú«ېدلي شاتاړي',
+'version-extensions' => 'Ù\84Ú¯ېدلي شاتاړي',
'version-specialpages' => 'ځانگړي مخونه',
'version-skins' => 'پوښۍ',
'version-other' => 'بل',
'version-software-version' => 'بڼه',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'د دÙ\88Ù\87 Ú«ونو دوتنو پلټنه',
-'fileduplicatesearch-legend' => 'د دÙ\88Ù\87 Ú«ونو دوتنو پلټنه',
+'fileduplicatesearch' => 'د دÙ\88Ù\87 Ú¯ونو دوتنو پلټنه',
+'fileduplicatesearch-legend' => 'د دÙ\88Ù\87 Ú¯ونو دوتنو پلټنه',
'fileduplicatesearch-filename' => 'د دوتنې نوم:',
'fileduplicatesearch-submit' => 'پلټل',
'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> پېکسل<br />د دوتنې کچه: $3<br />ډول MIME: $4',
'htmlform-yes' => 'هو',
# New logging system
-'logentry-delete-delete' => '$1 د $3 Ù\85Ø® {{GENDER:$2|Ú\93Ù\86Ú« کړ}}',
-'revdelete-content-hid' => 'Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«ه پټېدلې',
+'logentry-delete-delete' => '$1 د $3 Ù\85Ø® {{GENDER:$2|Ú\93Ù\86Ú¯ کړ}}',
+'revdelete-content-hid' => 'Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯ه پټېدلې',
'revdelete-uname-hid' => 'کارن نوم پټ شوی',
-'revdelete-content-unhid' => 'Ù\85Û\90Ù\86Ú\81پاÙ\86Ú«ه ښکاره شوی',
+'revdelete-content-unhid' => 'Ù\85Û\90Ù\86Ú\81پاÙ\86Ú¯ه ښکاره شوی',
'revdelete-uname-unhid' => 'ښکاره کارن-نوم',
'logentry-move-move' => '$1 د $3 مخ $4 ته {{GENDER:$2|ولېږداوه}}',
'logentry-newusers-newusers' => 'د $1 کارن گڼون {{GENDER:$2|جوړ شو}}',
A última edição foi de [[User:$3|$3]] ([[User talk:$3|discussão]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "O resumo da edição era: \"''\$1''\".",
'revertpage' => 'Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]',
-'revertpage-nouser' => 'Revertidas as edições de um usuário ocultado para a última revisão por [[User:$1|$1]]',
+'revertpage-nouser' => 'Revertidas as edições de um usuário ocultado para a última revisão {{GENDER:$1|pelo|pela|por}} [[User:$1|$1]]',
'rollback-success' => 'Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.',
# Edit tokens
'listusers' => '{{doc-special|ListUsers}}',
'listusers-editsonly' => 'Option in [[Special:ListUsers]].',
'listusers-creationsort' => 'Option in [[Special:ListUsers]].',
+'listusers-desc' => 'Used as label for the checkbox.',
'usereditcount' => 'Shown behind every username on [[Special:ListUsers]]. Parameters:
* $1 - number of edits',
'usercreated' => 'Used in [[Special:ListUsers]]. Parameters:
In other cases the message {{msg-mw|Revertpage}} is used.
Parameters:
-* $1 - username 1
+* $1 - username 1, can be used for GENDER
* $2 - (Optional) username 2
* $3 - (Optional) revision ID of the revision reverted to
* $4 - (Optional) timestamp of the revision reverted to
'action-block' => 'blocați permisiunea de modificare a acestui utilizator',
'action-protect' => 'modificați nivelurile de protecție pentru această pagină',
'action-rollback' => 'faceți revocarea rapidă a modificărilor ultimului utilizator care a modificat o pagină particulară',
-'action-import' => 'importați această pagină din alt wiki',
-'action-importupload' => 'importați această pagină prin încărcarea unui fișier',
+'action-import' => 'importați pagini din alt wiki',
+'action-importupload' => 'importați pagini prin încărcarea unui fișier',
'action-patrol' => 'marcați modificările celorlalți ca patrulate',
'action-autopatrol' => 'marcați modificarea drept patrulată',
'action-unwatchedpages' => 'vizualizați lista de pagini neurmărite',
'listusers' => 'Listă utilizatori',
'listusers-editsonly' => 'Arată doar utilizatorii cu modificări',
'listusers-creationsort' => 'Sortează după data creării',
+'listusers-desc' => 'Sortează descrescător',
'usereditcount' => '$1 {{PLURAL:$1|editare|editări}}',
'usercreated' => '{{GENDER:$3|Creat}} în $1 la $2',
'newpages' => 'Pagini noi',
Ultima editare a fost făcută de către [[User:$3|$3]] ([[User talk:$3|discuție]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Descrierea modificărilor a fost: „''$1''”.",
'revertpage' => 'Anularea modificărilor efectuate de către [[Special:Contributions/$2|$2]] ([[User talk:$2|discuție]]) și revenire la ultima versiune de către [[User:$1|$1]]',
-'revertpage-nouser' => 'Anularea modificărilor efectuate de un utilizator ascuns și revenirea la ultima modificare de către [[User:$1|$1]]',
+'revertpage-nouser' => 'Anularea modificărilor efectuate de un utilizator ascuns și revenirea la ultima modificare de către {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Anularea modificărilor făcute de $1;
revenire la ultima versiune de $2.',
'listusers' => 'Список участников',
'listusers-editsonly' => 'Показать только тех участников, кто сделал хотя бы одну правку',
'listusers-creationsort' => 'Упорядочить по дате создания',
+'listusers-desc' => 'Сортировать по убыванию',
'usereditcount' => '$1 {{PLURAL:$1|правка|правки|правок}}',
'usercreated' => '{{GENDER:$3|зарегистрировался|зарегистрировалась}} $1 в $2',
'newpages' => 'Новые страницы',
'action-block' => 'blockera denna användare från redigering',
'action-protect' => 'ändra skyddsnivå för denna sida',
'action-rollback' => 'snabbt rulla tillbaka ändringarna gjorda av den användare som senast redigerade en viss sida',
-'action-import' => 'importera denna sida från en annan wiki',
-'action-importupload' => 'importera denna sida från en uppladdad fil',
+'action-import' => 'importera sidor från en annan wiki',
+'action-importupload' => 'importera sidor från en filuppladdning',
'action-patrol' => 'märka annans redigering som patrullerad',
'action-autopatrol' => 'få din redigering märkt som patrullerad',
'action-unwatchedpages' => 'se listan över obevakade sidor',
'listusers' => 'Användarlista',
'listusers-editsonly' => 'Visa endast användare som redigerat',
'listusers-creationsort' => 'Sortera efter datum skapat',
+'listusers-desc' => 'Sortera i fallande ordning',
'usereditcount' => '$1 {{PLURAL:$1|redigering|redigeringar}}',
'usercreated' => '{{GENDER:$3|Skapat}} $1 $2',
'newpages' => 'Nya sidor',
Sidan ändrades senast av [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).',
'editcomment' => "Redigeringskommentaren var: \"''\$1''\".",
'revertpage' => 'Återställde redigeringar av [[Special:Contributions/$2|$2]] ([[User talk:$2|användardiskussion]]) till senaste versionen av [[User:$1|$1]]',
-'revertpage-nouser' => 'Återställde redigeringar av en dold användare till den senaste versionen av [[User:$1|$1]]',
+'revertpage-nouser' => 'Återställde redigeringar av en dold användare till den senaste versionen av {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Återställde ändringar av $1;
ändrade tillbaka till senaste version av $2.',
'action-block' => 'блокування цього дописувача',
'action-protect' => 'зміну рівня захисту цієї сторінки',
'action-rollback' => 'швидко відкотити редагування останнього користувача, що змінював певну сторінку',
-'action-import' => 'Ñ\96мпоÑ\80Ñ\82 Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки з іншої вікі',
-'action-importupload' => 'Ñ\96мпоÑ\80Ñ\82 Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки з файлу',
+'action-import' => 'Ñ\96мпоÑ\80Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нок з іншої вікі',
+'action-importupload' => 'Ñ\96мпоÑ\80Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нок Ñ\87еÑ\80ез заванÑ\82аженнÑ\8f файлу',
'action-patrol' => 'позначення чужих редагувань патрульованими',
'action-autopatrol' => 'позначення власних редагувань патрульованими',
'action-unwatchedpages' => 'перегляд списку сторінок, за якими ніхто не спостерігає',
'listusers' => 'Список користувачів',
'listusers-editsonly' => 'Показати лише користувачів, які зробили принаймні одне редагування',
'listusers-creationsort' => 'Сортувати за датою створення',
+'listusers-desc' => 'Сортувати за спадним порядком',
'usereditcount' => '$1 {{PLURAL:$1|редагування|редагування|редагувань}}',
'usercreated' => '{{GENDER:$3|Створено}} $1 о $2',
'newpages' => 'Нові сторінки',
Останні редагування зроблено [[User:$3|$3]] ([[User talk:$3|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Пояснення редагування було: «''$1''».",
'revertpage' => 'Редагування користувача [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]]) відкинуті до версії користувача [[User:$1|$1]]',
-'revertpage-nouser' => 'Відкинуто редагування прихованого користувача до останньої версії, зробленої користувачем [[User:$1|$1]]',
+'revertpage-nouser' => 'Відкинуто редагування прихованого користувача до останньої версії, зробленої {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Відкинуті редагування користувача $1; повернення до версії користувача $2.',
# Edit tokens
'action-block' => 'cấm không cho người dùng này sửa đổi',
'action-protect' => 'thay đổi mức khóa của trang này',
'action-rollback' => 'nhanh chóng lùi tất cả sửa đổi của người dùng cuối cùng sửa đổi trang nào đó',
-'action-import' => 'nhập trang này từ wiki khác',
-'action-importupload' => 'nhập trang này bằng cách tải lên tập tin',
+'action-import' => 'nhập trang từ wiki khác',
+'action-importupload' => 'nhập trang bằng cách tải lên tập tin',
'action-patrol' => 'đánh dấu đã tuần tra vào sửa đổi của người khác',
'action-autopatrol' => 'tự động đánh dấu đã tuần tra vào sửa đổi của bạn',
'action-unwatchedpages' => 'xem danh sách các trang chưa được theo dõi',
'listusers' => 'Danh sách thành viên',
'listusers-editsonly' => 'Chỉ hiện thành viên có tham gia sửa đổi',
'listusers-creationsort' => 'Xếp theo ngày khởi tạo',
+'listusers-desc' => 'Sắp xếp thứ tự giảm dần',
'usereditcount' => '$1 {{PLURAL:$1|sửa đổi|sửa đổi}}',
'usercreated' => '{{GENDER:$3}}mở $1 lúc $2',
'newpages' => 'Trang mới',
Sửa đổi cuối cùng tại trang do [[User:$3|$3]] ([[User talk:$3|thảo luận]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) thực hiện.',
'editcomment' => "Tóm lược sửa đổi: “''$1''”.",
'revertpage' => 'Đã lùi lại sửa đổi của [[Special:Contributions/$2|$2]] ([[User talk:$2|Thảo luận]]) quay về phiên bản cuối của [[User:$1|$1]]',
-'revertpage-nouser' => 'Đã lùi lại sửa đổi của người dùng ẩn quay về phiên bản cuối của [[User:$1|$1]]',
+'revertpage-nouser' => 'Đã lùi lại sửa đổi của người dùng ẩn quay về phiên bản cuối của {{GENDER:$1}}[[User:$1|$1]]',
'rollback-success' => 'Đã hủy sửa đổi của $1;
quay về phiên bản cuối của $2.',
* @ingroup Language
* @file
*
+ * @author Benojan
* @author Hercule
* @author O
* @author Reedy
$messages = array(
# User preference toggles
-'tog-underline' => 'é\93¾æ\8e¥ä¸\8bå\88\92线:',
-'tog-justify' => '对é½\90段落',
-'tog-hideminor' => 'æ\9d¥è®¸è¿\91段辰å\85\89个æ\94¹å\8a¨é\87\8cå\90\91æ\8b¿ç»\86æ\94¹å\8a¨囥脱',
-'tog-hidepatrolled' => 'æ\9d¥æ\8b\89è¿\91段辰å\85\89个æ\94¹å\8a¨é\87\8cå\90\91å\9b¥è\84±å·¡æ\9f¥è¿\87æ\87个æ\94¹å\8a¨',
-'tog-newpageshidepatrolled' => 'æ\9d¥æ\8b\89æ\96°é¡µé\9d¢å\88\97表é\87\8cå\90\91æ\8b¿å·²å·¡æ\9f¥æ\87个页é\9d¢å\9b¥è\84±',
-'tog-extendwatchlist' => '扩展监控列表,显示所有改动,而弗仅仅是最近个',
+'tog-underline' => 'é\8f\88æ\8e¥ä¸\8bæ©«ç·\9a:',
+'tog-justify' => 'å°\8dé½\8a段落',
+'tog-hideminor' => 'æ¤å\9e¡æ\94¹å\8b\95è£\8få\90\91å°\8fè®\8aå\8c\96囥脱',
+'tog-hidepatrolled' => 'æ¤å\9e¡è®\8aå\8c\96è£\8få\90\91ç\95\80å·¡æ\9f¥é\81\8eå\80\8bæ\94¹å\8b\95å\9b¥è\84«',
+'tog-newpageshidepatrolled' => 'æ\96°å¼µé \81é\9d¢è¡¨è£\8fç\95\80å·¡æ\9f¥é\81\8eå\80\8bé \81é\9d¢å\9b¥è\84«',
+'tog-extendwatchlist' => '關注表裏顯示全部變化,弗止此垡個',
'tog-usenewrc' => '使用强化版个近段辰光个改动(JavaScript)',
-'tog-numberheadings' => 'æ \87é¢\98è\87ªå\8a¨ç¼\96å\8f·',
+'tog-numberheadings' => 'æ¨\99é¡\8cè\87ªå\8b\95ç·¨è\99\9f',
'tog-showtoolbar' => '顯示編寫傢伙欄',
-'tog-editondblclick' => '雙捺來編寫頁面',
-'tog-editsection' => 'å\85\81许é\80\9aè¿\87ç\82¹å\87»ã\80\90ç¼\96è¾\91ã\80\91é\93¾æ\8e¥æ\9d¥ç¼\96è¾\91段落',
-'tog-editsectiononrightclick' => '用右捺標題編輯段落',
-'tog-showtoc' => '显示目录(针对超过三只标题个页面)',
-'tog-rememberpassword' => '来许箇台电脑上记牢我个密码(可维持$1{{PLURAL:$1|日|日}})',
+'tog-editondblclick' => '捺兩記編寫頁面',
+'tog-editsection' => '好ç\94¨ã\80\90ç¼\96寫ã\80\91é\8f\88æ\8e¥ç·¨å¯«段落',
+'tog-editsectiononrightclick' => '右捺標題編寫段落',
+'tog-showtoc' => '顯示目錄(針對超過三個標題個頁面)',
+'tog-rememberpassword' => '箇個瀏覽器裏畀我個密碼記牢(記$1{{PLURAL:$1|日|日}})',
'tog-watchcreations' => '拿我创建个页面添加到我个监控列表里向',
'tog-watchdefault' => '拿我编辑个页面添加到我个监控列表里向',
'tog-watchmoves' => '拿我移动个页面添加到我个监控列表里向',
-'tog-watchdeletion' => '拿我删除个页面添加到我个监控列表里向',
-'tog-minordefault' => '默认拿所有编辑标记成功细编辑',
-'tog-previewontop' => '来拉编辑框前头显示预览',
-'tog-previewonfirst' => '来拉首次编辑辰光显示预览',
+'tog-watchdeletion' => '畀我删脫個頁面搭文件加進我個關注表裏',
+'tog-minordefault' => '默认畀全部編寫都標起小編寫',
+'tog-previewontop' => '徠編寫框頭前顯示先望',
+'tog-previewonfirst' => '第一垡編寫顯示先望',
'tog-nocache' => '禁用页面缓存',
-'tog-enotifwatchlistpages' => '我个监控列表里向个页面有改动个说话发电子邮件通知我',
-'tog-enotifusertalkpages' => '我个对话更改辰光发邮件通知我',
-'tog-enotifminoredits' => '页é\9d¢æ\9c\89ç»\86微修æ\94¹ä¸ªè¾°å\85\89ä¹\9få\8f\91é\82®ä»¶é\80\9aç\9f¥æ\88\91',
-'tog-enotifrevealaddr' => '来拉通知邮件列表里向显示我个邮件地址',
-'tog-shownumberswatching' => '显示监控此页个用户数目',
+'tog-enotifwatchlistpages' => '我關注表裏個頁面要弗文件有變化到發郵件搭我講',
+'tog-enotifusertalkpages' => '我個用戶討論頁變化到發郵件搭我講',
+'tog-enotifminoredits' => 'é \81é\9d¢æ\90æ\96\87件å°\8få\8f¯è®\8aå\8c\96ä¹\9fç\99¼é\83µä»¶æ\90æ\88\91è¬\9b',
+'tog-enotifrevealaddr' => '通知郵箱表裏顯示我個郵箱地址',
+'tog-shownumberswatching' => '显示關注箇頁個用戶數',
'tog-oldsig' => '现在签名个预览:',
'tog-fancysig' => '拿签名当成wiki文本(弗产生自动链接)',
'tog-uselivepreview' => '使用实时预览(Javascript)(试验)',
-'tog-forceeditsummary' => 'ç¼\96è¾\91æ\91\98è¦\81为空个辰å\85\89æ\8f\90é\86\92æ\88\91',
-'tog-watchlisthideown' => '来许监控列表里向拿我个编辑囥脱佢',
-'tog-watchlisthidebots' => '来许监控列表里向拿机器人个编辑囥脱',
-'tog-watchlisthideminor' => '来拉监控列表里向拿细编辑囥脱',
-'tog-watchlisthideliu' => '来拉监控列表里拿登录用户个改动囥脱',
-'tog-watchlisthideanons' => '来拉监控列表里拿匿名用户个改动囥脱',
+'tog-forceeditsummary' => '編寫æ\91\98è¦\81空起æ\90æ\88\91è¬\9b',
+'tog-watchlisthideown' => '畀關注表裏我個編寫囥起',
+'tog-watchlisthidebots' => '畀關注表裏機器人個編寫囥起',
+'tog-watchlisthideminor' => '畀關注表裏個小編寫囥起',
+'tog-watchlisthideliu' => '畀關注表裏登錄用戶個編寫囥起',
+'tog-watchlisthideanons' => '畀關注表裏隱姓埋名個用戶個編寫囥起',
'tog-watchlisthidepatrolled' => '来拉监控列表里拿已巡查过歇个改动囥脱',
-'tog-ccmeonemails' => 'æ\8b¿æ\88\91å\8f\91æ\8b¨å\88«ä¸ªç\94¨æ\88·ä¸ªé\82®ä»¶å\90\8cæ\97¶ä¹\9få\8f\91å\8fªå\89¯æ\9c¬æ\8b¨æ\88\91è\87ªå®¶',
-'tog-diffonly' => '垃拉比较两只修订版本个两样个辰光弗显示页面内容',
-'tog-showhiddencats' => '显示囥脱个分类',
+'tog-ccmeonemails' => 'æ\88\91ç\99¼ç\95\80å\85¶ä»\96ç\94¨æ\88¶å\80\8bé\83µä»¶ä¹\9fç\99¼ä»½ç\95\80æ\88\91',
+'tog-diffonly' => '比較兩個版本個弗樣朞弗顯示頁面內容',
+'tog-showhiddencats' => '顯示囥起個分類',
'tog-norollbackdiff' => '执行退回之后弗显示两样',
+'tog-useeditwarning' => '改變頁面朆保存朞提醒我',
-'underline-always' => '总归',
-'underline-never' => '从来弗',
-'underline-default' => '浏览器默认',
+'underline-always' => '老世',
+'underline-never' => '老世弗',
+'underline-default' => '皮膚要弗瀏覽器默認',
# Font style option in Special:Preferences
-'editfont-style' => 'ç¼\96è¾\91å\8cºå\97ä½\93æ ·式:',
-'editfont-default' => '浏览器默认',
-'editfont-monospace' => '等宽字体',
-'editfont-sansserif' => 'Sans-serif字体',
-'editfont-serif' => 'Serif字体',
+'editfont-style' => '編寫å\8d\80å\97é«\94樣式:',
+'editfont-default' => '瀏覽器默認',
+'editfont-monospace' => '樣闊字體',
+'editfont-sansserif' => 'Sans-serif字體',
+'editfont-serif' => 'Serif字體',
# Dates
-'sunday' => '礼拜天',
-'monday' => '礼拜一',
-'tuesday' => '礼拜两',
-'wednesday' => '礼拜三',
-'thursday' => '礼拜四',
-'friday' => '礼拜五',
-'saturday' => '礼拜六',
-'sun' => '天',
+'sunday' => '星期日',
+'monday' => '星期一',
+'tuesday' => '星期二',
+'wednesday' => '星期三',
+'thursday' => '星期四',
+'friday' => '星期五',
+'saturday' => '星期六',
+'sun' => '日',
'mon' => '一',
'tue' => '二',
'wed' => '三',
'dec' => '12月',
# Categories related messages
-'pagecategories' => '$1å\8fªå\88\86ç±»',
-'category_header' => '“$1”分类里向个页面',
-'subcategories' => 'å\90å\88\86ç±»',
-'category-media-header' => '"$1"分类中里向个媒体',
-'category-empty' => "''迭只分类里向还弗曾包含任何文章咾媒体。''",
-'hidden-categories' => '$1隐藏分类',
-'hidden-category-category' => '隐藏分类',
+'pagecategories' => '$1å\80\8bå\88\86é¡\9e',
+'category_header' => '“$1”分類裏向個頁面',
+'subcategories' => 'å\85\92å\88\86é¡\9e',
+'category-media-header' => '"$1"分類裏向個媒體',
+'category-empty' => "''箇個分類裏向還嘸頁面搭媒体。''",
+'hidden-categories' => '$1囥起分類',
+'hidden-category-category' => '囥起分類',
'category-subcat-count' => '{{PLURAL:$2|此分类仅有下列一只子分类。|此分类包含下列$1只子分类,共计$2只子分类。}}',
'category-subcat-count-limited' => '迭只分类包含下底$1只子分类。',
'category-article-count' => '{{PLURAL:$2|迭只分类只有下底一只页面。|迭只分类包含下底$1只页面,共计$2只页面。}}',
'newwindow' => '(垃拉新窗口里向开开来)',
'cancel' => '取消',
'moredotdotdot' => '还有...',
+'morenotlisted' => '箇张表还朆完成',
'mypage' => '我个页面',
'mytalk' => '我个讨论',
'anontalk' => '箇只IP个言论',
'protect' => '保护',
'protect_change' => '改动',
'protectthispage' => '保护此页',
-'unprotect' => '解除保护',
-'unprotectthispage' => '解除此页保护',
+'unprotect' => '改变保护状态',
+'unprotectthispage' => '改变箇页保护',
'newpage' => '新页面',
'talkpage' => '讨论箇只页面',
'talkpagelinktext' => '讨论',
注意,有眼页面作兴还是会搭侬登出前头一样显示,一脚到侬清除浏览器缓存。",
'yourname' => '用户名:',
'yourpassword' => '密码:',
+'userlogin-yourpassword-ph' => '密码打进去',
+'createacct-yourpassword-ph' => '密码打进去',
'yourpasswordagain' => '再拍一遍密码:',
'remembermypassword' => '垃拉箇部电脑上记牢我个密码(可维持$1{{PLURAL:$1|日|日}})',
'yourdomainname' => '侬个域名:',
'createaccountmail' => '通过 e-mail',
'createaccountreason' => '理由:',
'badretype' => '倷输入个密码搭倪个档案弗配。',
-'userexists' => 'ç®\87å\8fªIDå·²ç»\8fæ\8b¨æ³¨å\86\8cè\84±å\93\89ã\80\82请é\87\8dæ\96°å\86\8dæ\8b£ä¸ªç\94¨æ\88·å\90\8d。',
+'userexists' => 'ç\94¨æ\88¶å\90\8dæ\9c\89人ç\94¨å\93\89ã\80\82ç\9b¸å\8b\9eç\88¾æ\8f\80å\88¥æ¨£å\90\8då\97。',
'loginerror' => '登录错误',
'createaccounterror' => '无法建立账户:$1',
'nocookiesnew' => '侬个账户创建成功!Cookies像煞拨侬关拉许,请开开来再登录。',
'newpassword' => '新密码:',
'retypenew' => '再打一遍新密码:',
'resetpass_submit' => '设置密码再登录',
-'changepassword-success' => 'å¯\86ç \81ä¿®æ\94¹æ\88\90å\8a\9f!
-现在垃许登录...',
+'changepassword-success' => 'å¯\86碼æ\94¹å¥½å\93\89!
+能界登錄當中...',
'resetpass_forbidden' => '密码弗好更改',
'resetpass-no-info' => '侬必须登录仔再好直接进入箇只页面。',
'resetpass-submit-loggedin' => '更改密码',
侬作兴已经成功拿密码改脱,或者已经请求一个新个临时密码。',
'resetpass-temp-password' => '临时密码:',
+# Special:PasswordReset
+'passwordreset-username' => '用戶名',
+
# Edit page toolbar
'bold_sample' => '黑体文本',
'bold_tip' => '黑体文本',
'histlegend' => '选择比较版本:标记要比较个两只版本,回车或者揿页面底里个揿钮。<br /> 图例:(当前) = 搭当前版本有啥两样, (上个) = 搭上个版本有啥两样,小 = 小改动。',
'history-fieldset-title' => '浏览历史',
'history-show-deleted' => '仅限已经删除个',
-'histfirst' => '顶早',
-'histlast' => '顶晏',
+'histfirst' => '最老',
+'histlast' => '最新',
'historysize' => '($1字节)',
'historyempty' => '(空)',
'grouppage-sysop' => '{{ns:project}}:管理员',
'grouppage-bureaucrat' => '{{ns:project}}:行政员',
+# Rights
+'right-read' => '閱讀頁面',
+'right-edit' => '編頁面',
+'right-createpage' => '做頁面(弗是討論頁面)',
+'right-createtalk' => '做討論頁',
+'right-createaccount' => '做新用戶帳號',
+'right-minoredit' => '標記編寫是小編寫',
+'right-move' => '移頁面',
+'right-movefile' => '移文件',
+'right-upload' => '傳文件',
+'right-reupload' => '文件以舊換新',
+'right-delete' => '刪頁面',
+'right-browsearchive' => '搜尋已刪頁',
+'right-viewmywatchlist' => '望自己個關注表',
+'right-sendemail' => '發郵件畀各許人',
+
# Special:Log/newusers
'newuserlogpage' => '用户创建日志',
'rightslog' => '用户权限日志',
# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => '讀箇頁',
'action-edit' => '编辑箇只页面',
+'action-createpage' => '做新頁',
+'action-createtalk' => '做討論頁',
+'action-minoredit' => '標小編寫',
+'action-move' => '移箇頁',
+'action-move-subpages' => '移箇頁搭兒頁',
+'action-movefile' => '移箇文件',
+'action-upload' => '傳箇文件',
+'action-reupload' => '箇文件以舊換新',
+'action-upload_by_url' => '從URL傳文件',
+'action-delete' => '刪箇頁',
+'action-deleterevision' => '刪箇版本',
+'action-deletedhistory' => '望箇頁個刪史',
+'action-browsearchive' => '尋已刪頁',
+'action-undelete' => '弗刪箇頁',
+'action-userrights' => '編全部用戶權',
+'action-userrights-interwiki' => '編用戶徠各許維基個權',
+'action-siteadmin' => '數據庫鎖牢要勿開鎖',
+'action-sendemail' => '發郵件',
+'action-editmywatchlist' => '編關注表',
+'action-viewmywatchlist' => '望關注表',
+'action-viewmyprivateinfo' => '望私人信息',
+'action-editmyprivateinfo' => '編私人信息',
# Recent changes
'nchanges' => '$1趟更改',
+'enhancedrc-history' => '歷史',
'recentchanges' => '近段辰光个改动',
'recentchanges-legend' => '近段辰光个改动选项',
'recentchanges-summary' => '登该个页面浪跟踪最近对维基百科个改动。',
'recentchanges-feed-description' => '跟踪此订阅垃拉 wiki 高头个最近更改。',
+'recentchanges-label-newpage' => '此垡編寫開新頁',
+'recentchanges-label-minor' => '箇是小編寫',
'rcnote' => "下底是垃拉$4 $5,最近'''$2'''日天里向个'''$1'''趟最近更改记录:",
'rclistfrom' => '显示 $1 以来个新改动',
'rcshowhideminor' => '$1小改动',
# Upload
'upload' => '上载文物',
'uploadbtn' => '上载文件',
+'reuploaddesc' => '弗傳,轉到傳表單',
'uploadnologin' => '朆登录',
'uploadnologintext' => '倷板定要[[Special:UserLogin|登录]]仔再好上载文件。',
'uploaderror' => '上载出错',
'filesource' => '来源:',
'uploadedfiles' => '已经上载个文件',
'ignorewarning' => '弗管警告,随便哪亨要保存文件。',
+'ignorewarnings' => '任何警告都弗管',
+'minlength1' => '文件名至少一個字。',
+'illegalfilename' => '“$1”文件名裏有嘸處當頁題目個字。文件名轉改再傳上來試試相。',
+'filename-toolong' => '文件名嘸處比240字節長。',
+'filename-tooshort' => '文件名忒短。',
+'filetype-banned' => '弗準箇類型個文件。',
+'illegal-filename' => '弗準箇文件名。',
+'overwrite' => '弗準文件以舊換新。',
+'unknown-error' => '弗識個錯誤發生。',
+'tmp-create-error' => '臨時文件嘸處造。',
+'tmp-write-error' => '寫臨時文件出錯。',
+'large-file' => '文件名最好休要比$1長;
+箇文件有$2。',
+'largefileserver' => '箇文件比服務器配置個允許值大。',
+'windows-nonascii-filename' => '箇wiki弗支持文件名用特別個字符。',
'uploadwarning' => '上载警告',
'savefile' => '保存文件',
'uploadedimage' => '上载 "[[$1]]"',
'sourcefilename' => '源文件:',
'destfilename' => '目标文件名:',
-'watchthisupload' => '监控该只页面',
+'watchthisupload' => '關注箇文件',
'upload-success-subj' => '上载成功哉',
+'upload-failure-subj' => '傳個問題',
+'upload-warning-subj' => '傳個警告',
+
+'upload-misc-error' => '弗識個傳錯誤',
+'upload-unknown-size' => '弗識大細',
+
+# File backend
+'backend-fail-delete' => '文件“$1”刪弗爻。',
+'backend-fail-move' => '嘸處畀“$1”移到“$2”。',
+'backend-fail-opentemp' => '臨時文件開弗爻。',
+'backend-fail-writetemp' => '嘸處寫到臨時文件。',
+'backend-fail-closetemp' => '嘸處關臨時文件',
+'backend-fail-read' => '嘸處讀“$1”文件。',
+'backend-fail-create' => '嘸處寫“$1”文件。',
+'backend-fail-maxsize' => '嘸處寫"$1"文件,比{{PLURAL:$2|one byte|$2 bytes}}大之故。',
+
+# Lock manager
+'lockmanager-notlocked' => '“$1”朆鎖牢,嘸處開鎖。',
+
+# img_auth script messages
+'img-auth-nofile' => '“$1”文件嘸。',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'URL走弗進。',
# Special:ListFiles
'listfiles_search_for' => '寻图片名字:',
'listfiles_user' => '用户',
'listfiles_size' => '尺寸 (bytes)',
'listfiles_description' => '描述',
+'listfiles-latestversion-yes' => '正是',
+'listfiles-latestversion-no' => '弗是',
# File description page
'file-anchor-link' => '文物',
'filehist-thumbtext' => '于$1个缩图版本',
'filehist-user' => '用户',
'filehist-dimensions' => '维度',
+'filehist-filesize' => '文件大細',
'filehist-comment' => '备注',
'imagelinks' => '文件链接',
'linkstoimage' => '下头$1只页面链接到本文件:',
'nolinkstoimage' => '呒拨页面链接到该只文件。',
+'linkstoimage-redirect' => '$1(文件轉戳到)$2',
'sharedupload' => '箇只文件来源于$1,渠作兴垃拉其它项目当中拨应用。',
'uploadnewversion-linktext' => '上载该文件个新版',
'filedelete-legend' => '删除文物',
'filedelete-comment' => '理由:',
'filedelete-submit' => '删除',
+'filedelete-reason-otherlist' => '別樣原因',
+'filedelete-edit-reasonlist' => '編刪個原因',
+'filedelete-maintenance-title' => '文件刪弗爻',
# MIME search
'download' => '下载',
# List redirects
'listredirects' => '重定向列表',
+# Unused templates
+'unusedtemplateswlh' => '別樣鏈接',
+
# Random page
'randompage' => '随便望望',
+# Random page in category
+'randomincategory' => '分類裏個隨便一頁',
+'randomincategory-selectcategory-submit' => '去',
+
# Statistics
'statistics' => '统计',
'statistics-header-users' => '用户资料',
'statistics-users-active' => '活跃用户',
+'pageswithprop-submit' => '去',
+
'brokenredirects' => '坏脱个重定向',
-'brokenredirectstext' => 'ä¸\8båº\95个é\87\8då®\9aå\90\91é\93¾å\88°å¼\97å\98å\9c¨ä¸ªé¡µé\9d¢:',
+'brokenredirectstext' => 'ä¸\8bå\90\91å\80\8bè½\89æ\88³é\8f\88æ\8e¥å\88°æ\9c\86è¦\8bå\80\8bé \81é\9d¢ï¼\9a',
'brokenredirects-edit' => '编辑',
'brokenredirects-delete' => '删除',
+'withoutinterwiki' => '嘸語言鏈接個頁面',
+'withoutinterwiki-summary' => '下向許頁面朆鏈接到別樣語言版本。',
+
# Miscellaneous special pages
'nbytes' => '$1字节',
'nmembers' => '$1只成员',
'protectedpages' => '已保护页面',
'protectedtitles' => '已保护个标题',
'listusers' => '用户列表',
+'listusers-creationsort' => '照建個日子排',
'newpages' => '新页面',
'newpages-username' => '用户名:',
'ancientpages' => '顶顶老个页面',
'booksources-go' => '转到',
# Special:Log
-'specialloguserlabel' => 'ç\94¨æ\88·:',
-'speciallogtitlelabel' => '标题:',
+'specialloguserlabel' => 'ç\94¨æ\88¶ï¼\9a',
+'speciallogtitlelabel' => '目標(標題要弗用戶):',
'log' => '记录',
# Special:AllPages
# Special:LinkSearch
'linksearch' => '外部链接',
+'linksearch-ns' => '名字空間:',
+'linksearch-ok' => '搜尋',
# Special:ListUsers
'listusers-submit' => '显示',
+'listusers-noresult' => '嘸箇用戶。',
+
+# Special:ActiveUsers
+'activeusers' => '活躍用戶表',
# Special:ListGroupRights
'listgrouprights-members' => '(成员列表)',
# Email user
'emailuser' => '发E-mail拨该个用户',
-'emailfrom' => '从',
-'emailto' => '发拨',
-'emailsubject' => '主题',
+'emailuser-title-notarget' => '郵箱用戶',
+'emailpage' => '郵箱用戶',
+'emailfrom' => '從',
+'emailto' => '發畀',
+'emailsubject' => '主題',
'emailmessage' => '信息',
'emailsend' => '发罢',
+'emailccme' => '我個信息發份畀我',
'emailsent' => '电子邮件发出去哉',
'emailsenttext' => '倷个电子邮件讯息已经拨发送哉。',
# Watchlist
-'watchlist' => '监控列表',
-'mywatchlist' => '我个监控列表',
+'watchlist' => '關注表',
+'mywatchlist' => '我個關注表',
'nowatchlist' => '倷个监控列表是空个。',
'watchnologin' => '朆登录',
-'addedwatchtext' => "该个页面 \"[[:\$1]]\" 已经加到侬个[[Special:Watchlist|监控列表]]哉。
-将来对该页面个改动搭仔搭界个讲张页个改动会列表垃该面,并且页面会垃拉[[Special:RecentChanges|近段辰光个改变列表]]里向显示成功'''黑体''',实梗好外加便当拿渠拣出来。假使侬歇仔两日又想拿箇个页面登侬个监控列表里向拿脱个说法,垃侧条里向点击“弗要监控。",
+'addedwatchtext' => '“[[:$1]]”箇頁加進爾個[[Special:Watchlist|關注表]]去哉。
+轉日箇頁搭渠討論頁個變化會排箇耷。',
+'removewatch' => '從關注表移爻',
'removedwatchtext' => '页面[[:$1]]已经从[[Special:Watchlist|侬个监控页面]]里向拿脱。',
'watch' => '监控',
'watchthispage' => '监控该只页面',
'unwatch' => '弗要监控',
'unwatchthispage' => '停止监控',
+'notanarticle' => '弗是內容頁',
'watchlist-details' => '弗包括讨论页,有 $1 页垃拉侬监控列表高头。',
'watchlistcontains' => '倷个监控列表包括{{PLURAL:$1|1|$1}}只页面。',
'wlshowlast' => '显示上个 $1 个钟头 $2 日 $3',
'protect-cascadeon' => '下底个{{PLURAL:$1|一只|多只}}页面包含 本页面个同时,启动了连锁保护,因此本页面目前也拨保护拉许,弗好编辑。侬可以设置本页面个保护级别,但箇个并弗会对连锁保护有所影响。',
'protect-default' => '允许所有用户',
'protect-fallback' => '需要“$1”个许可',
-'protect-level-autoconfirmed' => 'å¼\97å\85\81许æ\96°ç\94¨æ\88·æ\90ä»\94å¼\97æ\9b¾æ³¨å\86\8c个ç\94¨æ\88·',
-'protect-level-sysop' => '仅管理员',
+'protect-level-autoconfirmed' => 'å¼\97å\87\86æ\96°ç\94¨æ\88¶æ\90é\82\84æ\9c\86註å\86\8aå\80\8bç\94¨æ\88¶',
+'protect-level-sysop' => '只准管理員',
'protect-summary-cascade' => '联锁',
'protect-expiring' => '终止于$1(UTC)',
'protect-cascade' => '保护本页里向包含个页面(连锁保护)',
'protect-cantedit' => '侬呒此更改迭只页面个保护等级,因为侬呒没权限编辑渠。',
+'protect-othertime' => '各許時間:',
+'protect-othertime-op' => '各許時間',
+'protect-otherreason-op' => '各許原因',
'restriction-type' => '权限:',
'restriction-level' => '限制级别:',
+'minimum-size' => '最小大細',
+'maximum-size' => '最大大細',
# Restrictions (nouns)
'restriction-edit' => '编辑',
'undeletepage' => '查看搭仔恢复删脱个页面',
'viewdeletedpage' => '望望删脱个页面',
'undeletelink' => '查看/恢复',
+'undeleteviewlink' => '望',
+'undeletereset' => '轉設',
'undeletecomment' => '理由:',
+'undelete-search-submit' => '搜尋',
# Namespace form on various pages
'namespace' => '名字空间:',
'sp-contributions-newbies' => '仅显示新用户个贡献',
'sp-contributions-blocklog' => '查封记录',
-'sp-contributions-talk' => 'è®²å¼ ',
+'sp-contributions-talk' => 'è¨\8eè«\96',
'sp-contributions-search' => '搜索贡献记录',
'sp-contributions-username' => 'IP地址或用户名:',
'sp-contributions-submit' => '寻',
'nolinkshere' => "呒拨页面链接到 '''[[:$1]]'''。",
'isredirect' => '重定向页面',
'istemplate' => '包含',
-'isimage' => '图片链接',
+'isimage' => '文件鏈接',
'whatlinkshere-prev' => '前$1个',
'whatlinkshere-next' => '后$1个',
'whatlinkshere-links' => '←链入',
'ipbother' => '其它时间:',
'ipboptions' => '2个钟头:2 hours,1日天:1 day,3日天:3 days,1个礼拜:1 week,2个礼拜:2 weeks,1个号头:1 month,3个号头:3 months,6个号头:6 months,1年:1 year,永久:infinite',
'badipaddress' => '无效 IP 地址',
-'ipblocklist' => '封禁拉许个IP地址搭仔用户名',
+'ipblocklist' => '封哉個用戶',
'infiniteblock' => '永远',
'blocklink' => '封禁',
'unblocklink' => '解封',
'contribslink' => '贡献',
'blocklogpage' => '封禁日志',
'blocklogentry' => '“[[$1]]”拨查封拉许,终止辰光为$2 $3',
-'blocklogtext' => '该个是用户封禁搭仔解禁操作个记录。自动封禁个IP地址弗会列勒该答。到[[Special:BlockList|IP 封禁列表]]去看当前生效个封禁列表。',
+'blocklogtext' => '箇是用戶封搭解封操作個記錄。自動封個IP地址弗排。到[[Special:BlockList|IP 封表]]裏望目前生效個封表。',
'unblocklogentry' => '$1已经拨解封',
'block-log-flags-nocreate' => '开户已经拨禁用',
'proxyblocksuccess' => '好哉。',
+# Developer tools
+'lockdb' => '鎖數據庫',
+'unlockdb' => '開鎖數據庫',
+'lockbtn' => '鎖數據庫',
+'unlockbtn' => '數據庫開鎖',
+'databasenotlocked' => '數據庫朆鎖牢。',
+
# Move page
'move-page-legend' => '页面捅荡',
-'movepagetext' => "下底只表格会重新命名一只页面,拿俚所有个历史也侪捅到新名字下头。
-旧个名字会变成到新名字个重定向页面。
+'movepagetext' => "用下底個表會轉名字一張頁面,全部歷史都移到新名字裏。
+老個名字會變成戳到新名字個轉戳頁。
到旧页面个连接弗会改变;注意检查双重定向或者坏脱个重定向。
倷有实概个责任,即连接原要连到俚笃应该连到个场呵去。
注意,如果新名字归面搭已经有页面个说话,老名字个页面'''弗'''会拨移动,除非归个是只空页面或者是只重定向并且呒拨编辑历史。个也就是讲,假使倷犯错误个说话,倷好拿一只重命名过个页面还原到原来个名字,但倷弗好覆盖一只已经来浪个页面。
<b>警告!</b>
-个作兴会引起对一只热门页面剧烈个、想弗着个改变。
+箇嘸數會有名氣個引起对一只热门页面剧烈个、想弗着个改变。
来操作前头请倷确定倷已经充分了解个能做法个后果。",
'movepagetalktext' => "相关讨论页将自动搭该页面一淘移动,'''除非''':
*新页面已经有仔一只非空个讨论页,或者
# Suppression log
'suppressionlog' => 'באהאלטונגען לאג',
+'suppressionlogtext' => 'אונטן געפינט זיך א ליסטע פון אויסמעקונגען און בלאקן וואס באהאנדלען אינהאלט באהאלטן פון אדמיניסטראטארן.
+זעט די [[Special:BlockList|בלאקן ליסטע]] פאר דער ליסטע פון אקטועלע בלאקן.',
# History merging
'mergehistory' => 'צונויפֿגיסן בלאט היסטאריעס',
די לעצטע ענדערונג צום בלאַט איז געווען פון [[User:$3|$3]] ([[User talk:$3|רעדן]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "קורץ ווארט איז געווען: \"'''\$1'''\".",
'revertpage' => 'רעדאַקטירונגען פֿון [[Special:Contributions/$2|$2]] צוריקגענומען ([[User talk:$2|רעדן]]) צו דער לעצטער ווערסיע פֿון [[User:$1|$1]]',
-'revertpage-nouser' => 'צוריקגעשטעלט רעדאַקטירונגען פֿון א באהאלטענעם באַניצער צו לעצטער רעוויזיע פֿון [[User:$1|$1]]',
+'revertpage-nouser' => 'צוריקגעשטעלט רעדאַקטירונגען פֿון א באהאלטענעם באַניצער צו לעצטער רעוויזיע פֿון {{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'צוריקגעדרייט רעדאַקטירונגען פֿון $1 צו דער לעצטע ווערסיע פֿון $2',
# Edit tokens
'prefs-help-signature' => '讨论页面上的评论应该使用“<nowiki>~~~~</nowiki>”签名,它会自动转换为你的签名及时间戳。',
'badsig' => '错误的原始签名。请检查HTML标签。',
'badsiglength' => '签名过长。请不超过$1个字符。',
-'yourgender' => '您希望如何显示性别?',
-'gender-unknown' => 'æ\88\91ä¸\8dæ\83³æ\8c\87å®\9a',
-'gender-male' => '男',
-'gender-female' => '女',
+'yourgender' => '你希望使用什么性别称呼?',
+'gender-unknown' => 'æ\88\91ä¸\8dæ\84¿æ\84\8fæ\8c\87æ\98\8eï¼\88被称为â\80\9cä»\96/她â\80\9dï¼\89',
+'gender-male' => '他',
+'gender-female' => '她',
'prefs-help-gender' => '这是选填项目。
软件使用其以显示正确的性别称呼。
该信息将会公开。',
'action-block' => '阻止该用户编辑',
'action-protect' => '更改本页面的保护级别',
'action-rollback' => '快速回退最后编辑特定页面的用户的编辑',
-'action-import' => '从其他wiki导入本页面',
-'action-importupload' => '从文件上传导入本页面',
+'action-import' => '从其他wiki导入页面',
+'action-importupload' => '从文件上传导入页面',
'action-patrol' => '标记他人的编辑为已巡查',
'action-autopatrol' => '使你的编辑标记为已巡查',
'action-unwatchedpages' => '查看未受监视页面的列表',
'listusers' => '用户列表',
'listusers-editsonly' => '只显示有编辑的用户',
'listusers-creationsort' => '按建立日期排序',
+'listusers-desc' => '按降序排序',
'usereditcount' => '$1次编辑',
'usercreated' => '{{GENDER:$3|创建}}于$1 $2',
'newpages' => '新页面',
本页最后的编辑者是[[User:$3|$3]]([[User talk:$3|讨论]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
'editcomment' => '编辑摘要:"<i>$1</i>"。',
'revertpage' => '已恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后一个修订版本',
-'revertpage-nouser' => '恢复由隐藏用户的编辑到[[User:$1|$1]]的最后一个修订版本',
+'revertpage-nouser' => '恢复由隐藏用户的编辑到{{GENDER:$1|[[User:$1|$1]]}}的最后一个修订版本',
'rollback-success' => '已恢复$1的编辑,更改回$2的最后修订版本。',
# Edit tokens
--- /dev/null
+<?php
+/**
+ * Checks LESS files in known resources for errors
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * @ingroup Maintenance
+ */
+class CheckLess extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Checks LESS files for errors';
+ }
+
+ public function execute() {
+ $result = false;
+ $resourceLoader = new ResourceLoader();
+ foreach ( $resourceLoader->getModuleNames() as $name ) {
+ /** @var ResourceLoaderFileModule $module */
+ $module = $resourceLoader->getModule( $name );
+ if ( !$module || !$module instanceof ResourceLoaderFileModule ) {
+ continue;
+ }
+
+ $hadErrors = false;
+ foreach ( $module->getAllStyleFiles() as $file ) {
+ if ( $module->getStyleSheetLang( $file ) !== 'less' ) {
+ continue;
+ }
+ try {
+ $compiler = ResourceLoader::getLessCompiler();
+ $compiler->compileFile( $file );
+ } catch ( Exception $e ) {
+ if ( !$hadErrors ) {
+ $this->error( "Errors checking module $name:\n" );
+ $hadErrors = true;
+ }
+ $this->error( $e->getMessage() . "\n" );
+ $result = true;
+ }
+ }
+ }
+ if ( !$result ) {
+ $this->output( "No errors found\n" );
+ } else {
+ die( 1 );
+ }
+ }
+}
+
+$maintClass = 'CheckLess';
+require_once RUN_MAINTENANCE_IF_MAIN;
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
+ 'skins.vector.collapsibleNav' => array(
+ 'styles' => array(
+ 'vector/collapsibleNav.css',
+ ),
+ 'scripts' => array(
+ 'vector/collapsibleNav.js',
+ ),
+ 'messages' => array(
+ 'vector-collapsiblenav-more',
+ ),
+ 'dependencies' => array(
+ 'jquery.client',
+ 'jquery.cookie',
+ 'jquery.tabIndex',
+ ),
+ 'remoteBasePath' => $GLOBALS['wgStylePath'],
+ 'localBasePath' => $GLOBALS['wgStyleDirectory'],
+ 'position' => 'bottom',
+ ),
/* jQuery */
"/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
);
- $out->addModules( 'skins.vector.js' );
+ $out->addModules( array( 'skins.vector.js', 'skins.vector.collapsibleNav' ) );
}
/**
--- /dev/null
+/**
+ * Stylesheet for collapsible nav
+ */
+
+#mw-panel.collapsible-nav .portal {
+ /* @embed */
+ background: url(images/portal-break.png) left top no-repeat;
+ padding: 0.25em 0 !important;
+ margin: -11px 9px 10px 11px;
+}
+
+#mw-panel.collapsible-nav .portal h3 {
+ color: #4D4D4D;
+ font-weight: normal;
+ /* @embed */
+ background: url(images/arrow-expanded.png) left center no-repeat;
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ /* @embed */
+ background-image: -webkit-linear-gradient(transparent, transparent), url(images/arrow-expanded.svg);
+ /* @embed */
+ background-image: linear-gradient(transparent, transparent), url(images/arrow-expanded.svg);
+ padding: 4px 0 3px 1.5em;
+ margin-bottom: 0;
+}
+
+#mw-panel.collapsible-nav .portal h3:hover {
+ cursor: pointer;
+ text-decoration: none;
+}
+
+#mw-panel.collapsible-nav .portal h3 a {
+ color: #4D4D4D;
+ text-decoration: none;
+}
+
+#mw-panel.collapsible-nav .portal .body {
+ background-image: none !important;
+ padding-top: 0;
+ display: none;
+}
+
+#mw-panel.collapsible-nav .portal .body ul li {
+ padding: 0.25em 0;
+}
+
+/* First */
+#mw-panel.collapsible-nav .portal.first h3 {
+ display: none;
+}
+
+#mw-panel.collapsible-nav .portal.first {
+ background-image: none;
+ margin-top: 0;
+}
+
+/* Persistent */
+
+#mw-panel.collapsible-nav .portal.persistent .body {
+ display: block;
+}
+
+#mw-panel.collapsible-nav .portal.persistent h3 {
+ background-image: none !important;
+ padding-left: 0.7em;
+ cursor: default;
+}
+
+#mw-panel.collapsible-nav .portal.persistent .body {
+ margin-left: 0.5em;
+}
+
+/* Collapsed */
+
+#mw-panel.collapsible-nav .portal.collapsed h3 {
+ color: #0645AD;
+ /* @embed */
+ background: url(images/arrow-collapsed-ltr.png) left center no-repeat;
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ /* @embed */
+ background-image: -webkit-linear-gradient(transparent, transparent), url(images/arrow-collapsed-ltr.svg);
+ /* @embed */
+ background-image: linear-gradient(transparent, transparent), url(images/arrow-collapsed-ltr.svg);
+ margin-bottom: 0;
+}
+
+#mw-panel.collapsible-nav .portal.collapsed h3 a {
+ color: #0645AD;
+}
+
+#mw-panel.collapsible-nav .portal.collapsed h3:hover {
+ text-decoration: underline;
+}
--- /dev/null
+/**
+ * Collapsible navigation for Vector
+ */
+( function ( mw, $ ) {
+ 'use strict';
+ var map;
+
+ // Use the same function for all navigation headings - don't repeat
+ function toggle( $element ) {
+ $.cookie(
+ 'vector-nav-' + $element.parent().attr( 'id' ),
+ $element.parent().is( '.collapsed' ),
+ { 'expires': 30, 'path': '/' }
+ );
+ $element
+ .parent()
+ .toggleClass( 'expanded' )
+ .toggleClass( 'collapsed' )
+ .find( '.body' )
+ .slideToggle( 'fast' );
+ }
+
+ /* Browser Support */
+
+ map = {
+ // Left-to-right languages
+ ltr: {
+ // Collapsible Nav is broken in Opera < 9.6 and Konqueror < 4
+ opera: [['>=', 9.6]],
+ konqueror: [['>=', 4.0]],
+ blackberry: false,
+ ipod: false,
+ iphone: false,
+ ps3: false
+ },
+ // Right-to-left languages
+ rtl: {
+ opera: [['>=', 9.6]],
+ konqueror: [['>=', 4.0]],
+ blackberry: false,
+ ipod: false,
+ iphone: false,
+ ps3: false
+ }
+ };
+ if ( !$.client.test( map ) ) {
+ return true;
+ }
+
+ $( function ( $ ) {
+ var $headings, tabIndex;
+
+ /* General Portal Modification */
+
+ // Always show the first portal
+ $( '#mw-panel > .portal:first' ).addClass( 'first persistent' );
+ // Apply a class to the entire panel to activate styles
+ $( '#mw-panel' ).addClass( 'collapsible-nav' );
+ // Use cookie data to restore preferences of what to show and hide
+ $( '#mw-panel > .portal:not(.persistent)' )
+ .each( function ( i ) {
+ var id = $(this).attr( 'id' ),
+ state = $.cookie( 'vector-nav-' + id );
+ // Add anchor tag to heading for better accessibility
+ $( this ).find( 'h3' ).wrapInner( $( '<a href="#"></a>' ).click( false ) );
+ // In the case that we are not showing the new version, let's show the languages by default
+ if (
+ state === 'true' ||
+ ( state === null && i < 1 ) ||
+ ( state === null && id === 'p-lang' )
+ ) {
+ $(this)
+ .addClass( 'expanded' )
+ .removeClass( 'collapsed' )
+ .find( '.body' )
+ .hide() // bug 34450
+ .show();
+ } else {
+ $(this)
+ .addClass( 'collapsed' )
+ .removeClass( 'expanded' );
+ }
+ // Re-save cookie
+ if ( state !== null ) {
+ $.cookie( 'vector-nav-' + $(this).attr( 'id' ), state, { 'expires': 30, 'path': '/' } );
+ }
+ } );
+
+ /* Tab Indexing */
+
+ $headings = $( '#mw-panel > .portal:not(.persistent) > h3' );
+
+ // Get the highest tab index
+ tabIndex = $( document ).lastTabIndex() + 1;
+
+ // Fix the search not having a tabindex
+ $( '#searchInput' ).attr( 'tabindex', tabIndex++ );
+
+ // Make it keyboard accessible
+ $headings.attr( 'tabindex', function () {
+ return tabIndex++;
+ });
+
+ // Toggle the selected menu's class and expand or collapse the menu
+ $( '#mw-panel' )
+ .delegate( '.portal:not(.persistent) > h3', 'keydown', function ( e ) {
+ // Make the space and enter keys act as a click
+ if ( e.which === 13 /* Enter */ || e.which === 32 /* Space */ ) {
+ toggle( $(this) );
+ }
+ } )
+ .delegate( '.portal:not(.persistent) > h3', 'mousedown', function ( e ) {
+ if ( e.which !== 3 ) { // Right mouse click
+ toggle( $(this) );
+ $(this).blur();
+ }
+ return false;
+ } );
+ });
+
+}( mediaWiki, jQuery ) );
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="16"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.0288)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(0,-2.7307791,1.576616,0,0.05143855,1066.4148)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="16"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.0288)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(0,2.7307791,-1.576616,0,15.948561,1021.6428)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="16"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.3622)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(2.7307791,0,0,1.576616,-14.385956,1036.4136)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
return;
}
- $params = wfExtractThumbParams( $matches['title'] ); // basic wiki URL param extracting
+ $params = wfExtractThumbRequestInfo( $matches['title'] ); // basic wiki URL param extracting
if ( $params == null ) {
wfThumbError( 400, 'The specified thumbnail parameters are not recognized.' );
return;
/**
* Stream a thumbnail specified by parameters
*
- * @param $params Array
+ * @param $params Array List of thumbnailing parameters. In addition to parameters
+ * passed to the MediaHandler, this may also includes the keys:
+ * f (for filename), archived (if archived file), temp (if temp file),
+ * w (alias for width), p (alias for page), r (ignored; historical),
+ * rel404 (path for render on 404 to verify hash path correct),
+ * thumbName (thumbnail name to potentially extract more parameters from
+ * e.g. 'lossy-page1-120px-Foo.tiff' would add page, lossy and width
+ * to the parameters)
* @return void
*/
function wfStreamThumb( array $params ) {
$headers = array(); // HTTP headers to send
$fileName = isset( $params['f'] ) ? $params['f'] : '';
- unset( $params['f'] );
-
- // Backwards compatibility parameters
- if ( isset( $params['w'] ) ) {
- $params['width'] = $params['w'];
- unset( $params['w'] );
- }
- if ( isset( $params['p'] ) ) {
- $params['page'] = $params['p'];
- }
- unset( $params['r'] ); // ignore 'r' because we unconditionally pass File::RENDER
// Is this a thumb of an archived file?
$isOld = ( isset( $params['archived'] ) && $params['archived'] );
$varyHeader[] = 'Cookie';
}
+ // Do rendering parameters extraction from thumbnail name.
+ if ( isset( $params['thumbName'] ) ) {
+ $params = wfExtractThumbParams( $img, $params );
+ }
+ if ( $params == null ) {
+ wfThumbError( 400, 'The specified thumbnail parameters are not recognized.' );
+ return;
+ }
+
+
// Check the source file storage path
if ( !$img->exists() ) {
$redirectedLocation = false;
}
}
+ // Backwards compatibility parameters
+ if ( isset( $params['w'] ) ) {
+ $params['width'] = $params['w'];
+ unset( $params['w'] );
+ }
+ if ( isset( $params['p'] ) ) {
+ $params['page'] = $params['p'];
+ }
+ unset( $params['r'] ); // ignore 'r' because we unconditionally pass File::RENDER
+ unset( $params['f'] ); // We're done with 'f' parameter.
+
+
// Get the normalized thumbnail name from the parameters...
try {
$thumbName = $img->thumbName( $params );
}
/**
- * Extract the required params for thumb.php from the thumbnail request URI.
- * At least 'width' and 'f' should be set if the result is an array.
+ * Convert pathinfo type parameter, into normal request parameters
+ *
+ * So for example, if the request was redirected from
+ * /w/images/thumb/a/ab/Foo.png/120px-Foo.png. The $thumbRel parameter
+ * of this function would be set to "a/ab/Foo.png/120px-Foo.png".
+ * This method is responsible for turning that into an array
+ * with the folowing keys:
+ * * f => the filename (Foo.png)
+ * * rel404 => the whole thing (a/ab/Foo.png/120px-Foo.png)
+ * * archived => 1 (If the request is for an archived thumb)
+ * * temp => 1 (If the file is in the "temporary" zone)
+ * * thumbName => the thumbnail name, including parameters (120px-Foo.png)
+ *
+ * Transform specific parameters are set later via wfExtractThumbParams().
*
* @param $thumbRel String Thumbnail path relative to the thumb zone
* @return Array|null associative params array or null
*/
-function wfExtractThumbParams( $thumbRel ) {
+function wfExtractThumbRequestInfo( $thumbRel ) {
$repo = RepoGroup::singleton()->getLocalRepo();
$hashDirReg = $subdirReg = '';
$params['temp'] = 1;
}
- // Check hooks if parameters can be extracted
- // Hooks return false if they manage to *resolve* the parameters
+ $params['thumbName'] = $thumbname;
+ return $params;
+}
+
+/**
+ * Convert a thumbnail name (122px-foo.png) to parameters, using
+ * file handler.
+ *
+ * @param File $file File object for file in question.
+ * @param $param Array Array of parameters so far.
+ * @return Array parameters array with more parameters.
+ */
+function wfExtractThumbParams( $file, $params ) {
+ if ( !isset( $params['thumbName'] ) ) {
+ throw new MWException( "No thumbnail name passed to wfExtractThumbParams" );
+ }
+
+ $thumbname = $params['thumbName'];
+ unset( $params['thumbName'] );
+
+ // Do the hook first for older extensions that rely on it.
if ( !wfRunHooks( 'ExtractThumbParameters', array( $thumbname, &$params ) ) ) {
+ // Check hooks if parameters can be extracted
+ // Hooks return false if they manage to *resolve* the parameters
+ // This hook should be considered deprecated
+ wfDeprecated( 'ExtractThumbParameters', '1.22' );
return $params; // valid thumbnail URL (via extension or config)
- // Check if the parameters can be extracted from the thumbnail name...
- } elseif ( preg_match( '!^(page(\d*)-)*(\d*)px-[^/]*$!', $thumbname, $matches ) ) {
+ }
+
+ // FIXME: Files in the temp zone don't set a mime type, which means
+ // they don't have a handler. Which means we can't parse the param
+ // string. However, not a big issue as what good is a param string
+ // if you have no handler to make use of the param string and
+ // actually generate the thumbnail.
+ $handler = $file->getHandler();
+
+ // Based on UploadStash::parseKey
+ $fileNamePos = strrpos( $thumbname, $params['f'] );
+ if ( $fileNamePos === false ) {
+ // Maybe using a short filename? (see FileRepo::nameForThumb)
+ $fileNamePos = strrpos( $thumbname, 'thumbnail' );
+ }
+
+ if ( $handler && $fileNamePos !== false ) {
+ $paramString = substr( $thumbname, 0, $fileNamePos - 1 );
+ $extraParams = $handler->parseParamString( $paramString );
+ if ( $handler !== false ) {
+ return $params + $extraParams;
+ }
+ }
+
+ // As a last ditch fallback, use the traditional common parameters
+ if ( preg_match( '!^(page(\d*)-)*(\d*)px-[^/]*$!', $thumbname, $matches ) ) {
list( /* all */, $pagefull, $pagenum, $size ) = $matches;
$params['width'] = $size;
if ( $pagenum ) {
}
return $params; // valid thumbnail URL
}
-
- return null; // not a valid thumbnail URL
+ return null;
}
/**