Merge "Installer: remove dependency on JSON extension"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 2 Oct 2013 18:11:45 +0000 (18:11 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 2 Oct 2013 18:11:45 +0000 (18:11 +0000)
81 files changed:
RELEASE-NOTES-1.22
docs/hooks.txt
includes/DefaultSettings.php
includes/SiteStats.php
includes/WebRequest.php
includes/Wiki.php
includes/db/Database.php
includes/filerepo/file/LocalFile.php
includes/installer/Installer.i18n.php
includes/job/JobQueue.php
includes/job/JobQueueDB.php
includes/job/JobQueueFederated.php
includes/job/JobQueueGroup.php
includes/job/JobQueueRedis.php
includes/media/MediaHandler.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/search/SearchUpdate.php
includes/specials/SpecialUserlogin.php
languages/classes/LanguageCu.php
languages/classes/LanguageHi.php [deleted file]
languages/classes/LanguageMg.php [deleted file]
languages/classes/LanguageMt.php [deleted file]
languages/classes/LanguagePl.php
languages/classes/LanguageSh.php [deleted file]
languages/classes/LanguageSk.php [deleted file]
languages/classes/LanguageTi.php [deleted file]
languages/classes/LanguageTl.php [deleted file]
languages/classes/LanguageWa.php
languages/messages/MessagesAr.php
languages/messages/MessagesAst.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBr.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCs.php
languages/messages/MessagesCy.php
languages/messages/MessagesDe.php
languages/messages/MessagesEn.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesHe.php
languages/messages/MessagesIa.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesLa.php
languages/messages/MessagesLb.php
languages/messages/MessagesLv.php
languages/messages/MessagesMk.php
languages/messages/MessagesNl.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesSv.php
languages/messages/MessagesUk.php
languages/messages/MessagesVi.php
languages/messages/MessagesWuu.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
maintenance/checkLess.php [new file with mode: 0644]
resources/Resources.php
skins/Vector.php
skins/vector/collapsibleNav.css [new file with mode: 0644]
skins/vector/collapsibleNav.js [new file with mode: 0644]
skins/vector/images/arrow-collapsed-ltr.png [new file with mode: 0644]
skins/vector/images/arrow-collapsed-ltr.svg [new file with mode: 0644]
skins/vector/images/arrow-collapsed-rtl.png [new file with mode: 0644]
skins/vector/images/arrow-collapsed-rtl.svg [new file with mode: 0644]
skins/vector/images/arrow-expanded.png [new file with mode: 0644]
skins/vector/images/arrow-expanded.svg [new file with mode: 0644]
thumb.php

index 8b94b81..0e3e222 100644 (file)
@@ -476,6 +476,10 @@ changes to languages because of Bugzilla reports.
   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 ==
 
index 94e94cf..2d1001b 100644 (file)
@@ -1077,6 +1077,7 @@ change the tables headers.
 
 '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)
 
index 5b1d4b3..89e6c87 100644 (file)
@@ -1623,7 +1623,6 @@ $wgSharedTables = array( 'user', 'user_properties' );
  *                  - 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
index 6e2359a..355993c 100644 (file)
@@ -189,7 +189,7 @@ class SiteStats {
        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;
index 23eee04..b17cb9e 100644 (file)
@@ -1144,10 +1144,17 @@ HTML;
                        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;
                                        }
                                }
@@ -1159,7 +1166,7 @@ HTML;
                wfRunHooks( 'GetIP', array( &$ip ) );
 
                if ( !$ip ) {
-                       throw new MWException( "Unable to determine IP" );
+                       throw new MWException( "Unable to determine IP." );
                }
 
                wfDebug( "IP: $ip\n" );
index 0683d7c..48e56ab 100644 (file)
@@ -85,8 +85,6 @@ class MediaWiki {
                } 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
@@ -102,8 +100,12 @@ class MediaWiki {
                                $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' );
@@ -114,6 +116,11 @@ class MediaWiki {
                        }
                }
 
+               // 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' );
                }
@@ -539,6 +546,8 @@ class MediaWiki {
                        $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__ );
