Merge "Show minor edits and tags in Special:Undelete"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 3 Dec 2013 14:50:17 +0000 (14:50 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 3 Dec 2013 14:50:17 +0000 (14:50 +0000)
309 files changed:
.gitignore
RELEASE-NOTES-1.23
includes/Article.php
includes/AutoLoader.php
includes/Block.php
includes/Collation.php
includes/Cookie.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Exception.php
includes/Export.php
includes/GitInfo.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/Html.php
includes/HtmlFormatter.php
includes/HttpFunctions.php
includes/ImagePage.php
includes/LinkFilter.php
includes/Linker.php
includes/OutputPage.php
includes/Pager.php
includes/Preferences.php
includes/Revision.php
includes/Setup.php
includes/SkinTemplate.php
includes/StreamFile.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebRequest.php
includes/Wiki.php
includes/Xml.php
includes/api/ApiFeedContributions.php
includes/api/ApiMain.php
includes/api/ApiQueryFileRepoInfo.php
includes/cache/BacklinkCache.php
includes/cache/LocalisationCache.php
includes/db/Database.php
includes/deferred/LinksUpdate.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/ForeignDBRepo.php
includes/filerepo/ForeignDBViaLBRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/LocalFile.php
includes/gallery/ImageGalleryBase.php
includes/gallery/NolinesImageGallery.php
includes/gallery/PackedImageGallery.php
includes/gallery/PackedOverlayImageGallery.php
includes/gallery/TraditionalImageGallery.php
includes/installer/Installer.i18n.php
includes/installer/Installer.php
includes/installer/MysqlInstaller.php
includes/installer/MysqlUpdater.php
includes/installer/OracleInstaller.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerOutput.php
includes/interwiki/Interwiki.php
includes/job/Job.php
includes/job/JobQueueGroup.php
includes/job/JobQueueRedis.php
includes/job/jobs/RefreshLinksJob.php
includes/job/jobs/RefreshLinksJob2.php [new file with mode: 0644]
includes/job/utils/BacklinkJobUtils.php [new file with mode: 0644]
includes/json/FormatJson.php
includes/libs/CSSMin.php
includes/logging/LogPage.php
includes/logging/LogPager.php
includes/logging/MoveLogFormatter.php
includes/media/ExifBitmap.php
includes/media/FormatMetadata.php
includes/media/GIFMetadataExtractor.php
includes/media/IPTC.php
includes/media/XCF.php
includes/media/XMP.php
includes/objectcache/MemcachedClient.php
includes/objectcache/SqlBagOStuff.php
includes/parser/CacheTime.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/profiler/Profiler.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/specials/SpecialContributions.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialWatchlist.php
includes/templates/NoLocalSettings.php
includes/upload/UploadBase.php
languages/Language.php
languages/LanguageConverter.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageDsb.php
languages/classes/LanguageGv.php
languages/classes/LanguageHr.php
languages/classes/LanguageHsb.php
languages/classes/LanguageKsh.php
languages/classes/LanguageSr.php
languages/classes/LanguageSr_ec.php
languages/classes/LanguageSr_el.php
languages/classes/LanguageUk.php
languages/messages/MessagesAce.php
languages/messages/MessagesAf.php
languages/messages/MessagesAk.php
languages/messages/MessagesAn.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesBa.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBo.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCs.php
languages/messages/MessagesCu.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGl.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHak.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesInh.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKa.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKw.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLi.php
languages/messages/MessagesLij.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLo.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMyv.php
languages/messages/MessagesNan.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQu.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesScn.php
languages/messages/MessagesSd.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSh.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesTl.php
languages/messages/MessagesTr.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesVec.php
languages/messages/MessagesVi.php
languages/messages/MessagesVo.php
languages/messages/MessagesWar.php
languages/messages/MessagesWuu.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/messages/MessagesZh_tw.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/Maintenance.php
maintenance/backupTextPass.inc
maintenance/cdb.php
maintenance/copyFileBackend.php
maintenance/doMaintenance.php
maintenance/findHooks.php
maintenance/parse.php
maintenance/pruneFileCache.php
maintenance/rebuildImages.php
maintenance/storage/compressOld.php
maintenance/storage/fixBug20757.php
maintenance/update.php
maintenance/userDupes.inc
resources/jquery/jquery.makeCollapsible.js
resources/jquery/jquery.placeholder.js
resources/jquery/jquery.spinner.js
resources/mediawiki.special/mediawiki.special.createAccount.js
resources/mediawiki.special/mediawiki.special.userLogin.css
resources/mediawiki/mediawiki.Title.js
skins/.gitignore [new file with mode: 0644]
tests/phpunit/data/cssmin/green.gif [new file with mode: 0644]
tests/phpunit/data/cssmin/large.png [new file with mode: 0644]
tests/phpunit/data/cssmin/red.gif [new file with mode: 0644]
tests/phpunit/data/xmp/gps.result.php
tests/phpunit/includes/LinkFilterTest.php [new file with mode: 0644]
tests/phpunit/includes/PreferencesTest.php
tests/phpunit/includes/ResourceLoaderModuleTest.php [new file with mode: 0644]
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/SpecialPageTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TitleMethodsTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/query/ApiQueryContinueTestBase.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/content/WikitextContentHandlerTest.php
tests/phpunit/includes/diff/DifferenceEngineTest.php
tests/phpunit/includes/jobqueue/RefreshLinksPartitionTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/media/SVGTest.php
tests/phpunit/includes/parser/TidyTest.php
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/phpunit/languages/LanguageBe_taraskTest.php
tests/phpunit/languages/LanguageUkTest.php
tests/phpunit/skins/SideBarTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/jquery/jquery.placeholder.test.js [new file with mode: 0644]

index 9c0c3b6..76d220a 100644 (file)
@@ -62,3 +62,5 @@ Thumbs.db
 /favicon.ico
 /static*
 /tags
+/.htaccess
+/.htpasswd
index 2d89dd2..d4c413e 100644 (file)
@@ -53,6 +53,8 @@ production.
 * Classes TitleListDependency and TitleDependency have been removed, as they
   have been found unused in core and extensions for a long time.
 * (bug 57098) SpecialPasswordReset now obeys returnto parameter
+* (bug 37812) ResourceLoader will notice when a module's definition changes and
+  recompile it accordingly.
 
 === API changes in 1.23 ===
 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
index ecbc59f..821c32e 100644 (file)
@@ -1552,8 +1552,8 @@ class Article implements Page {
                }
 
                if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'wpEditToken' ),
-                       array( 'delete', $this->getTitle()->getPrefixedText() ) ) )
-               {
+                       array( 'delete', $this->getTitle()->getPrefixedText() ) )
+               {
                        # Flag to hide all contents of the archived revisions
                        $suppress = $request->getVal( 'wpSuppress' ) && $user->isAllowed( 'suppressrevision' );
 
index 3c538b0..60ee2a8 100644 (file)
@@ -657,11 +657,14 @@ $wgAutoloadLocalClasses = array(
        'HTMLCacheUpdateJob' => 'includes/job/jobs/HTMLCacheUpdateJob.php',
        'NullJob' => 'includes/job/jobs/NullJob.php',
        'RefreshLinksJob' => 'includes/job/jobs/RefreshLinksJob.php',
-       'RefreshLinksJob2' => 'includes/job/jobs/RefreshLinksJob.php',
+       'RefreshLinksJob2' => 'includes/job/jobs/RefreshLinksJob2.php',
        'UploadFromUrlJob' => 'includes/job/jobs/UploadFromUrlJob.php',
        'AssembleUploadChunksJob' => 'includes/job/jobs/AssembleUploadChunksJob.php',
        'PublishStashedFileJob' => 'includes/job/jobs/PublishStashedFileJob.php',
 
+       # includes/job/utils
+       'BacklinkJobUtils' => 'includes/job/utils/BacklinkJobUtils.php',
+
        # includes/json
        'FormatJson' => 'includes/json/FormatJson.php',
 
index 9aeb99b..8673a3d 100644 (file)
@@ -63,8 +63,8 @@ class Block {
         */
        function __construct( $address = '', $user = 0, $by = 0, $reason = '',
                $timestamp = 0, $auto = 0, $expiry = '', $anonOnly = 0, $createAccount = 0, $enableAutoblock = 0,
-               $hideName = 0, $blockEmail = 0, $allowUsertalk = 0, $byText = '' )
-       {
+               $hideName = 0, $blockEmail = 0, $allowUsertalk = 0, $byText = ''
+       {
                if ( $timestamp === 0 ) {
                        $timestamp = wfTimestampNow();
                }
index b0252c7..ac2187c 100644 (file)
@@ -319,9 +319,7 @@ class IcuCollation extends Collation {
 
                // Check for CJK
                $firstChar = mb_substr( $string, 0, 1, 'UTF-8' );
-               if ( ord( $firstChar ) > 0x7f
-                       && self::isCjk( utf8ToCodepoint( $firstChar ) ) )
-               {
+               if ( ord( $firstChar ) > 0x7f && self::isCjk( utf8ToCodepoint( $firstChar ) ) ) {
                        return $firstChar;
                }
 
index ecf4667..e0a11a2 100644 (file)
@@ -131,8 +131,14 @@ class Cookie {
                        }
 
                        if ( substr( $domain, 0, 1 ) == '.'
-                               && substr_compare( $originDomain, $domain, -strlen( $domain ),
-                                                                  strlen( $domain ), true ) != 0 ) {
+                               && substr_compare(
+                                       $originDomain,
+                                       $domain,
+                                       -strlen( $domain ),
+                                       strlen( $domain ),
+                                       true
+                               ) != 0
+                       ) {
                                return false;
                        }
                }
@@ -167,8 +173,15 @@ class Cookie {
                if ( $domain == $this->domain
                        || ( strlen( $domain ) > strlen( $this->domain )
                                && substr( $this->domain, 0, 1 ) == '.'
-                               && substr_compare( $domain, $this->domain, -strlen( $this->domain ),
-                                                                       strlen( $this->domain ), true ) == 0 ) ) {
+                               && substr_compare(
+                                       $domain,
+                                       $this->domain,
+                                       -strlen( $this->domain ),
+                                       strlen( $this->domain ),
+                                       true
+                               ) == 0
+                       )
+               ) {
                        return true;
                }
 
index fc6fc65..3102384 100644 (file)
@@ -3811,13 +3811,16 @@ $wgNoFollowNsExceptions = array();
  * (or any subdomains) will not be set to rel="nofollow" regardless of the
  * value of $wgNoFollowLinks.  For instance:
  *
- * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org' );
+ * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org',
+ * 'mediawiki.org' );
  *
  * This would add rel="nofollow" to links to de.wikipedia.org, but not
  * en.wikipedia.org, wiktionary.org, en.wiktionary.org, us.en.wikipedia.org,
  * etc.
+ *
+ * Defaults to mediawiki.org for the links included in the software by default.
  */
-$wgNoFollowDomainExceptions = array();
+$wgNoFollowDomainExceptions = array( 'mediawiki.org' );
 
 /**
  * Allow DISPLAYTITLE to change title display
@@ -6054,7 +6057,7 @@ $wgHooks = array();
  */
 $wgJobClasses = array(
        'refreshLinks' => 'RefreshLinksJob',
-       'refreshLinks2' => 'RefreshLinksJob2',
+       'refreshLinks2' => 'RefreshLinksJob2', // b/c
        'htmlCacheUpdate' => 'HTMLCacheUpdateJob',
        'sendMail' => 'EmaillingJob',
        'enotifNotify' => 'EnotifNotifyJob',
@@ -6539,6 +6542,7 @@ $wgDebugAPI = false;
  * @todo Describe each of the variables, group them and add examples
  */
 $wgAPIModules = array();
+$wgAPIFormatModules = array();
 $wgAPIMetaModules = array();
 $wgAPIPropModules = array();
 $wgAPIListModules = array();
index ab5856a..c0e7ed2 100644 (file)
@@ -457,9 +457,9 @@ class EditPage {
                # Ignore some permissions errors when a user is just previewing/viewing diffs
                $remove = array();
                foreach ( $permErrors as $error ) {
-                       if ( ( $this->preview || $this->diff ) &&
-                               ( $error[0] == 'blockedtext' || $error[0] == 'autoblockedtext' ) )
-                       {
+                       if ( ( $this->preview || $this->diff )
+                               && ( $error[0] == 'blockedtext' || $error[0] == 'autoblockedtext' )
+                       {
                                $remove[] = $error;
                        }
                }
@@ -567,10 +567,10 @@ class EditPage {
                } elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) {
                        // Standard preference behavior
                        return true;
-               } elseif ( !$this->mTitle->exists() &&
-                       isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] ) &&
-                       $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
-               {
+               } elseif ( !$this->mTitle->exists()
+                       && isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
+                       && $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()]
+               {
                        // Categories are special
                        return true;
                } else {
@@ -728,9 +728,9 @@ class EditPage {
                        $this->watchthis = $request->getCheck( 'wpWatchthis' );
 
                        # Don't force edit summaries when a user is editing their own user or talk page
-                       if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) &&
-                               $this->mTitle->getText() == $wgUser->getName() )
-                       {
+                       if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK )
+                               && $this->mTitle->getText() == $wgUser->getName()
+                       {
                                $this->allowBlankSummary = true;
                        } else {
                                $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ) || !$wgUser->getOption( 'forceeditsummary' );
@@ -1792,9 +1792,9 @@ class EditPage {
                        // Show the edit conflict page for certain recognized errors from doEdit(),
                        // but don't show it for errors from extension hooks
                        $errors = $doEditStatus->getErrorsArray();
-                       if ( in_array( $errors[0][0], array( 'edit-gone-missing', 'edit-conflict',
-                               'edit-already-exists' ) ) )
-                       {
+                       if ( in_array( $errors[0][0],
+                                       array( 'edit-gone-missing', 'edit-conflict', 'edit-already-exists' ) )
+                       {
                                $this->isConflict = true;
                                // Destroys data doEdit() put in $status->value but who cares
                                $doEditStatus->value = self::AS_END;
index 008be15..4548345 100644 (file)
@@ -619,9 +619,9 @@ class MWExceptionHandler {
 
                                if ( $wgShowExceptionDetails ) {
                                        $message .= 'Original exception: ' . self::getLogMessage( $e ) .
-                                                "\nBacktrace:\n" . self::getRedactedTraceAsString( $e ) .
-                                                "\n\nException caught inside exception handler: " . self::getLogMessage( $e2 ) .
-                                                "\nBacktrace:\n" . self::getRedactedTraceAsString( $e2 );
+                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e ) .
+                                               "\n\nException caught inside exception handler: " . self::getLogMessage( $e2 ) .
+                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e2 );
                                } else {
                                        $message .= "Exception caught inside exception handler.\n\n" .
                                                "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " .
index 3d34763..b4a507d 100644 (file)
@@ -503,7 +503,8 @@ class XmlDumpWriter {
                        'xmlns'              => "http://www.mediawiki.org/xml/export-$ver/",
                        'xmlns:xsi'          => "http://www.w3.org/2001/XMLSchema-instance",
                        'xsi:schemaLocation' => "http://www.mediawiki.org/xml/export-$ver/ " .
-                                               "http://www.mediawiki.org/xml/export-$ver.xsd", #TODO: how do we get a new version up there?
+                               #TODO: how do we get a new version up there?
+                               "http://www.mediawiki.org/xml/export-$ver.xsd",
                        'version'            => $ver,
                        'xml:lang'           => $wgLanguageCode ),
                        null ) .
index f49f9be..e0bd5cd 100644 (file)
@@ -143,8 +143,7 @@ class GitInfo {
                } else {
                        return (int)$commitDate;
                }
-
-        }
+       }
 
        /**
         * Return the name of the current branch, or HEAD if not found
index 1f23537..819b076 100644 (file)
@@ -965,8 +965,8 @@ function wfIsDebugRawPage() {
                || (
                        isset( $_SERVER['SCRIPT_NAME'] )
                        && substr( $_SERVER['SCRIPT_NAME'], -8 ) == 'load.php'
-               ) )
-       {
+               )
+       {
                $cache = true;
        } else {
                $cache = false;
@@ -1463,9 +1463,9 @@ function wfMsgForContent( $key ) {
        $args = func_get_args();
        array_shift( $args );
        $forcontent = true;
-       if ( is_array( $wgForceUIMsgAsContentMsg ) &&
-               in_array( $key, $wgForceUIMsgAsContentMsg ) )
-       {
+       if ( is_array( $wgForceUIMsgAsContentMsg )
+               && in_array( $key, $wgForceUIMsgAsContentMsg )
+       {
                $forcontent = false;
        }
        return wfMsgReal( $key, $args, true, $forcontent );
@@ -1486,9 +1486,9 @@ function wfMsgForContentNoTrans( $key ) {
        $args = func_get_args();
        array_shift( $args );
        $forcontent = true;
-       if ( is_array( $wgForceUIMsgAsContentMsg ) &&
-               in_array( $key, $wgForceUIMsgAsContentMsg ) )
-       {
+       if ( is_array( $wgForceUIMsgAsContentMsg )
+               && in_array( $key, $wgForceUIMsgAsContentMsg )
+       {
                $forcontent = false;
        }
        return wfMsgReal( $key, $args, true, $forcontent, false );
@@ -1993,11 +1993,11 @@ function wfClientAcceptsGzip( $force = false ) {
                        # @todo FIXME: We may want to blacklist some broken browsers
                        $m = array();
                        if ( preg_match(
-                               '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
-                               $_SERVER['HTTP_ACCEPT_ENCODING'],
-                               $m )
-                       )
-                       {
+                                       '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
+                                       $_SERVER['HTTP_ACCEPT_ENCODING'],
+                                       $m
+                               )
+                       {
                                if ( isset( $m[2] ) && ( $m[1] == 'q' ) && ( $m[2] == 0 ) ) {
                                        $result = false;
                                        return $result;
index 1680fd6..385663a 100644 (file)
@@ -655,8 +655,7 @@ class HTMLForm extends ContextSource {
                        . $this->getBody()
                        . $this->getHiddenFields()
                        . $this->getButtons()
-                       . $this->mFooter
-               ;
+                       . $this->mFooter;
 
                $html = $this->wrapForm( $html );
 
index 6977a69..0eb6474 100644 (file)
@@ -449,8 +449,8 @@ class Html {
                        // numbers to be entered in 'type="number"' fields, allow
                        // the special case 'step="any"'.
 
-                       if ( in_array( $key, array( 'max', 'min', 'pattern', 'required' ) ) ||
-                                $key === 'step' && $value !== 'any' ) {
+                       if ( in_array( $key, array( 'max', 'min', 'pattern', 'required' ) )
+                               || $key === 'step' && $value !== 'any' ) {
                                continue;
                        }
 
index 248a76f..c06fbbc 100644 (file)
@@ -306,14 +306,10 @@ class HtmlFormatter {
                } elseif ( strpos( $selector, '#' ) === 0 ) {
                        $type = 'ID';
                        $rawName = substr( $selector, 1 );
-               } elseif ( strpos( $selector, '.' ) !== 0 &&
-                       strpos( $selector, '.' ) !== false )
-               {
+               } elseif ( strpos( $selector, '.' ) !== 0 && strpos( $selector, '.' ) !== false ) {
                        $type = 'TAG_CLASS';
                        $rawName = $selector;
-               } elseif ( strpos( $selector, '[' ) === false
-                       && strpos( $selector, ']' ) === false )
-               {
+               } elseif ( strpos( $selector, '[' ) === false && strpos( $selector, ']' ) === false ) {
                        $type = 'TAG';
                        $rawName = $selector;
                } else {
index 78c2ac7..da08aa2 100644 (file)
@@ -842,8 +842,8 @@ class PhpHttpRequest extends MWHttpRequest {
                        $this->postData = wfArrayToCgi( $this->postData );
                }
 
-               if ( $this->parsedUrl['scheme'] != 'http' &&
-                        $this->parsedUrl['scheme'] != 'https' ) {
+               if ( $this->parsedUrl['scheme'] != 'http'
+                       && $this->parsedUrl['scheme'] != 'https' ) {
                        $this->status->fatal( 'http-invalid-scheme', $this->parsedUrl['scheme'] );
                }
 
index 4ea1712..b2a53cd 100644 (file)
@@ -377,8 +377,8 @@ class ImagePage extends Article {
                                                // since that is added to the message separately, so
                                                // it can be denoted as the current size being shown.
                                                if ( $size[0] <= $width_orig && $size[1] <= $height_orig
-                                                       && $size[0] != $width && $size[1] != $height )
-                                               {
+                                                       && $size[0] != $width && $size[1] != $height
+                                               {
                                                        $sizeLink = $this->makeSizeLink( $params, $size[0], $size[1] );
                                                        if ( $sizeLink ) {
                                                                $otherSizes[] = $sizeLink;
@@ -1203,8 +1203,8 @@ class ImageHistoryList extends ContextSource {
                $lang = $this->getLanguage();
                $user = $this->getUser();
                if ( $file->allowInlineDisplay() && $file->userCan( File::DELETED_FILE, $user )
-                       && !$file->isDeleted( File::DELETED_FILE ) )
-               {
+                       && !$file->isDeleted( File::DELETED_FILE )
+               {
                        $params = array(
                                'width' => '120',
                                'height' => '120',
index d552c69..48d5cd8 100644 (file)
@@ -84,16 +84,28 @@ class LinkFilter {
         *
         * Asterisks in any other location are considered invalid.
         *
-        * @param string $filterEntry domainparts
-        * @param $prot        String: protocol
+        * This function does the same as wfMakeUrlIndexes(), except it also takes care
+        * of adding wildcards
+        *
+        * @param String $filterEntry domainparts
+        * @param String $protocol protocol (default http://)
         * @return Array to be passed to DatabaseBase::buildLike() or false on error
         */
-       public static function makeLikeArray( $filterEntry, $prot = 'http://' ) {
+       public static function makeLikeArray( $filterEntry, $protocol = 'http://' ) {
                $db = wfGetDB( DB_MASTER );
-               if ( substr( $filterEntry, 0, 2 ) == '*.' ) {
+
+               $target = $protocol . $filterEntry;
+               $bits = wfParseUrl( $target );
+
+               if ( $bits == false ) {
+                       // Unknown protocol?
+                       return false;
+               }
+
+               if ( substr( $bits['host'], 0, 2 ) == '*.' ) {
                        $subdomains = true;
-                       $filterEntry = substr( $filterEntry, 2 );
-                       if ( $filterEntry == '' ) {
+                       $bits['host'] = substr( $bits['host'], 2 );
+                       if ( $bits['host'] == '' ) {
                                // We don't want to make a clause that will match everything,
                                // that could be dangerous
                                return false;
@@ -101,52 +113,63 @@ class LinkFilter {
                } else {
                        $subdomains = false;
                }
-               // No stray asterisks, that could cause confusion
-               // It's not simple or efficient to handle it properly so we don't
-               // handle it at all.
-               if ( strpos( $filterEntry, '*' ) !== false ) {
-                       return false;
-               }
-               $slash = strpos( $filterEntry, '/' );
-               if ( $slash !== false ) {
-                       $path = substr( $filterEntry, $slash );
-                       $host = substr( $filterEntry, 0, $slash );
-               } else {
-                       $path = '/';
-                       $host = $filterEntry;
-               }
+
                // Reverse the labels in the hostname, convert to lower case
                // For emails reverse domainpart only
-               if ( $prot == 'mailto:' && strpos( $host, '@' ) ) {
+               if ( $bits['scheme'] === 'mailto' && strpos( $bits['host'], '@' ) ) {
                        // complete email address
-                       $mailparts = explode( '@', $host );
+                       $mailparts = explode( '@', $bits['host'] );
                        $domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) );
-                       $host = $domainpart . '@' . $mailparts[0];
-                       $like = array( "$prot$host", $db->anyString() );
-               } elseif ( $prot == 'mailto:' ) {
-                       // domainpart of email address only. do not add '.'
-                       $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );
-                       $like = array( "$prot$host", $db->anyString() );
+                       $bits['host'] = $domainpart . '@' . $mailparts[0];
+               } elseif ( $bits['scheme'] === 'mailto' ) {
+                       // domainpart of email address only, do not add '.'
+                       $bits['host'] = strtolower( implode( '.', array_reverse( explode( '.', $bits['host'] ) ) ) );
                } else {
-                       $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );
-                       if ( substr( $host, -1, 1 ) !== '.' ) {
-                               $host .= '.';
+                       $bits['host'] = strtolower( implode( '.', array_reverse( explode( '.', $bits['host'] ) ) ) );
+                       if ( substr( $bits['host'], -1, 1 ) !== '.' ) {
+                               $bits['host'] .= '.';
                        }
-                       $like = array( "$prot$host" );
+               }
 
-                       if ( $subdomains ) {
-                               $like[] = $db->anyString();
-                       }
-                       if ( !$subdomains || $path !== '/' ) {
-                               $like[] = $path;
-                               $like[] = $db->anyString();
+               $like[] = $bits['scheme'] . $bits['delimiter'] . $bits['host'];
+
+               if ( $subdomains ) {
+                       $like[] = $db->anyString();
+               }
+
+               if ( isset( $bits['port'] ) ) {
+                       $like[] = ':' . $bits['port'];
+               }
+               if ( isset( $bits['path'] ) ) {
+                       $like[] = $bits['path'];
+               } elseif ( !$subdomains ) {
+                       $like[] = '/';
+               }
+               if ( isset( $bits['query'] ) ) {
+                       $like[] = '?' . $bits['query'];
+               }
+               if ( isset( $bits['fragment'] ) ) {
+                       $like[] = '#' . $bits['fragment'];
+               }
+
+               // Check for stray asterisks: asterisk only allowed at the start of the domain
+               foreach ( $like as $likepart ) {
+                       if ( !( $likepart instanceof LikeMatch ) && strpos( $likepart, '*' ) !== false ) {
+                               return false;
                        }
                }
+
+               if ( !( $like[count( $like ) - 1] instanceof LikeMatch ) ) {
+                       // Add wildcard at the end if there isn't one already
+                       $like[] = $db->anyString();
+               }
+
                return $like;
        }
 
        /**
-        * Filters an array returned by makeLikeArray(), removing everything past first pattern placeholder.
+        * Filters an array returned by makeLikeArray(), removing everything past first
+        * pattern placeholder.
         *
         * @param array $arr array to filter
         * @return array filtered array
index 895f0f2..7c6bbc6 100644 (file)
@@ -264,8 +264,8 @@ class Linker {
         */
        public static function linkKnown(
                $target, $html = null, $customAttribs = array(),
-               $query = array(), $options = array( 'known', 'noclasses' ) )
-       {
+               $query = array(), $options = array( 'known', 'noclasses' )
+       {
                return self::link( $target, $html, $customAttribs, $query, $options );
        }
 
@@ -562,8 +562,8 @@ class Linker {
         * @return String: HTML for an image, with links, wrappers, etc.
         */
        public static function makeImageLink( /*Parser*/ $parser, Title $title, $file, $frameParams = array(),
-               $handlerParams = array(), $time = false, $query = "", $widthOption = null )
-       {
+               $handlerParams = array(), $time = false, $query = "", $widthOption = null
+       {
                $res = null;
                $dummy = new DummyLinker;
                if ( !wfRunHooks( 'ImageBeforeProduceHTML', array( &$dummy, &$title,
@@ -681,8 +681,7 @@ class Linker {
                                'valign' => isset( $fp['valign'] ) ? $fp['valign'] : false,
                                'img-class' => $fp['class'] );
                        if ( isset( $fp['border'] ) ) {
-                               // TODO: BUG? Both values are identical
-                               $params['img-class'] .= ( $params['img-class'] !== '' ) ? ' thumbborder' : 'thumbborder';
+                               $params['img-class'] .= ( $params['img-class'] !== '' ? ' ' : '' ) . 'thumbborder';
                        }
                        $params = self::getImageLinkMTOParams( $fp, $query, $parser ) + $params;
 
@@ -750,8 +749,8 @@ class Linker {
         * @return mixed
         */
        public static function makeThumbLinkObj( Title $title, $file, $label = '', $alt,
-               $align = 'right', $params = array(), $framed = false, $manualthumb = "" )
-       {
+               $align = 'right', $params = array(), $framed = false, $manualthumb = ""
+       {
                $frameParams = array(
                        'alt' => $alt,
                        'caption' => $label,
@@ -776,8 +775,8 @@ class Linker {
         * @return mixed
         */
        public static function makeThumbLink2( Title $title, $file, $frameParams = array(),
-               $handlerParams = array(), $time = false, $query = "" )
-       {
+               $handlerParams = array(), $time = false, $query = ""
+       {
                global $wgStylePath, $wgContLang;
                $exists = $file && $file->exists();
 
@@ -850,10 +849,10 @@ class Linker {
                if ( $page ) {
                        $url = wfAppendQuery( $url, array( 'page' => $page ) );
                }
-               if ( $manualthumb &&
-                    !isset( $fp['link-title'] ) &&
-                    !isset( $fp['link-url'] ) &&
-                    !isset( $fp['no-link'] ) ) {
+               if ( $manualthumb
+                       && !isset( $fp['link-title'] )
+                       && !isset( $fp['link-url'] )
+                       && !isset( $fp['no-link'] ) ) {
                        $fp['link-url'] = $url;
                }
 
@@ -871,7 +870,7 @@ class Linker {
                        $params = array(
                                'alt' => $fp['alt'],
                                'title' => $fp['title'],
-                               'img-class' => ( isset( $fp['class'] ) && $fp['class'] !== '' ) ? $fp['class'] . ' thumbimage' : 'thumbimage'
+                               'img-class' => ( isset( $fp['class'] ) && $fp['class'] !== '' ? $fp['class'] . ' ' : '' ) . 'thumbimage'
                        );
                        $params = self::getImageLinkMTOParams( $fp, $query ) + $params;
                        $s .= $thumb->toHtml( $params );
@@ -1471,8 +1470,8 @@ class Linker {
                        $target = Title::newFromText( $linkTarget );
                        if ( $target ) {
                                if ( $target->getText() == '' && $target->getInterwiki() === ''
-                                       && !self::$commentLocal && self::$commentContextTitle )
-                               {
+                                       && !self::$commentLocal && self::$commentContextTitle
+                               {
                                        $newTarget = clone ( self::$commentContextTitle );
                                        $newTarget->setFragment( '#' . $target->getFragment() );
                                        $target = $newTarget;
index 2c4c64e..a0d7e30 100644 (file)
@@ -447,8 +447,8 @@ class OutputPage extends ContextSource {
                        if ( $module instanceof ResourceLoaderModule
                                && $module->getOrigin() <= $this->getAllowedModules( $type )
                                && ( is_null( $position ) || $module->getPosition() == $position )
-                               && ( !$this->mTarget || in_array( $this->mTarget, $module->getTargets() ) ) )
-                       {
+                               && ( !$this->mTarget || in_array( $this->mTarget, $module->getTargets() ) )
+                       {
                                $filteredModules[] = $val;
                        }
                }
@@ -891,7 +891,10 @@ class OutputPage extends ContextSource {
                $this->mPagetitle = $nameWithTags;
 
                # change "<i>foo&amp;bar</i>" to "foo&bar"
-               $this->setHTMLTitle( $this->msg( 'pagetitle' )->rawParams( Sanitizer::stripAllTags( $nameWithTags ) ) );
+               $this->setHTMLTitle(
+                       $this->msg( 'pagetitle' )->rawParams( Sanitizer::stripAllTags( $nameWithTags ) )
+                               ->inContentLanguage()
+               );
        }
 
        /**
@@ -2488,7 +2491,7 @@ $templates
                $ret = Html::htmlHeader( array( 'lang' => $this->getLanguage()->getHtmlCode(), 'dir' => $userdir, 'class' => 'client-nojs' ) );
 
                if ( $this->getHTMLTitle() == '' ) {
-                       $this->setHTMLTitle( $this->msg( 'pagetitle', $this->getPageTitle() ) );
+                       $this->setHTMLTitle( $this->msg( 'pagetitle', $this->getPageTitle() )->inContentLanguage() );
                }
 
                $openHead = Html::openElement( 'head' );
index 4a14c7e..28d2839 100644 (file)
@@ -267,6 +267,15 @@ abstract class IndexPager extends ContextSource implements Pager {
                }
        }
 
+       /**
+        * Get the current limit
+        *
+        * @return int
+        */
+       function getLimit() {
+               return $this->mLimit;
+       }
+
        /**
         * Set whether a row matching exactly the offset should be also included
         * in the result or not. By default this is not the case, but when the
index c9caf4f..d498770 100644 (file)
@@ -682,8 +682,8 @@ class Preferences {
                        $minDiff = $tz[1];
                        $tzSetting = sprintf( '%+03d:%02d', floor( $minDiff / 60 ), abs( $minDiff ) % 60 );
                } elseif ( count( $tz ) > 1 && $tz[0] == 'ZoneInfo' &&
-                       !in_array( $tzOffset, HTMLFormField::flattenOptions( $tzOptions ) ) )
-               {
+                       !in_array( $tzOffset, HTMLFormField::flattenOptions( $tzOptions ) )
+               {
                        # Timezone offset can vary with DST
                        $userTZ = timezone_open( $tz[2] );
                        if ( $userTZ !== false ) {
index 4446173..6ab3df4 100644 (file)
@@ -1311,8 +1311,8 @@ class Revision implements IDBAccessObject {
 
                global $wgLegacyEncoding;
                if ( $text !== false && $wgLegacyEncoding
-                       && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
-               {
+                       && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags )
+               {
                        # Old revisions kept around in a legacy encoding?
                        # Upconvert on demand.
                        # ("utf8" checked for compatibility with some broken
@@ -1453,14 +1453,14 @@ class Revision implements IDBAccessObject {
                                $t = $title->getPrefixedDBkey();
 
                                throw new MWException( "Can't save non-default content model with \$wgContentHandlerUseDB disabled: "
-                                                                               . "model is $model , default for $t is $defaultModel" );
+                                       . "model is $model, default for $t is $defaultModel" );
                        }
 
                        if ( $this->getContentFormat() != $defaultFormat ) {
                                $t = $title->getPrefixedDBkey();
 
                                throw new MWException( "Can't use non-default content format with \$wgContentHandlerUseDB disabled: "
-                                                                               . "format is $format, default for $t is $defaultFormat" );
+                                       . "format is $format, default for $t is $defaultFormat" );
                        }
                }
 
index 81dada2..f75ee29 100644 (file)
@@ -102,10 +102,10 @@ if ( isset( $wgFileStore['deleted']['directory'] ) ) {
        $wgDeletedDirectory = $wgFileStore['deleted']['directory'];
 }
 
-if ( isset( $wgFooterIcons['copyright'] ) &&
-       isset( $wgFooterIcons['copyright']['copyright'] ) &&
-       $wgFooterIcons['copyright']['copyright'] === array() )
-{
+if ( isset( $wgFooterIcons['copyright'] )
+       && isset( $wgFooterIcons['copyright']['copyright'] )
+       && $wgFooterIcons['copyright']['copyright'] === array()
+{
        if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) {
                $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
        } elseif ( $wgRightsIcon || $wgRightsText ) {
@@ -119,10 +119,10 @@ if ( isset( $wgFooterIcons['copyright'] ) &&
        }
 }
 
-if ( isset( $wgFooterIcons['poweredby'] ) &&
-       isset( $wgFooterIcons['poweredby']['mediawiki'] ) &&
-       $wgFooterIcons['poweredby']['mediawiki']['src'] === null )
-{
+if ( isset( $wgFooterIcons['poweredby'] )
+       && isset( $wgFooterIcons['poweredby']['mediawiki'] )
+       && $wgFooterIcons['poweredby']['mediawiki']['src'] === null
+{
        $wgFooterIcons['poweredby']['mediawiki']['src'] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png";
 }
 
index 414312a..dde3f37 100644 (file)
@@ -130,51 +130,63 @@ class SkinTemplate extends Skin {
         */
        public function getLanguages() {
                global $wgHideInterlanguageLinks;
-               $out = $this->getOutput();
+               if ( $wgHideInterlanguageLinks ) {
+                       return array();
+               }
+
                $userLang = $this->getLanguage();
+               $languageLinks = array();
 
-               # Language links
-               $language_urls = array();
-
-               if ( !$wgHideInterlanguageLinks ) {
-                       foreach ( $out->getLanguageLinks() as $languageLinkText ) {
-                               $languageLinkParts = explode( ':', $languageLinkText, 2 );
-                               $class = 'interlanguage-link interwiki-' . $languageLinkParts[0];
-                               unset( $languageLinkParts );
-                               $languageLinkTitle = Title::newFromText( $languageLinkText );
-                               if ( $languageLinkTitle ) {
-                                       $ilInterwikiCode = $languageLinkTitle->getInterwiki();
-                                       $ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
-
-                                       if ( strval( $ilLangName ) === '' ) {
-                                               $ilLangName = $languageLinkText;
-                                       } else {
-                                               $ilLangName = $this->formatLanguageName( $ilLangName );
-                                       }
+               foreach ( $this->getOutput()->getLanguageLinks() as $languageLinkText ) {
+                       $languageLinkParts = explode( ':', $languageLinkText, 2 );
+                       $class = 'interlanguage-link interwiki-' . $languageLinkParts[0];
+                       unset( $languageLinkParts );
 
-                                       // CLDR extension or similar is required to localize the language name;
-                                       // otherwise we'll end up with the autonym again.
-                                       $ilLangLocalName = Language::fetchLanguageName( $ilInterwikiCode, $userLang->getCode() );
+                       $languageLinkTitle = Title::newFromText( $languageLinkText );
+                       if ( $languageLinkTitle ) {
+                               $ilInterwikiCode = $languageLinkTitle->getInterwiki();
+                               $ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
 
-                                       if ( $languageLinkTitle->getText() === '' ) {
-                                               $ilTitle = wfMessage( 'interlanguage-link-title-langonly', $ilLangLocalName )->text();
-                                       } else {
-                                               $ilTitle = wfMessage( 'interlanguage-link-title', $languageLinkTitle->getText(),
-                                                       $ilLangLocalName )->text();
-                                       }
+                               if ( strval( $ilLangName ) === '' ) {
+                                       $ilLangName = $languageLinkText;
+                               } else {
+                                       $ilLangName = $this->formatLanguageName( $ilLangName );
+                               }
 
-                                       $language_urls[] = array(
-                                               'href' => $languageLinkTitle->getFullURL(),
-                                               'text' => $ilLangName,
-                                               'title' => $ilTitle,
-                                               'class' => $class,
-                                               'lang' => wfBCP47( $ilInterwikiCode ),
-                                               'hreflang' => wfBCP47( $ilInterwikiCode ),
-                                       );
+                               // CLDR extension or similar is required to localize the language name;
+                               // otherwise we'll end up with the autonym again.
+                               $ilLangLocalName = Language::fetchLanguageName(
+                                       $ilInterwikiCode,
+                                       $userLang->getCode()
+                               );
+
+                               $languageLinkTitleText = $languageLinkTitle->getText();
+                               if ( $languageLinkTitleText === '' ) {
+                                       $ilTitle = wfMessage(
+                                               'interlanguage-link-title-langonly',
+                                               $ilLangLocalName
+                                       )->text();
+                               } else {
+                                       $ilTitle = wfMessage(
+                                               'interlanguage-link-title',
+                                               $languageLinkTitleText,
+                                               $ilLangLocalName
+                                       )->text();
                                }
+
+                               $ilInterwikiCodeBCP47 = wfBCP47( $ilInterwikiCode );
+                               $languageLinks[] = array(
+                                       'href' => $languageLinkTitle->getFullURL(),
+                                       'text' => $ilLangName,
+                                       'title' => $ilTitle,
+                                       'class' => $class,
+                                       'lang' => $ilInterwikiCodeBCP47,
+                                       'hreflang' => $ilInterwikiCodeBCP47,
+                               );
                        }
                }
-               return $language_urls;
+
+               return $languageLinks;
        }
 
        protected function setupTemplateForOutput() {
index 1ad643a..ef82705 100644 (file)
@@ -185,8 +185,8 @@ class StreamFile {
                                return 'unknown/unknown';
                        }
                        if ( $wgCheckFileExtensions && $wgStrictFileExtensions
-                               && !UploadBase::checkFileExtensionList( $extList, $wgFileExtensions ) )
-                       {
+                               && !UploadBase::checkFileExtensionList( $extList, $wgFileExtensions )
+                       {
                                return 'unknown/unknown';
                        }
                        if ( $wgVerifyMimeType && in_array( strtolower( $type ), $wgMimeTypeBlacklist ) ) {
index c726e9d..2961500 100644 (file)
@@ -1548,9 +1548,9 @@ class Title {
                                $url = false;
                                $matches = array();
 
-                               if ( !empty( $wgActionPaths ) &&
-                                       preg_match( '/^(.*&|)action=([^&]*)(&(.*)|)$/', $query, $matches ) )
-                               {
+                               if ( !empty( $wgActionPaths )
+                                       && preg_match( '/^(.*&|)action=([^&]*)(&(.*)|)$/', $query, $matches )
+                               {
                                        $action = urldecode( $matches[2] );
                                        if ( isset( $wgActionPaths[$action] ) ) {
                                                $query = $matches[1];
@@ -1564,12 +1564,12 @@ class Title {
                                        }
                                }
 
-                               if ( $url === false &&
-                                       $wgVariantArticlePath &&
-                                       $wgContLang->getCode() === $this->getPageLanguage()->getCode() &&
-                                       $this->getPageLanguage()->hasVariants() &&
-                                       preg_match( '/^variant=([^&]*)$/', $query, $matches ) )
-                               {
+                               if ( $url === false
+                                       && $wgVariantArticlePath
+                                       && $wgContLang->getCode() === $this->getPageLanguage()->getCode()
+                                       && $this->getPageLanguage()->hasVariants()
+                                       && preg_match( '/^variant=([^&]*)$/', $query, $matches )
+                               {
                                        $variant = urldecode( $matches[1] );
                                        if ( $this->getPageLanguage()->hasVariant( $variant ) ) {
                                                // Only do the variant replacement if the given variant is a valid
@@ -2125,9 +2125,9 @@ class Title {
                                if ( $title_protection['pt_create_perm'] == 'autoconfirmed' ) {
                                        $title_protection['pt_create_perm'] = 'editsemiprotected'; // B/C
                                }
-                               if ( $title_protection['pt_create_perm'] == '' ||
-                                       !$user->isAllowed( $title_protection['pt_create_perm'] ) )
-                               {
+                               if ( $title_protection['pt_create_perm'] == ''
+                                       || !$user->isAllowed( $title_protection['pt_create_perm'] )
+                               {
                                        $errors[] = array( 'titleprotected', User::whoIs( $title_protection['pt_user'] ), $title_protection['pt_reason'] );
                                }
                        }
@@ -2148,8 +2148,8 @@ class Title {
                        }
                } elseif ( $action == 'delete' ) {
                        if ( $doExpensiveQueries && $wgDeleteRevisionsLimit
-                               && !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion() )
-                       {
+                               && !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion()
+                       {
                                $errors[] = array( 'delete-toobig', $wgLang->formatNum( $wgDeleteRevisionsLimit ) );
                        }
                }
@@ -3216,8 +3216,8 @@ class Title {
 
                                        # Redundant interwiki prefix to the local wiki
                                        if ( $wgLocalInterwiki !== false
-                                               && 0 == strcasecmp( $this->mInterwiki, $wgLocalInterwiki ) )
-                                       {
+                                               && 0 == strcasecmp( $this->mInterwiki, $wgLocalInterwiki )
+                                       {
                                                if ( $dbkey == '' ) {
                                                        # Can't have an empty self-link
                                                        return false;
@@ -3995,9 +3995,9 @@ class Title {
                        // We don't know whether this function was called before
                        // or after moving the root page, so check both
                        // $this and $nt
-                       if ( $oldSubpage->getArticleID() == $this->getArticleID() ||
-                                       $oldSubpage->getArticleID() == $nt->getArticleID() )
-                       {
+                       if ( $oldSubpage->getArticleID() == $this->getArticleID()
+                               || $oldSubpage->getArticleID() == $nt->getArticleID()
+                       {
                                // When moving a page to a subpage of itself,
                                // don't move it twice
                                continue;
index a01444a..a2e7023 100644 (file)
@@ -1307,8 +1307,8 @@ class User {
 
                // Proxy blocking
                if ( !$block instanceof Block && $ip !== null && !$this->isAllowed( 'proxyunbannable' )
-                       && !in_array( $ip, $wgProxyWhitelist ) )
-               {
+                       && !in_array( $ip, $wgProxyWhitelist )
+               {
                        // Local list
                        if ( self::isLocallyBlockedProxy( $ip ) ) {
                                $block = new Block;
@@ -1632,8 +1632,8 @@ class User {
                $blocked = $this->isBlocked( $bFromSlave );
                $allowUsertalk = ( $wgBlockAllowsUTEdit ? $this->mAllowUsertalk : false );
                // If a user's name is suppressed, they cannot make edits anywhere
-               if ( !$this->mHideName && $allowUsertalk && $title->getText() === $this->getName() &&
-                 $title->getNamespace() == NS_USER_TALK ) {
+               if ( !$this->mHideName && $allowUsertalk && $title->getText() === $this->getName()
+                       && $title->getNamespace() == NS_USER_TALK ) {
                        $blocked = false;
                        wfDebug( __METHOD__ . ": self-talk page, ignoring any blocks\n" );
                }
@@ -3078,9 +3078,7 @@ class User {
                // and when it does have to be executed, it can be on a slave
                // If this is the user's newtalk page, we always update the timestamp
                $force = '';
-               if ( $title->getNamespace() == NS_USER_TALK &&
-                       $title->getText() == $this->getName() )
-               {
+               if ( $title->getNamespace() == NS_USER_TALK && $title->getText() == $this->getName() ) {
                        $force = 'force';
                }
 
@@ -3612,9 +3610,9 @@ class User {
                        // Some wikis were converted from ISO 8859-1 to UTF-8, the passwords can't be converted
                        // Check for this with iconv
                        $cp1252Password = iconv( 'UTF-8', 'WINDOWS-1252//TRANSLIT', $password );
-                       if ( $cp1252Password != $password &&
-                               self::comparePasswords( $this->mPassword, $cp1252Password, $this->mId ) )
-                       {
+                       if ( $cp1252Password != $password
+                               && self::comparePasswords( $this->mPassword, $cp1252Password, $this->mId )
+                       {
                                return true;
                        }
                }
index 6157f78..39c3e18 100644 (file)
@@ -630,11 +630,11 @@ class EmailNotification {
                                // Send updates to watchers other than the current editor
                                $userArray = UserArray::newFromIDs( $watchers );
                                foreach ( $userArray as $watchingUser ) {
-                                       if ( $watchingUser->getOption( 'enotifwatchlistpages' ) &&
-                                               ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) ) &&
-                                               $watchingUser->isEmailConfirmed() &&
-                                               $watchingUser->getID() != $userTalkId )
-                                       {
+                                       if ( $watchingUser->getOption( 'enotifwatchlistpages' )
+                                               && ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) )
+                                               && $watchingUser->isEmailConfirmed()
+                                               && $watchingUser->getID() != $userTalkId
+                                       {
                                                $this->compose( $watchingUser );
                                        }
                                }
@@ -672,9 +672,9 @@ class EmailNotification {
                                wfDebug( __METHOD__ . ": user talk page edited, but user does not exist\n" );
                        } elseif ( $targetUser->getId() == $editor->getId() ) {
                                wfDebug( __METHOD__ . ": user edited their own talk page, no notification sent\n" );
-                       } elseif ( $targetUser->getOption( 'enotifusertalkpages' ) &&
-                               ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) ) )
-                       {
+                       } elseif ( $targetUser->getOption( 'enotifusertalkpages' )
+                               && ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) )
+                       {
                                if ( !$targetUser->isEmailConfirmed() ) {
                                        wfDebug( __METHOD__ . ": talk page owner doesn't have validated email\n" );
                                } elseif ( !wfRunHooks( 'AbortTalkPageEmailNotification', array( $targetUser, $title ) ) ) {
@@ -782,8 +782,8 @@ class EmailNotification {
                $adminAddress = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
                if ( $wgEnotifRevealEditorAddress
                        && ( $this->editor->getEmail() != '' )
-                       && $this->editor->getOption( 'enotifrevealaddr' ) )
-               {
+                       && $this->editor->getOption( 'enotifrevealaddr' )
+               {
                        $editorAddress = new MailAddress( $this->editor );
                        if ( $wgEnotifFromEditor ) {
                                $this->from = $editorAddress;
index 46cba52..dfa8cf6 100644 (file)
@@ -113,8 +113,8 @@ class WebRequest {
                                $router->add( "$wgScript/$1" );
 
                                if ( isset( $_SERVER['SCRIPT_NAME'] )
-                                       && preg_match( '/\.php5?/', $_SERVER['SCRIPT_NAME'] ) )
-                               {
+                                       && preg_match( '/\.php5?/', $_SERVER['SCRIPT_NAME'] )
+                               {
                                        # Check for SCRIPT_NAME, we handle index.php explicitly
                                        # But we do have some other .php files such as img_auth.php
                                        # Don't let root article paths clober the parsing for them
index 50bba7b..5ebf5a0 100644 (file)
@@ -95,8 +95,8 @@ class MediaWiki {
                        // Check variant links so that interwiki links don't have to worry
                        // about the possible different language variants
                        if ( count( $wgContLang->getVariants() ) > 1
-                               && !is_null( $ret ) && $ret->getArticleID() == 0 )
-                       {
+                               && !is_null( $ret ) && $ret->getArticleID() == 0
+                       {
                                $wgContLang->findVariantLink( $title, $ret );
                        }
                }
@@ -197,9 +197,9 @@ class MediaWiki {
                wfRunHooks( 'BeforeInitialize', array( &$title, &$unused, &$output, &$user, $request, $this ) );
 
                // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
-               if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' ) ||
-                       $title->isSpecial( 'Badtitle' ) )
-               {
+               if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' )
+                       || $title->isSpecial( 'Badtitle' )
+               {
                        $this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
                        wfProfileOut( __METHOD__ );
                        throw new BadTitleError();
@@ -242,8 +242,8 @@ class MediaWiki {
                        }
                        // Check for a redirect loop
                        if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url )
-                               && $title->isLocal() )
-                       {
+                               && $title->isLocal()
+                       {
                                // 301 so google et al report the target as the actual url.
                                $output->redirect( $url, 301 );
                        } else {
@@ -253,11 +253,11 @@ class MediaWiki {
                        }
                // Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
                } elseif ( $request->getVal( 'action', 'view' ) == 'view' && !$request->wasPosted()
-                       && ( $request->getVal( 'title' ) === null ||
-                               $title->getPrefixedDBkey() != $request->getVal( 'title' ) )
+                       && ( $request->getVal( 'title' ) === null
+                               || $title->getPrefixedDBkey() != $request->getVal( 'title' ) )
                        && !count( $request->getValueNames( array( 'action', 'title' ) ) )
-                       && wfRunHooks( 'TestCanonicalRedirect', array( $request, $title, $output ) ) )
-               {
+                       && wfRunHooks( 'TestCanonicalRedirect', array( $request, $title, $output ) )
+               {
                        if ( $title->isSpecialPage() ) {
                                list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
                                if ( $name ) {
@@ -358,12 +358,12 @@ class MediaWiki {
                $action = $request->getVal( 'action', 'view' );
                $file = ( $title->getNamespace() == NS_FILE ) ? $article->getFile() : null;
                if ( ( $action == 'view' || $action == 'render' ) // ... for actions that show content
-                       && !$request->getVal( 'oldid' ) && // ... and are not old revisions
-                       !$request->getVal( 'diff' ) && // ... and not when showing diff
-                       $request->getVal( 'redirect' ) != 'no' && // ... unless explicitly told not to
+                       && !$request->getVal( 'oldid' ) // ... and are not old revisions
+                       && !$request->getVal( 'diff' ) // ... and not when showing diff
+                       && $request->getVal( 'redirect' ) != 'no' // ... unless explicitly told not to
                        // ... and the article is not a non-redirect image page with associated file
-                       !( is_object( $file ) && $file->exists() && !$file->getRedirected() ) )
-               {
+                       && !( is_object( $file ) && $file->exists() && !$file->getRedirected() )
+               {
                        // Give extensions a change to ignore/handle redirects as needed
                        $ignoreRedirect = $target = false;
 
@@ -420,8 +420,8 @@ class MediaWiki {
                $user = $this->context->getUser();
 
                if ( !wfRunHooks( 'MediaWikiPerformAction',
-                       array( $output, $page, $title, $user, $request, $this ) ) )
-               {
+                               array( $output, $page, $title, $user, $request, $this ) )
+               {
                        wfProfileOut( __METHOD__ );
                        return;
                }
index ac0539d..45441fd 100644 (file)
@@ -500,34 +500,34 @@ class Xml {
                $options = self::option( $other, 'other', $selected === 'other' );
 
                foreach ( explode( "\n", $list ) as $option ) {
-                               $value = trim( $option );
-                               if ( $value == '' ) {
-                                       continue;
-                               } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
-                                       // A new group is starting ...
-                                       $value = trim( substr( $value, 1 ) );
-                                       if ( $optgroup ) {
-                                               $options .= self::closeElement( 'optgroup' );
-                                       }
-                                       $options .= self::openElement( 'optgroup', array( 'label' => $value ) );
-                                       $optgroup = true;
-                               } elseif ( substr( $value, 0, 2 ) == '**' ) {
-                                       // groupmember
-                                       $value = trim( substr( $value, 2 ) );
-                                       $options .= self::option( $value, $value, $selected === $value );
-                               } else {
-                                       // groupless reason list
-                                       if ( $optgroup ) {
-                                               $options .= self::closeElement( 'optgroup' );
-                                       }
-                                       $options .= self::option( $value, $value, $selected === $value );
-                                       $optgroup = false;
+                       $value = trim( $option );
+                       if ( $value == '' ) {
+                               continue;
+                       } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
+                               // A new group is starting ...
+                               $value = trim( substr( $value, 1 ) );
+                               if ( $optgroup ) {
+                                       $options .= self::closeElement( 'optgroup' );
                                }
+                               $options .= self::openElement( 'optgroup', array( 'label' => $value ) );
+                               $optgroup = true;
+                       } elseif ( substr( $value, 0, 2 ) == '**' ) {
+                               // groupmember
+                               $value = trim( substr( $value, 2 ) );
+                               $options .= self::option( $value, $value, $selected === $value );
+                       } else {
+                               // groupless reason list
+                               if ( $optgroup ) {
+                                       $options .= self::closeElement( 'optgroup' );
+                               }
+                               $options .= self::option( $value, $value, $selected === $value );
+                               $optgroup = false;
                        }
+               }
 
-                       if ( $optgroup ) {
-                               $options .= self::closeElement( 'optgroup' );
-                       }
+               if ( $optgroup ) {
+                       $options .= self::closeElement( 'optgroup' );
+               }
 
                $attribs = array();
 
index 27037cb..bf69410 100644 (file)
@@ -41,7 +41,7 @@ class ApiFeedContributions extends ApiBase {
        public function execute() {
                $params = $this->extractRequestParams();
 
-               global $wgFeed, $wgFeedClasses, $wgSitename, $wgLanguageCode;
+               global $wgFeed, $wgFeedClasses, $wgFeedLimit, $wgSitename, $wgLanguageCode;
 
                if ( !$wgFeed ) {
                        $this->dieUsage( 'Syndication feeds are not available', 'feed-unavailable' );
@@ -81,6 +81,10 @@ class ApiFeedContributions extends ApiBase {
                        'showSizeDiff' => $params['showsizediff'],
                ) );
 
+               if ( $pager->getLimit() > $wgFeedLimit ) {
+                       $pager->setLimit( $wgFeedLimit );
+               }
+
                $feedItems = array();
                if ( $pager->getNumRows() > 0 ) {
                        foreach ( $pager->mResult as $row ) {
index a9aebe9..861fa82 100644 (file)
@@ -185,11 +185,12 @@ class ApiMain extends ApiBase {
                        }
                }
 
-               global $wgAPIModules;
+               global $wgAPIModules, $wgAPIFormatModules;
                $this->mModuleMgr = new ApiModuleManager( $this );
                $this->mModuleMgr->addModules( self::$Modules, 'action' );
                $this->mModuleMgr->addModules( $wgAPIModules, 'action' );
                $this->mModuleMgr->addModules( self::$Formats, 'format' );
+               $this->mModuleMgr->addModules( $wgAPIFormatModules, 'format' );
 
                $this->mResult = new ApiResult( $this );
                $this->mEnableWrite = $enableWrite;
index 148c4dd..dffe301 100644 (file)
@@ -35,11 +35,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
 
        protected function getInitialisedRepoGroup() {
                $repoGroup = RepoGroup::singleton();
-
-               if ( !$repoGroup->reposInitialised ) {
-                       $repoGroup->initialiseRepos();
-               }
-
+               $repoGroup->initialiseRepos();
                return $repoGroup;
        }
 
@@ -55,7 +51,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
                        $repos[] = array_intersect_key( $repo->getInfo(), $props );
                } );
 
-               $repos[] = array_intersect_key( $repoGroup->localRepo->getInfo(), $props );
+               $repos[] = array_intersect_key( $repoGroup->getLocalRepo()->getInfo(), $props );
 
                $result = $this->getResult();
                $result->setIndexedTagName( $repos, 'repo' );
@@ -88,7 +84,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
 
                return array_values( array_unique( array_merge(
                        $props,
-                       array_keys( $repoGroup->localRepo->getInfo() )
+                       array_keys( $repoGroup->getLocalRepo()->getInfo() )
                ) ) );
        }
 
index 8eed1a5..686361b 100644 (file)
@@ -274,8 +274,6 @@ class BacklinkCache {
        protected function getConditions( $table ) {
                $prefix = $this->getPrefix( $table );
 
-               // @todo FIXME: imagelinks and categorylinks do not rely on getNamespace,
-               // they could be moved up for nicer case statements
                switch ( $table ) {
                        case 'pagelinks':
                        case 'templatelinks':
@@ -297,14 +295,9 @@ class BacklinkCache {
                                );
                                break;
                        case 'imagelinks':
-                               $conds = array(
-                                       'il_to' => $this->title->getDBkey(),
-                                       "page_id={$prefix}_from"
-                               );
-                               break;
                        case 'categorylinks':
                                $conds = array(
-                                       'cl_to' => $this->title->getDBkey(),
+                                       "{$prefix}_to" => $this->title->getDBkey(),
                                        "page_id={$prefix}_from"
                                );
                                break;
index 7d029bc..ccb94a2 100644 (file)
@@ -1193,18 +1193,26 @@ class LCStoreCDB implements LCStore {
                if ( !isset( $this->readers[$code] ) ) {
                        $fileName = $this->getFileName( $code );
 
-                       if ( !file_exists( $fileName ) ) {
-                               $this->readers[$code] = false;
-                       } else {
-                               $this->readers[$code] = CdbReader::open( $fileName );
+                       $this->readers[$code] = false;
+                       if ( file_exists( $fileName ) ) {
+                               try {
+                                       $this->readers[$code] = CdbReader::open( $fileName );
+                               } catch ( CdbException $e ) {
+                                       wfDebug( __METHOD__ . ": unable to open cdb file for reading" );
+                               }
                        }
                }
 
                if ( !$this->readers[$code] ) {
                        return null;
                } else {
-                       $value = $this->readers[$code]->get( $key );
-
+                       $value = false;
+                       try {
+                               $value = $this->readers[$code]->get( $key );
+                       } catch ( CdbException $e ) {
+                               wfDebug( __METHOD__ . ": CdbException caught, error message was "
+                                       . $e->getMessage() );
+                       }
                        if ( $value === false ) {
                                return null;
                        }
@@ -1226,13 +1234,21 @@ class LCStoreCDB implements LCStore {
                        $this->readers[$code]->close();
                }
 
-               $this->writer = CdbWriter::open( $this->getFileName( $code ) );
+               try {
+                       $this->writer = CdbWriter::open( $this->getFileName( $code ) );
+               } catch ( CdbException $e ) {
+                       throw new MWException( $e->getMessage() );
+               }
                $this->currentLang = $code;
        }
 
        public function finishWrite() {
                // Close the writer
-               $this->writer->close();
+               try {
+                       $this->writer->close();
+               } catch ( CdbException $e ) {
+                       throw new MWException( $e->getMessage() );
+               }
                $this->writer = null;
                unset( $this->readers[$this->currentLang] );
                $this->currentLang = null;
@@ -1242,7 +1258,11 @@ class LCStoreCDB implements LCStore {
                if ( is_null( $this->writer ) ) {
                        throw new MWException( __CLASS__ . ': must call startWrite() before calling set()' );
                }
-               $this->writer->set( $key, serialize( $value ) );
+               try {
+                       $this->writer->set( $key, serialize( $value ) );
+               } catch ( CdbException $e ) {
+                       throw new MWException( $e->getMessage() );
+               }
        }
 
        protected function getFileName( $code ) {
index f70934b..7275bd9 100644 (file)
@@ -1105,7 +1105,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        wfDebug( "SQL ERROR (ignored): $error\n" );
                        $this->ignoreErrors( $ignore );
                } else {
-                       $sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5*1024 );
+                       $sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5 * 1024 );
                        wfLogDBError( "$fname\t{$this->mServer}\t$errno\t$error\t$sql1line\n" );
                        wfDebug( "SQL ERROR: " . $error . "\n" );
                        throw new DBQueryError( $this, $error, $errno, $sql, $fname );
index a3f180c..9cd7708 100644 (file)
@@ -246,10 +246,11 @@ class LinksUpdate extends SqlDataUpdate {
        public static function queueRecursiveJobsForTable( Title $title, $table ) {
                wfProfileIn( __METHOD__ );
                if ( $title->getBacklinkCache()->hasLinks( $table ) ) {
-                       $job = new RefreshLinksJob2(
+                       $job = new RefreshLinksJob(
                                $title,
                                array(
-                                       'table' => $table,
+                                       'table'     => $table,
+                                       'recursive' => true,
                                ) + Job::newRootJobParams( // "overall" refresh links job info
                                        "refreshlinks:{$table}:{$title->getPrefixedText()}"
                                )
index 616f881..bb16c8b 100644 (file)
@@ -52,13 +52,17 @@ class ForeignAPIRepo extends FileRepo {
                'timestamp',
        );
 
-       var $fileFactory = array( 'ForeignAPIFile', 'newFromTitle' );
-       /* Check back with Commons after a day */
-       var $apiThumbCacheExpiry = 86400; /* 24*60*60 */
-       /* Redownload thumbnail files after a month */
-       var $fileCacheExpiry = 2592000; /* 86400*30 */
+       protected $fileFactory = array( 'ForeignAPIFile', 'newFromTitle' );
+       /** @var int Check back with Commons after a day (24*60*60) */
+       protected $apiThumbCacheExpiry = 86400;
 
-       protected $mQueryCache = array();
+       /** @var int Redownload thumbnail files after a month (86400*30) */
+       protected $fileCacheExpiry = 2592000;
+
+       /** @var array  */
+       private $mQueryCache = array();
+
+       /** @var array  */
        protected $mFileExists = array();
 
        /**
index 9cccf3b..b38416f 100644 (file)
  */
 class ForeignDBRepo extends LocalRepo {
        # Settings
-       var $dbType, $dbServer, $dbUser, $dbPassword, $dbName, $dbFlags,
-               $tablePrefix, $hasSharedCache;
+       protected $dbType;
+       protected $dbServer;
+       protected $dbUser;
+       protected $dbPassword;
+       protected $dbName;
+       protected $dbFlags;
+       protected $tablePrefix;
+       protected $hasSharedCache;
 
        # Other stuff
-       var $dbConn;
-       var $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
-       var $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
+       protected $dbConn;
+       protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
+       protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
 
        /**
         * @param $info array|null
index a002aad..ad63706 100644 (file)
  * @ingroup FileRepo
  */
 class ForeignDBViaLBRepo extends LocalRepo {
-       var $wiki, $dbName, $tablePrefix;
-       var $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
-       var $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
+       protected $wiki;
+       protected $dbName;
+       protected $tablePrefix;
+       protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
+       protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
 
        /**
         * @param $info array|null
index 49c2b8f..965f677 100644 (file)
  * @ingroup FileRepo
  */
 class LocalRepo extends FileRepo {
-       var $fileFactory = array( 'LocalFile', 'newFromTitle' );
-       var $fileFactoryKey = array( 'LocalFile', 'newFromKey' );
-       var $fileFromRowFactory = array( 'LocalFile', 'newFromRow' );
-       var $oldFileFactory = array( 'OldLocalFile', 'newFromTitle' );
-       var $oldFileFactoryKey = array( 'OldLocalFile', 'newFromKey' );
-       var $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' );
+       protected $fileFactory = array( 'LocalFile', 'newFromTitle' );
+       protected $fileFactoryKey = array( 'LocalFile', 'newFromKey' );
+       protected $fileFromRowFactory = array( 'LocalFile', 'newFromRow' );
+       protected $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' );
+       protected $oldFileFactory = array( 'OldLocalFile', 'newFromTitle' );
+       protected $oldFileFactoryKey = array( 'OldLocalFile', 'newFromKey' );
 
        /**
         * @throws MWException
index 62e9cc0..1a7ae34 100644 (file)
  * @ingroup FileRepo
  */
 class RepoGroup {
-       /**
-        * @var LocalRepo
-        */
-       var $localRepo;
+       /** @var LocalRepo */
+       protected $localRepo;
 
-       var $foreignRepos, $reposInitialised = false;
-       var $localInfo, $foreignInfo;
-       var $cache;
+       protected $foreignRepos;
 
-       /**
-        * @var RepoGroup
-        */
+       /** @var bool */
+       protected $reposInitialised = false;
+
+       protected $localInfo;
+       protected $foreignInfo;
+
+       /** @var array  */
+       protected $cache;
+
+       /** @var RepoGroup */
        protected static $instance;
+
+       /** Maximum number of cache items */
        const MAX_CACHE_SIZE = 500;
 
        /**
index 3c15449..c6ea79f 100644 (file)
@@ -994,11 +994,7 @@ class LocalFile extends File {
                $r = array();
 
                foreach ( $res as $row ) {
-                       if ( $this->repo->oldFileFromRowFactory ) {
-                               $r[] = call_user_func( $this->repo->oldFileFromRowFactory, $row, $this->repo );
-                       } else {
-                               $r[] = OldLocalFile::newFromRow( $row, $this->repo );
-                       }
+                       $r[] = $this->repo->newFileFromRow( $row );
                }
 
                if ( $order == 'ASC' ) {
index f85f3a7..a341601 100644 (file)
  * @ingroup Media
  */
 abstract class ImageGalleryBase extends ContextSource {
-       var $mImages, $mShowBytes, $mShowFilename, $mMode;
-       var $mCaption = false;
+       /** @var array Gallery images  */
+       protected $mImages;
+
+       /** @var bool Whether to show the filesize in bytes in categories   */
+       protected $mShowBytes;
+
+       /** @var bool Whether to show the filename. Default: true */
+       protected $mShowFilename;
+
+       /** @var string Gallery mode. Default: traditional */
+       protected $mMode;
+
+       /** @var bool|string Gallery caption. Default: false */
+       protected $mCaption = false;
 
        /**
-        * Hide blacklisted images?
+        * @var bool Hide blacklisted images?
         */
-       var $mHideBadImages;
+       protected $mHideBadImages;
 
        /**
-        * Registered parser object for output callbacks
-        * @var Parser
+        * @var Parser Registered parser object for output callbacks
         */
-       var $mParser;
+       protected $mParser;
 
        /**
-        * Contextual title, used when images are being screened
-        * against the bad image list
+        * @var Title Contextual title, used when images are being screened against
+        *   the bad image list
         */
        protected $contextTitle = false;
 
+       /** @var array */
        protected $mAttribs = array();
 
+       /** @var bool */
        static private $modeMapping = false;
 
        /**
         * Get a new image gallery. This is the method other callers
         * should use to get a gallery.
         *
-        * @param String|bool $mode Mode to use. False to use the default.
+        * @param string|bool $mode Mode to use. False to use the default.
+        * @throws MWException
         */
        static function factory( $mode = false ) {
                global $wgGalleryOptions, $wgContLang;
@@ -150,8 +164,8 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Set how many images will be displayed per row.
         *
-        * @param $num Integer >= 0; If perrow=0 the gallery layout will adapt to screensize
-        * invalid numbers will be rejected
+        * @param int $num Integer >= 0; If perrow=0 the gallery layout will adapt
+        *   to screensize invalid numbers will be rejected
         */
        public function setPerRow( $num ) {
                if ( $num >= 0 ) {
@@ -162,7 +176,7 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Set how wide each image will be, in pixels.
         *
-        * @param $num Integer > 0; invalid numbers will be ignored
+        * @param int $num Integer > 0; invalid numbers will be ignored
         */
        public function setWidths( $num ) {
                if ( $num > 0 ) {
@@ -173,7 +187,7 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Set how high each image will be, in pixels.
         *
-        * @param $num Integer > 0; invalid numbers will be ignored
+        * @param int $num Integer > 0; invalid numbers will be ignored
         */
        public function setHeights( $num ) {
                if ( $num > 0 ) {
@@ -186,14 +200,15 @@ abstract class ImageGalleryBase extends ContextSource {
         * to allow extensions to add additional parameters to
         * <gallery> parser tag.
         *
-        * @param Array $options Attributes of gallery tag.
+        * @param array $options Attributes of gallery tag.
         */
-       public function setAdditionalOptions( $options ) { }
+       public function setAdditionalOptions( $options ) {
+       }
 
        /**
         * Instruct the class to use a specific skin for rendering
         *
-        * @param $skin Skin object
+        * @param Skin $skin
         * @deprecated since 1.18 Not used anymore
         */
        function useSkin( $skin ) {
@@ -204,11 +219,12 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Add an image to the gallery.
         *
-        * @param $title Title object of the image that is added to the gallery
-        * @param $html  String: Additional HTML text to be shown. The name and size of the image are always shown.
-        * @param $alt   String: Alt text for the image
-        * @param $link  String: Override image link (optional)
-        * @param $handlerOpts Array: Array of options for image handler (aka page number)
+        * @param Title $title Title object of the image that is added to the gallery
+        * @param string $html Additional HTML text to be shown. The name and size
+        *   of the image are always shown.
+        * @param string $alt Alt text for the image
+        * @param string $link Override image link (optional)
+        * @param array $handlerOpts Array of options for image handler (aka page number)
         */
        function add( $title, $html = '', $alt = '', $link = '', $handlerOpts = array() ) {
                if ( $title instanceof File ) {
@@ -222,11 +238,12 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Add an image at the beginning of the gallery.
         *
-        * @param $title Title object of the image that is added to the gallery
-        * @param $html  String: Additional HTML text to be shown. The name and size of the image are always shown.
-        * @param $alt   String: Alt text for the image
-        * @param $link  String: Override image link (optional)
-        * @param $handlerOpts Array: Array of options for image handler (aka page number)
+        * @param Title $title Title object of the image that is added to the gallery
+        * @param string $html Additional HTML text to be shown. The name and size
+        *   of the image are always shown.
+        * @param string $alt Alt text for the image
+        * @param string $link  Override image link (optional)
+        * @param array $handlerOpts Array of options for image handler (aka page number)
         */
        function insert( $title, $html = '', $alt = '', $link = '', $handlerOpts = array() ) {
                if ( $title instanceof File ) {
@@ -248,7 +265,7 @@ abstract class ImageGalleryBase extends ContextSource {
         * Enable/Disable showing of the file size of an image in the gallery.
         * Enabled by default.
         *
-        * @param $f Boolean: set to false to disable.
+        * @param bool $f Set to false to disable.
         */
        function setShowBytes( $f ) {
                $this->mShowBytes = (bool)$f;
@@ -258,7 +275,7 @@ abstract class ImageGalleryBase extends ContextSource {
         * Enable/Disable showing of the filename of an image in the gallery.
         * Enabled by default.
         *
-        * @param $f Boolean: set to false to disable.
+        * @param bool $f Set to false to disable.
         */
        function setShowFilename( $f ) {
                $this->mShowFilename = (bool)$f;
@@ -271,7 +288,7 @@ abstract class ImageGalleryBase extends ContextSource {
         * Note -- if taking from user input, you should probably run through
         * Sanitizer::validateAttributes() first.
         *
-        * @param array $attribs of HTML attribute pairs
+        * @param array $attribs Array of HTML attribute pairs
         */
        function setAttributes( $attribs ) {
                $this->mAttribs = $attribs;
@@ -280,12 +297,12 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Display an html representation of the gallery
         *
-        * @return String The html
+        * @return string The html
         */
        abstract public function toHTML();
 
        /**
-        * @return Integer: number of images in the gallery
+        * @return int Number of images in the gallery
         */
        public function count() {
                return count( $this->mImages );
@@ -294,7 +311,7 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Set the contextual title
         *
-        * @param $title Title: contextual title
+        * @param Title $title Contextual title
         */
        public function setContextTitle( $title ) {
                $this->contextTitle = $title;
@@ -303,7 +320,7 @@ abstract class ImageGalleryBase extends ContextSource {
        /**
         * Get the contextual title, if applicable
         *
-        * @return mixed Title or false
+        * @return Title|bool Title or false
         */
        public function getContextTitle() {
                return is_object( $this->contextTitle ) && $this->contextTitle instanceof Title
@@ -313,19 +330,11 @@ abstract class ImageGalleryBase extends ContextSource {
 
        /**
         * Determines the correct language to be used for this image gallery
-        * @return Language object
+        * @return Language
         */
        protected function getRenderLang() {
                return $this->mParser
                        ? $this->mParser->getTargetLanguage()
                        : $this->getLanguage();
        }
-
-       /* Old constants no longer used.
-       const THUMB_PADDING = 30;
-       const GB_PADDING = 5;
-       const GB_BORDERS = 8;
-       */
-
 }
-
index 6b0d0fa..70f5bd9 100644 (file)
@@ -22,7 +22,6 @@
  */
 
 class NolinesImageGallery extends TraditionalImageGallery {
-
        protected function getThumbPadding() {
                return 0;
        }
index 963ee6b..bb55c89 100644 (file)
@@ -21,7 +21,6 @@
  */
 
 class PackedImageGallery extends TraditionalImageGallery {
-
        function __construct( $mode = 'traditional' ) {
                parent::__construct( $mode );
                // Does not support per row option.
@@ -49,6 +48,7 @@ class PackedImageGallery extends TraditionalImageGallery {
 
        /**
         * @param File $img The file being transformed. May be false
+        * @return array
         */
        protected function getThumbParams( $img ) {
                if ( $img && $img->getMediaType() === MEDIATYPE_AUDIO ) {
@@ -58,6 +58,7 @@ class PackedImageGallery extends TraditionalImageGallery {
                        // factor, so use random big number.
                        $width = $this->mHeights * 10 + 100;
                }
+
                // self::SCALE_FACTOR so the js has some room to manipulate sizes.
                return array(
                        'width' => $width * self::SCALE_FACTOR,
@@ -70,14 +71,18 @@ class PackedImageGallery extends TraditionalImageGallery {
                if ( $thumbWidth < 60 * self::SCALE_FACTOR ) {
                        $thumbWidth = 60 * self::SCALE_FACTOR;
                }
+
                return $thumbWidth / self::SCALE_FACTOR + $this->getThumbPadding();
        }
 
        /**
-        * @param MediaTransformOutput|bool $thumb the thumbnail, or false if no thumb (which can happen)
+        * @param MediaTransformOutput|bool $thumb the thumbnail, or false if no
+        *   thumb (which can happen)
+        * @return float
         */
        protected function getGBWidth( $thumb ) {
                $thumbWidth = $thumb ? $thumb->getWidth() : $this->mWidths * self::SCALE_FACTOR;
+
                return $this->getThumbDivWidth( $thumbWidth ) + $this->getGBPadding();
        }
 
index bba06fc..f9c131f 100644 (file)
  */
 
 class PackedOverlayImageGallery extends PackedImageGallery {
-
        /**
         * Add the wrapper html around the thumb's caption
         *
-        * @param String $galleryText The caption
-        * @param MediaTransformOutput|boolean $thumb The thumb this caption is for or false for bad image.
+        * @param string $galleryText The caption
+        * @param MediaTransformOutput|bool $thumb The thumb this caption is for
+        *   or false for bad image.
+        * @return string
         */
        protected function wrapGalleryText( $galleryText, $thumb ) {
 
@@ -37,17 +38,19 @@ class PackedOverlayImageGallery extends PackedImageGallery {
                        return '';
                }
 
-               # ATTENTION: The newline after <div class="gallerytext"> is needed to accommodate htmltidy which
-               # in version 4.8.6 generated crackpot html in its absence, see:
-               # http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
+               # ATTENTION: The newline after <div class="gallerytext"> is needed to
+               # accommodate htmltidy which in version 4.8.6 generated crackpot HTML
+               # in its absence, see: http://bugzilla.wikimedia.org/show_bug.cgi?id=1765
+               # -Ævar
 
                $thumbWidth = $this->getGBWidth( $thumb ) - $this->getThumbPadding() - $this->getGBPadding();
                $captionWidth = ceil( $thumbWidth - 20 );
 
                $outerWrapper = '<div class="gallerytextwrapper" style="width: ' . $captionWidth . 'px">';
+
                return "\n\t\t\t" . $outerWrapper . '<div class="gallerytext">' . "\n"
-                                       . $galleryText
-                                       . "\n\t\t\t</div>";
+                       . $galleryText
+                       . "\n\t\t\t</div>";
        }
 }
 
@@ -57,4 +60,5 @@ class PackedOverlayImageGallery extends PackedImageGallery {
  * falls back to PackedHoverGallery. Degrades gracefully for
  * screen readers.
  */
-class PackedHoverImageGallery extends PackedOverlayImageGallery { }
+class PackedHoverImageGallery extends PackedOverlayImageGallery {
+}
index c6e6dd3..cfedac7 100644 (file)
@@ -21,7 +21,6 @@
  */
 
 class TraditionalImageGallery extends ImageGalleryBase {
-
        /**
         * Return a HTML representation of the image gallery
         *
@@ -37,8 +36,10 @@ class TraditionalImageGallery extends ImageGalleryBase {
                if ( $this->mPerRow > 0 ) {
                        $maxwidth = $this->mPerRow * ( $this->mWidths + $this->getAllPadding() );
                        $oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : '';
-                       # _width is ignored by any sane browser. IE6 doesn't know max-width so it uses _width instead
-                       $this->mAttribs['style'] = "max-width: {$maxwidth}px;_width: {$maxwidth}px;" . $oldStyle;
+                       # _width is ignored by any sane browser. IE6 doesn't know max-width
+                       # so it uses _width instead
+                       $this->mAttribs['style'] = "max-width: {$maxwidth}px;_width: {$maxwidth}px;" .
+                               $oldStyle;
                }
 
                $attribs = Sanitizer::mergeAttributes(
@@ -59,6 +60,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
                $lang = $this->getRenderLang();
                # Output each image...
                foreach ( $this->mImages as $pair ) {
+                       /** @var Title $nt */
                        $nt = $pair[0];
                        $text = $pair[1]; # "text" means "caption" here
                        $alt = $pair[2];
@@ -89,28 +91,31 @@ class TraditionalImageGallery extends ImageGalleryBase {
 
                        if ( !$img ) {
                                # We're dealing with a non-image, spit out the name and be done with it.
-                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
+                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: '
+                                       . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
                                        . htmlspecialchars( $nt->getText() ) . '</div>';
 
                                if ( $this->mParser instanceof Parser ) {
                                        $this->mParser->addTrackingCategory( 'broken-file-category' );
                                }
-                       } elseif ( $this->mHideBadImages && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() ) ) {
+                       } elseif ( $this->mHideBadImages
+                               && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() )
+                       ) {
                                # The image is blacklisted, just show it as a text link.
-                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">' .
-                                       Linker::link(
+                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' .
+                                       ( $this->getThumbPadding() + $this->mHeights ) . 'px;">' .
+                                       Linker::linkKnown(
                                                $nt,
-                                               htmlspecialchars( $nt->getText() ),
-                                               array(),
-                                               array(),
-                                               array( 'known', 'noclasses' )
+                                               htmlspecialchars( $nt->getText() )
                                        ) .
                                        '</div>';
                        } elseif ( !( $thumb = $img->transform( $transformOptions ) ) ) {
                                # Error generating thumbnail.
-                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
+                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: '
+                                       . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
                                        . htmlspecialchars( $img->getLastError() ) . '</div>';
                        } else {
+                               /** @var MediaTransformOutput $thumb */
                                $vpad = $this->getVPad( $this->mHeights, $thumb->getHeight() );
 
                                $imageParameters = array(
@@ -119,7 +124,9 @@ class TraditionalImageGallery extends ImageGalleryBase {
                                        'alt' => $alt,
                                        'custom-url-link' => $link
                                );
-                               # In the absence of both alt text and caption, fall back on providing screen readers with the filename as alt text
+
+                               // In the absence of both alt text and caption, fall back on
+                               // providing screen readers with the filename as alt text
                                if ( $alt == '' && $text == '' ) {
                                        $imageParameters['alt'] = $nt->getText();
                                }
@@ -127,22 +134,27 @@ class TraditionalImageGallery extends ImageGalleryBase {
                                $this->adjustImageParameters( $thumb, $imageParameters );
 
                                # Set both fixed width and min-height.
-                               $thumbhtml = "\n\t\t\t" .
-                                       '<div class="thumb" style="width: ' . $this->getThumbDivWidth( $thumb->getWidth() ) . 'px;">'
-                                       # Auto-margin centering for block-level elements. Needed now that we have video
-                                       # handlers since they may emit block-level elements as opposed to simple <img> tags.
-                                       # ref http://css-discuss.incutio.com/?page=CenteringBlockElement
+                               $thumbhtml = "\n\t\t\t"
+                                       . '<div class="thumb" style="width: '
+                                       . $this->getThumbDivWidth( $thumb->getWidth() ) . 'px;">'
+                                       # Auto-margin centering for block-level elements. Needed
+                                       # now that we have video handlers since they may emit block-
+                                       # level elements as opposed to simple <img> tags. ref
+                                       # http://css-discuss.incutio.com/?page=CenteringBlockElement
                                        . '<div style="margin:' . $vpad . 'px auto;">'
                                        . $thumb->toHtml( $imageParameters ) . '</div></div>';
 
                                // Call parser transform hook
-                               if ( $this->mParser && $img->getHandler() ) {
-                                       $img->getHandler()->parserTransformHook( $this->mParser, $img );
+                               /** @var MediaHandler $handler */
+                               $handler = $img->getHandler();
+                               if ( $this->mParser && $handler ) {
+                                       $handler->parserTransformHook( $this->mParser, $img );
                                }
                        }
 
-                       //TODO
-                       // $linkTarget = Title::newFromText( $wgContLang->getNsText( MWNamespace::getUser() ) . ":{$ut}" );
+                       // @todo Code is incomplete.
+                       // $linkTarget = Title::newFromText( $wgContLang->getNsText( MWNamespace::getUser() ) .
+                       // ":{$ut}" );
                        // $ul = Linker::link( $linkTarget, $ut );
 
                        if ( $this->mShowBytes ) {
@@ -157,12 +169,9 @@ class TraditionalImageGallery extends ImageGalleryBase {
                        }
 
                        $textlink = $this->mShowFilename ?
-                               Linker::link(
+                               Linker::linkKnown(
                                        $nt,
-                                       htmlspecialchars( $lang->truncate( $nt->getText(), $this->mCaptionLength ) ),
-                                       array(),
-                                       array(),
-                                       array( 'known', 'noclasses' )
+                                       htmlspecialchars( $lang->truncate( $nt->getText(), $this->mCaptionLength ) )
                                ) . "<br />\n" :
                                '';
 
@@ -171,12 +180,12 @@ class TraditionalImageGallery extends ImageGalleryBase {
 
                        # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
                        # Can be safely removed if FF2 falls completely out of existence
-                       $output .=
-                               "\n\t\t" . '<li class="gallerybox" style="width: ' . $this->getGBWidth( $thumb ) . 'px">'
-                                       . '<div style="width: ' . $this->getGBWidth( $thumb ) . 'px">'
-                                       . $thumbhtml
-                                       . $galleryText
-                                       . "\n\t\t</div></li>";
+                       $output .= "\n\t\t" . '<li class="gallerybox" style="width: '
+                               . $this->getGBWidth( $thumb ) . 'px">'
+                               . '<div style="width: ' . $this->getGBWidth( $thumb ) . 'px">'
+                               . $thumbhtml
+                               . $galleryText
+                               . "\n\t\t</div></li>";
                }
                $output .= "\n</ul>";
 
@@ -186,17 +195,20 @@ class TraditionalImageGallery extends ImageGalleryBase {
        /**
         * Add the wrapper html around the thumb's caption
         *
-        * @param String $galleryText The caption
-        * @param MediaTransformOutput|boolean $thumb The thumb this caption is for or false for bad image.
+        * @param string $galleryText The caption
+        * @param MediaTransformOutput|bool $thumb The thumb this caption is for
+        *   or false for bad image.
+        * @return string
         */
        protected function wrapGalleryText( $galleryText, $thumb ) {
-               # ATTENTION: The newline after <div class="gallerytext"> is needed to accommodate htmltidy which
-               # in version 4.8.6 generated crackpot html in its absence, see:
-               # http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
+               # ATTENTION: The newline after <div class="gallerytext"> is needed to
+               # accommodate htmltidy which in version 4.8.6 generated crackpot html in
+               # its absence, see: http://bugzilla.wikimedia.org/show_bug.cgi?id=1765
+               # -Ævar
 
                return "\n\t\t\t" . '<div class="gallerytext">' . "\n"
-                                       . $galleryText
-                                       . "\n\t\t\t</div>";
+                       . $galleryText
+                       . "\n\t\t\t</div>";
        }
 
        /**
@@ -210,7 +222,6 @@ class TraditionalImageGallery extends ImageGalleryBase {
        }
 
        /**
-        *
         * @note GB stands for gallerybox (as in the <li class="gallerybox"> element)
         *
         * @return int
@@ -233,7 +244,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
        /**
         * Get total padding.
         *
-        * @return int How many pixels of whitespace surround the thumbnail.
+        * @return int Number of pixels of whitespace surrounding the thumbnail.
         */
        protected function getAllPadding() {
                return $this->getThumbPadding() + $this->getGBPadding() + $this->getGBBorders();
@@ -246,7 +257,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
         *
         * @param int $boxHeight How high we want the box to be.
         * @param int $thumbHeight How high the thumbnail is.
-        * @return int How many vertical padding to add on each side.
+        * @return int Vertical padding to add on each side.
         */
        protected function getVPad( $boxHeight, $thumbHeight ) {
                return ( $this->getThumbPadding() + $boxHeight - $thumbHeight ) / 2;
@@ -256,6 +267,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
         * Get the transform parameters for a thumbnail.
         *
         * @param File $img The file in question. May be false for invalid image
+        * @return array
         */
        protected function getThumbParams( $img ) {
                return array(
@@ -282,8 +294,8 @@ class TraditionalImageGallery extends ImageGalleryBase {
         * plus padding on gallerybox.
         *
         * @note Important: parameter will be false if no thumb used.
-        * @param Mixed $thumb MediaTransformObject object or false.
-        * @return int width of gallerybox element
+        * @param MediaTransformOutput|bool $thumb MediaTransformObject object or false.
+        * @return int Width of gallerybox element
         */
        protected function getGBWidth( $thumb ) {
                return $this->mWidths + $this->getThumbPadding() + $this->getGBPadding();
@@ -294,7 +306,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
         *
         * Primarily intended for subclasses.
         *
-        * @return Array modules to include
+        * @return array Modules to include
         */
        protected function getModules() {
                return array();
@@ -305,9 +317,10 @@ class TraditionalImageGallery extends ImageGalleryBase {
         *
         * Used by a subclass to insert extra high resolution images.
         * @param MediaTransformOutput $thumb The thumbnail
-        * @param Array $imageParameters Array of options
+        * @param array $imageParameters Array of options
         */
-       protected function adjustImageParameters( $thumb, &$imageParameters ) { }
+       protected function adjustImageParameters( $thumb, &$imageParameters ) {
+       }
 }
 
 /**
index ac768a0..68dd216 100644 (file)
@@ -74,7 +74,7 @@ This program is free software; you can redistribute it and/or modify it under th
 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 <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. or [http://www.gnu.org/copyleft/gpl.html read it online].",
+You should have received <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, or [http://www.gnu.org/copyleft/gpl.html read it online].",
        'config-sidebar'                  => "* [//www.mediawiki.org MediaWiki home]
 * [//www.mediawiki.org/wiki/Help:Contents User's Guide]
 * [//www.mediawiki.org/wiki/Manual:Contents Administrator's Guide]
@@ -224,7 +224,7 @@ In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fiel
 This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
 In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately,
 but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
-       'config-mysql-old'                => 'MySQL $1 or later is required, you have $2.',
+       'config-mysql-old'                => 'MySQL $1 or later is required. You have $2.',
        'config-db-port'                  => 'Database port:',
        'config-db-schema'                => 'Schema for MediaWiki:',
        'config-db-schema-help'           => 'This schema will usually be fine.
@@ -277,7 +277,7 @@ Check the host, username and password and try again.',
 Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).',
        'config-db-sys-create-oracle' => 'Installer only supports using a SYSDBA account for creating a new account.',
        'config-db-sys-user-exists-oracle' => 'User account "$1" already exists. SYSDBA can only be used for creating of a new account!',
-       'config-postgres-old'             => 'PostgreSQL $1 or later is required, you have $2.',
+       'config-postgres-old'             => 'PostgreSQL $1 or later is required. You have $2.',
        'config-sqlite-name-help'         => 'Choose a name that identifies your wiki.
 Do not use spaces or hyphens.
 This will be used for the SQLite data file name.',
@@ -340,7 +340,7 @@ The account you specify here must already exist.',
 
 If your MySQL installation supports InnoDB, it is highly recommended that you choose that instead.
 If your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
-       'config-mysql-only-myisam-dep'    => "'''Warning:''' MyISAM is the only available storage engine for MySQL, which is not recommended for use with MediaWiki, because:
+       'config-mysql-only-myisam-dep'    => "'''Warning:''' MyISAM is the only available storage engine for MySQL on this machine, and this is not recommended for use with MediaWiki, because:
 * it barely supports concurrency due to table locking
 * it is more prone to corruption than other engines
 * the MediaWiki codebase does not always handle MyISAM as it should
@@ -499,7 +499,7 @@ If you do not know the port, the default is 11211.',
        'config-extensions'               => 'Extensions',
        'config-extensions-help'          => 'The extensions listed above were detected in your <code>./extensions</code> directory.
 
-They may require additional configuration, but you can enable them now',
+They may require additional configuration, but you can enable them now.',
        'config-install-alreadydone'      => "'''Warning:''' You seem to have already installed MediaWiki and are trying to install it again.
 Please proceed to the next page.",
        'config-install-begin'            => 'By pressing "{{int:config-continue}}", you will begin the installation of MediaWiki.
index e6b0fd3..765838b 100644 (file)
@@ -1152,11 +1152,11 @@ abstract class Installer {
                        return chr( 0xC0 | $c >> 6 ) . chr( 0x80 | $c & 0x3F );
                } elseif ( $c <= 0xFFFF ) {
                        return chr( 0xE0 | $c >> 12 ) . chr( 0x80 | $c >> 6 & 0x3F )
-                               . chr( 0x80 | $c & 0x3F );
+                       . chr( 0x80 | $c & 0x3F );
                } elseif ( $c <= 0x10FFFF ) {
                        return chr( 0xF0 | $c >> 18 ) . chr( 0x80 | $c >> 12 & 0x3F )
-                               . chr( 0x80 | $c >> 6 & 0x3F )
-                               . chr( 0x80 | $c & 0x3F );
+                       . chr( 0x80 | $c >> 6 & 0x3F )
+                       . chr( 0x80 | $c & 0x3F );
                } else {
                        return false;
                }
@@ -1744,7 +1744,7 @@ abstract class Installer {
                $GLOBALS['wgMaxShellMemory'] = 0;
 
                // Don't bother embedding images into generated CSS, which is not cached
-               $GLOBALS['wgResourceLoaderLESSFunctions']['embeddable'] = function( $frame, $less ) {
+               $GLOBALS['wgResourceLoaderLESSFunctions']['embeddable'] = function ( $frame, $less ) {
                        return $less->toBool( false );
                };
        }
index 5f76972..2d43324 100644 (file)
@@ -268,9 +268,7 @@ class MysqlInstaller extends DatabaseInstaller {
                if ( !$status->isOK() ) {
                        return false;
                }
-               /**
-                * @var $conn DatabaseBase
-                */
+               /** @var $conn DatabaseBase */
                $conn = $status->value;
 
                // Get current account name
@@ -436,13 +434,14 @@ class MysqlInstaller extends DatabaseInstaller {
                if ( !$create ) {
                        // Test the web account
                        try {
-                               $db = DatabaseBase::factory( 'mysql', array(
+                               DatabaseBase::factory( 'mysql', array(
                                        'host' => $this->getVar( 'wgDBserver' ),
                                        'user' => $this->getVar( 'wgDBuser' ),
                                        'password' => $this->getVar( 'wgDBpassword' ),
                                        'dbname' => false,
                                        'flags' => 0,
-                                       'tablePrefix' => $this->getVar( 'wgDBprefix' ) ) );
+                                       'tablePrefix' => $this->getVar( 'wgDBprefix' )
+                               ) );
                        } catch ( DBConnectionError $e ) {
                                return Status::newFatal( 'config-connection-error', $e->getMessage() );
                        }
@@ -479,6 +478,7 @@ class MysqlInstaller extends DatabaseInstaller {
                if ( !$status->isOK() ) {
                        return $status;
                }
+               /** @var DatabaseBase $conn */
                $conn = $status->value;
                $dbName = $this->getVar( 'wgDBname' );
                if ( !$conn->selectDB( $dbName ) ) {
@@ -516,13 +516,14 @@ class MysqlInstaller extends DatabaseInstaller {
                if ( $this->getVar( '_CreateDBAccount' ) ) {
                        // Before we blindly try to create a user that already has access,
                        try { // first attempt to connect to the database
-                               $db = DatabaseBase::factory( 'mysql', array(
+                               DatabaseBase::factory( 'mysql', array(
                                        'host' => $server,
                                        'user' => $dbUser,
                                        'password' => $password,
                                        'dbname' => false,
                                        'flags' => 0,
-                                       'tablePrefix' => $this->getVar( 'wgDBprefix' ) ) );
+                                       'tablePrefix' => $this->getVar( 'wgDBprefix' )
+                               ) );
                                $grantableNames[] = $this->buildFullUserName( $dbUser, $server );
                                $tryToCreate = false;
                        } catch ( DBConnectionError $e ) {
index 0f4faec..cc5313a 100644 (file)
@@ -34,8 +34,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'disableContentHandlerUseDB' ),
 
                        // 1.2
-                       array( 'addField', 'ipblocks',      'ipb_id',           'patch-ipblocks.sql' ),
-                       array( 'addField', 'ipblocks',      'ipb_expiry',       'patch-ipb_expiry.sql' ),
+                       array( 'addField', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ),
+                       array( 'addField', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ),
                        array( 'doInterwikiUpdate' ),
                        array( 'doIndexUpdate' ),
                        array( 'addTable', 'hitcounter', 'patch-hitcounter.sql' ),
@@ -217,13 +217,13 @@ class MysqlUpdater extends DatabaseUpdater {
                        // 1.21
                        array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ),
                        array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ),
-                       array( 'addField',      'archive',      'ar_content_format',            'patch-archive-ar_content_format.sql' ),
-                       array( 'addField',      'archive',      'ar_content_model',                 'patch-archive-ar_content_model.sql' ),
-                       array( 'addField',      'page',     'page_content_model',               'patch-page-page_content_model.sql' ),
+                       array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
+                       array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
+                       array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
                        array( 'enableContentHandlerUseDB' ),
-                       array( 'dropField', 'site_stats',   'ss_admins',        'patch-drop-ss_admins.sql' ),
-                       array( 'dropField', 'recentchanges', 'rc_moved_to_title',            'patch-rc_moved.sql' ),
-                       array( 'addTable', 'sites',                            'patch-sites.sql' ),
+                       array( 'dropField', 'site_stats', 'ss_admins', 'patch-drop-ss_admins.sql' ),
+                       array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
+                       array( 'addTable', 'sites', 'patch-sites.sql' ),
                        array( 'addField', 'filearchive', 'fa_sha1', 'patch-fa_sha1.sql' ),
                        array( 'addField', 'job', 'job_token', 'patch-job_token.sql' ),
                        array( 'addField', 'job', 'job_attempts', 'patch-job_attempts.sql' ),
@@ -242,6 +242,8 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-iwlinks-from-title-index.sql' ),
                        array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
                        array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
+
+                       // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
                );
        }
@@ -260,6 +262,7 @@ class MysqlUpdater extends DatabaseUpdater {
                        return true;
                }
 
+               /** @var MySQLField $fieldInfo */
                $fieldInfo = $this->db->fieldInfo( $table, $field );
                if ( $fieldInfo->isBinary() ) {
                        $this->output( "...$table table has correct $field encoding.\n" );
index 7757510..113dce6 100644 (file)
@@ -247,6 +247,7 @@ class OracleInstaller extends DatabaseInstaller {
                                return $status;
                        }
                }
+
                $this->db = $status->value;
                $this->setupSchemaVars();
 
index cea4d78..e8a1c80 100644 (file)
@@ -398,7 +398,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        # end
                        array( 'tsearchFixes' ),
 
-                       // 1.22
+                       // 1.23
                        array( 'addPgField', 'recentchanges', 'rc_source',            "TEXT NOT NULL DEFAULT ''" ),
                );
        }
index 6fa22bc..e0ed1ec 100644 (file)
@@ -34,7 +34,7 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'disableContentHandlerUseDB' ),
 
                        // 1.14
-                       array( 'addField', 'site_stats',    'ss_active_users',  'patch-ss_active_users.sql' ),
+                       array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
                        array( 'doActiveUsersInit' ),
                        array( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
                        array( 'sqliteInitialIndexes' ),
@@ -96,12 +96,12 @@ class SqliteUpdater extends DatabaseUpdater {
                        // 1.21
                        array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ),
                        array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ),
-                       array( 'addField', 'archive',  'ar_content_format',  'patch-archive-ar_content_format.sql' ),
-                       array( 'addField', 'archive',  'ar_content_model',   'patch-archive-ar_content_model.sql' ),
-                       array( 'addField', 'page',     'page_content_model', 'patch-page-page_content_model.sql' ),
+                       array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
+                       array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
+                       array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
                        array( 'enableContentHandlerUseDB' ),
 
-                       array( 'dropField', 'site_stats',    'ss_admins',         'patch-drop-ss_admins.sql' ),
+                       array( 'dropField', 'site_stats', 'ss_admins', 'patch-drop-ss_admins.sql' ),
                        array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
                        array( 'addTable', 'sites', 'patch-sites.sql' ),
                        array( 'addField', 'filearchive', 'fa_sha1', 'patch-fa_sha1.sql' ),
@@ -115,11 +115,13 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addIndex', 'page_props', 'pp_propname_page',
                                'patch-page_props-propname-page-index.sql' ),
                        array( 'addIndex', 'image', 'img_media_mime', 'patch-img_media_mime-index.sql' ),
+
+                       // 1.22
                        array( 'addIndex', 'iwlinks', 'iwl_prefix_from_title', 'patch-iwlinks-from-title-index.sql' ),
                        array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
                        array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
 
-                       // 1.22
+                       // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
                );
        }
index b37e6b3..79fdc99 100644 (file)
@@ -326,6 +326,7 @@ class WebInstaller extends Installer {
        /**
         * Start the PHP session. This may be called before execute() to start the PHP session.
         *
+        * @throws Exception
         * @return bool
         */
        public function startSession() {
index fd91bcb..00a4ff8 100644 (file)
@@ -124,9 +124,9 @@ class WebInstallerOutput {
                $prepend = '';
                $css = '';
 
-               $cssFileNames = array();
                $resourceLoader = new ResourceLoader();
                foreach ( $moduleNames as $moduleName ) {
+                       /** @var ResourceLoaderFileModule $module */
                        $module = $resourceLoader->getModule( $moduleName );
                        $cssFileNames = $module->getAllStyleFiles();
 
@@ -138,7 +138,8 @@ class WebInstallerOutput {
                                }
 
                                if ( !is_readable( $cssFileName ) ) {
-                                       $prepend .= ResourceLoader::makeComment( "Unable to read $cssFileName. Please check file permissions." );
+                                       $prepend .= ResourceLoader::makeComment( "Unable to read $cssFileName. " .
+                                               "Please check file permissions." );
                                        continue;
                                }
 
@@ -170,7 +171,6 @@ class WebInstallerOutput {
                                        } else {
                                                $prepend .= ResourceLoader::makeComment( "Unable to read $cssFileName." );
                                        }
-
                                } catch ( Exception $e ) {
                                        $prepend .= ResourceLoader::formatException( $e );
                                }
index 4003fa8..3c237bf 100644 (file)
@@ -123,28 +123,34 @@ class Interwiki {
                static $db, $site;
 
                wfDebug( __METHOD__ . "( $prefix )\n" );
-               if ( !$db ) {
-                       $db = CdbReader::open( $wgInterwikiCache );
-               }
-               /* Resolve site name */
-               if ( $wgInterwikiScopes >= 3 && !$site ) {
-                       $site = $db->get( '__sites:' . wfWikiID() );
-                       if ( $site == '' ) {
-                               $site = $wgInterwikiFallbackSite;
+               $value = false;
+               try {
+                       if ( !$db ) {
+                               $db = CdbReader::open( $wgInterwikiCache );
+                       }
+                       /* Resolve site name */
+                       if ( $wgInterwikiScopes >= 3 && !$site ) {
+                               $site = $db->get( '__sites:' . wfWikiID() );
+                               if ( $site == '' ) {
+                                       $site = $wgInterwikiFallbackSite;
+                               }
                        }
-               }
 
-               $value = $db->get( wfMemcKey( $prefix ) );
-               // Site level
-               if ( $value == '' && $wgInterwikiScopes >= 3 ) {
-                       $value = $db->get( "_{$site}:{$prefix}" );
-               }
-               // Global Level
-               if ( $value == '' && $wgInterwikiScopes >= 2 ) {
-                       $value = $db->get( "__global:{$prefix}" );
-               }
-               if ( $value == 'undef' ) {
-                       $value = '';
+                       $value = $db->get( wfMemcKey( $prefix ) );
+                       // Site level
+                       if ( $value == '' && $wgInterwikiScopes >= 3 ) {
+                               $value = $db->get( "_{$site}:{$prefix}" );
+                       }
+                       // Global Level
+                       if ( $value == '' && $wgInterwikiScopes >= 2 ) {
+                               $value = $db->get( "__global:{$prefix}" );
+                       }
+                       if ( $value == 'undef' ) {
+                               $value = '';
+                       }
+               } catch ( CdbException $e ) {
+                       wfDebug( __METHOD__ . ": CdbException caught, error message was "
+                               . $e->getMessage() );
                }
 
                return $value;
@@ -232,51 +238,55 @@ class Interwiki {
                static $db, $site;
 
                wfDebug( __METHOD__ . "()\n" );
-               if ( !$db ) {
-                       $db = CdbReader::open( $wgInterwikiCache );
-               }
-               /* Resolve site name */
-               if ( $wgInterwikiScopes >= 3 && !$site ) {
-                       $site = $db->get( '__sites:' . wfWikiID() );
-                       if ( $site == '' ) {
-                               $site = $wgInterwikiFallbackSite;
-                       }
-               }
-
-               // List of interwiki sources
-               $sources = array();
-               // Global Level
-               if ( $wgInterwikiScopes >= 2 ) {
-                       $sources[] = '__global';
-               }
-               // Site level
-               if ( $wgInterwikiScopes >= 3 ) {
-                       $sources[] = '_' . $site;
-               }
-               $sources[] = wfWikiID();
-
                $data = array();
-
-               foreach ( $sources as $source ) {
-                       $list = $db->get( "__list:{$source}" );
-                       foreach ( explode( ' ', $list ) as $iw_prefix ) {
-                               $row = $db->get( "{$source}:{$iw_prefix}" );
-                               if ( !$row ) {
-                                       continue;
+               try {
+                       if ( !$db ) {
+                               $db = CdbReader::open( $wgInterwikiCache );
+                       }
+                       /* Resolve site name */
+                       if ( $wgInterwikiScopes >= 3 && !$site ) {
+                               $site = $db->get( '__sites:' . wfWikiID() );
+                               if ( $site == '' ) {
+                                       $site = $wgInterwikiFallbackSite;
                                }
+                       }
 
-                               list( $iw_local, $iw_url ) = explode( ' ', $row );
-
-                               if ( $local !== null && $local != $iw_local ) {
-                                       continue;
+                       // List of interwiki sources
+                       $sources = array();
+                       // Global Level
+                       if ( $wgInterwikiScopes >= 2 ) {
+                               $sources[] = '__global';
+                       }
+                       // Site level
+                       if ( $wgInterwikiScopes >= 3 ) {
+                               $sources[] = '_' . $site;
+                       }
+                       $sources[] = wfWikiID();
+
+                       foreach ( $sources as $source ) {
+                               $list = $db->get( "__list:{$source}" );
+                               foreach ( explode( ' ', $list ) as $iw_prefix ) {
+                                       $row = $db->get( "{$source}:{$iw_prefix}" );
+                                       if ( !$row ) {
+                                               continue;
+                                       }
+
+                                       list( $iw_local, $iw_url ) = explode( ' ', $row );
+
+                                       if ( $local !== null && $local != $iw_local ) {
+                                               continue;
+                                       }
+
+                                       $data[$iw_prefix] = array(
+                                               'iw_prefix' => $iw_prefix,
+                                               'iw_url' => $iw_url,
+                                               'iw_local' => $iw_local,
+                                       );
                                }
-
-                               $data[$iw_prefix] = array(
-                                       'iw_prefix' => $iw_prefix,
-                                       'iw_url' => $iw_url,
-                                       'iw_local' => $iw_local,
-                               );
                        }
+               } catch ( CdbException $e ) {
+                       wfDebug( __METHOD__ . ": CdbException caught, error message was "
+                               . $e->getMessage() );
                }
 
                ksort( $data );
index 3f44a91..e33baf5 100644 (file)
@@ -241,7 +241,9 @@ abstract class Job {
        /**
         * @see JobQueue::deduplicateRootJob()
         * @param string $key A key that identifies the task
-        * @return array
+        * @return array Map of:
+        *   - rootJobSignature : hash (e.g. SHA1) that identifies the task
+        *   - rootJobTimestamp : TS_MW timestamp of this instance of the task
         * @since 1.21
         */
        public static function newRootJobParams( $key ) {
index 0203ac8..a3ec8a7 100644 (file)
@@ -111,6 +111,9 @@ class JobQueueGroup {
         */
        public function push( $jobs ) {
                $jobs = is_array( $jobs ) ? $jobs : array( $jobs );
+               if ( !count( $jobs ) ) {
+                       return true;
+               }
 
                $jobsByType = array(); // (job type => list of jobs)
                foreach ( $jobs as $job ) {
@@ -340,9 +343,11 @@ class JobQueueGroup {
                        return $this->cache->get( 'isDeprioritized', $type );
                }
                if ( $type === 'refreshLinks2' ) {
-                       // Don't keep converting refreshLinks2 => refreshLinks jobs if the
+                       // Don't keep converting refreshLinksPartition => refreshLinks jobs if the
                        // later jobs have not been done yet. This helps throttle queue spam.
-                       $deprioritized = !$this->get( 'refreshLinks' )->isEmpty();
+                       // @TODO: this is mostly a WMF-specific hack and should be removed when
+                       // refreshLinks2 jobs are drained.
+                       $deprioritized = !$this->get( 'refreshLinks' )->getSize() > 10000;
                        $this->cache->set( 'isDeprioritized', $type, $deprioritized );
 
                        return $deprioritized;
index e8c475d..9d2a673 100644 (file)
@@ -251,23 +251,24 @@ class JobQueueRedis extends JobQueue {
                }
                static $script =
 <<<LUA
+               local kUnclaimed, kSha1ById, kIdBySha1, kDelayed, kData = unpack(KEYS)
                if #ARGV % 4 ~= 0 then return redis.error_reply('Unmatched arguments') end
                local pushed = 0
                for i = 1,#ARGV,4 do
                        local id,sha1,rtimestamp,blob = ARGV[i],ARGV[i+1],ARGV[i+2],ARGV[i+3]
-                       if sha1 == '' or redis.call('hExists',KEYS[3],sha1) == 0 then
+                       if sha1 == '' or redis.call('hExists',kIdBySha1,sha1) == 0 then
                                if 1*rtimestamp > 0 then
                                        -- Insert into delayed queue (release time as score)
-                                       redis.call('zAdd',KEYS[4],rtimestamp,id)
+                                       redis.call('zAdd',kDelayed,rtimestamp,id)
                                else
                                        -- Insert into unclaimed queue
-                                       redis.call('lPush',KEYS[1],id)
+                                       redis.call('lPush',kUnclaimed,id)
                                end
                                if sha1 ~= '' then
-                                       redis.call('hSet',KEYS[2],id,sha1)
-                                       redis.call('hSet',KEYS[3],sha1,id)
+                                       redis.call('hSet',kSha1ById,id,sha1)
+                                       redis.call('hSet',kIdBySha1,sha1,id)
                                end
-                               redis.call('hSet',KEYS[5],id,blob)
+                               redis.call('hSet',kData,id,blob)
                                pushed = pushed + 1
                        end
                end
@@ -343,16 +344,17 @@ LUA;
        protected function popAndDeleteBlob( RedisConnRef $conn ) {
                static $script =
 <<<LUA
+               local kUnclaimed, kSha1ById, kIdBySha1, kData = unpack(KEYS)
                -- Pop an item off the queue
-               local id = redis.call('rpop',KEYS[1])
+               local id = redis.call('rpop',kUnclaimed)
                if not id then return false end
                -- Get the job data and remove it
-               local item = redis.call('hGet',KEYS[4],id)
-               redis.call('hDel',KEYS[4],id)
+               local item = redis.call('hGet',kData,id)
+               redis.call('hDel',kData,id)
                -- Allow new duplicates of this job
-               local sha1 = redis.call('hGet',KEYS[2],id)
-               if sha1 then redis.call('hDel',KEYS[3],sha1) end
-               redis.call('hDel',KEYS[2],id)
+               local sha1 = redis.call('hGet',kSha1ById,id)
+               if sha1 then redis.call('hDel',kIdBySha1,sha1) end
+               redis.call('hDel',kSha1ById,id)
                -- Return the job data
                return item
 LUA;
@@ -375,17 +377,18 @@ LUA;
        protected function popAndAcquireBlob( RedisConnRef $conn ) {
                static $script =
 <<<LUA
+               local kUnclaimed, kSha1ById, kIdBySha1, kClaimed, kAttempts, kData = unpack(KEYS)
                -- Pop an item off the queue
-               local id = redis.call('rPop',KEYS[1])
+               local id = redis.call('rPop',kUnclaimed)
                if not id then return false end
                -- Allow new duplicates of this job
-               local sha1 = redis.call('hGet',KEYS[2],id)
-               if sha1 then redis.call('hDel',KEYS[3],sha1) end
-               redis.call('hDel',KEYS[2],id)
+               local sha1 = redis.call('hGet',kSha1ById,id)
+               if sha1 then redis.call('hDel',kIdBySha1,sha1) end
+               redis.call('hDel',kSha1ById,id)
                -- Mark the jobs as claimed and return it
-               redis.call('zAdd',KEYS[4],ARGV[1],id)
-               redis.call('hIncrBy',KEYS[5],id,1)
-               return redis.call('hGet',KEYS[6],id)
+               redis.call('zAdd',kClaimed,ARGV[1],id)
+               redis.call('hIncrBy',kAttempts,id,1)
+               return redis.call('hGet',kData,id)
 LUA;
                return $conn->luaEval( $script,
                        array(
@@ -416,11 +419,12 @@ LUA;
                        try {
                                static $script =
 <<<LUA
+                               local kClaimed, kAttempts, kData = unpack(KEYS)
                                -- Unmark the job as claimed
-                               redis.call('zRem',KEYS[1],ARGV[1])
-                               redis.call('hDel',KEYS[2],ARGV[1])
+                               redis.call('zRem',kClaimed,ARGV[1])
+                               redis.call('hDel',kAttempts,ARGV[1])
                                -- Delete the job data itself
-                               return redis.call('hDel',KEYS[3],ARGV[1])
+                               return redis.call('hDel',kData,ARGV[1])
 LUA;
                                $res = $conn->luaEval( $script,
                                        array(
@@ -636,12 +640,13 @@ LUA;
                try {
                        static $script =
 <<<LUA
+                       local kDelayed, kUnclaimed = unpack(KEYS)
                        -- Get the list of ready delayed jobs, sorted by readiness
-                       local ids = redis.call('zRangeByScore',KEYS[1],0,ARGV[1])
+                       local ids = redis.call('zRangeByScore',kDelayed,0,ARGV[1])
                        -- Migrate the jobs from the "delayed" set to the "unclaimed" list
                        for k,id in ipairs(ids) do
-                               redis.call('lPush',KEYS[2],id)
-                               redis.call('zRem',KEYS[1],id)
+                               redis.call('lPush',kUnclaimed,id)
+                               redis.call('zRem',kDelayed,id)
                        end
                        return #ids
 LUA;
@@ -680,33 +685,34 @@ LUA;
                        $now = time();
                        static $script =
 <<<LUA
+                       local kClaimed, kAttempts, kUnclaimed, kData, kAbandoned = unpack(KEYS)
                        local released,abandoned,pruned = 0,0,0
                        -- Get all non-dead jobs that have an expired claim on them.
                        -- The score for each item is the last claim timestamp (UNIX).
-                       local staleClaims = redis.call('zRangeByScore',KEYS[1],0,ARGV[1])
+                       local staleClaims = redis.call('zRangeByScore',kClaimed,0,ARGV[1])
                        for k,id in ipairs(staleClaims) do
-                               local timestamp = redis.call('zScore',KEYS[1],id)
-                               local attempts = redis.call('hGet',KEYS[2],id)
+                               local timestamp = redis.call('zScore',kClaimed,id)
+                               local attempts = redis.call('hGet',kAttempts,id)
                                if attempts < ARGV[3] then
                                        -- Claim expired and retries left: re-enqueue the job
-                                       redis.call('lPush',KEYS[3],id)
-                                       redis.call('hIncrBy',KEYS[2],id,1)
+                                       redis.call('lPush',kUnclaimed,id)
+                                       redis.call('hIncrBy',kAttempts,id,1)
                                        released = released + 1
                                else
                                        -- Claim expired and no retries left: mark the job as dead
-                                       redis.call('zAdd',KEYS[5],timestamp,id)
+                                       redis.call('zAdd',kAbandoned,timestamp,id)
                                        abandoned = abandoned + 1
                                end
-                               redis.call('zRem',KEYS[1],id)
+                               redis.call('zRem',kClaimed,id)
                        end
                        -- Get all of the dead jobs that have been marked as dead for too long.
                        -- The score for each item is the last claim timestamp (UNIX).
-                       local deadClaims = redis.call('zRangeByScore',KEYS[5],0,ARGV[2])
+                       local deadClaims = redis.call('zRangeByScore',kAbandoned,0,ARGV[2])
                        for k,id in ipairs(deadClaims) do
                                -- Stale and out of retries: remove any traces of the job
-                               redis.call('zRem',KEYS[5],id)
-                               redis.call('hDel',KEYS[2],id)
-                               redis.call('hDel',KEYS[4],id)
+                               redis.call('zRem',kAbandoned,id)
+                               redis.call('hDel',kAttempts,id)
+                               redis.call('hDel',kData,id)
                                pruned = pruned + 1
                        end
                        return {released,abandoned,pruned}
index 753e3f9..ea1d596 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Job to update links for a given title.
+ * Job to update link tables for pages
  *
  * 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
  */
 
 /**
- * Background job to update links for a given title.
+ * Job to update link tables for pages
+ *
+ * This job comes in a few variants:
+ *   - a) Recursive jobs to update links for backlink pages for a given title
+ *   - b) Jobs to update links for a set of titles (the job title is ignored)
+ *   - c) Jobs to update links for a single title (the job title)
  *
  * @ingroup JobQueue
  */
 class RefreshLinksJob extends Job {
+       const VERSION = 1;
+
        function __construct( $title, $params = '', $id = 0 ) {
                parent::__construct( 'refreshLinks', $title, $params, $id );
-               $this->removeDuplicates = true; // job is expensive
+               $this->params['version'] = self::VERSION;
+               // Base backlink update jobs and per-title update jobs can be de-duplicated.
+               // If template A changes twice before any jobs run, a clean queue will have:
+               //              (A base, A base)
+               // The second job is ignored by the queue on insertion.
+               // Suppose, many pages use template A, and that template itself uses template B.
+               // An edit to both will first create two base jobs. A clean FIFO queue will have:
+               //              (A base, B base)
+               // When these jobs run, the queue will have per-title and remnant partition jobs:
+               //              (titleX,titleY,titleZ,...,A remnant,titleM,titleN,titleO,...,B remnant)
+               // Some these jobs will be the same, and will automatically be ignored by
+               // the queue upon insertion. Some title jobs will run before the duplicate is
+               // inserted, so the work will still be done twice in those cases. More titles
+               // can be de-duplicated as the remnant jobs continue to be broken down. This
+               // works best when $wgUpdateRowsPerJob, and either the pages have few backlinks
+               // and/or the backlink sets for pages A and B are almost identical.
+               $this->removeDuplicates = !isset( $params['range'] )
+                       && ( !isset( $params['pages'] ) || count( $params['pages'] ) == 1 );
        }
 
-       /**
-        * Run a refreshLinks job
-        * @return bool success
-        */
        function run() {
-               $linkCache = LinkCache::singleton();
-               $linkCache->clear();
+               global $wgUpdateRowsPerJob;
 
                if ( is_null( $this->title ) ) {
-                       $this->error = "refreshLinks: Invalid title";
-
+                       $this->setLastError( "Invalid page title" );
                        return false;
                }
 
-               # Wait for the DB of the current/next slave DB handle to catch up to the master.
-               # This way, we get the correct page_latest for templates or files that just changed
-               # milliseconds ago, having triggered this job to begin with.
-               if ( isset( $this->params['masterPos'] ) && $this->params['masterPos'] !== false ) {
-                       wfGetLB()->waitFor( $this->params['masterPos'] );
-               }
-
-               $revision = Revision::newFromTitle( $this->title, false, Revision::READ_NORMAL );
-               if ( !$revision ) {
-                       $this->error = 'refreshLinks: Article not found "' .
-                               $this->title->getPrefixedDBkey() . '"';
-
-                       return false; // XXX: what if it was just deleted?
+               // Job to update all (or a range of) backlink pages for a page
+               if ( isset( $this->params['recursive'] ) ) {
+                       // Carry over information for de-duplication
+                       $extraParams = $this->getRootJobParams();
+                       // Avoid slave lag when fetching templates.
+                       // When the outermost job is run, we know that the caller that enqueued it must have
+                       // committed the relevant changes to the DB by now. At that point, record the master
+                       // position and pass it along as the job recursively breaks into smaller range jobs.
+                       // Hopefully, when leaf jobs are popped, the slaves will have reached that position.
+                       if ( isset( $this->params['masterPos'] ) ) {
+                               $extraParams['masterPos'] = $this->params['masterPos'];
+                       } elseif ( wfGetLB()->getServerCount() > 1 ) {
+                               $extraParams['masterPos'] = wfGetLB()->getMasterPos();
+                       } else {
+                               $extraParams['masterPos'] = false;
+                       }
+                       // Convert this into no more than $wgUpdateRowsPerJob RefreshLinks per-title
+                       // jobs and possibly a recursive RefreshLinks job for the rest of the backlinks
+                       $jobs = BacklinkJobUtils::partitionBacklinkJob(
+                               $this,
+                               $wgUpdateRowsPerJob,
+                               1, // job-per-title
+                               array( 'params' => $extraParams )
+                       );
+                       JobQueueGroup::singleton()->push( $jobs );
+               // Job to update link tables for for a set of titles
+               } elseif ( isset( $this->params['pages'] ) ) {
+                       foreach ( $this->params['pages'] as $pageId => $nsAndKey ) {
+                               list( $ns, $dbKey ) = $nsAndKey;
+                               $this->runForTitle( Title::makeTitleSafe( $ns, $dbKey ) );
+                       }
+               // Job to update link tables for a given title
+               } else {
+                       $this->runForTitle( $this->mTitle );
                }
 
-               self::runForTitleInternal( $this->title, $revision, __METHOD__ );
-
                return true;
        }
 
-       /**
-        * @return array
-        */
-       public function getDeduplicationInfo() {
-               $info = parent::getDeduplicationInfo();
-               // Don't let highly unique "masterPos" values ruin duplicate detection
-               if ( is_array( $info['params'] ) ) {
-                       unset( $info['params']['masterPos'] );
-               }
-
-               return $info;
-       }
-
-       /**
-        * @param Title $title
-        * @param Revision $revision
-        * @param string $fname
-        * @return void
-        */
-       public static function runForTitleInternal( Title $title, Revision $revision, $fname ) {
-               wfProfileIn( $fname );
-               $content = $revision->getContent( Revision::RAW );
-
-               if ( !$content ) {
-                       // if there is no content, pretend the content is empty
-                       $content = $revision->getContentHandler()->makeEmptyContent();
-               }
-
-               // Revision ID must be passed to the parser output to get revision variables correct
-               $parserOutput = $content->getParserOutput( $title, $revision->getId(), null, false );
-
-               $updates = $content->getSecondaryDataUpdates( $title, null, false, $parserOutput );
-               DataUpdate::runUpdates( $updates );
-
-               InfoAction::invalidateCache( $title );
-
-               wfProfileOut( $fname );
-       }
-}
-
-/**
- * Background job to update links for a given title.
- * Newer version for high use templates.
- *
- * @ingroup JobQueue
- */
-class RefreshLinksJob2 extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'refreshLinks2', $title, $params, $id );
-               // Base jobs for large templates can easily be de-duplicated
-               $this->removeDuplicates = !isset( $params['start'] ) && !isset( $params['end'] );
-       }
-
-       /**
-        * Run a refreshLinks2 job
-        * @return bool success
-        */
-       function run() {
-               global $wgUpdateRowsPerJob;
-
+       protected function runForTitle( Title $title = null ) {
                $linkCache = LinkCache::singleton();
                $linkCache->clear();
 
-               if ( is_null( $this->title ) ) {
-                       $this->error = "refreshLinks2: Invalid title";
-
+               if ( is_null( $title ) ) {
+                       $this->setLastError( "refreshLinks: Invalid title" );
                        return false;
                }
 
-               // Back compat for pre-r94435 jobs
-               $table = isset( $this->params['table'] ) ? $this->params['table'] : 'templatelinks';
-
-               // Avoid slave lag when fetching templates.
-               // When the outermost job is run, we know that the caller that enqueued it must have
-               // committed the relevant changes to the DB by now. At that point, record the master
-               // position and pass it along as the job recursively breaks into smaller range jobs.
-               // Hopefully, when leaf jobs are popped, the slaves will have reached that position.
-               if ( isset( $this->params['masterPos'] ) ) {
-                       $masterPos = $this->params['masterPos'];
-               } elseif ( wfGetLB()->getServerCount() > 1 ) {
-                       $masterPos = wfGetLB()->getMasterPos();
-               } else {
-                       $masterPos = false;
+               // Wait for the DB of the current/next slave DB handle to catch up to the master.
+               // This way, we get the correct page_latest for templates or files that just changed
+               // milliseconds ago, having triggered this job to begin with.
+               if ( isset( $this->params['masterPos'] ) && $this->params['masterPos'] !== false ) {
+                       wfGetLB()->waitFor( $this->params['masterPos'] );
                }
 
-               $tbc = $this->title->getBacklinkCache();
-
-               $jobs = array(); // jobs to insert
-               if ( isset( $this->params['start'] ) && isset( $this->params['end'] ) ) {
-                       # This is a partition job to trigger the insertion of leaf jobs...
-                       $jobs = array_merge( $jobs, $this->getSingleTitleJobs( $table, $masterPos ) );
-               } else {
-                       # This is a base job to trigger the insertion of partitioned jobs...
-                       if ( $tbc->getNumLinks( $table, $wgUpdateRowsPerJob + 1 ) <= $wgUpdateRowsPerJob ) {
-                               # Just directly insert the single per-title jobs
-                               $jobs = array_merge( $jobs, $this->getSingleTitleJobs( $table, $masterPos ) );
-                       } else {
-                               # Insert the partition jobs to make per-title jobs
-                               foreach ( $tbc->partition( $table, $wgUpdateRowsPerJob ) as $batch ) {
-                                       list( $start, $end ) = $batch;
-                                       $jobs[] = new RefreshLinksJob2( $this->title,
-                                               array(
-                                                       'table' => $table,
-                                                       'start' => $start,
-                                                       'end' => $end,
-                                                       'masterPos' => $masterPos,
-                                               ) + $this->getRootJobParams() // carry over information for de-duplication
-                                       );
+               $parserOutput = false;
+               // If page_touched changed after this root job (with a good slave lag skew factor),
+               // then it is likely that any views of the pages already resulted in re-parses which
+               // are now in cache. This can be reused to avoid expensive parsing in some cases.
+               if ( isset( $this->params['rootJobTimestamp'] ) ) {
+                       $page = WikiPage::factory( $title );
+                       $skewedTimestamp = wfTimestamp( TS_UNIX, $this->params['rootJobTimestamp'] ) + 5;
+                       if ( $page->getTouched() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
+                               $parserOptions = $page->makeParserOptions( 'canonical' );
+                               $parserOutput = ParserCache::singleton()->getDirty( $page, $parserOptions );
+                               if ( $parserOutput->getCacheTime() <= $skewedTimestamp ) {
+                                       $parserOutput = false; // too stale
                                }
                        }
                }
+               // Fetch the current revision and parse it if necessary...
+               if ( $parserOutput == false ) {
+                       $revision = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
+                       if ( !$revision ) {
+                               $this->setLastError( "refreshLinks: Article not found {$title->getPrefixedDBkey()}" );
+                               return false; // XXX: what if it was just deleted?
+                       }
 
-               if ( count( $jobs ) ) {
-                       JobQueueGroup::singleton()->push( $jobs );
+                       $content = $revision->getContent( Revision::RAW );
+                       if ( !$content ) {
+                               // If there is no content, pretend the content is empty
+                               $content = $revision->getContentHandler()->makeEmptyContent();
+                       }
+
+                       // Revision ID must be passed to the parser output to get revision variables correct
+                       $parserOutput = $content->getParserOutput( $title, $revision->getId(), null, false );
                }
 
-               return true;
-       }
+               $updates = $content->getSecondaryDataUpdates( $title, null, false, $parserOutput );
+               DataUpdate::runUpdates( $updates );
 
-       /**
-        * @param string $table
-        * @param mixed $masterPos
-        * @return array
-        */
-       protected function getSingleTitleJobs( $table, $masterPos ) {
-               # The "start"/"end" fields are not set for the base jobs
-               $start = isset( $this->params['start'] ) ? $this->params['start'] : false;
-               $end = isset( $this->params['end'] ) ? $this->params['end'] : false;
-               $titles = $this->title->getBacklinkCache()->getLinks( $table, $start, $end );
-               # Convert into single page refresh links jobs.
-               # This handles well when in sapi mode and is useful in any case for job
-               # de-duplication. If many pages use template A, and that template itself
-               # uses template B, then an edit to both will create many duplicate jobs.
-               # Roughly speaking, for each page, one of the "RefreshLinksJob" jobs will
-               # get run first, and when it does, it will remove the duplicates. Of course,
-               # one page could have its job popped when the other page's job is still
-               # buried within the logic of a refreshLinks2 job.
-               $jobs = array();
-               foreach ( $titles as $title ) {
-                       $jobs[] = new RefreshLinksJob( $title,
-                               array( 'masterPos' => $masterPos ) + $this->getRootJobParams()
-                       ); // carry over information for de-duplication
-               }
+               InfoAction::invalidateCache( $title );
 
-               return $jobs;
+               return true;
        }
 
-       /**
-        * @return array
-        */
        public function getDeduplicationInfo() {
                $info = parent::getDeduplicationInfo();
-               // Don't let highly unique "masterPos" values ruin duplicate detection
                if ( is_array( $info['params'] ) ) {
+                       // Don't let highly unique "masterPos" values ruin duplicate detection
                        unset( $info['params']['masterPos'] );
+                       // For per-pages jobs, the job title is that of the template that changed
+                       // (or similar), so remove that since it ruins duplicate detection
+                       if ( isset( $info['pages'] ) ) {
+                               unset( $info['namespace'] );
+                               unset( $info['title'] );
+                       }
                }
 
                return $info;
diff --git a/includes/job/jobs/RefreshLinksJob2.php b/includes/job/jobs/RefreshLinksJob2.php
new file mode 100644 (file)
index 0000000..332f625
--- /dev/null
@@ -0,0 +1,141 @@
+<?php
+/**
+ * Job to update links for a given title.
+ *
+ * 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 JobQueue
+ */
+
+/**
+ * Background job to update links for titles in certain backlink range by page ID.
+ * Newer version for high use templates. This is deprecated by RefreshLinksPartitionJob.
+ *
+ * @ingroup JobQueue
+ * @deprecated 1.23
+ */
+class RefreshLinksJob2 extends Job {
+       function __construct( $title, $params, $id = 0 ) {
+               parent::__construct( 'refreshLinks2', $title, $params, $id );
+               // Base jobs for large templates can easily be de-duplicated
+               $this->removeDuplicates = !isset( $params['start'] ) && !isset( $params['end'] );
+       }
+
+       /**
+        * Run a refreshLinks2 job
+        * @return boolean success
+        */
+       function run() {
+               global $wgUpdateRowsPerJob;
+
+               $linkCache = LinkCache::singleton();
+               $linkCache->clear();
+
+               if ( is_null( $this->title ) ) {
+                       $this->error = "refreshLinks2: Invalid title";
+                       return false;
+               }
+
+               // Back compat for pre-r94435 jobs
+               $table = isset( $this->params['table'] ) ? $this->params['table'] : 'templatelinks';
+
+               // Avoid slave lag when fetching templates.
+               // When the outermost job is run, we know that the caller that enqueued it must have
+               // committed the relevant changes to the DB by now. At that point, record the master
+               // position and pass it along as the job recursively breaks into smaller range jobs.
+               // Hopefully, when leaf jobs are popped, the slaves will have reached that position.
+               if ( isset( $this->params['masterPos'] ) ) {
+                       $masterPos = $this->params['masterPos'];
+               } elseif ( wfGetLB()->getServerCount() > 1 ) {
+                       $masterPos = wfGetLB()->getMasterPos();
+               } else {
+                       $masterPos = false;
+               }
+
+               $tbc = $this->title->getBacklinkCache();
+
+               $jobs = array(); // jobs to insert
+               if ( isset( $this->params['start'] ) && isset( $this->params['end'] ) ) {
+                       # This is a partition job to trigger the insertion of leaf jobs...
+                       $jobs = array_merge( $jobs, $this->getSingleTitleJobs( $table, $masterPos ) );
+               } else {
+                       # This is a base job to trigger the insertion of partitioned jobs...
+                       if ( $tbc->getNumLinks( $table, $wgUpdateRowsPerJob + 1 ) <= $wgUpdateRowsPerJob ) {
+                               # Just directly insert the single per-title jobs
+                               $jobs = array_merge( $jobs, $this->getSingleTitleJobs( $table, $masterPos ) );
+                       } else {
+                               # Insert the partition jobs to make per-title jobs
+                               foreach ( $tbc->partition( $table, $wgUpdateRowsPerJob ) as $batch ) {
+                                       list( $start, $end ) = $batch;
+                                       $jobs[] = new RefreshLinksJob2( $this->title,
+                                               array(
+                                                       'table' => $table,
+                                                       'start' => $start,
+                                                       'end' => $end,
+                                                       'masterPos' => $masterPos,
+                                               ) + $this->getRootJobParams() // carry over information for de-duplication
+                                       );
+                               }
+                       }
+               }
+
+               if ( count( $jobs ) ) {
+                       JobQueueGroup::singleton()->push( $jobs );
+               }
+
+               return true;
+       }
+
+       /**
+        * @param $table string
+        * @param $masterPos mixed
+        * @return Array
+        */
+       protected function getSingleTitleJobs( $table, $masterPos ) {
+               # The "start"/"end" fields are not set for the base jobs
+               $start = isset( $this->params['start'] ) ? $this->params['start'] : false;
+               $end = isset( $this->params['end'] ) ? $this->params['end'] : false;
+               $titles = $this->title->getBacklinkCache()->getLinks( $table, $start, $end );
+               # Convert into single page refresh links jobs.
+               # This handles well when in sapi mode and is useful in any case for job
+               # de-duplication. If many pages use template A, and that template itself
+               # uses template B, then an edit to both will create many duplicate jobs.
+               # Roughly speaking, for each page, one of the "RefreshLinksJob" jobs will
+               # get run first, and when it does, it will remove the duplicates. Of course,
+               # one page could have its job popped when the other page's job is still
+               # buried within the logic of a refreshLinks2 job.
+               $jobs = array();
+               foreach ( $titles as $title ) {
+                       $jobs[] = new RefreshLinksJob( $title,
+                               array( 'masterPos' => $masterPos ) + $this->getRootJobParams()
+                       ); // carry over information for de-duplication
+               }
+               return $jobs;
+       }
+
+       /**
+        * @return Array
+        */
+       public function getDeduplicationInfo() {
+               $info = parent::getDeduplicationInfo();
+               // Don't let highly unique "masterPos" values ruin duplicate detection
+               if ( is_array( $info['params'] ) ) {
+                       unset( $info['params']['masterPos'] );
+               }
+               return $info;
+       }
+}
diff --git a/includes/job/utils/BacklinkJobUtils.php b/includes/job/utils/BacklinkJobUtils.php
new file mode 100644 (file)
index 0000000..b0b6ccd
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Job to update links for a given title.
+ *
+ * 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 JobQueue
+ * @author Aaron Schulz
+ */
+
+/**
+ * Class with Backlink related Job helper methods
+ *
+ * @ingroup JobQueue
+ * @since 1.23
+ */
+class BacklinkJobUtils {
+       /**
+        * Break down $job into approximately ($bSize/$cSize) leaf jobs and a single partition
+        * job that covers the remaining backlink range (if needed). Jobs for the first $bSize
+        * titles are collated ($cSize per job) into leaf jobs to do actual work. All the
+        * resulting jobs are of the same class as $job. No partition job is returned if the
+        * range covered by $job was less than $bSize, as the leaf jobs have full coverage.
+        *
+        * The leaf jobs have the 'pages' param set to a (<page ID>:(<namespace>,<DB key>),...)
+        * map so that the run() function knows what pages to act on. The leaf jobs will keep
+        * the same job title as the parent job (e.g. $job).
+        *
+        * The partition jobs have the 'range' parameter set to a map of the format
+        * (start:<integer>, end:<integer>, batchSize:<integer>, subranges:((<start>,<end>),...)),
+        * the 'table' parameter set to that of $job, and the 'recursive' parameter set to true.
+        * This method can be called on the resulting job to repeat the process again.
+        *
+        * The job provided ($job) must have the 'recursive' parameter set to true and the 'table'
+        * parameter must be set to a backlink table. The job title will be used as the title to
+        * find backlinks for. Any 'range' parameter must follow the same format as mentioned above.
+        * This should be managed by recursive calls to this method.
+        *
+        * The first jobs return are always the leaf jobs. This lets the caller use push() to
+        * put them directly into the queue and works well if the queue is FIFO. In such a queue,
+        * the leaf jobs have to get finished first before anything can resolve the next partition
+        * job, which keeps the queue very small.
+        *
+        * $opts includes:
+        *   - params : extra job parameters to include in each job
+        *
+        * @param Job $job
+        * @param int $bSize BacklinkCache partition size; usually $wgUpdateRowsPerJob
+        * @param int $cSize Max titles per leaf job; Usually 1 or a modest value
+        * @param array $opts Optional parameter map
+        * @return array List of Job objects
+        */
+       public static function partitionBacklinkJob( Job $job, $bSize, $cSize, $opts = array() ) {
+               $class = get_class( $job );
+               $title = $job->getTitle();
+               $params = $job->getParams();
+
+               if ( isset( $params['pages'] ) || empty( $params['recursive'] ) ) {
+                       $ranges = array(); // sanity; this is a leaf node
+                       wfWarn( __METHOD__ . " called on {$job->getType()} leaf job (explosive recursion)." );
+               } elseif ( isset( $params['range'] ) ) {
+                       // This is a range job to trigger the insertion of partitioned/title jobs...
+                       $ranges = $params['range']['subranges'];
+                       $realBSize = $params['range']['batchSize'];
+               } else {
+                       // This is a base job to trigger the insertion of partitioned jobs...
+                       $ranges = $title->getBacklinkCache()->partition( $params['table'], $bSize );
+                       $realBSize = $bSize;
+               }
+
+               $extraParams = isset( $opts['params'] ) ? $opts['params'] : array();
+
+               $jobs = array();
+               // Combine the first range (of size $bSize) backlinks into leaf jobs
+               if ( isset( $ranges[0] ) ) {
+                       list( $start, $end ) = $ranges[0];
+                       $titles = $title->getBacklinkCache()->getLinks( $params['table'], $start, $end );
+                       foreach ( array_chunk( iterator_to_array( $titles ), $cSize ) as $titleBatch ) {
+                               $pages = array();
+                               foreach ( $titleBatch as $tl ) {
+                                       $pages[$tl->getArticleId()] = array( $tl->getNamespace(), $tl->getDBKey() );
+                               }
+                               $jobs[] = new $class(
+                                       $title, // maintain parent job title
+                                       array( 'pages' => $pages ) + $extraParams
+                               );
+                       }
+               }
+               // Take all of the remaining ranges and build a partition job from it
+               if ( isset( $ranges[1] ) ) {
+                       $jobs[] = new $class(
+                               $title, // maintain parent job title
+                               array(
+                                       'recursive'     => true,
+                                       'table'         => $params['table'],
+                                       'range'         => array(
+                                               'start'     => $ranges[1][0],
+                                               'end'       => $ranges[count( $ranges ) - 1][1],
+                                               'batchSize' => $realBSize,
+                                               'subranges' => array_slice( $ranges, 1 )
+                                       ),
+                               ) + $extraParams
+                       );
+               }
+
+               return $jobs;
+       }
+}
index d611651..83718c3 100644 (file)
@@ -24,7 +24,6 @@
  * JSON formatter wrapper class
  */
 class FormatJson {
-
        /**
         * Skip escaping most characters above U+007F for readability and compactness.
         * This encoding option saves 3 to 8 bytes (uncompressed) for each such character;
@@ -104,6 +103,7 @@ class FormatJson {
                if ( defined( 'JSON_UNESCAPED_UNICODE' ) ) {
                        return self::encode54( $value, $pretty, $escaping );
                }
+
                return self::encode53( $value, $pretty, $escaping );
        }
 
@@ -113,7 +113,7 @@ class FormatJson {
         * @param string $value The JSON string being decoded
         * @param bool $assoc When true, returned objects will be converted into associative arrays.
         *
-        * @return mixed: the value encoded in JSON in appropriate PHP type.
+        * @return mixed The value encoded in JSON in appropriate PHP type.
         * `null` is returned if the JSON cannot be decoded or if the encoded data is deeper than
         * the recursion limit.
         */
@@ -150,6 +150,7 @@ class FormatJson {
                if ( $escaping & self::UTF8_OK ) {
                        $json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
                }
+
                return $json;
        }
 
@@ -190,6 +191,7 @@ class FormatJson {
                if ( $pretty ) {
                        return self::prettyPrint( $json );
                }
+
                return $json;
        }
 
@@ -231,6 +233,7 @@ class FormatJson {
                        }
                }
                $buf = preg_replace( self::WS_CLEANUP_REGEX, '', $buf );
+
                return str_replace( "\x01", '\"', $buf );
        }
 }
index 4f142fc..68e30eb 100644 (file)
@@ -38,7 +38,8 @@ class CSSMin {
         * which when base64 encoded will result in a 1/3 increase in size.
         */
        const EMBED_SIZE_LIMIT = 24576;
-       const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*)(?P<query>\??[^\)\'"]*)[\'"]?\s*\)';
+       const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*?)(?P<query>\?[^\)\'"]*?|)[\'"]?\s*\)';
+       const EMBED_REGEX = '\/\*\s*\@embed\s*\*\/';
 
        /* Protected Static Members */
 
@@ -140,8 +141,8 @@ class CSSMin {
        }
 
        /**
-        * Remaps CSS URL paths and automatically embeds data URIs for URL rules
-        * preceded by an /* @embed * / comment
+        * Remaps CSS URL paths and automatically embeds data URIs for CSS rules or url() values
+        * preceded by an / * @embed * / comment.
         *
         * @param string $source CSS data to remap
         * @param string $local File path where the source was read from
@@ -150,89 +151,118 @@ class CSSMin {
         * @return string Remapped CSS data
         */
        public static function remap( $source, $local, $remote, $embedData = true ) {
-               $pattern = '/((?P<embed>\s*\/\*\s*\@embed\s*\*\/)(?P<pre>[^\;\}]*))?' .
-                       self::URL_REGEX . '(?P<post>[^;]*)[\;]?/';
-               $offset = 0;
-               while ( preg_match( $pattern, $source, $match, PREG_OFFSET_CAPTURE, $offset ) ) {
-                       // Skip fully-qualified URLs and data URIs
-                       $urlScheme = parse_url( $match['file'][0], PHP_URL_SCHEME );
-                       if ( $urlScheme ) {
-                               // Move the offset to the end of the match, leaving it alone
-                               $offset = $match[0][1] + strlen( $match[0][0] );
-                               continue;
+               // High-level overview:
+               // * For each CSS rule in $source that includes at least one url() value:
+               //   * Check for an @embed comment at the start indicating that all URIs should be embedded
+               //   * For each url() value:
+               //     * Check for an @embed comment directly preceding the value
+               //     * If either @embed comment exists:
+               //       * Embedding the URL as data: URI, if it's possible / allowed
+               //       * Otherwise remap the URL to work in generated stylesheets
+
+               // Guard against trailing slashes, because "some/remote/../foo.png"
+               // resolves to "some/remote/foo.png" on (some?) clients (bug 27052).
+               if ( substr( $remote, -1 ) == '/' ) {
+                       $remote = substr( $remote, 0, -1 );
+               }
+
+               // Note: This will not correctly handle cases where ';', '{' or '}' appears in the rule itself,
+               // e.g. in a quoted string. You are advised not to use such characters in file names.
+               $pattern = '/[;{]\K[^;}]*' . CSSMin::URL_REGEX . '[^;}]*(?=[;}])/';
+               return preg_replace_callback( $pattern, function ( $matchOuter ) use ( $local, $remote, $embedData ) {
+                       $rule = $matchOuter[0];
+
+                       // Check for global @embed comment and remove it
+                       $embedAll = false;
+                       $rule = preg_replace( '/^(\s*)' . CSSMin::EMBED_REGEX . '\s*/', '$1', $rule, 1, $embedAll );
+
+                       // Build two versions of current rule: with remapped URLs and with embedded data: URIs (where possible)
+                       $pattern = '/(?P<embed>' . CSSMin::EMBED_REGEX . '\s*|)' . CSSMin::URL_REGEX . '/';
+
+                       $ruleWithRemapped = preg_replace_callback( $pattern, function ( $match ) use ( $local, $remote ) {
+                               $remapped = CSSMin::remapOne( $match['file'], $match['query'], $local, $remote, false );
+                               return "url({$remapped})";
+                       }, $rule );
+
+                       if ( $embedData ) {
+                               $ruleWithEmbedded = preg_replace_callback( $pattern, function ( $match ) use ( $embedAll, $local, $remote ) {
+                                       $embed = $embedAll || $match['embed'];
+                                       $embedded = CSSMin::remapOne( $match['file'], $match['query'], $local, $remote, $embed );
+                                       return "url({$embedded})";
+                               }, $rule );
                        }
-                       // URLs with absolute paths like /w/index.php need to be expanded
-                       // to absolute URLs but otherwise left alone
-                       if ( $match['file'][0] !== '' && $match['file'][0][0] === '/' ) {
-                               // Replace the file path with an expanded (possibly protocol-relative) URL
-                               // ...but only if wfExpandUrl() is even available.
-                               // This will not be the case if we're running outside of MW
-                               $lengthIncrease = 0;
-                               if ( function_exists( 'wfExpandUrl' ) ) {
-                                       $expanded = wfExpandUrl( $match['file'][0], PROTO_RELATIVE );
-                                       $origLength = strlen( $match['file'][0] );
-                                       $lengthIncrease = strlen( $expanded ) - $origLength;
-                                       $source = substr_replace( $source, $expanded,
-                                               $match['file'][1], $origLength
-                                       );
-                               }
-                               // Move the offset to the end of the match, leaving it alone
-                               $offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease;
-                               continue;
+
+                       if ( $embedData && $ruleWithEmbedded !== $ruleWithRemapped ) {
+                               // Build 2 CSS properties; one which uses a base64 encoded data URI in place
+                               // of the @embed comment to try and retain line-number integrity, and the
+                               // other with a remapped an versioned URL and an Internet Explorer hack
+                               // making it ignored in all browsers that support data URIs
+                               return "$ruleWithEmbedded;$ruleWithRemapped!ie";
+                       } else {
+                               // No reason to repeat twice
+                               return $ruleWithRemapped;
                        }
+               }, $source );
+
+               return $source;
+       }
+
+       /**
+        * Remap or embed a CSS URL path.
+        *
+        * @param string $file URL to remap/embed
+        * @param string $query
+        * @param string $local File path where the source was read from
+        * @param string $remote URL path to the file
+        * @param bool $embed Whether to do any data URI embedding
+        * @return string Remapped/embedded URL data
+        */
+       public static function remapOne( $file, $query, $local, $remote, $embed ) {
+               // Skip fully-qualified URLs and data URIs
+               $urlScheme = parse_url( $file, PHP_URL_SCHEME );
+               if ( $urlScheme ) {
+                       return $file;
+               }
 
-                       // Guard against double slashes, because "some/remote/../foo.png"
-                       // resolves to "some/remote/foo.png" on (some?) clients (bug 27052).
-                       if ( substr( $remote, -1 ) == '/' ) {
-                               $remote = substr( $remote, 0, -1 );
+               // URLs with absolute paths like /w/index.php need to be expanded
+               // to absolute URLs but otherwise left alone
+               if ( $file !== '' && $file[0] === '/' ) {
+                       // Replace the file path with an expanded (possibly protocol-relative) URL
+                       // ...but only if wfExpandUrl() is even available.
+                       // This will not be the case if we're running outside of MW
+                       if ( function_exists( 'wfExpandUrl' ) ) {
+                               return wfExpandUrl( $file, PROTO_RELATIVE );
+                       } else {
+                               return $file;
                        }
+               }
 
-                       // Shortcuts
-                       $embed = $match['embed'][0];
-                       $pre = $match['pre'][0];
-                       $post = $match['post'][0];
-                       $query = $match['query'][0];
-                       $url = "{$remote}/{$match['file'][0]}";
-                       $file = "{$local}/{$match['file'][0]}";
-
-                       $replacement = false;
-
-                       if ( $local !== false && file_exists( $file ) ) {
-                               // Add version parameter as a time-stamp in ISO 8601 format,
-                               // using Z for the timezone, meaning GMT
-                               $url .= '?' . gmdate( 'Y-m-d\TH:i:s\Z', round( filemtime( $file ), -2 ) );
-                               // Embedding requires a bit of extra processing, so let's skip that if we can
-                               if ( $embedData && $embed && $match['embed'][1] > 0 ) {
-                                       $data = self::encodeImageAsDataURI( $file );
-                                       if ( $data !== false ) {
-                                               // Build 2 CSS properties; one which uses a base64 encoded data URI in place
-                                               // of the @embed comment to try and retain line-number integrity, and the
-                                               // other with a remapped an versioned URL and an Internet Explorer hack
-                                               // making it ignored in all browsers that support data URIs
-                                               $replacement = "{$pre}url({$data}){$post};{$pre}url({$url}){$post}!ie;";
-                                       }
-                               }
-                               if ( $replacement === false ) {
-                                       // Assume that all paths are relative to $remote, and make them absolute
-                                       $replacement = "{$embed}{$pre}url({$url}){$post};";
+               $url = "{$remote}/{$file}";
+               $file = "{$local}/{$file}";
+
+               $replacement = false;
+
+               if ( $local !== false && file_exists( $file ) ) {
+                       // Add version parameter as a time-stamp in ISO 8601 format,
+                       // using Z for the timezone, meaning GMT
+                       $url .= '?' . gmdate( 'Y-m-d\TH:i:s\Z', round( filemtime( $file ), -2 ) );
+                       if ( $embed ) {
+                               $data = self::encodeImageAsDataURI( $file );
+                               if ( $data !== false ) {
+                                       return $data;
+                               } else {
+                                       return $url;
                                }
-                       } elseif ( $local === false ) {
+                       } else {
                                // Assume that all paths are relative to $remote, and make them absolute
-                               $replacement = "{$embed}{$pre}url({$url}{$query}){$post};";
+                               return $url;
                        }
-                       if ( $replacement !== false ) {
-                               // Perform replacement on the source
-                               $source = substr_replace(
-                                       $source, $replacement, $match[0][1], strlen( $match[0][0] )
-                               );
-                               // Move the offset to the end of the replacement in the source
-                               $offset = $match[0][1] + strlen( $replacement );
-                               continue;
-                       }
-                       // Move the offset to the end of the match, leaving it alone
-                       $offset = $match[0][1] + strlen( $match[0][0] );
+               } elseif ( $local === false ) {
+                       // Assume that all paths are relative to $remote, and make them absolute
+                       return $url . $query;
+               } else {
+                       return $file;
                }
-               return $source;
        }
 
        /**
index cc473c1..d706cd7 100644 (file)
@@ -233,8 +233,8 @@ class LogPage {
         * @return HTML string
         */
        public static function actionText( $type, $action, $title = null, $skin = null,
-               $params = array(), $filterWikilinks = false )
-       {
+               $params = array(), $filterWikilinks = false
+       {
                global $wgLang, $wgContLang, $wgLogActions;
 
                if ( is_null( $skin ) ) {
@@ -262,7 +262,12 @@ class LogPage {
                                        // User suppression
                                        if ( preg_match( '/^(block|suppress)\/(block|reblock)$/', $key ) ) {
                                                if ( $skin ) {
-                                                       $params[1] = '<span class="blockExpiry" title="&lrm;' . htmlspecialchars( $params[1] ) . '">' .
+                                                       // Localize the duration, and add a tooltip
+                                                       // in English to help visitors from other wikis.
+                                                       // The lrm is needed to make sure that the number
+                                                       // is shown on the correct side of the tooltip text.
+                                                       $durationTooltip = '&lrm;' . htmlspecialchars( $params[1] );
+                                                       $params[1] = "<span class='blockExpiry' title='$durationTooltip'>" .
                                                                $wgLang->translateBlockExpiry( $params[1] ) . '</span>';
                                                } else {
                                                        $params[1] = $wgContLang->translateBlockExpiry( $params[1] );
index a11dcb7..9ce197e 100644 (file)
@@ -245,8 +245,8 @@ class LogPager extends ReverseChronologicalPager {
                        $index['log_search'] = 'ls_field_val';
                        $index['logging'] = 'PRIMARY';
                        if ( !$this->hasEqualsClause( 'ls_field' )
-                               || !$this->hasEqualsClause( 'ls_value' ) )
-                       {
+                               || !$this->hasEqualsClause( 'ls_value' )
+                       {
                                # Since (ls_field,ls_value,ls_logid) is unique, if the condition is
                                # to match a specific (ls_field,ls_value) tuple, then there will be
                                # no duplicate log rows. Otherwise, we need to remove the duplicates.
index 0978f97..c471b69 100644 (file)
@@ -55,8 +55,8 @@ class MoveLogFormatter extends LogFormatter {
        public function getActionLinks() {
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
                        || $this->entry->getSubtype() !== 'move'
-                       || !$this->context->getUser()->isAllowed( 'move' ) )
-               {
+                       || !$this->context->getUser()->isAllowed( 'move' )
+               {
                        return '';
                }
 
index d3fa36d..aa9db3a 100644 (file)
@@ -97,12 +97,12 @@ class ExifBitmapHandler extends BitmapHandler {
                wfSuppressWarnings();
                $exif = unserialize( $metadata );
                wfRestoreWarnings();
-               if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) ||
-                       $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version() )
-               {
-                       if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) &&
-                               $exif['MEDIAWIKI_EXIF_VERSION'] == 1 )
-                       {
+               if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] )
+                       || $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version()
+               {
+                       if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] )
+                               && $exif['MEDIAWIKI_EXIF_VERSION'] == 1
+                       {
                                //back-compatible but old
                                wfDebug( __METHOD__ . ": back-compat version\n" );
                                return self::METADATA_COMPATIBLE;
@@ -129,10 +129,10 @@ class ExifBitmapHandler extends BitmapHandler {
 
        public function getCommonMetaArray( File $file ) {
                $metadata = $file->getMetadata();
-               if ( $metadata === self::OLD_BROKEN_FILE ||
-                       $metadata === self::BROKEN_FILE ||
-                       $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD )
-               {
+               if ( $metadata === self::OLD_BROKEN_FILE
+                       || $metadata === self::BROKEN_FILE
+                       || $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD
+               {
                        // So we don't try and display metadata from PagedTiffHandler
                        // for example when using InstantCommons.
                        return array();
index 390b217..74e51cf 100644 (file)
@@ -1617,8 +1617,7 @@ class FormatMetadata extends ContextSource {
         * @return mixed value in best language, null if there were no languages at all
         * @since 1.23
         */
-       protected function resolveMultilangValue( $value )
-       {
+       protected function resolveMultilangValue( $value ) {
                if (
                        !is_array( $value )
                        || !isset( $value['_type'] )
@@ -1732,8 +1731,7 @@ class FormatMetadata extends ContextSource {
         * @return array
         * @since 1.23
         */
-       protected function getPriorityLanguages()
-       {
+       protected function getPriorityLanguages() {
                $priorityLanguages = Language::getFallbacksIncludingSiteLanguage( $this->getLanguage()->getCode() );
                $priorityLanguages = array_merge( (array) $this->getLanguage()->getCode(), $priorityLanguages[0], $priorityLanguages[1] );
                return $priorityLanguages;
index 887afa3..77ec5a6 100644 (file)
@@ -163,8 +163,8 @@ class GIFMetadataExtractor {
 
                                        $commentCount = count( $comment );
                                        if ( $commentCount === 0
-                                               || $comment[$commentCount - 1] !== $data )
-                                       {
+                                               || $comment[$commentCount - 1] !== $data
+                                       {
                                                // Some applications repeat the same comment on each
                                                // frame of an animated GIF image, so if this comment
                                                // is identical to the last, only extract once.
@@ -217,8 +217,8 @@ class GIFMetadataExtractor {
                                                $xmp = self::readBlock( $fh, true );
 
                                                if ( substr( $xmp, -257, 3 ) !== "\x01\xFF\xFE"
-                                                       || substr( $xmp, -4 ) !== "\x03\x02\x01\x00" )
-                                               {
+                                                       || substr( $xmp, -4 ) !== "\x03\x02\x01\x00"
+                                               {
                                                        // this is just a sanity check.
                                                        throw new Exception( "XMP does not have magic trailer!" );
                                                }
index dc163ac..d3af31b 100644 (file)
@@ -315,9 +315,7 @@ class IPTC {
                                        foreach ( $codes as $ic ) {
                                                $fields = explode( ':', $ic, 3 );
 
-                                               if ( count( $fields ) < 2 ||
-                                                       $fields[0] !== 'IPTC' )
-                                               {
+                                               if ( count( $fields ) < 2 || $fields[0] !== 'IPTC' ) {
                                                        wfDebugLog( 'IPTC', 'IPTC: '
                                                                . 'Invalid 2:12 - ' . $ic );
                                                        break;
index e77d384..a80a0c8 100644 (file)
@@ -103,12 +103,12 @@ class XCFHandler extends BitmapHandler {
                #        (enum GimpImageBaseType in libgimpbase/gimpbaseenums.h)
                try {
                        $header = wfUnpack(
-                                 "A9magic"     # A: space padded
-                               . "/a5version"  # a: zero padded
-                               . "/Nwidth"     # \
-                               . "/Nheight"    # N: unsigned long 32bit big endian
-                               . "/Nbase_type" # /
-                       , $binaryHeader
+                               "A9magic" .        # A: space padded
+                                       "/a5version" . # a: zero padded
+                                       "/Nwidth" .    # \
+                                       "/Nheight" .   # N: unsigned long 32bit big endian
+                                       "/Nbase_type", # /
+                               $binaryHeader
                        );
                } catch ( MWException $mwe ) {
                        return false;
index 3b31053..3517986 100644 (file)
@@ -608,8 +608,8 @@ class XMPReader {
        function endElement( $parser, $elm ) {
                if ( $elm === ( self::NS_RDF . ' RDF' )
                        || $elm === 'adobe:ns:meta/ xmpmeta'
-                       || $elm === 'adobe:ns:meta/ xapmeta' )
-               {
+                       || $elm === 'adobe:ns:meta/ xapmeta'
+               {
                        // ignore these.
                        return;
                }
@@ -897,8 +897,8 @@ class XMPReader {
 
                        if ( isset( $this->items[$ns][$tag] ) ) {
                                if ( isset( $this->items[$ns][$this->ancestorStruct]['children'] )
-                                       && !isset( $this->items[$ns][$this->ancestorStruct]['children'][$tag] ) )
-                               {
+                                       && !isset( $this->items[$ns][$this->ancestorStruct]['children'][$tag] )
+                               {
                                        // This assumes that we don't have inter-namespace nesting
                                        // which we don't in all the properties we're interested in.
                                        throw new MWException( " <$tag> appeared nested in <" . $this->ancestorStruct
@@ -996,8 +996,8 @@ class XMPReader {
                        throw new MWException( __METHOD__ . " <rdf:li> expected but got $elm." );
                }
                if ( !isset( $attribs[self::NS_XML . ' lang'] )
-                       || !preg_match( '/^[-A-Za-z0-9]{2,}$/D', $attribs[self::NS_XML . ' lang'] ) )
-               {
+                       || !preg_match( '/^[-A-Za-z0-9]{2,}$/D', $attribs[self::NS_XML . ' lang'] )
+               {
                        throw new MWException( __METHOD__
                                . " <rdf:li> did not contain, or has invalid xml:lang attribute in lang alternative" );
                }
@@ -1026,8 +1026,8 @@ class XMPReader {
 
                if ( $elm === self::NS_RDF . ' RDF'
                        || $elm === 'adobe:ns:meta/ xmpmeta'
-                       || $elm === 'adobe:ns:meta/ xapmeta' )
-               {
+                       || $elm === 'adobe:ns:meta/ xapmeta'
+               {
                        /* ignore. */
                        return;
                } elseif ( $elm === self::NS_RDF . ' Description' ) {
@@ -1119,8 +1119,8 @@ class XMPReader {
 
                if ( isset( $attribs[self::NS_RDF . ' parseType'] )
                        && $attribs[self::NS_RDF . ' parseType'] === 'Resource'
-                       && $this->mode[0] === self::MODE_SIMPLE )
-               {
+                       && $this->mode[0] === self::MODE_SIMPLE
+               {
                        // this is equivalent to having an inner rdf:Description
                        $this->mode[0] = self::MODE_QDESC;
                }
index e5f60b5..f0a9128 100644 (file)
@@ -1026,9 +1026,9 @@ class MWMemcached {
 
                $len = strlen( $val );
 
-               if ( $this->_have_zlib && $this->_compress_enable &&
-                       $this->_compress_threshold && $len >= $this->_compress_threshold )
-               {
+               if ( $this->_have_zlib && $this->_compress_enable
+                       && $this->_compress_threshold && $len >= $this->_compress_threshold
+               {
                        $c_val = gzcompress( $val, 9 );
                        $c_len = strlen( $c_val );
 
index 919b8b3..e845b55 100644 (file)
@@ -114,8 +114,8 @@ class SqlBagOStuff extends BagOStuff {
 
                        # Don't keep timing out trying to connect for each call if the DB is down
                        if ( isset( $this->connFailureErrors[$serverIndex] )
-                               && ( time() - $this->connFailureTimes[$serverIndex] ) < 60 )
-                       {
+                               && ( time() - $this->connFailureTimes[$serverIndex] ) < 60
+                       {
                                throw $this->connFailureErrors[$serverIndex];
                        }
 
@@ -678,8 +678,8 @@ class SqlBagOStuff extends BagOStuff {
                for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
                        $db = $this->getDB( $serverIndex );
                        if ( $db->getType() !== 'mysql'
-                               || version_compare( $db->getServerVersion(), '4.1.0', '<' ) )
-                       {
+                               || version_compare( $db->getServerVersion(), '4.1.0', '<' )
+                       {
                                throw new MWException( __METHOD__ . ' is not supported on this DB server' );
                        }
 
index a4203b0..7b8935a 100644 (file)
@@ -37,14 +37,17 @@ class CacheTime {
                $mCacheExpiry = null,         # Seconds after which the object should expire, use 0 for uncachable. Used in ParserCache.
                $mContainsOldMagic;           # Boolean variable indicating if the input contained variables like {{CURRENTDAY}}
 
-       function getCacheTime()              { return $this->mCacheTime; }
+       /**
+        * @return string TS_MW timestamp
+        */
+       function getCacheTime()              { return wfTimestamp( TS_MW, $this->mCacheTime ); }
 
        function containsOldMagic()          { return $this->mContainsOldMagic; }
        function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
 
        /**
         * setCacheTime() sets the timestamp expressing when the page has been rendered.
-        * This doesn not control expiry, see updateCacheExpiry() for that!
+        * This does not control expiry, see updateCacheExpiry() for that!
         * @param $t string
         * @return string
         */
index b629776..40c0a89 100644 (file)
@@ -160,8 +160,8 @@ class LinkHolderArray {
                $pos = 0;
                while ( $pos < strlen( $text ) ) {
                        if ( !preg_match( '/<!--LINK (\d+):(\d+)-->/',
-                               $text, $m, PREG_OFFSET_CAPTURE, $pos ) )
-                       {
+                               $text, $m, PREG_OFFSET_CAPTURE, $pos )
+                       {
                                break;
                        }
                        $ns = $m[1][0];
index 2df3160..9be75ae 100644 (file)
@@ -420,8 +420,8 @@ class Parser {
                 * d) it is an interface message (which is in the user language)
                 */
                if ( !( $options->getDisableContentConversion()
-                               || isset( $this->mDoubleUnderscores['nocontentconvert'] ) ) )
-               {
+                       || isset( $this->mDoubleUnderscores['nocontentconvert'] ) )
+               {
                        if ( !$this->mOptions->getInterfaceMessage() ) {
                                # The position of the convert() call should not be changed. it
                                # assumes that the links are all replaced and the only thing left
@@ -438,10 +438,10 @@ class Parser {
                 * automatic link conversion.
                 */
                if ( !( $options->getDisableTitleConversion()
-                               || isset( $this->mDoubleUnderscores['nocontentconvert'] )
-                               || isset( $this->mDoubleUnderscores['notitleconvert'] )
-                               || $this->mOutput->getDisplayTitle() !== false ) )
-               {
+                       || isset( $this->mDoubleUnderscores['nocontentconvert'] )
+                       || isset( $this->mDoubleUnderscores['notitleconvert'] )
+                       || $this->mOutput->getDisplayTitle() !== false )
+               {
                        $convruletitle = $this->getConverterLanguage()->getConvRuleTitle();
                        if ( $convruletitle ) {
                                $this->mOutput->setTitleText( $convruletitle );
@@ -1696,9 +1696,9 @@ class Parser {
        public static function getExternalLinkRel( $url = false, $title = null ) {
                global $wgNoFollowLinks, $wgNoFollowNsExceptions, $wgNoFollowDomainExceptions;
                $ns = $title ? $title->getNamespace() : false;
-               if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions ) &&
-                               !wfMatchesDomainList( $url, $wgNoFollowDomainExceptions ) )
-               {
+               if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions )
+                       && !wfMatchesDomainList( $url, $wgNoFollowDomainExceptions )
+               {
                        return 'nofollow';
                }
                return null;
@@ -1788,14 +1788,14 @@ class Parser {
                        $imagematch = false;
                }
                if ( $this->mOptions->getAllowExternalImages()
-                        || ( $imagesexception && $imagematch ) ) {
+                       || ( $imagesexception && $imagematch ) ) {
                        if ( preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
                                # Image found
                                $text = Linker::makeExternalImage( $url );
                        }
                }
                if ( !$text && $this->mOptions->getEnableImageWhitelist()
-                        && preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
+                       && preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
                        $whitelist = explode( "\n", wfMessage( 'external_image_whitelist' )->inContentLanguage()->text() );
                        foreach ( $whitelist as $entry ) {
                                # Sanitize the regex fragment, make it case-insensitive, ignore blank entries/comments
@@ -1928,11 +1928,10 @@ class Parser {
                                # Still some problems for cases where the ] is meant to be outside punctuation,
                                # and no image is in sight. See bug 2095.
                                #
-                               if ( $text !== '' &&
-                                       substr( $m[3], 0, 1 ) === ']' &&
-                                       strpos( $text, '[' ) !== false
-                               )
-                               {
+                               if ( $text !== ''
+                                       && substr( $m[3], 0, 1 ) === ']'
+                                       && strpos( $text, '[' ) !== false
+                               ) {
                                        $text .= ']'; # so that replaceExternalLinks($text) works later
                                        $m[3] = substr( $m[3], 1 );
                                }
@@ -3387,8 +3386,8 @@ class Parser {
                        if ( !$title->isExternal() ) {
                                if ( $title->isSpecialPage()
                                        && $this->mOptions->getAllowSpecialInclusion()
-                                       && $this->ot['html'] )
-                               {
+                                       && $this->ot['html']
+                               {
                                        // Pass the template arguments as URL parameters.
                                        // "uselang" will have no effect since the Language object
                                        // is forced to the one defined in ParserOptions.
@@ -3506,8 +3505,8 @@ class Parser {
                        $text = wfEscapeWikiText( $text );
                } elseif ( is_string( $text )
                        && !$piece['lineStart']
-                       && preg_match( '/^(?:{\\||:|;|#|\*)/', $text ) )
-               {
+                       && preg_match( '/^(?:{\\||:|;|#|\*)/', $text )
+               {
                        # Bug 529: if the template begins with a table or block-level
                        # element, it should be treated as beginning a new line.
                        # This behavior is somewhat controversial.
@@ -3947,11 +3946,10 @@ class Parser {
                $object = false;
                $text = $frame->getArgument( $argName );
                if ( $text === false && $parts->getLength() > 0
-                 && (
-                       $this->ot['html']
-                       || $this->ot['pre']
-                       || ( $this->ot['wiki'] && $frame->isTemplate() )
-                 )
+                       && ( $this->ot['html']
+                               || $this->ot['pre']
+                               || ( $this->ot['wiki'] && $frame->isTemplate() )
+                       )
                ) {
                        # No match in frame, use the supplied default
                        $object = $parts->item( 0 )->getChildren();
@@ -5432,10 +5430,10 @@ class Parser {
                $params['frame']['caption'] = $caption;
 
                # Will the image be presented in a frame, with the caption below?
-               $imageIsFramed = isset( $params['frame']['frame'] ) ||
-                                                isset( $params['frame']['framed'] ) ||
-                                                isset( $params['frame']['thumbnail'] ) ||
-                                                isset( $params['frame']['manualthumb'] );
+               $imageIsFramed = isset( $params['frame']['frame'] )
+                       || isset( $params['frame']['framed'] )
+                       || isset( $params['frame']['thumbnail'] )
+                       || isset( $params['frame']['manualthumb'] );
 
                # In the old days, [[Image:Foo|text...]] would set alt text.  Later it
                # came to also set the caption, ordinary text after the image -- which
index 2950227..76d14cf 100644 (file)
@@ -59,8 +59,8 @@ class ParserOutput extends CacheTime {
        const EDITSECTION_REGEX = '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
 
        function __construct( $text = '', $languageLinks = array(), $categoryLinks = array(),
-               $containsOldMagic = false, $titletext = '' )
-       {
+               $containsOldMagic = false, $titletext = ''
+       {
                $this->mText = $text;
                $this->mLanguageLinks = $languageLinks;
                $this->mCategories = $categoryLinks;
index 57020a1..6b2a874 100644 (file)
@@ -399,14 +399,14 @@ class Preprocessor_DOM implements Preprocessor {
                                                // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
                                                // it's a possible beneficial b/c break.
                                                if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) == "\n"
-                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n" )
-                                               {
+                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n"
+                                               {
                                                        // Remove leading whitespace from the end of the accumulator
                                                        // Sanity check first though
                                                        $wsLength = $i - $wsStart;
                                                        if ( $wsLength > 0
-                                                               && strspn( $accum, " \t", -$wsLength ) === $wsLength )
-                                                       {
+                                                               && strspn( $accum, " \t", -$wsLength ) === $wsLength
+                                                       {
                                                                $accum = substr( $accum, 0, -$wsLength );
                                                        }
 
@@ -475,8 +475,8 @@ class Preprocessor_DOM implements Preprocessor {
                                        $attrEnd = $tagEndPos;
                                        // Find closing tag
                                        if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
-                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
-                                       {
+                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
+                                       {
                                                $inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
                                                $i = $matches[0][1] + strlen( $matches[0][0] );
                                                $close = '<close>' . htmlspecialchars( $matches[0][0] ) . '</close>';
@@ -1141,8 +1141,8 @@ class PPFrame_DOM implements PPFrame {
                                        # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
                                        if ( $this->parser->ot['html']
                                                || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
-                                               || ( $flags & PPFrame::STRIP_COMMENTS ) )
-                                       {
+                                               || ( $flags & PPFrame::STRIP_COMMENTS )
+                                       {
                                                $out .= '';
                                        }
                                        # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
index 2fc5e11..c2ab54e 100644 (file)
@@ -326,15 +326,15 @@ class Preprocessor_Hash implements Preprocessor {
                                                // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
                                                // it's a possible beneficial b/c break.
                                                if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) == "\n"
-                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n" )
-                                               {
+                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n"
+                                               {
                                                        // Remove leading whitespace from the end of the accumulator
                                                        // Sanity check first though
                                                        $wsLength = $i - $wsStart;
                                                        if ( $wsLength > 0
                                                                && $accum->lastNode instanceof PPNode_Hash_Text
-                                                               && strspn( $accum->lastNode->value, " \t", -$wsLength ) === $wsLength )
-                                                       {
+                                                               && strspn( $accum->lastNode->value, " \t", -$wsLength ) === $wsLength
+                                                       {
                                                                $accum->lastNode->value = substr( $accum->lastNode->value, 0, -$wsLength );
                                                        }
 
@@ -404,8 +404,8 @@ class Preprocessor_Hash implements Preprocessor {
                                        $attrEnd = $tagEndPos;
                                        // Find closing tag
                                        if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
-                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
-                                       {
+                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
+                                       {
                                                $inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
                                                $i = $matches[0][1] + strlen( $matches[0][0] );
                                                $close = $matches[0][0];
@@ -1062,8 +1062,8 @@ class PPFrame_Hash implements PPFrame {
                                        # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
                                        if ( $this->parser->ot['html']
                                                || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
-                                               || ( $flags & PPFrame::STRIP_COMMENTS ) )
-                                       {
+                                               || ( $flags & PPFrame::STRIP_COMMENTS )
+                                       {
                                                $out .= '';
                                        }
                                        # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
@@ -1654,8 +1654,8 @@ class PPNode_Hash_Tree implements PPNode {
                        if ( $child->name === 'name' ) {
                                $bits['name'] = $child;
                                if ( $child->firstChild instanceof PPNode_Hash_Attr
-                                       && $child->firstChild->name === 'index' )
-                               {
+                                       && $child->firstChild->name === 'index'
+                               {
                                        $bits['index'] = $child->firstChild->value;
                                }
                        } elseif ( $child->name === 'value' ) {
index 2282a3a..235a5ad 100644 (file)
@@ -283,8 +283,8 @@ class Profiler {
                        return; // short-circuit
                // @TODO: hardcoded check is a tad janky (what about FOR UPDATE?)
                } elseif ( !preg_match( '/^query-m: (?!SELECT)/', $method )
-                       && $realtime < $this->mDBLockThreshold )
-               {
+                       && $realtime < $this->mDBLockThreshold
+               {
                        return; // not a DB master query nor slow enough
                }
                $now = microtime( true );
index f529568..3b072f9 100644 (file)
@@ -141,9 +141,7 @@ class ResourceLoader {
 
                // For empty/whitespace-only data or for unknown filters, don't perform
                // any caching or processing
-               if ( trim( $data ) === ''
-                       || !in_array( $filter, array( 'minify-js', 'minify-css' ) ) )
-               {
+               if ( trim( $data ) === '' || !in_array( $filter, array( 'minify-js', 'minify-css' ) ) ) {
                        wfProfileOut( __METHOD__ );
                        return $data;
                }
index 8183999..43330da 100644 (file)
@@ -241,7 +241,11 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                case 'dependencies':
                                case 'messages':
                                case 'targets':
-                                       $this->{$member} = (array)$option;
+                                       // Normalise
+                                       $option = array_values( array_unique( (array)$option ) );
+                                       sort( $option );
+
+                                       $this->{$member} = $option;
                                        break;
                                // Single strings
                                case 'group':
@@ -457,14 +461,49 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                wfProfileIn( __METHOD__ . '-filemtime' );
                $filesMtime = max( array_map( array( __CLASS__, 'safeFilemtime' ), $files ) );
                wfProfileOut( __METHOD__ . '-filemtime' );
+
                $this->modifiedTime[$context->getHash()] = max(
                        $filesMtime,
-                       $this->getMsgBlobMtime( $context->getLanguage() ) );
+                       $this->getMsgBlobMtime( $context->getLanguage() ),
+                       $this->getDefinitionMtime( $context )
+               );
 
                wfProfileOut( __METHOD__ );
                return $this->modifiedTime[$context->getHash()];
        }
 
+       /**
+        * Get the definition summary for this module.
+        *
+        * @return Array
+        */
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               $summary = array(
+                       'class' => get_class( $this ),
+               );
+               foreach ( array(
+                       'scripts',
+                       'debugScripts',
+                       'loaderScripts',
+                       'styles',
+                       'languageScripts',
+                       'skinScripts',
+                       'skinStyles',
+                       'dependencies',
+                       'messages',
+                       'targets',
+                       'group',
+                       'position',
+                       'localBasePath',
+                       'remoteBasePath',
+                       'debugRaw',
+                       'raw',
+               ) as $member ) {
+                       $summary[$member] = $this->{$member};
+               };
+               return $summary;
+       }
+
        /* Protected Methods */
 
        /**
@@ -538,8 +577,8 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        return $list[$key];
                } elseif ( is_string( $fallback )
                        && isset( $list[$fallback] )
-                       && is_array( $list[$fallback] ) )
-               {
+                       && is_array( $list[$fallback] )
+               {
                        return $list[$fallback];
                }
                return array();
index 11264fc..db84dcf 100644 (file)
@@ -398,7 +398,8 @@ abstract class ResourceLoaderModule {
         * Helper method for calculating when the module's hash (if it has one) changed.
         *
         * @param ResourceLoaderContext $context
-        * @return integer: UNIX timestamp or 0 if there is no hash provided
+        * @return integer: UNIX timestamp or 0 if no hash was provided
+        *  by getModifiedHash()
         */
        public function getHashMtime( ResourceLoaderContext $context ) {
                $hash = $this->getModifiedHash( $context );
@@ -425,8 +426,10 @@ abstract class ResourceLoaderModule {
        }
 
        /**
-        * Get the last modification timestamp of the message blob for this
-        * module in a given language.
+        * Get the hash for whatever this module may contain.
+        *
+        * This is the method subclasses should implement if they want to make
+        * use of getHashMTime() inside getModifiedTime().
         *
         * @param ResourceLoaderContext $context
         * @return string|null: Hash
@@ -435,6 +438,81 @@ abstract class ResourceLoaderModule {
                return null;
        }
 
+       /**
+        * Helper method for calculating when this module's definition summary was last changed.
+        *
+        * @return integer: UNIX timestamp or 0 if no definition summary was provided
+        *  by getDefinitionSummary()
+        */
+       public function getDefinitionMtime( ResourceLoaderContext $context ) {
+               wfProfileIn( __METHOD__ );
+               $summary = $this->getDefinitionSummary( $context );
+               if ( $summary === null ) {
+                       wfProfileOut( __METHOD__ );
+                       return 0;
+               }
+
+               $hash = md5( json_encode( $summary ) );
+
+               $cache = wfGetCache( CACHE_ANYTHING );
+
+               // Embed the hash itself in the cache key. This allows for a few nifty things:
+               // - During deployment, servers with old and new versions of the code communicating
+               //   with the same memcached will not override the same key repeatedly increasing
+               //   the timestamp.
+               // - In case of the definition changing and then changing back in a short period of time
+               //   (e.g. in case of a revert or a corrupt server) the old timestamp and client-side cache
+               //   url will be re-used.
+               // - If different context-combinations (e.g. same skin, same language or some combination
+               //   thereof) result in the same definition, they will use the same hash and timestamp.
+               $key = wfMemcKey( 'resourceloader', 'moduledefinition', $this->getName(), $hash );
+
+               $data = $cache->get( $key );
+               if ( is_int( $data ) && $data > 0 ) {
+                       // We've seen this hash before, re-use the timestamp of when we first saw it.
+                       wfProfileOut( __METHOD__ );
+                       return $data;
+               }
+
+               wfDebugLog( 'resourceloader', __METHOD__ . ": New definition hash for module {$this->getName()} in context {$context->getHash()}: $hash." );
+
+               $timestamp = time();
+               $cache->set( $key, $timestamp );
+
+               wfProfileOut( __METHOD__ );
+               return $timestamp;
+       }
+
+       /**
+        * Get the definition summary for this module.
+        *
+        * This is the method subclasses should implement if they want to make
+        * use of getDefinitionMTime() inside getModifiedTime().
+        *
+        * Return an array containing values from all significant properties of this
+        * module's definition. Be sure to include things that are explicitly ordered,
+        * in their actaul order (bug 37812).
+        *
+        * Avoid including things that are insiginificant (e.g. order of message
+        * keys is insignificant and should be sorted to avoid unnecessary cache
+        * invalidation).
+        *
+        * Avoid including things already considered by other methods inside your
+        * getModifiedTime(), such as file mtime timestamps.
+        *
+        * Serialisation is done using json_encode, which means object state is not
+        * taken into account when building the hash. This data structure must only
+        * contain arrays and scalars as values (avoid object instances) which means
+        * it requires abstraction.
+        *
+        * @return Array|null
+        */
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               return array(
+                       'class' => get_class( $this ),
+               );
+       }
+
        /**
         * Check whether this module is known to be empty. If a child class
         * has an easy and cheap way to determine that this module is
index b38f448..93c5d1b 100644 (file)
@@ -84,6 +84,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgMainPageTitle' => $mainPage->getPrefixedText(),
                        'wgFormattedNamespaces' => $wgContLang->getFormattedNamespaces(),
                        'wgNamespaceIds' => $namespaceIds,
+                       'wgContentNamespaces' => MWNamespace::getContentNamespaces(),
                        'wgSiteName' => $wgSitename,
                        'wgFileExtensions' => array_values( array_unique( $wgFileExtensions ) ),
                        'wgDBname' => $wgDBname,
index 3f10ae5..2653f76 100644 (file)
@@ -180,10 +180,26 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
                if ( count( $mtimes ) ) {
                        $modifiedTime = max( $modifiedTime, max( $mtimes ) );
                }
-               $modifiedTime = max( $modifiedTime, $this->getMsgBlobMtime( $context->getLanguage() ) );
+               $modifiedTime = max(
+                       $modifiedTime,
+                       $this->getMsgBlobMtime( $context->getLanguage() ),
+                       $this->getDefinitionMtime( $context )
+               );
                return $modifiedTime;
        }
 
+       /**
+        * Get the definition summary for this module.
+        *
+        * @return Array
+        */
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               return array(
+                       'class' => get_class( $this ),
+                       'pages' => $this->getPages( $context ),
+               );
+       }
+
        /**
         * @param $context ResourceLoaderContext
         * @return bool
index f4c6f51..af6a35b 100644 (file)
@@ -94,14 +94,14 @@ class SpecialContributions extends SpecialPage {
                        $out->setHTMLTitle( $this->msg(
                                'pagetitle',
                                $this->msg( 'contributions-title', $target )->plain()
-                       ) );
+                       )->inContentLanguage() );
                        $this->getSkin()->setRelevantUser( $userObj );
                } else {
                        $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) );
-                       $out->setHTMLTitle( $this->msg(
-                               'pagetitle',
-                               $this->msg( 'sp-contributions-newbies-title' )->plain()
-                       ) );
+                       $out->setHTMLTitle(
+                               $this->msg( 'pagetitle', $this->msg( 'sp-contributions-newbies-title' ) )
+                                       ->inContentLanguage()->plain()
+                       );
                }
 
                if ( ( $ns = $request->getVal( 'namespace', null ) ) !== null && $ns !== '' ) {
index b566b91..a78133c 100644 (file)
@@ -93,7 +93,7 @@ class SpecialExpandTemplates extends SpecialPage {
                $out->addWikiMsg( 'expand_templates_intro' );
                $out->addHTML( $this->makeForm( $titleStr, $input ) );
 
-               if( $output !== false ) {
+               if ( $output !== false ) {
                        if ( $this->generateXML && strlen( $output ) > 0 ) {
                                $out->addHTML( $this->makeOutput( $xml, 'expand_templates_xml_output' ) );
                        }
@@ -108,7 +108,7 @@ class SpecialExpandTemplates extends SpecialPage {
                                );
                        }
 
-                       if( ( $wgUseTidy && $options->getTidy() ) || $wgAlwaysUseTidy ) {
+                       if ( ( $wgUseTidy && $options->getTidy() ) || $wgAlwaysUseTidy ) {
                                $tmp = MWTidy::tidy( $tmp );
                        }
 
@@ -127,7 +127,7 @@ class SpecialExpandTemplates extends SpecialPage {
         */
        private function makeForm( $title, $input ) {
                $self = $this->getTitle();
-               $form  = Xml::openElement(
+               $form = Xml::openElement(
                        'form',
                        array( 'method' => 'post', 'action' => $self->getLocalUrl() )
                );
index ed6e2a4..5c121ba 100644 (file)
@@ -62,28 +62,19 @@ class LinkSearchPage extends QueryPage {
                }
 
                $target2 = $target;
-               $protocol = '';
-               $pr_sl = strpos( $target2, '//' );
-               $pr_cl = strpos( $target2, ':' );
-               if ( $pr_sl ) {
-                       // For protocols with '//'
-                       $protocol = substr( $target2, 0, $pr_sl + 2 );
-                       $target2 = substr( $target2, $pr_sl + 2 );
-               } elseif ( !$pr_sl && $pr_cl ) {
-                       // For protocols without '//' like 'mailto:'
-                       $protocol = substr( $target2, 0, $pr_cl + 1 );
-                       $target2 = substr( $target2, $pr_cl + 1 );
-               } elseif ( $target2 != '' ) {
-                       // default
-                       $protocol = 'http://';
-               }
-               if ( $protocol != '' && !in_array( $protocol, $protocols_list ) ) {
-                       // Unsupported protocol, show original search request
-                       $target2 = $target;
-                       // Since links with unsupported protocols don't end up in
-                       // externallinks, assume $protocol is actually part of a link
-                       // containing ':' or '//' and default to http as above.
-                       $protocol = 'http://';
+               // Get protocol, default is http://
+               $protocol = 'http://';
+               $bits = wfParseUrl( $target );
+               if ( isset( $bits['scheme'] ) && isset( $bits['delimiter'] ) ) {
+                       $protocol = $bits['scheme'] . $bits['delimiter'];
+                       // Make sure wfParseUrl() didn't make some well-intended correction in the
+                       // protocol
+                       if ( strcasecmp( $protocol, substr( $target, 0, strlen( $protocol ) ) ) === 0 ) {
+                               $target2 = substr( $target, strlen( $protocol ) );
+                       } else {
+                               // If it did, let LinkFilter::makeLikeArray() handle this
+                               $protocol = '';
+                       }
                }
 
                $out->addWikiMsg(
@@ -148,18 +139,26 @@ class LinkSearchPage extends QueryPage {
        /**
         * Return an appropriately formatted LIKE query and the clause
         *
-        * @param string $query
-        * @param string $prot
+        * @param String $query Search pattern to search for
+        * @param String $prot Protocol, e.g. 'http://'
+        *
         * @return array
         */
        static function mungeQuery( $query, $prot ) {
                $field = 'el_index';
-               $rv = LinkFilter::makeLikeArray( $query, $prot );
+               $dbr = wfGetDB( DB_SLAVE );
+
+               if ( $query === '*' && $prot !== '' ) {
+                       // Allow queries like 'ftp://*' to find all ftp links
+                       $rv = array( $prot, $dbr->anyString() );
+               } else {
+                       $rv = LinkFilter::makeLikeArray( $query, $prot );
+               }
+
                if ( $rv === false ) {
                        // LinkFilter doesn't handle wildcard in IP, so we'll have to munge here.
                        $pattern = '/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/';
                        if ( preg_match( $pattern, $query ) ) {
-                               $dbr = wfGetDB( DB_SLAVE );
                                $rv = array( $prot . rtrim( $query, " \t*" ), $dbr->anyString() );
                                $field = 'el_to';
                        }
@@ -230,6 +229,9 @@ class LinkSearchPage extends QueryPage {
 
        /**
         * Override to check query validity.
+        *
+        * @param mixed $offset Numerical offset or false for no offset
+        * @param mixed $limit Numerical limit or false for no limit
         */
        function doQuery( $offset = false, $limit = false ) {
                list( $this->mMungedQuery, ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt );
index dd32656..bdcecf9 100644 (file)
@@ -107,8 +107,8 @@ class SpecialSearch extends SpecialPage {
 
                if ( $request->getVal( 'fulltext' )
                        || !is_null( $request->getVal( 'offset' ) )
-                       || !is_null( $request->getVal( 'searchx' ) ) )
-               {
+                       || !is_null( $request->getVal( 'searchx' ) )
+               {
                        $this->showResults( $search );
                } else {
                        $this->goResult( $search );
@@ -476,9 +476,10 @@ class SpecialSearch extends SpecialPage {
                $out = $this->getOutput();
                if ( strval( $term ) !== '' ) {
                        $out->setPageTitle( $this->msg( 'searchresults' ) );
-                       $out->setHTMLTitle( $this->msg( 'pagetitle' )->rawParams(
-                               $this->msg( 'searchresults-title' )->rawParams( $term )->text()
-                       ) );
+                       $out->setHTMLTitle( $this->msg( 'pagetitle' )
+                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term ) )
+                               ->inContentLanguage()->text()
+                       );
                }
                // add javascript specific to special:search
                $out->addModules( 'mediawiki.special.search' );
index 0700c49..5e1591d 100644 (file)
@@ -328,10 +328,10 @@ class SpecialUpload extends SpecialPage {
                # mDestWarningAck is set when some javascript has shown the warning
                # to the user. mForReUpload is set when the user clicks the "upload a
                # new version" link.
-               if ( !$warnings || ( count( $warnings ) == 1 &&
-                       isset( $warnings['exists'] ) &&
-                       ( $this->mDestWarningAck || $this->mForReUpload ) ) )
-               {
+               if ( !$warnings || ( count( $warnings ) == 1
+                       && isset( $warnings['exists'] )
+                       && ( $this->mDestWarningAck || $this->mForReUpload ) )
+               {
                        return false;
                }
 
index 9764c9f..e701e0f 100644 (file)
@@ -1118,6 +1118,10 @@ class LoginForm extends SpecialPage {
                                'mediawiki.special.userlogin'
                        ) );
 
+                       $out->addModules( array(
+                               'mediawiki.special.createaccount.js'
+                       ) );
+
                        $q = 'action=submitlogin&type=login';
                        $linkq = 'type=signup';
                }
index 154825a..9e93881 100644 (file)
@@ -154,9 +154,9 @@ class SpecialWatchlist extends SpecialPage {
                        wfAppendToArrayIfNotDefault( $name, $values[$name], $defaults, $nondefaults );
                }
 
-               if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
-                       $request->wasPosted() )
-               {
+               if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' )
+                       && $request->wasPosted()
+               {
                        $user->clearAllNotifications();
                        $output->redirect( $this->getTitle()->getFullURL( $nondefaults ) );
                        return;
index 0006df4..3f49ed3 100644 (file)
@@ -33,8 +33,8 @@ if ( !isset( $wgVersion ) ) {
 $matches = array();
 $ext = 'php';
 $path = '/';
-foreach( array_filter( explode( '/', $_SERVER['PHP_SELF'] ) ) as $part ) {
-       if( !preg_match( '/\.(php5?)$/', $part, $matches ) ) {
+foreach ( array_filter( explode( '/', $_SERVER['PHP_SELF'] ) ) as $part ) {
+       if ( !preg_match( '/\.(php5?)$/', $part, $matches ) ) {
                $path .= "$part/";
        } else {
                $ext = $matches[1] == 'php5' ? 'php5' : 'php';
index 183e7f3..a6c3421 100644 (file)
@@ -250,7 +250,7 @@ abstract class UploadBase {
 
        /**
         * @param string $srcPath the source path
-        * @return string the real path if it was a virtual URL
+        * @return string|bool the real path if it was a virtual URL Returns false on failure
         */
        function getRealPath( $srcPath ) {
                wfProfileIn( __METHOD__ );
@@ -259,12 +259,15 @@ abstract class UploadBase {
                        // @todo just make uploads work with storage paths
                        // UploadFromStash loads files via virtual URLs
                        $tmpFile = $repo->getLocalCopy( $srcPath );
-                       $tmpFile->bind( $this ); // keep alive with $this
-                       wfProfileOut( __METHOD__ );
-                       return $tmpFile->getPath();
+                       if ( $tmpFile ) {
+                               $tmpFile->bind( $this ); // keep alive with $this
+                       }
+                       $path = $tmpFile ? $tmpFile->getPath() : false;
+               } else {
+                       $path = $srcPath;
                }
                wfProfileOut( __METHOD__ );
-               return $srcPath;
+               return $path;
        }
 
        /**
@@ -319,8 +322,8 @@ abstract class UploadBase {
 
                $error = '';
                if ( !wfRunHooks( 'UploadVerification',
-                       array( $this->mDestName, $this->mTempPath, &$error ) ) )
-               {
+                       array( $this->mDestName, $this->mTempPath, &$error ) )
+               {
                        wfProfileOut( __METHOD__ );
                        return array( 'status' => self::HOOK_ABORTED, 'error' => $error );
                }
index 2038bac..0026fdf 100644 (file)
@@ -213,8 +213,8 @@ class Language {
        protected static function newFromCode( $code ) {
                // Protect against path traversal below
                if ( !Language::isValidCode( $code )
-                       || strcspn( $code, ":/\\\000" ) !== strlen( $code ) )
-               {
+                       || strcspn( $code, ":/\\\000" ) !== strlen( $code )
+               {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
 
@@ -1502,8 +1502,7 @@ class Language {
                if (
                        ( $zy > 1582 ) || ( ( $zy == 1582 ) && ( $zm > 10 ) ) ||
                        ( ( $zy == 1582 ) && ( $zm == 10 ) && ( $zd > 14 ) )
-               )
-               {
+               ) {
                        $zjd = (int)( ( 1461 * ( $zy + 4800 + (int)( ( $zm - 14 ) / 12 ) ) ) / 4 ) +
                                        (int)( ( 367 * ( $zm - 2 - 12 * ( (int)( ( $zm - 14 ) / 12 ) ) ) ) / 12 ) -
                                        (int)( ( 3 * (int)( ( ( $zy + 4900 + (int)( ( $zm - 14 ) / 12 ) ) / 100 ) ) ) / 4 ) +
@@ -1753,8 +1752,7 @@ class Language {
                                ( ( $gy > 1912 ) && ( $gy < 1926 ) ) ||
                                ( ( $gy == 1926 ) && ( $gm < 12 ) ) ||
                                ( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd < 26 ) )
-                       )
-                       {
+                       ) {
                                # Taishō period
                                $gy_gannen = $gy - 1912 + 1;
                                $gy_offset = $gy_gannen;
@@ -1766,8 +1764,7 @@ class Language {
                                ( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd >= 26 ) ) ||
                                ( ( $gy > 1926 ) && ( $gy < 1989 ) ) ||
                                ( ( $gy == 1989 ) && ( $gm == 1 ) && ( $gd < 8 ) )
-                       )
-                       {
+                       ) {
                                # Shōwa period
                                $gy_gannen = $gy - 1926 + 1;
                                $gy_offset = $gy_gannen;
@@ -3635,17 +3632,10 @@ class Language {
         */
        function convertPlural( $count, $forms ) {
                // Handle explicit n=pluralform cases
-               foreach ( $forms as $index => $form ) {
-                       if ( preg_match( '/^\d+=/i', $form ) ) {
-                               $pos = strpos( $form, '=' );
-                               if ( substr( $form, 0, $pos ) === (string)$count ) {
-                                       return substr( $form, $pos + 1 );
-                               }
-                               unset( $forms[$index] );
-                       }
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
                }
-
-               $forms = array_values( $forms );
                if ( !count( $forms ) ) {
                        return '';
                }
@@ -3655,6 +3645,34 @@ class Language {
                return $forms[$pluralForm];
        }
 
+       /**
+        * Handles explicit plural forms for Language::convertPlural()
+        *
+        * In {{PLURAL:$1|0=nothing|one|many}}, 0=nothing will be returned if $1 equals zero.
+        * If an explicitly defined plural form matches the $count, then
+        * string value returned, otherwise array returned for further consideration
+        * by CLDR rules or overridden convertPlural().
+        *
+        * @since 1.23
+        *
+        * @param int $count non-localized number
+        * @param array $forms different plural forms
+        *
+        * @return array|string
+        */
+       protected function handleExplicitPluralForms( $count, array $forms ) {
+               foreach ( $forms as $index => $form ) {
+                       if ( preg_match( '/\d+=/i', $form ) ) {
+                               $pos = strpos( $form, '=' );
+                               if ( substr( $form, 0, $pos ) === (string) $count ) {
+                                       return substr( $form, $pos + 1 );
+                               }
+                               unset( $forms[$index] );
+                       }
+               }
+               return array_values( $forms );
+       }
+
        /**
         * Checks that convertPlural was given an array and pads it to requested
         * amount of forms by copying the last one.
@@ -4048,8 +4066,8 @@ class Language {
        public static function getFileName( $prefix = 'Language', $code, $suffix = '.php' ) {
                // Protect against path traversal
                if ( !Language::isValidCode( $code )
-                       || strcspn( $code, ":/\\\000" ) !== strlen( $code ) )
-               {
+                       || strcspn( $code, ":/\\\000" ) !== strlen( $code )
+               {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
 
index d4c38af..cdaab2c 100644 (file)
@@ -102,8 +102,7 @@ class LanguageConverter {
                        'R' => 'R',       // raw content
                        'D' => 'D',       // convert description (subclass implement)
                        '-' => '-',       // remove convert (not implement)
-                       'H' => 'H',       // add rule for convert code
-                                                 // (but no display in placed code)
+                       'H' => 'H',       // add rule for convert code (but no display in placed code)
                        'N' => 'N'        // current variant name
                );
                $this->mFlags = array_merge( $defaultflags, $flags );
@@ -402,9 +401,9 @@ class LanguageConverter {
                        $startPos = $elementPos + strlen( $element );
 
                        // Translate any alt or title attributes inside the matched element
-                       if ( $element !== '' && preg_match( '/^(<[^>\s]*)\s([^>]*)(.*)$/', $element,
-                               $elementMatches ) )
-                       {
+                       if ( $element !== ''
+                               && preg_match( '/^(<[^>\s]*)\s([^>]*)(.*)$/', $element, $elementMatches )
+                       {
                                $attrs = Sanitizer::decodeTagAttributes( $elementMatches[2] );
                                $changed = false;
                                foreach ( array( 'title', 'alt' ) as $attrName ) {
@@ -778,12 +777,12 @@ class LanguageConverter {
                $ns = NS_MAIN;
 
                if ( $disableLinkConversion ||
-                        ( !$ignoreOtherCond &&
-                          ( $isredir == 'no'
-                                || $action == 'edit'
-                                || $action == 'submit'
-                                || $linkconvert == 'no'
-                                || $wgUser->getOption( 'noconvertlink' ) == 1 ) ) ) {
+                       ( !$ignoreOtherCond &&
+                               ( $isredir == 'no'
+                                       || $action == 'edit'
+                                       || $action == 'submit'
+                                       || $linkconvert == 'no'
+                                       || $wgUser->getOption( 'noconvertlink' ) == 1 ) ) ) {
                        return;
                }
 
@@ -876,8 +875,7 @@ class LanguageConverter {
                        $this->mTables = $wgLangConvMemc->get( $this->mCacheKey );
                        wfProfileOut( __METHOD__ . '-cache' );
                }
-               if ( !$this->mTables
-                        || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
+               if ( !$this->mTables || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
                        wfProfileIn( __METHOD__ . '-recache' );
                        // not in cache, or we need a fresh reload.
                        // We will first load the default tables
@@ -1004,8 +1002,7 @@ class LanguageConverter {
                                continue;
                        }
                        $mappings = explode( '}-', $block, 2 );
-                       $stripped = str_replace( array( "'", '"', '*', '#' ), '',
-                                                                        $mappings[0] );
+                       $stripped = str_replace( array( "'", '"', '*', '#' ), '', $mappings[0] );
                        $table = StringUtils::explode( ';', $stripped );
                        foreach ( $table as $t ) {
                                $m = explode( '=>', $t, 3 );
@@ -1285,9 +1282,9 @@ class ConverterRule {
                                $from = trim( $u[0] );
                                $v = trim( $u[1] );
                                if ( array_key_exists( $v, $unidtable )
-                                        && !is_array( $unidtable[$v] )
-                                        && $to
-                                        && in_array( $v, $variants ) ) {
+                                       && !is_array( $unidtable[$v] )
+                                       && $to
+                                       && in_array( $v, $variants ) ) {
                                        $unidtable[$v] = array( $from => $to );
                                } elseif ( $to && in_array( $v, $variants ) ) {
                                        $unidtable[$v][$from] = $to;
@@ -1353,8 +1350,7 @@ class ConverterRule {
                                $disp = $disp[0];
                        }
                        // or display frist text under disable manual convert
-                       if ( !$disp
-                                && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
+                       if ( !$disp && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
                                if ( count( $bidtable ) > 0 ) {
                                        $disp = array_values( $bidtable );
                                        $disp = $disp[0];
@@ -1446,8 +1442,8 @@ class ConverterRule {
                        }
                        /* for unidirectional array fill to convert tables */
                        if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' )
-                               && isset( $unidtable[$v] ) )
-                       {
+                               && isset( $unidtable[$v] )
+                       {
                                if ( isset( $this->mConvTable[$v] ) ) {
                                        $this->mConvTable[$v] = array_merge( $this->mConvTable[$v], $unidtable[$v] );
                                } else {
@@ -1477,8 +1473,9 @@ class ConverterRule {
                                // then convert <text to convert> to current language
                                $this->mRules = $this->mConverter->autoConvert( $this->mRules,
                                        $variant );
-                       } else { // if current variant no in flags,
-                                  // then we check its fallback variants.
+                       } else {
+                               // if current variant no in flags,
+                               // then we check its fallback variants.
                                $variantFallbacks =
                                        $this->mConverter->getVariantFallbacks( $variant );
                                if ( is_array( $variantFallbacks ) ) {
index 6497b50..d3e78fe 100644 (file)
@@ -46,6 +46,10 @@ class LanguageBe_tarask extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 975157f..0ae0524 100644 (file)
@@ -49,7 +49,7 @@ class LanguageDsb extends Language {
                        case 'lokatiw': # lokatiw
                                $word = 'wo ' . $word;
                                break;
-                       }
+               }
 
                return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
        }
index ba8a53c..23a2916 100644 (file)
@@ -35,6 +35,10 @@ class LanguageGv extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 910bc10..0c65ec7 100644 (file)
@@ -34,6 +34,10 @@ class LanguageHr extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 5623f3c..1fc1404 100644 (file)
@@ -49,7 +49,7 @@ class LanguageHsb extends Language {
                        case 'lokatiw': # lokatiw
                                $word = 'wo ' . $word;
                                break;
-                       }
+               }
 
                return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
        }
index 09c5727..d25ce71 100644 (file)
@@ -189,6 +189,10 @@ class LanguageKsh extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 6f0ff4b..7310e8e 100644 (file)
@@ -246,6 +246,10 @@ class LanguageSr extends LanguageSr_ec {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index cb9e819..4787856 100644 (file)
@@ -34,6 +34,10 @@ class LanguageSr_ec extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 99d1293..3f086df 100644 (file)
@@ -34,6 +34,10 @@ class LanguageSr_el extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 4ad272b..aabe390 100644 (file)
@@ -92,6 +92,10 @@ class LanguageUk extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index c89ac06..395febc 100644 (file)
@@ -24,15 +24,15 @@ $namespaceNames = array(
        NS_MEDIA            => 'Alat',
        NS_SPECIAL          => 'Kusuih',
        NS_TALK             => 'Marit',
-       NS_USER             => 'Ureuëng_Nguy',
-       NS_USER_TALK        => 'Marit_Ureuëng_Nguy',
+       NS_USER             => 'Ureuëng_Ngui',
+       NS_USER_TALK        => 'Marit_Ureuëng_Ngui',
        NS_PROJECT_TALK     => 'Marit_$1',
        NS_FILE             => 'Beureukaih',
        NS_FILE_TALK        => 'Marit_Beureukaih',
        NS_MEDIAWIKI        => 'MediaWiki',
        NS_MEDIAWIKI_TALK   => 'Marit_MediaWiki',
-       NS_TEMPLATE         => 'Pola',
-       NS_TEMPLATE_TALK    => 'Marit_Pola',
+       NS_TEMPLATE         => 'Seunaleuëk',
+       NS_TEMPLATE_TALK    => 'Marit_Seunaleuëk',
        NS_HELP             => 'Beunantu',
        NS_HELP_TALK        => 'Marit_Beunantu',
        NS_CATEGORY         => 'Kawan',
@@ -45,6 +45,8 @@ $namespaceAliases = array(
        'Pembicaraan'           => NS_TALK,
        'Pengguna'              => NS_USER,
        'Bicara_Pengguna'       => NS_USER_TALK,
+       'Ureuëng_Nguy'          => NS_USER,
+       'Marit_Ureuëng_Nguy'    => NS_USER_TALK,
        'Pembicaraan_Pengguna'  => NS_USER_TALK,
        'Pembicaraan_$1'        => NS_PROJECT_TALK,
        'Berkas'                => NS_FILE,
@@ -58,6 +60,8 @@ $namespaceAliases = array(
        'Templat'               => NS_TEMPLATE,
        'Pembicaraan_Templat'   => NS_TEMPLATE_TALK,
        'Templat_Pembicaraan'   => NS_TEMPLATE_TALK,
+       'Pola'                  => NS_TEMPLATE,
+       'Marit_Pola'            => NS_TEMPLATE_TALK,
        'Bantuan'               => NS_HELP,
        'Bantuan_Pembicaraan'   => NS_HELP_TALK,
        'Pembicaraan_Bantuan'   => NS_HELP_TALK,
@@ -68,13 +72,14 @@ $namespaceAliases = array(
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'Ureueng_nguy_udep' ),
-       'Allmessages'               => array( 'MandumPeusan' ),
-       'Allpages'                  => array( 'Dapeuta_on' ),
-       'Ancientpages'              => array( 'Teunuleh_trep' ),
-       'Blankpage'                 => array( 'On_soh' ),
-       'Block'                     => array( 'Theun_ureueng_nguy' ),
-       'Blockme'                   => array( 'Theun_lon' ),
+       'Activeusers'               => array( 'UreuëngNguiUdép' ),
+       'Allmessages'               => array( 'BanDumPeusan' ),
+       'AllMyUploads'              => array( 'BanDumPeunasoëLôn', 'BanDumBeureukaihLôn' ),
+       'Allpages'                  => array( 'DapeutaLaman' ),
+       'Ancientpages'              => array( 'TeunuléhAwai' ),
+       'Badtitle'                  => array( 'NanBrôk' ),
+       'Blankpage'                 => array( 'LamaSoh' ),
+       'Block'                     => array( 'TheunUreuëngNgui' ),
        'Booksources'               => array( 'Ne_kitab' ),
        'BrokenRedirects'           => array( 'Peuninah_reuloh' ),
        'Categories'                => array( 'Dapeuta_kawan' ),
@@ -84,7 +89,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Peugot_nan' ),
        'Deadendpages'              => array( 'On_mate' ),
        'DeletedContributions'      => array( 'Peuneugot_nyang_geusampoh' ),
-       'Disambiguations'           => array( 'Hana_jeulaih' ),
        'DoubleRedirects'           => array( 'Peuninah_ganda' ),
        'Emailuser'                 => array( 'Surat-e_ureueng_nguy' ),
        'Export'                    => array( 'Peuteubiet' ),
index 485ba15..b4b8fa4 100644 (file)
@@ -118,7 +118,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'OuBladsye' ),
        'Blankpage'                 => array( 'SkoonBladsy' ),
        'Block'                     => array( 'BlokIP' ),
-       'Blockme'                   => array( 'BlokMy' ),
        'Booksources'               => array( 'Boekbronne' ),
        'BrokenRedirects'           => array( 'Stukkende_aansture', 'Stukkendeaansture' ),
        'Categories'                => array( 'Kategorieë' ),
@@ -128,7 +127,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'SkepRekening', 'MaakGebruiker' ),
        'Deadendpages'              => array( 'DoodloopBladsye' ),
        'DeletedContributions'      => array( 'GeskrapteBydraes' ),
-       'Disambiguations'           => array( 'Dubbelsinnig' ),
        'DoubleRedirects'           => array( 'Dubbele_aansture', 'Dubbeleaansture' ),
        'Emailuser'                 => array( 'Stuur_e-pos', 'Stuure-pos', 'Stuur_epos', 'Stuurepos' ),
        'Export'                    => array( 'Eksporteer' ),
index bb3265b..dcf2c47 100644 (file)
  */
 
 $namespaceNames = array(
-       NS_MEDIA            => 'Medya',
-       NS_SPECIAL          => 'Spesial',
-       NS_TALK             => 'Nkɔmbɔ',
-       NS_USER             => 'User',
-       NS_USER_TALK        => 'User_nkɔmbɔ',
-       NS_PROJECT_TALK     => '$1_nkɔmbɔ',
-       NS_FILE             => 'Fayl',
-       NS_FILE_TALK        => 'Fayl_nkɔmbɔ',
+       NS_MEDIA            => 'Media',
+       NS_SPECIAL          => 'Soronko',
+       NS_TALK             => 'Nkɔmmɔ',
+       NS_USER             => 'Odwumanyɛni',
+       NS_USER_TALK        => 'Odwumanyɛni_nkɔmmɔbea',
+       NS_PROJECT_TALK     => '$1_nkɔmmɔ',
+       NS_FILE             => 'File',
+       NS_FILE_TALK        => 'File_nkɔmmɔ',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_nkɔmbɔ',
-       NS_TEMPLATE         => 'Şablon',
-       NS_TEMPLATE_TALK    => 'Şablon_nkɔmbɔ',
-       NS_HELP             => 'Help',
-       NS_HELP_TALK        => 'Help_nkɔmbɔ',
-       NS_CATEGORY         => 'Kategori',
-       NS_CATEGORY_TALK    => 'Kategori_nkɔmbɔ',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_nkɔmmɔ',
+       NS_TEMPLATE         => 'Nhwɛsode',
+       NS_TEMPLATE_TALK    => 'Nhwɛsode_nkɔmmɔbea',
+       NS_HELP             => 'Boa',
+       NS_HELP_TALK        => 'Mmoa_nkɔmmɔbea',
+       NS_CATEGORY         => 'Nkyekyem',
+       NS_CATEGORY_TALK    => 'Nkyekyem_nkɔmmɔbea',
 );
 
 $messages = array(
index ab85a74..9883a46 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Todas_as_pachinas' ),
        'Ancientpages'              => array( 'Pachinas_mas_viellas', 'Pachinas_mas_antigas', 'Pachinas_más_biellas', 'Pachinas_biellas', 'Pachinas_antigas' ),
        'Block'                     => array( 'Bloqueyar' ),
-       'Blockme'                   => array( 'Bloqueya-me' ),
        'Booksources'               => array( 'Fuents_de_libros' ),
        'BrokenRedirects'           => array( 'Endreceras_trencatas', 'Endreceras_trencadas', 'Reendrezeras_trencatas', 'Endrezeras_trencatas', 'Reendrezeras_crebatas', 'Endrezeras_crebatas', 'Endrezeras_trencadas', 'Endrezeras_crebadas' ),
        'Categories'                => array( 'Categorías' ),
@@ -73,7 +72,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Contrebucions', 'Contrebuzions' ),
        'CreateAccount'             => array( 'Creyar_cuenta' ),
        'Deadendpages'              => array( 'Pachinas_sin_salida', 'Pachinas_sin_de_salida' ),
-       'Disambiguations'           => array( 'Desambigacions', 'Desambigazions', 'Pachinas_de_desambigazión' ),
        'DoubleRedirects'           => array( 'Endreceras_doples', 'Reendrezeras_dobles', 'Dobles_reendrezeras', 'Endrezeras_dobles', 'Dobles_endrezeras' ),
        'Emailuser'                 => array( 'Ninvía_mensache', 'Nimbía_mensache' ),
        'Export'                    => array( 'Exportar' ),
index fdeb065..5cb5acd 100644 (file)
 
 $namespaceNames = array(
        NS_SPECIAL          => 'Syndrig',
-       NS_TALK             => 'Gesprec',
+       NS_TALK             => 'Mōtung',
        NS_FILE             => 'Biliþ',
-       NS_FILE_TALK        => 'Biliþgesprec',
+       NS_FILE_TALK        => 'Biliþmōtung',
        NS_TEMPLATE         => 'Bysen',
-       NS_TEMPLATE_TALK    => 'Bysengesprec',
+       NS_TEMPLATE_TALK    => 'Bysenmōtung',
        NS_HELP             => 'Help',
-       NS_HELP_TALK        => 'Helpgesprec',
+       NS_HELP_TALK        => 'Helpmōtung',
        NS_CATEGORY         => 'Flocc',
-       NS_CATEGORY_TALK    => 'Floccgesprec',
+       NS_CATEGORY_TALK    => 'Floccmōtung',
+);
+
+$namespaceAliases = array(
+       'Gesprec'      => NS_TALK,
+       'Biliþgesprec' => NS_FILE_TALK,
+       'Bysengesprec' => NS_TEMPLATE_TALK,
+       'Helpgesprec'  => NS_HELP_TALK,
+       'Floccgesprec' => NS_CATEGORY_TALK,
 );
 
 $messages = array(
index 896a459..36905d8 100644 (file)
@@ -245,6 +245,7 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'عنوان_الصفحة_الكامل', 'عنوان_صفحة_كامل', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'اسم_الصفحة_الفرعي', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'عنوان_الصفحة_الفرعي', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'جذر_اسم_الصفحة', 'ROOTPAGENAME' ),
        'basepagename'              => array( '1', 'اسم_الصفحة_الأساسي', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'عنوان_الصفحة_الأساسي', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'اسم_صفحة_النقاش', 'TALKPAGENAME' ),
@@ -264,6 +265,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'مركز', 'center', 'centre' ),
        'img_framed'                => array( '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'لاإطار', 'frameless' ),
+       'img_lang'                  => array( '1', 'لغة=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'معدول', 'معدول=$1', 'معدول_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'حدود', 'border' ),
@@ -306,6 +308,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'عام_المراجعة', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'حجم_المراجعة', 'REVISIONSIZE' ),
        'plural'                    => array( '0', 'جمع:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'عنوان_كامل:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'مسار_كامل:', 'FULLURLE:' ),
@@ -361,12 +364,12 @@ $magicWords = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'مستخدمون_نشطون' ),
        'Allmessages'               => array( 'كل_الرسائل' ),
+       'AllMyUploads'              => array( 'كل_ملفاتي' ),
        'Allpages'                  => array( 'كل_الصفحات' ),
        'Ancientpages'              => array( 'صفحات_قديمة' ),
        'Badtitle'                  => array( 'عنوان_سيئ' ),
        'Blankpage'                 => array( 'صفحة_فارغة' ),
        'Block'                     => array( 'منع', 'منع_أيبي', 'منع_مستخدم' ),
-       'Blockme'                   => array( 'منعي' ),
        'Booksources'               => array( 'مصادر_كتاب' ),
        'BrokenRedirects'           => array( 'تحويلات_مكسورة' ),
        'Categories'                => array( 'تصنيفات' ),
@@ -378,10 +381,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'إنشاء_حساب' ),
        'Deadendpages'              => array( 'صفحات_نهاية_مسدودة' ),
        'DeletedContributions'      => array( 'مساهمات_محذوفة' ),
-       'Disambiguations'           => array( 'توضيحات' ),
        'DoubleRedirects'           => array( 'تحويلات_مزدوجة' ),
        'EditWatchlist'             => array( 'تعديل_قائمة_المراقبة' ),
        'Emailuser'                 => array( 'مراسلة_المستخدم' ),
+       'ExpandTemplates'           => array( 'فرد_القوالب' ),
        'Export'                    => array( 'تصدير' ),
        'Fewestrevisions'           => array( 'الأقل_تعديلا' ),
        'FileDuplicateSearch'       => array( 'بحث_ملف_مكرر' ),
@@ -417,6 +420,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'رفوعاتي' ),
        'Newimages'                 => array( 'ملفات_جديدة', 'صور_جديدة' ),
        'Newpages'                  => array( 'صفحات_جديدة' ),
+       'PagesWithProp'             => array( 'صفحات_بخاصية' ),
        'PasswordReset'             => array( 'إعادة_ضبط_كلمة_السر' ),
        'PermanentLink'             => array( 'وصلة_دائمة', 'رابط_دائم' ),
        'Popularpages'              => array( 'صفحات_مشهورة' ),
@@ -425,10 +429,13 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'صفحات_محمية' ),
        'Protectedtitles'           => array( 'عناوين_محمية' ),
        'Randompage'                => array( 'عشوائي', 'صفحة_عشوائية' ),
+       'RandomInCategory'          => array( 'عشوائي_في_تصنيف' ),
        'Randomredirect'            => array( 'تحويلة_عشوائية' ),
        'Recentchanges'             => array( 'أحدث_التغييرات' ),
        'Recentchangeslinked'       => array( 'أحدث_التغييرات_الموصولة', 'تغييرات_مرتبطة' ),
-       'Revisiondelete'            => array( 'حذف_مراجعة' ),
+       'Redirect'                  => array( 'تحويل' ),
+       'ResetTokens'               => array( 'إعادة_ضبط_المفاتيح' ),
+       'Revisiondelete'            => array( 'حذف_مراجعة', 'حذف_نسخة' ),
        'Search'                    => array( 'بحث' ),
        'Shortpages'                => array( 'صفحات_قصيرة' ),
        'Specialpages'              => array( 'صفحات_خاصة' ),
index 64c5d52..01861cf 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ܒܪܝ_ܚܘܫܒܢܐ' ),
        'Deadendpages'              => array( 'ܦܐܬܬ̈ܐ_ܥܡ_ܚܪܬܐ_ܡܝܬܬܐ' ),
        'DeletedContributions'      => array( 'ܫܘܬܦܘ̈ܬܐ_ܫܝ̈ܦܬܐ' ),
-       'Disambiguations'           => array( 'ܬܘܚܡ̈ܐ_ܐܚܪ̈ܢܐ' ),
        'DoubleRedirects'           => array( 'ܨܘܝܒ̈ܐ_ܥܦܝ̈ܦܐ' ),
        'EditWatchlist'             => array( 'ܫܚܠܦ_ܪ̈ܗܝܬܐ' ),
        'Emailuser'                 => array( 'ܫܕܪ_ܒܝܠܕܪܐ_ܐܠܩܛܪܘܢܝܐ_ܠܡܦܠܚܢܐ' ),
index c757c5f..b8a6061 100644 (file)
@@ -52,7 +52,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'صفح_قديمه' ),
        'Blankpage'                 => array( 'صفحه_فارضيه' ),
        'Block'                     => array( 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ),
-       'Blockme'                   => array( 'بلوك_لنفسى' ),
        'Booksources'               => array( 'مصادر_كتاب' ),
        'BrokenRedirects'           => array( 'تحويلات_مكسوره' ),
        'Categories'                => array( 'تصانيف' ),
@@ -62,7 +61,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ابتدى_حساب' ),
        'Deadendpages'              => array( 'صفح_نهايه_مسدوده' ),
        'DeletedContributions'      => array( 'مساهمات_ممسوحه' ),
-       'Disambiguations'           => array( 'توضيحات' ),
        'DoubleRedirects'           => array( 'تحويلات_دوبل' ),
        'Emailuser'                 => array( 'ابعت_ايميل_لليوزر' ),
        'Export'                    => array( 'تصدير' ),
@@ -244,8 +242,8 @@ $magicWords = array(
        'revisiontimestamp'         => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'جمع:', 'PLURAL:' ),
-       'fullurl'                   => array( '0', 'مسار_كامل:', 'عنوان_كامل:', 'FULLURL:' ),
-       'fullurle'                  => array( '0', 'عنوان_كامل:', 'مسار_كامل:', 'FULLURLE:' ),
+       'fullurl'                   => array( '0', 'عنوان_كامل:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', 'مسار_كامل:', 'FULLURLE:' ),
        'lcfirst'                   => array( '0', 'عنوان_كبير:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'عنوان_صغير:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'صغير:', 'LC:' ),
@@ -310,12 +308,12 @@ $messages = array(
 'tog-hidepatrolled' => 'خبى التعديلات المتراجعه من اخر التعديلات',
 'tog-newpageshidepatrolled' => 'خبى الصفح المتراجعه من ليستة الصفح الجديده',
 'tog-extendwatchlist' => 'وسع ليستة المراقبه علشان تبين كل التعديلات, مش بس اجدد تعديلات',
-'tog-usenewrc' => 'استعÙ\85Ù\84 Ø§Ø¬Ø¯Ø¯ ØªØºÙ\8aÙ\8aرات Ù\85تÙ\82Ù\88Ù\8aÙ\87 (بÙ\8aحتاج JavaScript).',
+'tog-usenewrc' => 'جÙ\85ع  Ø§Ù\84تغÙ\8aÙ\8aرات  Ø­Ø³Ø¨ Ø§Ù\84صÙ\81Ø­Ù\87 Ù\81 Ø§Ø¬Ø¯Ø¯ Ø§Ù\84تغÙ\8aÙ\8aرات Ù\88 Ù\84ستة Ø§Ù\84صÙ\81Ø­ Ø§Ù\84Ù\84Ù\89 Ø¨Ø§Ø±Ø§Ù\82بÙ\87ا',
 'tog-numberheadings' => 'رقم العناوين اوتوماتيك',
-'tog-showtoolbar' => 'بÙ\8aÙ\86 Ø§Ù\84toolbar Ø¨ØªØ§Ø¹ Ø§Ù\84تعدÙ\8aÙ\84 (بÙ\8aحتاج JavaScript)',
-'tog-editondblclick' => 'عدل الصفح لما تدوس مرتين (بيحتاج JavaScript)',
+'tog-showtoolbar' => 'بÙ\8aÙ\86 Ø´Ø±Ù\8aØ· Ø§Ù\84تعدÙ\8aÙ\84',
+'tog-editondblclick' => 'عدل الصفح لما تدوس مرتين',
 'tog-editsection' => 'اسمح بـ تعديل الاجزاء عن طريق لينكات [تعديل]',
-'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل right-click بـ الماوس على عناوين الاجزاء (بيحتاج JavaScript)',
+'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل كليك يمين بـالماوس على عناوين الاجزاء',
 'tog-showtoc' => 'بين جدول المحتويات (بتاع الصفح اللى فيها اكتر من 3 عناوين)',
 'tog-rememberpassword' => ' (لمدة   $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا',
 'tog-watchcreations' => 'زوّد الصفح اللى ابتديتها على ليستة الصفح اللى باراقبها.',
@@ -334,7 +332,7 @@ $messages = array(
 'tog-shownumberswatching' => 'بين عدد اليوزرز المراقبين',
 'tog-oldsig' => 'الامضا دلوقتى:',
 'tog-fancysig' => 'امضا خام (من غير لينك أوتوماتيك)',
-'tog-uselivepreview' => 'استخدم البروفة السريعة (جافاسكريبت) (تجريبي)',
+'tog-uselivepreview' => 'استخدم البروفه السريعه (تجريبي)',
 'tog-forceeditsummary' => 'نبهنى عند تدخيل ملخص للتعديل  فاضي',
 'tog-watchlisthideown' => 'خبى التعديلات بتاعتى من لستة المراقبة',
 'tog-watchlisthidebots' => 'خبى التعديلات بتاعة البوت من لستة المراقبة',
@@ -348,10 +346,11 @@ $messages = array(
 'tog-noconvertlink' => 'عطل تحويل عناوين الوصلات',
 'tog-norollbackdiff' => 'الغى الاختلافات بعد ما تعمل الرول باك',
 'tog-useeditwarning' => 'حذّرنى لما اسيب صفحة تعديل فيها تغييرات مش متسييڤه',
+'tog-prefershttps' => 'إستخدم  وصله متأمنه بعد الدخول',
 
 'underline-always' => 'دايما',
 'underline-never' => 'ابدا',
-'underline-default' => 'على حسب إعدادات المتصفح',
+'underline-default' => ' حسب  المظهر و لا البراوزر',
 
 # Font style option in Special:Preferences
 'editfont-style' => ':الفونت بتاع مساحة التعديل',
@@ -411,6 +410,18 @@ $messages = array(
 'oct' => 'اكتوبر',
 'nov' => 'نوفمبر',
 'dec' => 'ديسمبر',
+'january-date' => 'يناير $1',
+'february-date' => 'فبراير $1',
+'march-date' => 'مارس $1',
+'april-date' => 'ابريل $1',
+'may-date' => 'مايو $1',
+'june-date' => 'يونيه $1',
+'july-date' => 'يوليه $1',
+'august-date' => 'اغسطس $1',
+'september-date' => 'سبتمبر $1',
+'october-date' => 'اكتوبر $1',
+'november-date' => 'نوفمبر $1',
+'december-date' => 'ديسمبر $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|تصنيف|تصانيف}}',
@@ -429,12 +440,14 @@ $messages = array(
 'listingcontinuesabbrev' => 'متابعه',
 'index-category' => 'صفحات متفهرسه',
 'noindex-category' => 'صفحات مش متفهرسه',
+'broken-file-category' => 'صفحات  فيها روابط ملفات مش شغاله',
 
 'about' => 'عن',
 'article' => 'صفحة محتوى',
 'newwindow' => '(بتفتح ويندو جديده)',
 'cancel' => 'كانسل',
 'moredotdotdot' => 'اكتر...',
+'morenotlisted' => 'اللسته دى  مش كامله.',
 'mypage' => 'صفحه',
 'mytalk' => 'كلام',
 'anontalk' => 'المناقشة مع عنوان الأيبى دا',
@@ -458,6 +471,7 @@ $messages = array(
 'vector-action-protect' => 'حمايه',
 'vector-action-undelete' => 'الغى المسح',
 'vector-action-unprotect' => 'غير الحمايه',
+'vector-simplesearch-preference' => ' تشغيل شريط التدوير  المبسط (لمظهر فيكتور بس)',
 'vector-view-create' => 'اعمل',
 'vector-view-edit' => 'تعديل',
 'vector-view-history' => 'استعراض التاريخ',
@@ -467,6 +481,7 @@ $messages = array(
 'namespaces' => 'النطاقات',
 'variants' => 'المتغيرات',
 
+'navigation-heading' => 'لستة التصفح',
 'errorpagetitle' => 'غلطه',
 'returnto' => 'ارجع ل $1.',
 'tagline' => 'من ويكيبيديا, الموسوعه الحره',
@@ -481,13 +496,16 @@ $messages = array(
 'printableversion' => 'نسخه للطبع',
 'permalink' => 'لينك دايم',
 'print' => 'اطبع',
+'view' => 'شوف',
 'edit' => 'تعديل',
 'create' => 'إبتدى',
 'editthispage' => 'عدل الصفحه دى',
 'create-this-page' => 'أنشيء الصفحه دى',
 'delete' => 'مسح',
 'deletethispage' => 'امسح الصفحه دى',
+'undeletethispage' => 'استرجاع الصفحه دى',
 'undelete_short' => 'استرجاع {{PLURAL:$1|تعديل واحد|تعديلان|$1 تعديلات|$1 تعديل|$1 تعديلا}}',
+'viewdeleted_short' => '{{PLURAL:$1|}}{{PLURAL:$1|تعديل واحد ملغي|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغي|$1 تعديل ملغي}}',
 'protect' => 'حمايه',
 'protect_change' => 'غيّر',
 'protectthispage' => 'احمى الصفحه دى',
@@ -532,7 +550,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' => 'اÙ\84Ù\85حتÙ\88Ù\89 Ù\85Ù\88جÙ\88د ØªØ­Øª $1.',
+'copyright' => 'اÙ\84Ù\83Ù\84اÙ\85 Ù\88 Ø§Ù\84صÙ\88ر Ù\85Ù\88جÙ\88دÙ\8aÙ\86 Ø­Ø³Ø¨  $ 1 Ù\85اعدا Ø§Ù\84حاÙ\84ات Ø¥Ù\84Ù\84Ù\89 Ù\85Ù\83تÙ\88ب Ø¹Ù\86دÙ\87ا Ø­Ø§Ø¬Ù\87 ØªØ§Ù\86Ù\8aÙ\87.',
 'copyrightpage' => '{{ns:project}}:حقوق النسخ',
 'currentevents' => 'الاخبار دلوقتى',
 'currentevents-url' => 'Project:الاخبار دلوقتى',
@@ -559,6 +577,10 @@ $1',
 'ok' => 'موافئ',
 'retrievedfrom' => 'اتجابت من "$1"',
 'youhavenewmessages' => 'عندك $1 ($2).',
+'youhavenewmessagesfromusers' => 'عندك $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر|$3 يوزر}} ($2).',
+'youhavenewmessagesmanyusers' => 'عندك $1 من يوزرات كتير  ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|رساله جديده|999=رسايل جديده}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|}}{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
 'youhavenewmessagesmulti' => 'عندك ميسيدج جديدة فى $1',
 'editsection' => 'تعديل',
 'editold' => 'تعديل',
@@ -569,6 +591,8 @@ $1',
 'toc' => 'المحتويات',
 'showtoc' => 'عرض',
 'hidetoc' => 'تخبية',
+'collapsible-collapse' => 'خبى',
+'collapsible-expand' => 'اتوسع',
 'thisisdeleted' => 'عرض او استرجاع $1؟',
 'viewdeleted' => 'عرض $1؟',
 'restorelink' => '{{PLURAL:$1|تعديل واحد ملغي|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغي|$1 تعديل ملغي}}',
@@ -580,6 +604,8 @@ $1',
 'page-rss-feed' => '"$1" ار‌ اس‌ اس فييد',
 'page-atom-feed' => '"$1" فييد أتوم',
 'red-link-title' => '$1 (الصفحه مالهاش وجود)',
+'sort-descending' => 'تنازلى',
+'sort-ascending' => 'تصاعدى',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'صفحه',
@@ -639,8 +665,8 @@ $1',
 'badtitle' => 'عنوان غلط',
 'badtitletext' => 'العنوان المطلوب للصفحه مش موجود او فاضى, او اللينك بين اللغات او بين المشاريع غلط.
 ممكن يكون موجود رمز او اكتر ما ينفع ش يستخدم فى العناوين.',
-'perfcached' => 'البيانات (الـ data) دى معمول لها كاش (cache) و ممكن ما تكونش متحدثه. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'البيانات (الـ data) دى معمول لها كاش (cache), و اخر تحديث ليها كان فى $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'البيانات  دى معمول لها كاش (cache) و ممكن ما تكونش متحدثه. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'perfcachedts' => 'البيانات  دى معمول لها كاش , و اخر تحديث ليها كان فى $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'التحديثات بتاعة الصفحه دى متعطله دلوقتى.
 البيانات (الـ data) اللى هنا مش ح تتحدث فى الوقت الحاضر.',
 'wrong_wfQuery_params' => 'محددات غلط فى wfQuery()<br />
@@ -649,10 +675,13 @@ $1',
 'viewsource' => 'عرض المصدر',
 'actionthrottled' => 'العمليه دى اتزنقت',
 'actionthrottledtext' => 'علشان نمنع ال سبام ،أنت ممنوع تعمل  الفعل دا عدد كبير من المرات فى فترة زمنية قصيرة، و انت ا تجاوزت  الحد دا . لو سمحت تحاول مرة ثانية بعد دقائق.',
-'protectedpagetext' => 'الصفحة دى اتقفلت فى وش التعديل.',
+'protectedpagetext' => 'الصفحة دى اتحمت من التعديل.',
 'viewsourcetext' => 'ممكن تشوف وتنسخ مصدر  الصفحه دى:',
-'protectedinterface' => 'الصفحة دى هى اللى بتوفر نص الواجهة بتاعة البرنامج،وهى مقفولة لمنع التخريب.',
-'editinginterface' => "'''تحذير''': أنت بتعدل صفحة بتستخدم فى الواجهة النصية  بتاعة البرنامج. التغييرات فى الصفحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. للترجمات، لو سمحت استخدم [//translatewiki.net/wiki/Main_Page?setlang=ar بيتاويكى]، مشروع ترجمة الميدياويكى.",
+'protectedinterface' => 'الصفحة دى هى اللى بتوفر نص الواجهة بتاعة البرنامج،وهى مقفولة لمنع التخريب.
+علشان إضافة أو تغيير الترجمات لجميع مشاريع الويكي،  لو سمحت روح على [//translatewiki.net/ translatewiki.net]، مشروع ترجمة ميدياويكى',
+'editinginterface' => "'''تحذير''': أنت بتعدل صفحة بتستخدم فى الواجهة النصية  بتاعة البرنامج. 
+التغييرات فى الصفحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. 
+علشان إضافة أو تغيير الترجمات لجميع مشاريع الويكي،  لو سمحت روح على [//translatewiki.net/ translatewiki.net]، مشروع ترجمة ميدياويكى",
 'cascadeprotected' => 'الصفحة دى محمية من التعديل، بسبب انها مدمجة فى {{PLURAL:$1|الصفحة|الصفحات}} دي، اللى مستعمل فيها خاصية "حماية الصفحات المدمجة" :
 $2',
 'namespaceprotected' => "ما عندكش صلاحية تعديل الصفحات  اللى فى نطاق '''$1'''.",
@@ -667,7 +696,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''أنت دلوقتى مش مسجل دخولك.'''
 
-تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو <span class='plainlinks'>[$1 الدخول مرة تانيه]</span> بنفس الاسم أو باسم تاني.
+تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو [[Special:UserLogin|الدخول مرة تانيه]] بنفس الاسم أو باسم تاني.
 ممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية فى المتصفح بتاعك.",
 'yourname' => 'اليوزرنيم:',
 'yourpassword' => 'الباسوورد:',
@@ -689,7 +718,7 @@ $2',
 'gotaccount' => "عندك حساب؟ '''$1'''.",
 'gotaccountlink' => 'دخول',
 'userlogin-resetlink' => 'نسيت تفاصيل الدخول؟',
-'createaccountmail' => 'بÙ\80 Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84',
+'createaccountmail' => 'استخدÙ\85 Ø¨Ø§Ø³Ù\88رد Ù\85ؤÙ\82تÙ\87 Ù\88 Ø¥Ø¨Ø¹ØªÙ\87ا Ø¹ Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84 Ø§Ù\84Ù\85حدد Ø¯Ù\87',
 'createaccountreason' => 'السبب:',
 'badretype' => 'كلمتين السر اللى  كتبتهم مش  زى بعضهم',
 'userexists' => 'اسم اليوزر اللى كتبته بيستعمله يوزر غيرك.
@@ -739,7 +768,7 @@ $2',
 'mailerror' => 'غلط فى بعتان الايميل : $1',
 'acct_creation_throttle_hit' => 'الناس اللى دخلت ع الويكى دا باستعمال عنوان الاى بى بتاعك فتحو {{PLURAL:$1|1 حساب|$1 حساب}} ف اليوم اللى فات دا, يعنى وصلو للحد الاقصى المسموح بيه فى الفترة الزمنيه المحدده..
 و عشان كدا, الزوار اللى بيدخلو بعنوان الاى بى دا مش مسموح لهم يفتحو حسابات اكتر فى الوقت الحالى .',
-'emailauthenticated' => 'اتأÙ\83دÙ\86ا Ù\85Ù\86 Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84 Ø¨ØªØ§Ø¹Ù\83 Ù\81Ù\89 $2 الساعة $3.',
+'emailauthenticated' => 'اتأÙ\83دÙ\86ا Ù\85Ù\86 Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84 Ø¨ØªØ§Ø¹Ù\83 Ù\8aÙ\88Ù\85 $2 الساعة $3.',
 'emailnotauthenticated' => 'لسة ما اتكدناش من الايميل بتاعك.
 مش ح يتبعتلك اى  ايميلات بخصوص الميزات دي.',
 'noemailprefs' => 'علشان الخصايص دى تشتغل لازم تحددلك عنوان ايميل.',
@@ -753,7 +782,7 @@ $2',
 
 لو سمحت تتجاهل الرسالة دى اذا الحساب دا اتفتحلك بالغلط.',
 'usernamehasherror' => 'اسم اليوزر مش ممكن يكون فيه حروف هاش',
-'login-throttled' => 'انت عملت  محاولات لوجين كتيره حديثة على الحساب ده.
+'login-throttled' => 'انت عملت  محاولات لوجين كتيره  ع الحساب ده.
 من فضلك استنى قبل المحاولة مرة تانيه.',
 'loginlanguagelabel' => 'اللغة: $1',
 
@@ -766,7 +795,7 @@ $2',
 'newpassword' => 'الباسورد جديدة:',
 'retypenew' => 'اكتب الباسورد الجديده تانى:',
 'resetpass_submit' => 'اظبط الباسورد و ادخل',
-'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح! دلوقتى  بنسجل دخولك...',
+'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح!',
 'resetpass_forbidden' => 'مش ممكن تغيير الباسورد',
 'resetpass-no-info' => 'لازم تسجل دخولك علشان تقدر توصل للصفحة دى على طول.',
 'resetpass-submit-loggedin' => 'غير الباسورد',
@@ -855,7 +884,7 @@ $2',
 'accmailtitle' => ' كلمة السر اتبعتت .',
 'accmailtext' => "الباسورد العشوائيه اللى اتعملت لـ[[User talk:$1|$1]]  اتبعتت لـ $2.
 
-الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''  وقت تسجيل الدخول.",
+الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''   بعد  تسجيل الدخول.",
 'newarticle' => '(جديد)',
 'newarticletext' => "انت وصلت لصفحه مابتدتش لسه.
 علشان  تبتدى الصفحة ابتدى الكتابه فى الصندوق اللى تحت.
@@ -924,12 +953,12 @@ $2',
 'copyrightwarning2' => "لو سمحت تعمل حسابك ان كل مشاركاتك فى {{SITENAME}} ممكن المشاركين التانيين يعدلوها،يغيروها، او يمسحوها خالص. لو مانتش حابب ان كتاباتك تتعدل و تتغير بالشكل دا، فياريت ما تنشرهاش هنا.<br />.
 و كمان انت بتدينا كلمة شرف  انك صاحب الكتابات دي، او انك نقلتها من مكان مش خاضع لحقوق النشر .(شوف التفاصيل فى $1 ).
 '''لو سمحت ما تحطش هنا اى نص خاضع لحقوق النشر من غير تصريح!'''.",
-'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو $2 كيلوبايت.
+'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.
 مش ممكن يتحفظ.'''",
-'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلوقاي.
+'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلواتى.
 لو حبيت ممكن  تنسخ النص وتحفظه فى ملف نصى علشان تستعمله بعدين.'''
 
-الإدارى اللى أغلقها أعطى هذا التفسير: $1",
+الإدارى اللى قفلها كتب السبب دا $1",
 'protectedpagewarning' => "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرات السيسوبات هما بس اللى يقدرو يعدلوها.'''
 اخر سجل محطوط تحت علشان المراجعه:",
 'semiprotectedpagewarning' => "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.
@@ -1029,7 +1058,7 @@ $2',
 حاول [[Special:Search|التدوير فى الويكى]] عن صفحات جديدة ليها صلة.',
 
 # Revision deletion
-'rev-deleted-comment' => '(التعليق اتشال)',
+'rev-deleted-comment' => '( ملخص التعديل اتمسح)',
 'rev-deleted-user' => '(اسم اليوزر اتشال)',
 'rev-deleted-event' => '(السجل إتشال)',
 'rev-deleted-user-contribs' => '[اسم اليوزر أو الآى بى اتشال - التعديل مخفى من المساهمات]',
@@ -1522,7 +1551,7 @@ $1",
 'rc_categories' => 'حصر لتصنيفات (مفصولة برمز "|")',
 'rc_categories_any' => 'أى',
 'newsectionsummary' => '/* $1 */ قسم جديد',
-'rc-enhanced-expand' => 'عرض التفاصيل (يتطلب جافاسكريبت)',
+'rc-enhanced-expand' => '[اعرض التفاصيل]',
 'rc-enhanced-hide' => 'إخفاء التفاصيل',
 
 # Recent changes linked
@@ -2283,7 +2312,7 @@ $1',
 'contributions' => 'تعديلات اليوزر {{GENDER:$1|اليوزر|اليوزره}}',
 'contributions-title' => 'مساهمات اليوزر ل$1',
 'mycontris' => 'تعديلاتى',
-'contribsub2' => 'لليوزر $1 ($2)',
+'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'مالقيناش   تغييرات تطابق المحددات دي.',
 'uctop' => '(آخر تعديل)',
 'month' => 'من شهر (واللى قبل كده):',
@@ -2782,7 +2811,7 @@ $1',
 'file-info-size' => '$1 × $2 بكسل حجم الفايل: $3، نوع MIME: $4',
 'file-nohires' => 'مافيش  ريزوليوشن اعلى متوفر.',
 'svg-long-desc' => 'ملف SVG، اساسا $1 × $2 بكسل، حجم الملف: $3',
-'show-big-image' => 'الصورة بدقه كامله',
+'show-big-image' => 'الصوره الاصليه',
 'file-info-gif-looped' => 'ملفوف',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|برواز|براويز}}',
 
index 2497b3d..342676b 100644 (file)
@@ -75,7 +75,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ভুল_শিৰোনাম' ),
        'Blankpage'                 => array( 'উকা_পৃষ্ঠা' ),
        'Block'                     => array( 'অৱৰোধ', 'আই_পি_অৱৰোধ', 'সদস্য_অৱৰোধ' ),
-       'Blockme'                   => array( 'মোক_অৱৰোধ_কৰক' ),
        'Booksources'               => array( 'গ্ৰন্থৰ_উত্স' ),
        'BrokenRedirects'           => array( 'ভঙা_পূণঃনিৰ্দেশনাসমূহ' ),
        'Categories'                => array( 'শ্ৰেণীসমূহ' ),
@@ -86,10 +85,10 @@ $specialPageAliases = array(
        'Contributions'             => array( 'বৰঙনিসমূহ', 'বৰঙনিদাতাসকল', 'বৰঙনি' ),
        'CreateAccount'             => array( 'সদস্যভুক্তি' ),
        'DeletedContributions'      => array( 'বিলোপ_কৰা_বৰঙনিসমূহ' ),
-       'Disambiguations'           => array( 'দ্ব্যৰ্থতা_দূৰীকৰণসমূহ' ),
        'DoubleRedirects'           => array( 'দ্বি_পুনৰ্নিৰ্দেশনাসমূহ' ),
        'EditWatchlist'             => array( 'লক্ষ্যতালিকা_সম্পাদনা_কৰক' ),
        'Emailuser'                 => array( 'সদস্যলৈ_ই-মেইল_পঠিয়াওক' ),
+       'ExpandTemplates'           => array( 'সাঁচবোৰ_প্ৰসাৰ_কৰক' ),
        'Export'                    => array( 'ৰপ্তানি' ),
        'Fewestrevisions'           => array( 'নূন্যতম_সংস্কৰণসমূহ' ),
        'FileDuplicateSearch'       => array( 'প্ৰতিলিপি_সনিবিষ্ট_নথি_অনুসন্ধান' ),
@@ -160,7 +159,6 @@ $specialPageAliases = array(
 );
 
 $magicWords = array(
-       'redirect'                  => array( '0', 'পুণঃনিৰ্দেশ', '#REDIRECT' ),
        'special'                   => array( '0', 'বিশেষ', 'special' ),
        'hiddencat'                 => array( '1', '__গোপন_শ্ৰেণী__', '__HIDDENCAT__' ),
        'pagesize'                  => array( '1', 'পৃষ্ঠাৰ_আকাৰ', 'PAGESIZE' ),
index 4ff8851..6f165d2 100644 (file)
@@ -339,8 +339,8 @@ $1",
 'youhavenewmessages' => 'Tienes $1 ($2).',
 'youhavenewmessagesfromusers' => "Tienes $1 {{PLURAL:$3|d'otru usuariu|de $3 usuarios}} ($2).",
 'youhavenewmessagesmanyusers' => 'Tienes $1 de munchos usuarios ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un mensaxe nuevu|$1 mensaxes nuevos}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|cambéu postreru|cambeos postreros}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un mensaxe nuevu|999=mensaxes nuevos}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|cambéu postreru|999=cambeos postreros}}',
 'youhavenewmessagesmulti' => 'Tienes mensaxes nuevos en $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -1510,7 +1510,8 @@ Esta información sedrá pública.',
 'recentchanges-label-minor' => 'Esta ye una edición menor',
 'recentchanges-label-bot' => 'Esta edición ta fecha por un bot',
 'recentchanges-label-unpatrolled' => 'Esta edición ta ensin patrullar entá',
-'recentchanges-legend-newpage' => '$1 - páxina nueva',
+'recentchanges-label-plusminus' => "El tamañu d'esta páxina cambió nesti númberu de bytes",
+'recentchanges-legend-newpage' => '(ver tamién la  [[Special:NewPages|llista de páxines nueves]])',
 'rcnote' => "Equí embaxo {{PLURAL:$1|pue vese '''1''' cambiu|puen vese los caberos '''$1''' cambios}} {{PLURAL:$2|del caberu día|de los caberos '''$2''' díes}}, a fecha de $5, $4.",
 'rcnotefrom' => "Abaxo tan los cambeos dende '''$2''' (s'amuesen fasta '''$1''').",
 'rclistfrom' => 'Amosar los nuevos cambios dende $1',
index 9239251..e8752a3 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Барлыҡ_битәр' ),
        'Blankpage'                 => array( 'Буш_бит' ),
        'Block'                     => array( 'Блоклау' ),
-       'Blockme'                   => array( 'Мине_блокла' ),
        'Booksources'               => array( 'Китап_сығанаҡтары' ),
        'BrokenRedirects'           => array( 'Өҙөлгән_йүнәлтеүҙәр' ),
        'Categories'                => array( 'Категориялар' ),
@@ -78,7 +77,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Иҫәп_яҙыуы_яһау' ),
        'Deadendpages'              => array( 'Көрсөк_биттәр' ),
        'DeletedContributions'      => array( 'Юйылған_өлөш' ),
-       'Disambiguations'           => array( 'Күп_мәғәнәлелек' ),
        'DoubleRedirects'           => array( 'Икеле_йүнәлтеүҙәр' ),
        'EditWatchlist'             => array( 'Күҙәтеү_исемлеген_мөхәррирләү' ),
        'Emailuser'                 => array( 'Ҡатнашыусыға_хат' ),
index 32dd34d..daacbe7 100644 (file)
@@ -63,7 +63,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'صفحات قدیمی' ),
        'Blankpage'                 => array( 'صفحه هالیک' ),
        'Block'                     => array( 'محدود آی پی' ),
-       'Blockme'                   => array( 'محدودیت من' ),
        'Booksources'               => array( 'منابع کتاب' ),
        'BrokenRedirects'           => array( 'پرشتگین غیرمستقیم' ),
        'Categories'                => array( 'دستجات' ),
@@ -72,7 +71,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'مشارکتان' ),
        'CreateAccount'             => array( 'شرکتن حساب' ),
        'Deadendpages'              => array( 'مرتگین صفحات' ),
-       'Disambiguations'           => array( 'رفع ابهام' ),
        'DoubleRedirects'           => array( 'دوبل غیر مستقیم' ),
        'Emailuser'                 => array( 'ایمیل کاربر' ),
        'Export'                    => array( 'درگیزگ' ),
index 2437e92..798416b 100644 (file)
@@ -372,8 +372,8 @@ $1',
 'youhavenewmessages' => 'Ika igwa nin $1 ($2).',
 'youhavenewmessagesfromusers' => 'Ika igwa nin $1 gikan sa {{PLURAL:$3|ibang paragamit|$3 mga paragamit}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ika igwa nin $1 gikan sa kadakol na mga paragamit ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|sarong bagong mensahe|bagong mga mensahe}}',
-'newmessagesdifflinkplural' => 'huring {{PLURAL:$1|kaliwatan|mga kaliwatan}}',
+'newmessageslinkplural' => '{{PLURAL:$1|sarong baguhong mensahe|999=baguhong mga mensahe}}',
+'newmessagesdifflinkplural' => 'kahurihan na {{PLURAL:$1|kaliwatan|999=mga kaliwatan}}',
 'youhavenewmessagesmulti' => 'Igwa ka nin mga bàgong mensahe sa $1',
 'editsection' => 'liwatón',
 'editold' => 'Liwatón',
@@ -506,7 +506,8 @@ An administrador na iyo an nagkandado kaini nagpahayag kaining kapaliwanagan: "$
 'invalidtitle-knownnamespace' => 'Imbalidong titulo na igwang espasyadong ngaran na "$2" asin teksto na "$3"',
 'invalidtitle-unknownnamespace' => 'Imbalidong titulo na igwang nin bakong bistado na bilang kan espasyadong ngaran na $1 asin teksto na "$2"',
 'exception-nologin' => 'Dae ka nakalaog',
-'exception-nologin-text' => 'Ining pahina o aksyon minakaipo saimo na maglaog kaining wiki.',
+'exception-nologin-text' => 'Tabi man [[Special:Userlogin|maglaog]]na tanganing makalangkay sa pahinang ini o aksyon.',
+'exception-nologin-text-manual' => 'Tabi man $1 na tanganing makalangkay sa pahinang ini o aksyon.',
 
 # Virus scanner
 'virus-badscanner' => "Raot na kasalansanan: Bakong bistadong virus scanner: ''$1''",
@@ -1228,6 +1229,7 @@ Prubaran na panigmitan an saimong kahaputan nin ''all:'' sa paghanap kan gabos n
 'preferences' => 'Mga kabòtan',
 'mypreferences' => 'Mga Kamuyahan ko',
 'prefs-edits' => 'Bilang kan mga hirá:',
+'prefsnologintext2' => 'Tabi man $1 tanganing maikaag an mga kamuyahan nin paragamit.',
 'changepassword' => 'Ribayan an sekretong panlaog',
 'prefs-skin' => "''Skin''",
 'skin-preview' => 'Tânawon',
@@ -1527,6 +1529,8 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'recentchanges-label-minor' => 'Ini saro sanang menor na pagliwat',
 'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
 'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
+'recentchanges-label-plusminus' => 'An kadakulaan nin pahina pinagliwat sa paagi kaining numero nin mga bayta',
+'recentchanges-legend-newpage' => '(hilngon man [[Special:NewPages|listahan kan mga baguhong pahina]])',
 'rcnote' => "Yaon sa ibaba iyo {{PLURAL:$1|an '''1''' pagbabago|an mga huring '''$1''' mga pagbabago}} kan nakaaging huring {{PLURAL:$2|aldaw|'''$2''' mga aldaw}}, poon pa kan $5, $4.",
 'rcnotefrom' => "Sa ibaba iyo an mga kaliwatan poon kan '''$2''' (sagkod sa '''$1''' na ipinapahiling).",
 'rclistfrom' => 'Ipahiling an baguhon na mga kaliwatan magpoon kan $1',
@@ -2245,20 +2249,16 @@ Kontaka an paraliwat:
 e-surat: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Dae na magkakaigwa pa nin ibang pagpapaisi sa kaso na may kadagdagan pang mga pagbabago laen lang kun ika magbisita sa pahinang ini.
-Ika mapuwede man na makapagbago kan bandera nin pagpapaisi para sa gabos mong pinagbabantayan na mga pahina na yaon sa saimong bantay-listahan.
+Dae na magkakaigwa pa nin ibang pagpapaisi sa kaso na may kadagdagan pang aktibidad laen lang kun ika magbisita sa pahinang ini mantang ika nakalaog. Ika mapuwede man na makapagbago kan bandera nin pagpapaisi para sa gabos mong pinagbabantayan na mga pahina na yaon sa saimong bantay-listahan.
 
 An saimong mainamigong {{SITENAME}} sistema nin pagpapaisi
 
 --
-Sa pagbabago kan saimong e-surat na pagpapaising panuytoy, magbisita sa
-{{canonicalurl:{{#special:Mga Kagustuhan}}}}
+Sa pagbabago kan saimong e-surat na pagpapaising panuytoy, magbisita sa {{canonicalurl:{{#special:Mga Kagustuhan}}}}
 
-Sa pagbabago kan saimong bantay-listahang panuytoy, magbisita sa
-{{canonicalurl:{{#special:EditWatchlist}}}}
+Sa pagbabago kan saimong bantay-listahang panuytoy, magbisita sa {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Sa pagpura ka pahina gikan sa saimong bantay-listahan, magbisita sa
-$UNWATCHURL
+Sa pagpura ka pahina gikan sa saimong bantay-listahan, magbisita sa $UNWATCHURL
 
 Balik-simbag asin kadagdagang asistensiya:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
@@ -3062,7 +3062,7 @@ Sa pagpapa-andar kaini, an saimong sistema mapupuwedeng makompromiso.",
 'svg-long-desc' => 'SVG na sagunson, nangangaranan nin $1 x $2 na mga piksel, sukol nin sagunson: $3',
 'svg-long-desc-animated' => 'Animatadong SVG na sagunson, nangangaranang $1 x $2 piksel, kadakulaan nin sagunson: $3',
 'svg-long-error' => 'Imbalidong SVG na sagunson: $1',
-'show-big-image' => 'Todong resolusyon',
+'show-big-image' => 'Orihinal na sagunson',
 'show-big-image-preview' => 'Sukol kaining patanaw: $1.',
 'show-big-image-other' => 'Ibang {{PLURAL:$2|resolusyon|mga resoluyon}}: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -3756,6 +3756,7 @@ Ika dapat na nakapagresibe na kan [{{SERVER}}{{SCRIPTPATH}}/COPYING sarong kopya
 
 # Special:SpecialPages
 'specialpages' => 'Mga espesyal na pahina',
+'specialpages-note-top' => 'Balaynan',
 'specialpages-note' => '* Normal espesyal na mga pahina.
 * <span class="mw-specialpagerestricted">Restriktadong espesyal na mga pahina.</span>',
 'specialpages-group-maintenance' => 'Mga talaan nin pagpangataman',
@@ -3971,6 +3972,7 @@ Kun bako man, ika makakagamit nin sayon na porma sa ibaba. An saimong komento id
 'limitreport-expensivefunctioncount' => 'Bilang kan hiro nin mamahalon na parabangay',
 
 # Special:ExpandTemplates
+'expandtemplates' => 'Bigwakon na mga panguyog',
 'expand_templates_output' => 'Resulta',
 'expand_templates_remove_comments' => 'Tanggalon an mga komento',
 'expand_templates_preview' => 'Patânaw',
index bbdee74..9e56101 100644 (file)
@@ -65,7 +65,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Стварыць_рахунак' ),
        'Deadendpages'              => array( 'Тупіковыя_старонкі' ),
        'DeletedContributions'      => array( 'Выдалены_ўнёсак' ),
-       'Disambiguations'           => array( 'Неадназначнасьці' ),
        'DoubleRedirects'           => array( 'Двайныя_перанакіраваньні' ),
        'Emailuser'                 => array( 'Даслаць_ліст' ),
        'Export'                    => array( 'Экспарт' ),
index 512dee0..f5dcc0d 100644 (file)
@@ -58,7 +58,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Стари_страници' ),
        'Blankpage'                 => array( 'Празна_страница' ),
        'Block'                     => array( 'Блокиране' ),
-       'Blockme'                   => array( 'Блокирай_ме' ),
        'Booksources'               => array( 'Източници_на_книги' ),
        'BrokenRedirects'           => array( 'Невалидни_пренасочвания' ),
        'Categories'                => array( 'Категории' ),
@@ -68,9 +67,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Създаване_на_сметка' ),
        'Deadendpages'              => array( 'Задънени_страници' ),
        'DeletedContributions'      => array( 'Изтрити_приноси' ),
-       'Disambiguations'           => array( 'Пояснителни_страници' ),
        'DoubleRedirects'           => array( 'Двойни_пренасочвания' ),
        'Emailuser'                 => array( 'Писмо_на_потребител' ),
+       'ExpandTemplates'           => array( 'Разгръщане_на_шаблони' ),
        'Export'                    => array( 'Изнасяне' ),
        'Fewestrevisions'           => array( 'Страници_с_най-малко_версии' ),
        'FileDuplicateSearch'       => array( 'Повтарящи_се_файлове' ),
@@ -109,6 +108,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Защитени_страници' ),
        'Protectedtitles'           => array( 'Защитени_заглавия' ),
        'Randompage'                => array( 'Случайна_страница' ),
+       'RandomInCategory'          => array( 'Случайна_страница_в_категория' ),
        'Randomredirect'            => array( 'Случайно_пренасочване' ),
        'Recentchanges'             => array( 'Последни_промени' ),
        'Recentchangeslinked'       => array( 'Свързани_промени' ),
@@ -515,8 +515,8 @@ $1',
 'youhavenewmessages' => 'Имате $1 ($2).',
 'youhavenewmessagesfromusers' => 'Имате $1 от {{PLURAL:$3|друг потребител|$3 потребители}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 от много потребители ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ново съобщение|нови съобщения}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последна промяна|последни промени}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ново съобщение|999=нови съобщения}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последна промяна|999=последни промени}}',
 'youhavenewmessagesmulti' => 'Имате нови съобщения в $1',
 'editsection' => 'редактиране',
 'editold' => 'редактиране',
@@ -1604,7 +1604,7 @@ $1",
 'recentchanges-label-minor' => 'Това е малка промяна',
 'recentchanges-label-bot' => 'Тази редакция е извършена от робот',
 'recentchanges-label-unpatrolled' => 'Тази редакция все още не е проверена',
-'recentchanges-legend-newpage' => '$1 - нова страница',
+'recentchanges-legend-newpage' => '(вижте също [[Special:NewPages|списъка с нови страници]])',
 'rcnote' => "{{PLURAL:$1|Показана е '''1''' промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния ден|последните '''$2''' дни}}, към $5, $4.",
 'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
 'rclistfrom' => 'Показване на промени, като се започва от $1.',
@@ -1835,8 +1835,7 @@ $1',
 'upload_source_file' => ' (файл на вашия компютър)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Тази специална страница показва всички качени файлове.
-При филтриране от потребителя се показват само файловете, за които потребителят е качил последната версия.',
+'listfiles-summary' => 'Тази специална страница показва всички качени файлове.',
 'listfiles_search_for' => 'Търсене по име на файла:',
 'imgfile' => 'файл',
 'listfiles' => 'Списък на файловете',
@@ -2139,7 +2138,8 @@ $1',
 # Special:ListGroupRights
 'listgrouprights' => 'Права по потребителски групи',
 'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Поверено право</span>
+'listgrouprights-key' => 'Легенда:
+* <span class="listgrouprights-granted">Поверено право</span>
 * <span class="listgrouprights-revoked">Отнето право</span>',
 'listgrouprights-group' => 'Група',
 'listgrouprights-rights' => 'Права',
@@ -3496,7 +3496,7 @@ $5
 
 Валидността на този код за потвърждение ще важи до $4.',
 'confirmemail_body_set' => 'Някой, вероятно вие, от IP адрес $1,
-е посочил този адрес за електронната поща, свързан с потребителска сметка "$2" в {{SITENAME}}.
+е посочил този адрес за електронната поща, свързан с потребителска сметка „$2“ в {{SITENAME}}.
 
 За потвърждаване, че тази потребителска сметка наистина ви принадлежи и за да активирате отново функциите, свързани с електронна поща в {{SITENAME}}, необходимо е да отворите във вашия браузър следната препратка:
 
index 1fa6419..fcf308d 100644 (file)
@@ -61,7 +61,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Judul_nang_buruk' ),
        'Blankpage'                 => array( 'Tungkaran_kusung' ),
        'Block'                     => array( 'Blukir_pamakai' ),
-       'Blockme'                   => array( 'Blukir_ulun' ),
        'Booksources'               => array( 'Sumbar_buku' ),
        'BrokenRedirects'           => array( 'Paugahan_rakai' ),
        'Categories'                => array( 'Daptar_tumbung' ),
@@ -73,8 +72,8 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Ulah_akun' ),
        'Deadendpages'              => array( 'Tungkaran_buntu' ),
        'DeletedContributions'      => array( 'Sumbangan_nang_dihapus' ),
-       'Disambiguations'           => array( 'Disambiguasi' ),
        'EditWatchlist'             => array( 'Babak_daptar_pantauan' ),
+       'ExpandTemplates'           => array( 'Kambangakan_citakan' ),
        'Fewestrevisions'           => array( 'Paubahan_tasadikit' ),
        'FileDuplicateSearch'       => array( 'Panggagaian_barakas_kambar' ),
        'Filepath'                  => array( 'Andakan_barakas' ),
@@ -110,6 +109,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Tungkaran_nang_dilindungi' ),
        'Protectedtitles'           => array( 'Judul_nang_dilindungi' ),
        'Randompage'                => array( 'Tungkaran_babarang' ),
+       'RandomInCategory'          => array( 'Babarang_di_tumbung' ),
        'Randomredirect'            => array( 'Paugahan_babarang' ),
        'Recentchanges'             => array( 'Paubahan_pahanyarnya' ),
        'Recentchangeslinked'       => array( 'Paubahan_tarait' ),
index e52596c..e16248b 100644 (file)
@@ -1486,7 +1486,7 @@ $1",
 'recentchanges-label-minor' => 'এটি একটি অনুল্লেখিত সম্পাদনা',
 'recentchanges-label-bot' => 'এটি বট দ্বারা সম্পাদিত',
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটি এখনও পরীক্ষিত নয়',
-'recentchanges-label-plusminus' => 'পাতার আকার এই পরিমান বাইট পরিবর্তিত হয়েছে',
+'recentchanges-label-plusminus' => 'পাতার আকার এই পরিমান বাইট পরিবর্তিত হয়েছে',
 'recentchanges-legend-newpage' => '(আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])',
 'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnote' => "বিগত {{PLURAL:$2|দিনে|'''$2''' দিনে}} সংঘটিত {{PLURAL:$1|'''১'''|'''$1'''}}টি পরিবর্তন নীচে দেখানো হল (যেখানে বর্তমান সময় ও তারিখ $5, $4)।",
@@ -2401,7 +2401,7 @@ $1',
 
 # Namespace form on various pages
 'namespace' => 'নামস্থান:',
-'invert' => 'বà§\8dযà§\81তà§\8dক্রমে নির্বাচন',
+'invert' => 'বিপরà§\80তক্রমে নির্বাচন',
 'tooltip-invert' => 'যে সকল নামস্থানের পাতাগুলোর পরিবর্তনসমূহর দেখতে চাচ্ছেন না সেগুলোর নামের পাশে টিক দিন',
 'namespace_association' => 'সংশ্লিষ্ট নামস্থান',
 'tooltip-namespace_association' => 'এখানে টিক দেয়ার মাধ্যমে সংশ্লিষ্ট নামস্থান এবং আলাপপাতাসমূহ অন্তর্ভুক্ত করছেন',
index 04dbfbe..ffeb49f 100644 (file)
@@ -37,8 +37,9 @@ $messages = array(
 'tog-extendwatchlist' => 'མཉམ་འཇོག་ཐོ་བཀྲམས་ཏེ་ཉེ་ལམ་ཙམ་མིན་པར་བཟོ་བཅོས་ཡོངས་རྫོགས་སྟོན་ཅིག',
 'tog-usenewrc' => 'ཡར་རྒྱས་ཅན་གྱི་ཉེ་བའི་བཟོ་བཅོས་བེད་སྤྱོད་པ།(Java ཡི་བརྡ་ཆད་དགོས)',
 'tog-numberheadings' => 'རང་སྒྲིག་ཨང་རྟགས་འགོ་བརྗོད།',
-'tog-showtoolbar' => 'རྩོམ་སྒྲིག་ལག་ཆ་སྟོན།(Java ཡི་བརྡ་ཆད་དགོས།)',
-'tog-editondblclick' => 'ཤོག་ངོས་རྩོམ་སྒྲིག་བྱེད་པར་ལན་གཉིས་རྡེབ།(Java ཡི་བརྡ་ཆད་དགོས།)',
+'tog-showtoolbar' => 'རྩོམ་སྒྲིག་ལག་ཆ་སྟོན།(JavaScript ཡི་བརྡ་ཆད་དགོས།)',
+'tog-editondblclick' => 'ཤོག་ངོས་རྩོམ་སྒྲིག་བྱེད་པར་ལན་གཉིས་རྡེབ།(JavaScript ཡི་བརྡ་ཆད་དགོས།)',
+'tog-editsection' => '[སྒྲིག་བཅོས།]འབྲེལ་མཐུད་གནོན་ཏེ་སྒྲིགབཅོས་སྡེ་ཚན་ཡོད་པར་འགྱིས།',
 'tog-rememberpassword' => 'ངའི་ནང་འཛུལ་བཤར་ལྟ་ཆས་འདི་རུ་མང་མཐའ་ཉིན $1 {{PLURAL:$1}} དྲན་པར་མཛོད།',
 'tog-watchcreations' => 'ངའི་ལྟ་ཐོའི་གྲས་སུ་གསར་བཟོ་བྱས་པ་ལ་ཤོག་ངོས་ཁ་སྣོན།',
 'tog-watchdefault' => 'ངའི་ལྟ་ཐོའི་གྲས་སུ་རྩོམ་སྒྲིག་བྱས་པ་ལ་ཤོག་ངོས་ཁ་སྣོན།',
index 5c40e69..e811410 100644 (file)
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'PajennoùKozh' ),
        'Badtitle'                  => array( 'TitlFall' ),
        'Block'                     => array( 'Stankañ' ),
-       'Blockme'                   => array( 'MaStankañ' ),
        'Booksources'               => array( 'MammennoùLevr' ),
        'BrokenRedirects'           => array( 'AdkasoùTorr' ),
        'Categories'                => array( 'Rummadoù' ),
@@ -62,9 +61,9 @@ $specialPageAliases = array(
        'Confirmemail'              => array( 'KadarnaatPostel' ),
        'Contributions'             => array( 'Degasadennoù' ),
        'CreateAccount'             => array( 'KrouiñKont' ),
-       'Disambiguations'           => array( 'Disheñvelout' ),
        'DoubleRedirects'           => array( 'AdksaoùDoubl' ),
        'Emailuser'                 => array( 'PostelImplijer' ),
+       'ExpandTemplates'           => array( 'PatromoùAstennet' ),
        'Export'                    => array( 'Ezporzhiañ' ),
        'Import'                    => array( 'Enporzhiañ' ),
        'LinkSearch'                => array( 'KlaskLiamm' ),
@@ -428,7 +427,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' => 'Diwar-benn {{SITENAME}}',
 'aboutpage' => 'Project:Diwar-benn',
-'copyright' => "Danvez a c'haller implijout dindan $1.",
+'copyright' => "Danvez a c'haller implijout dindan $1 nemet ha notet e vefe ar c'hontrol.",
 'copyrightpage' => '{{ns:project}}:Gwirioù aozer (Copyright)',
 'currentevents' => 'Keleier',
 'currentevents-url' => 'Project:Keleier',
@@ -456,8 +455,8 @@ $1',
 'youhavenewmessages' => "$1 zo ganeoc'h ($2).",
 'youhavenewmessagesfromusers' => '$1 ho peus eus {{PLURAL:$3|un implijer all|$3 implijer}} ($2).',
 'youhavenewmessagesmanyusers' => ' $1 ho peus implijerien a-leizh  ($2).',
-'newmessageslinkplural' => "{{PLURAL:$1ur c'hemennad nevez|kemennadoù nevez}}",
-'newmessagesdifflinkplural' => '{{PLURAL:$1|kemennad diwezhañ|kemennadoù diwezhañ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ur gemennad nevez|999=kemennadoù nevez}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|kemennad diwezhañ|999=kemennadoù diwezhañ}}',
 'youhavenewmessagesmulti' => "Kemennoù nevez zo ganeoc'h war $1",
 'editsection' => 'kemmañ',
 'editold' => 'kemmañ',
@@ -634,6 +633,7 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
 'userlogin-resetpassword-link' => 'Ankouaet ho peus ho ker-tremen ?',
 'helplogin-url' => 'Help:Kevreañ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Skoazell evit kevreañ]]',
+'userlogin-createanother' => 'Krouiñ ur gont all',
 'createacct-join' => 'Skrivit ho titouroù amañ dindan.',
 'createacct-another-join' => 'Ebarzhiñ titouroù ar gont nevez amañ dindan.',
 'createacct-emailrequired' => "Chomlec'h postel",
@@ -1133,8 +1133,8 @@ Gouest e vo merourien all {{SITENAME}} da dapout krog en testennoù kuzhet ha da
 'revdelete-hide-user' => "Anv implijer pe chomlec'h IP an aozer",
 'revdelete-hide-restricted' => "Diverkañ ar roadennoù kement d'ar verourien ha d'ar re all",
 'revdelete-radio-same' => '(arabat cheñch)',
-'revdelete-radio-set' => 'Hewel',
-'revdelete-radio-unset' => 'Kuzhet',
+'revdelete-radio-set' => 'Kuzhet',
+'revdelete-radio-unset' => 'Hewel',
 'revdelete-suppress' => 'Diverkañ roadennoù ar verourien hag ar re all',
 'revdelete-unsuppress' => 'Lemel ar strishadurioù war ar stummoù assavet',
 'revdelete-log' => 'Abeg :',
index 9a8d8a3..cf8c6ca 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Losnaslov' ),
        'Blankpage'                 => array( 'PraznaStranica' ),
        'Block'                     => array( 'BlokirajIP' ),
-       'Blockme'                   => array( 'BlokirajMe' ),
        'Booksources'               => array( 'KnjizniIzvori' ),
        'BrokenRedirects'           => array( 'NedovršenaPreusmjerenja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -71,10 +70,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'NapraviRačun' ),
        'Deadendpages'              => array( 'MrtveStranice' ),
        'DeletedContributions'      => array( 'ObrisaniDoprinosi' ),
-       'Disambiguations'           => array( 'Čvor' ),
        'DoubleRedirects'           => array( 'DvostrukaPreusmjerenja' ),
        'EditWatchlist'             => array( 'IzmjeniPraćeniSpisak' ),
        'Emailuser'                 => array( 'EmailKorisnika' ),
+       'ExpandTemplates'           => array( 'ProsirivanjeSablona' ),
        'Export'                    => array( 'Izvoz' ),
        'Fewestrevisions'           => array( 'Najmanje_uređivane_stranice' ),
        'FileDuplicateSearch'       => array( 'PotragaDuplihFajlova' ),
@@ -113,6 +112,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'ZasticeneStranice' ),
        'Protectedtitles'           => array( 'ZasticeniNazivi' ),
        'Randompage'                => array( 'Slučajna_stranica' ),
+       'RandomInCategory'          => array( 'SlucajnoUKategoriji' ),
        'Randomredirect'            => array( 'SlucajnoPreusmjerenje' ),
        'Recentchanges'             => array( 'NedavneIzmjene' ),
        'Recentchangeslinked'       => array( 'PovezaneNedavneIzmjene' ),
index 2314ed0..063bb3f 100644 (file)
@@ -27,6 +27,7 @@
  * @author Martorell
  * @author McDutchie
  * @author Nemo bis
+ * @author Papapep
  * @author Pasqual (ca)
  * @author Paucabot
  * @author PerroVerd
@@ -79,7 +80,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Títol_incorrecte' ),
        'Blankpage'                 => array( 'Pàgina_en_blanc', 'Blanc' ),
        'Block'                     => array( 'Bloca' ),
-       'Blockme'                   => array( 'Bloca\'m' ),
        'Booksources'               => array( 'Fonts_bibliogràfiques' ),
        'BrokenRedirects'           => array( 'Redireccions_rompudes' ),
        'ChangeEmail'               => array( 'Canvia_adreça_electrònica' ),
@@ -89,9 +89,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crea_compte' ),
        'Deadendpages'              => array( 'Atzucacs' ),
        'DeletedContributions'      => array( 'Contribucions_esborrades' ),
-       'Disambiguations'           => array( 'Desambiguacions' ),
        'DoubleRedirects'           => array( 'Redireccions_dobles' ),
        'Emailuser'                 => array( 'Envia_missatge' ),
+       'ExpandTemplates'           => array( 'Expansió_de_plantilles' ),
        'Export'                    => array( 'Exporta' ),
        'Fewestrevisions'           => array( 'Pàgines_menys_editades' ),
        'FileDuplicateSearch'       => array( 'Cerca_fitxers_duplicats' ),
@@ -435,7 +435,7 @@ $messages = array(
 'redirectedfrom' => "(S'ha redirigit des de: $1)",
 'redirectpagesub' => 'Pàgina de redirecció',
 'lastmodifiedat' => 'Darrera modificació de la pàgina: $1 a les $2.',
-'viewcount' => 'Aquesta pàgina ha estat visitada {{PLURAL:$1|una vegada|$1 vegades}}.',
+'viewcount' => "S'ha visitat aquesta pàgina {{PLURAL:$1|una vegada|$1 vegades}}.",
 'protectedpage' => 'Pàgina protegida',
 'jumpto' => 'Dreceres ràpides:',
 'jumptonavigation' => 'navegació',
@@ -567,8 +567,8 @@ Aviseu-ho llavors a un [[Special:ListUsers/sysop|administrador]], deixant-li cla
 'unexpected' => "S'ha trobat un valor imprevist: «$1»=«$2».",
 'formerror' => "Error: no s'ha pogut enviar les dades del formulari",
 'badarticleerror' => 'Aquesta operació no es pot dur a terme en aquesta pàgina',
-'cannotdelete' => "No s'ha pogut esborrar la pàgina o fitxer «$1».
-Potser ja ha estat esborrat per algú altre.",
+'cannotdelete' => "No s'ha pogut suprimir la pàgina o fitxer «$1».
+Potser ja l'ha suprimit algú altre.",
 'cannotdelete-title' => 'No es pot suprimir la pàgina " $1 "',
 'delete-hook-aborted' => 'Un «hook» ha interromput la supressió.
 No ha donat cap explicació.',
@@ -737,7 +737,7 @@ Introduïu una adreça amb un format adequat o bé buideu el camp.",
 'createaccount-text' => "Algú ha creat un compte d'usuari anomenat $2 al projecte {{SITENAME}}
 ($4) amb la vostra adreça de correu electrònic. La contrasenya per a l'usuari «$2» és «$3». Hauríeu d'accedir al compte i canviar-vos aquesta contrasenya quan abans millor.
 
-Si no hi teniu cap relació i aquest compte ha estat creat per error, simplement ignoreu el missatge.",
+Si no hi teniu cap relació i aquest compte s'ha creat per error, simplement ignoreu el missatge.",
 'usernamehasherror' => "El nom d'usuari no pot contenir caràcters hash",
 'login-throttled' => "Heu realitzat massa intents d'accés a la sessió.
 Espereu $1 abans de tornar-ho a provar.",
@@ -897,8 +897,8 @@ El número d'identificació de la vostra adreça IP és $3, i l'ID del bloqueig
 'whitelistedittext' => 'Heu de $1 per modificar pàgines.',
 'confirmedittext' => "Heu de confirmar la vostra adreça electrònica abans de poder modificar les pàgines. Definiu i valideu la vostra adreça electrònica a través de les vostres [[Special:Preferences|preferències d'usuari]].",
 'nosuchsectiontitle' => 'No es pot trobar la secció',
-'nosuchsectiontext' => 'Heu intentat editar una secció que no existeix.
-Potser ha estat moguda o eliminada mentre estàveu veient la pàgina.',
+'nosuchsectiontext' => "Heu intentat editar una secció que no existeix.
+Potser s'ha mogut o eliminat mentre estàveu veient la pàgina.",
 'loginreqtitle' => 'Cal que inicieu una sessió',
 'loginreqlink' => 'inicia una sessió',
 'loginreqpagetext' => "Cal que seguiu l'enllaç «$1» per a visualitzar altres pàgines.",
@@ -937,9 +937,9 @@ Per més detalls, la darrera entrada del registre es mostra a continuació:",
 '''Encara no s'ha desat!'''",
 'userjspreview' => "'''Recordeu que només estau provant/previsualitzant el vostre JavaScript, encara no ho heu desat!'''",
 'sitecsspreview' => "'''Adoneu-vos que esteu veient una vista prèvia d'aquest full d'estil CSS.'''
-'''No n'hi ha estat encara gravada!'''",
-'sitejspreview' => "'''Adoneu-vos que esteu veient una vista prèvia d'aquest codi Javascript.'''
-'''No n'hi ha estat encara gravat!'''",
+'''Encara no s'ha desat!'''",
+'sitejspreview' => "'''Tingueu present que esteu previsualitzant aquest codi Javascript.'''
+'''Encara no s'ha desat!'''",
 'userinvalidcssjstitle' => "'''Atenció:''' No existeix l'aparença «$1». Recordeu que les subpàgines personalitzades amb extensions .css i .js utilitzen el títol en minúscules, per exemple, {{ns:user}}:NOM/vector.css no és el mateix que {{ns:user}}:NOM/Vector.css.",
 'updated' => '(Actualitzat)',
 'note' => "'''Nota:'''",
@@ -1008,11 +1008,11 @@ Podeu modificar les planes ja existents o bé [[Special:UserLogin|entrar en un c
 'permissionserrors' => 'Error de permisos',
 'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
 'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-moveddeleted-warn' => "'''Avís: Esteu creant una pàgina que ha estat prèviament esborrada.'''
+'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que ha estat prèviament suprimida.'''
 
 Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
 A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
-'moveddeleted-notice' => "Aquesta pàgina ha estat esborrada.
+'moveddeleted-notice' => "S'ha suprimit aquesta pàgina.
 A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
 'log-fulllog' => 'Veure tot el registre',
 'edit-hook-aborted' => "Modificació avortada pel hook.
@@ -1020,8 +1020,8 @@ No s'ha donat cap explicació.",
 'edit-gone-missing' => "No s'ha pogut actualitzar la pàgina.
 Sembla haver estat esborrada.",
 'edit-conflict' => "Conflicte d'edició.",
-'edit-no-change' => 'La vostra modificació ha estat ignorada perquè no feia cap canvi al text.',
-'postedit-confirmation' => 'La modificació ha estat desada.',
+'edit-no-change' => "S'ha ignorat la vostra modificació perquè no feia cap canvi al text.",
+'postedit-confirmation' => "S'ha desat la modificació.",
 'edit-already-exists' => "No s'ha pogut crear una pàgina.
 Ja existeix.",
 'defaultmessagetext' => 'Missatge per defecte',
@@ -1062,7 +1062,7 @@ Se n'han omès els arguments.",
 # "Undo" feature
 'undo-success' => "Pot desfer-se la modificació. Si us plau, reviseu la comparació de sota per a assegurar-vos que és el que voleu fer; llavors deseu els canvis per a finalitzar la desfeta de l'edició.",
 'undo-failure' => 'No pot desfer-se la modificació perquè hi ha edicions entre mig que hi entren en conflicte.',
-'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o ha estat esborrada.",
+'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o s'ha suprimit.",
 'undo-summary' => 'Es desfà la revisió $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussió]])',
 'undo-summary-username-hidden' => "Desfés la revisió $1 d'un usuari ocult",
 
@@ -1100,9 +1100,9 @@ El motiu donat per $3 és ''$2''",
 'history-feed-title' => 'Historial de revisió',
 'history-feed-description' => 'Historial de revisió per a aquesta pàgina del wiki',
 'history-feed-item-nocomment' => '$1 a $2',
-'history-feed-empty' => 'La pàgina demanada no existeix.
-Potser ha estat esborrada o reanomenada.
-Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.',
+'history-feed-empty' => "La pàgina demanada no existeix.
+Potser s'ha suprimit o reanomenat.
+Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.",
 
 # Revision deletion
 'rev-deleted-comment' => "(resum d'edició eliminat)",
@@ -1111,26 +1111,26 @@ Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevant
 'rev-deleted-user-contribs' => "[nom d'usuari o adreça IP esborrada - modificació ocultada de les contribucions]",
 'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
 Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-text-unhide' => "La revisió d'aquesta pàgina ha estat '''eliminada'''.
+'rev-deleted-text-unhide' => "S'ha '''suprimit''' la revisió d'aquesta pàgina.
 Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
 Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
-'rev-suppressed-text-unhide' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+'rev-suppressed-text-unhide' => "S'ha '''suprimit''' aquesta versió de la pàgina.
 Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].
 Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
-'rev-deleted-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+'rev-deleted-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
 Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
 'rev-suppressed-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
 Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè una de les versions ha estat '''esborrada'''.
+'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè s'ha '''suprimit''' una de les versions.
 Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè una de les revisions ha estat '''esborrada'''.",
+'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè s'ha '''suprimit''' una de les revisions.",
 'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
 Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
 Encara podeu [$1 veure aquesta comparativa] si així ho desitgeu.",
-'rev-suppressed-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
+'rev-suppressed-unhide-diff' => "S¡ha '''suprimit''' una de les revisions d'aquesta comparativa.
 Podeu veure'n més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].
 Podeu seguir [$1 veient aquesta comparativa] si així ho desitgeu.",
-'rev-deleted-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
+'rev-deleted-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
 Podeu veure aquesta comparativa; poden haver-hi més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
 'rev-suppressed-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
 Podeu veure aquesta comparativa; pot haver-hi més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
@@ -1185,8 +1185,8 @@ $1",
 No es pot amagar.",
 'revdelete-show-no-access' => "Error en mostrar l'element del $1 a les $2: està marcat com a ''restringit''.
 No hi tens accés.",
-'revdelete-modify-no-access' => "Error en modificar l'element del $1 a les $2: aquest element ha estat marcat com a ''restringit''.
-No hi tens accés.",
+'revdelete-modify-no-access' => "S'ha produït un error en modificar l'element del $1 a les $2: aquest element s'ha marcat com a 'restringit''.
+No hi teniu accés.",
 'revdelete-modify-missing' => "Error en modificar l'element ID $1: no figura a la base de dades!",
 'revdelete-no-change' => "'''Atenció:''' la revisió del $1 a les $2 ja té les restriccions de visibilitat sol·licitades.",
 'revdelete-concurrent-change' => "Error en modificar l'element del $1 a les $2: el seu estat sembla haver estat canviat per algú altre quan intentaves modificar-lo.
@@ -1250,7 +1250,7 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
 'diff-multi-manyusers' => "({{PLURAL:$1|Hi ha una revisió intermèdia|Hi ha $1 revisions intermèdies}} sense mostrar fetes per més {{PLURAL:$2|d'un usuari|de $2 usuaris}})",
 'difference-missing-revision' => "{{PLURAL:$2|Una revisió|$2 revisions}} d'aquesta diferència ($1) no {{PLURAL:$2|s'ha|s'han}} trobat.
 
-Això passa generalment en seguir un enllaç obsolet de diferències a una pàgina que ha estat esborrada.
+Això passa generalment en seguir un enllaç obsolet de diferències a una pàgina que s'ha suprimit.
 Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
 
 # Search results
@@ -1615,7 +1615,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'recentchanges-label-newpage' => 'Aquesta modificació inicià una pàgina',
 'recentchanges-label-minor' => 'Aquesta és una modificació menor',
 'recentchanges-label-bot' => 'Aquesta modificació fou feta per un bot',
-'recentchanges-label-unpatrolled' => 'Aquesta modificació encara no ha estat patrullada',
+'recentchanges-label-unpatrolled' => "Aquesta modificació encara no s'ha patrullat",
 'recentchanges-label-plusminus' => 'La mida de la pàgina ha canviat aquest nombre de bytes',
 'recentchanges-legend-newpage' => '(vegeu també la  [[Special:NewPages|llista de pàgines noves]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
@@ -1706,7 +1706,7 @@ Vegeu la [[Special:NewFiles|galeria de nous fitxers]] per a una presentació mé
 'filename-tooshort' => 'El nom del fitxer és massa curt.',
 'filetype-banned' => 'Aquest tipus de fitxer està prohibit.',
 'verification-error' => 'Aquest fitxer no ha passat la verificació de fitxers.',
-'hookaborted' => "La modificació que vau tractar de fer ha estat canceŀlada per un lligam d'extensió.",
+'hookaborted' => "La modificació que vau tractar de fer l'ha canceŀlat un lligam d'extensió.",
 'illegal-filename' => 'El nom del fitxer no està permès.',
 'overwrite' => 'No es permet sobreescriure un fitxer existent.',
 'unknown-error' => "S'ha produït un error desconegut.",
@@ -1837,7 +1837,7 @@ No s'hi ha pogut comprovar la seguretat.",
 'uploadstash-clear' => 'Esborra els fitxers en reserva',
 'uploadstash-nofiles' => 'No teniu fitxers en reserva',
 'uploadstash-badtoken' => "No s'ha pogut realitzar l'acció, possiblement perquè han caducat la vostra identificació. Intenteu-ho de nou.",
-'uploadstash-errclear' => "No ha estat possible l'esborrat dels fitxers.",
+'uploadstash-errclear' => "No s'ha pogut suprimir els fitxers.",
 'uploadstash-refresh' => 'Actualitza la llista de fitxers',
 'invalid-chunk-offset' => 'El desplaçament del fragment no és vàlid',
 
@@ -1898,6 +1898,7 @@ Si filtreu per usuari només es mostraran els fitxers la versió més recent del
 'listfiles-show-all' => 'Inclou versions antigues de les imatges',
 'listfiles-latestversion' => 'Versió actual',
 'listfiles-latestversion-yes' => 'Sí',
+'listfiles-latestversion-no' => 'No',
 
 # File description page
 'file-anchor-link' => 'Fitxer',
@@ -1948,7 +1949,7 @@ Potser voleu modificar-ne la descripció en la seva [$2 pàgina de descripció].
 'filerevert-comment' => 'Motiu:',
 'filerevert-defaultcomment' => "S'ha revertit a la versió com de $2, $1",
 'filerevert-submit' => 'Reverteix',
-'filerevert-success' => "'''[[Media:$1|$1]]''' ha estat revertit a la [$4 versió de $3, $2].",
+'filerevert-success' => "S'ha revertit '''[[Media:$1|$1]]''' a la [$4 versió de $3, $2].",
 'filerevert-badversion' => "No hi ha cap versió local anterior d'aquest fitxer amb la marca horària que es proporciona.",
 
 # File deletion
@@ -2254,7 +2255,7 @@ L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres prefe
 'emailccme' => "Envia'm una còpia del meu missatge.",
 'emailccsubject' => 'Còpia del vostre missatge a $1: $2',
 'emailsent' => 'Correu electrònic enviat',
-'emailsenttext' => 'El vostre correu electrònic ha estat enviat.',
+'emailsenttext' => "S'ha enviat el vostre correu electrònic.",
 'emailuserfooter' => "Aquest missatge de correu electrònic l'ha enviat $1 a $2 amb la funció «e-mail» del projecte {{SITENAME}}.",
 
 # User Messenger
@@ -2280,7 +2281,7 @@ S\'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corre
 'unwatch' => 'Desatén',
 'unwatchthispage' => 'Desatén',
 'notanarticle' => 'No és una pàgina amb contingut',
-'notvisiblerev' => 'La versió ha estat esborrada',
+'notvisiblerev' => "S'ha suprimit la versió",
 'watchlist-details' => 'Teniu $1 {{PLURAL:$1|pàgina vigilada|pàgines vigilades}}, sense comptar les pàgines de discussió.',
 'wlheader-enotif' => 'La notificació per correu electrònic està habilitada.',
 'wlheader-showupdated' => "Les pàgines que s'han canviat des de la vostra darrera visita es mostren en '''negreta'''.",
@@ -2358,8 +2359,8 @@ Confirmeu que realment ho voleu fer, que enteneu les
 conseqüències, i que el que esteu fent està d'acord amb la [[{{MediaWiki:Policy-url}}|política]] del projecte.",
 'actioncomplete' => "S'ha realitzat l'acció de manera satisfactòria.",
 'actionfailed' => "L'acció ha fallat",
-'deletedtext' => '«$1» ha estat esborrat.
-Vegeu $2 per a un registre dels esborrats més recents.',
+'deletedtext' => "S'ha suprimit «$1».
+Vegeu $2 per a un registre dels esborrats més recents.",
 'dellogpage' => "Registre d'eliminació",
 'dellogpagetext' => 'Davall hi ha una llista dels esborraments més recents.',
 'deletionlog' => "Registre d'esborrats",
@@ -2388,8 +2389,8 @@ Vegeu $2 per a un registre dels esborrats més recents.',
 'alreadyrolled' => "No es pot revertir la darrera modificació de [[:$1]]
 de l'usuari [[User:$2|$2]] ([[User talk:$2|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Algú altre ja ha modificat o revertit la pàgina.
 
-La darrera modificació ha estat feta per l'usuari [[User:$3|$3]] ([[User talk:$3|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "El resum d'edició ha estat: «$1».",
+La darrera modificació l'ha fet l'usuari [[User:$3|$3]] ([[User talk:$3|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
+'editcomment' => "El resum d'edició és: «$1».",
 'revertpage' => "Revertides les edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussió]]) a l'última versió de [[User:$1|$1]]",
 'revertpage-nouser' => "Edicions revertides per un usuari ocult a l'última revisió de {{GENDER:$1|[[User:$1|$1]]}}",
 'rollback-success' => "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
@@ -2615,8 +2616,8 @@ quines pàgines en concret estan sent vandalitzades).",
 'ipb-confirm' => 'Confirma el blocatge',
 'badipaddress' => "L'adreça IP no té el format correcte.",
 'blockipsuccesssub' => "S'ha blocat amb èxit",
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ha estat {{GENDER:$1|blocat|blocada}}.<br />
-Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.',
+'blockipsuccesstext' => "S'ha {{GENDER:$1|blocat|blocada}} [[Special:Contributions/$1|$1]] .<br />
+Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.",
 'ipb-blockingself' => 'Esteu a punt de blocar-vos a vós mateix! Esteu segurs de voler-ho fer?',
 'ipb-confirmhideuser' => "Esteu a punt de bloquejar un usuari que està marcat amb l'opció «amaga l'usuari». Això suprimirà el seu nom a totes les llistes i registres. Esteu segurs de voler-ho fer?",
 'ipb-edit-dropdown' => 'Edita les raons per a blocar',
@@ -2629,7 +2630,7 @@ Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.',
 l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
 'ipusubmit' => 'Desbloca aquesta adreça',
 'unblocked' => "S'ha desbloquejat l'{{GENDER:$1|usuari|usuària}} [[User:$1|$1]]",
-'unblocked-range' => '$1 ha estat desblocat',
+'unblocked-range' => "s'ha desblocat $1",
 'unblocked-id' => "S'ha eliminat el bloqueig de $1",
 'blocklist' => 'Usuaris blocats',
 'ipblocklist' => 'Usuaris blocats',
@@ -2664,10 +2665,10 @@ l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
 'autoblocker' => "Heu estat blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
 El motiu del bloqueig de $1 és: ''$2''.",
 'blocklogpage' => 'Registre de bloquejos',
-'blocklog-showlog' => 'Aquest usuari ha estat blocat prèviament.
-Per més detalls, a sota es mostra el registre de bloquejos:',
-'blocklog-showsuppresslog' => 'Aquest usuari ha estat blocat i amagat prèviament.
-Per més detalls, a sota es mostra el registre de supressions:',
+'blocklog-showlog' => "S'ha blocat aquest usuari prèviament.
+Per més detalls, a sota es mostra el registre de bloquejos:",
+'blocklog-showsuppresslog' => "S'ha blocat i amagat aquest usuari prèviament.
+Per més detalls, a sota es mostra el registre de supressions:",
 'blocklogentry' => "ha blocat l'{{GENDER:$1|usuari|usuària}} [[$1]] per un període de: $2 $3",
 'reblock-logentry' => 'canviades les opcions del blocatge a [[$1]] amb caducitat a $2, $3',
 'blocklogtext' => 'Això és una relació de accions de bloqueig i desbloqueig. Les adreces IP bloquejades automàticament no apareixen. Vegeu la [[Special:BlockList|llista de bloqueigs]] per veure una llista dels actuals bloqueigs operatius.',
@@ -2692,7 +2693,7 @@ Per més detalls, a sota es mostra el registre de supressions:',
 'ip_range_invalid' => 'Rang de IP no vàlid.',
 'ip_range_toolarge' => 'No estan permesos el bloquejos de rangs més grans que /$1.',
 'proxyblocker' => 'Bloqueig de proxy',
-'proxyblockreason' => "La vostra adreça IP ha estat bloquejada perquè és un proxy obert. Si us plau contactau el vostre proveïdor d'Internet o servei tècnic i informau-los d'aquest seriós problema de seguretat.",
+'proxyblockreason' => "S'ha blocat la vostra adreça IP perquè és un proxy obert. Contactau el vostre proveïdor d'Internet o servei tècnic i informau-los d'aquest seriós problema de seguretat.",
 'sorbsreason' => "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert dins la llista negra de DNS que fa servir el projecte {{SITENAME}}.",
 'sorbs_create_account_reason' => "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert a la llista negra de DNS que utilitza el projecte {{SITENAME}}. No podeu crear-vos-hi un compte",
 'xffblockreason' => "Una adreça IP present en la capçalera X-Forwarded-For, ja sigui vostra o la d'un servidor proxy que esteu utilitzant, ha estat blocada. El motiu inicial del bloqueig és: $1",
@@ -2782,7 +2783,7 @@ Incorporeu-les manualment, si us plau.",
 'move-subpages' => "Desplaça'n també les subpàgines (fins a $1)",
 'move-talk-subpages' => 'Desplaça també les subpàgines de la pàgina de discussió (fins un màxim de $1)',
 'movepage-page-exists' => "La pàgina $1 ja existeix i no pot sobreescriure's automàticament.",
-'movepage-page-moved' => 'La pàgina $1 ha estat traslladada a $2.',
+'movepage-page-moved' => "La pàgina $1 s'ha traslladat a $2.",
 'movepage-page-unmoved' => "La pàgina $1 no s'ha pogut moure a $2.",
 'movepage-max-pages' => "{{PLURAL:$1|S'ha mogut una pàgina|S'han mogut $1 pàgines}} que és el nombre màxim, i per tant no se'n mourà automàticament cap més.",
 'movelogpage' => 'Registre de reanomenaments',
@@ -2894,7 +2895,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 'imported-log-entries' => "{{PLURAL:$1|S'ha importat una entrada del registre|S'han importat $1 entrades del registre}}.",
 'importfailed' => 'La importació ha fallat: $1',
 'importunknownsource' => "No es reconeix el tipus de la font d'importació",
-'importcantopen' => "No ha estat possible d'obrir el fitxer a importar",
+'importcantopen' => "No s'ha pogut obrir el fitxer a importar",
 'importbadinterwiki' => "Enllaç d'interwiki incorrecte",
 'importnotext' => 'Buit o sense text',
 'importsuccess' => 'Importació completada!',
@@ -3008,6 +3009,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 Permet afegir un motiu al resum.',
 'tooltip-preferences-save' => 'Desa preferències',
 'tooltip-summary' => 'Afegiu un breu resum',
+'interlanguage-link-title' => '$1 - $2',
 
 # Stylesheets
 'common.css' => '/* Editeu aquest fitxer per personalitzar totes les aparences per al lloc sencer */',
@@ -3097,7 +3099,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'markaspatrolleddiff' => 'Marca com a supervisat',
 'markaspatrolledtext' => 'Marca la pàgina com a supervisada',
 'markedaspatrolled' => 'Marca com a supervisat',
-'markedaspatrolledtext' => 'La revisió seleccionada de [[:$1]] ha estat marcada com a patrullada.',
+'markedaspatrolledtext' => "S'ha marcat com a patrullada la revisió seleccionada de [[:$1]].",
 'rcpatroldisabled' => "S'ha inhabilitat la supervisió dels canvis recents",
 'rcpatroldisabledtext' => 'La funció de supervisió de canvis recents està actualment inhabilitada.',
 'markedaspatrollederror' => 'No es pot marcar com a supervisat',
@@ -3366,7 +3368,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
 'exif-serialnumber' => 'Número de sèrie de la càmera',
 'exif-cameraownername' => 'Propietari de la càmera',
 'exif-label' => 'Etiqueta',
-'exif-datetimemetadata' => 'Data que la metadata ha estat modificada per última vegada',
+'exif-datetimemetadata' => "Data que s'ha modificat les metadades per última vegada",
 'exif-nickname' => "Nom informal de l'imatge",
 'exif-rating' => 'Valoració (sobre 5)',
 'exif-rightscertificate' => 'Certificat de gestió de drets',
@@ -3742,8 +3744,8 @@ Confirmeu que realment voleu tornar-la a crear.",
 'livepreview-ready' => "S'està carregant… Preparat!",
 'livepreview-failed' => 'Ha fallat la vista ràpida!
 Proveu-ho amb la previsualització normal.',
-'livepreview-error' => 'La connexió no ha estat possible: $1 «$2»
-Proveu-ho amb la previsualització normal.',
+'livepreview-error' => "No s'ha pogut efectuar la connexió: $1 «$2»
+Proveu-ho amb la previsualització normal.",
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Els canvis més nous de $1 {{PLURAL:$1|segon|segons}} podrien no mostrar-se a la llista.',
@@ -3883,6 +3885,7 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 'tags-active-header' => 'Actiu?',
 'tags-hitcount-header' => 'Canvis etiquetats',
 'tags-active-yes' => 'Sí',
+'tags-active-no' => 'No',
 'tags-edit' => 'modifica',
 'tags-hitcount' => '$1 {{PLURAL:$1|canvi|canvis}}',
 
@@ -4001,7 +4004,7 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'api-error-filetype-banned' => 'Aquest tipus de fitxer està prohibit.',
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|no és un tipus de fitxer permès|no són tipus de fitxer permesos}}. {{PLURAL:$3|El tipus de fitxer permès és|Els tipus de fitxer permesos són}} $2.',
 'api-error-filetype-missing' => 'El nom de fitxer no té extensió.',
-'api-error-hookaborted' => "La modificació que heu intentat fer ha estat canceŀlada per un mòdul d'extensió.",
+'api-error-hookaborted' => "Un mòdul d'extensió ha cancel·lat la modificació que heu intentat fer.",
 'api-error-http' => 'Error intern: no es pot connectar al servidor.',
 'api-error-illegal-filename' => 'El nom del fitxer no està permès.',
 'api-error-internal-error' => 'Error intern: el procés de càrrega en el wiki no ha funcionat.',
index 4b82feb..bd27279 100644 (file)
  * @author Yejianfei
  */
 
+$fallback = 'nan, zh-hant';
+
+$namespaceNames = array(
+       NS_MEDIA            => '媒體',
+       NS_SPECIAL          => '特殊',
+       NS_TALK             => '討論',
+       NS_USER             => '用戶',
+       NS_USER_TALK        => '用戶討論',
+       NS_PROJECT_TALK     => '$1討論',
+       NS_FILE             => '文件',
+       NS_FILE_TALK        => '文件討論',
+       NS_MEDIAWIKI        => '媒體維基',
+       NS_MEDIAWIKI_TALK   => '媒體維基討論',
+       NS_TEMPLATE         => '模板',
+       NS_TEMPLATE_TALK    => '模板討論',
+       NS_HELP             => '幫助',
+       NS_HELP_TALK        => '幫助討論',
+       NS_CATEGORY         => '分類',
+       NS_CATEGORY_TALK    => '分類討論',
+);
+
+$specialPageAliases = array(
+       'Activeusers'               => array( '活動用戶' ),
+       'Allmessages'               => array( '全部信息' ),
+       'Allpages'                  => array( '全部頁面' ),
+       'Ancientpages'              => array( '舊其頁面' ),
+       'Badtitle'                  => array( '呆其標題' ),
+       'Blankpage'                 => array( '空白頁面' ),
+       'Block'                     => array( '封鎖', '封鎖IP', '封鎖用戶' ),
+       'Booksources'               => array( '圖書源' ),
+       'BrokenRedirects'           => array( '呆其重定向' ),
+       'Categories'                => array( '分類' ),
+       'ChangeEmail'               => array( '改變電子郵件' ),
+       'ChangePassword'            => array( '改變密碼', '重置密碼' ),
+       'ComparePages'              => array( '比較頁面' ),
+       'Confirmemail'              => array( '確認電子郵件' ),
+       'Contributions'             => array( '貢獻' ),
+       'CreateAccount'             => array( '開賬戶' ),
+       'DeletedContributions'      => array( '刪掉其貢獻' ),
+       'DoubleRedirects'           => array( '雙重重定向' ),
+       'EditWatchlist'             => array( '修改監視單' ),
+       'Emailuser'                 => array( '共用戶發送電子郵件' ),
+       'Export'                    => array( '導出' ),
+       'Fewestrevisions'           => array( '最少其修訂' ),
+       'FileDuplicateSearch'       => array( '文件重複尋討' ),
+       'Filepath'                  => array( '文件路徑' ),
+       'Import'                    => array( '導底' ),
+       'Invalidateemail'           => array( '無效電子郵件' ),
+       'JavaScriptTest'            => array( 'JavaScript測試' ),
+       'BlockList'                 => array( '封鎖單' ),
+       'LinkSearch'                => array( '鏈接尋討' ),
+       'Listadmins'                => array( '管理員單單' ),
+       'Listbots'                  => array( '機器人單單' ),
+       'Listfiles'                 => array( '文件單', '圖片單' ),
+       'Listgrouprights'           => array( '小組權限單', '用戶組單單' ),
+       'Listredirects'             => array( '重定向單單' ),
+       'Listusers'                 => array( '用戶單' ),
+       'Lockdb'                    => array( '鎖定數據庫' ),
+       'Log'                       => array( '日誌' ),
+       'Lonelypages'               => array( '單獨其頁面' ),
+       'Longpages'                 => array( '長長其頁面' ),
+       'MergeHistory'              => array( '合併其歷史' ),
+       'MIMEsearch'                => array( 'MIME尋討' ),
+       'Mostcategories'            => array( '最価其分類' ),
+       'Mostimages'                => array( '最価鏈接其文件' ),
+       'Mostinterwikis'            => array( '最稠其跨維基' ),
+       'Mostlinked'                => array( '最価鏈接其頁面' ),
+       'Mostlinkedcategories'      => array( '最価鏈接其分類' ),
+       'Mostlinkedtemplates'       => array( '最価鏈接其模板' ),
+       'Mostrevisions'             => array( '最稠其版本' ),
+       'Movepage'                  => array( '移動其頁面' ),
+       'Mycontributions'           => array( '我其貢獻' ),
+       'Mypage'                    => array( '我其頁面' ),
+       'Mytalk'                    => array( '我其討論' ),
+       'Myuploads'                 => array( '我其上傳' ),
+       'Newimages'                 => array( '新其文件', '新其圖片' ),
+       'Newpages'                  => array( '新其頁面' ),
+       'PasswordReset'             => array( '密碼重置' ),
+       'PermanentLink'             => array( '永久鏈接' ),
+       'Popularpages'              => array( '受歡迎其頁面' ),
+       'Preferences'               => array( '喜好' ),
+       'Prefixindex'               => array( '前綴索引' ),
+       'Protectedpages'            => array( '受保護其頁面' ),
+       'Protectedtitles'           => array( '受保護其標題' ),
+       'Randompage'                => array( '隨便其頁面' ),
+       'Randomredirect'            => array( '隨便其重定向' ),
+       'Recentchanges'             => array( '最近其改變' ),
+       'Recentchangeslinked'       => array( '最近改變其鏈接' ),
+       'Redirect'                  => array( '重定向' ),
+       'ResetTokens'               => array( '重置令牌' ),
+       'Search'                    => array( '尋討' ),
+       'Shortpages'                => array( '短短其頁面' ),
+       'Specialpages'              => array( '特殊頁' ),
+       'Statistics'                => array( '統計' ),
+       'Tags'                      => array( '標籤' ),
+       'Unblock'                   => array( '取消封鎖' ),
+       'Uncategorizedcategories'   => array( '未分類其分類' ),
+       'Uncategorizedimages'       => array( '未分類其文件', '未分類其圖片' ),
+       'Uncategorizedpages'        => array( '未分類其頁面' ),
+       'Uncategorizedtemplates'    => array( '未分類其模板' ),
+       'Undelete'                  => array( '伓使刪除' ),
+       'Unlockdb'                  => array( '解鎖數據庫' ),
+       'Unusedcategories'          => array( '無乇使其分類' ),
+       'Unusedimages'              => array( '無乇使其文件', '無乇使其圖片' ),
+       'Unusedtemplates'           => array( '無乇使其模板' ),
+       'Unwatchedpages'            => array( '未監視其頁面' ),
+       'Upload'                    => array( '上傳' ),
+       'Userlogin'                 => array( '用戶躒底', '躒底' ),
+       'Userlogout'                => array( '用戶躒出', '躒出' ),
+       'Userrights'                => array( '用戶權限' ),
+       'Version'                   => array( '版本' ),
+       'Wantedcategories'          => array( '卜挃其分類' ),
+       'Wantedfiles'               => array( '卜挃其文件' ),
+       'Wantedpages'               => array( '卜挃其頁面' ),
+       'Wantedtemplates'           => array( '卜挃其模板' ),
+       'Watchlist'                 => array( '監視單' ),
+       'Whatlinkshere'             => array( '什乇鏈遘嚽塊' ),
+       'Withoutinterwiki'          => array( '無跨維基' ),
+);
+
 $datePreferences = array(
        'default',
        'ISO 8601',
index e3a4cb9..9af7576 100644 (file)
@@ -93,6 +93,7 @@ $specialPageAliases = array(
        'DoubleRedirects'           => array( 'Шалха_дӀасахьажийнарш' ),
        'EditWatchlist'             => array( 'Табе_тергаме_могӀам' ),
        'Emailuser'                 => array( 'Декъашхочунга_кехат' ),
+       'ExpandTemplates'           => array( 'Кепаш_схьаястар' ),
        'Export'                    => array( 'Экспорт' ),
        'Fewestrevisions'           => array( 'Наггахь_беш_болу_хийцамаш' ),
        'FileDuplicateSearch'       => array( 'Цхьатера_файлаш_лахар' ),
@@ -201,7 +202,7 @@ $magicWords = array(
        'localhour'                 => array( '1', 'МЕТТИГАН_САХЬТ', 'МЕСТНЫЙ_ЧАС', 'LOCALHOUR' ),
        'numberofpages'             => array( '1', 'АГlОНИЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_СТРАНИЦ', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', 'ЯЗЗАМАШИ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ),
-       'numberoffiles'             => array( '1', 'Ð¥lУÐ\9cÐ\9dÐ\98Ð\99_ДУКХАЛЛА', 'КОЛИЧЕСТВО_ФАЙЛОВ', 'NUMBEROFFILES' ),
+       'numberoffiles'             => array( '1', 'ФÐ\90Ð\99Ð\9bÐ\90Ð\9dШÐ\98_ДУКХАЛЛА', 'КОЛИЧЕСТВО_ФАЙЛОВ', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'ДЕКЪАШХОЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_УЧАСТНИКОВ', 'NUMBEROFUSERS' ),
        'numberofactiveusers'       => array( '1', 'ДУКХАЛЛА_ЖИГАРА_ДЕКЪАШХОЙ', 'КОЛИЧЕСТВО_АКТИВНЫХ_УЧАСТНИКОВ', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', 'НИСДАРШИЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_ПРАВОК', 'NUMBEROFEDITS' ),
@@ -232,12 +233,12 @@ $magicWords = array(
        'img_right'                 => array( '1', 'бакъхьа', 'справа', 'right' ),
        'img_left'                  => array( '1', 'харцхьа', 'слева', 'left' ),
        'img_none'                  => array( '1', 'йоцуш', 'без', 'none' ),
-       'img_width'                 => array( '1', '$1цинт', '$1пкс', '$1px' ),
+       'img_width'                 => array( '1', '$1пкс', '$1px' ),
        'img_center'                => array( '1', 'юккъ', 'центр', 'center', 'centre' ),
        'img_framed'                => array( '1', 'гурабе', 'обрамить', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'гурабоцаш', 'безрамки', 'frameless' ),
-       'img_page'                  => array( '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'бакъхьалакхо', 'бакъхьалакхо=$1', 'бакъхьалакхо_$1', 'upright_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'бакъхьалакхо', 'бакъхьалакхо=$1', 'бакъхьалакхо_$1', 'upright_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'доза', 'граница', 'border' ),
        'img_baseline'              => array( '1', 'бух', 'основание', 'baseline' ),
        'img_sub'                   => array( '1', 'буха', 'под', 'sub' ),
@@ -284,8 +285,8 @@ $magicWords = array(
        'raw'                       => array( '0', 'ТАЙАНЗА:', 'НЕОБРАБ:', 'RAW:' ),
        'displaytitle'              => array( '1', 'ГАЙТА_КОЬРТАМОГl', 'ПОКАЗАТЬ_ЗАГОЛОВОК', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'Т', 'Н', 'R' ),
-       'newsectionlink'            => array( '1', '__ХЬÐ\90Ð\96Ð\9eРÐ\98Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__', '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'          => array( '1', '__Ð\99Ð\9eЦÐ\90Ш_ХЬÐ\90Ð\96Ð\9eРÐ\98Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__БЕЗ_ССЫЛКИ_НА_НОВЫЙ_РАЗДЕЛ__', '__NONEWSECTIONLINK__' ),
+       'newsectionlink'            => array( '1', '__ХЬÐ\90Ð\96Ð\9eРÐ\90Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'          => array( '1', '__Ð\99Ð\9eЦÐ\90Ш_ХЬÐ\90Ð\96Ð\9eРÐ\90Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__БЕЗ_ССЫЛКИ_НА_НОВЫЙ_РАЗДЕЛ__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'ЙОЛШЙОЛУ_БАШХО', 'ТЕКУЩАЯ_ВЕРСИЯ', 'CURRENTVERSION' ),
        'urlencode'                 => array( '0', 'ИШАРЙИНА_МЕТТИГ:', 'ЗАКОДИРОВАННЫЙ_АДРЕС:', 'URLENCODE:' ),
        'anchorencode'              => array( '0', 'ИШАРЙАР_МЕТТИГАН', 'КОДИРОВАТЬ_МЕТКУ', 'ANCHORENCODE' ),
@@ -295,7 +296,7 @@ $magicWords = array(
        'language'                  => array( '0', '#МОТТ', '#ЯЗЫК:', '#LANGUAGE:' ),
        'contentlanguage'           => array( '1', 'МОТТ_ЧУЛАЦАМ', 'ЯЗЫК_СОДЕРЖАНИЯ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
        'pagesinnamespace'          => array( '1', 'АГlОНАШ_ОЦ_ЦlЕРАШКАХЬ:', 'СТРАНИЦ_В_ПРОСТРАНСТВЕ_ИМЁН:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'            => array( '1', 'Ð\90Ð\94Ð\9cÐ\90Ð\9dÐ\9aУЬÐ\93Ð\90Ð\9bÐ¥Ð\9eÐ\99\94УÐ\9aÐ¥Ð\90Ð\9bÐ\9bÐ\90', 'Ð\9aÐ\9eÐ\9bÐ\98ЧÐ\95СТÐ\92Ð\9e\90Ð\94Ð\9cÐ\98Ð\9dÐ\98СТРÐ\90ТÐ\9eРÐ\9eÐ\92', 'NUMBEROFADMINS' ),
+       'numberofadmins'            => array( '1', 'КУЬГАЛХОЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_АДМИНИСТРАТОРОВ', 'NUMBEROFADMINS' ),
        'formatnum'                 => array( '0', 'ТЕРАХЬАН_БАРАМХlОТТОР', 'ФОРМАТИРОВАТЬ_ЧИСЛО', 'FORMATNUM' ),
        'padleft'                   => array( '0', 'ЙУЗА_ХАРЦЕ', 'ЗАПОЛНИТЬ_СЛЕВА', 'PADLEFT' ),
        'padright'                  => array( '0', 'ЙУЗА_БАКЪЕ', 'ЗАПОЛНИТЬ_СПРАВА', 'PADRIGHT' ),
@@ -980,6 +981,7 @@ $1',
 
 # "Undo" feature
 'undo-success' => 'Нисйинарг а тlе цалаца мега. Дехар до, хьажа цхьатерра йуй башхо, тешна хила, баккъалла иза хийцам буйте хьуна безарг, тlакха тlе таlайе «дlайазйе агlо», хийцам хlотта ба.',
+'undo-failure' => 'Юккъера хийцамаш бахьнехь нисдар юхадаккха йиш яц.',
 'undo-summary' => 'Юхадаьккхина {{GENDER:$2|декъашхочун}} [[Special:Contributions/$2|$2]] ([[User talk:$2|дийц.]]) нисдар $1',
 'undo-summary-username-hidden' => 'Юхадаьккхина декъашхочун нисдарш $1, цунна цӀе дӀахьулйина',
 
@@ -1127,7 +1129,7 @@ $1',
 'prefs-skin' => 'Кечяран тема',
 'skin-preview' => 'Хьалха муха ю хьажа',
 'datedefault' => 'Iад йитарца',
-'prefs-beta' => 'Ð\93lоле таронаш',
+'prefs-beta' => 'Ð\91еÑ\82а-таронаш',
 'prefs-datetime' => 'Терахь а хан а',
 'prefs-labs' => 'Муха ю хьажарна таронаш',
 'prefs-user-pages' => 'Декъашхочун агӀо',
@@ -2192,6 +2194,8 @@ PICT # тайп тайпан
 'pageinfo-header-basic' => 'Коьрта хаам',
 'pageinfo-language' => 'АгӀона мотт',
 'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
+'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-category-info' => 'Категорех лаьцна хаам',
 
 # Skin names
 'skinname-cologneblue' => 'Кёльнин сингаттам',
@@ -2235,13 +2239,16 @@ PICT # тайп тайпан
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'seconds-abbrev' => '$1оцу',
-'hours' => '{{PLURAL:$1|1 сахьат}}',
+'hours' => '{{PLURAL:$1|1 сахьт}}',
 'days' => '{{PLURAL:$1|$1 де}}',
+'weeks' => '{{PLURAL:$1|$1 кӀира}}',
+'years' => '$1 {{PLURAL:$1|шо}}',
 'ago' => '$1 хьалха',
 
 # Human-readable timestamps
-'hours-ago' => '$1 {{PLURAL:$1|сахьат}} хьалха',
+'hours-ago' => '$1 {{PLURAL:$1|сахьт}} хьалха',
 'minutes-ago' => '$1 {{PLURAL:$1|минут}} хьалха',
+'seconds-ago' => '$1 {{PLURAL:$1|секунд}} хьалха',
 'yesterday-at' => 'селхана $1 даьлча',
 
 # Bad image list
@@ -2509,7 +2516,7 @@ PICT # тайп тайпан
 'searchsuggest-search' => 'Лаха',
 
 # Durations
-'duration-hours' => '$1 {{PLURAL:$1|сахьат}}',
+'duration-hours' => '$1 {{PLURAL:$1|сахьт}}',
 'duration-days' => '$1 {{PLURAL:$1|де}}',
 
 # Limit report
index a5cde1d..af987a3 100644 (file)
@@ -48,7 +48,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Mga Kategoriya' ),
        'Contributions'             => array( 'Mga Tampo' ),
        'CreateAccount'             => array( 'Paghimo\'gAkawnt' ),
-       'Disambiguations'           => array( 'Mga Pagklaro' ),
        'DoubleRedirects'           => array( 'DoblengRedirekta' ),
        'Listfiles'                 => array( 'Listahan sa Imahen' ),
        'Lonelypages'               => array( 'Nag-inusarangPanid', 'Sinagop nga Panid' ),
index 687c001..3ccaa28 100644 (file)
@@ -88,7 +88,7 @@ $specialPageAliases = array(
        'Mostlinkedcategories'      => array( 'پۆلەکانی_زیاترین_بەستەردراون،_پۆلەکانی_زیاترین_بەکارھێنراون' ),
        'Mostlinkedtemplates'       => array( 'داڕێژەکانی_زیاترین_بەستەردراون،_داڕێژەکانی_زیاترین_بەکارھێنراون' ),
        'Mostrevisions'             => array( 'زیاترین_پێداچوونەوەکان' ),
-       'Movepage'                  => array( 'پەڕە_گواستنەوە' ),
+       'Movepage'                  => array( 'گواستنەوەی_پەڕە' ),
        'Mycontributions'           => array( 'بەشدارییەکانم' ),
        'Mypage'                    => array( 'پەڕەکەم' ),
        'Mytalk'                    => array( 'لێدوانەکانم' ),
@@ -1218,7 +1218,7 @@ $1",
 'prefs-skin' => 'پێستە',
 'skin-preview' => 'پێش بینین',
 'datedefault' => 'ھەڵنەبژێردراو',
-'prefs-beta' => 'کەرەسەکانی بیتا',
+'prefs-beta' => 'تایبەتمەندییەکانی بیتا',
 'prefs-datetime' => 'کات و ڕێکەوت',
 'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
 'prefs-user-pages' => 'پەڕە بەکارھێنەرییەکان',
index 14d5b13..c10cfcf 100644 (file)
@@ -80,7 +80,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Nejstarší_stránky', 'Staré_stránky', 'Stare_stranky' ),
        'Blankpage'                 => array( 'Prázdná_stránka' ),
        'Block'                     => array( 'Blokování', 'Blokovani', 'Blokovat_uživatele', 'Blokovat_IP', 'Blokovat_uzivatele' ),
-       'Blockme'                   => array( 'Zablokuj_mě', 'Zablokuj_me' ),
        'Booksources'               => array( 'Zdroje_knih' ),
        'BrokenRedirects'           => array( 'Přerušená_přesměrování', 'Prerusena_presmerovani' ),
        'Categories'                => array( 'Kategorie' ),
@@ -92,9 +91,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Vytvořit_účet', 'Vytvorit_ucet' ),
        'Deadendpages'              => array( 'Slepé_stránky', 'Slepe_stranky' ),
        'DeletedContributions'      => array( 'Smazané_příspěvky', 'Smazane_prispevky' ),
-       'Disambiguations'           => array( 'Rozcestníky', 'Rozcestniky' ),
        'DoubleRedirects'           => array( 'Dvojitá_přesměrování', 'Dvojita_presmerovani' ),
        'Emailuser'                 => array( 'E-mail' ),
+       'ExpandTemplates'           => array( 'Testy_šablon' ),
        'Export'                    => array( 'Exportovat_stránky' ),
        'Fewestrevisions'           => array( 'Stránky_s_nejméně_editacemi', 'Stranky_s_nejmene_editacemi', 'Stránky_s_nejmenším_počtem_editací' ),
        'FileDuplicateSearch'       => array( 'Hledání_duplicitních_souborů', 'Hledani_duplicitnich_souboru' ),
@@ -230,7 +229,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'střed', 'center', 'centre' ),
        'img_framed'                => array( '1', 'rám', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'bezrámu', 'frameless' ),
-       'img_page'                  => array( '1', 'strana=$1', 'strana $1', 'page=$1', 'page $1' ),
+       'img_lang'                  => array( '1', 'jazyk=$1', 'lang=$1' ),
+       'img_page'                  => array( '1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ),
        'img_border'                => array( '1', 'okraj', 'border' ),
        'sitename'                  => array( '1', 'NÁZEVWEBU', 'SITENAME' ),
        'ns'                        => array( '0', 'JMENNÝPROSTOR:', 'NS:' ),
@@ -282,6 +282,7 @@ $magicWords = array(
        'noindex'                   => array( '1', '__NEINDEXOVAT__', '__NOINDEX__' ),
        'staticredirect'            => array( '1', '__STATICKÉPŘESMĚROVÁNÍ__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'ÚROVEŇZAMČENÍ', 'PROTECTIONLEVEL' ),
+       'pagesincategory_files'     => array( '0', 'soubory', 'files' ),
 );
 
 /**
index 23ce234..d08e017 100644 (file)
@@ -269,8 +269,8 @@ $messages = array(
 'pagetitle' => '$1 · {{SITENAME}}',
 'retrievedfrom' => 'поѩто иꙁ ⁖ $1 ⁖',
 'youhavenewmessages' => '$1 тєбѣ напьсанꙑ сѫтъ ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|ново напьсаниѥ|нова напьсании|новꙑ напьсаниꙗ}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|послѣдьнꙗ мѣна|послѣдьни мѣни|послѣдьн҄ь мѣнъ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ново напьсаниѥ|нова напьсании|999=новꙑ напьсаниꙗ}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|послѣдьнꙗ мѣна|послѣдьни мѣни|999=послѣдьн҄ь мѣнъ}}',
 'editsection' => 'исправи',
 'editold' => 'исправи',
 'viewsourceold' => 'страницѧ источьнъ обраꙁъ',
@@ -429,8 +429,8 @@ $messages = array(
 'rev-delundel' => 'каꙁаниѥ / съкрꙑтиѥ',
 'rev-showdeleted' => 'виждь',
 'revdelete-show-file-submit' => 'да',
-'revdelete-radio-set' => 'да',
-'revdelete-radio-unset' => 'нѣÑ\82Ñ\8a',
+'revdelete-radio-set' => 'съкрꙑто',
+'revdelete-radio-unset' => 'каê\99\81ано',
 'revdelete-log' => 'какъ съмꙑслъ :',
 'pagehist' => 'страницѧ їсторїꙗ',
 'deletedhist' => 'поничьжєна їсторїꙗ',
index 37625e8..1b7fa3f 100644 (file)
@@ -33,7 +33,7 @@ $namespaceNames = array(
        NS_TEMPLATE         => 'Nodyn',
        NS_TEMPLATE_TALK    => 'Sgwrs_Nodyn',
        NS_HELP             => 'Cymorth',
-       NS_HELP_TALK        => 'Sgwrs Cymorth',
+       NS_HELP_TALK        => 'Sgwrs_Cymorth',
        NS_CATEGORY         => 'Categori',
        NS_CATEGORY_TALK    => 'Sgwrs_Categori',
 );
@@ -64,14 +64,14 @@ $magicWords = array(
        'subpagenamee'              => array( '1', 'ENWISDUDALENE', 'SUBPAGENAMEE' ),
        'talkpagename'              => array( '1', 'ENWTUDALENSGWRS', 'TALKPAGENAME' ),
        'talkpagenamee'             => array( '1', 'ENWTUDALENSGWRSE', 'TALKPAGENAMEE' ),
-       'img_thumbnail'             => array( '1', 'ewin bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ),
+       'img_thumbnail'             => array( '1', 'ewin_bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'mân-lun=$1', 'bawd=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'de', 'right' ),
        'img_left'                  => array( '1', 'chwith', 'left' ),
        'img_none'                  => array( '1', 'dim', 'none' ),
        'img_center'                => array( '1', 'canol', 'center', 'centre' ),
-       'img_page'                  => array( '1', 'tudalen=$1', 'tudalen $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'unionsyth', 'unionsyth=$1', 'unionsyth $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'tudalen=$1', 'tudalen_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'unionsyth', 'unionsyth=$1', 'unionsyth_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_sub'                   => array( '1', 'is', 'sub' ),
        'img_super'                 => array( '1', 'uwch', 'super', 'sup' ),
        'img_top'                   => array( '1', 'brig', 'top' ),
@@ -3966,6 +3966,7 @@ Defnydd:
 'expand_templates_output' => 'Y canlyniad',
 'expand_templates_xml_output' => 'Yr allbwn XML',
 'expand_templates_ok' => 'Iawn',
+'expand_templates_remove_comments' => 'Peidio â dangos sylwadau',
 'expand_templates_preview' => 'Rhagolwg',
 
 );
index e8dc7c1..175e3c8 100644 (file)
@@ -88,7 +88,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Ældste_sider' ),
        'Blankpage'                 => array( 'Tom_Side' ),
        'Block'                     => array( 'Bloker_adresse' ),
-       'Blockme'                   => array( 'Proxyspærring' ),
        'Booksources'               => array( 'ISBN-søgning' ),
        'BrokenRedirects'           => array( 'Defekte_omdirigeringer' ),
        'Categories'                => array( 'Kategorier' ),
@@ -99,7 +98,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Opret_konto' ),
        'Deadendpages'              => array( 'Blindgydesider' ),
        'DeletedContributions'      => array( 'Slettede_bidrag' ),
-       'Disambiguations'           => array( 'Flertydige_sider' ),
        'DoubleRedirects'           => array( 'Dobbelte_omdirigeringer' ),
        'Emailuser'                 => array( 'E-mail' ),
        'Export'                    => array( 'Eksporter' ),
@@ -471,8 +469,8 @@ $1',
 'youhavenewmessages' => 'Du har $1 ($2).',
 'youhavenewmessagesfromusers' => 'Du har $1 fra {{PLURAL:$3|en anden bruger| $3 brugere}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 fra mange brugere ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|en ny besked|nye beskeder}}',
-'newmessagesdifflinkplural' => 'seneste {{PLURAL:$1|ændring|ændringer}}',
+'newmessageslinkplural' => '{{PLURAL:$1|en ny besked|999=nye beskeder}}',
+'newmessagesdifflinkplural' => 'seneste {{PLURAL:$1|ændring|999=ændringer}}',
 'youhavenewmessagesmulti' => 'Du har nye beskeder på $1',
 'editsection' => 'redigér',
 'editold' => 'redigér',
@@ -600,7 +598,8 @@ Administratoren, som skrivebeskyttede den, gav følgende begrundelse: "$3".',
 'invalidtitle-knownnamespace' => 'Ugyldig titel med navnerummet "$2" og teksten "$3"',
 'invalidtitle-unknownnamespace' => 'Ugyldig titel med ukendt navnerum nummer $1 og tekst "$2"',
 'exception-nologin' => 'Ikke logget på',
-'exception-nologin-text' => 'Denne side eller handling kræver, at du er logget på denne wiki.',
+'exception-nologin-text' => 'Du skal [[Special:Userlogin|logge på]] for at få adgang til denne side eller handling.',
+'exception-nologin-text-manual' => 'Du skal $1 for at få adgang til denne side eller handling.',
 
 # Virus scanner
 'virus-badscanner' => "Konfigurationsfejl: ukendt virus-scanner: ''$1''",
@@ -776,7 +775,7 @@ Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlerti
 'passwordreset-username' => 'Brugernavn:',
 'passwordreset-domain' => 'Domæne:',
 'passwordreset-capture' => 'Se den resulterende e-mail?',
-'passwordreset-capture-help' => 'Hvis du krydser dette felt af, vil emailen (med den midlertidige adgangskode) blive vist til dig i tillæg til at blive sendt til brugeren.',
+'passwordreset-capture-help' => 'Hvis du krydser dette felt af, vil e-mailen (med den midlertidige adgangskode) blive vist til dig i tillæg til at blive sendt til brugeren.',
 'passwordreset-email' => 'E-mailadresse:',
 'passwordreset-emailtitle' => 'Kontooplysninger på {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Nogen (sandsynligvis dig, fra IP-adressen $1) har anmodet om at få nulstillet din adgangskode til {{SITENAME}} ($4). {{PLURAL:$3|Den følgende brugerkonto er associeret|De følgende brugerkonti er associerede}} med denne e-mailadresse:
@@ -899,7 +898,7 @@ Angiv venligst alle de ovenstående detaljer ved eventuelle henvendelser.',
 'loginreqlink' => 'logge på',
 'loginreqpagetext' => 'Du skal $1 for at se andre sider.',
 'accmailtitle' => 'Adgangskode sendt.',
-'accmailtext' => "En tilfældigt dannet adgangskode for [[User talk:$1|$1]] er sendt til $2. Den kan ændres på siden ''[[Special:ChangePassword|skift adgangskode]]'', når du logger ind.",
+'accmailtext' => "En tilfældigt dannet adgangskode for [[User talk:$1|$1]] er sendt til $2. Den kan ændres på siden ''[[Special:ChangePassword|skift adgangskode]]'', når du logger .",
 'newarticle' => '(Ny)',
 'newarticletext' => "Du har fulgt en henvisning til en side som endnu ikke findes.
 For at oprette siden skal du begynde at skrive i boksen nedenfor
@@ -1312,6 +1311,7 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
 'preferences' => 'Indstillinger',
 'mypreferences' => 'Indstillinger',
 'prefs-edits' => 'Antal redigeringer:',
+'prefsnologintext2' => 'Du skal $1 for at ændre brugerindstillinger.',
 'changepassword' => 'Skift adgangskode',
 'prefs-skin' => 'Udseende',
 'skin-preview' => 'Forhåndsvisning',
@@ -1611,7 +1611,8 @@ Vær venlig at gennemse og bekræft dine ændringer.',
 'recentchanges-label-minor' => 'Dette er en mindre ændring',
 'recentchanges-label-bot' => 'Denne redigering blev udført af en bot',
 'recentchanges-label-unpatrolled' => 'Denne redigering er endnu ikke blevet patruljeret',
-'recentchanges-legend-newpage' => '$1 – ny side',
+'recentchanges-label-plusminus' => 'Størrelsen på siden blev ændret med dette antal bytes',
+'recentchanges-legend-newpage' => '(se også [[Special:NewPages|listen over nye sider]])',
 'rcnote' => "Herunder ses {{PLURAL:$1|'''1''' ændring|de sidste '''$1''' ændringer}} fra {{PLURAL:$2|i dag|de sidste '''$2''' dage}} fra den $4, kl. $5.",
 'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
 'rclistfrom' => 'Vis nye ændringer startende fra $1',
@@ -3772,7 +3773,7 @@ Du kan også [[Special:EditWatchlist|bruge standard editoren]].',
 'duplicate-defaultsort' => 'Advarsel: Standardsorteringsnøglen "$2" tilsidesætter den tidligere sorteringsnøgle "$1".',
 
 # Special:Version
-'version' => 'Version',
+'version' => 'Information om MediaWiki',
 'version-extensions' => 'Installerede udvidelser',
 'version-specialpages' => 'Specialsider',
 'version-parserhooks' => 'Oversætter-funktioner',
@@ -3788,7 +3789,7 @@ Du kan også [[Special:EditWatchlist|bruge standard editoren]].',
 'version-hook-subscribedby' => 'Brugt af',
 'version-version' => '(Version $1)',
 'version-license' => 'Licens',
-'version-poweredby-credits' => "Denne wiki er drevet af '''[https://www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Denne wiki er drevet af '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'andre',
 'version-poweredby-translators' => 'translatewiki.net oversættere',
 'version-credits-summary' => 'Vi vil gerne anerkende følgende personer for deres bidrag til [[Special:Version|MediaWiki]].',
@@ -3829,6 +3830,7 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 
 # Special:SpecialPages
 'specialpages' => 'Specialsider',
+'specialpages-note-top' => 'Forklaring',
 'specialpages-note' => '* Normale specialsider.
 * <span class="mw-specialpagerestricted">Specialsider med begrænset adgang.</span>',
 'specialpages-group-maintenance' => 'Vedligeholdelsesside',
index 40607b0..b2f8694 100644 (file)
@@ -111,12 +111,12 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Aktive_Benutzer' ),
        'Allmessages'               => array( 'MediaWiki-Systemnachrichten', 'Systemnachrichten' ),
+       'AllMyUploads'              => array( 'Alle_meine_Dateien' ),
        'Allpages'                  => array( 'Alle_Seiten' ),
        'Ancientpages'              => array( 'Älteste_Seiten' ),
        'Badtitle'                  => array( 'Ungültiger_Seitenname' ),
        'Blankpage'                 => array( 'Leerseite', 'Leere_Seite' ),
        'Block'                     => array( 'Sperren' ),
-       'Blockme'                   => array( 'Proxy-Sperre' ),
        'Booksources'               => array( 'ISBN-Suche' ),
        'BrokenRedirects'           => array( 'Defekte_Weiterleitungen', 'Kaputte_Weiterleitungen' ),
        'Categories'                => array( 'Kategorien' ),
@@ -128,10 +128,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Benutzerkonto_anlegen' ),
        'Deadendpages'              => array( 'Sackgassenseiten' ),
        'DeletedContributions'      => array( 'Gelöschte_Beiträge' ),
-       'Disambiguations'           => array( 'Begriffsklärungsverweise' ),
        'DoubleRedirects'           => array( 'Doppelte_Weiterleitungen' ),
        'EditWatchlist'             => array( 'Beobachtungsliste_bearbeiten' ),
        'Emailuser'                 => array( 'E-Mail_senden', 'Mailen', 'E-Mail' ),
+       'ExpandTemplates'           => array( 'Vorlagen_expandieren' ),
        'Export'                    => array( 'Exportieren' ),
        'Fewestrevisions'           => array( 'Wenigstbearbeitete_Seiten' ),
        'FileDuplicateSearch'       => array( 'Dateiduplikatsuche', 'Datei-Duplikat-Suche' ),
@@ -176,10 +176,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Geschützte_Seiten' ),
        'Protectedtitles'           => array( 'Geschützte_Titel', 'Gesperrte_Titel' ),
        'Randompage'                => array( 'Zufällige_Seite' ),
+       'RandomInCategory'          => array( 'Zufällige_Seite_in_Kategorie' ),
        'Randomredirect'            => array( 'Zufällige_Weiterleitung' ),
        'Recentchanges'             => array( 'Letzte_Änderungen' ),
        'Recentchangeslinked'       => array( 'Änderungen_an_verlinkten_Seiten' ),
        'Redirect'                  => array( 'Weiterleitung' ),
+       'ResetTokens'               => array( 'Tokens_zurücksetzen' ),
        'Revisiondelete'            => array( 'Versionslöschung' ),
        'Search'                    => array( 'Suche' ),
        'Shortpages'                => array( 'Kürzeste_Seiten' ),
@@ -278,6 +280,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'zentriert', 'center', 'centre' ),
        'img_framed'                => array( '1', 'gerahmt', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'rahmenlos', 'frameless' ),
+       'img_lang'                  => array( '1', 'sprache=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'rand', 'border' ),
@@ -318,6 +321,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'REVISIONSJAHR', 'VERSIONSJAHR', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'REVISIONSZEITSTEMPEL', 'VERSIONSZEITSTEMPEL', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'REVISIONSBENUTZER', 'VERSIONSBENUTZER', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'VERSIONSGRÖSSE', 'REVISIONSIZE' ),
        'fullurl'                   => array( '0', 'VOLLSTÄNDIGE_URL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'VOLLSTÄNDIGE_URL_C:', 'FULLURLE:' ),
        'canonicalurl'              => array( '0', 'KANONISCHE_URL:', 'CANONICALURL:' ),
index e7bdbbc..9fe6e3b 100644 (file)
 
 $namespaceNames = array(
        NS_MEDIA            => 'Medya',
-       NS_SPECIAL          => 'Xısusi',
-       NS_TALK             => 'Mesac',
+       NS_SPECIAL          => 'Bağse',
+       NS_TALK             => 'Vaten',
        NS_USER             => 'Karber',
-       NS_USER_TALK        => 'Karber_mesac',
-       NS_PROJECT_TALK     => '$1_mesac',
+       NS_USER_TALK        => 'Karber_vaten',
+       NS_PROJECT_TALK     => '$1_vaten',
        NS_FILE             => 'Dosya',
-       NS_FILE_TALK        => 'Dosya_mesac',
+       NS_FILE_TALK        => 'Dosya_vaten',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_mesac',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_vaten',
        NS_TEMPLATE         => 'Şablon',
-       NS_TEMPLATE_TALK    => 'Şablon_mesac',
-       NS_HELP             => 'Peşti',
-       NS_HELP_TALK        => 'Peşti_mesac',
-       NS_CATEGORY         => 'Kategoriye',
-       NS_CATEGORY_TALK    => 'Kategoriye_mesac',
+       NS_TEMPLATE_TALK    => 'Şablon_vaten',
+       NS_HELP             => 'Desteg',
+       NS_HELP_TALK        => 'Desteg_vaten',
+       NS_CATEGORY         => 'Kategori',
+       NS_CATEGORY_TALK    => 'Kategori_vaten',
 );
 
 $namespaceAliases = array(
+       'Xısusi'               => NS_SPECIAL,
        'Werênayış'            => NS_TALK,
+       'Mesac'                => NS_TALK,
        'Karber_werênayış'     => NS_USER_TALK,
+       'Karber_mesac'         => NS_USER_TALK,
        '$1_werênayış'         => NS_PROJECT_TALK,
+       '$1_mesac'             => NS_PROJECT_TALK,
        'Dosya_werênayış'      => NS_FILE_TALK,
+       'Dosya_mesac'          => NS_FILE_TALK,
        'MediaWiki_werênayış'  => NS_MEDIAWIKI_TALK,
+       'MediaWiki_mesac'      => NS_MEDIAWIKI_TALK,
        'Şablon_werênayış'     => NS_TEMPLATE_TALK,
+       'Şablon_mesac'         => NS_TEMPLATE_TALK,
        'Desteg'               => NS_HELP,
        'Desteg_werênayış'     => NS_HELP_TALK,
+       'Peşti'                => NS_HELP,
+       'Peşti_mesac'          => NS_HELP_TALK,
        'Peşti_werênayış'      => NS_HELP_TALK,
        'Kategori'             => NS_CATEGORY,
        'Kategori_werênayış'   => NS_CATEGORY_TALK,
+       'Kategoriye'           => NS_CATEGORY,
+       'Kategoriye_mesac'     => NS_CATEGORY_TALK,
        'Kategoriye_werênayış' => NS_CATEGORY_TALK,
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'KarberéAktivi', 'AktivKarberi' ),
+       'Activeusers'               => array( 'KarberéAktivi' ),
        'Allmessages'               => array( 'MesaciPéro' ),
-       'Allpages'                  => array( 'PeleyPéro' ),
-       'Ancientpages'              => array( 'PeleyKehani' ),
-       'Badtitle'                  => array( 'SernameyoXırab' ),
+       'AllMyUploads'              => array( 'DosyeyMı' ),
+       'Allpages'                  => array( 'PeriPéro' ),
+       'Ancientpages'              => array( 'PeréKehani' ),
+       'Badtitle'                  => array( 'SernameyoXirab' ),
        'Blankpage'                 => array( 'PeréVengi' ),
-       'Block'                     => array( 'Bloqe', 'BloqeIP', 'BloqeyéKarber' ),
-       'Blockme'                   => array( 'BloqeyéMe' ),
-       'Booksources'               => array( 'KıtabeÇıme' ),
-       'BrokenRedirects'           => array( 'HeténayışoXırab' ),
-       'Categories'                => array( 'Kategoriyan' ),
-       'ChangeEmail'               => array( 'EpostaVırnayış' ),
-       'ChangePassword'            => array( 'ParolaBıvırné', 'ParolaResetke' ),
-       'ComparePages'              => array( 'PeraPéverke' ),
-       'Confirmemail'              => array( 'EpostayAraştke' ),
+       'Block'                     => array( 'Bloke', 'BlokeIP', 'BlokeyéKarberi' ),
+       'Booksources'               => array( 'ÇımeyéKıtabi' ),
+       'BrokenRedirects'           => array( 'HetenayışoXırab' ),
+       'Categories'                => array( 'Kategoriy' ),
+       'ChangeEmail'               => array( 'EpostaVurnayış' ),
+       'ChangePassword'            => array( 'ParolaBıvırn', 'ParolaResetk' ),
+       'ComparePages'              => array( 'PeraAteberd' ),
+       'Confirmemail'              => array( 'EpostaAraştk' ),
        'Contributions'             => array( 'Dekerdışi' ),
-       'CreateAccount'             => array( 'HesabVırazé' ),
-       'Deadendpages'              => array( 'PeraBıgiré' ),
-       'DeletedContributions'      => array( 'DekerdışékeBesterneyayé' ),
-       'Disambiguations'           => array( 'Arézekerdış' ),
-       'DoubleRedirects'           => array( 'HetanayışoDılet' ),
-       'EditWatchlist'             => array( 'ListeyaSeyrkerdışiVırnayış' ),
+       'CreateAccount'             => array( 'HesabVıraz' ),
+       'Deadendpages'              => array( 'PeréMerdey' ),
+       'DeletedContributions'      => array( 'DekerdışékBesterneyayé' ),
+       'DoubleRedirects'           => array( 'HetenayışoDilet' ),
+       'EditWatchlist'             => array( 'VırnayışanéListeyaTemaşek' ),
        'Emailuser'                 => array( 'EpostayaKarberi' ),
-       'Export'                    => array( 'Ateberde' ),
-       'Fewestrevisions'           => array( 'TewrtaynRewizyon' ),
-       'FileDuplicateSearch'       => array( 'KopyaydosyaCıgeyrayış', 'DıletdosyaCıgeyrayış' ),
-       'Filepath'                  => array( 'RayaDosya', 'HerunaDosya', 'CayêDosya' ),
-       'Import'                    => array( 'Azeredé', 'Atewrke' ),
-       'Invalidateemail'           => array( 'EpostaAraştkerdışiBıterkné' ),
-       'BlockList'                 => array( 'ListeyéBloqan', 'IPBloqi', 'Blokqeyé_IP' ),
-       'LinkSearch'                => array( 'GreCıgeyrayış' ),
-       'Listadmins'                => array( 'Listeyaİdarekaran' ),
+       'ExpandTemplates'           => array( 'ŞablonaHerake' ),
+       'Export'                    => array( 'Ateberd' ),
+       'Fewestrevisions'           => array( 'TewrtaynRewizyoni' ),
+       'FileDuplicateSearch'       => array( 'KopyadosyaCigérayış', 'DiletdosyaCigérayış' ),
+       'Filepath'                  => array( 'RayaDosya', 'CayDosya' ),
+       'Import'                    => array( 'Azerek' ),
+       'Invalidateemail'           => array( 'EpostayaBetale' ),
+       'BlockList'                 => array( 'ListeyaBloki', 'ListeyaBlokan', 'ListeyaBlokeyéIPi' ),
+       'LinkSearch'                => array( 'GireCıgeyrayış' ),
+       'Listadmins'                => array( 'ListeyaHeténkaran' ),
        'Listbots'                  => array( 'ListeyaBotan' ),
-       'Listfiles'                 => array( 'ListeyaDosyayan', 'DosyayaListeke', 'ListeyéResiman' ),
-       'Listgrouprights'           => array( 'ListeyaHeqandéGruban', 'HeqéGrubdeKarberan' ),
+       'Listfiles'                 => array( 'ListeyDosyayan', 'DosyayaListek', 'ListeyResiman' ),
+       'Listgrouprights'           => array( 'ListeyaHeqanéGruban', 'HeqéGrubéKarberan' ),
        'Listredirects'             => array( 'ListeyaArézekerdışan' ),
-       'Listusers'                 => array( 'ListeyaKarberan', 'KarberaListeke' ),
-       'Lockdb'                    => array( 'DBKilitke' ),
+       'Listusers'                 => array( 'ListeyaKarberan', 'KarberaListek' ),
+       'Lockdb'                    => array( 'DBKilitk' ),
        'Log'                       => array( 'Qeyd', 'Qeydi' ),
        'Lonelypages'               => array( 'PeréBéwayıri' ),
        'Longpages'                 => array( 'PeréDergi' ),
@@ -124,6 +135,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PerékeStaryayé' ),
        'Protectedtitles'           => array( 'SernameyékeStaryayé' ),
        'Randompage'                => array( 'Raştameye', 'PelayakeRaştamé' ),
+       'RandomInCategory'          => array( 'KategoriyaXoseri' ),
        'Randomredirect'            => array( 'HetenayışoRaştameye' ),
        'Recentchanges'             => array( 'VırnayışéPeyéni' ),
        'Recentchangeslinked'       => array( 'GreyéVırnayışéPeyénan' ),
@@ -140,7 +152,7 @@ $specialPageAliases = array(
        'Uncategorizedpages'        => array( 'PeleyékeKategoriyanébiyé' ),
        'Uncategorizedtemplates'    => array( 'ŞablonékeKategoriyanébiyé' ),
        'Undelete'                  => array( 'Peyserbiya' ),
-       'Unlockdb'                  => array( 'DBKılitiAke' ),
+       'Unlockdb'                  => array( 'DBKılitiAk' ),
        'Unusedcategories'          => array( 'KategoriyayékeNékariyayé' ),
        'Unusedimages'              => array( 'DosyeyékeNékariyayé' ),
        'Unusedtemplates'           => array( 'ŞablonékeNékariyayé' ),
@@ -362,6 +374,7 @@ $messages = array(
 'tog-noconvertlink' => 'Greyê sernami çerx kerdışi bıqefılne',
 'tog-norollbackdiff' => 'Peyserardışi ra dıme ferqi caverde',
 'tog-useeditwarning' => 'Wexto ke mı yew pela nizami be vurnayışanê nêqeydbiyayeyan caverdê, hay be mı ser de',
+'tog-prefershttps' => 'Ronışten akerden de  greyo itimadın bıkarne',
 
 'underline-always' => 'Tım',
 'underline-never' => 'Qet',
@@ -483,23 +496,23 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'Mewzu vıraze',
-'vector-action-delete' => 'Bestere',
-'vector-action-move' => 'Bere',
+'vector-action-delete' => 'Bestern',
+'vector-action-move' => 'Ber',
 'vector-action-protect' => 'Star ke',
 'vector-action-undelete' => 'Esterıtışi peyser bıgê',
 'vector-action-unprotect' => 'Starkerdışi bıvurne',
 'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
-'vector-view-create' => 'Vıraze',
-'vector-view-edit' => 'Bıvurne',
-'vector-view-history' => 'Versiyonê verêni',
-'vector-view-view' => 'Bıwane',
-'vector-view-viewsource' => 'Çımey bıvêne',
+'vector-view-create' => 'İycad ke',
+'vector-view-edit' => 'Timar ke',
+'vector-view-history' => 'Verénan bıvin',
+'vector-view-view' => 'Buwan',
+'vector-view-viewsource' => 'Çımi bıvin',
 'actions' => 'Hereketi',
 'namespaces' => 'Cayê namey',
 'variants' => 'Varyanti',
 
 'navigation-heading' => 'Menuya Navigasyoni',
-'errorpagetitle' => 'Xeta',
+'errorpagetitle' => 'Ğeta',
 'returnto' => 'Peyser şo $1.',
 'tagline' => '{{SITENAME}} ra',
 'help' => 'Desteg',
@@ -510,12 +523,12 @@ $messages = array(
 'history' => 'Verora perer',
 'history_short' => 'Verén',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'printableversion' => 'Asayışê çapkerdışi',
+'printableversion' => 'Versiyona Nusnayışi',
 'permalink' => 'Gıreyo jûqere',
 'print' => 'Nusten ke',
-'view' => 'Bıvêne',
-'edit' => 'Bıvurnên',
-'create' => 'Vıraze',
+'view' => 'Bıvin',
+'edit' => 'Timar ke',
+'create' => 'İycad ke',
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
 'delete' => 'Bestere',
@@ -570,8 +583,8 @@ $1',
 'copyright' => 'Zerrekacı $1 bındı not biya.',
 'copyrightpage' => '{{ns:project}}:Heqa telifi',
 'currentevents' => 'Veng u vac',
-'currentevents-url' => 'Project:Veng u vac',
-'disclaimers' => 'Redê mesuliyeti',
+'currentevents-url' => 'Project:Rocani hadisey',
+'disclaimers' => 'Reddiya mesuliyeti',
 'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
 'edithelp' => 'Peştdariya vurnayışi',
 'helppage' => 'Help:Zerrek',
@@ -600,7 +613,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Zey $1 ra {{PLURAL:$3|zewbi karber|$3 karberi}} ($2) esto.',
 'youhavenewmessagesmanyusers' => '$1 ra tay karberi ($2) dı estê.',
 'newmessageslinkplural' => '{{PLURAL:$1|yew mesaco newe|999=mesacê newey}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|vurnayışo peyên|999=vurnayışê peyêni}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|vırnayışa|999=vırnayışé}} peyéni',
 'youhavenewmessagesmulti' => '$1 mesaco newe esto',
 'editsection' => 'bıvurne',
 'editold' => 'bıvurne',
@@ -625,7 +638,7 @@ $1',
 'page-atom-feed' => '"$1" Cıresnayışê atomi',
 'feed-atom' => 'Atom',
 'feed-rss' => 'RSS',
-'red-link-title' => '$1 (çınîya)',
+'red-link-title' => '$1 (çınya)',
 'sort-descending' => 'Ratnayışê qemeyayışi',
 'sort-ascending' => 'Ratnayışê Zeydnayışi',
 
@@ -637,7 +650,7 @@ $1',
 'nstab-project' => 'Pera proci',
 'nstab-image' => 'Dosya',
 'nstab-mediawiki' => 'Mesac',
-'nstab-template' => 'Tewre',
+'nstab-template' => 'Şablon',
 'nstab-help' => 'Pela peşti',
 'nstab-category' => 'Kategori',
 
@@ -654,6 +667,8 @@ Seba lista pelanê xasanê vêrdeyan reca kena: [[Special:SpecialPages|{{int:spe
 # General errors
 'error' => 'Ğeta',
 'databaseerror' => 'Ğetay ardoği',
+'databaseerror-text' => 'Tabanda malumati de ğırabiya persayışi bi
+Na nusteber  zew ğırabin asınena.',
 'databaseerror-query' => 'Perskerdış:$1',
 'databaseerror-function' => 'Fonksiyon: $1',
 'databaseerror-error' => 'Xırab: $1',
@@ -738,7 +753,7 @@ Xızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
 'logouttext' => "'''Şıma hesabra newke vicyay.'''
 
 Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de hesabe şıma akerde aseno.",
-'welcomeuser' => 'Xeyr amey, $1!',
+'welcomeuser' => 'Ğeyr amey, $1!',
 'welcomecreation-msg' => 'Hesabê şıma abiyo.
 [[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.',
 'yourname' => 'Nameyê karberi:',
@@ -772,13 +787,14 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
 'nologinlink' => 'Yew hesab ake',
 'createaccount' => 'Hesab vıraze',
 'gotaccount' => "Hesabê şıma esto? '''$1'''.",
-'gotaccountlink' => 'Cı kewe',
+'gotaccountlink' => 'Dekewtış',
 'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
-'userlogin-resetpassword-link' => 'Parola xo kerda xo vira?',
+'userlogin-resetpassword-link' => 'Şıma parola ke ğo vira?',
 'helplogin-url' => 'Help:Qeydbiyayış',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Desteg be qeydbiyayış ra]]',
 'userlogin-createanother' => 'Zewbi hesab vıraz',
 'createacct-join' => 'Cêr melumatê xo cı ke',
+'createacct-another-join' => 'Malumata hesabdé ğoye newi dekeré cér.',
 'createacct-emailrequired' => 'Adresa e-postey',
 'createacct-emailoptional' => 'Adresa e-postey (mecburi niya)',
 'createacct-email-ph' => 'Adresa e-posteyê xo cıkewe',
@@ -935,6 +951,7 @@ Parola vêrdiye: $2',
 'resettokens-legend' => 'Reset fi ye',
 'resettokens-tokens' => 'Beli kerdeni:',
 'resettokens-token-label' => '$1 (weziyeta newki: $2)',
+'resettokens-watchlist-token' => 'Qandé [[Special:Watchlist|Per vırnayışa lista da temaşan]]  web wari kerdeni (Atom/RSS)',
 'resettokens-done' => 'Reset fi',
 'resettokens-resetbutton' => 'Reset fiyayış weçin',
 
@@ -1425,6 +1442,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'preferences' => 'Tercihi',
 'mypreferences' => 'Tercihi',
 'prefs-edits' => 'Amarê vurnayışan:',
+'prefsnologintext2' => 'Reca kem  sazé tercihané karberi $1.',
 'changepassword' => 'Parola bıvurne',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verasayış',
@@ -1636,7 +1654,12 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'right-editusercssjs' => 'CSS u dosyanê JSiê karberanê binan sero bıgureye',
 'right-editusercss' => 'Dosyanê CSSiê karberanê binan sero bıgureye',
 'right-edituserjs' => 'Dosyanê JSiê karberanê binan sero bıgureye',
+'right-editmyusercss' => 'CSS dosyaya karberinda ğo timar ke',
+'right-editmyuserjs' => 'JavaScript dosyaya karberinda ğo timar ke',
 'right-viewmywatchlist' => 'Lista seyr de xo bıvin',
+'right-editmywatchlist' => 'Listeya temaşiya karberinda ğo timar ke.Not  tay karfinayışi na icazet nédeyo zi pera dekeno de.',
+'right-viewmyprivateinfo' => 'Bağse malumatané ğo bıasne (e-posta, nameyo raştay vs.)',
+'right-editmyprivateinfo' => 'Bağse malumatané ğo bıvırn (e-posta, nameyo raştay vs.)',
 'right-editmyoptions' => 'Tercihané ğo bıvırn',
 'right-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
 'right-markbotedits' => 'Vurnayışanê peyd ameyan, vurnayışê boti deye nışan kerê',
@@ -1717,7 +1740,9 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'recentchanges-label-minor' => 'Eno yew vurnayışo qıckeko',
 'recentchanges-label-bot' => 'Yew boti xo het ra no vurnayış vıraşto',
 'recentchanges-label-unpatrolled' => 'Eno vurnayış hewna dewriya nêbiyo',
-'recentchanges-legend-newpage' => '$1 - pela newi',
+'recentchanges-label-plusminus' => 'Ebata na perer ebatta na nımra de vırneya',
+'recentchanges-legend-newpage' => '(Zewbi bıvin [[Special:NewPages|Listeya peran de newan]])',
+'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnote' => "Bıni dı  {{PLURAL:$2|roc|'''$2''' rocan}}  ra {{PLURAL:$1|'''1''' vurnayış|'''$1''' vurnayışi}} éyé cér de yé , $5 ra hetana $4.",
 'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
 'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
@@ -1731,7 +1756,7 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'diff' => 'ferq',
 'hist' => 'verên',
 'hide' => 'Bınımne',
-'show' => 'Bımocne',
+'show' => 'Bıasne',
 'minoreditletter' => 'q',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -2115,6 +2140,8 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 # Random page in category
 'randomincategory' => 'Ğoseri pera kategoriya',
 'randomincategory-invalidcategory' => '"$1" namedı kategori çıniya',
+'randomincategory-nopages' => 'Kategori da [[:Category:$1|$1]] de qet  per çıniya.',
+'randomincategory-selectcategory' => 'Pera ke cıra raşt ameye kategori do bıgéri yo: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Şo',
 
 # Random redirect
@@ -2147,6 +2174,8 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'pageswithprop-text' => 'Na per pimanen pera kena liste.',
 'pageswithprop-prop' => 'Nameyo xısusi:',
 'pageswithprop-submit' => 'Şo',
+'pageswithprop-prophidden-long' => 'Erca metinda derger nımneya ($1)',
+'pageswithprop-prophidden-binary' => 'Erca dıdıyına ($1) nımneyé',
 
 'doubleredirects' => 'Hetenayışê dıletıni',
 'doubleredirectstext' => 'no pel pelê ray motışani liste keno.
@@ -2220,13 +2249,14 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'listusers' => 'Listeyê Karberan',
 'listusers-editsonly' => 'Teyna karberan bimucne ke ey nuştê',
 'listusers-creationsort' => 'goreyê wextê vıraştışi rêz ker',
+'listusers-desc' => 'Kemeyen rézed ratn',
 'usereditcount' => '$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}',
 'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
-'newpages' => 'Pe newey',
+'newpages' => 'Pe newey',
 'newpages-username' => 'Nameyê karberi:',
 'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
-'move' => 'Bere',
-'movethispage' => 'Na pele bere',
+'move' => 'Ber',
+'movethispage' => 'Na perer ber',
 'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
 Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.',
 'unusedcategoriestext' => 'kategoriyê cêrıni bıbo zi çı nêşuxulyena.',
@@ -2580,7 +2610,7 @@ Tı eşkeno seviyeye kılit kerdışi bıvurno, feqat tı nıeşken "cascading p
 
 # Restrictions (nouns)
 'restriction-edit' => 'Bıvurne',
-'restriction-move' => 'Bere',
+'restriction-move' => 'Ber',
 'restriction-create' => 'İycad ke',
 'restriction-upload' => 'Bar ke',
 
@@ -2773,7 +2803,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipblocklist-empty' => 'Lista kılitkerdışi venga.',
 'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
 'blocklink' => 'kılit ke',
-'unblocklink' => 'a ke',
+'unblocklink' => 'bloqi hewad',
 'change-blocklink' => 'kılitkerdışi bıvurne',
 'contribslink' => 'iştıraqi',
 'emaillink' => 'e-poste bırışe',
@@ -2901,14 +2931,14 @@ Yewna name bınus.',
 'movepage-page-moved' => 'pelê $1i kırışiya pelê $2i.',
 'movepage-page-unmoved' => 'pelê $1i nêkırışiyeno sernameyê $2i.',
 'movepage-max-pages' => 'tewr ziyed $1 {{PLURAL:$1|peli|peli}} kırışiya u hıni ziyedê ıney otomotikmen nêkırışiyeno.',
-'movelogpage' => 'Qeydê berdışi',
+'movelogpage' => 'Qeydé berdışi',
 'movelogpagetext' => 'nameyê liste ya ke cêr de yo, pelê vuriyayeyani mocneno',
 'movesubpage' => '{{PLURAL:$1|Subpage|pelê bınıni}}',
 'movesubpagetext' => '{{PLURAL:$1|pelê bınıni yê|pelê bınıni yê}} no $1 peli cer de yo.',
 'movenosubpage' => 'pelê bınıni yê no peli çino.',
 'movereason' => 'Sebeb:',
 'revertmove' => 'peyser bia',
-'delete_and_move' => 'Bestere û bere',
+'delete_and_move' => 'Bestern u ber',
 'delete_and_move_text' => '==gani hewn a bıbıo/bıesteriyo==
 
 " no [[:$1]]" name de yew pel ca ra esto. şıma wazeni pê hewn a kerdışê ey peli vurnayişê nameyi bıkeri?',
@@ -3059,16 +3089,16 @@ dosyaya emaneti vindbiyo',
 'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Pelaya karberi',
+'tooltip-pt-userpage' => 'Pera şımaya karberi',
 'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
-'tooltip-pt-mytalk' => 'Pela ya Qıse vatışi',
+'tooltip-pt-mytalk' => 'Pera şımaya vaten',
 'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
 'tooltip-pt-preferences' => 'Tercihê to',
 'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
 'tooltip-pt-mycontris' => 'Yew lista iştıraqanê şıma',
 'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
-'tooltip-pt-logout' => 'Bıveciye',
+'tooltip-pt-logout' => 'Vıcyayış',
 'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
 'tooltip-ca-edit' => 'Tı şenay na pele bıvurnê.
 Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
@@ -3087,7 +3117,7 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-search-go' => 'Ebe nê namey tami şo yew pela ke esta',
 'tooltip-search-fulltext' => 'Nê  metni peran dı cı geyre',
 'tooltip-p-logo' => 'Pela seri bıvênên',
-'tooltip-n-mainpage' => 'Şo pela seri',
+'tooltip-n-mainpage' => 'Şo pera seri',
 'tooltip-n-mainpage-description' => 'Şo pela seri',
 'tooltip-n-portal' => 'Heqa projey de, kes çı şeno bıkero, çıçiyo koti deyo',
 'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
@@ -3129,6 +3159,7 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 Tı eşkeno yew sebeb bınus.',
 'tooltip-preferences-save' => 'Terciha qeyd ke',
 'tooltip-summary' => 'Yew xulasaya kilm binuse',
+'interlanguage-link-title' => '$1 - $2',
 
 # Scripts
 'common.js' => '/* Any JavaScript here will be loaded for all users on every page load. */',
@@ -4129,6 +4160,7 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 # Special:Redirect
 'redirect' => "Hetenayışa dosyay, karberi yana  rewizyona ID'i",
 'redirect-legend' => 'Hetenayışa dosya yana pela',
+'redirect-summary' => "Na pera bağsi şıma bena dosya (cıré namey dosya deyeno), zu per (zu ID'A rewizyoni deyaya) yana cıré zu pera karberi beno herın (kamiya karberiya amoriyen). Karkerden: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], yana  [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Şo',
 'redirect-lookup' => 'Bewni',
 'redirect-value' => 'Erc:',
index 9d26c24..a0ba333 100644 (file)
@@ -62,7 +62,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Nejstarše_boki' ),
        'Blankpage'                 => array( 'Prozny_bok' ),
        'Block'                     => array( 'Blokěrowaś' ),
-       'Blockme'                   => array( 'Proksy-blokěrowanje' ),
        'Booksources'               => array( 'Pytaś_pó_ISBN' ),
        'BrokenRedirects'           => array( 'Njefunkcioněrujuce_dalejpósrědnjenja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -72,7 +71,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Wužywarske_konto_załožyś' ),
        'Deadendpages'              => array( 'Boki_kenž_su_slěpe_gasy' ),
        'DeletedContributions'      => array( 'Wulašowane_pśinoski' ),
-       'Disambiguations'           => array( 'Wótkaze_ku_rozjasnjenju_wopśimjeśa' ),
        'DoubleRedirects'           => array( 'Dwójne_dalejpósrědnjenja' ),
        'Emailuser'                 => array( 'E-mail' ),
        'Export'                    => array( 'Eksportěrowaś' ),
@@ -168,7 +166,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Doglědowane změny w aktualnych změnach schowaś',
 'tog-newpageshidepatrolled' => 'Doglědowane boki z lisćiny nowych bokow schowaś',
 'tog-extendwatchlist' => 'Wobglědowańku wócyniś, aby wšě změny pokazał, nic jano nejnowše',
-'tog-usenewrc' => 'Kupkowe změny pó boku w aktualnych změnach a wobglědowanjach (trjeba JavaScript)',
+'tog-usenewrc' => 'Kupkowe změny pó boku w aktualnych změnach a wobglědowanjach',
 'tog-numberheadings' => 'Nadpisma awtomatiski numerěrowaś',
 'tog-showtoolbar' => 'Wobźěłowańsku rědku pokazaś',
 'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś',
@@ -204,6 +202,7 @@ $messages = array(
 'tog-showhiddencats' => 'Schowane kategorije pokazaś',
 'tog-norollbackdiff' => 'Rozdźěl pó slědkstajenju zanjechaś',
 'tog-useeditwarning' => 'Warnowaś, gaž bok spušća se z njeskłaźonymi změnami',
+'tog-prefershttps' => 'Pśi pśizjawjenju pśecej wěsty zwisk wužywaś',
 
 'underline-always' => 'pśecej',
 'underline-never' => 'žednje',
@@ -267,6 +266,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'now',
 'dec' => 'dec',
+'january-date' => '$1. januara',
+'february-date' => '$1. februara',
+'march-date' => '$1. měrca',
+'april-date' => '$1. apryla',
+'may-date' => '$1. maja',
+'june-date' => '$1. junija',
+'july-date' => '$1. julija',
+'august-date' => '$1. awgusta',
+'september-date' => '$1. septembra',
+'october-date' => '$1. oktobra',
+'november-date' => '$1. nowembra',
+'december-date' => '$1. decembra',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategoriji|Kategorije}}',
@@ -348,6 +359,7 @@ $messages = array(
 'create-this-page' => 'Bok wuźěłaś',
 'delete' => 'Wulašowaś',
 'deletethispage' => 'Toś ten bok wulašowaś',
+'undeletethispage' => 'Toś ten bok wótnowiś',
 'undelete_short' => '{{PLURAL:$1|1 wersiju|$1 wersiji|$1 wersije}} nawrośiś.',
 'viewdeleted_short' => '{{PLURAL:$1|jadnu wulašowanu změnu|$1 wulašowanej změnje|$1 wulašowane změny|$1 wulašowanych změnow}} se woglědaś',
 'protect' => 'Šćitaś',
@@ -475,6 +487,12 @@ Płaśece specialne boki namakaju se pód [[Special:SpecialPages|lisćinu specia
 # General errors
 'error' => 'Zmólka',
 'databaseerror' => 'Zmólka w datowej bance',
+'databaseerror-text' => 'Zmólka w datowej bance jo nastała.
+To móžo na programowu zmólku w softwarje pokazaś.',
+'databaseerror-textcl' => 'Zmólka w datowej bance jo nastała.',
+'databaseerror-query' => 'Wótpšašanje: $1',
+'databaseerror-function' => 'Funkcija: $1',
+'databaseerror-error' => 'Zmólka: $1',
 'laggedslavemode' => 'Glědaj: Jo móžno, až pokazany bok nejaktualnjejše změny njewopśimjejo.',
 'readonly' => 'Datowa banka jo zacynjona',
 'enterlockreason' => 'Pšosym zapódaj pśicynu za zacynjenje datoweje banki a informaciju, ga buźo zasej pśistupna',
@@ -507,6 +525,7 @@ Pšosym daj to a pśisłušny URL [[Special:ListUsers/sysop|administratoroju]] k
 'cannotdelete-title' => 'Bok "$1" njedajo se lašowaś',
 'delete-hook-aborted' => 'Wulašowanje pśez kokulu pśetergnjone.
 Njejo žedno wujasnjenje.',
+'no-null-revision' => 'Nowa nulowa wersija za bok "$1" njedajo se napóraś',
 'badtitle' => 'Njepłaśecy nadpis',
 'badtitletext' => 'Nadpis pominanego boka jo był njepłaśecy, prozny abo njekorektny nadpis, póchadajucy z mjazyrěcnego abo interwikijowego wótkaza. Snaź wopśimjejo jadno abo wěcej znamuškow, kótarež njejsu w nadpisach dowólone.',
 'perfcached' => 'Toś te daty póchadaju z pufrowaka a mógu snaź njeaktualne byś. Maksimalnje {{PLURAL:$1|jaden wuslědk stoj|$1 wuslědka stojtej|$1 wuslědki stoje|$1 wuslědkow stoj}} w pufrowaku k dispoziciji.',
@@ -530,6 +549,10 @@ Aby pśełožki za wšykne wikije pśidał abo změnił, wužywaj pšosym [//tra
 'namespaceprotected' => "Njejsy wopšawnjony, boki w rumje: '''$1''' wobźěłaś.",
 'customcssprotected' => 'Njamaš pšawo, aby toś ten CSS-bok wobźěłał, dokulaž wopśimujo  wósobinske nastajenja drugego wužywarja.',
 'customjsprotected' => 'Njamaš pšawo, aby toś ten JavaScriptowy bok wobźěłał, dokulaž wopśimujo  wósobinske nastajenja drugego wužywarja.',
+'mycustomcssprotected' => 'Njamaš pšawo toś ten CSS-bok wobźěłaś.',
+'mycustomjsprotected' => 'Njamaš pšawo toś ten JavaScript-bok wobźěłaś.',
+'myprivateinfoprotected' => 'Njamaš pšawo swóje priwatne informacije wobźěłaś.',
+'mypreferencesprotected' => 'Njamaš pšawo swóje nastajenja wobźěłaś.',
 'ns-specialprotected' => 'Njejo móžno, boki w rumje {{ns:special}} wobźěłaś.',
 'titleprotected' => "Bok z toś tym mjenim bu wót [[User:$1|$1]] pśeśiwo napóranjeju šćitany. Pśicyna jo ''$2''.",
 'filereadonlyerror' => 'Njejo móžno dataju "$1" změniś, dokulaž datajowy repozitorium "$2" jo jano cytajobny.
@@ -539,6 +562,7 @@ Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 'invalidtitle-unknownnamespace' => 'Njepłaśiwy titel z njeznatym mjenjowym rumom $1 a tekstom "$2"',
 'exception-nologin' => 'Njejsy se pśizjawił',
 'exception-nologin-text' => 'Pšosym [[Special:Userlogin|pśizjaw se]], aby pśistup na toś ten bok abo akciju měł.',
+'exception-nologin-text-manual' => 'Aby pśistup na toś ten bok abo akciju měł, musyš $1.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: njeznaty wirusowy scanner: ''$1''",
@@ -554,6 +578,7 @@ Glědaj: Jo móžno, až někotare boki pokazuju se snaź tak, ako by ty hyšći
 'yourname' => 'mě wužywarja',
 'userlogin-yourname' => 'Wužywarske mě',
 'userlogin-yourname-ph' => 'Zapódaj swójo wužywarske mě',
+'createacct-another-username-ph' => 'Wužywarske mě zapódaś',
 'yourpassword' => 'šćitne gronidło:',
 'userlogin-yourpassword' => 'Gronidło',
 'userlogin-yourpassword-ph' => 'Zapódaj swójo gronidło',
@@ -583,15 +608,35 @@ Glědaj: Jo móžno, až někotare boki pokazuju se snaź tak, ako by ty hyšći
 'gotaccount' => "Maš južo wužywarske konto? '''$1'''.",
 'gotaccountlink' => 'Pśizjawiś se',
 'userlogin-resetlink' => 'Sy pśizjawjeńske daty zabył?',
-'userlogin-resetpassword-link' => 'Gronidło anulěrowaś',
+'userlogin-resetpassword-link' => 'Sy swójo gronidło zabył?',
 'helplogin-url' => 'Help:Pśizjawiś',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc za pśizjawjenje]]',
-'createaccountmail' => 'Nachylne pśidatne gronidło wužywaś a jo na slědujucu e-mailowu adresu pósłaś',
+'userlogin-loggedin' => 'Sy južo ako {{GENDER:$1|$1 pśizjawjony|$1 pśizjawjona}}. Wužyj slědujucy formular, aby se ako drugi wužywaŕ pśizjawił.',
+'userlogin-createanother' => 'Druge konto załožyś',
+'createacct-join' => 'Zapódaj dołojce swóje informacije.',
+'createacct-another-join' => 'Zapódaj dołojce informacije nowego konta.',
+'createacct-emailrequired' => 'E-mailowa adresa',
+'createacct-emailoptional' => 'E-mailowa adresa (opcionalny)',
+'createacct-email-ph' => 'Zapódaj swóju e-mailowu adresu',
+'createacct-another-email-ph' => 'E-mailowu adresu zapódaś',
+'createaccountmail' => 'Nachylne pśipadne gronidło wužywaś a jo na pódanu e-mailowu adresu pósłaś',
+'createacct-realname' => 'Napšawdne mě (opcionalny)',
 'createaccountreason' => 'Pśicyna:',
+'createacct-reason' => 'Pśicyna',
+'createacct-reason-ph' => 'Cogodla załožujoš druge konto?',
+'createacct-captcha' => 'Wěstotna kontrola',
+'createacct-imgcaptcha-ph' => 'Zapódaj tekst, kótaryž wiźeš dołojce',
+'createacct-submit' => 'Twójo konto załožyś',
+'createacct-another-submit' => 'Druge konto załožyś',
+'createacct-benefit-heading' => '{{SITENAME}} jo se wót luźi ako ty napórała.',
+'createacct-benefit-body1' => '{{PLURAL:$1|změna|změnje|změny}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|bok|boka|boki}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|aktiwny sobuskatkujucy|aktiwnej sobustatkucujej|aktiwne sobustatkujuce}}',
 'badretype' => 'Šćitnej gronidle, kótarejž sy zapódał, se njemakajotej.',
 'userexists' => 'Wužywarske mě se južo wužywa.
 Pšosym wubjeŕ druge mě.',
 'loginerror' => 'Zmólka pśi pśizjawjenju',
+'createacct-error' => 'Zmólka pśi załožowanju konta',
 'createaccounterror' => 'Wužywarske konto njejo se napóraś dało: $1',
 'nocookiesnew' => 'Wužywarske konto jo se južo wutwóriło, ale wužywaŕ njejo pśizjawjony. {{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
 'nocookieslogin' => '{{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
@@ -621,9 +666,7 @@ Jolic jo něchten drugi wó nowe šćitne gronidło pšosył abo ty sy se zasej
 'passwordsent' => 'Nowe šćitne gronidło jo se wótpósłało na e-mailowu adresu wužywarja „$1“.
 Pšosym pśizjaw se zasej, gaž jo dostanjoš.',
 'blocked-mailpassword' => 'Twója IP-adresa jo se za wobźěłowanje bokow blokěrowała a teke pśipósłanje nowego šćitnego gronidła jo se znjemóžniło, aby se znjewužywanjeju zadorało.',
-'eauthentsent' => 'Wobkšuśenje jo se na e-mailowu adresu wótposłało.
-
-Nježli až wótpósćelo se dalšna e-mail na to wužywarske konto, dejš slědowaś instrukcije w powěsći a tak wobkšuśiś, až konto jo wót wěrnosći twójo.',
+'eauthentsent' => 'Wobkšuśenje jo se na pódanu e-mailowu adresu wótposłało. Nježli až wótpósćelo se dalšna e-mail na to wužywarske konto, dejš slědowaś instrukcije w e-mailu, aby wobkšuśił, až konto jo napšawdu twójo.',
 'throttled-mailpassword' => 'E-mail za anulěrowanje gronidła jo se za {{PLURAL:$1|slědnu góźinu|slědnej $1 góźinje|slědne $1 góźiny|slědnych $1 góźin}} pósłała. Aby znjewužywanjeju zasajźało, se jano jadna e-mail za anulěrowanje gronidła na {{PLURAL:$1|góźinu|$1 góźinje|$1 góźiny|$1 góźin}} pósćelo.',
 'mailerror' => 'Zmólka pśi wótpósłanju e-maila: $1',
 'acct_creation_throttle_hit' => 'Woglědowarje toś togo wikija, kótarež wužywaju twóju IP-adresu su napórali {{PLURAL:$1|1 konto|$1 konśe|$1 konta|$1 kontow}} slědny źeń. To jo maksimalna dowólona licba za toś tu periodu.
@@ -642,10 +685,12 @@ Woglědowarje, kótarež wužywaju toś tu IP-adresu njamógu tuchylu dalšne ko
 
 Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnje wutwóriło.',
 'usernamehasherror' => 'Wužywarske mě njesmějo hašowe znamuška wopśimjeś',
-'login-throttled' => 'Sy pśecesto wopytał se pśizjawiś. Pócakaj pšosym, nježli až wopytajoš znowego.',
+'login-throttled' => 'Sy pśecesto wopytał se pśizjawiś. Pócakaj pšosym $1, nježli až wopytajoš znowego.',
 'login-abort-generic' => 'Twójo pśizjawjenje njejo wuspěšne było - pśetergnjone',
 'loginlanguagelabel' => 'Rěc: $1',
 'suspicious-userlogout' => 'Twójo póžedanje za wótzjawjenim jo se wótpokazało, dokulaž zda se, až jo se pósłało pśez wobškóźony wobglědowak abo pufrowański proksy',
+'createacct-another-realname-tip' => 'Napšawdne mě jo opcionalne.
+Jolic jo pódajoš, buźo se to wužywaś, aby pśinoski pśirědowało.',
 
 # Email sending
 'php-mail-error-unknown' => 'Njeznata zmólka w PHP-funkciji mail()',
@@ -661,7 +706,7 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
 'newpassword' => 'Nowe šćitne gronidło:',
 'retypenew' => 'Nowe šćitne gronidło (hyšći raz):',
 'resetpass_submit' => 'Šćitne gronidło nastajiś a se pśizjawiś',
-'changepassword-success' => 'Twójo nowe šćitne gronidło jo nastajone. Něnto se pśizjaw …',
+'changepassword-success' => 'Twóje gronidło jo se wuspěšnje změniło!',
 'resetpass_forbidden' => 'Gronidła njedaju se změniś',
 'resetpass-no-info' => 'Dejš pśizjawjony byś, aby direktny pśistup na toś ten bok měł.',
 'resetpass-submit-loggedin' => 'Gronidło změniś',
@@ -673,8 +718,11 @@ Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło
 
 # Special:PasswordReset
 'passwordreset' => 'Gronidło slědk stajiś',
+'passwordreset-text-one' => 'Wupołni toś ten formular, aby swójo gronidło anulěrował.',
+'passwordreset-text-many' => '{{PLURAL:$1|Zapódaj jadne z pólow, aby swójo gronidło slědk stajił.}}',
 'passwordreset-legend' => 'Gronidło slědk stajiś',
 'passwordreset-disabled' => 'Slědkstajenja gronidłow su se znjemóžnili na toś tom wikiju.',
+'passwordreset-emaildisabled' => 'E-mailowe funkcije su se na toś tom wikiju znjemóžnili.',
 'passwordreset-username' => 'Wužywarske mě:',
 'passwordreset-domain' => 'Domena:',
 'passwordreset-capture' => 'E-mail se woglědaś?',
@@ -697,7 +745,7 @@ Ty by měł se něnto pśizjawiś a nowe gronidło wustajiś. Jolic něchten dru
 Nachylne gronidło: $2',
 'passwordreset-emailsent' => 'E-mail za anulěrowanje gronidła jo se pósłała.',
 'passwordreset-emailsent-capture' => 'E-mail za anulěrowanje gronidła jo se pósłała, kótaraž pokazujo se dołojce.',
-'passwordreset-emailerror-capture' => 'E-mail za anulěrowanje gronidła jo se generěrowała, kótaraž pokazujo se dołojce, ale jeje słanje wužywarjeju jo se njeraźiło: $1',
+'passwordreset-emailerror-capture' => 'E-mail za anulěrowanje gronidła jo se napórała, kótaraž se dołojce pokazujo, ale słanje {{GENDER:$2|wužywarjeju|wužywarce}} jo se njeraźiło: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'E-mailowu adresu změniś',
@@ -711,6 +759,19 @@ Nachylne gronidło: $2',
 'changeemail-submit' => 'E-mailowu adresu změniś',
 'changeemail-cancel' => 'Pśetergnuś',
 
+# Special:ResetTokens
+'resettokens' => 'Tokeny slědk stajiś',
+'resettokens-text' => 'Móžoš tokeny slědk stajiś, kótarež dowóluju pśistup na wěste priwatne daty, kótarež su z twójim kontom zwězane.
+
+Ty by dejał to cyniś, jolic sy je zmylnje z někim źělił abo jolic twóje konto jo se nadpadało.',
+'resettokens-no-tokens' => 'Tokeny za slědkstajenje njejsu.',
+'resettokens-legend' => 'Tokeny slědk stajiś',
+'resettokens-tokens' => 'Tokeny:',
+'resettokens-token-label' => '$1 (aktualna gódnota: $2)',
+'resettokens-watchlist-token' => 'Token za webkanal (Atom/RSS) [[Special:Watchlist|změnow na bokach w twójich woglědowankach]]',
+'resettokens-done' => 'Tokeny slědk stajone.',
+'resettokens-resetbutton' => 'Wubrane tokeny slědk stajiś',
+
 # Edit page toolbar
 'bold_sample' => 'Tucny tekst',
 'bold_tip' => 'Tucny tekst',
@@ -787,9 +848,7 @@ Jo se snaź pśesunuł abo wulašował, mjaztym až woglědujoš se bok.',
 'loginreqlink' => 'se pśizjawiś',
 'loginreqpagetext' => 'Dejš $1, aby mógł boki pšawje cytaś.',
 'accmailtitle' => 'Šćitne gronidło jo se wótpósłało.',
-'accmailtext' => "Pśipadnje napórane gronidło za [[User talk:$1|$1]] jo se pósłało k $2.
-
-Gronidło za toś to nowe konto dajo se na boku ''[[Special:ChangePassword|Gronidło změniś]]'' pśi pśizjawjenju změniś.",
+'accmailtext' => "Pśipadnje napórane gronidło za [[User talk:$1|$1]] jo se pósłało k $2. Dajo se na boku ''[[Special:ChangePassword|Gronidło změniś]]'' pśi pśizjawjenju změniś.",
 'newarticle' => '(Nowy nastawk)',
 'newarticletext' => "Sy slědował wótkaz na bok, kótaryž hyšći njeeksistěrujo.
 Aby bok napórał, zapiš do kašćika dołojce (glědaj [[{{MediaWiki:Helppage}}|bok pomocy]] za dalšne informacije). Jolic sy zamólnje how, klikni na tłocašk '''Slědk''' w swójom wobglědowaku.",
@@ -900,7 +959,8 @@ Eksistěrujo južo.',
 'content-failed-to-parse' => 'Parsowanje wopśimjeśa $2 za model $1 jo se njeraźiło: $3',
 'invalid-content-data' => 'Njepłaśiwe wopśimjeśowe daty',
 'content-not-allowed-here' => 'Wopśimjeśe "$1" njejo na boku [[$2]] dowólone',
-'editwarning-warning' => 'Gaž toś ten bok se spušća, mógu se změny zgubiś, kótarež sy pśewjadł. Jolic sy pśizjawjeny, móžoš toś to warnowanje we wótrězku {{int:prefs-editing}} swójich nastajenjow znjemóžniś.',
+'editwarning-warning' => 'Gaž toś ten bok se spušća, mógu se změny zgubiś, kótarež sy pśewjadł.
+Jolic sy pśizjawjeny, móžoš toś to warnowanje we wótrězku „Wobźěłaś“ swójich nastajenjow znjemóžniś.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -933,6 +993,7 @@ Njesmějo daś wěcej nježli $2 {{PLURAL:$2|wołanja|wołanjowu|wołanjow|woła
 'undo-failure' => 'Změna njejo se mógała wótpóraś, dokulaž jo něchten pótrjefjony wótrězk mjaztym změnił.',
 'undo-norev' => 'Změna njeda se wótwrośiś, dokulaž njeeksistěčujo abo jo se wulašowała.',
 'undo-summary' => 'Wersija $1 wót [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) jo se anulěrowała',
+'undo-summary-username-hidden' => 'Změna $1 schowanego wužywarja jo se anulěrowała',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Njejo móžno wužywarske konto wutwóriś',
@@ -1021,9 +1082,10 @@ Móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Sp
 'revdelete-text' => "'''Wulašowane wersije a tšojenja budu se dalej w stawiznach boka a w protokolach pokazaś, ale źěle jich wopśimjeśa njebudu pśistupne za zjawnosć.'''
 Dalšne administratory na {{GRAMMAR:lokatiw|{{SITENAME}}}} mógu ale pśecej hyšći pśistup na schowane wopśimjeśe měś a mógu jo pśez samki interfejs wótnowiś,  snaźkuli su pśidatne wobgranicowanja.",
 'revdelete-confirm' => 'Pšosym wobkšuś, až coš to cyniś, až rozmějoš konsekwence a až cyniš to pó [[{{MediaWiki:Policy-url}}|pšawidłach]].',
-'revdelete-suppress-text' => "Pódtłocenje by se dejał '''jano''' za slědujuce pady wužywaś:
-* Njegóźece se wósobinske informacije
-*: ''bydleńske adrese a telefonowe numery, numery socialnego zawěsćenja atd.''",
+'revdelete-suppress-text' => "Pódtłocenje by dejało se '''jano''' za slědujuce pady wužywaś:
+* Potencielnje ranjece informacije
+* Njepśigódne wósobinske informacije
+*: ''Bydleńske adrese a telefonowe numery, numery socialnego zawěsćenja atd.''",
 'revdelete-legend' => 'wobgranicowanja widobnosći póstajiś',
 'revdelete-hide-text' => 'Tekst wersije',
 'revdelete-hide-image' => 'Wopśimjeśe dataje schowaś',
@@ -1112,6 +1174,7 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
 'compareselectedversions' => 'Wuzwólonej wersiji pśirownaś',
 'showhideselectedversions' => 'Wubrane wersije pokazaś/schowaś',
 'editundo' => 'wótwrośiś',
+'diff-empty' => '(Žeden rozdźěl)',
 'diff-multi' => '({{PLURAL:$1|Jadna mjazywersija|$1 mjazywersiji|$1 mjazywersije|$1 mjazywersijow}} wót {{PLURAL:$2|jadnogo wužywarja|$2 wužywarjowu|$2 wužywarjow|$2 wužywarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Jadna mjazywersija|$1 mjazywersiji|$1 mjazywersije|$1 mjazywersijow}} wót wěcej ako {{PLURAL:$2|jadnogo wužywarja|$2 wužywarjowu|$2 wužywarjow|$2 wužywarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
 'difference-missing-revision' => '{{PLURAL:$2|Jadna wersija|$2 wersiji|$2 wersije|$2 wersijow}} toś togo rozdźěla ($1) {{PLURAL:$2|njejo se namakała|njejstej se namakałej|njejsu namakali|njejo se namakało}}.
@@ -1179,11 +1242,13 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'powersearch-togglenone' => 'Žeden',
 'search-external' => 'Eksterne pytanje',
 'searchdisabled' => 'Pytanje we {{SITENAME}} jo se deaktiwěrowało. Tak dłujko móžoš w googlu pytaś. Pšosym wobmysli, až móžo pytanski indeks za {{SITENAME}} njeaktualny byś.',
+'search-error' => 'Pśi pytanju jo se zmólka nastała: $1',
 
 # Preferences page
 'preferences' => 'Nastajenja',
 'mypreferences' => 'Nastajenja',
 'prefs-edits' => 'Licba wobźěłanjow:',
+'prefsnologintext2' => 'Musyš $1, aby wužywarske nastajenja póstajił.',
 'changepassword' => 'Šćitne gronidło změniś',
 'prefs-skin' => 'Šat',
 'skin-preview' => 'Pśeglěd',
@@ -1267,7 +1332,9 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'gender-unknown' => 'Njok nic wó tom pódaś',
 'gender-male' => 'Wón wobźěłujo wikiboki',
 'gender-female' => 'Wóna wobźěłujo wikiboki',
-'prefs-help-gender' => 'Opcionalny: wužywa se za pó roźe specifiske nagronjenje pśez softwaru. Toś ta informacija buźo zjawna.',
+'prefs-help-gender' => 'Toś to pódaśe jo opcionalne:
+Softwara wuyiwa jogo gódnotu, aby śi z pomocu wótpowědnego gramatikaliskego roda groniła a drugich na tebje pokazała.
+Toś ta informacija buźo zjawna.',
 'email' => 'E-mail',
 'prefs-help-realname' => 'Realne mě jo opcionalne. Jolic až jo zapódajośo wužywa se za pódpisanje wašych pśinoskow.',
 'prefs-help-email' => 'E-mailowa adresa jo opcionalna, ale zmóžnja śi nowe gronidło emailowaś, jolic sy zabył swójo gronidło.',
@@ -1279,6 +1346,8 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'prefs-dateformat' => 'Datumowy format',
 'prefs-timeoffset' => 'Casowy rozdźěl',
 'prefs-advancedediting' => 'Powšykne nastajenja',
+'prefs-editor' => 'Editor',
+'prefs-preview' => 'Pśeglěd',
 'prefs-advancedrc' => 'Rozšyrjone opcije',
 'prefs-advancedrendering' => 'Rozšyrjone opcije',
 'prefs-advancedsearchoptions' => 'Rozšyrjone opcije',
@@ -1286,7 +1355,9 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'prefs-displayrc' => 'Zwobraznjowańske opcije',
 'prefs-displaysearchoptions' => 'Zwobraznjowańske opcije',
 'prefs-displaywatchlist' => 'Zwobraznjowańske opcije',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Rozdźěle',
+'prefs-help-prefershttps' => 'Toś to nastajenje wustatkujo se pó twójom pśiducem pśizjawjenju.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Zda se, až e-mailowa adresa jo płaśiwa',
@@ -1313,6 +1384,8 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'userrights-notallowed' => 'Njamaš trěbne pšawa, aby wužywarske pšawa pśipokazało abo zajmjeł.',
 'userrights-changeable-col' => 'Kupki, kótarež móžoš změniś',
 'userrights-unchangeable-col' => 'Kupki, kótarež njamóžoš změniś',
+'userrights-conflict' => 'Konflikt změnow wužywarskich pšawow! Pšosym pśeglědaj a wobkšuś swóje změny.',
+'userrights-removed-self' => 'Sy swóje pšawa wuspěšnje wótpórał. Togodla njamaš južo pśistup na toś ten bok měś.',
 
 # Groups
 'group' => 'Kupka:',
@@ -1377,12 +1450,19 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'right-ipblock-exempt' => 'Blokěrowanja IP, awtomatiske blokěrowanja a blokěrowanja wobcerkow se wobinuś',
 'right-proxyunbannable' => 'Awtomatiske blokěrowanje proksyjow se wobinuś',
 'right-unblockself' => 'Wótblokěrowaś se',
-'right-protect' => 'Šćitowe schójźeńki změniś a šćitane boki wobźěłaś',
-'right-editprotected' => 'Šćitane boki wobźěłaś (bśez kaskadowego šćita)',
+'right-protect' => 'Šćitowe schojźeńki změniś a z kaskadami šćitane boki wobźěłaś',
+'right-editprotected' => 'Boki wobźěłaś, kótarež su pśez "{{int:protect-level-sysop}}" šćitane',
+'right-editsemiprotected' => 'Boki wobźěłaś, kótarež su pśez "{{int:protect-level-autoconfirmed}}" šćitane',
 'right-editinterface' => 'Wužywański pówjerch wobźěłaś',
 'right-editusercssjs' => 'Dataje CSS a JS drugich wužywarjow wobźěłaś',
 'right-editusercss' => 'Dataje CSS drugich wužywarjow wobźěłaś',
 'right-edituserjs' => 'Dataje JS drugich wužywarjow wobźěłaś',
+'right-editmyusercss' => 'Twóje swójske wužywarske CSS-dataje wobźěłaś',
+'right-editmyuserjs' => 'Twóje swójske wužywarske JavaScript-dataje wobźěłaś',
+'right-viewmywatchlist' => 'Se swójske wobglědowańki woglědaś',
+'right-viewmyprivateinfo' => 'Swójske priwatne daty se woglědaś (na pś. e-mailowu adresu, napšawdne mě)',
+'right-editmyprivateinfo' => 'Swójske priwatne daty wobźěłaś (na pś. e-mailowu adresu, napšawdne mě)',
+'right-editmyoptions' => 'Swójske nastajenja wobźěłaś',
 'right-rollback' => 'Spěšne anulěrowanje změnow slědnego wužywarja, kótaryž jo dany bok wobźěłał',
 'right-markbotedits' => 'Spěšnje anulěrowane změny ako botowe změny markěrowaś',
 'right-noratelimit' => 'Pśez žedne limity wobgranicowany',
@@ -1444,18 +1524,27 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'action-userrights-interwiki' => 'wužywarske pšawa wužywarjow w drugich wikijach wobźěłaś',
 'action-siteadmin' => 'datowu banku zastajiś abo wótworiś',
 'action-sendemail' => 'E-maile pósłaś',
+'action-editmywatchlist' => 'swóje wobglědowańki wobźěłaś',
+'action-viewmywatchlist' => 'swóje wobglědowańki se woglědaś',
+'action-viewmyprivateinfo' => 'twóje priwatne informacije se woglědaś',
+'action-editmyprivateinfo' => 'twóje priwatne informacije wobźěłaś',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|změna|změnje|změny}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|wót slědnego woglěda}}',
+'enhancedrc-history' => 'historija',
 'recentchanges' => 'Aktualne změny',
 'recentchanges-legend' => 'Opcije aktualnych změnow',
 'recentchanges-summary' => "How móžoš slědne změny we '''{{GRAMMAR:lokatiw|{{SITENAME}}}}''' slědowaś.",
+'recentchanges-noresult' => 'Žedne změny za dany cas njewótpowědujo toś tym kriterijam.',
 'recentchanges-feed-description' => 'Slěduj z toś tym zapódaśim nejaktualnjejše změny we {{GRAMMAR:lokatiw|{{SITENAME}}}}.',
 'recentchanges-label-newpage' => 'Toś ta změna jo nowy bok napórała.',
 'recentchanges-label-minor' => 'To jo snadna změna',
 'recentchanges-label-bot' => 'Toś ta změna jo se pśez bośik wuwjadła.',
 'recentchanges-label-unpatrolled' => 'Toś ta změna hyšći njejo se pśekontrolěrowała',
-'recentchanges-legend-newpage' => '$1 - nowy bok',
+'recentchanges-label-plusminus' => 'Změnjona wjelikosc boka (licba bajtow)',
+'recentchanges-legend-newpage' => '(glej teke [[Special:NewPages|lisćinu nowych bokow]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Dołojce {{PLURAL:$1|jo '''1''' změna|stej slědnej '''$1''' změnje|su slědne '''$1''' změny}} w {{PLURAL:$2|slědnem dnju|slědnyma '''$2''' dnjoma|slědnych '''$2''' dnjach}}, staw wót $4, $5.",
 'rcnotefrom' => "Dołojce pokazuju se změny wót '''$2''' (maks. '''$1''' zapisow).",
 'rclistfrom' => 'Nowe změny wót $1 pokazaś.',
@@ -1748,6 +1837,10 @@ Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
 'listfiles_size' => 'Wjelikosć (byte)',
 'listfiles_description' => 'Zespominanje',
 'listfiles_count' => 'Wersije',
+'listfiles-show-all' => 'Stare wersije wobrazow zapśimjeś',
+'listfiles-latestversion' => 'Aktualna wersija',
+'listfiles-latestversion-yes' => 'Jo',
+'listfiles-latestversion-no' => 'Ně',
 
 # File description page
 'file-anchor-link' => 'Dataja',
@@ -1840,6 +1933,13 @@ Snaź coš wopisanje na jeje [$2 boku datajowego wopisanja] wobźěłaś.',
 'randompage' => 'Pśipadny nastawk',
 'randompage-nopages' => 'W {{PLURAL:$2|slědujucem mjenjowem rumje|slědujucyma mjenjowyma rumoma|slědujucych mjenjowych rumach|slědujucych mjenjowych rumach}} žedne boki njejsu: $1',
 
+# Random page in category
+'randomincategory' => 'Pśipadny bok w kategoriji',
+'randomincategory-invalidcategory' => '"$1" njejo płaśiwe kategorijowe mě.',
+'randomincategory-nopages' => 'W kategoriji [[:Category:$1|$1]] žedne boki njejsu.',
+'randomincategory-selectcategory' => 'Pśipadny bok z kategorija: $1 $2',
+'randomincategory-selectcategory-submit' => 'Wótpósłaś',
+
 # Random redirect
 'randomredirect' => 'Pśipadne dalejpósrědnjenje',
 'randomredirect-nopages' => 'W mjenjowem rumje "$1" njejsu dalejpósrědnjenja.',
@@ -1870,6 +1970,8 @@ Snaź coš wopisanje na jeje [$2 boku datajowego wopisanja] wobźěłaś.',
 'pageswithprop-text' => 'Toś ten bok nalicyjo boki, kótarež wužywaju wěstu kakosć boka.',
 'pageswithprop-prop' => 'Mě kakosći:',
 'pageswithprop-submit' => 'Wótpósłaś',
+'pageswithprop-prophidden-long' => 'Gódnota kakosći dłujkego teksta schowana ($1)',
+'pageswithprop-prophidden-binary' => 'binarna kakostna gódnota schowana ($1)',
 
 'doubleredirects' => 'Dwójne dalejpósrědnjenja',
 'doubleredirectstext' => 'Toś ten bok nalicujo boki, kótarež dalej pósrědnjaju na druge dalejpósrědnjenja.
@@ -1927,6 +2029,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'mostrevisions' => 'Boki z nejwěcej wersijami',
 'prefixindex' => 'Wšykne boki z prefiksom',
 'prefixindex-namespace' => 'Wšykne boki z prefiksom (mjenjowy rum $1)',
+'prefixindex-strip' => 'Prefiks w lisćinje wótrězaś',
 'shortpages' => 'Krotke nastawki',
 'longpages' => 'Dłujke nastawki',
 'deadendpages' => 'Nastawki bźez wótkazow',
@@ -1942,6 +2045,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'listusers' => 'Lisćina wužywarjow',
 'listusers-editsonly' => 'Jano wužywarjow ze změnami pokazaś',
 'listusers-creationsort' => 'Pó datumje napóranja sortěrowaś',
+'listusers-desc' => 'We wóstupujucem porěźe sortěrowaś',
 'usereditcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
 'usercreated' => 'jo se $1 $2 góź. {{GENDER:$3|napórał|napórała}}',
 'newpages' => 'Nowe boki',
@@ -2117,7 +2221,7 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
 'notanarticle' => 'To njejo žeden nastawk',
 'notvisiblerev' => 'Wersija bu wulašowana',
 'watchlist-details' => 'Wobglědujoš {{PLURAL:$1|$1 bok|$1 boka|$1 boki|$1 bokow}}, bźez diskusijnych bokow.',
-'wlheader-enotif' => 'E-mailowe powěsće su aktiwizěrowane.',
+'wlheader-enotif' => 'E-mailowa zdźěleńska słužba jo zmóžnjona.',
 'wlheader-showupdated' => "Boki, kótarež su wót twójogo slědnego woglěda se změnili, pokazuju se '''tucnje'''.",
 'watchmethod-recent' => 'Kontrolěrowanje aktualnych změnow we wobglědowańce',
 'watchmethod-list' => 'Pśepytanje wobglědowanych bokow za aktualnymi změnami',
@@ -2150,7 +2254,9 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
 'enotif_anon_editor' => 'anonymny wužywaŕ $1',
 'enotif_body' => 'Luby $WATCHINGUSERNAME,
 
-$PAGEINTRO $NEWPAGE
+$PAGEEDITOR jo bok $PAGETITLE na {{GRAMMAR:lokatiw|{{SITENAME}}}} $PAGEEDITDATE $CHANGEDORCREATED, glědaj $PAGETITLE_URL za aktualnu wersiju.
+
+$NEWPAGE
 
 Zespominanje wobźěłarja: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2158,9 +2264,10 @@ Kontakt z wobźěłarjom:
 E-mail: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Njebudu žedne dalšne powěźeńki w paźe dalšnych změnow, snaźkuli woglědujoš se toś ten bok. Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki slědk stajiś.
+Njebudu žedne dalšne powěźeńki w paźe aktiwity, snaźkuli woglědujoš se toś ten bok, mjaztym sy pśizjawjony.
+Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki slědk stajiś.
 
-Twój pśijaśelny powěsćowy system {{SITENAME}}
+             Twój pśijaśelny powěsćowy system {{SITENAME}}
 --
 Aby swoje nastajenja za e-mailowe zdźělenja změnił, woglědaj
 {{canonicalurl:{{#special:Preferences}}}}
@@ -2221,7 +2328,7 @@ póstupujśo z glědanim.',
 Slědnu změnu k bokoju jo pśewjadł [[User:$3|$3]] ([[User talk:$3|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Zapominanje k slědnej změnje jo było: \"''\$1''\".",
 'revertpage' => 'Změny wužywarja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) su se wótwrośili a slědna wersija wužywarja [[User:$1|$1]] jo se wótnowiła.',
-'revertpage-nouser' => 'Jo změny wót (wužywarske mě wótpórane) na slědnu wersiju wót [[User:$1|$1]] slědk stajił',
+'revertpage-nouser' => 'Změny su se wót schowanego wužywarja anulěrowali a pjerwjejšna wersija wužywarja {{GENDER:$1|[[User:$1|$1]]}} jo se wótnowiła',
 'rollback-success' => 'Změny wót $1 su se slědk wzeli a slědna wersija wót $2 jo zasej se nawrośiła.',
 
 # Edit tokens
@@ -2669,6 +2776,8 @@ Pšosym wobglědaj [https://www.mediawiki.org/wiki/Localisation lokalizaciju Med
 'thumbnail-more' => 'Pówětšyś',
 'filemissing' => 'Dataja felujo',
 'thumbnail_error' => 'Zmólka pśi stwórjenju pśeglěda: $1',
+'thumbnail_error_remote' => 'Zmólkowa powěźeńka wót $1:
+$2',
 'djvu_page_error' => 'DjVu-bok pśesegujo wobłuk.',
 'djvu_no_xml' => 'Njejo móžno, XML za DjVu-dataju wótwołaś.',
 'thumbnail-temp-create' => 'Temporerna dataja za miniaturny wobrazk njedajo se napóraś',
@@ -2814,6 +2923,7 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
 W zespominanju dajo se pśicyna pódaś.',
 'tooltip-preferences-save' => 'Nastajenja składowaś',
 'tooltip-summary' => 'Zapódaj krotke zespominanje',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/** Na toś tom městnje wustatkujo se CSS na wšykne šaty. */',
@@ -2846,8 +2956,8 @@ W zespominanju dajo se pśicyna pódaś.',
 'spam_reverting' => 'Nawrośijo se slědna wersija, kótaraž njejo wopśimjeła wótkaz na $1.',
 'spam_blanking' => 'Wšykne wersije su wopśimowali wótkaze na $1, do rěcha spórane.',
 'spam_deleting' => 'Wšykne wersije z wótkazami do $1 so lašuju',
-'simpleantispam-label' => "Antispamowa kontrola.
-How '''NIC''' zapisaś!",
+'simpleantispam-label' => "Kontrola pśeśiwo spamoju.
+HOW '''NIC''' njezapisaś!",
 
 # Info page
 'pageinfo-title' => 'Informacije za bok "$1"',
@@ -2861,6 +2971,7 @@ How '''NIC''' zapisaś!",
 'pageinfo-length' => 'Dłujkosć boka (w bajtach)',
 'pageinfo-article-id' => 'ID boka',
 'pageinfo-language' => 'Rěc bokowego wopśimjeśa',
+'pageinfo-content-model' => 'Bokowy wopśimjeśowy model',
 'pageinfo-robot-policy' => 'Indicěrowanje pśez roboty',
 'pageinfo-robot-index' => 'Dowólony',
 'pageinfo-robot-noindex' => 'Zakazany',
@@ -2975,11 +3086,25 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutoma|$1 minutami|$1 minutami}}',
 'hours' => '{{PLURAL:$1|$1 góźinu|$1 góźinoma|$1 góźinami|$1 góźinami}}',
 'days' => '{{PLURAL:$1|$1 dnjom|$1 dnjoma|$1 dnjami|$1 dnjami}}',
+'weeks' => '{{PLURAL: $1|$1 tyźeń|$1 tyźenja|$1 tyźenje|$1 tyźenjow}}',
 'months' => '{{PLURAL:$1|$1 mjasecom|$1 mjasecoma|$1 mjasecami}}',
 'years' => '{{PLURAL:$1|$1 lětom|$1 lětoma|$1 lětami}}',
 'ago' => 'pśed $1',
 'just-now' => 'rowno',
 
+# Human-readable timestamps
+'hours-ago' => 'pśed $1 {{PLURAL:$1|goźinu|goźinoma|goźinami}}',
+'minutes-ago' => 'pśed $1 {{PLURAL:$1|minutu|minutoma|minutami}}',
+'seconds-ago' => 'pśed $1 {{PLURAL:$1|sekundu|sekundoma|sekundami}}',
+'monday-at' => 'Pónjeźele $1',
+'tuesday-at' => 'Wałtora $1',
+'wednesday-at' => 'Srjoda $1',
+'thursday-at' => 'Stwórtk $1',
+'friday-at' => 'Pětk $1',
+'saturday-at' => 'Sobota $1',
+'sunday-at' => 'Njeźela $1',
+'yesterday-at' => 'Cora $1',
+
 # Bad image list
 'bad_image_list' => 'Format jo slědujucy:
 
@@ -3487,6 +3612,9 @@ Pšosym wobkšuś, až napšawdu coš toś ten bok zasej napóraś.',
 'confirm-unwatch-button' => 'W pórěźe',
 'confirm-unwatch-top' => 'Toś ten bok z twójeje wobglědowańki wulašowaś?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← slědny bok',
 'imgmultipagenext' => 'pśiducy bok →',
@@ -3585,6 +3713,7 @@ Móžoš teke [[Special:EditWatchlist|standardny wobźěłowański bok wužywaś
 'version-license' => 'Licenca',
 'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'druge',
+'version-poweredby-translators' => 'Pśełožowarje na translatewiki.net',
 'version-credits-summary' => 'Źěkujomy se slědujucym wósobam za jich pśinoski k [[Special:Version|MediaWiki]]',
 'version-license-info' => 'MediaWiki jo licha softwara: móžoš ju pód wuměnjenjami licence GNU General Public License, wózjawjeneje wót załožby Free Software Foundation, rozdźěliś a/abo změniś: pak pód wersiju 2 licence pak pód někakeju pózdźejšeju wersiju.
 
@@ -3598,6 +3727,19 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'version-entrypoints-header-entrypoint' => 'Zastupny dypk',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Pó datajowem mjenju, wužywarju abo wersijowem ID dalej pósrědniś',
+'redirect-legend' => 'Do dataje abo boka dalej pósrědniś',
+'redirect-summary' => 'Toś ten specialny bok pósrědnja se do dataje (datajowe mě jo pódane), boka (wersijowy ID jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. Wužyśe:
+[[{{#Special:Redirect}}/file/Pśikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'redirect-submit' => 'Pytaś',
+'redirect-lookup' => 'Pytaś:',
+'redirect-value' => 'Gódnota:',
+'redirect-user' => 'ID wužywarja',
+'redirect-revision' => 'Bokowa wersija',
+'redirect-file' => 'Datajowe mě',
+'redirect-not-exists' => 'Gódnota njejo se namakała',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Za duplikatnymi datajami pytaś',
 'fileduplicatesearch-summary' => 'Za datajowymi duplikatami na zakłaźe gótnoty hash pytaś.',
@@ -3611,7 +3753,8 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 
 # Special:SpecialPages
 'specialpages' => 'Specialne boki',
-'specialpages-note' => '* Normalne specialne boki
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normalne specialne boki.
 * <span class="mw-specialpagerestricted">Specialne boki z wobgranicowanym pśistupom.</span>',
 'specialpages-group-maintenance' => 'Wótwardowańske lisćiny',
 'specialpages-group-other' => 'Druge specialne boki',
@@ -3644,12 +3787,16 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'tags' => 'Płaśiwe toflicki změnow',
 'tag-filter' => 'Filter [[Special:Tags|toflickow]]:',
 'tag-filter-submit' => 'Filter',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Wobznamjenje|Wobznamjeni|Wobznamjenja}}]]: $2)',
 'tags-title' => 'Toflicki',
 'tags-intro' => 'Toś ten bok nalicyjo toflicki, z kótarymiž softwara móžo změnu markěrowaś a jich wóznam.',
 'tags-tag' => 'Mě toflicki',
 'tags-display-header' => 'Naglěd na lisćinach změnow',
 'tags-description-header' => 'Dopołne wopisanje wóznama',
+'tags-active-header' => 'Aktiwny?',
 'tags-hitcount-header' => 'Změny z toflickami',
+'tags-active-yes' => 'Jo',
+'tags-active-no' => 'Ně',
 'tags-edit' => 'wobźěłaś',
 'tags-hitcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
 
@@ -3670,6 +3817,7 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'dberr-problems' => 'Wódaj! Toś to sedło ma techniske śěžkosći.',
 'dberr-again' => 'Pócakaj někotare minuty a aktualizěruj bok.',
 'dberr-info' => '(Njejo móžno ze serwerom datoweje banki zwězaś: $1)',
+'dberr-info-hidden' => '(Njejo móžno ze serwerom datoweje banki zwězaś)',
 'dberr-usegoogle' => 'Móžoš mjaztym pśez Google pytaś.',
 'dberr-outofdate' => 'Źiwaj na to, až jich indekse našogo wopśimjeśa by mógli zestarjone byś.',
 'dberr-cachederror' => 'Slědujuca jo pufrowana kopija pominanego boka a by mógła zestarjona byś.',
@@ -3685,6 +3833,9 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'htmlform-submit' => 'Wótpósłaś',
 'htmlform-reset' => 'Změny anulěrowaś',
 'htmlform-selectorother-other' => 'Druge',
+'htmlform-no' => 'Ně',
+'htmlform-yes' => 'Jo',
+'htmlform-chosen-placeholder' => 'Wubjeŕ móžnosć',
 
 # SQLite database support
 'sqlite-has-fts' => 'Wersija $1 z pódpěru za połnotekstowe pytanje',
@@ -3802,6 +3953,20 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 # Image rotation
 'rotate-comment' => 'Wobraz wó $1 {{PLURAL:$1|stopjeń|stopnja|stopnje|stopnjow}} ako špěra źo wobwjertnjony',
 
+# Limit report
+'limitreport-title' => 'Profilěrowańske daty parsera:',
+'limitreport-cputime' => 'Casowe wužywanje CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekunźe|sekundy|sekundow}}',
+'limitreport-walltime' => 'Wužywanje napšawdnego casa',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekunźe|sekundy|sekundow}}',
+'limitreport-ppvisitednodes' => 'Licba woglědanych sukow preprocesora',
+'limitreport-ppgeneratednodes' => 'Napórana licba sukow  preprocesora',
+'limitreport-postexpandincludesize' => 'Wjelikosć zapśěgowanja pó ekspanděrowanju',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'limitreport-templateargumentsize' => 'Wjelikosć pśedłogowego argumenta',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'limitreport-expansiondepth' => 'Nejwuša ekspansijowa dłymokosć',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Pśedłogi ekspanděrowaś',
 'expand_templates_intro' => 'Na toś tom boku dajo se tekst zapódaś a wšykne pśedłogi na njom se rekursiwnje ekspanděruju. Teke parserowe funkcije kaž <code><nowiki>{{</nowiki>#language:…}}</code> a wariable kaž <code><nowiki>{{</nowiki>CURRENTDAY}}</code> se ekspanděruju - faktiski wšo, což stoj mjazy dwójnymi wugibnjonymi spinkami.',
index 65a53d9..3fe49fc 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ΚακόςΤίτλος' ),
        'Blankpage'                 => array( 'ΚενήΣελίδα' ),
        'Block'                     => array( 'Φραγή', 'ΦραγήIP', 'ΦραγήΧρήστη' ),
-       'Blockme'                   => array( 'ΦραγήΕμένα' ),
        'Booksources'               => array( 'ΠηγέςΒιβλίων' ),
        'BrokenRedirects'           => array( 'ΚατεστραμμένεςΑνακατευθύνσεις' ),
        'Categories'                => array( 'Κατηγορίες' ),
@@ -118,9 +117,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ΔημιουργίαΛογαριασμού' ),
        'Deadendpages'              => array( 'ΑδιέξοδεςΣελίδες' ),
        'DeletedContributions'      => array( 'ΔιαγραμμένεςΣυνεισφορές' ),
-       'Disambiguations'           => array( 'Αποσαφηνίσεις' ),
        'DoubleRedirects'           => array( 'ΔιπλέςΑνακατευθύνσεις' ),
        'Emailuser'                 => array( 'EmailΧρήστη' ),
+       'ExpandTemplates'           => array( 'ΕπέκτασηΠροτύπων' ),
        'Export'                    => array( 'Εξαγωγή' ),
        'Fewestrevisions'           => array( 'ΛιγότεροΕπεξεργασίες' ),
        'FileDuplicateSearch'       => array( 'ΑναζήτησηΔιπλώνΑρχείων' ),
@@ -163,6 +162,7 @@ $specialPageAliases = array(
        'Randomredirect'            => array( 'ΤυχαίαΑνακατεύθυνση' ),
        'Recentchanges'             => array( 'ΠρόσφατεςΑλλαγές' ),
        'Recentchangeslinked'       => array( 'ΣυνδεδεμένεςΠρόσφατεςΑλλαγές', 'ΣχετικέςΑλλαγές' ),
+       'Redirect'                  => array( 'Ανακατεύθυνση' ),
        'Revisiondelete'            => array( 'ΔιαγραφήΈκδοσης' ),
        'Search'                    => array( 'Αναζήτηση' ),
        'Shortpages'                => array( 'ΜικρέςΣελίδες' ),
@@ -195,12 +195,12 @@ $specialPageAliases = array(
 
 $magicWords = array(
        'redirect'                  => array( '0', '#ΑΝΑΚΑΤΕΥΘΥΝΣΗ', '#REDIRECT' ),
-       'notoc'                     => array( '0', '__ΧΩΡΙΣΠΠ__', '__NOTOC__' ),
+       'notoc'                     => array( '0', '__ΧΩΡΙΣΠΠ__', '__ΧΩΡΙΣΠΙΝΑΚΑΠΕΡΙΕΧΟΜΕΝΩΝ__', '__NOTOC__' ),
        'nogallery'                 => array( '0', '__ΧΩΡΙΣΠΙΝΑΚΟΘΗΚΗ__', '__NOGALLERY__' ),
-       'forcetoc'                  => array( '0', '__ΜΕΠΠ__', '__FORCETOC__' ),
-       'toc'                       => array( '0', '__ΠΠ__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__ΧΩΡΙΣΕΠΕΞΕΝΟΤ__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'forcetoc'                  => array( '0', '__ΜΕΠΠ__', '__ΜΕΠΙΝΑΚΑΠΕΡΙΕΧΟΜΕΝΩΝ__', '__FORCETOC__' ),
+       'toc'                       => array( '0', '__ΠΠ__', '__ΠΙΝΑΚΑΣΠΕΡΙΕΧΟΜΕΝΩΝ__', '__TOC__' ),
+       'noeditsection'             => array( '0', '__ΧΩΡΙΣΕΠΕΞΕΝΟΤ__', '__ΧΩΡΙΣΕΠΕΞΕΡΓΑΣΙΑΕΝΟΤΗΤΩΝ__', '__NOEDITSECTION__' ),
+       'currentmonth'              => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ', 'ΤΡΕΧΩΝΜΗΝΑΣ2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ1', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΟΝΟΜΑ', 'CURRENTMONTHNAME' ),
        'currentmonthnamegen'       => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΓΕΝΙΚΗ', 'CURRENTMONTHNAMEGEN' ),
@@ -233,7 +233,7 @@ $magicWords = array(
        'pagenamee'                 => array( '1', 'ΟΝΟΜΑΣΕΛΙΔΑΣΚ', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'ΠΕΡΙΟΧΗ', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'ΠΕΡΙΟΧΗΚ', 'NAMESPACEE' ),
-       'namespacenumber'           => array( '1', 'ΑΡΙΘΜΟΣΟΝΟΜΑΤΟΣΧΩΡΟΥ', 'NAMESPACENUMBER' ),
+       'namespacenumber'           => array( '1', 'ΑΡΙΘΜΟΣΟΝΟΜΑΤΟΣΧΩΡΟΥ', 'ΑΡΙΘΜΟΣΟΝΟΜΑΤΟΧΩΡΟΥ', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'ΠΕΡΙΟΧΗΣΥΖΗΤΗΣΕΩΝ', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'ΠΕΡΙΟΧΗΣΥΖΗΤΗΣΕΩΝΚ', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'ΠΕΡΙΟΧΗΘΕΜΑΤΩΝ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -260,8 +260,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'κέντρο', 'center', 'centre' ),
        'img_framed'                => array( '1', 'με-πλαίσιο', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'χωρίς-πλαίσιο', 'frameless' ),
-       'img_page'                  => array( '1', 'σελίδα=$1', 'σελίδα $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'κατακόρυφα', 'κατακόρυφα=$1', 'κατακόρυφα $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'σελίδα=$1', 'σελίδα_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'κατακόρυφα', 'κατακόρυφα=$1', 'κατακόρυφα_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'πλαίσιο', 'border' ),
        'img_baseline'              => array( '1', 'γραμμήβάσης', 'baseline' ),
        'img_sub'                   => array( '1', 'δείκτης', 'sub' ),
@@ -275,12 +275,13 @@ $magicWords = array(
        'img_alt'                   => array( '1', 'εναλλ.=$1', 'alt=$1' ),
        'int'                       => array( '0', 'ΕΣΩΤ:', 'INT:' ),
        'sitename'                  => array( '1', 'ΙΣΤΟΧΩΡΟΣ', 'SITENAME' ),
-       'ns'                        => array( '0', 'ΧΟ:', 'NS:' ),
+       'ns'                        => array( '0', 'ΧΟ:', 'ΧΩΡΟΣΟΝΟΜΑΤΩΝ:', 'ΟΧ:', 'ΟΝΟΜΑΤΟΧΩΡΟΣ:', 'NS:' ),
        'localurl'                  => array( '0', 'ΤΟΠΙΚΟURL:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'ΤΟΠΙΚΟURLΚ:', 'LOCALURLE:' ),
        'server'                    => array( '0', 'ΕΞΥΠΗΡΕΤΗΤΗΣ', 'SERVER' ),
        'servername'                => array( '0', 'ΟΝΟΜΑΕΞΥΠΗΡΕΤΗΤΗ', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'ΔΙΑΔΡΟΜΗΠΡΟΓΡΑΜΜΑΤΟΣ', 'SCRIPTPATH' ),
+       'stylepath'                 => array( '0', 'ΔΙΑΔΡΟΜΗΣΤΥΛ', 'STYLEPATH' ),
        'grammar'                   => array( '0', 'ΓΡΑΜΜΑΤΙΚΗ:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'ΦΥΛΟ:', 'GENDER:' ),
        'notitleconvert'            => array( '0', '__ΧΩΡΙΣΜΕΤΑΤΡΟΠΗΤΙΤΛΟΥ__', '__NOTITLECONVERT__', '__NOTC__' ),
@@ -293,17 +294,21 @@ $magicWords = array(
        'revisionday'               => array( '1', 'ΜΕΡΑΑΛΛΑΓΗΣ', 'REVISIONDAY' ),
        'revisionday2'              => array( '1', 'ΜΕΡΑΑΛΛΑΓΗΣ2', 'REVISIONDAY2' ),
        'revisionmonth'             => array( '1', 'ΜΗΝΑΣΑΛΛΑΓΗΣ', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'ΜΗΝΑΣΑΝΑΘΕΩΡΗΣΗΣ1', 'REVISIONMONTH1' ),
        'revisionyear'              => array( '1', 'ΕΤΟΣΑΛΛΑΓΗΣ', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'ΧΡΟΝΟΣΗΜΑΝΣΗΑΛΛΑΓΗΣ', 'REVISIONTIMESTAMP' ),
+       'revisionuser'              => array( '1', 'ΧΡΗΣΤΗΣΑΝΑΘΕΩΡΗΣΗΣ', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'ΠΛΗΘΥΝΤΙΚΟΣ:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'ΠΛΗΡΕΣURL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'ΠΛΗΡΕΣURLΚ:', 'FULLURLE:' ),
+       'canonicalurl'              => array( '0', 'ΚΑΝΟΝΙΚΟURL:', 'CANONICALURL:' ),
+       'canonicalurle'             => array( '0', 'ΚΑΝΟΝΙΚΟURLΚ:', 'CANONICALURLE:' ),
        'lcfirst'                   => array( '0', 'ΠΡΩΤΟΠΕΖΟ:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'ΠΡΩΤΟΚΕΦΑΛΑΙΟ:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'ΠΕΖΑ:', 'LC:' ),
        'uc'                        => array( '0', 'ΚΕΦΑΛΑΙΑ:', 'UC:' ),
        'raw'                       => array( '0', 'ΓΥΜΝΑ:', 'RAW:' ),
-       'displaytitle'              => array( '1', 'ΔΕΙΞΕΤΙΤΛΟ', 'DISPLAYTITLE' ),
+       'displaytitle'              => array( '1', 'ΔΕΙΞΕΤΙΤΛΟ', 'ΠΡΟΒΟΛΗΤΙΤΛΟΥ', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'Γ', 'R' ),
        'newsectionlink'            => array( '1', '__ΔΕΣΜΟΣΝΕΑΣΕΝΟΤΗΤΑΣ__', '__NEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'ΤΡΕΧΟΥΣΑΕΚΔΟΣΗ', 'CURRENTVERSION' ),
@@ -331,6 +336,8 @@ $magicWords = array(
        'numberingroup'             => array( '1', 'ΟΜΑΔΑΑΡΙΘΜΗΣΗΣ', 'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'            => array( '1', '__ΣΤΑΤΙΚΗΑΝΑΚΑΤΕΥΘΥΝΣΗ__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'ΕΠΙΠΕΔΟΠΡΟΣΤΑΣΙΑΣ', 'PROTECTIONLEVEL' ),
+       'url_path'                  => array( '0', 'ΔΙΑΔΡΟΜΗ', 'PATH' ),
+       'url_query'                 => array( '0', 'ΕΡΩΤΗΜΑ', 'QUERY' ),
 );
 
 $fallback8bitEncoding = 'iso-8859-7';
index c1cf10f..e6ecc78 100644 (file)
@@ -1200,7 +1200,7 @@ Please try again.',
 'passwordtooshort'                => 'Passwords must be at least {{PLURAL:$1|1 character|$1 characters}}.',
 'password-name-match'             => 'Your password must be different from your username.',
 'password-login-forbidden'        => 'The use of this username and password has been forbidden.',
-'mailmypassword'                  => 'Email new password',
+'mailmypassword'                  => 'Reset password',
 'passwordremindertitle'           => 'New temporary password for {{SITENAME}}',
 'passwordremindertext'            => 'Someone (probably you, from IP address $1) requested a new
 password for {{SITENAME}} ($4). A temporary password for user
@@ -1290,8 +1290,8 @@ You may have already successfully changed your password or requested a new tempo
 
 # Special:PasswordReset
 'passwordreset'                    => 'Reset password',
-'passwordreset-text-one'           => 'Complete this form to reset your password.',
-'passwordreset-text-many'          => '{{PLURAL:$1|Fill one of the fields to reset your password.}}',
+'passwordreset-text-one'           => 'Complete this form to receive a temporary password via email.',
+'passwordreset-text-many'          => '{{PLURAL:$1|Fill in one of the fields to receive a temporary password via email.}}',
 'passwordreset-legend'             => 'Reset password',
 'passwordreset-disabled'           => 'Password resets have been disabled on this wiki.',
 'passwordreset-emaildisabled'      => 'Email features have been disabled on this wiki.',
index cfed8ad..8f6dcfa 100644 (file)
@@ -95,7 +95,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Malbona_titolo' ),
        'Blankpage'                 => array( 'Malplena_paĝo' ),
        'Block'                     => array( 'Forbari_IP-adreson' ),
-       'Blockme'                   => array( 'Forbari_min' ),
        'Booksources'               => array( 'Citoj_el_libroj' ),
        'BrokenRedirects'           => array( 'Rompitaj_alidirektiloj' ),
        'Categories'                => array( 'Kategorioj' ),
@@ -107,10 +106,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Krei_konton' ),
        'Deadendpages'              => array( 'Paĝoj_sen_interna_ligilo' ),
        'DeletedContributions'      => array( 'Forigitaj_kontribuoj' ),
-       'Disambiguations'           => array( 'Apartigiloj' ),
        'DoubleRedirects'           => array( 'Duoblaj_alidirektiloj' ),
        'EditWatchlist'             => array( 'Redakti_atentaron' ),
        'Emailuser'                 => array( 'Retpoŝti_uzanton' ),
+       'ExpandTemplates'           => array( 'Malfaldi_ŝablonon' ),
        'Export'                    => array( 'Elporti', 'Eksporti' ),
        'Fewestrevisions'           => array( 'Plej_malmultaj_revizioj' ),
        'FileDuplicateSearch'       => array( 'Serĉi_pri_duoblaj_dosieroj' ),
index 54cfdb3..fa6ef2d 100644 (file)
@@ -139,12 +139,12 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'UsuariosActivos' ),
        'Allmessages'               => array( 'TodosLosMensajes' ),
+       'AllMyUploads'              => array( 'TodasMisSubidas', 'TodosMisArchivos' ),
        'Allpages'                  => array( 'Todas', 'Todas_las_páginas' ),
        'Ancientpages'              => array( 'PáginasAntiguas', 'Páginas_antiguas' ),
        'Badtitle'                  => array( 'Título_incorrecto' ),
-       'Blankpage'                 => array( 'BlanquearPágina', 'Blanquear_página' ),
+       'Blankpage'                 => array( 'PáginaEnBlanco', 'BlanquearPágina', 'Blanquear_página', 'Página_en_blanco' ),
        'Block'                     => array( 'Bloquear' ),
-       'Blockme'                   => array( 'Bloquearme' ),
        'Booksources'               => array( 'FuentesDeLibros', 'Fuentes_de_libros' ),
        'BrokenRedirects'           => array( 'RedireccionesRotas', 'Redirecciones_rotas' ),
        'Categories'                => array( 'Categorías' ),
@@ -156,10 +156,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_una_cuenta', 'CrearCuenta' ),
        'Deadendpages'              => array( 'PáginasSinSalida', 'Páginas_sin_salida' ),
        'DeletedContributions'      => array( 'ContribucionesBorradas', 'Contribuciones_Borradas' ),
-       'Disambiguations'           => array( 'Desambiguaciones', 'Desambiguación' ),
        'DoubleRedirects'           => array( 'RedireccionesDobles', 'Redirecciones_dobles' ),
        'EditWatchlist'             => array( 'EditarSeguimiento' ),
        'Emailuser'                 => array( 'Enviar_correo_electrónico', 'MandarEmailUsuario' ),
+       'ExpandTemplates'           => array( 'Sustituir_plantillas', 'Sustituidor_de_plantillas', 'Expandir_plantillas' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'MenosEdiciones', 'Menos_ediciones' ),
        'FileDuplicateSearch'       => array( 'BuscarArchivosDuplicados', 'Buscar_archivos_duplicados' ),
@@ -201,9 +201,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PáginasProtegidas', 'Páginas_protegidas' ),
        'Protectedtitles'           => array( 'TítulosProtegidos', 'Títulos_protegidos' ),
        'Randompage'                => array( 'Aleatoria', 'Aleatorio', 'Página_aleatoria' ),
+       'RandomInCategory'          => array( 'Aleatorio_en_categoría' ),
        'Randomredirect'            => array( 'RedirecciónAleatoria', 'Redirección_aleatoria' ),
        'Recentchanges'             => array( 'CambiosRecientes', 'Cambios_recientes' ),
        'Recentchangeslinked'       => array( 'CambiosEnEnlazadas', 'Cambios_en_enlazadas' ),
+       'Redirect'                  => array( 'Redirigir' ),
+       'ResetTokens'               => array( 'ReestablecerClaves' ),
        'Revisiondelete'            => array( 'BorrarRevisión', 'Borrar_revisión' ),
        'Search'                    => array( 'Buscar' ),
        'Shortpages'                => array( 'PáginasCortas', 'Páginas_cortas' ),
@@ -222,6 +225,7 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'PlantillasSinUso', 'Plantillas_sin_uso' ),
        'Unwatchedpages'            => array( 'PáginasSinVigilar', 'Páginas_sin_vigilar' ),
        'Upload'                    => array( 'SubirArchivo', 'Subir_archivo' ),
+       'UploadStash'               => array( 'ArchivosEscondidos', 'FicherosEscondidos' ),
        'Userlogin'                 => array( 'Entrar', 'Entrada_del_usuario' ),
        'Userlogout'                => array( 'Salida_del_usuario', 'Salir' ),
        'Userrights'                => array( 'PermisosUsuarios', 'Permisos_de_usuarios' ),
@@ -284,6 +288,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'NOMBRECOMPLETODEPAGINAC', 'NOMBRECOMPLETODEPÁGINAC', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'NOMBREDESUBPAGINA', 'NOMBREDESUBPÁGINA', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'NOMBREDESUBPAGINAC', 'NOMBREDESUBPÁGINAC', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'NOMBREDEPAGINARAIZ', 'NOMBREDEPÁGINARAÍZ', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'NOMBREDEPAGINARAIZC', 'NOMBREDEPÁGINARAÍZC', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'NOMBREDEPAGINABASE', 'NOMBREDEPÁGINABASE', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'NOMBREDEPAGINABASEC', 'NOMBREDEPÁGINABASEC', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'NOMBREDEPÁGINADEDISCUSIÓN', 'NOMBREDEPAGINADEDISCUSION', 'NOMBREDEPAGINADISCUSION', 'NOMBREDEPÁGINADISCUSIÓN', 'TALKPAGENAME' ),
@@ -1549,7 +1555,7 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 Cualquier persona que la conozca podría leer tu lista, así que no la compartas.
 [[Special:ResetTokens|Pulsa aquí si necesitas restablecerla]].',
 'savedprefs' => 'Se han guardado tus preferencias.',
-'timezonelegend' => 'Zona horaria:',
+'timezonelegend' => 'Huso horario:',
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar la hora del servidor ($1)',
 'timezoneuseoffset' => 'Otra (especifica la diferencia horaria)',
@@ -4060,7 +4066,7 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiales',
-'specialpages-note-top' => 'Leyenda:',
+'specialpages-note-top' => 'Leyenda',
 'specialpages-note' => '* Páginas especiales normales
 * <span class="mw-specialpagerestricted">Páginas especiales restringidas.</span>
 * <span class="mw-specialpagecached">Páginas especiales en caché (podrían ser obsoletas).</span>',
index 46747bc..880ab63 100644 (file)
@@ -55,6 +55,7 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Teguskasutajad' ),
        'Allmessages'               => array( 'Kõik_sõnumid' ),
+       'AllMyUploads'              => array( 'Kõik_minu_failid' ),
        'Allpages'                  => array( 'Kõik_leheküljed' ),
        'Ancientpages'              => array( 'Vanimad_leheküljed' ),
        'Blankpage'                 => array( 'Tühi_leht' ),
@@ -70,10 +71,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Konto_loomine' ),
        'Deadendpages'              => array( 'Edasipääsuta_leheküljed' ),
        'DeletedContributions'      => array( 'Kustutatud_kaastöö' ),
-       'Disambiguations'           => array( 'Täpsustusleheküljed' ),
        'DoubleRedirects'           => array( 'Kahekordsed_ümbersuunamised' ),
        'EditWatchlist'             => array( 'Jälgimisloendi_redigeerimine' ),
        'Emailuser'                 => array( 'E-kirja_saatmine' ),
+       'ExpandTemplates'           => array( 'Mallide_hõrendamine' ),
        'Export'                    => array( 'Lehekülgede_eksport' ),
        'Fewestrevisions'           => array( 'Vähim_muudatusi' ),
        'FileDuplicateSearch'       => array( 'Faili_duplikaatide_otsimine', 'Otsi_faili_duplikaate' ),
@@ -97,6 +98,7 @@ $specialPageAliases = array(
        'MIMEsearch'                => array( 'MIME_otsing' ),
        'Mostcategories'            => array( 'Enim_kategoriseeritud' ),
        'Mostimages'                => array( 'Kõige_kasutatumad_failid' ),
+       'Mostinterwikis'            => array( 'Enim_keelelinke' ),
        'Mostlinked'                => array( 'Kõige_viidatumad_leheküljed' ),
        'Mostlinkedcategories'      => array( 'Kõige_viidatumad_kategooriad' ),
        'Mostlinkedtemplates'       => array( 'Kõige_viidatumad_mallid' ),
@@ -117,9 +119,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Kaitstud_leheküljed' ),
        'Protectedtitles'           => array( 'Kaitstud_pealkirjad' ),
        'Randompage'                => array( 'Juhuslik_artikkel' ),
+       'RandomInCategory'          => array( 'Juhuslik_kategoorias' ),
        'Randomredirect'            => array( 'Juhuslik_ümbersuunamine' ),
        'Recentchanges'             => array( 'Viimased_muudatused' ),
        'Recentchangeslinked'       => array( 'Seotud_muudatused' ),
+       'Redirect'                  => array( 'Ümbersuunamine' ),
+       'ResetTokens'               => array( 'Lubade_lähtestamine' ),
        'Revisiondelete'            => array( 'Muudatuse_kustutamine', 'Kustuta_muudatus' ),
        'Search'                    => array( 'Otsimine', 'Otsi' ),
        'Shortpages'                => array( 'Lühikesed_leheküljed' ),
@@ -199,6 +204,7 @@ $magicWords = array(
        'pagenamee'                 => array( '1', 'LEHEKÜLJENIMI1', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'NIMERUUM', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'NIMERUUM1', 'NAMESPACEE' ),
+       'namespacenumber'           => array( '1', 'NIMERUUMINUMBER', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'ARUTELUNIMERUUM', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'ARUTELUNIMERUUM1', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'SISUNIMERUUM', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -207,6 +213,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'KOGULEHEKÜLJENIMI1', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'ALAMLEHEKÜLJENIMI', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'ALAMLEHEKÜLJENIMI1', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'JUURLEHEKÜLJENIMI', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'JUURLEHEKÜLJENIMI1', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'NIMERUUMITANIMI', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'NIMERUUMITANIMI1', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'ARUTELUNIMI', 'TALKPAGENAME' ),
@@ -249,7 +257,10 @@ $magicWords = array(
        'pagesinnamespace'          => array( '1', 'LEHEKÜLGINIMERUUMIS', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'            => array( '1', 'ÜLEMAMÄÄR', 'NUMBEROFADMINS' ),
        'formatnum'                 => array( '0', 'ARVUVORMINDUS', 'FORMATNUM' ),
+       'special'                   => array( '0', 'eri', 'special' ),
+       'speciale'                  => array( '0', 'eri1', 'speciale' ),
        'defaultsort'               => array( '1', 'JÄRJESTA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                  => array( '0', 'FAILITEE:', 'FILEPATH:' ),
        'hiddencat'                 => array( '1', '__PEIDETUDKAT__', '__HIDDENCAT__' ),
        'pagesincategory'           => array( '1', 'LEHEKÜLGIKATEGOORIAS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'index'                     => array( '1', 'INDEKSIGA', '__INDEX__' ),
@@ -3327,6 +3338,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-orientation' => 'Orientatsioon',
 'exif-samplesperpixel' => 'Komponentide arv',
 'exif-planarconfiguration' => 'Andmejärjestus',
+'exif-ycbcrsubsampling' => 'Y-i ja C diskreetimissuhe',
 'exif-ycbcrpositioning' => 'Y- ja C-positsioonimine',
 'exif-xresolution' => 'Horisontaalne eraldus',
 'exif-yresolution' => 'Vertikaalne eraldus',
@@ -3370,13 +3382,18 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-aperturevalue' => 'APEX-avaarv',
 'exif-brightnessvalue' => 'APEX-heledus',
 'exif-exposurebiasvalue' => 'Särituse mõju',
-'exif-subjectdistance' => 'Subjekti kaugus',
+'exif-maxaperturevalue' => 'Vähim ava',
+'exif-subjectdistance' => 'Põhimotiivi kaugus',
 'exif-meteringmode' => 'Mõõtmisviis',
 'exif-lightsource' => 'Valgusallikas',
 'exif-flash' => 'Välk',
 'exif-focallength' => 'Fookuskaugus',
+'exif-subjectarea' => 'Põhimotiivi ala',
 'exif-flashenergy' => 'Välgu võimsus',
-'exif-subjectlocation' => 'Subjekti asukoht',
+'exif-focalplanexresolution' => 'Fokaaltasandi laius',
+'exif-focalplaneyresolution' => 'Fokaaltasandi kõrgus',
+'exif-focalplaneresolutionunit' => 'Fokaaltasandi eraldusühik',
+'exif-subjectlocation' => 'Põhimotiivi asukoht',
 'exif-exposureindex' => 'Särituse number',
 'exif-sensingmethod' => 'Tundlikustamismeetod',
 'exif-filesource' => 'Faili päritolu',
@@ -3392,6 +3409,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-saturation' => 'Küllastus',
 'exif-sharpness' => 'Teravus',
 'exif-devicesettingdescription' => 'Seadme seadistuste kirjeldus',
+'exif-subjectdistancerange' => 'Põhimotiivi kaugusvahemik',
 'exif-imageuniqueid' => 'Pildi ainuline identifikaator',
 'exif-gpsversionid' => 'GPS-tähise versioon',
 'exif-gpslatituderef' => 'Põhja- või lõunalaius',
@@ -3407,12 +3425,19 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-gpsdop' => 'Mõõtmise täpsus',
 'exif-gpsspeedref' => 'Kiirusühik',
 'exif-gpsspeed' => 'GPS-vastuvõtja kiirus',
-'exif-gpstrack' => 'Liikumise suund',
+'exif-gpstrackref' => 'Liikumissuuna tüüp',
+'exif-gpstrack' => 'Liikumissuund',
+'exif-gpsimgdirectionref' => 'Pildi suuna tüüp',
 'exif-gpsimgdirection' => 'Pildi suund',
 'exif-gpsmapdatum' => 'Geodeetiline alus',
+'exif-gpsdestlatituderef' => 'Poolkera (laius)',
 'exif-gpsdestlatitude' => 'Kujutatud koha laius',
+'exif-gpsdestlongituderef' => 'Poolkera (pikkus)',
 'exif-gpsdestlongitude' => 'Kujutatud koha pikkus',
-'exif-gpsdestdistance' => 'Sihtmärgi kaugus',
+'exif-gpsdestbearingref' => 'Sihtpunkti suuna tüüp',
+'exif-gpsdestbearing' => 'Sihtpunkti suund',
+'exif-gpsdestdistanceref' => 'Sihtpunkti kauguse ühik',
+'exif-gpsdestdistance' => 'Sihtpunkti kaugus',
 'exif-gpsprocessingmethod' => 'GPS-töötlusmeetodi nimi',
 'exif-gpsareainformation' => 'GPS-ala nimi',
 'exif-gpsdatestamp' => 'GPS kuupäev',
@@ -3434,8 +3459,11 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-objectname' => 'Lühipealkiri',
 'exif-specialinstructions' => 'Erijuhised',
 'exif-headline' => 'Pealkiri',
+'exif-credit' => 'Päritolu/Annetaja',
 'exif-source' => 'Allikas',
+'exif-editstatus' => 'Pildi toimetusolek',
 'exif-urgency' => 'Pakilisus',
+'exif-fixtureidentifier' => 'Tugiandmete nimi',
 'exif-locationdest' => 'Kujutatud asukoht',
 'exif-locationdestcode' => 'Kujutatud asukoha kood',
 'exif-objectcycle' => 'Päeva osa, milleks meediafail on ette nähtud',
@@ -3447,6 +3475,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-iimsupplementalcategory' => 'Lisakategooriad',
 'exif-datetimeexpires' => 'Mitte kasutada hiljem kui',
 'exif-datetimereleased' => 'Avaldamiskuupäev',
+'exif-originaltransmissionref' => 'Algse edastuskoha kood',
 'exif-identifier' => 'Identifikaator',
 'exif-lens' => 'Kasutatud objektiiv',
 'exif-serialnumber' => 'Kaamera seerianumber',
@@ -3480,6 +3509,9 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 
 # Exif attributes
 'exif-compression-1' => 'Pakkimata',
+'exif-compression-2' => 'CCITT G3 ühemõõtmeline muudetud Hoffmani sarikodeerimine',
+'exif-compression-3' => 'CCITT G3 faksikodeerimine',
+'exif-compression-4' => 'CCITT G4 faksikodeerimine',
 
 'exif-copyrighted-true' => 'Kaitstud',
 'exif-copyrighted-false' => 'Autoriõiguslik seisund määramata',
@@ -3495,7 +3527,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-orientation-7' => 'Pööratud 90° päripäeva ja püstselt ümberpööratud',
 'exif-orientation-8' => 'Pööratud 90° päripäeva',
 
-'exif-planarconfiguration-2' => 'tasapinnaline vorm',
+'exif-planarconfiguration-1' => 'järjestikvorming',
+'exif-planarconfiguration-2' => 'kihiline vorming',
 
 'exif-colorspace-65535' => 'Kalibreerimata',
 
@@ -3506,6 +3539,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-exposureprogram-2' => 'Tavaprogramm',
 'exif-exposureprogram-3' => 'Ava prioriteet',
 'exif-exposureprogram-4' => 'Katiku prioriteet',
+'exif-exposureprogram-5' => 'Loovprogramm (ülekaalus väljasügavus)',
+'exif-exposureprogram-6' => 'Aktiivprogramm (ülekaalus lühike säriaeg)',
 'exif-exposureprogram-7' => 'Portree töörežiim (lähifotode jaoks, taust fookusest väljas)',
 'exif-exposureprogram-8' => 'Maastiku töörežiim (maastikupiltide jaoks, taust on teravdatud)',
 
@@ -3553,13 +3588,17 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-focalplaneresolutionunit-2' => 'toll',
 
 'exif-sensingmethod-1' => 'Määramata',
-'exif-sensingmethod-2' => 'Ühe-kiibiga värvisensor',
-'exif-sensingmethod-3' => 'Kahe-kiibiga värvisensor',
-'exif-sensingmethod-4' => 'Kolme-kiibiga värvisensor',
-'exif-sensingmethod-7' => 'Kolmerealine sensor',
+'exif-sensingmethod-2' => 'Ühe kiibiga värviandur',
+'exif-sensingmethod-3' => 'Kahe kiibiga värviandur',
+'exif-sensingmethod-4' => 'Kolme kiibiga värviandur',
+'exif-sensingmethod-5' => 'Jadavärviandur',
+'exif-sensingmethod-7' => 'Trilineaarne andur',
+'exif-sensingmethod-8' => 'Lineaarne jadavärviandur',
 
 'exif-filesource-3' => 'Digitaalne fotokaamera',
 
+'exif-scenetype-1' => 'Pildistatud otse',
+
 'exif-customrendered-0' => 'Tavatöötlus',
 'exif-customrendered-1' => 'Kohandatud töötlus',
 
@@ -3611,6 +3650,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meeter|meetrit}} allpool merepinda',
 
 'exif-gpsstatus-a' => 'Mõõtmine pooleli',
+'exif-gpsstatus-v' => 'Koostalitlevus',
 
 'exif-gpsmeasuremode-2' => '2-mõõtmeline ulatus',
 'exif-gpsmeasuremode-3' => '3-mõõtmeline ulatus',
index 62a5028..0aae185 100644 (file)
@@ -55,14 +55,12 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'OrrialdeZaharrak' ),
        'Blankpage'                 => array( 'OrrialdeZuria' ),
        'Block'                     => array( 'Blokeatu' ),
-       'Blockme'                   => array( 'BlokeaNazazu' ),
        'BrokenRedirects'           => array( 'HautsitakoBirzuzenketak' ),
        'Categories'                => array( 'Kategoriak' ),
        'ChangePassword'            => array( 'PasahitzaAldatu' ),
        'Confirmemail'              => array( 'EmailaBaieztatu' ),
        'Contributions'             => array( 'Ekarpenak' ),
        'CreateAccount'             => array( 'KontuaSortu' ),
-       'Disambiguations'           => array( 'Argipenak' ),
        'DoubleRedirects'           => array( 'BirzuzenketaBikoitzak' ),
        'Emailuser'                 => array( 'LankideEmaila' ),
        'Export'                    => array( 'Esportatu' ),
index 0f4ebb4..6895dd2 100644 (file)
@@ -81,34 +81,34 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'کاربران_فعال' ),
        'Allmessages'               => array( 'تمام_پیغام‌ها' ),
+       'AllMyUploads'              => array( 'همهٔ_بارگذاری‌های_من', 'همه_بارگذاری‌های_من' ),
        'Allpages'                  => array( 'تمام_صفحه‌ها' ),
        'Ancientpages'              => array( 'صفحه‌های_قدیمی' ),
        'Badtitle'                  => array( 'عنوان_بد' ),
        'Blankpage'                 => array( 'صفحه_خالی' ),
        'Block'                     => array( 'بستن_نشانی_آی‌پی' ),
-       'Blockme'                   => array( 'بستن_من' ),
        'Booksources'               => array( 'منابع_کتاب' ),
        'BrokenRedirects'           => array( 'تغییرمسیرهای_خراب' ),
        'Categories'                => array( 'رده‌ها' ),
        'ChangeEmail'               => array( 'تغییر_رایانامه' ),
        'ChangePassword'            => array( 'از_نو_کردن_گذرواژه' ),
        'ComparePages'              => array( 'مقایسه_صفحات' ),
-       'Confirmemail'              => array( 'تایید_رایانامه' ),
+       'Confirmemail'              => array( 'تأیید_رایانامه' ),
        'Contributions'             => array( 'مشارکت‌ها' ),
        'CreateAccount'             => array( 'ایجاد_حساب_کاربری' ),
        'Deadendpages'              => array( 'صفحه‌های_بن‌بست' ),
        'DeletedContributions'      => array( 'مشارکت‌های_حذف_شده' ),
-       'Disambiguations'           => array( 'ابهام‌زدایی' ),
        'DoubleRedirects'           => array( 'تغییرمسیرهای_دوتایی' ),
        'EditWatchlist'             => array( 'ویرایش_فهرست_پی‌گیری‌ها' ),
        'Emailuser'                 => array( 'نامه_به_کاربر' ),
+       'ExpandTemplates'           => array( 'گسترش_الگوها' ),
        'Export'                    => array( 'برون_بری_صفحه' ),
        'Fewestrevisions'           => array( 'کمترین_نسخه' ),
        'FileDuplicateSearch'       => array( 'جستجوی_پرونده_تکراری' ),
        'Filepath'                  => array( 'مسیر_پرونده' ),
-       'Import'                    => array( 'درون_ریزی_صفحه' ),
-       'Invalidateemail'           => array( 'باطل_کردن_رایانامه' ),
-       'JavaScriptTest'            => array( 'تست_جاوا_اسکریپت' ),
+       'Import'                    => array( 'درونریزی_صفحه' ),
+       'Invalidateemail'           => array( 'باطلکردن_رایانامه' ),
+       'JavaScriptTest'            => array( 'تست_جاوااسکریپت' ),
        'BlockList'                 => array( 'فهرست_بستن_نشانی_آی‌پی' ),
        'LinkSearch'                => array( 'جستجوی_پیوند' ),
        'Listadmins'                => array( 'فهرست_مدیران' ),
@@ -137,6 +137,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'بارگذاری‌های_من' ),
        'Newimages'                 => array( 'تصاویر_جدید' ),
        'Newpages'                  => array( 'صفحه‌های_تازه' ),
+       'PagesWithProp'             => array( 'صفحه‌های_با_خاصیت' ),
        'PasswordReset'             => array( 'بازنشاندن_گذرواژه' ),
        'PermanentLink'             => array( 'پیوند_دائمی' ),
        'Popularpages'              => array( 'صفحه‌های_محبوب' ),
@@ -144,11 +145,13 @@ $specialPageAliases = array(
        'Prefixindex'               => array( 'نمایه_پیشوندی' ),
        'Protectedpages'            => array( 'صفحه‌های_محافظت_شده' ),
        'Protectedtitles'           => array( 'عنوان‌های_محافظت_شده' ),
-       'Randompage'                => array( 'صفحه_تصادفی' ),
+       'Randompage'                => array( 'صفحهٔ_تصادفی' ),
+       'RandomInCategory'          => array( 'تصادفی_در_رده' ),
        'Randomredirect'            => array( 'تغییرمسیر_تصادفی' ),
        'Recentchanges'             => array( 'تغییرات_اخیر' ),
        'Recentchangeslinked'       => array( 'تغییرات_مرتبط' ),
        'Redirect'                  => array( 'تغییرمسیر' ),
+       'ResetTokens'               => array( 'بازنشانی_نشانه‌ها' ),
        'Revisiondelete'            => array( 'حذف_نسخه' ),
        'Search'                    => array( 'جستجو' ),
        'Shortpages'                => array( 'صفحه‌های_کوتاه' ),
@@ -230,6 +233,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'نام‌کامل‌صفحه‌کد', 'نام_کامل_صفحه_کد', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'نام‌زیرصفحه', 'نام_زیرصفحه', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'نام‌زیرصفحه‌کد', 'نام_زیرصفحه_کد', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'نام_صفحه_ریشه', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'نام_صفحه_ریشه_ای', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'نام‌صفحه‌مبنا', 'نام_صفحه_مبنا', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'نام‌صفحه‌مبناکد', 'نام_صفحه_مبنا_کد', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'نام‌صفحه‌بحث', 'نام_صفحه_بحث', 'TALKPAGENAME' ),
@@ -249,6 +254,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'وسط', 'center', 'centre' ),
        'img_framed'                => array( '1', 'قاب', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'بی‌قاب', 'بیقاب', 'بی_قاب', 'frameless' ),
+       'img_lang'                  => array( '1', 'زبان=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'صفحه=$1', 'صفحه_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'ایستاده', 'ایستاده=$1', 'ایستاده_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'حاشیه', 'border' ),
@@ -262,6 +268,7 @@ $magicWords = array(
        'img_text_bottom'           => array( '1', 'متن-پایین', 'text-bottom' ),
        'img_link'                  => array( '1', 'پیوند=$1', 'link=$1' ),
        'img_alt'                   => array( '1', 'جایگزین=$1', 'alt=$1' ),
+       'img_class'                 => array( '1', 'کلاس=$1', 'class=$1' ),
        'int'                       => array( '0', 'ترجمه:', 'INT:' ),
        'sitename'                  => array( '1', 'نام‌وبگاه', 'نام_وبگاه', 'SITENAME' ),
        'ns'                        => array( '0', 'فن:', 'NS:' ),
@@ -269,6 +276,7 @@ $magicWords = array(
        'localurl'                  => array( '0', 'نشانی:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'نشانی‌کد:', 'نشانی_کد:', 'LOCALURLE:' ),
        'articlepath'               => array( '0', 'مسیرمقاله', 'مسیر_مقاله', 'ARTICLEPATH' ),
+       'pageid'                    => array( '0', 'شناسه_صفحه', 'PAGEID' ),
        'server'                    => array( '0', 'سرور', 'کارساز', 'SERVER' ),
        'servername'                => array( '0', 'نام‌کارساز', 'نام_کارساز', 'نام‌سرور', 'نام_سرور', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'مسیرسند', 'مسیر_سند', 'SCRIPTPATH' ),
@@ -316,6 +324,7 @@ $magicWords = array(
        'padleft'                   => array( '0', 'لبه‌چپ', 'لبه_چپ', 'PADLEFT' ),
        'padright'                  => array( '0', 'لبه‌راست', 'لبه_راست', 'PADRIGHT' ),
        'special'                   => array( '0', 'ویژه', 'special' ),
+       'speciale'                  => array( '0', 'ویژه_ای', 'speciale' ),
        'defaultsort'               => array( '1', 'ترتیب:', 'ترتیب‌پیش‌فرض:', 'ترتیب_پیش_فرض:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                  => array( '0', 'مسیرپرونده:', 'مسیر_پرونده:', 'FILEPATH:' ),
        'tag'                       => array( '0', 'برچسب', 'tag' ),
@@ -333,6 +342,10 @@ $magicWords = array(
        'url_query'                 => array( '0', 'دستور', 'QUERY' ),
        'defaultsort_noerror'       => array( '0', 'بدون‌خطا', 'بدون_خطا', 'noerror' ),
        'defaultsort_noreplace'     => array( '0', 'جایگزین‌نکن', 'جایگزین_نکن', 'noreplace' ),
+       'pagesincategory_all'       => array( '0', 'همه', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'صفحات', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'زیررده‌ها', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'پرونده‌ها', 'files' ),
 );
 
 $digitTransformTable = array(
@@ -862,7 +875,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''اکنون شما ثبت خروج کرده‌اید.'''
 توجه داشته باشید که تا حافظهٔ نهان مرورگرتان را پاک نکنید، بعضی از صفحات ممکن است همچنان به گونه‌ای نمایش یابند که انگار وارد شده‌اید.",
-'welcomeuser' => 'خوشامدید، $1!',
+'welcomeuser' => 'خوشامدید $1!',
 'welcomecreation-msg' => 'حساب کاربری شما ایجاد شده است.
 فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] خود را تغییر دهید.',
 'yourname' => 'نام کاربری:',
index 9ff82ad..c4434b7 100644 (file)
@@ -76,7 +76,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Kelpaamaton_otsikko' ),
        'Blankpage'                 => array( 'Tyhjä_sivu' ),
        'Block'                     => array( 'Estä' ),
-       'Blockme'                   => array( 'Estä_minut' ),
        'Booksources'               => array( 'Kirjalähteet' ),
        'BrokenRedirects'           => array( 'Virheelliset_ohjaukset', 'Virheelliset_uudelleenohjaukset' ),
        'Categories'                => array( 'Luokat' ),
@@ -88,10 +87,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Luo_tunnus' ),
        'Deadendpages'              => array( 'Linkittömät_sivut' ),
        'DeletedContributions'      => array( 'Poistetut_muokkaukset' ),
-       'Disambiguations'           => array( 'Täsmennyssivut' ),
        'DoubleRedirects'           => array( 'Kaksinkertaiset_ohjaukset', 'Kaksinkertaiset_uudelleenohjaukset' ),
        'EditWatchlist'             => array( 'Muokkaa_tarkkailulistaa' ),
        'Emailuser'                 => array( 'Lähetä_sähköpostia' ),
+       'ExpandTemplates'           => array( 'Mallineiden_laajennus' ),
        'Export'                    => array( 'Vie_sivuja' ),
        'Fewestrevisions'           => array( 'Vähiten_muokatut_sivut' ),
        'FileDuplicateSearch'       => array( 'Kaksoiskappaleiden_haku' ),
@@ -134,6 +133,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Suojatut_sivut' ),
        'Protectedtitles'           => array( 'Suojatut_sivunimet' ),
        'Randompage'                => array( 'Satunnainen_sivu' ),
+       'RandomInCategory'          => array( 'Satunnainen_sivu_luokasta' ),
        'Randomredirect'            => array( 'Satunnainen_ohjaus', 'Satunnainen_uudelleenohjaus' ),
        'Recentchanges'             => array( 'Tuoreet_muutokset' ),
        'Recentchangeslinked'       => array( 'Linkitetyt_muutokset' ),
@@ -227,8 +227,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'keskitetty', 'keski', 'center', 'centre' ),
        'img_framed'                => array( '1', 'kehys', 'kehystetty', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'kehyksetön', 'frameless' ),
-       'img_page'                  => array( '1', 'sivu=$1', 'sivu $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'yläoikea', 'yläoikea=$1', 'yläoikea $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'sivu=$1', 'sivu_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'yläoikea', 'yläoikea=$1', 'yläoikea_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'reunus', 'border' ),
        'img_baseline'              => array( '1', 'perustaso', 'baseline' ),
        'img_sub'                   => array( '1', 'alaindeksi', 'sub' ),
@@ -4147,7 +4147,7 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|tavu|tavua}}',
 'limitreport-templateargumentsize' => 'Mallineen argumenttien koko',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|tavu|tavua}}',
-'limitreport-expansiondepth' => 'Suurin laajennussyvyys',
+'limitreport-expansiondepth' => 'Highest expansion depth',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Mallineiden laajennus',
index d56102b..b779082 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Bólkar' ),
        'Contributions'             => array( 'Brúkaraíkast' ),
        'Deadendpages'              => array( 'Gøtubotns síður' ),
-       'Disambiguations'           => array( 'Síður við fleirfaldum týdningi' ),
        'DoubleRedirects'           => array( 'Tvífaldað ávísing' ),
        'Emailuser'                 => array( 'Send t-post til brúkara' ),
        'Export'                    => array( 'Útflutningssíður' ),
@@ -388,8 +387,8 @@ Sí [[Special:Version|versjón síða]].',
 'youhavenewmessages' => 'Tú hevur $1 ($2).',
 'youhavenewmessagesfromusers' => 'Tú hevur $1 frá {{PLURAL:$3|øðrum brúkara|$3 brúkarum}} ($2).',
 'youhavenewmessagesmanyusers' => 'Tú hevur $1 frá fleiri brúkarum ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|eini nýggj boð|nýggj boð}}',
-'newmessagesdifflinkplural' => 'seinasta {{PLURAL:$1|broyting|broytingar}}',
+'newmessageslinkplural' => '{{PLURAL:$1|eini nýggj boð|999=nýggj boð}}',
+'newmessagesdifflinkplural' => 'seinasta {{PLURAL:$1|broyting|999=broytingar}}',
 'youhavenewmessagesmulti' => 'Tú hevur nýggj boð á $1',
 'editsection' => 'rætta',
 'editold' => 'rætta',
@@ -441,6 +440,8 @@ Hetta kann eisini benda á ein feil í software'ini sum {{SITENAME}} brúkar.",
 # General errors
 'error' => 'Villa',
 'databaseerror' => 'Villa í dátagrunni',
+'databaseerror-query' => 'Fyrispurningur: $1',
+'databaseerror-function' => 'Funksjón: $1',
 'databaseerror-error' => 'Feilur: $1',
 'laggedslavemode' => "'''Ávaring:''' Síðan inniheldur møguliga ikki nýggjar dagføringar.",
 'readonly' => 'Dátubasan er stongd fyri skriving',
@@ -517,7 +518,8 @@ Umboðsstjórin sum stongdi hana, gav hesa frágreiðing: "$3".',
 'invalidtitle-knownnamespace' => 'Ógyldugt heiti við navnaøki "$2" og teksti "$3"',
 'invalidtitle-unknownnamespace' => 'Ógyldigt heiti við ókendum navnaøkis tali $1 og teksti "$2"',
 'exception-nologin' => 'Tú ert ikki loggað/ur inn',
-'exception-nologin-text' => 'Henda síða ella tað tú ætlar at gera kremvur at tú ert innritað/ur á hesa wiki.',
+'exception-nologin-text' => 'Vinarliga [[Special:Userlogin|rita inn]] fyri at fáa atgongd til hesa síðu ella handling.',
+'exception-nologin-text-manual' => 'Vinarliga $1 fyri at fáa atgongd til hesa síðu ella handling.',
 
 # Virus scanner
 'virus-badscanner' => "Konfiguratións villa: Ókendur virus skannari: ''$1''",
@@ -1074,8 +1076,8 @@ Tú kanst síggja munin; smálutir eru at finna í [{{fullurl:{{#Special:Log}}/s
 'revdelete-hide-user' => 'Brúkaranavn/IP adressa hjá tí sum rættar',
 'revdelete-hide-restricted' => 'Síggj burtur frá data frá administratorum líka væl sum frá øðrum',
 'revdelete-radio-same' => '(ikki broyta)',
-'revdelete-radio-set' => 'Sjónligt',
-'revdelete-radio-unset' => 'Fjalt',
+'revdelete-radio-set' => 'Fjalt',
+'revdelete-radio-unset' => 'Sjónligt',
 'revdelete-suppress' => 'Síggj burtur frá data frá administratorum líka væl sum frá øðrum',
 'revdelete-unsuppress' => 'Tak burtur avmarkingar á endurskaptum versjónum',
 'revdelete-log' => 'Orsøk:',
@@ -1502,6 +1504,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|broyting|broytingar}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|síðan seinastu vitjan}}',
 'enhancedrc-history' => 'søga',
 'recentchanges' => 'Seinastu broytingar',
 'recentchanges-legend' => 'Nýligar broytingar møguleikar',
@@ -1512,6 +1515,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'recentchanges-label-minor' => 'Hetta er ein lítil rætting',
 'recentchanges-label-bot' => 'Henda rætting varð gjørd av einum botti',
 'recentchanges-label-unpatrolled' => 'Henda rætting er ikki blivin eftirkannað enn',
+'recentchanges-legend-newpage' => '(sí eisini [[Special:NewPages|yvirlit yvir nýggjar síður]])',
 'rcnote' => "Niðanfyri {{PLURAL:$1|stendur '''1''' tann seinasta broytingin|standa '''$1''' tær seinastu broytingarnar}} {{PLURAL:$2|seinasta dagin|seinastu '''$2''' dagarnar}}, frá $5, $4.",
 'rcnotefrom' => "Niðanfyri standa broytingarnar síðani '''$2''', (upp til '''$1''' er sýndar).",
 'rclistfrom' => 'Sýn nýggjar broytingar byrjandi við $1',
@@ -1770,6 +1774,7 @@ Tú kanst eisini royna aftur, tá tað ikki eru so nógv í gongd her í senn.',
 'listfiles_size' => 'Stødd',
 'listfiles_description' => 'Frágreiðing',
 'listfiles_count' => 'Versjónir',
+'listfiles-latestversion' => 'Galdandi versjón',
 'listfiles-latestversion-yes' => 'Ja',
 'listfiles-latestversion-no' => 'Nei',
 
@@ -1975,6 +1980,7 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'listusers' => 'Brúkaralisti',
 'listusers-editsonly' => 'Vís bara brúkarar sum hava gjørt rættingar',
 'listusers-creationsort' => 'Bólkað eftir stovningardegnum',
+'listusers-desc' => 'Sortera í minkandi raðfylgju',
 'usereditcount' => '$1 {{PLURAL:$1|rætting|rættingar}}',
 'usercreated' => '{{GENDER:$3|Upprættað}} hin $1 kl. $2',
 'newpages' => 'Nýggjar síður',
@@ -2330,6 +2336,7 @@ Sí [[Special:Log/delete|slettingarloggin]] fyri at síggja seinastu strikingar
 'undelete-search-prefix' => 'Vís síður sum byrja við:',
 'undelete-search-submit' => 'Leita',
 'undelete-no-results' => 'Ongar síður sum passaðu til vóru funnar í arkivinum yvir slettaðar síður.',
+'undelete-error' => 'Feilur hendi meðan síðan skuldi endurstovnast',
 'undelete-show-file-submit' => 'Ja',
 
 # Namespace form on various pages
@@ -2735,7 +2742,7 @@ Vinarliga royn aftur.',
 'tooltip-n-randompage' => 'Far til tilvildarliga síðu',
 'tooltip-n-help' => 'Staðið har tú fært hjálp',
 'tooltip-t-whatlinkshere' => 'Yvirlit yvir allar wikisíður, ið slóða higar',
-'tooltip-t-recentchangeslinked' => 'Broytingar á síðum, ið slóða higar, í seinastuni',
+'tooltip-t-recentchangeslinked' => 'Seinastu broytingar á síðum, ið slóða higar',
 'tooltip-feed-rss' => 'RSS-fóðurið til hesa síðuna',
 'tooltip-feed-atom' => 'Atom-fóðurið til hesa síðuna',
 'tooltip-t-contributions' => 'Skoða yvirlit yvir íkast hjá hesum brúkara',
@@ -2878,7 +2885,7 @@ Vinarliga royn aftur.',
 'svg-long-desc' => 'SVG fíle, nominelt $1 × $2 pixel, fíle stødd: $3',
 'svg-long-desc-animated' => 'Animerað SVG fíla, nominelt $1 × $2 pixels, fílustødd: $3',
 'svg-long-error' => 'Ógyldug SVG fíla: $1',
-'show-big-image' => 'Full upploysn',
+'show-big-image' => 'Upprunafíla',
 'show-big-image-preview' => 'Stødd av hesi forskoðan: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Onnur upploysn|Aðrar upploysnir}}: $1.',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|ramma|rammur}}',
index adc7715..f53bf94 100644 (file)
@@ -137,20 +137,20 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'MauvaisTitre', 'Mauvais_titre' ),
        'Blankpage'                 => array( 'Page_blanche', 'PageBlanche' ),
        'Block'                     => array( 'Bloquer', 'Blocage' ),
-       'Blockme'                   => array( 'Bloquez-moi', 'Bloquezmoi' ),
        'Booksources'               => array( 'Ouvrages_de_référence', 'Ouvrages_de_reference', 'Ouvragesderéférence', 'Ouvragesdereference', 'Recherche_ISBN', 'Recherche_isbn', 'RechercheISBN', 'Rechercheisbn' ),
        'BrokenRedirects'           => array( 'Redirections_cassées', 'RedirectionCassées', 'Redirections_cassees', 'RedirectionsCassees' ),
        'Categories'                => array( 'Catégories' ),
        'ChangeEmail'               => array( 'ChangerCouriel', 'Changer_courrielw' ),
        'ChangePassword'            => array( 'Changement_du_mot_de_passe', 'ChangementDuMotDePasse' ),
+       'ComparePages'              => array( 'Comparer_des_pages' ),
        'Confirmemail'              => array( 'Confirmer_l\'adresse_de_contact', 'Confirmer_le_courriel', 'ConfirmerLeCourriel' ),
        'CreateAccount'             => array( 'Créer_un_compte', 'CréerUnCompte', 'CréerCompte' ),
        'Deadendpages'              => array( 'Pages_en_impasse', 'PagesEnImpasse' ),
        'DeletedContributions'      => array( 'Contributions_supprimées', 'ContributionsSupprimées', 'ContributionSupprimees' ),
-       'Disambiguations'           => array( 'Homonymies', 'Homonymie', 'Pages_d\'homonymie' ),
        'DoubleRedirects'           => array( 'Doubles_redirections', 'DoublesRedirections', 'Redirections_doubles', 'RedirectionsDoubles' ),
        'EditWatchlist'             => array( 'Éditer_Liste_de_suivi', 'ÉditerListeDeSuivi' ),
        'Emailuser'                 => array( 'Envoyer_un_courriel', 'EnvoyerUnCourriel', 'Courriel', 'Envoyer_un_e-mail', 'EnvoyerUnEMail', 'E-mail', 'EMail' ),
+       'ExpandTemplates'           => array( 'ExpansionDesModèles' ),
        'Export'                    => array( 'Exporter', 'Exportation' ),
        'Fewestrevisions'           => array( 'Pages_les_moins_modifiées', 'PagesLesMoinsModifiées', 'Pages_les_moins_modifiees', 'PagesLesMoinsModifiees', 'Les_moins_modifiés', 'LesMoinsModifiés', 'Les_moins_modifies', 'LesMoinsModifies' ),
        'FileDuplicateSearch'       => array( 'Recherche_fichier_en_double', 'RechercheFichierEnDouble' ),
@@ -183,6 +183,7 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mes_discussions', 'Mesdiscussions' ),
        'Newimages'                 => array( 'Nouveaux_fichiers', 'NouveauxFichiers', 'Nouvelles_images', 'NouvellesImages' ),
        'Newpages'                  => array( 'Nouvelles_pages', 'NouvellesPages', 'Pages_récentes', 'PagesRécentes', 'Pages_recentes', 'PagesRecentes' ),
+       'PagesWithProp'             => array( 'Pages_avec_la_propriété' ),
        'PasswordReset'             => array( 'Réinitialisation_du_mot_de_passe', 'RéinitialisationDuMotDePasse' ),
        'PermanentLink'             => array( 'LienPermanent', 'Lien_permanent' ),
        'Popularpages'              => array( 'Pages_les_plus_visitées', 'Pages_les_plus_visitees', 'Pageslesplusvisitées', 'Pageslesplusvisitees' ),
@@ -191,9 +192,11 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Pages_protégées', 'PagesProtégées', 'Pages_protegees', 'PagesProtegees' ),
        'Protectedtitles'           => array( 'Titres_protégés', 'TitresProtégés', 'Titres_proteges', 'TitresProteges' ),
        'Randompage'                => array( 'Page_au_hasard', 'PageAuHasard', 'Au_hasard', 'AuHasard', 'Aléatoire', 'Aleatoire' ),
+       'RandomInCategory'          => array( 'Page_au_hasard_dans_une_catégorie' ),
        'Randomredirect'            => array( 'Redirection_au_hasard', 'Redirect_au_hasard', 'Redirectionauhasard', 'Redirectauhasard', 'Redirection_aléatoire', 'Redirect_aléatoire', 'Redirectionaléatoire', 'Redirectaléatoire', 'Redirection_aleatoire', 'Redirect_aleatoire', 'Redirectionaleatoire', 'Redirectaleatoire' ),
        'Recentchanges'             => array( 'Modifications_récentes', 'Modifications_recentes', 'ModificationsRécentes', 'ModificationsRecentes' ),
        'Recentchangeslinked'       => array( 'Suivi_des_liens', 'SuiviDesLiens' ),
+       'Redirect'                  => array( 'Redirection' ),
        'Revisiondelete'            => array( 'Versions_supprimées', 'Versions_supprimees', 'Versionsupprimées', 'Versionsupprimees' ),
        'Search'                    => array( 'Recherche', 'Rechercher', 'Chercher' ),
        'Shortpages'                => array( 'Pages_courtes', 'PagesCourtes' ),
@@ -273,6 +276,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'NOMPAGECOMPLETX', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'NOMSOUSPAGE', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'NOMSOUSPAGEX', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'NOMPAGERACINE', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'NOMPAGERACINEX', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'NOMBASEDEPAGE', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'NOMBASEDEPAGEX', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'NOMPAGEDISCUSSION', 'TALKPAGENAME' ),
@@ -287,9 +292,10 @@ $magicWords = array(
        'img_center'                => array( '1', 'centré', 'center', 'centre' ),
        'img_framed'                => array( '1', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ),
-       'img_upright'               => array( '1', 'redresse', 'redresse=$1', 'redresse $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_lang'                  => array( '1', 'langue=$1', 'lang=$1' ),
+       'img_upright'               => array( '1', 'redresse', 'redresse=$1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'bordure', 'border' ),
-       'img_baseline'              => array( '1', 'ligne_de_base', 'base', 'baseline' ),
+       'img_baseline'              => array( '1', 'ligne-de-base', 'base', 'baseline' ),
        'img_sub'                   => array( '1', 'indice', 'ind', 'sub' ),
        'img_super'                 => array( '1', 'exposant', 'exp', 'super', 'sup' ),
        'img_top'                   => array( '1', 'haut', 'top' ),
@@ -298,12 +304,14 @@ $magicWords = array(
        'img_bottom'                => array( '1', 'bas', 'bottom' ),
        'img_text_bottom'           => array( '1', 'bas-texte', 'bas-txt', 'text-bottom' ),
        'img_link'                  => array( '1', 'lien=$1', 'link=$1' ),
+       'img_class'                 => array( '1', 'classe=$1', 'class=$1' ),
        'sitename'                  => array( '1', 'NOMSITE', 'SITENAME' ),
        'ns'                        => array( '0', 'ESPACEN:', 'NS:' ),
        'nse'                       => array( '0', 'ESPACENX:', 'NSE:' ),
        'localurl'                  => array( '0', 'URLLOCALE:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'URLLOCALEX:', 'LOCALURLE:' ),
        'articlepath'               => array( '0', 'CHEMINARTICLE', 'ARTICLEPATH' ),
+       'pageid'                    => array( '0', 'IDPAGE', 'PAGEID' ),
        'server'                    => array( '0', 'SERVEUR', 'SERVER' ),
        'servername'                => array( '0', 'NOMSERVEUR', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'CHEMINSCRIPT', 'SCRIPTPATH' ),
@@ -327,6 +335,8 @@ $magicWords = array(
        'plural'                    => array( '0', 'PLURIEL:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'URLCOMPLETE:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'URLCOMPLETEX:', 'FULLURLE:' ),
+       'canonicalurl'              => array( '0', 'URLCANONIQUE:', 'CANONICALURL:' ),
+       'canonicalurle'             => array( '0', 'URLCANONIQUEX:', 'CANONICALURLE:' ),
        'lcfirst'                   => array( '0', 'INITMINUS:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'INITMAJUS:', 'INITCAPIT:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'MINUS:', 'LC:' ),
@@ -334,6 +344,7 @@ $magicWords = array(
        'raw'                       => array( '0', 'BRUT:', 'RAW:' ),
        'displaytitle'              => array( '1', 'AFFICHERTITRE', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'BRUT', 'B', 'R' ),
+       'nocommafysuffix'           => array( '0', 'SANSSEP', 'NOSEP' ),
        'newsectionlink'            => array( '1', '__LIENNOUVELLESECTION__', '__NEWSECTIONLINK__' ),
        'nonewsectionlink'          => array( '1', '__AUCUNLIENNOUVELLESECTION__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'VERSIONACTUELLE', 'CURRENTVERSION' ),
@@ -350,6 +361,7 @@ $magicWords = array(
        'padleft'                   => array( '0', 'BOURRAGEGAUCHE', 'BOURREGAUCHE', 'PADLEFT' ),
        'padright'                  => array( '0', 'BOURRAGEDROITE', 'BOURREDROITE', 'PADRIGHT' ),
        'special'                   => array( '0', 'spécial', 'special' ),
+       'speciale'                  => array( '0', 'spéciale', 'speciale' ),
        'defaultsort'               => array( '1', 'CLEFDETRI:', 'CLEDETRI:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                  => array( '0', 'CHEMIN:', 'FILEPATH:' ),
        'tag'                       => array( '0', 'balise', 'tag' ),
@@ -362,8 +374,11 @@ $magicWords = array(
        'protectionlevel'           => array( '1', 'NIVEAUDEPROTECTION', 'PROTECTIONLEVEL' ),
        'url_path'                  => array( '0', 'CHEMIN', 'PATH' ),
        'url_query'                 => array( '0', 'QUESTION', 'QUERY' ),
+       'defaultsort_noerror'       => array( '0', 'sanserreur', 'noerror' ),
+       'defaultsort_noreplace'     => array( '0', 'sansremplacer', 'noreplace' ),
        'pagesincategory_all'       => array( '0', 'tous', 'all' ),
-       'pagesincategory_files'     => array( '0', 'fichier', 'files' ),
+       'pagesincategory_subcats'   => array( '0', 'souscats', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'fichiers', 'files' ),
 );
 
 $bookstoreList = array(
index 51db299..bce0091 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Pâges_les_muens_dèrriérement_changiês', 'PâgesLesMuensDèrriérementChangiês' ),
        'Blankpage'                 => array( 'Pâge_voueda', 'PâgeVoueda' ),
        'Block'                     => array( 'Blocar', 'Blocâjo' ),
-       'Blockme'                   => array( 'Blocâd-mè', 'BlocâdMè' ),
        'Booksources'               => array( 'Ôvres_de_refèrence', 'ÔvresDeRefèrence' ),
        'BrokenRedirects'           => array( 'Redirèccions_câsses', 'RedirèccionsCâsses' ),
        'Categories'                => array( 'Catègories' ),
@@ -69,9 +68,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Fâre_un_compto', 'FâreUnCompto' ),
        'Deadendpages'              => array( 'Pâges_en_cul-de-sac', 'PâgesEnCulDeSac' ),
        'DeletedContributions'      => array( 'Contribucions_suprimâs', 'ContribucionsSuprimâs' ),
-       'Disambiguations'           => array( 'Homonimia', 'Homonimies', 'Pâges_d\'homonimia', 'PâgesDHomonimia' ),
        'DoubleRedirects'           => array( 'Redirèccions_dobles', 'RedirèccionsDobles' ),
        'Emailuser'                 => array( 'Mandar_un_mèssâjo', 'MandarUnMèssâjo', 'Mèssâjo' ),
+       'ExpandTemplates'           => array( 'Èxpension_des_modèlos', 'ÈxpensionDesModèlos' ),
        'Export'                    => array( 'Èxportar', 'Èxportacion' ),
        'Fewestrevisions'           => array( 'Pâges_les_muens_changiês', 'PâgesLesMuensChangiês' ),
        'FileDuplicateSearch'       => array( 'Rechèrche_des_fichiérs_en_doblo', 'RechèrcheDesFichiérsEnDoblo' ),
@@ -111,6 +110,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Pâges_protègiês', 'PâgesProtègiês' ),
        'Protectedtitles'           => array( 'Titros_protègiês', 'TitrosProtègiês' ),
        'Randompage'                => array( 'Pâge_a_l\'hasârd', 'PâgeALHasârd' ),
+       'RandomInCategory'          => array( 'Pâge_a_l\'hasârd_dens_una_catègorie', 'PâgeALHasârdDensUnaCatègorie' ),
        'Randomredirect'            => array( 'Redirèccion_a_l\'hasârd', 'RedirèccionALHasârd' ),
        'Recentchanges'             => array( 'Dèrriérs_changements', 'DèrriérsChangements' ),
        'Recentchangeslinked'       => array( 'Survelyence_des_lims', 'SurvelyenceDesLims' ),
index 8d4e90c..2fab5cf 100644 (file)
@@ -51,7 +51,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Contribûts', 'ContribûtsUtent' ),
        'CreateAccount'             => array( 'CreeIdentitât' ),
        'Deadendpages'              => array( 'PagjinisCenceJessude' ),
-       'Disambiguations'           => array( 'Omonimiis' ),
        'DoubleRedirects'           => array( 'ReIndreçamentsDoplis' ),
        'Emailuser'                 => array( 'MandeEmail' ),
        'Export'                    => array( 'Espuarte' ),
@@ -98,8 +97,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'ModeiNoDoprâts' ),
        'Unwatchedpages'            => array( 'PagjinisNoTignudisDiVoli' ),
        'Upload'                    => array( 'Cjame' ),
-       'Userlogin'                 => array( 'Jentre', 'Login' ),
-       'Userlogout'                => array( 'Jes', 'Logout' ),
+       'Userlogin'                 => array( 'Jentre' ),
+       'Userlogout'                => array( 'Jes' ),
        'Userrights'                => array( 'PermèsUtents' ),
        'Wantedcategories'          => array( 'CategoriisDesideradis' ),
        'Watchlist'                 => array( 'TignudisDiVoli' ),
index 0908a69..c3ddfec 100644 (file)
@@ -75,7 +75,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Meidogger-bydragen', 'Meidogger bydragen', 'Bydragen', 'Brûker bydragen' ),
        'CreateAccount'             => array( 'Nije ynstellings oanmeitsje', 'Nijeynstellingsoanmeitsje' ),
        'Deadendpages'              => array( 'Siden sûnder keppelings', 'Siden sûnder ferwizings', 'Siden sûnder links' ),
-       'Disambiguations'           => array( 'Betsjuttingssiden', 'Trochferwizings' ),
        'DoubleRedirects'           => array( 'Dûbele trochferwizings', 'Dûbeletrochferwizings' ),
        'Emailuser'                 => array( 'Skriuw meidogger', 'Skriuw dizze brûker', 'Skriuw dizze meidogger' ),
        'Export'                    => array( 'Eksportearje' ),
index e1679bc..89a37be 100644 (file)
@@ -61,7 +61,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Katılmaklar' ),
        'CreateAccount'             => array( 'EsapYarat', 'EsapAç' ),
        'Deadendpages'              => array( 'BaalantısızYazılar', 'BaalantısızSayfalar', 'BaalantısızYapraklar' ),
-       'Disambiguations'           => array( 'MaanaAydınnatmak', 'MaanaAydınnatma' ),
        'DoubleRedirects'           => array( 'İkiKeräYönnendirmäler', 'İkiKeräYönnendirmeler' ),
        'Listadmins'                => array( 'İzmetliListası' ),
        'Listbots'                  => array( 'BotListası' ),
index 0234fcb..1aa9cb9 100644 (file)
@@ -32,7 +32,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( '老早嗰頁面' ),
        'BrokenRedirects'           => array( '壞吥嗰重定向頁' ),
        'CreateAccount'             => array( '新建隻帳戶' ),
-       'Disambiguations'           => array( '多義項' ),
        'Fewestrevisions'           => array( '最少改動嗰頁面' ),
        'Longpages'                 => array( '莽文章' ),
        'Mostcategories'            => array( '最多分類嗰頁面' ),
index c429f79..6762273 100644 (file)
@@ -68,12 +68,12 @@ $dateFormats = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Usuarios_activos' ),
        'Allmessages'               => array( 'Todas_as_mensaxes' ),
+       'AllMyUploads'              => array( 'Todas_as_miñas_cargas', 'Todos_os_meus_ficheiros' ),
        'Allpages'                  => array( 'Todas_as_páxinas' ),
        'Ancientpages'              => array( 'Páxinas_máis_antigas' ),
        'Badtitle'                  => array( 'Título_incorrecto' ),
        'Blankpage'                 => array( 'Baleirar_a_páxina' ),
        'Block'                     => array( 'Bloquear', 'Bloquear_o_enderezo_IP', 'Bloquear_o_usuario' ),
-       'Blockme'                   => array( 'Bloquearme' ),
        'Booksources'               => array( 'Fontes_bibliográficas' ),
        'BrokenRedirects'           => array( 'Redireccións_rotas' ),
        'Categories'                => array( 'Categorías' ),
@@ -85,10 +85,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_unha_conta' ),
        'Deadendpages'              => array( 'Páxinas_mortas' ),
        'DeletedContributions'      => array( 'Contribucións_borradas' ),
-       'Disambiguations'           => array( 'Homónimos' ),
        'DoubleRedirects'           => array( 'Redireccións_dobres' ),
        'EditWatchlist'             => array( 'Editar_a_lista_de_vixilancia' ),
        'Emailuser'                 => array( 'Correo_electrónico' ),
+       'ExpandTemplates'           => array( 'Expandir_os_modelos' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'Páxinas_con_menos_revisións' ),
        'FileDuplicateSearch'       => array( 'Procura_de_ficheiros_duplicados' ),
@@ -137,6 +137,7 @@ $specialPageAliases = array(
        'Recentchanges'             => array( 'Cambios_recentes' ),
        'Recentchangeslinked'       => array( 'Cambios_relacionados' ),
        'Redirect'                  => array( 'Redirección' ),
+       'ResetTokens'               => array( 'Restablecer_os_pases' ),
        'Revisiondelete'            => array( 'Revisións_borradas' ),
        'Search'                    => array( 'Procurar' ),
        'Shortpages'                => array( 'Páxinas_curtas' ),
@@ -175,7 +176,7 @@ $magicWords = array(
        'forcetoc'                  => array( '0', '__FORZAROÍNDICE__', '__FORCARTDC__', '__FORCARSUMARIO__', '__FORÇARTDC__', '__FORÇARSUMÁRIO__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__ÍNDICE__', '__TDC__', '__SUMÁRIO__', '__SUMARIO__', '__TOC__' ),
        'noeditsection'             => array( '0', '__SECCIÓNSNONEDITABLES__', '__NÃOEDITARSEÇÃO__', '__SEMEDITARSEÇÃO__', '__NAOEDITARSECAO__', '__SEMEDITARSECAO__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'MESACTUAL', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth'              => array( '1', 'MESACTUAL', 'MESACTUAL2', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', 'MESACTUAL1', 'MESATUAL1', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'NOMEDOMESACTUAL', 'NOMEDOMESATUAL', 'CURRENTMONTHNAME' ),
        'currentmonthabbrev'        => array( '1', 'ABREVIATURADOMESACTUAL', 'MESATUALABREV', 'MESATUALABREVIADO', 'ABREVIATURADOMESATUAL', 'CURRENTMONTHABBREV' ),
@@ -185,7 +186,7 @@ $magicWords = array(
        'currentyear'               => array( '1', 'ANOACTUAL', 'ANOATUAL', 'CURRENTYEAR' ),
        'currenttime'               => array( '1', 'DATAEHORAACTUAIS', 'HORARIOATUAL', 'CURRENTTIME' ),
        'currenthour'               => array( '1', 'HORAACTUAL', 'HORAATUAL', 'CURRENTHOUR' ),
-       'localmonth'                => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth'                => array( '1', 'MESLOCAL', 'MESLOCAL2', 'LOCALMONTH', 'LOCALMONTH2' ),
        'localmonth1'               => array( '1', 'MESLOCAL1', 'LOCALMONTH1' ),
        'localmonthname'            => array( '1', 'NOMEDOMESLOCAL', 'LOCALMONTHNAME' ),
        'localmonthabbrev'          => array( '1', 'ABREVIATURADOMESLOCAL', 'MESLOCALABREV', 'MESLOCALABREVIADO', 'LOCALMONTHABBREV' ),
@@ -204,10 +205,15 @@ $magicWords = array(
        'numberofviews'             => array( '1', 'NÚMERODEVISITAS', 'NUMERODEEXIBICOES', 'NÚMERODEEXIBIÇÕES', 'NUMBEROFVIEWS' ),
        'pagename'                  => array( '1', 'NOMEDAPÁXINA', 'NOMEDAPAGINA', 'NOMEDAPÁGINA', 'PAGENAME' ),
        'namespace'                 => array( '1', 'ESPAZODENOMES', 'DOMINIO', 'DOMÍNIO', 'ESPACONOMINAL', 'ESPAÇONOMINAL', 'NAMESPACE' ),
+       'namespacenumber'           => array( '1', 'NÚMERODOESPAZODENOMES', 'NAMESPACENUMBER' ),
+       'talkspace'                 => array( '1', 'ESPAZODECONVERSA', 'PAGINADEDISCUSSAO', 'PÁGINADEDISCUSSÃO', 'TALKSPACE' ),
+       'subjectspace'              => array( '1', 'ESPAZODECONTIDO', 'PAGINADECONTEUDO', 'PAGINADECONTEÚDO', 'SUBJECTSPACE', 'ARTICLESPACE' ),
        'fullpagename'              => array( '1', 'NOMECOMPLETODAPÁXINA', 'NOMECOMPLETODAPAGINA', 'NOMECOMPLETODAPÁGINA', 'FULLPAGENAME' ),
        'subpagename'               => array( '1', 'NOMEDASUBPÁXINA', 'NOMEDASUBPAGINA', 'NOMEDASUBPÁGINA', 'SUBPAGENAME' ),
+       'rootpagename'              => array( '1', 'NOMEDAPÁXINARAÍZ', 'ROOTPAGENAME' ),
        'basepagename'              => array( '1', 'NOMEDAPÁXINABASE', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ),
        'talkpagename'              => array( '1', 'NOMEDAPÁXINADECONVERSA', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ),
+       'subjectpagename'           => array( '1', 'NOMEDAPÁXINADECONTIDO', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
        'img_thumbnail'             => array( '1', 'miniatura', 'miniaturadaimaxe', 'miniaturadaimagem', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'miniatura=$1', 'miniaturadaimaxe=$1', 'miniaturadaimagem=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'dereita', 'direita', 'right' ),
@@ -216,8 +222,10 @@ $magicWords = array(
        'img_center'                => array( '1', 'centro', 'center', 'centre' ),
        'img_framed'                => array( '1', 'conmarco', 'conbordo', 'marco', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'senmarco', 'senbordo', 'semmoldura', 'semborda', 'frameless' ),
-       'img_page'                  => array( '1', 'páxina=$1', 'páxina $1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'páxina=$1', 'páxina_$1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'arribaádereita', 'arribaádereita=$1', 'arribaádereita_$1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'bordo', 'borda', 'border' ),
+       'img_baseline'              => array( '1', 'liñadebase', 'linhadebase', 'baseline' ),
        'img_top'                   => array( '1', 'arriba', 'acima', 'top' ),
        'img_text_top'              => array( '1', 'texto-arriba', 'text-top' ),
        'img_middle'                => array( '1', 'medio', 'meio', 'middle' ),
@@ -226,16 +234,38 @@ $magicWords = array(
        'img_link'                  => array( '1', 'ligazón=$1', 'ligação=$1', 'link=$1' ),
        'img_class'                 => array( '1', 'clase=$1', 'class=$1' ),
        'sitename'                  => array( '1', 'NOMEDOSITIO', 'NOMEDOSITE', 'NOMEDOSÍTIO', 'SITENAME' ),
-       'localurl'                  => array( '0', 'URLLOCAL', 'LOCALURL:' ),
+       'localurl'                  => array( '0', 'URLLOCAL:', 'LOCALURL:' ),
        'articlepath'               => array( '0', 'RUTADOARTIGO', 'ARTICLEPATH' ),
        'pageid'                    => array( '0', 'IDDAPÁXINA', 'PAGEID' ),
        'server'                    => array( '0', 'SERVIDOR', 'SERVER' ),
        'servername'                => array( '0', 'NOMEDOSERVIDOR', 'SERVERNAME' ),
+       'scriptpath'                => array( '0', 'RUTADAESCRITURA', 'CAMINHODOSCRIPT', 'SCRIPTPATH' ),
+       'stylepath'                 => array( '0', 'RUTADOESTILO', 'STYLEPATH' ),
        'grammar'                   => array( '0', 'GRAMÁTICA:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'SEXO:', 'GENERO', 'GÊNERO', 'GENDER:' ),
-       'displaytitle'              => array( '1', 'AMOSAROTÍTULO', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
+       'currentweek'               => array( '1', 'SEMANAACTUAL', 'SEMANAATUAL', 'CURRENTWEEK' ),
+       'localweek'                 => array( '1', 'SEMANALOCAL', 'LOCALWEEK' ),
+       'revisionid'                => array( '1', 'IDDAREVISIÓN', 'IDDAREVISAO', 'IDDAREVISÃO', 'REVISIONID' ),
+       'revisionday'               => array( '1', 'DÍADAREVISIÓN', 'DIADAREVISAO', 'DIADAREVISÃO', 'REVISIONDAY' ),
+       'revisionday2'              => array( '1', 'DÍADAREVISIÓN2', 'DIADAREVISAO2', 'DIADAREVISÃO2', 'REVISIONDAY2' ),
+       'revisionmonth'             => array( '1', 'MESDAREVISIÓN', 'MESDAREVISAO', 'MÊSDAREVISÃO', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'MESDAREVISIÓN1', 'REVISIONMONTH1' ),
+       'revisionyear'              => array( '1', 'ANODAREVISIÓN', 'ANODAREVISAO', 'ANODAREVISÃO', 'REVISIONYEAR' ),
+       'revisiontimestamp'         => array( '1', 'DATAEHORADAREVISIÓN', 'REVISIONTIMESTAMP' ),
+       'revisionuser'              => array( '1', 'USUARIODAREVISIÓN', 'USUARIODAREVISAO', 'USUÁRIODAREVISÃO', 'REVISIONUSER' ),
+       'fullurl'                   => array( '0', 'URLCOMPLETO:', 'FULLURL:' ),
+       'canonicalurl'              => array( '0', 'URLCANÓNICO:', 'CANONICALURL:' ),
+       'lcfirst'                   => array( '0', 'PRIMEIRAMINÚSCULA:', 'PRIMEIRAMINUSCULA:', 'LCFIRST:' ),
+       'ucfirst'                   => array( '0', 'PRIMEIRAMAIÚSCULA:', 'PRIMEIRAMAIUSCULA:', 'UCFIRST:' ),
+       'lc'                        => array( '0', 'MINÚSCULA:', 'MINUSCULA', 'MINÚSCULA', 'MINUSCULAS', 'MINÚSCULAS', 'LC:' ),
+       'uc'                        => array( '0', 'MAIÚSCULA:', 'MAIUSCULA', 'MAIÚSCULA', 'MAIUSCULAS', 'MAIÚSCULAS', 'UC:' ),
+       'raw'                       => array( '0', 'ENBRUTO:', 'RAW:' ),
+       'displaytitle'              => array( '1', 'AMOSAROTÍTULO', 'MOSTRAROTÍTULO', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
        'newsectionlink'            => array( '1', '__LIGAZÓNDANOVASECCIÓN__', '__LINKDENOVASECAO__', '__LINKDENOVASEÇÃO__', '__LIGACAODENOVASECAO__', '__LIGAÇÃODENOVASEÇÃO__', '__NEWSECTIONLINK__' ),
+       'currentversion'            => array( '1', 'VERSIÓNACTUAL', 'REVISAOATUAL', 'REVISÃOATUAL', 'CURRENTVERSION' ),
        'language'                  => array( '0', '#LINGUA:', '#IDIOMA:', '#LANGUAGE:' ),
+       'contentlanguage'           => array( '1', 'LINGUADOCONTIDO', 'IDIOMADOCONTIDO', 'IDIOMADOCONTEUDO', 'IDIOMADOCONTEÚDO', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'          => array( '1', 'PÁXINASNOESPAZODENOMES:', 'PAGINASNOESPACONOMINAL', 'PÁGINASNOESPAÇONOMINAL', 'PAGINASNODOMINIO', 'PÁGINASNODOMÍNIO', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'            => array( '1', 'NÚMERODEADMINISTRADORES', 'NUMERODEADMINISTRADORES', 'NUMBEROFADMINS' ),
        'special'                   => array( '0', 'especial', 'special' ),
        'defaultsort'               => array( '1', 'ORDENAR:', 'ORDENACAOPADRAO', 'ORDENAÇÃOPADRÃO', 'ORDEMPADRAO', 'ORDEMPADRÃO', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
@@ -244,6 +274,7 @@ $magicWords = array(
        'pagesincategory'           => array( '1', 'PÁXINASNACATEGORÍA', 'PAGINASNACATEGORIA', 'PÁGINASNACATEGORIA', 'PAGINASNACAT', 'PÁGINASNACAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'pagesize'                  => array( '1', 'TAMAÑODAPÁXINA', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ),
        'url_path'                  => array( '0', 'RUTA', 'PATH' ),
+       'url_query'                 => array( '0', 'PESCUDA', 'QUERY' ),
        'pagesincategory_all'       => array( '0', 'todos', 'all' ),
        'pagesincategory_pages'     => array( '0', 'páxinas', 'pages' ),
        'pagesincategory_subcats'   => array( '0', 'subcategorías', 'subcats' ),
@@ -529,8 +560,8 @@ $1',
 'youhavenewmessages' => 'Ten $1 ($2).',
 'youhavenewmessagesfromusers' => 'Ten $1 {{PLURAL:$3|doutro usuario|de $3 usuarios}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ten $1 de moitos usuarios ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|unha mensaxe nova|mensaxes novas}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|última modificación|últimas modificacións}}',
+'newmessageslinkplural' => '{{PLURAL:$1|unha mensaxe nova|999=mensaxes novas}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|última modificación|999=últimas modificacións}}',
 'youhavenewmessagesmulti' => 'Ten mensaxes novas en $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -662,7 +693,8 @@ O administrador que bloqueou o repositorio achegou este motivo: "$3".',
 'invalidtitle-knownnamespace' => 'Título inválido co espazo de nomes "$2" e o texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título inválido cun número de espazo de nomes, $1, descoñecido e o texto "$2"',
 'exception-nologin' => 'Non accedeu ao sistema',
-'exception-nologin-text' => 'Esta páxina ou acción necesita que vostede acceda ao sistema neste wiki.',
+'exception-nologin-text' => '[[Special:Userlogin|Acceda ao sistema]] para poder realizar esa acción ou acceder a esa páxina.',
+'exception-nologin-text-manual' => 'Debe $1 para poder realizar esa acción ou acceder a esa páxina.',
 
 # Virus scanner
 'virus-badscanner' => "Configuración errónea: escáner de virus descoñecido: ''$1''",
@@ -1402,7 +1434,8 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'preferences' => 'Preferencias',
 'mypreferences' => 'Preferencias',
 'prefs-edits' => 'Número de edicións:',
-'changepassword' => 'Cambiar o meu contrasinal',
+'prefsnologintext2' => 'Debe $1 para definir as preferencias de usuario.',
+'changepassword' => 'Cambiar o contrasinal',
 'prefs-skin' => 'Aparencia',
 'skin-preview' => 'Vista previa',
 'datedefault' => 'Ningunha preferencia',
@@ -1701,7 +1734,9 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'recentchanges-label-minor' => 'Esta é unha edición pequena',
 'recentchanges-label-bot' => 'Esta edición foi realizada por un bot',
 'recentchanges-label-unpatrolled' => 'Esta edición aínda non foi comprobada',
-'recentchanges-legend-newpage' => '$1 - nova páxina',
+'recentchanges-label-plusminus' => 'O tamaño da páxina variou este número de bytes',
+'recentchanges-legend-newpage' => '(véxase tamén a [[Special:NewPages|lista de páxinas novas]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "A continuación {{PLURAL:$1|móstrase '''1''' cambio|móstranse os últimos '''$1''' cambios}} {{PLURAL:$2|no último día|nos últimos '''$2''' días}} ata o $4 ás $5.",
 'rcnotefrom' => "A continuación móstranse os cambios feitos desde o '''$3''' ás '''$4''' (móstranse '''$1''' como máximo).",
 'rclistfrom' => 'Mostrar os cambios novos desde o $1',
@@ -2033,7 +2068,7 @@ Tamén pode reintentalo cando haxa menos actividade.',
 'imagelinks' => 'Uso do ficheiro',
 'linkstoimage' => '{{PLURAL:$1|A seguinte páxina liga|As seguintes $1 páxinas ligan}} con esta imaxe:',
 'linkstoimage-more' => 'Máis {{PLURAL:$1|dunha páxina liga|de $1 páxinas ligan}} con este ficheiro.
-A seguinte lista só amosa {{PLURAL:$1|a primeira páxina que liga|as primeiras $1 páxina que ligan}} con el.
+A seguinte lista só mostra {{PLURAL:$1|a primeira páxina que liga|as primeiras $1 páxina que ligan}} con el.
 Hai dispoñible [[Special:WhatLinksHere/$2|unha lista completa]].',
 'nolinkstoimage' => 'Ningunha páxina liga con este ficheiro.',
 'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|máis ligazóns]] cara a este ficheiro.',
@@ -2385,7 +2420,7 @@ O enderezo de correo electrónico que inseriu [[Special:Preferences|nas súas pr
 'mywatchlist' => 'Lista de vixilancia',
 'watchlistfor2' => 'De $1 $2',
 'nowatchlist' => 'Non ten elementos na súa lista de vixilancia.',
-'watchlistanontext' => 'Faga o favor de $1 ao sistema para ver ou editar os elementos da súa lista de vixilancia.',
+'watchlistanontext' => 'Debe $1 para ver ou editar os elementos da súa lista de vixilancia.',
 'watchnologin' => 'Non accedeu ao sistema',
 'watchnologintext' => 'Debe [[Special:UserLogin|acceder ao sistema]] para modificar a súa lista de vixilancia.',
 'addwatch' => 'Engadir á lista vixilancia',
@@ -2441,9 +2476,9 @@ Pode contactar co editor:
 por correo electrónico: $PAGEEDITOR_EMAIL
 no wiki: $PAGEEDITOR_WIKI
 
-Non se producirán novas notificacións cando haxa novos cambios ata que vostede visite a páxina. Pode borrar os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.
+Non se producirán máis notificacións en caso de que haxa actividade nova ata que acceda ao sistema e visite a páxina. Pode restablecer os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.
 
-       O sistema de avisos de {{SITENAME}}
+O sistema de avisos de {{SITENAME}}
 
 --
 Para cambiar as notificacións por correo electrónico, visite
@@ -3772,7 +3807,7 @@ Por favor, comprobe que no enderezo de correo electrónico non haxa caracteres i
 O programa de correo informa do seguinte: $1',
 'confirmemail_invalid' => 'O código de confirmación non é válido.
 Pode ser que caducase.',
-'confirmemail_needlogin' => 'Necesita $1 para confirmar o seu enderezo de correo electrónico.',
+'confirmemail_needlogin' => 'Debe $1 para confirmar o seu enderezo de correo electrónico.',
 'confirmemail_success' => 'Confirmouse o seu enderezo de correo electrónico. Agora xa pode [[Special:UserLogin|acceder ao sistema]] e facer uso do wiki.',
 'confirmemail_loggedin' => 'Xa se confirmou o seu enderezo de correo electrónico.',
 'confirmemail_error' => 'Houbo un problema ao gardar a súa confirmación.',
@@ -3849,6 +3884,7 @@ Por favor, confirme que realmente quere recrear esta páxina.",
 
 # Separators for various lists, etc.
 'colon-separator' => ':&#32;',
+'quotation-marks' => '"$1"',
 
 # Multipage image navigation
 'imgmultipageprev' => '← páxina anterior',
@@ -3981,6 +4017,7 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 
 # Special:SpecialPages
 'specialpages' => 'Páxinas especiais',
+'specialpages-note-top' => 'Lenda',
 'specialpages-note' => '* Páxinas especiais normais.
 * <span class="mw-specialpagerestricted">Páxinas especiais restrinxidas.</span>',
 'specialpages-group-maintenance' => 'Informes de mantemento',
@@ -4004,7 +4041,7 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'external_image_whitelist' => ' #Deixe esta liña tal e como está<pre>
 #Poña embaixo fragmentos de expresións regulares (tan só a parte que vai entre //)
 #Isto coincidirá cos enderezos URL das imaxes externas (hotlinked)
-#Aquelas que coincidan serán amosadas como imaxes, senón, só será amosada unha ligazón cara a esta
+#Aquelas que coincidan mostraranse como imaxes, senón, só se mostrará unha ligazón cara a esta
 #As liñas que comecen por "#" son comentarios
 #Non diferencia entre maiúsculas e minúsculas
 
index bc40261..aa24766 100644 (file)
@@ -36,7 +36,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Nit-gültige_Sytename' ),
        'Blankpage'                 => array( 'Läärsyte' ),
        'Block'                     => array( 'Sperre' ),
-       'Blockme'                   => array( 'Proxy-Sperre' ),
        'Booksources'               => array( 'ISBN-Suech' ),
        'BrokenRedirects'           => array( 'Kaputti_Wyterlaitige' ),
        'Categories'                => array( 'Kategorie' ),
@@ -48,10 +47,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Benutzerchonto_aaleege' ),
        'Deadendpages'              => array( 'Sackgassesyte' ),
        'DeletedContributions'      => array( 'Gleschti_Byytreeg' ),
-       'Disambiguations'           => array( 'Begriffschlärigsverwyys' ),
        'DoubleRedirects'           => array( 'Doppleti_Wyterlaitige' ),
        'EditWatchlist'             => array( 'Bearbeitigslischt_bearbeite' ),
        'Emailuser'                 => array( 'E-Mail' ),
+       'ExpandTemplates'           => array( 'Vorlage_expandiere' ),
        'Export'                    => array( 'Exportiere' ),
        'Fewestrevisions'           => array( 'Syte_wo_am_wenigschte_bearbeitet_sin' ),
        'FileDuplicateSearch'       => array( 'Datei-Duplikat-Suech' ),
@@ -93,6 +92,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Gschitzti_Syte' ),
        'Protectedtitles'           => array( 'Gsperrti_Titel' ),
        'Randompage'                => array( 'Zuefelligi_Syte' ),
+       'RandomInCategory'          => array( 'Zuefelligi_Kategori' ),
        'Randomredirect'            => array( 'Zuefelligi_Wyterleitig' ),
        'Recentchanges'             => array( 'Letschti_Änderige' ),
        'Recentchangeslinked'       => array( 'Änderige_an_verlinkte_Syte' ),
@@ -410,8 +410,8 @@ Di maximal Wartezyt fir e Lock isch umme',
 'youhavenewmessages' => 'Du hesch $1 ($2).',
 'youhavenewmessagesfromusers' => 'Du hesch $1 vu {{PLURAL:$3|eme andere Benutzer|$3 Benutzer}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du hesch $1 vu vil Benutzer ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|e neji Nochricht|neji Nochrichte}}',
-'newmessagesdifflinkplural' => 'letschti {{PLURAL:$1|Änderig|Änderige}}',
+'newmessageslinkplural' => '{{PLURAL:$1|e neji Nochricht|999=neji Nochrichte}}',
+'newmessagesdifflinkplural' => 'letschti {{PLURAL:$1|Änderig|999=Änderige}}',
 'youhavenewmessagesmulti' => 'Si hen neui Nochrichte: $1',
 'editsection' => 'ändere',
 'editold' => 'Ändre',
@@ -535,7 +535,8 @@ Dr Administrator, wu dr Schrybzuegriff gsperrt het, het dää Grund aagee: „$3
 'invalidtitle-knownnamespace' => 'Nit-gültige Titel mit Namensruum „$2“ un Text „$3“',
 'invalidtitle-unknownnamespace' => 'Ungültige Titel mit unbekannte Namensruumnummer $1 un Text „$2“',
 'exception-nologin' => 'Nit aagmäldet',
-'exception-nologin-text' => 'Fir die Syte oder Aktion muesch aagmäldet syy.',
+'exception-nologin-text' => 'Du muesch Di [[Special:Userlogin|aamälde]] go die Syte oder Aktion ufruefe chenne.',
+'exception-nologin-text-manual' => 'Du muesch Di $1 go die Syte oder Aktion ufruefe chenne.',
 
 # Virus scanner
 'virus-badscanner' => "Fählerhafti Konfiguration: Virescanner, wu nid bekannt isch: ''$1''",
@@ -736,7 +737,7 @@ Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gs
 Temporär Passwort: $2',
 'passwordreset-emailsent' => 'E Passwort-Zrucksetzig isch per E-Mail verschickt wore.',
 'passwordreset-emailsent-capture' => 'E Passwort-Zrucksetzigs-Mail isch vergschickt worde, un isch unte aazeigt.',
-'passwordreset-emailerror-capture' => 'Die Erinnerigsmail, wo unte aazeigt isch, isch generiert worde, aber de Versand aa de Benutzer isch gschyyteret: $1',
+'passwordreset-emailerror-capture' => 'Die unten angezeigte Passwortzrucksetzigsmail, wu unten aazeigt wird, isch generiert wore, aber dr Versand an {{GENDER:$2|dr Benutzer|d Benutzeri}} het nit funktioniert: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'E-Mail-Adräss ändre',
@@ -746,9 +747,23 @@ Temporär Passwort: $2',
 'changeemail-oldemail' => 'Aktuelli E-Mail-Adräss',
 'changeemail-newemail' => 'Nöii E-Mail-Adräss:',
 'changeemail-none' => '(nyt)',
+'changeemail-password' => 'Dy {{SITENAME}}-Passwort:',
 'changeemail-submit' => 'E-Mail Adräss ändre',
 'changeemail-cancel' => 'Abbräche',
 
+# Special:ResetTokens
+'resettokens' => 'Token zrucksetze',
+'resettokens-text' => 'Du chasch Token zrucksetze, wu Dir dr Zuegriff uf bstimmti privati Date megli mache, wu mit Dym Benutzerkonto do verchnipft sin.
+
+Des sottsch nume mache, wänn Du d Token us Versää mit eberem teilt hesch oder Dy Konto gfehrdet isch.',
+'resettokens-no-tokens' => 'S git kei Token zum Zrucksetze.',
+'resettokens-legend' => 'Token zrucksetze',
+'resettokens-tokens' => 'Token:',
+'resettokens-token-label' => '$1 (aktuälle Wärt: $2)',
+'resettokens-watchlist-token' => 'Token fir dr Webfeed (Atom/RSS) vu dr [[Special:Watchlist|Änderigen an Syten uf Dyre Beobachtuislischt]]',
+'resettokens-done' => 'Token zruckgsetzt.',
+'resettokens-resetbutton' => 'Uusgwehlti Token zrucksetze',
+
 # Edit page toolbar
 'bold_sample' => 'fetti Schrift',
 'bold_tip' => 'Fetti Schrift',
@@ -906,7 +921,7 @@ Hiemit gisch du zue, das du dä Tekscht '''sälber gschribe''' hesch, das der Te
 Si verspräche uns usserdäm, dass Si des alles selber gschribe oder vo nere Quälle kopiert hen, wo Public Domain odr sunscht frei isch (lueg $1 für Details).
 '''SETZE SI DO OHNI ERLAUBNIS KEINI URHEBERRÄCHTLICH GSCHÜTZTI WÄRK INE!'''",
 'longpageerror' => "'''Fähler: Dä Täxt, wu Du spychere wit, isch {{PLURAL:$1|ei Kilobyte|$1 Kilobyte}} groß. Des isch greßer wie s erlaubt Maximum vu {{PLURAL:$2|eim Kilobyte|$2 Kilobyte}}.''' S Spychere isch nit megli.",
-'readonlywarning' => "'''Achtung: Die Datebank isch fir Wartigsarbete gesperrt. Wäge däm chenne Dyyni Änderige im Momänt nid gspicheret wäre.
+'readonlywarning' => "'''Achtig: D Datebank isch fir Wartigsarbete gesperrt. Wäge däm chenne Dyyni Änderige im Momänt nit gspycheret wäre.
 Sichere de Täxt bitte lokal uf Dyynem Computer un versuech speter nomol, d Änderige z ibertrage.'''
 
 Grund fir d Sperri: $1",
@@ -944,13 +959,14 @@ Zue Dyyre Information sihsch do s Lesch-Logbuech vo däre Syte:",
 Si isch schyns glescht wore.',
 'edit-conflict' => 'Bearbeitigskonflikt.',
 'edit-no-change' => 'Dyyni Bearbeitig isch ignoriert wore, wel kei Änderig am Täxt gmacht woren isch.',
+'postedit-confirmation' => 'Dyy Bearbeitig isch gspycheret wore.',
 'edit-already-exists' => 'Di nej Syte het nid chenne aaglait wäre, wel s si scho git.',
 'defaultmessagetext' => 'Standardtext',
 'content-failed-to-parse' => 'Parse vum Inhalt $2 fir Modell $1 fählgschlaa: $3',
 'invalid-content-data' => 'Uugiltigi Inhaltsdate',
 'content-not-allowed-here' => 'Dr Inhalt „$1“ isch uf dr Syte [[$2]] nit erlaubt',
 'editwarning-warning' => 'Wänn Du die Syte verlosch, cha s syy, ass Du alli Bearbeitige verliersch, wu Du do dra gmacht hesch.
-Wänn Du aagmäldet bisch, chasch s Anzeige vu däre Warnig im „{{int:prefs-editing}}“-Beryych vu Dyyne Yystelligen abstelle.',
+Wänn Du aagmäldet bisch, chasch s Anzeige vu däre Warnig im „Bearbeite“-Beryych vu Dyyne Yystelligen abstelle.',
 
 # Content models
 'content-model-wikitext' => 'Wikitext',
@@ -983,6 +999,7 @@ S {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.',
 'undo-failure' => 'D Änderig het nid chenne ruckgängig gmacht wäre, wel dää Abschnitt mittlerwyli gänderet woren isch.',
 'undo-norev' => 'D Bearbeitig het nid chenne ruckgängig gmacht wäre, wel si nid vorhande oder glescht isch.',
 'undo-summary' => 'D Änderig $1 vu [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) isch ruckgängig gmacht wore.',
+'undo-summary-username-hidden' => 'Änderig $1 vun eme versteckte Benutzer ruckgängig gmacht.',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Benutzerkonto cha nid aagleit wäre.',
index 5ed264d..a8dfd2d 100644 (file)
@@ -63,9 +63,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ખાતું_ખોલો' ),
        'Deadendpages'              => array( 'મૃતાંતપાનાં' ),
        'DeletedContributions'      => array( 'હટાવેલાં_યોગદાન' ),
-       'Disambiguations'           => array( 'અસંદિગ્ધતા' ),
        'DoubleRedirects'           => array( 'દ્વિ_પુનઃમાર્ગદર્શન' ),
        'Emailuser'                 => array( 'સભ્યનેઇમેલ' ),
+       'ExpandTemplates'           => array( 'શ્રેણીવિસ્તારો' ),
        'Export'                    => array( 'નિકાસ' ),
        'Fewestrevisions'           => array( 'લઘુત્તમ_પુનરાવર્તન' ),
        'FileDuplicateSearch'       => array( 'ફાઇલપ્રતિકૃતિ_શોધ' ),
@@ -432,8 +432,8 @@ $1',
 'youhavenewmessages' => 'તમારા માટે $1 ($2).',
 'youhavenewmessagesfromusers' => 'આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).',
 'youhavenewmessagesmanyusers' => 'આપને માટે ઘણાં સભ્યો તરફથી $1 છે ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|નવો સંદેશો|નવા સંદેશા}}',
-'newmessagesdifflinkplural' => 'છેલ્લા {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
+'newmessageslinkplural' => '{{PLURAL:$1|નવà«\8b àª¸àª\82દà«\87શà«\8b«¯à«¯à«¯=નવા àª¸àª\82દà«\87શા}}',
+'newmessagesdifflinkplural' => 'àª\9bà«\87લà«\8dલા {{PLURAL:$1|ફà«\87રફાર|૯૯૯=ફà«\87રફારà«\8b}}',
 'youhavenewmessagesmulti' => 'તમારા માટે $1 ઉપર નવા સંદેશાઓ છે',
 'editsection' => 'ફેરફાર કરો',
 'editold' => 'ફેરફાર કરો',
@@ -2279,13 +2279,14 @@ $PAGEINTRO $NEWPAGE
 ઇ-મેલ: $PAGEEDITOR_EMAIL
 વિકિ: $PAGEEDITOR_WIKI
 
-જ્યાં સુધી તમે આ પાનાની મુલાકાત નહી લો ત્યાં સુધી તેમાં ભવિષ્યમાં થનાર કોઇ પણ ફેરફારની સૂચના તમને મળશે નહિ.
+àª\9cà«\8dયાàª\82 àª¸à«\81ધà«\80 àª¤àª®à«\87 àª²à«\8bàª\97àª\88ન àª¥àª\88 àª\86 àªªàª¾àª¨àª¾àª¨à«\80 àª®à«\81લાàª\95ાત àª¨àª¹à«\80 àª²à«\8b àª¤à«\8dયાàª\82 àª¸à«\81ધà«\80 àª¤à«\87માàª\82 àª­àªµàª¿àª·à«\8dયમાàª\82 àª¥àª¨àª¾àª° àª\95à«\8bàª\87 àªªàª£ àª«à«\87રફારનà«\80 àª¸à«\82àª\9aના àª¤àª®àª¨à«\87 àª®àª³àª¶à«\87 àª¨àª¹àª¿.
 તમે તમારી ધ્યાન સૂચિમાં તમે જોયેલા પાના સંબંધી સૂચનાને લાગતા વિલપોમાં ફેરફાર કરી શકો છો.
 
+
 આપની વિશ્વાસુ {{SITENAME}} સૂચના પ્રણાલી   
  
 --
-e-mail notification settings બદલવા માટે મુલાકાત લો
+email notification settings બદલવા માટે મુલાકાત લો
 {{canonicalurl:{{#special:Preferences}}}}
 
 તમારી ધ્યાનસૂચિના  વિક્લ્પ ગોઠવણ માટે મુલાકાત લો
@@ -3666,7 +3667,7 @@ $5
 'autosumm-blank' => 'પાનું ખાલી કરી દેવાયું',
 'autosumm-replace' => 'માહિતીને "$1" થી બદલી',
 'autoredircomment' => '[[$1]] પર દિશાનિર્દેશિત',
-'autosumm-new' => '$1થà«\80 àª¶àª°à«\82 àª¥àª¤à«\81àª\82 àª¨àªµà«\81àª\82 àªªàª¾àª¨à«\81àª\82 àª¬àª¾àª¨વ્યું',
+'autosumm-new' => '$1થà«\80 àª¶àª°à«\82 àª¥àª¤à«\81àª\82 àª¨àªµà«\81àª\82 àªªàª¾àª¨à«\81àª\82 àª¬àª¨àª¾વ્યું',
 
 # Live preview
 'livepreview-loading' => 'લવાઇ રહ્યું છે...',
@@ -3875,7 +3876,7 @@ $5
 'revdelete-uname-unhid' => 'વપરાશકર્તા નામ છુપાવેલ નથીં',
 'revdelete-restricted' => 'પ્રબઁધકોના ફેરફાર કરવા પર પ્રતિબંધ મુકાયો',
 'revdelete-unrestricted' => 'પ્રબંધકોના ફેરફાર કરવા પર પ્રતિબંધ હટાવાયો.',
-'logentry-move-move' => '$1એ {{GENDER:$2|ખસેડાયું }} પાના $3ને $4 પર ખસેડ્યું',
+'logentry-move-move' => '$1એ $3ને $4 પર {{GENDER:$2|ખસેડ્યું}}',
 'logentry-move-move-noredirect' => '$1 એ દિશાનિર્દેશન છોડ્યા વગર પાના $3ને $4 પર {{GENDER:$2|વાળ્યું}}',
 'logentry-move-move_redir' => '$1એ દિશાનિર્દેશન કરીને પાના $3ને $4 પર {{GENDER:$2|ખસેડ્યું}}',
 'logentry-move-move_redir-noredirect' => '$1એ દિશાનિર્દેશન કરીને પાના $3ને $4 પર {{GENDER:$2|વાળ્યું}} પણ પાછળ દિશાનિર્દેશન છોડ્યું નહી',
index a2411b4..34097c7 100644 (file)
@@ -16,6 +16,8 @@
  * @author Xiaomingyan
  */
 
+$fallback = 'zh-hant';
+
 $messages = array(
 # User preference toggles
 'tog-underline' => '鏈接加底線:',
index af26210..685f641 100644 (file)
@@ -66,12 +66,12 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'משתמשים_פעילים' ),
        'Allmessages'               => array( 'הודעות_המערכת' ),
+       'AllMyUploads'              => array( 'כל_ההעלאות_שלי' ),
        'Allpages'                  => array( 'כל_הדפים' ),
        'Ancientpages'              => array( 'דפים_מוזנחים' ),
        'Badtitle'                  => array( 'כותרת_שגויה' ),
        'Blankpage'                 => array( 'דף_ריק' ),
        'Block'                     => array( 'חסימה', 'חסימת_כתובת', 'חסימת_משתמש' ),
-       'Blockme'                   => array( 'חסום_אותי' ),
        'Booksources'               => array( 'משאבי_ספרות', 'משאבי_ספרות_חיצוניים' ),
        'BrokenRedirects'           => array( 'הפניות_לא_תקינות', 'הפניות_שבורות' ),
        'Categories'                => array( 'קטגוריות', 'רשימת_קטגוריות' ),
@@ -83,10 +83,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'הרשמה_לחשבון' ),
        'Deadendpages'              => array( 'דפים_ללא_קישורים' ),
        'DeletedContributions'      => array( 'תרומות_מחוקות' ),
-       'Disambiguations'           => array( 'פירושונים', 'דפי_פירושונים' ),
        'DoubleRedirects'           => array( 'הפניות_כפולות' ),
        'EditWatchlist'             => array( 'עריכת_רשימת_המעקב' ),
        'Emailuser'                 => array( 'שליחת_דואר_למשתמש' ),
+       'ExpandTemplates'           => array( 'פריסת_תבניות' ),
        'Export'                    => array( 'ייצוא', 'ייצוא_דפים' ),
        'Fewestrevisions'           => array( 'הגרסאות_המעטות_ביותר', 'הדפים_בעלי_מספר_העריכות_הנמוך_ביותר' ),
        'FileDuplicateSearch'       => array( 'חיפוש_קבצים_כפולים' ),
@@ -131,10 +131,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'דפים_מוגנים' ),
        'Protectedtitles'           => array( 'כותרות_מוגנות' ),
        'Randompage'                => array( 'אקראי', 'דף_אקראי' ),
+       'RandomInCategory'          => array( 'דף_אקראי_בקטגוריה' ),
        'Randomredirect'            => array( 'הפניה_אקראית' ),
        'Recentchanges'             => array( 'שינויים_אחרונים' ),
        'Recentchangeslinked'       => array( 'שינויים_בדפים_המקושרים' ),
        'Redirect'                  => array( 'הפניה' ),
+       'ResetTokens'               => array( 'איפוס_אסימונים' ),
        'Revisiondelete'            => array( 'מחיקת_ושחזור_גרסאות' ),
        'Search'                    => array( 'חיפוש' ),
        'Shortpages'                => array( 'דפים_קצרים' ),
@@ -154,7 +156,7 @@ $specialPageAliases = array(
        'Unwatchedpages'            => array( 'דפים_שאינם_במעקב' ),
        'Upload'                    => array( 'העלאה', 'העלאת_קובץ_לשרת' ),
        'UploadStash'               => array( 'מאגר_העלאות' ),
-       'Userlogin'                 => array( 'כניסה_לחשבון', 'כניסה', 'כניסה_/_הרשמה_לחשבון' ),
+       'Userlogin'                 => array( 'כניסה_לחשבון', 'כניסה' ),
        'Userlogout'                => array( 'יציאה_מהחשבון', 'יציאה' ),
        'Userrights'                => array( 'ניהול_הרשאות_משתמש', 'הפיכת_משתמש_למפעיל_מערכת', 'הענקת_או_ביטול_הרשאת_בוט' ),
        'Version'                   => array( 'גרסה', 'גרסת_התוכנה' ),
@@ -2333,7 +2335,7 @@ $1',
 'notargettitle' => 'אין דף מטרה',
 'notargettext' => 'לא ציינתם דף מטרה או משתמש לגביו תבוצע פעולה זו.',
 'nopagetitle' => 'אין דף מטרה כזה',
-'nopagetext' => 'דף המטרה שציינתם אינו קיים.',
+'nopagetext' => 'דף המטרה שציינת אינו קיים.',
 'pager-newer-n' => '{{PLURAL:$1|הבאה|$1 הבאות}}',
 'pager-older-n' => '{{PLURAL:$1|הקודמת|$1 הקודמות}}',
 'suppress' => 'הסתרה',
@@ -2970,7 +2972,7 @@ $1',
 במקרים אלו, תצטרכו להעביר או לשלב את הדפים באופן ידני, אם תרצו.',
 'movearticle' => 'העברת דף:',
 'moveuserpage-warning' => "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
-'movenologin' => 'לא נכנסתם לחשבון',
+'movenologin' => 'לא נכנסת לחשבון',
 'movenologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.',
 'movenotallowed' => 'אינכם מורשים להעביר דפים.',
 'movenotallowedfile' => 'אינכם מורשים להעביר קבצים.',
index 479df0b..f2273ba 100644 (file)
@@ -79,10 +79,9 @@ $specialPageAliases = array(
        'Allmessages'               => array( 'सभी_सन्देश', 'सभी_संदेश' ),
        'Allpages'                  => array( 'सभी_पृष्ठ', 'सभी_पन्ने' ),
        'Ancientpages'              => array( 'पुराने_पृष्ठ', 'पुराने_पन्ने' ),
-       'Badtitle'                  => array( 'à¤\96़राब_शà¥\80रà¥\8dषà¤\95' ),
+       'Badtitle'                  => array( 'खराब_शीर्षक' ),
        'Blankpage'                 => array( 'रिक्त_पृष्ठ', 'खाली_पृष्ठ' ),
        'Block'                     => array( 'अवरोधन', 'आइ_पी_अवरोधन', 'सदस्य_अवरोधन' ),
-       'Blockme'                   => array( 'स्वावरोधन', 'स्व_अवरोधन', 'मुझे_रोकिये' ),
        'Booksources'               => array( 'पुस्तक_स्रोत', 'किताब_स्रोत' ),
        'BrokenRedirects'           => array( 'टूटे_पुनर्निर्देश', 'टूटे_अनुप्रेष' ),
        'Categories'                => array( 'श्रेणियाँ' ),
@@ -94,10 +93,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'खाता_बनाएँ', 'खाता_बनायें', 'खाता_खोलें' ),
        'Deadendpages'              => array( 'बन्द_पृष्ठ', 'बन्द_पन्ने' ),
        'DeletedContributions'      => array( 'हटाए_गए_योगदान', 'हटाये_गये_योगदान' ),
-       'Disambiguations'           => array( 'बहुविकल्पी_कड़ियाँ', 'बहुविकल्पित' ),
        'DoubleRedirects'           => array( 'दुगुने_पुनर्निर्देश', 'दुगुने_अनुप्रेष' ),
        'EditWatchlist'             => array( 'ध्यानसूची_सम्पादन', 'ध्यानसूची_संपादन', 'ध्यानसूची_सम्पादन_करें' ),
        'Emailuser'                 => array( 'ईमेल_करें', 'सदस्य_को_ईमेल_करें' ),
+       'ExpandTemplates'           => array( 'साँचे_खोलें', 'साँचे_बढ़ाएँ' ),
        'Export'                    => array( 'निर्यात' ),
        'Fewestrevisions'           => array( 'न्यूनतम_अवतरण', 'कम_सम्पादित_पृष्ठ' ),
        'FileDuplicateSearch'       => array( 'फ़ाइल_प्रति_खोज', 'फाइल_प्रति_खोज', 'संचिका_प्रति_खोज' ),
index fb21a70..3d68980 100644 (file)
@@ -69,7 +69,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Stare_stranice' ),
        'Blankpage'                 => array( 'Prazna_stranica' ),
        'Block'                     => array( 'Blokiraj' ),
-       'Blockme'                   => array( 'Blokiraj_me' ),
        'Booksources'               => array( 'Traži_ISBN' ),
        'BrokenRedirects'           => array( 'Kriva_preusmjeravanja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -79,7 +78,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Stvori_račun' ),
        'Deadendpages'              => array( 'Slijepe_ulice' ),
        'DeletedContributions'      => array( 'Obrisani_doprinosi' ),
-       'Disambiguations'           => array( 'Razdvojbe' ),
        'DoubleRedirects'           => array( 'Dvostruka_preusmjeravanja' ),
        'Emailuser'                 => array( 'Elektronička_pošta', 'E-mail' ),
        'Export'                    => array( 'Izvezi' ),
index 9f38082..a72e2a5 100644 (file)
@@ -70,7 +70,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Najstarše_strony' ),
        'Blankpage'                 => array( 'Prózdna_strona' ),
        'Block'                     => array( 'Blokować' ),
-       'Blockme'                   => array( 'Blokowanje_proksijow' ),
        'Booksources'               => array( 'Pytanje_po_ISBN' ),
        'BrokenRedirects'           => array( 'Skóncowane_daleposrědkowanja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -80,7 +79,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Konto_wutworić' ),
        'Deadendpages'              => array( 'Strony_bjez_wotkazow' ),
        'DeletedContributions'      => array( 'Zničene_přinoški' ),
-       'Disambiguations'           => array( 'Rozjasnjenja_wjazmyslnosće' ),
        'DoubleRedirects'           => array( 'Dwójne_daleposrědkowanja' ),
        'Emailuser'                 => array( 'E-Mejl' ),
        'Export'                    => array( 'Eksport' ),
index 80f75e2..2328f58 100644 (file)
@@ -48,7 +48,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'MovèTit' ),
        'Blankpage'                 => array( 'PajVid' ),
        'Block'                     => array( 'Bloke', 'BlokeIP', 'BlokeItilizatè' ),
-       'Blockme'                   => array( 'BlokeM' ),
        'Booksources'               => array( 'SousLiv' ),
        'BrokenRedirects'           => array( 'RedireksyonKase' ),
        'Categories'                => array( 'Kategori' ),
@@ -59,9 +58,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'KreyeKont' ),
        'Deadendpages'              => array( 'PajEnpas' ),
        'DeletedContributions'      => array( 'SiprimeKontribisyon' ),
-       'Disambiguations'           => array( 'Tokay' ),
        'DoubleRedirects'           => array( 'RedireksyonDoub' ),
        'Emailuser'                 => array( 'ImèlItilizatè' ),
+       'ExpandTemplates'           => array( 'EtannModèl' ),
        'Export'                    => array( 'Ekspòte' ),
        'Fewestrevisions'           => array( 'MwensRevizyon' ),
        'FileDuplicateSearch'       => array( 'ChacheFichyeDoub' ),
@@ -103,6 +102,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PajPwoteje' ),
        'Protectedtitles'           => array( 'TitPwoteje' ),
        'Randompage'                => array( 'Oaza', 'PajOaza' ),
+       'RandomInCategory'          => array( 'OazaNanKategori' ),
        'Randomredirect'            => array( 'RedireksyonOaza' ),
        'Recentchanges'             => array( 'ChanjmanResan' ),
        'Recentchangeslinked'       => array( 'LyenChanjmanResan', 'ChanjmanAk' ),
index 891fcb8..1550e04 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Hibás_címek' ),
        'Blankpage'                 => array( 'Üres_lap' ),
        'Block'                     => array( 'Blokkolás' ),
-       'Blockme'                   => array( 'Blokkolj' ),
        'Booksources'               => array( 'Könyvforrások' ),
        'BrokenRedirects'           => array( 'Nem_létező_lapra_mutató_átirányítások', 'Hibás_átirányítások' ),
        'Categories'                => array( 'Kategóriák' ),
@@ -92,10 +91,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Szerkesztői_fiók_létrehozása', 'Felhasználói_fiók_létrehozása' ),
        'Deadendpages'              => array( 'Zsákutcalapok' ),
        'DeletedContributions'      => array( 'Törölt_szerkesztések' ),
-       'Disambiguations'           => array( 'Egyértelműsítő_lapok' ),
        'DoubleRedirects'           => array( 'Kettős_átirányítások', 'Dupla_átirányítások' ),
        'EditWatchlist'             => array( 'Figyelőlista_szerkesztése' ),
        'Emailuser'                 => array( 'E-mail_küldése', 'E-mail_küldése_ezen_szerkesztőnek' ),
+       'ExpandTemplates'           => array( 'Sablonok_kibontása' ),
        'Export'                    => array( 'Lapok_exportálása' ),
        'Fewestrevisions'           => array( 'Legkevesebbet_szerkesztett_lapok' ),
        'FileDuplicateSearch'       => array( 'Duplikátumok_keresése' ),
index 5db4fcd..47f7404 100644 (file)
@@ -206,14 +206,12 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Բոլորէջերը' ),
        'Ancientpages'              => array( 'Ամենահինէջերը' ),
        'Block'                     => array( 'Արգելափակել այփին' ),
-       'Blockme'                   => array( 'Արգելափակել' ),
        'Booksources'               => array( 'Գրքայինաղբյուրները' ),
        'BrokenRedirects'           => array( 'Կոտրվածվերահղումները' ),
        'Categories'                => array( 'Կատեգորիաները' ),
        'ChangePassword'            => array( 'Նորգաղտնաբառ' ),
        'Contributions'             => array( 'Ներդրումները' ),
        'Deadendpages'              => array( 'Հղումչպարունակողէջերը' ),
-       'Disambiguations'           => array( 'Երկիմաստէջերը' ),
        'DoubleRedirects'           => array( 'Կրկնակիվերահղումները' ),
        'Emailuser'                 => array( 'Գրելնամակ' ),
        'Export'                    => array( 'Արտահանելէջերը' ),
index 998f87e..4549604 100644 (file)
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Titulo_invalide' ),
        'Blankpage'                 => array( 'Pagina_vacue' ),
        'Block'                     => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
-       'Blockme'                   => array( 'Blocar_me' ),
        'Booksources'               => array( 'Fontes_de_libros' ),
        'BrokenRedirects'           => array( 'Redirectiones_rupte' ),
        'Categories'                => array( 'Categorias' ),
@@ -65,10 +64,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_conto' ),
        'Deadendpages'              => array( 'Paginas_sin_exito' ),
        'DeletedContributions'      => array( 'Contributiones_delite' ),
-       'Disambiguations'           => array( 'Disambiguationes' ),
        'DoubleRedirects'           => array( 'Redirectiones_duple' ),
        'EditWatchlist'             => array( 'Modificar_observatorio' ),
        'Emailuser'                 => array( 'Inviar_e-mail_a_un_usator' ),
+       'ExpandTemplates'           => array( 'Expander_patronos' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'Le_minus_versiones' ),
        'FileDuplicateSearch'       => array( 'Recerca_de_files_duplice' ),
@@ -110,6 +109,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Paginas_protegite' ),
        'Protectedtitles'           => array( 'Titulos_protegite' ),
        'Randompage'                => array( 'Aleatori', 'Pagina_aleatori' ),
+       'RandomInCategory'          => array( 'Aleatori_in_categoria' ),
        'Randomredirect'            => array( 'Redirection_aleatori' ),
        'Recentchanges'             => array( 'Modificationes_recente' ),
        'Recentchangeslinked'       => array( 'Modificationes_recente_ligate', 'Modificationes_connexe' ),
index a691a9c..d2afb2a 100644 (file)
@@ -135,7 +135,7 @@ $magicWords = array(
        'subjectpagename'           => array( '1', 'NAMAHALAMANUTAMA', 'NAMAHALAMANARTIKEL', 'NAMMANTAMA', 'NAMMANTIKEL', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
        'subjectpagenamee'          => array( '1', 'NAMAHALAMANUTAMAE', 'NAMAHALAMANARTIKELE', 'NAMMANTAMAE', 'NAMMANTIKELE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        'msg'                       => array( '0', 'PSN:', 'PESAN:', 'MSG:' ),
-       'subst'                     => array( '0', 'GNT:', 'GANTI:', 'SUBST:' ),
+       'subst'                     => array( '0', 'GNT:', 'GANTI:', 'TUKAR:', 'SUBST:' ),
        'msgnw'                     => array( '0', 'TPL:', 'MSGNW:' ),
        'img_thumbnail'             => array( '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'jmpl=$1', 'jempol=$1', 'mini=$1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ),
@@ -145,8 +145,9 @@ $magicWords = array(
        'img_center'                => array( '1', 'pus', 'pusat', 'center', 'centre' ),
        'img_framed'                => array( '1', 'bing', 'bingkai', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'nirbing', 'tanpabingkai', 'frameless' ),
-       'img_page'                  => array( '1', 'hal=$1', 'halaman=$1', 'hal $1', 'halaman $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'lurus', 'lurus=$1', 'lurus $1', 'tegak', 'tegak=$1', 'tegak $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_lang'                  => array( '1', 'bhs=$1', 'lang=$1' ),
+       'img_page'                  => array( '1', 'hal=$1', 'halaman=$1', 'hal_$1', 'halaman_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'lurus', 'lurus=$1', 'lurus_$1', 'tegak', 'tegak=$1', 'tegak_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'tepi', 'batas', 'border' ),
        'img_baseline'              => array( '1', 'gada', 'garis_dasar', 'baseline' ),
        'img_sub'                   => array( '1', 'upa', 'sub' ),
@@ -164,8 +165,8 @@ $magicWords = array(
        'server'                    => array( '0', 'PELADEN', 'SERVER' ),
        'servername'                => array( '0', 'NAMAPELADEN', 'NAMASERVER', 'NAMPEL', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'LOKASISKRIP', 'SCRIPTPATH' ),
-       'grammar'                   => array( '0', 'TATABAHASA', 'TASA', 'GRAMMAR:' ),
-       'gender'                    => array( '0', 'JANTINA', 'GENDER:' ),
+       'grammar'                   => array( '0', 'TATABAHASA:', 'TASA:', 'GRAMMAR:' ),
+       'gender'                    => array( '0', 'JANTINA:', 'GENDER:' ),
        'notitleconvert'            => array( '0', '__TANPAKONVERSIJUDUL__', '__NIRKODUL__', '__NOTITLECONVERT__', '__NOTC__' ),
        'nocontentconvert'          => array( '0', '__TANPAKONVERSIISI__', '__NIRKOSI__', '__NOCONTENTCONVERT__', '__NOCC__' ),
        'currentweek'               => array( '1', 'MINGGUKINI', 'MIKIN', 'CURRENTWEEK' ),
@@ -218,6 +219,9 @@ $magicWords = array(
        'staticredirect'            => array( '1', '__PENGALIHANSTATIK__', '__PENGALIHANSTATIS__', '__PETIK__', '__PETIS__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'TINGKATPERLINDUNGAN', 'TIPER', 'PROTECTIONLEVEL' ),
        'formatdate'                => array( '0', 'formattanggal', 'formatdate', 'dateformat' ),
+       'pagesincategory_all'       => array( '0', 'semua', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'halaman', 'pages' ),
+       'pagesincategory_files'     => array( '0', 'berkas', 'files' ),
 );
 
 $specialPageAliases = array(
@@ -228,7 +232,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Judul_yang_buruk' ),
        'Blankpage'                 => array( 'Halaman_kosong', 'HalamanKosong' ),
        'Block'                     => array( 'Blokir_pengguna', 'BlokirPengguna' ),
-       'Blockme'                   => array( 'Blokir_saya', 'BlokirSaya' ),
        'Booksources'               => array( 'Sumber_buku', 'SumberBuku' ),
        'BrokenRedirects'           => array( 'Pengalihan_rusak', 'PengalihanRusak' ),
        'Categories'                => array( 'Daftar_kategori', 'DaftarKategori', 'Kategori' ),
@@ -240,10 +243,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Buat_akun', 'BuatAkun' ),
        'Deadendpages'              => array( 'Halaman_buntu', 'HalamanBuntu' ),
        'DeletedContributions'      => array( 'Kontribusi_yang_dihapus', 'KontribusiDihapus' ),
-       'Disambiguations'           => array( 'Disambiguasi' ),
        'DoubleRedirects'           => array( 'Pengalihan_ganda', 'PengalihanGanda' ),
        'EditWatchlist'             => array( 'Sunting_daftar_pantauan' ),
        'Emailuser'                 => array( 'Surel_pengguna', 'SurelPengguna' ),
+       'ExpandTemplates'           => array( 'Kembangkan_templat', 'KembangkanTemplat' ),
        'Export'                    => array( 'Ekspor_halaman', 'Ekspor' ),
        'Fewestrevisions'           => array( 'Perubahan_tersedikit', 'PerubahanTersedikit' ),
        'FileDuplicateSearch'       => array( 'Pencarian_berkas_duplikat', 'PencarianBerkasDuplikat' ),
@@ -286,6 +289,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Halaman_yang_dilindungi', 'HalamanDilindungi' ),
        'Protectedtitles'           => array( 'Judul_yang_dilindungi', 'JudulDilindungi' ),
        'Randompage'                => array( 'Halaman_sembarang', 'HalamanSembarang' ),
+       'RandomInCategory'          => array( 'Sembarang_di_kategori', 'SembarangDiKategori' ),
        'Randomredirect'            => array( 'Pengalihan_sembarang', 'PengalihanSembarang' ),
        'Recentchanges'             => array( 'Perubahan_terbaru', 'PerubahanTerbaru', 'RC', 'PT' ),
        'Recentchangeslinked'       => array( 'Perubahan_terkait', 'PerubahanTerkait' ),
@@ -3316,7 +3320,7 @@ Jika dijalankan, sistem Anda akan berisiko terserang.",
 'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, besar berkas: $3',
 'svg-long-desc-animated' => 'Berkas SVG animasi, biasanya $1 x $2 piksel, ukuran gambar: $3',
 'svg-long-error' => 'Berkas SVG tidak sah: $1',
-'show-big-image' => 'Resolusi penuh',
+'show-big-image' => 'Ukuran asli',
 'show-big-image-preview' => 'Ukuran pratayang ini: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Resolusi|Resolusi}} lain: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
index 2f9dd07..6c3b7ee 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Jmb
  * @author Kaganer
+ * @author Makuba
  * @author Malafaya
  * @author Reedy
  * @author Remember the dot
@@ -43,7 +44,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Págines_antiqui' ),
        'Blankpage'                 => array( 'Págine_in_blanc' ),
        'Block'                     => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
-       'Blockme'                   => array( 'Blocar_in_mi_self' ),
        'Booksources'               => array( 'Fontes_de_libres' ),
        'BrokenRedirects'           => array( 'Redirectionmentes_ínperfect' ),
        'ChangePassword'            => array( 'Change_parol-clave' ),
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_conto' ),
        'Deadendpages'              => array( 'Págines_moderat' ),
        'DeletedContributions'      => array( 'Contributiones_deletet' ),
-       'Disambiguations'           => array( 'Disambiguitones' ),
        'DoubleRedirects'           => array( 'Redirectionmentes_duplic' ),
        'EditWatchlist'             => array( 'Redacter_liste_de_págines_vigilat' ),
        'Emailuser'                 => array( 'Email_de_usator' ),
@@ -139,17 +138,17 @@ $messages = array(
 'tog-hideminor' => 'Ocultar redactiones minori in nov changes',
 'tog-hidepatrolled' => 'Ocultar redactiones vigilat in nov changes',
 'tog-newpageshidepatrolled' => 'Ocultar págines vigilat de liste de nov págines',
-'tog-usenewrc' => 'Usar nov changes augmentat (exige JavaScript)',
+'tog-usenewrc' => 'Ordinar changes in «Recent changes» e li liste de vigila secun págines',
 'tog-numberheadings' => 'Auto-numerar rublicas',
-'tog-showtoolbar' => 'Monstrar barre de utensile de redaction (exige JavaScript)',
-'tog-editondblclick' => 'Redacter págines in clacca duplic (exige JavaScript)',
+'tog-showtoolbar' => 'Monstrar barre de redactional utensiles',
+'tog-editondblclick' => 'Redacter págines per duplic clacca',
 'tog-editsection' => 'Permisser redaction de division usant catenunes [redacter]',
-'tog-editsectiononrightclick' => 'Permisser redaction de division per clacca dextri in titules de division (exige JavaScript)',
+'tog-editsectiononrightclick' => 'Redacter singul sectiones per dextri clacca',
 'tog-showtoc' => 'Monstrar tabelle de contenetes (por págines che plu de 3 divisiones)',
 'tog-rememberpassword' => 'Memorar mi registre in ti computator (por um max de $1 {{PLURAL:$1|die|dies}})',
-'tog-watchcreations' => 'Adjunter págines que yo crear por mi liste de págines vigilat',
-'tog-watchdefault' => 'Adjunter págines que yo redacter por mi liste de págines vigilat',
-'tog-watchmoves' => 'Adjunter págines que yo mover por mi liste de págines vigilat',
+'tog-watchcreations' => 'Automaticmen viligar págines e files, queles yo ha creat.',
+'tog-watchdefault' => 'Automaticmen vigilar págines e files, queles yo ha redactet.',
+'tog-watchmoves' => 'Automaticmen vigilar págines e files, queles yo move.',
 'tog-watchdeletion' => 'Adjunter págines que yo deleter por mi liste de págines vigilat',
 'tog-minordefault' => 'Marcar omni li redactiones minori per contumacie',
 'tog-previewontop' => 'Monstrar prevision ante de buxe de redaction',
@@ -159,9 +158,9 @@ $messages = array(
 'tog-enotifusertalkpages' => 'Inviar me e-mail quande mi págine de discussion es changeat',
 'tog-enotifrevealaddr' => 'Revelar mi adresse de e-mail in notificationes de e-mail',
 'tog-shownumberswatching' => 'Monstrar li númere de usatores vigilant',
-'tog-oldsig' => 'Prevision de signature in existentie:',
+'tog-oldsig' => 'Existent subscrition:',
 'tog-fancysig' => 'Tractar signature quam textu wiki (sin un catenun auto-crate)',
-'tog-uselivepreview' => 'Usar prevision in vivi (exige JavaScript) (experimental)',
+'tog-uselivepreview' => 'Strax monstrar prevision (experimental)',
 'tog-forceeditsummary' => 'Suggester me quande intrar un redaction che summarium in blanc',
 'tog-watchlisthideown' => 'Ocultar mi redactiones del liste de págines vigilat',
 'tog-watchlisthidebots' => 'Ocultar redactiones de machine del liste de págines vigilat',
@@ -174,15 +173,23 @@ $messages = array(
 'tog-showhiddencats' => 'Monstrar categories ne visibil',
 'tog-noconvertlink' => 'Desvalidar conversion de titul de catenun',
 'tog-norollbackdiff' => 'Omisser change pos de efectuar un rollback',
+'tog-prefershttps' => 'Sempre usar un secur connection, si tui session es activ.',
 
 'underline-always' => 'Sempre',
 'underline-never' => 'Nequande',
-'underline-default' => 'Criterie de navigator',
+'underline-default' => 'secun li usatori surfacie o li navigator',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Styl del lítteres in li redactional fenestre:',
+'editfont-default' => 'Standard del navigator',
+'editfont-monospace' => 'Lítteres con egal largitá',
+'editfont-sansserif' => 'Lítteres sin serifes',
+'editfont-serif' => 'Lítteres con serifes',
 
 # Dates
 'sunday' => 'soledí',
 'monday' => 'lunedí',
-'tuesday' => 'mardí',
+'tuesday' => 'martedí',
 'wednesday' => 'mercurdí',
 'thursday' => 'jovedí',
 'friday' => 'venerdí',
@@ -198,7 +205,7 @@ $messages = array(
 'february' => 'februar',
 'march' => 'marte',
 'april' => 'april',
-'may_long' => 'may',
+'may_long' => 'mai',
 'june' => 'junio',
 'july' => 'julí',
 'august' => 'august',
@@ -210,9 +217,9 @@ $messages = array(
 'february-gen' => 'februar',
 'march-gen' => 'marte',
 'april-gen' => 'april',
-'may-gen' => 'may',
+'may-gen' => 'mai',
 'june-gen' => 'junio',
-'july-gen' => 'juli',
+'july-gen' => 'julí',
 'august-gen' => 'august',
 'september-gen' => 'septembre',
 'october-gen' => 'octobre',
@@ -222,7 +229,7 @@ $messages = array(
 'feb' => 'feb',
 'mar' => 'mar',
 'apr' => 'apr',
-'may' => 'may',
+'may' => 'mai',
 'jun' => 'jun',
 'jul' => 'jul',
 'aug' => 'aug',
@@ -230,6 +237,18 @@ $messages = array(
 'oct' => 'oct',
 'nov' => 'nov',
 'dec' => 'dec',
+'january-date' => '$1 januar',
+'february-date' => '$1 februar',
+'march-date' => '$1 marte',
+'april-date' => '$1 april',
+'may-date' => '$1 mai',
+'june-date' => '$1 junio',
+'july-date' => '$1 julí',
+'august-date' => '$1 august',
+'september-date' => '$1 septembre',
+'october-date' => '$1 octobre',
+'november-date' => '$1 novembre',
+'december-date' => '$1 decembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categorie|Categories}}',
@@ -237,26 +256,34 @@ $messages = array(
 'subcategories' => 'Subcategories',
 'category-media-header' => 'Multimedia in categorie "$1"',
 'category-empty' => "''Ti categorie currentmen ne contene págines o media.''",
-'hidden-categories' => '{{PLURAL:$1|Categorie ocultat|Categories ocultat}}',
+'hidden-categories' => '{{PLURAL:$1|Celat categorie|Celat categories}}',
+'hidden-category-category' => 'Celat categories',
 'category-subcat-count' => '{{PLURAL:$2|Ti categorie ha solmen li sequent subcategorie.|Ti categorie ha li sequent {{PLURAL:$1|subcategorie|$1 subcategories}}, de un total de $2.}}',
+'category-subcat-count-limited' => 'Ti-ci categorie contene li secuent {{PLURAL:$1|subcategorie|$1 subcategories}}.',
 'category-article-count' => '{{PLURAL:$2|Ti categorie contene solmen li sequent págine.|Li sequent {{PLURAL:$1|págine es|$1 págine es}} in ti categorie, de un total de $2.}}',
+'category-article-count-limited' => 'Li secuent {{PLURAL:$1|págine|$1 pagines}} es contenet in ti-ci categorie:',
 'category-file-count' => '{{PLURAL:$2|Ti categorie contene solmen li sequent file.|Li sequent {{PLURAL:$1|file es|$1 files es}} in ti categorie, de un total de $2.}}',
+'category-file-count-limited' => 'Li secuent {{PLURAL:$1|file|$1 files}} es contenet in ti-ci categorie:',
 'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Indexat págines',
 'noindex-category' => 'Págines ne indexet',
+'broken-file-category' => 'Págines con ruptet file-links.',
 
 'about' => 'Concernent',
 'article' => 'Articul',
-'newwindow' => '(inaugurar in nov planca de fenestre)',
+'newwindow' => '(es apertet in un nov fenestre)',
 'cancel' => 'Anullar',
 'moredotdotdot' => 'Plu...',
-'mypage' => 'Mi págine',
-'mytalk' => 'Mi discussion',
+'morenotlisted' => 'Ti liste ne es complet.',
+'mypage' => 'Págine',
+'mytalk' => 'Conversation',
 'anontalk' => 'Discussion por ti ci IP',
 'navigation' => 'Navigation',
 'and' => '&#32;e',
 
 # Cologne Blue skin
 'qbfind' => 'Constatar',
+'qbbrowse' => 'Travider',
 'qbedit' => 'Redacter',
 'qbpageoptions' => 'Págine de optiones',
 'qbmyoptions' => 'Mi optiones',
@@ -270,16 +297,17 @@ $messages = array(
 'vector-action-protect' => 'Gardar',
 'vector-action-undelete' => 'Restituer',
 'vector-action-unprotect' => 'Desgardar',
-'vector-simplesearch-preference' => 'Premisser suggestiones de sercha argumentat (pelle Vector solmen)',
+'vector-simplesearch-preference' => 'Simplificat serch-liste (solmen Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Redacter',
-'vector-view-history' => 'Vider historie',
+'vector-view-history' => 'Historie de versiones',
 'vector-view-view' => 'Leer',
 'vector-view-viewsource' => 'Vider fonte',
 'actions' => 'Actiones',
 'namespaces' => 'Spacies de nómine',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Navigational menú',
 'errorpagetitle' => 'Errore',
 'returnto' => 'Retornar a $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -289,41 +317,48 @@ $messages = array(
 'go' => 'Ear',
 'searcharticle' => 'Ear',
 'history' => 'Historie',
-'history_short' => 'Historie',
+'history_short' => 'Historie de versiones',
 'updatedmarker' => 'modernisat desde mi ultim visitation',
-'printableversion' => 'Version por impression',
-'permalink' => 'Catenun permanent',
+'printableversion' => 'Version a printar',
+'permalink' => 'Permanent referentie',
+'print' => 'Printar',
+'view' => 'Leer',
 'edit' => 'Redacter',
 'create' => 'Crear',
 'editthispage' => 'Redacter',
+'create-this-page' => 'Crear ti págine',
 'delete' => 'Deleter',
 'deletethispage' => 'Deleter ti págine',
+'undeletethispage' => 'Restaurar ti págine',
 'undelete_short' => 'Restaurar {{PLURAL:$1|1 modification|$1 modificationes}}',
+'viewdeleted_short' => 'Vider {{PLURAL:$1|un deletet version|$1 deletet versiones}}',
 'protect' => 'Gardar',
-'protect_change' => 'Change',
+'protect_change' => 'changer',
 'protectthispage' => 'Gardar ti págine',
 'unprotect' => 'Changear protection',
 'unprotectthispage' => 'Changear protection de ti págine',
 'newpage' => 'Nov págine',
 'talkpage' => 'Parlar in ti págine',
-'talkpagelinktext' => 'Discussion',
+'talkpagelinktext' => 'Conversation',
 'specialpage' => 'Págine special',
-'personaltools' => 'Utensiles personal',
+'personaltools' => 'Mi utensiles',
 'postcomment' => 'Nov division',
 'articlepage' => 'Vider li articul',
 'talk' => 'Discussion',
-'views' => 'Vistas',
-'toolbox' => 'Buxe de utensiles',
+'views' => 'Aspectes',
+'toolbox' => 'Utensiles',
 'userpage' => 'Vider págine del usator',
 'projectpage' => 'Vider págine de projecte',
 'imagepage' => 'Vider li págine de figura',
+'mediawikipage' => 'Vider págine de missagies',
 'templatepage' => 'Vider li págine de avise',
 'viewhelppage' => 'Vider págine de auxilie',
+'categorypage' => 'Vider categorial págine',
 'viewtalkpage' => 'Vider discussion',
 'otherlanguages' => 'Altri lingues',
 'redirectedfrom' => '(Redirectet de $1)',
 'redirectpagesub' => 'Págine de redirecterion',
-'lastmodifiedat' => 'Ti págine esset per ultim témpor redactet in $1, in $2.',
+'lastmodifiedat' => 'Ti-ci págine ha redactet in ultim li $1, clocca $2.',
 'viewcount' => 'Ti págine ha esset accesset {{PLURAL:$1|un vez|$1 vezes}}.',
 'protectedpage' => 'Un protectet págine',
 'jumpto' => 'Saltar a:',
@@ -337,19 +372,19 @@ $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' => 'Concernent {{SITENAME}}',
-'aboutpage' => 'Project:Concernent',
-'copyright' => 'Contenete disponibil sub $1.',
+'aboutpage' => 'Project:Concernent_{{SITENAME}}',
+'copyright' => 'Contenete attiņibil sub $1, si ne altrimen indicat.',
 'copyrightpage' => '{{ns:project}}:Jure editorial',
-'currentevents' => 'Eventus current',
-'currentevents-url' => 'Project:Eventus current',
+'currentevents' => 'Actual evenimentes',
+'currentevents-url' => 'Project:Actual evenimentes',
 'disclaimers' => 'Advertimentes',
-'disclaimerpage' => 'Project:Advertimentes comun',
-'edithelp' => 'Redacter auxilie',
+'disclaimerpage' => 'Project:Advertimentes',
+'edithelp' => 'Redactori auxilie',
 'helppage' => 'Help:Contenete',
-'mainpage' => 'Págine principal',
-'mainpage-description' => 'Págine principal',
-'portal' => 'Págine de comunité',
-'portal-url' => 'Project:Págine de comunité',
+'mainpage' => 'Principal págine',
+'mainpage-description' => 'Principal págine',
+'portal' => 'Portale del communité',
+'portal-url' => 'Project:Portale del communité',
 'privacy' => 'Politica de privatie',
 'privacypage' => 'Project:Politica de privatie',
 
@@ -357,7 +392,7 @@ $1',
 'versionrequiredtext' => 'Version $1 de MediaWiki es exiget por usar ti págine.
 Vider [[Special:Version|págine de version]].',
 
-'retrievedfrom' => 'Recuperat de "$1"',
+'retrievedfrom' => 'Cargat de «$1»',
 'youhavenewmessages' => 'Vu have $1 ($2).',
 'youhavenewmessagesmulti' => 'Vu have nov missages in $1',
 'editsection' => 'redacter',
@@ -365,8 +400,8 @@ Vider [[Special:Version|págine de version]].',
 'viewsourceold' => 'vider fonte',
 'editlink' => 'redacter',
 'viewsourcelink' => 'vider fonte',
-'editsectionhint' => 'Redacter division: $1',
-'toc' => 'Contenetes',
+'editsectionhint' => 'Redacter section: $1',
+'toc' => 'Contenete',
 'showtoc' => 'monstrar',
 'hidetoc' => 'ocultar',
 'thisisdeleted' => 'Vider o restaurar $1?',
@@ -376,9 +411,9 @@ Vider [[Special:Version|págine de version]].',
 'red-link-title' => '$1 (págine ne existe)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Articul',
+'nstab-main' => 'Págine',
 'nstab-user' => 'Págine de usator',
-'nstab-special' => 'Págine special',
+'nstab-special' => 'Special págine',
 'nstab-project' => 'Págine de projecte',
 'nstab-image' => 'Figura',
 'nstab-mediawiki' => 'Missage',
@@ -388,12 +423,13 @@ Vider [[Special:Version|págine de version]].',
 
 # General errors
 'error' => 'Erra',
-'missing-article' => 'Li funde de datas ne constatat li textu de un págine que it posse constatar, nominat "$1" $2.
+'missing-article' => 'Li textu de «$1» $2 ne ha esset trovat in li data-base.
+
+It es possibil, que ti págine ha esset deleet o movet.
 
-Ti es usualmen causat per sequent un diferentie ne modernisat o catenun de historie por un págine que ha esset deletet.
 
-Si ti ne es li casu, vu posse have constatat un bug in li software.
-Pleser raporta it por un [[Special:ListUsers/sysop|administrator]], formant note de li URL.',
+Si to ne es just, tu ha forsan trovat un erra in li programma.
+Ples raporta it a un [[Special:ListUsers/sysop|administrator]], notante li URL.',
 'missingarticle-rev' => '(revision#: $1)',
 'unexpected' => 'Valor ínexpectat: "$1"="$2".',
 'badtitle' => 'Titul mal',
@@ -413,9 +449,9 @@ Li motive dat es "\'\'$2\'\'".',
 'virus-unknownscanner' => 'antivírus desconosset:',
 
 # Login and logout pages
-'logouttext' => "'''Vu ha terminat vor session.'''
-Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse <span class='plainlinks'>[$1 aperter un session denov]</span> quam li sam usator o quam un diferent usator.
-Nota que alcun págines posse continuar esser monstrat quam si vu esset registrat, til que vu vacua li cache de tui navigator.",
+'logouttext' => "'''Tu ha terminat tui session.'''
+
+Nota, que alcun págines posse continualmen esser monstrat quasi tu vell ancor esser inregistrat, til que tu vacua li cache de tui navigator.",
 'yourname' => 'Nómine de usator:',
 'yourpassword' => 'Parol-clave:',
 'yourpasswordagain' => 'Parol-clave denov:',
@@ -427,7 +463,7 @@ Nota que alcun págines posse continuar esser monstrat quam si vu esset registra
 'userlogin' => 'Crear un conto o intrar',
 'userloginnocreate' => 'Intrar',
 'logout' => 'Surtida',
-'userlogout' => 'Surtida',
+'userlogout' => 'Surtir',
 'notloggedin' => 'Vu ne ha intrat',
 'nologin' => 'Ne have un conto? $1.',
 'nologinlink' => 'Crear un conto',
@@ -463,27 +499,27 @@ Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL
 'passwordreset-username' => 'Vor nómine usatori',
 
 # Edit page toolbar
-'bold_sample' => 'Textu in nigri',
-'bold_tip' => 'Textu in nigri',
-'italic_sample' => 'Textu cursivmen',
-'italic_tip' => 'Textu cursivmen',
-'link_sample' => 'Titul de catenun',
-'link_tip' => 'Catenun intern',
-'extlink_sample' => 'http://www.example.com titul de catenun',
-'extlink_tip' => 'Catenun extern (memorar prefixe http://)',
-'headline_sample' => 'Division de nivelle 2',
-'headline_tip' => 'Division de nivelle 2',
-'nowiki_sample' => 'Ignorar formate wiki',
+'bold_sample' => 'Nigri textu',
+'bold_tip' => 'Nigri textu',
+'italic_sample' => 'Cursiv textu',
+'italic_tip' => 'Cursiv textu',
+'link_sample' => 'Nómine de referentie',
+'link_tip' => 'Intern referentie',
+'extlink_sample' => 'http://www.example.com nómine del referentie',
+'extlink_tip' => 'Extern referentie (ne oblivia prefixar http://)',
+'headline_sample' => 'Titul de nivell 2',
+'headline_tip' => 'Titul de nivell 2',
+'nowiki_sample' => 'Intrar ínformatat textu ci.',
 'nowiki_tip' => 'Ignorar formate wiki',
-'image_tip' => 'File fixat',
-'media_tip' => 'Catenun in file de multimedia',
-'sig_tip' => 'Tui signature che hor e date',
-'hr_tip' => 'Linea horizontal (use sin excess)',
+'image_tip' => 'Fixat file',
+'media_tip' => 'Referentie a un multimedial file.',
+'sig_tip' => 'Tui subscrit con hor e date',
+'hr_tip' => 'Horizontal linea (ples usar sin excess)',
 
 # Edit pages
-'summary' => 'Summarium:',
+'summary' => 'Resummation:',
 'subject' => 'Tema/Division:',
-'minoredit' => 'Ti es un redaction minori',
+'minoredit' => 'To es un bagatellic change',
 'watchthis' => 'Vigilar ti págine',
 'savearticle' => 'Conservar págine',
 'preview' => 'Prevision',
@@ -501,12 +537,10 @@ Tui adresse de IP va esser registrat in historico de redactiones de ti págine."
 'newarticletext' => "Vu have sequet un catenun por un págine que ne existe ancor.
 Por crear li págine, comensa tippant in li buxe in infra (vider li [[{{MediaWiki:Helppage}}|págine de auxilie]] por plu informationes).
 Si vu es ci per errore, clacca in li buton '''retornar''' in tui navigator.",
-'noarticletext' => 'Vi currentmen ne textu in ti págine.
-Vu posse [[Special:Search/{{PAGENAME}}|serchar por ti titul de págine]] in altri págines,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar li diariumes relatet], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redacter ti págine]</span>.',
-'noarticletext-nopermission' => 'Vi currentmen ne textu in ti págine.
-Vu posse [[Special:Search/{{PAGENAME}}|serchar por titul de ti págine]] in altri págines,
-o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar li diariumes relatet]</span>.',
+'noarticletext' => 'Actualmen ti-ci págine ancor ne contene alquel textu.
+Tu posse <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} redacter]</span> it, [[Special:Search/{{PAGENAME}}|serchar]] su titul in altri págines o regardar li relatent <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logs]</span>.',
+'noarticletext-nopermission' => 'Actualmen ti págine ne contene textu e tu ne have permission crear ti págine.
+Tu posse [[Special:Search/{{PAGENAME}}|serchar]] su titul sur altri págines o regardar li <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} relatent logs].</span>',
 'userpage-userdoesnotexist' => 'Conto de usator "$1" ne es registrat.
 Pleser controla si vu cari crear/redacter ti págine.',
 'userpage-userdoesnotexist-view' => 'Conto de usator "$1" ne es registrat.',
@@ -536,7 +570,7 @@ Li ultim intrada in li historico es sub li condition infra por referentie:",
 'templatesused' => '{{PLURAL:$1|Avise|Avises}} usat in ti págine:',
 'templatesusedpreview' => '{{PLURAL:$1|Avise|Avises}} usat in ti prevision:',
 'templatesusedsection' => '{{PLURAL:$1|Avise|Avises}} usat in ti division:',
-'template-protected' => '(gardat)',
+'template-protected' => '(protectet)',
 'template-semiprotected' => '(medie-gardat)',
 'hiddencategories' => 'Ti págine es un membre de {{PLURAL:$1|1 categorie ocultat|$1 categories ocultat}}:',
 'permissionserrorstext-withaction' => 'Vu ne have permission por $2, por li sequent {{PLURAL:$1|motive|motives}}:',
@@ -548,9 +582,8 @@ Li deletion e diarium de movement por li págine es sub li condition ci por conv
 Li deletion e diarium de movement por li págine es sub li condition in infra por referentie.',
 
 # Parser/template warnings
-'post-expand-template-inclusion-warning' => "'''Advertiment:''' Avise que include dimension es anc grand.
-Alcun avises va ne esser includet.",
-'post-expand-template-inclusion-category' => 'Págines u avise que include dimension es excedet',
+'post-expand-template-inclusion-warning' => "'''Advertiment:''' Li grandore del includet shablones es tro grand. Alcun shablones ne posse esser includet.",
+'post-expand-template-inclusion-category' => 'Págines, in queles li maximal grandore del includet shablones es excedet',
 'post-expand-template-argument-warning' => "'''Advertiment:''' Ti págine contene in un minim argumente de avise quel ha un anc mensura de expansion grand.
 Tis argumentes have esset omisset.",
 'post-expand-template-argument-category' => 'Págines contenent argumentes de avise omisset',
@@ -564,10 +597,10 @@ Tis argumentes have esset omisset.",
 # History pages
 'viewpagelogs' => 'Vider diariumes por ti págine',
 'currentrev' => 'Ultim revision',
-'currentrev-asof' => 'Ultim revision quam de $1',
+'currentrev-asof' => 'Actual version de $2, clocca $3',
 'revisionasof' => 'Revision de $1',
 'revision-info' => 'Revision de $1 e il ha fabricat de $2',
-'previousrevision' => '← Revision antiqui',
+'previousrevision' => '← Anteyan version',
 'nextrevision' => 'Revision sequent →',
 'currentrevisionlink' => 'Ultim revision',
 'cur' => 'hod',
@@ -579,17 +612,17 @@ Tis argumentes have esset omisset.",
 Legende: '''({{int:cur}})''' = diferenties che ultim revision, '''({{int:last}})''' = diferenties que antecede li revision, '''{{int:minoreditletter}}''' = redaction minori.",
 'history-fieldset-title' => 'Historie de navigation',
 'history-show-deleted' => 'Deletet solmen',
-'histfirst' => 'Plu antiqui',
-'histlast' => 'Plu recent',
+'histfirst' => 'max veľi',
+'histlast' => 'max nov',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 in $2',
 
 # Revision deletion
 'rev-delundel' => 'monstrar/ocultar',
-'revdel-restore' => 'change visibilitá',
-'revdel-restore-deleted' => 'revisiones deletet',
-'revdel-restore-visible' => 'revisiones visibil',
+'revdel-restore' => 'changer visibilitá',
+'revdel-restore-deleted' => 'deletet revisiones',
+'revdel-restore-visible' => 'visibil revisiones',
 
 # Suppression log
 'suppressionlog' => 'Diarium de supression',
@@ -607,19 +640,19 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'diff-multi' => '({{PLURAL:$1|Un revision intermediari|$1 revisiones intermediari}} per {{PLURAL:$2|un usator|$2 usatores}} ne monstrat)',
 
 # Search results
-'searchresults' => 'Serchar resultates',
-'searchresults-title' => 'Serchar resultates por "$1"',
+'searchresults' => 'Serch-resultates',
+'searchresults-title' => 'Serch-resultates por «$1»',
 'toomanymatches' => 'Anc mult concurses esset retornat, pleser prova un question diferent',
 'titlematches' => 'Resultates in li titules de págines',
 'textmatches' => 'Resultates in textu de págines',
-'prevn' => '{{PLURAL:$1|$1}} anteriori',
-'nextn' => 'proxim {{PLURAL:$1|$1}}',
-'prevn-title' => 'Anteriori $1 {{PLURAL:$1|resultate|resultates}}',
-'nextn-title' => 'Proxim $1 {{PLURAL:$1|resultate|resultates}}',
+'prevn' => 'anteyan {{PLURAL:$1|$1}}',
+'nextn' => 'secuent {{PLURAL:$1|$1}}',
+'prevn-title' => 'Anteyan $1 {{PLURAL:$1|resultate|resultates}}',
+'nextn-title' => 'Secuent $1 {{PLURAL:$1|resultate|resultates}}',
 'shown-title' => 'Monstrar $1 {{PLURAL:$1|resultate|resultates}} per págine',
-'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3)',
+'viewprevnext' => 'Monstrar ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Vi un págine nominat \"[[:\$1]]\" in ti wiki.'''",
-'searchmenu-new' => "'''Crear li págine \"[[:\$1]]\" in ti wiki!'''",
+'searchmenu-new' => "'''Crear li págine «[[:$1]]» in ti wiki.'''",
 'searchprofile-articles' => 'Págines de contenete',
 'searchprofile-project' => 'Auxilie e Págines de projecte',
 'searchprofile-images' => 'Multimedia',
@@ -627,23 +660,23 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'searchprofile-advanced' => 'Avansat',
 'searchprofile-articles-tooltip' => 'Serchar in $1',
 'searchprofile-project-tooltip' => 'Serchar in $1',
-'searchprofile-images-tooltip' => 'Serchar por files',
-'searchprofile-everything-tooltip' => 'Serchar omni li contenete (includent págines de discussion)',
-'searchprofile-advanced-tooltip' => 'Serchar in spacies de nómine de hábitu',
+'searchprofile-images-tooltip' => 'Serchar files',
+'searchprofile-everything-tooltip' => 'Serchar in li tot contenete (includent págines de conversation)',
+'searchprofile-advanced-tooltip' => 'Serchar in special spacies de nómine',
 'search-result-size' => '$1 ({{PLURAL:$2|1 parol|$2 paroles}})',
 'search-result-category-size' => '{{PLURAL:$1|1 membre|$1 membres}} ({{PLURAL:$2|1 subcategory|$2 subcategories}}, {{PLURAL:$3|1 file|$3 files}})',
-'search-redirect' => '(redirectet de $1)',
-'search-section' => '(division $1)',
-'search-suggest' => 'Vu intentet: $1',
+'search-redirect' => '(redirection de «$1»)',
+'search-section' => '(section $1)',
+'search-suggest' => 'Esque tu ha intentet: «$1»?',
 'searchrelated' => 'relatet',
-'searchall' => 'Omni',
-'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultates '''$1 - $2''' de '''$3'''}} por '''$4'''",
-'search-nonefound' => 'Ne esset constatat resultates por li question.',
+'searchall' => 'omni',
+'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultates '''$1  $2''' de '''$3'''}} por '''$4'''",
+'search-nonefound' => 'Tu sercha ne ha trovat un resultate.',
 'powersearch' => 'Serchar avansat',
 
 # Preferences page
 'preferences' => 'Preferenties',
-'mypreferences' => 'Mi preferenties',
+'mypreferences' => 'Preferenties',
 'changepassword' => 'Modificar passa-parol',
 'skin-preview' => 'Prevision',
 'saveprefs' => 'Conservar',
@@ -735,21 +768,21 @@ Tui adresse de e-mail ne es revelat quande altri usatores contacter vu.',
 'rclinks' => 'Monstrar li $1 ultim modificationes fat durante li $2 ultim dies<br />$3.',
 'diff' => 'dif',
 'hist' => 'hist',
-'hide' => 'Ocultar',
+'hide' => 'Celar',
 'show' => 'Monstrar',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Monstar detallies (exige JavaScript)',
+'rc-enhanced-expand' => 'Monstrar detaľes (per JavaScript)',
 'rc-enhanced-hide' => 'Ocultar detallies',
 
 # Recent changes linked
 'recentchangeslinked' => 'Changes referet',
 'recentchangeslinked-feed' => 'Relatet modificationes',
-'recentchangeslinked-toolbox' => 'Changes referet',
+'recentchangeslinked-toolbox' => 'Changes in referentiat págines',
 'recentchangeslinked-title' => 'Changes relatet por "$1"',
-'recentchangeslinked-summary' => "Ti es un liste de changes fat recentmen por págines ligat de un págine specificat (o por membres de un categorie specificat).
-Págines in [[Special:Watchlist|tui liste de págines vigilat]] es '''nigri'''.",
+'recentchangeslinked-summary' => "To es un liste del nov changes in li referentiat págines (respectivmen in li membres del categorie).
+Págines in [[Special:Watchlist|tui liste de vigilat págines]] es '''nigri'''.",
 'recentchangeslinked-page' => 'Nómine de págine:',
 'recentchangeslinked-to' => 'Monstrar changes por págines ligat por li págine disposit in vice',
 
@@ -823,22 +856,22 @@ Vu posse provar in un témpor minu activ.',
 
 # File description page
 'file-anchor-link' => 'Figura',
-'filehist' => 'Historic de figura',
-'filehist-help' => 'Clacca in un date/témpor por vider li file quam it aparit in ti témpor.',
+'filehist' => 'Versiones del file',
+'filehist-help' => 'Clacca a un date/témpore por vider ti version.',
 'filehist-revert' => 'reverter',
-'filehist-current' => 'current',
-'filehist-datetime' => 'Date/Témpor',
+'filehist-current' => 'actual',
+'filehist-datetime' => 'Version de',
 'filehist-thumb' => 'Miniatura',
-'filehist-thumbtext' => 'Miniatura por version quam de $1',
+'filehist-thumbtext' => 'Miniatura por li version de $2, clocca $3',
 'filehist-user' => 'Usator',
 'filehist-dimensions' => 'Dimensiones',
 'filehist-filesize' => 'Mesura de file',
-'filehist-comment' => 'Comentarie',
-'imagelinks' => 'Usu del file',
+'filehist-comment' => 'Commentarie',
+'imagelinks' => 'Usada del file',
 'linkstoimage' => 'Li sequent {{PLURAL:$1|catenun de págine|$1 catenunes de págines}} por ti file:',
 'nolinkstoimage' => 'Hay nequant págine que liga por ti file.',
-'sharedupload-desc-here' => 'Ti file es de $1 e posse esser usat per altri projectes.
-Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in infra.',
+'sharedupload-desc-here' => 'Ti file es de $1 e posse esser usat de altri projectes.
+Li descrition in su [$2 págine de descrition] es monstrat in infra.',
 'uploadnewversion-linktext' => 'Cargar un nov version de ti file',
 
 # File deletion
@@ -859,7 +892,7 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 'unusedtemplateswlh' => 'altri catenunes',
 
 # Random page
-'randompage' => 'Págine sporadic',
+'randompage' => 'Págine in hasard',
 
 # Statistics
 'statistics' => 'Statistica',
@@ -939,11 +972,11 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 
 # Special:AllPages
 'allpages' => 'Omni li págines',
-'alphaindexline' => '$1 til $2',
+'alphaindexline' => '$1 till $2',
 'nextpage' => 'Proxim págine ($1)',
 'prevpage' => 'Ultim págine ($1)',
 'allarticles' => 'Omni li articules',
-'allpagessubmit' => 'Ear',
+'allpagessubmit' => 'Applicar',
 
 # Special:Categories
 'categories' => 'Categories',
@@ -970,8 +1003,8 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 'usermessage-template' => 'MediaWiki:UserMessage',
 
 # Watchlist
-'watchlist' => 'Liste de págines vigilat',
-'mywatchlist' => 'Mi liste de págines vigilat',
+'watchlist' => 'Vigilat págines',
+'mywatchlist' => 'Vigilat págines',
 'watchlistfor2' => 'Por $1 $2',
 'watchlistanontext' => 'Pleser $1 por vider o redacter articules in tui liste de págines vigilat.',
 'watchnologin' => 'Vu ne ha intrat',
@@ -1078,11 +1111,11 @@ $1',
 'blanknamespace' => '(Principal)',
 
 # Contributions
-'contributions' => 'Contributiones de usator',
+'contributions' => 'Contributiones de {{GENDER:$1|usator|usatoressa}}',
 'contributions-title' => 'Contributiones de usator por $1',
-'mycontris' => 'Mi contributiones',
-'contribsub2' => 'Por $1 ($2)',
-'uctop' => '(prim)',
+'mycontris' => 'Contributiones',
+'contribsub2' => 'De {{GENDER:$3|$1}} ($2)',
+'uctop' => '(actual)',
 'month' => 'De mensu (e anterioris):',
 'year' => 'De annu (e anterioris):',
 
@@ -1098,35 +1131,35 @@ $1',
 'sp-contributions-submit' => 'Serchar',
 
 # What links here
-'whatlinkshere' => 'Quo catenunes ci',
+'whatlinkshere' => 'Referenties a ti-ci págine',
 'whatlinkshere-title' => 'Págines quo liga por "$1"',
 'whatlinkshere-page' => 'Págine:',
 'linkshere' => "Li sequent págines liga por '''[[:$1]]''':",
 'nolinkshere' => "Nequant págine liga por '''[[:$1]]'''.",
 'isredirect' => 'págine de redirecterion',
 'istemplate' => 'inclusion',
-'isimage' => 'catenun de figura',
+'isimage' => 'referentie a un file',
 'whatlinkshere-prev' => '{{PLURAL:$1|anterior|$1 anterioris}}',
 'whatlinkshere-next' => '{{PLURAL:$1|proxim|proxim $1}}',
 'whatlinkshere-links' => '← catenunes',
 'whatlinkshere-hideredirs' => '$1 redirectiones',
 'whatlinkshere-hidetrans' => '$1 transclusiones',
 'whatlinkshere-hidelinks' => '$1 catenunes',
-'whatlinkshere-hideimages' => '$1 catenunes de figura',
+'whatlinkshere-hideimages' => '$1 referenties a picturas.',
 'whatlinkshere-filters' => 'Filtres',
 
 # Block/unblock
 'blockip' => 'Blocar usator',
 'ipbreason' => 'Motive:',
-'ipboptions' => '2 hores:2 hours,1 die:1 day,3 dies:3 days,1 semane:1 week,2 semanes:2 weeks,1 mensu:1 month,3 mensues:3 months,6 mensues:6 months,1 annu:1 year,inprecise:infinite',
+'ipboptions' => '2 hores:2 hours,1 die:1 day,3 dies:3 days,1 semane:1 week,2 semanes:2 weeks,1 mensu:1 month,3 mensus:3 months,6 mensus:6 months,1 annu:1 year,ínfinit:infinite',
 'ipbotheroption' => 'altri',
 'ipblocklist' => 'Usatores blocat',
 'ipblocklist-submit' => 'Serchar',
 'infiniteblock' => 'infinit',
 'blocklink' => 'blocar',
 'unblocklink' => 'desblocar',
-'change-blocklink' => 'change bloc',
-'contribslink' => 'contribs',
+'change-blocklink' => 'changer blocada',
+'contribslink' => 'contributiones',
 'blocklogpage' => 'Diarium de bloc',
 'blocklogentry' => '"[[$1]]" hat blocat che un témpor de expiration de $2 $3',
 'block-log-flags-nocreate' => 'creation de conto debilisat',
@@ -1167,69 +1200,69 @@ Pleser fuse les manualmen.'''",
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tui págine de usator',
 'tooltip-pt-anonuserpage' => 'Li págine de usator por li adresse de IP vu es redactent quam',
-'tooltip-pt-mytalk' => 'Tui págine de discussion',
+'tooltip-pt-mytalk' => 'Tui págine de conversation',
 'tooltip-pt-anontalk' => 'Discussion pri redactiones de adresses de IP',
 'tooltip-pt-preferences' => 'Tui preferenties',
-'tooltip-pt-watchlist' => 'Li liste de págines quo vu controla li changes',
+'tooltip-pt-watchlist' => 'Liste de vigilat págines',
 'tooltip-pt-mycontris' => 'Liste de tui contributiones',
-'tooltip-pt-login' => 'Vu es incorageat por crear un conto; támen, it ne esser mandatorio',
+'tooltip-pt-login' => 'Tu es incorrageat crear un conto, ma to ne es un deventie.',
 'tooltip-pt-anonlogin' => 'Vu es incorageat por crear un conto; támen, it ne esser mandatorio',
-'tooltip-pt-logout' => 'Surtida',
-'tooltip-ca-talk' => 'Discussion pri li contenete de págine',
-'tooltip-ca-edit' => 'Vu posse redacter ti págine. Pleser usar li buton "Monstrar prevision" ante de conservar',
-'tooltip-ca-addsection' => 'Comensar un nov division',
-'tooltip-ca-viewsource' => 'Ti págine es gardat. Vu posse vider li contenete',
-'tooltip-ca-history' => 'Revisiones passat de ti págine',
+'tooltip-pt-logout' => 'Surtir',
+'tooltip-ca-talk' => 'Discussion pri li articul.',
+'tooltip-ca-edit' => 'Redacter ti págine. Ples usar li buton de prevision antequam conservar.',
+'tooltip-ca-addsection' => 'Comensar un nov section',
+'tooltip-ca-viewsource' => 'Ti págine es protectet. Ma tu posse vider e copiar su fonte.',
+'tooltip-ca-history' => 'Passat versiones de ti págine',
 'tooltip-ca-protect' => 'Gardar ti págine',
 'tooltip-ca-unprotect' => 'Desgardar ti págine',
 'tooltip-ca-delete' => 'Deleter ti págine',
 'tooltip-ca-undelete' => 'Restaurar li redactiones executet pro ti págine ante de it esser deletet',
 'tooltip-ca-move' => 'Mover ti págine',
-'tooltip-ca-watch' => 'Adjunter ti págine pro tui liste de págines vigilat',
+'tooltip-ca-watch' => 'Adjunter ti págine a tui liste de vigilat págines',
 'tooltip-ca-unwatch' => 'Desvigilar ti págine de tui liste de págines vigilat',
 'tooltip-search' => 'Serchar {{SITENAME}}',
 'tooltip-search-go' => 'Ear por un págine che ti nómine exact, si it exister',
-'tooltip-search-fulltext' => 'Serchar págines che ti textu',
-'tooltip-p-logo' => 'Visita li págine principal',
-'tooltip-n-mainpage' => 'Visita li págine principal',
-'tooltip-n-mainpage-description' => 'Visita li págine principal',
-'tooltip-n-portal' => 'Pri li projecte, quo vu posse executer, u constatar coses',
-'tooltip-n-currentevents' => 'Constata funde de information sur eventus current',
-'tooltip-n-recentchanges' => 'Li liste de nov changes vice wiki',
-'tooltip-n-randompage' => 'Cargar un págine sporadic',
-'tooltip-n-help' => 'Li loco por constatar auxilie',
-'tooltip-t-whatlinkshere' => 'Liste de omni págines que liga quel por ci',
-'tooltip-t-recentchangeslinked' => 'Nov changes in págines ligat in ti págine',
+'tooltip-search-fulltext' => 'Serchar págines, queles contene ti textu',
+'tooltip-p-logo' => 'Principal págine',
+'tooltip-n-mainpage' => 'Monstrar li principal págine',
+'tooltip-n-mainpage-description' => 'Visitar li principal págine',
+'tooltip-n-portal' => 'Pri li projecte, quo tu posse far, u tu posse trovar alquó',
+'tooltip-n-currentevents' => 'Fundal informationes pri actual evenimentes',
+'tooltip-n-recentchanges' => 'Liste de nov changes in li wiki',
+'tooltip-n-randompage' => 'Cargar un págine in hasard',
+'tooltip-n-help' => 'Monstrar un págine de auxilie',
+'tooltip-t-whatlinkshere' => 'Liste de omni págines ligant a ci.',
+'tooltip-t-recentchangeslinked' => 'Nov changes in págines ligat fro ti págine',
 'tooltip-feed-rss' => 'Feed RSS por ti págine',
 'tooltip-feed-atom' => 'Feed atom por ti págine',
 'tooltip-t-contributions' => 'Vider li liste de contributiones de ti usator',
 'tooltip-t-emailuser' => 'Inviar un e-mail por ti usator',
 'tooltip-t-upload' => 'Cargar files',
-'tooltip-t-specialpages' => 'Liste de omni págines special',
-'tooltip-t-print' => 'Version por impression de ti págine',
-'tooltip-t-permalink' => 'Catenun permanent por ti revision de págine',
-'tooltip-ca-nstab-main' => 'Vider li págine de contenete',
+'tooltip-t-specialpages' => 'Liste de omni special págines',
+'tooltip-t-print' => 'Printabil version de ti-ci págine',
+'tooltip-t-permalink' => 'Permanent referentie a ti version del págine',
+'tooltip-ca-nstab-main' => 'Vider li articul',
 'tooltip-ca-nstab-user' => 'Vider li págine de usator',
 'tooltip-ca-nstab-media' => 'Vider li págine de media',
 'tooltip-ca-nstab-special' => 'Ti es un págine special, vu ne posse redacter it',
 'tooltip-ca-nstab-project' => 'Vider li págine de projecte',
 'tooltip-ca-nstab-image' => 'Vider li págine de figura',
 'tooltip-ca-nstab-mediawiki' => 'Vider li missage de sistema',
-'tooltip-ca-nstab-template' => 'Vider li avise',
+'tooltip-ca-nstab-template' => 'Monstrar li shablone',
 'tooltip-ca-nstab-help' => 'Vider li págine de auxilie',
-'tooltip-ca-nstab-category' => 'Vider li págine de categorie',
+'tooltip-ca-nstab-category' => 'Monstrar li categorial págine',
 'tooltip-minoredit' => 'Marcar to ci quam un redaction minori',
 'tooltip-save' => 'Conservar tui changes',
-'tooltip-preview' => 'Monstrar tui changes, pleser usar ante de conservar!',
+'tooltip-preview' => 'Previder tui changes. Ples usar to antequam conservar!',
 'tooltip-diff' => 'Monstrar quel changes vu executet in li textu',
 'tooltip-compareselectedversions' => 'Vider li differenties inter li du revisiones selectet de ti págine',
 'tooltip-watch' => 'Adjunter ti págine por tui liste de págines vigilat',
 'tooltip-recreate' => 'Recrear li págine por plan anteriori de delete',
 'tooltip-upload' => 'Comensar cargament de file',
-'tooltip-rollback' => '"Rollback" reverte redaction(es) de ti págine executet per li ultim contributor in un claccar',
-'tooltip-undo' => '"Undo" reverte ti redaction e inaugura li forme de redaction in modo de prevision. It concede adjuntent un rason in li summarium.',
+'tooltip-rollback' => 'Desfá omni ultim changes del págine, queles ha esset executet del sam usator, per un sol clacca',
+'tooltip-undo' => '«Desfar» reverte solmen ti-ci redaction e monstra li resultate in prevision, porque tu posse indicar un rason in li linea de resumé.',
 'tooltip-preferences-save' => 'Conservar preferenties',
-'tooltip-summary' => 'Intrar un summarium curt',
+'tooltip-summary' => 'Ples intrar un curt resummation.',
 
 # Stylesheets
 'vector.css' => '/* CSS colocat ci va afectar usatores de pelle Vector */',
@@ -1247,7 +1280,7 @@ Pleser fuse les manualmen.'''",
 'file-info-size' => '$1 × $2 pixeles, dimension de file: $3, tip MIME: $4',
 'file-nohires' => 'Nequant resolution max alt disponibil.',
 'svg-long-desc' => '(file SVG, nominalmen $1 × $2 pixeles, mesura de file: $3)',
-'show-big-image' => 'Resolution complet',
+'show-big-image' => 'Original file',
 
 # Special:NewFiles
 'newimages' => 'Galerie de nov images',
@@ -1257,11 +1290,11 @@ Pleser fuse les manualmen.'''",
 'video-dims' => '$1, $2×$3',
 
 # Bad image list
-'bad_image_list' => 'Li formate es quam seque:
+'bad_image_list' => 'Formate:
 
-Solmen listar detallies (lineas comensant che *) es considerat.
-Li prim catenun in un linea deve esser un catenun por un file maliciosi.
-Alqual catenunes subsequent in li linea identic es considerat por esser exceptiones, i.e. págines u li file posse ocurrer in linea identic.',
+Solmen lineas comensant per un * es considerat.
+Strax pos li * deve secuer un referentie a un mal file.
+Secuent referenties in li sam linea defini exceptiones, u li file es leyalmen monstrat.',
 
 # Metadata
 'metadata' => 'Metadata',
@@ -1284,7 +1317,7 @@ Altri va esser ocultat per contumacie.
 
 # External editor support
 'edit-externally' => 'Redacter ti file usant un aplication extern',
-'edit-externally-help' => '(Vider li [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu information)',
+'edit-externally-help' => '(Vide li [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu mult information)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omni',
@@ -1357,7 +1390,7 @@ Vu posse anc [[Special:EditWatchlist|usar li redactor uniform]].',
 'version-software-version' => 'Version',
 
 # Special:SpecialPages
-'specialpages' => 'Págines special',
+'specialpages' => 'Special págines',
 'specialpages-group-maintenance' => 'Raportes de conservation',
 'specialpages-group-other' => 'Altri págines special',
 'specialpages-group-login' => 'Intrar / crear conto',
index 19709f1..378afdf 100644 (file)
@@ -213,7 +213,7 @@ $messages = array(
 'articlepage' => 'Йоазув тӀа бӀаргтасса',
 'talk' => 'Дувцам',
 'views' => 'БӀаргтассамаш',
-'toolbox' => 'Ð\93Ó\80орсаш',
+'toolbox' => 'Ð\93Ó\80ирсаш',
 'userpage' => 'Дакъалаьцачунна оагӀуве бӀаргтасса',
 'projectpage' => 'Хьахьоадайтама оагӀуве бӀаргтасса',
 'imagepage' => 'Паьла оагӀув тӀа бӀаргтасса',
@@ -462,7 +462,7 @@ $messages = array(
 'history-fieldset-title' => 'Искара бӀаргтасса',
 'history-show-deleted' => 'ДӀадаьккхараш мара',
 'histfirst' => 'къаьнараш',
-'histlast' => 'ха яннараш',
+'histlast' => 'кердараш',
 'historyempty' => '(даьсса)',
 
 # Revision feed
@@ -861,8 +861,8 @@ $messages = array(
 'contributions' => '{{GENDER:$1|Дакъалаьцархочунна}} къахьегам',
 'contributions-title' => '$1 дакъалаьцархочунна къахьегам',
 'mycontris' => 'Са къахьегам',
-'contribsub2' => '$1 ($2) баь болх',
-'uctop' => '(тIехьара)',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) баь болх',
+'uctop' => '(xIанзара)',
 'month' => 'Цхьа бутт хьалхагIа (кхы хьалхагIа)',
 'year' => 'Цхьа шу хьалхагIа (кхы хьалхагIа):',
 
@@ -1024,7 +1024,7 @@ $messages = array(
 'file-info-size' => '$1 × $2 фихсам, паьла дустам: $3, MIME-тайп: $4',
 'file-nohires' => 'Укхал доккхагIа доржам дац',
 'svg-long-desc' => 'SVG-паьл, $1 × $2 фихелашца, паьла дустам: $3',
-'show-big-image' => 'Ð¥Ñ\8cадоккÑ\85адаÑ\8c сурт',
+'show-big-image' => 'Ð¥Ñ\8cалÑ\85агIаÑ\80а сурт',
 
 # Special:NewFiles
 'noimages' => 'Суртaш бIаргагуш дац.',
index 7425be9..a5f2b8b 100644 (file)
@@ -139,7 +139,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Elstu_síður' ),
        'Blankpage'                 => array( 'Auð_síða' ),
        'Block'                     => array( 'Banna_vistföng' ),
-       'Blockme'                   => array( 'Banna_mig' ),
        'Booksources'               => array( 'Bókaheimildir' ),
        'BrokenRedirects'           => array( 'Brotnar_tilvísanir' ),
        'Categories'                => array( 'Flokkar' ),
@@ -151,7 +150,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Búa_til_aðgang' ),
        'Deadendpages'              => array( 'Botnlangar' ),
        'DeletedContributions'      => array( 'Eydd_framlög' ),
-       'Disambiguations'           => array( 'Tenglar_í_aðgreiningarsíður' ),
        'DoubleRedirects'           => array( 'Tvöfaldar_tilvísanir' ),
        'EditWatchlist'             => array( 'Breyta_vaktlista' ),
        'Emailuser'                 => array( 'Senda_tölvupóst' ),
index e3ebda3..107d65b 100644 (file)
@@ -121,7 +121,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'TitoloErrato' ),
        'Blankpage'                 => array( 'PaginaVuota' ),
        'Block'                     => array( 'Blocca' ),
-       'Blockme'                   => array( 'BloccaProxy' ),
        'Booksources'               => array( 'RicercaISBN' ),
        'BrokenRedirects'           => array( 'RedirectErrati' ),
        'Categories'                => array( 'Categorie' ),
@@ -133,10 +132,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreaAccount' ),
        'Deadendpages'              => array( 'PagineSenzaUscita' ),
        'DeletedContributions'      => array( 'ContributiCancellati' ),
-       'Disambiguations'           => array( 'Disambigua' ),
        'DoubleRedirects'           => array( 'RedirectDoppi' ),
        'EditWatchlist'             => array( 'ModificaOsservati', 'ModificaOsservatiSpeciali', 'ModificaListaSeguiti' ),
        'Emailuser'                 => array( 'InviaEMail' ),
+       'ExpandTemplates'           => array( 'EspandiTemplate' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMenoRevisioni' ),
        'FileDuplicateSearch'       => array( 'CercaFileDuplicati' ),
@@ -180,6 +179,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PagineProtette' ),
        'Protectedtitles'           => array( 'TitoliProtetti' ),
        'Randompage'                => array( 'PaginaCasuale' ),
+       'RandomInCategory'          => array( 'CasualeInCategoria' ),
        'Randomredirect'            => array( 'RedirectCasuale' ),
        'Recentchanges'             => array( 'UltimeModifiche' ),
        'Recentchangeslinked'       => array( 'ModificheCorrelate' ),
@@ -201,8 +201,9 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'TemplateNonUsati' ),
        'Unwatchedpages'            => array( 'PagineNonOsservate' ),
        'Upload'                    => array( 'Carica' ),
-       'Userlogin'                 => array( 'Entra', 'Login' ),
-       'Userlogout'                => array( 'Esci', 'Logout' ),
+       'UploadStash'               => array( 'CodaCaricamenti' ),
+       'Userlogin'                 => array( 'Entra' ),
+       'Userlogout'                => array( 'Esci' ),
        'Userrights'                => array( 'PermessiUtente' ),
        'Version'                   => array( 'Versione' ),
        'Wantedcategories'          => array( 'CategorieRichieste' ),
@@ -792,7 +793,7 @@ Assicurati di avere attivato i cookie, ricarica questa pagina e riprova.",
 'passwordtooshort' => 'Le password devono contenere almeno {{PLURAL:$1|1 carattere|$1 caratteri}}.',
 'password-name-match' => 'La password deve essere diversa dal nome utente.',
 'password-login-forbidden' => "L'uso di questo nome utente e password è stato proibito.",
-'mailmypassword' => 'Invia una nuova password al mio indirizzo e-mail',
+'mailmypassword' => 'Invia una nuova password al mio indirizzo email',
 'passwordremindertitle' => 'Servizio Password Reminder di {{SITENAME}}',
 'passwordremindertext' => 'Qualcuno (probabilmente tu, con indirizzo IP $1) ha richiesto l\'invio di una nuova password di accesso a {{SITENAME}} ($4).
 Una password temporanea per l\'utente "$2" è stata impostata a "$3".
@@ -2318,9 +2319,9 @@ Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazio
 'mailnologin' => 'Nessun indirizzo cui inviare il messaggio',
 'mailnologintext' => 'Per inviare messaggi e-mail ad altri utenti è necessario [[Special:UserLogin|accedere al sito]] e aver registrato un indirizzo valido nelle proprie [[Special:Preferences|preferenze]].',
 'emailuser' => "Scrivi all'utente",
-'emailuser-title-target' => 'Invia una e-mail a questo {{GENDER:$1|utente}}',
-'emailuser-title-notarget' => 'Invia una e-mail a un utente',
-'emailpage' => "Invia un messaggio e-mail all'utente",
+'emailuser-title-target' => 'Invia una email a questo {{GENDER:$1|utente}}',
+'emailuser-title-notarget' => 'Invia una email a un utente',
+'emailpage' => "Invia un messaggio email all'utente",
 'emailpagetext' => 'Usare il modulo sottostante per inviare un messaggio e-mail all\'{{GENDER:$1|utente}} indicato. L\'indirizzo specificato nelle [[Special:Preferences|preferenze]] del mittente apparirà nel campo "Da:" del messaggio per consentire al destinatario di rispondere direttamente.',
 'usermailererror' => "L'oggetto mail ha restituito l'errore:",
 'defemailsubject' => 'Messaggio da {{SITENAME}} dall\'utente "$1"',
@@ -2344,7 +2345,7 @@ Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazio
 'emailccsubject' => 'Copia del messaggio inviato a $1: $2',
 'emailsent' => 'Messaggio inviato',
 'emailsenttext' => 'Il messaggio e-mail è stato inviato.',
-'emailuserfooter' => 'Questa e-mail è stata inviata da $1 a $2 attraverso la funzione "Invia un messaggio e-mail all\'utente" su {{SITENAME}}.',
+'emailuserfooter' => 'Questa email è stata inviata da $1 a $2 attraverso la funzione "Invia un messaggio email all\'utente" su {{SITENAME}}.',
 
 # User Messenger
 'usermessage-summary' => 'Messaggio di sistema',
@@ -2678,7 +2679,7 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
 ** Nome utente non consono',
 'ipb-hardblock' => 'Impedisci agli utenti registrati di contribuire da questo indirizzo IP',
 'ipbcreateaccount' => 'Impedisci la registrazione',
-'ipbemailban' => "Impedisci all'utente l'invio di e-mail",
+'ipbemailban' => "Impedisci all'utente l'invio di email",
 'ipbenableautoblock' => "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui vengono tentate modifiche",
 'ipbsubmit' => "Blocca l'utente",
 'ipbother' => 'Durata non in elenco:',
@@ -3040,7 +3041,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'tooltip-feed-rss' => 'Feed RSS per questa pagina',
 'tooltip-feed-atom' => 'Feed Atom per questa pagina',
 'tooltip-t-contributions' => 'Lista dei contributi di questo utente',
-'tooltip-t-emailuser' => 'Invia un messaggio e-mail a questo utente',
+'tooltip-t-emailuser' => 'Invia un messaggio email a questo utente',
 'tooltip-t-upload' => 'Carica file multimediali',
 'tooltip-t-specialpages' => 'Lista di tutte le pagine speciali',
 'tooltip-t-print' => 'Versione stampabile di questa pagina',
@@ -3704,7 +3705,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
 'confirmemail_pending' => "Il codice di conferma è già stato spedito via posta elettronica; se l'account è stato
 creato di recente, si prega di attendere l'arrivo del codice per qualche minuto prima
 di tentare di richiederne uno nuovo.",
-'confirmemail_send' => 'Invia un codice di conferma via e-mail.',
+'confirmemail_send' => 'Invia un codice di conferma via email.',
 'confirmemail_sent' => 'Messaggio e-mail di conferma inviato.',
 'confirmemail_oncreate' => "Un codice di conferma è stato spedito all'indirizzo
 di posta elettronica indicato. Il codice non è necessario per accedere al sito,
index 202a32d..650df9e 100644 (file)
@@ -120,7 +120,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( '不正なページ名' ),
        'Blankpage'                 => array( '白紙ページ' ),
        'Block'                     => array( '投稿ブロック', 'ブロック' ),
-       'Blockme'                   => array( '自己ブロック' ),
        'Booksources'               => array( '文献資料', '書籍情報源' ),
        'BrokenRedirects'           => array( '迷子のリダイレクト', '壊れたリダイレクト' ),
        'Categories'                => array( 'カテゴリ', 'カテゴリ一覧' ),
@@ -132,10 +131,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'アカウント作成', 'アカウントの作成' ),
        'Deadendpages'              => array( '有効なページへのリンクがないページ', '行き止まりページ' ),
        'DeletedContributions'      => array( '削除された投稿記録', '削除された投稿履歴', '削除歴' ),
-       'Disambiguations'           => array( '曖昧さ回避のページ', '曖昧さ回避' ),
        'DoubleRedirects'           => array( '二重リダイレクト', '二重転送' ),
        'EditWatchlist'             => array( 'ウォッチリストの編集', 'ウォッチリスト編集' ),
        'Emailuser'                 => array( 'メール送信', 'ウィキメール' ),
+       'ExpandTemplates'           => array( 'テンプレートを展開' ),
        'Export'                    => array( 'データ書き出し', 'データー書き出し', 'エクスポート' ),
        'Fewestrevisions'           => array( '編集履歴の少ないページ', '版の少ない項目', '版の少ないページ' ),
        'FileDuplicateSearch'       => array( '重複ファイル検索' ),
@@ -180,10 +179,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( '保護されているページ' ),
        'Protectedtitles'           => array( '作成保護されているページ名' ),
        'Randompage'                => array( 'おまかせ表示' ),
+       'RandomInCategory'          => array( 'カテゴリ内おまかせ表示', 'カテゴリ中のランダムなページ' ),
        'Randomredirect'            => array( 'おまかせリダイレクト', 'おまかせ転送' ),
        'Recentchanges'             => array( '最近の更新', '最近更新したページ' ),
        'Recentchangeslinked'       => array( '関連ページの更新状況', 'リンク先の更新状況' ),
        'Redirect'                  => array( '転送', 'リダイレクト' ),
+       'ResetTokens'               => array( 'トークンの再設定' ),
        'Revisiondelete'            => array( '版指定削除', '特定版削除' ),
        'Search'                    => array( '検索' ),
        'Shortpages'                => array( '短いページ' ),
@@ -863,9 +864,9 @@ $2',
 {{SITENAME}}では利用者のログインに Cookie を使用します。
 ご使用のブラウザーでは Cookie が無効になっています。
 Cookie を有効にしてから、新しい利用者名とパスワードでログインしてください。',
-'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
-Cookieを無効にしているようです。
-Cookieを有効にしてから、もう一度試してください。',
+'nocookieslogin' => '{{SITENAME}}ではログインに Cookie を使用します。
+Cookie を無効にしているようです。
+Cookie を有効にしてから、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
 Cookieを有効にしていることを確認して、このページを再読込してもう一度試してください。',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
index 6a9a278..a9b5b32 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ცუდი_სათაური' ),
        'Blankpage'                 => array( 'ცარიელი_გვერდი' ),
        'Block'                     => array( 'დაბლოკვა' ),
-       'Blockme'                   => array( 'დამბლოკე' ),
        'BrokenRedirects'           => array( 'გაწყვეტილი_გადამისამართება' ),
        'Categories'                => array( 'კატეგორიები' ),
        'ChangeEmail'               => array( 'ელ-ფოსტის_შეცვლა' ),
@@ -75,7 +74,6 @@ $specialPageAliases = array(
        'Confirmemail'              => array( 'ელ-ფოსტის_დადასტურება' ),
        'Contributions'             => array( 'წვლილი' ),
        'CreateAccount'             => array( 'ანგარიშის_შექმნა' ),
-       'Disambiguations'           => array( 'მრავალმნიშვნელოვნება' ),
        'DoubleRedirects'           => array( 'ორმაგი_გადამისამართება' ),
        'EditWatchlist'             => array( 'კონტროლის_სიის_რედაქტირება' ),
        'Emailuser'                 => array( 'მიწერა_მომხმარებელს' ),
@@ -1161,7 +1159,7 @@ $1",
 'revdelete-show-no-access' => 'ჩანაწერის გახსნის შეცდომა $2-დან, $1: ეს ჩანაწერი მონიშნულია როგორც «შეზღუდული». თქვენ მას ვერ იხილავთ.',
 'revdelete-modify-no-access' => 'ჩანაწერის გასწორების შეცდომა $2-დან, $1: ეს ჩანაწერი მონიშნულია როგორც «შეზღუდული». თქვენ მას ვერ იხილავთ.',
 'revdelete-modify-missing' => 'შეცდომა ID $1 ნაწეის რედაქტირებისას, იგი არ იმყოფება მონაცემთა ბაზაში!',
-'revdelete-no-change' => "'''ყურადღება:''' ჩანაწერს $2, $1 უკვე ავს მოთხოვნილი ხილვადობის კონფიგურაცია.",
+'revdelete-no-change' => "'''á\83§á\83£á\83 á\83\90á\83\93á\83¦á\83\94á\83\91á\83\90:''' á\83©á\83\90á\83\9cá\83\90á\83¬á\83\94á\83 á\83¡ $2, $1 á\83£á\83\99á\83\95á\83\94 á\83\90á\83¥á\83\95á\83¡ á\83\9bá\83\9dá\83\97á\83®á\83\9dá\83\95á\83\9cá\83\98á\83\9aá\83\98 á\83®á\83\98á\83\9aá\83\95á\83\90á\83\93á\83\9dá\83\91á\83\98á\83¡ á\83\99á\83\9dá\83\9cá\83¤á\83\98á\83\92á\83£á\83 á\83\90á\83ªá\83\98á\83\90.",
 'revdelete-concurrent-change' => 'შეცდომა ჩანაწერის შესწორებისას $2-დან, $1: მისი სტატუსი უკვე შეცვლილია სხვა ვინმეს მიერ თქვენი რედაქირეის სესიის დროს.
 თხოვთ შეამოწმოთ ყველა ჟღნალი',
 'revdelete-only-restricted' => 'თქვენ ვერ დამალავთ ჩანაწერს ($2 $1) ადმინისტრატორისგან მანამ, სანამ არ აირჩევთ დამალვის სხვა პარამეტრებს.',
@@ -1992,7 +1990,7 @@ $1',
 'statistics-pages' => 'გვერდები',
 'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
 'statistics-files' => 'ატვირთული ფაილები',
-'statistics-edits' => 'á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\94á\83\91á\83\98 á\83\9eá\83 á\83\9dá\83\94á\83¥á\83¢á\83\98á\83¡ {{SITENAME}} á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\98á\83¡ á\83¨á\83\94á\83\9bá\83\93á\83\94á\83\92',
+'statistics-edits' => 'á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\94á\83\91á\83\98 á\83\9bá\83\90á\83¡ á\83¨á\83\94á\83\9bá\83\93á\83\94á\83\92 á\83 á\83\90á\83ª á\83¨á\83\94á\83\98á\83¥á\83\9bá\83\9cá\83\90 á\83\9eá\83 á\83\9dá\83\94á\83¥á\83¢á\83\98 {{SITENAME}}',
 'statistics-edits-average' => 'რედაქტირების საერთო რაოდენობა გვერდზე',
 'statistics-views-total' => 'სულ ხილვა',
 'statistics-views-total-desc' => 'სათვალავში არ მიიღება არარსებული და სამუშაო გვერდების გადახედვა',
index ec627fd..d519ac2 100644 (file)
@@ -54,7 +54,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Kategoriyalar' ),
        'Contributions'             => array( 'Paydalanıwshı u\'lesi' ),
        'Deadendpages'              => array( 'Hesh betke siltemeytug\'ın betler' ),
-       'Disambiguations'           => array( 'Ko\'p ma\'nisliler' ),
        'DoubleRedirects'           => array( 'Qos burıwshılar' ),
        'Emailuser'                 => array( 'Xat jiberiw' ),
        'Export'                    => array( 'Eksport' ),
index fe89e47..f4efb63 100644 (file)
 $fallback = 'ur';
 $rtl = true;
 
+$namespaceNames = array(
+       NS_MAIN             => '',
+       NS_MEDIA            => 'میڈیا',
+       NS_SPECIAL          => 'خاص',
+       NS_TALK             => 'مشقولگی',
+       NS_USER             => 'ممبار/یوزر',
+);
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ربطو خط کشیدگی',
index ce4434b..e96812a 100644 (file)
@@ -311,7 +311,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'بارلىق_بەتتەر' ),
        'Ancientpages'              => array( 'ەسكى_بەتتەر' ),
        'Block'                     => array( 'جايدى_بۇعاتتاۋ', 'IP_بۇعاتتاۋ' ),
-       'Blockme'                   => array( 'وزدىكتىك_بۇعاتتاۋ', 'وزدىك_بۇعاتتاۋ', 'مەنى_بۇعاتتاۋ' ),
        'Booksources'               => array( 'كىتاپ_قاينارلارى' ),
        'BrokenRedirects'           => array( 'جارامسىز_ايداعىشتار', 'جارامسىز_ايداتۋلار' ),
        'Categories'                => array( 'ساناتتار' ),
@@ -320,7 +319,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'ۇلەسى' ),
        'CreateAccount'             => array( 'جاڭا_تىركەلگى', 'تىركەلگى_جاراتۋ' ),
        'Deadendpages'              => array( 'تۇيىق_بەتتەر' ),
-       'Disambiguations'           => array( 'ايرىقتى_بەتتەر' ),
        'DoubleRedirects'           => array( 'شىنجىرلى_ايداعىشتار', 'شىنجىرلى_ايداتۋلار' ),
        'Emailuser'                 => array( 'حات_جىبەرۋ' ),
        'Export'                    => array( 'سىرتقا_بەرۋ' ),
index 5023d89..af2b638 100644 (file)
@@ -281,7 +281,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Барлық_беттер' ),
        'Ancientpages'              => array( 'Ескі_беттер' ),
        'Block'                     => array( 'Жайды_бұғаттау', 'IP_бұғаттау' ),
-       'Blockme'                   => array( 'Өздіктік_бұғаттау', 'Өздік_бұғаттау', 'Мені_бұғаттау' ),
        'Booksources'               => array( 'Кітап_қайнарлары' ),
        'BrokenRedirects'           => array( 'Жарамсыз_айдағыштар', 'Жарамсыз_айдатулар' ),
        'Categories'                => array( 'Санаттар' ),
@@ -290,7 +289,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Үлесі' ),
        'CreateAccount'             => array( 'Жаңа_тіркелгі', 'Тіркелгі_Жарату' ),
        'Deadendpages'              => array( 'Тұйық_беттер' ),
-       'Disambiguations'           => array( 'Айрықты_беттер' ),
        'DoubleRedirects'           => array( 'Шынжырлы_айдағыштар', 'Шынжырлы_айдатулар' ),
        'Emailuser'                 => array( 'Хат_жіберу' ),
        'Export'                    => array( 'Сыртқа_беру' ),
index 9be27d3..42acac4 100644 (file)
@@ -276,7 +276,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Barlıq_better' ),
        'Ancientpages'              => array( 'Eski_better' ),
        'Block'                     => array( 'Jaýdı_buğattaw', 'IP_buğattaw' ),
-       'Blockme'                   => array( 'Özdiktik_buğattaw', 'Özdik_buğattaw', 'Meni_buğattaw' ),
        'Booksources'               => array( 'Kitap_qaýnarları' ),
        'BrokenRedirects'           => array( 'Jaramsız_aýdağıştar', 'Jaramsız_aýdatwlar' ),
        'Categories'                => array( 'Sanattar' ),
@@ -285,7 +284,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Ülesi' ),
        'CreateAccount'             => array( 'Jaña_tirkelgi', 'Tirkelgi_Jaratw' ),
        'Deadendpages'              => array( 'Tuýıq_better' ),
-       'Disambiguations'           => array( 'Aýrıqtı_better' ),
        'DoubleRedirects'           => array( 'Şınjırlı_aýdağıştar', 'Şınjırlı_aýdatwlar' ),
        'Emailuser'                 => array( 'Xat_jiberw' ),
        'Export'                    => array( 'Sırtqa_berw' ),
index a98a1cc..ebef206 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'ទំព័រចាស់ៗ' ),
        'Blankpage'                 => array( 'ទំព័រទទេ' ),
        'Block'                     => array( 'រាំងខ្ទប់IP' ),
-       'Blockme'                   => array( 'រាំងខ្ទប់' ),
        'Booksources'               => array( 'ប្រភពសៀវភៅ' ),
        'BrokenRedirects'           => array( 'ការបញ្ជូនបន្តដែលខូច' ),
        'Categories'                => array( 'ចំណាត់ថ្នាក់ក្រុម' ),
@@ -111,7 +110,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'បង្កើតគណនី' ),
        'Deadendpages'              => array( 'ទំព័រទាល់' ),
        'DeletedContributions'      => array( 'ការរួមចំណែកដែលត្រូវបានលុបចោល' ),
-       'Disambiguations'           => array( 'ចំណងជើងស្រដៀងគ្នា' ),
        'DoubleRedirects'           => array( 'ការបញ្ជូនបន្តទ្វេដង' ),
        'Emailuser'                 => array( 'អ្នកប្រើប្រាស់អ៊ីមែល' ),
        'Export'                    => array( 'នាំចេញ' ),
index fc480a0..cd5d2db 100644 (file)
@@ -41,7 +41,7 @@
 
 $namespaceNames = array(
        NS_MEDIA            => '미디어',
-       NS_SPECIAL          => '특수기능',
+       NS_SPECIAL          => '특수',
        NS_TALK             => '토론',
        NS_USER             => '사용자',
        NS_USER_TALK        => '사용자토론',
@@ -59,7 +59,8 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-       '특'  => NS_SPECIAL,
+       '특' => NS_SPECIAL,
+       '특수기능' => NS_SPECIAL,
        'MediaWiki토론' => NS_MEDIAWIKI_TALK,
        '그림' => NS_FILE,
        '파일토론' => NS_FILE_TALK,
@@ -68,12 +69,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( '활동적인사용자' ),
        'Allmessages'               => array( '모든메시지' ),
+       'AllMyUploads'              => array( '모든내올린파일', '모든내파일' ),
        'Allpages'                  => array( '모든문서' ),
        'Ancientpages'              => array( '오래된문서' ),
        'Badtitle'                  => array( '잘못된제목', '인식불가제목', '잘못된이름', '인식불가이름' ),
        'Blankpage'                 => array( '빈문서' ),
        'Block'                     => array( '차단', 'IP차단', '사용자차단' ),
-       'Blockme'                   => array( '자기차단', '자가차단' ),
        'Booksources'               => array( '책찾기' ),
        'BrokenRedirects'           => array( '끊긴넘겨주기' ),
        'Categories'                => array( '분류' ),
@@ -85,19 +86,19 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '계정만들기', '가입' ),
        'Deadendpages'              => array( '막다른문서' ),
        'DeletedContributions'      => array( '삭제된기여' ),
-       'Disambiguations'           => array( '동음이의', '동음이의문서' ),
        'DoubleRedirects'           => array( '이중넘겨주기' ),
        'EditWatchlist'             => array( '주시문서목록편집' ),
        'Emailuser'                 => array( '이메일보내기' ),
+       'ExpandTemplates'           => array( '틀전개' ),
        'Export'                    => array( '내보내기' ),
        'Fewestrevisions'           => array( '역사짧은문서' ),
-       'FileDuplicateSearch'       => array( '중복파일찾기' ),
+       'FileDuplicateSearch'       => array( '중복파일검색', '중복파일찾기' ),
        'Filepath'                  => array( '파일경로', '그림경로' ),
        'Import'                    => array( '가져오기' ),
        'Invalidateemail'           => array( '이메일인증취소', '이메일인증해제' ),
        'JavaScriptTest'            => array( '자바스크립트시험', '자바스크립트테스트' ),
-       'BlockList'                 => array( 'ì°¨ë\8b¨ë\90\9cì\82¬ì\9a©ì\9e\90', 'ì°¨ë\8b¨ëª©ë¡\9d', 'IPì°¨ë\8b¨ëª©ë¡\9d' ),
-       'LinkSearch'                => array( '링크찾기', '링크검색' ),
+       'BlockList'                 => array( 'ì°¨ë\8b¨ëª©ë¡\9d', 'IPì°¨ë\8b¨ëª©ë¡\9d', 'ì°¨ë\8b¨ë\90\9cì\82¬ì\9a©ì\9e\90' ),
+       'LinkSearch'                => array( '링크검색', '링크찾기' ),
        'Listadmins'                => array( '관리자', '관리자목록' ),
        'Listbots'                  => array( '봇', '봇목록' ),
        'Listfiles'                 => array( '파일', '그림', '파일목록', '그림목록' ),
@@ -109,7 +110,7 @@ $specialPageAliases = array(
        'Lonelypages'               => array( '외톨이문서', '홀로된문서' ),
        'Longpages'                 => array( '긴문서' ),
        'MergeHistory'              => array( '역사합치기' ),
-       'MIMEsearch'                => array( 'MIME찾기', 'MIME검색' ),
+       'MIMEsearch'                => array( 'MIME검색', 'MIME찾기' ),
        'Mostcategories'            => array( '많이분류된문서' ),
        'Mostimages'                => array( '많이쓰는파일', '많이쓰는그림' ),
        'Mostinterwikis'            => array( '인터위키많은문서' ),
@@ -133,12 +134,14 @@ $specialPageAliases = array(
        'Protectedpages'            => array( '보호된문서' ),
        'Protectedtitles'           => array( '만들기보호된문서', '생성보호된문서' ),
        'Randompage'                => array( '임의문서' ),
+       'RandomInCategory'          => array( '분류에있는임의문서' ),
        'Randomredirect'            => array( '임의넘겨주기' ),
        'Recentchanges'             => array( '최근바뀜' ),
        'Recentchangeslinked'       => array( '링크최근바뀜' ),
        'Redirect'                  => array( '넘겨주기' ),
+       'ResetTokens'               => array( '토큰재설정' ),
        'Revisiondelete'            => array( '특정판삭제' ),
-       'Search'                    => array( '찾기', '검색' ),
+       'Search'                    => array( '검색', '찾기' ),
        'Shortpages'                => array( '짧은문서' ),
        'Specialpages'              => array( '특수문서', '특수기능' ),
        'Statistics'                => array( '통계' ),
@@ -155,7 +158,7 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( '안쓰는틀', '쓰이지않는틀' ),
        'Unwatchedpages'            => array( '주시안되는문서' ),
        'Upload'                    => array( '올리기', '파일올리기', '그림올리기', '업로드' ),
-       'UploadStash'               => array( '올린비공개파일' ),
+       'UploadStash'               => array( '올린비공개파일', '비공개로올린파일' ),
        'Userlogin'                 => array( '로그인' ),
        'Userlogout'                => array( '로그아웃' ),
        'Userrights'                => array( '권한조정', '관리자하기', '봇하기' ),
@@ -239,6 +242,7 @@ $magicWords = array(
        'img_center'                => array( '1', '가운데', 'center', 'centre' ),
        'img_framed'                => array( '1', '프레임', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', '프레임없음', 'frameless' ),
+       'img_lang'                  => array( '1', '언어=$1', 'lang=$1' ),
        'img_page'                  => array( '1', '문서=$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', '위오른쪽', '위오른쪽=$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', '테두리', 'border' ),
@@ -281,6 +285,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', '판년', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', '판타임스탬프', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', '판사용자', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', '판크기', 'REVISIONSIZE' ),
        'plural'                    => array( '0', '복수:', '복수형:', 'PLURAL:' ),
        'fullurl'                   => array( '0', '전체주소:', 'FULLURL:' ),
        'fullurle'                  => array( '0', '전체주소E:', 'FULLURLE:' ),
@@ -1808,6 +1813,7 @@ HTML 태그를 확인하세요.',
 'recentchanges-label-minor' => '사소한 편집',
 'recentchanges-label-bot' => '봇의 편집',
 'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
+'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
 'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서의 목록]]도 참고하세요)',
 'rcnote' => "다음은 $4 $5 까지의 {{PLURAL:$2|'''$2'''일}}동안 {{PLURAL:$1|바뀐 문서 '''$1'''개입니다}}.",
 'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
@@ -2354,7 +2360,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'querypage-disabled' => '이 특수 문서는 성능상의 이유로 비활성화되었습니다.',
 
 # Book sources
-'booksources' => 'ì±\85 ì\9e\90ë£\8c',
+'booksources' => 'ì±\85 ì°¾ê¸°',
 'booksources-search-legend' => '책 원본 검색',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => '검색',
@@ -3657,7 +3663,7 @@ Variants for Chinese language
 'exif-preferredattributionname' => '이 저작물을 이용할 때 보일 저작자 이름',
 'exif-pngfilecomment' => 'PNG 파일 주석',
 'exif-disclaimer' => '면책 조항',
-'exif-contentwarning' => '콘텐츠 경고',
+'exif-contentwarning' => '내용 경고',
 'exif-giffilecomment' => 'GIF 파일 주석',
 'exif-intellectualgenre' => '항목 종류',
 'exif-subjectnewscode' => '주제 코드',
index ca4e40f..7892a93 100644 (file)
@@ -45,7 +45,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Бютеу_бетле' ),
        'Blankpage'                 => array( 'Бош_бет' ),
        'Block'                     => array( 'Блок_эт' ),
-       'Blockme'                   => array( 'Мени_блок_эт' ),
        'Booksources'               => array( 'Китабланы_къайнакълары' ),
        'BrokenRedirects'           => array( 'Джыртылгъан_редиректле' ),
        'Categories'                => array( 'Категорияла' ),
@@ -57,7 +56,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Тергеу_джазыуну_къура', 'Къошулуучуну_къура', 'Регистрация_эт' ),
        'Deadendpages'              => array( 'Чыкъмазча_бетле' ),
        'DeletedContributions'      => array( 'Кетерилген_къошум' ),
-       'Disambiguations'           => array( 'Кёб_магъаналы' ),
        'DoubleRedirects'           => array( 'Экили_редирект' ),
        'EditWatchlist'             => array( 'Кёздеги_тизмени_тюрлендир' ),
        'Emailuser'                 => array( 'Къошулуучугъа_джазма', 'Джазма_ий' ),
index 658bf1c..e914148 100644 (file)
@@ -112,7 +112,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Ahl_Atikelle' ),
        'Blankpage'                 => array( 'Leddijje_Sigge' ),
        'Block'                     => array( 'IP-Sperre' ),
-       'Blockme'                   => array( 'Proxy-Sperre' ),
        'Booksources'               => array( 'ISBN', 'Böcher', 'Böösher' ),
        'BrokenRedirects'           => array( 'Ömleitunge_en_et_Leere' ),
        'Categories'                => array( 'Saachjruppe' ),
@@ -123,7 +122,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Aanmelde', 'Medmaacher_wääde', 'Metmaacher_wääde' ),
        'Deadendpages'              => array( 'Sigge_ohne_Links_dren' ),
        'DeletedContributions'      => array( 'Fotjeschmeße' ),
-       'Disambiguations'           => array( 'Wat-es-dat-Sigge', 'Watt_ėßß_datt?' ),
        'DoubleRedirects'           => array( 'Ömleitunge_op_Ömleitunge' ),
        'Emailuser'                 => array( 'Email', 'E-mail' ),
        'Export'                    => array( 'Expocht' ),
index b2548fb..bca1072 100644 (file)
@@ -83,7 +83,7 @@ $magicWords = array(
        'notoc'                     => array( '0', '_NAVEROKTUNE_', '__NOTOC__' ),
        'nogallery'                 => array( '0', '_GALERÎTUNE_', '__NOGALLERY__' ),
        'toc'                       => array( '0', '_NAVEROK_', '__TOC__' ),
-       'currentmonth1'             => array( '1', 'MEHANIHA1', 'CURRENTMONTH1' ),
+       'currentmonth1'             => array( '1', 'MEHA_NIHA_1', 'CURRENTMONTH1' ),
        'currentday'                => array( '1', 'ROJA_NIHA', 'CURRENTDAY' ),
        'currentday2'               => array( '1', 'ROJA_NIHA2', 'CURRENTDAY2' ),
        'currenttime'               => array( '1', 'DEMA_NIHA', 'CURRENTTIME' ),
@@ -105,6 +105,8 @@ $magicWords = array(
        'language'                  => array( '0', '#ZIMAN', '#LANGUAGE:' ),
        'numberofadmins'            => array( '1', 'HEJMARA_RÊVEBERAN', 'NUMBEROFADMINS' ),
        'special'                   => array( '0', 'taybet', 'special' ),
+       'pagesincategory_all'       => array( '0', 'hemû', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'rûpel', 'pages' ),
 );
 
 $messages = array(
index da0115d..6fd75d9 100644 (file)
@@ -60,14 +60,13 @@ $namespaceAliases = array(
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'DevnydhyoryonByw' ),
+       'Activeusers'               => array( 'DevnydhyoryonVyw' ),
        'Allmessages'               => array( 'OllMessajys' ),
        'Allpages'                  => array( 'OllFolennow' ),
        'Ancientpages'              => array( 'FolennowKoth' ),
        'Badtitle'                  => array( 'TitelDrog' ),
        'Blankpage'                 => array( 'FolenWag' ),
        'Block'                     => array( 'Difenna' ),
-       'Blockme'                   => array( 'GulOwDifen' ),
        'Booksources'               => array( 'PennfentynyowLyver' ),
        'BrokenRedirects'           => array( 'DaskedyansowTerrys' ),
        'Categories'                => array( 'Klassys' ),
@@ -79,10 +78,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'FormyaAkont' ),
        'Deadendpages'              => array( 'FolennowFordhDhall' ),
        'DeletedContributions'      => array( 'KevrohowDiles' ),
-       'Disambiguations'           => array( 'Diamstyryansow' ),
        'DoubleRedirects'           => array( 'DaswedyansowDewblek' ),
-       'EditWatchlist'             => array( 'ChanjyaOwRolGolya' ),
+       'EditWatchlist'             => array( 'ChanjyaOwRolWolya' ),
        'Emailuser'                 => array( 'EbostyaDevnydhyer' ),
+       'ExpandTemplates'           => array( 'BrasheSkantlyns' ),
        'Export'                    => array( 'Esperthi' ),
        'Fewestrevisions'           => array( 'AnLyhaAmendyansow' ),
        'Filepath'                  => array( 'HynsAnFolen' ),
@@ -153,36 +152,36 @@ $specialPageAliases = array(
        'Wantedfiles'               => array( 'RestrennowHwansus' ),
        'Wantedpages'               => array( 'FolennowHwansus' ),
        'Wantedtemplates'           => array( 'SkantlynsHwansus' ),
-       'Watchlist'                 => array( 'Rol_golya' ),
+       'Watchlist'                 => array( 'Rol_wolya' ),
        'Whatlinkshere'             => array( 'OwKevrennaOmma' ),
        'Withoutinterwiki'          => array( 'HebInterwiki' ),
 );
 
 $magicWords = array(
-       'redirect'                  => array( '0', '#DASWEDYANS', '#REDIRECT' ),
+       'redirect'                  => array( '0', '#DASKEDYANS', '#REDIRECT' ),
        'numberofpages'             => array( '1', 'NIVERAFOLENNOW', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', 'NIVERAERTHYGLOW', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', 'NIVERARESTRENNOW', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'NIVERADHEVNYDHYORYON', 'NUMBEROFUSERS' ),
-       'numberofactiveusers'       => array( '1', 'NIVERADHEVNYDHYORYONVEW', 'NUMBEROFACTIVEUSERS' ),
+       'numberofactiveusers'       => array( '1', 'NIVERADHEVNYDHYORYONVYW', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', 'NIVERAJANJYOW', 'NUMBEROFEDITS' ),
-       'numberofviews'             => array( '1', 'NIVERAWELOW', 'NUMBEROFVIEWS' ),
+       'numberofviews'             => array( '1', 'NIVERAWELYANSOW', 'NUMBEROFVIEWS' ),
        'pagename'                  => array( '1', 'HANOWANFOLEN', 'PAGENAME' ),
        'fullpagename'              => array( '1', 'HANOWLEUNANFOLEN', 'FULLPAGENAME' ),
        'img_thumbnail'             => array( '1', 'skeusennik', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'skeusennik=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'dyhow', 'right' ),
-       'img_left'                  => array( '1', 'cledh', 'left' ),
+       'img_left'                  => array( '1', 'kledh', 'left' ),
        'img_none'                  => array( '1', 'nagonan', 'none' ),
-       'img_center'                => array( '1', 'cresel', 'center', 'centre' ),
+       'img_center'                => array( '1', 'kresel', 'center', 'centre' ),
        'img_framed'                => array( '1', 'fremys', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'hebfram', 'frameless' ),
        'img_page'                  => array( '1', 'folen=$1', 'folen_$1', 'page=$1', 'page $1' ),
        'img_top'                   => array( '1', 'gwartha', 'top' ),
-       'img_text_top'              => array( '1', 'text-gwartha', 'text-top' ),
-       'img_middle'                => array( '1', 'cres', 'middle' ),
+       'img_text_top'              => array( '1', 'tekst-gwartha', 'text-top' ),
+       'img_middle'                => array( '1', 'kres', 'middle' ),
        'img_bottom'                => array( '1', 'goles', 'bottom' ),
-       'img_text_bottom'           => array( '1', 'text-goles', 'text-bottom' ),
+       'img_text_bottom'           => array( '1', 'tekst-goles', 'text-bottom' ),
        'img_link'                  => array( '1', 'kevren=$1', 'link=$1' ),
        'sitename'                  => array( '1', 'HANOWANWIASVA', 'SITENAME' ),
        'pageid'                    => array( '0', 'IDANFOLEN', 'PAGEID' ),
@@ -190,18 +189,18 @@ $magicWords = array(
        'servername'                => array( '0', 'HANOWANSERVYER', 'SERVERNAME' ),
        'grammar'                   => array( '0', 'GRAMASEK:', 'GRAMMAR:' ),
        'fullurl'                   => array( '0', 'URLLEUN:', 'FULLURL:' ),
-       'displaytitle'              => array( '1', 'DISQWEDHESANTITEL', 'DISPLAYTITLE' ),
+       'displaytitle'              => array( '1', 'DISKWEDHESANTITEL', 'DISPLAYTITLE' ),
        'language'                  => array( '0', '#YETH:', '#LANGUAGE:' ),
        'numberofadmins'            => array( '1', 'NIVERAVENYSTRORYON', 'NUMBEROFADMINS' ),
        'special'                   => array( '0', 'arbennek', 'special' ),
-       'filepath'                  => array( '0', 'HENSANFOLEN:', 'FILEPATH:' ),
-       'hiddencat'                 => array( '1', '__CLASSCUDHYS__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', 'RESTRENNOWYNCLASS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                  => array( '1', 'MENSANRESTREN', 'PAGESIZE' ),
+       'filepath'                  => array( '0', 'HYNSANFOLEN:', 'FILEPATH:' ),
+       'hiddencat'                 => array( '1', '__KLASSKUDHYS__', '__HIDDENCAT__' ),
+       'pagesincategory'           => array( '1', 'RESTRENNOWYNKLASS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                  => array( '1', 'MYNSANRESTREN', 'PAGESIZE' ),
        'index'                     => array( '1', '__MENEGVA__', '__INDEX__' ),
        'noindex'                   => array( '1', '__HEBMENEGVA__', '__NOINDEX__' ),
        'numberingroup'             => array( '1', 'NIVERYNBAGAS', 'NUMBERINGROUP', 'NUMINGROUP' ),
-       'url_path'                  => array( '0', 'HENS', 'PATH' ),
+       'url_path'                  => array( '0', 'HYNS', 'PATH' ),
        'pagesincategory_all'       => array( '0', 'oll', 'all' ),
        'pagesincategory_pages'     => array( '0', 'folennow', 'pages' ),
 );
index 3900b58..df82069 100644 (file)
@@ -78,7 +78,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Paginae_veterrimae' ),
        'Blankpage'                 => array( 'Pagina_vacua' ),
        'Block'                     => array( 'Usorem_obstruere' ),
-       'Blockme'                   => array( 'Usor_obstructus' ),
        'Booksources'               => array( 'Librorum_fontes' ),
        'BrokenRedirects'           => array( 'Redirectiones_fractae' ),
        'Categories'                => array( 'Categoriae' ),
@@ -88,9 +87,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Rationem_creare' ),
        'Deadendpages'              => array( 'Paginae_sine_nexu' ),
        'DeletedContributions'      => array( 'Conlationes_deletae', 'Conlationes_usoris_deletae' ),
-       'Disambiguations'           => array( 'Paginae_disambiguationis', 'Disambiguationes' ),
        'DoubleRedirects'           => array( 'Redirectiones_duplices' ),
        'Emailuser'                 => array( 'Litteras_electronicas_usori_mittere', 'Littera_electronica' ),
+       'ExpandTemplates'           => array( 'Formulas_resolvere' ),
        'Export'                    => array( 'Exportare', 'Paginas_exportare' ),
        'Fewestrevisions'           => array( 'Paginae_minime_mutatae' ),
        'FileDuplicateSearch'       => array( 'Quaerere_fasciculos_duplices', 'Quaerere_imagines_duplices' ),
index 15f65ae..7e31f50 100644 (file)
@@ -80,7 +80,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'HojasViejas' ),
        'Blankpage'                 => array( 'VaziarHoja' ),
        'Block'                     => array( 'Bloquear' ),
-       'Blockme'                   => array( 'Bloquearme' ),
        'Booksources'               => array( 'FuentesDeLivros' ),
        'BrokenRedirects'           => array( 'DireksionesBozeadas' ),
        'Categories'                => array( 'Katēggorías' ),
@@ -91,10 +90,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'KrîarCuento' ),
        'Deadendpages'              => array( 'HojasSinAtamientos' ),
        'DeletedContributions'      => array( 'AjustamientosEfassados' ),
-       'Disambiguations'           => array( 'Apartamiento_de_senso' ),
        'DoubleRedirects'           => array( 'DireksionesDobles' ),
        'EditWatchlist'             => array( 'TrocarLista_de_Akavidamiento' ),
        'Emailuser'                 => array( 'MandarLetralUsador' ),
+       'ExpandTemplates'           => array( 'AlargarXabblones' ),
        'Export'                    => array( 'AktarearAfuera' ),
        'Fewestrevisions'           => array( 'MankoEddisyones' ),
        'FileDuplicateSearch'       => array( 'BuscarDosyasDobles' ),
index 2702c19..cea0406 100644 (file)
@@ -57,7 +57,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Falschen_Titel' ),
        'Blankpage'                 => array( 'Eidel_Säit' ),
        'Block'                     => array( 'Spären' ),
-       'Blockme'                   => array( 'Mech_spären' ),
        'Booksources'               => array( 'Bicher_mat_hirer_ISBN_sichen' ),
        'BrokenRedirects'           => array( 'Futtis_Viruleedungen' ),
        'Categories'                => array( 'Kategorien' ),
@@ -69,10 +68,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Benotzerkont_opmaachen' ),
        'Deadendpages'              => array( 'Sakgaasse-Säiten' ),
        'DeletedContributions'      => array( 'Geläschte_Kontributiounen' ),
-       'Disambiguations'           => array( 'Homonymie' ),
        'DoubleRedirects'           => array( 'Duebel_Viruleedungen' ),
        'EditWatchlist'             => array( 'Iwwerwaachungslëscht_änneren' ),
        'Emailuser'                 => array( 'Dësem_Benotzer_eng_E-Mail_schécken' ),
+       'ExpandTemplates'           => array( 'Schablounen_erweideren' ),
        'Export'                    => array( 'Exportéieren' ),
        'Fewestrevisions'           => array( 'Säite_mat_de_mannsten_Ännerungen' ),
        'FileDuplicateSearch'       => array( 'No_duebele_Fichieren_sichen' ),
@@ -116,6 +115,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Protegéiert_Säiten' ),
        'Protectedtitles'           => array( 'Gespaarte_Säiten' ),
        'Randompage'                => array( 'Zoufälleg_Säit' ),
+       'RandomInCategory'          => array( 'Zoufälleg_Säit_aus_der_Kategorie' ),
        'Randomredirect'            => array( 'Zoufälleg_Viruleedung' ),
        'Recentchanges'             => array( 'Rezent_Ännerungen' ),
        'Recentchangeslinked'       => array( 'Ännerungen_op_verlinkte_Säiten' ),
@@ -593,6 +593,7 @@ Den Administrateur den d\'Schreiwe gespaart huet, huet dës Erklärung uginn: "$
 'invalidtitle-unknownnamespace' => 'Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text "$2"',
 'exception-nologin' => 'Net ageloggt',
 'exception-nologin-text' => '[[Special:Userlogin|Loggt Iech w.e.g. a]] fir op dës Säit oder dës Aktioun zougräifen ze kënnen.',
+'exception-nologin-text-manual' => 'Dir musst Iech $1 fir dës Säit kucken ze kënne respektiv fir dës Aktioun ze maachen.',
 
 # Virus scanner
 'virus-badscanner' => "Schlecht Konfiguratioun: onbekannte Virescanner: ''$1''",
index b46693d..9183538 100644 (file)
@@ -58,7 +58,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Audste_pagina\'s' ),
        'Blankpage'                 => array( 'Laeg_pagina\'s' ),
        'Block'                     => array( 'Blokkere' ),
-       'Blockme'                   => array( 'Blokkeer_mich' ),
        'Booksources'               => array( 'Bookwinkele' ),
        'BrokenRedirects'           => array( 'Gebraoke_doorverwiezinge' ),
        'Categories'                => array( 'Categorieë' ),
@@ -68,7 +67,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Gebroeker_aonmake' ),
        'Deadendpages'              => array( 'Doedloupende_pagina\'s' ),
        'DeletedContributions'      => array( 'Eweggesjafde_biedrage' ),
-       'Disambiguations'           => array( 'Verdudelikingspagina\'s' ),
        'DoubleRedirects'           => array( 'Dobbel_doorverwiezinge' ),
        'Emailuser'                 => array( 'E-maile' ),
        'Export'                    => array( 'Exportere' ),
index af073c6..6a3f1f5 100644 (file)
@@ -55,7 +55,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Tûtte e paggine' ),
        'Ancientpages'              => array( 'Paggine meno reçenti' ),
        'Block'                     => array( 'Blocca' ),
-       'Blockme'                   => array( 'BloccaProxy' ),
        'Booksources'               => array( 'RiçercaISBN' ),
        'Categories'                => array( 'Categorîe' ),
        'ChangePassword'            => array( 'Rimposta paròlla d\'ordine' ),
index d859eca..aa8317b 100644 (file)
@@ -75,7 +75,6 @@ $specialPageAliases = array(
        'BrokenRedirects'           => array( 'RedirezionS-cepada' ),
        'Categories'                => array( 'Categurij' ),
        'CreateAccount'             => array( 'CreaCünt' ),
-       'Disambiguations'           => array( 'Desambiguazion' ),
        'DoubleRedirects'           => array( 'RedirezionDubia' ),
        'Listadmins'                => array( 'ListaAministradur' ),
        'Listfiles'                 => array( 'Imagin' ),
index e088865..8e1a7d7 100644 (file)
@@ -42,7 +42,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'ການປະກອບສ່ວນ' ),
        'CreateAccount'             => array( 'ສ້າງບັນຊີ' ),
        'Deadendpages'              => array( 'ໜ້າທີ່ບໍ່ມີໜ້າໃດໂຍງມາ' ),
-       'Disambiguations'           => array( 'ແກ້ຄວາມກຳກວມ' ),
        'DoubleRedirects'           => array( 'ໂອນຊ້ອນ' ),
        'Listadmins'                => array( 'ລາຍຊື່ຜູ້ບໍລິຫານລະບົບ' ),
        'Listbots'                  => array( 'ລາຍຊື່ບອຕ' ),
index e96c32e..d55d4e2 100644 (file)
@@ -40,15 +40,18 @@ $messages = array(
 'tog-oldsig' => 'امضايی هيئش:',
 'tog-uselivepreview' => 'د پیش سیل زنه استفاده کو',
 'tog-watchlisthideown' => 'قام كو ويرايشت منه د',
+'tog-watchlisthideminor' => 'قام كو ويرايشت کؤچک منه د',
 'tog-diffonly' => 'بلگیایی که شومل فرخیا هارن نشون نیه',
 'tog-showhiddencats' => 'دسه يا قام بيئنه نشون بيه',
 
 'underline-always' => 'هميشه',
 'underline-never' => 'هيژوخت',
+'underline-default' => 'پوسه یا مرورگر پیش فرض',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'راساگه فونت شلک نه ویرایشت کو',
 'editfont-default' => 'مرورگر پیش بینی بیه',
+'editfont-monospace' => 'فونت تک بلگه ای',
 'editfont-sansserif' => 'سان سریف فونت',
 'editfont-serif' => 'فونت سريف',
 
@@ -129,6 +132,7 @@ $messages = array(
 'listingcontinuesabbrev' => 'دماله',
 'index-category' => 'بلگيا سيائه دار',
 'noindex-category' => 'بلگيا بی سيائه',
+'broken-file-category' => 'بلگیایی که هوم پیوند فایلیا اشکسه دارن',
 
 'about' => 'دباره',
 'article' => 'محتوا بلگه',
@@ -191,6 +195,7 @@ $messages = array(
 'delete' => 'حذف كردن',
 'deletethispage' => 'ای بلگه نه حذف بكيد',
 'undeletethispage' => 'ای بلگه نه حذف نكيد',
+'undelete_short' => 'پاک نکو {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
 'protect' => 'حمايت بكيد',
 'protect_change' => 'آلشت بكيد',
 'protectthispage' => 'ای بلگه نه حفاظت بكيد',
@@ -216,6 +221,7 @@ $messages = array(
 'viewtalkpage' => 'ديئن چك چنه يا',
 'otherlanguages' => 'د زونيا هنی',
 'redirectedfrom' => '(ورگشتن د$1)',
+'redirectpagesub' => 'بلگه دوباره ورگشتن',
 'lastmodifiedat' => 'ای بلگه تازه ايا وضع آلشت بيه د $1, د $2.',
 'viewcount' => 'ای بلگه قاول دسترسی بيه {{PLURAL:$1|once|$1 times}}.',
 'protectedpage' => 'بلگه حفاظت بيه',
@@ -268,6 +274,7 @@ $1',
 'thisisdeleted' => 'دیئن یا ورگنين $1?',
 'viewdeleted' => 'دیئن$1?',
 'feedlinks' => 'غذا دهنه:',
+'feed-invalid' => 'نوع مشترک بین خورحو نامعتور',
 'site-rss-feed' => 'خورخو RSS سی $1',
 'site-atom-feed' => 'خور حون Atom سی $1',
 'page-rss-feed' => 'خورخو RSS سی «$1»',
@@ -295,6 +302,7 @@ $1',
 # General errors
 'error' => 'خطا',
 'databaseerror' => 'خطا د جاگه دونسمنيا',
+'databaseerror-text' => 'یه خطا جست کردن د پایگا داده پیش اوما.یه ممکنه یه در کار ونن د نرم اوزار پیش بیاره',
 'databaseerror-textcl' => 'خطاجست گرتن پايگاه دونسمنيا پيشومد كرده',
 'databaseerror-query' => 'نوم گشتن: $1',
 'databaseerror-function' => 'تابع:$1',
@@ -345,6 +353,7 @@ $1',
 'remembermypassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
 'userlogin-remembermypassword' => 'منه مئن سيستم وادار',
 'userlogin-signwithsecure' => 'د وصل بيئن امن استفاده كو',
+'yourdomainname' => 'پوشگیر شما:',
 'password-change-forbidden' => 'شما نتونید پاسوردیانه د ای ویکی آلشت بکید',
 'login' => 'اومائن',
 'nav-login-createaccount' => ' اومائن د سيستم/راس كردن حساو',
@@ -381,13 +390,16 @@ $1',
 'createacct-another-submit' => 'يه گل حساوهنی راست بكيد',
 'createacct-benefit-heading' => '{{نوم مالگه}} وه دس خلکی چی شما راس بیه.',
 'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتا}}',
+'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگیا}}',
 'badretype' => 'پاسوردی که شما دئیته مطاوقت ناره',
 'userexists' => 'کارور نوم که وارد بیه د ایسه استفاده بوئه.
 لطف بکید یه گل نوم هنی انتخاو بکید',
 'loginerror' => 'خطا اومائن د سيستم',
 'createacct-error' => 'خطا راس كردن حساو',
 'createaccounterror' => 'نبوئه حساو راس بكيد:$1',
+'noname' => 'شما یه گل نوم کاروری خو ناریت',
 'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
+'loginsuccess' => 'شما ایسه وارد بیته {{SITENAME}} د دعنوان "$1".\'',
 'nosuchusershort' => 'چنو کاروری وا ای نوم $1 نی ئیش.
 نیسنن تونه دوواره نئری بکیتو',
 'nouserspecified' => 'شما باید یه نوم کارور اختصاص بئیتو',
@@ -400,16 +412,19 @@ $1',
 'password-login-forbidden' => 'وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.',
 'mailmypassword' => 'رمز هنی نه ايميل بكيد',
 'passwordremindertitle' => 'پاسورد موقت تازه سی {{SITENAME}}',
+'noemail' => 'هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.',
 'noemailcreate' => 'شما باید یه نشونی نومه معتور فراهم بکید',
 'mailerror' => 'خطا داره کل موئه:$1',
 'emailconfirmlink' => 'نشونی ايملتو نه محكم بكيد',
 'emaildisabled' => 'ای مالگه نتونه ایمیل بفرسنه',
 'accountcreated' => 'حساو راس بی',
 'createaccount-title' => 'حساو راس کرده سی  {{SITENAME}}',
+'usernamehasherror' => 'نوم کاربری نتونه شومل نیسه یا هش بوئه',
 'login-abort-generic' => 'اومائن وامین تو شکست حرد-شکست حرده',
 'loginlanguagelabel' => 'زون:$1',
 
 # Email sending
+'php-mail-error-unknown' => "خطا ناشناس مئن تاوع  PHP's mail()",
 'user-mail-no-addy' => 'سی کل کردن ایمیل بی نشونه ایمیل صورت گرته',
 
 # Change password dialog
@@ -426,6 +441,7 @@ $1',
 'resetpass-temp-password' => 'رمز موقت:',
 
 # Special:PasswordReset
+'passwordreset' => 'د نۈ وارد كردن رمز',
 'passwordreset-legend' => 'د نۈ وارد كردن رمز',
 'passwordreset-username' => 'نوم كاروری:',
 'passwordreset-domain' => 'پوشگیر',
@@ -515,6 +531,7 @@ $1',
 پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
 'edit-conflict' => 'مخالفت نه ویرایشت بکید',
 'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
+'defaultmessagetext' => 'متن پیغوم پیش فرض',
 
 # Content models
 'content-model-wikitext' => 'ويكی متن',
@@ -531,6 +548,7 @@ $1',
 
 # History pages
 'viewpagelogs' => 'سی ای بلگه بوینتو.',
+'currentrev' => 'آخرین دوواره دیئن',
 'currentrev-asof' => 'آخرين دووار ديئن چی $1',
 'revisionasof' => 'دوواره ديئن $1',
 'revision-info' => 'دوواره سیل بیه چی $1 وا $2',
@@ -549,6 +567,7 @@ $1',
 'historyempty' => '(حالی)',
 
 # Revision feed
+'history-feed-title' => 'ویرگار دوواره دیئن',
 'history-feed-item-nocomment' => '$1 د
 $2',
 
@@ -683,18 +702,33 @@ $2',
 
 # User rights
 'userrights-user-editname' => 'نوم كاروری ته وارد كو',
+'editusergroup' => 'ویرایشت گرویا کاروری',
+'userrights-editusergroup' => 'ویرایشت گرویا کاروری',
+'saveusergroups' => 'ذخیره کرد گرویا کاروری',
+'userrights-groupsmember' => 'اندوم:',
 'userrights-reason' => 'دليل:',
 
 # Groups
 'group' => 'گرو',
+'group-user' => 'کاروریا',
+'group-autoconfirmed' => 'کاروریا خودوادار',
 'group-bot' => 'بتیا',
+'group-sysop' => 'مدیریا',
+'group-bureaucrat' => 'بروکراتیا',
 'group-all' => '(همه)',
 
+# Rights
+'right-read' => 'حنن بلگیا',
+'right-edit' => 'ویرایشت بلگیا',
+
 # Special:Log/newusers
 'newuserlogpage' => 'راس بیه وا کارور',
 
 # Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'ای بلگه نه بحون',
 'action-edit' => 'ای بلگه نه ويرايشت بكيد',
+'action-createpage' => 'راس کردن بلگیا',
+'action-move' => 'لی بلگه جا وه جا کو',
 'action-delete' => 'ای بلگه نه پاک کو',
 'action-deleterevision' => 'ای بازدئین پاک کو',
 'action-undelete' => 'ای بلگه نه پاک نکو',
index 8573545..f0b02fb 100644 (file)
@@ -63,7 +63,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Seniausi_puslapiai' ),
        'Blankpage'                 => array( 'Tuščias_puslapis' ),
        'Block'                     => array( 'Blokuoti_IP' ),
-       'Blockme'                   => array( 'Užblokuoti_mane' ),
        'Booksources'               => array( 'Knygų_šaltiniai' ),
        'BrokenRedirects'           => array( 'Peradresavimai_į_niekur' ),
        'Categories'                => array( 'Kategorijos' ),
@@ -73,7 +72,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Sukurti_paskyrą' ),
        'Deadendpages'              => array( 'Puslapiai-aklavietės' ),
        'DeletedContributions'      => array( 'Ištrintas_indėlis' ),
-       'Disambiguations'           => array( 'Nukreipiamieji' ),
        'DoubleRedirects'           => array( 'Dvigubi_peradesavimai' ),
        'Emailuser'                 => array( 'Rašyti_laišką' ),
        'Export'                    => array( 'Eksportas' ),
index e7eaf7b..625229e 100644 (file)
@@ -34,7 +34,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '增簿' ),
        'Deadendpages'              => array( '此無路也' ),
        'DeletedContributions'      => array( '已刪之積' ),
-       'Disambiguations'           => array( '釋義' ),
        'DoubleRedirects'           => array( '窮渡' ),
        'EditWatchlist'             => array( '治哨站' ),
        'Emailuser'                 => array( '遺書' ),
index 42540c3..5913c44 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'КунардоньЛопат' ),
        'Blankpage'                 => array( 'ШаваЛопа' ),
        'Block'                     => array( 'СёлгомаIP' ),
-       'Blockme'                   => array( 'Сёлгомак' ),
        'Booksources'               => array( 'КинигаЛисьмот' ),
        'BrokenRedirects'           => array( 'СиньтьфШашфтфксне' ),
        'Categories'                => array( 'Категориет' ),
@@ -69,7 +68,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Сёрматфтомс' ),
        'Deadendpages'              => array( 'ПеньЛопат' ),
        'DeletedContributions'      => array( 'НардафПутксне' ),
-       'Disambiguations'           => array( 'Лама Смусть' ),
        'DoubleRedirects'           => array( 'КафонзафШашфтфксне' ),
        'Emailuser'                 => array( 'АдресТиись' ),
        'Export'                    => array( 'Вимс' ),
index 952aad2..7f0486f 100644 (file)
@@ -130,7 +130,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Pejy_antitra' ),
        'Blankpage'                 => array( 'Pejy_fotsy' ),
        'Block'                     => array( 'Hanakana' ),
-       'Blockme'                   => array( 'Sakano_ahy' ),
        'Booksources'               => array( 'Boky_loharano' ),
        'BrokenRedirects'           => array( 'Fihodinana_tapaka' ),
        'Categories'                => array( 'Sokajy' ),
@@ -141,7 +140,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Hamorona_kaonty' ),
        'Deadendpages'              => array( 'Pejy_tsy_misy_rohy' ),
        'DeletedContributions'      => array( 'Fandraisan\'anjara_voafafa' ),
-       'Disambiguations'           => array( 'Pejy_mitovy_anarana' ),
        'DoubleRedirects'           => array( 'Fihodinana_miroa' ),
        'EditWatchlist'             => array( 'Hanova_ny_pejy_arahana' ),
        'Emailuser'                 => array( 'Handefa_imailaka' ),
index 6bee8a8..ef2f2de 100644 (file)
@@ -21,7 +21,7 @@ $fallback = 'id';
 $namespaceNames = array(
        NS_MEDIA            => 'Media',
        NS_SPECIAL          => 'Istimewa',
-       NS_TALK             => 'Maota',
+       NS_TALK             => 'Rundiang',
        NS_USER             => 'Pangguno',
        NS_USER_TALK        => 'Rundiang_Pangguno',
        NS_PROJECT_TALK     => 'Rundiang_$1',
@@ -53,41 +53,43 @@ $namespaceAliases = array(
        'Pembicaraan_Bantuan'   => NS_HELP_TALK,
        'Kategori'              => NS_CATEGORY,
        'Pembicaraan_Kategori'  => NS_CATEGORY_TALK,
+
+       'Maota'                 => NS_TALK,
 );
 
 $specialPageAliases = array(
        'Activeusers'               => array( 'PanggunoAktip', 'Pangguno_aktip' ),
-       'Allmessages'               => array( 'PasanSistim', 'Pasan_sistem' ),
+       'Allmessages'               => array( 'PasanSistim', 'Pasan_sistim' ),
        'Allpages'                  => array( 'DaptaLaman', 'Dapta_laman' ),
        'Ancientpages'              => array( 'LamanLamo', 'Laman_lamo' ),
        'Badtitle'                  => array( 'JudulBuruak', 'Judul_indak_rancak' ),
        'Blankpage'                 => array( 'LamanKosong', 'Laman_kosong' ),
-       'Block'                     => array( 'Blokir', 'IPkanaiBlok', 'PanggunoTablokir' ),
-       'Blockme'                   => array( 'BlokDen', 'BlokirAmbo' ),
+       'Block'                     => array( 'Sakek', 'IPkanaiSakek', 'PanggunoTasakek' ),
        'Booksources'               => array( 'SumberBuku', 'Sumber_buku' ),
        'BrokenRedirects'           => array( 'PangaliahanRusak', 'Pangaliahan_rusak' ),
        'Categories'                => array( 'Kategori' ),
        'ChangeEmail'               => array( 'GantiSurel', 'Ganti_surel' ),
-       'ChangePassword'            => array( 'GantiSandi', 'TukaSandi', 'TukaKatoSandi' ),
+       'ChangePassword'            => array( 'GantiSandi', 'TukaKatoSandi' ),
        'ComparePages'              => array( 'BandiangkanLaman', 'Bandiangkan_laman' ),
        'Confirmemail'              => array( 'PastikanSurel', 'Pastikan_surel' ),
-       'Contributions'             => array( 'SuntiangPangguno', 'Suntiangan_pangguno' ),
+       'Contributions'             => array( 'SuntiangPangguno', 'Jariah' ),
        'CreateAccount'             => array( 'BuekAkun', 'Buek_akun' ),
        'Deadendpages'              => array( 'LamanBuntu', 'Laman_buntu' ),
        'DeletedContributions'      => array( 'SuntiangDihapuih', 'Suntiangan_kanai_hapuih' ),
-       'Disambiguations'           => array( 'SamoArti', 'Samo_arti' ),
-       'EditWatchlist'             => array( 'SuntiangDaptaPantau', 'Suntiang_dapta_pantau' ),
+       'DoubleRedirects'           => array( 'PangaliahanGanda', 'Pangaliahan_ganda' ),
+       'EditWatchlist'             => array( 'SuntiangPantauan', 'Suntiang_pantauan' ),
        'Emailuser'                 => array( 'SurelPangguno', 'Surel_pangguno' ),
        'Export'                    => array( 'Ekspor' ),
-       'Fewestrevisions'           => array( 'ParubahanTasaketek', 'Parubahan_tasaketek' ),
+       'Fewestrevisions'           => array( 'ParubahanTasangenek', 'Parubahan_tasangenek' ),
        'FileDuplicateSearch'       => array( 'CariBerkasDuplikat', 'Cari_berkas_duplikat' ),
        'Filepath'                  => array( 'LokasiBerkas', 'Lokasi_berkas' ),
        'Import'                    => array( 'Impor' ),
-       'Invalidateemail'           => array( 'BatalSurel', 'Batalkan_surel' ),
+       'Invalidateemail'           => array( 'BatalSurel', 'Batalan_surel' ),
        'JavaScriptTest'            => array( 'TesSkripJava', 'Tes_skrip_Java' ),
-       'BlockList'                 => array( 'DaptaBlokir', 'Dapta_pemblokiran', 'Dapta_IP_diblok' ),
-       'LinkSearch'                => array( 'CariTautan', 'Cari_tautan' ),
-       'Listadmins'                => array( 'DaptaPanguruih' ),
+       'BlockList'                 => array( 'DaptaSakek', 'Dapta_pemblokiran', 'Dapta_IP_disakek' ),
+       'LinkSearch'                => array( 'CariPautan', 'Cari_pautan' ),
+       'Listadmins'                => array( 'DaptaPanguruih', 'Dapta_panguruih' ),
+       'Listbots'                  => array( 'DaptaBot' ),
        'Listfiles'                 => array( 'DaptaBerkas', 'DaptaGamba' ),
        'Listgrouprights'           => array( 'DaptaHakKalompok', 'HakKalompokPangguno' ),
        'Listredirects'             => array( 'DaptaPangaliahan', 'Dapta_pangaliahan' ),
@@ -106,9 +108,58 @@ $specialPageAliases = array(
        'Mostlinkedtemplates'       => array( 'TemplatTautanTabanyak', 'TemplatAcokDipakai' ),
        'Mostrevisions'             => array( 'ParubahanTabanyak' ),
        'Movepage'                  => array( 'PindahLaman', 'Pindahkan_laman' ),
-       'Mycontributions'           => array( 'SuntianganAmbo', 'Suntiangan_ambo' ),
-       'Mypage'                    => array( 'LamanDenai', 'Laman_denai' ),
-       'Mytalk'                    => array( 'DiskusiAmbo' ),
+       'Mycontributions'           => array( 'JariahDenai', 'Jariah_Ambo' ),
+       'Mypage'                    => array( 'LamanDenai', 'Laman_Ambo' ),
+       'Mytalk'                    => array( 'RundiangDenai', 'Laman_rundiang__Ambo' ),
+       'Myuploads'                 => array( 'DenaiMuek', 'Nan_Ambo_muek' ),
+       'Newimages'                 => array( 'BerkasBaru', 'Berkas_baru' ),
+       'Newpages'                  => array( 'LamanBaru', 'Laman_baru' ),
+       'PagesWithProp'             => array( 'LamanJoProperti', 'Laman_jo_properti' ),
+       'PasswordReset'             => array( 'TukaSandi', 'Tuka_baliak_sandi' ),
+       'PermanentLink'             => array( 'PautanPamanen', 'Pautan_pamanen' ),
+       'Popularpages'              => array( 'LamanPopuler', 'Laman_populer' ),
+       'Preferences'               => array( 'Rujuakan' ),
+       'Prefixindex'               => array( 'DaptaAwalan' ),
+       'Protectedpages'            => array( 'LamanTalinduang', 'Laman_nan_dilinduang' ),
+       'Protectedtitles'           => array( 'JudulTalinduang' ),
+       'Randompage'                => array( 'LamanSumbarang' ),
+       'Randomredirect'            => array( 'PangaliahanSumbarang' ),
+       'Recentchanges'             => array( 'ParubahanBaru' ),
+       'Recentchangeslinked'       => array( 'ParubahanTakaik' ),
+       'Redirect'                  => array( 'Pangaliahan' ),
+       'Revisiondelete'            => array( 'HapuihRevisi' ),
+       'Search'                    => array( 'Cari', 'Pancarian' ),
+       'Shortpages'                => array( 'LamanPendek' ),
+       'Specialpages'              => array( 'LamanIstimewa' ),
+       'Unblock'                   => array( 'PambatalanSakek' ),
+       'Uncategorizedcategories'   => array( 'KategoriIndakTakategori' ),
+       'Uncategorizedimages'       => array( 'BerkasIndakTakategori' ),
+       'Uncategorizedpages'        => array( 'LamanIndakTakategori' ),
+       'Uncategorizedtemplates'    => array( 'TemplatIndakTakategori' ),
+       'Undelete'                  => array( 'BatalHapuih' ),
+       'Unlockdb'                  => array( 'BukakKunciBD' ),
+       'Unusedcategories'          => array( 'KategoriKosong' ),
+       'Unusedimages'              => array( 'BerkasIndakTapakai' ),
+       'Unusedtemplates'           => array( 'TemplatIndakTapakai' ),
+       'Unwatchedpages'            => array( 'LamanIndakTapantau' ),
+       'Upload'                    => array( 'Muek' ),
+       'Userlogin'                 => array( 'MasuakLog' ),
+       'Userlogout'                => array( 'KaluaLog' ),
+       'Userrights'                => array( 'HakPangguno' ),
+       'Wantedcategories'          => array( 'KategoriNanParalu' ),
+       'Wantedfiles'               => array( 'BerkasNanParalu' ),
+       'Wantedpages'               => array( 'LamanNanParalu' ),
+       'Wantedtemplates'           => array( 'TemplatNanParalu' ),
+       'Watchlist'                 => array( 'Pantauan' ),
+       'Whatlinkshere'             => array( 'PautanBaliak' ),
+       'Withoutinterwiki'          => array( 'InterwikiIndakAdo' ),
+);
+
+$magicWords = array(
+       'redirect'                  => array( '0', '#ALIAH', '#ALIH', '#REDIRECT' ),
+       'pagesincategory_all'       => array( '0', 'sado', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'laman', 'pages' ),
+       'pagesincategory_files'     => array( '0', 'berkas', 'files' ),
 );
 
 $messages = array(
index d97a460..4eb3ca2 100644 (file)
@@ -95,12 +95,12 @@ $dateFormats = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'АктивниКорисници' ),
        'Allmessages'               => array( 'СитеПораки' ),
+       'AllMyUploads'              => array( 'СитеМоиПодигања' ),
        'Allpages'                  => array( 'СитеСтраници' ),
        'Ancientpages'              => array( 'НајстариСтраници' ),
        'Badtitle'                  => array( 'Лошнаслов' ),
        'Blankpage'                 => array( 'ПразнаСтраница' ),
        'Block'                     => array( 'Блокирање', 'БлокIP', 'БлокирајКорисник' ),
-       'Blockme'                   => array( 'БлокирајМе' ),
        'Booksources'               => array( 'ПечатенИзвор' ),
        'BrokenRedirects'           => array( 'ПрекинатиПренасочувања' ),
        'Categories'                => array( 'Категории' ),
@@ -112,10 +112,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'СоздајКорисничкаСметка' ),
        'Deadendpages'              => array( 'ЌорсокакСтраници' ),
        'DeletedContributions'      => array( 'ИзбришаниПридонеси' ),
-       'Disambiguations'           => array( 'Појаснувања' ),
        'DoubleRedirects'           => array( 'ДвојниПренасочувања' ),
        'EditWatchlist'             => array( 'УредиНабљудувања' ),
        'Emailuser'                 => array( 'Пиши_е-пошта_на_корисникот' ),
+       'ExpandTemplates'           => array( 'ПрошириШаблони' ),
        'Export'                    => array( 'Извоз' ),
        'Fewestrevisions'           => array( 'НајмалкуРевизии' ),
        'FileDuplicateSearch'       => array( 'ПребарувањеДупликатПодатотека' ),
@@ -156,14 +156,16 @@ $specialPageAliases = array(
        'PermanentLink'             => array( 'ПостојанаВрска' ),
        'Popularpages'              => array( 'ПопуларниСтраници' ),
        'Preferences'               => array( 'Нагодувања' ),
-       'Prefixindex'               => array( 'Ð\98ндекÑ\81Ð\9dаÐ\9fÑ\80еÑ\84икÑ\81и' ),
+       'Prefixindex'               => array( 'Ð\98ндекÑ\81Ð\9dаÐ\9fÑ\80еÑ\82Ñ\81Ñ\82авки' ),
        'Protectedpages'            => array( 'ЗаштитениСтраници' ),
        'Protectedtitles'           => array( 'ЗаштитениНаслови' ),
        'Randompage'                => array( 'Случајна', 'СлучајнаСтраница' ),
+       'RandomInCategory'          => array( 'СлучајнаВоКатегорија' ),
        'Randomredirect'            => array( 'СлучајноПренасочување' ),
        'Recentchanges'             => array( 'СкорешниПромени' ),
        'Recentchangeslinked'       => array( 'ПоврзаниПромени' ),
        'Redirect'                  => array( 'Пренасочување' ),
+       'ResetTokens'               => array( 'ВратиОдновоЗнаци' ),
        'Revisiondelete'            => array( 'БришењеРевизија' ),
        'Search'                    => array( 'Барај' ),
        'Shortpages'                => array( 'КраткиСтраници' ),
@@ -254,6 +256,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'центар', 'ц', 'center', 'centre' ),
        'img_framed'                => array( '1', 'рамка', 'ворамка', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'безрамка', 'frameless' ),
+       'img_lang'                  => array( '1', 'јаз=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'страница=$1', 'страница_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'исправено', 'исправено=$1', 'исправено_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'граничник', 'граница', 'border' ),
@@ -293,6 +296,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'ГОДИНАНАРЕВИЗИЈА', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'ВРЕМЕНАРЕВИЗИЈА', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'КОРИСНИКНАНАРЕВИЗИЈА', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'ГОЛЕМИНАНАРЕВИЗИЈА', 'REVISIONSIZE' ),
        'plural'                    => array( '0', 'МНОЖИНА:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'ПОЛНАURL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'ПОЛНАURLE:', 'FULLURLE:' ),
index f51284c..d44532c 100644 (file)
@@ -86,12 +86,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'സജീവ_ഉപയോക്താക്കൾ' ),
        'Allmessages'               => array( 'സർവ്വസന്ദേശങ്ങൾ' ),
+       'AllMyUploads'              => array( 'എന്റെയെല്ലാഅപ്‌ലോഡുകളും', 'എന്റെയെല്ലാപ്രമാണങ്ങളും' ),
        'Allpages'                  => array( 'എല്ലാതാളുകളും' ),
        'Ancientpages'              => array( 'പുരാതന_താളുകൾ' ),
        'Badtitle'                  => array( 'മോശംതലക്കെട്ട്' ),
        'Blankpage'                 => array( 'ശൂന്യതാൾ' ),
        'Block'                     => array( 'തടയുക', 'ഐ.പി.തടയുക', 'ഉപയോക്തൃതടയൽ' ),
-       'Blockme'                   => array( 'എന്നെതടയുക' ),
        'Booksources'               => array( 'പുസ്തകസ്രോതസ്സുകൾ' ),
        'BrokenRedirects'           => array( 'പൊട്ടിയതിരിച്ചുവിടലുകൾ' ),
        'Categories'                => array( 'വർഗ്ഗങ്ങൾ' ),
@@ -103,10 +103,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'അംഗത്വമെടുക്കൽ' ),
        'Deadendpages'              => array( 'അന്ത്യസ്ഥാനത്തുള്ള_താളുകൾ' ),
        'DeletedContributions'      => array( 'മായ്ച്ച_സേവനങ്ങൾ' ),
-       'Disambiguations'           => array( 'വിവക്ഷിതങ്ങൾ' ),
        'DoubleRedirects'           => array( 'ഇരട്ടത്തിരിച്ചുവിടലുകൾ' ),
        'EditWatchlist'             => array( 'ശ്രദ്ധിക്കുന്നവയുടെപട്ടികതിരുത്തുക' ),
        'Emailuser'                 => array( 'ഉപയോക്തൃഇമെയിൽ' ),
+       'ExpandTemplates'           => array( 'ഫലകങ്ങൾ_വികസിപ്പിക്കുക' ),
        'Export'                    => array( 'കയറ്റുമതി' ),
        'Fewestrevisions'           => array( 'കുറഞ്ഞ_പുനരവലോകനങ്ങൾ' ),
        'FileDuplicateSearch'       => array( 'പ്രമാണത്തിന്റെ_അപരനുള്ള_തിരച്ചിൽ' ),
@@ -151,9 +151,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'സംരക്ഷിത_താളുകൾ' ),
        'Protectedtitles'           => array( 'സംരക്ഷിത_ശീർഷകങ്ങൾ' ),
        'Randompage'                => array( 'ക്രമരഹിതം', 'ക്രമരഹിതതാൾ' ),
+       'RandomInCategory'          => array( 'വർഗ്ഗത്തിൽനിന്ന്ക്രമരഹിതം' ),
        'Randomredirect'            => array( 'ക്രമരഹിതതിരിച്ചുവിടലുകൾ' ),
        'Recentchanges'             => array( 'സമീപകാലമാറ്റങ്ങൾ' ),
        'Recentchangeslinked'       => array( 'ബന്ധപ്പെട്ട_മാറ്റങ്ങൾ' ),
+       'Redirect'                  => array( 'തിരിച്ചുവിടൽ' ),
+       'ResetTokens'               => array( 'ചീട്ട്പുനഃസജ്ജീകരിക്കുക' ),
        'Revisiondelete'            => array( 'നാൾപ്പതിപ്പ്_മായ്ക്കൽ' ),
        'Search'                    => array( 'അന്വേഷണം' ),
        'Shortpages'                => array( 'ചെറിയ_താളുകൾ' ),
@@ -235,6 +238,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'താളിന്റെമുഴുവൻപേര്സമഗ്രം', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'അനുബന്ധതാളിന്റെപേര്‌', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'അനുബന്ധതാളിന്റെപേര്സമഗ്രം', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'മൂലതാളിന്റെപേര്', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'മൂലതാളിന്റെപേര്‌സമഗ്രം', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'അടിസ്ഥാനതാളിന്റെപേര്‌', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'അടിസ്ഥാനതാളിന്റെപേര്‌സമഗ്രം', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'സംവാദതാളിന്റെപേര്‌', 'TALKPAGENAME' ),
@@ -254,6 +259,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'നടുവിൽ', 'നടുക്ക്‌', 'center', 'centre' ),
        'img_framed'                => array( '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'ചട്ടരഹിതം', 'frameless' ),
+       'img_lang'                  => array( '1', 'ഭാഷ=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'താൾ=$1', 'താൾ_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'നേരേകുത്തനെ', 'നേരേകുത്തനെ=$1', 'നേരേകുത്തനെ_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'അതിർവര', 'border' ),
@@ -268,8 +274,10 @@ $magicWords = array(
        'img_link'                  => array( '1', 'കണ്ണി=$1', 'link=$1' ),
        'img_alt'                   => array( '1', 'പകരം=$1', 'alt=$1' ),
        'img_class'                 => array( '1', 'ശ്രേണി=$1', 'class=$1' ),
+       'int'                       => array( '0', 'സമ്പർക്കം:', 'INT:' ),
        'sitename'                  => array( '1', 'സൈറ്റിന്റെപേര്', 'SITENAME' ),
        'ns'                        => array( '0', 'നാമേ:', 'NS:' ),
+       'nse'                       => array( '0', 'നാമേസ:', 'NSE:' ),
        'localurl'                  => array( '0', 'ലോക്കൽയുആർഎൽ:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'ലോക്കൽയുആർഎൽഇ:', 'LOCALURLE:' ),
        'articlepath'               => array( '0', 'ലേഖനപഥം', 'ARTICLEPATH' ),
@@ -296,12 +304,16 @@ $magicWords = array(
        'revisionuser'              => array( '1', 'അവസാനംതിരുത്തിയയാൾ', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'ബഹുവചനം:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'പൂർണ്ണവിലാസം:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', 'പൂർണ്ണവിലാസംസമഗ്രം:', 'FULLURLE:' ),
+       'canonicalurl'              => array( '0', 'കാനോനിക്കൽവിലാസം:', 'CANONICALURL:' ),
+       'canonicalurle'             => array( '0', 'കാനോനിക്കൽവിലാസംസമഗ്രം:', 'CANONICALURLE:' ),
        'raw'                       => array( '0', 'അസംസ്കൃതം:', 'RAW:' ),
        'displaytitle'              => array( '1', 'ശീർഷകംപ്രദർശിപ്പിക്കുക', 'തലക്കെട്ട്പ്രദർശിപ്പിക്കുക', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'വ', 'R' ),
        'newsectionlink'            => array( '1', '__പുതിയവിഭാഗംകണ്ണി__', '__പുതിയഖണ്ഡിക്കണ്ണി__', '__NEWSECTIONLINK__' ),
        'nonewsectionlink'          => array( '1', '__പുതിയവിഭാഗംകണ്ണിവേണ്ട__', '__പുതിയഖണ്ഡിക്കണ്ണിവേണ്ട__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'ഈപതിപ്പ്', 'CURRENTVERSION' ),
+       'urlencode'                 => array( '0', 'വിലാസഗൂഢീകരണം:', 'URLENCODE:' ),
        'currenttimestamp'          => array( '1', 'സമയമുദ്ര', 'CURRENTTIMESTAMP' ),
        'localtimestamp'            => array( '1', 'പ്രാദേശികസമയമുദ്ര', 'LOCALTIMESTAMP' ),
        'directionmark'             => array( '1', 'ദിശാസൂചിക', 'DIRECTIONMARK', 'DIRMARK' ),
@@ -1745,7 +1757,7 @@ $1",
 'recentchanges-feed-description' => 'ഈ ഫീഡ് ഉപയോഗിച്ച് വിക്കിയിലെ പുതിയ മാറ്റങ്ങൾ നിരീക്ഷിക്കുക.',
 'recentchanges-label-newpage' => 'ഒരു പുതിയ താൾ സൃഷ്ടിച്ചിരിക്കുന്നു',
 'recentchanges-label-minor' => 'ഇതൊരു ചെറിയ തിരുത്താണ്',
-'recentchanges-label-bot' => 'à´\87à´¤àµ\8aà´°àµ\81 à´¯à´¨àµ\8dà´¤àµ\8dà´°à´\82 à´¨à´\9fà´¤àµ\8dതിയ തിരുത്താണ്',
+'recentchanges-label-bot' => 'à´\87à´¤àµ\8d à´¯à´¨àµ\8dà´¤àµ\8dà´°à´\82 à´\9aàµ\86à´¯àµ\8dà´¤ തിരുത്താണ്',
 'recentchanges-label-unpatrolled' => 'ഇതുവരെ റോന്തു ചുറ്റപ്പെടാത്ത ഒരു തിരുത്താണിത്',
 'recentchanges-label-plusminus' => 'താളിന്റെ വലിപ്പം ഇത്രയും ബൈറ്റുകൾ മാറിയിരിക്കുന്നു',
 'recentchanges-legend-newpage' => '([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)',
index 5ec243b..784546c 100644 (file)
@@ -11,6 +11,7 @@
  * @author E.shijir
  * @author Kaganer
  * @author Meno25
+ * @author MongolWiki
  * @author Wisdom
  * @author לערי ריינהארט
  */
@@ -149,16 +150,16 @@ $messages = array(
 'dec' => '12-р сар',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Ангилал|Ангиллууд}}',
-'category_header' => '"$1" Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð´Ð°Ñ\85Ñ\8c Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83д',
-'subcategories' => 'Ð\94Ñ\8dд Ð°Ð½Ð³Ð¸Ð»Ð»Ñ\83Ñ\83д',
-'category-media-header' => '"$1" Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð´Ð°Ñ\85Ñ\8c Ð¼ÐµÐ´Ð¸Ð° Ñ\84айлÑ\83Ñ\83д',
+'pagecategories' => '{{PLURAL:$1|Анги|Ангилал}}',
+'category_header' => '"$1" Ð°Ð½Ð³Ð¸Ð¹Ð½ Ð±Ò¯Ñ\80Ñ\8dлдÑ\8dÑ\85үүн',
+'subcategories' => 'Ð\90нгийн Ð±Ò¯Ð»Ñ\8dг',
+'category-media-header' => '"$1" Ð°Ð½Ð³Ð¸Ð¹Ð½ Ñ\84айл',
 'category-empty' => "''Одоогийн байдлаар энэ ангилалд хуудас, медиа файл байхгүй байна.''",
 'hidden-categories' => '{{PLURAL:$1|Нуугдсан ангилал|Нуугдсан ангиллууд}}',
 'hidden-category-category' => 'Нуугдсан ангиллууд',
-'category-subcat-count' => '{{PLURAL:$2|Энэ ангилалд дараах дэд ангилал л байна.|Энэ ангилалд нийт $2-с $1 дэд ангилал байна.}}',
+'category-subcat-count' => '{{PLURAL:$2|Энэ ангилалд дараах дэд ангилал л байна.|Энэ анги дотор $2 анги ангилагдснаас $1 нь ил харагдаж байна.}}',
 'category-subcat-count-limited' => 'Энэ ангилалд {{PLURAL:$1| дэд ангилал|$1-н дэд ангилалууд}} байна.',
-'category-article-count' => '{{PLURAL:$2|ЭнÑ\8d Ð°Ð½Ð³Ð¸Ð»Ð°Ð»Ð´ Ð´Ð°Ñ\80ааÑ\85 Ñ\85Ñ\83Ñ\83даÑ\81 Ð» Ð±Ð°Ð¹Ð½Ð°.|ЭнÑ\8d Ð°Ð½Ð³Ð¸Ð»Ð°Ð»Ð´ Ð½Ð¸Ð¹Ñ\82 $2-Ñ\81 Ð´Ð°Ñ\80ааÑ\85 $1 Ñ\85Ñ\83Ñ\83даÑ\81 байна.}}',
+'category-article-count' => '{{PLURAL:$2|ЭнÑ\8d Ð°Ð½Ð³Ð¸Ð´ Ð½Ñ\8dг Ñ\85Ñ\83Ñ\83даÑ\81 Ð±Ð°Ð¹Ð½Ð°.|Энд $2 Ñ\85Ñ\83Ñ\83даÑ\81 Ð°Ð½Ð³Ð¸Ð»Ð°Ð³Ð´Ð°Ð½ Ð¾Ñ\80Ñ\81нооÑ\81 $1 Ñ\85олбооÑ\81 Ð¸Ð» Ñ\85аÑ\80агдаж байна.}}',
 'category-article-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|хуудас|$1 хуудаснууд}} байна.',
 'category-file-count' => '{{PLURAL:$2|Энэ ангилалд дараах файл л байна.|Энэ ангилалд нийт $2-с дараах $1 файл байна.}}',
 'category-file-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|файл|$1 файлнууд}} байна.',
@@ -341,7 +342,7 @@ $1',
 'nstab-mediawiki' => 'Мэдэгдэл',
 'nstab-template' => 'Загвар',
 'nstab-help' => 'Тусламж',
-'nstab-category' => 'Ангилал',
+'nstab-category' => 'Анги',
 
 # Main script and global functions
 'nosuchaction' => 'Тийм үйлдэл байхгүй байна',
@@ -1787,7 +1788,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 
 # Miscellaneous special pages
 'nbytes' => '$1 байт',
-'ncategories' => '$1 ангилал',
+'ncategories' => '$1 анги',
 'nlinks' => '$1 линк',
 'nmembers' => '$1 гишүүн',
 'nrevisions' => '$1 засвар',
@@ -1795,12 +1796,12 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'nimagelinks' => '$1 {{PLURAL:$1|хуудсанд|хуудсанд}} ашигласан',
 'specialpage-empty' => 'Энэ мэдүүлэгт үр дүн гарсангүй.',
 'lonelypages' => 'Өнчин хуудсууд',
-'lonelypagestext' => 'Энэ хуудсууд {{SITENAME}}-дахь бусад хуудсуудтай холбогдоогүй эсвэл заагаас хэтэрсэн байна.',
+'lonelypagestext' => 'Энэ хуудсууд {{SITENAME}}-дахь бусад хуудастай холбогдоогүй эсвэл заагаас хэтэрсэн байна.',
 'uncategorizedpages' => 'Ангилагдаагүй хуудсууд',
-'uncategorizedcategories' => 'Ангилагдаагүй ангиллууд',
+'uncategorizedcategories' => 'Ангилагдаагүй анги',
 'uncategorizedimages' => 'Ангилагдаагүй зургууд',
 'uncategorizedtemplates' => 'Ангилагдаагүй загварууд',
-'unusedcategories' => 'Ð\90Ñ\88иглагдаагүй Ð°Ð½Ð³Ð¸Ð»Ð»Ñ\83Ñ\83д',
+'unusedcategories' => 'ХооÑ\81он Ð°Ð½Ð³Ð¸',
 'unusedimages' => 'Ашиглагдаагүй файлууд',
 'popularpages' => 'Эрэлттэй хуудсууд',
 'wantedcategories' => 'Хэрэгцээт ангиллууд',
@@ -1887,11 +1888,11 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'cachedspecial-refresh-now' => 'Саяханы хуудсыг харах',
 
 # Special:Categories
-'categories' => 'Ангиллууд',
+'categories' => 'Анги',
 'categoriespagetext' => 'Дараах {{PLURAL:$1|ангилалд|ангиллуудад}} хуудас эсвэл медиа файл агуулагдаж байна.
 [[Special:UnusedCategories|Хэрэглэгдэхгүй байгаа]] ангиллуудыг энд харуулсангүй.
 [[Special:WantedCategories|Хэрэгтэй ангиллууд]] гэдгийг харна уу.',
-'categoriesfrom' => 'Хамгийн Ñ\8dÑ\85Ñ\8dлж Ñ\85аÑ\80Ñ\83Ñ\83лаÑ\85 ангилал:',
+'categoriesfrom' => 'ЭÑ\85ний ангилал:',
 'special-categories-sort-count' => 'тоогоор ялгах',
 'special-categories-sort-abc' => 'үсгийн дарааллаар ялгах',
 
@@ -2972,7 +2973,7 @@ $1',
 'exif-writer' => 'Бичсэн',
 'exif-languagecode' => 'Хэл',
 'exif-iimversion' => 'IIM хувилбар',
-'exif-iimcategory' => 'Ангилал',
+'exif-iimcategory' => 'Анги',
 'exif-datetimeexpires' => 'түүний дараа бүү хэрэглэ',
 'exif-datetimereleased' => 'Гарсан өдөр',
 'exif-originaltransmissionref' => '',
index aec7bbb..c89a976 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'जुनी_पाने' ),
        'Blankpage'                 => array( 'कोरे_पान' ),
        'Block'                     => array( 'प्रतिबंध', 'अंकपत्ता_प्रतिबंध', 'सदस्य_प्रतिबंध' ),
-       'Blockme'                   => array( 'मला_प्रतिबंध_करा' ),
        'Booksources'               => array( 'पुस्तक_स्रोत' ),
        'BrokenRedirects'           => array( 'चुकीची_पुनर्निर्देशने' ),
        'Categories'                => array( 'वर्ग' ),
@@ -93,9 +92,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'सदस्य_नोंद' ),
        'Deadendpages'              => array( 'टोकाची_पाने' ),
        'DeletedContributions'      => array( 'वगळलेली_योगदाने' ),
-       'Disambiguations'           => array( 'निःसंदिग्धीकरण' ),
        'DoubleRedirects'           => array( 'दुहेरी_पुनर्निर्देशने' ),
        'Emailuser'                 => array( 'विपत्र_वापरकर्ता' ),
+       'ExpandTemplates'           => array( 'साचेविस्तारकरा' ),
        'Export'                    => array( 'निर्यात' ),
        'Fewestrevisions'           => array( 'कमीत_कमी_आवर्तने' ),
        'FileDuplicateSearch'       => array( 'दुहेरी_संचिका_शोध' ),
@@ -173,7 +172,7 @@ $magicWords = array(
        'nogallery'                 => array( '0', '__प्रदर्शननको__', '__NOGALLERY__' ),
        'forcetoc'                  => array( '0', '__अनुक्रमणिकाहवीच__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__अनुक्रमणिका__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__असंपादनक्षम__', '__NOEDITSECTION__' ),
+       'noeditsection'             => array( '0', '__विभाà¤\97à¤\85सà¤\82पादनà¤\95à¥\8dषम__', '__NOEDITSECTION__' ),
        'currentmonth'              => array( '1', 'सद्यमहिना', 'सद्यमहिना२', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', 'सद्यमहिना१', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'सद्यमहिनानाव', 'CURRENTMONTHNAME' ),
@@ -207,6 +206,7 @@ $magicWords = array(
        'pagenamee'                 => array( '1', 'लेखानावव', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'नामविश्व', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'नामविश्वा', 'नामविश्वाचे', 'NAMESPACEE' ),
+       'namespacenumber'           => array( '1', 'नामविश्वक्रमांक', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'चर्चाविश्व', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'चर्चाविश्वा', 'चर्चाविश्वाचे', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'विषयविश्व', 'लेखविश्व', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -233,8 +233,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'मध्यवर्ती', 'center', 'centre' ),
        'img_framed'                => array( '1', 'चौकट', 'फ़्रेम', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'विनाचौकट', 'विनाफ़्रेम', 'frameless' ),
-       'img_page'                  => array( '1', 'पान=$1', 'पान $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'उभा', 'उभा=$1', 'उभा $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'पान=$1', 'पान_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'उभा', 'उभा=$1', 'उभा_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'सीमा', 'border' ),
        'img_baseline'              => array( '1', 'तळरेषा', 'आधाररेषा', 'baseline' ),
        'img_sub'                   => array( '1', 'अधो', 'sub' ),
@@ -304,6 +304,11 @@ $magicWords = array(
        'staticredirect'            => array( '1', '__अविचलपुर्ननिर्देश__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'सुरक्षास्तर', 'PROTECTIONLEVEL' ),
        'formatdate'                => array( '0', 'दिनांकनपद्धती', 'formatdate', 'dateformat' ),
+       'url_wiki'                  => array( '0', 'विकि', 'WIKI' ),
+       'pagesincategory_all'       => array( '0', 'सर्व', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'पाने', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'उपवर्ग', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'संचिका', 'files' ),
 );
 
 $digitTransformTable = array(
@@ -1276,15 +1281,15 @@ $1",
 'deletedhist' => 'वगळलेला इतिहास',
 'revdelete-hide-current' => '$1 मधील $2 या वेळचे आवर्तन लपविण्यात त्रूटी : ते सद्य पुनरावर्तन आहे.
 ते लपवता येत नाही.',
-'revdelete-show-no-access' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 दाखवताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
+'revdelete-show-no-access' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ दाखवताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
 तुम्ही तिच्यापर्यंत पोचू शकत नाही.',
-'revdelete-modify-no-access' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 संपादताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
+'revdelete-modify-no-access' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ संपादताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
 तुम्ही तिच्यापर्यंत पोचू शकत नाही.',
-'revdelete-modify-missing' => 'वसà¥\8dतà¥\82 क्र. $1 ला संपादताना त्रुटी: ती माहितीकोषात नाही!',
-'revdelete-no-change' => "'''सà¥\82à¤\9aना:''' $2, $1 à¤\9aà¥\8dया à¤µà¤¸à¥\8dतà¥\82ने अगोदरच दृश्यता रुपरेषा मागितल्या आहेत.",
-'revdelete-concurrent-change' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 à¤¸à¤\82पादताना à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤¤à¤¿à¤²à¤¾ à¤¸à¤\82पादताना à¤¦à¥\81सऱà¥\8dया à¤µà¥\8dयà¤\95à¥\8dतिनà¥\87 à¤µà¤¸à¥\8dतà¥\82स à¤¸à¤\82पादले असावे.
+'revdelete-modify-missing' => 'बाब क्र. $1 ला संपादताना त्रुटी: ती माहितीकोषात नाही!',
+'revdelete-no-change' => "'''सà¥\82à¤\9aना:''' $2, $1 à¤\9aà¥\8dया à¤¬à¤¾à¤¬à¥\80ने अगोदरच दृश्यता रुपरेषा मागितल्या आहेत.",
+'revdelete-concurrent-change' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ à¤¸à¤\82पादताना à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤¤à¤¿à¤²à¤¾ à¤¸à¤\82पादताना à¤¦à¥\81सऱà¥\8dया à¤µà¥\8dयà¤\95à¥\8dतिनà¥\87  à¤¬à¤¾à¤¬à¥\80स à¤¸à¤\82पादिले असावे.
 कृपया याद्या तपासा.',
-'revdelete-only-restricted' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 à¤²à¤ªà¤µà¤¤à¤¾à¤¨à¤¾ à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤\87तर à¤¦à¥\83शà¥\8dयता à¤ªà¤°à¥\8dयायाà¤\82ना à¤¨à¤¿à¤µà¤¡à¤²à¥\8dयाशिवाय à¤ªà¥\8dरà¤\9aालà¤\95ाà¤\82पासà¥\82न à¤µà¤¸à¥\8dतà¥\82 लपवू शकत नाही.',
+'revdelete-only-restricted' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ à¤²à¤ªà¤µà¤¤à¤¾à¤¨à¤¾ à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤\87तर à¤¦à¥\83शà¥\8dयता à¤ªà¤°à¥\8dयायाà¤\82ना à¤¨à¤¿à¤µà¤¡à¤²à¥\8dयाशिवाय à¤ªà¥\8dरà¤\9aालà¤\95ाà¤\82पासà¥\82न à¤¬à¤¾à¤¬ लपवू शकत नाही.',
 'revdelete-reason-dropdown' => '* वगळण्याची सामान्य कारणे
 ** प्रताधिकार उल्लंघन
 ** अयोग्य टिप्पणी किंवा व्यक्तिगत माहिती
@@ -1366,7 +1371,7 @@ $1",
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|या उपसर्गानिशी असलेली पाने न्याहाळा]]',
 'searchprofile-articles' => 'आशय-पाने',
 'searchprofile-project' => 'साहाय्य व प्रकल्प पाने',
-'searchprofile-images' => 'मलà¥\8dà¤\9fिमà¥\80डिया',
+'searchprofile-images' => 'बहà¥\81माधà¥\8dयमà¥\87',
 'searchprofile-everything' => 'सगळे',
 'searchprofile-advanced' => 'प्रगत',
 'searchprofile-articles-tooltip' => '$1 मध्ये शोधा',
@@ -1376,11 +1381,11 @@ $1",
 'searchprofile-advanced-tooltip' => 'निवडलेल्या नामविश्वांमध्ये शोधा:',
 'search-result-size' => '$1 ({{PLURAL:$2|१ शब्द|$2 शब्द}})',
 'search-result-category-size' => '{{PLURAL:$1|१ सदस्य|$1 सदस्य}} ({{PLURAL:$2|१ उपवर्ग|$2 उपवर्ग}}, {{PLURAL:$3|1 संचिका|$3 संचिका}})',
-'search-result-score' => 'à¤\9cà¥\81ळणà¥\80: $1%',
+'search-result-score' => 'à¤\85नà¥\8dवरà¥\8dथà¤\95ता: $1%',
 'search-redirect' => '(पुनर्निर्देशन $1)',
 'search-section' => '(विभाग $1)',
 'search-suggest' => 'तुम्हाला हेच म्हणायचे का: $1',
-'search-interwiki-caption' => 'à¤\87तर प्रकल्प',
+'search-interwiki-caption' => 'सह प्रकल्प',
 'search-interwiki-default' => '$1चे निकाल:',
 'search-interwiki-more' => '(आणखी)',
 'search-relatedarticle' => 'जवळील',
@@ -1406,7 +1411,7 @@ $1",
 'search-error' => 'शोध घेतांना घडलेली त्रूटी:$1',
 
 # Preferences page
-'preferences' => 'माà¤\9dà¥\8dया à¤ªà¤¸à¤\82तà¥\80',
+'preferences' => 'पसà¤\82तà¥\80à¤\95à¥\8dरम',
 'mypreferences' => 'पसंतीक्रम',
 'prefs-edits' => 'संपादनांची संख्या:',
 'changepassword' => 'परवलीचा शब्द बदला',
@@ -1419,13 +1424,13 @@ $1",
 'prefs-user-pages' => 'सदस्य पान',
 'prefs-personal' => 'सदस्य व्यक्तिरेखा',
 'prefs-rc' => 'अलीकडील बदल',
-'prefs-watchlist' => 'नितà¥\8dय à¤ªà¤¹à¤¾à¤£à¥\8dयाà¤\9aà¥\80 सूची',
-'prefs-watchlist-days' => 'पहाऱà¥\8dयाà¤\9aà¥\8dया सूचीमध्ये दिसणाऱ्या दिवसांची संख्या:',
+'prefs-watchlist' => 'निरà¥\80à¤\95à¥\8dषणसूची',
+'prefs-watchlist-days' => 'निरà¥\80à¤\95à¥\8dषणसूचीमध्ये दिसणाऱ्या दिवसांची संख्या:',
 'prefs-watchlist-days-max' => 'जास्तीत जास्त $1 {{PLURAL:$1|दिवस|दिवस}}',
-'prefs-watchlist-edits' => 'वाढà¥\80व à¤ªà¤¹à¤¾à¤±à¥\8dयाà¤\9aà¥\8dया सूचीमध्ये दिसणाऱ्या संपादनांची संख्या:',
+'prefs-watchlist-edits' => 'वाढà¥\80व à¤¨à¤¿à¤°à¥\80à¤\95à¥\8dषणसूचीमध्ये दिसणाऱ्या संपादनांची संख्या:',
 'prefs-watchlist-edits-max' => 'अधिकतम अंक:  १०००.',
-'prefs-watchlist-token' => 'पहाऱà¥\8dयाà¤\9aà¥\8dया सूचीचा बिल्ला:',
-'prefs-misc' => 'à¤\87तर',
+'prefs-watchlist-token' => 'निरà¥\80à¤\95à¥\8dषणसूचीचा बिल्ला:',
+'prefs-misc' => 'à¤\95िरà¤\95à¥\8bळ',
 'prefs-resetpass' => 'परवलीचा शब्द बदला.',
 'prefs-changeemail' => 'विपत्रपत्ता बदला',
 'prefs-setemail' => 'तुमचा ई-मेल पत्ता लिहा.',
@@ -1442,9 +1447,9 @@ $1",
 'stub-threshold' => '<a href="#" class="stub">अंकुरीत दुव्यांच्या</a> रचनेची नांदी (बाईट्स):',
 'stub-threshold-disabled' => 'अक्षम केले',
 'recentchangesdays' => 'अलीकडील बदल मधील दाखवावयाचे दिवस:',
-'recentchangesdays-max' => 'जास्तीतजास्त $1 {{PLURAL:$1|दिवस|दिवस}}',
-'recentchangescount' => 'à¤\85लà¥\80à¤\95डà¥\80ल à¤¬à¤¦à¤², à¤\87तिहास à¤µ à¤¨à¥\8bà¤\82द à¤ªà¤¾à¤¨à¤¾à¤\82मधà¥\8dयà¥\87 à¤¦à¤¾à¤\96वायाच्या संपादनांची संख्या:',
-'prefs-help-recentchangescount' => 'यात à¤¨à¥\81à¤\95तà¥\87à¤\9a à¤\9dालà¥\87लà¥\87 à¤¬à¤¦à¤², à¤ªà¤¾à¤¨à¤¾à¤\82à¤\9aà¥\87 à¤\87तिहास à¤µ à¤¯à¤¾à¤¦à¥\8dया या गोष्टी असतात.',
+'recentchangesdays-max' => 'जास्तीतजास्त $1 {{PLURAL:$1|दिवस}}',
+'recentchangescount' => 'à¤\85विà¤\9aलरितà¥\8dया à¤¦à¤¾à¤\96वावयाच्या संपादनांची संख्या:',
+'prefs-help-recentchangescount' => 'यात à¤¨à¥\81à¤\95तà¥\87à¤\9a à¤\9dालà¥\87लà¥\87 à¤¬à¤¦à¤², à¤ªà¤¾à¤¨à¤¾à¤\82à¤\9aà¥\87 à¤\87तिहास à¤µ à¤¨à¥\8bà¤\82दà¥\80 या गोष्टी असतात.',
 'prefs-help-watchlist-token2' => "ही आपल्या निरिक्षणसूचीच्या 'वेब फिड'ची गुप्त चाबी आहे.ज्या कोणास त्याची माहिती होईल तो आपली निरिक्षणसूची बघू शकेल,म्हणुन कोणास यात सहभागी करून घेउ नका.[[Special:ResetTokens|पुनर्स्थापनाची आपणास गरज असल्यास येथे टिचकी द्या]].",
 'savedprefs' => 'तुमच्या पसंती जतन केल्या आहेत.',
 'timezonelegend' => 'वेळक्षेत्र',
@@ -1473,7 +1478,7 @@ $1",
 'prefs-custom-css' => 'सीएसएस पद्धत बदला',
 'prefs-custom-js' => 'जावास्क्रिप्ट पद्धत बदला',
 'prefs-common-css-js' => 'मिळून वापरलेले सर्व त्वचांसाठींचे सीएसएस / जावास्क्रिप्ट:',
-'prefs-reset-intro' => 'à¤\86पन à¤¦à¥\8dदà¥\80लà¥\87लà¥\87 à¤¸à¤°à¥\8dव à¤ªà¥\8dरà¥\80फà¥\8dरà¥\8dनà¥\8dसà¥\87सà¥\8d à¤µà¤ªà¤°à¥\8dनà¥\8dयासथि à¤¤à¥\81मà¥\8dहà¥\80 à¤¹à¥\87 à¤ªà¥\87à¤\9cà¥\8d à¤µà¤¾à¤ªरू शकता.',
+'prefs-reset-intro' => 'à¤\86पण à¤¯à¤¾ à¤ªà¤¾à¤¨à¤¾à¤\9aा à¤µà¤¾à¤ªà¤°, à¤¯à¤¾ à¤¸à¤\82à¤\95à¥\87तसà¥\8dथळà¤\9aà¥\8dया à¤\85विà¤\9aलनà¥\81सार, à¤\86पला à¤ªà¤¸à¤\82तà¥\80à¤\95à¥\8dरम à¤ªà¥\81नरà¥\8dसà¥\8dथापनà¥\87साठà¥\80 à¤\95रू शकता.',
 'prefs-emailconfirm-label' => 'विपत्र निश्चितीकरण:',
 'youremail' => 'विपत्र:',
 'username' => '{{GENDER:$1|सदस्यनाम}}:',
@@ -1502,7 +1507,7 @@ $1",
 'prefs-info' => 'मूलभूत माहिती',
 'prefs-i18n' => 'आंतरराष्ट्रीयीकरण',
 'prefs-signature' => 'स्वाक्षरी',
-'prefs-dateformat' => 'तारà¥\80à¤\96 à¤°à¤\9aना',
+'prefs-dateformat' => 'दिनाà¤\82à¤\95 à¤ªà¥\8dरारà¥\81पण',
 'prefs-timeoffset' => 'वेळ बरोबरी',
 'prefs-advancedediting' => 'सर्वसामान्य पर्याय',
 'prefs-editor' => 'संपादक',
@@ -1589,7 +1594,7 @@ $1",
 'right-upload_by_url' => 'एखाद्या URL वरील संचिकेचे अपभारण करा',
 'right-purge' => 'एखाद्या पानाची सय रिकामी करा',
 'right-autoconfirmed' => 'आयपी आधारित दर-मर्यादेचा प्रभाव पडु देऊ नका.',
-'right-bot' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\95ारà¥\8dयाप्रमाणे वागणूक मिळवा',
+'right-bot' => 'सà¥\8dवयà¤\82à¤\9aलित à¤ªà¥\8dरणालà¥\80प्रमाणे वागणूक मिळवा',
 'right-nominornewtalk' => 'चर्चा पृष्ठावर छोटी संपादने जी नवीन चर्चा दर्शवितात ती नकोत',
 'right-apihighlimits' => 'API पृच्छांमध्ये उच्चतर मर्यादा वापरा',
 'right-writeapi' => 'लेखन एपीआय चा उपयोग',
@@ -1612,7 +1617,7 @@ $1",
 'right-protect' => 'सुरक्षा पातळी बदलवा व निपात-प्रतिबंधित पानांचे संपादन करा',
 'right-editprotected' => ' "{{int:protect-level-sysop}}"म्हणून नमुद केलेली सुरक्षित पाने संपादा',
 'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" म्हणून नमुद केलेली सुरक्षित पाने संपादा',
-'right-editinterface' => 'सदस्य पसंती बदला',
+'right-editinterface' => 'सदस्य पसंतीक्रम बदला',
 'right-editusercssjs' => 'इतर सदस्यांच्या CSS व JS संचिका संपादित करा',
 'right-editusercss' => 'इतर सदस्यांच्या CSS संचिका संपादित करा',
 'right-edituserjs' => 'इतर सदस्यांच्या JS संचिका संपादित करा',
index 18db5e9..817ddd3 100644 (file)
@@ -111,7 +111,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Laman_lapuk' ),
        'Blankpage'                 => array( 'Laman_kosong' ),
        'Block'                     => array( 'Sekat_IP' ),
-       'Blockme'                   => array( 'Sekat_saya' ),
        'Booksources'               => array( 'Sumber_buku' ),
        'BrokenRedirects'           => array( 'Lencongan_rosak', 'Pelencongan_rosak' ),
        'Categories'                => array( 'Kategori' ),
@@ -123,9 +122,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Buka_akaun' ),
        'Deadendpages'              => array( 'Laman_buntu' ),
        'DeletedContributions'      => array( 'Sumbangan_dihapuskan' ),
-       'Disambiguations'           => array( 'Penyahtaksaan', 'Nyahkekaburan' ),
        'DoubleRedirects'           => array( 'Lencongan_berganda', 'Pelencongan_berganda' ),
        'Emailuser'                 => array( 'E-mel_pengguna' ),
+       'ExpandTemplates'           => array( 'Kembangkan_templat' ),
        'Export'                    => array( 'Eksport' ),
        'Fewestrevisions'           => array( 'Semakan_tersikit' ),
        'FileDuplicateSearch'       => array( 'Cari_fail_berganda' ),
index 6d16bc5..b8d1705 100644 (file)
@@ -56,7 +56,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'TitluĦażin' ),
        'Blankpage'                 => array( 'PaġnaVojta' ),
        'Block'                     => array( 'BlokkaIP' ),
-       'Blockme'                   => array( 'Imblukkani' ),
        'Booksources'               => array( 'SorsiKotba' ),
        'BrokenRedirects'           => array( 'RindirizziMiksura' ),
        'Categories'                => array( 'Kategoriji' ),
@@ -67,9 +66,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'OħloqKont' ),
        'Deadendpages'              => array( 'PaġniWieqfa' ),
        'DeletedContributions'      => array( 'KontribuzzjonijietImħassra' ),
-       'Disambiguations'           => array( 'Diżambigwazzjoni' ),
        'DoubleRedirects'           => array( 'RindirizziDoppji' ),
        'Emailuser'                 => array( 'IbgħatUtent' ),
+       'ExpandTemplates'           => array( 'EspandiMudelli' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'L-InqasReviżjonijiet' ),
        'FileDuplicateSearch'       => array( 'FittexFajlDuplikat' ),
index b1efd38..4cffa42 100644 (file)
@@ -49,7 +49,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'ТюштяПингеньЛопат' ),
        'Blankpage'                 => array( 'ЧавоЛопа' ),
        'Block'                     => array( 'СаймасСаемсIP' ),
-       'Blockme'                   => array( 'СаймасСаемизь' ),
        'Booksources'               => array( 'КнигаЛисьмапрят' ),
        'BrokenRedirects'           => array( 'СинденьЛиявНевтемат' ),
        'Categories'                => array( 'Категорият' ),
@@ -58,6 +57,7 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ТеемсШкамсСовамоТарка' ),
        'Deadendpages'              => array( 'ЛисемаСюлмавомаПевтемеЛопат' ),
        'DoubleRedirects'           => array( 'КавтоньКирданьЛиявНевтемат' ),
+       'ExpandTemplates'           => array( 'ПоладомсЛопаПарцунт' ),
        'Export'                    => array( 'Экспортировамс' ),
        'Fewestrevisions'           => array( 'ВесемедеАламокстьЛиякстомтозь' ),
        'Filepath'                  => array( 'ФайланьКи' ),
@@ -152,7 +152,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'куншкасо', 'центр', 'center', 'centre' ),
        'img_framed'                => array( '1', 'кундсо', 'обрамить', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'кундовтомо', 'безрамки', 'frameless' ),
-       'img_page'                  => array( '1', 'лопа=$1', 'лопа $1', 'страница=$1', 'страница $1', 'страница $1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'лопа=$1', 'лопа_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ),
        'img_top'                   => array( '1', 'верькс', 'сверху', 'top' ),
        'img_text_top'              => array( '1', 'текст-верькс', 'текст-сверху', 'text-top' ),
        'img_middle'                => array( '1', 'куншка', 'посередине', 'middle' ),
index 432caf8..bbb922c 100644 (file)
@@ -12,6 +12,8 @@
  * @author Kaihsu
  */
 
+$fallback = 'cdo, zh-hant';
+
 $datePreferences = array(
        'default',
        'ISO 8601',
index 4166e4f..03bf9e1 100644 (file)
@@ -104,7 +104,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Ugyldig_tittel' ),
        'Blankpage'                 => array( 'Blank_side' ),
        'Block'                     => array( 'Blokker', 'Blokker_IP', 'Blokker_bruker' ),
-       'Blockme'                   => array( 'Blokker_meg' ),
        'Booksources'               => array( 'Bokkilder' ),
        'BrokenRedirects'           => array( 'Ødelagte_omdirigeringer' ),
        'Categories'                => array( 'Kategorier' ),
@@ -116,10 +115,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Opprett_konto' ),
        'Deadendpages'              => array( 'Blindveisider' ),
        'DeletedContributions'      => array( 'Slettede_bidrag' ),
-       'Disambiguations'           => array( 'Pekere' ),
        'DoubleRedirects'           => array( 'Doble_omdirigeringer' ),
        'EditWatchlist'             => array( 'Rediger_overvåkningsliste' ),
        'Emailuser'                 => array( 'E-post' ),
+       'ExpandTemplates'           => array( 'Utvid_maler' ),
        'Export'                    => array( 'Eksporter' ),
        'Fewestrevisions'           => array( 'Færrest_revisjoner' ),
        'FileDuplicateSearch'       => array( 'Filduplikatsøk' ),
@@ -161,6 +160,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Beskyttede_sider' ),
        'Protectedtitles'           => array( 'Beskyttede_titler' ),
        'Randompage'                => array( 'Tilfeldig', 'Tilfeldig_side' ),
+       'RandomInCategory'          => array( 'Tilfeldig_fra_kategori' ),
        'Randomredirect'            => array( 'Tilfeldig_omdirigering' ),
        'Recentchanges'             => array( 'Siste_endringer' ),
        'Recentchangeslinked'       => array( 'Relaterte_endringer' ),
@@ -1740,7 +1740,7 @@ Informasjonen vil være offentlig.',
 'rcshowhidebots' => '$1 roboter',
 'rcshowhideliu' => '$1 innloggede brukere',
 'rcshowhideanons' => '$1 anonyme brukere',
-'rcshowhidepatr' => '$1 godkjente endringer',
+'rcshowhidepatr' => '$1 patruljerte endringer',
 'rcshowhidemine' => '$1 mine endringer',
 'rclinks' => 'Vis siste $1 endringer i de siste $2 dagene<br />$3',
 'diff' => 'diff',
@@ -3218,20 +3218,20 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
 'skinname-modern' => 'Moderne',
 
 # Patrolling
-'markaspatrolleddiff' => 'Godkjenn endringen',
-'markaspatrolledtext' => 'Godkjenn denne siden',
-'markedaspatrolled' => 'Merket som godkjent',
-'markedaspatrolledtext' => 'Den valgte revisjonen av [[:$1]] har blitt markert som patruljert.',
+'markaspatrolleddiff' => 'Merk som patruljert',
+'markaspatrolledtext' => 'Merk denne siden som patruljert',
+'markedaspatrolled' => 'Merket som patruljert',
+'markedaspatrolledtext' => 'Den valgte revisjonen av [[:$1]] har blitt merket som patruljert.',
 'rcpatroldisabled' => 'Siste endringer-patruljering er slått av',
 'rcpatroldisabledtext' => 'Siste endringer-patruljeringsfunksjonen er slått av.',
-'markedaspatrollederror' => 'Kan ikke merke som godkjent',
-'markedaspatrollederrortext' => 'Du må spesifisere en versjon å merke som godkjent.',
-'markedaspatrollederror-noautopatrol' => 'Du kan ikke merke dine egne endringer som godkjente.',
+'markedaspatrollederror' => 'Kunne ikke merke som patruljert',
+'markedaspatrollederrortext' => 'Du må spesifisere en versjon å merke som patruljert.',
+'markedaspatrollederror-noautopatrol' => 'Du har ikke lov å merke dine egne endringer som patruljerte.',
 'markedaspatrollednotify' => 'Denne endringen av $1 har blitt patruljert.',
 'markedaspatrollederrornotify' => 'Patruljering feilet.',
 
 # Patrol log
-'patrol-log-page' => 'Godkjenningslogg',
+'patrol-log-page' => 'Patruljeringslogg',
 'patrol-log-header' => 'Dette er en logg over patruljerte sideversjoner.',
 'log-show-hide-patrol' => '$1 patruljeringslogg',
 
index 0c14985..17732af 100644 (file)
@@ -138,7 +138,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Ole Sieden' ),
        'Blankpage'                 => array( 'Leddige Sied' ),
        'Block'                     => array( 'Blocken' ),
-       'Blockme'                   => array( 'Proxy-Sparr' ),
        'Booksources'               => array( 'ISBN-Söök' ),
        'BrokenRedirects'           => array( 'Kaputte Redirects' ),
        'Categories'                => array( 'Kategorien' ),
@@ -147,7 +146,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Bidrääg' ),
        'CreateAccount'             => array( 'Brukerkonto anleggen' ),
        'Deadendpages'              => array( 'Sackstraatsieden' ),
-       'Disambiguations'           => array( 'Mehrdüdige Begrepen' ),
        'DoubleRedirects'           => array( 'Dubbelte Redirects' ),
        'Emailuser'                 => array( 'E-Mail an Bruker' ),
        'Export'                    => array( 'Exporteren' ),
index 83c2d2e..f8fc34a 100644 (file)
@@ -75,13 +75,14 @@ $bookstoreList = array(
 
 #!!# Translation <b>HLEERSTE:</b> is used more than once for <a href="#mw-sp-magic-lcfirst">lcfirst</a> and <a href="#mw-sp-magic-ucfirst">ucfirst</a>.
 $magicWords = array(
-       'redirect'                  => array( '0', '#DEURVERWIEZING', '#DOORVERWIJZING', '#REDIRECT' ),
+       'redirect'                  => array( '0', '#DEURVERWIEZING', '#DUURVERWIEZING', '#DOORVERWIJZING', '#REDIRECT' ),
        'notoc'                     => array( '0', '__GIENONDERWARPEN__', '__GEENINHOUD__', '__NOTOC__' ),
-       'nogallery'                 => array( '0', '__GIENGALLERIEJE__', '__GEEN_GALERIJ__', '__NOGALLERY__' ),
-       'forcetoc'                  => array( '0', '__FORSEERONDERWARPEN__', '__INHOUD_DWINGEN__', '__FORCEERINHOUD__', '__FORCETOC__' ),
+       'nogallery'                 => array( '0', '__GIENGALLERIEJE__', '__GIENGALDERIEJE__', '__GEEN_GALERIJ__', '__NOGALLERY__' ),
+       'forcetoc'                  => array( '0', '__FORSEERONDERWARPEN_', '__INHOUD_DWINGEN__', '__FORCEERINHOUD__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__ONDERWARPEN__', '__INHOUD__', '__TOC__' ),
        'noeditsection'             => array( '0', '__GIENBEWARKSEKSIE__', '__NIETBEWERKBARESECTIE__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'DISSEMAOND', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth'              => array( '1', 'DISSEMAOND', 'DISSEMAOND2', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'             => array( '1', 'DISSEMAOND1', 'HUIDIGEMAAND1', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'DISSEMAONDNAAM', 'HUIDIGEMAANDNAAM', 'CURRENTMONTHNAME' ),
        'currentmonthnamegen'       => array( '1', 'DISSEMAONDGEN', 'HUIDIGEMAANDGEN', 'CURRENTMONTHNAMEGEN' ),
        'currentmonthabbrev'        => array( '1', 'DISSEMAONDAOFK', 'HUIDIGEMAANDAFK', 'CURRENTMONTHABBREV' ),
@@ -102,35 +103,38 @@ $magicWords = array(
        'localyear'                 => array( '1', 'LOKAALJAOR', 'PLAATSELIJKJAAR', 'LOKAALJAAR', 'LOCALYEAR' ),
        'localtime'                 => array( '1', 'LOKALETIED', 'PLAATSELIJKETIJD', 'LOKALETIJD', 'LOCALTIME' ),
        'localhour'                 => array( '1', 'LOKAALURE', 'PLAATSELIJKUUR', 'LOKAALUUR', 'LOCALHOUR' ),
-       'numberofpages'             => array( '1', 'ANTALPAGINAS', 'ANTALPAGINA\'S', 'ANTALPAGINA’S', 'AANTALPAGINAS', 'AANTALPAGINA\'S', 'AANTALPAGINA’S', 'NUMBEROFPAGES' ),
+       'numberofpages'             => array( '1', 'ANTALZIEJEN', 'AANTALPAGINAS', 'AANTALPAGINA\'S', 'AANTALPAGINA’S', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', 'ANTALARTIKELS', 'AANTALARTIKELEN', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', 'ANTALBESTANDEN', 'AANTALBESTANDEN', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'ANTALGEBRUKERS', 'AANTALGEBRUIKERS', 'NUMBEROFUSERS' ),
        'numberofactiveusers'       => array( '1', 'ANTALAKTIEVEGEBRUKERS', 'AANTALACTIEVEGEBRUIKERS', 'ACTIEVEGEBRUIKERS', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', 'ANTALBEWARKINGEN', 'AANTALBEWERKINGEN', 'NUMBEROFEDITS' ),
        'numberofviews'             => array( '1', 'ANTALKERENBEKEKEN', 'AANTALKERENBEKEKEN', 'NUMBEROFVIEWS' ),
-       'pagename'                  => array( '1', 'PAGINANAAM', 'PAGENAME' ),
-       'pagenamee'                 => array( '1', 'PAGINANAAME', 'PAGENAMEE' ),
+       'pagename'                  => array( '1', 'ZIEDNAAM', 'PAGINANAAM', 'PAGENAME' ),
+       'pagenamee'                 => array( '1', 'ZIEDNAAME', 'PAGINANAAME', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'NAAMRUUMTE', 'NAAMRUIMTE', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'NAAMRUUMTEE', 'NAAMRUIMTEE', 'NAMESPACEE' ),
+       'namespacenumber'           => array( '1', 'NAAMRUUMTENUMMER', 'NAAMRUIMTENUMMER', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'OVERLEGRUUMTE', 'OVERLEGRUIMTE', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'OVERLEGRUUMTEE', 'OVERLEGRUIMTEE', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'ONDERWARPRUUMTE', 'ARTIKELRUUMTE', 'ONDERWERPRUIMTE', 'ARTIKELRUIMTE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
        'subjectspacee'             => array( '1', 'ONDERWARPRUUMTEE', 'ARTIKELRUUMTEE', 'ONDERWERPRUIMTEE', 'ARTIKELRUIMTEE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
-       'fullpagename'              => array( '1', 'HELEPAGINANAAM', 'VOLLEDIGEPAGINANAAM', 'FULLPAGENAME' ),
-       'fullpagenamee'             => array( '1', 'HELEPAGINANAAME', 'VOLLEDIGEPAGINANAAME', 'FULLPAGENAMEE' ),
-       'subpagename'               => array( '1', 'DEELPAGINANAAM', 'SUBPAGENAME' ),
-       'subpagenamee'              => array( '1', 'DEELPAGINANAAME', 'SUBPAGENAMEE' ),
+       'fullpagename'              => array( '1', 'HELEZIEDNAAM', 'VOLLEDIGEPAGINANAAM', 'FULLPAGENAME' ),
+       'fullpagenamee'             => array( '1', 'HELEZIEDNAAME', 'VOLLEDIGEPAGINANAAME', 'FULLPAGENAMEE' ),
+       'subpagename'               => array( '1', 'DEELZIEDNAAM', 'DEELPAGINANAAM', 'SUBPAGENAME' ),
+       'subpagenamee'              => array( '1', 'DEELZIEDNAAME', 'DEELPAGINANAAME', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'ROOTZIEDNAAM', 'ROOTPAGINANAAM', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'ROOTZIEDNAAME', 'ROOTPAGINANAAME', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'BAOSISPAGINANAAM', 'BASISPAGINANAAM', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'BAOSISPAGINANAAME', 'BASISPAGINANAAME', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'OVERLEGPAGINANAAM', 'TALKPAGENAME' ),
        'talkpagenamee'             => array( '1', 'OVERLEGPAGINANAAME', 'TALKPAGENAMEE' ),
-       'subjectpagename'           => array( '1', 'ONDERWARPPAGINANAAM', 'ARTIKELPAGINANAAM', 'ONDERWERPPAGINANAAM', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
-       'subjectpagenamee'          => array( '1', 'ONDERWARPPAGINANAAME', 'ARTIKELPAGINANAAME', 'ONDERWERPPAGINANAAME', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+       'subjectpagename'           => array( '1', 'ONDERWARPZIEDNAAM', 'ARTIKELZIEDNAAM', 'ONDERWERPPAGINANAAM', 'ARTIKELPAGINANAAM', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'subjectpagenamee'          => array( '1', 'ONDERWARZIEDNAAME', 'ARTIKELZIEDNAAME', 'ONDERWERPPAGINANAAME', 'ARTIKELPAGINANAAME', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        'msg'                       => array( '0', 'BERICHT:', 'MSG:' ),
        'subst'                     => array( '0', 'VERVANG:', 'VERV:', 'SUBST:' ),
        'msgnw'                     => array( '0', 'BERICHTNW', 'MSGNW:' ),
-       'img_thumbnail'             => array( '1', 'miniatuur', 'duumnegel', 'doemnaegel', 'thumbnail', 'thumb' ),
+       'img_thumbnail'             => array( '1', 'duum', 'doem', 'miniatuur', 'mini', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'miniatuur=$1', 'duumnegel=$1', 'doemnaegel=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'rechts', 'right' ),
        'img_left'                  => array( '1', 'links', 'left' ),
@@ -138,7 +142,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'esentreerd', 'gecentreerd', 'center', 'centre' ),
        'img_framed'                => array( '1', 'umraand', 'omkaderd', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'kaoderloos', 'kaderloos', 'frameless' ),
-       'img_page'                  => array( '1', 'pagina=$1', 'pagina_$1', 'pagina $1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'zied=$1', 'zied_$1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'rechtop', 'rechtop=$1', 'rechtop$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'raand', 'rand', 'border' ),
        'img_baseline'              => array( '1', 'grondliende', 'grondlijn', 'baseline' ),
@@ -147,7 +151,7 @@ $magicWords = array(
        'img_middle'                => array( '1', 'midden', 'middle' ),
        'img_bottom'                => array( '1', 'benejen', 'beneden', 'bottom' ),
        'img_text_bottom'           => array( '1', 'tekste-benejen', 'tekst-beneden', 'text-bottom' ),
-       'img_link'                  => array( '1', 'verwiezing=$1', 'verwijzing=$1', 'koppeling=$1', 'link=$1' ),
+       'img_link'                  => array( '1', 'verwiezing=$1', 'koppeling=$1', 'verwijzing=$1', 'link=$1' ),
        'sitename'                  => array( '1', 'WEBSTEENAAM', 'SITENAAM', 'SITENAME' ),
        'ns'                        => array( '0', 'NR:', 'NS:' ),
        'localurl'                  => array( '0', 'LOKALEURL', 'LOCALURL:' ),
@@ -157,30 +161,32 @@ $magicWords = array(
        'stylepath'                 => array( '0', 'STIELPAD', 'STIJLPAD', 'STYLEPATH' ),
        'grammar'                   => array( '0', 'GRAMMATIKA:', 'GRAMMATICA:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'GESLACHTE:', 'GESLACHT:', 'GENDER:' ),
-       'notitleconvert'            => array( '0', '__GIENTITELKONVERSIE__', '__GIENTC__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__GEENPAGINANAAMCONVERSIE__', '__NOTITLECONVERT__', '__NOTC__' ),
-       'nocontentconvert'          => array( '0', '__GIENINHOUDKONVERSIE__', '__GIENIC__', '__GEENINHOUDCONVERSIE__', '__GEENIC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'notitleconvert'            => array( '0', '__GIENTITELKONVERSIE__', '__GIENTK__', '__GEENPAGINANAAMCONVERSIE__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'          => array( '0', '__GIENINHOUDKONVERSIE__', '__GIENIK__', '__GEENINHOUDCONVERSIE__', '__GEENIC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
        'currentweek'               => array( '1', 'DISSEWEKE', 'HUIDIGEWEEK', 'CURRENTWEEK' ),
        'currentdow'                => array( '1', 'DISSEDVDW', 'HUIDIGEDVDW', 'CURRENTDOW' ),
        'localweek'                 => array( '1', 'LOKALEWEKE', 'PLAATSELIJKEWEEK', 'LOKALEWEEK', 'LOCALWEEK' ),
        'localdow'                  => array( '1', 'LOKALEDVDW', 'PLAATSELIJKEDVDW', 'LOCALDOW' ),
-       'revisionid'                => array( '1', 'REVISIEID', 'REVISIE-ID', 'VERSIEID', 'REVISIONID' ),
-       'revisionday'               => array( '1', 'REVISIEDAG', 'VERSIEDAG', 'REVISIONDAY' ),
-       'revisionday2'              => array( '1', 'REVISIEDAG2', 'VERSIEDAG2', 'REVISIONDAY2' ),
-       'revisionmonth'             => array( '1', 'REVISIEMAOND', 'VERSIEMAAND', 'REVISIONMONTH' ),
-       'revisionyear'              => array( '1', 'REVISIEJAOR', 'VERSIEJAAR', 'REVISIONYEAR' ),
-       'revisiontimestamp'         => array( '1', 'REVISIETIEDSTEMPEL', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
+       'revisionid'                => array( '1', 'VERSIEID', 'REVISIONID' ),
+       'revisionday'               => array( '1', 'VERSIEDAG', 'REVISIONDAY' ),
+       'revisionday2'              => array( '1', 'VERSIEDAG2', 'REVISIONDAY2' ),
+       'revisionmonth'             => array( '1', 'VERSIEMAOND', 'VERSIEMAAND', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'VERSIEMAOND1', 'VERSIEMAAND1', 'REVISIONMONTH1' ),
+       'revisionyear'              => array( '1', 'VERSIEJAOR', 'VERSIEJAAR', 'REVISIONYEAR' ),
+       'revisiontimestamp'         => array( '1', 'VERSIETIEDSTEMPEL', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'VERSIEGEBRUKER', 'VERSIEGEBRUIKER', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'MEERVOUD:', 'PLURAL:' ),
-       'fullurl'                   => array( '0', 'HELEURL', 'VOLLEDIGEURL', 'VOLLEDIGEURL:', 'FULLURL:' ),
-       'fullurle'                  => array( '0', 'HELEURLE', 'VOLLEDIGEURLE', 'VOLLEDIGEURLE:', 'FULLURLE:' ),
+       'fullurl'                   => array( '0', 'HELEURL', 'VOLLEDIGEURL:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', 'HELEURLE', 'VOLLEDIGEURLE:', 'FULLURLE:' ),
        'lcfirst'                   => array( '0', 'KLEERSTE:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'GLEERSTE:', 'HLEERSTE:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'KL:', 'LC:' ),
        'uc'                        => array( '0', 'HL:', 'UC:' ),
        'raw'                       => array( '0', 'RAUW:', 'RUW:', 'RAW:' ),
-       'displaytitle'              => array( '1', 'TEUNTITEL', 'TOONTITEL', 'TITELTONEN', 'WEERGEGEVENTITEL', 'DISPLAYTITLE' ),
-       'newsectionlink'            => array( '1', '__NIEJESECTIEVERWIEZING__', '__NIEUWESECTIELINK__', '__NIEUWESECTIEKOPPELING__', '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'          => array( '1', '__GIENNIEJKOPJENVERWIEZING__', '__GEENNIEUWKOPJEVERWIJZING__', '__GEENNIEUWESECTIELINK__', '__GEENNIEUWKOPJEKOPPELING__', '__NONEWSECTIONLINK__' ),
+       'displaytitle'              => array( '1', 'TEUNTITEL', 'WEERGEGEVENTITEL', 'TOONTITEL', 'DISPLAYTITLE' ),
+       'nocommafysuffix'           => array( '0', 'GIENSCHEIDINGSTEKEN', 'GEENSCHEIDINGSTEKEN', 'NOSEP' ),
+       'newsectionlink'            => array( '1', '__NIEJESEKSIEVERWIEZING__', '__NIEUWESECTIELINK__', '__NIEUWESECTIEKOPPELING__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'          => array( '1', '__GIENNIEJKOPJENVERWIEZING__', '__GEENNIEUWKOPJEKOPPELING__', '__GEENNIEUWESECTIELINK__', '__GEENNIEUWKOPJEVERWIJZING__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'DISSEVERSIE', 'HUIDIGEVERSIE', 'CURRENTVERSION' ),
        'urlencode'                 => array( '0', 'URLKODEREN', 'URLCODEREN', 'CODEERURL', 'URLENCODE:' ),
        'anchorencode'              => array( '0', 'ANKERKODEREN', 'ANKERCODEREN', 'CODEERANKER', 'ANCHORENCODE' ),
@@ -189,7 +195,7 @@ $magicWords = array(
        'directionmark'             => array( '1', 'RICHTINGMARKERING', 'RICHTINGSMARKERING', 'DIRECTIONMARK', 'DIRMARK' ),
        'language'                  => array( '0', '#TAAL:', '#LANGUAGE:' ),
        'contentlanguage'           => array( '1', 'INHOUDSTAAL', 'INHOUDTAAL', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
-       'pagesinnamespace'          => array( '1', 'PAGINASINNAAMRUUMTE', 'PAGINA’SINNAAMRUUMTE', 'PAGINA\'SINNAAMRUUMTE', 'PAGINASINNAAMRUIMTE', 'PAGINA’SINNAAMRUIMTE', 'PAGINA\'SINNAAMRUIMTE', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'pagesinnamespace'          => array( '1', 'ZIEJENINNAAMRUUMTE', 'PAGINASINNAAMRUIMTE', 'PAGINA’SINNAAMRUIMTE', 'PAGINA\'SINNAAMRUIMTE', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'            => array( '1', 'ANTALBEHEERDERS', 'AANTALBEHEERDERS', 'AANTALADMINS', 'NUMBEROFADMINS' ),
        'formatnum'                 => array( '0', 'FORMATTEERNUM', 'NUMFORMATTEREN', 'FORMATNUM' ),
        'padleft'                   => array( '0', 'LINKSOPVULLEN', 'PADLEFT' ),
@@ -199,36 +205,43 @@ $magicWords = array(
        'filepath'                  => array( '0', 'BESTAANDSPAD:', 'BESTANDSPAD:', 'FILEPATH:' ),
        'tag'                       => array( '0', 'etiket', 'label', 'tag' ),
        'hiddencat'                 => array( '1', '__VERBÖRGENKAT__', '__VERBORGENCAT__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', 'PAGINASINKATEGORIE', 'PAGINASINKAT', 'PAGINASINCATEGORIE', 'PAGINASINCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                  => array( '1', 'PAGINAGROOTTE', 'PAGESIZE' ),
+       'pagesincategory'           => array( '1', 'ZIEJENINKATEGORIE', 'PAGINASINCATEGORIE', 'PAGINASINCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                  => array( '1', 'ZIEDGROOTTE', 'PAGINAGROOTTE', 'PAGESIZE' ),
        'noindex'                   => array( '1', '__GIENINDEX__', '__GEENINDEX__', '__NOINDEX__' ),
        'numberingroup'             => array( '1', 'ANTALINGROEP', 'AANTALINGROEP', 'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'            => array( '1', '__STAOTIESEDEURVERWIEZING__', '__STATISCHEDOORVERWIJZING__', '__STATISCHEREDIRECT__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'BEVEILIGINGSNIVO', 'BEVEILIGINGSNIVEAU', 'PROTECTIONLEVEL' ),
        'formatdate'                => array( '0', 'daotumopmaak', 'datumopmaak', 'formatdate', 'dateformat' ),
        'url_query'                 => array( '0', 'ZEUKOPDRACHTE', 'ZOEKOPDRACHT', 'QUERY' ),
+       'defaultsort_noerror'       => array( '0', 'gienfout', 'geenfout', 'noerror' ),
+       'pagesincategory_pages'     => array( '0', 'ziejen', 'paginas', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'onderkategorieen', 'ondercategorieen', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'bestaanden', 'bestanden', 'files' ),
 );
 
 $specialPageAliases = array(
        'Activeusers'               => array( 'Aktieve_gebrukers' ),
        'Allmessages'               => array( 'Alle_systeemteksten' ),
-       'Allpages'                  => array( 'Alle_pagina\'s' ),
-       'Ancientpages'              => array( 'Oudste_pagina\'s' ),
-       'Blankpage'                 => array( 'Lege_pagina' ),
-       'Block'                     => array( 'Blokkeer_IP' ),
-       'Blockme'                   => array( 'Blokkeer_mien' ),
+       'Allpages'                  => array( 'Alle_ziejen' ),
+       'Ancientpages'              => array( 'Oudste_ziejen' ),
+       'Badtitle'                  => array( 'Verkeerde_ziednaam' ),
+       'Blankpage'                 => array( 'Lege_zied' ),
+       'Block'                     => array( 'Blokkeren' ),
        'Booksources'               => array( 'Boekinformasie' ),
        'BrokenRedirects'           => array( 'Ebreuken_deurverwiezingen' ),
        'Categories'                => array( 'Kategorieën' ),
+       'ChangeEmail'               => array( 'Netpost_wiezigen' ),
        'ChangePassword'            => array( 'Wachtwoord_wiezigen' ),
+       'ComparePages'              => array( 'Ziejen_vergelieken' ),
        'Confirmemail'              => array( 'Netpost_bevestigen' ),
        'Contributions'             => array( 'Biedragen' ),
        'CreateAccount'             => array( 'Gebruker_anmaken' ),
        'Deadendpages'              => array( 'Gien_verwiezingen' ),
        'DeletedContributions'      => array( 'Vort-edaone_gebrukersbiedragen' ),
-       'Disambiguations'           => array( 'Deurverwiespagina\'s' ),
        'DoubleRedirects'           => array( 'Dubbele_deurverwiezingen' ),
+       'EditWatchlist'             => array( 'Volglieste_bewarken' ),
        'Emailuser'                 => array( 'Bericht_sturen' ),
+       'ExpandTemplates'           => array( 'Mallen_substitueren' ),
        'Export'                    => array( 'Uutvoeren' ),
        'Fewestrevisions'           => array( 'Minste_bewarkingen' ),
        'FileDuplicateSearch'       => array( 'Dubbele_bestaanden_zeuken' ),
@@ -245,50 +258,53 @@ $specialPageAliases = array(
        'Listusers'                 => array( 'Gebrukerslieste' ),
        'Lockdb'                    => array( 'Databanke_blokkeren' ),
        'Log'                       => array( 'Logboeken' ),
-       'Lonelypages'               => array( 'Weespagina\'s' ),
+       'Lonelypages'               => array( 'Weesziejen' ),
        'Longpages'                 => array( 'Lange_artikels' ),
        'MergeHistory'              => array( 'Geschiedenisse_bie_mekaar_doon' ),
        'MIMEsearch'                => array( 'MIME-zeuken' ),
        'Mostcategories'            => array( 'Meeste_kategorieën' ),
        'Mostimages'                => array( 'Meestgebruukten_bestaanden' ),
-       'Mostlinked'                => array( 'Meest_naor_verwezen_pagina\'s' ),
+       'Mostinterwikis'            => array( 'Meeste_interwikiverwiezingen' ),
+       'Mostlinked'                => array( 'Meest_naor_verwezen_ziejen' ),
        'Mostlinkedcategories'      => array( 'Meestgebruukten_kategorieën' ),
        'Mostlinkedtemplates'       => array( 'Meestgebruken_mallen' ),
        'Mostrevisions'             => array( 'Meeste_bewarkingen' ),
-       'Movepage'                  => array( 'Herneum_pagina' ),
+       'Movepage'                  => array( 'Zied_herneumen' ),
        'Mycontributions'           => array( 'Mien_biedragen' ),
-       'Mypage'                    => array( 'Mien_gebrukerspagina' ),
+       'Mypage'                    => array( 'Mien_gebrukerszied' ),
        'Mytalk'                    => array( 'Mien_overleg' ),
-       'Myuploads'                 => array( 'Mien_in-elaojen_bestanen' ),
+       'Myuploads'                 => array( 'Mien_in-elaojen_bestaanden' ),
        'Newimages'                 => array( 'Nieje_bestaanden' ),
-       'Newpages'                  => array( 'Nieje_pagina\'s' ),
+       'Newpages'                  => array( 'Nieje_ziejen' ),
+       'PagesWithProp'             => array( 'Ziejen_mit_eigenschap' ),
        'PasswordReset'             => array( 'Wachtwoord_opniej_instellen' ),
        'PermanentLink'             => array( 'Vaste_verwiezing' ),
-       'Popularpages'              => array( 'Populaire_artikels' ),
+       'Popularpages'              => array( 'Populaere_artikels' ),
        'Preferences'               => array( 'Veurkeuren' ),
        'Prefixindex'               => array( 'Veurvoegselindex' ),
-       'Protectedpages'            => array( 'Beveiligden_pagina\'s' ),
+       'Protectedpages'            => array( 'Beveiligden_ziejen' ),
        'Protectedtitles'           => array( 'Beveiligden_titels' ),
-       'Randompage'                => array( 'Zo_mer_n_artikel' ),
-       'Randomredirect'            => array( 'Zo_mer_n_deurverwiezing' ),
+       'Randompage'                => array( 'Netzelde_welk_artikel' ),
+       'Randomredirect'            => array( 'Netzelde_welke_deurverwiezing' ),
        'Recentchanges'             => array( 'Leste_wiezigingen' ),
-       'Recentchangeslinked'       => array( 'Volg_verwiezingen' ),
+       'Recentchangeslinked'       => array( 'Leste_wiezigingen_ekoppeld' ),
+       'Redirect'                  => array( 'Deurverwiezen' ),
        'Revisiondelete'            => array( 'Versie_vortdoon' ),
        'Search'                    => array( 'Zeuken' ),
        'Shortpages'                => array( 'Korte_artikels' ),
-       'Specialpages'              => array( 'Spesiale_pagina\'s' ),
+       'Specialpages'              => array( 'Spesiale_ziejen' ),
        'Statistics'                => array( 'Staotistieken' ),
        'Tags'                      => array( 'Etiketten' ),
        'Uncategorizedcategories'   => array( 'Kategorieën_zonder_kategorie' ),
        'Uncategorizedimages'       => array( 'Bestaanden_zonder_kategorie' ),
-       'Uncategorizedpages'        => array( 'Pagina\'s_zonder_kategorie' ),
+       'Uncategorizedpages'        => array( 'Ziejen_zonder_kategorie' ),
        'Uncategorizedtemplates'    => array( 'Mallen_zonder_kategorie' ),
        'Undelete'                  => array( 'Weerummeplaotsen' ),
        'Unlockdb'                  => array( 'Databanke_vriegeven' ),
        'Unusedcategories'          => array( 'Ongebruukten_kategorieën' ),
        'Unusedimages'              => array( 'Ongebruukten_bestaanden' ),
        'Unusedtemplates'           => array( 'Ongebruukten_mallen' ),
-       'Unwatchedpages'            => array( 'Niet-evolgden_pagina\'s' ),
+       'Unwatchedpages'            => array( 'Niet-evolgden_ziejen' ),
        'Upload'                    => array( 'Bestaanden_opsturen' ),
        'UploadStash'               => array( 'Bestaandenstallige' ),
        'Userlogin'                 => array( 'Anmelden' ),
@@ -297,10 +313,10 @@ $specialPageAliases = array(
        'Version'                   => array( 'Versie' ),
        'Wantedcategories'          => array( 'Gewunste_kategorieën' ),
        'Wantedfiles'               => array( 'Gewunste_bestaanden' ),
-       'Wantedpages'               => array( 'Gewunste_pagina\'s' ),
+       'Wantedpages'               => array( 'Gewunste_ziejen' ),
        'Wantedtemplates'           => array( 'Gewunste_mallen' ),
        'Watchlist'                 => array( 'Volglieste' ),
-       'Whatlinkshere'             => array( 'Verwiezingen_naor_disse_pagina' ),
+       'Whatlinkshere'             => array( 'Verwiezingen_naor_disse_zied' ),
        'Withoutinterwiki'          => array( 'Gien_interwiki' ),
 );
 
index 58e80f3..3119f64 100644 (file)
@@ -178,7 +178,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'gecentreerd', 'center', 'centre' ),
        'img_framed'                => array( '1', 'omkaderd', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'kaderloos', 'frameless' ),
-       'img_page'                  => array( '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
+       'img_lang'                  => array( '1', 'taal=$1', 'lang=$1' ),
+       'img_page'                  => array( '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'rechtop', 'rechtop=$1', 'rechtop$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'rand', 'border' ),
        'img_baseline'              => array( '1', 'grondlijn', 'baseline' ),
@@ -188,6 +189,7 @@ $magicWords = array(
        'img_bottom'                => array( '1', 'beneden', 'bottom' ),
        'img_text_bottom'           => array( '1', 'tekst-beneden', 'text-bottom' ),
        'img_link'                  => array( '1', 'koppeling=$1', 'verwijzing=$1', 'link=$1' ),
+       'img_class'                 => array( '1', 'klasse=$1', 'class=$1' ),
        'sitename'                  => array( '1', 'SITENAAM', 'SITENAME' ),
        'ns'                        => array( '0', 'NR:', 'NS:' ),
        'nse'                       => array( '0', 'NRE:', 'NSE:' ),
@@ -214,6 +216,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'VERSIEJAAR', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'VERSIEGEBRUIKER', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'VERSIEGROOTTE', 'REVISIONSIZE' ),
        'plural'                    => array( '0', 'MEERVOUD:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'VOLLEDIGEURL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'VOLLEDIGEURLE:', 'FULLURLE:' ),
@@ -268,12 +271,12 @@ $magicWords = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'ActieveGebruikers' ),
        'Allmessages'               => array( 'AlleBerichten', 'Systeemberichten' ),
+       'AllMyUploads'              => array( 'AlMijnUploads' ),
        'Allpages'                  => array( 'AllePaginas', 'AllePagina’s', 'AllePagina\'s' ),
        'Ancientpages'              => array( 'OudstePaginas', 'OudstePagina’s', 'OudstePagina\'s' ),
        'Badtitle'                  => array( 'OnjuistePaginanaam' ),
        'Blankpage'                 => array( 'LegePagina' ),
        'Block'                     => array( 'Blokkeren', 'IPblokkeren', 'BlokkeerIP', 'BlokkeerIp' ),
-       'Blockme'                   => array( 'BlokkeerMij', 'MijBlokkeren' ),
        'Booksources'               => array( 'Boekbronnen', 'Boekinformatie' ),
        'BrokenRedirects'           => array( 'GebrokenDoorverwijzingen' ),
        'Categories'                => array( 'Categorieën' ),
@@ -285,10 +288,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'GebruikerAanmaken' ),
        'Deadendpages'              => array( 'VerwijslozePaginas', 'VerwijslozePagina’s', 'VerwijslozePagina\'s' ),
        'DeletedContributions'      => array( 'VerwijderdeBijdragen' ),
-       'Disambiguations'           => array( 'Doorverwijzingen' ),
        'DoubleRedirects'           => array( 'DubbeleDoorverwijzingen' ),
        'EditWatchlist'             => array( 'VolglijstBewerken' ),
        'Emailuser'                 => array( 'GebruikerE-mailen', 'E-mailGebruiker' ),
+       'ExpandTemplates'           => array( 'SjablonenSubstitueren' ),
        'Export'                    => array( 'Exporteren' ),
        'Fewestrevisions'           => array( 'MinsteVersies', 'MinsteHerzieningen', 'MinsteRevisies' ),
        'FileDuplicateSearch'       => array( 'BestandsduplicatenZoeken' ),
@@ -332,10 +335,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'BeveiligdePaginas', 'BeveiligdePagina\'s', 'BeschermdePaginas', 'BeschermdePagina’s', 'BeschermdePagina\'s' ),
        'Protectedtitles'           => array( 'BeveiligdeTitels', 'BeschermdeTitels' ),
        'Randompage'                => array( 'Willekeurig', 'WillekeurigePagina' ),
+       'RandomInCategory'          => array( 'WillekeurigeUitCategorie' ),
        'Randomredirect'            => array( 'WillekeurigeDoorverwijzing' ),
        'Recentchanges'             => array( 'RecenteWijzigingen' ),
        'Recentchangeslinked'       => array( 'RecenteWijzigingenGelinkt', 'VerwanteWijzigingen' ),
        'Redirect'                  => array( 'Doorverwijzen' ),
+       'ResetTokens'               => array( 'TokensOpnieuwInstellen' ),
        'Revisiondelete'            => array( 'VersieVerwijderen', 'HerzieningVerwijderen', 'RevisieVerwijderen' ),
        'Search'                    => array( 'Zoeken' ),
        'Shortpages'                => array( 'KortePaginas', 'KortePagina’s', 'KortePagina\'s' ),
@@ -648,8 +653,8 @@ Meer informatie is beschikbaar op de pagina [[Special:Version|softwareversie]].'
 'youhavenewmessages' => 'U hebt $1 ($2).',
 'youhavenewmessagesfromusers' => 'U heeft $1 van {{PLURAL:$3|een andere gebruiker|$3 gebruikers}} ($2).',
 'youhavenewmessagesmanyusers' => 'U heeft $1 van een groot aantal gebruikers ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|een nieuw bericht|nieuwe berichten}}',
-'newmessagesdifflinkplural' => 'laatste {{PLURAL:$1|wijziging|wijzigingen}}',
+'newmessageslinkplural' => '{{PLURAL:$1|een nieuw bericht|999=nieuwe berichten}}',
+'newmessagesdifflinkplural' => 'laatste {{PLURAL:$1|wijziging|999=wijzigingen}}',
 'youhavenewmessagesmulti' => 'U hebt nieuwe berichten op $1',
 'editsection' => 'bewerken',
 'editold' => 'bewerken',
@@ -783,7 +788,7 @@ De opgegeven reden is "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en tekst "$3"',
 'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekend naamruimtenummer $1 en tekst "$2"',
 'exception-nologin' => 'Niet aangemeld',
-'exception-nologin-text' => 'Om deze pagina te bekijken of deze handeling uit te kunnen voeren moet u [[Special:Userlogin|aangemeld]] zijn bij deze wiki.',
+'exception-nologin-text' => '[[Special:Userlogin|Meld u aan]] om deze pagina te bekijken of deze handeling uit te voeren.',
 'exception-nologin-text-manual' => 'U moet $1 om deze pagina te kunnen bekijken of de handeling uit te voeren.',
 
 # Virus scanner
@@ -831,7 +836,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'gotaccount' => 'Hebt u al een gebruikersnaam? $1.',
 'gotaccountlink' => 'Aanmelden',
 'userlogin-resetlink' => 'Bent u uw aanmeldgegevens vergeten?',
-'userlogin-resetpassword-link' => 'Uw wachtwoord opnieuw instellen',
+'userlogin-resetpassword-link' => 'Wachtwoord vergeten?',
 'helplogin-url' => 'Help:Aanmelden',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hulp bij aanmelden]]',
 'userlogin-loggedin' => 'U bent al aangemeld als {{GENDER:$1|$1}}.
@@ -1359,15 +1364,16 @@ U kunt deze verschillen bekijken. Er kunnen details te vinden zijn in het [{{ful
 'revdelete-text' => "'''Verwijderde bewerkingen zijn zichtbaar in de geschiedenis en logboeken, maar delen van de inhoud zijn niet langer publiek toegankelijk.'''
 Andere beheerders van {{SITENAME}} kunnen de verborgen inhoud benaderen en de verwijdering ongedaan maken met behulp van dit formulier, tenzij er aanvullende beperkingen gelden die zijn ingesteld door de systeembeheerder.",
 'revdelete-confirm' => 'Bevestig dat u dit wilde doen, dat u de consequenties begrijpt en dat u dit doet in overeenstemming met het geldende [[{{MediaWiki:Policy-url}}|beleid]].',
-'revdelete-suppress-text' => "Versies verbergen dient '''alleen''' gebruikt te worden in de volgende gevallen:
-* Ongepaste persoonlijke informatie
-*: ''woonadres, telefoonnummers, Burger Service Nummers, enzovoort.''",
+'revdelete-suppress-text' => "Gebruik versies verbergen '''alleen''' in de volgende gevallen:
+* Mogelijk smadelijke informatie;
+* Ongepaste persoonlijke gegevens, zoals:
+*: ''adres, telefoonnummers, Burger Service Nummers, enzovoort.''",
 'revdelete-legend' => 'Zichtbaarheidsbeperkingen instellen',
-'revdelete-hide-text' => 'Bewerkte tekst verbergen',
+'revdelete-hide-text' => 'Versietekst',
 'revdelete-hide-image' => 'Bestandsinhoud verbergen',
 'revdelete-hide-name' => 'Handeling en doel verbergen',
-'revdelete-hide-comment' => 'Bewerkingssamenvatting verbergen',
-'revdelete-hide-user' => 'Gebruikersnaam/IP-adres van de gebruiker verbergen',
+'revdelete-hide-comment' => 'Bewerkingssamenvatting',
+'revdelete-hide-user' => 'Gebruikersnaam of IP-adres van de gebruiker',
 'revdelete-hide-restricted' => 'Deze beperkingen ook op beheerders toepassen',
 'revdelete-radio-same' => '(niet wijzigen)',
 'revdelete-radio-set' => 'Verborgen',
@@ -1835,7 +1841,9 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'recentchanges-label-minor' => 'Dit is een kleine bewerking',
 'recentchanges-label-bot' => 'Deze bewerking is uitgevoerd door een bot',
 'recentchanges-label-unpatrolled' => 'Deze bewerking is nog niet gecontroleerd',
+'recentchanges-label-plusminus' => 'Deze paginagrootte is met dit aantal bytes gewijzigd',
 'recentchanges-legend-newpage' => "Zie ook de [[Special:NewPages|Lijst met nieuwe pagina's]].",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Hieronder {{PLURAL:$1|staat de laatste bewerking|staan de laatste '''$1''' bewerkingen}} in de laatste {{PLURAL:$2|dag|'''$2''' dagen}}, op $4 om $5.",
 'rcnotefrom' => "Wijzigingen sinds '''$2''' (met een maximum van '''$1''' wijzigingen).",
 'rclistfrom' => 'Wijzigingen bekijken vanaf $1',
index 0d02088..d9498da 100644 (file)
@@ -217,23 +217,23 @@ $namespaceNames = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Verksame_brukarar', 'Aktive_brukarar' ),
        'Allmessages'               => array( 'Alle_systemmeldingar' ),
+       'AllMyUploads'              => array( 'Alle_opplastingane_mine' ),
        'Allpages'                  => array( 'Alle_sider' ),
        'Ancientpages'              => array( 'Gamle_sider' ),
        'Badtitle'                  => array( 'Dårleg_tittel' ),
        'Blankpage'                 => array( 'Tom_side' ),
        'Block'                     => array( 'Blokker' ),
-       'Blockme'                   => array( 'Blokker_meg' ),
        'Booksources'               => array( 'Bokkjelder' ),
        'BrokenRedirects'           => array( 'Blindvegsomdirigeringar' ),
        'Categories'                => array( 'Kategoriar' ),
        'ChangeEmail'               => array( 'Endra_e-post', 'Endre_e-post' ),
        'ChangePassword'            => array( 'Nullstill_passord' ),
+       'ComparePages'              => array( 'Samanlikna_sider', 'Samanlikne_sider', 'Samanlikn_sider' ),
        'Confirmemail'              => array( 'Stadfest_e-postadresse' ),
        'Contributions'             => array( 'Bidrag' ),
        'CreateAccount'             => array( 'Opprett_konto' ),
        'Deadendpages'              => array( 'Blindvegsider' ),
        'DeletedContributions'      => array( 'Sletta_brukarbidrag' ),
-       'Disambiguations'           => array( 'Fleirtydingssider' ),
        'DoubleRedirects'           => array( 'Doble_omdirigeringar' ),
        'EditWatchlist'             => array( 'Endra_overvakingsliste', 'Endre_overvakingsliste' ),
        'Emailuser'                 => array( 'E-post' ),
@@ -243,8 +243,9 @@ $specialPageAliases = array(
        'Filepath'                  => array( 'Filstig', 'Filsti' ),
        'Import'                    => array( 'Importer' ),
        'Invalidateemail'           => array( 'Gjer_e-post_ugyldig' ),
+       'JavaScriptTest'            => array( 'Utrøyning_av_JavaScript', 'JavaScript-test' ),
        'BlockList'                 => array( 'Blokkeringsliste' ),
-       'LinkSearch'                => array( 'Lenkjesøk' ),
+       'LinkSearch'                => array( 'Lenkjesøk', 'Lenkesøk' ),
        'Listadmins'                => array( 'Administratorliste', 'Administratorar' ),
        'Listbots'                  => array( 'Bottliste', 'Bottar', 'Robotliste', 'Robotar' ),
        'Listfiles'                 => array( 'Filliste' ),
@@ -259,6 +260,7 @@ $specialPageAliases = array(
        'MIMEsearch'                => array( 'MIME-søk' ),
        'Mostcategories'            => array( 'Flest_kategoriar' ),
        'Mostimages'                => array( 'Mest_brukte_filer' ),
+       'Mostinterwikis'            => array( 'Flest_interwikilenkjer', 'Mest_interwiki' ),
        'Mostlinked'                => array( 'Mest_lenka_sider', 'Mest_lenkja_sider' ),
        'Mostlinkedcategories'      => array( 'Mest_brukte_kategoriar' ),
        'Mostlinkedtemplates'       => array( 'Mest_brukte_malar' ),
index 8c184dd..ca9df6d 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Paginas_ancianas' ),
        'Blankpage'                 => array( 'Pagina_blanca', 'PaginaBlanca' ),
        'Block'                     => array( 'Blocar', 'Blocatge' ),
-       'Blockme'                   => array( 'Blocatz_me', 'Blocatz-me' ),
        'Booksources'               => array( 'Obratge_de_referéncia', 'Obratges_de_referéncia' ),
        'BrokenRedirects'           => array( 'Redireccions_copadas', 'RedireccionsCopadas' ),
        'Categories'                => array( 'Categorias' ),
@@ -74,7 +73,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_un_compte', 'CrearUnCompte', 'CrearCompte' ),
        'Deadendpages'              => array( 'Paginas_sul_camin_d\'enlòc' ),
        'DeletedContributions'      => array( 'Contribucions_escafadas', 'ContribucionsEscafadas' ),
-       'Disambiguations'           => array( 'Omonimia', 'Omonimias', 'Paginas_d\'omonimia' ),
        'DoubleRedirects'           => array( 'Redireccions_doblas', 'RedireccionsDoblas' ),
        'Emailuser'                 => array( 'Corrièr_electronic', 'Email', 'Emèl', 'Emèil' ),
        'Export'                    => array( 'Exportar', 'Exportacion' ),
index 2561283..652c970 100644 (file)
@@ -83,7 +83,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ଖରାପନାମ' ),
        'Blankpage'                 => array( 'ଖାଲିପୃଷ୍ଠା' ),
        'Block'                     => array( 'ଅଟକାଇବେ', 'ଆଇପିଅଟକାଇବେ', 'ସଭ୍ୟଅଟକାଇବେ' ),
-       'Blockme'                   => array( 'ମୋତେଅଟକାଇବେ' ),
        'Booksources'               => array( 'ବହିସ୍ରୋତ' ),
        'BrokenRedirects'           => array( 'ଭଙ୍ଗାଲେଉଟାଣି' ),
        'Categories'                => array( 'ଶ୍ରେଣୀ' ),
@@ -95,7 +94,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ଖାତାଖୋଲିବେ' ),
        'Deadendpages'              => array( 'ଆଗକୁରାହାନଥିବାପୃଷ୍ଠା' ),
        'DeletedContributions'      => array( 'ହଟାଇଦିଆଯାଇଥିବାଅବଦାନ' ),
-       'Disambiguations'           => array( 'ବହୁବିକଳ୍ପୀ' ),
        'DoubleRedirects'           => array( 'ଦୁଇଥରଲେଉଟାଣି' ),
        'EditWatchlist'             => array( 'ଧ୍ୟାନସୂଚୀବଦଳାଇବେ' ),
        'Emailuser'                 => array( 'ସଭ୍ୟଙ୍କୁମେଲକରିବେ' ),
index c445194..a418993 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Æвзæрном' ),
        'Blankpage'                 => array( 'АфтидФарс' ),
        'Block'                     => array( 'Блок' ),
-       'Blockme'                   => array( 'НыблокМæКæн' ),
        'Booksources'               => array( 'ЧингуытыРавзæрæнтæ' ),
        'BrokenRedirects'           => array( 'ЦъæлРарвыстытæ' ),
        'Categories'                => array( 'Категоритæ' ),
@@ -71,7 +70,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'АккаунтСкæнын' ),
        'Deadendpages'              => array( 'ХæдбарФæрстæ' ),
        'DeletedContributions'      => array( 'ХафтБавæрд' ),
-       'Disambiguations'           => array( 'Бирæнысаниуæгджынтæ' ),
        'DoubleRedirects'           => array( 'ДывæрÆрвыстытæ' ),
        'EditWatchlist'             => array( 'ЦæстдардИвын' ),
        'Emailuser'                 => array( 'АрхайæгмæEmail' ),
index 0573a1a..77f6c7b 100644 (file)
@@ -31,8 +31,8 @@ $namespaceNames = array(
        NS_MEDIA            => 'ਮੀਡੀਆ',
        NS_SPECIAL          => 'ਖ਼ਾਸ',
        NS_TALK             => 'ਗੱਲ-ਬਾਤ',
-       NS_USER             => 'ਵਰਤà©\8cਂਕਾਰ',
-       NS_USER_TALK        => 'ਵਰਤà©\8cਂਕਾਰ_ਗੱਲ-ਬਾਤ',
+       NS_USER             => 'ਵਰਤà©\8bਂਕਾਰ',
+       NS_USER_TALK        => 'ਵਰਤà©\8bਂਕਾਰ_ਗੱਲ-ਬਾਤ',
        NS_PROJECT_TALK     => '$1_ਗੱਲ-ਬਾਤ',
        NS_FILE             => 'ਤਸਵੀਰ',
        NS_FILE_TALK        => 'ਤਸਵੀਰ_ਗੱਲ-ਬਾਤ',
@@ -51,6 +51,8 @@ $namespaceAliases = array(
        'ਚਰਚਾ' => NS_TALK,
        'ਮੈਂਬਰ' => NS_USER,
        'ਮੈਂਬਰ_ਚਰਚਾ' => NS_USER_TALK,
+       'ਵਰਤੌਂਕਾਰ' => NS_USER,
+       'ਵਰਤੌਂਕਾਰ_ਗੱਲ-ਬਾਤ' => NS_USER_TALK,
        '$1_ਚਰਚਾ' => NS_PROJECT_TALK,
        'ਤਸਵੀਰ_ਚਰਚਾ' => NS_FILE_TALK,
        'ਮੀਡੀਆਵਿਕਿ' => NS_MEDIAWIKI,
@@ -64,24 +66,22 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'ਸਰਗਰਮ_ਵਰਤੋਂਕਾਰ' ),
        'Allmessages'               => array( 'ਸਾਰੇ_ਸਨੇਹੇ' ),
-       'Allpages'                  => array( 'ਸਾਰà©\87_ਪੰਨੇ' ),
-       'Ancientpages'              => array( 'ਪà©\81ਰਾਣà©\87_ਪੰਨੇ' ),
+       'Allpages'                  => array( 'ਸਾਰà©\87_ਸਫ਼ੇ' ),
+       'Ancientpages'              => array( 'ਪà©\81ਰਾਣà©\87_ਸਫ਼ੇ' ),
        'Badtitle'                  => array( 'ਖ਼ਰਾਬ_ਸਿਰਲੇਖ' ),
-       'Blankpage'                 => array( 'à¨\96਼ਾਲà©\80_ਪੰਨਾ' ),
+       'Blankpage'                 => array( 'à¨\96਼ਾਲà©\80_ਸਫ਼ਾ' ),
        'Block'                     => array( 'ਪਾਬੰਦੀ_ਲਾਓ', 'IP_’ਤੇ_ਪਾਬੰਦੀ_ਲਾਓ', 'ਵਰਤੋਂਕਾਰ_’ਤੇ_ਪਾਬੰਦੀ_ਲਾਓ' ),
-       'Blockme'                   => array( 'ਮੇਰੇ_’ਤੇ_ਪਾਬੰਦੀ_ਲਾਓ' ),
        'Booksources'               => array( 'ਕਿਤਾਬ_ਸਰੋਤ' ),
        'BrokenRedirects'           => array( 'ਟੁੱਟੇ_ਰੀਡਿਰੈਕਟ' ),
        'Categories'                => array( 'ਸ਼੍ਰੇਣੀਆਂ' ),
        'ChangeEmail'               => array( 'ਈ-ਮੇਲ_ਬਦਲੋ' ),
        'ChangePassword'            => array( 'ਪਾਸਵਰਡ_ਬਦਲੋ', 'ਪਾਸਵਰਡ_ਰੀਸੈੱਟ_ਕਰੋ' ),
-       'ComparePages'              => array( 'ਪੰਨਿਆਂ_ਦੀ_ਤੁਲਨਾ_ਕਰੋ' ),
+       'ComparePages'              => array( 'ਸਫ਼ਿਆਂ_ਦੀ_ਤੁਲਨਾ_ਕਰੋ' ),
        'Confirmemail'              => array( 'ਈ-ਮੇਲ_ਤਸਦੀਕ_ਕਰੋ' ),
        'Contributions'             => array( 'ਯੋਗਦਾਨ' ),
        'CreateAccount'             => array( 'ਖਾਤਾ_ਬਣਾਓ' ),
-       'Deadendpages'              => array( 'ਬੰਦ_ਪੰਨੇ' ),
+       'Deadendpages'              => array( 'ਬੰਦ_ਸਫ਼ੇ' ),
        'DeletedContributions'      => array( 'ਮਿਟਾਏ_ਯੋਗਦਾਨ' ),
-       'Disambiguations'           => array( 'ਗੁੰਝਲਖੋਲ੍ਹ' ),
        'DoubleRedirects'           => array( 'ਦੂਹਰੇ_ਰੀਡਿਰੈਕਟ' ),
        'EditWatchlist'             => array( 'ਨਿਗਰਾਨੀ-ਲਿਸਟ_ਸੋਧੋ' ),
        'Emailuser'                 => array( 'ਵਰਤੋਂਕਾਰ_ਨੂੰ_ਈ-ਮੇਲ_ਕਰੋ' ),
@@ -92,62 +92,62 @@ $specialPageAliases = array(
        'Import'                    => array( 'ਆਯਾਤ' ),
        'Invalidateemail'           => array( 'ਗਲਤ_ਈ-ਮੇਲ_ਪਤਾ' ),
        'JavaScriptTest'            => array( 'ਜਾਵਾਸਕ੍ਰਿਪਟ_ਪਰਖ' ),
-       'BlockList'                 => array( 'ਪਾਬੰਦà©\80à¨\86à¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
+       'BlockList'                 => array( 'ਪਾਬੰਦà©\80à¨\86à¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
        'LinkSearch'                => array( 'ਲਿੰਕ_ਖੋਜੋ' ),
-       'Listadmins'                => array( 'ਪà©\8dਰਬੰਧà¨\95ਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listbots'                  => array( 'ਬà©\8bà¨\9fਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listfiles'                 => array( 'ਫ਼ਾà¨\88ਲਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listgrouprights'           => array( 'ਵਰਤੋਂਕਾਰ_ਹੱਕ_ਸੂਚੀ' ),
-       'Listredirects'             => array( 'ਰà©\80ਡਿਰà©\88à¨\95à¨\9fਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listusers'                 => array( 'ਵਰਤà©\8bà¨\82à¨\95ਾਰਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
+       'Listadmins'                => array( 'ਪà©\8dਰਬੰਧà¨\95ਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listbots'                  => array( 'ਬà©\8bà¨\9fਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listfiles'                 => array( 'ਫ਼ਾà¨\88ਲਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listgrouprights'           => array( 'ਵਰਤੋਂਕਾਰ_ਹੱਕਾਂ_ਦੀ_ਲਿਸਟ' ),
+       'Listredirects'             => array( 'ਰà©\80ਡਿਰà©\88à¨\95à¨\9fਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listusers'                 => array( 'ਵਰਤà©\8bà¨\82à¨\95ਾਰਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
        'Lockdb'                    => array( 'ਡੈਟਾਬੇਸ_’ਤੇ_ਤਾਲਾ_ਲਗਾਓ' ),
        'Log'                       => array( 'ਚਿੱਠਾ', 'ਚਿੱਠੇ' ),
-       'Lonelypages'               => array( 'à¨\87à¨\95ੱਲà©\87_ਪੰਨੇ' ),
-       'Longpages'                 => array( 'ਲੰਬà©\87_ਪੰਨੇ' ),
+       'Lonelypages'               => array( 'à¨\87à¨\95ੱਲà©\87_ਸਫ਼ੇ' ),
+       'Longpages'                 => array( 'ਲੰਬà©\87_ਸਫ਼ੇ' ),
        'MergeHistory'              => array( 'ਰਲਾਉਣ_ਦਾ_ਅਤੀਤ' ),
        'MIMEsearch'                => array( 'MIME_ਖੋਜੋ' ),
        'Mostcategories'            => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Mostimages'                => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਜੁੜੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
        'Mostinterwikis'            => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਇੰਟਰਵਿਕੀ' ),
-       'Mostlinked'                => array( 'ਸਭ_ਤà©\8bà¨\82_ਵੱਧ_à¨\9cà©\81à©\9cà©\87_ਪੰਨੇ' ),
+       'Mostlinked'                => array( 'ਸਭ_ਤà©\8bà¨\82_ਵੱਧ_à¨\9cà©\81à©\9cà©\87_ਸਫ਼ੇ' ),
        'Mostlinkedcategories'      => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਜੁੜੀਆਂ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Mostlinkedtemplates'       => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਜੁੜੇ_ਫਰਮੇ' ),
        'Mostrevisions'             => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਰੀਵਿਜ਼ਨ' ),
        'Movepage'                  => array( 'ਸਿਰਲੇਖ_ਬਦਲੋ' ),
        'Mycontributions'           => array( 'ਮੇਰੇ_ਯੋਗਦਾਨ' ),
-       'Mypage'                    => array( 'ਮà©\87ਰਾ_ਪੰਨਾ' ),
+       'Mypage'                    => array( 'ਮà©\87ਰਾ_ਸਫ਼ਾ' ),
        'Mytalk'                    => array( 'ਮੇਰੀ_ਚਰਚਾ' ),
        'Myuploads'                 => array( 'ਮੇਰੇ_ਅੱਪਲੋਡ' ),
        'Newimages'                 => array( 'ਨਵੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
-       'Newpages'                  => array( 'ਨਵà©\87à¨\82_ਪੰਨੇ' ),
+       'Newpages'                  => array( 'ਨਵà©\87à¨\82_ਸਫ਼ੇ' ),
        'PasswordReset'             => array( 'ਪਾਸਵਰਡ_ਰੀਸੈੱਟ' ),
        'PermanentLink'             => array( 'ਪੱਕਾ_ਲਿੰਕ' ),
-       'Popularpages'              => array( 'ਮਸ਼ਹà©\82ਰ_ਪੰਨੇ' ),
+       'Popularpages'              => array( 'ਮਸ਼ਹà©\82ਰ_ਸਫ਼ੇ' ),
        'Preferences'               => array( 'ਪਸੰਦਾਂ' ),
        'Prefixindex'               => array( 'ਅਗੇਤਰ_ਤਤਕਰਾ' ),
-       'Protectedpages'            => array( 'ਸà©\81ਰੱà¨\96ਿà¨\85ਤ_ਪੰਨੇ' ),
+       'Protectedpages'            => array( 'ਸà©\81ਰੱà¨\96ਿà¨\85ਤ_ਸਫ਼ੇ' ),
        'Protectedtitles'           => array( 'ਸੁਰੱਖਿਅਤ_ਸਿਰਲੇਖ' ),
-       'Randompage'                => array( 'ਰਲਵਾà¨\82_ਪੰਨਾ' ),
+       'Randompage'                => array( 'ਰਲਵਾà¨\82_ਸਫ਼ਾ' ),
        'Randomredirect'            => array( 'ਸੁਰੱਖਿਅਤ_ਰੀਡਿਰੈਕਟ' ),
-       'Recentchanges'             => array( 'ਹਾਲ_\'ਚ_ਹੋਈਆਂ_ਤਬਦੀਲੀਆਂ' ),
+       'Recentchanges'             => array( 'ਹਾਲੀਆ_ਤਬਦੀਲੀਆਂ' ),
        'Recentchangeslinked'       => array( 'ਜੁੜੀਆਂ_ਤਾਜ਼ਾ_ਤਬਦੀਲੀਆਂ' ),
-       'Revisiondelete'            => array( 'ਰੀਵਿਜਨ_ਮਿਟਾਓ' ),
+       'Revisiondelete'            => array( 'ਰà©\80ਵਿà¨\9c਼ਨ_ਮਿà¨\9fਾà¨\93' ),
        'Search'                    => array( 'ਖੋਜੋ' ),
-       'Shortpages'                => array( 'à¨\9bà©\8bà¨\9fà©\87_ਪੰਨੇ' ),
-       'Specialpages'              => array( 'à¨\96਼ਾਸ_ਪੰਨੇ' ),
+       'Shortpages'                => array( 'à¨\9bà©\8bà¨\9fà©\87_ਸਫ਼ੇ' ),
+       'Specialpages'              => array( 'à¨\96਼ਾਸ_ਸਫ਼ੇ' ),
        'Statistics'                => array( 'ਅੰਕੜੇ' ),
        'Tags'                      => array( 'ਟੈਗ' ),
        'Unblock'                   => array( 'ਪਾਬੰਦੀ_ਹਟਾਓ' ),
        'Uncategorizedcategories'   => array( 'ਸ਼੍ਰੇਣੀਹੀਣ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Uncategorizedimages'       => array( 'ਸ਼੍ਰੇਣੀਹੀਣ_ਫ਼ਾਈਲਾਂ' ),
-       'Uncategorizedpages'        => array( 'ਸ਼à©\8dਰà©\87ਣà©\80ਹà©\80ਣ_ਪੰਨੇ' ),
+       'Uncategorizedpages'        => array( 'ਸ਼à©\8dਰà©\87ਣà©\80ਹà©\80ਣ_ਸਫ਼ੇ' ),
        'Uncategorizedtemplates'    => array( 'ਸ਼੍ਰੇਣੀਹੀਣ_ਫਰਮੇ' ),
        'Undelete'                  => array( 'ਅਣ-ਹਟਾਓਣ' ),
        'Unlockdb'                  => array( 'ਡੈਟਾਬੇਸ_ਖੋਲ੍ਹੋ' ),
        'Unusedcategories'          => array( 'ਅਣਵਰਤੀਆਂ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Unusedimages'              => array( 'ਅਣਵਰਤੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
        'Unusedtemplates'           => array( 'ਅਣਵਰਤੇ_ਫਰਮੇ' ),
-       'Unwatchedpages'            => array( 'ਬà©\87-ਨਿà¨\97ਰਾਨ_ਪੰਨੇ' ),
+       'Unwatchedpages'            => array( 'ਬà©\87-ਨਿà¨\97ਰਾਨ_ਸਫ਼ੇ' ),
        'Upload'                    => array( 'ਅੱਪਲੋਡ' ),
        'Userlogin'                 => array( 'ਵਰਤੋਂਕਾਰ_ਲਾਗਇਨ' ),
        'Userlogout'                => array( 'ਵਰਤੋਂਕਾਰ_ਲਾਗਆਊਟ' ),
@@ -155,10 +155,10 @@ $specialPageAliases = array(
        'Version'                   => array( 'ਰੂਪ' ),
        'Wantedcategories'          => array( 'ਚਾਹੀਦੀਆਂ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Wantedfiles'               => array( 'ਚਾਹੀਦੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
-       'Wantedpages'               => array( 'à¨\9aਾਹà©\80ਦà©\87_ਪੰਨੇ', 'ਟੁੱਟੇ_ਜੋੜ' ),
+       'Wantedpages'               => array( 'à¨\9aਾਹà©\80ਦà©\87_ਸਫ਼ੇ', 'ਟੁੱਟੇ_ਜੋੜ' ),
        'Wantedtemplates'           => array( 'ਚਾਹੀਦੇ_ਫਰਮੇ' ),
        'Watchlist'                 => array( 'ਨਿਗਰਾਨੀ-ਲਿਸਟ' ),
-       'Whatlinkshere'             => array( 'à¨\95ਿਹà©\9cà©\87_ਪੰਨੇ_ਇੱਥੇ_ਜੋੜਦੇ_ਹਨ' ),
+       'Whatlinkshere'             => array( 'à¨\95ਿਹà©\9cà©\87_ਸਫ਼ੇ_ਇੱਥੇ_ਜੋੜਦੇ_ਹਨ' ),
        'Withoutinterwiki'          => array( 'ਬਿਨਾਂ_ਇੰਟਰਵਿਕੀਆਂ_ਵਾਲੇ' ),
 );
 
@@ -515,6 +515,7 @@ $1',
 # General errors
 'error' => 'ਗ਼ਲਤੀ',
 'databaseerror' => 'ਡਾਟਾਬੇਸ ਗਲਤੀ',
+'databaseerror-error' => 'ਦੋਸ਼: $1',
 'laggedslavemode' => "'''ਖ਼ਬਰਦਾਰ:''' ਹੋ ਸਕਦਾ ਹੈ ਸਫ਼ੇ ਵਿਚ ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਸ਼ਾਮਲ ਨਾ ਹੋਣ।",
 'readonly' => 'ਡਾਟਾਬੇਸ ਨੂੰ ਤਾਲ਼ਾ ਲੱਗਿਆ ਹੋਇਆ ਹੈ',
 'enterlockreason' => 'ਤਾਲਾ-ਬੰਦੀ ਲਈ ਕਾਰਨ ਦਾਖ਼ਲ ਕਰੋ, ਨਾਲ਼ ਹੀ ਤਾਲਾ-ਬੰਦੀ ਦੇ ਰਿਲੀਜ਼ ਹੋਣ ਦਾ ਅੰਦਾਜ਼ਨ ਵਕਤ',
@@ -632,6 +633,7 @@ $2',
 'userlogin-resetpassword-link' => 'ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?',
 'helplogin-url' => 'Help: ਲਾਗਇਨ ਕਰਨਾ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ਲਾਗਇਨ ਹੋਣ ਲਈ ਮੱਦਦ]]',
+'userlogin-createanother' => 'ਹੋਰ ਖਾਤਾ ਬਣਾਓ',
 'createacct-join' => 'ਆਪਣੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-another-join' => 'ਆਪਣੇ ਅਕਾਊਂਟ ਦੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-emailrequired' => 'ਈਮੇਲ ਪਤਾ',
@@ -694,7 +696,7 @@ $2',
 'acct_creation_throttle_hit' => 'ਤੁਹਾਡਾ IP ਪਤਾ ਵਰਤ ਕੇ ਆਉਣ ਵਾਲ਼ਿਆਂ ਨੇ ਆਖ਼ਰੀ ਦਿਨਾਂ ਵਿਚ ਇਸ ਵਿਕੀ ’ਤੇ {{PLURAL:$1|੧ ਖਾਤਾ ਬਣਾਇਆ ਹੈ|$1 ਖਾਤੇ ਬਣਾਏ ਹਨ}} ਜੋ ਕਿ, ਹਾਲ ਦੀ ਘੜੀ, ਖਾਤੇ ਬਣਾਉਣ ਦੀ ਆਖ਼ਰੀ ਹੱਦ ਹੈ।
 ਨਤੀਜੇ ਵਜੋਂ ਇਸ IP ਪਤੇ ਨੂੰ ਵਰਤਣ ਵਾਲ਼ੇ ਫ਼ਿਲਹਾਲ ਹੋਰ ਖਾਤੇ ਨਹੀਂ ਬਣਾ ਸਕਦੇ।',
 'emailauthenticated' => 'ਤੁਹਾਡਾ ਈ-ਮੇਲ ਪਤਾ $2 ਨੂੰ $3 ’ਤੇ ਤਸਦੀਕ ਕੀਤਾ ਗਿਆ।',
-'emailnotauthenticated' => 'ਤà©\81ਹਾਡਾ à¨\88ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨¹à¨¾à¨²à©\87 à¨¤à¨¸à¨\95ਦà©\80à¨\95 à¨¨à¨¹à©\80à¨\82 à¨¹à©\8bà¨\87à¨\86। à¨¹à©\87ਠ à¨¦à¨¿à©±à¨¤à©\87 à¨«à©\80à¨\9aਰਾà¨\82 à¨²à¨\88 à¨\95à©\8bà¨\88 à¨µà©\80 à¨\88ਮà©\87ਲ à¨¨à¨¹à©\80à¨\82 à¨­à©\87à¨\9cà©\80 à¨\9cਾਵà©\87à¨\97à©\80।',
+'emailnotauthenticated' => 'ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਹਾਲੇ ਤਸਦੀਕ ਨਹੀਂ ਹੋਇਆ। ਹੇਠ ਦਿੱਤੇ ਫੀਚਰਾਂ ਲਈ ਕੋਈ ਵੀ ਈਮੇਲ ਨਹੀਂ ਭੇਜੀ ਜਾਵੇਗੀ।',
 'noemailprefs' => 'ਇਹਨਾਂ ਸਹੂਲਤਾਂ ਦੀ ਵਰਤੋਂ ਲਈ ਆਪਣੀਆਂ ਪਸੰਦਾਂ ਵਿਚ ਇਕ ਈ-ਮੇਲ ਪਤਾ ਦਿਓ।',
 'emailconfirmlink' => 'ਆਪਣਾ ਈਮੇਲ ਪਤਾ ਤਸਦੀਕ ਕਰਾਓ',
 'invalidemailaddress' => 'ਈਮੇਲ ਪਤਾ ਕਬੂਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਅੰਦਾਜ਼ ਵਿਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।
@@ -710,10 +712,12 @@ $2',
 ਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।',
 'usernamehasherror' => 'ਵਰਤੋਂਕਾਰ ਦੇ ਨਾਂ ਵਿਚ ਹੈਸ਼ ਅੱਖਰ ਨਹੀਂ ਹੋ ਸਕਦੇ',
 'login-throttled' => 'ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।
-ਫà©\87ਰ à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰਨ à¨¤à©\8bà¨\82 à¨ªà¨¹à¨¿à¨²à¨¾à¨\82 à¨¥à©\8bà©\9cà©\8dਹà©\80 ਉਡੀਕ ਕਰੋ ਜੀ।',
+ਮà©\81à©\9c à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰਨ à¨¤à©\8bà¨\82 à¨ªà¨¹à¨¿à¨²à¨¾à¨\82 $1 ਉਡੀਕ ਕਰੋ ਜੀ।',
 'login-abort-generic' => 'ਤੁਹਾਡਾ ਦਾਖ਼ਲਾ ਨਾਕਾਮ ਸੀ - ਅਧੂਰਾ ਛੱਡਿਆ',
 'loginlanguagelabel' => 'ਭਾਸ਼ਾ: $1',
 'suspicious-userlogout' => 'ਤੁਹਾਡੀ ਵਿਦਾਇਗੀ ਦੀ ਬੇਨਤੀ ਨਕਾਰ ਦਿੱਤੀ ਗਈ ਕਿਉਂਕਿ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ ਕਿਸੇ ਟੁੱਟੇ ਹੋਏ ਬਰਾਊਜ਼ਰ ਜਾਂ ਕੈਸ਼ ਹੋਈ ਪ੍ਰਾਕਸੀ ਤੋਂ ਭੇਜੀ ਗਈ ਸੀ।',
+'createacct-another-realname-tip' => 'ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ।
+ਜੇਕਰ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP ਦੇ ਮੇਲ() ਕਰਜ ਵਿੱਚ ਅਣਜਾਣ ਦੋਸ਼',
@@ -778,6 +782,9 @@ $2
 
 # Special:ResetTokens
 'resettokens' => 'ਟੋਕਨ ਮੁੜ-ਸੈੱਟ ਕਰੋ',
+'resettokens-tokens' => 'ਟੋਕਨ:',
+'resettokens-token-label' => '$1 (ਚਾਲੂ ਮੁੱਲ: $2)',
+'resettokens-resetbutton' => 'ਚੁਣੇ ਹੋਏ ਟੋਕਨ ਮੁੜ ਸੈੱਟ ਕਰੋ',
 
 # Edit page toolbar
 'bold_sample' => 'ਗੂੜੀ ਲਿਖਤ',
@@ -1025,11 +1032,11 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'revdelete-show-file-submit' => 'ਹਾਂ',
 'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|ਦੀ ਚੁਣੀ ਹੋਈ ਰੀਵਿਜ਼ਨ|ਦੀਆਂ ਚੁਣੀਆਂ ਹੋਈਆਂ ਰੀਵਿਜ਼ਨਾਂ}}:'''",
 'revdelete-legend' => 'ਵੇਖਣ ਪਾਬੰਦੀਆਂ ਸੈੱਟ ਕਰੋ:',
-'revdelete-hide-text' => 'ਰà©\80ਵਿà¨\9c਼ਨ à¨²à¨¿à¨\96ਤ à¨\93ਹਲà©\87',
+'revdelete-hide-text' => 'ਦà©\81ਹਰਾà¨\88 à¨²à¨¿à¨\96ਤ',
 'revdelete-hide-image' => 'ਫ਼ਾਈਲ ਸਮੱਗਰੀ ਓਹਲੇ',
 'revdelete-hide-name' => 'ਕਾਰਵਾਈ ਅਤੇ ਟਾਰਗੇਟ ਓਹਲੇ',
-'revdelete-hide-comment' => 'ਸੋਧ ਸਾਰ ਲੁਕਾਓ',
-'revdelete-hide-user' => 'ਸà©\8bਧਣ à¨µà¨¾à¨²à¨¼à©\87 à¨¦à¨¾ à¨®à©\88à¨\82ਬਰ-ਨਾà¨\82/IP à¨ªà¨¤à¨¾ à¨²à©\81à¨\95ਾà¨\93',
+'revdelete-hide-comment' => 'ਸੋਧ ਸਾਰ',
+'revdelete-hide-user' => 'ਸà©\8bਧਣ à¨µà¨¾à¨²à¨¼à©\87 à¨¦à¨¾ à¨µà¨°à¨¤à©\8bà¨\82à¨\95ਾਰà©\80 à¨¨à¨¾à¨\82/IP à¨ªà¨¤à¨¾',
 'revdelete-hide-restricted' => 'ਪ੍ਰਸ਼ਾਸਕਾਂ ਅਤੇ ਹੋਰਾਂ ਦੀ ਸਮੱਗਰੀ ਲੁਕਾਓ',
 'revdelete-radio-same' => '(ਨਾ ਬਦਲੋ)',
 'revdelete-radio-set' => 'ਲੁਕਵਾਂ',
@@ -1038,6 +1045,9 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'revdelete-unsuppress' => 'ਮੁੜ ਬਹਾਲ ਕੀਤੀਆਂ ਰੀਵਿਜ਼ਨਾਂ ਤੋਂ ਰੋਕਾਂ ਹਟਾਓ',
 'revdelete-log' => 'ਕਾਰਨ:',
 'revdelete-submit' => 'ਚੁਣੇ ਹੋਏ {{PLURAL:$1|ਸੁਧਾਰ|ਸੁਧਾਰਾਂ}} ਉੱਤੇ ਲਾਗੂ ਕਰੋ',
+'revdelete-success' => "'''ਦੁਹਰਾਈ ਦੀ ਪ੍ਰਤੱਖਤਾ ਅੱਪਡੇਟ ਕਰਨੀ ਸਫ਼ਲ ਹੋਈ।'''",
+'revdelete-failure' => "'''ਦੁਹਰਾਈ ਦੀ ਪ੍ਰਤੱਖਤਾ ਅੱਪਡੇਟ ਨਾ ਹੋ ਸਕੀ:'''
+$1",
 'logdelete-success' => "'''ਚਿੱਠੇ ਦੀ ਦਿੱਖ ਕਾਮਯਾਬੀ ਨਾਲ਼ ਸੈੱਟ ਕੀਤੀ।'''",
 'logdelete-failure' => "'''ਚਿੱਠੇ ਦੀ ਦਿੱਖ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ:''' $1",
 'revdel-restore' => 'ਦਿੱਖ ਬਦਲੋ',
@@ -1045,7 +1055,7 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'revdel-restore-visible' => 'ਦਿਸਣਯੋਗ ਰੀਵੀਜਨ',
 'pagehist' => 'ਸਫ਼ਾ ਅਤੀਤ',
 'deletedhist' => 'ਹਟਾਇਆ ਗਿਆ ਅਤੀਤ',
-'revdelete-hide-current' => 'ਤਾਰੀਖ &2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਰੀਵਿਜ਼ਨ ਹੈ।
+'revdelete-hide-current' => 'ਤਾਰੀਖ $2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗ਼ਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਦੁਹਰਾਈ ਹੈ।
 ਇਹ ਲੁਕਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ।',
 'revdelete-otherreason' => 'ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:',
 'revdelete-reasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
@@ -1088,6 +1098,7 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'compareselectedversions' => 'ਚੁਣੇ ਵਰਜਨਾਂ ਦੀ ਤੁਲਨਾ',
 'showhideselectedversions' => 'ਚੁਣੇ ਰੀਵਿਜ਼ਨ ਵਖਾਓ/ਲੁਕਾਓ',
 'editundo' => 'ਰੱਦ ਕਰੋ',
+'diff-empty' => '(ਕੋਈ ਫ਼ਰਕ ਨਹੀਂ)',
 'diff-multi' => '({{PLURAL:$2|ਵਰਤੋਂਕਾਰ ਦੀ|$2 ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ}} {{PLURAL:$1|ਵਿਚਕਾਰਲੀ ਰੀਵਿਜਨ ਨਹੀਂ ਦਿਖਾਈ ਜਾ ਰਹੀ|ਵਿਚਕਾਰਲੀਆਂ $1 ਰੀਵਿਜਨਾਂ ਨਹੀਂ ਦਿਖਾਈਆਂ ਜਾ ਰਹੀਆਂ}})',
 
 # Search results
@@ -1096,6 +1107,7 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'searchresulttext' => '{{SITENAME}} ਖੋਜ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਵੋ, ਵੇਖੋ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'ਤੁਸੀਂ \'\'\'[[:$1]]\'\'\' ਲਈ ਖੋਜ ਕੀਤੀ ([[Special:Prefixindex/$1|"$1" ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੇ ਸਭ ਸਫ਼ੇ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ਨਾਲ ਲਿੰਕ ਹੋਏ ਸਭ ਸਫ਼ੇ]])',
 'searchsubtitleinvalid' => "ਤੁਸੀਂ'''$1''' ਲਈ ਖੋਜ ਕੀਤੀ।",
+'toomanymatches' => 'ਬਾਹਲੇ ਮੇਲ ਮਿਲੇ ਹਨ, ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਹੋਰ ਪੁੱਛ-ਗਿੱਛ ਵਰਤੋ',
 'titlematches' => 'ਆਰਟੀਕਲ ਟੈਕਸਟ ਮਿਲਦਾ',
 'notitlematches' => 'ਕੋਈ ਪੇਜ ਟਾਇਟਲ ਨਹੀਂ ਮਿਲਦਾ',
 'textmatches' => 'ਸਫ਼ੇ ਦੀ ਲਿਖਤ ਮੇਲ ਖਾਂਦੀ ਹੈ',
@@ -1231,7 +1243,7 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'badsig' => 'ਗ਼ਲਤ ਕੱਚੇ ਦਸਤਖ਼ਤ।
 HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'badsiglength' => 'ਦਸਤਖ਼ਤ ਬਹੁਤ ਲੰਬਾ ਹੋ ਗਿਆ ਹੈ। ਇਹ {{PLURAL:$1|ਅੱਖਰ|ਅੱਖਰਾਂ}} ਤੋਂ ਲੰਬਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ।',
-'yourgender' => 'ਲਿੰà¨\97:',
+'yourgender' => 'ਤà©\81ਸà©\80à¨\82 à¨\86ਪਣਾ à¨µà¨°à¨£à¨¨ à¨\95ਿਵà©\87à¨\82 à¨\95ਰਨਾ à¨ªà¨¸à©°à¨¦ à¨\95ਰà©\8bà¨\97à©\87?',
 'gender-unknown' => 'ਮੈਂ ਦੱਸਣਾ ਨਹੀਂ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ',
 'gender-male' => 'ਉਹ ਵਿਕੀ ਸਫ਼ੇ ਸੋਧਦਾ ਹੈ',
 'gender-female' => 'ਉਹ ਵਿਕੀ ਸਫ਼ੇ ਸੋਧਦੀ ਹੈ',
@@ -1256,7 +1268,9 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'prefs-displayrc' => 'ਵੇਖਾਉਣ ਚੋਣਾਂ',
 'prefs-displaysearchoptions' => 'ਵੇਖਾਉਣ ਚੋਣਾਂ',
 'prefs-displaywatchlist' => 'ਵੇਖਾਉਣ ਚੋਣਾਂ',
+'prefs-tokenwatchlist' => 'ਟੋਕਨ',
 'prefs-diffs' => 'ਫ਼ਰਕ',
+'prefs-help-prefershttps' => 'ਇਹ ਪਸੰਦ ਤੁਹਾਡੇ ਅਗਲੇ ਦਾਖ਼ਲੇ ਤੋਂ ਚਾਲੂ ਹੋ ਜਾਵੇਗੀ।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ਈ-ਮੇਲ ਪਤਾ ਸਹੀ ਲਗਦਾ ਹੈ',
@@ -1293,6 +1307,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'group-bot-member' => 'ਬੌਟ',
 
 'grouppage-user' => '{{ns:project}}:ਵਰਤੋਂਕਾਰ',
+'grouppage-autoconfirmed' => '{{ns:project}}:ਸਵੈ-ਤਸਦੀਕੀ ਵਰਤੋਂਕਾਰ',
 'grouppage-bot' => '{{ns:project}}:ਬੌਟ',
 'grouppage-sysop' => '{{ns:project}}:ਪ੍ਰਸ਼ਾਸਕ',
 'grouppage-bureaucrat' => '{{ns:project}}:ਅਫ਼ਸਰ',
@@ -1383,6 +1398,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ਆਖ਼ਰੀ ਫੇਰੀ ਤੋਂ ਲੈ ਕੇ}}',
+'enhancedrc-history' => 'ਅਤੀਤ',
 'recentchanges' => 'ਹਾਲ ’ਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ',
 'recentchanges-legend' => 'ਹਾਲ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਸਬੰਧੀ ਚੋਣਾਂ',
 'recentchanges-summary' => 'ਇਸ ਵਿਕੀ ’ਤੇ ਹੋਈਆਂ ਸਭ ਤੋਂ ਨਵੀਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਸਫ਼ੇ ’ਤੇ ਵੇਖੋ।',
@@ -1392,6 +1409,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'recentchanges-label-bot' => 'ਇਹ ਸੋਧ ਇੱਕ ਬੋਟ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ',
 'recentchanges-label-unpatrolled' => 'ਇਹ ਫੇਰ-ਬਦਲ ਹਾਲੇ ਵੇਖਿਆ ਨਹੀਂ ਗਿਆ',
 'recentchanges-legend-newpage' => '$1 - ਨਵਾਂ ਸਫ਼ਾ',
+'recentchanges-legend-plusminus' => "(''±੧੨੩'')",
 'rcnote' => "$4, $5 ਤੱਕ ਆਖਰੀ {{PLURAL:$2|ਦਿਨ|'''$2''' ਦਿਨਾਂ}} ਵਿੱਚ {{PLURAL:$1|'''1''' ਬਦਲੀ ਹੋਈ ਹੈ।|'''$1''' ਬਦਲੀਆਂ ਹੋਈਆਂ ਹਨ।}}",
 'rcnotefrom' => "'''$2''' ਤੱਕ ('''$1''' ਤੱਕ ਦਿੱਸਦੇ) ਬਦਲਾਵ ਹੇਠ ਦਿੱਤੀਆਂ ਹਨ।",
 'rclistfrom' => '$1 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਖਾਓ',
@@ -1511,6 +1529,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'uploadstash-refresh' => 'ਫ਼ਾਈਲਾਂ ਦੀ ਲਿਸਟ ਨੂੰ ਤਾਜ਼ਾ ਕਰੋ',
 
 # img_auth script messages
+'img-auth-accessdenied' => 'ਪਹੁੰਚ ਨਕਾਰੀ ਗਈ',
 'img-auth-nofile' => 'ਫ਼ਾਈਲ "$1" ਮੌਜੂਦ ਨਹੀਂ ਹੈ।',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -1536,6 +1555,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'listfiles_size' => 'ਆਕਾਰ',
 'listfiles_description' => 'ਵੇਰਵਾ',
 'listfiles_count' => 'ਵਰਜਨ',
+'listfiles-latestversion-yes' => 'ਹਾਂ',
+'listfiles-latestversion-no' => 'ਨਹੀਂ',
 
 # File description page
 'file-anchor-link' => 'ਫ਼ਾਈਲ',
@@ -1614,6 +1635,12 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'randompage' => 'ਰਲ਼ਵਾਂ ਸਫ਼ਾ',
 'randompage-nopages' => '{{PLURAL:$2|ਇਸ ਥਾਂ-ਨਾਮ|ਇਹਨਾਂ ਥਾਂ-ਨਾਂਵਾ}} ਵਿਚ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਹੈ: $1।',
 
+# Random page in category
+'randomincategory' => 'ਸ਼੍ਰੇਣੀ ਵਿਚਲਾ ਰਲ਼ਵਾਂ ਸਫ਼ਾ',
+'randomincategory-invalidcategory' => '"$1" ਕੋਈ ਸਹੀ ਸ਼੍ਰੇਣੀ ਦਾ ਨਾਂ ਨਹੀਂ ਹੈ।',
+'randomincategory-nopages' => '[[:Category:$1|$1]] ਸ਼੍ਰੇਣੀ ਵਿਚ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਹੈ।',
+'randomincategory-selectcategory-submit' => 'ਜਾਓ',
+
 # Random redirect
 'randomredirect' => 'ਰਲ਼ਵਾਂ ਰੀਡਿਰੈਕਟ',
 
index 0ab98ac..ee80c86 100644 (file)
@@ -130,7 +130,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Zły_tytuł' ),
        'Blankpage'                 => array( 'Pusta_strona' ),
        'Block'                     => array( 'Blokuj' ),
-       'Blockme'                   => array( 'Zablokuj_mnie' ),
        'Booksources'               => array( 'Książki' ),
        'BrokenRedirects'           => array( 'Zerwane_przekierowania' ),
        'Categories'                => array( 'Kategorie' ),
@@ -142,15 +141,16 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Utwórz_konto', 'Stwórz_konto' ),
        'Deadendpages'              => array( 'Bez_linków' ),
        'DeletedContributions'      => array( 'Usunięty_wkład' ),
-       'Disambiguations'           => array( 'Ujednoznacznienia' ),
        'DoubleRedirects'           => array( 'Podwójne_przekierowania' ),
        'EditWatchlist'             => array( 'Edytuj_obserwowane' ),
        'Emailuser'                 => array( 'E-mail' ),
+       'ExpandTemplates'           => array( 'Rozwijanie_szablonów' ),
        'Export'                    => array( 'Eksport' ),
        'Fewestrevisions'           => array( 'Najmniej_edycji' ),
        'FileDuplicateSearch'       => array( 'Szukaj_duplikatu_pliku' ),
        'Filepath'                  => array( 'Ścieżka_do_pliku' ),
        'Invalidateemail'           => array( 'Anuluj_e-mail' ),
+       'JavaScriptTest'            => array( 'Test_JavaScriptu' ),
        'BlockList'                 => array( 'Zablokowani' ),
        'LinkSearch'                => array( 'Wyszukiwarka_linków' ),
        'Listadmins'                => array( 'Administratorzy' ),
@@ -179,6 +179,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'Moje_pliki' ),
        'Newimages'                 => array( 'Nowe_pliki' ),
        'Newpages'                  => array( 'Nowe_strony' ),
+       'PagesWithProp'             => array( 'Strony_z_własnością' ),
        'PasswordReset'             => array( 'Wyczyść_hasło' ),
        'PermanentLink'             => array( 'Niezmienny_link' ),
        'Popularpages'              => array( 'Popularne_strony' ),
@@ -187,9 +188,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Zabezpieczone_strony' ),
        'Protectedtitles'           => array( 'Zabezpieczone_nazwy_stron' ),
        'Randompage'                => array( 'Losowa_strona', 'Losowa' ),
+       'RandomInCategory'          => array( 'Losowa_w_kategorii', 'Losowa_strona_w_kategorii' ),
        'Randomredirect'            => array( 'Losowe_przekierowanie' ),
        'Recentchanges'             => array( 'Ostatnie_zmiany', 'OZ' ),
        'Recentchangeslinked'       => array( 'Zmiany_w_linkowanych', 'Zmiany_w_linkujących' ),
+       'Redirect'                  => array( 'Przekieruj' ),
+       'ResetTokens'               => array( 'Resetuj_tokeny' ),
        'Revisiondelete'            => array( 'Usuń_wersję' ),
        'Search'                    => array( 'Szukaj' ),
        'Shortpages'                => array( 'Najkrótsze_strony' ),
@@ -3168,6 +3172,7 @@ Brak katalogu dla plików tymczasowych.',
 Pozwala na wpisanie powodu w opisie zmian.',
 'tooltip-preferences-save' => 'Zapisz preferencje',
 'tooltip-summary' => 'Wpisz krótki opis',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/* Umieszczony tutaj kod CSS zostanie zastosowany we wszystkich skórkach */',
index cdcd880..0e61cd5 100644 (file)
@@ -375,7 +375,7 @@ $messages = array(
 'articlepage' => 'د مخ مېنځپانگه ښکاره کول',
 'talk' => 'خبرې اترې',
 'views' => 'کتنې',
-'toolbox' => 'اوزاربکس',
+'toolbox' => 'اوزارونه',
 'userpage' => 'د کارن پاڼه کتل',
 'projectpage' => 'د پروژې مخ کتل',
 'imagepage' => 'د دوتنې مخ کتل',
@@ -393,7 +393,7 @@ $messages = array(
 'jumpto' => 'ورټوپ کړه:',
 'jumptonavigation' => 'گرځښت',
 'jumptosearch' => 'پلټل',
-'view-pool-error' => 'اÙ\88بخÚ\9aÛ\8dØ\8c Ø¯Ù\85 Ú«ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
+'view-pool-error' => 'اÙ\88بخÚ\9aÛ\8dØ\8c Ø¯Ù\85 Ú¯ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
 ډېر زيات کارنان د همدې مخ د کتلو په هڅه کې دي.
 لطفاً د دې مخ د کتلو د بيا هڅې نه دمخه يو څو شېبې صبر وکړۍ.
 
@@ -433,8 +433,8 @@ $1',
 'youhavenewmessages' => 'تاسې $1 لری  ($2).',
 'youhavenewmessagesfromusers' => 'تاسې د {{PLURAL:$3|يو بل کارن|$3 کارنانو}} لخوا $1 لرۍ ($2).',
 'youhavenewmessagesmanyusers' => 'تاسې د يو شمېر کارنانو لخوا $1 لرۍ ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|يو نوی پيغام|نوي پيغامونه}}',
-'newmessagesdifflinkplural' => 'وروستي {{PLURAL:$1|بدلون|بدلونونه}}',
+'newmessageslinkplural' => '{{PLURAL:$1|يو نوی پيغام|999=نوي پيغامونه}}',
+'newmessagesdifflinkplural' => 'تېر {{PLURAL:$1|بدلون|999=بدلونونه}}',
 'youhavenewmessagesmulti' => 'تاسې په $1 کې نوي پېغامونه لرۍ',
 'editsection' => 'سمول',
 'editold' => 'سمول',
@@ -591,7 +591,7 @@ $1',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
 'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
 'createacct-another-email-ph' => 'برېښليک پته مو ورکړۍ',
-'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او په لاندې ورکړل شوې برېښليک پته کې ورلېږل',
+'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او ځانگړې شوې برېښليک پتې ته ورلېږل',
 'createacct-realname' => 'آر نوم (اختياري)',
 'createaccountreason' => 'سبب:',
 'createacct-reason' => 'سبب',
@@ -650,8 +650,8 @@ $1',
 'mailerror' => 'د برېښليک د لېږلو ستونزه: $1',
 'acct_creation_throttle_hit' => 'د همدې ويکي کارنانو په وروستيو ورځو کې ستاسې د IP پتې په کارولو سره {{PLURAL:$1|1 گڼون|$1 گڼونونه}} جوړ کړي، چې دا په همدې مودې کې د گڼونونو د جوړولو تر ټولو ډېر شمېر دی چې اجازه يې ورکړ شوې.
 نو په همدې خاطر د اوس لپاره د همدې IP پتې کارنان نه شي کولای چې نور گڼونونه جوړ کړي.',
-'emailauthenticated' => 'ستاسÛ\90 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 Ù¾Ù\87 $2 Ù\86Û\90Ù¼Ù\87 Ù¾Ù\87 $3 Ø¨Ø¬Ù\88 Ø¯ Ù\85Ù\86Ù\84Ù\88 Ù\88Ú\93 Ù\88گرÚ\81Û\90دÙ\87.',
-'emailnotauthenticated' => 'Ù\84ا ØªØ± Ø§Ù\88سÙ\87 Ø³ØªØ§Ø³Û\90 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 Ø¯ Ù\85Ù\86Ù\84Ù\88 Ù\88Ú\93 Ù\86Ù\87 Ø¯Ù\87 Ú«Ø±Ú\81Û\90دÙ\84Û\90. Ø¯ Ù\84اÙ\86دÛ\90 Ú\81اÙ\86Ú«ړتياو لپاره به تاسې ته هېڅ کوم برېښليک و نه لېږل شي.',
+'emailauthenticated' => 'ستاسې برېښليک پته په $2 په $3 بجو د منلو وړ وگرځېده.',
+'emailnotauthenticated' => 'Ù\84ا ØªØ± Ø§Ù\88سÙ\87 Ø³ØªØ§Ø³Û\90 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 Ø¯ Ù\85Ù\86Ù\84Ù\88 Ù\88Ú\93 Ù\86Ù\87 Ø¯Ù\87 Ú¯Ø±Ú\81Û\90دÙ\84Û\90. Ø¯ Ù\84اÙ\86دÛ\90 Ú\81اÙ\86Ú¯ړتياو لپاره به تاسې ته هېڅ کوم برېښليک و نه لېږل شي.',
 'noemailprefs' => 'ددې لپاره چې دا کړنې کار وکړي نو تاسو يو برېښليک وټاکۍ.',
 'emailconfirmlink' => 'د خپل د برېښليک پتې پخلی وکړی',
 'invalidemailaddress' => 'دا برېښليک پته نه منل کېږي، دا ځکه چې دا پته يوه ناکره بڼه لري.
@@ -667,7 +667,7 @@ $1',
 که چېرته دا کړنه په تېروتنه کې شوی وي نو تاسې کولای شی چې دا پيغام بابېزه وگڼۍ.',
 'usernamehasherror' => 'کارن-نوم نشي کېدلای چې کرښکې لوښې ولري',
 'login-throttled' => 'تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.
-لطفاً د بيا هڅې نه مخکې يو څو شېبې تم شۍ.',
+لطفاً د بيا هڅې نه مخکې $1 شېبې تم شۍ.',
 'login-abort-generic' => 'غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو',
 'loginlanguagelabel' => 'ژبه: $1',
 
@@ -681,8 +681,7 @@ $1',
 'newpassword' => 'نوی پټنوم:',
 'retypenew' => 'نوی پټنوم بيا وليکه:',
 'resetpass_submit' => 'پټنوم مو وټاکۍ او بيا غونډال ته ورننوځۍ',
-'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!
-اوس غونډال کې د ورننوتلو په حال کې يو ...',
+'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!',
 'resetpass_forbidden' => 'پټنومونه مو نه شي بدلېدلای',
 'resetpass-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'resetpass-submit-loggedin' => 'پټنوم بدلول',
@@ -707,6 +706,7 @@ $1',
 # Special:ChangeEmail
 'changeemail' => 'برېښليک پته بدلول',
 'changeemail-header' => 'د گڼون برېښليک پته بدلول',
+'changeemail-text' => 'د برېښليک پتې بدلولو لپاره مو همدا فورمه ډکه کړۍ. د دې بدلون د تاييد لپاره بايد پټنوم مو ورکړۍ.',
 'changeemail-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'changeemail-oldemail' => 'اوسنۍ برېښليک پته:',
 'changeemail-newemail' => 'نوې برېښليک پته:',
@@ -930,14 +930,14 @@ $1',
 'revdelete-show-file-submit' => 'هو',
 'revdelete-selected' => "'''د [[:$1]] {{PLURAL:$2|ټاکلې بڼه|ټاکلې بڼې}}:'''",
 'revdelete-legend' => 'د ښکارېدنې محدوديتونه ټاکل',
-'revdelete-hide-text' => 'د مخکتنې متن پټول',
+'revdelete-hide-text' => 'د مخکتنې متن',
 'revdelete-hide-image' => 'د دوتنې مېنځپانگه پټول',
 'revdelete-hide-name' => 'کړنه او موخه پټول',
-'revdelete-hide-comment' => 'د سمون لنډيز پټول',
-'revdelete-hide-user' => 'د سمونگر کارن-نوم/آی پي پته پټول',
+'revdelete-hide-comment' => 'د سمون لنډيز',
+'revdelete-hide-user' => 'د سمونگر کارن-نوم/آی پي پته',
 'revdelete-radio-same' => '(مه بدلوه)',
-'revdelete-radio-set' => 'Ù\87Ù\88',
-'revdelete-radio-unset' => 'نه',
+'revdelete-radio-set' => 'پټ',
+'revdelete-radio-unset' => 'ښکاره',
 'revdelete-log' => 'سبب:',
 'revdel-restore' => 'ښکارېدنه بدلول',
 'revdel-restore-deleted' => 'ړنګې شوې بڼې',
@@ -1062,7 +1062,7 @@ $1',
 'prefs-rendering' => 'ښکارېدنه',
 'saveprefs' => 'خوندي کول',
 'resetprefs' => 'بيا سمول',
-'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول',
+'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول (په ټولو برخو کې)',
 'prefs-editing' => 'سمېدنې کې دی',
 'rows' => 'ليکې:',
 'columns' => 'ستنې:',
@@ -1111,7 +1111,7 @@ $1',
 'yournick' => 'کورنی نوم:',
 'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
 بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
-'yourgender' => 'جنس:',
+'yourgender' => 'څنگه غواړۍ ځان څرگند کړۍ؟',
 'gender-unknown' => 'ناڅرگنده',
 'gender-male' => 'نارينه',
 'gender-female' => 'ښځينه',
@@ -1147,10 +1147,11 @@ $1',
 'userrights-lookup-user' => 'کارن ډلې سمبالول',
 'userrights-user-editname' => 'يو کارن نوم وليکۍ:',
 'editusergroup' => 'کارن ډلې سمول',
-'editinguser' => '',
+'editinguser' => "د '''[[کارن:$1|$1]]''' کارن رښتې بدلول $2",
 'userrights-editusergroup' => 'کارن ډلې سمول',
 'saveusergroups' => 'کارن ډلې خوندي کول',
 'userrights-groupsmember' => 'غړی د:',
+'userrights-groupsmember-auto' => 'ضمني غړی د:',
 'userrights-groups-help' => 'تاسې هغه ډلې چې همدا کارن يې غړی دی بدلولی شی:
 * يو په نښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب لري.
 * يو نانښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب نلري.
@@ -1260,7 +1261,7 @@ $1',
 'recentchanges-label-minor' => 'دا يوه وړه سمونه ده',
 'recentchanges-label-bot' => 'دغه سمون د يو روباټ لخوا ترسره شوی',
 'recentchanges-label-unpatrolled' => 'دغه سمون تر اوسه پورې نه دی څارل شوی',
-'recentchanges-legend-newpage' => '$1 - نوی مخ',
+'recentchanges-legend-newpage' => '(دا هم وگورۍ [[Special:NewPages|د نويو مخونو لړليک]])',
 'rcnote' => "دلته لاندې {{PLURAL:$1|وروستی '''1''' بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په  {{PLURAL:$2| يوې ورځ|'''$2''' ورځو}} کې تر $4 نېټې او $5 بجو پېښ شوي.",
 'rcnotefrom' => "په همدې ځای کې لاندې هغه بدلونونه دي چې د '''$2''' نه راپدېخوا پېښ شوي (تر '''$1''' پورې ښکاره شوي).",
 'rclistfrom' => 'هغه نوي بدلونونه ښکاره کول چې له $1 نه پيلېږي',
@@ -1401,6 +1402,7 @@ $1',
 'upload_source_file' => '(ستاسو په کمپيوټر کې يوه دوتنه)',
 
 # Special:ListFiles
+'listfiles-summary' => 'همدا ځانگړی مخ ټولې پورته شوې دوتنې ښکاره کوي.',
 'listfiles_search_for' => 'د انځور د نوم لټون:',
 'imgfile' => 'دوتنه',
 'listfiles' => 'د دوتنو لړليک',
@@ -1411,6 +1413,8 @@ $1',
 'listfiles_size' => 'کچه (بايټونه)',
 'listfiles_description' => 'څرگندونه',
 'listfiles_count' => 'بڼې',
+'listfiles-latestversion-yes' => 'هو',
+'listfiles-latestversion-no' => 'نه',
 
 # File description page
 'file-anchor-link' => 'دوتنه',
@@ -1483,6 +1487,7 @@ $1',
 
 # Random page in category
 'randomincategory-selectcategory' => 'يو ناټاکلی مخ له وېشنيزې موندل: $1 $2.',
+'randomincategory-selectcategory-submit' => 'ورځه',
 
 # Random redirect
 'randomredirect' => 'ناټاکلی ورگرځېدنه',
@@ -1564,6 +1569,7 @@ $1',
 'listusers' => 'کارن لړليک',
 'listusers-editsonly' => 'يوازې هغه کارنان چې سمونونه يې کړي ښکاره کول',
 'listusers-creationsort' => 'د جوړېدو د نېټې له مخې اوډل',
+'listusers-desc' => 'مخښکته اوډل',
 'usereditcount' => '{{PLURAL:$1|سمون|سمونونه}}',
 'usercreated' => 'په $1 نېټه په $2 بجو {{GENDER:$3|جوړ شو}}',
 'newpages' => 'نوي مخونه',
@@ -1688,7 +1694,7 @@ $1',
 'emailccme' => 'زما د پيغام يوه بېلگه دې ماته هم برېښليک شي.',
 'emailccsubject' => '$1 ته ستاسو د پيغام لمېسه: $2',
 'emailsent' => 'برېښليک مو ولېږل شو',
-'emailsenttext' => 'ستاسو برېښليکي پيغام ولېږل شو.',
+'emailsenttext' => 'ستاسې برېښليکي پيغام ولېږل شو.',
 'emailuserfooter' => 'دا برېښليک د $1 لخوا $2 ته د {{SITENAME}} په وېبځي کې د "کارن ته برېښليک لېږل" د کړنې په مرسته لېږل شوی.',
 
 # User Messenger
@@ -1714,7 +1720,7 @@ $1',
 'unwatchthispage' => 'څارنې په ټپه درول',
 'notanarticle' => 'يو منځپانګيز مخ نه دی',
 'watchlist-details' => 'ستاسې کتنلړ کې {{PLURAL:$1|$1 مخ دی|$1 مخونه دي}}، د خبرو اترو مخونه مو پکې نه دي شمېرلي.',
-'wlheader-enotif' => 'د Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù\84Ù\87 Ù\84ارÛ\90 Ø®Ø¨Ø±Ù\88Ù\84 Ú\86ارÙ\86 Ø´Ù\88Û\8c.*',
+'wlheader-enotif' => 'برÛ\90Ú\9aÙ\84Ù\8aÚ© Ø®Ø¨Ø±Ù\88Ù\86Ù\87 Ú\86ارÙ\86Ù\87 Ø´Ù\88Û\90.',
 'wlheader-showupdated' => "هغه مخونه چې وروستی ځل ستاسو د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک نښه شوي.",
 'watchlistcontains' => 'ستاسې کتنلړ $1 {{PLURAL:$1|مخ|مخونه}} لري.',
 'iteminvalidname' => "د '$1' توکي سره ستونزه، ناسم نوم ...",
@@ -2328,7 +2334,7 @@ $1',
 'exif-copyright' => 'د رښتو خاوند',
 'exif-colorspace' => 'رنگ تشيال',
 'exif-pixelydimension' => 'د انځور سور',
-'exif-pixelxdimension' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¬Ú«والی',
+'exif-pixelxdimension' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¬Ú¯والی',
 'exif-usercomment' => 'د کارن تبصرې',
 'exif-relatedsoundfile' => 'اړونده غږيزه دوتنه',
 'exif-datetimedigitized' => 'د گڼياليز کېدنې وخت او نېټه',
index 4cff02e..82575c6 100644 (file)
@@ -57,6 +57,7 @@
  * @author Teles
  * @author Urhixidur
  * @author Villate
+ * @author Vitorvicentevalente
  * @author Waldir
  * @author Yves Marques Junqueira
  * @author לערי ריינהארט
@@ -117,7 +118,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Título_inválido' ),
        'Blankpage'                 => array( 'Página_em_branco' ),
        'Block'                     => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
-       'Blockme'                   => array( 'Bloquear-me', 'Auto-bloqueio' ),
        'Booksources'               => array( 'Fontes_de_livros' ),
        'BrokenRedirects'           => array( 'Redireccionamentos_quebrados', 'Redirecionamentos_quebrados' ),
        'Categories'                => array( 'Categorias' ),
@@ -128,10 +128,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Criar_conta' ),
        'Deadendpages'              => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
        'DeletedContributions'      => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
-       'Disambiguations'           => array( 'Desambiguações', 'Páginas_de_desambiguação', 'Desambiguar' ),
        'DoubleRedirects'           => array( 'Redireccionamentos_duplos', 'Redirecionamentos_duplos' ),
        'EditWatchlist'             => array( 'Editar_lista_de_páginas_vigiadas' ),
        'Emailuser'                 => array( 'Contactar_utilizador', 'Contactar_usuário', 'Contatar_usuário' ),
+       'ExpandTemplates'           => array( 'Expandir_predefinições' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'Páginas_com_menos_edições', 'Artigos_com_menos_edições', 'Artigos_menos_editados' ),
        'FileDuplicateSearch'       => array( 'Busca_de_ficheiros_duplicados', 'Busca_de_arquivos_duplicados' ),
@@ -192,8 +192,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'Predefinições_não_utilizadas', 'Predefinições_sem_uso' ),
        'Unwatchedpages'            => array( 'Páginas_não_vigiadas', 'Páginas_não-vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
        'Upload'                    => array( 'Carregar_imagem', 'Carregar_ficheiro', 'Carregar_arquivo', 'Enviar' ),
-       'Userlogin'                 => array( 'Entrar', 'Login' ),
-       'Userlogout'                => array( 'Sair', 'Logout' ),
+       'Userlogin'                 => array( 'Entrar' ),
+       'Userlogout'                => array( 'Sair' ),
        'Userrights'                => array( 'Privilégios', 'Direitos', 'Estatutos' ),
        'Version'                   => array( 'Versão', 'Sobre' ),
        'Wantedcategories'          => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
@@ -265,8 +265,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'centro', 'center', 'centre' ),
        'img_framed'                => array( '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'semmoldura', 'semborda', 'frameless' ),
-       'img_page'                  => array( '1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'borda', 'border' ),
        'img_baseline'              => array( '1', 'linhadebase', 'baseline' ),
        'img_top'                   => array( '1', 'acima', 'top' ),
@@ -2502,16 +2502,16 @@ $PAGEINTRO $NEWPAGE
 Resumo da edição: $PAGESUMMARY $PAGEMINOREDIT
 
 Contacte o editor:
-correio eletrónico: $PAGEEDITOR_EMAIL
+correio electrónico: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Até que visite esta página, não receberá mais notificações das alterações futuras.
-Pode também reativar as notificações para todas páginas na sua lista de páginas vigiadas.
+Até que visite novamente esta página com a sua conta ligada, não receberá mais notificações das alterações futuras.
+Pode também reactivar as notificações para todas páginas na sua lista de páginas vigiadas.
 
-             O seu sistema de notificação amigável da {{SITENAME}}
+O seu sistema de notificação amigável da {{SITENAME}}
 
 --
-Para alterar as suas preferências das notificações por correio eletrónico, visite
+Para alterar as suas preferências das notificações por correio electrónico, visite
 {{canonicalurl:{{#special:Preferences}}}}
 
 Para alterar as suas preferências das páginas vigiadas, visite
@@ -3334,7 +3334,7 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
 'svg-long-desc' => 'ficheiro SVG, de $1 × $2 pixels, tamanho: $3',
 'svg-long-desc-animated' => 'ficheiro SVG animado, de $1 × $2 pixels, tamanho: $3',
 'svg-long-error' => 'Ficheiro SVG inválido: $1',
-'show-big-image' => 'Resolução completa',
+'show-big-image' => 'Arquivo original',
 'show-big-image-preview' => 'Tamanho desta antevisão: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Outra resolução|Outras resoluções}}: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
index 5f9affd..fb60915 100644 (file)
@@ -124,7 +124,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Título_inválido' ),
        'Blankpage'                 => array( 'Página_em_branco' ),
        'Block'                     => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
-       'Blockme'                   => array( 'Bloquear-me', 'Auto-bloqueio' ),
        'Booksources'               => array( 'Fontes_de_livros' ),
        'BrokenRedirects'           => array( 'Redirecionamentos_quebrados' ),
        'Categories'                => array( 'Categorias' ),
@@ -135,7 +134,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Criar_conta' ),
        'Deadendpages'              => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
        'DeletedContributions'      => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
-       'Disambiguations'           => array( 'Páginas_de_desambiguação', 'Desambiguar', 'Desambiguações' ),
        'DoubleRedirects'           => array( 'Redirecionamentos_duplos' ),
        'EditWatchlist'             => array( 'Editar_lista_de_páginas_vigiadas' ),
        'Emailuser'                 => array( 'Contatar_usuário', 'Contactar_usuário', 'Contactar_utilizador' ),
@@ -199,8 +197,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'Predefinições_sem_uso', 'Predefinições_não_utilizadas' ),
        'Unwatchedpages'            => array( 'Páginas_não-vigiadas', 'Páginas_não_vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
        'Upload'                    => array( 'Carregar_arquivo', 'Carregar_imagem', 'Carregar_ficheiro', 'Enviar' ),
-       'Userlogin'                 => array( 'Autenticar-se', 'Entrar', 'Login' ),
-       'Userlogout'                => array( 'Sair', 'Logout' ),
+       'Userlogin'                 => array( 'Autenticar-se', 'Entrar' ),
+       'Userlogout'                => array( 'Sair' ),
        'Userrights'                => array( 'Privilégios', 'Direitos', 'Estatutos' ),
        'Version'                   => array( 'Versão', 'Sobre' ),
        'Wantedcategories'          => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
@@ -272,8 +270,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'centro', 'center', 'centre' ),
        'img_framed'                => array( '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'semmoldura', 'semborda', 'frameless' ),
-       'img_page'                  => array( '1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'borda', 'border' ),
        'img_baseline'              => array( '1', 'linhadebase', 'baseline' ),
        'img_top'                   => array( '1', 'acima', 'top' ),
@@ -337,7 +335,7 @@ $messages = array(
 'tog-usenewrc' => 'Agrupar alterações por páginas nas mudanças recentes e nas páginas vigiadas',
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de ferramentas de edição',
-'tog-editondblclick' => 'Editar páginas quando houver clique duplo (requer JavaScript)',
+'tog-editondblclick' => 'Editar páginas quando houver clique duplo',
 'tog-editsection' => 'Ativar a edição de seções com links [editar]',
 'tog-editsectiononrightclick' => 'Habilitar edição de seção por clique com o botão direito no título da seção (requer JavaScript)',
 'tog-showtoc' => 'Mostrar Tabela de Conteúdos (para páginas com mais de três cabeçalhos)',
@@ -785,7 +783,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'gotaccount' => "Já possui uma conta? '''$1'''.",
 'gotaccountlink' => 'Autenticar-se',
 'userlogin-resetlink' => 'Esqueceu-se do seu nome de usuário ou da senha?',
-'userlogin-resetpassword-link' => 'Troque sua senha',
+'userlogin-resetpassword-link' => 'Esqueceu sua senha?',
 'helplogin-url' => 'Help:Iniciar sessão',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda para iniciar sessão]]',
 'userlogin-loggedin' => 'Você já está conectado como {{GENDER:$1|$1}}.
@@ -1298,12 +1296,12 @@ Outros administradores no {{SITENAME}} continuarão podendo acessar ao conteúdo
 'revdelete-hide-text' => 'Ocultar texto da edição',
 'revdelete-hide-image' => 'Ocultar conteúdos do arquivo',
 'revdelete-hide-name' => 'Ocultar ação e alvo',
-'revdelete-hide-comment' => 'Ocultar o sumário de edição',
-'revdelete-hide-user' => 'Ocultar nome de usuário/IP do editor',
+'revdelete-hide-comment' => 'Sumário de edição',
+'revdelete-hide-user' => 'Nome de usuário/endereço IP',
 'revdelete-hide-restricted' => 'Suprimir dados de administradores assim como de outros',
 'revdelete-radio-same' => '(não alterar)',
-'revdelete-radio-set' => 'Sim',
-'revdelete-radio-unset' => 'Não',
+'revdelete-radio-set' => 'Oculto',
+'revdelete-radio-unset' => 'Visível',
 'revdelete-suppress' => 'Suprimir dados de administradores, bem como de outros',
 'revdelete-unsuppress' => 'Remover restrições das edições restauradas',
 'revdelete-log' => 'Motivo:',
index 611cf3d..c58b2e7 100644 (file)
@@ -46,7 +46,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'MawkaPanqa' ),
        'Blankpage'                 => array( 'PanqataChusaqchay' ),
        'Block'                     => array( 'Harkay', 'RuraqtaHarkay', 'IPHarkay' ),
-       'Blockme'                   => array( 'Harkaway' ),
        'Booksources'               => array( 'PukyuLiwru' ),
        'BrokenRedirects'           => array( 'PantaPusapuna', 'PitisqaPusapuna' ),
        'Categories'                => array( 'Katiguriyakuna' ),
@@ -56,7 +55,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'RakiqunaKamariy' ),
        'Deadendpages'              => array( 'Lluqsinannaq' ),
        'DeletedContributions'      => array( 'QullusqaRurasqa', 'QullusqaLlamkapusqa' ),
-       'Disambiguations'           => array( 'SutichanaQillqa' ),
        'DoubleRedirects'           => array( 'IskayllaPusapuna' ),
        'Emailuser'                 => array( 'EChaskitaManakuy' ),
        'Export'                    => array( 'HawamanQuy' ),
@@ -192,7 +190,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'chawpi', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ),
        'img_framed'                => array( '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'inchunnaq', 'sinmarco', 'sin_embarcar', 'sinenmarcar', 'sin_enmarcar', 'frameless' ),
-       'img_page'                  => array( '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina $1', 'página $1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'sayaq', 'sayaq=$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'saywa', 'borde', 'border' ),
        'img_baseline'              => array( '1', 'tiksisiqi', 'baseline' ),
index 6e8e3cf..57ab6cd 100644 (file)
@@ -200,7 +200,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Pagini_vechi' ),
        'Blankpage'                 => array( 'Pagină_goală' ),
        'Block'                     => array( 'Blochează_IP' ),
-       'Blockme'                   => array( 'Blochează-mă' ),
        'Booksources'               => array( 'Referințe_în_cărți' ),
        'BrokenRedirects'           => array( 'Redirectări_invalide' ),
        'Categories'                => array( 'Categorii' ),
@@ -210,7 +209,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Înregistrare' ),
        'Deadendpages'              => array( 'Pagini_fără_legături' ),
        'DeletedContributions'      => array( 'Contribuții_șterse' ),
-       'Disambiguations'           => array( 'Dezambiguizări' ),
        'DoubleRedirects'           => array( 'Redirectări_duble' ),
        'Emailuser'                 => array( 'Email_utilizator' ),
        'Export'                    => array( 'Exportă' ),
index f8179ed..2eb4a22 100644 (file)
@@ -132,11 +132,11 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Активные_участники' ),
        'Allmessages'               => array( 'Системные_сообщения' ),
+       'AllMyUploads'              => array( 'Все_мои_файлы' ),
        'Allpages'                  => array( 'Все_страницы' ),
        'Badtitle'                  => array( 'Недопустимое_название' ),
        'Blankpage'                 => array( 'Пустая_страница' ),
        'Block'                     => array( 'Заблокировать' ),
-       'Blockme'                   => array( 'Заблокируй_меня' ),
        'Booksources'               => array( 'Источники_книг' ),
        'BrokenRedirects'           => array( 'Разорванные_перенаправления' ),
        'Categories'                => array( 'Категории' ),
@@ -148,10 +148,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Создать_учётную_запись', 'Создать_пользователя', 'Зарегистрироваться' ),
        'Deadendpages'              => array( 'Тупиковые_страницы' ),
        'DeletedContributions'      => array( 'Удалённый_вклад' ),
-       'Disambiguations'           => array( 'Неоднозначности' ),
        'DoubleRedirects'           => array( 'Двойные_перенаправления' ),
        'EditWatchlist'             => array( 'Править_список_наблюдения' ),
        'Emailuser'                 => array( 'Письмо_участнику', 'Отправить_письмо' ),
+       'ExpandTemplates'           => array( 'Развёртка_шаблонов' ),
        'Export'                    => array( 'Экспорт', 'Выгрузка' ),
        'Fewestrevisions'           => array( 'Редко_редактируемые' ),
        'FileDuplicateSearch'       => array( 'Поиск_дубликатов_файлов' ),
index f99444e..b3a95d9 100644 (file)
@@ -51,7 +51,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Планый_тітул' ),
        'Blankpage'                 => array( 'Порожня_сторінка' ),
        'Block'                     => array( 'Заблоковати' ),
-       'Blockme'                   => array( 'Заблокуйте_ня' ),
        'Booksources'               => array( 'Жрідла_книг' ),
        'BrokenRedirects'           => array( 'Розорваны_напрямлїня' ),
        'Categories'                => array( 'Катеґорії' ),
@@ -63,7 +62,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Створити_конто' ),
        'Deadendpages'              => array( 'Сторінкы_без_одказів' ),
        'DeletedContributions'      => array( 'Вымазаный_вклад' ),
-       'Disambiguations'           => array( 'Неєднозначны_одказы' ),
        'DoubleRedirects'           => array( 'Подвійны_напрямлїня' ),
        'EditWatchlist'             => array( 'Правити_список_мерькованя' ),
        'Emailuser'                 => array( 'Писмо_хоснователёви' ),
index 1706698..3ff6808 100644 (file)
@@ -87,7 +87,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'पूर्वतनपृष्टानि' ),
        'Blankpage'                 => array( 'रिक्तपृष्ठ' ),
        'Block'                     => array( 'सदस्यप्रतिबन्ध' ),
-       'Blockme'                   => array( 'मदर्थेप्रतिबन्ध' ),
        'Booksources'               => array( 'पुस्तकस्रोत' ),
        'BrokenRedirects'           => array( 'खण्डीतपुनर्निर्देशन' ),
        'Categories'                => array( 'वर्गः' ),
@@ -97,9 +96,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'सृज्उपयोजकसंज्ञा' ),
        'Deadendpages'              => array( 'निराग्रपृष्टानि' ),
        'DeletedContributions'      => array( 'परित्यागितयोगदान' ),
-       'Disambiguations'           => array( 'नि:संदिग्धीकरण' ),
        'DoubleRedirects'           => array( 'पुनर्निर्देशनद्वंद्व' ),
        'Emailuser'                 => array( 'विपत्रयोजक' ),
+       'ExpandTemplates'           => array( 'बिंबधरविस्तारकरोसि' ),
        'Export'                    => array( 'निर्यात' ),
        'Fewestrevisions'           => array( 'स्वल्पपरिवर्तन' ),
        'FileDuplicateSearch'       => array( 'अनुकृतसंचिकाशोध' ),
@@ -139,6 +138,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'सुरक्षितपृष्टानि' ),
        'Protectedtitles'           => array( 'सुरक्षितशिर्षकम्' ),
        'Randompage'                => array( 'अविशीष्टपृष्ठम्' ),
+       'RandomInCategory'          => array( 'अविशिष्टवर्ग' ),
        'Randomredirect'            => array( 'अविशीष्टविचालन्‌' ),
        'Recentchanges'             => array( 'नवीनतम_परिवर्तन' ),
        'Recentchangeslinked'       => array( 'नवीनतमसम्भन्दिन_परिवर्त' ),
index f3e97f4..0103657 100644 (file)
@@ -58,7 +58,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'TitoloErrato' ),
        'Blankpage'                 => array( 'PaginaVuota' ),
        'Block'                     => array( 'Blocca' ),
-       'Blockme'                   => array( 'BloccaProxy' ),
        'Booksources'               => array( 'RicercaISBN' ),
        'BrokenRedirects'           => array( 'RedirectErrati' ),
        'Categories'                => array( 'Categorie' ),
@@ -70,10 +69,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreaAccount' ),
        'Deadendpages'              => array( 'PagineSenzaUscita' ),
        'DeletedContributions'      => array( 'ContributiCancellati' ),
-       'Disambiguations'           => array( 'Disambigua' ),
        'DoubleRedirects'           => array( 'RedirectDoppi' ),
        'EditWatchlist'             => array( 'ModificaOsservati', 'ModificaOsservatiSpeciali', 'ModificaListaSeguiti' ),
        'Emailuser'                 => array( 'InviaEMail' ),
+       'ExpandTemplates'           => array( 'EspandiTemplate' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMenoRevisioni' ),
        'FileDuplicateSearch'       => array( 'CercaFileDuplicati' ),
@@ -117,6 +116,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PagineProtette' ),
        'Protectedtitles'           => array( 'TitoliProtetti' ),
        'Randompage'                => array( 'PaginaCasuale' ),
+       'RandomInCategory'          => array( 'CasualeInCategoria' ),
        'Randomredirect'            => array( 'RedirectCasuale' ),
        'Recentchanges'             => array( 'UltimeModifiche' ),
        'Recentchangeslinked'       => array( 'ModificheCorrelate' ),
@@ -138,8 +138,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'TemplateNonUsati' ),
        'Unwatchedpages'            => array( 'PagineNonOsservate' ),
        'Upload'                    => array( 'Carica' ),
-       'Userlogin'                 => array( 'Entra', 'Login' ),
-       'Userlogout'                => array( 'Esci', 'Logout' ),
+       'Userlogin'                 => array( 'Entra' ),
+       'Userlogout'                => array( 'Esci' ),
        'Userrights'                => array( 'PermessiUtente' ),
        'Version'                   => array( 'Versione' ),
        'Wantedcategories'          => array( 'CategorieRichieste' ),
index 5724a93..798365f 100644 (file)
@@ -37,13 +37,11 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'سڀ صفحا' ),
        'Ancientpages'              => array( 'قديم صفحا' ),
        'Block'                     => array( 'آءِ پي بندش' ),
-       'Blockme'                   => array( 'مونکي بندشيو' ),
        'BrokenRedirects'           => array( 'ٽٽل چورڻا' ),
        'Categories'                => array( 'زمرا' ),
        'Confirmemail'              => array( 'برقٽپال تصديقيو' ),
        'Contributions'             => array( 'ڀاڱيداريون' ),
        'CreateAccount'             => array( 'کاتو کوليو' ),
-       'Disambiguations'           => array( 'سلجھائپ' ),
        'DoubleRedirects'           => array( 'ٻٽا چورڻا' ),
        'Emailuser'                 => array( 'برقٽپال يوزر' ),
        'Export'                    => array( 'برآمد' ),
index 26e1232..ee6d07f 100644 (file)
@@ -35,14 +35,12 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'TuttiLiPàgini' ),
        'Ancientpages'              => array( 'PàginiMancuRizzenti' ),
        'Block'                     => array( 'Brocca' ),
-       'Blockme'                   => array( 'BroccaProxy' ),
        'Booksources'               => array( 'ZirchaISBN' ),
        'BrokenRedirects'           => array( 'RinviiIbbagliaddi' ),
        'Categories'                => array( 'Categuri' ),
        'ChangePassword'            => array( 'RimpusthàParàuraDÓrdhini' ),
        'Contributions'             => array( 'Cuntributi', 'CuntributiUtente' ),
        'Deadendpages'              => array( 'PàginiChenaIscidda' ),
-       'Disambiguations'           => array( 'CuLuMatessiInnommu' ),
        'DoubleRedirects'           => array( 'RinviiDoppi' ),
        'Emailuser'                 => array( 'InviaPosthaErettrònica' ),
        'Export'                    => array( 'Ippurtha' ),
@@ -94,8 +92,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'MudelliInutirizaddi' ),
        'Unwatchedpages'            => array( 'PàginiNòAbbaidaddi' ),
        'Upload'                    => array( 'Carrigga' ),
-       'Userlogin'                 => array( 'Intra', 'Login', 'Accesso' ),
-       'Userlogout'                => array( 'Isci', 'Logout', 'Uscita' ),
+       'Userlogin'                 => array( 'Intra', 'Accesso' ),
+       'Userlogout'                => array( 'Isci', 'Uscita' ),
        'Userrights'                => array( 'PrimmissiUtenti' ),
        'Version'                   => array( 'Versioni' ),
        'Wantedcategories'          => array( 'CateguriDumandaddi' ),
index 4deb798..82509a1 100644 (file)
@@ -50,7 +50,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Veadjemeahttun_bajilčála' ),
        'Blankpage'                 => array( 'Guoros_siidu' ),
        'Block'                     => array( 'Hehtte', 'Hehtte_geavaheaddji', 'Hehtte_IP' ),
-       'Blockme'                   => array( 'Hehtte_mu' ),
        'Booksources'               => array( 'Girjegáldut' ),
        'BrokenRedirects'           => array( 'Boatkanan_stivremat', 'Boatkanan_ođđasitstivremat' ),
        'Categories'                => array( 'Kategoriijat' ),
@@ -60,7 +59,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Rievdadusat' ),
        'CreateAccount'             => array( 'Ráhkat_dovddaldaga', 'Ráhkat_konttu' ),
        'DeletedContributions'      => array( 'Sihkkojuvvon_rievdadusat' ),
-       'Disambiguations'           => array( 'Liŋkkat_dárkonsiidduide' ),
        'DoubleRedirects'           => array( 'Guoktegeardásaš_ođđasitstivremat' ),
        'EditWatchlist'             => array( 'Rievdat_čuovvunlisttu' ),
        'Emailuser'                 => array( 'Sádde_e-poastta' ),
index cdd8fd7..1b9bede 100644 (file)
@@ -36,7 +36,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Sve_stranice' ),
        'Ancientpages'              => array( 'Najstarije_stranice' ),
        'Blankpage'                 => array( 'Prazna_stranica' ),
-       'Blockme'                   => array( 'Blokiraj_me' ),
        'Booksources'               => array( 'Traži_ISBN' ),
        'BrokenRedirects'           => array( 'Kriva_preusmjerenja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -45,7 +44,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Stvori_račun' ),
        'Deadendpages'              => array( 'Mrtve_stranice' ),
        'DeletedContributions'      => array( 'Obrisani_doprinosi' ),
-       'Disambiguations'           => array( 'Razvrstavanja' ),
        'DoubleRedirects'           => array( 'Dvostruka_preusmjerenja' ),
        'Emailuser'                 => array( 'E-mail', 'Elektronska_pošta' ),
        'Export'                    => array( 'Izvezi' ),
index b1f7653..9d30bc7 100644 (file)
@@ -63,7 +63,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'නුසුසුදු_මාතෘකාව' ),
        'Blankpage'                 => array( 'හිස්_පිටුව' ),
        'Block'                     => array( 'වාරණය_කරන්න', 'IP_වාරණය_කරන්න', 'පරිශීලක_වාරණය_කරන්න' ),
-       'Blockme'                   => array( 'මා_වාරණය_කරන්න' ),
        'Booksources'               => array( 'ග්‍රන්ථ_මූලාශ්‍ර' ),
        'BrokenRedirects'           => array( 'භින්න_යළි-යොමුකිරීම්' ),
        'Categories'                => array( 'ප්‍රවර්ග' ),
@@ -73,7 +72,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ගිණුම_තැනීමට' ),
        'Deadendpages'              => array( 'අග_ඇවුරුණු_පිටුව' ),
        'DeletedContributions'      => array( 'මකාදැමුණු_දායකත්වයන්' ),
-       'Disambiguations'           => array( 'වක්‍රෝත්තිහරණයන්' ),
        'DoubleRedirects'           => array( 'ද්විත්ව_යළි-යොමුකිරීම්' ),
        'Emailuser'                 => array( 'පරිශීලකට_විද්‍යුත්-තැපැලක්_යැවිම' ),
        'Export'                    => array( 'නිර්යාතකරන්න' ),
index 0c49e3c..d426014 100644 (file)
@@ -41,7 +41,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'StaréStránky' ),
        'Blankpage'                 => array( 'PrázdnaStránka' ),
        'Block'                     => array( 'Blokovanie' ),
-       'Blockme'                   => array( 'ZablokovaťMa' ),
        'Booksources'               => array( 'KnižnéZdroje' ),
        'BrokenRedirects'           => array( 'PokazenéPresmerovania' ),
        'Categories'                => array( 'Kategórie' ),
@@ -51,7 +50,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'VytvorenieÚčtu' ),
        'Deadendpages'              => array( 'StránkyBezOdkazov' ),
        'DeletedContributions'      => array( 'ZmazanéPríspevky' ),
-       'Disambiguations'           => array( 'RozlišovacieStránky' ),
        'DoubleRedirects'           => array( 'DvojitéPresmerovania' ),
        'Emailuser'                 => array( 'EmailPoužívateľovi' ),
        'Fewestrevisions'           => array( 'NajmenejRevízií' ),
index 2d2e45b..9e762a4 100644 (file)
@@ -48,7 +48,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'StarodavneStrani' ),
        'Blankpage'                 => array( 'PraznaStran' ),
        'Block'                     => array( 'Blokiraj', 'BlokirajIP', 'BlokirajUporabnika' ),
-       'Blockme'                   => array( 'BlokirajMe' ),
        'Booksources'               => array( 'ViriKnjig' ),
        'BrokenRedirects'           => array( 'PretrganePreusmeritve' ),
        'Categories'                => array( 'Kategorije' ),
@@ -56,7 +55,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Prispevki' ),
        'CreateAccount'             => array( 'Registracija' ),
        'DeletedContributions'      => array( 'IzbrisaniPrispevki' ),
-       'Disambiguations'           => array( 'Razločitve' ),
        'DoubleRedirects'           => array( 'DvojnePreusmeritve' ),
        'Export'                    => array( 'Izvozi' ),
        'Fewestrevisions'           => array( 'NajmanjRedakcij' ),
index aedb4ff..83cfaab 100644 (file)
@@ -70,7 +70,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'FaqetAntike' ),
        'Blankpage'                 => array( 'FaqeBosh' ),
        'Block'                     => array( 'BllokoIP' ),
-       'Blockme'                   => array( 'BllokomMua' ),
        'Booksources'               => array( 'BurimeteLibrave' ),
        'Categories'                => array( 'Kategori' ),
        'ChangeEmail'               => array( 'NdryshoEmail' ),
index ae96c21..3ef54e9 100644 (file)
@@ -100,14 +100,12 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'НајстаријиЧланци' ),
        'Badtitle'                  => array( 'Лош_наслов' ),
        'Block'                     => array( 'Блокирај', 'БлокирајИП', 'БлокирајКорисника' ),
-       'Blockme'                   => array( 'БлокирајМе', 'Блокирај_ме' ),
        'BrokenRedirects'           => array( 'Покварена_преусмерења', 'Неисправна_преусмерења' ),
        'Categories'                => array( 'Категорије' ),
        'ComparePages'              => array( 'Упореди_странице' ),
        'Confirmemail'              => array( 'ПотврдиЕ-пошту', 'Потврда_е-поште' ),
        'Contributions'             => array( 'Доприноси', 'Прилози' ),
        'CreateAccount'             => array( 'ОтвориНалог', 'Отвори_налог' ),
-       'Disambiguations'           => array( 'Вишезначне_одреднице' ),
        'DoubleRedirects'           => array( 'Двострука_преусмерења' ),
        'Export'                    => array( 'Извези' ),
        'Fewestrevisions'           => array( 'ЧланциСаНајмањеРевизија' ),
@@ -136,7 +134,7 @@ $specialPageAliases = array(
        'Mypage'                    => array( 'МојаСтраница', 'Моја_страница' ),
        'Mytalk'                    => array( 'МојРазговор', 'Мој_разговор' ),
        'Myuploads'                 => array( 'Моја_слања' ),
-       'Newimages'                 => array( 'Ð\9dовиФаÑ\98лови', 'Ð\9dове_даÑ\82оÑ\82еке', 'НовеСлике' ),
+       'Newimages'                 => array( 'Ð\9dовеÐ\94аÑ\82оÑ\82еке', 'Ð\9dовиФаÑ\98лови', 'НовеСлике' ),
        'Newpages'                  => array( 'НовеСтране' ),
        'PermanentLink'             => array( 'Привремена_веза' ),
        'Popularpages'              => array( 'Популарне_странице' ),
@@ -151,13 +149,13 @@ $specialPageAliases = array(
        'Statistics'                => array( 'Статистике' ),
        'Tags'                      => array( 'Ознаке' ),
        'Uncategorizedcategories'   => array( 'КатегоријеБезКатегорија', 'Несврстане_категорије' ),
-       'Uncategorizedimages'       => array( 'СликеÐ\91езÐ\9aаÑ\82егоÑ\80иÑ\98а', 'ФаÑ\98ловиБезКатегорија' ),
+       'Uncategorizedimages'       => array( 'СликеÐ\91езÐ\9aаÑ\82егоÑ\80иÑ\98а', 'Ð\94аÑ\82оÑ\82екеБезКатегорија' ),
        'Uncategorizedpages'        => array( 'ЧланциБезКатегорија', 'Чланци_без_категорија' ),
        'Uncategorizedtemplates'    => array( 'ШаблониБезКатегорија' ),
        'Undelete'                  => array( 'Врати' ),
        'Unlockdb'                  => array( 'ОткључајБазу', 'Откључај_базу' ),
        'Unusedcategories'          => array( 'НеискоришћенеКатегорије' ),
-       'Unusedimages'              => array( 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bенеСлике', 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bениФаÑ\98лови' ),
+       'Unusedimages'              => array( 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bенеСлике', 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bенеÐ\94аÑ\82оÑ\82еке' ),
        'Upload'                    => array( 'Пошаљи' ),
        'UploadStash'               => array( 'Складиште' ),
        'Userlogin'                 => array( 'Корисничка_пријава' ),
@@ -855,6 +853,8 @@ $2',
 'userlogin-resetpassword-link' => 'Заборавили сте лозинку?',
 'helplogin-url' => 'Help:Logging in',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Помоћ при пријављивању]]',
+'userlogin-loggedin' => 'Већ сте пријављени као {{GENDER:$1|$1}}.
+Користите доњи образац да бисте се пријавили као други корисник.',
 'userlogin-createanother' => 'Отвори још један налог',
 'createacct-join' => 'Унесите своје податке испод',
 'createacct-another-join' => 'Унесите податке за нови налог испод.',
@@ -1169,8 +1169,9 @@ $2
 'storedversion' => 'Ускладиштена измена',
 'nonunicodebrowser' => "'''Упозорење: ваш прегледач не подржава уникод.'''
 Промените га пре него што почнете с уређивањем.",
-'editingold' => "'''Упозорење: уређујете застарелу измену ове странице.
-Ако је сачувате, све новије измене ће бити изгубљене.'''",
+'editingold' => '<div style="background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;">Упозорење: Ви уређујете старију ревизију ове странице.<br />
+Ако је сачувате, све промене учињене од ове ревизије биће изгубљене.
+</div>',
 'yourdiff' => 'Разлике',
 'copyrightwarning' => "Имајте на уму да се сви доприноси на овом викију сматрају као објављени под лиценцом $2 (више на $1).
 Ако не желите да се ваши текстови мењају и размењују без ограничења, онда их не шаљите овде.<br />
@@ -1811,7 +1812,7 @@ $1",
 'recentchanges-label-minor' => 'Мања измена',
 'recentchanges-label-bot' => 'Ову измену је направио бот',
 'recentchanges-label-unpatrolled' => 'Ова измена још није прегледана',
-'recentchanges-legend-newpage' => '$1 - нова страница',
+'recentchanges-legend-newpage' => '(такође погледајте [[Special:NewPages|списак нових страница]])',
 'rcnote' => "Испод {{PLURAL:$1|је '''1''' измена|су последње '''$1''' измене|су последњих '''$1''' измена}} {{PLURAL:$2|претходни дан|у последњa '''$2''' дана|у последњих '''$2''' дана}}, од $4; $5.",
 'rcnotefrom' => 'Испод су измене од <b>$3; $4</b> (до <b>$1</b> измена).',
 'rclistfrom' => 'Прикажи нове измене почев од $1',
@@ -4077,6 +4078,7 @@ $5
 'ellipsis' => '…',
 'percent' => '$1%',
 'parentheses' => '($1)',
+'quotation-marks' => '„$1“',
 
 # Multipage image navigation
 'imgmultipageprev' => '← претходна страница',
@@ -4130,7 +4132,7 @@ $5
 Можете и да [[Special:EditWatchlist/raw|уредите сиров списак]].',
 'watchlistedit-normal-submit' => 'Уклони',
 'watchlistedit-normal-done' => '{{PLURAL:$1|Једна страница је уклоњена|$1 странице су уклоњене|$1 страница је уклоњено}} с вашег списка надгледања:',
-'watchlistedit-raw-title' => 'Ð\9dапÑ\80едно Ñ\83Ñ\80еÑ\92иваÑ\9aе Ñ\81пиÑ\81ка надгледања',
+'watchlistedit-raw-title' => 'Ð\98змени Ñ\81иÑ\80ов Ñ\81пиÑ\81ак надгледања',
 'watchlistedit-raw-legend' => 'Напредно уређивање списка надгледања',
 'watchlistedit-raw-explain' => 'Наслови са списка надгледања су приказани испод и могу се уређивати додавањем или уклањањем ставки са списка;
 један наслов по реду.
@@ -4268,6 +4270,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Посебне странице',
+'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Нормалне посебне странице
 * <span class="mw-specialpagerestricted">Ограничене посебне странице</span>',
 'specialpages-group-maintenance' => 'Извештаји одржавања',
index 9ace5d3..4464361 100644 (file)
@@ -1055,8 +1055,9 @@ Moraćete da unesete svoje promene u postojeći tekst.
 'storedversion' => 'Uskladištena izmena',
 'nonunicodebrowser' => "'''Upozorenje: vaš pregledač ne podržava unikod.'''
 Promenite ga pre nego što počnete s uređivanjem.",
-'editingold' => "'''Upozorenje: uređujete zastarelu izmenu ove stranice.
-Ako je sačuvate, sve novije izmene će biti izgubljene.'''",
+'editingold' => '<div style="background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;">Upozorenje: Vi uređujete stariju reviziju ove stranice.<br />
+Ako je sačuvate, sve promene učinjene od ove revizije biće izgubljene.
+</div>',
 'yourdiff' => 'Razlike',
 'copyrightwarning' => "Imajte na umu da se svi doprinosi na ovom vikiju smatraju kao objavljeni pod licencom $2 (više na $1).
 Ako ne želite da se vaši tekstovi menjaju i razmenjuju bez ograničenja, onda ih ne šaljite ovde.<br />
@@ -1250,8 +1251,8 @@ Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadrža
 'revdelete-hide-user' => 'sakrij ime uređivača',
 'revdelete-hide-restricted' => 'Sakrij podatke od administratora i drugih korisnika',
 'revdelete-radio-same' => '(ne menjaj)',
-'revdelete-radio-set' => 'da',
-'revdelete-radio-unset' => 'ne',
+'revdelete-radio-set' => 'Sakriveno',
+'revdelete-radio-unset' => 'Vidljivo',
 'revdelete-suppress' => 'Sakrij podatke od administratora i drugih korisnika',
 'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim izmenama',
 'revdelete-log' => 'Razlog:',
@@ -3918,6 +3919,7 @@ Potvrdite da stvarno želite da napravite stranicu.",
 'ellipsis' => '…',
 'percent' => '$1%',
 'parentheses' => '($1)',
+'quotation-marks' => '„$1“',
 
 # Multipage image navigation
 'imgmultipageprev' => '← prethodna stranica',
@@ -3971,7 +3973,7 @@ Da biste uklonili naslov, označite kućicu do njega i kliknite na „{{int:Watc
 Možete i da [[Special:EditWatchlist/raw|uredite sirov spisak]].',
 'watchlistedit-normal-submit' => 'Ukloni',
 'watchlistedit-normal-done' => '{{PLURAL:$1|Jedna stranica je uklonjena|$1 stranice su uklonjene|$1 stranica je uklonjeno}} s vašeg spiska nadgledanja:',
-'watchlistedit-raw-title' => 'Napredno uređivanje spiska nadgledanja',
+'watchlistedit-raw-title' => 'Izmeni sirov spisak nadgledanja',
 'watchlistedit-raw-legend' => 'Napredno uređivanje spiska nadgledanja',
 'watchlistedit-raw-explain' => 'Naslovi sa spiska nadgledanja su prikazani ispod i mogu se uređivati dodavanjem ili uklanjanjem stavki sa spiska;
 jedan naslov po redu.
index 962a759..62620b1 100644 (file)
@@ -55,12 +55,10 @@ $specialPageAliases = array(
        'Allmessages'               => array( 'Boskopu' ),
        'Allpages'                  => array( 'AlaPeprewoysi' ),
        'Ancientpages'              => array( 'PasaOwruPeprewoysi' ),
-       'Blockme'                   => array( 'SpikriMi' ),
        'BrokenRedirects'           => array( 'BrokoStirpeprewoysi' ),
        'Categories'                => array( 'Guru' ),
        'Contributions'             => array( 'Kenki' ),
        'Deadendpages'              => array( 'NoSkakiPeprewoysi' ),
-       'Disambiguations'           => array( 'PeprewoysiFuKumakriki' ),
        'DoubleRedirects'           => array( 'Tustirpeprewoysi' ),
        'Emailuser'                 => array( 'EmailMasyin' ),
        'Fewestrevisions'           => array( 'MenaKenki' ),
index 210b74b..327a003 100644 (file)
@@ -49,7 +49,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'KacaKolot' ),
        'Blankpage'                 => array( 'KacaKosong' ),
        'Block'                     => array( 'PeungpeukIP' ),
-       'Blockme'                   => array( 'PeungpeukKuring' ),
        'Booksources'               => array( 'SumberPustaka' ),
        'BrokenRedirects'           => array( 'AlihanPegat' ),
        'Categories'                => array( 'Kategori' ),
@@ -58,7 +57,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Kontribusi' ),
        'CreateAccount'             => array( 'NyieunRekening' ),
        'Deadendpages'              => array( 'KacaBuntu' ),
-       'Disambiguations'           => array( 'Disambiguasi' ),
        'DoubleRedirects'           => array( 'AlihanGanda' ),
        'Emailuser'                 => array( 'SurelekPamake' ),
        'Export'                    => array( 'Ekspor' ),
index 42644eb..1014778 100644 (file)
@@ -98,7 +98,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Gamla_sidor' ),
        'Blankpage'                 => array( 'Tom_sida' ),
        'Block'                     => array( 'Blockera' ),
-       'Blockme'                   => array( 'Blockera_mig' ),
        'Booksources'               => array( 'Bokkällor' ),
        'BrokenRedirects'           => array( 'Trasiga_omdirigeringar', 'Dåliga_omdirigeringar' ),
        'Categories'                => array( 'Kategorier' ),
@@ -108,9 +107,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Skapa_konto' ),
        'Deadendpages'              => array( 'Sidor_utan_länkar', 'Sidor_utan_länkar_från' ),
        'DeletedContributions'      => array( 'Raderade_bidrag' ),
-       'Disambiguations'           => array( 'Förgreningssidor' ),
        'DoubleRedirects'           => array( 'Dubbla_omdirigeringar' ),
        'Emailuser'                 => array( 'E-mail' ),
+       'ExpandTemplates'           => array( 'Expandera_mallar', 'Utöka_mallar' ),
        'Export'                    => array( 'Exportera' ),
        'Fewestrevisions'           => array( 'Minst_versioner' ),
        'FileDuplicateSearch'       => array( 'Dublettfilsökning' ),
@@ -602,8 +601,8 @@ $1',
 'youhavenewmessages' => 'Du har $1 ($2).',
 'youhavenewmessagesfromusers' => 'Du har $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 från många användare ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ett nytt meddelande|nya meddelanden}}',
-'newmessagesdifflinkplural' => 'senaste {{PLURAL:$1|ändring|ändringar}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ett nytt meddelande|999=nya meddelanden}}',
+'newmessagesdifflinkplural' => 'senaste {{PLURAL:$1|ändring|999=ändringar}}',
 'youhavenewmessagesmulti' => 'Du har nya meddelanden på $1',
 'editsection' => 'redigera',
 'editold' => 'redigera',
@@ -733,6 +732,7 @@ Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
 'invalidtitle-unknownnamespace' => 'Ogiltig titel med okänt namnrymdsnummer $1 och texten "$2"',
 'exception-nologin' => 'Inte inloggad',
 'exception-nologin-text' => 'Var god [[Special:Userlogin|logga in]] för att komma åt denna sida eller åtgärd.',
+'exception-nologin-text-manual' => 'Var god $1 för att få tillgång till denna sida eller åtgärd.',
 
 # Virus scanner
 'virus-badscanner' => "Dålig konfigurering: okänd virusskanner: ''$1''",
@@ -1282,6 +1282,7 @@ eller så försöker du gömma den senaste versionen av sidan.',
 Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det dolda innehållet och kan återställa sidan genom samma gränssnitt, om inte ytterligare begränsningar finns.",
 'revdelete-confirm' => 'Var god bekräfta att du vill göra detta, och att du förstår konsekvenserna, och att du gör så i enlighet med [[{{MediaWiki:Policy-url}}|policyn]].',
 'revdelete-suppress-text' => "Undanhållande ska '''bara''' användas i följande fall:
+* Eventuell förolämpande information
 * Opassande personlig information
 *: ''hemadresser och telefonnummer, personnummer, etc.''",
 'revdelete-legend' => 'Ändra synlighet',
@@ -1450,6 +1451,7 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'preferences' => 'Inställningar',
 'mypreferences' => 'Inställningar',
 'prefs-edits' => 'Antal redigeringar:',
+'prefsnologintext2' => 'Var god $1 för att ändra användarinställningar.',
 'changepassword' => 'Byt lösenord',
 'prefs-skin' => 'Utseende',
 'skin-preview' => 'förhandsvisning',
@@ -1748,7 +1750,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'recentchanges-label-minor' => 'Detta är en mindre ändring',
 'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
 'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
-'recentchanges-legend-newpage' => '$1 - ny sida',
+'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
 'rcnote' => "Nedan visas {{PLURAL:$1|'''1''' ändring|de senaste '''$1''' ändringarna}} från {{PLURAL:$2|det senaste dygnet|de senaste '''$2''' dygnen}}, per $4, kl. $5.",
 'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
 'rclistfrom' => 'Visa ändringar efter $1',
@@ -2477,8 +2479,7 @@ Kontakta användaren:
 e-post: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Såvida du inte besöker sidan, kommer du inte att få flera meddelanden om aktivitet på sidan.
-Du kan också ta bort flaggan för meddelanden om ändringar på alla sidor i din bevakningslista.
+Såvida du inte besöker sidan, kommer du inte att få flera meddelanden om aktivitet på sidan när du är inloggad. Du kan också ta bort flaggan för meddelanden om ändringar på alla sidor i din bevakningslista.
 
 Hälsningar från {{SITENAME}}s meddelandesystem
 
@@ -4004,6 +4005,7 @@ Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Publi
 
 # Special:SpecialPages
 'specialpages' => 'Specialsidor',
+'specialpages-note-top' => 'Teckenförklaring',
 'specialpages-note' => '* Normala specialsidor.
 * <span class="mw-specialpagerestricted">Specialsidor med begränsad åtkomst.</span>',
 'specialpages-group-maintenance' => 'Underhållsrapporter',
index 7520e59..a1bdd4a 100644 (file)
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'KurasazaZamani' ),
        'Blankpage'                 => array( 'KurasaTupu' ),
        'Block'                     => array( 'Zui', 'ZuiaIP', 'ZuiaMtumiaji' ),
-       'Blockme'                   => array( 'Nizuiye' ),
        'Booksources'               => array( 'ZuiaChanzo' ),
        'BrokenRedirects'           => array( 'ElekezoIliovunjika' ),
        'Categories'                => array( 'Jamii' ),
@@ -62,7 +61,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'SajiliAkaunti' ),
        'Deadendpages'              => array( 'KurasaZilizoondoshwa' ),
        'DeletedContributions'      => array( 'MichangoIliyofutwa' ),
-       'Disambiguations'           => array( 'Maana' ),
        'DoubleRedirects'           => array( 'ElekezoMbili' ),
        'Emailuser'                 => array( 'BaruapepeyaMtumiaji' ),
        'Export'                    => array( 'Toa' ),
index 38f11cf..d6add03 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'పురాతనపేజీలు' ),
        'Blankpage'                 => array( 'ఖాళీపేజి' ),
        'Block'                     => array( 'అడ్డగించు', 'ఐపినిఅడ్డగించు', 'వాడుకరినిఅడ్డగించు' ),
-       'Blockme'                   => array( 'నన్నుఅడ్డగించు' ),
        'Booksources'               => array( 'పుస్తకమూలాలు' ),
        'BrokenRedirects'           => array( 'తెగిపోయినదారిమార్పులు' ),
        'Categories'                => array( 'వర్గాలు' ),
@@ -74,7 +73,6 @@ $specialPageAliases = array(
        'Confirmemail'              => array( 'ఈమెయిలుధ్రువపరచు' ),
        'CreateAccount'             => array( 'ఖాతాసృష్టించు' ),
        'Deadendpages'              => array( 'అగాధపేజీలు' ),
-       'Disambiguations'           => array( 'అయోమయనివృత్తి' ),
        'DoubleRedirects'           => array( 'రెండుసార్లుదారిమార్పు' ),
        'Emailuser'                 => array( 'వాడుకరికిఈమెయిలుచెయ్యి' ),
        'Export'                    => array( 'ఎగుమతి' ),
index 07fba52..4849162 100644 (file)
@@ -60,7 +60,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ชื่อเรื่องไม่เหมาะสม' ),
        'Blankpage'                 => array( 'หน้าว่าง' ),
        'Block'                     => array( 'บล็อกไอพี' ),
-       'Blockme'                   => array( 'บล็อกฉัน' ),
        'Booksources'               => array( 'แหล่งหนังสือ' ),
        'BrokenRedirects'           => array( 'เปลี่ยนทางเสีย' ),
        'Categories'                => array( 'หมวดหมู่' ),
@@ -72,7 +71,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'สร้างบัญชีผู้ใช้ใหม่' ),
        'Deadendpages'              => array( 'หน้าสุดทาง' ),
        'DeletedContributions'      => array( 'การแก้ไขที่ถูกลบ' ),
-       'Disambiguations'           => array( 'แก้ความกำกวม' ),
        'DoubleRedirects'           => array( 'เปลี่ยนทางซ้ำซ้อน' ),
        'EditWatchlist'             => array( 'แก้ไขรายการเฝ้าดู' ),
        'Emailuser'                 => array( 'อีเมลผู้ใช้' ),
index 02f4511..0ff4867 100644 (file)
@@ -52,7 +52,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Masamang_pamagat' ),
        'Blankpage'                 => array( 'Tanggalin_ang_nilalaman_ng_pahina' ),
        'Block'                     => array( 'Hadlangan', 'Hadlangan_ang_IP', 'Hadlangan_ang_tagagamit' ),
-       'Blockme'                   => array( 'Hadlangang_ako' ),
        'Booksources'               => array( 'Mga_pinagmulang_aklat' ),
        'BrokenRedirects'           => array( 'Naputol_na_mga_panturo_papunta_sa_ibang_pahina', 'NaputulangPanturo' ),
        'Categories'                => array( 'Mga_kategorya' ),
@@ -64,10 +63,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Likhain_ang_kuwenta', 'LikhaKuwenta' ),
        'Deadendpages'              => array( 'Mga_pahinang_sukol', 'Mga_pahinang_walang_lagusan' ),
        'DeletedContributions'      => array( 'Naburang_mga_ambag' ),
-       'Disambiguations'           => array( 'Mga_paglilinaw', 'Paglilinaw' ),
        'DoubleRedirects'           => array( 'Nagkadalawang_mga_panturo_papunta_sa_ibang_pahina', 'DoblengPanturo' ),
        'EditWatchlist'             => array( 'Baguhin_ang_Bantayan' ),
        'Emailuser'                 => array( 'Tagagamit_ng_e-liham' ),
+       'ExpandTemplates'           => array( 'Palawakin_ang_mga_suleras' ),
        'Export'                    => array( 'Pagluluwas' ),
        'Fewestrevisions'           => array( 'Pinakakaunting_mga_pagbabago' ),
        'FileDuplicateSearch'       => array( 'Paghahanap_ng_kamukhang_talaksan' ),
@@ -110,6 +109,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Mga_pahinang_nakasanggalang' ),
        'Protectedtitles'           => array( 'Mga_pamagat_na_nakasanggalang' ),
        'Randompage'                => array( 'Alin_man', 'Alin_mang_pahina' ),
+       'RandomInCategory'          => array( 'Alinmang_kaurian' ),
        'Randomredirect'            => array( 'Pagtuturo_papunta_sa_alin_mang_pahina' ),
        'Recentchanges'             => array( 'Mga_huling_binago', 'HulingBinago' ),
        'Recentchangeslinked'       => array( 'Nakakawing_ng_kamakailang_pagbabago', 'Kaugnay_na_mga_pagbabago' ),
index d09048f..3ec1143 100644 (file)
@@ -96,7 +96,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'KötüBaşlık', 'BozukBaşlık' ),
        'Blankpage'                 => array( 'BoşSayfa' ),
        'Block'                     => array( 'Engelle', 'IPEngelle' ),
-       'Blockme'                   => array( 'BeniEngelle' ),
        'Booksources'               => array( 'KitapKaynakları' ),
        'BrokenRedirects'           => array( 'BozukYönlendirmeler' ),
        'Categories'                => array( 'Kategoriler', 'Ulamlar' ),
@@ -108,10 +107,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'HesapOluştur' ),
        'Deadendpages'              => array( 'BağlantısızSayfalar' ),
        'DeletedContributions'      => array( 'SilinenKatkılar' ),
-       'Disambiguations'           => array( 'AnlamAyrımı', 'AnlamAyrım' ),
        'DoubleRedirects'           => array( 'ÇiftYönlendirmeler' ),
        'EditWatchlist'             => array( 'İzlemeListesiDüzenle' ),
        'Emailuser'                 => array( 'E-postaGönder' ),
+       'ExpandTemplates'           => array( 'ŞablonlarıGenişlet' ),
        'Export'                    => array( 'DışaAktar', 'DışarıAktar' ),
        'Fewestrevisions'           => array( 'EnAzRevizyon' ),
        'FileDuplicateSearch'       => array( 'KopyaDosyaArama', 'ÇiftDosyaArama' ),
@@ -155,6 +154,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'KorunanSayfalar' ),
        'Protectedtitles'           => array( 'KorunanBaşlıklar' ),
        'Randompage'                => array( 'Rastgele', 'RastgeleSayfa' ),
+       'RandomInCategory'          => array( 'RastgeleKategori', 'RastgeleUlam' ),
        'Randomredirect'            => array( 'RastgeleYönlendirme' ),
        'Recentchanges'             => array( 'SonDeğişiklikler' ),
        'Recentchangeslinked'       => array( 'İlgiliDeğişiklikler' ),
@@ -760,6 +760,7 @@ Kilitleyen hizmetlinin bu konudaki nedeni: "$3".',
 'invalidtitle-unknownnamespace' => 'Bilinmeyen $1 ad alanı sayısı ve geçersiz "$2" başlık',
 'exception-nologin' => 'Giriş yapılmamış',
 'exception-nologin-text' => 'Bu sayfaya ya da eyleme erişmek için lütfen [[Special:Userlogin|oturum açın]].',
+'exception-nologin-text-manual' => 'Bu sayfaya ya da eyleme erişebilmek için lütfen $1ın.',
 
 # Virus scanner
 'virus-badscanner' => "Yanlış ayarlama: bilinmeyen virüs tarayıcı: ''$1''",
@@ -1402,6 +1403,10 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'diff-empty' => '(Fark yok)',
 'diff-multi' => '({{PLURAL:$2|Bir kullanıcı|$2 kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
 'diff-multi-manyusers' => '($2 kullancıdan fazla {{PLURAL:$2|kullanıcı|kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
+'difference-missing-revision' => 'Bu farkın {{PLURAL:$2|bir revizyonu|$2 revizyonu}} ($1) {{PLURAL:$2|bulunamadı|bulunamadı}}.
+
+Bu genellikle, silinen bir sayfaya olan eski tarihli bir fark sayfasına bağlantılardan dolayı olur.
+Ayrıntılar [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silme günlüğünde] bulunabilir.',
 
 # Search results
 'searchresults' => 'Arama sonuçları',
@@ -1470,6 +1475,7 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'preferences' => 'Tercihler',
 'mypreferences' => 'Tercihler',
 'prefs-edits' => 'Değişiklik sayısı:',
+'prefsnologintext2' => 'Kullanıcı tercihlerini ayarlamak için lütfen $1ın.',
 'changepassword' => 'Parolayı değiştir',
 'prefs-skin' => 'Görünüm',
 'skin-preview' => 'Önizleme',
@@ -1766,7 +1772,8 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'recentchanges-label-minor' => 'Bu küçük bir değişiklik',
 'recentchanges-label-bot' => 'Bu değişiklik bir bot tarafından yapıldı',
 'recentchanges-label-unpatrolled' => 'Bu değişiklik henüz gözlenmemiş',
-'recentchanges-legend-newpage' => '$1 - yeni sayfa',
+'recentchanges-label-plusminus' => 'Sayfa boyutu bu bayt sayısı kadar değişti',
+'recentchanges-legend-newpage' => '(ayrıca bakınız [[Special:NewPages|yeni sayfalar listesi]])',
 'rcnote' => "$4 tarihi ve saat $5 itibarı ile, son {{PLURAL:$2|1 günde|'''$2''' günde}} yapılan, {{PLURAL:$1|'''1''' değişiklik|'''$1''' değişiklik}}, aşağıdadır.",
 'rcnotefrom' => "'''$2''' tarihinden itibaren yapılan değişiklikler aşağıdadır (en fazla <b>$1</b> tanesi gösterilmektedir).",
 'rclistfrom' => '$1 tarihinden itibaren yeni değişiklikleri göster',
@@ -1969,9 +1976,11 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'backend-fail-create' => '$1 dosyası yazılamadı.',
 'backend-fail-maxsize' => 'Dosya {{PLURAL:$2|bir bayt|$2 bayt}} daha büyük olduğu için "$1" dosyasına yazılamadı.',
 'backend-fail-readonly' => 'Depolama arkaplan uygulaması "$1" şu anda salt okunur. Verilen gerekçe: "\'\'$2\'\'"',
+'backend-fail-synced' => '"$1" dosyası dahili depolama arkaplan uygulamaları içinde tutarsız bir durumda',
 'backend-fail-connect' => '"$1" depolama arkaplan uygulamasına bağlanılamıyor.',
 'backend-fail-internal' => '"$1" depolama arkaplan uygulamasında bilinmeyen bir hata oluştu.',
 'backend-fail-contenttype' => '"$1" konumunda saklanan dosyanın içerik türü belirlenemiyor.',
+'backend-fail-batchsize' => 'Depolama arkaplan uygulamasına $1 dosya {{PLURAL:$1|işlemi|işlemi}} yığını verildi; sınır $2 {{PLURAL:$1|işlem|işlem}}.',
 'backend-fail-usable' => 'Yetersiz izinlerden ya da eksik dizin/konteynerlerden dolayı "$1" dosyası okunup yazılamıyor.',
 
 # File journal errors
@@ -1985,6 +1994,7 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'lockmanager-fail-acquirelock' => '"$1" için kilit alınamıyor.',
 'lockmanager-fail-openlock' => '"$1" için kilit dosyası açılamıyor.',
 'lockmanager-fail-releaselock' => '"$1" için kilit serbest bırakılamıyor.',
+'lockmanager-fail-db-bucket' => '$1 kovasında yeterli kilit veri tabanına iletişim sağlanamadı.',
 'lockmanager-fail-db-release' => '$1 veritabanında kilitler serbest bırakılamıyor.',
 'lockmanager-fail-svr-acquire' => '$1 sunucusunda kilitler alınamıyor.',
 'lockmanager-fail-svr-release' => '$1 sunucusunda kilitler serbest bırakılamıyor.',
@@ -2244,6 +2254,8 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'wantedpages' => 'İstenen sayfalar',
 'wantedpages-badtitle' => 'Sonuç kümesinde geçersiz başlık: $1',
 'wantedfiles' => 'İstenen dosyalar',
+'wantedfiletext-cat' => 'Aşağıdaki dosyalar kullanılıyor ama mevcut değil. Yabancı depolardaki dosyalar, varolsalar bile gösterilebilir. Böyle yanlış pozitiflerin <del>üstü çizilecektir</del>. Ek olarak, varolmayan dosyaları gömen sayfalar [[:$1]] sayfasında listelenmiştir.',
+'wantedfiletext-nocat' => 'Aşağıdaki dosyalar kullanılıyor ama mevcut değil. Yabancı depolardaki dosyalar, varolsalar bile gösterilebilir. Böyle yanlış pozitiflerin <del>üstü çizilecektir</del>.',
 'wantedtemplates' => 'İstenen şablonlar',
 'mostlinked' => 'Kendisine en fazla bağlantı verilmiş sayfalar',
 'mostlinkedcategories' => 'En çok maddeye sahip kategoriler',
@@ -2693,7 +2705,9 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Ad alanı:',
 'invert' => 'Seçili haricindekileri göster',
+'tooltip-invert' => 'Seçili ad alanındaki sayfalara olan değişiklikleri gizlemek için bu kutucuğu işaretleyin (ve ilgili ad alanı, eğer seçiliyse)',
 'namespace_association' => 'İlişkili ad alanı',
+'tooltip-namespace_association' => 'Seçili ad alanıyla ilgili tartışma ya da madde ad alanlarını da eklemek için bu kutucuğu işaretleyin',
 'blanknamespace' => '(Ana)',
 
 # Contributions
@@ -2799,6 +2813,7 @@ Engellemeleri gözden geçirmek için [[Special:BlockList|engel listesine]] bak
 'blocklist-userblocks' => 'Hesap engellemelerini gizle',
 'blocklist-tempblocks' => 'Geçici engellemeleri gizle',
 'blocklist-addressblocks' => 'Tek IP engellemelerini gizle',
+'blocklist-rangeblocks' => 'Dizi bloklarını gizle',
 'blocklist-timestamp' => 'Tarih damgası',
 'blocklist-target' => 'Hedef',
 'blocklist-expiry' => 'Bitiş tarihi',
@@ -2859,6 +2874,7 @@ Lütfen İnternet sevis sağlayınız ile ya da teknik destek ile irtibat kurun
 'sorbsreason' => "IP adresiniz, {{SITENAME}} sitesi tarafından kullanılan DNSBL'de açık proxy olarak listelenmiş.",
 'sorbs_create_account_reason' => "IP adresiniz {{SITENAME}} sitesi tarafından kullanılan DNSBL'de açık proxy olarak listelenmiş.
 Hesap oluşturamazsınız",
+'xffblockreason' => 'Sizin ya da kullandığınız vekil sunucuya ait bir IP adresi X-Forwarded-For başlığında bulunuyor, ve engellendi. Orjinal engelleme nedeni: $1',
 'cant-block-while-blocked' => 'Siz engelliyken başka kullanıcıları engelleyemezsiniz.',
 'cant-see-hidden-user' => 'Engellemek istediğiniz kullanıcı zaten engellenmiş ve gizlenmiş. Kullanıcıgizle yetkiniz olmadığı için, kullanıcının engellenmesini göremez ya da değiştiremezsiniz.',
 'ipbblocked' => 'Diğer kullanıcıları engelleyemez ya da engellemesini kaldıramazsınız, çünkü kendiniz engellenmişsiz',
@@ -2889,12 +2905,16 @@ Bu, veritabanını kilitleyip açabilmek için, web sunucusu tarafından yazıla
 # Move page
 'move-page' => '$1 taşınıyor',
 'move-page-legend' => 'İsim değişikliği',
-'movepagetext' => "Aşağıdaki form kullanılarak sayfanın adı değiştirilir. Beraberinde tüm geçmiş kayıtları da yeni isme aktarılır. Eski isim yeni isme yönlendirme hâline dönüşür. Otomatik olarak eski başlığa yönlendirmeleri güncelleyebilirsiniz. Bu işlemi otomatik yapmak istemezseniz tüm [[Special:DoubleRedirects|çift]] veya [[Special:BrokenRedirects|geçersiz]] yönlendirmeleri kendiniz düzeltmeniz gerekecek. Yapacağınız bu değişikllikle tüm bağlantıların olması gerektiği gibi çalıştığından sizin sorumlu olduğunuzu unutmayınız.
+'movepagetext' => "Aşağıdaki formu kullanmak sayfanın adını değiştirir, tüm geçmiş kayıtlarını da yeni isme aktarır.
+Eski başlık yeni başlığa yönlendirme hâline dönüşür. Otomatik olarak eski başlığa yönlendirmeleri güncelleyebilirsiniz.
+Eğer istemezseniz, tüm [[Special:DoubleRedirects|çift]] veya [[Special:BrokenRedirects|geçersiz]] yönlendirmeleri kontrol ettiğinizden emin olun.
+Tüm bağlantıların olması gerektiği gibi çalıştığından sizin sorumlu olduğunuzu unutmayınız.
 
-Eğer yeni isimde bir madde zaten varsa isim değişikliği '''yapılmayacaktır'''. Ayrıca, isim değişikliğinden pişman olursanız değişikliği geri alabilir ve başka hiçbir sayfaya da dokunmamış olursunuz.
+Eğer yeni isimde bir madde zaten varsa isim değişikliği '''yapılmayacaktır''', sonraki bir yönlendirme olup geçmiş değişiklik geçmişi olmadığı müddetçe.
+Bu şu anlama gelir ki, eğer bir hata yaparsanız sayfayı değiştirildiği isme geri isimlendirebilirsiniz, ve mevcut bir sayfanın üstüne yazmazsınız.
 
 '''UYARI!'''
-Bu değişim popüler bir sayfa için beklenmeyen sonuçlar doğurabilir; lütfen değişikliği yapmadan önce olabilecekleri göz önünde bulundurun.",
+Bu değişim popüler bir sayfa için etkili ve beklenmeyen sonuçlar doğurabilir; lütfen devam etmeden önce olabilecekleri anladığınızdan emin olun.",
 'movepagetext-noredirectfixer' => "Aşağıdaki formu doldurmak bir sayfayı yeniden adlandırır, tüm geçmişini yeni ada taşır.
 Eski başlık yeni başlığa bir yönlendirme sayfası olur.
 [[Special:DoubleRedirects|Çift]] ya da [[Special:BrokenRedirects|nozuk yönlendirmeler]] sayfalarını kontrol edin.
@@ -2959,6 +2979,7 @@ Lütfen başka bir isim deneyiniz.',
 'immobile-target-namespace-iw' => 'Vikilerarası bağlantı, sayfa taşıması için geçerli bir hedef değil.',
 'immobile-source-page' => 'Bu sayfanın adı değiştirilemez.',
 'immobile-target-page' => 'Bu hedef başlığına taşınamaz.',
+'bad-target-model' => 'İstenen hedef farklı bir içerik modeli kullanıyor. $1 modelinden $2 modeline çevrilemiyor.',
 'imagenocrossnamespace' => 'Dosya, dosyalar için olmayan ad alanına taşınamaz',
 'nonfile-cannot-move-to-file' => 'Dosya olmayanlar, dosya ad alanına taşınamaz',
 'imagetypemismatch' => 'Yeni dosya eklentisi tipiyle eşleşmiyor',
@@ -2986,6 +3007,7 @@ Sonuncu durumda, bir link de kullanabilirsiniz, ör: "[[{{MediaWiki:Mainpage}}]]
 'exportcuronly' => 'Geçmiş sürümleri almadan sadece son sürümü al',
 'exportnohistory' => "----
 '''Not:''' Sayfaların tüm geçmişini bu formla dışa aktarmak, performans nedenlerinden ötürü devre dışı bırakılmıştır.",
+'exportlistauthors' => 'Her sayfa için katkıda bulunanların tam listesi içer',
 'export-submit' => 'Aktar',
 'export-addcattext' => 'Aşağıdaki kategoriden maddeler ekle:',
 'export-addcat' => 'Ekle',
@@ -3075,6 +3097,7 @@ Geçici dosya kayıp.',
 'import-error-interwiki' => '"$1" sayfası içe aktarılamadı çünkü sayfanın adı dış bağlantı için ayrılmış (vikilerarası).',
 'import-error-special' => '"$1" sayfası içe aktarılamadı çünkü sayfalara izin vermeyen özel bir ad alanına ait.',
 'import-error-invalid' => '"$1" sayfası içe aktarılamadı çünkü sayfa adı geçersiz.',
+'import-error-unserialize' => '"$1" sayfasının $2 revizyonu serileştirilmesi geri alınamıyor. Revizyonun $4 olarak serileştirilmiş $3 içerik modelini kullandığı raporlandı.',
 'import-options-wrong' => 'Yanlış {{PLURAL:$2|seçenek|seçenek}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Verilen kök sayfa geçersiz bir başlık.',
 'import-rootpage-nosubpage' => 'Kök sayfanın "$1" ad alanı alt sayfalara izin vermiyor.',
@@ -3211,6 +3234,7 @@ Bunu '''doldurMAyın'''!",
 'pageinfo-length' => 'Sayfa uzunluğu (bayt cinsinden)',
 'pageinfo-article-id' => 'Sayfa ID',
 'pageinfo-language' => 'Sayfa içeriğinin dili',
+'pageinfo-content-model' => 'Sayfa içerik modeli',
 'pageinfo-robot-policy' => 'Robotlar tarafından endeksleniyor',
 'pageinfo-robot-index' => 'İzin verilmiş',
 'pageinfo-robot-noindex' => 'İzin verilmedi',
@@ -3232,11 +3256,13 @@ Bunu '''doldurMAyın'''!",
 'pageinfo-magic-words' => 'Sihirli {{PLURAL:$1|kelimeler|kelimeler}} ($1)',
 'pageinfo-hidden-categories' => 'Gizli {{PLURAL:$1|kategori|kategoriler}} ($1)',
 'pageinfo-templates' => 'Görüntülenen {{PLURAL:$1|şablon|şablonlar}} ($1)',
+'pageinfo-transclusions' => 'Çapraz eklenen {{PLURAL:$1|sayfa|sayfalar}} ($1)',
 'pageinfo-toolboxlink' => 'Sayfa bilgisi',
 'pageinfo-redirectsto' => 'Yönlendirilen',
 'pageinfo-redirectsto-info' => 'bilgi',
 'pageinfo-contentpage' => 'Bir içerik sayfası sayılır',
 'pageinfo-contentpage-yes' => 'Evet',
+'pageinfo-protect-cascading' => 'korumalar buradan kademelendiriliyor',
 'pageinfo-protect-cascading-yes' => 'Evet',
 'pageinfo-protect-cascading-from' => 'Korumalar üzerinden geçiş',
 'pageinfo-category-info' => 'Kategori bilgileri',
@@ -3558,6 +3584,7 @@ Diğerleri varsayılan olarak gizlenecektir.
 
 # Exif attributes
 'exif-compression-1' => 'Sıkıştırılmamış',
+'exif-compression-2' => 'CCITT Grup 3 1-Boyutlu Değiştirilmiş Huffman koşu uzunluğu kodlaması',
 'exif-compression-3' => 'CCITT Grup 3 faks kodlaması',
 'exif-compression-4' => 'CCITT Grup 4 faks kodlaması',
 'exif-compression-6' => 'JPEG',
@@ -3746,6 +3773,7 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-gpsdirection-m' => 'Manyetik yönü',
 
 'exif-ycbcrpositioning-1' => 'Ortalanmış',
+'exif-ycbcrpositioning-2' => 'Eş-yerleştirilmiş',
 
 'exif-dc-contributor' => 'Katkıda bulunanlar',
 'exif-dc-coverage' => 'Medyanın konumsal ya da zamansal kapsamı',
@@ -3860,6 +3888,7 @@ Bu onay kodu $4 tarihine kadar geçerlidir.',
 # Scary transclusion
 'scarytranscludedisabled' => '[Vikilerarası çapraz ekleme devre dışı]',
 'scarytranscludefailed' => '[$1 için şablon alımı başarısız oldu]',
+'scarytranscludefailed-httpstatus' => '[$1 için şablon alımı başarısız oldu: HTTP $2]',
 'scarytranscludetoolong' => '[URL çok uzun]',
 
 # Delete conflict
@@ -3980,6 +4009,7 @@ Ayrıca [[Special:EditWatchlist|standart düzenleme sayfasını]] da kullanabili
 'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
 'version-poweredby-others' => 'diğerleri',
 'version-poweredby-translators' => 'translatewiki.net çevirmenleri',
+'version-credits-summary' => "Aşağıdaki kişileri [[Special:Version|MediaWiki]]'ye katkılarından dolayı takdir ediyoruz.",
 'version-license-info' => "MediaWiki özgür bir yazılımdır; MediaWiki'yi, Özgür Yazılım Vakfı tarafından yayımlanmış olan GNU Genel Kamu Lisansının 2. veya (seçeceğiniz) daha sonraki bir sürümünün koşulları altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.
 
 MediaWiki yazılımı faydalı olacağı ümidiyle dağıtılmaktadır; ancak kastedilen SATILABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK garantisi hariç HİÇBİR GARANTİSİ YOKTUR. Daha fazla ayrıntı için GNU Genel Kamu Lisansı'na bakınız.
@@ -4017,9 +4047,9 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 
 # Special:SpecialPages
 'specialpages' => 'Özel sayfalar',
+'specialpages-note-top' => 'Gösterge',
 'specialpages-note' => '* Normal özel sayfalar.
-* <span class="mw-specialpagerestricted">Kısıtlı özel sayfalar.</span>
-* <span class="mw-specialpagecached">Önbelleğe alınan özel sayfalar (eskimiş olabilir)</span>',
+* <span class="mw-specialpagerestricted">Kısıtlı özel sayfalar.</span>',
 'specialpages-group-maintenance' => 'Bakım raporları',
 'specialpages-group-other' => 'Diğer özel sayfalar',
 'specialpages-group-login' => 'Oturum aç / hesap edin',
@@ -4108,9 +4138,14 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # New logging system
 'logentry-delete-delete' => '$1 $3 sayfasını {{GENDER:$2|sildi}}',
 'logentry-delete-restore' => '$1 $3 sayfasını {{GENDER:$2|geri getirdi}}',
+'logentry-delete-event' => '$1, $3 sayfasında {{PLURAL:$5|bir günlük girdisinin |$5 günlük girdisinin}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4',
 'logentry-delete-revision' => '$1, $3 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4',
+'logentry-delete-event-legacy' => '$1, $3 sayfasında günlük girdilerinin görünürlüğünü  {{GENDER:$2|değiştirdi}}',
 'logentry-delete-revision-legacy' => '$1 $3 sayfasındaki sürümlerin görünürlüğünü {{GENDER:$2|değiştirdi}}',
+'logentry-suppress-delete' => '$1, $3 sayfasını {{GENDER:$2|bastırdı}}',
+'logentry-suppress-event' => '$1, $3 sayfasında {{PLURAL:$5|bir günlük girdisinin |$5 günlük girdisinin}} görünürlüğünü gizlice {{GENDER:$2|değiştirdi}}: $4',
 'logentry-suppress-revision' => '$1, $3 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü gizlice {{GENDER:$2|değiştirdi}}: $4',
+'logentry-suppress-event-legacy' => '$1, $3 sayfasında günlük girdilerinin görünürlüğünü gizlice {{GENDER:$2|değiştirdi}}',
 'logentry-suppress-revision-legacy' => '$1, $3 sayfasındaki sürümlerin görünürlüğünü {{GENDER:$2|değiştirdi}}',
 'revdelete-content-hid' => 'Gizli içerik',
 'revdelete-summary-hid' => 'değişiklik özeti gizlenmiş',
@@ -4123,14 +4158,21 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'logentry-move-move' => '$1, $3 sayfasını $4 sayfasına {{GENDER:$2|taşıdı}}',
 'logentry-move-move-noredirect' => '$1, $3 sayfasını $4 sayfasına yönlendirme olmaksızın {{GENDER:$2|taşıdı}}',
 'logentry-move-move_redir' => '$1, $3 sayfasını $4 sayfasına yönlendirme üzerinden {{GENDER:$2|taşıdı}}',
+'logentry-move-move_redir-noredirect' => '$1, $3 sayfasını bir yönlendirme üzerine yönlendirme bırakmadan $4 olarak {{GENDER:$2|taşıdı}}',
+'logentry-patrol-patrol' => '$1, $3 sayfasının $4 revizyonunu kontrol edildi olarak {{GENDER:$2|işaretledi}}',
 'logentry-patrol-patrol-auto' => '$1, $3 sayfasının $4 sürümümü otomatik olarak {{GENDER:$2|kontrol etti}}',
 'logentry-newusers-newusers' => 'Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}',
 'logentry-newusers-create' => 'Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}',
 'logentry-newusers-create2' => '$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}}',
+'logentry-newusers-byemail' => '$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}} ve şifre e-posta ile gönderildi',
 'logentry-newusers-autocreate' => '$1 kullanıcı hesabı otomatik olarak {{GENDER:$2|oluşturuldu}}',
+'logentry-rights-rights' => '$1, $3 için grup üyeliğini $4 iken $5 olarak {{GENDER:$2|değiştirdi}}',
+'logentry-rights-rights-legacy' => '$1, $3 için grup üyeliğini {{GENDER:$2|değiştirdi}}',
+'logentry-rights-autopromote' => '$1, $4 iken $5 olarak otomatik {{GENDER:$2|terfi edildi}}',
 'rightsnone' => '(hiçbiri)',
 
 # Feedback
+'feedback-bugornote' => 'Eğer teknik bir problemi detaylarıyla açıklamaya hazırsanız lütfen [$1 bir hata raporlayın]. Diğer taraftan, aşağıdaki kolay formu kullanabilirsiniz. Yorumunuz, kullanıcı adınızla beraber "[$3 $2]" sayfasına eklenecektir.',
 'feedback-subject' => 'Konu:',
 'feedback-message' => 'Mesaj:',
 'feedback-cancel' => 'İptal',
@@ -4151,11 +4193,16 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # API errors
 'api-error-badaccess-groups' => 'Bu wiki için dosya yüklemenize izin verilmiyor.',
 'api-error-badtoken' => 'İç hata: Bozuk anahtar.',
+'api-error-copyuploaddisabled' => 'URL ile yükleme bu sunucuda devre dışı bırakılmıştır.',
+'api-error-duplicate' => 'Sitede zaten aynı içerikte başka {{PLURAL:$1|bir [$2 dosya]|[$2 dosyalar]}} var.',
+'api-error-duplicate-archive' => 'Sitede zaten aynı içerikte başka {{PLURAL:$1|bir [$2 dosya]|[$2 dosyalar]}} vardı, ama {{PLURAL:$1|silindi|silindiler}}.',
+'api-error-duplicate-archive-popup-title' => 'Zaten silinmiş çift {{PLURAL:$1|sayfa|sayfalar}}.',
 'api-error-duplicate-popup-title' => 'Çift {{PLURAL:$1|dosya|dosya}}',
 'api-error-empty-file' => 'Gönderdiğiniz dosya boş.',
 'api-error-emptypage' => 'Yeni, boş bir sayfa oluşturmaya izin verilmez.',
 'api-error-fetchfileerror' => 'İç hata: Dosya alınırken bir hata oluştu.',
 'api-error-fileexists-forbidden' => '"$1" adıyla bir dosya zaten mevcut dolayısıyla üzerine yazamazsınız.',
+'api-error-fileexists-shared-forbidden' => '"$1" adında bir dosya ortak havuzda zaten var, ve üzerine yazılamaz.',
 'api-error-file-too-large' => 'Gönderdiğiniz dosya çok büyük.',
 'api-error-filename-tooshort' => 'Dosya adı çok kısa.',
 'api-error-filetype-banned' => 'Bu dosya biçimi yasaklanmıştır.',
@@ -4217,10 +4264,8 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # Special:ExpandTemplates
 'expandtemplates' => 'Şablonları genişlet',
 'expand_templates_intro' => 'Bu özel sayfa biraz metni alır ve içindeki tüm şablonları yinelemeli olarak genişletir.
-Ayrıca şu gibi derleyici fonksiyonlarını da genişletir
-<nowiki>{{</nowiki>#language:…}}, ve şu gibi değişkenleri
-<nowiki>{{</nowiki>CURRENTDAY}}&mdash;aslında çift-bağlı hemen her şey.
-Bunu, ilgili derleyici aşamasını MedyaVikinin kendisinden çağırarak yapar.',
+Ayrıca <code><nowiki>{{</nowiki>#language:…}}</code> gibi desteklenen derleyici fonksiyonlarını ve <code><nowiki>{{</nowiki>CURRENTDAY}}</code> gibi değişkenleri de genişletir.
+Aslında, çift ayraçlı hemen hemen her şeyi genişletir.',
 'expand_templates_title' => 'Durum başlığı, ör {{FULLPAGENAME}} için.:',
 'expand_templates_input' => 'Giriş metni:',
 'expand_templates_output' => 'Sonuç',
index a708c9d..03ab388 100644 (file)
@@ -73,7 +73,7 @@ $magicWords = array(
        'pagename'                  => array( '1', 'АРЫННЫҢАДЫ', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ),
        'namespace'                 => array( '1', 'АТТАРДЕЛГЕМИ', 'ПРОСТРАНСТВО_ИМЁН', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'АТТАРДЕЛГЕМИ2', 'ПРОСТРАНСТВО_ИМЁН_2', 'NAMESPACEE' ),
-       'namespacenumber'           => array( '1', 'АТТАРДЕЛГЕМИНИҢСАНЫ', 'NAMESPACENUMBER' ),
+       'namespacenumber'           => array( '1', 'АТТАРДЕЛГЕМИНИҢСАНЫ', 'НОМЕР_ПРОСТРАНСТВА_ИМЁН', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'ЧУГААДЕЛГЕМИ', 'ПРОСТРАНСТВО_ОБСУЖДЕНИЙ', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'ЧУГААДЕЛГЕМИ2', 'ПРОСТРАНСТВО_ОБСУЖДЕНИЙ_2', 'TALKSPACEE' ),
        'img_right'                 => array( '1', 'оң', 'справа', 'right' ),
@@ -90,9 +90,9 @@ $magicWords = array(
        'tag'                       => array( '0', 'демдек', 'метка', 'тег', 'тэг', 'tag' ),
        'hiddencat'                 => array( '1', '__ЧАЖЫТ_АҢГЫЛАЛ__', '__СКРЫТАЯ_КАТЕГОРИЯ__', '__HIDDENCAT__' ),
        'pagesincategory'           => array( '1', '__АҢГЫЛАЛ_АРЫННАРЫ__', 'СТРАНИЦ_В_КАТЕГОРИИ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesincategory_all'       => array( '0', 'шупту', 'all' ),
-       'pagesincategory_pages'     => array( '0', 'арыннар', 'pages' ),
-       'pagesincategory_files'     => array( '0', 'файлдар', 'files' ),
+       'pagesincategory_all'       => array( '0', 'шупту', 'все', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'арыннар', 'страницы', 'pages' ),
+       'pagesincategory_files'     => array( '0', 'файлдар', 'файлы', 'files' ),
 );
 
 $bookstoreList = array(
index 4f06b5d..d839a85 100644 (file)
@@ -120,7 +120,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Помилковий_заголовок' ),
        'Blankpage'                 => array( 'Порожня_сторінка' ),
        'Block'                     => array( 'Заблокувати' ),
-       'Blockme'                   => array( 'Заблокуйте_мене' ),
        'Booksources'               => array( 'Джерела_книг' ),
        'BrokenRedirects'           => array( 'Розірвані_перенаправлення' ),
        'Categories'                => array( 'Категорії' ),
@@ -132,10 +131,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Створити_обліковий_запис' ),
        'Deadendpages'              => array( 'Сторінки_без_посилань' ),
        'DeletedContributions'      => array( 'Вилучений_внесок' ),
-       'Disambiguations'           => array( 'Неоднозначні_посилання' ),
        'DoubleRedirects'           => array( 'Подвійні_перенаправлення' ),
        'EditWatchlist'             => array( 'Редагувати_список_спостереження' ),
        'Emailuser'                 => array( 'Лист_користувачеві' ),
+       'ExpandTemplates'           => array( 'Розгортання_шаблонів' ),
        'Export'                    => array( 'Експорт' ),
        'Fewestrevisions'           => array( 'Найменшредаговані' ),
        'FileDuplicateSearch'       => array( 'Пошук_дублікатів_файлів' ),
@@ -158,6 +157,8 @@ $specialPageAliases = array(
        'MIMEsearch'                => array( 'Пошук_за_MIME' ),
        'Mostcategories'            => array( 'Найбільш_категоризовані' ),
        'Mostimages'                => array( 'Найуживаніші_файли' ),
+       'Mostinterwikis'            => array( 'Найбільше_інтервікі' ),
+       'Mostlinked'                => array( 'Найуживаніші_сторінки', 'Найбільше_посилань' ),
        'Mostlinkedcategories'      => array( 'Найуживаніші_категорії' ),
        'Mostlinkedtemplates'       => array( 'Найуживаніші_шаблони' ),
        'Mostrevisions'             => array( 'Найбільш_редаговані' ),
@@ -278,8 +279,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'центр', 'center', 'centre' ),
        'img_framed'                => array( '1', 'обрамити', 'рамка', 'обрамить', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'безрамки', 'frameless' ),
-       'img_page'                  => array( '1', 'сторінка=$1', 'сторінка $1', 'страница=$1', 'страница $1', 'страница $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч $1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'сторінка=$1', 'сторінка_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'межа', 'граница', 'border' ),
        'img_baseline'              => array( '1', 'основа', 'основание', 'baseline' ),
        'img_sub'                   => array( '1', 'під', 'под', 'sub' ),
index 7f82cec..d59a34d 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'خراب_عنوان' ),
        'Blankpage'                 => array( 'خالی_صفحہ' ),
        'Block'                     => array( 'پابندی', 'دستور_شبکی_پابندی', 'پابندی_بر_صارف' ),
-       'Blockme'                   => array( 'میری_پابندی' ),
        'Booksources'               => array( 'کتابی_وسائل' ),
        'BrokenRedirects'           => array( 'شکستہ_رجوع_مکررات' ),
        'Categories'                => array( 'زمرہ_جات' ),
@@ -76,7 +75,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'تخلیق_کھاتہ' ),
        'Deadendpages'              => array( 'مردہ_صفحات' ),
        'DeletedContributions'      => array( 'حذف_شدہ_شراکتیں' ),
-       'Disambiguations'           => array( 'ضد_ابہام_صفحات' ),
        'DoubleRedirects'           => array( 'دوہرے_رجوع_مکررات' ),
        'EditWatchlist'             => array( 'ترمیم_زیر_نظر' ),
        'Emailuser'                 => array( 'صارف_ڈاک' ),
index fe5ae64..81af497 100644 (file)
@@ -61,12 +61,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'UtentiAtivi' ),
        'Allmessages'               => array( 'Messagi' ),
+       'AllMyUploads'              => array( 'TutiIMeCaricamenti' ),
        'Allpages'                  => array( 'TuteLePagine' ),
        'Ancientpages'              => array( 'PagineMancoNove' ),
        'Badtitle'                  => array( 'TitoloSbalià' ),
        'Blankpage'                 => array( 'PaginaVoda' ),
        'Block'                     => array( 'Bloca' ),
-       'Blockme'                   => array( 'BlocaProxy' ),
        'Booksources'               => array( 'SercaISBN' ),
        'BrokenRedirects'           => array( 'RimandiSbalià' ),
        'Categories'                => array( 'Categorie' ),
@@ -78,10 +78,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreaUtente' ),
        'Deadendpages'              => array( 'PagineSensaUscita' ),
        'DeletedContributions'      => array( 'ContributiScancelà' ),
-       'Disambiguations'           => array( 'Disanbiguassion' ),
        'DoubleRedirects'           => array( 'DópiRimandi' ),
        'EditWatchlist'             => array( 'CanbiaTegnuiDeOcio' ),
        'Emailuser'                 => array( 'MandaEMail' ),
+       'ExpandTemplates'           => array( 'EspandiModèi' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMancoRevision' ),
        'FileDuplicateSearch'       => array( 'SercaDopioniDeiFile' ),
index e61ec10..d10b31e 100644 (file)
@@ -59,12 +59,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Người_dùng_tích_cực' ),
        'Allmessages'               => array( 'Mọi_thông_điệp', 'Mọi_thông_báo' ),
+       'AllMyUploads'              => array( 'Mọi_tập_tin_của_tôi', 'Mọi_tập_tin_tôi_tải_lên' ),
        'Allpages'                  => array( 'Mọi_bài' ),
        'Ancientpages'              => array( 'Trang_cũ' ),
        'Badtitle'                  => array( 'Tựa_đề_hỏng' ),
        'Blankpage'                 => array( 'Trang_trắng' ),
        'Block'                     => array( 'Cấm', 'Cấm_IP', 'Cấm_thành_viên', 'Cấm_người_dùng' ),
-       'Blockme'                   => array( 'Khóa_tôi', 'Khoá_tôi' ),
        'Booksources'               => array( 'Nguồn_sách' ),
        'BrokenRedirects'           => array( 'Đổi_hướng_sai' ),
        'Categories'                => array( 'Thể_loại' ),
@@ -76,10 +76,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Mở_tài_khoản', 'Đăng_ký', 'Đăng_kí' ),
        'Deadendpages'              => array( 'Trang_đường_cùng' ),
        'DeletedContributions'      => array( 'Đóng_góp_bị_xóa', 'Đóng_góp_bị_xoá' ),
-       'Disambiguations'           => array( 'Trang_định_hướng' ),
        'DoubleRedirects'           => array( 'Đổi_hướng_kép' ),
        'EditWatchlist'             => array( 'Sửa_danh_sách_theo_dõi' ),
        'Emailuser'                 => array( 'Gửi_thư', 'Gửi_thư_điện_tử' ),
+       'ExpandTemplates'           => array( 'Bung_bản_mẫu', 'Bung_tiêu_bản' ),
        'Export'                    => array( 'Xuất' ),
        'Fewestrevisions'           => array( 'Ít_phiên_bản_nhất' ),
        'FileDuplicateSearch'       => array( 'Tìm_tập_tin_trùng' ),
@@ -124,9 +124,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Trang_khóa', 'Trang_khoá' ),
        'Protectedtitles'           => array( 'Tựa_đề_bị_khóa', 'Tựa_đề_bị_khoá' ),
        'Randompage'                => array( 'Ngẫu_nhiên' ),
+       'RandomInCategory'          => array( 'Ngẫu_nhiên_trong_thể_loại' ),
        'Randomredirect'            => array( 'Đổi_hướng_ngẫu_nhiên' ),
        'Recentchanges'             => array( 'Thay_đổi_gần_đây' ),
        'Recentchangeslinked'       => array( 'Thay_đổi_liên_quan' ),
+       'Redirect'                  => array( 'Đổi_hướng' ),
+       'ResetTokens'               => array( 'Đặt_lại_dấu_hiệu' ),
        'Revisiondelete'            => array( 'Xóa_phiên_bản', 'Xoá_phiên_bản' ),
        'Search'                    => array( 'Tìm_kiếm' ),
        'Shortpages'                => array( 'Trang_ngắn' ),
@@ -161,51 +164,53 @@ $specialPageAliases = array(
 
 $magicWords = array(
        'redirect'                  => array( '0', '#đổi', '#REDIRECT' ),
-       'notoc'                     => array( '0', '__KHÔNGMỤCLỤC__', '__NOTOC__' ),
-       'nogallery'                 => array( '0', '__KHÔNGALBUM__', '__NOGALLERY__' ),
-       'forcetoc'                  => array( '0', '__LUÔNMỤCLỤC__', '__FORCETOC__' ),
-       'toc'                       => array( '0', '__MỤCLỤC__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__KHÔNGSỬAMỤC__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'THÁNGNÀY', 'THÁNGNÀY2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
-       'currentmonth1'             => array( '1', 'THÁNGNÀY1', 'CURRENTMONTH1' ),
-       'currentmonthname'          => array( '1', 'TÊNTHÁNGNÀY', 'CURRENTMONTHNAME' ),
-       'currentmonthnamegen'       => array( '1', 'TÊNDÀITHÁNGNÀY', 'CURRENTMONTHNAMEGEN' ),
-       'currentmonthabbrev'        => array( '1', 'TÊNNGẮNTHÁNGNÀY', 'CURRENTMONTHABBREV' ),
-       'currentday'                => array( '1', 'NGÀYNÀY', 'CURRENTDAY' ),
-       'currentday2'               => array( '1', 'NGÀYNÀY2', 'CURRENTDAY2' ),
-       'currentdayname'            => array( '1', 'TÊNNGÀYNÀY', 'CURRENTDAYNAME' ),
-       'currentyear'               => array( '1', 'NĂMNÀY', 'CURRENTYEAR' ),
-       'currenttime'               => array( '1', 'GIỜNÀY', 'CURRENTTIME' ),
-       'localmonth'                => array( '1', 'THÁNGĐỊAPHƯƠNG', 'LOCALMONTH', 'LOCALMONTH2' ),
-       'localmonth1'               => array( '1', 'THÁNGĐỊAPHƯƠNG1', 'LOCALMONTH1' ),
-       'localmonthname'            => array( '1', 'TÊNTHÁNGĐỊAPHƯƠNG', 'LOCALMONTHNAME' ),
-       'localmonthabbrev'          => array( '1', 'THÁNGĐỊAPHƯƠNGTẮT', 'LOCALMONTHABBREV' ),
-       'localday'                  => array( '1', 'NGÀYĐỊAPHƯƠNG', 'LOCALDAY' ),
-       'localday2'                 => array( '1', 'NGÀYĐỊAPHƯƠNG2', 'LOCALDAY2' ),
-       'localdayname'              => array( '1', 'TÊNNGÀYĐỊAPHƯƠNG', 'LOCALDAYNAME' ),
-       'localyear'                 => array( '1', 'NĂMĐỊAPHƯƠNG', 'LOCALYEAR' ),
-       'localtime'                 => array( '1', 'GIỜĐỊAPHƯƠNG', 'LOCALTIME' ),
-       'numberofpages'             => array( '1', 'SỐTRANG', 'NUMBEROFPAGES' ),
-       'numberofarticles'          => array( '1', 'SỐBÀI', 'NUMBEROFARTICLES' ),
-       'numberoffiles'             => array( '1', 'SỐTẬPTIN', 'NUMBEROFFILES' ),
-       'numberofusers'             => array( '1', 'SỐTHÀNHVIÊN', 'NUMBEROFUSERS' ),
-       'numberofactiveusers'       => array( '1', 'SỐTHÀNHVIÊNTÍCHCỰC', 'NUMBEROFACTIVEUSERS' ),
-       'numberofedits'             => array( '1', 'SỐSỬAĐỔI', 'NUMBEROFEDITS' ),
-       'numberofviews'             => array( '1', 'SỐLẦNXEM', 'NUMBEROFVIEWS' ),
-       'pagename'                  => array( '1', 'TÊNTRANG', 'PAGENAME' ),
-       'pagenamee'                 => array( '1', 'TÊNTRANG2', 'PAGENAMEE' ),
-       'namespace'                 => array( '1', 'KHÔNGGIANTÊN', 'NAMESPACE' ),
-       'namespacenumber'           => array( '1', 'SỐKHÔNGGIANTÊN', 'NAMESPACENUMBER' ),
-       'talkspace'                 => array( '1', 'KGTTHẢOLUẬN', 'TALKSPACE' ),
-       'subjectspace'              => array( '1', 'KGTNỘIDUNG', 'SUBJECTSPACE', 'ARTICLESPACE' ),
-       'fullpagename'              => array( '1', 'TÊNTRANGĐỦ', 'FULLPAGENAME' ),
-       'subpagename'               => array( '1', 'TÊNTRANGPHỤ', 'SUBPAGENAME' ),
-       'basepagename'              => array( '1', 'TÊNTRANGGỐC', 'BASEPAGENAME' ),
-       'talkpagename'              => array( '1', 'TÊNTRANGTHẢOLUẬN', 'TALKPAGENAME' ),
-       'subjectpagename'           => array( '1', 'TÊNTRANGNỘIDUNG', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'notoc'                     => array( '0', '__KHÔNG_MỤC_LỤC__', '__KHÔNGMỤCLỤC__', '__NOTOC__' ),
+       'nogallery'                 => array( '0', '__KHÔNG_ALBUM__', '__KHÔNGALBUM__', '__NOGALLERY__' ),
+       'forcetoc'                  => array( '0', '__LUÔN_MỤC_LỤC__', '__LUÔNMỤCLỤC__', '__FORCETOC__' ),
+       'toc'                       => array( '0', '__MỤC_LỤC__', '__MỤCLỤC__', '__TOC__' ),
+       'noeditsection'             => array( '0', '__KHÔNG_NÚT_SỬA_MỤC__', '__KHÔNGNÚTSỬAMỤC__', '__NOEDITSECTION__' ),
+       'currentmonth'              => array( '1', 'THÁNG_NÀY', 'THÁNGNÀY', 'THÁNG_NÀY_2', 'THÁNGNÀY2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'             => array( '1', 'THÁNG_NÀY_1', 'THÁNGNÀY1', 'CURRENTMONTH1' ),
+       'currentmonthname'          => array( '1', 'TÊN_THÁNG_NÀY', 'TÊNTHÁNGNÀY', 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'       => array( '1', 'TÊN_DÀI_THÁNG_NÀY', 'TÊNDÀITHÁNGNÀY', 'CURRENTMONTHNAMEGEN' ),
+       'currentmonthabbrev'        => array( '1', 'TÊN_NGẮN_THÁNG_NÀY', 'TÊNNGẮNTHÁNGNÀY', 'CURRENTMONTHABBREV' ),
+       'currentday'                => array( '1', 'NGÀY_NÀY', 'NGÀYNÀY', 'CURRENTDAY' ),
+       'currentday2'               => array( '1', 'NGÀY_NÀY_2', 'NGÀYNÀY2', 'CURRENTDAY2' ),
+       'currentdayname'            => array( '1', 'TÊN_NGÀY_NÀY', 'TÊNNGÀYNÀY', 'CURRENTDAYNAME' ),
+       'currentyear'               => array( '1', 'NĂM_NÀY', 'NĂMNÀY', 'CURRENTYEAR' ),
+       'currenttime'               => array( '1', 'GIỜ_NÀY', 'GIỜNÀY', 'CURRENTTIME' ),
+       'currenthour'               => array( '1', 'GIỜ_HIỆN_TẠI', 'GIỜHIỆNTẠI', 'CURRENTHOUR' ),
+       'localmonth'                => array( '1', 'THÁNG_ĐỊA_PHƯƠNG', 'THÁNGĐỊAPHƯƠNG', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth1'               => array( '1', 'THÁNG_ĐỊA_PHƯƠNG_1', 'THÁNGĐỊAPHƯƠNG1', 'LOCALMONTH1' ),
+       'localmonthname'            => array( '1', 'TÊN_THÁNG_ĐỊA_PHƯƠNG', 'TÊNTHÁNGĐỊAPHƯƠNG', 'LOCALMONTHNAME' ),
+       'localmonthabbrev'          => array( '1', 'THÁNG_ĐỊA_PHƯƠNG_TẮT', 'THÁNGĐỊAPHƯƠNGTẮT', 'LOCALMONTHABBREV' ),
+       'localday'                  => array( '1', 'NGÀY_ĐỊA_PHƯƠNG', 'NGÀYĐỊAPHƯƠNG', 'LOCALDAY' ),
+       'localday2'                 => array( '1', 'NGÀY_ĐỊA_PHƯƠNG_2', 'NGÀYĐỊAPHƯƠNG2', 'LOCALDAY2' ),
+       'localdayname'              => array( '1', 'TÊN_NGÀY_ĐỊA_PHƯƠNG', 'TÊNNGÀYĐỊAPHƯƠNG', 'LOCALDAYNAME' ),
+       'localyear'                 => array( '1', 'NĂM_ĐỊA_PHƯƠNG', 'NĂMĐỊAPHƯƠNG', 'LOCALYEAR' ),
+       'localtime'                 => array( '1', 'THỜI_GIAN_ĐỊA_PHƯƠNG', 'THỜIGIANĐỊAPHƯƠNG', 'LOCALTIME' ),
+       'localhour'                 => array( '1', 'GIỜ_ĐỊA_PHƯƠNG', 'GIỜĐỊAPHƯƠNG', 'LOCALHOUR' ),
+       'numberofpages'             => array( '1', 'SỐ_TRANG', 'SỐTRANG', 'NUMBEROFPAGES' ),
+       'numberofarticles'          => array( '1', 'SỐ_BÀI', 'SỐBÀI', 'NUMBEROFARTICLES' ),
+       'numberoffiles'             => array( '1', 'SỐ_TẬP_TIN', 'SỐTẬPTIN', 'NUMBEROFFILES' ),
+       'numberofusers'             => array( '1', 'SỐ_THÀNH_VIÊN', 'SỐTHÀNHVIÊN', 'NUMBEROFUSERS' ),
+       'numberofactiveusers'       => array( '1', 'SỐ_THÀNH_VIÊN_TÍCH_CỰC', 'SỐTHÀNHVIÊNTÍCHCỰC', 'NUMBEROFACTIVEUSERS' ),
+       'numberofedits'             => array( '1', 'SỐ_SỬA_ĐỔI', 'SỐSỬAĐỔI', 'NUMBEROFEDITS' ),
+       'numberofviews'             => array( '1', 'SỐ_LẦN_XEM', 'SỐLẦNXEM', 'NUMBEROFVIEWS' ),
+       'pagename'                  => array( '1', 'TÊN_TRANG', 'TÊNTRANG', 'PAGENAME' ),
+       'pagenamee'                 => array( '1', 'TÊN_TRANG_2', 'TÊNTRANG2', 'PAGENAMEE' ),
+       'namespace'                 => array( '1', 'KHÔNG_GIAN_TÊN', 'KHÔNGGIANTÊN', 'NAMESPACE' ),
+       'namespacenumber'           => array( '1', 'SỐ_KHÔNG_GIAN_TÊN', 'SỐKHÔNGGIANTÊN', 'NAMESPACENUMBER' ),
+       'talkspace'                 => array( '1', 'KGT_THẢO_LUẬN', 'KGTTHẢOLUẬN', 'TALKSPACE' ),
+       'subjectspace'              => array( '1', 'KGT_NỘI_DUNG', 'KGTNỘIDUNG', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+       'fullpagename'              => array( '1', 'TÊN_TRANG_ĐỦ', 'TÊNTRANGĐỦ', 'FULLPAGENAME' ),
+       'subpagename'               => array( '1', 'TÊN_TRANG_PHỤ', 'TÊNTRANGPHỤ', 'SUBPAGENAME' ),
+       'basepagename'              => array( '1', 'TÊN_TRANG_GỐC', 'TÊNTRANGGỐC', 'BASEPAGENAME' ),
+       'talkpagename'              => array( '1', 'TÊN_TRANG_THẢO_LUẬN', 'TÊNTRANGTHẢOLUẬN', 'TALKPAGENAME' ),
+       'subjectpagename'           => array( '1', 'TÊN_TRANG_NỘI_DUNG', 'TÊNTRANGNỘIDUNG', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
        'msg'                       => array( '0', 'NHẮN:', 'MSG:' ),
        'subst'                     => array( '0', 'THẾ:', 'SUBST:' ),
-       'msgnw'                     => array( '0', 'NHẮNMỚI:', 'MSGNW:' ),
+       'msgnw'                     => array( '0', 'NHẮN_MỚI:', 'NHẮNMỚI:', 'MSGNW:' ),
        'img_thumbnail'             => array( '1', 'nhỏ', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'nhỏ=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'phải', 'right' ),
@@ -213,8 +218,9 @@ $magicWords = array(
        'img_none'                  => array( '1', 'không', 'none' ),
        'img_center'                => array( '1', 'giữa', 'center', 'centre' ),
        'img_framed'                => array( '1', 'khung', 'framed', 'enframed', 'frame' ),
-       'img_page'                  => array( '1', 'trang=$1', 'trang $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'đứng', 'đứng=$1', 'đứng $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'trang=$1', 'trang_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'đứng', 'đứng=$1', 'đứng_$1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_border'                => array( '1', 'viền', 'border' ),
        'img_baseline'              => array( '1', 'chân-chữ', 'baseline' ),
        'img_sub'                   => array( '1', 'chỉ-số-dưới', 'sub' ),
        'img_super'                 => array( '1', 'chỉ-số-trên', 'super', 'sup' ),
@@ -225,62 +231,68 @@ $magicWords = array(
        'img_link'                  => array( '1', 'liên_kết=$1', 'link=$1' ),
        'img_class'                 => array( '1', 'lớp=$1', 'class=$1' ),
        'int'                       => array( '0', 'NỘI:', 'INT:' ),
-       'sitename'                  => array( '1', 'TÊNMẠNG', 'SITENAME' ),
+       'sitename'                  => array( '1', 'TÊN_MẠNG', 'TÊNMẠNG', 'SITENAME' ),
        'ns'                        => array( '0', 'KGT:', 'NS:' ),
-       'localurl'                  => array( '0', 'URLĐỊAPHƯƠNG:', 'LOCALURL:' ),
-       'articlepath'               => array( '0', 'ĐƯỜNGDẪNBÀI', 'LỐIBÀI', 'ARTICLEPATH' ),
-       'pageid'                    => array( '0', 'IDTRANG', 'PAGEID' ),
-       'server'                    => array( '0', 'MÁYCHỦ', 'SERVER' ),
-       'servername'                => array( '0', 'TÊNMÁYCHỦ', 'SERVERNAME' ),
-       'scriptpath'                => array( '0', 'ĐƯỜNGDẪNKỊCHBẢN', 'ĐƯỜNGDẪNSCRIPT', 'SCRIPTPATH' ),
-       'stylepath'                 => array( '0', 'ĐƯỜNGDẪNKIỂU', 'STYLEPATH' ),
-       'grammar'                   => array( '0', 'NGỮPHÁP:', 'GRAMMAR:' ),
+       'localurl'                  => array( '0', 'URL_ĐỊA_PHƯƠNG:', 'URLĐỊAPHƯƠNG:', 'LOCALURL:' ),
+       'articlepath'               => array( '0', 'ĐƯỜNG_DẪN_BÀI', 'ĐƯỜNGDẪNBÀI', 'LỐI_BÀI', 'LỐIBÀI', 'ARTICLEPATH' ),
+       'pageid'                    => array( '0', 'ID_TRANG', 'IDTRANG', 'PAGEID' ),
+       'server'                    => array( '0', 'MÁY_CHỦ', 'MÁYCHỦ', 'SERVER' ),
+       'servername'                => array( '0', 'TÊN_MÁY_CHỦ', 'TÊNMÁYCHỦ', 'SERVERNAME' ),
+       'scriptpath'                => array( '0', 'ĐƯỜNG_DẪN_KỊCH_BẢN', 'ĐƯỜNGDẪNKỊCHBẢN', 'ĐƯỜNG_DẪN_SCRIPT', 'ĐƯỜNGDẪNSCRIPT', 'SCRIPTPATH' ),
+       'stylepath'                 => array( '0', 'ĐƯỜNG_DẪN_KIỂU', 'ĐƯỜNGDẪNKIỂU', 'STYLEPATH' ),
+       'grammar'                   => array( '0', 'NGỮ_PHÁP:', 'NGỮPHÁP:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'GIỐNG:', 'GENDER:' ),
-       'notitleconvert'            => array( '0', '__KHÔNGCHUYỂNTÊN__', '__NOTITLECONVERT__', '__NOTC__' ),
-       'nocontentconvert'          => array( '0', '__KHÔNGCHUYỂNNỘIDUNG__', '__NOCONTENTCONVERT__', '__NOCC__' ),
-       'currentweek'               => array( '1', 'TUẦNNÀY', 'CURRENTWEEK' ),
-       'localweek'                 => array( '1', 'TUẦNĐỊAPHƯƠNG', 'LOCALWEEK' ),
-       'revisionid'                => array( '1', 'SỐBẢN', 'REVISIONID' ),
-       'revisionday'               => array( '1', 'NGÀYBẢN', 'REVISIONDAY' ),
-       'revisionday2'              => array( '1', 'NGÀYBẢN2', 'REVISIONDAY2' ),
-       'revisionmonth'             => array( '1', 'THÁNGBẢN', 'REVISIONMONTH' ),
-       'revisionmonth1'            => array( '1', 'THÁNGBẢN1', 'REVISIONMONTH1' ),
-       'revisionyear'              => array( '1', 'NĂMBẢN', 'REVISIONYEAR' ),
-       'revisiontimestamp'         => array( '1', 'MỐCTHỜIGIANBẢN', 'DẤUTHỜIGIANBẢN', 'REVISIONTIMESTAMP' ),
-       'revisionuser'              => array( '1', 'NGƯỜIDÙNGBẢN', 'REVISIONUSER' ),
-       'plural'                    => array( '0', 'SỐNHIỀU:', 'PLURAL:' ),
-       'fullurl'                   => array( '0', 'URLĐỦ:', 'FULLURL:' ),
-       'canonicalurl'              => array( '0', 'URLCHUẨN:', 'CANONICALURL:' ),
-       'lcfirst'                   => array( '0', 'CHỮĐẦUHOA:', 'LCFIRST:' ),
-       'ucfirst'                   => array( '0', 'CHỮĐẦUTHƯỜNG:', 'UCFIRST:' ),
-       'lc'                        => array( '0', 'CHỮHOA:', 'LC:' ),
-       'uc'                        => array( '0', 'CHỮTHƯỜNG:', 'UC:' ),
-       'displaytitle'              => array( '1', 'TÊNHIỂNTHỊ', 'DISPLAYTITLE' ),
-       'newsectionlink'            => array( '1', '__LIÊNKẾTMỤCMỚI__', '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'          => array( '1', '__KHÔNGLIÊNKẾTMỤCMỚI__', '__NONEWSECTIONLINK__' ),
-       'currentversion'            => array( '1', 'BẢNNÀY', 'CURRENTVERSION' ),
-       'urlencode'                 => array( '0', 'MÃHÓAURL:', 'URLENCODE:' ),
-       'anchorencode'              => array( '0', 'MÃHÓANEO', 'ANCHORENCODE' ),
-       'currenttimestamp'          => array( '1', 'MỐCTHỜIGIANNÀY', 'DẤUTHỜIGIANNÀY', 'CURRENTTIMESTAMP' ),
-       'localtimestamp'            => array( '1', 'MỐCTHỜIGIANĐỊAPHƯƠNG', 'DẤUTHỜIGIANĐỊAPHƯƠNG', 'LOCALTIMESTAMP' ),
-       'language'                  => array( '0', '#NGÔNNGỮ:', '#LANGUAGE:' ),
-       'contentlanguage'           => array( '1', 'NGÔNNGỮNỘIDUNG', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
-       'pagesinnamespace'          => array( '1', 'CỠKHÔNGGIANTÊN:', 'CỠKGT:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'            => array( '1', 'SỐQUẢNLÝ', 'NUMBEROFADMINS' ),
-       'formatnum'                 => array( '0', 'PHÂNCHIASỐ', 'FORMATNUM' ),
-       'defaultsort'               => array( '1', 'XẾPMẶCĐỊNH:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
-       'filepath'                  => array( '0', 'ĐƯỜNGDẪNTẬPTIN', 'FILEPATH:' ),
+       'notitleconvert'            => array( '0', '__KHÔNG_CHUYỂN_TÊN__', '__KHÔNGCHUYỂNTÊN__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'          => array( '0', '__KHÔNG_CHUYỂN_NỘI_DUNG__', '__KHÔNGCHUYỂNNỘIDUNG__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'               => array( '1', 'TUẦN_NÀY', 'TUẦNNÀY', 'CURRENTWEEK' ),
+       'localweek'                 => array( '1', 'TUẦN_ĐỊA_PHƯƠNG', 'TUẦNĐỊAPHƯƠNG', 'LOCALWEEK' ),
+       'revisionid'                => array( '1', 'SỐ_BẢN', 'SỐBẢN', 'REVISIONID' ),
+       'revisionday'               => array( '1', 'NGÀY_BẢN', 'NGÀYBẢN', 'REVISIONDAY' ),
+       'revisionday2'              => array( '1', 'NGÀY_BẢN_2', 'NGÀYBẢN2', 'REVISIONDAY2' ),
+       'revisionmonth'             => array( '1', 'THÁNG_BẢN', 'THÁNGBẢN', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'THÁNG_BẢN_1', 'THÁNGBẢN1', 'REVISIONMONTH1' ),
+       'revisionyear'              => array( '1', 'NĂM_BẢN', 'NĂMBẢN', 'REVISIONYEAR' ),
+       'revisiontimestamp'         => array( '1', 'MỐC_THỜI_GIAN_BẢN', 'MỐCTHỜIGIANBẢN', 'DẤU_THỜI_GIAN_BẢN', 'DẤUTHỜIGIANBẢN', 'REVISIONTIMESTAMP' ),
+       'revisionuser'              => array( '1', 'NGƯỜI_DÙNG_BẢN', 'NGƯỜIDÙNGBẢN', 'REVISIONUSER' ),
+       'plural'                    => array( '0', 'SỐ_NHIỀU:', 'SỐNHIỀU:', 'PLURAL:' ),
+       'fullurl'                   => array( '0', 'URL_ĐỦ:', 'URLĐỦ:', 'FULLURL:' ),
+       'canonicalurl'              => array( '0', 'URL_CHUẨN:', 'URLCHUẨN:', 'CANONICALURL:' ),
+       'lcfirst'                   => array( '0', 'CHỮ_ĐẦU_HOA:', 'CHỮĐẦUHOA:', 'LCFIRST:' ),
+       'ucfirst'                   => array( '0', 'CHỮ_ĐẦU_THƯỜNG:', 'CHỮĐẦUTHƯỜNG:', 'UCFIRST:' ),
+       'lc'                        => array( '0', 'CHỮ_HOA:', 'CHỮHOA:', 'LC:' ),
+       'uc'                        => array( '0', 'CHỮ_THƯỜNG:', 'CHỮTHƯỜNG:', 'UC:' ),
+       'displaytitle'              => array( '1', 'TÊN_HIỂN_THỊ', 'TÊNHIỂNTHỊ', 'DISPLAYTITLE' ),
+       'newsectionlink'            => array( '1', '__LIÊN_KẾT_MỤC_MỚI__', '__LIÊNKẾTMỤCMỚI__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'          => array( '1', '__KHÔNG_LIÊN_KẾT_MỤC_MỚI__', '__KHÔNGLIÊNKẾTMỤCMỚI__', '__NONEWSECTIONLINK__' ),
+       'currentversion'            => array( '1', 'BẢN_NÀY', 'BẢNNÀY', 'CURRENTVERSION' ),
+       'urlencode'                 => array( '0', 'MÃ_HÓA_URL:', 'MÃHÓAURL:', 'MÃ_HOÁ_URL:', 'MÃHOÁURL:', 'URLENCODE:' ),
+       'anchorencode'              => array( '0', 'MÃ_HÓA_NEO', 'MÃHÓANEO', 'MÃ_HOÁ_NEO', 'MÃHOÁNEO', 'ANCHORENCODE' ),
+       'currenttimestamp'          => array( '1', 'MỐC_THỜI_GIAN_NÀY', 'MỐCTHỜIGIANNÀY', 'DẤU_THỜI_GIAN_NÀY', 'DẤUTHỜIGIANNÀY', 'CURRENTTIMESTAMP' ),
+       'localtimestamp'            => array( '1', 'MỐC_THỜI_GIAN_ĐỊA_PHƯƠNG', 'MỐCTHỜIGIANĐỊAPHƯƠNG', 'DẤU_THỜI_GIAN_ĐỊA_PHƯƠNG', 'DẤUTHỜIGIANĐỊAPHƯƠNG', 'LOCALTIMESTAMP' ),
+       'language'                  => array( '0', '#NGÔN_NGỮ:', '#NGÔNNGỮ:', '#LANGUAGE:' ),
+       'contentlanguage'           => array( '1', 'NGÔN_NGỮ_NỘI_DUNG', 'NGÔNNGỮNỘIDUNG', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'          => array( '1', 'CỠ_KHÔNG_GIAN_TÊN:', 'CỠKHÔNGGIANTÊN:', 'CỠ_KGT:', 'CỠKGT:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'numberofadmins'            => array( '1', 'SỐ_BẢO_QUẢN_VIÊN', 'SỐBẢOQUẢNVIÊN', 'SỐ_QUẢN_LÝ', 'SỐQUẢNLÝ', 'SỐ_QUẢN_LÍ', 'SỐQUẢNLÍ', 'NUMBEROFADMINS' ),
+       'formatnum'                 => array( '0', 'PHÂN_CHIA_SỐ', 'PHÂNCHIASỐ', 'FORMATNUM' ),
+       'defaultsort'               => array( '1', 'XẾP_MẶC_ĐỊNH:', 'XẾPMẶCĐỊNH:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                  => array( '0', 'ĐƯỜNG_DẪN_TẬP_TIN', 'ĐƯỜNGDẪNTẬPTIN', 'FILEPATH:' ),
        'tag'                       => array( '0', 'thẻ', 'tag' ),
-       'hiddencat'                 => array( '1', '__THỂLOẠIẨN__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', 'CỠTHỂLOẠI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                  => array( '1', 'CỠTRANG', 'PAGESIZE' ),
-       'index'                     => array( '1', '__CHỈMỤC__', '__INDEX__' ),
-       'noindex'                   => array( '1', '__KHÔNGCHỈMỤC__', '__NOINDEX__' ),
-       'numberingroup'             => array( '1', 'CỠNHÓM', 'NUMBERINGROUP', 'NUMINGROUP' ),
-       'staticredirect'            => array( '1', '__ĐỔIHƯỚNGNHẤTĐỊNH__', '__STATICREDIRECT__' ),
-       'protectionlevel'           => array( '1', 'MỨCKHÓA', 'MỨCKHOÁ', 'PROTECTIONLEVEL' ),
-       'url_path'                  => array( '0', 'ĐƯỜNGDẪN', 'PATH' ),
-       'url_query'                 => array( '0', 'TRUYVẤN', 'QUERY' ),
+       'hiddencat'                 => array( '1', '__THỂ_LOẠI_ẨN__', '__THỂLOẠIẨN__', '__HIDDENCAT__' ),
+       'pagesincategory'           => array( '1', 'CỠ_THỂ_LOẠI', 'CỠTHỂLOẠI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                  => array( '1', 'CỠ_TRANG', 'CỠTRANG', 'PAGESIZE' ),
+       'index'                     => array( '1', '__CHỈ_MỤC__', '__CHỈMỤC__', '__INDEX__' ),
+       'noindex'                   => array( '1', '__KHÔNG_CHỈ_MỤC__', '__KHÔNGCHỈMỤC__', '__NOINDEX__' ),
+       'numberingroup'             => array( '1', 'CỠ_NHÓM', 'CỠNHÓM', 'NUMBERINGROUP', 'NUMINGROUP' ),
+       'staticredirect'            => array( '1', '__ĐỔI_HƯỚNG_NHẤT_ĐỊNH__', '__ĐỔIHƯỚNGNHẤTĐỊNH__', '__STATICREDIRECT__' ),
+       'protectionlevel'           => array( '1', 'MỨC_KHÓA', 'MỨCKHÓA', 'MỨC_KHOÁ', 'MỨCKHOÁ', 'PROTECTIONLEVEL' ),
+       'url_path'                  => array( '0', 'ĐƯỜNG_DẪN', 'ĐƯỜNGDẪN', 'PATH' ),
+       'url_query'                 => array( '0', 'TRUY_VẤN', 'TRUYVẤN', 'QUERY' ),
+       'defaultsort_noerror'       => array( '0', 'không_lỗi', 'noerror' ),
+       'defaultsort_noreplace'     => array( '0', 'không_thay_thế', 'noreplace' ),
+       'pagesincategory_all'       => array( '0', 'tất_cả', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'trang', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'thể_loại_con', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'tập_tin', 'files' ),
 );
 
 $datePreferences = array(
@@ -602,7 +614,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Bạn có $1 từ {{PLURAL:$3|người dùng khác|$3 người dùng}} ($2).',
 'youhavenewmessagesmanyusers' => 'Bạn có $1 từ nhiều người dùng ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1}}tin nhắn mới',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|thay đổi|các thay đổi}} gần đây',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|thay đổi|999=các thay đổi}} gần đây',
 'youhavenewmessagesmulti' => 'Bạn có tin nhắn mới ở $1',
 'editsection' => 'sửa',
 'editold' => 'sửa',
@@ -728,7 +740,8 @@ Bảo quản viên khóa nó đưa lý do là: “$3”.',
 'invalidtitle-knownnamespace' => 'Tựa trang không hợp lệ có không gian tên “$2” và văn bản “$3”',
 'invalidtitle-unknownnamespace' => 'Tựa trang không hợp lệ có không gian tên số $1 không rõ và văn bản “$2”',
 'exception-nologin' => 'Chưa đăng nhập',
-'exception-nologin-text' => 'Bạn cần phải đăng nhập để truy cập trang hoặc thực hiện tác vụ này tại wiki này.',
+'exception-nologin-text' => 'Xin vui lòng [[Special:Userlogin|đăng nhập]] để truy cập trang hoặc tác vụ này.',
+'exception-nologin-text-manual' => 'Xin vui lòng $1 để truy cập trang hoặc tác vụ này.',
 
 # Virus scanner
 'virus-badscanner' => "Cấu hình sau: không nhận ra bộ quét virus: ''$1''",
@@ -1437,6 +1450,7 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'preferences' => 'Tùy chọn',
 'mypreferences' => 'Tùy chọn',
 'prefs-edits' => 'Số lần sửa đổi:',
+'prefsnologintext2' => 'Xin vui lòng $1 để thay đổi tùy chọn.',
 'changepassword' => 'Đổi mật khẩu',
 'prefs-skin' => 'Hình dạng',
 'skin-preview' => 'Xem trước',
@@ -1736,7 +1750,9 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'recentchanges-label-minor' => 'Đây là một sửa đổi nhỏ',
 'recentchanges-label-bot' => 'Sửa đổi này do bot thực hiện',
 'recentchanges-label-unpatrolled' => 'Sửa đổi này chưa được tuần tra',
-'recentchanges-legend-newpage' => '$1 - trang mới',
+'recentchanges-label-plusminus' => 'Kích cỡ trang đã thay đổi bằng số byte này',
+'recentchanges-legend-newpage' => '(xem thêm [[Special:NewPages|danh sách các trang mới]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Dưới đây là {{PLURAL:$1|thay đổi '''duy nhất'''|'''$1''' thay đổi gần nhất}} trong {{PLURAL:$2|ngày qua|'''$2''' ngày qua}}, tính tới $5 lúc $4.",
 'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
 'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
@@ -2464,9 +2480,9 @@ Liên lạc với người viết trang qua:
 thư: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Sẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.
+Sẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó lúc khi đăng nhập. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.
 
-              Hệ thống báo tin {{SITENAME}} thân thiện của bạn
+Hệ thống báo tin {{SITENAME}} thân thiện của bạn
 
 --
 Để thay đổi các thiết lập thư điện tử thông báo, mời xem:
@@ -4102,9 +4118,9 @@ hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html đọc nó trực tuy
 
 # Special:SpecialPages
 'specialpages' => 'Các trang đặc biệt',
+'specialpages-note-top' => 'Chú giải',
 'specialpages-note' => '* Trang đặc biệt thông thường.
-* <strong class="mw-specialpagerestricted">Trang đặc biệt được hạn chế.</strong>
-* <span class="mw-specialpagecached">Trang đặc biệt được lấy từ vùng nhớ đệm (có thể lỗi thời).</span>',
+* <strong class="mw-specialpagerestricted">Trang đặc biệt được hạn chế.</strong>',
 'specialpages-group-maintenance' => 'Báo cáo bảo quản',
 'specialpages-group-other' => 'Trang đặc biệt khác',
 'specialpages-group-login' => 'Đăng nhập / Mở tài khoản',
index e2b2f0e..50264c8 100644 (file)
@@ -68,7 +68,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Klads' ),
        'Confirmemail'              => array( 'Fümedönladeti' ),
        'Contributions'             => array( 'Keblünots' ),
-       'Disambiguations'           => array( 'Telplänovs', 'Telplänovapads' ),
        'DoubleRedirects'           => array( 'Lüodükömstelik', 'Lüodüköms telik' ),
        'Listfiles'                 => array( 'Ragivalised', 'Magodalised' ),
        'Listusers'                 => array( 'Gebanalised' ),
index dc3d167..6cdb3be 100644 (file)
@@ -44,7 +44,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'NgatananngaPakli' ),
        'Categories'                => array( 'Mga_kaarangay' ),
        'Contributions'             => array( 'Mga_ámot' ),
-       'Disambiguations'           => array( 'Mga_pansayod' ),
        'Longpages'                 => array( 'HaglabangamgaPakli' ),
        'Mostlinked'                => array( 'Gidamo-iHinSumpay' ),
        'Movepage'                  => array( 'BalhinaAnPakli' ),
index 7959ce9..26ce7e7 100644 (file)
@@ -142,7 +142,7 @@ $messages = array(
 'december-date' => '12月 $1',
 
 # Categories related messages
-'pagecategories' => '$1个分类',
+'pagecategories' => '{{PLURAL:$1|分类}}',
 'category_header' => '“$1”分類裏個頁',
 'subcategories' => '兒分類',
 'category-media-header' => '"$1"分类里个媒体',
index 2581136..0e9e745 100644 (file)
@@ -71,7 +71,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'אוראלטע_בלעטער' ),
        'Blankpage'                 => array( 'ליידיגער_בלאט' ),
        'Block'                     => array( 'בלאקירן' ),
-       'Blockme'                   => array( 'בלאקירט_מיך' ),
        'BrokenRedirects'           => array( 'צעבראכענע_ווייטערפירונגען' ),
        'Categories'                => array( 'קאטעגאריעס' ),
        'ChangePassword'            => array( 'ענדערן_פאסווארט' ),
@@ -81,7 +80,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'שאפֿן_קאנטע' ),
        'Deadendpages'              => array( 'בלעטער_אן_פארבינדונגען' ),
        'DeletedContributions'      => array( 'אויסגעמעקעטע_בײַשטײַערונגען' ),
-       'Disambiguations'           => array( 'באדייטן' ),
        'DoubleRedirects'           => array( 'פארטאפלטע_ווייטערפירונגען' ),
        'Emailuser'                 => array( 'שיקן_אן_ע-פאסט_צום_באניצער' ),
        'Export'                    => array( 'עקספארט' ),
@@ -162,6 +160,7 @@ $magicWords = array(
        'numberofarticles'          => array( '1', 'צאל_ארטיקלען', 'מספר ערכים', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', 'צאל_טעקעס', 'מספר קבצים', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'צאל_באניצער', 'מספר משתמשים', 'NUMBEROFUSERS' ),
+       'numberofedits'             => array( '1', 'צאל_רעדאקטירונגען', 'מספר עריכות', 'NUMBEROFEDITS' ),
        'pagename'                  => array( '1', 'בלאטנאמען', 'שם הדף', 'PAGENAME' ),
        'namespace'                 => array( '1', 'נאמענטייל', 'מרחב השם', 'NAMESPACE' ),
        'fullpagename'              => array( '1', 'פולבלאטנאמען', 'שם הדף המלא', 'FULLPAGENAME' ),
@@ -178,6 +177,7 @@ $magicWords = array(
        'img_sub'                   => array( '1', 'אונטער', 'תחתי', 'sub' ),
        'img_super'                 => array( '1', 'איבער', 'עילי', 'super', 'sup' ),
        'img_top'                   => array( '1', 'אויבן', 'למעלה', 'top' ),
+       'img_middle'                => array( '1', 'אינמיטן', 'באמצע', 'middle' ),
        'img_bottom'                => array( '1', 'אונטן', 'למטה', 'bottom' ),
        'img_link'                  => array( '1', 'לינק=$1', 'קישור=$1', 'link=$1' ),
        'img_alt'                   => array( '1', 'טעקסט=$1', 'טקסט=$1', 'alt=$1' ),
@@ -192,6 +192,7 @@ $magicWords = array(
        'hiddencat'                 => array( '1', '__באהאלטענע_קאטעגאריע__', '__באהאלטענע_קאט__', '__קטגוריה_מוסתרת__', '__HIDDENCAT__' ),
        'pagesize'                  => array( '1', 'בלאטגרייס', 'גודל דף', 'PAGESIZE' ),
        'url_wiki'                  => array( '0', 'וויקי', 'ויקי', 'WIKI' ),
+       'pagesincategory_pages'     => array( '0', 'בלעטער', 'דפים', 'pages' ),
 );
 
 $messages = array(
@@ -1640,7 +1641,8 @@ $1",
 'recentchanges-label-minor' => 'דאָס איז אַ מינערדיקע רעדאַקטירונג',
 'recentchanges-label-bot' => ' די רעדאַקטירונג האט אויסגעפירט א באט',
 'recentchanges-label-unpatrolled' => 'די רעדאקטירונג איז נאך נישט נאכגעקוקט',
-'recentchanges-legend-newpage' => '$1 - נײַער בלאַט',
+'recentchanges-label-plusminus' => 'בלאט גרייס געענדערט מיט דער אצל בייטן',
+'recentchanges-legend-newpage' => '(זעים אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])',
 'rcnote' => "אונטן {{PLURAL:$1|איז '''1''' ענדערונג|זײַנען די לעצטע '''$1''' ענדערונגען}} אין {{PLURAL:$2|דעם לעצטן טאג|די לעצטע $2 טעג}}, ביז $5, $4.",
 'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
index f52dff9..14a1975 100644 (file)
@@ -1460,7 +1460,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'rc_categories_any' => 'Èyíkéyìí',
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} lẹ́yìn àtúnṣe',
 'newsectionsummary' => '/* $1 */ abala tuntun',
-'rc-enhanced-expand' => 'Ìfihàn ẹ̀kúnrẹ́rẹ́ (JavaScript pọndandan)',
+'rc-enhanced-expand' => 'Ìfihàn ẹ̀kúnrẹ́rẹ́',
 'rc-enhanced-hide' => 'Ìfipamọ́ ẹ̀kúnrẹ́rẹ́',
 'rc-old-title' => 'dídá tẹ́lẹ̀tẹ́lẹ̀ bíi "$1"',
 
@@ -2365,7 +2365,7 @@ $1',
 'contributions' => 'Àwọn àfikún {{GENDER:$1|oníṣe}}',
 'contributions-title' => 'Àwọn àfikún oníṣe fún $1',
 'mycontris' => 'Àwọn àfikún',
-'contribsub2' => 'Fún $1 ($2)',
+'contribsub2' => 'Fún {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Kò sí àtúnṣe tuntun tó bá àwárí mu.',
 'uctop' => '(lówọ́)',
 'month' => 'Láti osù (àti sẹ́yìn):',
@@ -2960,7 +2960,7 @@ Tí ẹ bá jẹ́ ó ṣiṣẹ́, ẹ̀rọ sístẹ́mù yín le kó sí ewu.
 'svg-long-desc' => 'faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3',
 'svg-long-desc-animated' => 'Fáìlì SVG alámùúrìn, tó jẹ́ $1 × $2 pixels, ìtóbi fáìlì: $3',
 'svg-long-error' => 'Fáìlì SVG àìyẹ: $1',
-'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
+'show-big-image' => 'Fáìlì àtìbẹ̀rẹ̀',
 'show-big-image-preview' => 'Ìtóbi ìkọ́yẹ̀wò yìí: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Ìgbéhàn|Àwọn ìgbéhàn}} míràn: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
index 5e72144..e3717c2 100644 (file)
@@ -101,7 +101,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( '舊版' ),
        'Blankpage'                 => array( '空版' ),
        'Block'                     => array( '封' ),
-       'Blockme'                   => array( '封我' ),
        'Booksources'               => array( '書本來源' ),
        'BrokenRedirects'           => array( '斷鏈' ),
        'Categories'                => array( '分類' ),
@@ -112,7 +111,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '開戶' ),
        'Deadendpages'              => array( '掘頭頁' ),
        'DeletedContributions'      => array( '刪咗嘅貢獻' ),
-       'Disambiguations'           => array( '搞清楚頁' ),
        'DoubleRedirects'           => array( '雙重跳轉' ),
        'EditWatchlist'             => array( '改監視清單' ),
        'Emailuser'                 => array( '電郵用戶' ),
@@ -163,7 +161,7 @@ $specialPageAliases = array(
        'Revisiondelete'            => array( '修訂版本刪除' ),
        'Search'                    => array( '搜索' ),
        'Shortpages'                => array( '短版' ),
-       'Specialpages'              => array( '特別頁' ),
+       'Specialpages'              => array( '專門版' ),
        'Statistics'                => array( '統計' ),
        'Tags'                      => array( '標籤' ),
        'Unblock'                   => array( '解封' ),
index 953e2ae..4a485b6 100644 (file)
@@ -130,29 +130,29 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( '活跃用户' ),
        'Allmessages'               => array( '所有信息' ),
+       'AllMyUploads'              => array( '我上传的所有文件', '我的所有文件' ),
        'Allpages'                  => array( '所有页面' ),
        'Ancientpages'              => array( '最老页面' ),
-       'Badtitle'                  => array( '无效标题' ),
+       'Badtitle'                  => array( '错误标题', '无效标题' ),
        'Blankpage'                 => array( '空白页面' ),
        'Block'                     => array( '封禁用户' ),
-       'Blockme'                   => array( '自我封禁' ),
        'Booksources'               => array( '网络书源' ),
-       'BrokenRedirects'           => array( '受损重定向' ),
+       'BrokenRedirects'           => array( '受损重定向' ),
        'Categories'                => array( '页面分类' ),
        'ChangeEmail'               => array( '修改邮箱' ),
        'ChangePassword'            => array( '修改密码' ),
-       'ComparePages'              => array( '比较页面' ),
+       'ComparePages'              => array( '对比页面', '比较页面' ),
        'Confirmemail'              => array( '确认电子邮件' ),
        'Contributions'             => array( '用户贡献' ),
        'CreateAccount'             => array( '创建账户' ),
        'Deadendpages'              => array( '断链页面' ),
        'DeletedContributions'      => array( '已删除的用户贡献' ),
-       'Disambiguations'           => array( '消歧义页' ),
-       'DoubleRedirects'           => array( '双重重定向页', '两次重定向页' ),
+       'DoubleRedirects'           => array( '双重重定向', '两次重定向' ),
        'EditWatchlist'             => array( '编辑监视列表' ),
-       'Emailuser'                 => array( '电子邮件用户' ),
+       'Emailuser'                 => array( '电邮联系' ),
+       'ExpandTemplates'           => array( '展开模板' ),
        'Export'                    => array( '导出页面' ),
-       'Fewestrevisions'           => array( '最少修订页面' ),
+       'Fewestrevisions'           => array( '版本最少页面', '最少修订页面' ),
        'FileDuplicateSearch'       => array( '搜索重复文件' ),
        'Filepath'                  => array( '文件路径' ),
        'Import'                    => array( '导入页面' ),
@@ -186,17 +186,21 @@ $specialPageAliases = array(
        'Myuploads'                 => array( '我上传的文件' ),
        'Newimages'                 => array( '新建文件' ),
        'Newpages'                  => array( '新建页面' ),
+       'PagesWithProp'             => array( '带属性的页面' ),
        'PasswordReset'             => array( '重设密码' ),
        'PermanentLink'             => array( '永久链接' ),
        'Popularpages'              => array( '热点页面' ),
-       'Preferences'               => array( '参数设置', '系统设置' ),
+       'Preferences'               => array( '参数设置', '设置' ),
        'Prefixindex'               => array( '前缀索引' ),
        'Protectedpages'            => array( '已保护页面' ),
        'Protectedtitles'           => array( '已保护标题' ),
        'Randompage'                => array( '随机页面' ),
-       'Randomredirect'            => array( '随机重定向页' ),
+       'RandomInCategory'          => array( '分类内随机' ),
+       'Randomredirect'            => array( '随机重定向', '随机重定向页' ),
        'Recentchanges'             => array( '最近更改' ),
-       'Recentchangeslinked'       => array( '链出更改' ),
+       'Recentchangeslinked'       => array( '相关更改', '链出更改' ),
+       'Redirect'                  => array( '重定向' ),
+       'ResetTokens'               => array( '重置权标' ),
        'Revisiondelete'            => array( '删除或恢复修订' ),
        'Search'                    => array( '搜索' ),
        'Shortpages'                => array( '短页面' ),
@@ -216,17 +220,17 @@ $specialPageAliases = array(
        'Unwatchedpages'            => array( '未受监视页面' ),
        'Upload'                    => array( '上传文件' ),
        'UploadStash'               => array( '上传藏匿' ),
-       'Userlogin'                 => array( '用户登录', '用户登入' ),
-       'Userlogout'                => array( '用户退出', '用户登出' ),
+       'Userlogin'                 => array( '用户登录' ),
+       'Userlogout'                => array( '用户退出' ),
        'Userrights'                => array( '用户权限' ),
-       'Version'                   => array( '版本信息' ),
-       'Wantedcategories'          => array( '待撰分类' ),
+       'Version'                   => array( '版本', '版本信息' ),
+       'Wantedcategories'          => array( '需要的分类', '待撰分类' ),
        'Wantedfiles'               => array( '需要的文件' ),
-       'Wantedpages'               => array( '待撰页面' ),
+       'Wantedpages'               => array( '需要的页面', '待撰页面', '受损链接' ),
        'Wantedtemplates'           => array( '需要的模板' ),
        'Watchlist'                 => array( '监视列表' ),
        'Whatlinkshere'             => array( '链入页面' ),
-       'Withoutinterwiki'          => array( '无跨维基链接页面' ),
+       'Withoutinterwiki'          => array( '无跨维基', '无跨维基链接页面' ),
 );
 
 $magicWords = array(
@@ -235,15 +239,26 @@ $magicWords = array(
        'nogallery'                 => array( '0', '__无图库__', '__NOGALLERY__' ),
        'forcetoc'                  => array( '0', '__强显目录__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__目录__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__无段落编辑__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', '本月', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'noeditsection'             => array( '0', '__无编辑段落__', '__无段落编辑__', '__NOEDITSECTION__' ),
+       'currentmonth'              => array( '1', '本月', '本月2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', '本月1', 'CURRENTMONTH1' ),
-       'currentmonthname'          => array( '1', '本月名称', 'CURRENTMONTHNAME' ),
+       'currentmonthname'          => array( '1', '本月名', '本月名称', 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'       => array( '1', '本月名属格', '本月名称属格', 'CURRENTMONTHNAMEGEN' ),
        'currentmonthabbrev'        => array( '1', '本月简称', 'CURRENTMONTHABBREV' ),
        'currentday'                => array( '1', '今天', 'CURRENTDAY' ),
        'currentday2'               => array( '1', '今天2', 'CURRENTDAY2' ),
+       'currentdayname'            => array( '1', '星期', '今天名', '今天名称', 'CURRENTDAYNAME' ),
        'currentyear'               => array( '1', '今年', 'CURRENTYEAR' ),
-       'currenttime'               => array( '1', '此时', '当前时间', 'CURRENTTIME' ),
+       'currenttime'               => array( '1', '当前时间', '此时', 'CURRENTTIME' ),
+       'currenthour'               => array( '1', '当前小时', 'CURRENTHOUR' ),
+       'localmonth'                => array( '1', '本地月', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonthname'            => array( '1', '本地月份名', 'LOCALMONTHNAME' ),
+       'localmonthnamegen'         => array( '1', '本地月历', 'LOCALMONTHNAMEGEN' ),
+       'localday'                  => array( '1', '本地日', 'LOCALDAY' ),
+       'localdayname'              => array( '1', '本地日名', 'LOCALDAYNAME' ),
+       'localyear'                 => array( '1', '本地年', 'LOCALYEAR' ),
+       'localtime'                 => array( '1', '本地时间', 'LOCALTIME' ),
+       'localhour'                 => array( '1', '本地小时', 'LOCALHOUR' ),
        'numberofpages'             => array( '1', '页面数', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', '条目数', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', '文件数', 'NUMBEROFFILES' ),
@@ -251,19 +266,19 @@ $magicWords = array(
        'numberofactiveusers'       => array( '1', '活跃用户数', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', '编辑数', 'NUMBEROFEDITS' ),
        'numberofviews'             => array( '1', '访问数', 'NUMBEROFVIEWS' ),
-       'pagename'                  => array( '1', '页面名', 'PAGENAME' ),
-       'pagenamee'                 => array( '1', '页面名E', 'PAGENAMEE' ),
+       'pagename'                  => array( '1', '页名', '页面名', '页面名称', 'PAGENAME' ),
+       'pagenamee'                 => array( '1', '页名等同', '页面名等同', '页面名E', 'PAGENAMEE' ),
        'namespace'                 => array( '1', '名字空间', 'NAMESPACE' ),
-       'namespacee'                => array( '1', '名字空间E', 'NAMESPACEE' ),
+       'namespacee'                => array( '1', '名字空间等同', '名字空间E', 'NAMESPACEE' ),
        'namespacenumber'           => array( '1', '名字空间编号', 'NAMESPACENUMBER' ),
-       'talkspace'                 => array( '1', '讨论名字空间', 'TALKSPACE' ),
-       'talkspacee'                => array( '1', '讨论名字空间E', 'TALKSPACEE' ),
-       'fullpagename'              => array( '1', '完整页面名', 'FULLPAGENAME' ),
+       'talkspace'                 => array( '1', '讨论空间', '讨论名字空间', 'TALKSPACE' ),
+       'talkspacee'                => array( '1', '讨论空间等同', '讨论名字空间E', 'TALKSPACEE' ),
+       'fullpagename'              => array( '1', '页面全名', '完整页面名', 'FULLPAGENAME' ),
        'fullpagenamee'             => array( '1', '完整页面名E', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', '子页面名', 'SUBPAGENAME' ),
-       'subpagenamee'              => array( '1', '子页面名E', 'SUBPAGENAMEE' ),
+       'subpagenamee'              => array( '1', '子页面名等同', '子页面名E', 'SUBPAGENAMEE' ),
        'talkpagename'              => array( '1', '讨论页面名', 'TALKPAGENAME' ),
-       'talkpagenamee'             => array( '1', '讨论页面名E', 'TALKPAGENAMEE' ),
+       'talkpagenamee'             => array( '1', '讨论页面名等同', '讨论页面名E', 'TALKPAGENAMEE' ),
        'subst'                     => array( '0', '替代:', 'SUBST:' ),
        'safesubst'                 => array( '0', '安全替代:', 'SAFESUBST:' ),
        'img_thumbnail'             => array( '1', '缩略图', 'thumbnail', 'thumb' ),
@@ -276,9 +291,9 @@ $magicWords = array(
        'img_framed'                => array( '1', '有框', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', '无框', 'frameless' ),
        'img_page'                  => array( '1', '页数=$1', '$1页', 'page=$1', 'page $1' ),
-       'img_border'                => array( '1', '有边', 'border' ),
+       'img_border'                => array( '1', '边框', 'border' ),
        'img_link'                  => array( '1', '链接=$1', 'link=$1' ),
-       'img_alt'                   => array( '1', '替代文本=$1', 'alt=$1' ),
+       'img_alt'                   => array( '1', '替代=$1', '替代文本=$1', 'alt=$1' ),
        'img_class'                 => array( '1', '类=$1', 'class=$1' ),
        'int'                       => array( '0', '界面:', 'INT:' ),
        'sitename'                  => array( '1', '站点名称', 'SITENAME' ),
@@ -293,9 +308,13 @@ $magicWords = array(
        'scriptpath'                => array( '0', '脚本路径', 'SCRIPTPATH' ),
        'stylepath'                 => array( '0', '样式路径', 'STYLEPATH' ),
        'grammar'                   => array( '0', '语法:', 'GRAMMAR:' ),
-       'gender'                    => array( '0', '性别:', 'GENDER:' ),
+       'gender'                    => array( '0', '性:', '性别:', 'GENDER:' ),
        'notitleconvert'            => array( '0', '__不转换标题__', '__NOTITLECONVERT__', '__NOTC__' ),
        'nocontentconvert'          => array( '0', '__不转换内容__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'               => array( '1', '本周', 'CURRENTWEEK' ),
+       'plural'                    => array( '0', '复数:', 'PLURAL:' ),
+       'fullurl'                   => array( '0', '完整URL:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', '完整URL等同:', '完整URLE:', 'FULLURLE:' ),
        'lcfirst'                   => array( '0', '小写首字:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', '大写首字:', 'UCFIRST:' ),
        'lc'                        => array( '0', '小写:', 'LC:' ),
@@ -317,12 +336,12 @@ $magicWords = array(
        'padleft'                   => array( '0', '左填充', 'PADLEFT' ),
        'padright'                  => array( '0', '右填充', 'PADRIGHT' ),
        'special'                   => array( '0', '特殊', 'special' ),
-       'speciale'                  => array( '0', '特殊e', 'speciale' ),
+       'speciale'                  => array( '0', '特殊等同', '特殊e', 'speciale' ),
        'defaultsort'               => array( '1', '默认排序:', '默认排序关键字:', '默认分类排序:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                  => array( '0', '文件路径:', 'FILEPATH:' ),
        'tag'                       => array( '0', '标记', 'tag' ),
        'hiddencat'                 => array( '1', '__隐藏分类__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', '分类中页面数', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesincategory'           => array( '1', '分类中页数', '分类中页面数', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'pagesize'                  => array( '1', '页面大小', 'PAGESIZE' ),
        'index'                     => array( '1', '__索引__', '__INDEX__' ),
        'noindex'                   => array( '1', '__不索引__', '__NOINDEX__' ),
@@ -483,12 +502,12 @@ $messages = array(
 'december-date' => '12月$1日',
 
 # Categories related messages
-'pagecategories' => '$1个分类',
+'pagecategories' => '{{PLURAL:$1|分类}}',
 'category_header' => '分类“$1”中的页面',
 'subcategories' => '子分类',
 'category-media-header' => '分类“$1”中的媒体文件',
 'category-empty' => "''本分类目前未包含页面或媒体文件。''",
-'hidden-categories' => '$1个隐藏分类',
+'hidden-categories' => '{{PLURAL:$1|隐藏分类}}',
 'hidden-category-category' => '隐藏分类',
 'category-subcat-count' => '{{PLURAL:$2|本分类只有以下子分类。|本分类有以下$1个子分类,共有$2个子分类。}}',
 'category-subcat-count-limited' => '本分类有以下{{PLURAL:$1|子分类|$1个子分类}}。',
@@ -2132,7 +2151,7 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1字节',
-'ncategories' => '$1个分类',
+'ncategories' => '$1个{{PLURAL:$1|分类}}',
 'ninterwikis' => '$1个跨语言链接',
 'nlinks' => '$1个链接',
 'nmembers' => '$1个成员',
@@ -2434,11 +2453,11 @@ $UNWATCHURL
 'deleteotherreason' => '其他/附加原因:',
 'deletereasonotherlist' => '其他原因',
 'deletereason-dropdown' => '*常见删除原因
-** 广告
-** 破坏行为
-** 侵犯著作权
-** 作者申请
-** 损坏的重定向',
+**广告
+**破坏行为
+**侵犯著作权
+**作者申请
+**受损重定向',
 'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
@@ -3282,7 +3301,7 @@ Variants for Chinese language
 'variantname-kk-cyrl' => 'kk-cyrl',
 
 # Metadata
-'metadata' => 'å\8e\9få§\8b数据',
+'metadata' => 'å\85\83数据',
 'metadata-help' => '此文件中包含有扩展的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。
 
 如果此文件的源文件已经被修改,一些信息在修改后的文件中将不能完全反映出来。',
index db13cd8..bd7f553 100644 (file)
@@ -118,12 +118,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( '活躍用戶' ),
        'Allmessages'               => array( '所有信息' ),
+       'AllMyUploads'              => array( '所有本人上載', '所有本人文件' ),
        'Allpages'                  => array( '所有頁面' ),
        'Ancientpages'              => array( '最早頁面' ),
        'Badtitle'                  => array( '無效標題' ),
        'Blankpage'                 => array( '空白頁面' ),
        'Block'                     => array( '查封用戶' ),
-       'Blockme'                   => array( '封禁我' ),
        'Booksources'               => array( '網絡書源' ),
        'BrokenRedirects'           => array( '損壞的重定向頁' ),
        'Categories'                => array( '頁面分類' ),
@@ -135,10 +135,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '創建賬戶' ),
        'Deadendpages'              => array( '斷鏈頁面' ),
        'DeletedContributions'      => array( '已刪除的用戶貢獻' ),
-       'Disambiguations'           => array( '消歧義頁' ),
        'DoubleRedirects'           => array( '雙重重定向頁面' ),
        'EditWatchlist'             => array( '編輯監視列表' ),
        'Emailuser'                 => array( '電郵用戶' ),
+       'ExpandTemplates'           => array( '展開模板' ),
        'Export'                    => array( '導出頁面' ),
        'Fewestrevisions'           => array( '最少修訂頁面' ),
        'FileDuplicateSearch'       => array( '搜索重複文件' ),
@@ -174,6 +174,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( '我的上傳' ),
        'Newimages'                 => array( '新建文件' ),
        'Newpages'                  => array( '新頁面' ),
+       'PagesWithProp'             => array( '帶屬性頁面' ),
        'PasswordReset'             => array( '重設密碼' ),
        'PermanentLink'             => array( '永久連結' ),
        'Popularpages'              => array( '熱點頁面' ),
@@ -186,6 +187,7 @@ $specialPageAliases = array(
        'Recentchanges'             => array( '最近更改' ),
        'Recentchangeslinked'       => array( '鏈出更改' ),
        'Redirect'                  => array( '重定向' ),
+       'ResetTokens'               => array( '覆寫令牌' ),
        'Revisiondelete'            => array( '刪除或恢復版本' ),
        'Search'                    => array( '搜索' ),
        'Shortpages'                => array( '短頁面' ),
@@ -388,12 +390,12 @@ $messages = array(
 'december-date' => '12月$1日',
 
 # Categories related messages
-'pagecategories' => '$1 個分類',
+'pagecategories' => '{{PLURAL:$1|分類}}',
 'category_header' => '「$1」分類中的頁面',
 'subcategories' => '子分類',
 'category-media-header' => '「$1」分類中的媒體',
 'category-empty' => "''此分類目前未包含頁面或媒體。''",
-'hidden-categories' => '$1 個隱藏分類',
+'hidden-categories' => '{{PLURAL:$1|隱藏分類}}',
 'hidden-category-category' => '隱藏分類',
 'category-subcat-count' => '{{PLURAL:$2|此分類有以下一個子分類。|此分類有 $2 個子分類,以下列出了 $1 個。}}',
 'category-subcat-count-limited' => '此分類有以下 $1 個子分類。',
index 2d9b818..d28642e 100644 (file)
@@ -42,8 +42,6 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Ancientpages'              => array( '最舊頁面' ),
        'Block'                     => array( '查封用戶' ),
-       'Blockme'                   => array( '封禁我' ),
-       'Disambiguations'           => array( '消歧義頁' ),
        'FileDuplicateSearch'       => array( '搜索重復文件' ),
        'Invalidateemail'           => array( '無法識別的電郵地址' ),
        'LinkSearch'                => array( '搜索網頁鏈接' ),
index 68ac48c..c2aede0 100644 (file)
@@ -185,8 +185,8 @@ class CLDRPluralRuleEvaluator_Range {
                foreach ( $this->parts as $part ) {
                        if ( is_array( $part ) ) {
                                if ( ( !$integerConstraint || floor( $number ) === (float)$number )
-                                       && $number >= $part[0] && $number <= $part[1] )
-                               {
+                                       && $number >= $part[0] && $number <= $part[1]
+                               {
                                        return true;
                                }
                        } else {
@@ -450,8 +450,8 @@ class CLDRPluralRuleConverter {
                        // Look ahead one word
                        $nextTokenPos += strspn( $this->rule, self::WHITESPACE_CLASS, $nextTokenPos );
                        if ( $nextTokenPos < $this->end
-                                       && preg_match( self::WORD_REGEX, $this->rule, $m, 0, $nextTokenPos ) )
-                       {
+                               && preg_match( self::WORD_REGEX, $this->rule, $m, 0, $nextTokenPos )
+                       {
                                $word2 = strtolower( $m[0] );
                                $nextTokenPos += strlen( $word2 );
                        }
index 91a027e..fb2cd8c 100644 (file)
@@ -1273,9 +1273,9 @@ abstract class LoggedUpdateMaintenance extends Maintenance {
                $db = $this->getDB( DB_MASTER );
                $key = $this->getUpdateKey();
 
-               if ( !$this->hasOption( 'force' ) &&
-                       $db->selectRow( 'updatelog', '1', array( 'ul_key' => $key ), __METHOD__ ) )
-               {
+               if ( !$this->hasOption( 'force' )
+                       && $db->selectRow( 'updatelog', '1', array( 'ul_key' => $key ), __METHOD__ )
+               {
                        $this->output( "..." . $this->updateSkippedMessage() . "\n" );
                        return true;
                }
@@ -1284,9 +1284,7 @@ abstract class LoggedUpdateMaintenance extends Maintenance {
                        return false;
                }
 
-               if (
-                       $db->insert( 'updatelog', array( 'ul_key' => $key ), __METHOD__, 'IGNORE' ) )
-               {
+               if ( $db->insert( 'updatelog', array( 'ul_key' => $key ), __METHOD__, 'IGNORE' ) ) {
                        return true;
                } else {
                        $this->output( $this->updatelogFailedMessage() . "\n" );
index a51e6ee..f16772c 100644 (file)
@@ -417,8 +417,8 @@ class TextPassDumper extends BackupDumper {
                $text = false; // The candidate for a good text. false if no proper value.
                $failures = 0; // The number of times, this invocation of getText already failed.
 
-               static $consecutiveFailedTextRetrievals = 0; // The number of times getText failed without
-                                                            // yielding a good text in between.
+               // The number of times getText failed without yielding a good text in between.
+               static $consecutiveFailedTextRetrievals = 0;
 
                $this->fetchCount++;
 
index bda64f3..4590611 100644 (file)
@@ -52,7 +52,7 @@ do {
        $bad = false;
        $showhelp = false;
        $quit = false;
-       static $fileHandle;
+       static $fileHandle = false;
 
        $line = Maintenance::readconsole();
        if ( $line === false ) {
@@ -77,7 +77,7 @@ do {
                        print "Loading cdb file $file...";
                        try {
                                $fileHandle = CdbReader::open( $file );
-                       } catch( CdbException $e ) {}
+                       } catch ( CdbException $e ) {}
 
                        if ( !$fileHandle ) {
                                print "not a cdb file or unable to read it\n";
@@ -98,6 +98,7 @@ do {
                                $res = $fileHandle->get( $args[0] );
                        } catch ( CdbException $e ) {
                                print "Unable to read key from file\n";
+                               break;
                        }
                        if ( $res === false ) {
                                print "No such key/value pair\n";
index 49af0b8..09b9295 100644 (file)
@@ -239,8 +239,8 @@ class CopyFileBackend extends Maintenance {
                                $this->error( "$wikiId: Detected illegal (non-UTF8) path for $srcPath." );
                                continue;
                        } elseif ( !$this->hasOption( 'missingonly' )
-                               && $this->filesAreSame( $src, $dst, $srcPath, $dstPath ) )
-                       {
+                               && $this->filesAreSame( $src, $dst, $srcPath, $dstPath )
+                       {
                                $this->output( "\tAlready have $srcPathRel.\n" );
                                continue; // assume already copied...
                        }
index 3157318..3dcf12c 100644 (file)
@@ -90,9 +90,9 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
        require $maintenance->loadSettings();
 }
 
-if ( $maintenance->getDbType() === Maintenance::DB_ADMIN &&
-       is_readable( "$IP/AdminSettings.php" ) )
-{
+if ( $maintenance->getDbType() === Maintenance::DB_ADMIN
+       && is_readable( "$IP/AdminSettings.php" )
+{
        require "$IP/AdminSettings.php";
 }
 
index 373170f..52056ea 100644 (file)
@@ -103,8 +103,7 @@ class FindHooks extends Maintenance {
                $this->printArray( 'Documented and not found', $deprecated );
                $this->printArray( 'Unclear hook calls', $bad );
 
-               if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
-               {
+               if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 ) {
                        $this->output( "Looks good!\n" );
                }
        }
index 3ac7a28..7765784 100644 (file)
@@ -123,9 +123,9 @@ class CLIParser extends Maintenance {
         */
        protected function parse( $wikitext ) {
                return $this->parser->parse(
-                       $wikitext
-                       , $this->getTitle()
-                       new ParserOptions()
+                       $wikitext,
+                       $this->getTitle(),
+                       new ParserOptions()
                );
        }
 }
index 48d3897..01bd09a 100644 (file)
@@ -95,8 +95,8 @@ class PruneFileCache extends Maintenance {
                                        // Sanity check the file extension against known cache types
                                        if ( $mts < $this->minSurviveTimestamp
                                                && preg_match( '/\.(?:html|cache)(?:\.gz)?$/', $file )
-                                               && unlink( $path ) )
-                                       {
+                                               && unlink( $path )
+                                       {
                                                $daysOld = round( ( $tsNow - $mts ) / 86400, 2 );
                                                $this->output( "Deleted `$path` [days=$daysOld]\n" );
                                        }
index 53bf823..ed67ccd 100644 (file)
@@ -205,9 +205,16 @@ class ImageBuilder extends Maintenance {
                }
                if ( !$this->dryrun ) {
                        $file = wfLocalFile( $filename );
-                       if ( !$file->recordUpload( '', '(recovered file, missing upload log entry)', '', '', '',
-                               false, $timestamp ) )
-                       {
+                       if ( !$file->recordUpload(
+                                       '',
+                                       '(recovered file, missing upload log entry)',
+                                       '',
+                                       '',
+                                       '',
+                                       false,
+                                       $timestamp
+                               )
+                       ) {
                                $this->output( "Error uploading file $fullpath\n" );
                                return;
                        }
index 8cb5548..3b59f1d 100644 (file)
@@ -177,8 +177,8 @@ class CompressOld extends Maintenance {
         * @return bool
         */
        private function compressWithConcat( $startId, $maxChunkSize, $beginDate,
-               $endDate, $extdb = "", $maxPageId = false )
-       {
+               $endDate, $extdb = "", $maxPageId = false
+       {
                $loadStyle = self::LS_CHUNKED;
 
                $dbr = wfGetDB( DB_SLAVE );
index 101aa06..e832b4e 100644 (file)
@@ -58,8 +58,8 @@ class FixBug20757 extends Maintenance {
                $totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
 
                if ( $dbr->getType() == 'mysql'
-                       && version_compare( $dbr->getServerVersion(), '4.1.0', '>=' ) )
-               {
+                       && version_compare( $dbr->getServerVersion(), '4.1.0', '>=' )
+               {
                        // In MySQL 4.1+, the binary field old_text has a non-working LOWER() function
                        $lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))';
                } else {
index 6b08480..51bbd6f 100644 (file)
@@ -169,7 +169,7 @@ class UpdateMediaWiki extends Maintenance {
                $time2 = new MWTimestamp();
 
                $this->output( "\nDone.\n" );
-               $this->output( "\nThe job took " . $time2->diff( $time1 )->format( "%i:%S" ) . "\n" );
+               $this->output( "\nThe job took " . $time2->diff( $time1 )->format( "%i:%S" ) . ".\n" );
        }
 
        function afterFinalSetup() {
index 8bd80c9..44a1aab 100644 (file)
@@ -184,7 +184,7 @@ class UserDupes {
        function getDupes() {
                $user = $this->db->tableName( 'user' );
                $result = $this->db->query(
-                        "SELECT user_name,COUNT(*) AS n
+                       "SELECT user_name,COUNT(*) AS n
                                FROM $user
                        GROUP BY user_name
                          HAVING n > 1", __METHOD__ );
index 30be2bd..60c0afc 100644 (file)
@@ -15,8 +15,6 @@
  * @license GPL2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
  */
 ( function ( $, mw ) {
-       var lpx = 'jquery.makeCollapsible> ';
-
        /**
         * Handler for a click on a collapsible toggler.
         *
                        } else {
                                collapsibleId = $collapsible.attr( 'id' ) || '';
                                if ( collapsibleId.indexOf( 'mw-customcollapsible-' ) === 0 ) {
-                                       mw.log( lpx + 'Found custom collapsible: #' + collapsibleId );
                                        $customTogglers = $( '.' + collapsibleId.replace( 'mw-customcollapsible', 'mw-customtoggle' ) );
-
-                                       // Double check that there is actually a customtoggle link
-                                       if ( !$customTogglers.length ) {
-                                               mw.log( lpx + '#' + collapsibleId + ': Missing toggler!' );
-                                       }
                                }
                        }
 
-                       // Bind the togglers
+                       // Add event handlers to custom togglers or create our own ones
                        if ( $customTogglers && $customTogglers.length ) {
                                actionHandler = function ( e, opts ) {
                                        var defaultOpts = {};
index abada19..5020b37 100644 (file)
  *
  * This will automatically use the HTML5 placeholder attribute if supported, or emulate this behavior if not.
  *
+ * This is a fork from Mathias Bynens' jquery.placeholder as of this commit
+ * https://github.com/mathiasbynens/jquery-placeholder/blob/47f05d400e2dd16b59d144141a2cf54a9a77c502/jquery.placeholder.js
+ *
+ * @author Mathias Bynens <http://mathiasbynens.be/>
  * @author Trevor Parscal <tparscal@wikimedia.org>, 2012
  * @author Krinkle <krinklemail@gmail.com>, 2012
- * @version 0.2.0
+ * @author Alex Ivanov <alexivanov97@gmail.com>, 2013
+ * @version 2.1.0
  * @license MIT
  */
-( function ( $ ) {
+(function($) {
 
-       $.fn.placeholder = function ( text ) {
-               var hasArg = arguments.length;
+       var isInputSupported = 'placeholder' in document.createElement('input'),
+               isTextareaSupported = 'placeholder' in document.createElement('textarea'),
+               prototype = $.fn,
+               valHooks = $.valHooks,
+               propHooks = $.propHooks,
+               hooks,
+               placeholder;
 
-               return this.each( function () {
-                       var placeholder, $input;
+       if (isInputSupported && isTextareaSupported) {
 
-                       if ( hasArg ) {
-                               this.setAttribute( 'placeholder', text );
-                       }
+               placeholder = prototype.placeholder = function(text) {
+                       var hasArgs = arguments.length;
 
-                       // If the HTML5 placeholder attribute is supported, use it
-                       if ( this.placeholder && 'placeholder' in document.createElement( this.tagName ) ) {
-                               return;
+                       if( hasArgs ) {
+                               changePlaceholder.call(this, text);
                        }
 
-                       placeholder = hasArg ? text : this.getAttribute( 'placeholder' );
-                       $input = $(this);
+                       return this;
+               };
+
+               placeholder.input = placeholder.textarea = true;
+
+       } else {
 
-                       // Show initially, if empty
-                       if ( this.value === '' || this.value === placeholder ) {
-                               $input.addClass( 'placeholder' ).val( placeholder );
+               placeholder = prototype.placeholder = function(text) {
+                       var $this = this,
+                               hasArgs = arguments.length;
+
+                       if(hasArgs) {
+                               changePlaceholder.call(this, text);
                        }
 
-                       $input
-                               // Show on blur if empty
-                               .blur( function () {
-                                       if ( this.value === '' ) {
-                                               this.value = placeholder;
-                                               $input.addClass( 'placeholder' );
-                                       }
-                               } )
-
-                               // Hide on focus
-                               // Also listen for other events in case $input was
-                               // already focused when the events were bound
-                               .on( 'focus drop keydown paste', function ( e ) {
-                                       if ( $input.hasClass( 'placeholder' ) ) {
-                                               if ( e.type === 'drop' && e.originalEvent.dataTransfer ) {
-                                                       // Support for drag&drop. Instead of inserting the dropped
-                                                       // text somewhere in the middle of the placeholder string,
-                                                       // we want to set the contents of the search box to the
-                                                       // dropped text.
-
-                                                       // IE wants getData( 'text' ) but Firefox wants getData( 'text/plain' )
-                                                       // Firefox fails gracefully with an empty string, IE barfs with an error
-                                                       try {
-                                                               // Try the Firefox way
-                                                               this.value = e.originalEvent.dataTransfer.getData( 'text/plain' );
-                                                       } catch ( exception ) {
-                                                               // Got an exception, so use the IE way
-                                                               this.value = e.originalEvent.dataTransfer.getData( 'text' );
-                                                       }
-
-                                                       // On Firefox, drop fires after the dropped text has been inserted,
-                                                       // but on IE it fires before. If we don't prevent the default action,
-                                                       // IE will insert the dropped text twice.
-                                                       e.preventDefault();
-                                               } else {
-                                                       this.value = '';
-                                               }
-                                               $input.removeClass( 'placeholder' );
+
+                       $this
+                               .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
+                               .filter(function() {
+                                       return !$(this).data('placeholder-enabled');
+                               })
+                               .bind({
+                                       'focus.placeholder drop.placeholder': clearPlaceholder,
+                                       'blur.placeholder': setPlaceholder
+                               })
+                               .data('placeholder-enabled', true)
+                               .trigger('blur.placeholder');
+                       return $this;
+               };
+
+               placeholder.input = isInputSupported;
+               placeholder.textarea = isTextareaSupported;
+
+               hooks = {
+                       'get': function(element) {
+                               var $element = $(element),
+                                       $passwordInput = $element.data('placeholder-password');
+                               if ($passwordInput) {
+                                       return $passwordInput[0].value;
+                               }
+
+                               return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
+                       },
+                       'set': function(element, value) {
+                               var $element = $(element),
+                                       $passwordInput = $element.data('placeholder-password');
+                               if ($passwordInput) {
+                                       $passwordInput[0].value = value;
+                                       return value;
+                               }
+
+                               if (!$element.data('placeholder-enabled')) {
+                                       element.value = value;
+                                       return value;
+                               }
+                               if (!value) {
+                                       element.value = value;
+                                       // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
+                                       if (element !== safeActiveElement()) {
+                                               // We can't use `triggerHandler` here because of dummy text/password inputs :(
+                                               setPlaceholder.call(element);
                                        }
-                               } );
-
-                       // Blank on submit -- prevents submitting with unintended value
-                       if ( this.form ) {
-                               $( this.form ).submit( function () {
-                                       // $input.trigger( 'focus' ); would be problematic
-                                       // because it actually focuses $input, leading
-                                       // to nasty behavior in mobile browsers
-                                       if ( $input.hasClass( 'placeholder' ) ) {
-                                               $input
-                                                       .val( '' )
-                                                       .removeClass( 'placeholder' );
+                               } else if ($element.hasClass('placeholder')) {
+                                       if(!clearPlaceholder.call(element, true, value)) {
+                                               element.value = value;
                                        }
-                               });
+                               } else {
+                                       element.value = value;
+                               }
+                               // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
+                               return $element;
                        }
+               };
+
+               if (!isInputSupported) {
+                       valHooks.input = hooks;
+                       propHooks.value = hooks;
+               }
+               if (!isTextareaSupported) {
+                       valHooks.textarea = hooks;
+                       propHooks.value = hooks;
+               }
+
+               $(function() {
+                       // Look for forms
+                       $(document).delegate('form', 'submit.placeholder', function() {
+                               // Clear the placeholder values so they don't get submitted
+                               var $inputs = $('.placeholder', this).each(clearPlaceholder);
+                               setTimeout(function() {
+                                       $inputs.each(setPlaceholder);
+                               }, 10);
+                       });
+               });
 
+               // Clear placeholder values upon page reload
+               $(window).bind('beforeunload.placeholder', function() {
+                       $('.placeholder').each(function() {
+                               this.value = '';
+                       });
                });
-       };
 
-}( jQuery ) );
+       }
+
+       function args(elem) {
+               // Return an object of element attributes
+               var newAttrs = {},
+                       rinlinejQuery = /^jQuery\d+$/;
+               $.each(elem.attributes, function(i, attr) {
+                       if (attr.specified && !rinlinejQuery.test(attr.name)) {
+                               newAttrs[attr.name] = attr.value;
+                       }
+               });
+               return newAttrs;
+       }
+
+       function clearPlaceholder(event, value) {
+               var input = this,
+                       $input = $(input);
+               if (input.value === $input.attr('placeholder') && $input.hasClass('placeholder')) {
+                       if ($input.data('placeholder-password')) {
+                               $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
+                               // If `clearPlaceholder` was called from `$.valHooks.input.set`
+                               if (event === true) {
+                                       $input[0].value = value;
+                                       return value;
+                               }
+                               $input.focus();
+                       } else {
+                               input.value = '';
+                               $input.removeClass('placeholder');
+                               if(input === safeActiveElement()) {
+                                       input.select();
+                               }
+                       }
+               }
+       }
+
+       function setPlaceholder() {
+               var $replacement,
+                       input = this,
+                       $input = $(input),
+                       id = this.id;
+               if (!input.value) {
+                       if (input.type === 'password') {
+                               if (!$input.data('placeholder-textinput')) {
+                                       try {
+                                               $replacement = $input.clone().attr({ 'type': 'text' });
+                                       } catch(e) {
+                                               $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
+                                       }
+                                       $replacement
+                                               .removeAttr('name')
+                                               .data({
+                                                       'placeholder-password': $input,
+                                                       'placeholder-id': id
+                                               })
+                                               .bind('focus.placeholder drop.placeholder', clearPlaceholder);
+                                       $input
+                                               .data({
+                                                       'placeholder-textinput': $replacement,
+                                                       'placeholder-id': id
+                                               })
+                                               .before($replacement);
+                               }
+                               $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
+                               // Note: `$input[0] != input` now!
+                       }
+                       $input.addClass('placeholder');
+                       $input[0].value = $input.attr('placeholder');
+               } else {
+                       $input.removeClass('placeholder');
+               }
+       }
+
+       function safeActiveElement() {
+               // Avoid IE9 `document.activeElement` of death
+               // https://github.com/mathiasbynens/jquery-placeholder/pull/99
+               try {
+                       return document.activeElement;
+               } catch (err) {}
+       }
+
+       function changePlaceholder(text) {
+               var hasArgs = arguments.length,
+                       $input = this;
+               if(hasArgs) {
+                       if($input.attr('placeholder') !== text) {
+                               $input.prop('placeholder', text);
+                               if($input.hasClass('placeholder')) {
+                                       $input[0].value = text;
+                               }
+                       }
+               }
+       }
+
+}(jQuery));
index 27dabc6..073fb3d 100644 (file)
                /**
                 * Create a spinner element
                 *
-                * The argument is an object with options used to construct the spinner. These can be:
+                * The argument is an object with options used to construct the spinner (see below).
                 *
-                * It is a good practice to keep a reference to the created spinner to be able to remove it later.
-                * Alternatively one can use the id option and #removeSpinner (but make sure to choose an id
-                * that's unlikely to cause conflicts, e.g. with extensions, gadgets or user scripts).
+                * It is a good practice to keep a reference to the created spinner to be able to remove it
+                * later. Alternatively, one can use the 'id' option and #removeSpinner (but make sure to choose
+                * an id that's unlikely to cause conflicts, e.g. with extensions, gadgets or user scripts).
                 *
                 * CSS classes used:
+                *
                 * - .mw-spinner for every spinner
                 * - .mw-spinner-small / .mw-spinner-large for size
                 * - .mw-spinner-block / .mw-spinner-inline for display types
                 *
-                *   // Create a large spinner reserving all available horizontal space.
-                *   var $spinner = $.createSpinner({ size: 'large', type: 'block' });
-                *   // Insert above page content.
-                *   $( '#mw-content-text' ).prepend( $spinner );
+                * Example:
+                *
+                *     // Create a large spinner reserving all available horizontal space.
+                *     var $spinner = $.createSpinner({ size: 'large', type: 'block' });
+                *     // Insert above page content.
+                *     $( '#mw-content-text' ).prepend( $spinner );
                 *
-                *   // Place a small inline spinner next to the "Save" button
-                *   var $spinner = $.createSpinner({ size: 'small', type: 'inline' });
-                *   // Alternatively, just `$.createSpinner();` as these are the default options.
-                *   $( '#wpSave' ).after( $spinner );
+                *     // Place a small inline spinner next to the "Save" button
+                *     var $spinner = $.createSpinner({ size: 'small', type: 'inline' });
+                *     // Alternatively, just `$.createSpinner();` as these are the default options.
+                *     $( '#wpSave' ).after( $spinner );
                 *
-                *   // The following two are equivalent:
-                *   $.createSpinner( 'magic' );
-                *   $.createSpinner({ id: 'magic' });
+                *     // The following two are equivalent:
+                *     $.createSpinner( 'magic' );
+                *     $.createSpinner({ id: 'magic' });
                 *
                 * @static
                 * @inheritable
-                * @param {Object|string} [opts] ID string or options:
-                *  - id: If given, spinner will be given an id of "mw-spinner-{id}"
-                *  - size: 'small' (default) or 'large' for a 20-pixel or 32-pixel spinner
-                *  - type: 'inline' (default) or 'block'. Inline creates an inline-block with width and
-                *    height equal to spinner size. Block is a block-level element with width 100%, height
-                *    equal to spinner size.
+                * @param {Object|string} [opts] Options. If a string is given, it will be treated as the value
+                *   of the `id` option. If an object is given, the possible option keys are:
+                * @param {string} [opts.id] If given, spinner will be given an id of "mw-spinner-{id}".
+                * @param {string} [opts.size='small'] 'small' or 'large' for a 20-pixel or 32-pixel spinner.
+                * @param {string} [opts.type='inline'] 'inline' or 'block'. Inline creates an inline-block with
+                *   width and height equal to spinner size. Block is a block-level element with width 100%,
+                *   height equal to spinner size.
                 * @return {jQuery}
                 */
                createSpinner: function ( opts ) {
@@ -90,7 +94,7 @@
        /**
         * Inject a spinner after each element in the collection
         *
-        * Inserts spinner as siblings, not children, of the target elements.
+        * Inserts spinner as siblings (not children) of the target elements.
         * Collection contents remain unchanged.
         *
         * @param {Object|string} [opts] See #createSpinner
index 5cbb1ee..609b2dd 100644 (file)
@@ -2,7 +2,6 @@
  * JavaScript for Create account form (Special:UserLogin?type=signup).
  */
 ( function ( mw, $ ) {
-
        // When sending password by email, hide the password input fields.
        // This function doesn't need to be loaded early by ResourceLoader, but is tiny.
        function hidePasswordOnEmail() {
@@ -34,9 +33,8 @@
 
        // Move the FancyCaptcha image into a more attractive container.
        // This function does need to be run early by ResourceLoader.
-       function adjustFancyCaptcha() {
-               var $content = $( '#mw-content-text' ),
-                       $submit = $content.find( '#wpCreateaccount' ),
+       function adjustFancyCaptcha( $content, buttonSubmit ) {
+               var $submit = $content.find( buttonSubmit ),
                        tabIndex,
                        $captchaStuff,
                        $captchaImageContainer,
        }
 
        $( function () {
-               adjustFancyCaptcha();
-               hidePasswordOnEmail();
+               // Checks if the current page is Special:UserLogin
+               var isLogin = false,
+                       $content = $( '#mw-content-text' ),
+                       buttonSubmit = '#wpCreateaccount';
+
+               if ( $content.find( buttonSubmit ).length === 0 ) {
+                       buttonSubmit = '#wpLoginAttempt';
+                       isLogin = true;
+               }
+
+               adjustFancyCaptcha( $content, buttonSubmit );
+
+               if ( !isLogin ) {
+                       hidePasswordOnEmail();
+               }
+
        } );
 
 }( mediaWiki, jQuery ) );
index 24c8d77..cf9eaa0 100644 (file)
        width: auto;
        display: inline-block;
 }
+
+/**** shuffled CAPTCHA ****/
+#wpCaptchaWord {
+       margin-top: 6px;
+}
+
+.mw-createacct-captcha-container {
+       background-color: #f8f8f8;
+       border: 1px solid #c9c9c9;
+       padding: 10px;
+       text-align: center;
+}
+
+.mw-createacct-captcha-assisted {
+       display: block;
+       margin-top: 0.5em;
+}
+
+/* Put a border around the fancycaptcha-image-container. */
+.mw-createacct-captcha-and-reload {
+       border: 1px solid #c9c9c9;
+       display: table-cell; /* Other display formats end up too wide */
+       width: 270px;
+       background-color: #FFF;
+}
+
+/* Make the fancycaptcha-image-container full-width within its parent.  */
+.fancycaptcha-image-container
+{
+       width: 100%;
+}
index e1031c6..de2d013 100644 (file)
                                title.indexOf( '../' ) === 0 ||
                                title.indexOf( '/./' ) !== -1 ||
                                title.indexOf( '/../' ) !== -1 ||
-                               title.substr( -2 ) === '/.' ||
-                               title.substr( -3 ) === '/..'
+                               title.substr( title.length - 2 ) === '/.' ||
+                               title.substr( title.length - 3 ) === '/..'
                        )
                ) {
                        return false;
diff --git a/skins/.gitignore b/skins/.gitignore
new file mode 100644 (file)
index 0000000..143a107
--- /dev/null
@@ -0,0 +1,11 @@
+*
+!cologneblue
+!CologneBlue.php
+!common
+!modern
+!Modern.php
+!monobook
+!MonoBook.php
+!vector
+!Vector.php
+!.gitignore
diff --git a/tests/phpunit/data/cssmin/green.gif b/tests/phpunit/data/cssmin/green.gif
new file mode 100644 (file)
index 0000000..f9e7531
Binary files /dev/null and b/tests/phpunit/data/cssmin/green.gif differ
diff --git a/tests/phpunit/data/cssmin/large.png b/tests/phpunit/data/cssmin/large.png
new file mode 100644 (file)
index 0000000..64bf48a
Binary files /dev/null and b/tests/phpunit/data/cssmin/large.png differ
diff --git a/tests/phpunit/data/cssmin/red.gif b/tests/phpunit/data/cssmin/red.gif
new file mode 100644 (file)
index 0000000..13c43e9
Binary files /dev/null and b/tests/phpunit/data/cssmin/red.gif differ
index 8ea9c68..bf7fb21 100644 (file)
@@ -7,5 +7,5 @@ $result = array( 'xmp-exif' =>
                'GPSLatitude' => 88.51805555,
                'GPSLongitude' => -21.12356945,
                'GPSVersionID' => '2.2.0.0'
-        )
+       )
 );
diff --git a/tests/phpunit/includes/LinkFilterTest.php b/tests/phpunit/includes/LinkFilterTest.php
new file mode 100644 (file)
index 0000000..41207b7
--- /dev/null
@@ -0,0 +1,274 @@
+<?php
+
+/**
+ * @group Database
+ */
+class LinkFilterTest extends MediaWikiLangTestCase {
+
+       protected function setUp() {
+
+               parent::setUp();
+
+               $this->setMwGlobals( 'wgUrlProtocols', array(
+                       'http://',
+                       'https://',
+                       'ftp://',
+                       'irc://',
+                       'ircs://',
+                       'gopher://',
+                       'telnet://',
+                       'nntp://',
+                       'worldwind://',
+                       'mailto:',
+                       'news:',
+                       'svn://',
+                       'git://',
+                       'mms://',
+                       '//',
+               ) );
+
+       }
+
+       /**
+        * createRegexFromLike($like)
+        *
+        * Takes an array as created by LinkFilter::makeLikeArray() and creates a regex from it
+        *
+        * @param Array $like Array as created by LinkFilter::makeLikeArray()
+        * @return string Regex
+        */
+       function createRegexFromLIKE( $like ) {
+
+               $regex = '!^';
+
+               foreach ( $like as $item ) {
+
+                       if ( $item instanceof LikeMatch ) {
+                               if ( $item->toString() == '%' ) {
+                                       $regex .= '.*';
+                               } elseif ( $item->toString() == '_' ) {
+                                       $regex .= '.';
+                               }
+                       } else {
+                               $regex .= preg_quote( $item, '!' );
+                       }
+
+               }
+
+               $regex .= '$!';
+
+               return $regex;
+
+       }
+
+       /**
+        * provideValidPatterns()
+        *
+        * @return array
+        */
+       public static function provideValidPatterns() {
+
+               return array(
+                       // Protocol, Search pattern, URL which matches the pattern
+                       array( 'http://', '*.test.com', 'http://www.test.com' ),
+                       array( 'http://', 'test.com:8080/dir/file', 'http://name:pass@test.com:8080/dir/file' ),
+                       array( 'https://', '*.com', 'https://s.s.test..com:88/dir/file?a=1&b=2' ),
+                       array( 'https://', '*.com', 'https://name:pass@secure.com/index.html' ),
+                       array( 'http://', 'name:pass@test.com', 'http://test.com' ),
+                       array( 'http://', 'test.com', 'http://name:pass@test.com' ),
+                       array( 'http://', '*.test.com', 'http://a.b.c.test.com/dir/dir/file?a=6'),
+                       array( null, 'http://*.test.com', 'http://www.test.com' ),
+                       array( 'mailto:', 'name@mail.test123.com', 'mailto:name@mail.test123.com' ),
+                       array( '',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
+                       ),
+                       array( '', 'http://name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( '', 'http://name:wrongpass@*.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( 'http://', 'name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( '', 'http://name:pass@www.test.com:12345',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( 'ftp://', 'user:pass@ftp.test.com:1233/home/user/file;type=efw',
+                               'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
+                       array( null, 'ftp://otheruser:otherpass@ftp.test.com:1233/home/user/file;type=',
+                               'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
+                       array( null, 'ftp://@ftp.test.com:1233/home/user/file;type=',
+                               'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
+                       array( null, 'ftp://ftp.test.com/',
+                               'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ),
+                       array( null, 'ftp://ftp.test.com/',
+                               'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ),
+                       array( null, 'ftp://*.test.com:222/',
+                               'ftp://user:pass@ftp.test.com:222/home' ),
+                       array( 'irc://', '*.myserver:6667/', 'irc://test.myserver:6667/' ),
+                       array( 'irc://', 'name:pass@*.myserver/', 'irc://test.myserver:6667/' ),
+                       array( 'irc://', 'name:pass@*.myserver/', 'irc://other:@test.myserver:6667/' ),
+                       array( '', 'irc://test/name,string,abc?msg=t', 'irc://test/name,string,abc?msg=test' ),
+                       array( '', 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z',
+                               'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ),
+                       array( '', 'https://gerrit.wikimedia.org',
+                               'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ),
+                       array( 'mailto:', '*.test.com', 'mailto:name@pop3.test.com' ),
+                       array( 'mailto:', 'test.com', 'mailto:name@test.com' ),
+                       array( 'news:', 'test.1234afc@news.test.com', 'news:test.1234afc@news.test.com' ),
+                       array( 'news:', '*.test.com', 'news:test.1234afc@news.test.com' ),
+                       array( '', 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com',
+                               'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ),
+                       array( '', 'news:*.aol.com',
+                               'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ),
+                       array( '', 'git://github.com/prwef/abc-def.git', 'git://github.com/prwef/abc-def.git' ),
+                       array( 'git://', 'github.com/', 'git://github.com/prwef/abc-def.git' ),
+                       array( 'git://', '*.github.com/', 'git://a.b.c.d.e.f.github.com/prwef/abc-def.git' ),
+                       array( '', 'gopher://*.test.com/', 'gopher://gopher.test.com/0/v2/vstat'),
+                       array( 'telnet://', '*.test.com', 'telnet://shell.test.com/~home/'),
+
+                       //
+                       // The following only work in PHP >= 5.3.7, due to a bug in parse_url which eats
+                       // the path from the url (https://bugs.php.net/bug.php?id=54180)
+                       //
+                       // array( '', 'http://test.com', 'http://test.com/index?arg=1' ),
+                       // array( 'http://', '*.test.com', 'http://www.test.com/index?arg=1' ),
+                       // array( '' ,
+                       //    'http://xx23124:__ffdfdef__@www.test.com:12345/dir' ,
+                       //    'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
+                       // ),
+                       //
+
+                       //
+                       // Tests for false positives
+                       //
+                       array( 'http://', 'test.com', 'http://www.test.com', false ),
+                       array( 'http://', 'www1.test.com', 'http://www.test.com', false ),
+                       array( 'http://', '*.test.com', 'http://www.test.t.com', false ),
+                       array( '', 'http://test.com:8080', 'http://www.test.com:8080', false ),
+                       array( '', 'https://test.com', 'http://test.com', false ),
+                       array( '', 'http://test.com', 'https://test.com', false ),
+                       array( 'http://', 'http://test.com', 'http://test.com', false ),
+                       array( null, 'http://www.test.com', 'http://www.test.com:80', false ),
+                       array( null, 'http://www.test.com:80', 'http://www.test.com', false ),
+                       array( null, 'http://*.test.com:80', 'http://www.test.com', false ),
+                       array( '', 'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z',
+                               'https://gerrit.wikimedia.org/r/#/q/status:open,n,z', false ),
+                       array( '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
+                               'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z', false ),
+                       array( 'mailto:', '@test.com', '@abc.test.com', false ),
+                       array( 'mailto:', 'mail@test.com', 'mail2@test.com', false ),
+                       array( '', 'mailto:mail@test.com', 'mail2@test.com', false ),
+                       array( '', 'mailto:@test.com', '@abc.test.com', false ),
+                       array( 'ftp://', '*.co', 'ftp://www.co.uk', false ),
+                       array( 'ftp://', '*.co', 'ftp://www.co.m', false ),
+                       array( 'ftp://', '*.co/dir/', 'ftp://www.co/dir2/', false ),
+                       array( 'ftp://', 'www.co/dir/', 'ftp://www.co/dir2/', false ),
+                       array( 'ftp://', 'test.com/dir/', 'ftp://test.com/', false ),
+                       array( '', 'http://test.com:8080/dir/', 'http://test.com:808/dir/', false ),
+                       array( '', 'http://test.com/dir/index.html', 'http://test.com/dir/index.php', false ),
+
+                       //
+                       // These are false positives too and ideally shouldn't match, but that
+                       // would require using regexes and RLIKE instead of LIKE
+                       //
+                       // array( null, 'http://*.test.com', 'http://www.test.com:80', false ),
+                       // array( '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
+                       //      'https://gerrit.wikimedia.org/XXX/r/#/q/status:open,n,z', false ),
+               );
+
+       }
+
+       /**
+        * testMakeLikeArrayWithValidPatterns()
+        *
+        * Tests whether the LIKE clause produced by LinkFilter::makeLikeArray($pattern, $protocol)
+        * will find one of the URL indexes produced by wfMakeUrlIndexes($url)
+        *
+        * @dataProvider provideValidPatterns
+        *
+        * @param String $protocol Protocol, e.g. 'http://' or 'mailto:'
+        * @param String $pattern Search pattern to feed to LinkFilter::makeLikeArray
+        * @param String $url URL to feed to wfMakeUrlIndexes
+        * @param bool $shouldBeFound Should the URL be found? (defaults true)
+        */
+       function testMakeLikeArrayWithValidPatterns( $protocol, $pattern, $url, $shouldBeFound = true ) {
+
+               $indexes = wfMakeUrlIndexes( $url );
+               $likeArray = LinkFilter::makeLikeArray( $pattern, $protocol );
+
+               $this->assertTrue( $likeArray !== false,
+                       "LinkFilter::makeLikeArray('$pattern', '$protocol') returned false on a valid pattern"
+               );
+
+               $regex = $this->createRegexFromLIKE( $likeArray );
+               $debugmsg = "Regex: '" . $regex . "'\n";
+               $debugmsg .= count( $indexes ) . " index(es) created by wfMakeUrlIndexes():\n";
+
+               $matches = 0;
+
+               foreach ( $indexes as $index ) {
+                       $matches += preg_match( $regex, $index );
+                       $debugmsg .= "\t'$index'\n";
+               }
+
+               if ( $shouldBeFound ) {
+                       $this->assertTrue(
+                               $matches > 0,
+                               "Search pattern '$protocol$pattern' does not find url '$url' \n$debugmsg"
+                       );
+               } else {
+                       $this->assertFalse(
+                               $matches > 0,
+                               "Search pattern '$protocol$pattern' should not find url '$url' \n$debugmsg"
+                       );
+               }
+
+       }
+
+       /**
+        * provideInvalidPatterns()
+        *
+        * @return array
+        */
+       public static function provideInvalidPatterns() {
+
+               return array(
+                       array( '' ),
+                       array( '*' ),
+                       array( 'http://*' ),
+                       array( 'http://*/' ),
+                       array( 'http://*/dir/file' ),
+                       array( 'test.*.com' ),
+                       array( 'http://test.*.com' ),
+                       array( 'test.*.com' ),
+                       array( 'http://*.test.*' ),
+                       array( 'http://*test.com' ),
+                       array( 'https://*' ),
+                       array( '*://test.com'),
+                       array( 'mailto:name:pass@t*est.com' ),
+                       array( 'http://*:888/'),
+                       array( '*http://'),
+                       array( 'test.com/*/index' ),
+                       array( 'test.com/dir/index?arg=*' ),
+               );
+
+       }
+
+       /**
+        * testMakeLikeArrayWithInvalidPatterns()
+        *
+        * Tests whether LinkFilter::makeLikeArray($pattern) will reject invalid search patterns
+        *
+        * @dataProvider provideInvalidPatterns
+        *
+        * @param $pattern string: Invalid search pattern
+        */
+       function testMakeLikeArrayWithInvalidPatterns( $pattern ) {
+
+               $this->assertFalse(
+                       LinkFilter::makeLikeArray( $pattern ),
+                       "'$pattern' is not a valid pattern and should be rejected"
+               );
+
+       }
+
+}
index 3dec2da..5841bb6 100644 (file)
@@ -81,9 +81,9 @@ class PreferencesTest extends MediaWikiTestCase {
        protected function prefsFor( $user_key ) {
                $preferences = array();
                Preferences::profilePreferences(
-                       $this->prefUsers[$user_key]
-                       , $this->context
-                       $preferences
+                       $this->prefUsers[$user_key],
+                       $this->context,
+                       $preferences
                );
 
                return $preferences;
diff --git a/tests/phpunit/includes/ResourceLoaderModuleTest.php b/tests/phpunit/includes/ResourceLoaderModuleTest.php
new file mode 100644 (file)
index 0000000..4643319
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+class ResourceLoaderModuleTest extends MediaWikiTestCase {
+
+       protected static function getResourceLoaderContext() {
+               $resourceLoader = new ResourceLoader();
+               $request = new FauxRequest( array(
+                               'debug' => 'false',
+                               'lang' => 'en',
+                               'modules' => 'startup',
+                               'only' => 'scripts',
+                               'skin' => 'vector',
+               ) );
+               return new ResourceLoaderContext( $resourceLoader, $request );
+       }
+
+       /**
+        * @covers ResourceLoaderModule::getDefinitionSummary
+        * @covers ResourceLoaderFileModule::getDefinitionSummary
+        */
+       public function testDefinitionSummary() {
+               $context = self::getResourceLoaderContext();
+
+               $baseParams = array(
+                       'scripts' => array( 'foo.js', 'bar.js' ),
+                       'dependencies' => array( 'jquery', 'mediawiki' ),
+                       'messages' => array( 'hello', 'world' ),
+               );
+
+               $module = new ResourceLoaderFileModule( $baseParams );
+
+               $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
+
+               // Exactly the same
+               $module = new ResourceLoaderFileModule( $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Instance is insignificant'
+               );
+
+               // Re-order dependencies
+               $module = new ResourceLoaderFileModule( array(
+                       'dependencies' => array( 'mediawiki', 'jquery' ),
+               ) + $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of dependencies is insignificant'
+               );
+
+               // Re-order messages
+               $module = new ResourceLoaderFileModule( array(
+                       'messages' => array( 'world', 'hello' ),
+               ) + $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of messages is insignificant'
+               );
+
+               // Re-order scripts
+               $module = new ResourceLoaderFileModule( array(
+                       'scripts' => array( 'bar.js', 'foo.js' ),
+               ) + $baseParams );
+
+               $this->assertNotEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of scripts is significant'
+               );
+
+               // Subclass
+               $module = new ResourceLoaderFileModuleTestModule( $baseParams );
+
+               $this->assertNotEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Class is significant'
+               );
+       }
+}
+
+class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {}
index 90ef553..7e275a5 100644 (file)
@@ -56,7 +56,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                }
        }
 
-       public function tearDown() {
+       protected function tearDown() {
                global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
 
                parent::tearDown();
index a29d527..65057a5 100644 (file)
@@ -10,7 +10,7 @@
  */
 class SpecialPageTest extends MediaWikiTestCase {
 
-       public function setUp() {
+       protected function setUp() {
                parent::setUp();
 
                $this->setMwGlobals( array(
index 8ed2189..30a554e 100644 (file)
@@ -413,7 +413,7 @@ class StatusTest extends MediaWikiLangTestCase {
         */
        public function testGetErrorMessage() {
                $method = new ReflectionMethod( 'Status', 'getErrorMessage' );
-               $method->setAccessible(true);
+               $method->setAccessible( true );
                $status = new Status();
                $key = 'foo';
                $params = array( 'bar' );
@@ -430,7 +430,7 @@ class StatusTest extends MediaWikiLangTestCase {
         */
        public function testGetErrorMessageArray() {
                $method = new ReflectionMethod( 'Status', 'getErrorMessageArray' );
-               $method->setAccessible(true);
+               $method->setAccessible( true );
                $status = new Status();
                $key = 'foo';
                $params = array( 'bar' );
@@ -446,7 +446,7 @@ class StatusTest extends MediaWikiLangTestCase {
 
                $this->assertInternalType( 'array', $messageArray );
                $this->assertCount( 2, $messageArray );
-               foreach( $messageArray as $message ) {
+               foreach ( $messageArray as $message ) {
                        $this->assertInstanceOf( 'Message', $message );
                        $this->assertEquals( $key, $message->getKey() );
                        $this->assertEquals( $params, $message->getParams() );
index 3079d73..55a17ac 100644 (file)
@@ -9,7 +9,7 @@
  */
 class TitleMethodsTest extends MediaWikiTestCase {
 
-       public function setUp() {
+       protected function setUp() {
                global $wgContLang;
 
                parent::setUp();
@@ -33,7 +33,7 @@ class TitleMethodsTest extends MediaWikiTestCase {
                $wgContLang->resetNamespaces(); # reset namespace cache
        }
 
-       public function tearDown() {
+       protected function tearDown() {
                global $wgContLang;
 
                parent::tearDown();
index c0bf1b7..0a6607e 100644 (file)
@@ -13,7 +13,7 @@
  */
 class ApiEditPageTest extends ApiTestCase {
 
-       public function setUp() {
+       protected function setUp() {
                global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
 
                parent::setUp();
@@ -30,7 +30,7 @@ class ApiEditPageTest extends ApiTestCase {
                $this->doLogin();
        }
 
-       public function tearDown() {
+       protected function tearDown() {
                global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
 
                unset( $wgExtraNamespaces[12312] );
index 54f3598..e7203c9 100644 (file)
@@ -152,7 +152,8 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
        private static function GetItems( $q, $moduleName, $name, &$print ) {
                if ( isset( $q[$moduleName] ) ) {
                        $print[] = "*$name/[" . implode( ',',
-                               array_map( function ( $v ) {
+                               array_map(
+                                       function ( $v ) {
                                                return $v['title'];
                                        },
                                        $q[$moduleName] ) ) . ']';
index aedf594..d1c214a 100644 (file)
@@ -10,7 +10,7 @@
  */
 class ContentHandlerTest extends MediaWikiTestCase {
 
-       public function setUp() {
+       protected function setUp() {
                global $wgContLang;
                parent::setUp();
 
@@ -38,7 +38,7 @@ class ContentHandlerTest extends MediaWikiTestCase {
                $wgContLang->resetNamespaces();
        }
 
-       public function tearDown() {
+       protected function tearDown() {
                global $wgContLang;
 
                // Reset namespace cache
index 7c62dca..73b975b 100644 (file)
@@ -10,7 +10,7 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
         */
        var $handler;
 
-       public function setUp() {
+       protected function setUp() {
                parent::setUp();
 
                $this->handler = ContentHandler::getForModelID( CONTENT_MODEL_WIKITEXT );
index 5c3f36a..f95eb5e 100644 (file)
@@ -16,7 +16,7 @@ class DifferenceEngineTest extends MediaWikiTestCase {
 
        private static $revisions;
 
-       public function setUp() {
+       protected function setUp() {
                parent::setUp();
 
                $title = $this->getTitle();
diff --git a/tests/phpunit/includes/jobqueue/RefreshLinksPartitionTest.php b/tests/phpunit/includes/jobqueue/RefreshLinksPartitionTest.php
new file mode 100644 (file)
index 0000000..531a954
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @group JobQueue
+ * @group medium
+ * @group Database
+ */
+class RefreshLinksPartitionTest extends MediaWikiTestCase {
+       function __construct( $name = null, array $data = array(), $dataName = '' ) {
+               parent::__construct( $name, $data, $dataName );
+
+               $this->tablesUsed[] = 'page';
+               $this->tablesUsed[] = 'revision';
+               $this->tablesUsed[] = 'pagelinks';
+       }
+
+       /**
+        * @dataProvider provider_backlinks
+        */
+       public function testRefreshLinks( $ns, $dbKey, $pages ) {
+               $title = Title::makeTitle( $ns, $dbKey );
+
+               $dbw = wfGetDB( DB_MASTER );
+
+               $rows = array();
+               foreach ( $pages as $page ) {
+                       list( $bns, $bdbkey ) = $page;
+                       $bpage = WikiPage::factory( Title::makeTitle( $bns, $bdbkey ) );
+                       $content = ContentHandler::makeContent( "[[{$title->getPrefixedText()}]]", $bpage->getTitle() );
+                       $bpage->doEditContent( $content, "test" );
+               }
+
+               $title->getBacklinkCache()->clear();
+               $this->assertEquals( 20, $title->getBacklinkCache()->getNumLinks( 'pagelinks' ), 'Correct number of backlinks' );
+
+               $job = new RefreshLinksJob( $title, array( 'recursive' => true, 'table' => 'pagelinks' )
+                       + Job::newRootJobParams( "refreshlinks:pagelinks:{$title->getPrefixedText()}" ) );
+               $extraParams = $job->getRootJobParams();
+               $jobs = BacklinkJobUtils::partitionBacklinkJob( $job, 9, 1, array( 'params' => $extraParams ) );
+
+               $this->assertEquals( 10, count( $jobs ), 'Correct number of sub-jobs' );
+               $this->assertEquals( $pages[0], current( $jobs[0]->params['pages'] ),
+                       'First job is leaf job with proper title' );
+               $this->assertEquals( $pages[8], current( $jobs[8]->params['pages'] ),
+                       'Last leaf job is leaf job with proper title' );
+               $this->assertEquals( true, isset( $jobs[9]->params['recursive'] ),
+                       'Last job is recursive sub-job' );
+               $this->assertEquals( true, $jobs[9]->params['recursive'],
+                       'Last job is recursive sub-job' );
+               $this->assertEquals( true, is_array( $jobs[9]->params['range'] ),
+                       'Last job is recursive sub-job' );
+               $this->assertEquals( $title->getPrefixedText(), $jobs[0]->getTitle()->getPrefixedText(),
+                       'Base job title retainend in leaf job' );
+               $this->assertEquals( $title->getPrefixedText(), $jobs[9]->getTitle()->getPrefixedText(),
+                       'Base job title retainend recursive sub-job' );
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs[0]->params['rootJobSignature'],
+                       'Leaf job has root params' );
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs[9]->params['rootJobSignature'],
+                       'Recursive sub-job has root params' );
+
+               $jobs2 = BacklinkJobUtils::partitionBacklinkJob( $jobs[9], 9, 1, array( 'params' => $extraParams ) );
+
+               $this->assertEquals( 10, count( $jobs2 ), 'Correct number of sub-jobs' );
+               $this->assertEquals( $pages[9], current( $jobs2[0]->params['pages'] ),
+                       'First job is leaf job with proper title' );
+               $this->assertEquals( $pages[17], current( $jobs2[8]->params['pages'] ),
+                       'Last leaf job is leaf job with proper title' );
+               $this->assertEquals( true, isset( $jobs2[9]->params['recursive'] ),
+                       'Last job is recursive sub-job' );
+               $this->assertEquals( true, $jobs2[9]->params['recursive'],
+                       'Last job is recursive sub-job' );
+               $this->assertEquals( true, is_array( $jobs2[9]->params['range'] ),
+                       'Last job is recursive sub-job' );
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs2[0]->params['rootJobSignature'],
+                       'Leaf job has root params' );
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs2[9]->params['rootJobSignature'],
+                       'Recursive sub-job has root params' );
+
+               $jobs3 = BacklinkJobUtils::partitionBacklinkJob( $jobs2[9], 9, 1, array( 'params' => $extraParams ) );
+
+               $this->assertEquals( 2, count( $jobs3 ), 'Correct number of sub-jobs' );
+               $this->assertEquals( $pages[18], current( $jobs3[0]->params['pages'] ),
+                       'First job is leaf job with proper title' );
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs3[0]->params['rootJobSignature'],
+                       'Leaf job has root params' );
+               $this->assertEquals( $pages[19], current( $jobs3[1]->params['pages'] ),
+                       'Last job is leaf job with proper title' );
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs3[1]->params['rootJobSignature'],
+                       'Last leaf job has root params' );
+       }
+
+       public static function provider_backlinks() {
+               $pages = array();
+               for ( $i = 0; $i < 20; ++$i ) {
+                       $pages[] = array( 0, "Page-$i" );
+               }
+               return array(
+                       array( 10, 'Bang', $pages )
+               );
+       }
+}
index 43df5eb..5bbc3a5 100644 (file)
@@ -69,6 +69,8 @@ class CSSMinTest extends MediaWikiTestCase {
        }
 
        /**
+        * This tests funky parameters to CSSMin::remap. testRemapRemapping tests the basic functionality.
+        *
         * @dataProvider provideRemapCases
         * @covers CSSMin::remap
         */
@@ -111,6 +113,114 @@ class CSSMinTest extends MediaWikiTestCase {
                );
        }
 
+       /**
+        * This tests basic functionality of CSSMin::remap. testRemapRemapping tests funky parameters.
+        *
+        * @dataProvider provideRemapRemappingCases
+        * @covers CSSMin::remap
+        */
+       public function testRemapRemapping( $message, $input, $expectedOutput ) {
+               $localPath = __DIR__ . '/../../data/cssmin/';
+               $remotePath = 'http://localhost/w/';
+
+               $realOutput = CSSMin::remap( $input, $localPath, $remotePath );
+
+               $this->assertEquals(
+                       $expectedOutput,
+                       preg_replace( '/\d+-\d+-\d+T\d+:\d+:\d+Z/', 'timestamp', $realOutput ),
+                       "CSSMin::remap: $message"
+               );
+       }
+
+       public static function provideRemapRemappingCases() {
+               // red.gif and green.gif are one-pixel 35-byte GIFs.
+               // large.png is a 35K PNG that should be non-embeddable.
+               // Full paths start with http://localhost/w/.
+               // Timestamps in output are replaced with 'timestamp'.
+
+               // data: URIs for red.gif and green.gif
+               $red   = 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs=';
+               $green = 'data:image/gif;base64,R0lGODlhAQABAIAAAACAADAAACwAAAAAAQABAAACAkQBADs=';
+
+               return array(
+                       array(
+                               'Regular file',
+                               'foo { background: url(red.gif); }',
+                               'foo { background: url(http://localhost/w/red.gif?timestamp); }',
+                       ),
+                       array(
+                               'Remote URL',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                       ),
+                       array(
+                               'Embedded file',
+                               'foo { /* @embed */ background: url(red.gif); }',
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Can not embed remote URLs',
+                               'foo { /* @embed */ background: url(http://example.org/w/foo.png); }',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                       ),
+                       array(
+                               'Embedded file (inline @embed)',
+                               'foo { background: /* @embed */ url(red.gif); }',
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Can not embed large files',
+                               'foo { /* @embed */ background: url(large.png); }',
+                               "foo { background: url(http://localhost/w/large.png?timestamp); }",
+                       ),
+                       array(
+                               'Two regular files in one rule',
+                               'foo { background: url(red.gif), url(green.gif); }',
+                               'foo { background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp); }',
+                       ),
+                       array(
+                               'Two embedded files in one rule',
+                               'foo { /* @embed */ background: url(red.gif), url(green.gif); }',
+                               "foo { background: url($red), url($green); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Two embedded files in one rule (inline @embed)',
+                               'foo { background: /* @embed */ url(red.gif), /* @embed */ url(green.gif); }',
+                               "foo { background: url($red), url($green); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Two embedded files in one rule (inline @embed), one too large',
+                               'foo { background: /* @embed */ url(red.gif), /* @embed */ url(large.png); }',
+                               "foo { background: url($red), url(http://localhost/w/large.png?timestamp); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/large.png?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Practical example with some noise',
+                               'foo { /* @embed */ background: #f9f9f9 url(red.gif) 0 0 no-repeat; }',
+                               "foo { background: #f9f9f9 url($red) 0 0 no-repeat; background: #f9f9f9 url(http://localhost/w/red.gif?timestamp) 0 0 no-repeat!ie; }",
+                       ),
+                       array(
+                               'Does not mess with other properties',
+                               'foo { color: red; background: url(red.gif); font-size: small; }',
+                               'foo { color: red; background: url(http://localhost/w/red.gif?timestamp); font-size: small; }',
+                       ),
+                       array(
+                               'Spacing and miscellanea not changed (1)',
+                               'foo {   background:    url(red.gif);  }',
+                               'foo {   background:    url(http://localhost/w/red.gif?timestamp);  }',
+                       ),
+                       array(
+                               'Spacing and miscellanea not changed (2)',
+                               'foo {background:url(red.gif)}',
+                               'foo {background:url(http://localhost/w/red.gif?timestamp)}',
+                       ),
+                       array(
+                               'Spaces within url() parentheses are ignored',
+                               'foo { background: url( red.gif ); }',
+                               'foo { background: url(http://localhost/w/red.gif?timestamp); }',
+                       ),
+               );
+       }
+
        /**
         * Seperated because they are currently broken (bug 35492)
         *
index b28ee56..e0fae71 100644 (file)
@@ -1,5 +1,6 @@
 <?php
-class SVGTest extends MediaWikiTestCase {
+
+class SvgTest extends MediaWikiTestCase {
 
        protected function setUp() {
                parent::setUp();
@@ -19,7 +20,7 @@ class SVGTest extends MediaWikiTestCase {
                        'backend' => $this->backend
                ) );
 
-               $this->handler = new SVGHandler;
+               $this->handler = new SvgHandler;
        }
 
        /**
index d2ab4d3..12aac69 100644 (file)
@@ -4,7 +4,8 @@
  * @group Parser
  */
 class TidyTest extends MediaWikiTestCase {
-       public function setUp() {
+
+       protected function setUp() {
                parent::setUp();
                $check = MWTidy::tidy( '' );
                if ( strpos( $check, '<!--' ) !== false ) {
index 17e883f..4ccf5d7 100644 (file)
@@ -46,12 +46,12 @@ class SpecialSearchTest extends MediaWikiTestCase {
                        array( /** Expected: */
                                'ProfileName' => $expectedProfile,
                                'Namespaces' => $expectedNS,
-                       )
-                       array( /** Actual: */
+                       ),
+                       array( /** Actual: */
                                'ProfileName' => $search->getProfile(),
                                'Namespaces' => $search->getNamespaces(),
-                       )
-                       $message
+                       ),
+                       $message
                );
        }
 
index d5822f4..97a17ec 100644 (file)
@@ -79,12 +79,13 @@ class LanguageBe_taraskTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( 'one', 'other', '0=one' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        public static function providePluralTwoForms() {
                return array(
+                       array( 'one', 0 ),
                        array( 'one', 1 ),
                        array( 'other', 11 ),
                        array( 'other', 91 ),
index 0783fcf..1d81bc5 100644 (file)
@@ -17,6 +17,17 @@ class LanguageUkTest extends LanguageClassesTestCase {
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
+       /**
+        * Test explicit plural forms - n=FormN forms
+        * @covers Language::convertPlural
+        */
+       public function testExplicitPlural() {
+               $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+               $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
+               $forms = array( 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' );
+               $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
+       }
+
        /**
         * @dataProvider providePlural
         * @covers Language::getPluralRuleType
index fc06ee4..7d33a59 100644 (file)
@@ -90,6 +90,11 @@ class SideBarTest extends MediaWikiLangTestCase {
         * @covers SkinTemplate::addToSidebarPlain
         */
        public function testExternalUrlsRequireADescription() {
+               $this->setMwGlobals( array(
+                       'wgNoFollowLinks' => true,
+                       'wgNoFollowDomainExceptions' => array(),
+                       'wgNoFollowNsExceptions' => array(),
+               ) );
                $this->assertSidebar(
                        array( 'Title' => array(
                                # ** http://www.mediawiki.org/| Home
@@ -162,6 +167,8 @@ class SideBarTest extends MediaWikiLangTestCase {
        public function testTestAttributesAssertionHelper() {
                $this->setMwGlobals( array(
                        'wgNoFollowLinks' => true,
+                       'wgNoFollowDomainExceptions' => array(),
+                       'wgNoFollowNsExceptions' => array(),
                        'wgExternalLinkTarget' => false,
                ) );
                $attribs = $this->getAttribs();
index c874375..01fedc8 100644 (file)
@@ -19,6 +19,7 @@ return array(
                        'tests/qunit/suites/resources/jquery/jquery.localize.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js',
+                       'tests/qunit/suites/resources/jquery/jquery.placeholder.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.tabIndex.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.textSelection.test.js',
@@ -49,6 +50,7 @@ return array(
                        'jquery.localize',
                        'jquery.makeCollapsible',
                        'jquery.mwExtension',
+                       'jquery.placeholder',
                        'jquery.tabIndex',
                        'jquery.tablesorter',
                        'jquery.textSelection',
diff --git a/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js b/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js
new file mode 100644 (file)
index 0000000..ca0ea67
--- /dev/null
@@ -0,0 +1,145 @@
+(function($) {
+
+       QUnit.module('jquery.placeholder', QUnit.newMwEnvironment());
+
+       QUnit.test('caches results of feature tests', 2, function(assert) {
+               assert.strictEqual(typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input');
+               assert.strictEqual(typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea');
+       });
+
+       if ($.fn.placeholder.input && $.fn.placeholder.textarea) {
+               return;
+       }
+
+       var html = '<form>' +
+                       '<input id="input-type-search" type="search" placeholder="Search this site...">' +
+                       '<input id="input-type-text" type="text" placeholder="e.g. John Doe">' +
+                       '<input id="input-type-email" type="email" placeholder="e.g. address@example.ext">' +
+                       '<input id="input-type-url" type="url" placeholder="e.g. http://mathiasbynens.be/">' +
+                       '<input id="input-type-tel" type="tel" placeholder="e.g. +32 472 77 69 88">' +
+                       '<input id="input-type-password" type="password" placeholder="e.g. hunter2">' +
+                       '<textarea id="textarea" name="message" placeholder="Your message goes here"></textarea>' +
+               '</form>',
+       testElement = function($el, assert) {
+
+               var el = $el[0],
+                       placeholder = el.getAttribute('placeholder');
+
+               assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+               // test on focus
+               $el.focus();
+               assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+
+               // and unfocus (blur) again
+               $el.blur();
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+               // change the value
+               $el.val('lorem ipsum');
+               assert.strictEqual($el.prop('value'), 'lorem ipsum', '`$el.val(string)` should change the `value` property');
+               assert.strictEqual(el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute');
+               assert.ok(!$el.hasClass('placeholder'), '`$el.val(string)` should remove `placeholder` class');
+
+               // and clear it again
+               $el.val('');
+               assert.strictEqual($el.prop('value'), '', '`$el.val("")` should change the `value` property');
+               assert.strictEqual(el.value, placeholder, '`$el.val("")` should change the `value` attribute');
+               assert.ok($el.hasClass('placeholder'), '`$el.val("")` should re-enable `placeholder` class');
+
+               // make sure the placeholder property works as expected.
+               assert.strictEqual($el.prop('placeholder'), placeholder, '$el.prop(`placeholder`) should return the placeholder value');
+               $el.placeholder('new placeholder');
+               assert.strictEqual(el.getAttribute('placeholder'), 'new placeholder', '$el.placeholder(<string>) should set the placeholder value');
+               assert.strictEqual(el.value, 'new placeholder', '$el.placeholder(<string>) should update the displayed placeholder value');
+               $el.placeholder(placeholder);
+       };
+
+       QUnit.test('emulates placeholder for <input type=text>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-text'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=search>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-search'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=email>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-email'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=url>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-url'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=tel>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-tel'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=password>', 13, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+
+               var selector = '#input-type-password',
+                       $el = $(selector),
+                       el = $el[0],
+                       placeholder = el.getAttribute('placeholder');
+
+               assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+
+               // Re-select the element, as it gets replaced by another one in some browsers
+               $el = $(selector);
+               el = $el[0];
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+               // test on focus
+               $el.focus();
+
+               // Re-select the element, as it gets replaced by another one in some browsers
+               $el = $(selector);
+               el = $el[0];
+
+               assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+
+               // and unfocus (blur) again
+               $el.blur();
+
+               // Re-select the element, as it gets replaced by another one in some browsers
+               $el = $(selector);
+               el = $el[0];
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+       });
+
+       QUnit.test('emulates placeholder for <textarea></textarea>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#textarea'), assert);
+       });
+
+}(jQuery));