index 27e6dad..4b25bd3 100644 (file)
@@ -360,6 +360,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * 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.
@@ -582,7 +584,6 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @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
index d6dc150..9653db9 100644 (file)
@@ -1764,6 +1764,16 @@ class LocalFile extends File {
                                $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',
index 1d5bb28..637a5fc 100644 (file)
@@ -12365,7 +12365,7 @@ Wann Dir PHP vun engem Debian oder Ubuntu Package aus installéiert hutt, da mus
        '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',
@@ -12483,15 +12483,15 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
        '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.',
@@ -16458,7 +16458,7 @@ $messages['ps'] = array(
        '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' => 'لښتيالونه جوړول',
@@ -17040,11 +17040,17 @@ $messages['pt-br'] = array(
 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',
@@ -17054,21 +17060,21 @@ Você pode aumentar esta duração configurando <code>session.gc_maxlifetime</co
 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',
@@ -17077,9 +17083,9 @@ Verifique o seu php.ini e certifique-se de que em <code>session.save_path</code>
        '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 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
@@ -17090,10 +17096,15 @@ Este programa é distribuído na esperança de que seja útil, mas '''sem qualqu
 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.
@@ -17101,9 +17112,14 @@ Você não pode instalar o MediaWiki.',
        '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.'''
@@ -17119,10 +17135,9 @@ O MediaWiki funcionará mesmo assim, mas o seu servidor ficará exposto a potenc
        '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',
index 3e94b13..81e7b73 100644 (file)
@@ -616,6 +616,63 @@ abstract class JobQueue {
                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
         *
index 3fa0655..2052fc1 100644 (file)
@@ -604,6 +604,34 @@ class JobQueueDB extends JobQueue {
                }
        }
 
+       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
         *
index 35b80ca..d788c98 100644 (file)
@@ -421,6 +421,38 @@ class JobQueueFederated extends JobQueue {
                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 );
index e483e05..a20ea4a 100644 (file)
@@ -36,6 +36,9 @@ class JobQueueGroup {
 
        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
 
@@ -254,14 +257,71 @@ class JobQueueGroup {
         */
        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
index 57189a5..378e175 100644 (file)
@@ -501,7 +501,7 @@ LUA;
                        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 );
                }
@@ -547,6 +547,35 @@ LUA;
                }
        }
 
+       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
         *
@@ -804,14 +833,16 @@ LUA;
 
        /**
         * @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 );
                }
        }
 
index 8ec2e9a..779e23c 100644 (file)
@@ -79,13 +79,15 @@ abstract class MediaHandler {
         * 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 );
 
index b943dd0..81390dc 100644 (file)
@@ -1213,4 +1213,41 @@ class ResourceLoader {
        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;
+       }
 }
index b362297..c9c7e4e 100644 (file)
@@ -490,7 +490,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         * @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';
        }
 
@@ -579,6 +579,23 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                );
        }
 
+       /**
+        * 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.
         *
@@ -717,7 +734,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
        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 );
        }
@@ -749,7 +766,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        $source = $fileName;
                }
 
-               $compiler = self::lessCompiler();
+               $compiler = ResourceLoader::getLessCompiler();
                $expire = 0;
                try {
                        $result = $compiler->cachedCompile( $source );
index 822e73c..298f1fe 100644 (file)
@@ -407,9 +407,6 @@ abstract class ResourceLoaderModule {
        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.
@@ -457,40 +454,6 @@ abstract class ResourceLoaderModule {
                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.
index 2148210..82a413e 100644 (file)
@@ -89,7 +89,7 @@ class SearchUpdate implements DeferrableUpdate {
 
                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 ) {
index a68efc4..9429f10 100644 (file)
@@ -178,6 +178,8 @@ class LoginForm extends SpecialPage {
                        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
index 454ce34..60cf2b1 100644 (file)
@@ -63,24 +63,4 @@ class LanguageCu extends Language {
                }
                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];
-               }
-       }
 }
diff --git a/languages/classes/LanguageHi.php b/languages/classes/LanguageHi.php
deleted file mode 100644 (file)
index 6f7edb4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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];
-       }
-}
diff --git a/languages/classes/LanguageMg.php b/languages/classes/LanguageMg.php
deleted file mode 100644 (file)
index bf6800c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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];
-       }
-}
diff --git a/languages/classes/LanguageMt.php b/languages/classes/LanguageMt.php
deleted file mode 100644 (file)
index 20213a8..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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];
-       }
-}
index e15c9e2..8e286c9 100644 (file)
  * @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
diff --git a/languages/classes/LanguageSh.php b/languages/classes/LanguageSh.php
deleted file mode 100644 (file)
index 83c42cc..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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];
-                       }
-               }
-       }
-}
diff --git a/languages/classes/LanguageSk.php b/languages/classes/LanguageSk.php
deleted file mode 100644 (file)
index cd15f18..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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];
-       }
-}
diff --git a/languages/classes/LanguageTi.php b/languages/classes/LanguageTi.php
deleted file mode 100644 (file)
index f17b4d1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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];
-       }
-}
diff --git a/languages/classes/LanguageTl.php b/languages/classes/LanguageTl.php
deleted file mode 100644 (file)
index 060d1e2..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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];
-       }
-}
index fde8c53..e5f7438 100644 (file)
  * @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,
index 2e9a11b..d6a0d08 100644 (file)
@@ -4135,7 +4135,7 @@ $5
 'table_pager_empty' => 'لا نتائج',
 
 # Auto-summaries
-'autosumm-blank' => 'Ø£Ù\81رغ الصفحة',
+'autosumm-blank' => 'Ø¥Ù\81راغ الصفحة',
 'autosumm-replace' => "استبدال الصفحة ب'$1'",
 'autoredircomment' => 'تحويل إلى [[$1]]',
 'autosumm-new' => "أنشأ الصفحة ب'$1'",
index 03897de..7b8e172 100644 (file)
@@ -311,7 +311,7 @@ $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',
@@ -1482,7 +1482,7 @@ Esta información sedrá pública.',
 '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',
@@ -2027,6 +2027,7 @@ Les entraes <del>tachaes</del> tan resueltes.',
 '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',
@@ -2312,7 +2313,7 @@ daquién más yá editó o revirtió la páxina.
 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
@@ -3982,9 +3983,9 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 '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",
 
index 017c968..302bdad 100644 (file)
@@ -1658,8 +1658,8 @@ $1",
 'action-block' => 'блякаваньне гэтага ўдзельніка ад рэдагаваньняў',
 'action-protect' => 'зьмену ўзроўню абароны гэтай старонкі',
 'action-rollback' => 'хуткі адкат рэдагаваньняў апошняга ўдзельніка, які рэдагаваў старонку',
-'action-import' => 'імпарт гэтай старонкі зь іншай вікі',
-'action-importupload' => 'імпарт гэтай старонкі праз загрузку файла',
+'action-import' => 'імпарт старонак зь іншай вікі',
+'action-importupload' => 'імпарт старонак праз загрузку файла',
 'action-patrol' => 'пазначэньне чужых рэдагаваньняў як «патруляваныя»',
 'action-autopatrol' => 'пазначэньне ўласных рэдагаваньняў як «патруляваныя»',
 'action-unwatchedpages' => 'прагляд сьпісу старонак, за якімі ніхто не назірае',
@@ -2468,7 +2468,7 @@ $UNWATCHURL
 Апошнія зьмены зробленыя [[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.',
 
@@ -4131,9 +4131,9 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 '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' => 'Колькасьць дарагіх функцыяў парсэра',
 
index 0ad0fed..6713409 100644 (file)
@@ -3925,7 +3925,7 @@ Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar
 '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 darvoud 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',
@@ -4029,7 +4029,8 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 '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}}',
 
 );
index cd231d9..57574a9 100644 (file)
@@ -378,7 +378,7 @@ $messages = array(
 'viewtalkpage' => 'بینینی لێدوان',
 'otherlanguages' => 'بە زمانەکانی تر',
 'redirectedfrom' => '(ڕەوانەکراوە لە $1ەوە)',
-'redirectpagesub' => 'پەڕەی ڕەوانەکردن',
+'redirectpagesub' => 'پەڕەی ڕەوانەکەر',
 'lastmodifiedat' => 'ئەم پەڕەیە دواجار لە $2ی $1 نوێ کراوەتەوە.',
 'viewcount' => 'ئەم پەڕەیە {{PLURAL:$1|یەکجار|$1 جار}} بینراوە.',
 'protectedpage' => 'پەڕەی پارێزراو',
@@ -2344,11 +2344,11 @@ $1',
 '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 ھێنانەناوەوەکان',
index b86914f..ba1aaba 100644 (file)
@@ -1748,8 +1748,8 @@ Vaše adresa v takovém případě není prozrazena.',
 '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',
@@ -2278,6 +2278,7 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
 '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',
@@ -2558,7 +2559,7 @@ Rady a kontakt:
 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
index 752112b..4ac7606 100644 (file)
@@ -1495,8 +1495,8 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 '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',
@@ -2021,6 +2021,7 @@ Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
 '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',
@@ -2307,7 +2308,7 @@ mae rhywun arall eisoes wedi dadwneud y golygiad neu wedi golygu'r dudalen.
 [[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.",
 
index 196029b..fc5a3db 100644 (file)
@@ -35,6 +35,7 @@
  * @author Li-sung
  * @author Locos epraix
  * @author Lyzzy
+ * @author MBq
  * @author MF-Warburg
  * @author Man77
  * @author Melancholie
@@ -894,7 +895,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ände
 '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}}',
@@ -2619,7 +2620,7 @@ Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 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
@@ -4127,7 +4128,9 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 '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',
index 149d795..5ce4bcc 100644 (file)
@@ -1679,7 +1679,7 @@ You can still [$1 view this diff] if you wish to proceed.",
 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',
@@ -1791,7 +1791,7 @@ Note that using the navigation links will reset this column.',
 '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)',
@@ -2815,7 +2815,7 @@ Please note that other web sites may link to a file with a direct URL, and so ma
 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',
index d66deb6..2007ae1 100644 (file)
@@ -1581,7 +1581,7 @@ $1",
 'prefs-skin' => 'پوسته',
 'skin-preview' => 'پیش‌نمایش',
 'datedefault' => 'بدون ترجیح',
-'prefs-beta' => 'ویژگی های بتا',
+'prefs-beta' => 'ویژگی‌های آزمایشی',
 'prefs-datetime' => 'تاریخ و زمان',
 'prefs-labs' => 'گزینه‌های آزمایشی',
 'prefs-user-pages' => 'صفحه‌های کاربری',
index 3c1da4b..79da6f3 100644 (file)
@@ -1676,8 +1676,8 @@ Tämä tieto on julkinen.',
 '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',
@@ -2197,6 +2197,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 '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',
@@ -2476,7 +2477,7 @@ Sivulla $2 on lista viimeaikaisista poistoista.',
 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
index a578e57..d1afd7f 100644 (file)
@@ -1773,8 +1773,8 @@ Cette information sera publique.',
 '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',
@@ -2313,6 +2313,7 @@ Les entrées <del>barrées</del> ont été résolues.',
 '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',
@@ -2599,7 +2600,7 @@ quelqu'un d'autre a déjà modifié ou révoqué la page.
 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.',
 
@@ -2742,7 +2743,7 @@ $1',
 
 # 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.",
index 4892192..c9c0bb2 100644 (file)
@@ -1772,8 +1772,8 @@ $1",
 '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' => 'לצפות ברשימת הדפים שאינם במעקב',
@@ -2313,6 +2313,7 @@ $1',
 'listusers' => 'רשימת משתמשים',
 'listusers-editsonly' => 'הצגת משתמשים עם עריכות בלבד',
 'listusers-creationsort' => 'סידור לפי תאריך היצירה',
+'listusers-desc' => 'סידור בסדר יורד',
 'usereditcount' => '{{PLURAL:$1|עריכה אחת|$1 עריכות}}',
 'usercreated' => '{{GENDER:$3|נוצר|נוצרה}} ב־$2, $1',
 'newpages' => 'דפים חדשים',
@@ -2598,7 +2599,7 @@ $UNWATCHURL
 העריכה האחרונה הייתה של [[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
@@ -4211,7 +4212,7 @@ $5
 
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|מחק|מחקה}} את הדף $3',
-'logentry-delete-restore' => '$1 {{GENDER:$2|שחזר|שחזרה}} את הדף $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|שחזר|שחזרה}} את הדף $3&rlm;',
 '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',
index 0c81558..a61585c 100644 (file)
@@ -392,7 +392,7 @@ $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' => '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',
@@ -570,7 +570,7 @@ Nota que alcun paginas pote continuar a apparer como si tu esserea ancora authen
 '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:',
@@ -1576,8 +1576,8 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 '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',
@@ -2122,6 +2122,7 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 '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',
@@ -2414,7 +2415,7 @@ un altere persona ha ja modificate o revocate le pagina.
 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.',
 
@@ -4092,9 +4093,9 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 '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',
 
index 9f2a6ed..0725aba 100644 (file)
@@ -1662,8 +1662,8 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 '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',
@@ -2186,6 +2186,7 @@ I redirect <del>cancellati</del> sono stati corretti.',
 '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',
@@ -2467,7 +2468,7 @@ Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
 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
index 8617917..931ef28 100644 (file)
@@ -1764,7 +1764,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'right-noratelimit' => '速度制限を受けない',
 'right-import' => '他のウィキからページを取り込み',
 'right-importupload' => 'ファイルアップロードでページを取り込み',
-'right-patrol' => '他の編集を巡回済みにする',
+'right-patrol' => '他の利用者の編集を巡回済みにする',
 'right-autopatrol' => '自身の編集を自動で巡回済みにする',
 'right-patrolmarks' => '最近の更新で巡回済み印を閲覧',
 'right-unwatchedpages' => 'ウォッチされていないページ一覧を閲覧',
@@ -1810,8 +1810,8 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 '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' => 'ウォッチされていないページ一覧の閲覧',
@@ -2366,6 +2366,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'listusers' => '利用者一覧',
 'listusers-editsonly' => '投稿記録のある利用者のみを表示',
 'listusers-creationsort' => '作成日順に並べ替え',
+'listusers-desc' => '降順に並べ替える',
 'usereditcount' => '$1 {{PLURAL:$1|回編集}}',
 'usercreated' => '$1 $2 に{{GENDER:$3|作成}}',
 'newpages' => '新しいページ',
@@ -2655,8 +2656,8 @@ $UNWATCHURL
 
 このページの最後の編集は[[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による直前の版へ変更されました。',
 
index 658417f..71e9ded 100644 (file)
@@ -1362,7 +1362,7 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 '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"',
 
@@ -3584,7 +3584,7 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 '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)',
index 6499def..7ef9cf6 100644 (file)
@@ -3063,7 +3063,7 @@ $2',
 '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
index cb08d15..67a4c84 100644 (file)
@@ -598,7 +598,7 @@ $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' => '{{SITENAME}} 소개',
 'aboutpage' => 'Project:소개',
-'copyright' => '내용은 별도로 표시되지 않을 경우 $1 라이선스에 따라 이용할 수 있습니다.',
+'copyright' => '내용은 별도로 명시하지 않을 경우 $1에 따라 사용할 수 있습니다.',
 'copyrightpage' => '{{ns:project}}:저작권',
 'currentevents' => '요즘 화제',
 'currentevents-url' => 'Project:요즘 화제',
@@ -4318,7 +4318,7 @@ $5
 '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' => '부하 높은 파서 함수 수',
 
index 2ae91df..171fd70 100644 (file)
@@ -357,7 +357,7 @@ $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' => '{{SITENAME}} сайтны юсюнден',
 'aboutpage' => 'Project:Суратлау',
-'copyright' => 'Информация мунга кёре хайырланады: $1',
+'copyright' => 'Ичиндегиси,  $1 лицензиягъа кёре бериледи (башха белгиленмеген эсе).',
 'copyrightpage' => '{{ns:project}}:Авторлукъ хакъла',
 'currentevents' => 'Бусагъатда бола тургъанла',
 'currentevents-url' => 'Project:Бусагъатда бола тургъанла',
index 9f9121e..8464587 100644 (file)
@@ -1125,8 +1125,8 @@ Si vis id dare, opera tua tibi ascribentur.',
 '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',
index ebb89a2..52de8f1 100644 (file)
@@ -1577,8 +1577,8 @@ Dës Informatioun ass ëffentlech.",
 '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",
index 27b3041..68319e0 100644 (file)
@@ -297,7 +297,7 @@ $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' => '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',
@@ -425,6 +425,12 @@ Vaicājums: $2',
 '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''.",
@@ -3129,7 +3135,8 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # 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.',
index a464712..f41922c 100644 (file)
@@ -1774,8 +1774,8 @@ $1",
 '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' => 'преглед на список на ненабљудувани страници',
@@ -2323,6 +2323,7 @@ $1',
 'listusers' => 'Список на корисници',
 'listusers-editsonly' => 'Прикажи само корисници кои уредувале',
 'listusers-creationsort' => 'Подреди по датум на создавање',
+'listusers-desc' => 'Подреди по надолен редослед',
 'usereditcount' => '$1 {{PLURAL:$1|уредување|уредувања}}',
 'usercreated' => '{{GENDER:$3|Создадена}} на $1 во $2 ч.',
 'newpages' => 'Нови страници',
@@ -2613,7 +2614,7 @@ $UNWATCHURL
 Последното уредување го изврши [[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
index c119fab..1a21de4 100644 (file)
@@ -700,6 +700,8 @@ Een lijst met bestaande speciale pagina’s staat op [[Special:SpecialPages|{{in
 # 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',
@@ -1797,8 +1799,8 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 '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",
@@ -2354,6 +2356,7 @@ De pagina's zijn ook niet als sjabloon opgenomen.",
 '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",
@@ -2643,7 +2646,7 @@ Iemand anders heeft deze pagina al bewerkt of hersteld naar een eerdere versie.
 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.',
 
@@ -4200,6 +4203,7 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 '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.',
index 44151c8..270fa0d 100644 (file)
@@ -197,8 +197,8 @@ $messages = array(
 'tog-extendwatchlist' => 'ਸਿਰਫ਼ ਤਾਜ਼ਾ ਹੀ ਨਹੀਂ, ਸਗੋਂ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਵਖਾਉਣ ਲਈ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਨੂੰ ਵਧਾਓ',
 'tog-usenewrc' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਅਤੇ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਸਫ਼ੇ ਮੁਤਾਬਕ ਤਬਦੀਲੀਆਂ ਦੇ ਗਰੁੱਕ ਬਣਾਓ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
 'tog-numberheadings' => 'ਆਟੋ-ਨੰਬਰ ਸਿਰਨਾਵੇਂ',
-'tog-showtoolbar' => 'ਸੋਧ ਸੰਦਬਕਸਾ ਵੇਖੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
-'tog-editondblclick' => "ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਸਫ਼ੇ ਸੋਧੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)",
+'tog-showtoolbar' => 'ਸੋਧ ਸੰਦਬਕਸਾ ਵੇਖੋ',
+'tog-editondblclick' => "ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਸਫ਼ੇ ਸੋਧੋ",
 'tog-editsection' => '[ਸੋਧੋ] ਲਿੰਕਾਂ ਰਾਹੀਂ ਭਾਗ ਸੋਧਣਾ ਚਾਲੂ ਕਰੋ',
 'tog-editsectiononrightclick' => 'ਸੈਕਸ਼ਨ ਸਿਰਲੇਖਾਂ ’ਤੇ ਸੱਜੀ ਕਲਿੱਕ ਨਾਲ਼ ਸੋਧ ਚਾਲੂ ਕਰੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
 'tog-showtoc' => 'ਤਤਕਰਾ ਵਿਖਾਓ (੩ ਤੋਂ ਵੱਧ ਸਿਰਲੇਖਾਂ ਵਾਲੇ ਸਫ਼ਿਆਂ ਲਈ)',
@@ -218,7 +218,7 @@ $messages = array(
 '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' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚੋਂ ਬੋਟਾਂ ਦੀਆਂ ਸੋਧਾਂ ਲੁਕਾਓ',
@@ -331,7 +331,7 @@ $messages = array(
 'newwindow' => '(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦੀ ਹੈ)',
 'cancel' => 'ਰੱਦ ਕਰੋ',
 'moredotdotdot' => 'ਹੋਰ...',
-'morenotlisted' => '....ਹੋਰ ਸੂਚੀਬੱਧ ਨਹੀਂ',
+'morenotlisted' => 'ਇਹ ਸੂਚੀ ਪੂਰੀ ਨਹੀਂ ਹੈ।',
 'mypage' => 'ਸਫ਼ਾ',
 'mytalk' => 'ਗੱਲ-ਬਾਤ',
 'anontalk' => 'ਇਸ IP ਲਈ ਗੱਲ-ਬਾਤ',
@@ -1235,9 +1235,9 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 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' => 'ਤੁਹਾਡੀ ਮਰਜੀ ਹੈ ਈਮੇਲ ਪਤਾ ਦਿਓ ਜਾਂ ਨਾ ਦਿਓ ਪਰ ਪਾਸਵਰਡ ਭੁੱਲ ਜਾਣ ਤੇ ਨਵਾਂ ਪਾਸਵਰਡ ਹਾਸਲ ਕਰਨ ਲਈ ਇਹ ਜਰੂਰੀ ਹੈ।',
@@ -1249,7 +1249,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'prefs-signature' => 'ਦਸਤਖ਼ਤ',
 'prefs-dateformat' => 'ਮਿਤੀ ਦਾ ਅੰਦਾਜ਼',
 'prefs-timeoffset' => 'ਸਮੇਂ ਦਾ ਆਫ਼ਸੈੱਟ',
-'prefs-advancedediting' => 'ਆਮ',
+'prefs-advancedediting' => 'ਆਮ ਚੋਣਾਂ',
 'prefs-editor' => 'ਸੰਪਾਦਕ',
 'prefs-preview' => 'ਝਲਕ',
 'prefs-advancedrc' => 'ਤਕਨੀਕੀ ਚੋਣਾਂ',
@@ -1278,7 +1278,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 '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' => 'ਉਹ ਸਮੂਹ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਬਦਲ ਨਹੀਂ ਸਕਦੇ',
 
@@ -1322,7 +1322,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 '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' => 'ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਜਾਵਾਸਕਰਿਪਟ ਫ਼ਾਈਲਾਂ ਸੋਧਣ',
@@ -1371,7 +1371,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 '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' => 'ਇਸ ਸਫ਼ੇ ਦੇ ਅਤੀਤ ਨੂੰ ਰਲ਼ਾਉਣ',
@@ -1414,7 +1414,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 '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" ਵਜੋਂ ਬਣਾਇਆ',
 
@@ -2260,8 +2260,8 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$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' => 'ਇਸ ਸਫ਼ੇ ਦੇ ਉਪ-ਸਫ਼ੇ',
index 4f1f0e9..2af8a37 100644 (file)
@@ -1716,8 +1716,8 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 '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',
@@ -2260,6 +2260,7 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 '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',
index 3f9fb12..6377e4e 100644 (file)
@@ -685,9 +685,9 @@ A dovrìa felo si për asar chiel a l'ha partagiaje con cheidun o si sò cont a
 '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.",
index e548d19..4c38480 100644 (file)
@@ -167,8 +167,8 @@ $messages = array(
 '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' => 'نيوليک ښکاره کول (د هغو مخونو لپاره چې له ۳ نه ډېر سرليکونه لري)',
@@ -492,7 +492,7 @@ $1',
 '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|پازوال]] ته ورکړۍ.',
@@ -853,15 +853,15 @@ $1',
 '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' => 'ستاسې سمون خوندي شو.',
@@ -879,12 +879,12 @@ $1',
 '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' => 'گڼون نه شي جوړېدای',
@@ -908,7 +908,7 @@ $1',
 لنډيز: (اوس) = د اوسنۍ بڼې سره توپير،
 (وروست) = د وروستۍ بڼې سره توپير، و = وړه سمونه.',
 '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 بايټونه}})',
@@ -918,7 +918,7 @@ $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
@@ -933,7 +933,7 @@ $1',
 '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' => 'د سمونګر کارن-نوم/آی پي پته پټول',
@@ -1023,8 +1023,8 @@ $1',
 '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' => 'ژوره پلټنه',
@@ -1081,7 +1081,7 @@ $1',
 'timezoneuseserverdefault' => 'د ويکي تلواليزه بڼه کارول ($1)',
 'timezoneuseoffset' => 'بل (توپير ځانگړی کړی)',
 'timezoneoffset' => 'توپير¹:',
-'servertime' => 'د Ù¾Ø§Ù\84Ù\86Ú«ر وخت:',
+'servertime' => 'د Ù¾Ø§Ù\84Ù\86Ú¯ر وخت:',
 'guesstimezone' => 'له کتنمل نه ډکول',
 'timezoneregion-africa' => 'افريقا',
 'timezoneregion-america' => 'امريکا',
@@ -1128,7 +1128,7 @@ $1',
 'prefs-signature' => 'لاسليک',
 'prefs-dateformat' => 'د نېټې بڼه',
 'prefs-timeoffset' => 'د وخت واټن',
-'prefs-advancedediting' => 'Ù¼Ù\88Ù\84Ú«ړی',
+'prefs-advancedediting' => 'Ù¼Ù\88Ù\84Ú¯ړی',
 'prefs-editor' => 'سمونګر',
 'prefs-preview' => 'مخليدنه',
 'prefs-advancedrc' => 'پرمختللې خوښنې',
@@ -1200,7 +1200,7 @@ $1',
 'right-writeapi' => 'د API کښنې کارېدنه',
 'right-delete' => 'مخونه ړنگول',
 'right-bigdelete' => 'د اوږدو پېښليکونو مخونه ړنگول',
-'right-browsearchive' => 'Ú\93Ù\86Ú« شوي مخونه پلټل',
+'right-browsearchive' => 'Ú\93Ù\86Ú¯ شوي مخونه پلټل',
 'right-undelete' => 'يو مخ ناړنګول',
 'right-suppressionlog' => 'شخصي يادښتونه کتل',
 'right-block' => 'پر نورو کارنانو د سمون د آسانتياوؤ بنديز لګول',
@@ -1213,7 +1213,7 @@ $1',
 '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
@@ -1238,8 +1238,8 @@ $1',
 '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' => 'پر دې کارن د سمون د آسانتياوؤ بنديز لګول',
@@ -1247,7 +1247,7 @@ $1',
 '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' => 'برېښليکونه لېږل',
 
@@ -1418,7 +1418,7 @@ $1',
 'filehist-help' => 'په يوې نېټې/يوه وخت وټوکۍ چې د هماغه وخت او نېټې دوتنه چې په هماغه وخت کې څنګه ښکارېده هماغسې درښکاره شي.',
 'filehist-deleteall' => 'ټول ړنگول',
 'filehist-deleteone' => 'ړنگول',
-'filehist-revert' => 'Ù¾Ù\87 Ú\85Ù¼ Ú«رځول',
+'filehist-revert' => 'Ù¾Ù\87 Ú\85Ù¼ Ú¯رځول',
 'filehist-current' => 'اوسنی',
 'filehist-datetime' => 'نېټه/وخت',
 'filehist-thumb' => 'بټنوک',
@@ -1444,7 +1444,7 @@ $1',
 
 # File reversion
 'filerevert-comment' => 'سبب:',
-'filerevert-submit' => 'Ù¾Ù\87 Ú\85Ù¼ Ú«رځول',
+'filerevert-submit' => 'Ù¾Ù\87 Ú\85Ù¼ Ú¯رځول',
 
 # File deletion
 'filedelete' => '$1 ړنگول',
@@ -1452,13 +1452,13 @@ $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' => 'دوتنه نه شي ړنګېدی',
 
@@ -1471,7 +1471,7 @@ $1',
 'unwatchedpages' => 'ناکتلي مخونه',
 
 # List redirects
-'listredirects' => 'د Ù\88رګرځېدنو لړليک',
+'listredirects' => 'د Ù\88رگرځېدنو لړليک',
 
 # Unused templates
 'unusedtemplates' => 'ناکارېدلې کينډۍ',
@@ -1482,7 +1482,7 @@ $1',
 'randompage-nopages' => 'په لانديني {{PLURAL:$2|نوم-تشيال|نوم-تشيالونو}} کې هېڅ کوم مخ نشته: $1.',
 
 # Random redirect
-'randomredirect' => 'Ù\86اټاکÙ\84Û\8c Ù\88رګرځېدنه',
+'randomredirect' => 'Ù\86اټاکÙ\84Û\8c Ù\88رگرځېدنه',
 
 # Statistics
 'statistics' => 'شمار',
@@ -1493,7 +1493,7 @@ $1',
 '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' => 'پر يوه مخ د سمون منځوۍ کچه',
@@ -1506,9 +1506,9 @@ $1',
 
 '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' => 'ړنگول',
 
@@ -1542,9 +1542,9 @@ $1',
 'wantedfiles' => 'غوښتلې دوتنې',
 'wantedtemplates' => 'غوښتلې کينډۍ',
 'mostlinked' => 'د ډېرو تړنو مخونه',
-'mostlinkedcategories' => 'د Ú«ڼو تړنو وېشنيزې',
+'mostlinkedcategories' => 'د Ú¯ڼو تړنو وېشنيزې',
 'mostlinkedtemplates' => 'د ډېرو تړنو کينډۍ',
-'mostcategories' => 'د Ú«ڼو وېشنيزو مخونه',
+'mostcategories' => 'د Ú¯ڼو وېشنيزو مخونه',
 'mostimages' => 'د ډېرو تړنو انځورونه',
 'mostinterwikis' => 'د ډېرو خپلمنځي تړنو مخونه',
 'mostrevisions' => 'ډېر کتلي مخونه',
@@ -1601,7 +1601,7 @@ $1',
 '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' => 'مخ ګرځونې پټول',
 
@@ -1724,12 +1724,12 @@ $1',
 '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 وګورۍ.',
@@ -1772,24 +1772,24 @@ $UNWATCHURL  نه ليدنه وکړۍ
 # 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Ú¯ړی سبب
 ** د ليکوال غوښتنه
 ** د رښتو تېری
 ** د پوهې سره دښمني',
@@ -1855,9 +1855,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 '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' => 'کتل',
@@ -1866,7 +1866,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 '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' => 'هو',
@@ -1955,8 +1955,8 @@ $UNWATCHURL  نه ليدنه وکړۍ
 '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' => 'لنډمهاله بنديزونه پټول',
@@ -2058,9 +2058,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 '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' => 'يو ورګرځونکی مخ پر ځای پرېښودل',
@@ -2072,7 +2072,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'exportall' => 'ټول مخونه صادرول',
 'export-submit' => 'صادرول',
 'export-addcattext' => 'مخونو د ورګډولو وېشنيزه:',
-'export-addcat' => 'Ù\88رګډول',
+'export-addcat' => 'Ù\88رگډول',
 'export-addnstext' => 'د نوم-تشيال نه مخونه ورګډول:',
 'export-addns' => 'ورګډول',
 'export-download' => 'د دوتنې په بڼه خوندي کول',
@@ -2156,7 +2156,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 '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' => 'دا يو ځانگړی مخ دی، تاسې په دې مخ کې سمون نه شی کولای.',
@@ -2210,7 +2210,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-robot-noindex' => 'ليکلړوړ نه',
 'pageinfo-views' => 'د کتنو شمېر',
 'pageinfo-watchers' => 'د مخ د کتونکو شمېر',
-'pageinfo-redirects-name' => 'دې مخ ته ورګرځونې',
+'pageinfo-redirects-name' => 'دې مخ ته د ورگرځونو شمېر',
 'pageinfo-subpages-name' => 'دې مخ ته څېرمه مخونه',
 'pageinfo-firstuser' => 'مخ جوړونکی',
 'pageinfo-firsttime' => 'د مخ جوړېدنې نېټه',
@@ -2365,7 +2365,7 @@ $1',
 'exif-giffilecomment' => 'د GIF دوتنې تبصره',
 
 'exif-copyrighted-true' => 'په رښتو سمبال',
-'exif-copyrighted-false' => 'ټولګړی شپول',
+'exif-copyrighted-false' => 'د خپراوي د رښتو دريځ نه دی ټاکل شوی',
 
 'exif-unknowndate' => 'نامالومه نېټه',
 
@@ -2546,7 +2546,7 @@ $5
 'table_pager_empty' => 'بې پايلو',
 
 # Auto-summaries
-'autosumm-blank' => 'د مخ مېنځپانګه ليرې شوه',
+'autosumm-blank' => 'مخ تش شو',
 'autosumm-replace' => "دا مخ د '$1' پرځای راوستل",
 'autoredircomment' => '[[$1]] ته وګرځولی شو',
 'autosumm-new' => 'د "$1" تورو مخ جوړ شو',
@@ -2629,7 +2629,7 @@ $5
 
 # Special:Version
 'version' => 'بڼه',
-'version-extensions' => 'Ù\84Ú«ېدلي شاتاړي',
+'version-extensions' => 'Ù\84Ú¯ېدلي شاتاړي',
 'version-specialpages' => 'ځانگړي مخونه',
 'version-skins' => 'پوښۍ',
 'version-other' => 'بل',
@@ -2647,8 +2647,8 @@ $5
 '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',
@@ -2723,10 +2723,10 @@ $5
 '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|جوړ شو}}',
index 2043e04..fda05c4 100644 (file)
@@ -2532,7 +2532,7 @@ alguém editou ou já reverteu a página.
 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
index d2a4f17..f351543 100644 (file)
@@ -4922,6 +4922,7 @@ See the following search results:
 '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:
@@ -5643,7 +5644,7 @@ See also:
 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
index 2a52161..5ab64fc 100644 (file)
@@ -1700,8 +1700,8 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 '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',
@@ -2239,6 +2239,7 @@ Intrările <del>tăiate</del> au fost rezolvate.',
 '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',
@@ -2521,7 +2522,7 @@ acționați cu precauție.',
 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.',
 
index 7dad7da..dd2e13a 100644 (file)
@@ -2378,6 +2378,7 @@ $1',
 'listusers' => 'Список участников',
 'listusers-editsonly' => 'Показать только тех участников, кто сделал хотя бы одну правку',
 'listusers-creationsort' => 'Упорядочить по дате создания',
+'listusers-desc' => 'Сортировать по убыванию',
 'usereditcount' => '$1 {{PLURAL:$1|правка|правки|правок}}',
 'usercreated' => '{{GENDER:$3|зарегистрировался|зарегистрировалась}} $1 в $2',
 'newpages' => 'Новые страницы',
index dcee8c9..88b54f9 100644 (file)
@@ -1721,8 +1721,8 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 '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',
@@ -2258,6 +2258,7 @@ Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt
 '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',
@@ -2540,7 +2541,7 @@ Se $2 för noteringar om de senaste raderingarna.',
 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.',
 
index 9319052..bcb2c1f 100644 (file)
@@ -1779,8 +1779,8 @@ $1",
 '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' => 'перегляд списку сторінок, за якими ніхто не спостерігає',
@@ -2326,6 +2326,7 @@ $1',
 'listusers' => 'Список користувачів',
 'listusers-editsonly' => 'Показати лише користувачів, які зробили принаймні одне редагування',
 'listusers-creationsort' => 'Сортувати за датою створення',
+'listusers-desc' => 'Сортувати за спадним порядком',
 'usereditcount' => '$1 {{PLURAL:$1|редагування|редагування|редагувань}}',
 'usercreated' => '{{GENDER:$3|Створено}} $1 о $2',
 'newpages' => 'Нові сторінки',
@@ -2614,7 +2615,7 @@ $UNWATCHURL
 Останні редагування зроблено [[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
index ba4775d..520eed7 100644 (file)
@@ -1710,8 +1710,8 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 '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',
@@ -2248,6 +2248,7 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 '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',
@@ -2530,7 +2531,7 @@ người viết trang cuối cùng cũng là tác giả duy nhất của trang n
 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.',
 
index e30a8a2..f5233ee 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Benojan
  * @author Hercule
  * @author O
  * @author Reedy
@@ -19,68 +20,69 @@ $fallback = 'zh-hans';
 
 $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' => '三',
@@ -125,13 +127,13 @@ $messages = array(
 '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只页面。}}',
@@ -147,6 +149,7 @@ $messages = array(
 'newwindow' => '(垃拉新窗口里向开开来)',
 'cancel' => '取消',
 'moredotdotdot' => '还有...',
+'morenotlisted' => '箇张表还朆完成',
 'mypage' => '我个页面',
 'mytalk' => '我个讨论',
 'anontalk' => '箇只IP个言论',
@@ -204,8 +207,8 @@ $messages = array(
 'protect' => '保护',
 'protect_change' => '改动',
 'protectthispage' => '保护此页',
-'unprotect' => '解除保护',
-'unprotectthispage' => '解除此页保护',
+'unprotect' => '改变保护状态',
+'unprotectthispage' => '改变箇页保护',
 'newpage' => '新页面',
 'talkpage' => '讨论箇只页面',
 'talkpagelinktext' => '讨论',
@@ -381,6 +384,8 @@ $2',
 注意,有眼页面作兴还是会搭侬登出前头一样显示,一脚到侬清除浏览器缓存。",
 'yourname' => '用户名:',
 'yourpassword' => '密码:',
+'userlogin-yourpassword-ph' => '密码打进去',
+'createacct-yourpassword-ph' => '密码打进去',
 'yourpasswordagain' => '再拍一遍密码:',
 'remembermypassword' => '垃拉箇部电脑上记牢我个密码(可维持$1{{PLURAL:$1|日|日}})',
 'yourdomainname' => '侬个域名:',
@@ -401,7 +406,7 @@ $2',
 '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像煞拨侬关拉许,请开开来再登录。',
@@ -460,8 +465,8 @@ $2',
 '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' => '更改密码',
@@ -470,6 +475,9 @@ $2',
 侬作兴已经成功拿密码改脱,或者已经请求一个新个临时密码。',
 'resetpass-temp-password' => '临时密码:',
 
+# Special:PasswordReset
+'passwordreset-username' => '用戶名',
+
 # Edit page toolbar
 'bold_sample' => '黑体文本',
 'bold_tip' => '黑体文本',
@@ -689,8 +697,8 @@ $3封禁个原因是''$2''",
 'histlegend' => '选择比较版本:标记要比较个两只版本,回车或者揿页面底里个揿钮。<br /> 图例:(当前) = 搭当前版本有啥两样, (上个) = 搭上个版本有啥两样,小 = 小改动。',
 'history-fieldset-title' => '浏览历史',
 'history-show-deleted' => '仅限已经删除个',
-'histfirst' => '顶早',
-'histlast' => '顶晏',
+'histfirst' => '最老',
+'histlast' => '最新',
 'historysize' => '($1字节)',
 'historyempty' => '(空)',
 
@@ -981,6 +989,22 @@ $1",
 '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' => '用户创建日志',
 
@@ -988,14 +1012,40 @@ $1",
 '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小改动',
@@ -1028,6 +1078,7 @@ $1",
 # Upload
 'upload' => '上载文物',
 'uploadbtn' => '上载文件',
+'reuploaddesc' => '弗傳,轉到傳表單',
 'uploadnologin' => '朆登录',
 'uploadnologintext' => '倷板定要[[Special:UserLogin|登录]]仔再好上载文件。',
 'uploaderror' => '上载出错',
@@ -1047,13 +1098,52 @@ $1",
 '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' => '寻图片名字:',
@@ -1064,6 +1154,8 @@ $1",
 'listfiles_user' => '用户',
 'listfiles_size' => '尺寸 (bytes)',
 'listfiles_description' => '描述',
+'listfiles-latestversion-yes' => '正是',
+'listfiles-latestversion-no' => '弗是',
 
 # File description page
 'file-anchor-link' => '文物',
@@ -1078,10 +1170,12 @@ $1",
 'filehist-thumbtext' => '于$1个缩图版本',
 'filehist-user' => '用户',
 'filehist-dimensions' => '维度',
+'filehist-filesize' => '文件大細',
 'filehist-comment' => '备注',
 'imagelinks' => '文件链接',
 'linkstoimage' => '下头$1只页面链接到本文件:',
 'nolinkstoimage' => '呒拨页面链接到该只文件。',
+'linkstoimage-redirect' => '$1(文件轉戳到)$2',
 'sharedupload' => '箇只文件来源于$1,渠作兴垃拉其它项目当中拨应用。',
 'uploadnewversion-linktext' => '上载该文件个新版',
 
@@ -1096,6 +1190,9 @@ $1",
 'filedelete-legend' => '删除文物',
 'filedelete-comment' => '理由:',
 'filedelete-submit' => '删除',
+'filedelete-reason-otherlist' => '別樣原因',
+'filedelete-edit-reasonlist' => '編刪個原因',
+'filedelete-maintenance-title' => '文件刪弗爻',
 
 # MIME search
 'download' => '下载',
@@ -1103,19 +1200,31 @@ $1",
 # 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只成员',
@@ -1132,6 +1241,7 @@ $1",
 'protectedpages' => '已保护页面',
 'protectedtitles' => '已保护个标题',
 'listusers' => '用户列表',
+'listusers-creationsort' => '照建個日子排',
 'newpages' => '新页面',
 'newpages-username' => '用户名:',
 'ancientpages' => '顶顶老个页面',
@@ -1146,8 +1256,8 @@ $1",
 'booksources-go' => '转到',
 
 # Special:Log
-'specialloguserlabel' => 'ç\94¨æ\88·:',
-'speciallogtitlelabel' => '标题:',
+'specialloguserlabel' => 'ç\94¨æ\88¶ï¼\9a',
+'speciallogtitlelabel' => '目標(標題要弗用戶):',
 'log' => '记录',
 
 # Special:AllPages
@@ -1171,35 +1281,46 @@ $1",
 
 # 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',
@@ -1248,14 +1369,19 @@ $1",
 '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' => '编辑',
@@ -1265,7 +1391,10 @@ $1",
 'undeletepage' => '查看搭仔恢复删脱个页面',
 'viewdeletedpage' => '望望删脱个页面',
 'undeletelink' => '查看/恢复',
+'undeleteviewlink' => '望',
+'undeletereset' => '轉設',
 'undeletecomment' => '理由:',
+'undelete-search-submit' => '搜尋',
 
 # Namespace form on various pages
 'namespace' => '名字空间:',
@@ -1283,7 +1412,7 @@ $1",
 
 'sp-contributions-newbies' => '仅显示新用户个贡献',
 'sp-contributions-blocklog' => '查封记录',
-'sp-contributions-talk' => '讲张',
+'sp-contributions-talk' => 'è¨\8eè«\96',
 'sp-contributions-search' => '搜索贡献记录',
 'sp-contributions-username' => 'IP地址或用户名:',
 'sp-contributions-submit' => '寻',
@@ -1296,7 +1425,7 @@ $1",
 'nolinkshere' => "呒拨页面链接到 '''[[:$1]]'''。",
 'isredirect' => '重定向页面',
 'istemplate' => '包含',
-'isimage' => '图片链接',
+'isimage' => '文件鏈接',
 'whatlinkshere-prev' => '前$1个',
 'whatlinkshere-next' => '后$1个',
 'whatlinkshere-links' => '←链入',
@@ -1314,7 +1443,7 @@ $1",
 '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' => '解封',
@@ -1322,22 +1451,29 @@ $1",
 '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' => "相关讨论页将自动搭该页面一淘移动,'''除非''':
 *新页面已经有仔一只非空个讨论页,或者
index 4ec09f9..448785e 100644 (file)
@@ -1218,6 +1218,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'באהאלטונגען לאג',
+'suppressionlogtext' => 'אונטן געפינט זיך א ליסטע פון אויסמעקונגען און בלאקן וואס באהאנדלען אינהאלט באהאלטן פון אדמיניסטראטארן.
+זעט די [[Special:BlockList|בלאקן ליסטע]] פאר דער ליסטע פון אקטועלע בלאקן.',
 
 # History merging
 'mergehistory' => 'צונויפֿגיסן בלאט היסטאריעס',
@@ -2373,7 +2375,7 @@ $UNWATCHURL
 די לעצטע ענדערונג צום בלאַט איז געווען פון [[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
index f4849b5..01de748 100644 (file)
@@ -1497,10 +1497,10 @@ $1",
 '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' => '这是选填项目。
 软件使用其以显示正确的性别称呼。
 该信息将会公开。',
@@ -1684,8 +1684,8 @@ $1",
 'action-block' => '阻止该用户编辑',
 'action-protect' => '更改本页面的保护级别',
 'action-rollback' => '快速回退最后编辑特定页面的用户的编辑',
-'action-import' => '从其他wiki导入页面',
-'action-importupload' => '从文件上传导入页面',
+'action-import' => '从其他wiki导入页面',
+'action-importupload' => '从文件上传导入页面',
 'action-patrol' => '标记他人的编辑为已巡查',
 'action-autopatrol' => '使你的编辑标记为已巡查',
 'action-unwatchedpages' => '查看未受监视页面的列表',
@@ -2187,6 +2187,7 @@ $1',
 'listusers' => '用户列表',
 'listusers-editsonly' => '只显示有编辑的用户',
 'listusers-creationsort' => '按建立日期排序',
+'listusers-desc' => '按降序排序',
 'usereditcount' => '$1次编辑',
 'usercreated' => '{{GENDER:$3|创建}}于$1 $2',
 'newpages' => '新页面',
@@ -2462,7 +2463,7 @@ $UNWATCHURL
 本页最后的编辑者是[[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
diff --git a/maintenance/checkLess.php b/maintenance/checkLess.php
new file mode 100644 (file)
index 0000000..d02d8a7
--- /dev/null
@@ -0,0 +1,72 @@
+<?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;
index 60edb56..2ba24e9 100644 (file)
@@ -108,6 +108,25 @@ return array(
                '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 */
 
index 97b28ed..c07a593 100644 (file)
@@ -57,7 +57,7 @@ class SkinVector extends SkinTemplate {
                                "/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
                );
 
-               $out->addModules( 'skins.vector.js' );
+               $out->addModules( array( 'skins.vector.js', 'skins.vector.collapsibleNav' ) );
        }
 
        /**
diff --git a/skins/vector/collapsibleNav.css b/skins/vector/collapsibleNav.css
new file mode 100644 (file)
index 0000000..02799d7
--- /dev/null
@@ -0,0 +1,94 @@
+/**
+ * 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;
+}
diff --git a/skins/vector/collapsibleNav.js b/skins/vector/collapsibleNav.js
new file mode 100644 (file)
index 0000000..67313c9
--- /dev/null
@@ -0,0 +1,121 @@
+/**
+ * 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 ) );
diff --git a/skins/vector/images/arrow-collapsed-ltr.png b/skins/vector/images/arrow-collapsed-ltr.png
new file mode 100644 (file)
index 0000000..063ac6f
Binary files /dev/null and b/skins/vector/images/arrow-collapsed-ltr.png differ
diff --git a/skins/vector/images/arrow-collapsed-ltr.svg b/skins/vector/images/arrow-collapsed-ltr.svg
new file mode 100644 (file)
index 0000000..d0c4729
--- /dev/null
@@ -0,0 +1,37 @@
+<?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>
diff --git a/skins/vector/images/arrow-collapsed-rtl.png b/skins/vector/images/arrow-collapsed-rtl.png
new file mode 100644 (file)
index 0000000..c346218
Binary files /dev/null and b/skins/vector/images/arrow-collapsed-rtl.png differ
diff --git a/skins/vector/images/arrow-collapsed-rtl.svg b/skins/vector/images/arrow-collapsed-rtl.svg
new file mode 100644 (file)
index 0000000..8c5e04b
--- /dev/null
@@ -0,0 +1,37 @@
+<?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>
diff --git a/skins/vector/images/arrow-expanded.png b/skins/vector/images/arrow-expanded.png
new file mode 100644 (file)
index 0000000..0221028
Binary files /dev/null and b/skins/vector/images/arrow-expanded.png differ
diff --git a/skins/vector/images/arrow-expanded.svg b/skins/vector/images/arrow-expanded.svg
new file mode 100644 (file)
index 0000000..60704d2
--- /dev/null
@@ -0,0 +1,37 @@
+<?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>
index d2976f2..ef2af24 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -76,7 +76,7 @@ function wfThumbHandle404() {
                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;
@@ -88,7 +88,14 @@ function wfThumbHandle404() {
 /**
  * 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 ) {
@@ -99,17 +106,6 @@ 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'] );
@@ -166,6 +162,16 @@ function wfStreamThumb( array $params ) {
                $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;
@@ -229,6 +235,18 @@ function wfStreamThumb( array $params ) {
                }
        }
 
+       // 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 );
@@ -317,13 +335,25 @@ function wfStreamThumb( array $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 = '';
@@ -349,12 +379,59 @@ function wfExtractThumbParams( $thumbRel ) {
                $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 ) {
@@ -362,8 +439,7 @@ function wfExtractThumbParams( $thumbRel ) {
                }
                return $params; // valid thumbnail URL
        }
-
-       return null; // not a valid thumbnail URL
+       return null;
 }
 
 /**