Merge "Set visibility on class properties in LocalFile.php"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 4 Dec 2013 09:20:19 +0000 (09:20 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 4 Dec 2013 09:20:19 +0000 (09:20 +0000)
510 files changed:
.gitignore
RELEASE-NOTES-1.23
docs/hooks.txt
img_auth.php
includes/Article.php
includes/AutoLoader.php
includes/Block.php
includes/ChangeTags.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/MimeMagic.php
includes/Namespace.php
includes/OutputPage.php
includes/Pager.php
includes/Preferences.php
includes/ProtectionForm.php
includes/Revision.php
includes/Setup.php
includes/SkinTemplate.php
includes/SpecialPageFactory.php
includes/Status.php
includes/StreamFile.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebRequest.php
includes/Wiki.php
includes/Xml.php
includes/actions/HistoryAction.php
includes/api/ApiFeedContributions.php
includes/api/ApiMain.php
includes/api/ApiParse.php
includes/api/ApiQueryFileRepoInfo.php
includes/api/ApiQueryRecentChanges.php
includes/cache/BacklinkCache.php
includes/cache/FileCacheBase.php
includes/cache/LinkCache.php
includes/cache/LocalisationCache.php
includes/cache/MapCacheLRU.php [new file with mode: 0644]
includes/cache/UserCache.php
includes/changes/EnhancedChangesList.php
includes/content/TextContentHandler.php
includes/db/Database.php
includes/deferred/LinksUpdate.php
includes/externalstore/ExternalStore.php
includes/externalstore/ExternalStoreDB.php
includes/externalstore/ExternalStoreMedium.php
includes/externalstore/ExternalStoreMwstore.php
includes/filebackend/FSFileBackend.php
includes/filebackend/FileBackend.php
includes/filebackend/FileBackendStore.php
includes/filebackend/FileOp.php
includes/filebackend/SwiftFileBackend.php
includes/filerepo/FileRepo.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/ForeignDBRepo.php
includes/filerepo/ForeignDBViaLBRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/ArchivedFile.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/filerepo/file/UnregisteredLocalFile.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/LocalSettingsGenerator.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/JobQueue.php
includes/job/JobQueueDB.php
includes/job/JobQueueFederated.php
includes/job/JobQueueGroup.php
includes/job/JobQueueRedis.php
includes/job/aggregator/JobQueueAggregator.php
includes/job/aggregator/JobQueueAggregatorMemc.php
includes/job/aggregator/JobQueueAggregatorRedis.php
includes/job/jobs/AssembleUploadChunksJob.php
includes/job/jobs/DoubleRedirectJob.php
includes/job/jobs/DuplicateJob.php
includes/job/jobs/EmaillingJob.php
includes/job/jobs/EnotifNotifyJob.php
includes/job/jobs/HTMLCacheUpdateJob.php
includes/job/jobs/NullJob.php
includes/job/jobs/PublishStashedFileJob.php
includes/job/jobs/RefreshLinksJob.php
includes/job/jobs/RefreshLinksJob2.php [new file with mode: 0644]
includes/job/jobs/UploadFromUrlJob.php
includes/job/utils/BacklinkJobUtils.php [new file with mode: 0644]
includes/json/FormatJson.php
includes/libs/CSSMin.php
includes/logging/DeleteLogFormatter.php
includes/logging/LogEntry.php
includes/logging/LogEventsList.php
includes/logging/LogFormatter.php
includes/logging/LogPage.php
includes/logging/LogPager.php
includes/logging/MoveLogFormatter.php
includes/logging/NewUsersLogFormatter.php
includes/logging/PatrolLog.php
includes/logging/PatrolLogFormatter.php
includes/logging/RightsLogFormatter.php
includes/media/ExifBitmap.php
includes/media/FormatMetadata.php
includes/media/GIFMetadataExtractor.php
includes/media/IPTC.php
includes/media/MediaHandler.php
includes/media/XCF.php
includes/media/XMP.php
includes/objectcache/MemcachedClient.php
includes/objectcache/RedisBagOStuff.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/ResourceLoaderUserGroupsModule.php
includes/resourceloader/ResourceLoaderUserModule.php
includes/resourceloader/ResourceLoaderUserOptionsModule.php
includes/resourceloader/ResourceLoaderUserTokensModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/specials/SpecialContributions.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialWatchlist.php
includes/templates/NoLocalSettings.php
includes/upload/UploadBase.php
includes/utils/Cdb.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/LanguageRu.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/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAk.php
languages/messages/MessagesAln.php
languages/messages/MessagesAm.php
languages/messages/MessagesAn.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArn.php
languages/messages/MessagesAry.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAvk.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBho.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBo.php
languages/messages/MessagesBpy.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/MessagesCh.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCu.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesDtp.php
languages/messages/MessagesDv.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/MessagesExt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGa.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGom_latn.php
languages/messages/MessagesGrc.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesGv.php
languages/messages/MessagesHak.php
languages/messages/MessagesHaw.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHil.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/MessagesIg.php
languages/messages/MessagesIlo.php
languages/messages/MessagesInh.php
languages/messages/MessagesIo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKoi.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKw.php
languages/messages/MessagesKy.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLfn.php
languages/messages/MessagesLg.php
languages/messages/MessagesLi.php
languages/messages/MessagesLij.php
languages/messages/MessagesLiv.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLo.php
languages/messages/MessagesLoz.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLtg.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMai.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.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/MessagesMwl.php
languages/messages/MessagesMy.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNah.php
languages/messages/MessagesNan.php
languages/messages/MessagesNap.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesNso.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPam.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPdc.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPnt.php
languages/messages/MessagesPrg.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSco.php
languages/messages/MessagesSd.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSei.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSli.php
languages/messages/MessagesSo.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTcy.php
languages/messages/MessagesTe.php
languages/messages/MessagesTet.php
languages/messages/MessagesTg_cyrl.php
languages/messages/MessagesTg_latn.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTo.php
languages/messages/MessagesTpi.php
languages/messages/MessagesTr.php
languages/messages/MessagesTru.php
languages/messages/MessagesTs.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVmf.php
languages/messages/MessagesVo.php
languages/messages/MessagesVot.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesXmf.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZea.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/getConfiguration.php
maintenance/importTextFile.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/mctest.php
maintenance/nextJobDB.php
maintenance/parse.php
maintenance/pruneFileCache.php
maintenance/rebuildImages.php
maintenance/storage/compressOld.php
maintenance/storage/fixBug20757.php
maintenance/update.php
maintenance/updateCollation.php
maintenance/userDupes.inc
maintenance/userOptions.inc
maintenance/userOptions.php
resources/Resources.php
resources/jquery/jquery.makeCollapsible.css
resources/jquery/jquery.makeCollapsible.js
resources/jquery/jquery.placeholder.js
resources/jquery/jquery.spinner.js
resources/mediawiki.language/mediawiki.language.js
resources/mediawiki.page/mediawiki.page.image.pagination.js
resources/mediawiki.special/mediawiki.special.changeslist.css
resources/mediawiki.special/mediawiki.special.createAccount.js
resources/mediawiki.special/mediawiki.special.userLogin.css
resources/mediawiki.ui/components/default/buttons.less
resources/mediawiki.ui/mixins/forms.less
resources/mediawiki/mediawiki.Title.js
resources/mediawiki/mediawiki.js
skins/.gitignore [new file with mode: 0644]
skins/vector/collapsibleTabs.js
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/DiffHistoryBlobTest.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/ApiOptionsTest.php
tests/phpunit/includes/api/ApiTestCaseUpload.php
tests/phpunit/includes/api/ApiUploadTest.php
tests/phpunit/includes/api/RandomImageGenerator.php
tests/phpunit/includes/api/query/ApiQueryBasicTest.php
tests/phpunit/includes/api/query/ApiQueryContinue2Test.php
tests/phpunit/includes/api/query/ApiQueryContinueTest.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/LanguageRuTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/languages/LanguageUkTest.php
tests/phpunit/skins/SideBarTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
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..4697b4d 100644 (file)
@@ -39,6 +39,11 @@ production.
   hide their (unrelated) log entries.
 * Added $wgOpenSearchDefaultLimit defining the default number of entries to show
   on action=opensearch API call.
+* For namespaces with $wgNamespaceProtection (including the MediaWiki
+  namespace), the "protect" tab will be shown only if there are restriction
+  levels available that would restrict editing beyond what
+  $wgNamespaceProtection already applies. The protection form will offer only
+  those protection levels.
 
 === Bug fixes in 1.23 ===
 * (bug 41759) The "updated since last visit" markers (on history pages, recent
@@ -53,6 +58,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
@@ -60,6 +67,8 @@ production.
 * action=query&meta=filerepoinfo now returns additional information for each
   repo.
 * EditPage::spamPage() was deprecated since 1.17 and has been removed.
+* action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
+  MediaWiki 1.24.
 
 === Languages updated in 1.23===
 
index 834d008..15387f8 100644 (file)
@@ -2248,7 +2248,7 @@ $special: the special page object
   name/URL parameters. Each key maps to an associative array with a 'msg'
   (message key) and a 'default' value.
 
-'SpecialPage_initList': Called when setting up SpecialPage::$mList, use this
+'SpecialPage_initList': Called when setting up SpecialPageFactory::$list, use this
 hook to remove a core special page.
 $list: list (array) of core special pages
 
index c8759ec..2d2db9a 100644 (file)
@@ -52,7 +52,7 @@ wfImageAuthMain();
 wfLogProfilingData();
 
 function wfImageAuthMain() {
-       global $wgImgAuthPublicTest, $wgRequest;
+       global $wgImgAuthPublicTest, $wgImgAuthUrlPathMap, $wgRequest;
 
        // See if this is a public Wiki (no protections).
        if ( $wgImgAuthPublicTest
@@ -77,14 +77,32 @@ function wfImageAuthMain() {
 
        // Check for bug 28235: QUERY_STRING overriding the correct extension
        $whitelist = array();
-       $dotPos = strrpos( $path, '.' );
-       if ( $dotPos !== false ) {
-               $whitelist[] = substr( $path, $dotPos + 1 );
+       $extension = FileBackend::extensionFromPath( $path );
+       if ( $extension != '' ) {
+               $whitelist[] = $extension;
        }
        if ( !$wgRequest->checkUrlExtension( $whitelist ) ) {
                return;
        }
 
+       // Various extensions may have their own backends that need access.
+       // Check if there is a special backend and storage base path for this file.
+       foreach ( $wgImgAuthUrlPathMap as $prefix => $storageDir ) {
+               $prefix = rtrim( $prefix, '/' ) . '/'; // implicit trailing slash
+               if ( strpos( $path, $prefix ) === 0 ) {
+                       $be = FileBackendGroup::singleton()->backendFromPath( $storageDir );
+                       $filename = $storageDir . substr( $path, strlen( $prefix ) ); // strip prefix
+                       if ( $be->fileExists( array( 'src' => $filename ) ) ) {
+                               wfDebugLog( 'img_auth', "Streaming `" . $filename . "`." );
+                               $be->streamFile( array( 'src' => $filename ),
+                                       array( 'Cache-Control: private', 'Vary: Cookie' ) );
+                       } else {
+                               wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $filename );
+                       }
+                       return;
+               }
+       }
+
        // Get the local file repository
        $repo = RepoGroup::singleton()->getRepo( 'local' );
 
@@ -145,6 +163,7 @@ function wfForbidden( $msg1, $msg2 ) {
        $args = func_get_args();
        array_shift( $args );
        array_shift( $args );
+       $args = ( isset( $args[0] ) && is_array( $args[0] ) ) ? $args[0] : $args;
 
        $msgHdr = wfMessage( $msg1 )->escaped();
        $detailMsgKey = $wgImgAuthDetails ? $msg2 : 'badaccess-group0';
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..6ee62e0 100644 (file)
@@ -390,6 +390,7 @@ $wgAutoloadLocalClasses = array(
        'HTMLFileCache' => 'includes/cache/HTMLFileCache.php',
        'LinkBatch' => 'includes/cache/LinkBatch.php',
        'LinkCache' => 'includes/cache/LinkCache.php',
+       'MapCacheLRU' => 'includes/cache/MapCacheLRU.php',
        'MessageCache' => 'includes/cache/MessageCache.php',
        'ObjectFileCache' => 'includes/cache/ObjectFileCache.php',
        'ProcessCacheLRU' => 'includes/cache/ProcessCacheLRU.php',
@@ -657,11 +658,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 fd94bea..53f2955 100644 (file)
@@ -184,17 +184,19 @@ class ChangeTags {
 
                // Figure out which conditions can be done.
                if ( in_array( 'recentchanges', $tables ) ) {
-                       $join_cond = 'rc_id';
+                       $join_cond = 'ct_rc_id=rc_id';
                } elseif ( in_array( 'logging', $tables ) ) {
-                       $join_cond = 'log_id';
+                       $join_cond = 'ct_log_id=log_id';
                } elseif ( in_array( 'revision', $tables ) ) {
-                       $join_cond = 'rev_id';
+                       $join_cond = 'ct_rev_id=rev_id';
+               } elseif ( in_array( 'archive', $tables ) ) {
+                       $join_cond = 'ct_rev_id=ar_rev_id';
                } else {
                        throw new MWException( 'Unable to determine appropriate JOIN condition for tagging.' );
                }
 
                $fields['ts_tags'] = wfGetDB( DB_SLAVE )->buildGroupConcatField(
-                       ',', 'change_tag', 'ct_tag', "ct_$join_cond=$join_cond"
+                       ',', 'change_tag', 'ct_tag', $join_cond
                );
 
                if ( $wgUseTagFilter && $filter_tag ) {
@@ -202,7 +204,7 @@ class ChangeTags {
                        // Add an INNER JOIN on change_tag
 
                        $tables[] = 'change_tag';
-                       $join_conds['change_tag'] = array( 'INNER JOIN', "ct_$join_cond=$join_cond" );
+                       $join_conds['change_tag'] = array( 'INNER JOIN', $join_cond );
                        $conds['ct_tag'] = $filter_tag;
                }
        }
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..e9e4545 100644 (file)
@@ -361,6 +361,22 @@ $wgImgAuthDetails = false;
  */
 $wgImgAuthPublicTest = true;
 
+/**
+ * Map of relative URL directories to match to internal mwstore:// base storage paths.
+ * For img_auth.php requests, everything after "img_auth.php/" is checked to see
+ * if starts with any of the prefixes defined here. The prefixes should not overlap.
+ * The prefix that matches has a corresponding storage path, which the rest of the URL
+ * is assumed to be relative to. The file at that path (or a 404) is send to the client.
+ *
+ * Example:
+ * $wgImgAuthUrlPathMap['/timeline/'] = 'mwstore://local-fs/timeline-render/';
+ * The above maps ".../img_auth.php/timeline/X" to "mwstore://local-fs/timeline-render/".
+ * The name "local-fs" should correspond by name to an entry in $wgFileBackends.
+ *
+ * @see $wgFileBackends
+ */
+$wgImgAuthUrlPathMap = array();
+
 /**
  * File repository structures
  *
@@ -3811,13 +3827,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 +6073,7 @@ $wgHooks = array();
  */
 $wgJobClasses = array(
        'refreshLinks' => 'RefreshLinksJob',
-       'refreshLinks2' => 'RefreshLinksJob2',
+       'refreshLinks2' => 'RefreshLinksJob2', // b/c
        'htmlCacheUpdate' => 'HTMLCacheUpdateJob',
        'sendMail' => 'EmaillingJob',
        'enotifNotify' => 'EnotifNotifyJob',
@@ -6539,6 +6558,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..f86cae4 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;
@@ -2476,7 +2476,9 @@ class EditPage {
                        }
                }
 
-               if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+               if ( $this->mTitle->isProtected( 'edit' ) &&
+                       MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== array( '' )
+               ) {
                        # Is the title semi-protected?
                        if ( $this->mTitle->isSemiProtected() ) {
                                $noticeMsg = 'semiprotectedpagewarning';
@@ -2678,7 +2680,9 @@ HTML
                        $attribs = array( 'style' => 'display:none;' );
                } else {
                        $classes = array(); // Textarea CSS
-                       if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+                       if ( $this->mTitle->isProtected( 'edit' ) &&
+                               MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== array( '' )
+                       ) {
                                # Is the title semi-protected?
                                if ( $this->mTitle->isSemiProtected() ) {
                                        $classes[] = 'mw-textarea-sprotected';
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 ca0ca41..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;
@@ -2770,7 +2770,7 @@ function wfShellExecDisabled() {
  * @param array $environ optional environment variables which should be
  *                 added to the executed command environment.
  * @param array $limits optional array with limits(filesize, memory, time, walltime)
- *                 this overwrites the global wgShellMax* limits.
+ *                 this overwrites the global wgMaxShell* limits.
  * @param array $options Array of options:
  *    - duplicateStderr: Set this to true to duplicate stderr to stdout,
  *      including errors from limit.sh
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 8220e92..f5c28ab 100644 (file)
@@ -167,7 +167,7 @@ class MimeMagic {
 
        /** The singleton instance
         */
-       private static $instance;
+       private static $instance = null;
 
        /** Initializes the MimeMagic object. This is called by MimeMagic::singleton().
         *
@@ -336,7 +336,7 @@ class MimeMagic {
         * Get an instance of this class
         * @return MimeMagic
         */
-       public static function &singleton() {
+       public static function singleton() {
                if ( self::$instance === null ) {
                        self::$instance = new MimeMagic;
                }
index 5c8e63b..ce585ce 100644 (file)
@@ -433,4 +433,74 @@ class MWNamespace {
                        ? $wgNamespaceContentModels[$index]
                        : null;
        }
+
+       /**
+        * Determine which restriction levels it makes sense to use in a namespace,
+        * optionally filtered by a user's rights.
+        *
+        * @since 1.23
+        * @param int $index Index to check
+        * @param User $user User to check
+        * @return array
+        */
+       public static function getRestrictionLevels( $index, User $user = null ) {
+               global $wgNamespaceProtection, $wgRestrictionLevels;
+
+               if ( !isset( $wgNamespaceProtection[$index] ) ) {
+                       // All levels are valid if there's no namespace restriction.
+                       // But still filter by user, if necessary
+                       $levels = $wgRestrictionLevels;
+                       if ( $user ) {
+                               $levels = array_values( array_filter( $levels, function ( $level ) use ( $user ) {
+                                       $right = $level;
+                                       if ( $right == 'sysop' ) {
+                                               $right = 'editprotected'; // BC
+                                       }
+                                       if ( $right == 'autoconfirmed' ) {
+                                               $right = 'editsemiprotected'; // BC
+                                       }
+                                       return ( $right == '' || $user->isAllowed( $right ) );
+                               } ) );
+                       }
+                       return $levels;
+               }
+
+               // First, get the list of groups that can edit this namespace.
+               $namespaceGroups = array();
+               $combine = 'array_merge';
+               foreach ( (array)$wgNamespaceProtection[$index] as $right ) {
+                       if ( $right == 'sysop' ) {
+                               $right = 'editprotected'; // BC
+                       }
+                       if ( $right == 'autoconfirmed' ) {
+                               $right = 'editsemiprotected'; // BC
+                       }
+                       if ( $right != '' ) {
+                               $namespaceGroups = call_user_func( $combine, $namespaceGroups,
+                                       User::getGroupsWithPermission( $right ) );
+                               $combine = 'array_intersect';
+                       }
+               }
+
+               // Now, keep only those restriction levels where there is at least one
+               // group that can edit the namespace but would be blocked by the
+               // restriction.
+               $usableLevels = array( '' );
+               foreach ( $wgRestrictionLevels as $level ) {
+                       $right = $level;
+                       if ( $right == 'sysop' ) {
+                               $right = 'editprotected'; // BC
+                       }
+                       if ( $right == 'autoconfirmed' ) {
+                               $right = 'editsemiprotected'; // BC
+                       }
+                       if ( $right != '' && ( !$user || $user->isAllowed( $right ) ) &&
+                               array_diff( $namespaceGroups, User::getGroupsWithPermission( $right ) )
+                       ) {
+                               $usableLevels[] = $level;
+                       }
+               }
+
+               return $usableLevels;
+       }
 }
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 f10317a..d6cc8a3 100644 (file)
@@ -83,8 +83,8 @@ class ProtectionForm {
         */
        function loadData() {
                global $wgRequest, $wgUser;
-               global $wgRestrictionLevels;
 
+               $levels = MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace(), $wgUser );
                $this->mCascade = $this->mTitle->areRestrictionsCascading();
 
                $this->mReason = $wgRequest->getText( 'mwProtect-reason' );
@@ -132,21 +132,7 @@ class ProtectionForm {
                        }
 
                        $val = $wgRequest->getVal( "mwProtect-level-$action" );
-                       if ( isset( $val ) && in_array( $val, $wgRestrictionLevels ) ) {
-                               // Prevent users from setting levels that they cannot later unset
-                               if ( $val == 'sysop' ) {
-                                       // Special case, rewrite sysop to editprotected
-                                       if ( !$wgUser->isAllowed( 'editprotected' ) ) {
-                                               continue;
-                                       }
-                               } elseif ( $val == 'autoconfirmed' ) {
-                                       // Special case, rewrite autoconfirmed to editsemiprotected
-                                       if ( !$wgUser->isAllowed( 'editsemiprotected' ) ) {
-                                               continue;
-                                       }
-                               } elseif ( !$wgUser->isAllowed( $val ) ) {
-                                       continue;
-                               }
+                       if ( isset( $val ) && in_array( $val, $levels ) ) {
                                $this->mRestrictions[$action] = $val;
                        }
                }
@@ -189,7 +175,7 @@ class ProtectionForm {
        function execute() {
                global $wgRequest, $wgOut;
 
-               if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+               if ( MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) === array( '' ) ) {
                        throw new ErrorPageError( 'protect-badnamespace-title', 'protect-badnamespace-text' );
                }
 
@@ -556,28 +542,13 @@ class ProtectionForm {
         * @return String: HTML fragment
         */
        function buildSelector( $action, $selected ) {
-               global $wgRestrictionLevels, $wgUser;
-
-               $levels = array();
-               foreach ( $wgRestrictionLevels as $key ) {
-                       //don't let them choose levels above their own (aka so they can still unprotect and edit the page). but only when the form isn't disabled
-                       if ( $key == 'sysop' ) {
-                               //special case, rewrite sysop to editprotected
-                               if ( !$wgUser->isAllowed( 'editprotected' ) && !$this->disabled ) {
-                                       continue;
-                               }
-                       } elseif ( $key == 'autoconfirmed' ) {
-                               //special case, rewrite autoconfirmed to editsemiprotected
-                               if ( !$wgUser->isAllowed( 'editsemiprotected' ) && !$this->disabled ) {
-                                       continue;
-                               }
-                       } else {
-                               if ( !$wgUser->isAllowed( $key ) && !$this->disabled ) {
-                                       continue;
-                               }
-                       }
-                       $levels[] = $key;
-               }
+               global $wgUser;
+
+               // If the form is disabled, display all relevant levels. Otherwise,
+               // just show the ones this user can use.
+               $levels = MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace(),
+                       $this->disabled ? null : $wgUser
+               );
 
                $id = 'mwProtect-level-' . $action;
                $attribs = array(
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 2808cf9..da4c376 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 = '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() {
@@ -1027,7 +1039,9 @@ class SkinTemplate extends Skin {
                                        }
                                }
 
-                               if ( $title->getNamespace() !== NS_MEDIAWIKI && $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() ) {
+                               if ( $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() &&
+                                       MWNamespace::getRestrictionLevels( $title->getNamespace(), $user ) !== array( '' )
+                               ) {
                                        $mode = $title->isProtected() ? 'unprotect' : 'protect';
                                        $content_navigation['actions'][$mode] = array(
                                                'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
index 9542654..30eb129 100644 (file)
@@ -37,7 +37,7 @@
  * and bails out if not.
  *
  * To add a core special page, use the similar static list in
- * SpecialPage::$mList. To remove a core static special page at runtime, use
+ * SpecialPageFactory::$list. To remove a core static special page at runtime, use
  * a SpecialPage_initList hook.
  *
  * @ingroup SpecialPage
@@ -48,7 +48,7 @@ class SpecialPageFactory {
        /**
         * List of special page names to the subclass of SpecialPage which handles them.
         */
-       private static $mList = array(
+       private static $list = array(
                // Maintenance Reports
                'BrokenRedirects'           => 'BrokenRedirectsPage',
                'Deadendpages'              => 'DeadendpagesPage',
@@ -170,11 +170,10 @@ class SpecialPageFactory {
                'Userlogout'                => 'SpecialUserlogout',
        );
 
-       private static $mAliases;
+       private static $aliases;
 
        /**
-        * Initialise the special page list
-        * This must be called before accessing SpecialPage::$mList
+        * Get the special page list
         *
         * @return array
         */
@@ -183,43 +182,43 @@ class SpecialPageFactory {
                global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
                global $wgEnableEmail, $wgEnableJavaScriptTest;
 
-               if ( !is_object( self::$mList ) ) {
+               if ( !is_object( self::$list ) ) {
                        wfProfileIn( __METHOD__ );
 
                        if ( !$wgDisableCounters ) {
-                               self::$mList['Popularpages'] = 'PopularpagesPage';
+                               self::$list['Popularpages'] = 'PopularpagesPage';
                        }
 
                        if ( !$wgDisableInternalSearch ) {
-                               self::$mList['Search'] = 'SpecialSearch';
+                               self::$list['Search'] = 'SpecialSearch';
                        }
 
                        if ( $wgEmailAuthentication ) {
-                               self::$mList['Confirmemail'] = 'EmailConfirmation';
-                               self::$mList['Invalidateemail'] = 'EmailInvalidation';
+                               self::$list['Confirmemail'] = 'EmailConfirmation';
+                               self::$list['Invalidateemail'] = 'EmailInvalidation';
                        }
 
                        if ( $wgEnableEmail ) {
-                               self::$mList['ChangeEmail'] = 'SpecialChangeEmail';
+                               self::$list['ChangeEmail'] = 'SpecialChangeEmail';
                        }
 
                        if ( $wgEnableJavaScriptTest ) {
-                               self::$mList['JavaScriptTest'] = 'SpecialJavaScriptTest';
+                               self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
                        }
 
                        // Add extension special pages
-                       self::$mList = array_merge( self::$mList, $wgSpecialPages );
+                       self::$list = array_merge( self::$list, $wgSpecialPages );
 
                        // Run hooks
                        // This hook can be used to remove undesired built-in special pages
-                       wfRunHooks( 'SpecialPage_initList', array( &self::$mList ) );
+                       wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
 
                        // Cast to object: func()[$key] doesn't work, but func()->$key does
-                       settype( self::$mList, 'object' );
+                       settype( self::$list, 'object' );
 
                        wfProfileOut( __METHOD__ );
                }
-               return self::$mList;
+               return self::$list;
        }
 
        /**
@@ -231,28 +230,28 @@ class SpecialPageFactory {
         * @return Object
         */
        static function getAliasList() {
-               if ( !is_object( self::$mAliases ) ) {
+               if ( !is_object( self::$aliases ) ) {
                        global $wgContLang;
                        $aliases = $wgContLang->getSpecialPageAliases();
 
                        // Objects are passed by reference by default, need to create a copy
                        $missingPages = clone self::getList();
 
-                       self::$mAliases = array();
+                       self::$aliases = array();
                        foreach ( $aliases as $realName => $aliasList ) {
                                foreach ( $aliasList as $alias ) {
-                                       self::$mAliases[$wgContLang->caseFold( $alias )] = $realName;
+                                       self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
                                }
                                unset( $missingPages->$realName );
                        }
                        foreach ( $missingPages as $name => $stuff ) {
-                               self::$mAliases[$wgContLang->caseFold( $name )] = $name;
+                               self::$aliases[$wgContLang->caseFold( $name )] = $name;
                        }
 
                        // Cast to object: func()[$key] doesn't work, but func()->$key does
-                       self::$mAliases = (object)self::$mAliases;
+                       self::$aliases = (object)self::$aliases;
                }
-               return self::$mAliases;
+               return self::$aliases;
        }
 
        /**
index dc0bae0..5f5ca74 100644 (file)
  * so that a lack of error-handling will be explicit.
  */
 class Status {
+       /** @var bool */
        public $ok = true;
+
+       /** @var mixed  */
        public $value;
 
        /** Counters for batch operations */
+       /** @var int */
        public $successCount = 0;
+
+       /** @var int */
        public $failCount = 0;
 
        /** Array to indicate which items of the batch operations were successful */
+       /** @var array  */
        public $success = array();
 
+       /** @var array */
        public $errors = array();
+
+       /** @var callable */
        public $cleanCallback = false;
 
        /**
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 e492bd4..34db1d2 100644 (file)
@@ -558,7 +558,7 @@ class HistoryPager extends ReverseChronologicalPager {
         *
         * @todo document some more, and maybe clean up the code (some params redundant?)
         *
-        * @param stdObject $row The database row corresponding to the previous line.
+        * @param stdClass $row The database row corresponding to the previous line.
         * @param mixed $next The database row corresponding to the next line
         *   (chronologically previous)
         * @param bool|string $notificationtimestamp
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..829ba6f 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;
@@ -743,7 +744,11 @@ class ApiMain extends ApiBase {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
                        }
 
-                       if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() ) ) {
+                       if ( !$this->getUser()->matchEditToken(
+                               $moduleParams['token'],
+                               $salt,
+                               $this->getContext()->getRequest() )
+                       ) {
                                $this->dieUsageMsg( 'sessionfailure' );
                        }
                }
index ddc032d..88904c0 100644 (file)
@@ -532,6 +532,9 @@ class ApiParse extends ApiBase {
         */
        private function languagesHtml( $languages ) {
                wfDeprecated( __METHOD__, '1.18' );
+               $this->setWarning( '"action=parse&prop=languageshtml" is deprecated ' .
+                       'and will be removed in MediaWiki 1.24. Use "prop=langlinks" ' .
+                       'to generate your own HTML.' );
 
                global $wgContLang, $wgHideInterlanguageLinks;
 
@@ -716,7 +719,8 @@ class ApiParse extends ApiBase {
                                ' langlinks      - Gives the language links in the parsed wikitext',
                                ' categories     - Gives the categories in the parsed wikitext',
                                ' categorieshtml - Gives the HTML version of the categories',
-                               ' languageshtml  - Gives the HTML version of the language links',
+                               ' languageshtml  - DEPRECATED. Will be removed in MediaWiki 1.24.',
+                               '                  Gives the HTML version of the language links',
                                ' links          - Gives the internal links in the parsed wikitext',
                                ' templates      - Gives the templates in the parsed wikitext',
                                ' images         - Gives the images in the parsed wikitext',
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 b44565e..653feab 100644 (file)
@@ -198,7 +198,10 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        }
 
                        // Check permissions
-                       if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) || isset( $show['unpatrolled'] ) ) {
+                       if ( isset( $show['patrolled'] )
+                               || isset( $show['!patrolled'] )
+                               || isset( $show['unpatrolled'] )
+                       ) {
                                if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
                                        $this->dieUsage(
                                                'You need the patrol right to request the patrolled flag',
index 8eed1a5..d2ec26e 100644 (file)
@@ -156,10 +156,10 @@ class BacklinkCache {
 
        /**
         * Get the backlinks for a given table. Cached in process memory only.
-        * @param $table String
-        * @param $startId Integer|false
-        * @param $endId Integer|false
-        * @param $max Integer|INF
+        * @param string $table
+        * @param int|bool $startId
+        * @param int|bool $endId
+        * @param int|INF $max
         * @return TitleArrayFromResult
         */
        public function getLinks( $table, $startId = false, $endId = false, $max = INF ) {
@@ -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;
@@ -433,7 +426,7 @@ class BacklinkCache {
                        $cacheEntry['numRows'] += $partitions['numRows'];
                        $cacheEntry['batches'] = array_merge( $cacheEntry['batches'], $partitions['batches'] );
                        if ( count( $partitions['batches'] ) ) {
-                               list( $lStart, $lEnd ) = end( $partitions['batches'] );
+                               list( , $lEnd ) = end( $partitions['batches'] );
                                $start = $lEnd + 1; // pick up after this inclusive range
                        }
                } while ( $partitions['numRows'] >= $selectSize );
index d33f3f6..0c00c6b 100644 (file)
@@ -153,6 +153,7 @@ abstract class FileCacheBase {
 
        /**
         * Save and compress text to the cache
+        * @param string $text
         * @return string compressed text
         */
        public function saveText( $text ) {
index 0d706c0..de2a728 100644 (file)
@@ -78,6 +78,7 @@ class LinkCache {
        /**
         * General accessor to get/set whether SELECT FOR UPDATE should be used
         *
+        * @param $update
         * @return bool
         */
        public function forUpdate( $update = null ) {
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 ) {
diff --git a/includes/cache/MapCacheLRU.php b/includes/cache/MapCacheLRU.php
new file mode 100644 (file)
index 0000000..3539d8f
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Per-process memory cache for storing items.
+ *
+ * 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 Cache
+ */
+
+/**
+ * Handles a simple LRU key/value map with a maximum number of entries
+ *
+ * Use ProcessCacheLRU if hierarchical purging is needed or objects can become stale
+ *
+ * @see ProcessCacheLRU
+ * @ingroup Cache
+ */
+class MapCacheLRU {
+       /** @var Array */
+       protected $cache = array(); // (key => value)
+
+       protected $maxCacheKeys; // integer; max entries
+
+       /**
+        * @param $maxKeys integer Maximum number of entries allowed (min 1).
+        * @throws MWException When $maxCacheKeys is not an int or =< 0.
+        */
+       public function __construct( $maxKeys ) {
+               if ( !is_int( $maxKeys ) || $maxKeys < 1 ) {
+                       throw new MWException( __METHOD__ . " must be given an integer and >= 1" );
+               }
+               $this->maxCacheKeys = $maxKeys;
+       }
+
+       /**
+        * Set a key/value pair.
+        * This will prune the cache if it gets too large based on LRU.
+        * If the item is already set, it will be pushed to the top of the cache.
+        *
+        * @param $key string
+        * @param $value mixed
+        * @return void
+        */
+       public function set( $key, $value ) {
+               if ( isset( $this->cache[$key] ) ) {
+                       $this->ping( $key ); // push to top
+               } elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
+                       reset( $this->cache );
+                       $evictKey = key( $this->cache );
+                       unset( $this->cache[$evictKey] );
+               }
+               $this->cache[$key] = $value;
+       }
+
+       /**
+        * Get the value for a key.
+        * This returns null if the key is not set.
+        * If the item is already set, it will be pushed to the top of the cache.
+        *
+        * @param $key string
+        * @param $prop string
+        * @return mixed
+        */
+       public function get( $key ) {
+               if ( isset( $this->cache[$key] ) ) {
+                       $this->ping( $key ); // push to top
+                       return $this->cache[$key];
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Clear one or several cache entries, or all cache entries
+        *
+        * @param $keys string|Array
+        * @return void
+        */
+       public function clear( $keys = null ) {
+               if ( $keys === null ) {
+                       $this->cache = array();
+               } else {
+                       foreach ( (array)$keys as $key ) {
+                               unset( $this->cache[$key] );
+                       }
+               }
+       }
+
+       /**
+        * Push an entry to the top of the cache
+        *
+        * @param $key string
+        */
+       protected function ping( $key ) {
+               $item = $this->cache[$key];
+               unset( $this->cache[$key] );
+               $this->cache[$key] = $item;
+       }
+}
index 2e4c1e9..cea3bf2 100644 (file)
@@ -66,6 +66,7 @@ class UserCache {
         *
         * @param integer $userId
         * @param string $ip
+        * @return string
         * @since 1.22
         */
        public function getUserName( $userId, $ip ) {
index c8439be..1727da0 100644 (file)
@@ -57,14 +57,9 @@ class EnhancedChangesList extends ChangesList {
        public function recentChangesLine( &$baseRC, $watched = false ) {
                wfProfileIn( __METHOD__ );
 
-               # Create a specialised object
-               $cacheEntry = RCCacheEntry::newFromParent( $baseRC );
-
-               $curIdEq = array( 'curid' => $cacheEntry->mAttribs['rc_cur_id'] );
-
                # If it's a new day, add the headline and flush the cache
                $date = $this->getLanguage()->userDate(
-                       $cacheEntry->mAttribs['rc_timestamp'],
+                       $baseRC->mAttribs['rc_timestamp'],
                        $this->getUser()
                );
 
@@ -78,6 +73,11 @@ class EnhancedChangesList extends ChangesList {
                        $this->lastdate = $date;
                }
 
+               # Create a specialised object
+               $cacheEntry = RCCacheEntry::newFromParent( $baseRC );
+
+               $curIdEq = array( 'curid' => $cacheEntry->mAttribs['rc_cur_id'] );
+
                # Should patrol-related stuff be shown?
                $cacheEntry->unpatrolled = $this->showAsUnpatrolled( $cacheEntry );
 
index c4584ae..94b5c57 100644 (file)
  * @ingroup Content
  */
 class TextContentHandler extends ContentHandler {
+       // @codingStandardsIgnoreStart bug 57585
        public function __construct( $modelId = CONTENT_MODEL_TEXT,
                $formats = array( CONTENT_FORMAT_TEXT )
        ) {
                parent::__construct( $modelId, $formats );
        }
+       // @codingStandardsIgnoreEnd
 
        /**
         * Returns the content's text as-is.
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 462b0b9..9e9d976 100644 (file)
@@ -59,6 +59,7 @@ class ExternalStore {
                }
 
                $class = 'ExternalStore' . ucfirst( $proto );
+
                // Any custom modules should be added to $wgAutoLoadClasses for on-demand loading
                return class_exists( $class ) ? new $class( $params ) : false;
        }
@@ -120,6 +121,7 @@ class ExternalStore {
                                $retval[$url] = false;
                        }
                }
+
                return $retval;
        }
 
index 46a8937..b7e5469 100644 (file)
@@ -37,11 +37,12 @@ class ExternalStoreDB extends ExternalStoreMedium {
         */
        public function fetchFromURL( $url ) {
                list( $cluster, $id, $itemID ) = $this->parseURL( $url );
-               $ret =& $this->fetchBlob( $cluster, $id, $itemID );
+               $ret = $this->fetchBlob( $cluster, $id, $itemID );
 
                if ( $itemID !== false && $ret !== false ) {
                        return $ret->getItem( $itemID );
                }
+
                return $ret;
        }
 
@@ -66,6 +67,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                $ret = array();
                foreach ( $batched as $cluster => $batchByCluster ) {
                        $res = $this->batchFetchBlobs( $cluster, $batchByCluster );
+                       /** @var HistoryBlob $blob */
                        foreach ( $res as $id => $blob ) {
                                foreach ( $batchByCluster[$id] as $itemID ) {
                                        $url = $inverseUrlMap[$cluster][$id][$itemID];
@@ -77,6 +79,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                                }
                        }
                }
+
                return $ret;
        }
 
@@ -96,6 +99,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                if ( $dbw->getFlag( DBO_TRX ) ) {
                        $dbw->commit( __METHOD__ );
                }
+
                return "DB://$cluster/$id";
        }
 
@@ -105,7 +109,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster cluster name
         * @return LoadBalancer object
         */
-       function &getLoadBalancer( $cluster ) {
+       function getLoadBalancer( $cluster ) {
                $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false;
 
                return wfGetLBFactory()->getExternalLB( $cluster, $wiki );
@@ -117,11 +121,11 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster cluster name
         * @return DatabaseBase object
         */
-       function &getSlave( $cluster ) {
+       function getSlave( $cluster ) {
                global $wgDefaultExternalStore;
 
                $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false;
-               $lb =& $this->getLoadBalancer( $cluster );
+               $lb = $this->getLoadBalancer( $cluster );
 
                if ( !in_array( "DB://" . $cluster, (array)$wgDefaultExternalStore ) ) {
                        wfDebug( "read only external store" );
@@ -139,9 +143,10 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster cluster name
         * @return DatabaseBase object
         */
-       function &getMaster( $cluster ) {
+       function getMaster( $cluster ) {
                $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false;
-               $lb =& $this->getLoadBalancer( $cluster );
+               $lb = $this->getLoadBalancer( $cluster );
+
                return $lb->getConnection( DB_MASTER, array(), $wiki );
        }
 
@@ -151,11 +156,12 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param $db DatabaseBase
         * @return String: table name ('blobs' by default)
         */
-       function getTable( &$db ) {
+       function getTable( $db ) {
                $table = $db->getLBInfo( 'blobs table' );
                if ( is_null( $table ) ) {
                        $table = 'blobs';
                }
+
                return $table;
        }
 
@@ -169,7 +175,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @return mixed
         * @private
         */
-       function &fetchBlob( $cluster, $id, $itemID ) {
+       function fetchBlob( $cluster, $id, $itemID ) {
                /**
                 * One-step cache variable to hold base blobs; operations that
                 * pull multiple revisions may often pull multiple times from
@@ -182,20 +188,21 @@ class ExternalStoreDB extends ExternalStoreMedium {
                if ( isset( $externalBlobCache[$cacheID] ) ) {
                        wfDebugLog( 'ExternalStoreDB-cache',
                                "ExternalStoreDB::fetchBlob cache hit on $cacheID\n" );
+
                        return $externalBlobCache[$cacheID];
                }
 
                wfDebugLog( 'ExternalStoreDB-cache',
                        "ExternalStoreDB::fetchBlob cache miss on $cacheID\n" );
 
-               $dbr =& $this->getSlave( $cluster );
+               $dbr = $this->getSlave( $cluster );
                $ret = $dbr->selectField( $this->getTable( $dbr ),
                        'blob_text', array( 'blob_id' => $id ), __METHOD__ );
                if ( $ret === false ) {
                        wfDebugLog( 'ExternalStoreDB',
                                "ExternalStoreDB::fetchBlob master fallback on $cacheID\n" );
                        // Try the master
-                       $dbw =& $this->getMaster( $cluster );
+                       $dbw = $this->getMaster( $cluster );
                        $ret = $dbw->selectField( $this->getTable( $dbw ),
                                'blob_text', array( 'blob_id' => $id ), __METHOD__ );
                        if ( $ret === false ) {
@@ -208,7 +215,8 @@ class ExternalStoreDB extends ExternalStoreMedium {
                        $ret = unserialize( $ret );
                }
 
-               $externalBlobCache = array( $cacheID => &$ret );
+               $externalBlobCache = array( $cacheID => $ret );
+
                return $ret;
        }
 
@@ -217,7 +225,8 @@ class ExternalStoreDB extends ExternalStoreMedium {
         *
         * @param string $cluster A cluster name valid for use with LBFactory
         * @param array $ids A map from the blob_id's to look for to the requested itemIDs in the blobs
-        * @return array A map from the blob_id's requested to their content.  Unlocated ids are not represented
+        * @return array A map from the blob_id's requested to their content.
+        *   Unlocated ids are not represented
         */
        function batchFetchBlobs( $cluster, array $ids ) {
                $dbr = $this->getSlave( $cluster );
@@ -248,6 +257,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                                " master on '$cluster' failed locating items: " .
                                implode( ',', array_keys( $ids ) ) . "\n" );
                }
+
                return $ret;
        }
 
@@ -274,6 +284,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
 
        protected function parseURL( $url ) {
                $path = explode( '/', $url );
+
                return array(
                        $path[2], // cluster
                        $path[3], // id
index 6ab1f8c..a526df6 100644 (file)
@@ -64,6 +64,7 @@ abstract class ExternalStoreMedium {
                                $retval[$url] = $data;
                        }
                }
+
                return $retval;
        }
 
index 1721007..f329b73 100644 (file)
@@ -43,6 +43,7 @@ class ExternalStoreMwstore extends ExternalStoreMedium {
                        // backends should at least have "read-after-create" consistency.
                        return $be->getFileContents( array( 'src' => $url ) );
                }
+
                return false;
        }
 
@@ -66,6 +67,7 @@ class ExternalStoreMwstore extends ExternalStoreMedium {
                        $be = FileBackendGroup::singleton()->get( $backendName );
                        $blobs = $blobs + $be->getFileContentsMulti( array( 'srcs' => $paths ) );
                }
+
                return $blobs;
        }
 
@@ -90,6 +92,7 @@ class ExternalStoreMwstore extends ExternalStoreMedium {
                                return $url;
                        }
                }
+
                return false;
        }
 }
index 993e2ba..8438919 100644 (file)
@@ -229,7 +229,7 @@ class FSFileBackend extends FileBackendStore {
        /**
         * @see FSFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseCreate( $errors, Status $status, array $params, $cmd ) {
+       protected function getResponseCreate( $errors, Status $status, array $params, $cmd ) {
                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                        $status->fatal( 'backend-fail-create', $params['dst'] );
                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -276,7 +276,7 @@ class FSFileBackend extends FileBackendStore {
        /**
         * @see FSFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseStore( $errors, Status $status, array $params, $cmd ) {
+       protected function getResponseStore( $errors, Status $status, array $params, $cmd ) {
                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                        $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -340,7 +340,7 @@ class FSFileBackend extends FileBackendStore {
        /**
         * @see FSFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseCopy( $errors, Status $status, array $params, $cmd ) {
+       protected function getResponseCopy( $errors, Status $status, array $params, $cmd ) {
                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                        $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -397,7 +397,7 @@ class FSFileBackend extends FileBackendStore {
        /**
         * @see FSFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseMove( $errors, Status $status, array $params, $cmd ) {
+       protected function getResponseMove( $errors, Status $status, array $params, $cmd ) {
                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                        $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -445,7 +445,7 @@ class FSFileBackend extends FileBackendStore {
        /**
         * @see FSFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseDelete( $errors, Status $status, array $params, $cmd ) {
+       protected function getResponseDelete( $errors, Status $status, array $params, $cmd ) {
                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                        $status->fatal( 'backend-fail-delete', $params['src'] );
                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -712,7 +712,7 @@ class FSFileBackend extends FileBackendStore {
 
                foreach ( $fileOpHandles as $index => $fileOpHandle ) {
                        $status = Status::newGood();
-                       $function = '_getResponse' . $fileOpHandle->call;
+                       $function = 'getResponse' . $fileOpHandle->call;
                        $this->$function( $errs[$index], $status, $fileOpHandle->params, $fileOpHandle->cmd );
                        $statuses[$index] = $status;
                        if ( $status->isOK() && $fileOpHandle->chmodPath ) {
index d042dc4..a6eda18 100644 (file)
  * For legacy reasons, the FSFileBackend class allows manually setting the paths of
  * containers to ones that do not respect the "wiki ID".
  *
- * In key/value stores, the container is the only hierarchy (the rest is emulated).
+ * In key/value (object) stores, containers are the only hierarchy (the rest is emulated).
  * FS-based backends are somewhat more restrictive due to the existence of real
  * directory files; a regular file cannot have the same name as a directory. Other
  * backends with virtual directories may not have this limitation. Callers should
  * store files in such a way that no files and directories are under the same path.
  *
+ * In general, this class allows for callers to access storage through the same
+ * interface, without regard to the underlying storage system. However, calling code
+ * must follow certain patterns and be aware of certain things to ensure compatibility:
+ *   - a) Always call prepare() on the parent directory before trying to put a file there;
+ *        key/value stores only need the container to exist first, but filesystems need
+ *        all the parent directories to exist first (prepare() is aware of all this)
+ *   - b) Always call clean() on a directory when it might become empty to avoid empty
+ *        directory buildup on filesystems; key/value stores never have empty directories,
+ *        so doing this helps preserve consistency in both cases
+ *   - c) Likewise, do not rely on the existence of empty directories for anything;
+ *        calling directoryExists() on a path that prepare() was previously called on
+ *        will return false for key/value stores if there are no files under that path
+ *   - d) Never alter the resulting FSFile returned from getLocalReference(), as it could
+ *        either be a copy of the source file in /tmp or the original source file itself
+ *   - e) Use a file layout that results in never attempting to store files over directories
+ *        or directories over files; key/value stores allow this but filesystems do not
+ *   - f) Use ASCII file names (e.g. base32, IDs, hashes) to avoid Unicode issues in Windows
+ *   - g) Do not assume that move operations are atomic (difficult with key/value stores)
+ *   - h) Do not assume that file stat or read operations always have immediate consistency;
+ *        various methods have a "latest" flag that should always be used if up-to-date
+ *        information is required (this trades performance for correctness as needed)
+ *   - i) Do not assume that directory listings have immediate consistency
+ *
  * Methods of subclasses should avoid throwing exceptions at all costs.
  * As a corollary, external dependencies should be kept to a minimum.
  *
@@ -60,7 +83,7 @@
  * @since 1.19
  */
 abstract class FileBackend {
-       /** @var  string Unique backend name */
+       /** @var string Unique backend name */
        protected $name;
 
        /** @var string Unique wiki name */
index beca79e..2f3e0e2 100644 (file)
@@ -70,7 +70,7 @@ abstract class FileBackendStore extends FileBackend {
                        ? $config['mimeCallback']
                        : function ( $storagePath, $content, $fsPath ) {
                                // @TODO: handle the case of extension-less files using the contents
-                               return StreamFile::contentTypeFromPath( $storagePath ) ? : 'unknown/unknown';
+                               return StreamFile::contentTypeFromPath( $storagePath ) ?: 'unknown/unknown';
                        };
                $this->memCache = new EmptyBagOStuff(); // disabled by default
                $this->cheapCache = new ProcessCacheLRU( self::CACHE_CHEAP_SIZE );
@@ -1161,7 +1161,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return array List of corresponding Status objects
         */
        protected function doExecuteOpHandlesInternal( array $fileOpHandles ) {
-               foreach ( $fileOpHandles as $fileOpHandle ) { // OK if empty
+               if ( count( $fileOpHandles ) ) {
                        throw new MWException( "This backend supports no asynchronous operations." );
                }
 
index 538d9b4..82959d8 100644 (file)
@@ -645,7 +645,7 @@ class CopyFileOp extends FileOp {
                        $status = Status::newGood(); // nothing to do
                } elseif ( $this->params['src'] === $this->params['dst'] ) {
                        // Just update the destination file headers
-                       $headers = $this->getParam( 'headers' ) ? : array();
+                       $headers = $this->getParam( 'headers' ) ?: array();
                        $status = $this->backend->describeInternal( $this->setFlags( array(
                                'src' => $this->params['dst'], 'headers' => $headers
                        ) ) );
index c5111e2..dc2995f 100644 (file)
@@ -309,7 +309,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * @see SwiftFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseCreate( CF_Async_Op $cfOp, Status $status, array $params ) {
+       protected function getResponseCreate( CF_Async_Op $cfOp, Status $status, array $params ) {
                try {
                        $cfOp->getLastResponse();
                } catch ( BadContentTypeException $e ) {
@@ -397,7 +397,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * @see SwiftFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseStore( CF_Async_Op $cfOp, Status $status, array $params ) {
+       protected function getResponseStore( CF_Async_Op $cfOp, Status $status, array $params ) {
                try {
                        $cfOp->getLastResponse();
                } catch ( BadContentTypeException $e ) {
@@ -472,7 +472,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * @see SwiftFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseCopy( CF_Async_Op $cfOp, Status $status, array $params ) {
+       protected function getResponseCopy( CF_Async_Op $cfOp, Status $status, array $params ) {
                try {
                        $cfOp->getLastResponse();
                } catch ( NoSuchObjectException $e ) { // source object does not exist
@@ -548,7 +548,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * @see SwiftFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseMove( CF_Async_Op $cfOp, Status $status, array $params ) {
+       protected function getResponseMove( CF_Async_Op $cfOp, Status $status, array $params ) {
                try {
                        $cfOp->getLastResponse();
                } catch ( NoSuchObjectException $e ) { // source object does not exist
@@ -597,7 +597,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * @see SwiftFileBackend::doExecuteOpHandlesInternal()
         */
-       protected function _getResponseDelete( CF_Async_Op $cfOp, Status $status, array $params ) {
+       protected function getResponseDelete( CF_Async_Op $cfOp, Status $status, array $params ) {
                try {
                        $cfOp->getLastResponse();
                } catch ( NoSuchContainerException $e ) {
@@ -1365,7 +1365,7 @@ class SwiftFileBackend extends FileBackendStore {
                $cfOps = $batch->execute();
                foreach ( $cfOps as $index => $cfOp ) {
                        $status = Status::newGood();
-                       $function = '_getResponse' . $fileOpHandles[$index]->call;
+                       $function = 'getResponse' . $fileOpHandles[$index]->call;
                        try { // catch exceptions; update status
                                $this->$function( $cfOp, $status, $fileOpHandles[$index]->params );
                                $this->purgeCDNCache( $fileOpHandles[$index]->affectedObjects );
index 55fa39d..47efa70 100644 (file)
@@ -42,24 +42,81 @@ class FileRepo {
 
        /** @var FileBackend */
        protected $backend;
+
        /** @var Array Map of zones to config */
        protected $zones = array();
 
-       var $thumbScriptUrl, $transformVia404;
-       var $descBaseUrl, $scriptDirUrl, $scriptExtension, $articleUrl;
-       var $fetchDescription, $initialCapital;
-       var $pathDisclosureProtection = 'simple'; // 'paranoid'
-       var $descriptionCacheExpiry, $url, $thumbUrl;
-       var $hashLevels, $deletedHashLevels;
+       /** @var string URL of thumb.php  */
+       protected $thumbScriptUrl;
+
+       /** @var bool Whether to skip media file transformation on parse and rely
+        *    on a 404 handler instead. */
+       protected $transformVia404;
+
+       /** @var string URL of image description pages, e.g.
+        *    http://en.wikipedia.org/wiki/File:
+        */
+       protected $descBaseUrl;
+
+       /** @var string URL of the MediaWiki installation, equivalent to
+        *    $wgScriptPath, e.g. https://en.wikipedia.org/w
+        */
+       protected $scriptDirUrl;
+
+       /** @var string Script extension of the MediaWiki installation, equivalent
+        *    to $wgScriptExtension, e.g. .php5 defaults to .php */
+       protected $scriptExtension;
+
+       /** @var string Equivalent to $wgArticlePath, e.g. http://en.wikipedia.org/wiki/$1 */
+       protected $articleUrl;
+
+       /** @var bool Whether to fetch commons image description pages and display
+        *    them on the local wiki */
+       public $fetchDescription;
+
+       /** @var bool Equivalent to $wgCapitalLinks (or $wgCapitalLinkOverrides[NS_FILE],
+        *    determines whether filenames implicitly start with a capital letter.
+        *    The current implementation may give incorrect description page links
+        *    when the local $wgCapitalLinks and initialCapital are mismatched.
+        */
+       protected $initialCapital;
+
+       /** @var string May be 'paranoid' to remove all parameters from error
+        *    messages, 'none' to leave the paths in unchanged, or 'simple' to
+        *    replace paths with placeholders. Default for LocalRepo is
+        *    'simple'.
+        */
+       protected $pathDisclosureProtection = 'simple';
+
+       /** @var int */
+       public $descriptionCacheExpiry;
+
+       /** @var bool Public zone URL. */
+       protected $url;
+
+       /** @var string The base thumbnail URL. Defaults to "<url>/thumb". */
+       protected $thumbUrl;
+
+       /** @var int The number of directory levels for hash-based division of files */
+       protected $hashLevels;
+
+       /** @var int The number of directory levels for hash-based division of deleted files */
+       protected $deletedHashLevels;
+
+       /** @var int File names over this size will use the short form of thumbnail
+        *    names. Short thumbnail names only have the width, parameters, and the
+        *    extension.
+        */
        protected $abbrvThreshold;
 
        /**
         * Factory functions for creating new files
         * Override these in the base class
         */
-       var $fileFactory = array( 'UnregisteredLocalFile', 'newFromTitle' );
-       var $oldFileFactory = false;
-       var $fileFactoryKey = false, $oldFileFactoryKey = false;
+       protected $fileFactory = array( 'UnregisteredLocalFile', 'newFromTitle' );
+       protected $oldFileFactory = false;
+       protected $fileFactoryKey = false;
+       protected $oldFileFactoryKey = false;
 
        /**
         * @param $info array|null
@@ -204,7 +261,7 @@ class FileRepo {
         *
         * @param string $zone One of: public, deleted, temp, thumb
         * @param string|null $ext Optional file extension
-        * @return String or false
+        * @return string|bool
         */
        public function getZoneUrl( $zone, $ext = null ) {
                if ( in_array( $zone, array( 'public', 'temp', 'thumb', 'transcoded' ) ) ) {
@@ -546,7 +603,7 @@ class FileRepo {
        }
 
        /**
-        * Get the name of an image from its title object
+        * Get the name of a file from its title object
         *
         * @param $title Title
         * @return String
@@ -667,7 +724,7 @@ class FileRepo {
        public function getDescriptionUrl( $name ) {
                $encName = wfUrlencode( $name );
                if ( !is_null( $this->descBaseUrl ) ) {
-                       # "http://example.com/wiki/Image:"
+                       # "http://example.com/wiki/File:"
                        return $this->descBaseUrl . $encName;
                }
                if ( !is_null( $this->articleUrl ) ) {
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 5d72c0c..91c2fb4 100644 (file)
  * @ingroup FileAbstraction
  */
 class ArchivedFile {
-       /**#@+
-        * @private
-        */
-       var $id, # filearchive row ID
-               $name, # image name
-               $group, # FileStore storage group
-               $key, # FileStore sha1 key
-               $size, # file dimensions
-               $bits, # size in bytes
-               $width, # width
-               $height, # height
-               $metadata, # metadata string
-               $mime, # mime type
-               $media_type, # media type
-               $description, # upload description
-               $user, # user ID of uploader
-               $user_text, # user name of uploader
-               $timestamp, # time of upload
-               $dataLoaded, # Whether or not all this has been loaded from the database (loadFromXxx)
-               $deleted, # Bitfield akin to rev_deleted
-               $sha1, # sha1 hash of file content
-               $pageCount,
-               $archive_name;
-
-       /**
-        * @var MediaHandler
-        */
-       var $handler;
-       /**
-        * @var Title
-        */
-       var $title; # image title
-
-       /**#@-*/
+       /** @var int filearchive row ID */
+       private $id;
+
+       /** @var string File name */
+       private $name;
+
+       /** @var string FileStore storage group */
+       private $group;
+
+       /** @var string FileStore SHA-1 key */
+       private $key;
+
+       /** @var int File size in bytes */
+       private $size;
+
+       /** @var int size in bytes */
+       private $bits;
+
+       /** @var int Width */
+       private $width;
+
+       /** @var int Height */
+       private $height;
+
+       /** @var string Metadata string */
+       private $metadata;
+
+       /** @var string MIME type */
+       private $mime;
+
+       /** @var string Media type */
+       private $media_type;
+
+       /** @var string Upload description */
+       private $description;
+
+       /** @var int User ID of uploader */
+       private $user;
+
+       /** @var string User name of uploader */
+       private $user_text;
+
+       /** @var string Time of upload */
+       private $timestamp;
+
+       /** @var bool Whether or not all this has been loaded from the database (loadFromXxx) */
+       private $dataLoaded;
+
+       /** @var int Bitfield akin to rev_deleted */
+       private $deleted;
+
+       /** @var string SHA-1 hash of file content */
+       private $sha1;
+
+       /** @var string Number of pages of a multipage document, or false for
+        * documents which aren't multipage documents
+        */
+       private $pageCount;
+
+       /** @var string Original base filename */
+       private $archive_name;
+
+       /** @var MediaHandler */
+       protected $handler;
+
+       /** @var Title */
+       protected $title; # image title
 
        /**
         * @throws MWException
index 8e6dc8d..cf4ddf5 100644 (file)
@@ -91,43 +91,62 @@ abstract class File {
         * The following member variables are not lazy-initialised
         */
 
-       /**
-        * @var FileRepo|bool
-        */
-       var $repo;
+       /** @var FileRepo|bool */
+       public $repo;
 
-       /**
-        * @var Title
-        */
-       var $title;
+       /** @var Title|string|bool */
+       protected $title;
 
-       var $lastError, $redirected, $redirectedTitle;
+       /** @var string Text of last error  */
+       protected $lastError;
 
-       /**
-        * @var FSFile|bool False if undefined
-        */
+       /** @var string Main part of the title, with underscores (Title::getDBkey)  */
+       protected $redirected;
+
+       /** @var Title */
+       protected $redirectedTitle;
+
+       /** @var FSFile|bool False if undefined */
        protected $fsFile;
 
-       /**
-        * @var MediaHandler
-        */
+       /** @var MediaHandler */
        protected $handler;
 
-       /**
-        * @var string
+       /** @var string The URL corresponding to one of the four basic zones */
+       protected $url;
+
+       /** @var string File extension */
+       protected $extension;
+
+       /** @var string The name of a file from its title object */
+       protected $name;
+
+       /** @var string The storage path corresponding to one of the zones */
+       protected $path;
+
+       /** @var string Relative path including trailing slash */
+       protected $hashPath;
+
+       /** @var string number of pages of a multipage document, or false for
+        *    documents which aren't multipage documents
         */
-       protected $url, $extension, $name, $path, $hashPath, $pageCount, $transformScript;
+       protected $pageCount;
 
+       /** @var string URL of transformscript (for example thumb.php) */
+       protected $transformScript;
+
+       /** @var Title */
        protected $redirectTitle;
 
-       /**
-        * @var bool
-        */
-       protected $canRender, $isSafeFile;
+       /** @var bool Wether the output of transform() for this file is likely to be valid. */
+       protected $canRender;
 
-       /**
-        * @var string Required Repository class type
+       /** @var bool Wether this media file is in a format that is unlikely to
+        *    contain viruses or malicious content
         */
+       protected $isSafeFile;
+
+       /** @var string Required Repository class type */
        protected $repoClass = 'FileRepo';
 
        /**
@@ -663,7 +682,7 @@ abstract class File {
         */
        function isSafeFile() {
                if ( !isset( $this->isSafeFile ) ) {
-                       $this->isSafeFile = $this->_getIsSafeFile();
+                       $this->isSafeFile = $this->getIsSafeFileUncached();
                }
 
                return $this->isSafeFile;
@@ -683,7 +702,7 @@ abstract class File {
         *
         * @return bool
         */
-       protected function _getIsSafeFile() {
+       protected function getIsSafeFileUncached() {
                global $wgTrustedMediaFormats;
 
                if ( $this->allowInlineDisplay() ) {
@@ -1933,7 +1952,7 @@ abstract class File {
        }
 
        /**
-        * @param  $from
+        * @param $from
         * @return void
         */
        function redirectedFrom( $from ) {
index ee43888..191642f 100644 (file)
@@ -1031,11 +1031,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 a655b39..ae4ad1c 100644 (file)
  * @ingroup FileAbstraction
  */
 class OldLocalFile extends LocalFile {
-       var $requestedTime, $archive_name;
+       /** @var string Timestamp */
+       protected $requestedTime;
+
+       /** @var string Archive name */
+       protected $archive_name;
 
        const CACHE_VERSION = 1;
        const MAX_CACHE_ROWS = 20;
index e7fa46e..6d0786d 100644 (file)
  *
  * Read-only.
  *
- * TODO: Currently it doesn't really work in the repository role, there are
+ * @todo Currently it doesn't really work in the repository role, there are
  * lots of functions missing. It is used by the WebStore extension in the
  * standalone role.
  *
  * @ingroup FileAbstraction
  */
 class UnregisteredLocalFile extends File {
-       var $title, $path, $mime, $dims, $metadata;
+       /** @var Title  */
+       protected $title;
 
-       /**
-        * @var MediaHandler
-        */
-       var $handler;
+       /** @var string */
+       protected $path;
+
+       /** @var bool|string */
+       protected $mime;
+
+       /** @var array Dimension data */
+       protected $dims;
+
+       /** @var bool|string Handler-specific metadata which will be saved in the img_metadata field */
+       protected $metadata;
+
+       /** @var MediaHandler */
+       public $handler;
 
        /**
         * @param string $path Storage path
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 301db14..2433fbd 100644 (file)
@@ -220,6 +220,17 @@ class LocalSettingsGenerator {
                                                wfBoolToStr( $perm ) . ";\n";
                                }
                        }
+                       $noFollow = '';
+                       if ( $this->groupPermissions['*']['edit'] === false
+                               && $this->groupPermissions['*']['createaccount'] === false
+                               && $this->groupPermissions['*']['read'] !== false ) {
+                               $noFollow = "# Set \$wgNoFollowLinks to true if you open up your wiki to editing by\n"
+                                       . "# the general public and wish to apply nofollow to external links as a\n"
+                                       . "# deterrent to spammers. Nofollow is not a comprehensive anti-spam solution\n"
+                                       . "# and open wikis will generally require other anti-spam measures; for more\n"
+                                       . "# information, see https://www.mediawiki.org/wiki/Manual:Combating_spam\n"
+                                       . "\$wgNoFollowLinks = false;";
+                       }
                }
 
                $serverSetting = "";
@@ -353,6 +364,7 @@ ${serverSetting}
 # Path to the GNU diff3 utility. Used for conflict resolution.
 \$wgDiff3 = \"{$this->values['wgDiff3']}\";
 
-{$groupRights}";
+{$groupRights}
+{$noFollow}";
        }
 }
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 ab7df5d..e33baf5 100644 (file)
  * @ingroup JobQueue
  */
 abstract class Job {
-       /**
-        * @var Title
-        */
-       var $title;
+       /** @var int Job identifier */
+       public $id;
+
+       /** @var string */
+       public $command;
 
-       var $command,
-               $params,
-               $id,
-               $removeDuplicates,
-               $error;
+       /** @var array|bool Array of job parameters or false if none */
+       public $params;
 
-       /** @var Array Additional queue metadata */
+       /** @var array Additional queue metadata */
        public $metadata = array();
 
+       /** @var Title */
+       protected $title;
+
+       /** @var bool Expensive jobs may set this to true */
+       protected $removeDuplicates;
+
+       /** @var string Text for error that occurred last */
+       protected $error;
+
        /*-------------------------------------------------------------------------
         * Abstract functions
         *------------------------------------------------------------------------*/
 
        /**
         * Run the job
-        * @return boolean success
+        * @return bool Success
         */
        abstract public function run();
 
@@ -60,7 +67,7 @@ abstract class Job {
         * Create the appropriate object to handle a specific job
         *
         * @param string $command Job command
-        * @param $title Title: Associated title
+        * @param Title $title Associated title
         * @param array|bool $params Job parameters
         * @param int $id Job identifier
         * @throws MWException
@@ -70,6 +77,7 @@ abstract class Job {
                global $wgJobClasses;
                if ( isset( $wgJobClasses[$command] ) ) {
                        $class = $wgJobClasses[$command];
+
                        return new $class( $title, $params, $id );
                }
                throw new MWException( "Invalid job command `{$command}`" );
@@ -122,7 +130,7 @@ abstract class Job {
         * Pop a job off the front of the queue.
         * This is subject to $wgJobTypesExcludedFromDefaultQueue.
         *
-        * @return Job or false if there's no jobs
+        * @return Job|bool False if there are no jobs
         * @deprecated since 1.21
         */
        public static function pop() {
@@ -145,11 +153,12 @@ abstract class Job {
                $this->params = $params;
                $this->id = $id;
 
-               $this->removeDuplicates = false; // expensive jobs may set this to true
+               // expensive jobs may set this to true
+               $this->removeDuplicates = false;
        }
 
        /**
-        * @return integer May be 0 for jobs stored outside the DB
+        * @return int May be 0 for jobs stored outside the DB
         * @deprecated since 1.22
         */
        public function getId() {
@@ -178,7 +187,7 @@ abstract class Job {
        }
 
        /**
-        * @return integer|null UNIX timestamp to delay running this job until, otherwise null
+        * @return int|null UNIX timestamp to delay running this job until, otherwise null
         * @since 1.22
         */
        public function getReleaseTimestamp() {
@@ -208,7 +217,7 @@ abstract class Job {
         * only checked if ignoreDuplicates() returns true, meaning that duplicate
         * jobs are supposed to be ignored.
         *
-        * @return Array Map of key/values
+        * @return array Map of key/values
         * @since 1.21
         */
        public function getDeduplicationInfo() {
@@ -225,13 +234,16 @@ abstract class Job {
                        // Likewise for jobs with different delay times
                        unset( $info['params']['jobReleaseTimestamp'] );
                }
+
                return $info;
        }
 
        /**
         * @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 ) {
@@ -243,7 +255,7 @@ abstract class Job {
 
        /**
         * @see JobQueue::deduplicateRootJob()
-        * @return Array
+        * @return array
         * @since 1.21
         */
        public function getRootJobParams() {
@@ -305,6 +317,7 @@ abstract class Job {
                        if ( $paramString !== '' ) {
                                $s .= ' ' . $paramString;
                        }
+
                        return $s;
                } else {
                        return "{$this->command} $paramString";
index 6556ee8..8d93dc0 100644 (file)
  * @since 1.21
  */
 abstract class JobQueue {
-       protected $wiki; // string; wiki ID
-       protected $type; // string; job type
-       protected $order; // string; job priority for pop()
-       protected $claimTTL; // integer; seconds
-       protected $maxTries; // integer; maximum number of times to try a job
-       protected $checkDelay; // boolean; allow delayed jobs
+       /** @var string Wiki ID */
+       protected $wiki;
+
+       /** @var string Job type */
+       protected $type;
+
+       /** @var string Job priority for pop() */
+       protected $order;
+
+       /** @var int Time to live in seconds */
+       protected $claimTTL;
+
+       /** @var int Maximum number of times to try a job */
+       protected $maxTries;
+
+       /** @var bool Allow delayed jobs */
+       protected $checkDelay;
 
        /** @var BagOStuff */
        protected $dupCache;
@@ -44,7 +55,8 @@ abstract class JobQueue {
        const ROOTJOB_TTL = 2419200; // integer; seconds to remember root jobs (28 days)
 
        /**
-        * @param $params array
+        * @param array $params
+        * @throws MWException
         */
        protected function __construct( array $params ) {
                $this->wiki = $params['wiki'];
@@ -93,7 +105,7 @@ abstract class JobQueue {
         *
         * Queue classes should throw an exception if they do not support the options given.
         *
-        * @param $params array
+        * @param array $params
         * @return JobQueue
         * @throws MWException
         */
@@ -106,6 +118,7 @@ abstract class JobQueue {
                if ( !( $obj instanceof self ) ) {
                        throw new MWException( "Class '$class' is not a " . __CLASS__ . " class." );
                }
+
                return $obj;
        }
 
@@ -141,7 +154,7 @@ abstract class JobQueue {
        /**
         * Get the allowed queue orders for configuration validation
         *
-        * @return Array Subset of (random, timestamp, fifo, undefined)
+        * @return array Subset of (random, timestamp, fifo, undefined)
         */
        abstract protected function supportedOrders();
 
@@ -155,7 +168,7 @@ abstract class JobQueue {
        /**
         * Find out if delayed jobs are supported for configuration validation
         *
-        * @return boolean Whether delayed jobs are supported
+        * @return bool Whether delayed jobs are supported
         */
        protected function supportsDelayedJobs() {
                return false; // not implemented
@@ -177,6 +190,7 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $res = $this->doIsEmpty();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
@@ -192,19 +206,20 @@ abstract class JobQueue {
         *
         * If caching is used, this number might be out of date for a minute.
         *
-        * @return integer
+        * @return int
         * @throws JobQueueError
         */
        final public function getSize() {
                wfProfileIn( __METHOD__ );
                $res = $this->doGetSize();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
        /**
         * @see JobQueue::getSize()
-        * @return integer
+        * @return int
         */
        abstract protected function doGetSize();
 
@@ -214,19 +229,20 @@ abstract class JobQueue {
         *
         * If caching is used, this number might be out of date for a minute.
         *
-        * @return integer
+        * @return int
         * @throws JobQueueError
         */
        final public function getAcquiredCount() {
                wfProfileIn( __METHOD__ );
                $res = $this->doGetAcquiredCount();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
        /**
         * @see JobQueue::getAcquiredCount()
-        * @return integer
+        * @return int
         */
        abstract protected function doGetAcquiredCount();
 
@@ -236,7 +252,7 @@ abstract class JobQueue {
         *
         * If caching is used, this number might be out of date for a minute.
         *
-        * @return integer
+        * @return int
         * @throws JobQueueError
         * @since 1.22
         */
@@ -244,12 +260,13 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $res = $this->doGetDelayedCount();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
        /**
         * @see JobQueue::getDelayedCount()
-        * @return integer
+        * @return int
         */
        protected function doGetDelayedCount() {
                return 0; // not implemented
@@ -261,19 +278,20 @@ abstract class JobQueue {
         *
         * If caching is used, this number might be out of date for a minute.
         *
-        * @return integer
+        * @return int
         * @throws JobQueueError
         */
        final public function getAbandonedCount() {
                wfProfileIn( __METHOD__ );
                $res = $this->doGetAbandonedCount();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
        /**
         * @see JobQueue::getAbandonedCount()
-        * @return integer
+        * @return int
         */
        protected function doGetAbandonedCount() {
                return 0; // not implemented
@@ -284,8 +302,8 @@ abstract class JobQueue {
         * This does not require $wgJobClasses to be set for the given job type.
         * Outside callers should use JobQueueGroup::push() instead of this function.
         *
-        * @param $jobs Job|Array
-        * @param $flags integer Bitfield (supports JobQueue::QOS_ATOMIC)
+        * @param Job|array $jobs A single job or an array of Jobs
+        * @param int $flags Bitfield (supports JobQueue::QOS_ATOMIC)
         * @return bool Returns false on failure
         * @throws JobQueueError
         */
@@ -299,9 +317,9 @@ abstract class JobQueue {
         * Outside callers should use JobQueueGroup::push() instead of this function.
         *
         * @param array $jobs List of Jobs
-        * @param $flags integer Bitfield (supports JobQueue::QOS_ATOMIC)
+        * @param int $flags Bitfield (supports JobQueue::QOS_ATOMIC)
+        * @throws MWException
         * @return bool Returns false on failure
-        * @throws JobQueueError
         */
        final public function batchPush( array $jobs, $flags = 0 ) {
                if ( !count( $jobs ) ) {
@@ -321,11 +339,14 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $ok = $this->doBatchPush( $jobs, $flags );
                wfProfileOut( __METHOD__ );
+
                return $ok;
        }
 
        /**
         * @see JobQueue::batchPush()
+        * @param array $jobs
+        * @param $flags
         * @return bool
         */
        abstract protected function doBatchPush( array $jobs, $flags );
@@ -335,8 +356,8 @@ abstract class JobQueue {
         * This requires $wgJobClasses to be set for the given job type.
         * Outside callers should use JobQueueGroup::pop() instead of this function.
         *
+        * @throws MWException
         * @return Job|bool Returns false if there are no jobs
-        * @throws JobQueueError
         */
        final public function pop() {
                global $wgJobClasses;
@@ -358,7 +379,9 @@ abstract class JobQueue {
                                JobQueue::incrStats( 'job-pop-duplicate', $this->type );
                                $job = DuplicateJob::newFromJob( $job ); // convert to a no-op
                        }
-               } catch ( MWException $e ) {} // don't lose jobs over this
+               } catch ( MWException $e ) {
+                       // don't lose jobs over this
+               }
 
                return $job;
        }
@@ -375,9 +398,9 @@ abstract class JobQueue {
         * This does nothing for certain queue classes or if "claimTTL" is not set.
         * Outside callers should use JobQueueGroup::ack() instead of this function.
         *
-        * @param $job Job
+        * @param Job $job
+        * @throws MWException
         * @return bool
-        * @throws JobQueueError
         */
        final public function ack( Job $job ) {
                if ( $job->getType() !== $this->type ) {
@@ -386,11 +409,13 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $ok = $this->doAck( $job );
                wfProfileOut( __METHOD__ );
+
                return $ok;
        }
 
        /**
         * @see JobQueue::ack()
+        * @param Job $job
         * @return bool
         */
        abstract protected function doAck( Job $job );
@@ -422,9 +447,9 @@ abstract class JobQueue {
         *
         * This does nothing for certain queue classes.
         *
-        * @param $job Job
+        * @param Job $job
+        * @throws MWException
         * @return bool
-        * @throws JobQueueError
         */
        final public function deduplicateRootJob( Job $job ) {
                if ( $job->getType() !== $this->type ) {
@@ -433,12 +458,14 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $ok = $this->doDeduplicateRootJob( $job );
                wfProfileOut( __METHOD__ );
+
                return $ok;
        }
 
        /**
         * @see JobQueue::deduplicateRootJob()
-        * @param $job Job
+        * @param Job $job
+        * @throws MWException
         * @return bool
         */
        protected function doDeduplicateRootJob( Job $job ) {
@@ -465,9 +492,9 @@ abstract class JobQueue {
        /**
         * Check if the "root" job of a given job has been superseded by a newer one
         *
-        * @param $job Job
+        * @param Job $job
+        * @throws MWException
         * @return bool
-        * @throws JobQueueError
         */
        final protected function isRootJobOldDuplicate( Job $job ) {
                if ( $job->getType() !== $this->type ) {
@@ -476,6 +503,7 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $isDuplicate = $this->doIsRootJobOldDuplicate( $job );
                wfProfileOut( __METHOD__ );
+
                return $isDuplicate;
        }
 
@@ -504,6 +532,7 @@ abstract class JobQueue {
         */
        protected function getRootJobCacheKey( $signature ) {
                list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
+
                return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, 'rootjob', $signature );
        }
 
@@ -518,11 +547,13 @@ abstract class JobQueue {
                wfProfileIn( __METHOD__ );
                $res = $this->doDelete();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
        /**
         * @see JobQueue::delete()
+        * @throws MWException
         * @return bool Success
         */
        protected function doDelete() {
@@ -547,7 +578,8 @@ abstract class JobQueue {
         * @see JobQueue::waitForBackups()
         * @return void
         */
-       protected function doWaitForBackups() {}
+       protected function doWaitForBackups() {
+       }
 
        /**
         * Return a map of task names to task definition maps.
@@ -559,19 +591,20 @@ abstract class JobQueue {
         *   - callback : a PHP callable that performs the task
         *   - period   : the period in seconds corresponding to the task frequency
         *
-        * @return Array
+        * @return array
         */
        final public function getPeriodicTasks() {
                $tasks = $this->doGetPeriodicTasks();
                foreach ( $tasks as $name => &$def ) {
                        $def['name'] = $name;
                }
+
                return $tasks;
        }
 
        /**
         * @see JobQueue::getPeriodicTasks()
-        * @return Array
+        * @return array
         */
        protected function doGetPeriodicTasks() {
                return array();
@@ -592,7 +625,8 @@ abstract class JobQueue {
         * @see JobQueue::flushCaches()
         * @return void
         */
-       protected function doFlushCaches() {}
+       protected function doFlushCaches() {
+       }
 
        /**
         * Get an iterator to traverse over all available jobs in this queue.
@@ -637,6 +671,7 @@ abstract class JobQueue {
         */
        final public function getSiblingQueuesWithJobs( array $types ) {
                $section = new ProfileSection( __METHOD__ );
+
                return $this->doGetSiblingQueuesWithJobs( $types );
        }
 
@@ -661,6 +696,7 @@ abstract class JobQueue {
         */
        final public function getSiblingQueueSizes( array $types ) {
                $section = new ProfileSection( __METHOD__ );
+
                return $this->doGetSiblingQueueSizes( $types );
        }
 
@@ -678,7 +714,7 @@ abstract class JobQueue {
         *
         * @param string $key Event type
         * @param string $type Job type
-        * @param integer $delta
+        * @param int $delta
         * @since 1.22
         */
        public static function incrStats( $key, $type, $delta = 1 ) {
@@ -689,7 +725,7 @@ abstract class JobQueue {
        /**
         * Namespace the queue with a key to isolate it for testing
         *
-        * @param $key string
+        * @param string $key
         * @return void
         * @throws MWException
         */
@@ -702,5 +738,8 @@ abstract class JobQueue {
  * @ingroup JobQueue
  * @since 1.22
  */
-class JobQueueError extends MWException {}
-class JobQueueConnectionError extends JobQueueError {}
+class JobQueueError extends MWException {
+}
+
+class JobQueueConnectionError extends JobQueueError {
+}
index c39083d..b795695 100644 (file)
@@ -37,7 +37,8 @@ class JobQueueDB extends JobQueue {
        /** @var BagOStuff */
        protected $cache;
 
-       protected $cluster = false; // string; name of an external DB cluster
+       /** @var bool|string Name of an external DB cluster. False if not set */
+       protected $cluster = false;
 
        /**
         * Additional parameters include:
@@ -45,7 +46,7 @@ class JobQueueDB extends JobQueue {
         *               If not specified, the primary DB cluster for the wiki will be used.
         *               This can be overridden with a custom cluster so that DB handles will
         *               be retrieved via LBFactory::getExternalLB() and getConnection().
-        * @param $params array
+        * @param array $params
         */
        protected function __construct( array $params ) {
                global $wgMemc;
@@ -94,7 +95,7 @@ class JobQueueDB extends JobQueue {
 
        /**
         * @see JobQueue::doGetSize()
-        * @return integer
+        * @return int
         */
        protected function doGetSize() {
                $key = $this->getCacheKey( 'size' );
@@ -120,7 +121,7 @@ class JobQueueDB extends JobQueue {
 
        /**
         * @see JobQueue::doGetAcquiredCount()
-        * @return integer
+        * @return int
         */
        protected function doGetAcquiredCount() {
                if ( $this->claimTTL <= 0 ) {
@@ -150,7 +151,7 @@ class JobQueueDB extends JobQueue {
 
        /**
         * @see JobQueue::doGetAbandonedCount()
-        * @return integer
+        * @return int
         * @throws MWException
         */
        protected function doGetAbandonedCount() {
@@ -198,7 +199,7 @@ class JobQueueDB extends JobQueue {
                $that = $this;
                $method = __METHOD__;
                $dbw->onTransactionIdle(
-                       function() use ( $dbw, $that, $jobs, $flags, $method ) {
+                       function () use ( $dbw, $that, $jobs, $flags, $method ) {
                                $that->doBatchPushInternal( $dbw, $jobs, $flags, $method );
                        }
                );
@@ -209,12 +210,12 @@ class JobQueueDB extends JobQueue {
        /**
         * This function should *not* be called outside of JobQueueDB
         *
-        * @param DatabaseBase $dbw
+        * @param IDatabase $dbw
         * @param array $jobs
         * @param int $flags
         * @param string $method
-        * @return boolean
-        * @throws type
+        * @throws DBError
+        * @return bool
         */
        public function doBatchPushInternal( IDatabase $dbw, array $jobs, $flags, $method ) {
                if ( !count( $jobs ) ) {
@@ -258,8 +259,11 @@ class JobQueueDB extends JobQueue {
                                $dbw->insert( 'job', $rowBatch, $method );
                        }
                        JobQueue::incrStats( 'job-insert', $this->type, count( $rows ) );
-                       JobQueue::incrStats( 'job-insert-duplicate', $this->type,
-                               count( $rowSet ) + count( $rowList ) - count( $rows ) );
+                       JobQueue::incrStats(
+                               'job-insert-duplicate',
+                               $this->type,
+                               count( $rowSet ) + count( $rowList ) - count( $rows )
+                       );
                } catch ( DBError $e ) {
                        if ( $flags & self::QOS_ATOMIC ) {
                                $dbw->rollback( $method );
@@ -289,7 +293,7 @@ class JobQueueDB extends JobQueue {
                        $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
                        $autoTrx = $dbw->getFlag( DBO_TRX ); // get current setting
                        $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
-                       $scopedReset = new ScopedCallback( function() use ( $dbw, $autoTrx ) {
+                       $scopedReset = new ScopedCallback( function () use ( $dbw, $autoTrx ) {
                                $dbw->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore old setting
                        } );
 
@@ -336,7 +340,7 @@ class JobQueueDB extends JobQueue {
         * @param string $uuid 32 char hex string
         * @param $rand integer Random unsigned integer (31 bits)
         * @param bool $gte Search for job_random >= $random (otherwise job_random <= $random)
-        * @return Row|false
+        * @return stdClass|bool Row|false
         */
        protected function claimRandom( $uuid, $rand, $gte ) {
                $dbw = $this->getMasterDB();
@@ -386,6 +390,7 @@ class JobQueueDB extends JobQueue {
                                        continue; // use job_random
                                }
                        }
+
                        if ( $row ) { // claim the job
                                $dbw->update( 'job', // update by PK
                                        array(
@@ -412,7 +417,7 @@ class JobQueueDB extends JobQueue {
         * Reserve a row with a single UPDATE without holding row locks over RTTs...
         *
         * @param string $uuid 32 char hex string
-        * @return Row|false
+        * @return stdClass|bool Row|false
         */
        protected function claimOldest( $uuid ) {
                $dbw = $this->getMasterDB();
@@ -485,7 +490,7 @@ class JobQueueDB extends JobQueue {
                        $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
                        $autoTrx = $dbw->getFlag( DBO_TRX ); // get current setting
                        $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
-                       $scopedReset = new ScopedCallback( function() use ( $dbw, $autoTrx ) {
+                       $scopedReset = new ScopedCallback( function () use ( $dbw, $autoTrx ) {
                                $dbw->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore old setting
                        } );
 
@@ -520,7 +525,7 @@ class JobQueueDB extends JobQueue {
                // jobs to become no-ops without any actual jobs that made them redundant.
                $dbw = $this->getMasterDB();
                $cache = $this->dupCache;
-               $dbw->onTransactionIdle( function() use ( $cache, $params, $key, $dbw ) {
+               $dbw->onTransactionIdle( function () use ( $cache, $params, $key, $dbw ) {
                        $timestamp = $cache->get( $key ); // current last timestamp of this job
                        if ( $timestamp && $timestamp >= $params['rootJobTimestamp'] ) {
                                return true; // a newer version of this root job was enqueued
@@ -544,6 +549,7 @@ class JobQueueDB extends JobQueue {
                } catch ( DBError $e ) {
                        $this->throwDBException( $e );
                }
+
                return true;
        }
 
@@ -556,7 +562,7 @@ class JobQueueDB extends JobQueue {
        }
 
        /**
-        * @return Array
+        * @return array
         */
        protected function doGetPeriodicTasks() {
                return array(
@@ -586,7 +592,7 @@ class JobQueueDB extends JobQueue {
                        return new MappedIterator(
                                $dbr->select( 'job', '*',
                                        array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
-                               function( $row ) use ( $dbr ) {
+                               function ( $row ) use ( $dbr ) {
                                        $job = Job::factory(
                                                $row->job_cmd,
                                                Title::makeTitle( $row->job_namespace, $row->job_title ),
@@ -618,6 +624,7 @@ class JobQueueDB extends JobQueue {
                foreach ( $res as $row ) {
                        $types[] = $row->job_cmd;
                }
+
                return $types;
        }
 
@@ -630,13 +637,14 @@ class JobQueueDB extends JobQueue {
                foreach ( $res as $row ) {
                        $sizes[$row->job_cmd] = (int)$row->count;
                }
+
                return $sizes;
        }
 
        /**
         * Recycle or destroy any jobs that have been claimed for too long
         *
-        * @return integer Number of jobs recycled/deleted
+        * @return int Number of jobs recycled/deleted
         */
        public function recycleAndDeleteStaleJobs() {
                $now = time();
@@ -663,7 +671,7 @@ class JobQueueDB extends JobQueue {
                                        __METHOD__
                                );
                                $ids = array_map(
-                                       function( $o ) {
+                                       function ( $o ) {
                                                return $o->job_id;
                                        }, iterator_to_array( $res )
                                );
@@ -699,7 +707,7 @@ class JobQueueDB extends JobQueue {
                        // the IDs first means that the UPDATE can be done by primary key (less deadlocks).
                        $res = $dbw->select( 'job', 'job_id', $conds, __METHOD__ );
                        $ids = array_map(
-                               function( $o ) {
+                               function ( $o ) {
                                        return $o->job_id;
                                }, iterator_to_array( $res )
                        );
@@ -718,29 +726,31 @@ class JobQueueDB extends JobQueue {
        }
 
        /**
-        * @param $job Job
+        * @param Job $job
         * @return array
         */
        protected function insertFields( Job $job ) {
                $dbw = $this->getMasterDB();
+
                return array(
                        // Fields that describe the nature of the job
-                       'job_cmd'       => $job->getType(),
+                       'job_cmd' => $job->getType(),
                        'job_namespace' => $job->getTitle()->getNamespace(),
-                       'job_title'     => $job->getTitle()->getDBkey(),
-                       'job_params'    => self::makeBlob( $job->getParams() ),
+                       'job_title' => $job->getTitle()->getDBkey(),
+                       'job_params' => self::makeBlob( $job->getParams() ),
                        // Additional job metadata
-                       'job_id'        => $dbw->nextSequenceValue( 'job_job_id_seq' ),
+                       'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ),
                        'job_timestamp' => $dbw->timestamp(),
-                       'job_sha1'      => wfBaseConvert(
+                       'job_sha1' => wfBaseConvert(
                                sha1( serialize( $job->getDeduplicationInfo() ) ),
                                16, 36, 31
                        ),
-                       'job_random'    => mt_rand( 0, self::MAX_JOB_RANDOM )
+                       'job_random' => mt_rand( 0, self::MAX_JOB_RANDOM )
                );
        }
 
        /**
+        * @throws JobQueueConnectionError
         * @return DBConnRef
         */
        protected function getSlaveDB() {
@@ -752,6 +762,7 @@ class JobQueueDB extends JobQueue {
        }
 
        /**
+        * @throws JobQueueConnectionError
         * @return DBConnRef
         */
        protected function getMasterDB() {
@@ -770,15 +781,18 @@ class JobQueueDB extends JobQueue {
                $lb = ( $this->cluster !== false )
                        ? wfGetLBFactory()->getExternalLB( $this->cluster, $this->wiki )
                        : wfGetLB( $this->wiki );
+
                return $lb->getConnectionRef( $index, array(), $this->wiki );
        }
 
        /**
+        * @param $property
         * @return string
         */
        private function getCacheKey( $property ) {
                list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
                $cluster = is_string( $this->cluster ) ? $this->cluster : 'main';
+
                return wfForeignMemcKey( $db, $prefix, 'jobqueue', $cluster, $this->type, $property );
        }
 
index 36f4959..589bed6 100644 (file)
  * @since 1.22
  */
 class JobQueueFederated extends JobQueue {
-       /** @var Array (partition name => weight) reverse sorted by weight */
+       /** @var array (partition name => weight) reverse sorted by weight */
        protected $partitionMap = array();
-       /** @var Array (partition name => JobQueue) reverse sorted by weight */
+
+       /** @var array (partition name => JobQueue) reverse sorted by weight */
        protected $partitionQueues = array();
+
        /** @var HashRing */
        protected $partitionPushRing;
+
        /** @var BagOStuff */
        protected $cache;
 
-       protected $maxPartitionsTry;  // integer; maximum number of partitions to try
+       /** @var int Maximum number of partitions to try */
+       protected $maxPartitionsTry;
 
        const CACHE_TTL_SHORT = 30; // integer; seconds to cache info without re-validating
        const CACHE_TTL_LONG = 300; // integer; seconds to cache info that is kept up to date
@@ -79,6 +83,7 @@ class JobQueueFederated extends JobQueue {
         *                          during failure, at the cost of added latency and somewhat
         *                          less reliable job de-duplication mechanisms.
         * @param array $params
+        * @throws MWException
         */
        protected function __construct( array $params ) {
                parent::__construct( $params );
@@ -104,8 +109,8 @@ class JobQueueFederated extends JobQueue {
                // Get the config to pass to merge into each partition queue config
                $baseConfig = $params;
                foreach ( array( 'class', 'sectionsByWiki', 'maxPartitionsTry',
-                       'partitionsBySection', 'configByPartition', 'partitionsNoPush' ) as $o )
-               {
+                       'partitionsBySection', 'configByPartition', 'partitionsNoPush' ) as $o
+               {
                        unset( $baseConfig[$o] ); // partition queue doesn't care about this
                }
                // Get the partition queue objects
@@ -149,6 +154,7 @@ class JobQueueFederated extends JobQueue {
                        try {
                                if ( !$queue->doIsEmpty() ) {
                                        $this->cache->add( $key, 'false', self::CACHE_TTL_LONG );
+
                                        return false;
                                }
                        } catch ( JobQueueError $e ) {
@@ -157,6 +163,7 @@ class JobQueueFederated extends JobQueue {
                }
 
                $this->cache->add( $key, 'true', self::CACHE_TTL_LONG );
+
                return true;
        }
 
@@ -179,7 +186,7 @@ class JobQueueFederated extends JobQueue {
        /**
         * @param string $type
         * @param string $method
-        * @return integer
+        * @return int
         */
        protected function getCrossPartitionSum( $type, $method ) {
                $key = $this->getCacheKey( $type );
@@ -199,6 +206,7 @@ class JobQueueFederated extends JobQueue {
                }
 
                $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
+
                return $count;
        }
 
@@ -215,13 +223,15 @@ class JobQueueFederated extends JobQueue {
                        throw new JobQueueError(
                                "Could not insert job(s), {$this->maxPartitionsTry} partitions tried." );
                }
+
                return true;
        }
 
        /**
         * @param array $jobs
         * @param HashRing $partitionRing
-        * @param integer $flags
+        * @param int $flags
+        * @throws JobQueueError
         * @return array List of Job object that could not be inserted
         */
        protected function tryJobInsertions( array $jobs, HashRing &$partitionRing, $flags ) {
@@ -231,6 +241,7 @@ class JobQueueFederated extends JobQueue {
                // to use a consistent hash to avoid allowing duplicate jobs per partition.
                // When inserting a batch of de-duplicated jobs, QOS_ATOMIC is disregarded.
                $uJobsByPartition = array(); // (partition name => job list)
+               /** @var Job $job */
                foreach ( $jobs as $key => $job ) {
                        if ( $job->ignoreDuplicates() ) {
                                $sha1 = sha1( serialize( $job->getDeduplicationInfo() ) );
@@ -250,6 +261,7 @@ class JobQueueFederated extends JobQueue {
 
                // Insert the de-duplicated jobs into the queues...
                foreach ( $uJobsByPartition as $partition => $jobBatch ) {
+                       /** @var JobQueue $queue */
                        $queue = $this->partitionQueues[$partition];
                        try {
                                $ok = $queue->doBatchPush( $jobBatch, $flags | self::QOS_ATOMIC );
@@ -309,6 +321,8 @@ class JobQueueFederated extends JobQueue {
                        if ( $partition === false ) {
                                break; // all partitions at 0 weight
                        }
+
+                       /** @var JobQueue $queue */
                        $queue = $this->partitionQueues[$partition];
                        try {
                                $job = $queue->pop();
@@ -318,6 +332,7 @@ class JobQueueFederated extends JobQueue {
                        }
                        if ( $job ) {
                                $job->metadata['QueuePartition'] = $partition;
+
                                return $job;
                        } else {
                                unset( $partitionsTry[$partition] ); // blacklist partition
@@ -325,6 +340,7 @@ class JobQueueFederated extends JobQueue {
                }
 
                $this->cache->set( $key, 'true', JobQueueDB::CACHE_TTL_LONG );
+
                return false;
        }
 
@@ -332,6 +348,7 @@ class JobQueueFederated extends JobQueue {
                if ( !isset( $job->metadata['QueuePartition'] ) ) {
                        throw new MWException( "The given job has no defined partition name." );
                }
+
                return $this->partitionQueues[$job->metadata['QueuePartition']]->ack( $job );
        }
 
@@ -345,6 +362,7 @@ class JobQueueFederated extends JobQueue {
                                return $this->partitionQueues[$partitions[1]]->doIsRootJobOldDuplicate( $job );
                        }
                }
+
                return false;
        }
 
@@ -358,10 +376,12 @@ class JobQueueFederated extends JobQueue {
                                return $this->partitionQueues[$partitions[1]]->doDeduplicateRootJob( $job );
                        }
                }
+
                return false;
        }
 
        protected function doDelete() {
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $queue->doDelete();
@@ -372,6 +392,7 @@ class JobQueueFederated extends JobQueue {
        }
 
        protected function doWaitForBackups() {
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $queue->waitForBackups();
@@ -383,11 +404,13 @@ class JobQueueFederated extends JobQueue {
 
        protected function doGetPeriodicTasks() {
                $tasks = array();
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $partition => $queue ) {
                        foreach ( $queue->getPeriodicTasks() as $task => $def ) {
                                $tasks["{$partition}:{$task}"] = $def;
                        }
                }
+
                return $tasks;
        }
 
@@ -399,9 +422,12 @@ class JobQueueFederated extends JobQueue {
                        'delayedcount',
                        'abandonedcount'
                );
+
                foreach ( $types as $type ) {
                        $this->cache->delete( $this->getCacheKey( $type ) );
                }
+
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        $queue->doFlushCaches();
                }
@@ -409,17 +435,23 @@ class JobQueueFederated extends JobQueue {
 
        public function getAllQueuedJobs() {
                $iterator = new AppendIterator();
+
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        $iterator->append( $queue->getAllQueuedJobs() );
                }
+
                return $iterator;
        }
 
        public function getAllDelayedJobs() {
                $iterator = new AppendIterator();
+
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        $iterator->append( $queue->getAllDelayedJobs() );
                }
+
                return $iterator;
        }
 
@@ -430,6 +462,8 @@ class JobQueueFederated extends JobQueue {
 
        protected function doGetSiblingQueuesWithJobs( array $types ) {
                $result = array();
+
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $nonEmpty = $queue->doGetSiblingQueuesWithJobs( $types );
@@ -445,11 +479,14 @@ class JobQueueFederated extends JobQueue {
                                MWExceptionHandler::logException( $e );
                        }
                }
+
                return array_values( $result );
        }
 
        protected function doGetSiblingQueueSizes( array $types ) {
                $result = array();
+
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $sizes = $queue->doGetSiblingQueueSizes( $types );
@@ -464,20 +501,24 @@ class JobQueueFederated extends JobQueue {
                                MWExceptionHandler::logException( $e );
                        }
                }
+
                return $result;
        }
 
        public function setTestingPrefix( $key ) {
+               /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        $queue->setTestingPrefix( $key );
                }
        }
 
        /**
+        * @param $property
         * @return string
         */
        private function getCacheKey( $property ) {
                list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
+
                return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, $property );
        }
 }
index fa7fee5..a3ec8a7 100644 (file)
  * @since 1.21
  */
 class JobQueueGroup {
-       /** @var Array */
+       /** @var array */
        protected static $instances = array();
 
        /** @var ProcessCacheLRU */
        protected $cache;
 
-       protected $wiki; // string; wiki ID
+       /** @var string Wiki ID */
+       protected $wiki;
 
        /** @var array Map of (bucket => (queue => JobQueue, types => list of types) */
        protected $coalescedQueues;
@@ -58,7 +59,7 @@ class JobQueueGroup {
        }
 
        /**
-        * @param string $wiki Wiki ID
+        * @param bool|string $wiki Wiki ID
         * @return JobQueueGroup
         */
        public static function singleton( $wiki = false ) {
@@ -66,6 +67,7 @@ class JobQueueGroup {
                if ( !isset( self::$instances[$wiki] ) ) {
                        self::$instances[$wiki] = new self( $wiki );
                }
+
                return self::$instances[$wiki];
        }
 
@@ -81,7 +83,7 @@ class JobQueueGroup {
        /**
         * Get the job queue object for a given queue type
         *
-        * @param $type string
+        * @param string $type
         * @return JobQueue
         */
        public function get( $type ) {
@@ -103,12 +105,15 @@ class JobQueueGroup {
         * This inserts the jobs into the queue specified by $wgJobTypeConf
         * and updates the aggregate job queue information cache as needed.
         *
-        * @param $jobs Job|array A single Job or a list of Jobs
+        * @param Job|array $jobs A single Job or a list of Jobs
         * @throws MWException
         * @return bool
         */
        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 ) {
@@ -144,8 +149,8 @@ class JobQueueGroup {
         * This pops a job off a queue as specified by $wgJobTypeConf and
         * updates the aggregate job queue information cache as needed.
         *
-        * @param $qtype integer|string JobQueueGroup::TYPE_DEFAULT or type string
-        * @param $flags integer Bitfield of JobQueueGroup::USE_* constants
+        * @param int|string $qtype JobQueueGroup::TYPE_DEFAULT or type string
+        * @param int $flags Bitfield of JobQueueGroup::USE_* constants
         * @return Job|bool Returns false on failure
         */
        public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0 ) {
@@ -157,6 +162,7 @@ class JobQueueGroup {
                        if ( !$job ) {
                                JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
                        }
+
                        return $job;
                } else { // any job in the "default" jobs types
                        if ( $flags & self::USE_CACHE ) {
@@ -193,7 +199,7 @@ class JobQueueGroup {
        /**
         * Acknowledge that a job was completed
         *
-        * @param $job Job
+        * @param Job $job
         * @return bool
         */
        public function ack( Job $job ) {
@@ -204,7 +210,7 @@ class JobQueueGroup {
         * Register the "root job" of a given job into the queue for de-duplication.
         * This should only be called right *after* all the new jobs have been inserted.
         *
-        * @param $job Job
+        * @param Job $job
         * @return bool
         */
        public function deduplicateRootJob( Job $job ) {
@@ -253,7 +259,7 @@ class JobQueueGroup {
        /**
         * Get the list of job types that have non-empty queues
         *
-        * @return Array List of job types that have non-empty queues
+        * @return array List of job types that have non-empty queues
         */
        public function getQueuesWithJobs() {
                $types = array();
@@ -269,13 +275,14 @@ class JobQueueGroup {
                                }
                        }
                }
+
                return $types;
        }
 
        /**
         * Get the size of the queus for a list of job types
         *
-        * @return Array Map of (job type => size)
+        * @return array Map of (job type => size)
         */
        public function getQueueSizes() {
                $sizeMap = array();
@@ -289,6 +296,7 @@ class JobQueueGroup {
                                }
                        }
                }
+
                return $sizeMap;
        }
 
@@ -327,7 +335,7 @@ class JobQueueGroup {
         * This is only used for performance, such as to avoid spamming
         * the queue with many sub-jobs before they actually get run.
         *
-        * @param $type string
+        * @param string $type
         * @return bool
         */
        public function isQueueDeprioritized( $type ) {
@@ -335,12 +343,16 @@ 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;
                }
+
                return false;
        }
 
@@ -351,7 +363,7 @@ class JobQueueGroup {
         * the defined run period. Concurrent calls to this function will cause tasks
         * to be attempted twice, so they may need their own methods of mutual exclusion.
         *
-        * @return integer Number of tasks run
+        * @return int Number of tasks run
         */
        public function executeReadyPeriodicTasks() {
                global $wgMemc;
@@ -368,8 +380,8 @@ class JobQueueGroup {
                                if ( $definition['period'] <= 0 ) {
                                        continue; // disabled
                                } elseif ( !isset( $lastRuns[$type][$task] )
-                                       || $lastRuns[$type][$task] < ( time() - $definition['period'] ) )
-                               {
+                                       || $lastRuns[$type][$task] < ( time() - $definition['period'] )
+                               {
                                        try {
                                                if ( call_user_func( $definition['callback'] ) !== null ) {
                                                        $tasksRun[$type][$task] = time();
@@ -382,13 +394,13 @@ class JobQueueGroup {
                        }
                }
 
-               $wgMemc->merge( $key, function( $cache, $key, $lastRuns ) use ( $tasksRun ) {
+               $wgMemc->merge( $key, function ( $cache, $key, $lastRuns ) use ( $tasksRun ) {
                        if ( is_array( $lastRuns ) ) {
                                foreach ( $tasksRun as $type => $tasks ) {
                                        foreach ( $tasks as $task => $timestamp ) {
                                                if ( !isset( $lastRuns[$type][$task] )
-                                                       || $timestamp > $lastRuns[$type][$task] )
-                                               {
+                                                       || $timestamp > $lastRuns[$type][$task]
+                                               {
                                                        $lastRuns[$type][$task] = $timestamp;
                                                }
                                        }
@@ -396,6 +408,7 @@ class JobQueueGroup {
                        } else {
                                $lastRuns = $tasksRun;
                        }
+
                        return $lastRuns;
                } );
 
@@ -420,6 +433,7 @@ class JobQueueGroup {
                        } else {
                                $value = $wgConf->getConfig( $this->wiki, $name );
                                $wgMemc->set( $key, array( 'v' => $value ), 86400 + mt_rand( 0, 86400 ) );
+
                                return $value;
                        }
                }
index 67bb5a4..9b9fe2d 100644 (file)
@@ -60,12 +60,16 @@ class JobQueueRedis extends JobQueue {
        /** @var RedisConnectionPool */
        protected $redisPool;
 
-       protected $server; // string; server address
-       protected $compression; // string; compression method to use
+       /** @var string Server address */
+       protected $server;
+
+       /** @var string Compression method to use */
+       protected $compression;
 
        const MAX_AGE_PRUNE = 604800; // integer; seconds a job can live once claimed (7 days)
 
-       protected $key; // string; key to prefix the queue keys with (used for testing)
+       /** @var string Key to prefix the queue keys with (used for testing) */
+       protected $key;
 
        /**
         * @params include:
@@ -108,7 +112,7 @@ class JobQueueRedis extends JobQueue {
 
        /**
         * @see JobQueue::doGetSize()
-        * @return integer
+        * @return int
         * @throws MWException
         */
        protected function doGetSize() {
@@ -122,8 +126,8 @@ class JobQueueRedis extends JobQueue {
 
        /**
         * @see JobQueue::doGetAcquiredCount()
-        * @return integer
-        * @throws MWException
+        * @return int
+        * @throws JobQueueError
         */
        protected function doGetAcquiredCount() {
                if ( $this->claimTTL <= 0 ) {
@@ -134,6 +138,7 @@ class JobQueueRedis extends JobQueue {
                        $conn->multi( Redis::PIPELINE );
                        $conn->zSize( $this->getQueueKey( 'z-claimed' ) );
                        $conn->zSize( $this->getQueueKey( 'z-abandoned' ) );
+
                        return array_sum( $conn->exec() );
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $this->server, $conn, $e );
@@ -142,8 +147,8 @@ class JobQueueRedis extends JobQueue {
 
        /**
         * @see JobQueue::doGetDelayedCount()
-        * @return integer
-        * @throws MWException
+        * @return int
+        * @throws JobQueueError
         */
        protected function doGetDelayedCount() {
                if ( !$this->checkDelay ) {
@@ -159,8 +164,8 @@ class JobQueueRedis extends JobQueue {
 
        /**
         * @see JobQueue::doGetAbandonedCount()
-        * @return integer
-        * @throws MWException
+        * @return int
+        * @throws JobQueueError
         */
        protected function doGetAbandonedCount() {
                if ( $this->claimTTL <= 0 ) {
@@ -179,7 +184,7 @@ class JobQueueRedis extends JobQueue {
         * @param array $jobs
         * @param $flags
         * @return bool
-        * @throws MWException
+        * @throws JobQueueError
         */
        protected function doBatchPush( array $jobs, $flags ) {
                // Convert the jobs into field maps (de-duplicated against each other)
@@ -217,6 +222,7 @@ class JobQueueRedis extends JobQueue {
                        }
                        if ( $failed > 0 ) {
                                wfDebugLog( 'JobQueueRedis', "Could not insert {$failed} {$this->type} job(s)." );
+
                                return false;
                        }
                        JobQueue::incrStats( 'job-insert', $this->type, count( $items ) );
@@ -232,7 +238,7 @@ class JobQueueRedis extends JobQueue {
        /**
         * @param RedisConnRef $conn
         * @param array $items List of results from JobQueueRedis::getNewJobFields()
-        * @return integer Number of jobs inserted (duplicates are ignored)
+        * @return int Number of jobs inserted (duplicates are ignored)
         * @throws RedisException
         */
        protected function pushBlobs( RedisConnRef $conn, array $items ) {
@@ -245,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
@@ -285,7 +292,7 @@ LUA;
        /**
         * @see JobQueue::doPop()
         * @return Job|bool
-        * @throws MWException
+        * @throws JobQueueError
         */
        protected function doPop() {
                $job = false;
@@ -337,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;
@@ -369,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(
@@ -399,7 +408,7 @@ LUA;
         * @see JobQueue::doAck()
         * @param Job $job
         * @return Job|bool
-        * @throws MWException
+        * @throws MWException|JobQueueError
         */
        protected function doAck( Job $job ) {
                if ( !isset( $job->metadata['uuid'] ) ) {
@@ -410,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(
@@ -428,12 +438,14 @@ LUA;
 
                                if ( !$res ) {
                                        wfDebugLog( 'JobQueueRedis', "Could not acknowledge {$this->type} job." );
+
                                        return false;
                                }
                        } catch ( RedisException $e ) {
                                $this->throwRedisException( $this->server, $conn, $e );
                        }
                }
+
                return true;
        }
 
@@ -441,7 +453,7 @@ LUA;
         * @see JobQueue::doDeduplicateRootJob()
         * @param Job $job
         * @return bool
-        * @throws MWException
+        * @throws MWException|JobQueueError
         */
        protected function doDeduplicateRootJob( Job $job ) {
                if ( !$job->hasRootJobParams() ) {
@@ -457,6 +469,7 @@ LUA;
                        if ( $timestamp && $timestamp >= $params['rootJobTimestamp'] ) {
                                return true; // a newer version of this root job was enqueued
                        }
+
                        // Update the timestamp of the last root job started at the location...
                        return $conn->set( $key, $params['rootJobTimestamp'], self::ROOTJOB_TTL ); // 2 weeks
                } catch ( RedisException $e ) {
@@ -468,6 +481,7 @@ LUA;
         * @see JobQueue::doIsRootJobOldDuplicate()
         * @param Job $job
         * @return bool
+        * @throws JobQueueError
         */
        protected function doIsRootJobOldDuplicate( Job $job ) {
                if ( !$job->hasRootJobParams() ) {
@@ -490,6 +504,7 @@ LUA;
        /**
         * @see JobQueue::doDelete()
         * @return bool
+        * @throws JobQueueError
         */
        protected function doDelete() {
                static $props = array( 'l-unclaimed', 'z-claimed', 'z-abandoned',
@@ -501,6 +516,7 @@ LUA;
                        foreach ( $props as $prop ) {
                                $keys[] = $this->getQueueKey( $prop );
                        }
+
                        return ( $conn->delete( $keys ) !== false );
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $this->server, $conn, $e );
@@ -515,12 +531,15 @@ LUA;
                $conn = $this->getConnection();
                try {
                        $that = $this;
+
                        return new MappedIterator(
                                $conn->lRange( $this->getQueueKey( 'l-unclaimed' ), 0, -1 ),
-                               function( $uid ) use ( $that, $conn ) {
+                               function ( $uid ) use ( $that, $conn ) {
                                        return $that->getJobFromUidInternal( $uid, $conn );
                                },
-                               array( 'accept' => function ( $job ) { return is_object( $job ); } )
+                               array( 'accept' => function ( $job ) {
+                                       return is_object( $job );
+                               } )
                        );
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $this->server, $conn, $e );
@@ -535,12 +554,15 @@ LUA;
                $conn = $this->getConnection();
                try {
                        $that = $this;
+
                        return new MappedIterator( // delayed jobs
                                $conn->zRange( $this->getQueueKey( 'z-delayed' ), 0, -1 ),
-                               function( $uid ) use ( $that, $conn ) {
+                               function ( $uid ) use ( $that, $conn ) {
                                        return $that->getJobFromUidInternal( $uid, $conn );
                                },
-                               array( 'accept' => function ( $job ) { return is_object( $job ); } )
+                               array( 'accept' => function ( $job ) {
+                                       return is_object( $job );
+                               } )
                        );
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $this->server, $conn, $e );
@@ -573,6 +595,7 @@ LUA;
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $this->server, $conn, $e );
                }
+
                return $sizes;
        }
 
@@ -582,7 +605,7 @@ LUA;
         * @param $uid string
         * @param $conn RedisConnRef
         * @return Job|bool Returns false if the job does not exist
-        * @throws MWException
+        * @throws MWException|JobQueueError
         */
        public function getJobFromUidInternal( $uid, RedisConnRef $conn ) {
                try {
@@ -597,6 +620,7 @@ LUA;
                        $title = Title::makeTitle( $item['namespace'], $item['title'] );
                        $job = Job::factory( $item['type'], $title, $item['params'] );
                        $job->metadata['uuid'] = $item['uuid'];
+
                        return $job;
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $this->server, $conn, $e );
@@ -606,8 +630,8 @@ LUA;
        /**
         * Release any ready delayed jobs into the queue
         *
-        * @return integer Number of jobs released
-        * @throws MWException
+        * @return int Number of jobs released
+        * @throws JobQueueError
         */
        public function releaseReadyDelayedJobs() {
                $count = 0;
@@ -616,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;
@@ -643,8 +668,8 @@ LUA;
        /**
         * Recycle or destroy any jobs that have been claimed for too long
         *
-        * @return integer Number of jobs recycled/deleted
-        * @throws MWException
+        * @return int Number of jobs recycled/deleted
+        * @throws MWException|JobQueueError
         */
        public function recycleAndDeleteStaleJobs() {
                if ( $this->claimTTL <= 0 ) { // sanity
@@ -660,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}
@@ -718,7 +744,7 @@ LUA;
        }
 
        /**
-        * @return Array
+        * @return array
         */
        protected function doGetPeriodicTasks() {
                $tasks = array();
@@ -734,28 +760,29 @@ LUA;
                                'period' => 300 // 5 minutes
                        );
                }
+
                return $tasks;
        }
 
        /**
-        * @param $job Job
+        * @param Job $job
         * @return array
         */
        protected function getNewJobFields( Job $job ) {
                return array(
                        // Fields that describe the nature of the job
-                       'type'       => $job->getType(),
-                       'namespace'  => $job->getTitle()->getNamespace(),
-                       'title'      => $job->getTitle()->getDBkey(),
-                       'params'     => $job->getParams(),
+                       'type' => $job->getType(),
+                       'namespace' => $job->getTitle()->getNamespace(),
+                       'title' => $job->getTitle()->getDBkey(),
+                       'params' => $job->getParams(),
                        // Some jobs cannot run until a "release timestamp"
                        'rtimestamp' => $job->getReleaseTimestamp() ?: 0,
                        // Additional job metadata
-                       'uuid'       => UIDGenerator::newRawUUIDv4( UIDGenerator::QUICK_RAND ),
-                       'sha1'       => $job->ignoreDuplicates()
-                               ? wfBaseConvert( sha1( serialize( $job->getDeduplicationInfo() ) ), 16, 36, 31 )
-                               : '',
-                       'timestamp'  => time() // UNIX timestamp
+                       'uuid' => UIDGenerator::newRawUUIDv4( UIDGenerator::QUICK_RAND ),
+                       'sha1' => $job->ignoreDuplicates()
+                                       ? wfBaseConvert( sha1( serialize( $job->getDeduplicationInfo() ) ), 16, 36, 31 )
+                                       : '',
+                       'timestamp' => time() // UNIX timestamp
                );
        }
 
@@ -768,8 +795,10 @@ LUA;
                if ( $title ) {
                        $job = Job::factory( $fields['type'], $title, $fields['params'] );
                        $job->metadata['uuid'] = $fields['uuid'];
+
                        return $job;
                }
+
                return false;
        }
 
@@ -780,10 +809,12 @@ LUA;
        protected function serialize( array $fields ) {
                $blob = serialize( $fields );
                if ( $this->compression === 'gzip'
-                       && strlen( $blob ) >= 1024 && function_exists( 'gzdeflate' ) )
-               {
+                       && strlen( $blob ) >= 1024
+                       && function_exists( 'gzdeflate' )
+               ) {
                        $object = (object)array( 'blob' => gzdeflate( $blob ), 'enc' => 'gzip' );
                        $blobz = serialize( $object );
+
                        return ( strlen( $blobz ) < strlen( $blob ) ) ? $blobz : $blob;
                } else {
                        return $blob;
@@ -803,20 +834,22 @@ LUA;
                                $fields = false;
                        }
                }
+
                return is_array( $fields ) ? $fields : false;
        }
 
        /**
         * Get a connection to the server that handles all sub-queues for this queue
         *
-        * @return Array (server name, Redis instance)
-        * @throws MWException
+        * @return RedisConnRef
+        * @throws JobQueueConnectionError
         */
        protected function getConnection() {
                $conn = $this->redisPool->getConnection( $this->server );
                if ( !$conn ) {
                        throw new JobQueueConnectionError( "Unable to connect to redis server." );
                }
+
                return $conn;
        }
 
@@ -824,7 +857,7 @@ LUA;
         * @param $server string
         * @param $conn RedisConnRef
         * @param $e RedisException
-        * @throws MWException
+        * @throws JobQueueError
         */
        protected function throwRedisException( $server, RedisConnRef $conn, $e ) {
                $this->redisPool->handleException( $server, $conn, $e );
index a8186ab..8600eed 100644 (file)
@@ -34,9 +34,11 @@ abstract class JobQueueAggregator {
        /**
         * @param array $params
         */
-       protected function __construct( array $params ) {}
+       protected function __construct( array $params ) {
+       }
 
        /**
+        * @throws MWException
         * @return JobQueueAggregator
         */
        final public static function singleton() {
@@ -74,6 +76,7 @@ abstract class JobQueueAggregator {
                wfProfileIn( __METHOD__ );
                $ok = $this->doNotifyQueueEmpty( $wiki, $type );
                wfProfileOut( __METHOD__ );
+
                return $ok;
        }
 
@@ -93,6 +96,7 @@ abstract class JobQueueAggregator {
                wfProfileIn( __METHOD__ );
                $ok = $this->doNotifyQueueNonEmpty( $wiki, $type );
                wfProfileOut( __METHOD__ );
+
                return $ok;
        }
 
@@ -104,12 +108,13 @@ abstract class JobQueueAggregator {
        /**
         * Get the list of all of the queues with jobs
         *
-        * @return Array (job type => (list of wiki IDs))
+        * @return array (job type => (list of wiki IDs))
         */
        final public function getAllReadyWikiQueues() {
                wfProfileIn( __METHOD__ );
                $res = $this->doGetAllReadyWikiQueues();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
@@ -127,6 +132,7 @@ abstract class JobQueueAggregator {
                wfProfileIn( __METHOD__ );
                $res = $this->doPurge();
                wfProfileOut( __METHOD__ );
+
                return $res;
        }
 
@@ -139,7 +145,7 @@ abstract class JobQueueAggregator {
         * Get all databases that have a pending job.
         * This poll all the queues and is this expensive.
         *
-        * @return Array (job type => (list of wiki IDs))
+        * @return array (job type => (list of wiki IDs))
         */
        protected function findPendingWikiQueues() {
                global $wgLocalDatabases;
index 9434da0..d733a42 100644 (file)
@@ -65,6 +65,7 @@ class JobQueueAggregatorMemc extends JobQueueAggregator {
                        }
                        $this->cache->delete( "$key:lock" ); // unlock
                }
+
                return true;
        }
 
@@ -103,6 +104,7 @@ class JobQueueAggregatorMemc extends JobQueueAggregator {
                                $this->cache->delete( "$key:rebuild" ); // unlock
                        }
                }
+
                return is_array( $pendingDbInfo )
                        ? $pendingDbInfo['pendingDBs']
                        : array(); // cache is both empty and locked
index f1922a3..057a587 100644 (file)
@@ -32,7 +32,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
        /** @var RedisConnectionPool */
        protected $redisPool;
 
-       /** @var Array List of Redis server addresses */
+       /** @var array List of Redis server addresses */
        protected $servers;
 
        /**
@@ -60,9 +60,11 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                }
                try {
                        $conn->hDel( $this->getReadyQueueKey(), $this->encQueueName( $type, $wiki ) );
+
                        return true;
                } catch ( RedisException $e ) {
                        $this->handleException( $conn, $e );
+
                        return false;
                }
        }
@@ -74,9 +76,11 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                }
                try {
                        $conn->hSet( $this->getReadyQueueKey(), $this->encQueueName( $type, $wiki ), time() );
+
                        return true;
                } catch ( RedisException $e ) {
                        $this->handleException( $conn, $e );
+
                        return false;
                }
        }
@@ -124,6 +128,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                        return $pendingDBs;
                } catch ( RedisException $e ) {
                        $this->handleException( $conn, $e );
+
                        return array();
                }
        }
@@ -137,8 +142,10 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                        $conn->delete( $this->getReadyQueueKey() );
                } catch ( RedisException $e ) {
                        $this->handleException( $conn, $e );
+
                        return false;
                }
+
                return true;
        }
 
@@ -156,6 +163,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                                break;
                        }
                }
+
                return $conn;
        }
 
@@ -190,6 +198,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
         */
        private function dencQueueName( $name ) {
                list( $type, $wiki ) = explode( '/', $name, 2 );
+
                return array( rawurldecode( $type ), rawurldecode( $wiki ) );
        }
 }
index 6237e56..eff16b9 100644 (file)
@@ -39,6 +39,7 @@ class AssembleUploadChunksJob extends Job {
                        $user = $context->getUser();
                        if ( !$user->isLoggedIn() ) {
                                $this->setLastError( "Could not load the author user from session." );
+
                                return false;
                        }
 
@@ -47,7 +48,9 @@ class AssembleUploadChunksJob extends Job {
                                // with the session correctly. Note that being able to load
                                // the user does not necessarily mean the session was loaded.
                                // Most likely cause by suhosin.session.encrypt = On.
-                               $this->setLastError( "Error associating with user session. Try setting suhosin.session.encrypt = Off" );
+                               $this->setLastError( "Error associating with user session. " .
+                                       "Try setting suhosin.session.encrypt = Off" );
+
                                return false;
                        }
 
@@ -71,6 +74,7 @@ class AssembleUploadChunksJob extends Job {
                                        array( 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status )
                                );
                                $this->setLastError( $status->getWikiText() );
+
                                return false;
                        }
 
@@ -108,8 +112,10 @@ class AssembleUploadChunksJob extends Job {
                                )
                        );
                        $this->setLastError( get_class( $e ) . ": " . $e->getText() );
+
                        return false;
                }
+
                return true;
        }
 
@@ -118,6 +124,7 @@ class AssembleUploadChunksJob extends Job {
                if ( is_array( $info['params'] ) ) {
                        $info['params'] = array( 'filekey' => $info['params']['filekey'] );
                }
+
                return $info;
        }
 
index 33e749b..f5f0d63 100644 (file)
  * @ingroup JobQueue
  */
 class DoubleRedirectJob extends Job {
-       var $reason, $redirTitle;
+       /** @var string Reason for the change, 'maintenance' or 'move'. Suffix fo
+        *    message key 'double-redirect-fixed-'.
+        */
+       private $reason;
 
-       /**
-        * @var User
+       /** @var Title The title which has changed, redirects pointing to this
+        *    title are fixed
         */
-       static $user;
+       private $redirTitle;
+
+       /** @var User */
+       private static $user;
 
        /**
         * Insert jobs into the job queue to fix redirects to the given title
-        * @param string $reason the reason for the fix, see message "double-redirect-fixed-<reason>"
-        * @param $redirTitle Title: the title which has changed, redirects pointing to this title are fixed
+        * @param string $reason the reason for the fix, see message
+        *   "double-redirect-fixed-<reason>"
+        * @param $redirTitle Title: the title which has changed, redirects
+        *   pointing to this title are fixed
         * @param bool $destTitle Not used
         */
        public static function fixRedirects( $reason, $redirTitle, $destTitle = false ) {
@@ -73,6 +81,11 @@ class DoubleRedirectJob extends Job {
                JobQueueGroup::singleton()->push( $jobs );
        }
 
+       /**
+        * @param Title $title
+        * @param array|bool $params
+        * @param int $id
+        */
        function __construct( $title, $params = false, $id = 0 ) {
                parent::__construct( 'fixDoubleRedirect', $title, $params, $id );
                $this->reason = $params['reason'];
@@ -85,18 +98,21 @@ class DoubleRedirectJob extends Job {
        function run() {
                if ( !$this->redirTitle ) {
                        $this->setLastError( 'Invalid title' );
+
                        return false;
                }
 
                $targetRev = Revision::newFromTitle( $this->title, false, Revision::READ_LATEST );
                if ( !$targetRev ) {
                        wfDebug( __METHOD__ . ": target redirect already deleted, ignoring\n" );
+
                        return true;
                }
                $content = $targetRev->getContent();
                $currentDest = $content ? $content->getRedirectTarget() : null;
                if ( !$currentDest || !$currentDest->equals( $this->redirTitle ) ) {
                        wfDebug( __METHOD__ . ": Redirect has changed since the job was queued\n" );
+
                        return true;
                }
 
@@ -104,13 +120,16 @@ class DoubleRedirectJob extends Job {
                $mw = MagicWord::get( 'staticredirect' );
                if ( $content->matchMagicWord( $mw ) ) {
                        wfDebug( __METHOD__ . ": skipping: suppressed with __STATICREDIRECT__\n" );
+
                        return true;
                }
 
                // Find the current final destination
                $newTitle = self::getFinalDestination( $this->redirTitle );
                if ( !$newTitle ) {
-                       wfDebug( __METHOD__ . ": skipping: single redirect, circular redirect or invalid redirect destination\n" );
+                       wfDebug( __METHOD__ .
+                               ": skipping: single redirect, circular redirect or invalid redirect destination\n" );
+
                        return true;
                }
                if ( $newTitle->equals( $this->redirTitle ) ) {
@@ -128,12 +147,14 @@ class DoubleRedirectJob extends Job {
 
                if ( $newContent->equals( $content ) ) {
                        $this->setLastError( 'Content unchanged???' );
+
                        return false;
                }
 
                $user = $this->getUser();
                if ( !$user ) {
                        $this->setLastError( 'Invalid user' );
+
                        return false;
                }
 
@@ -171,6 +192,7 @@ class DoubleRedirectJob extends Job {
                        $titleText = $title->getPrefixedDBkey();
                        if ( isset( $seenTitles[$titleText] ) ) {
                                wfDebug( __METHOD__, "Circular redirect detected, aborting\n" );
+
                                return false;
                        }
                        $seenTitles[$titleText] = true;
@@ -195,9 +217,15 @@ class DoubleRedirectJob extends Job {
                                # No redirect from here, chain terminates
                                break;
                        } else {
-                               $dest = $title = Title::makeTitle( $row->rd_namespace, $row->rd_title, '', $row->rd_interwiki );
+                               $dest = $title = Title::makeTitle(
+                                       $row->rd_namespace,
+                                       $row->rd_title,
+                                       '',
+                                       $row->rd_interwiki
+                               );
                        }
                }
+
                return $dest;
        }
 
@@ -210,12 +238,14 @@ class DoubleRedirectJob extends Job {
         */
        function getUser() {
                if ( !self::$user ) {
-                       self::$user = User::newFromName( wfMessage( 'double-redirect-fixer' )->inContentLanguage()->text() );
+                       $username = wfMessage( 'double-redirect-fixer' )->inContentLanguage()->text();
+                       self::$user = User::newFromName( $username );
                        # User::newFromName() can return false on a badly configured wiki.
                        if ( self::$user && !self::$user->isLoggedIn() ) {
                                self::$user->addToDatabase();
                        }
                }
+
                return self::$user;
        }
 }
index be1bfe5..7e5bd3c 100644 (file)
@@ -30,7 +30,7 @@ final class DuplicateJob extends Job {
        /**
         * Callers should use DuplicateJob::newFromJob() instead
         *
-        * @param $title Title
+        * @param Title $title
         * @param array $params job parameters
         * @param $id Integer: job id
         */
@@ -50,6 +50,7 @@ final class DuplicateJob extends Job {
                $djob->params = is_array( $djob->params ) ? $djob->params : array();
                $djob->params = array( 'isDuplicate' => true ) + $djob->params;
                $djob->metadata = $job->metadata;
+
                return $djob;
        }
 
index 9fbf312..f24cebb 100644 (file)
@@ -43,5 +43,4 @@ class EmaillingJob extends Job {
 
                return $status->isOK();
        }
-
 }
index bbe988d..97a7af6 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup JobQueue
  */
 class EnotifNotifyJob extends Job {
-
        function __construct( $title, $params, $id = 0 ) {
                parent::__construct( 'enotifNotify', $title, $params, $id );
        }
@@ -39,7 +38,7 @@ class EnotifNotifyJob extends Job {
                        $editor = User::newFromId( $this->params['editorID'] );
                // B/C, only the name might be given.
                } else {
-                       # FIXME: newFromName could return false on a badly configured wiki.
+                       # @todo FIXME: newFromName could return false on a badly configured wiki.
                        $editor = User::newFromName( $this->params['editor'], false );
                }
                $enotif->actuallyNotifyOnPageChange(
@@ -52,7 +51,7 @@ class EnotifNotifyJob extends Job {
                        $this->params['watchers'],
                        $this->params['pageStatus']
                );
+
                return true;
        }
-
 }
index be12937..8885e25 100644 (file)
@@ -47,7 +47,11 @@ class HTMLCacheUpdateJob extends Job {
        /** @var BacklinkCache */
        protected $blCache;
 
-       protected $rowsPerJob, $rowsPerQuery;
+       /** @var int Number of rows to update per job, see $wgUpdateRowsPerJob */
+       protected $rowsPerJob;
+
+       /** @var int Number of rows to update per query, see $wgUpdateRowsPerQuery */
+       protected $rowsPerQuery;
 
        /**
         * Construct a job
@@ -86,6 +90,7 @@ class HTMLCacheUpdateJob extends Job {
                $numRows = $this->blCache->getNumLinks( $this->params['table'], $max );
                if ( $wgMaxBacklinksInvalidate !== false && $numRows > $wgMaxBacklinksInvalidate ) {
                        wfDebug( "Skipped HTML cache invalidation of {$this->title->getPrefixedText()}." );
+
                        return true;
                }
 
@@ -123,6 +128,7 @@ class HTMLCacheUpdateJob extends Job {
                        # period of time, say by updating a heavily-used template.
                        $this->insertJobsFromTitles( $titleArray );
                }
+
                return true;
        }
 
@@ -131,7 +137,7 @@ class HTMLCacheUpdateJob extends Job {
         * using a pre-calculated title array which gives the links in that range.
         * Queue the resulting jobs.
         *
-        * @param array $titleArray
+        * @param array|TitleArrayFromResult $titleArray
         * @param array $rootJobParams
         */
        protected function insertJobsFromTitles( $titleArray, $rootJobParams = array() ) {
@@ -143,6 +149,7 @@ class HTMLCacheUpdateJob extends Job {
                $jobs = array();
                $start = $this->params['start']; # start of the current job
                $numTitles = 0;
+               /** @var Title $title */
                foreach ( $titleArray as $title ) {
                        $id = $title->getArticleID();
                        # $numTitles is now the number of titles in the current job not
@@ -211,7 +218,7 @@ class HTMLCacheUpdateJob extends Job {
 
        /**
         * Invalidate an array (or iterator) of Title objects, right now
-        * @param array $titleArray
+        * @param array|TitleArrayFromResult $titleArray
         */
        protected function invalidateTitles( $titleArray ) {
                global $wgUseFileCache, $wgUseSquid;
index b6164a5..f62419c 100644 (file)
@@ -46,9 +46,9 @@
  */
 class NullJob extends Job {
        /**
-        * @param $title Title (can be anything)
+        * @param Title $title
         * @param array $params job parameters (lives, usleep)
-        * @param $id Integer: job id
+        * @param int $id Job id
         */
        function __construct( $title, $params, $id = 0 ) {
                parent::__construct( 'null', $title, $params, $id );
@@ -71,6 +71,7 @@ class NullJob extends Job {
                        $job = new self( $this->title, $params );
                        JobQueueGroup::singleton()->push( $job );
                }
+
                return true;
        }
 }
index 1276e3c..88ac9cf 100644 (file)
@@ -39,6 +39,7 @@ class PublishStashedFileJob extends Job {
                        $user = $context->getUser();
                        if ( !$user->isLoggedIn() ) {
                                $this->setLastError( "Could not load the author user from session." );
+
                                return false;
                        }
 
@@ -47,7 +48,9 @@ class PublishStashedFileJob extends Job {
                                // with the session correctly. Note that being able to load
                                // the user does not necessarily mean the session was loaded.
                                // Most likely cause by suhosin.session.encrypt = On.
-                               $this->setLastError( "Error associating with user session. Try setting suhosin.session.encrypt = Off" );
+                               $this->setLastError( "Error associating with user session. " .
+                                       "Try setting suhosin.session.encrypt = Off" );
+
                                return false;
                        }
 
@@ -73,6 +76,7 @@ class PublishStashedFileJob extends Job {
                                        array( 'result' => 'Failure', 'stage' => 'publish', 'status' => $status )
                                );
                                $this->setLastError( "Could not verify upload." );
+
                                return false;
                        }
 
@@ -89,6 +93,7 @@ class PublishStashedFileJob extends Job {
                                        array( 'result' => 'Failure', 'stage' => 'publish', 'status' => $status )
                                );
                                $this->setLastError( $status->getWikiText() );
+
                                return false;
                        }
 
@@ -120,8 +125,10 @@ class PublishStashedFileJob extends Job {
                                )
                        );
                        $this->setLastError( get_class( $e ) . ": " . $e->getText() );
+
                        return false;
                }
+
                return true;
        }
 
@@ -130,6 +137,7 @@ class PublishStashedFileJob extends Job {
                if ( is_array( $info['params'] ) ) {
                        $info['params'] = array( 'filekey' => $info['params']['filekey'] );
                }
+
                return $info;
        }
 
index 4fc8bac..e81998d 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 boolean 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->title );
                }
 
-               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 $fname string
-        * @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 boolean 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();
+               // Fetch the current revision...
+               $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?
+               }
+               $content = $revision->getContent( Revision::RAW );
+               if ( !$content ) {
+                       // If there is no content, pretend the content is empty
+                       $content = $revision->getContentHandler()->makeEmptyContent();
+               }
 
-               $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
                                }
                        }
                }
-
-               if ( count( $jobs ) ) {
-                       JobQueueGroup::singleton()->push( $jobs );
+               // Fetch the current revision and parse it if necessary...
+               if ( $parserOutput == false ) {
+                       // 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 $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;
+               InfoAction::invalidateCache( $title );
+
+               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;
+       }
+}
index c993cfb..15d523f 100644 (file)
 class UploadFromUrlJob extends Job {
        const SESSION_KEYNAME = 'wsUploadFromUrlJobData';
 
-       /**
-        * @var UploadFromUrl
-        */
+       /** @var UploadFromUrl */
        public $upload;
 
-       /**
-        * @var User
-        */
+       /** @var User */
        protected $user;
 
        public function __construct( $title, $params, $id = 0 ) {
@@ -66,6 +62,7 @@ class UploadFromUrlJob extends Job {
                $status = $this->upload->fetchFile( $opts );
                if ( !$status->isOk() ) {
                        $this->leaveMessage( $status );
+
                        return true;
                }
 
@@ -74,6 +71,7 @@ class UploadFromUrlJob extends Job {
                if ( $result['status'] != UploadBase::OK ) {
                        $status = $this->upload->convertVerifyErrorToStatus( $result );
                        $this->leaveMessage( $status );
+
                        return true;
                }
 
@@ -85,6 +83,8 @@ class UploadFromUrlJob extends Job {
                                # Stash the upload
                                $key = $this->upload->stashFile();
 
+                               // @todo FIXME: This has been broken for a while.
+                               // User::leaveUserMessage() does not exist.
                                if ( $this->params['leaveMessage'] ) {
                                        $this->user->leaveUserMessage(
                                                wfMessage( 'upload-warning-subj' )->text(),
@@ -111,25 +111,27 @@ class UploadFromUrlJob extends Job {
                        $this->user
                );
                $this->leaveMessage( $status );
-               return true;
 
+               return true;
        }
 
        /**
         * Leave a message on the user talk page or in the session according to
         * $params['leaveMessage'].
         *
-        * @param $status Status
+        * @param Status $status
         */
        protected function leaveMessage( $status ) {
                if ( $this->params['leaveMessage'] ) {
                        if ( $status->isGood() ) {
+                               // @todo FIXME: user->leaveUserMessage does not exist.
                                $this->user->leaveUserMessage( wfMessage( 'upload-success-subj' )->text(),
                                        wfMessage( 'upload-success-msg',
                                                $this->upload->getTitle()->getText(),
                                                $this->params['url']
                                        )->text() );
                        } else {
+                               // @todo FIXME: user->leaveUserMessage does not exist.
                                $this->user->leaveUserMessage( wfMessage( 'upload-failure-subj' )->text(),
                                        wfMessage( 'upload-failure-msg',
                                                $status->getWikiText(),
@@ -155,7 +157,7 @@ class UploadFromUrlJob extends Job {
         *
         * @param string $result the result (Success|Warning|Failure)
         * @param string $dataKey the key of the extra data
-        * @param $dataValue Mixed: the extra data itself
+        * @param mixed $dataValue The extra data itself
         */
        protected function storeResultInSession( $result, $dataKey, $dataValue ) {
                $session =& self::getSessionData( $this->params['sessionKey'] );
@@ -179,6 +181,7 @@ class UploadFromUrlJob extends Job {
                if ( !isset( $_SESSION[self::SESSION_KEYNAME][$key] ) ) {
                        $_SESSION[self::SESSION_KEYNAME][$key] = array();
                }
+
                return $_SESSION[self::SESSION_KEYNAME][$key];
        }
 }
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 01528b7..d761a87 100644 (file)
@@ -36,6 +36,7 @@ class DeleteLogFormatter extends LogFormatter {
                                return "$key-legacy";
                        }
                }
+
                return $key;
        }
 
@@ -47,11 +48,14 @@ class DeleteLogFormatter extends LogFormatter {
                $params = parent::getMessageParameters();
                $subtype = $this->entry->getSubtype();
                if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
-                       // $params[3] here is 'revision' for page revisions, 'oldimage' for file versions, or a comma-separated list of log_ids for log entries.
-                       // $subtype here is 'revision' for page revisions and file versions, or 'event' for log entries.
-                       if (
-                               ( $subtype === 'event' && count( $params ) === 6 ) ||
-                               ( $subtype === 'revision' && isset( $params[3] ) && ( $params[3] === 'revision' || $params[3] === 'oldimage' ) )
+                       // $params[3] here is 'revision' for page revisions, 'oldimage' for
+                       // file versions, or a comma-separated list of log_ids for log
+                       // entries. $subtype here is 'revision' for page revisions and file
+                       // versions, or 'event' for log entries.
+                       if ( ( $subtype === 'event' && count( $params ) === 6 )
+                               || ( $subtype === 'revision' && isset( $params[3] )
+                                       && ( $params[3] === 'revision' || $params[3] === 'oldimage' )
+                               )
                        ) {
                                $paramStart = $subtype === 'revision' ? 4 : 3;
 
@@ -74,6 +78,7 @@ class DeleteLogFormatter extends LogFormatter {
                                $newParams[3] = $changeText;
                                $count = count( explode( ',', $params[$paramStart] ) );
                                $newParams[4] = $this->context->getLanguage()->formatNum( $count );
+
                                return $this->parsedParametersDeleteLog = $newParams;
                        } else {
                                return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
@@ -87,6 +92,7 @@ class DeleteLogFormatter extends LogFormatter {
                // Input is like ofield=2134 or just the number
                if ( strpos( $string, 'field=' ) === 1 ) {
                        list( , $field ) = explode( '=', $string );
+
                        return (int)$field;
                } else {
                        return (int)$string;
@@ -95,102 +101,106 @@ class DeleteLogFormatter extends LogFormatter {
 
        public function getActionLinks() {
                $user = $this->context->getUser();
-               if ( !$user->isAllowed( 'deletedhistory' ) || $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
+               if ( !$user->isAllowed( 'deletedhistory' )
+                       || $this->entry->isDeleted( LogPage::DELETED_ACTION )
+               ) {
                        return '';
                }
 
                switch ( $this->entry->getSubtype() ) {
-               case 'delete': // Show undelete link
-                       if ( $user->isAllowed( 'undelete' ) ) {
-                               $message = 'undeletelink';
-                       } else {
-                               $message = 'undeleteviewlink';
-                       }
-                       $revert = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Undelete' ),
-                               $this->msg( $message )->escaped(),
-                               array(),
-                               array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
-                       );
-                       return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
-
-               case 'revision': // If an edit was hidden from a page give a review link to the history
-                       $params = $this->extractParameters();
-                       if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
-                               return '';
-                       }
-
-                       // Different revision types use different URL params...
-                       $key = $params[3];
-                       // This is a CSV of the IDs
-                       $ids = explode( ',', $params[4] );
-
-                       $links = array();
-
-                       // If there's only one item, we can show a diff link
-                       if ( count( $ids ) == 1 ) {
-                               // Live revision diffs...
-                               if ( $key == 'oldid' || $key == 'revision' ) {
-                                       $links[] = Linker::linkKnown(
-                                               $this->entry->getTarget(),
-                                               $this->msg( 'diff' )->escaped(),
-                                               array(),
-                                               array(
-                                                       'diff' => intval( $ids[0] ),
-                                                       'unhide' => 1
-                                               )
-                                       );
-                               // Deleted revision diffs...
-                               } elseif ( $key == 'artimestamp' || $key == 'archive' ) {
-                                       $links[] = Linker::linkKnown(
-                                               SpecialPage::getTitleFor( 'Undelete' ),
-                                               $this->msg( 'diff' )->escaped(),
-                                               array(),
-                                               array(
-                                                       'target' => $this->entry->getTarget()->getPrefixedDBkey(),
-                                                       'diff' => 'prev',
-                                                       'timestamp' => $ids[0]
-                                               )
-                                       );
+                       case 'delete': // Show undelete link
+                               if ( $user->isAllowed( 'undelete' ) ) {
+                                       $message = 'undeletelink';
+                               } else {
+                                       $message = 'undeleteviewlink';
+                               }
+                               $revert = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Undelete' ),
+                                       $this->msg( $message )->escaped(),
+                                       array(),
+                                       array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
+                               );
+
+                               return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+
+                       case 'revision': // If an edit was hidden from a page give a review link to the history
+                               $params = $this->extractParameters();
+                               if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
+                                       return '';
                                }
-                       }
-
-                       // View/modify link...
-                       $links[] = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Revisiondelete' ),
-                               $this->msg( 'revdel-restore' )->escaped(),
-                               array(),
-                               array(
-                                       'target' => $this->entry->getTarget()->getPrefixedText(),
-                                       'type' => $key,
-                                       'ids' => implode( ',', $ids ),
-                               )
-                       );
 
-                       return $this->msg( 'parentheses' )->rawParams(
-                               $this->context->getLanguage()->pipeList( $links ) )->escaped();
+                               // Different revision types use different URL params...
+                               $key = $params[3];
+                               // This is a CSV of the IDs
+                               $ids = explode( ',', $params[4] );
+
+                               $links = array();
+
+                               // If there's only one item, we can show a diff link
+                               if ( count( $ids ) == 1 ) {
+                                       // Live revision diffs...
+                                       if ( $key == 'oldid' || $key == 'revision' ) {
+                                               $links[] = Linker::linkKnown(
+                                                       $this->entry->getTarget(),
+                                                       $this->msg( 'diff' )->escaped(),
+                                                       array(),
+                                                       array(
+                                                               'diff' => intval( $ids[0] ),
+                                                               'unhide' => 1
+                                                       )
+                                               );
+                                               // Deleted revision diffs...
+                                       } elseif ( $key == 'artimestamp' || $key == 'archive' ) {
+                                               $links[] = Linker::linkKnown(
+                                                       SpecialPage::getTitleFor( 'Undelete' ),
+                                                       $this->msg( 'diff' )->escaped(),
+                                                       array(),
+                                                       array(
+                                                               'target' => $this->entry->getTarget()->getPrefixedDBkey(),
+                                                               'diff' => 'prev',
+                                                               'timestamp' => $ids[0]
+                                                       )
+                                               );
+                                       }
+                               }
 
-               case 'event': // Hidden log items, give review link
-                       $params = $this->extractParameters();
-                       if ( !isset( $params[3] ) ) {
+                               // View/modify link...
+                               $links[] = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Revisiondelete' ),
+                                       $this->msg( 'revdel-restore' )->escaped(),
+                                       array(),
+                                       array(
+                                               'target' => $this->entry->getTarget()->getPrefixedText(),
+                                               'type' => $key,
+                                               'ids' => implode( ',', $ids ),
+                                       )
+                               );
+
+                               return $this->msg( 'parentheses' )->rawParams(
+                                       $this->context->getLanguage()->pipeList( $links ) )->escaped();
+
+                       case 'event': // Hidden log items, give review link
+                               $params = $this->extractParameters();
+                               if ( !isset( $params[3] ) ) {
+                                       return '';
+                               }
+                               // This is a CSV of the IDs
+                               $query = $params[3];
+                               // Link to each hidden object ID, $params[1] is the url param
+                               $revert = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Revisiondelete' ),
+                                       $this->msg( 'revdel-restore' )->escaped(),
+                                       array(),
+                                       array(
+                                               'target' => $this->entry->getTarget()->getPrefixedText(),
+                                               'type' => 'logging',
+                                               'ids' => $query
+                                       )
+                               );
+
+                               return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+                       default:
                                return '';
-                       }
-                       // This is a CSV of the IDs
-                       $query = $params[3];
-                       // Link to each hidden object ID, $params[1] is the url param
-                       $revert = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Revisiondelete' ),
-                               $this->msg( 'revdel-restore' )->escaped(),
-                               array(),
-                               array(
-                                       'target' => $this->entry->getTarget()->getPrefixedText(),
-                                       'type' => 'logging',
-                                       'ids' => $query
-                               )
-                       );
-                       return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
-               default:
-                       return '';
                }
        }
 }
index a1cb3a7..40846a2 100644 (file)
@@ -33,7 +33,6 @@
  * @since 1.19
  */
 interface LogEntry {
-
        /**
         * The main log type.
         * @return string
@@ -117,7 +116,6 @@ abstract class LogEntryBase implements LogEntry {
        public function isLegacy() {
                return false;
        }
-
 }
 
 /**
@@ -202,6 +200,7 @@ class DatabaseLogEntry extends LogEntryBase {
        public function isLegacy() {
                // This does the check
                $this->getParameters();
+
                return $this->legacy;
        }
 
@@ -229,6 +228,7 @@ class DatabaseLogEntry extends LogEntryBase {
                                $this->legacy = true;
                        }
                }
+
                return $this->params;
        }
 
@@ -246,6 +246,7 @@ class DatabaseLogEntry extends LogEntryBase {
                                $this->performer = User::newFromName( $userText, false );
                        }
                }
+
                return $this->performer;
        }
 
@@ -253,6 +254,7 @@ class DatabaseLogEntry extends LogEntryBase {
                $namespace = $this->row->log_namespace;
                $page = $this->row->log_title;
                $title = Title::makeTitle( $namespace, $page );
+
                return $title;
        }
 
@@ -267,7 +269,6 @@ class DatabaseLogEntry extends LogEntryBase {
        public function getDeleted() {
                return $this->row->log_deleted;
        }
-
 }
 
 class RCDatabaseLogEntry extends DatabaseLogEntry {
@@ -301,6 +302,7 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
                                $this->performer = User::newFromName( $userText, false );
                        }
                }
+
                return $this->performer;
        }
 
@@ -308,6 +310,7 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
                $namespace = $this->row->rc_namespace;
                $page = $this->row->rc_title;
                $title = Title::makeTitle( $namespace, $page );
+
                return $title;
        }
 
@@ -322,7 +325,6 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
        public function getDeleted() {
                return $this->row->rc_deleted;
        }
-
 }
 
 /**
@@ -484,8 +486,8 @@ class ManualLogEntry extends LogEntryBase {
                        }
                        foreach ( $values as $value ) {
                                $rows[] = array(
-                                       'ls_field'  => $tag,
-                                       'ls_value'  => $value,
+                                       'ls_field' => $tag,
+                                       'ls_value' => $value,
                                        'ls_log_id' => $this->id
                                );
                        }
@@ -520,6 +522,7 @@ class ManualLogEntry extends LogEntryBase {
                                $ip = $user->getName();
                        }
                }
+
                return RecentChange::newLogEntry(
                        $this->getTimestamp(),
                        $logpage,
@@ -534,7 +537,6 @@ class ManualLogEntry extends LogEntryBase {
                        $newId,
                        $formatter->getIRCActionComment() // Used for IRC feeds
                );
-
        }
 
        /**
@@ -589,6 +591,7 @@ class ManualLogEntry extends LogEntryBase {
 
        public function getTimestamp() {
                $ts = $this->timestamp !== null ? $this->timestamp : wfTimestampNow();
+
                return wfTimestamp( TS_MW, $ts );
        }
 
@@ -599,5 +602,4 @@ class ManualLogEntry extends LogEntryBase {
        public function getDeleted() {
                return (int)$this->deleted;
        }
-
 }
index c27b57a..fabe153 100644 (file)
@@ -176,6 +176,7 @@ class LogEventsList extends ContextSource {
                        $links[$type] = $this->msg( "log-show-hide-{$type}" )->rawParams( $link )->escaped();
                        $hiddens .= Html::hidden( "hide_{$type}_log", $val ) . "\n";
                }
+
                // Build links
                return '<small>' . $this->getLanguage()->pipeList( $links ) . '</small>' . $hiddens;
        }
@@ -191,6 +192,7 @@ class LogEventsList extends ContextSource {
                        unset( $this->mDefaultQuery['month'] );
                        unset( $this->mDefaultQuery['year'] );
                }
+
                return $this->mDefaultQuery;
        }
 
@@ -202,6 +204,7 @@ class LogEventsList extends ContextSource {
                $queryType = count( $queryTypes ) == 1 ? $queryTypes[0] : '';
                $selector = $this->getTypeSelector();
                $selector->setDefault( $queryType );
+
                return $selector->getHtml();
        }
 
@@ -242,9 +245,15 @@ class LogEventsList extends ContextSource {
         * @return String: Formatted HTML
         */
        private function getUserInput( $user ) {
-               return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( $this->msg( 'specialloguserlabel' )->text(), 'user', 'mw-log-user', 15, $user ) .
-                       '</span>';
+               $label = Xml::inputLabel(
+                       $this->msg( 'specialloguserlabel' )->text(),
+                       'user',
+                       'mw-log-user',
+                       15,
+                       $user
+               );
+
+               return '<span style="white-space: nowrap">' . $label . '</span>';
        }
 
        /**
@@ -252,9 +261,15 @@ class LogEventsList extends ContextSource {
         * @return String: Formatted HTML
         */
        private function getTitleInput( $title ) {
-               return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( $this->msg( 'speciallogtitlelabel' )->text(), 'page', 'mw-log-page', 20, $title ) .
-                       '</span>';
+               $label = Xml::inputLabel(
+                       $this->msg( 'speciallogtitlelabel' )->text(),
+                       'page',
+                       'mw-log-page',
+                       20,
+                       $title
+               );
+
+               return '<span style="white-space: nowrap">' . $label .  '</span>';
        }
 
        /**
@@ -281,6 +296,7 @@ class LogEventsList extends ContextSource {
                        return Xml::inputLabel( $this->msg( 'revdelete-offender' )->text(), 'offender',
                                'mw-log-offender', 20, $offender );
                }
+
                return '';
        }
 
@@ -343,8 +359,11 @@ class LogEventsList extends ContextSource {
         * @return string
         */
        private function getShowHideLinks( $row ) {
-               if ( ( $this->flags == self::NO_ACTION_LINK ) // we don't want to see the links
-                       || $row->log_type == 'suppress' ) { // no one can hide items from the suppress log
+               // We don't want to see the links and
+               // no one can hide items from the suppress log.
+               if ( ( $this->flags == self::NO_ACTION_LINK )
+                       || $row->log_type == 'suppress'
+               ) {
                        return '';
                }
                $del = '';
@@ -353,14 +372,21 @@ class LogEventsList extends ContextSource {
                if ( $user->isAllowed( 'deletedhistory' ) ) {
                        $canHide = $user->isAllowed( 'deletelogentry' );
                        if ( $row->log_deleted || $canHide ) {
-                               if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES ) { // Show checkboxes instead of links.
-                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
+                               // Show checkboxes instead of links.
+                               if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES ) {
+                                       // If event was hidden from sysops
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) {
                                                $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
                                        } else {
-                                               $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
+                                               $del = Xml::check(
+                                                       'showhiderevisions',
+                                                       false,
+                                                       array( 'name' => 'ids[' . $row->log_id . ']' )
+                                               );
                                        }
                                } else {
-                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
+                                       // If event was hidden from sysops
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) {
                                                $del = Linker::revDeleteLinkDisabled( $canHide );
                                        } else {
                                                $query = array(
@@ -368,11 +394,16 @@ class LogEventsList extends ContextSource {
                                                        'type' => 'logging',
                                                        'ids' => $row->log_id,
                                                );
-                                               $del = Linker::revDeleteLink( $query, self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide );
+                                               $del = Linker::revDeleteLink(
+                                                       $query,
+                                                       self::isDeleted( $row, LogPage::DELETED_RESTRICTED ),
+                                                       $canHide
+                                               );
                                        }
                                }
                        }
                }
+
                return $del;
        }
 
@@ -394,6 +425,7 @@ class LogEventsList extends ContextSource {
                                $match = $wgUser->isAllowed( $right );
                        }
                }
+
                return $match;
        }
 
@@ -431,6 +463,7 @@ class LogEventsList extends ContextSource {
                                global $wgUser;
                                $user = $wgUser;
                        }
+
                        return $user->isAllowed( $permission );
                } else {
                        return true;
@@ -613,6 +646,7 @@ class LogEventsList extends ContextSource {
                } elseif ( $hiddenLogs ) {
                        return 'log_type NOT IN (' . $db->makeList( $hiddenLogs ) . ')';
                }
+
                return false;
        }
 }
index 8f60aee..ab6e35e 100644 (file)
@@ -154,6 +154,7 @@ class LogFormatter {
                $this->plaintext = true;
                $text = $this->getActionText();
                $this->plaintext = false;
+
                return $text;
        }
 
@@ -224,15 +225,19 @@ class LogFormatter {
                                                $text = wfMessage( 'undeletedarticle' )
                                                        ->rawParams( $target )->inContentLanguage()->escaped();
                                                break;
+                                       // @codingStandardsIgnoreStart Long line
                                        //case 'revision': // Revision deletion
                                        //case 'event': // Log deletion
-                                               // see https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/LogPage.php?&pathrev=97044&r1=97043&r2=97044
+                                       // see https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/LogPage.php?&pathrev=97044&r1=97043&r2=97044
                                        //default:
+                                       // @codingStandardsIgnoreEnd
                                }
                                break;
 
                        case 'patrol':
+                               // @codingStandardsIgnoreStart Long line
                                // https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/PatrolLog.php?&pathrev=97495&r1=97494&r2=97495
+                               // @codingStandardsIgnoreEnd
                                // Create a diff link to the patrolled revision
                                if ( $entry->getSubtype() === 'patrol' ) {
                                        $diffLink = htmlspecialchars(
@@ -247,18 +252,18 @@ class LogFormatter {
 
                        case 'protect':
                                switch ( $entry->getSubtype() ) {
-                               case 'protect':
-                                       $text = wfMessage( 'protectedarticle' )
-                                               ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
-                                       break;
-                               case 'unprotect':
-                                       $text = wfMessage( 'unprotectedarticle' )
-                                               ->rawParams( $target )->inContentLanguage()->escaped();
-                                       break;
-                               case 'modify':
-                                       $text = wfMessage( 'modifiedarticleprotection' )
-                                               ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
-                                       break;
+                                       case 'protect':
+                                               $text = wfMessage( 'protectedarticle' )
+                                                       ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
+                                               break;
+                                       case 'unprotect':
+                                               $text = wfMessage( 'unprotectedarticle' )
+                                                       ->rawParams( $target )->inContentLanguage()->escaped();
+                                               break;
+                                       case 'modify':
+                                               $text = wfMessage( 'modifiedarticleprotection' )
+                                                       ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
+                                               break;
                                }
                                break;
 
@@ -316,8 +321,7 @@ class LogFormatter {
                                                break;
                                }
                                break;
-
-                       // case 'suppress' --private log -- aaron  (sign your messages so we know who to blame in a few years :-D)
+                       // case 'suppress' --private log -- aaron  (so we know who to blame in a few years :-D)
                        // default:
                }
                if ( is_null( $text ) ) {
@@ -326,6 +330,7 @@ class LogFormatter {
 
                $this->plaintext = false;
                $this->irctext = false;
+
                return $text;
        }
 
@@ -359,6 +364,7 @@ class LogFormatter {
        protected function getActionMessage() {
                $message = $this->msg( $this->getMessageKey() );
                $message->params( $this->getMessageParameters() );
+
                return $message;
        }
 
@@ -421,6 +427,7 @@ class LogFormatter {
                                }
                        }
                }
+
                return $params;
        }
 
@@ -446,6 +453,7 @@ class LogFormatter {
 
                // Bad things happens if the numbers are not in correct order
                ksort( $params );
+
                return $this->parsedParameters = $params;
        }
 
@@ -538,6 +546,7 @@ class LogFormatter {
                        }
                        $link = '[[' . $title->getPrefixedText() . ']]';
                }
+
                return $link;
        }
 
@@ -592,6 +601,7 @@ class LogFormatter {
 
                $content = $this->msg( $message )->escaped();
                $attribs = array( 'class' => 'history-deleted' );
+
                return Html::rawElement( 'span', $attribs, $content );
        }
 
@@ -605,6 +615,7 @@ class LogFormatter {
                        return $content;
                }
                $attribs = array( 'class' => 'history-deleted' );
+
                return Html::rawElement( 'span', $attribs, $content );
        }
 
@@ -635,6 +646,7 @@ class LogFormatter {
                                );
                        }
                }
+
                return $element;
        }
 
@@ -654,7 +666,6 @@ class LogFormatter {
                // problems with extensions
                return $this->getMessageParameters();
        }
-
 }
 
 /**
@@ -735,7 +746,9 @@ class LegacyLogFormatter extends LogFormatter {
                $subtype = $this->entry->getSubtype();
 
                // Show unblock/change block link
-               if ( ( $type == 'block' || $type == 'suppress' ) && ( $subtype == 'block' || $subtype == 'reblock' ) ) {
+               if ( ( $type == 'block' || $type == 'suppress' )
+                       && ( $subtype == 'block' || $subtype == 'reblock' )
+               ) {
                        if ( !$this->context->getUser()->isAllowed( 'block' ) ) {
                                return '';
                        }
@@ -750,10 +763,13 @@ class LegacyLogFormatter extends LogFormatter {
                                        $this->msg( 'change-blocklink' )->escaped()
                                )
                        );
+
                        return $this->msg( 'parentheses' )->rawParams(
                                $this->context->getLanguage()->pipeList( $links ) )->escaped();
                // Show change protection link
-               } elseif ( $type == 'protect' && ( $subtype == 'protect' || $subtype == 'modify' || $subtype == 'unprotect' ) ) {
+               } elseif ( $type == 'protect'
+                       && ( $subtype == 'protect' || $subtype == 'modify' || $subtype == 'unprotect' )
+               ) {
                        $links = array(
                                Linker::link( $title,
                                        $this->msg( 'hist' )->escaped(),
@@ -772,6 +788,7 @@ class LegacyLogFormatter extends LogFormatter {
                                        array( 'action' => 'protect' )
                                );
                        }
+
                        return $this->msg( 'parentheses' )->rawParams(
                                $this->context->getLanguage()->pipeList( $links ) )->escaped();
                // Show unmerge link
@@ -791,6 +808,7 @@ class LegacyLogFormatter extends LogFormatter {
                                        'mergepoint' => $params[4]
                                )
                        );
+
                        return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                }
 
@@ -813,4 +831,3 @@ class LegacyLogFormatter extends LogFormatter {
                return $this->revert;
        }
 }
-
index cc473c1..51c41a8 100644 (file)
@@ -118,6 +118,7 @@ class LogPage {
                        );
                        $rc->notifyRC2UDP();
                }
+
                return $newId;
        }
 
@@ -175,6 +176,7 @@ class LogPage {
         */
        public static function validTypes() {
                global $wgLogTypes;
+
                return $wgLogTypes;
        }
 
@@ -216,6 +218,7 @@ class LogPage {
         */
        public static function logHeader( $type ) {
                global $wgLogHeaders;
+
                return wfMessage( $wgLogHeaders[$type] )->parse();
        }
 
@@ -233,8 +236,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 ) ) {
@@ -254,7 +257,8 @@ class LogPage {
                                $titleLink = self::getTitleLink( $type, $langObjOrNull, $title, $params );
 
                                if ( count( $params ) == 0 ) {
-                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $titleLink )->inLanguage( $langObj )->escaped();
+                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $titleLink )
+                                               ->inLanguage( $langObj )->escaped();
                                } else {
                                        $details = '';
                                        array_unshift( $params, $titleLink );
@@ -262,7 +266,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] );
@@ -281,11 +290,16 @@ class LogPage {
 
                                                // Cascading flag...
                                                if ( $params[2] ) {
-                                                       $details .= ' [' . wfMessage( 'protect-summary-cascade' )->inLanguage( $langObj )->text() . ']';
+                                                       $text = wfMessage( 'protect-summary-cascade' )
+                                                               ->inLanguage( $langObj )->text();
+                                                       $details .= ' ';
+                                                       $details .= wfMessage( 'brackets', $text )->inLanguage( $langObj )->text();
+
                                                }
                                        }
 
-                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $params )->inLanguage( $langObj )->escaped() . $details;
+                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $params )
+                                                       ->inLanguage( $langObj )->escaped() . $details;
                                }
                        }
                } else {
@@ -402,7 +416,8 @@ class LogPage {
        /**
         * Add a log entry
         *
-        * @param string $action one of '', 'block', 'protect', 'rights', 'delete', 'upload', 'move', 'move_redir'
+        * @param string $action one of '', 'block', 'protect', 'rights', 'delete',
+        *   'upload', 'move', 'move_redir'
         * @param $target Title object
         * @param string $comment description associated
         * @param array $params parameters passed later to wfMessage function
@@ -523,10 +538,12 @@ class LogPage {
                        return ''; //nothing to do
                }
                $flags = explode( ',', $flags );
+               $flagsCount = count( $flags );
 
-               for ( $i = 0; $i < count( $flags ); $i++ ) {
+               for ( $i = 0; $i < $flagsCount; $i++ ) {
                        $flags[$i] = self::formatBlockFlag( $flags[$i], $lang );
                }
+
                return wfMessage( 'parentheses' )->inLanguage( $lang )
                        ->rawParams( $lang->commaList( $flags ) )->escaped();
        }
@@ -593,6 +610,7 @@ class LogPage {
                } else {
                        $key = 'log-description-' . $this->type;
                }
+
                return wfMessage( $key );
        }
 
@@ -609,6 +627,7 @@ class LogPage {
                        // '' always returns true with $user->isAllowed()
                        $restriction = '';
                }
+
                return $restriction;
        }
 
@@ -619,7 +638,7 @@ class LogPage {
         */
        public function isRestricted() {
                $restriction = $this->getRestriction();
+
                return $restriction !== '' && $restriction !== '*';
        }
-
 }
index a11dcb7..1c613e8 100644 (file)
@@ -67,6 +67,7 @@ class LogPager extends ReverseChronologicalPager {
                $query['user'] = $this->performer;
                $query['month'] = $this->mMonth;
                $query['year'] = $this->mYear;
+
                return $query;
        }
 
@@ -87,6 +88,7 @@ class LogPager extends ReverseChronologicalPager {
                                }
                        }
                }
+
                return $filters;
        }
 
@@ -245,8 +247,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.
@@ -269,6 +271,7 @@ class LogPager extends ReverseChronologicalPager {
                # Add ChangeTags filter query
                ChangeTags::modifyDisplayQuery( $info['tables'], $info['fields'], $info['conds'],
                        $info['join_conds'], $info['options'], $this->mTagFilter );
+
                return $info;
        }
 
@@ -306,6 +309,7 @@ class LogPager extends ReverseChronologicalPager {
                        $this->mResult->seek( 0 );
                }
                wfProfileOut( __METHOD__ );
+
                return '';
        }
 
index 0978f97..3913016 100644 (file)
@@ -31,6 +31,7 @@
 class MoveLogFormatter extends LogFormatter {
        public function getPreloadTitles() {
                $params = $this->extractParameters();
+
                return array( Title::newFromText( $params[3] ) );
        }
 
@@ -40,6 +41,7 @@ class MoveLogFormatter extends LogFormatter {
                if ( isset( $params[4] ) && $params[4] === '1' ) {
                        $key .= '-noredirect';
                }
+
                return $key;
        }
 
@@ -49,14 +51,15 @@ class MoveLogFormatter extends LogFormatter {
                $newname = $this->makePageLink( Title::newFromText( $params[3] ) );
                $params[2] = Message::rawParam( $oldname );
                $params[3] = Message::rawParam( $newname );
+
                return $params;
        }
 
        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 '';
                }
 
@@ -77,6 +80,7 @@ class MoveLogFormatter extends LogFormatter {
                                'wpMovetalk' => 0
                        )
                );
+
                return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
        }
 }
index 602728b..c870d51 100644 (file)
@@ -41,6 +41,7 @@ class NewUsersLogFormatter extends LogFormatter {
                        $params[2] = Message::rawParam( $this->makeUserLink( $target ) );
                        $params[3] = $target->getName();
                }
+
                return $params;
        }
 
@@ -51,6 +52,7 @@ class NewUsersLogFormatter extends LogFormatter {
                        # not needed and can contain incorrect links
                        return '';
                }
+
                return parent::getComment();
        }
 
@@ -60,6 +62,7 @@ class NewUsersLogFormatter extends LogFormatter {
                        //add the user talk to LinkBatch for the userLink
                        return array( Title::makeTitle( NS_USER_TALK, $this->entry->getTarget()->getText() ) );
                }
+
                return array();
        }
 }
index bb76d5a..40be52c 100644 (file)
@@ -27,7 +27,6 @@
  * logs of patrol events
  */
 class PatrolLog {
-
        /**
         * Record a log event for a change being patrolled
         *
@@ -65,6 +64,7 @@ class PatrolLog {
                if ( !$auto ) {
                        $entry->publish( $logid, 'udp' );
                }
+
                return true;
        }
 
@@ -82,5 +82,4 @@ class PatrolLog {
                        '6::auto' => (int)$auto
                );
        }
-
 }
index 507039b..2abaf17 100644 (file)
@@ -35,6 +35,7 @@ class PatrolLogFormatter extends LogFormatter {
                if ( isset( $params[5] ) && $params[5] ) {
                        $key .= '-auto';
                }
+
                return $key;
        }
 
@@ -58,6 +59,7 @@ class PatrolLogFormatter extends LogFormatter {
                }
 
                $params[3] = Message::rawParam( $revlink );
+
                return $params;
        }
 }
index d3daf6e..ac252ae 100644 (file)
@@ -55,6 +55,7 @@ class RightsLogFormatter extends LogFormatter {
                if ( !isset( $params[3] ) && !isset( $params[4] ) ) {
                        $key .= '-legacy';
                }
+
                return $key;
        }
 
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 c53c829..56dcae0 100644 (file)
@@ -39,7 +39,7 @@ abstract class MediaHandler {
        /**
         * Get a MediaHandler for a given MIME type from the instance cache
         *
-        * @param $type string
+        * @param string $type
         *
         * @return MediaHandler
         */
@@ -70,7 +70,7 @@ abstract class MediaHandler {
         * Return true to accept the parameter, and false to reject it.
         * If you return false, the parser will do something quiet and forgiving.
         *
-        * @param $name
+        * @param string $name
         * @param $value
         */
        abstract function validateParam( $name, $value );
@@ -78,16 +78,16 @@ abstract class MediaHandler {
        /**
         * Merge a parameter array into a string appropriate for inclusion in filenames
         *
-        * @param $params array Array of parameters that have been through normaliseParams.
-        * @return String
+        * @param array $params Array of parameters that have been through normaliseParams.
+        * @return string
         */
        abstract function makeParamString( $params );
 
        /**
         * Parse a param string made with makeParamString back into an array
         *
-        * @param $str string The parameter string without file name (e.g. 122px)
-        * @return Array|Boolean Array of parameters or false on failure.
+        * @param string $str The parameter string without file name (e.g. 122px)
+        * @return array|bool Array of parameters or false on failure.
         */
        abstract function parseParamString( $str );
 
@@ -104,19 +104,19 @@ abstract class MediaHandler {
         * Get an image size array like that returned by getimagesize(), or false if it
         * can't be determined.
         *
-        * @param $image File: the image object, or false if there isn't one
+        * @param File $image The image object, or false if there isn't one
         * @param string $path the filename
-        * @return Array Follow the format of PHP getimagesize() internal function. See http://www.php.net/getimagesize
+        * @return array Follow the format of PHP getimagesize() internal function. See http://www.php.net/getimagesize
         */
        abstract function getImageSize( $image, $path );
 
        /**
         * Get handler-specific metadata which will be saved in the img_metadata field.
         *
-        * @param $image File: the image object, or false if there isn't one.
+        * @param File $image The image object, or false if there isn't one.
         *   Warning, FSFile::getPropsFromPath might pass an (object)array() instead (!)
-        * @param string $path the filename
-        * @return String
+        * @param string $path The filename
+        * @return string
         */
        function getMetadata( $image, $path ) {
                return '';
@@ -135,7 +135,7 @@ abstract class MediaHandler {
         * version 3 it might add to the end of the array the element 'foo=3'. if the core metadata
         * version is 2, the end version string would look like '2;foo=3'.
         *
-        * @return string version string
+        * @return string Version string
         */
        static function getMetadataVersion() {
                $version = array( '2' ); // core metadata version
@@ -149,9 +149,9 @@ abstract class MediaHandler {
         * By default just returns $metadata, but can be used to allow
         * media handlers to convert between metadata versions.
         *
-        * @param $metadata Mixed String or Array metadata array (serialized if string)
-        * @param $version Integer target version
-        * @return Array serialized metadata in specified version, or $metadata on fail.
+        * @param mixed|string|array $metadata Metadata array (serialized if string)
+        * @param int $version Target version
+        * @return array Serialized metadata in specified version, or $metadata on fail.
         */
        function convertMetadataVersion( $metadata, $version = 1 ) {
                if ( !is_array( $metadata ) ) {
@@ -167,7 +167,7 @@ abstract class MediaHandler {
 
        /**
         * Get a string describing the type of metadata, for display purposes.
-        *
+        * @param $image
         * @return string
         */
        function getMetadataType( $image ) {
@@ -217,7 +217,7 @@ abstract class MediaHandler {
         *
         * @param File $file
         *
-        * @return Array or false if interface not supported
+        * @return array|bool False if interface not supported
         * @since 1.23
         */
        public function getCommonMetaArray( File $file ) {
@@ -241,7 +241,7 @@ abstract class MediaHandler {
         * Get a MediaTransformOutput object representing the transformed output. Does not
         * actually do the transform.
         *
-        * @param $image File: the image object
+        * @param File $image The image object
         * @param string $dstPath filesystem destination path
         * @param string $dstUrl Destination URL to use in output HTML
         * @param array $params Arbitrary set of parameters validated by $this->validateParam()
@@ -255,12 +255,12 @@ abstract class MediaHandler {
         * Get a MediaTransformOutput object representing the transformed output. Does the
         * transform unless $flags contains self::TRANSFORM_LATER.
         *
-        * @param $image File: the image object
+        * @param File $image The image object
         * @param string $dstPath filesystem destination path
         * @param string $dstUrl destination URL to use in output HTML
         * @param array $params arbitrary set of parameters validated by $this->validateParam()
         *   Note: These parameters have *not* gone through $this->normaliseParams()
-        * @param $flags Integer: a bitfield, may contain self::TRANSFORM_LATER
+        * @param int $flags A bitfield, may contain self::TRANSFORM_LATER
         *
         * @return MediaTransformOutput
         */
@@ -269,9 +269,9 @@ abstract class MediaHandler {
        /**
         * Get the thumbnail extension and MIME type for a given source MIME type
         *
-        * @param String $ext Extension of original file
-        * @param String $mime Mime type of original file
-        * @param Array $params Handler specific rendering parameters
+        * @param string $ext Extension of original file
+        * @param string $mime Mime type of original file
+        * @param array $params Handler specific rendering parameters
         * @return array thumbnail extension and MIME type
         */
        function getThumbType( $ext, $mime, $params = null ) {
@@ -292,8 +292,8 @@ abstract class MediaHandler {
 
        /**
         * Get useful response headers for GET/HEAD requests for a file with the given metadata
-        * @param $metadata mixed Result of the getMetadata() function of this handler for a file
-        * @return Array
+        * @param mixed $metadata Result of the getMetadata() function of this handler for a file
+        * @return array
         */
        public function getStreamHeaders( $metadata ) {
                return array();
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 135e0e8..adcf762 100644 (file)
@@ -55,7 +55,7 @@ class RedisBagOStuff extends BagOStuff {
         *     flap, for example if it is in swap death.
         */
        function __construct( $params ) {
-               $redisConf = array( 'serializer' => 'php' );
+               $redisConf = array( 'serializer' => 'none' ); // manage that in this class
                foreach ( array( 'connectTimeout', 'persistent', 'password' ) as $opt ) {
                        if ( isset( $params[$opt] ) ) {
                                $redisConf[$opt] = $params[$opt];
@@ -72,38 +72,38 @@ class RedisBagOStuff extends BagOStuff {
        }
 
        public function get( $key, &$casToken = null ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                try {
-                       $result = $conn->get( $key );
+                       $result = $this->unserialize( $conn->get( $key ) );
                } catch ( RedisException $e ) {
                        $result = false;
                        $this->handleException( $server, $conn, $e );
                }
                $casToken = $result;
+
                $this->logRequest( 'get', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function set( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                $expiry = $this->convertToRelative( $expiry );
                try {
-                       if ( !$expiry ) {
-                               // No expiry, that is very different from zero expiry in Redis
-                               $result = $conn->set( $key, $value );
+                       if ( $expiry ) {
+                               $result = $conn->setex( $key, $expiry, $this->serialize( $value ) );
                        } else {
-                               $result = $conn->setex( $key, $expiry, $value );
+                               // No expiry, that is very different from zero expiry in Redis
+                               $result = $conn->set( $key, $this->serialize( $value ) );
                        }
                } catch ( RedisException $e ) {
                        $result = false;
@@ -111,15 +111,14 @@ class RedisBagOStuff extends BagOStuff {
                }
 
                $this->logRequest( 'set', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function cas( $casToken, $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                $expiry = $this->convertToRelative( $expiry );
@@ -127,25 +126,18 @@ class RedisBagOStuff extends BagOStuff {
                        $conn->watch( $key );
 
                        if ( $this->get( $key ) !== $casToken ) {
-                               wfProfileOut( __METHOD__ );
+                               $conn->unwatch();
                                return false;
                        }
 
+                       // multi()/exec() will fail atomically if the key changed since watch()
                        $conn->multi();
-
-                       if ( !$expiry ) {
-                               // No expiry, that is very different from zero expiry in Redis
-                               $conn->set( $key, $value );
+                       if ( $expiry ) {
+                               $conn->setex( $key, $expiry, $this->serialize( $value ) );
                        } else {
-                               $conn->setex( $key, $expiry, $value );
+                               // No expiry, that is very different from zero expiry in Redis
+                               $conn->set( $key, $this->serialize( $value ) );
                        }
-
-                       /*
-                        * multi()/exec() (transactional mode) allows multiple values to
-                        * be set/get at once and will return an array of results, in
-                        * the order they were set/get. In this case, we only set 1
-                        * value, which should (in case of success) result in true.
-                        */
                        $result = ( $conn->exec() == array( true ) );
                } catch ( RedisException $e ) {
                        $result = false;
@@ -153,15 +145,14 @@ class RedisBagOStuff extends BagOStuff {
                }
 
                $this->logRequest( 'cas', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function delete( $key, $time = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                try {
@@ -172,13 +163,14 @@ class RedisBagOStuff extends BagOStuff {
                        $result = false;
                        $this->handleException( $server, $conn, $e );
                }
+
                $this->logRequest( 'delete', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function getMulti( array $keys ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                $batches = array();
                $conns = array();
                foreach ( $keys as $key ) {
@@ -204,7 +196,7 @@ class RedisBagOStuff extends BagOStuff {
                                }
                                foreach ( $batchResult as $i => $value ) {
                                        if ( $value !== false ) {
-                                               $result[$batchKeys[$i]] = $value;
+                                               $result[$batchKeys[$i]] = $this->unserialize( $value );
                                        }
                                }
                        } catch ( RedisException $e ) {
@@ -214,29 +206,32 @@ class RedisBagOStuff extends BagOStuff {
 
                $this->debug( "getMulti for " . count( $keys ) . " keys " .
                        "returned " . count( $result ) . " results" );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function add( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                $expiry = $this->convertToRelative( $expiry );
                try {
-                       $result = $conn->setnx( $key, $value );
-                       if ( $result && $expiry ) {
+                       if ( $expiry ) {
+                               $conn->multi();
+                               $conn->setnx( $key, $this->serialize( $value ) );
                                $conn->expire( $key, $expiry );
+                               $result = ( $conn->exec() == array( true, true ) );
+                       } else {
+                               $result = $conn->setnx( $key, $this->serialize( $value ) );
                        }
                } catch ( RedisException $e ) {
                        $result = false;
                        $this->handleException( $server, $conn, $e );
                }
+
                $this->logRequest( 'add', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
@@ -245,23 +240,22 @@ class RedisBagOStuff extends BagOStuff {
         * with WATCH or scripting, but this function is rarely used.
         */
        public function replace( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                if ( !$conn->exists( $key ) ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
 
                $expiry = $this->convertToRelative( $expiry );
                try {
                        if ( !$expiry ) {
-                               $result = $conn->set( $key, $value );
+                               $result = $conn->set( $key, $this->serialize( $value ) );
                        } else {
-                               $result = $conn->setex( $key, $expiry, $value );
+                               $result = $conn->setex( $key, $expiry, $this->serialize( $value ) );
                        }
                } catch ( RedisException $e ) {
                        $result = false;
@@ -269,10 +263,57 @@ class RedisBagOStuff extends BagOStuff {
                }
 
                $this->logRequest( 'replace', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
+       /**
+        * Non-atomic implementation of incr().
+        *
+        * Probably all callers actually want incr() to atomically initialise
+        * values to zero if they don't exist, as provided by the Redis INCR
+        * command. But we are constrained by the memcached-like interface to
+        * return null in that case. Once the key exists, further increments are
+        * atomic.
+        */
+       public function incr( $key, $value = 1 ) {
+               $section = new ProfileSection( __METHOD__ );
+
+               list( $server, $conn ) = $this->getConnection( $key );
+               if ( !$conn ) {
+                       return false;
+               }
+               if ( !$conn->exists( $key ) ) {
+                       return null;
+               }
+               try {
+                       $result = $this->unserialize( $conn->incrBy( $key, $value ) );
+               } catch ( RedisException $e ) {
+                       $result = false;
+                       $this->handleException( $server, $conn, $e );
+               }
+
+               $this->logRequest( 'incr', $key, $server, $result );
+               return $result;
+       }
+
+       /**
+        * @param mixed $data
+        * @return string
+        */
+       protected function serialize( $data ) {
+               // Ignore digit strings and ints so INCR/DECR work
+               return ( is_int( $data ) || ctype_digit( $data ) ) ? $data : serialize( $data );
+       }
+
+       /**
+        * @param string $data
+        * @return mixed
+        */
+       protected function unserialize( $data ) {
+               // Ignore digit strings and ints so INCR/DECR work
+               return ( is_int( $data ) || ctype_digit( $data ) ) ? $data : unserialize( $data );
+       }
+
        /**
         * Get a Redis object with a connection suitable for fetching the specified key
         * @return Array (server, RedisConnRef) or (false, false)
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..429bcec 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 );
@@ -407,7 +408,7 @@ abstract class ResourceLoaderModule {
                }
 
                $cache = wfGetCache( CACHE_ANYTHING );
-               $key = wfMemcKey( 'resourceloader', 'modulemodifiedhash', $this->getName() );
+               $key = wfMemcKey( 'resourceloader', 'modulemodifiedhash', $this->getName(), $hash );
 
                $data = $cache->get( $key );
                if ( is_array( $data ) && $data['hash'] === $hash ) {
@@ -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 9064263..9004267 100644 (file)
  */
 class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
 
-       /* Protected Methods */
+       /* Protected Members */
+
        protected $origin = self::ORIGIN_USER_SITEWIDE;
+       protected $targets = array( 'desktop', 'mobile' );
+
+       /* Protected Methods */
 
        /**
         * @param $context ResourceLoaderContext
index 7a04e47..7454b65 100644 (file)
  */
 class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
 
-       /* Protected Methods */
+       /* Protected Members */
+
        protected $origin = self::ORIGIN_USER_INDIVIDUAL;
 
+       /* Protected Methods */
+
        /**
         * @param $context ResourceLoaderContext
         * @return array
index 0b7e196..1df8c56 100644 (file)
@@ -33,6 +33,8 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
 
        protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
 
+       protected $targets = array( 'desktop', 'mobile' );
+
        /* Methods */
 
        /**
index 92ebbe9..cdc9611 100644 (file)
@@ -30,6 +30,8 @@ class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
 
        protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
 
+       protected $targets = array( 'desktop', 'mobile' );
+
        /* Methods */
 
        /**
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 23203ea..d306744 100644 (file)
@@ -562,6 +562,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                $nondefaults = $opts->getChangedValues();
 
                $panel = array();
+               $panel[] = self::makeLegend( $this->getContext() );
                $panel[] = $this->optionsPanel( $defaults, $nondefaults );
                $panel[] = '<hr />';
 
@@ -653,6 +654,55 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                return $extraOpts;
        }
 
+       /**
+        * Return the legend displayed within the fieldset
+        *
+        * @param $context the object available as $this in non-static functions
+        * @return string
+        */
+       public static function makeLegend( IContextSource $context ) {
+               global $wgRecentChangesFlags;
+               $user = $context->getUser();
+               # The legend showing what the letters and stuff mean
+               $legend = Xml::openElement( 'dl', array( 'class' => 'mw-changeslist-legend' ) ) . "\n";
+               # Iterates through them and gets the messages for both letter and tooltip
+               $legendItems = $wgRecentChangesFlags;
+               if ( !$user->useRCPatrol() ) {
+                       unset( $legendItems['unpatrolled'] );
+               }
+               foreach ( $legendItems as $key => $legendInfo ) { # generate items of the legend
+                       $label = $legendInfo['title'];
+                       $letter = $legendInfo['letter'];
+                       $cssClass = isset( $legendInfo['class'] ) ? $legendInfo['class'] : $key;
+
+                       $legend .= Xml::element( 'dt',
+                               array( 'class' => $cssClass ), $context->msg( $letter )->text()
+                       ) . "\n";
+                       if ( $key === 'newpage' ) {
+                               $legend .= Xml::openElement( 'dd' );
+                               $legend .= $context->msg( $label )->escaped();
+                               $legend .= ' ' . $context->msg( 'recentchanges-legend-newpage' )->parse();
+                               $legend .= Xml::closeElement( 'dd' ) . "\n";
+                       } else {
+                               $legend .= Xml::element( 'dd', array(),
+                                       $context->msg( $label )->text()
+                               ) . "\n";
+                       }
+               }
+               # (+-123)
+               $legend .= Xml::tags( 'dt',
+                       array( 'class' => 'mw-plusminus-pos' ),
+                       $context->msg( 'recentchanges-legend-plusminus' )->parse()
+               ) . "\n";
+               $legend .= Xml::element(
+                       'dd',
+                       array( 'class' => 'mw-changeslist-legend-plusminus' ),
+                       $context->msg( 'recentchanges-label-plusminus' )->text()
+               ) . "\n";
+               $legend .= Xml::closeElement( 'dl' ) . "\n";
+               return $legend;
+       }
+
        /**
         * Send the text to be displayed above the options
         *
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 d4aed11..d33851d 100644 (file)
@@ -124,6 +124,8 @@ class PageArchive {
 
                $dbr = wfGetDB( DB_SLAVE );
 
+               $tables = array( 'archive' );
+
                $fields = array(
                        'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text',
                        'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1',
@@ -134,12 +136,28 @@ class PageArchive {
                        $fields[] = 'ar_content_model';
                }
 
-               $res = $dbr->select( 'archive',
+               $conds = array( 'ar_namespace' => $this->title->getNamespace(),
+                               'ar_title' => $this->title->getDBkey() );
+
+               $options = array( 'ORDER BY' => 'ar_timestamp DESC' );
+
+               $join_conds = array();
+
+               ChangeTags::modifyDisplayQuery(
+                       $tables,
                        $fields,
-                       array( 'ar_namespace' => $this->title->getNamespace(),
-                               'ar_title' => $this->title->getDBkey() ),
+                       $conds,
+                       $join_conds,
+                       $options
+               );
+
+               $res = $dbr->select( $tables,
+                       $fields,
+                       $conds,
                        __METHOD__,
-                       array( 'ORDER BY' => 'ar_timestamp DESC' ) );
+                       $options,
+                       $join_conds
+               );
 
                return $dbr->resultObject( $res );
        }
@@ -1083,6 +1101,16 @@ class SpecialUndelete extends SpecialPage {
                        $rdel = " $rdel";
                }
 
+               $minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : '';
+
+               $tags = wfGetDB( DB_SLAVE )->selectField(
+                       'tag_summary',
+                       'ts_tags',
+                       array( 'ts_rev_id' => $rev->getId() ),
+                       __METHOD__
+               );
+               $tagSummary = ChangeTags::formatSummaryRow( $tags, 'deleteddiff' );
+
                return '<div id="mw-diff-' . $prefix . 'title1"><strong>' .
                        Linker::link(
                                $targetPage,
@@ -1100,7 +1128,10 @@ class SpecialUndelete extends SpecialPage {
                        Linker::revUserTools( $rev ) . '<br />' .
                        '</div>' .
                        '<div id="mw-diff-' . $prefix . 'title3">' .
-                       Linker::revComment( $rev ) . $rdel . '<br />' .
+                       $minor . Linker::revComment( $rev ) . $rdel . '<br />' .
+                       '</div>' .
+                       '<div id="mw-diff-' . $prefix . 'title5">' .
+                       $tagSummary[0] . '<br />' .
                        '</div>';
        }
 
@@ -1367,6 +1398,9 @@ class SpecialUndelete extends SpecialPage {
                // User links
                $userLink = Linker::revUserTools( $rev );
 
+               // Minor edit
+               $minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : '';
+
                // Revision text size
                $size = $row->ar_len;
                if ( !is_null( $size ) ) {
@@ -1376,14 +1410,21 @@ class SpecialUndelete extends SpecialPage {
                // Edit summary
                $comment = Linker::revComment( $rev );
 
+               // Tags
+               $attribs = array();
+               list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'deletedhistory' );
+               if ( $classes ) {
+                       $attribs['class'] = implode( ' ', $classes );
+               }
+
                // Revision delete links
                $revdlink = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
 
-               $revisionRow = $this->msg( 'undelete-revisionrow' )
-                       ->rawParams( $checkBox, $revdlink, $last, $pageLink, $userLink, $revTextSize, $comment )
+               $revisionRow = $this->msg( 'undelete-revision-row' )
+                       ->rawParams( $checkBox, $revdlink, $last, $pageLink, $userLink, $minor, $revTextSize, $comment, $tagSummary )
                        ->escaped();
 
-               return "<li>$revisionRow</li>";
+               return Xml::tags( 'li', $attribs, $revisionRow ) . "\n";
        }
 
        private function formatFileRow( $row ) {
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 2c511f5..9e93881 100644 (file)
@@ -39,6 +39,7 @@ class SpecialWatchlist extends SpecialPage {
 
                $user = $this->getUser();
                $output = $this->getOutput();
+               $output->addModuleStyles( 'mediawiki.special.changeslist' );
 
                # Anons don't get a watchlist
                $this->requireLogin( 'watchlistanontext' );
@@ -153,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;
@@ -255,6 +256,8 @@ class SpecialWatchlist extends SpecialPage {
                        array( 'id' => 'mw-watchlist-options' )
                );
 
+               $form .= SpecialRecentChanges::makeLegend( $this->getContext() );
+
                $tables = array( 'recentchanges', 'watchlist' );
                $fields = RecentChange::selectFields();
                $join_conds = array(
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 0995aed..f556ee7 100644 (file)
@@ -155,6 +155,7 @@ abstract class CdbWriter {
 }
 
 /**
- * Exception for Cdb errors
+ * Exception for Cdb errors.
+ * This explicitly doesn't subclass MWException to encourage reuse.
  */
-class CdbException extends MWException {}
+class CdbException extends Exception {}
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 11b42cf..243a876 100644 (file)
@@ -122,6 +122,10 @@ class LanguageRu 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 dfb6411..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' ),
@@ -432,8 +436,6 @@ $1",
 'ok' => 'Ka göt',
 'retrievedfrom' => 'Geurumpok nibak "$1"',
 'youhavenewmessages' => 'Droëneuh na $1 ($2).',
-'newmessageslink' => 'peusan barô',
-'newmessagesdifflink' => 'neuubah seuneulheuëh',
 'youhavenewmessagesfromusers' => "Droeneuh na $1 nibak {{PLURAL:$3|ureueng nguy la'en|$3 ureueng nguy}} ($2).",
 'youhavenewmessagesmanyusers' => "Droeneuh na $1 nibak ureueng nguy la'en ($2)",
 'newmessageslinkplural' => '{{PLURAL:$1|saboh peusan baro|peusan baro}}',
@@ -944,7 +946,6 @@ Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (
 'preferences' => 'Galak',
 'mypreferences' => 'Atô',
 'prefs-edits' => 'Jumeulah neuandam:',
-'prefsnologin' => 'Hana tamöng lom',
 'changepassword' => 'Gantoe lageuem rahsia',
 'prefs-skin' => 'Kulét',
 'skin-preview' => 'Eu dilèe',
index ef541ee..b91ec0b 100644 (file)
@@ -272,8 +272,6 @@ $1',
 'ok' => 'ok',
 'retrievedfrom' => 'تم الاسترجاع من "$1"',
 'youhavenewmessages' => 'توجد لديك $1 ($2).',
-'newmessageslink' => 'رسائل جديدة',
-'newmessagesdifflink' => 'آخر تغيير',
 'youhavenewmessagesmulti' => 'لديك رسائل جديدة على $1',
 'editsection' => 'modifi el page (baddelha)',
 'editold' => 'modifi el page (baddelha)',
index 999300d..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' ),
@@ -483,8 +481,6 @@ $1",
 'ok' => 'OK',
 'retrievedfrom' => 'Ontsluit van "$1"',
 'youhavenewmessages' => 'U het $1 (sien $2).',
-'newmessageslink' => 'nuwe boodskappe',
-'newmessagesdifflink' => 'die laaste wysiging',
 'youhavenewmessagesfromusers' => "U het $1 van {{PLURAL:$3|'n ander gebruiker|$3 gebruikers}} ($2).",
 'youhavenewmessagesmanyusers' => 'U het $1 van baie gebruikers ($2).',
 'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|nuwe boodskappe}}",
@@ -1329,7 +1325,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'preferences' => 'Voorkeure',
 'mypreferences' => 'Voorkeure',
 'prefs-edits' => 'Aantal wysigings:',
-'prefsnologin' => 'Nie ingeteken nie',
 'changepassword' => 'Verander wagwoord',
 'prefs-skin' => 'Omslag',
 'skin-preview' => 'Voorskou',
@@ -1624,6 +1619,7 @@ As u dit verskaf, sal dit gebruik word om erkenning vir u werk te gee.',
 'recentchanges-label-minor' => "Hierdie is 'n klein wysiging",
 'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer",
 'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie',
+'recentchanges-legend-newpage' => '$1 - nuwe bladsy',
 'rcnote' => "Hier volg die laaste {{PLURAL:$1|'''$1''' wysiging|'''$1''' wysigings}} gedurende die afgelope {{PLURAL:$2|dag|'''$2''' dae}}, soos vanaf $4 om $5.",
 'rcnotefrom' => "Hier volg wysigings sedert '''$2''' (maksimum van '''$1''' word gewys).",
 'rclistfrom' => 'Vertoon wysigings vanaf $1',
@@ -4076,4 +4072,21 @@ Anders kan u die eenvoudige vorm hieronder gebruik. U kommentaar sal by die blad
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|greep|grepe}}',
 'limitreport-expansiondepth' => 'Hoogste uitbreidingsdiepte',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Brei sjablone uit',
+'expand_templates_intro' => 'Hierdie spesiale bladsy lees die invoerteks en vervang al die sjablone rekursief.
+Dit vervang ook ontlederfunksies soos
+<nowiki>{{</nowiki>#language:…}}, en veranderlikes soos
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash; omtrent alles tussen dubbele krulhakkies word vervang.
+Dit word gedoen deur die relevante funksies in die MediaWiki-ontleder te roep.',
+'expand_templates_title' => 'Kontekstitel, vir {{FULLPAGENAME}}, ensovoorts:',
+'expand_templates_input' => 'Invoerteks:',
+'expand_templates_output' => 'Resultaat',
+'expand_templates_xml_output' => 'XML-afvoer',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Verwyder kommentaar',
+'expand_templates_remove_nowiki' => 'Onderdruk <nowiki> etikette in die resultaat',
+'expand_templates_generate_xml' => 'Wys XML-ontledingsboom',
+'expand_templates_preview' => 'Voorskou',
+
 );
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 994c5d5..51cf9d5 100644 (file)
@@ -320,8 +320,6 @@ Shih [[Special:Version|faqen e verzionit]].',
 'ok' => 'OK',
 'retrievedfrom' => 'Marrë nga "$1"',
 'youhavenewmessages' => 'Keni $1 ($2).',
-'newmessageslink' => 'mesazhe të reja',
-'newmessagesdifflink' => 'ndryshimi i fundit',
 'youhavenewmessagesmulti' => 'Keni mesazhe të reja në $1',
 'editsection' => 'redakto',
 'editold' => 'redakto',
@@ -936,7 +934,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
 'preferences' => 'Parapëlqimet',
 'mypreferences' => 'Parapëlqimet e mija',
 'prefs-edits' => 'Numri i redaktimeve:',
-'prefsnologin' => 'Nuk jeni kyçë',
 'changepassword' => 'Ndërrimi i fjalëkalimit',
 'prefs-skin' => 'Doka',
 'skin-preview' => 'Parapâmja',
index 19852bd..de58608 100644 (file)
@@ -294,8 +294,6 @@ $1',
 'ok' => 'እሺ',
 'retrievedfrom' => 'ከ «$1» የተወሰደ',
 'youhavenewmessages' => '$1 አሉዎት ($2)።',
-'newmessageslink' => 'አዲስ መልእክቶች',
-'newmessagesdifflink' => 'የመጨረሻ ለውጥ',
 'youhavenewmessagesfromusers' => 'ከ{{PLURAL:$3|ሌላ አባል|$3 አባላት}} $1 {{PLURAL:$1|አለዎት|አሉልዎ}}። ($2).',
 'youhavenewmessagesmanyusers' => 'ከአሥር አባላት በላይ $1 አሉልዎ! ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|፩ አዲስ መልዕክት|አዲስ መልእክቶች}}',
@@ -864,7 +862,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'preferences' => 'ምርጫዎች፤',
 'mypreferences' => 'ምርጫዎች፤',
 'prefs-edits' => 'የለውጦች ቁጥር:',
-'prefsnologin' => 'ገና አልገቡም',
 'changepassword' => 'መግቢያ ቃልዎን ለመቀየር',
 'prefs-skin' => 'የድህረ-ገጽ መልክ',
 'skin-preview' => 'ቅድመ-ዕይታ',
@@ -1071,6 +1068,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'recentchanges-label-minor' => 'ይህ ለውጥ ጥቃቅን ነው።',
 'recentchanges-label-bot' => 'ይኸው ለውጥ በሎሌ ተደረገ።',
 'recentchanges-label-unpatrolled' => 'ይህ እርማት ገና አልተገመገመም',
+'recentchanges-legend-newpage' => '$1 - አዲስ ገጽ',
 'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።",
 'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
 'rclistfrom' => '(ከ $1 ጀምሮ አዲስ ለውጦቹን ለማየት)',
@@ -2600,4 +2598,7 @@ $3
 'api-error-uploaddisabled' => 'ፋይል መላክ በዚህ ውኪ ላይ አልተፈቀደም።',
 'api-error-verification-error' => 'ይህ ፋይል የተበላሸ ወይም ትክክል ያልሆነ ቅጥያ ያለው ሊሆን ይችላል።',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'እሺ',
+
 );
index 745796f..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' ),
@@ -390,8 +388,6 @@ $1",
 'pagetitle' => '$1 - {{SITENAME}}',
 'retrievedfrom' => 'Obtenito de "$1"',
 'youhavenewmessages' => 'Tiene $1 ($2).',
-'newmessageslink' => 'mensaches nuevos',
-'newmessagesdifflink' => 'Esferencias con a versión anterior',
 'youhavenewmessagesmulti' => 'Tiene nuevos mensaches en $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -1087,7 +1083,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'preferences' => 'Preferencias',
 'mypreferences' => 'Preferencias',
 'prefs-edits' => "Numero d'edicions:",
-'prefsnologin' => 'No ye identificato',
 'changepassword' => 'Cambiar a clau',
 'prefs-skin' => 'Aparencia',
 'skin-preview' => 'Fer una prebatina',
@@ -1360,6 +1355,7 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
 'recentchanges-label-minor' => 'Ista ye una edición menor',
 'recentchanges-label-bot' => 'Ista edición fue feita por un bot',
 'recentchanges-label-unpatrolled' => "Esta edición encara no s'ha controlato",
+'recentchanges-legend-newpage' => '$1 - pachina nueva',
 'rcnote' => "Contino {{PLURAL:$1|s'amuestra o unico cambeo feito|s'amuestran os zaguers '''$1''' cambeos feitos}} en {{PLURAL:$2|o zaguer día|os zaguers '''$2''' días}}, dica o $5, $4.",
 'rcnotefrom' => "Contino s'amuestran os cambeos dende '''$2''' (dica '''$1''').",
 'rclistfrom' => 'Amostrar cambeos recients dende $1',
@@ -3594,4 +3590,17 @@ Si no, puet usar o siguient formulario. O suyo comentario será adhibiu a la pac
 'api-error-uploaddisabled' => 'As cargas de fichers son desactivadas en iste wiki.',
 'api-error-verification-error' => 'Iste fichero puede estar danyau, u tiene una extensión incorrecta.',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Espandir plantillas',
+'expand_templates_intro' => 'Ista pachina especial prene bel testo y espande recursivament todas as plantillas que bi ha en el. Tamién espande as funcions parser como <nowiki>{{</nowiki>#language:...}}, y as variables como <nowiki>{{</nowiki>CURRENTDAY}}&mdash; en cheneral tot o que sía entre dobles claus.
+Isto lo fa clamando ta o parser correspondient dende o propio MediaWiki.',
+'expand_templates_title' => 'Títol ta contestualizar ({{FULLPAGENAME}} etz.):',
+'expand_templates_input' => 'Testo ta espandir:',
+'expand_templates_output' => 'Resultau',
+'expand_templates_xml_output' => 'salida XML',
+'expand_templates_ok' => 'Confirmar',
+'expand_templates_remove_comments' => 'Sacar comentarios',
+'expand_templates_generate_xml' => "Amostrar l'árbol de parseyo XML",
+'expand_templates_preview' => 'Previsualización',
+
 );
index 1e3df2e..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(
@@ -304,8 +312,6 @@ Seoh þone [[Special:Version|fadunge tramet]].',
 'ok' => 'Gōd lā',
 'retrievedfrom' => 'Fram "$1" begeten',
 'youhavenewmessages' => 'Þū hæfst $1 ($2).',
-'newmessageslink' => 'nīwu ǣrendgewritu',
-'newmessagesdifflink' => 'nīwost andwendung',
 'youhavenewmessagesfromusers' => 'Þū hafast $1 fram {{PLURAL:$3|ōðrum brūcende|$3 brūcenda}} ($2).',
 'youhavenewmessagesmanyusers' => 'Þū hafast $1 fram manigum brūcendum ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|nīwe ǣrendgewrit|nīwra ǣrendgewrita}}',
@@ -620,7 +626,6 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 # Preferences page
 'preferences' => 'Fōreberunga',
 'mypreferences' => 'Mīna fōreberunga',
-'prefsnologin' => 'Nā inmeldod',
 'prefs-skin' => 'Scynn',
 'skin-preview' => 'Fōrebysen',
 'prefs-datetime' => 'Tælmearc and tīd',
@@ -688,6 +693,7 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 'recentchanges-label-newpage' => 'Þēos adihtung scōp nīwne tramet',
 'recentchanges-label-minor' => 'Þēos is lytel adihtung',
 'recentchanges-label-bot' => 'Searuþrǣl fremede þās adihtunge',
+'recentchanges-legend-newpage' => '$1 - nīƿu sīde',
 'rcnote' => "Beneoðan {{PLURAL:$1|is '''1''' andwendung|sind þā æftemestan '''$1''' andwendunga}} in {{PLURAL:$2|þǣm æftermestan dæge|þǣm æftemestum '''$2''' daga}}, fram $5 on $4.",
 'rcnotefrom' => "Niðer sind þā andwendunga fram '''$2''' (mǣst īweþ '''$1''').",
 'rclistfrom' => 'Īwan nīwa andwendunga fram $1 and siþþan',
index 1d9ef67..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( 'صفحات_خاصة' ),
@@ -750,12 +757,10 @@ $1',
 'ok' => 'موافق',
 'retrievedfrom' => 'مجلوبة من "$1"',
 'youhavenewmessages' => 'لك $1 ($2).',
-'newmessageslink' => 'رسائل جديدة',
-'newmessagesdifflink' => 'أحدث تغيير',
 'youhavenewmessagesfromusers' => 'لديك $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
 'youhavenewmessagesmanyusers' => 'لديك $1 من مستخدمين كثر ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|رسالة جديدة|رسائل جديدة}}',
-'newmessagesdifflinkplural' => 'أحدث {{PLURAL:$1|تغيير|تغييرات}}',
+'newmessageslinkplural' => '{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}',
+'newmessagesdifflinkplural' => 'أحدث {{PLURAL:$1|تغيير|999=تغييرات}}',
 'youhavenewmessagesmulti' => 'لديك رسائل جديدة في $1',
 'editsection' => 'عدل',
 'editold' => 'عدل',
@@ -889,7 +894,8 @@ $2',
 'invalidtitle-knownnamespace' => 'عنوان غير صالح في النطاق «$2» مع نص «$3»',
 'invalidtitle-unknownnamespace' => 'عنوان غير صالح ذو نطاق غير معروف رقم $1 ونص «$2»',
 'exception-nologin' => 'غير مسجل الدخول',
-'exception-nologin-text' => 'تتطلب هذه الصفحة أو الفعل منك القيام بتسجيل الدخول على هذه الويكي أولا.',
+'exception-nologin-text' => 'الرجاء [[Special:Userlogin|تسجيل الدخول]] لتتمكن من الوصول لهذه الصفحة أو أداء هذا الإجراء.',
+'exception-nologin-text-manual' => 'الرجاء $1 لتتمكن من الوصول لهذه الصفحة أو أداء هذا الإجراء.',
 
 # Virus scanner
 'virus-badscanner' => "ضبط سيء: ماسح فيروسات غير معروف: ''$1''",
@@ -1113,6 +1119,7 @@ $2
 'resettokens-legend' => 'غير المفاتيح',
 'resettokens-tokens' => 'مفاتيح:',
 'resettokens-token-label' => '$1 (القيمة الحالية: $2)',
+'resettokens-watchlist-token' => 'رمز تغذية الوب (آتوم/آس إس إس) [[Special:Watchlist|للتغيرات التي على قائمة مراقبتك]]',
 'resettokens-done' => 'تغيير المفاتيح',
 'resettokens-resetbutton' => 'غير المفاتيح المختارة',
 
@@ -1453,15 +1460,16 @@ $2
 لكن أجزاء من محتواها لن يكون مسموحا للعامة برؤيتها.",
 'revdelete-confirm' => 'الإداريون الآخرون في {{SITENAME}} سيظل بإمكانهم رؤية المحتوى المخفي ويمكنهم استرجاعه مجددا من خلال هذه الواجهة نفسها، مالم يتم وضع قيود إضافية.
 من فضلك أكد أنك تنوي فعل هذا، وأنك تفهم العواقب، وأنك تفعل هذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].',
-'revdelete-suppress-text' => "الإخفاء ينبغي أن يتم استخدامه '''فقط''' في الحالات التالية:
+'revdelete-suppress-text' => "ينبغي للإخفاء أن يستخدم '''فقط''' في الحالات التالية:
+* معلومات يحتمل أن تكون تشهيرية
 * معلومات شخصية غير ملائمة
-*: ''عناوين المنازل وأرقام التليفونات، أرقام الضمان الاجتماعي، إلى آخره.''",
+*: ''عناوين المنازل وأرقام الهواتف وأرقام الهويات الوطنية إلى آخره.''",
 'revdelete-legend' => 'وضع ضوابط رؤية',
-'revdelete-hide-text' => 'أخف نص المراجعة',
+'revdelete-hide-text' => 'نص المراجعة',
 'revdelete-hide-image' => 'أخف محتوى الملف',
 'revdelete-hide-name' => 'أخف الفعل والهدف',
-'revdelete-hide-comment' => 'أخف تعليق التعديل',
-'revdelete-hide-user' => 'أخÙ\81 Ø§Ø³Ù\85/Ø¢Ù\8aبÙ\8a Ø§Ù\84Ù\85ستخدÙ\85',
+'revdelete-hide-comment' => 'ملخص التعديل',
+'revdelete-hide-user' => 'اسÙ\85 Ø§Ù\84Ù\85ستخدÙ\85/عÙ\86Ù\88اÙ\86 Ø§Ù\84Ø¢Ù\8aبÙ\8a',
 'revdelete-hide-restricted' => 'أخف البيانات عن الإداريين إضافة إلى الآخرين',
 'revdelete-radio-same' => '(لا تغير)',
 'revdelete-radio-set' => 'مخفي',
@@ -1624,7 +1632,7 @@ $1",
 'preferences' => 'تفضيلات',
 'mypreferences' => 'تفضيلات',
 'prefs-edits' => 'عدد التعديلات:',
-'prefsnologin' => 'غير مسجل الدخول',
+'prefsnologintext2' => 'الرجاء $1 لضبط تفضيلات المستخدم.',
 'changepassword' => 'غير كلمة السر',
 'prefs-skin' => 'واجهة',
 'skin-preview' => 'عرض مسبق',
@@ -1922,6 +1930,7 @@ $1",
 'recentchanges-label-minor' => 'هذا تعديل طفيف',
 'recentchanges-label-bot' => 'أُجْرِيَ هذا التعديل بواسطة بوت',
 'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
+'recentchanges-legend-newpage' => '(راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])',
 'rcnote' => "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''اليوم''' الماضي|'''اليومين''' الماضيين|ال'''$2''' أيام الماضية|ال'''$2''' يوما الماضيا|ال'''$2''' يوم الماضي}}، كما في $5، $4.",
 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
 'rclistfrom' => 'أظهر التغييرات بدءا من $1',
@@ -2729,7 +2738,7 @@ $UNWATCHURL
 آخر تعديل كان بواسطة [[User:$3|$3]] ([[User talk:$3|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "ملخص التعديل كان: \"''\$1''\".",
 'revertpage' => 'استرجع تعديلات [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]]) حتى آخر مراجعة ل[[User:$1|$1]]',
-'revertpage-nouser' => 'استرجع تعديلات مستخدم مخفيّ حتى آخر مراجعة ل[[User:$1|$1]]',
+'revertpage-nouser' => 'استرجع تعديلات مستخدم مخفيّ حتى آخر مراجعة ل{{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'استرجع تعديلات $1؛
 استرجع حتى آخر نسخة بواسطة $2.',
 
@@ -2875,7 +2884,7 @@ $1',
 'contributions' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمة}}',
 'contributions-title' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمة}} $1',
 'mycontris' => 'مساهماتي',
-'contribsub2' => 'ل$1 ($2)',
+'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'لم يتم العثور على تغييرات تطابق هذه المحددات.',
 'uctop' => 'حالي',
 'month' => 'من شهر (وأقدم):',
@@ -4309,7 +4318,7 @@ $5
 # Special:Redirect
 'redirect' => 'تحويل باسم ملف أو اسم مستخدم أو رقم مراجعة',
 'redirect-legend' => 'تحويل إلى ملف أو صفحة',
-'redirect-summary' => 'هذه الصفحة الخاصة تحوّل إلى ملف (باسمه) أو صفحة (برقم إحدى مراجعاتها) أو إلى صفحة مستخدم (برقمه التعريفي).',
+'redirect-summary' => 'هذه الصفحة الخاصة تحوّل إلى ملف (باسمه) أو صفحة (برقم إحدى مراجعاتها) أو إلى صفحة مستخدم (برقمه التعريفي). الاستخدام [[{{#Special:Redirect}}/file/Example.jpg]] أو [[{{#Special:Redirect}}/revision/328429]] أو [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'حوّل',
 'redirect-lookup' => 'ابحث في:',
 'redirect-value' => 'الوجهة',
@@ -4333,8 +4342,7 @@ $5
 'specialpages' => 'الصفحات الخاصة',
 'specialpages-note-top' => 'المفتاح',
 'specialpages-note' => '* صفحات خاصة عادية.
-* <span class="mw-specialpagerestricted">صفحات خاصة للمخولين.</span>
-* <span class="mw-specialpagecached">صفحات خاصة لبيانات مخزنة فقط (قد تكون مهجورة).</span>',
+* <span class="mw-specialpagerestricted">صفحات خاصة للمخولين.</span>',
 'specialpages-group-maintenance' => 'تقارير الصيانة',
 'specialpages-group-other' => 'صفحات خاصة أخرى',
 'specialpages-group-login' => 'دخول / إنشاء حساب',
@@ -4540,4 +4548,21 @@ $5
 'limitreport-postexpandincludesize-value' => '$1/$2 بايت',
 'limitreport-templateargumentsize-value' => '$1/$2 بايت',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'فرد القوالب',
+'expand_templates_intro' => 'تتعامل هذه الصفحة الخاصة مع نصوص الويكي وتقوم بفرد كل القوالب الموجودة به.
+وتقوم أيضا بفرد دوال القوالب مثل
+<nowiki>{{</nowiki>#language:...}}، والمتغيرات مثل
+<nowiki>{{</nowiki>يوم}}-- وتقوم التعامل مع كل ما بين الأقواس المزدوجة.
+تقوم بفعل هذا عن طريق استدعاء المعالج المناسب من الميدياويكي.',
+'expand_templates_title' => 'عنوان صفحة هذا النص، لأجل معالجة {{FULLPAGENAME}} إلخ.:',
+'expand_templates_input' => 'النص المدخل:',
+'expand_templates_output' => 'النتيجة',
+'expand_templates_xml_output' => 'خرج XML',
+'expand_templates_ok' => 'موافق',
+'expand_templates_remove_comments' => 'أزل التعليقات',
+'expand_templates_remove_nowiki' => 'أخفِ وسوم <nowiki> في الناتج',
+'expand_templates_generate_xml' => 'اعرض شجرة XML parse',
+'expand_templates_preview' => 'عرض مسبق',
+
 );
index 19a3039..01861cf 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ܒܪܝ_ܚܘܫܒܢܐ' ),
        'Deadendpages'              => array( 'ܦܐܬܬ̈ܐ_ܥܡ_ܚܪܬܐ_ܡܝܬܬܐ' ),
        'DeletedContributions'      => array( 'ܫܘܬܦܘ̈ܬܐ_ܫܝ̈ܦܬܐ' ),
-       'Disambiguations'           => array( 'ܬܘܚܡ̈ܐ_ܐܚܪ̈ܢܐ' ),
        'DoubleRedirects'           => array( 'ܨܘܝܒ̈ܐ_ܥܦܝ̈ܦܐ' ),
        'EditWatchlist'             => array( 'ܫܚܠܦ_ܪ̈ܗܝܬܐ' ),
        'Emailuser'                 => array( 'ܫܕܪ_ܒܝܠܕܪܐ_ܐܠܩܛܪܘܢܝܐ_ܠܡܦܠܚܢܐ' ),
@@ -307,7 +306,7 @@ $messages = array(
 'articlepage' => 'ܚܘܝܝܐ ܕܦܐܬܐ ܕܚܒܝܫܬ̈ܐ',
 'talk' => 'ܡܡܠܠܐ',
 'views' => 'ܚܙܝܬ̈ܐ',
-'toolbox' => 'ܣܢÜ\95Ü\98Ü©Ü\90 Ü\95Ü¡Ü\90Ü¢Ì\88Ü\90',
+'toolbox' => 'ܡܐܢ̈ܐ',
 'userpage' => 'ܚܙܝ ܦܐܬܐ ܕܡܦܠܚܢܐ',
 'projectpage' => 'ܚܙܝ ܦܐܬܐ ܕܬܪܡܝܬܐ',
 'imagepage' => 'ܚܙܝ ܦܐܬܐ ܕܠܦܦܐ',
@@ -358,12 +357,10 @@ $1',
 
 'ok' => 'ܛܒ',
 'youhavenewmessages' => 'ܐܝܬ ܠܟ $1 ($2).',
-'newmessageslink' => 'ܐܓܪ̈ܬܐ ܚܕ̈ܬܬܐ',
-'newmessagesdifflink' => 'ܫܘܚܠܦܐ ܐܚܪܝܐ',
 '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' => 'ܫܚܠܦ',
@@ -626,11 +623,11 @@ $1',
 'revdelete-hide-text' => 'ܛܫܝ ܟܬܒܬܐ ܕܬܢܝܬܐ',
 'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
 'revdelete-hide-name' => 'ܛܫܝ ܥܒܕܐ ܘܢܘܦܐ',
-'revdelete-hide-comment' => 'Ü\9bÜ«Ü\9d ܟܪܝܘܬܐ ܕܫܘܚܠܦܐ',
-'revdelete-hide-user' => 'Ü\9bÜ«Ü\9d Ü«Ü¡Ü\90\90Ü\9d Ü¦Ü\9d (IP) Ü\95ܡܦܠÜ\9aÜ¢Ü\90',
+'revdelete-hide-comment' => 'Ü«Ü\9aܠܦ ܟܪܝܘܬܐ ܕܫܘܚܠܦܐ',
+'revdelete-hide-user' => 'Ü«Ü¡Ü\90 Ü\95ܡܦܠÜ\9aÜ¢Ü\90 Ü\95Ü¡Ü«Ü\9aܠܦܢÜ\90\90Ü\9d Ü¦Ü\9d (IP)',
 'revdelete-radio-same' => '(ܠܐ ܬܫܚܠܦ)',
-'revdelete-radio-set' => 'Ü\90Ü\9dÜ¢',
-'revdelete-radio-unset' => 'Ü ܐ',
+'revdelete-radio-set' => 'Ü\9bÜ«Ü\9dÜ\90',
+'revdelete-radio-unset' => 'Ü\93Ü Ü\9dܐ',
 'revdelete-log' => 'ܥܠܬܐ:',
 'revdel-restore' => 'ܫܚܠܦ ܚܙܝܬܐ',
 'revdel-restore-deleted' => 'ܬܢܝܬ̈ܐ ܫܝܦ̈ܐ',
@@ -727,7 +724,6 @@ $1',
 'preferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
 'mypreferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
 'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
-'prefsnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
 'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
 'prefs-skin' => 'ܓܠܕܐ',
 'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
@@ -892,6 +888,7 @@ $1',
 'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
+'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
 'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
 'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
@@ -1628,7 +1625,7 @@ $1',
 'file-info-size' => '$1 × $2 ܦܩܣܠ، ܥܓܪܐ ܕܠܦܦܐ: $3، ܐܕܫܐ ܕ MIME: $4',
 'file-info-size-pages' => '$1 × $2 ܦܩܣܠ, ܥܓܪܐ ܕܠܦܦܐ: $3, ܐܕܫܐ ܕ MIME: $4, $5 {{PLURAL:$5|ܦܐܬܐ|ܦܐܬܬ̈ܐ}}',
 'file-nohires' => 'ܠܝܬ ܢܩܕܘܬܐ ܝܬܝܪ ܡܢ ܗܢܐ.',
-'show-big-image' => 'ܢܩÜ\95Ü\98ܬÜ\90 Ü\93Ü¡Ü\9dܪܬܐ',
+'show-big-image' => 'ܠܦܦÜ\90 Ü«ÜªÜ«Ü\9dܐ',
 'show-big-image-preview' => 'ܥܓܪܐ ܕܓܠܚܐ: $1.',
 'show-big-image-size' => '$1 × $2 ܦܩܣܠ',
 
@@ -1861,4 +1858,10 @@ $1',
 'searchsuggest-search' => 'ܒܨܝ',
 'searchsuggest-containing' => 'ܬܚܒܘܫ...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ܐܪܘܚ ܩܠܒ̈ܐ',
+'expand_templates_output' => 'ܦܠܛܐ',
+'expand_templates_ok' => 'ܛܒ',
+'expand_templates_preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
+
 );
index 4d58115..5a727dc 100644 (file)
@@ -203,8 +203,6 @@ $messages = array(
 'ok' => 'Feley',
 'retrievedfrom' => 'Nentungey "$1" mew',
 'youhavenewmessages' => 'Nieymi $1 ($2).',
-'newmessageslink' => 'weke werkün',
-'newmessagesdifflink' => 'we kalekünun',
 'newmessagesdifflinkplural' => 'we {{PLURAL:$1|kalekünuy|kalekünuy}}',
 'youhavenewmessagesmulti' => 'Nieymi we yefalzugu $1 mew.',
 'editsection' => 'Wirin',
@@ -432,7 +430,6 @@ Rulpakünuy feychi kangelkülelu dungu.",
 # Preferences page
 'mypreferences' => 'Dullin',
 'prefs-edits' => 'Rakin Wirin:',
-'prefsnologin' => 'Mülelay Konün',
 'skin-preview' => 'Pen chum müley',
 'prefs-editing' => 'Wirin',
 'searchresultshead' => 'Kintun',
@@ -495,6 +492,7 @@ Rulpakünuy feychi kangelkülelu dungu.",
 'recentchanges-label-minor' => 'Tüfachi ta kiñe pichi wirin',
 'recentchanges-label-bot' => 'Kiñe kizuamukelu küzauwe dewmay tüfachi wirin.',
 'recentchanges-label-unpatrolled' => 'Pukintulelay tüfachi wirin.',
+'recentchanges-legend-newpage' => '$1 - We Pakina',
 'rcnote' => 'Nagpüle {{PLURAL:müley $1 kalekünun}}, rupalu {{PLURAL:$2 antü}}, $5, $4.',
 'rcnotefrom' => "Nagpüle müley fill wirin tuwülu '''$2''' mew (tripalu '''$1''' mew).",
 'rclistfrom' => 'Adkintun weke kalekünun amuamugelu $1',
index 1ca7708..bc20c1c 100644 (file)
@@ -276,8 +276,6 @@ chof [[Special:Version|sfht lversion]]',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Mrejjĝa men "$1"',
 'youhavenewmessages' => 'Ĝendek $1 ($2).',
-'newmessageslink' => 'méṣajaṫ jdad',
-'newmessagesdifflink' => 'ṫ-ṫeġyir l-leĥĥer',
 'youhavenewmessagesmulti' => 'Jawek méṣajaṫ jdad fe $1',
 'editsection' => 'Ṣayeb',
 'editold' => 'ṣayeb',
@@ -953,7 +951,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'preferences' => 'ṫfḍilaṫ',
 'mypreferences' => 'Ḫajaṫ li kanfeḍḍel',
 'prefs-edits' => 'ĝadad ṫ-ṫĝdilaṫ:',
-'prefsnologin' => 'nta mamkoniktich',
 'changepassword' => 'tbdl lmot de passe',
 'prefs-skin' => 'skin',
 'skin-preview' => 'L-Prévizualizasyon',
index eefafed..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,8 +577,10 @@ $1',
 'ok' => 'موافئ',
 'retrievedfrom' => 'اتجابت من "$1"',
 'youhavenewmessages' => 'عندك $1 ($2).',
-'newmessageslink' => 'رسايل جديده',
-'newmessagesdifflink' => 'اخر تعديل',
+'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' => 'تعديل',
@@ -571,6 +591,8 @@ $1',
 'toc' => 'المحتويات',
 'showtoc' => 'عرض',
 'hidetoc' => 'تخبية',
+'collapsible-collapse' => 'خبى',
+'collapsible-expand' => 'اتوسع',
 'thisisdeleted' => 'عرض او استرجاع $1؟',
 'viewdeleted' => 'عرض $1؟',
 'restorelink' => '{{PLURAL:$1|تعديل واحد ملغي|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغي|$1 تعديل ملغي}}',
@@ -582,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' => 'صفحه',
@@ -641,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 />
@@ -651,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'''.",
@@ -669,7 +696,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''أنت دلوقتى مش مسجل دخولك.'''
 
-تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو <span class='plainlinks'>[$1 الدخول مرة تانيه]</span> بنفس الاسم أو باسم تاني.
+تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو [[Special:UserLogin|الدخول مرة تانيه]] بنفس الاسم أو باسم تاني.
 ممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية فى المتصفح بتاعك.",
 'yourname' => 'اليوزرنيم:',
 'yourpassword' => 'الباسوورد:',
@@ -691,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' => 'اسم اليوزر اللى كتبته بيستعمله يوزر غيرك.
@@ -741,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' => 'علشان الخصايص دى تشتغل لازم تحددلك عنوان ايميل.',
@@ -755,7 +782,7 @@ $2',
 
 لو سمحت تتجاهل الرسالة دى اذا الحساب دا اتفتحلك بالغلط.',
 'usernamehasherror' => 'اسم اليوزر مش ممكن يكون فيه حروف هاش',
-'login-throttled' => 'انت عملت  محاولات لوجين كتيره حديثة على الحساب ده.
+'login-throttled' => 'انت عملت  محاولات لوجين كتيره  ع الحساب ده.
 من فضلك استنى قبل المحاولة مرة تانيه.',
 'loginlanguagelabel' => 'اللغة: $1',
 
@@ -768,7 +795,7 @@ $2',
 'newpassword' => 'الباسورد جديدة:',
 'retypenew' => 'اكتب الباسورد الجديده تانى:',
 'resetpass_submit' => 'اظبط الباسورد و ادخل',
-'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح! دلوقتى  بنسجل دخولك...',
+'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح!',
 'resetpass_forbidden' => 'مش ممكن تغيير الباسورد',
 'resetpass-no-info' => 'لازم تسجل دخولك علشان تقدر توصل للصفحة دى على طول.',
 'resetpass-submit-loggedin' => 'غير الباسورد',
@@ -857,7 +884,7 @@ $2',
 'accmailtitle' => ' كلمة السر اتبعتت .',
 'accmailtext' => "الباسورد العشوائيه اللى اتعملت لـ[[User talk:$1|$1]]  اتبعتت لـ $2.
 
-الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''  وقت تسجيل الدخول.",
+الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''   بعد  تسجيل الدخول.",
 'newarticle' => '(جديد)',
 'newarticletext' => "انت وصلت لصفحه مابتدتش لسه.
 علشان  تبتدى الصفحة ابتدى الكتابه فى الصندوق اللى تحت.
@@ -926,12 +953,12 @@ $2',
 'copyrightwarning2' => "لو سمحت تعمل حسابك ان كل مشاركاتك فى {{SITENAME}} ممكن المشاركين التانيين يعدلوها،يغيروها، او يمسحوها خالص. لو مانتش حابب ان كتاباتك تتعدل و تتغير بالشكل دا، فياريت ما تنشرهاش هنا.<br />.
 و كمان انت بتدينا كلمة شرف  انك صاحب الكتابات دي، او انك نقلتها من مكان مش خاضع لحقوق النشر .(شوف التفاصيل فى $1 ).
 '''لو سمحت ما تحطش هنا اى نص خاضع لحقوق النشر من غير تصريح!'''.",
-'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو $2 كيلوبايت.
+'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.
 مش ممكن يتحفظ.'''",
-'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلوقاي.
+'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلواتى.
 لو حبيت ممكن  تنسخ النص وتحفظه فى ملف نصى علشان تستعمله بعدين.'''
 
-الإدارى اللى أغلقها أعطى هذا التفسير: $1",
+الإدارى اللى قفلها كتب السبب دا $1",
 'protectedpagewarning' => "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرات السيسوبات هما بس اللى يقدرو يعدلوها.'''
 اخر سجل محطوط تحت علشان المراجعه:",
 'semiprotectedpagewarning' => "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.
@@ -1031,7 +1058,7 @@ $2',
 حاول [[Special:Search|التدوير فى الويكى]] عن صفحات جديدة ليها صلة.',
 
 # Revision deletion
-'rev-deleted-comment' => '(التعليق اتشال)',
+'rev-deleted-comment' => '( ملخص التعديل اتمسح)',
 'rev-deleted-user' => '(اسم اليوزر اتشال)',
 'rev-deleted-event' => '(السجل إتشال)',
 'rev-deleted-user-contribs' => '[اسم اليوزر أو الآى بى اتشال - التعديل مخفى من المساهمات]',
@@ -1236,7 +1263,6 @@ $1",
 'preferences' => 'تفضيلات',
 'mypreferences' => 'تفضيلاتى',
 'prefs-edits' => 'عدد التعديلات:',
-'prefsnologin' => 'مش متسجل',
 'changepassword' => 'غير الباسورد',
 'prefs-skin' => 'الوش',
 'skin-preview' => 'بروفه',
@@ -1503,6 +1529,7 @@ $1",
 'recentchanges-label-minor' => 'ده تعديل صغير',
 'recentchanges-label-bot' => 'التعديل ده عمله بوت',
 'recentchanges-label-unpatrolled' => 'التعديل ده مإتراجعش لسه',
+'recentchanges-legend-newpage' => '$1 - صفحه جديده',
 'rcnote' => "فيه تحت {{PLURAL:$1|'''1''' تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|يوم|'''$2''' يوم}}، بدءا من $5، $4.",
 'rcnotefrom' => "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
 'rclistfrom' => 'اظهر التعديلات بدايه من $1',
@@ -1524,7 +1551,7 @@ $1",
 'rc_categories' => 'حصر لتصنيفات (مفصولة برمز "|")',
 'rc_categories_any' => 'أى',
 'newsectionsummary' => '/* $1 */ قسم جديد',
-'rc-enhanced-expand' => 'عرض التفاصيل (يتطلب جافاسكريبت)',
+'rc-enhanced-expand' => '[اعرض التفاصيل]',
 'rc-enhanced-hide' => 'إخفاء التفاصيل',
 
 # Recent changes linked
@@ -2285,7 +2312,7 @@ $1',
 'contributions' => 'تعديلات اليوزر {{GENDER:$1|اليوزر|اليوزره}}',
 'contributions-title' => 'مساهمات اليوزر ل$1',
 'mycontris' => 'تعديلاتى',
-'contribsub2' => 'لليوزر $1 ($2)',
+'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'مالقيناش   تغييرات تطابق المحددات دي.',
 'uctop' => '(آخر تعديل)',
 'month' => 'من شهر (واللى قبل كده):',
@@ -2784,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|برواز|براويز}}',
 
@@ -3419,4 +3446,20 @@ $5
 'searchsuggest-search' => 'تدوير',
 'searchsuggest-containing' => 'جوّاه...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'تكبير القوالب',
+'expand_templates_intro' => 'الصفحة المخصوصة دى بتاخد بعض النصوص و بتفرد كل القوالب اللى موجودة فيها.
+و كمان بتفرد دوال القوالب زي
+<nowiki>{{</nowiki>#language:…}}, و المتغيرات زي
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;فى الحقيقة كل حاجة بين قوسين مزدوجين.
+و بتعمل دا عن طريق استعداء المعالج المناسب من الميدياويكى نفسها..',
+'expand_templates_title' => 'عنوان السياق, لـ {{FULLPAGENAME}} الخ.:',
+'expand_templates_input' => 'النص المدخل:',
+'expand_templates_output' => 'النتيجه',
+'expand_templates_xml_output' => 'خرج XML',
+'expand_templates_ok' => 'موافق',
+'expand_templates_remove_comments' => 'امسح التعليقات',
+'expand_templates_generate_xml' => 'اعرض شجرة XML',
+'expand_templates_preview' => 'بروفه',
+
 );
index c0aa4d3..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' ),
@@ -456,8 +454,6 @@ $1',
 'ok' => 'ঠিক আছে',
 'retrievedfrom' => '"$1"ৰ পৰা সংকলিত',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
-'newmessageslink' => 'নতুন সংবাদ',
-'newmessagesdifflink' => 'শেহতীয়া সাল-সলনি',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'youhavenewmessagesmanyusers' => 'কেইবাজনো সদস্যৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|নতুন বাৰ্তা}}',
@@ -1324,7 +1320,6 @@ $1",
 'preferences' => 'পছন্দসমূহ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনাৰ সংখ্যা:',
-'prefsnologin' => 'প্ৰৱেশ কৰা নাই',
 'changepassword' => 'গুপ্তশব্দ সলনি কৰক',
 'prefs-skin' => 'আৱৰণ',
 'skin-preview' => 'খচৰা',
@@ -4044,4 +4039,12 @@ $5
 # Image rotation
 'rotate-comment' => 'ছবিখন ঘড়ীৰ কাটাৰ দিশত $1 {{PLURAL:$1|ডিগ্ৰী}} ঘূৰোৱা হৈছে।',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'সাঁচবোৰ বহলাওক',
+'expand_templates_input' => 'পাঠ্য ভৰাওক',
+'expand_templates_output' => 'ফলাফল',
+'expand_templates_ok' => 'ওকে',
+'expand_templates_remove_comments' => 'মন্তব্য গু়চাওক',
+'expand_templates_preview' => 'খচৰা',
+
 );
index eefff5e..6d63136 100644 (file)
@@ -337,12 +337,10 @@ $1",
 'ok' => 'Aceutar',
 'retrievedfrom' => 'Sacáu de «$1»',
 'youhavenewmessages' => 'Tienes $1 ($2).',
-'newmessageslink' => 'mensaxes nuevos',
-'newmessagesdifflink' => 'cambéu postreru',
 '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',
@@ -580,7 +578,7 @@ Vuelvi a intentalo.',
 'passwordtooshort' => 'Les contraseñes han de tener polo menos {{PLURAL:$1|1 caráuter|$1 caráuteres}}.',
 'password-name-match' => "La contraseña tien de ser distinta del nome d'usuariu.",
 'password-login-forbidden' => "Ta torgao usar esti nome d'usuariu y contraseña.",
-'mailmypassword' => 'Unviar la clave nueva per corréu',
+'mailmypassword' => 'Reaniciar contraseña',
 'passwordremindertitle' => 'Nueva contraseña provisional pa {{SITENAME}}',
 'passwordremindertext' => "Daquién (seique tu, dende la direición IP $1) solicitó una contraseña
 nueva pa {{SITENAME}} ($4). Creóse una contraseña provisional
@@ -656,7 +654,7 @@ Seique yá camudaras correutamente la contraseña o que pidieras una nueva contr
 # Special:PasswordReset
 'passwordreset' => 'Reaniciar contraseña',
 'passwordreset-text-one' => 'Complete esti formulariu pa reaniciar la contraseña.',
-'passwordreset-text-many' => '{{PLURAL:$1|Rellene unu de los campos pa reaniciar la contraseña.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Rellene unu de los campos pa recibir una contraseña temporal per corréu.}}',
 'passwordreset-legend' => 'Reaniciar contraseña',
 'passwordreset-disabled' => 'Los reanicios de contraseña tán desactivaos nesta wiki.',
 'passwordreset-emaildisabled' => 'Les funciones de corréu electrónicu tan desactivaes nesta wiki.',
@@ -1214,7 +1212,6 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'preferences' => 'Preferencies',
 'mypreferences' => 'Preferencies',
 'prefs-edits' => "Númberu d'ediciones:",
-'prefsnologin' => 'Nun anició sesión',
 'prefsnologintext2' => "Por favor, $1 pa configurar les preferencies d'usuariu",
 'changepassword' => 'Camudar la clave',
 'prefs-skin' => 'Apariencia',
@@ -1513,6 +1510,9 @@ 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-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]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 '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',
@@ -2933,6 +2933,7 @@ Pues ver el so códigu fonte.',
 'tooltip-undo' => '"Esfacer" revierte esta edición y abre\'l formulariu d\'edición en mou de vista previa. Permite añader un motivu nel resume.',
 'tooltip-preferences-save' => 'Guardar les preferencies',
 'tooltip-summary' => 'Escribi un resume curtiu',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => "/* Los CSS allugaos equí s'aplicarán a tolos aspeutos */",
@@ -4000,4 +4001,21 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'limitreport-expansiondepth' => "Máxima fondura d'espansión",
 'limitreport-expensivefunctioncount' => "Cuenta de funciones d'analís costoses",
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Esparder plantíes',
+'expand_templates_intro' => "Esta páxina especial toma un testu y espande toles plantíes del mesmu de forma recursiva.
+ Tamién espande les funciones d'análisis sintáuticu como
+<code><nowiki>{{</nowiki>#language:...}}</code>, y variables como
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+En realidá cuasi tolo qu'apaeza ente llaves dobles.",
+'expand_templates_title' => 'Títulu del contestu, pa {{FULLPAGENAME}}, etc.:',
+'expand_templates_input' => "Testu d'entrada:",
+'expand_templates_output' => 'Resultáu',
+'expand_templates_xml_output' => 'Salida XML',
+'expand_templates_ok' => 'Aceutar',
+'expand_templates_remove_comments' => 'Eliminar comentarios',
+'expand_templates_remove_nowiki' => 'Quitar les etiquetes <nowiki> nos resultaos',
+'expand_templates_generate_xml' => "Amosar l'árbole d'análisis sintáuticu XML",
+'expand_templates_preview' => 'Vista previa',
+
 );
index 2219e2e..b12e4f2 100644 (file)
@@ -329,8 +329,6 @@ $messages = array(
 'ok' => 'Tuenara',
 'retrievedfrom' => 'Dimnarin mal « $1 »',
 'youhavenewmessages' => 'Va $1 ($2) al kazawal.',
-'newmessageslink' => 'warzafa staksa',
-'newmessagesdifflink' => 'amid- gu ironokaf siatos',
 'youhavenewmessagesmulti' => 'Rin dil va warzafa staksa moe $1',
 'editsection' => 'betara',
 'editold' => 'betara',
@@ -854,7 +852,6 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'preferences' => 'Lodamaceem',
 'mypreferences' => 'Jinaf lodamaceem',
 'prefs-edits' => 'Ota va betaks :',
-'prefsnologin' => 'Dogluyariskaf',
 'changepassword' => 'Betara va remravlem',
 'prefs-skin' => 'Laviuca',
 'skin-preview' => 'Abdiwira',
index 8f09eae..4a96329 100644 (file)
@@ -358,8 +358,6 @@ Bax: [[Special:Version|Versiyalar]].',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Mənbə — "$1"',
 'youhavenewmessages' => 'Hal-hazırda $1 var. ($2)',
-'newmessageslink' => 'yeni ismarıclar',
-'newmessagesdifflink' => 'Sonuncu və əvvəlki versiya arasındakı fərq',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başqa bir istifadəçidən|$3 istifadəçidən}} $1 var ($2).',
 'youhavenewmessagesmanyusers' => 'Bir çox istifadəçidən $1 var ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
@@ -608,6 +606,7 @@ Xahiş edirik, e-məktubu aldıqdan sonra yenidən daxil olasınız.',
 'blocked-mailpassword' => 'İP ünvanınız bloklu olduğuna görə, yeni parol göndərmə mümkün deyil.',
 'eauthentsent' => 'Göstərilən bu e-poçt ünvanına məktub göndərildi. 
 Gələcəkdə e-poçt almaq üçün,bu e-poçtun sizə aid olması haqqındakı qaydalarla tanış olun.',
+'throttled-mailpassword' => 'Bir parol sıfırlama e-poçtu son {{PLURAL:$1|bir saat|$1 saat}} içində zatən göndərildi. Xidməti pis niyyətlə istifadə etməyi önləmək üçün, hər {{PLURAL:$1|bir saatda|$1 saatda}} sadəcə bir parol sıfırlama e-poçtu göndəriləcəkdir.',
 'mailerror' => 'Məktub göndərmə xətası: $1',
 'acct_creation_throttle_hit' => 'Sizin IP ünvanınızdan bu viki-də son bir gün ərzində {{PLURAL:$1|1 hesab|$1 hesab}} açılmışdır. Bu bir gün ərzində icazə verilən maksimum say olduğu üçün, indiki anda daha çox hesab aça bilməzsiniz.',
 'emailauthenticated' => 'E-poçt ünvanınız $2 saat $3 tarixində təsdiq edilib.',
@@ -617,19 +616,29 @@ Aşağıdakı xidmətlərin heç biri üçün Sizə e-məktub göndərilməyəc
 'emailconfirmlink' => 'E-poçt ünvanını təsdiq et',
 'invalidemailaddress' => 'E-poçt ünvanınızı qeyri-düzgün formatda olduğu üçün qəbul edə bilmirik.
 Xahiş edirik düzgün formatlı ünvan daxil edin və ya bu sahəni boş qoyun.',
+'cannotchangeemail' => 'Hesabın e-poçt ünvanı bu wiki üzərindən dəyişdirilə bilməz.',
 'emaildisabled' => 'Bu saytdan e-poçt göndərə bilməzsiniz.',
 'accountcreated' => 'Hesab yaradıldı',
 'accountcreatedtext' => '$1 üçün istifadəçi hesabı yaradıldı.',
 'createaccount-title' => '{{SITENAME}} hesabın yaradılması',
+'createaccount-text' => 'Biriləri {{SITENAME}} saytında ($4) sizin e-poçt ünvanınızdan istifadə edərək, parolu "$3" olan, "$2" adlı bir hesab yaratdı.
+
+Sayta daxil olmalı və parolunuzu dəyişdirməlisiniz.
+
+Əgər istifadəçi hesabını səhvən yaratmısınızsa, bu mesajı gözardı edə bilərsiniz.',
 'usernamehasherror' => 'İstifadəçi adında "diyez" simvolunun istifadəsi mümkün deyil',
 'login-throttled' => 'Sistemə daxil olmaq üçün həddən artıq cəhd etmisiniz.
 Yeni cəhd etməzdən əvvəl bir qədər gözləyin.',
 'login-abort-generic' => 'Giriş uğursuz alındı - Rədd',
 'loginlanguagelabel' => 'Dil: $1',
 'suspicious-userlogout' => 'Sizin çıxış üçün cəhdiniz uğursuz alındı. Bu, brouzerin yaxud proksi-keşləmənin düzgün işləməməsindən qaynaqlanır.',
+'createacct-another-realname-tip' => 'Gərçək adınız istəyə bağlıdır.
+Əgər gərçək adınızı göstərsəniz, çalışmalarınıza müraciət etmək üçün istifadə ediləcəkdir.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP-nin mail() funksiyasında naməlum xəta',
+'user-mail-no-addy' => 'Bir e-poçt ünvanı olmadan e-poçt göndərməyə çalışdı.',
+'user-mail-no-body' => 'Boş və ya keçərli olmayan bir şəkildə e-poçt göndərilməyə çalışıldı.',
 
 # Change password dialog
 'resetpass' => 'Parolu dəyiş',
@@ -649,11 +658,15 @@ Sistemə daxil olmanı yekunlaşdırmaq üçün yeni parolu bura yazmalısınız
 'resetpass-wrong-oldpass' => 'Müvəqqəti və ya daimi parolda yanlışlıq var.
 Ola bilər siz parolu müvəffəqiyyətlə dəyişmisiniz yaxud müvəqqəti parol üçün müraciət etmisiniz.',
 'resetpass-temp-password' => 'Müvəqqəti parol:',
+'resetpass-abort-generic' => 'Parol dəyişikliyi bir genişlənmə tərəfindən ləğv edildi.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parolu yenilə',
+'passwordreset-text-one' => 'Parolunuzu sıfırlamaq üçün bu formanı doldurun.',
+'passwordreset-text-many' => '{{PLURAL:$1|Parolunuzu sıfırlamaq üçün sahələrdən birini doldurun.}}',
 'passwordreset-legend' => 'Parolu yenilə',
 'passwordreset-disabled' => 'Yenidən qurulma parolu bu vikidə işləmir',
+'passwordreset-emaildisabled' => 'Bu wiki-dəki e-poçt özəllikləri bağlandı.',
 'passwordreset-username' => 'İstifadəçi adı:',
 'passwordreset-domain' => 'Domen:',
 'passwordreset-email' => 'E-mail ünvanı:',
@@ -1021,7 +1034,6 @@ $1",
 'preferences' => 'Nizamlamalar',
 'mypreferences' => 'Nizamlamalar',
 'prefs-edits' => 'Redaktələrin sayı:',
-'prefsnologin' => 'Daxil olmamısınız',
 'changepassword' => 'Parolu dəyiş',
 'prefs-skin' => 'Cild',
 'skin-preview' => 'Sınaq görüntüsü',
@@ -1280,6 +1292,7 @@ Həmçinin kimliyinizi gostərmədən belə, başqalarının sizinlə istifadə
 'recentchanges-label-minor' => 'Bu kiçik redaktədir',
 'recentchanges-label-bot' => 'Bu redaktə bot tərəfindən edilmişdir',
 'recentchanges-label-unpatrolled' => 'Bu redaktə hələ nəzərdən keçirilməmişdir',
+'recentchanges-legend-newpage' => '$1 - yeni səhifə',
 'rcnote' => "Aşağıdakı {{PLURAL:$1|'''1''' dəyişiklik|'''$1''' dəyişiklik}} saat $5, $4 tarixinə qədər son {{PLURAL:$2|gün|'''$2''' gün}} ərzində edilmişdir.",
 'rcnotefrom' => "Aşağıda '''$2'''-dən ('''$1'''-ə qədər) dəyişikliklər sadalanmışdır.",
 'rclistfrom' => '$1 vaxtından başlayaraq yeni dəyişiklikləri göstər',
@@ -1540,8 +1553,12 @@ $1',
 # Random page
 'randompage' => 'İxtiyari səhifə',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Keç',
+
 # Random redirect
 'randomredirect' => 'İxtiyari istiqamətləndirmə',
+'randomredirect-nopages' => '"$1" ad sahəsində heç bir yönləndirmə yoxdur.',
 
 # Statistics
 'statistics' => 'Statistika',
@@ -3044,4 +3061,8 @@ Variants for Chinese language
 'duration-centuries' => '$1 {{PLURAL:$1|əsr|əsr}}',
 'duration-millennia' => '$1 {{PLURAL:$1|minillik|minillik}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Nəticə',
+'expand_templates_ok' => 'OK',
+
 );
index b3594d2..6a1fe51 100644 (file)
@@ -355,8 +355,6 @@ $1',
 'ok' => 'اولدو',
 'retrievedfrom' => '«$1»-دن آلینمیشدیر',
 'youhavenewmessages' => 'سیزین $1 ($2) وارینیزدیر.',
-'newmessageslink' => 'یئنی مئساژلار',
-'newmessagesdifflink' => 'سون دَییشیکلیک',
 'youhavenewmessagesfromusers' => 'سیزین {{PLURAL:$3|بیر آیری ایستیفاده‌چی‌دن|$3 ایستیفاده‌چی‌دن}} $1 وارینیزدیر ($2).',
 'youhavenewmessagesmanyusers' => 'سیزین چوخلو ایشلدنلردن $1 وارینیزدیر ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|بیر یئنی مئساژ|یئنی مئساژلار}}',
@@ -1174,7 +1172,6 @@ $1",
 'preferences' => 'ترجیحلر',
 'mypreferences' => 'ترجیحلر',
 'prefs-edits' => 'دَییشمه‌لرین سایی:',
-'prefsnologin' => 'گیرمه‌میسینیز',
 'changepassword' => 'رمزی دَییشدیر',
 'prefs-skin' => 'قابیق',
 'skin-preview' => 'اؤن‌گؤستریش',
index 7b342e5..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( 'Ҡатнашыусыға_хат' ),
@@ -423,8 +421,6 @@ $1',
 'pagetitle' => '{{SITENAME}} проектынан',
 'retrievedfrom' => 'Сығанағы — «$1»',
 'youhavenewmessages' => 'Яңы $1 бар ($2).',
-'newmessageslink' => 'яңы хәбәр',
-'newmessagesdifflink' => 'һуңғы үҙгәртеү',
 'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
 'youhavenewmessagesmanyusers' => 'Һеҙгә күп ҡатнашыусынан $1 бар ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|яңы хәбәр|яңы хәбәр}}',
@@ -1269,7 +1265,6 @@ $1",
 'preferences' => 'Көйләүҙәр',
 'mypreferences' => 'Көйләүҙәр',
 'prefs-edits' => 'Төҙәтеүҙәр һаны:',
-'prefsnologin' => 'Танылмағанһығыҙ',
 'changepassword' => 'Серһүҙҙе үҙгәртергә',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан байҡау',
@@ -1569,6 +1564,7 @@ $1",
 'recentchanges-label-minor' => 'Был әҙ үҙгәреш',
 'recentchanges-label-bot' => 'Был төҙәтеү бот тарафынан башҡарылды',
 'recentchanges-label-unpatrolled' => 'Был төҙәтеү ҡаралмаған әле',
+'recentchanges-legend-newpage' => '$1 — яңы бит',
 'rcnote' => 'Аҫта $4 $5 тиклем эшләнгән, һуңғы {{PLURAL:$2|1|$2}} көн эсендәге һуңғы {{PLURAL:$1|1|$1}} үҙгәртеү күрһәтелгән.',
 'rcnotefrom' => "Түбәндә '''$2''' башлап ('''$1''' тиклем) үҙгәртеүҙәр күрһәтелгән.",
 'rclistfrom' => '$1 башлап яңы үҙгәртеүҙәрҙе күрһәт.',
@@ -4020,4 +4016,19 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'limitreport-expansiondepth' => 'Киңәйеүҙең иң ҙур тәрәнлеге',
 'limitreport-expensivefunctioncount' => 'Анализаторҙың "ҡиммәтле" функцияларының һаны',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Ҡалыптарҙы йәйелдереү',
+'expand_templates_intro' => 'Был махсус бит бирелгән тексттың бөтә ҡалыптарын ҡабатланмалы рәүештә йәйелдерә.
+Шулай уҡ <nowiki>{{</nowiki>#language:…}} һымаҡ уҡыу ҡоралдары һәм <nowiki>{{</nowiki>CURRENTDAY}} һымаҡ үҙгәреүсән дәүмәлдәр,— ғөмүмән, икәүле йәйәләр эсендә барыһы ла йәйелдерелә.
+Был MediaWiki-ның кәрәкле эшкәртеүсе ҡоралын саҡырыу ярҙамында эшләнә.',
+'expand_templates_title' => '{{FULLPAGENAME}} һ.б. өсөн бит исеме:',
+'expand_templates_input' => 'Сығанаҡ текст:',
+'expand_templates_output' => 'Һөҙөмтә',
+'expand_templates_xml_output' => 'XML һөҙөмтә',
+'expand_templates_ok' => 'Тамам',
+'expand_templates_remove_comments' => 'Аңлатмаларҙы юйырға',
+'expand_templates_remove_nowiki' => 'Һөҙөмтәлә <nowiki> билдәләрен йәшерергә',
+'expand_templates_generate_xml' => 'XML уҡыу ағасын күрһәтергә',
+'expand_templates_preview' => 'Ҡарап сығыу',
+
 );
index fe704a7..3a53f74 100644 (file)
@@ -317,8 +317,6 @@ Schaug auf [[Special:Version|Versiónsseiten]]",
 'ok' => 'Passt',
 'retrievedfrom' => 'Vh „$1“',
 'youhavenewmessages' => 'Du host $1 ($2).',
-'newmessageslink' => 'neiche Nochrichtn',
-'newmessagesdifflink' => 'Letzte Endarung',
 'youhavenewmessagesmulti' => 'Du host neiche Nochrichtn: $1',
 'editsection' => 'Werkln',
 'editold' => 'Werkln',
index 114cac8..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( 'درگیزگ' ),
@@ -382,8 +380,6 @@ $1',
 'ok' => 'هوبنت',
 'retrievedfrom' => 'درگیجگ بیت چه  "$1"',
 'youhavenewmessages' => 'شما هست  $1 ($2).',
-'newmessageslink' => 'نوکین کوله یان',
-'newmessagesdifflink' => 'اهری تغییر',
 'youhavenewmessagesmulti' => 'شما را نوکین کوله یان هست ته   $1',
 'editsection' => 'اصلاح',
 'editold' => 'اصلاح',
@@ -989,7 +985,6 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'منی ترجیحات',
 'prefs-edits' => 'تعداد اصلاحات:',
-'prefsnologin' => 'وارد نهیت',
 'changepassword' => 'کلمه رمز عوض کن',
 'prefs-skin' => 'پوست',
 'skin-preview' => 'بازین',
@@ -3071,4 +3066,20 @@ $5
 'revdelete-unrestricted' => 'به زور چه مدیران سیستم محدودیتان',
 'rightsnone' => '(هچ یک)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'پچ کن تمپلیت آنء',
+'expand_templates_intro' => 'ای صفحه حاص لهتی متنء گریت و کل تمپلتان ته آییء برگشتی مزنش کنت.
+آیی هنچوش عمگر تجزیه کنوکء مزن کنت په داب
+<nowiki>{{</nowiki>#language:…}}, و متغییرانی په داب
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash; در حقیقت هر چیزی که ته دو براکتن.
+آیی ای کارء گون توار کنگ تجزیه کنوک مناسب چه مدیا وی کی وت انجام دنت.',
+'expand_templates_title' => 'عنوان متن په {{FULLPAGENAME}} و دگه.:',
+'expand_templates_input' => 'ورودی متن',
+'expand_templates_output' => 'نتیجه',
+'expand_templates_xml_output' => 'خروجی XML',
+'expand_templates_ok' => 'هوبنت',
+'expand_templates_remove_comments' => 'بزور نظرات',
+'expand_templates_generate_xml' => 'پیش دار درچک تجزیه XMLء',
+'expand_templates_preview' => 'بازبین',
+
 );
index b45d121..4686e88 100644 (file)
@@ -370,12 +370,10 @@ $1',
 'ok' => 'Sige',
 'retrievedfrom' => 'Pinaghugot gikan sa "$1"',
 'youhavenewmessages' => 'Ika igwa nin $1 ($2).',
-'newmessageslink' => 'bàgong mga mensahe',
-'newmessagesdifflink' => 'huring kaliwatan',
 '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',
@@ -508,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''",
@@ -1230,7 +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á:',
-'prefsnologin' => 'Dai nakalaog',
+'prefsnologintext2' => 'Tabi man $1 tanganing maikaag an mga kamuyahan nin paragamit.',
 'changepassword' => 'Ribayan an sekretong panlaog',
 'prefs-skin' => "''Skin''",
 'skin-preview' => 'Tânawon',
@@ -1530,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',
@@ -2248,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}}}}',
@@ -3065,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',
@@ -3759,7 +3756,8 @@ Ika dapat na nakapagresibe na kan [{{SERVER}}{{SCRIPTPATH}}/COPYING sarong kopya
 
 # Special:SpecialPages
 'specialpages' => 'Mga espesyal na pahina',
-'specialpages-note' => '* Normal espesyal na mga pahina.
+'specialpages-note-top' => 'Balaynan',
+'specialpages-note' => '* Normal na espesyal na mga pahina.
 * <span class="mw-specialpagerestricted">Restriktadong espesyal na mga pahina.</span>',
 'specialpages-group-maintenance' => 'Mga talaan nin pagpangataman',
 'specialpages-group-other' => 'Iba pang mga espesyal na pahina',
@@ -3973,4 +3971,17 @@ Kun bako man, ika makakagamit nin sayon na porma sa ibaba. An saimong komento id
 'limitreport-expansiondepth' => 'Kinatugmadan kan pinakahalangkaw na kahiwasan',
 'limitreport-expensivefunctioncount' => 'Bilang kan hiro nin mamahalon na parabangay',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Bigwakon an mga panguyog',
+'expand_templates_intro' => 'Ining espesyal na pahina minakua nin teksto asin minabigwak kan gabos na mga panguyog na yaon kaini na paoro-otro.
+Ini man minabigwak sa punksyon kan suportadong parabangay na arog kan <code><nowiki>{{</nowiki>#language:…}}</code> asin mga kapilyangan arog kan <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Sa katunayan, ini minapabigwak kan gabos na bagay na yaon sa mga dobleng panandayan.',
+'expand_templates_title' => 'Kontekstong titulo, para sa {{FULLPAGENAME}}, ibpa.:',
+'expand_templates_input' => 'Ikaag an teksto:',
+'expand_templates_output' => 'Resulta',
+'expand_templates_xml_output' => 'Kinaluwasan na XML',
+'expand_templates_remove_comments' => 'Tanggalon an mga komento',
+'expand_templates_remove_nowiki' => 'Pugulan an mga taktak na <nowiki> kan resulta',
+'expand_templates_preview' => 'Patânaw',
+
 );
index 1170a91..1669855 100644 (file)
@@ -364,8 +364,6 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Узята з "$1"',
 'youhavenewmessages' => 'Вы маеце $1 ($2).',
-'newmessageslink' => 'новыя паведамленні',
-'newmessagesdifflink' => 'розн. з найноўшай версіяй',
 'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|$3 ўдзельніка|$3 удзельнікаў}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад мноства карыстальнікаў ($2).',
 'youhavenewmessagesmulti' => 'У вас ёсць новыя паведамленні на $1',
@@ -1097,7 +1095,6 @@ $1",
 'preferences' => 'Настройкі',
 'mypreferences' => 'Настройкі',
 'prefs-edits' => 'Колькасць правак:',
-'prefsnologin' => 'Не ўвайшлі',
 'changepassword' => 'Пароль',
 'prefs-skin' => 'Вокладка',
 'skin-preview' => 'перадпаказ',
@@ -1367,6 +1364,7 @@ $1",
 'recentchanges-label-minor' => 'Гэта дробная па значэнні праўка',
 'recentchanges-label-bot' => 'Праўка была зробленая праграмай-робатам',
 'recentchanges-label-unpatrolled' => 'Праўка яшчэ не атрымала адзнакі ўхваленасці (за ёй не сочыць "патруль")',
+'recentchanges-legend-newpage' => '$1 - новая старонка',
 'rcnote' => "Ніжэй паказан{{PLURAL:$1|а '''1''' змяненне|ыя апошнія '''$1''' змяненняў}} за апошні{{PLURAL:$2| дзень|я '''$2''' дзён}}, паводле стану на $5, $4.",
 'rcnotefrom' => 'Ніжэй знаходзяцца змены з <b>$2</b> (да <b>$1</b> на старонку).',
 'rclistfrom' => 'Паказаць змены з $1',
index 4dc5cfa..9e56101 100644 (file)
@@ -65,7 +65,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Стварыць_рахунак' ),
        'Deadendpages'              => array( 'Тупіковыя_старонкі' ),
        'DeletedContributions'      => array( 'Выдалены_ўнёсак' ),
-       'Disambiguations'           => array( 'Неадназначнасьці' ),
        'DoubleRedirects'           => array( 'Двайныя_перанакіраваньні' ),
        'Emailuser'                 => array( 'Даслаць_ліст' ),
        'Export'                    => array( 'Экспарт' ),
@@ -538,8 +537,6 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Атрымана з «$1»',
 'youhavenewmessages' => 'Вы атрымалі $1 ($2).',
-'newmessageslink' => 'новыя паведамленьні',
-'newmessagesdifflink' => 'апошняя зьмена',
 'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|іншага ўдзельніка|$3 удзельнікаў}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад некалькіх удзельнікаў ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|новае паведамленьне|новыя паведамленьні}}',
@@ -1388,7 +1385,6 @@ $1",
 'preferences' => 'Налады',
 'mypreferences' => 'Налады',
 'prefs-edits' => 'Колькасьць рэдагаваньняў:',
-'prefsnologin' => 'Вы не ўвайшлі ў сыстэму',
 'changepassword' => 'Зьмяніць пароль',
 'prefs-skin' => 'Афармленьне',
 'skin-preview' => 'Папярэдні прагляд',
@@ -1688,6 +1684,7 @@ $1",
 'recentchanges-label-minor' => 'Гэтае рэдагаваньне — дробнае',
 'recentchanges-label-bot' => 'Гэтае рэдагаваньне зробленае робатам',
 'recentchanges-label-unpatrolled' => 'Гэтае рэдагаваньне яшчэ не было адпатруляванае',
+'recentchanges-legend-newpage' => '$1 — новая старонка',
 'rcnote' => "Ніжэй {{PLURAL:$1|пададзена '''$1''' апошняя зьмена|пададзеныя '''$1''' апошнія зьмены|пададзеныя '''$1''' апошніх зьменаў}} за {{PLURAL:$2|апошні '''$2''' дзень|апошнія '''$2''' дні|апошнія '''$2''' дзён}}, па стане на $5, $4.",
 'rcnotefrom' => "Ніжэй знаходзяцца зьмены з '''$2''' (да '''$1''' на старонку).",
 'rclistfrom' => 'Паказаць зьмены з $1',
@@ -4143,4 +4140,21 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'limitreport-expansiondepth' => 'Найбольшая глыбіня разгортваньня',
 'limitreport-expensivefunctioncount' => 'Колькасьць дарагіх функцыяў парсэра',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Разгортваньне шаблёнаў',
+'expand_templates_intro' => 'Гэтая спэцыяльная старонка пераўтварае тэкст і разгортвае ўсе шаблёны рэкурсіўна.
+Адначасова разгортваюцца функцыі парсэра накшталт
+<code><nowiki>{{</nowiki>#language:…}}</code>, і зьменныя накшталт
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>
+Фактычна, гэтая старонка разгортвае амаль усё ўнутры падвойных фігурных дужак.',
+'expand_templates_title' => 'Загаловак старонкі, для {{FULLPAGENAME}} і г.д.:',
+'expand_templates_input' => 'Крынічны тэкст:',
+'expand_templates_output' => 'Вынік',
+'expand_templates_xml_output' => 'вынік у фармаце XML',
+'expand_templates_ok' => 'Добра',
+'expand_templates_remove_comments' => 'Выдаліць камэнтары',
+'expand_templates_remove_nowiki' => 'Падаўляць тэгі <nowiki> у выніку',
+'expand_templates_generate_xml' => 'Паказаць дрэва аналізу XML',
+'expand_templates_preview' => 'Папярэдні прагляд',
+
 );
index 225230e..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( 'Свързани_промени' ),
@@ -513,12 +513,10 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Взето от „$1“.',
 'youhavenewmessages' => 'Имате $1 ($2).',
-'newmessageslink' => 'нови съобщения',
-'newmessagesdifflink' => 'разлика с предишната версия',
 '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' => 'редактиране',
@@ -1329,7 +1327,6 @@ $1",
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Брой редакции:',
-'prefsnologin' => 'Не сте влезли',
 'changepassword' => 'Смяна на парола',
 'prefs-skin' => 'Облик',
 'skin-preview' => 'предварителен преглед',
@@ -1607,6 +1604,7 @@ $1",
 'recentchanges-label-minor' => 'Това е малка промяна',
 'recentchanges-label-bot' => 'Тази редакция е извършена от робот',
 'recentchanges-label-unpatrolled' => 'Тази редакция все още не е проверена',
+'recentchanges-legend-newpage' => '(вижте също [[Special:NewPages|списъка с нови страници]])',
 'rcnote' => "{{PLURAL:$1|Показана е '''1''' промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния ден|последните '''$2''' дни}}, към $5, $4.",
 'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
 'rclistfrom' => 'Показване на промени, като се започва от $1.',
@@ -1837,8 +1835,7 @@ $1',
 'upload_source_file' => ' (файл на вашия компютър)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Тази специална страница показва всички качени файлове.
-При филтриране от потребителя се показват само файловете, за които потребителят е качил последната версия.',
+'listfiles-summary' => 'Тази специална страница показва всички качени файлове.',
 'listfiles_search_for' => 'Търсене по име на файла:',
 'imgfile' => 'файл',
 'listfiles' => 'Списък на файловете',
@@ -2141,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' => 'Права',
@@ -3498,7 +3496,7 @@ $5
 
 Валидността на този код за потвърждение ще важи до $4.',
 'confirmemail_body_set' => 'Някой, вероятно вие, от IP адрес $1,
-е посочил този адрес за електронната поща, свързан с потребителска сметка "$2" в {{SITENAME}}.
+е посочил този адрес за електронната поща, свързан с потребителска сметка „$2“ в {{SITENAME}}.
 
 За потвърждаване, че тази потребителска сметка наистина ви принадлежи и за да активирате отново функциите, свързани с електронна поща в {{SITENAME}}, необходимо е да отворите във вашия браузър следната препратка:
 
@@ -3850,4 +3848,16 @@ $1 е автоматично повишен от $4 до $5',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байт|байта}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт|байта}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Разгръщане на шаблони',
+'expand_templates_title' => 'Заглавие на страницата (напр. за {{FULLPAGENAME}}):',
+'expand_templates_input' => 'Входящ текст:',
+'expand_templates_output' => 'Резултат',
+'expand_templates_xml_output' => 'Изход на XML',
+'expand_templates_ok' => 'ОК',
+'expand_templates_remove_comments' => 'Премахване на коментари',
+'expand_templates_remove_nowiki' => 'Потискане на елементите <nowiki> в резултата',
+'expand_templates_generate_xml' => 'Показване на дървото от разбора на XML',
+'expand_templates_preview' => 'Преглед',
+
 );
index 3cc32d8..dac392c 100644 (file)
@@ -320,8 +320,6 @@ $1',
 'ok' => 'ठिक',
 'retrievedfrom' => '"$1" से लियल गईल',
 'youhavenewmessages' => 'रउआ लगे बा $1 ($2).',
-'newmessageslink' => 'नया सन्देश',
-'newmessagesdifflink' => 'अन्तिम परिवर्तन',
 'youhavenewmessagesfromusers' => 'रउआ खातिर {{PLURAL:$3|एगो अन्य सदस्य|$3 अन्य सदस्यन}} के $1 बा। ($2)',
 'youhavenewmessagesmanyusers' => 'रउआ खातिर कई सदस्यन द्वारा $1 बा। ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|एगो नया सन्देश बा|नया सन्देश बाड़न}}',
@@ -907,7 +905,6 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'preferences' => 'वरीयता',
 'mypreferences' => 'राउर पसन्द',
 'prefs-edits' => 'सम्पादन संख्या',
-'prefsnologin' => 'खाता में प्रवेश नईखीं कईले',
 'changepassword' => 'गुप्त शब्द बदलीं',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'पूर्वावलोकन',
index ce84736..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' ),
@@ -403,8 +403,6 @@ Lihati [[Special:Version|Tungkaran mudil]]',
 'ok' => 'OK',
 'retrievedfrom' => 'Dijumput matan "$1"',
 'youhavenewmessages' => 'Pian baisi $1 ($2)',
-'newmessageslink' => 'pasan hanyar',
-'newmessagesdifflink' => 'paubahan pauncitnya',
 'youhavenewmessagesfromusers' => 'Pian baisi $1 matan {{PLURAL:$3|$3 pamakai lain}} ($2).',
 'youhavenewmessagesmanyusers' => 'Pian baisi $1 matan pamakai lain ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|pasan hanyar}}',
@@ -1179,7 +1177,6 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 'preferences' => 'Kakatujuan',
 'mypreferences' => 'Nang ulun katuju',
 'prefs-edits' => 'Rikinan babakan-babakan:',
-'prefsnologin' => 'Balum babuat log',
 'changepassword' => 'Ubah katasunduk',
 'prefs-skin' => 'Kulimbit',
 'skin-preview' => 'Titilikan',
@@ -1452,6 +1449,7 @@ Amun Pian mamilih manyadiakan ini, ini akan dipuruk gasan paminanduan kulihan ga
 'recentchanges-label-minor' => 'Ngini sabuting babakan sapalih',
 'recentchanges-label-bot' => 'Babakan ngini digawi ulih saikung bot',
 'recentchanges-label-unpatrolled' => "Babakan ngini baluman ta'awasi",
+'recentchanges-legend-newpage' => '$1 - tungkaran puga',
 'rcnote' => "Di bawah ni {{PLURAL:$1|'''1'''|'''$1'''}} paubahan pahanyarnya dalam {{PLURAL:$2|'''1''' hari|'''$2''' hari}} tauncit, sampai $4 pukul $5.",
 'rcnotefrom' => "Di bawah ngini paubahan tumatan '''$2''' (ditampaiakan sampai '''$1''' paubahan)",
 'rclistfrom' => 'Tampaiakan paubahan pahanyarnya matan $1',
index c957997..e16248b 100644 (file)
@@ -344,12 +344,10 @@ $1',
 'ok' => 'ঠিক আছে',
 'retrievedfrom' => "'$1' থেকে আনীত",
 'youhavenewmessages' => 'আপনার $1 এসেছে ($2)৷',
-'newmessageslink' => 'নতুন বার্তা',
-'newmessagesdifflink' => 'সর্বশেষ পরিবর্তন',
 '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' => 'সম্পাদনা',
@@ -479,7 +477,8 @@ $2',
 'invalidtitle-knownnamespace' => 'অবৈধ শিরোনাম, যেখানে নামস্থান "$2" এবং লেখা হয়েছে "$3"',
 'invalidtitle-unknownnamespace' => 'অবৈধ শিরোনাম, যেখানে ব্যবহৃত হয়েছে অপরিচিত নামস্থান সংখ্যা $1 এবং লেখা হয়েছে "$2"',
 'exception-nologin' => 'লগইন করা হয়নি',
-'exception-nologin-text' => 'এই কাজটি করার জন্য উইকিতে লগইন করা প্রয়োজন।',
+'exception-nologin-text' => 'এই কাজটি করার জন্য উইকিতে [[Special:Userlogin|লগইন]] করা প্রয়োজন।',
+'exception-nologin-text-manual' => 'অনুগ্রহ করে এই পাতা দেখতে অথবা পরিবর্তন করতে $1 করুন।',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগারেশন: অজ্ঞাত ভাইরাস স্কেনার: ''$1''",
@@ -1022,10 +1021,10 @@ $3-এর দেয়া কারণ হল ''$2''",
 
 {{SITENAME}} এর অন্যান্য প্রশাসকগণ লুকানো এই বিষয়বস্তু দেখতে পাবেন এবং বাড়তি কোনো সীমাবদ্ধতা না থাকলে একই ইন্টারফেসের মাধ্যমে এটি পুনরুদ্ধার করতে পারবেন।",
 'revdelete-confirm' => 'অনুগ্রহ করে নিশ্চিত করুন যে আপনি এটি করতে চাচ্ছিলেন, আপনি এর ফলাফল সম্পর্কে অবগত আছেন, এবং [[{{MediaWiki:Policy-url}}|নীতিমালার]] উপর ভিত্তি করেই এই কাজটি করছেন।',
-'revdelete-suppress-text' => "'''কেবলমাত্র''' নিচের বিষয়গুলোর ক্ষেত্রেই চাপাচাপি করা যাবে:
+'revdelete-suppress-text' => "নিচের বিষয়গুলোর ক্ষেত্রেই '''কেবলমাত্র'''  চাপাচাপি করা যাবে:
 * সম্ভাব্য মানহানিকর তথ্য
 * ভুল ব্যক্তিগত তথ্য
-*:  ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
+*: ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
 'revdelete-legend' => 'দৃষ্টিপাত সীমাবদ্ধ করো',
 'revdelete-hide-text' => 'সংস্করণের লেখা',
 'revdelete-hide-image' => 'ফাইলের বিষয়বস্তু আড়াল করো',
@@ -1190,7 +1189,7 @@ $1",
 'preferences' => 'আমার পছন্দ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনা সংখ্যা:',
-'prefsnologin' => 'আপনি লগ-ইন করেননি',
+'prefsnologintext2' => 'ব্যবহারকারী পছন্দসমূহ নির্ধারনের জন্য $1 করুন।',
 'changepassword' => 'শব্দচাবি পরিবর্তন',
 'prefs-skin' => 'আবরণ (Skin)',
 'skin-preview' => 'প্রাকদর্শন',
@@ -1487,6 +1486,9 @@ $1",
 'recentchanges-label-minor' => 'এটি একটি অনুল্লেখিত সম্পাদনা',
 'recentchanges-label-bot' => 'এটি বট দ্বারা সম্পাদিত',
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটি এখনও পরীক্ষিত নয়',
+'recentchanges-label-plusminus' => 'পাতার আকারে এই পরিমান বাইট পরিবর্তিত হয়েছে',
+'recentchanges-legend-newpage' => '(আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])',
+'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnote' => "বিগত {{PLURAL:$2|দিনে|'''$2''' দিনে}} সংঘটিত {{PLURAL:$1|'''১'''|'''$1'''}}টি পরিবর্তন নীচে দেখানো হল (যেখানে বর্তমান সময় ও তারিখ $5, $4)।",
 'rcnotefrom' => "'''$2'''-এর পরে সংঘটিত পরিবর্তনগুলো নিচে দেখানো হল ('''$1'''টি)।",
 'rclistfrom' => '$1-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
@@ -2399,7 +2401,7 @@ $1',
 
 # Namespace form on various pages
 'namespace' => 'নামস্থান:',
-'invert' => 'বà§\8dযà§\81তà§\8dক্রমে নির্বাচন',
+'invert' => 'বিপরà§\80তক্রমে নির্বাচন',
 'tooltip-invert' => 'যে সকল নামস্থানের পাতাগুলোর পরিবর্তনসমূহর দেখতে চাচ্ছেন না সেগুলোর নামের পাশে টিক দিন',
 'namespace_association' => 'সংশ্লিষ্ট নামস্থান',
 'tooltip-namespace_association' => 'এখানে টিক দেয়ার মাধ্যমে সংশ্লিষ্ট নামস্থান এবং আলাপপাতাসমূহ অন্তর্ভুক্ত করছেন',
@@ -3734,6 +3736,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পাতাসমূহ',
+'specialpages-note-top' => 'লিজেন্ড',
 'specialpages-note' => '* সাধারণ বিশেষ পাতাসমূহ।
 * <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পাতা।</span>',
 'specialpages-group-maintenance' => 'রক্ষণাবেক্ষণের কার্যবিবরণীসমূহ',
@@ -3948,4 +3951,21 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'limitreport-expansiondepth' => 'সর্বোচ্চ গভীরতা বিস্তার',
 'limitreport-expensivefunctioncount' => 'ব্যয়বহুল পার্সার ফাংশন গণনা',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'টেমপ্লেট সম্প্রসারণ',
+'expand_templates_intro' => 'এই বিশেষ পাতাটি কিছু টেক্সট গ্রহণ করে এবং এর ভেতরের সব টেম্পলেট বারংবার সম্প্রসারিত করে।
+এছাড়াও এটি
+<code><nowiki>{{</nowiki>#language:...}}</code>-এর মত পার্সার ফাংশন,
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>-এর মত ভ্যারিয়েবল
+মোটকথা দ্বিতীয় বন্ধনীর মধ্যে অবস্থিত সবকিছুকেই সম্প্রসারিত করতে পারে।',
+'expand_templates_title' => 'প্রাতিবেশিক শিরোনাম, {{FULLPAGENAME}}, ইত্যাদির জন্য:',
+'expand_templates_input' => 'ইনপুটকৃত লেখা:',
+'expand_templates_output' => 'ফলাফল',
+'expand_templates_xml_output' => 'XML আউটপুট',
+'expand_templates_ok' => 'ঠিক আছে',
+'expand_templates_remove_comments' => 'মন্তব্য মুছে ফেলো',
+'expand_templates_remove_nowiki' => 'ফলাফলে <nowiki> ট্যাগগুলো বাতিল করো',
+'expand_templates_generate_xml' => 'XML পার্স বৃক্ষ দেখাও',
+'expand_templates_preview' => 'প্রাকদর্শন',
+
 );
index 8beff87..ffeb49f 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Freeyak
  * @author Jason (on bo.wikipedia.org)
+ * @author Phurbutsering
  * @author Shirayuki
  * @author YeshiTuhden
  */
@@ -36,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' => 'ངའི་ལྟ་ཐོའི་གྲས་སུ་རྩོམ་སྒྲིག་བྱས་པ་ལ་ཤོག་ངོས་ཁ་སྣོན།',
@@ -136,7 +138,7 @@ $messages = array(
 'cancel' => 'རྩིས་མེད།',
 'moredotdotdot' => 'དེ་ལས་མང་བ་་་',
 'mypage' => 'ངའི་ཤོག་ངོས།',
-'mytalk' => 'à½\84འིà¼\8bà½\82ླེà½\84à¼\8bà½\98ོལ།',
+'mytalk' => 'à½\82à½\8fà½\98à¼\8bà½\82ླེà½\84།',
 'anontalk' => 'IP གནས་ཡུལ་འདི་ལ་གླེང་མོལ།',
 'navigation' => 'ཕྱོགས་ཁྲིད།',
 'and' => '&#32;དང་',
@@ -202,7 +204,7 @@ $messages = array(
 'articlepage' => 'ནང་དོན་ཤོག་ངོས་ལ་ལྟ་བ།',
 'talk' => 'གྲོས་བསྡུར།',
 'views' => 'མཐོང་རིས།',
-'toolbox' => 'ལà½\82à¼\8bà½\86འིà¼\8bསà¾\92ྲོà½\98à¼\8d',
+'toolbox' => 'ལག་ཆའི་སྒམ།',
 'userpage' => 'སྤྱོད་མིའི་ཤོག་ངོས་ལ་ལྟ་བ།',
 'projectpage' => 'ལས་འཆར་ཤོག་ངོས་ལ་ལྟ་བ།',
 'imagepage' => 'ཡིག་ཆའི་ཤོག་ངོས་ལ་ལྟ་བ།',
@@ -244,8 +246,6 @@ $messages = array(
 'ok' => 'འགྲིག',
 'retrievedfrom' => '"$1"ལས་རྙེད་པ།',
 'youhavenewmessages' => 'ཁྱེད་ལ་འཕྲིན་གསར་$1($2)ཡོད།',
-'newmessageslink' => 'འཕྲིན་གསར།',
-'newmessagesdifflink' => 'བཟོ་བཅོས་མཐའ་མ།',
 'youhavenewmessagesmulti' => 'ཁྱེད་ལ་ $1 སྟེང་དུ་འཕྲིན་ཡིག་འདུག',
 'editsection' => 'རྩོམ་སྒྲིག',
 'editold' => 'རྩོམ་སྒྲིག',
@@ -389,7 +389,7 @@ $messages = array(
 'loginreqpagetext' => 'ཤོག་ངོས་གཞན་རྣམས་ལྟ་བར་ངེས་པར་དུ་$1བྱ་དགོས།',
 'accmailtitle' => 'ལམ་ཡིག་བཏང་ཟིན།',
 'newarticle' => '(གསར་བ)',
-'previewnote' => '༼འདི་ནི་སྔོན་ལྟ་ཙམ་ཡིན་པ་མ་བརྗེད།༽ ཁྱེད་ཀྱི་བཟོ་བཅོས་ད་དུང་ཉར་ཚགས་བྱས་མི་འདུག',
+'previewnote' => '"འདི་ནི་སྔོན་ལྟ་ཙམ་ཡིན་པ་ཡིད་ལ་འཇགས་རོགས། "ཁྱེད་ཀྱི་བཟོ་བཅོས་ད་དུང་ཉར་ཚགས་བྱས་མི་འདུག',
 'editing' => '$1རྩོམ་སྒྲིག་བྱེད་བཞིན་པ།',
 'editingsection' => ' $1 (སྡེ་ཚན) ལ་རྩོམ་སྒྲིག་བྱེད་བཞིན་པ།',
 'yourtext' => 'ཁྱོད་ཀྱི་ཡིག་འབྲུ།',
@@ -411,8 +411,8 @@ $messages = array(
 'page_last' => 'མཐའ་མ།',
 'history-fieldset-title' => 'ལོ་རྒྱུས་བཤར་ལྟ།',
 'history-show-deleted' => 'དོར་ཟིན་ཁོ་ན།',
-'histfirst' => 'སྔ་ཤོས།',
-'histlast' => 'ཕྱི་ཤོས།',
+'histfirst' => 'à½\86ེསà¼\8bསà¾\94à¼\8bཤོསà¼\8d',
+'histlast' => 'à½\86ེསà¼\8bà½\95ྱིà¼\8bཤོསà¼\8d',
 'historyempty' => '༼སྟོང་པ།༽',
 
 # Revision deletion
@@ -447,6 +447,7 @@ $messages = array(
 'notextmatches' => 'ཤོག་ངོས་ཡིག་འབྲུ་མཚུངས་པ་མི་འདུག',
 'prevn' => 'སྔོན་མ་{{PLURAL:$1|$1}}',
 'nextn' => 'རྗེས་མ་{{PLURAL:$1|$1}}',
+'shown-title' => 'མིག་སྔར་སྟོན་པ། $1{{PLURAL:$1|གྲུབ་འབྲས།}}ཤོག་ངོས་ལྟར།',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)ལ་ལྟ་བ།',
 'searchmenu-legend' => 'འཚོལ་ཞིབ་འདེམས་ཚན།',
 'searchmenu-new' => 'ལྦེ་ཁེ་སྟེང་ལ་ཤོག་ལེ་ [[:$1]]བཟོས།',
@@ -476,9 +477,8 @@ $messages = array(
 'powersearch-togglenone' => 'མེད།',
 
 # Preferences page
-'mypreferences' => 'à½\84འིà¼\8bལེà½\82སà¼\8bསà¾\92ྲིà½\82',
+'mypreferences' => 'à½\91à½\82འà¼\8bའà½\91ེà½\98སà¼\8d',
 'prefs-edits' => 'རྩོམ་སྒྲིག་གྲངས་ཚད།',
-'prefsnologin' => 'ནང་འཛུལ་བྱས་མེད།',
 'changepassword' => 'ལམ་ཡིག་བརྗེ་བ།',
 'skin-preview' => 'སྔོན་ལྟ།',
 'prefs-personal' => 'སྤྱོད་མིའི་སྤྱི་ཁོག',
@@ -567,7 +567,7 @@ $messages = array(
 'minoreditletter' => 'སྒྲིག་ཆུང་།',
 'newpageletter' => 'ཤོག་གསར།',
 'rc_categories_any' => 'གང་རུང་།',
-'rc-enhanced-expand' => 'ཞིབ་ཕྲ་སྟོན།',
+'rc-enhanced-expand' => 'à½\9eིà½\96à¼\8bà½\95ྲརà¼\8bསà¾\9fོà½\93à¼\8d',
 'rc-enhanced-hide' => 'ཞིབ་ཕྲ་སྦས་བ།',
 
 # Recent changes linked
@@ -625,7 +625,7 @@ $messages = array(
 'filehist-filesize' => 'ཡིག་ཆའི་ཆེ་ཆུང་།',
 'filehist-comment' => 'བསམ་ཚུལ།',
 'filehist-missing' => 'ཡིག་ཆ་ཆད་པ།',
-'imagelinks' => 'à½\82à½\84à¼\8bལà¼\8bསྦྲེལà¼\8bà½\96།',
+'imagelinks' => 'ཡིà½\82à¼\8bà½\86à¼\8bà½\96ེà½\91à¼\8bསྤྱོà½\91à¼\8bà½\81ུལ།',
 'linkstoimage' => '{{PLURAL:$1|pagelinks|$1pagelink}} འདི་ལ་སྦྲེལ་ཡོད།',
 'shared-repo-from' => '$1 ནས།',
 
@@ -685,8 +685,8 @@ $messages = array(
 'emailmessage' => 'སྐད་ཆ།',
 
 # Watchlist
-'watchlist' => 'à½\84འིà¼\8bà½\98à½\89à½\98à¼\8bའà½\87ོà½\82་ཐོ།',
-'mywatchlist' => 'à½\84འིà¼\8bà½\98à½\89à½\98à¼\8bའà½\87ོà½\82་ཐོ།',
+'watchlist' => 'ལà¾\9fà¼\8bà½\9eིà½\96་ཐོ།',
+'mywatchlist' => 'ལà¾\9fà¼\8bà½\9eིà½\96་ཐོ།',
 'watchnologin' => 'ནང་འཛུལ་བྱས་མེད།',
 'watch' => 'མཉམ་འཇོག་ཐོ།',
 'watchthispage' => 'དྲ་ངོས་འདི་ལ་གཟིགས།',
@@ -748,8 +748,8 @@ $messages = array(
 'blanknamespace' => '༼གཙོ་ངོས།༽',
 
 # Contributions
-'contributions' => 'སྤྱོà½\91à¼\8bà½\98ིའིà¼\8bà½\96ྱསà¼\8bརà¾\97ེས།',
-'mycontris' => 'à½\84འིà¼\8bà½\96ྱསà¼\8bརà¾\97ེས།',
+'contributions' => 'à½\98à½\90ུà½\93à¼\8bའà½\82ྱུར།',
+'mycontris' => 'à½\98à½\90ུà½\93à¼\8bའà½\82ྱུར།',
 'month' => 'ཟླ་བ་འདི་ནས།',
 'year' => 'ལོ་འདི་ནས།',
 
@@ -761,7 +761,7 @@ $messages = array(
 'whatlinkshere-title' => '"$1" ལ སྦྲེལ་ཡོད་པའི་ཤོག་ངོས།',
 'whatlinkshere-page' => 'ཤོག་ངོས།',
 'linkshere' => "གཤམ་གྱི་ཤོག་ངོས་རྣམས་ '''[[:$1]]''': ལ་སྦྲེལ་ཡོད།",
-'isimage' => 'à½\96རà¾\99à½\93་རིས་སྦྲེལ་མཐུད།',
+'isimage' => 'ཡིà½\82་རིས་སྦྲེལ་མཐུད།',
 'whatlinkshere-links' => '← སྦྲེལ་མཐུད།',
 'whatlinkshere-hidelinks' => '$1 སྦྲེལ་མཐུད།',
 'whatlinkshere-filters' => 'ཡིག་ཚགས།',
@@ -855,7 +855,7 @@ $messages = array(
 'nextdiff' => 'རྩོམ་སྒྲིག་གསར་གྲས། →',
 
 # Media information
-'show-big-image' => 'à½\82à½\8fà½\93à¼\8bའà½\96ེà½\96à¼\8bà½\86à¼\8bà½\9aà½\84à¼\8b།',
+'show-big-image' => 'à½\90ོà½\82à¼\8bà½\98འིà¼\8bཡིà½\82à¼\8bà½\86།',
 
 # Special:NewFiles
 'ilsubmit' => 'འཚོལ།',
index 2722af4..e0c5231 100644 (file)
@@ -303,8 +303,6 @@ $1',
 'ok' => 'চুমিসে',
 'retrievedfrom' => "'$1' -ত্ত আনানি অসে",
 'youhavenewmessages' => 'তরতা $1 ($2) আসে।',
-'newmessageslink' => 'নুৱা পৌ',
-'newmessagesdifflink' => 'গেলগা সিলপা',
 'youhavenewmessagesmulti' => 'তরতা নুৱা পৌ $1হান আহিসে',
 'editsection' => 'পতিক',
 'editold' => 'পতিক',
index 4436f77..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',
@@ -454,12 +453,10 @@ $1',
 'ok' => 'Mat eo',
 'retrievedfrom' => 'Adtapet diwar « $1 »',
 'youhavenewmessages' => "$1 zo ganeoc'h ($2).",
-'newmessageslink' => 'Kemennoù nevez',
-'newmessagesdifflink' => "Diforc'hioù e-keñver ar stumm kent",
 '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ñ',
@@ -636,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",
@@ -1135,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 :',
@@ -1288,7 +1286,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'preferences' => 'Penndibaboù',
 'mypreferences' => 'Penndibaboù',
 'prefs-edits' => 'Niver a zegasadennoù :',
-'prefsnologin' => 'Digevreet',
 'changepassword' => 'Kemmañ ar ger-tremen',
 'prefs-skin' => 'Gwiskadur',
 'skin-preview' => 'Rakwelet',
@@ -1581,6 +1578,7 @@ Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset g
 'recentchanges-label-minor' => "Ur c'hemm dister eo hemañ",
 'recentchanges-label-bot' => "Gant ur bot eo bet degaset ar c'hemm-mañ.",
 'recentchanges-label-unpatrolled' => "N'eo ket bet gwiriet ar c'hemm-mañ evit c'hoazh.",
+'recentchanges-legend-newpage' => '$1 - pajenn nevez',
 'rcnote' => "Setu aze an {{PLURAL:$1|'''1''' change|'''$1''' kemm diwezhañ}} bet c'hoarvezet e-pad an {{PLURAL:$2|deiz|'''$2''' deiz}} diwezhañ, savet d'an $4 da $5.",
 'rcnotefrom' => "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an '''$2''' ('''$1''' d'ar muiañ).",
 'rclistfrom' => "Diskouez ar c'hemmoù diwezhañ abaoe an $1.",
@@ -3830,6 +3828,7 @@ Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar
 
 # Special:SpecialPages
 'specialpages' => 'Pajennoù dibar',
+'specialpages-note-top' => "Alc'hwez",
 'specialpages-note' => '* Pajennoù dibar boutin.
 * <span class="mw-specialpagerestricted">Pajennoù dibar miret strizh.</span>
 * <span class="mw-specialpagecached">Pajennoù dibar krubuilhet hepken (a c\'hellfe bezañ re gozh).</span>',
@@ -4033,4 +4032,21 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 'limitreport-templateargumentsize' => 'Ment arguzenn ar patrom',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|okted}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Emled ar patromoù',
+'expand_templates_intro' => "Kemer a ra ar bajenn dibar-mañ tammoù testenn hag astenn a ra an holl batromoù enni en un doare azkizat.
+Astenn a ra ivez an arc'hwelioù parser evel
+<nowiki>{{</nowiki>#language:…}}, hag an argemmoù evel
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash; e gwirionez, koulz lavaret kement tra zo etre briataennoù.
+Ober a ra kement-mañ dre c'hervel ar bazenn a zegouezh digant parser MediaWiki e-unan.",
+'expand_templates_title' => 'Titl ar gendestenn, evit {{FULLPAGENAME}} h.a. :',
+'expand_templates_input' => 'Merkañ ho testenn amañ :',
+'expand_templates_output' => "Disoc'h",
+'expand_templates_xml_output' => 'Ezvont XML',
+'expand_templates_ok' => 'Mat eo',
+'expand_templates_remove_comments' => 'Lemel an notennoù kuit',
+'expand_templates_remove_nowiki' => "Diverkañ a ra ar balizennoù <nowiki> en disoc'h",
+'expand_templates_generate_xml' => 'Gwelet ar gwezennadur XML',
+'expand_templates_preview' => 'Rakwelet',
+
 );
index a9cbef4..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' ),
@@ -554,8 +554,6 @@ $1',
 'ok' => 'U redu',
 'retrievedfrom' => 'Dobavljeno iz "$1"',
 'youhavenewmessages' => 'Imate $1 ($2).',
-'newmessageslink' => 'novih poruka',
-'newmessagesdifflink' => 'posljednja promjena',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
@@ -1398,7 +1396,6 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'preferences' => 'Postavke',
 'mypreferences' => 'Postavke',
 'prefs-edits' => 'Broj izmjena:',
-'prefsnologin' => 'Niste prijavljeni',
 'changepassword' => 'Promijeni šifru',
 'prefs-skin' => 'Koža',
 'skin-preview' => 'Pregled',
@@ -1690,6 +1687,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'recentchanges-label-minor' => 'Ovo je mala izmjena',
 'recentchanges-label-bot' => 'Ova izmjenu je načinio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnote' => "Ispod {{PLURAL:$1|je '''$1''' promjena|su '''$1''' zadnje promjene|su '''$1''' zadnjih promjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
 'rcnotefrom' => 'Ispod su izmjene od <b>$2</b> (do <b>$1</b> prikazano).',
 'rclistfrom' => 'Prikaži nove izmjene počev od $1',
@@ -4177,4 +4175,21 @@ Inače, možete ispuniti jednostavan obrazac ispod. Vaš komentar biti će dodan
 # Limit report
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Proširi šablone',
+'expand_templates_intro' => 'Ova posebna stranica uzima neki tekst i proširuje sve šablone u njemu rekurzivno.
+Ona također proširuje parserske funkcije poput
+<nowiki>{{</nowiki>#language:…}} i varijable poput
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;u principu gotovo sve između dvostrukih zagrada.
+Ovo se uradi putem poziva relevantnog parserskog nivoa iz same MediaWiki.',
+'expand_templates_title' => 'Naslov konteksta, za {{FULLPAGENAME}} itd.:',
+'expand_templates_input' => 'Tekst unosa:',
+'expand_templates_output' => 'Rezultat',
+'expand_templates_xml_output' => 'XML izlaz',
+'expand_templates_ok' => 'U redu',
+'expand_templates_remove_comments' => 'Ukloni komentare',
+'expand_templates_remove_nowiki' => 'Onemogući oznake <nowiki> u rezultatima',
+'expand_templates_generate_xml' => 'Prikaži XML stablo parsera',
+'expand_templates_preview' => 'Pregled',
+
 );
index 53718ae..063bb3f 100644 (file)
@@ -15,6 +15,7 @@
  * @author Cedric31
  * @author Davidpar
  * @author El libre
+ * @author Fitoschido
  * @author Gemmaa
  * @author Grondin
  * @author Iradigalesc
@@ -26,6 +27,7 @@
  * @author Martorell
  * @author McDutchie
  * @author Nemo bis
+ * @author Papapep
  * @author Pasqual (ca)
  * @author Paucabot
  * @author PerroVerd
@@ -78,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' ),
@@ -88,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' ),
@@ -434,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ó',
@@ -477,12 +478,10 @@ $1",
 'ok' => 'OK',
 'retrievedfrom' => 'Obtingut de «$1»',
 'youhavenewmessages' => 'Tens $1 ($2).',
-'newmessageslink' => 'nous missatges',
-'newmessagesdifflink' => 'últims canvis',
 'youhavenewmessagesfromusers' => "Tens $1 {{PLURAL:$3|d'un altre usuari|de $3 usuaris}} ($2).",
 'youhavenewmessagesmanyusers' => 'Tens $1 de molts usuaris ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un nou missatge|nous missatges}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|darrer canvi|darrers canvis}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un nou missatge|999=nous missatges}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|darrer canvi|999=darrers canvis}}',
 'youhavenewmessagesmulti' => 'Teniu nous missatges a $1',
 'editsection' => 'modifica',
 'editold' => 'modifica',
@@ -568,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ó.',
@@ -587,7 +586,7 @@ Consulta: $2',
 'actionthrottled' => 'Acció limitada',
 'actionthrottledtext' => "Com a mesura per a prevenir la propaganda indiscriminada (spam), no podeu fer aquesta acció tantes vegades en un període de temps tan curt. Torneu-ho a intentar d'ací uns minuts.",
 'protectedpagetext' => "S'ha protegit la pàgina per evitar-hi modificacions.",
-'viewsourcetext' => "Podeu visualitzar i copiar la font d'aquesta pàgina:",
+'viewsourcetext' => 'Podeu visualitzar i copiar el codi font d’aquesta pàgina:',
 'viewyourtext' => "Vostè pot veure i copiar la font de ' ' les modificacions ' ' d'aquesta pàgina:",
 'protectedinterface' => "Aquesta pàgina proporciona el text de la interfície del software d'aquest wiki i està protegida per evitar els abusos.
 Per agregar o canviar les traduccions per a tots els wikis, si us plau fes servir [//translatewiki.net/ translatewiki.net], el projecte de localització de MediaWiki.",
@@ -609,7 +608,7 @@ L\'administrador que l\'ha bloquejat ha donat aquesta explicació: "$3".',
 'invalidtitle-knownnamespace' => "El títol amb l'espai de noms «$2» i text «$3» no és vàlid",
 'invalidtitle-unknownnamespace' => 'Títol no vàlid amb espai de noms desconegut de número «$1» i text «$2»',
 'exception-nologin' => 'No has iniciat sessió',
-'exception-nologin-text' => 'Aquesta pàgina o acció requereix que iniciïs sessió a aquest wiki.',
+'exception-nologin-text' => '[[Special:Userlogin|Inicieu sessió]] per poder accedir a aquesta pàgina o acció.',
 'exception-nologin-text-manual' => 'Si us plau, $1 per poder accedir a aquesta pàgina o acció.',
 
 # Virus scanner
@@ -738,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.",
@@ -898,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.",
@@ -938,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:'''",
@@ -1009,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.
@@ -1021,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',
@@ -1063,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",
 
@@ -1101,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)",
@@ -1112,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].",
@@ -1154,8 +1153,9 @@ funció, la revisió especificada no existeix, o bé esteu provant d'amagar l'ac
 Els altres administradors de {{SITENAME}} encara podran accedir al contingut amagat i restituir-lo de nou mitjançant aquesta mateixa interfície, si no hi ha cap altra restricció addicional.",
 'revdelete-confirm' => "Si us plau, confirmeu que és això el que desitgeu fer, que enteneu les conseqüències, i que esteu fent-ho d'acord amb [[{{MediaWiki:Policy-url}}|les polítiques acordades]].",
 'revdelete-suppress-text' => "Les supressions '''només''' han de ser portades a terme en els següents casos:
+* Informació potencialment difamatòria
 * Informació personal inapropiada
-*: ''adreces personals, números de telèfon, números de la seguretat social, etc.''",
+*: ''adreces personals, números de telèfon, números d'identificació nacional, etc.''",
 'revdelete-legend' => 'Defineix restriccions en la visibilitat',
 'revdelete-hide-text' => 'Text de la revisió',
 'revdelete-hide-image' => 'Amaga el contingut del fitxer',
@@ -1164,8 +1164,8 @@ Els altres administradors de {{SITENAME}} encara podran accedir al contingut ama
 'revdelete-hide-user' => "Nom d'usuari / adreça IP de l'editor",
 'revdelete-hide-restricted' => 'Suprimir les dades als administradors així com a la resta.',
 'revdelete-radio-same' => '(no modificar)',
-'revdelete-radio-set' => 'Visible',
-'revdelete-radio-unset' => 'Oculta',
+'revdelete-radio-set' => 'Oculta',
+'revdelete-radio-unset' => 'Visible',
 'revdelete-suppress' => 'Suprimeix també les dades dels administradors',
 'revdelete-unsuppress' => 'Suprimir les restriccions de les revisions restaurades',
 'revdelete-log' => 'Motiu:',
@@ -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
@@ -1319,7 +1319,7 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'preferences' => 'Preferències',
 'mypreferences' => 'Preferències',
 'prefs-edits' => "Nombre d'edicions:",
-'prefsnologin' => 'No heu iniciat cap sessió',
+'prefsnologintext2' => "Useu $1 per configurar preferències d'usuari.",
 'changepassword' => 'Canvia la contrasenya',
 'prefs-skin' => 'Aparença',
 'skin-preview' => 'prova',
@@ -1359,7 +1359,7 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'prefs-help-watchlist-token2' => 'Aquesta és la clau secreta pel canal de continguts de la vostra llista de seguiment.
 Qualsevol que la conegui podria llegir la vostra llista de seguiment, així que no la compartiu.
 [[Special:ResetTokens|Cliqueu aquí si voleu restaurar-la]].',
-'savedprefs' => "S'han desat les vostres preferències",
+'savedprefs' => 'S’han desat les vostres preferències.',
 'timezonelegend' => 'Fus horari:',
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => "Utilitza l'hora per defecte del wiki ($1)",
@@ -1615,7 +1615,10 @@ 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'')",
 'rcnote' => 'A continuació hi ha {{PLURAL:$1|el darrer canvi|els darrers <strong>$1</strong> canvis}} en {{PLURAL:$2|el darrer dia|els darrers <strong>$2</strong> dies}}, actualitzats a les $5 del $4.',
 'rcnotefrom' => 'A sota hi ha els canvis des de <b>$2</b> (es mostren fins <b>$1</b>).',
 'rclistfrom' => 'Mostra els canvis nous des de $1',
@@ -1703,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.",
@@ -1834,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',
 
@@ -1895,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',
@@ -1945,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
@@ -2251,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
@@ -2277,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'''.",
@@ -2320,7 +2324,7 @@ Contacteu amb l\'editor:
 correu: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-No rebreu més notificacions de futurs canvis si no visiteu la pàgina.
+No rebreu més notificacions en cas de més activitat a menys que visiteu aquesta pàgina havent iniciat sessió.
 També podeu canviar el mode de notificació de les pàgines que vigileu en la vostra llista de seguiment.
 
 El servei de notificacions del projecte {{SITENAME}}
@@ -2355,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",
@@ -2385,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.",
@@ -2612,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',
@@ -2626,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',
@@ -2661,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.',
@@ -2689,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",
@@ -2779,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',
@@ -2891,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!',
@@ -3005,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 */',
@@ -3094,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',
@@ -3136,7 +3141,7 @@ Si l'executeu, podeu comprometre la seguretat del vostre sistema.",
 'svg-long-desc' => 'fitxer SVG, nominalment $1 × $2 píxels, mida del fitxer: $3',
 'svg-long-desc-animated' => 'Fitxer SVG animat, nominalment $1 × $2 píxels, mida del fitxer: $3',
 'svg-long-error' => 'El fitxer SVG no és vàlid: $1',
-'show-big-image' => 'Imatge en màxima resolució',
+'show-big-image' => 'Fitxer original',
 'show-big-image-preview' => "Mida d'aquesta previsualització: $1.",
 'show-big-image-other' => '{{PLURAL:$2|Altra resolució|Altres resolucions}}: $1.',
 'show-big-image-size' => '$1 × $2 píxels',
@@ -3363,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',
@@ -3707,6 +3712,9 @@ Confirmeu que realment voleu tornar-la a crear.",
 'confirm-unwatch-button' => "D'acord",
 'confirm-unwatch-top' => 'Voleu treure aquesta pàgina de la llista de seguiment?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
 # Multipage image navigation
 'imgmultipageprev' => '← pàgina anterior',
 'imgmultipagenext' => 'pàgina següent →',
@@ -3736,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.',
@@ -3836,8 +3844,7 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 'specialpages' => 'Pàgines especials',
 'specialpages-note-top' => 'Llegenda',
 'specialpages-note' => '* Pàgines especials normals.
-* <span class="mw-specialpagerestricted">Pàgines especials restringides.</span>
-* <span class="mw-specialpagecached">Pàgines especials en memòria cau (poden ser obsoletes).</span>',
+* <span class="mw-specialpagerestricted">Pàgines especials restringides.</span>',
 'specialpages-group-maintenance' => 'Informes de manteniment',
 'specialpages-group-other' => 'Altres pàgines especials',
 'specialpages-group-login' => 'Iniciar sessió / Crear un compte',
@@ -3878,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}}',
 
@@ -3996,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.',
@@ -4049,4 +4057,18 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'limitreport-expansiondepth' => "Profunditat màxima d'expansió",
 'limitreport-expensivefunctioncount' => "Número de funcions d'anàlisi dispendioses",
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expansió de plantilles',
+'expand_templates_intro' => "Aquesta pàgina especial expandeix de forma recursiva totes les plantilles d'un text donat.
+També expandeix les funcions sintàctiques, com ara <code><nowiki>{{</nowiki>#language:…}}</code>, i les variables predefinides, com <code><nowiki>{{</nowiki>CURRENTDAY}}</code> &mdash;de fet, gairebé tot que estigui entre claus dobles.",
+'expand_templates_title' => 'Títol per contextualitzar ({{FULLPAGENAME}}, etc):',
+'expand_templates_input' => 'El vostre text:',
+'expand_templates_output' => 'Resultat:',
+'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Elimina els comentaris',
+'expand_templates_remove_nowiki' => "Suprimeix l'etiqueta <nowiki> en el resultat",
+'expand_templates_generate_xml' => "Mostra l'arbre XML",
+'expand_templates_preview' => 'Previsualitza',
+
 );
index 42cb98b..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',
@@ -287,8 +407,6 @@ $1',
 'ok' => '好',
 'retrievedfrom' => '趁「$1」退過來',
 'youhavenewmessages' => '汝有$1($2)。',
-'newmessageslink' => '新信息',
-'newmessagesdifflink' => '最後其改變',
 'youhavenewmessagesfromusers' => '汝有趁$3用戶($2)來其$1萆信息{{PLURAL:$3}}',
 'youhavenewmessagesmanyusers' => '汝有趁雅価用戶($2)其$1信息',
 'newmessageslinkplural' => '$1條新其信息{{PLURAL:$1}}',
@@ -692,7 +810,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'preferences' => '設定',
 'mypreferences' => '我其設定',
 'prefs-edits' => '修改數量:',
-'prefsnologin' => '未躒底其',
 'changepassword' => '改變密碼',
 'prefs-skin' => '皮膚',
 'datedefault' => '無設定',
index b9c263c..7b3a267 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' ),
@@ -594,8 +595,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Хьост — «$1»',
 'youhavenewmessages' => 'Хьуна кхечи $1 ($2).',
-'newmessageslink' => 'керла хаамаш',
-'newmessagesdifflink' => 'тӀаьххьара хийцамаш',
 'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|$3 декъашхочунгара|$3 декъашхошкара|$3 декъашхошкара}} ($2).',
 'youhavenewmessagesmanyusers' => 'Хьона еъна $1 дукху декъашхошкар ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|керла хаам}}',
@@ -982,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, цунна цӀе дӀахьулйина',
 
@@ -1129,7 +1129,7 @@ $1',
 'prefs-skin' => 'Кечяран тема',
 'skin-preview' => 'Хьалха муха ю хьажа',
 'datedefault' => 'Iад йитарца',
-'prefs-beta' => 'Ð\93lоле таронаш',
+'prefs-beta' => 'Ð\91еÑ\82а-таронаш',
 'prefs-datetime' => 'Терахь а хан а',
 'prefs-labs' => 'Муха ю хьажарна таронаш',
 'prefs-user-pages' => 'Декъашхочун агӀо',
@@ -1291,7 +1291,7 @@ $1',
 'right-deleterevision' => 'агӀонийн билгала версеш дӀаяхар а меттахӀиттаяр а',
 'right-deletedhistory' => 'дӀаяхна агӀонийн исторега хьажар дӀадаьккхина йоза тӀекхочехь доцуш',
 'right-deletedtext' => 'дӀадаьккхина йозане а хийцамашка а хьажар агӀонийн дӀаяхна версин юккъахь',
-'right-browsearchive' => 'Ð\94Ӏаяхна агӀонаш лахар',
+'right-browsearchive' => 'дӀаяхна агӀонаш лахар',
 'right-undelete' => 'АгӀонаш меттахӀоттор',
 'right-suppressrevision' => 'куьйгалхойх хьулйина йолу агӀонийн версеш меттахӀиттаяр а хьажар а',
 'right-suppressionlog' => 'долара тептаршка хьажар',
@@ -1344,6 +1344,7 @@ $1',
 'action-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
 'action-delete' => 'дӀаяккха хӀара агӀо',
 'action-deletedhistory' => 'хӀокху агӀона дӀаяккхинцу исторега хьажар',
+'action-browsearchive' => 'ДӀаяхна агӀонаш лахар',
 'action-undelete' => 'хӀара агӀо меттахӀоттор',
 'action-patrol' => 'кхечера нисдарш хьаьжна сана билгалдар',
 'action-autopatrol' => 'шен нисдарш хьаьжна сана билгалдар',
@@ -1360,6 +1361,7 @@ $1',
 'recentchanges-label-minor' => 'Хlара нисдинарг къастийна жимо долушсан',
 'recentchanges-label-bot' => 'ХӀара нисдар шаболх бечо дина',
 'recentchanges-label-unpatrolled' => 'ХӀара нисдар хӀинца цхьано патрулировать дина дац',
+'recentchanges-legend-newpage' => '$1 — керла агlо',
 'rcnote' => "{{PLURAL:$1|Тlаьххьара '''$1''' хийцам|Тlаьххьара '''$1''' хийцамаш|Тlаьххьара '''$1''' хийцамаш}} за '''$2''' {{PLURAL:$2|де|дийнахь|дийнахь}}, оцу хан чохь $5 $4.",
 'rcnotefrom' => "Лахахь гайтина тӀера '''$2''' хийцамаш ('''$1''' къезиг).",
 'rclistfrom' => 'Гайта хийцам оцу $1.',
@@ -1835,7 +1837,7 @@ PICT # тайп тайпан
 'undelete' => 'ДIайайина йолу агIонашка хьажар',
 'undeletepage' => 'ДӀаяхина агӀонашка хьажар а меттахӀоттор а',
 'undeletepagetitle' => "'''Лахахь гайтина хӀокху [[:$1]] агӀона дӀаяхина версеш'''.",
-'viewdeletedpage' => 'ДIайайина йолу агIонашка хьажар',
+'viewdeletedpage' => 'ДӀаяхна йолу агӀонашка хьажар',
 'undelete-fieldset-title' => 'МеттахӀоттае версеш',
 'undeleteextrahelp' => "Ерриге агӀонан истори меттахӀоттая массо а билгалонаш еса а йити '''«{{int:undeletebtn}}»''' тӀетаӀае.
 ЦхӀайолу агӀонан версеш меттахӀоттая хьалха меттахӀоттош йолу версеш билгалъяьхна тӀетагӀе '''«{{int:undeletebtn}}»'''.",
@@ -1855,6 +1857,9 @@ PICT # тайп тайпан
 'undeletedpage' => "'''МеттахӀоттайина агӀо «$1».'''
 
 ДӀадяхнарш долу могӀане [[Special:Log/delete|тéптаре хьажа]].",
+'undelete-header' => 'Дукху хан йоцуш дӀаяхна агӀонаш хьажа мега [[Special:Log/delete|дӀадаьхьнарш долу тептар чохь]].',
+'undelete-search-title' => 'ДӀаяхна агӀонаш лахар',
+'undelete-search-box' => 'ДӀаяхна агӀонаш лахар',
 'undelete-search-submit' => 'Лаха',
 'undelete-show-file-submit' => 'Хlаъ',
 
@@ -2193,6 +2198,8 @@ PICT # тайп тайпан
 'pageinfo-header-basic' => 'Коьрта хаам',
 'pageinfo-language' => 'АгӀона мотт',
 'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
+'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-category-info' => 'Категорех лаьцна хаам',
 
 # Skin names
 'skinname-cologneblue' => 'Кёльнин сингаттам',
@@ -2236,13 +2243,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
@@ -2510,7 +2520,7 @@ PICT # тайп тайпан
 'searchsuggest-search' => 'Лаха',
 
 # Durations
-'duration-hours' => '$1 {{PLURAL:$1|сахьат}}',
+'duration-hours' => '$1 {{PLURAL:$1|сахьт}}',
 'duration-days' => '$1 {{PLURAL:$1|де}}',
 
 # Limit report
@@ -2526,4 +2536,10 @@ PICT # тайп тайпан
 'limitreport-expansiondepth' => 'Шордаларан уггар йокха кӀоргалла',
 'limitreport-expensivefunctioncount' => 'АгӀона хӀоттам къасторан «еза» функцеш',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Кепаш схьаястар',
+'expand_templates_output' => 'Хилам',
+'expand_templates_remove_comments' => 'ДӀаяха комментареш',
+'expand_templates_preview' => 'Хьалха муха ю хьажа',
+
 );
index 1ca9645..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' ),
@@ -314,8 +313,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Gikuha gikan sa "$1"',
 'youhavenewmessages' => 'Aduna kay $1 ($2).',
-'newmessageslink' => 'bag-ong mensahe',
-'newmessagesdifflink' => 'ulahing pag-usab',
 'youhavenewmessagesmulti' => 'Adunay kay bag-ong mensahe sa $1',
 'editsection' => 'usba',
 'editold' => 'usba',
@@ -724,7 +721,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'preferences' => 'Mga preperensiya',
 'mypreferences' => 'Akong preperensiya',
 'prefs-edits' => 'Gidaghanon sa nausab:',
-'prefsnologin' => 'Wala maka-log-in',
 'changepassword' => 'Usba ang pasword',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Paunang tan-aw',
index 0c53642..b71a07b 100644 (file)
@@ -232,8 +232,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Ginen "$1"',
 'youhavenewmessages' => 'Guåha $1 ($2).',
-'newmessageslink' => 'mannuebu na mensåhe',
-'newmessagesdifflink' => 'tinilaika mas nuebu',
 'youhavenewmessagesmulti' => 'Guåha nuebu mensahe-mu gi $1',
 'editsection' => 'tulaika',
 'editold' => 'tulaika',
@@ -659,7 +657,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
 'preferences' => "I ga'ña-mu",
 'mypreferences' => "I ga'ña-hu",
 'prefs-edits' => 'Numirun tinilaika:',
-'prefsnologin' => "Ti ma'log in",
 'changepassword' => 'Tulaika password',
 'prefs-skin' => 'Låssas',
 'skin-preview' => "Na'annok",
index 33e5887..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( 'لێدوانەکانم' ),
@@ -275,9 +275,9 @@ $messages = array(
 'subcategories' => 'ژێرپۆلەکان',
 'category-media-header' => 'میدیای پۆلی «$1»',
 'category-empty' => "''ئەم پۆلە ھەنووکە ھیچ پەڕە یان پەڕگەیەک لە خۆ ناگرێت.‌''",
-'hidden-categories' => '{{PLURAL:$1|Ù¾Û\86Ù\84Û\8c Ø´Ø§Ø±Ø§Ù\88Û\95|Ù¾Û\86Ù\84Û\8c Ø´Ø§Ø±Ø§Ù\88Û\95}}',
+'hidden-categories' => '{{PLURAL:$1|Ù¾Û\86Ù\84Û\8c Ø´Ø§Ø±Ø¯Ø§Ù\88Û\95|Ù¾Û\86Ù\84Û\95 Ø´Ø§Ø±Ø¯Ø§Ù\88Û\95کاÙ\86}}',
 'hidden-category-category' => 'پۆلە شاردراوەکان',
-'category-subcat-count' => '{{PLURAL:$2|ئەم پۆلە تەنھا ژێرپۆلی خوارەوەی تێدایە.| ئەم پۆلە ئەم {{PLURAL:$1|ژێرپۆلەی|$1 ژێرپۆلانەی}} خوارەوەی تێدایە، لە کۆی سەرجەم $2 دانە.}}',
+'category-subcat-count' => '{{PLURAL:$2|ئەم پۆلە تەنیا ژێرپۆلی ژێرەوەی تێدایە.| ئەم پۆلە ئەم {{PLURAL:$1|ژێرپۆلەی|$1 ژێرپۆلانەی}} ژێرەوەی تێدایە، لە کۆی سەرجەم $2 دانە.}}',
 'category-subcat-count-limited' => 'ئەم هاوپۆلە {{PLURAL:$1|ژێرهاوپۆلی}} لەخۆ گرتووە.',
 'category-article-count' => '{{PLURAL:$2|ئەم پۆلە تەنھا ئەم پەڕەی لەخۆگرتووە.|{{PLURAL:$1|پەڕە|$1 پەڕە}} لەم پۆلەدا، لە سەرجەم $2 پەڕە.}}',
 'category-article-count-limited' => 'ئەم {{PLURAL:$1|لاپەڕە|$1 لاپەڕانە}}، لەم هاوپۆلەدان.',
@@ -367,7 +367,7 @@ $messages = array(
 'articlepage' => 'پەڕەی ناوەرۆک ببینە',
 'talk' => 'وتووێژ',
 'views' => 'بینینەکان',
-'toolbox' => 'ئامرازدان',
+'toolbox' => 'ئامرازەکان',
 'userpage' => 'بینینی پەڕەی بەکارھێنەر',
 'projectpage' => 'په‌ڕه‌ی پرۆژه‌ نیشانبده‌',
 'imagepage' => 'پەڕەی پەڕگە نیشان بدە',
@@ -425,8 +425,6 @@ $1',
 'backlinksubtitle' => '→ $1',
 'retrievedfrom' => 'وەرگیراو لە «$1»',
 'youhavenewmessages' => '$1ت ھەیە ($2).',
-'newmessageslink' => 'پەیامی نوێ',
-'newmessagesdifflink' => 'دوایین گۆڕانکاری',
 'youhavenewmessagesfromusers' => 'لە {{PLURAL:$3|بەکارھێنەرێک|$3 بەکارھێنەران}} $1ت ھەیە ($2).',
 'youhavenewmessagesmanyusers' => '$1ت  لە ژمارەیەک بەکارھێنەر ھەیە ( $2 ).',
 'newmessageslinkplural' => '{{PLURAL:$1|پەیامێکی نوێ|پەیامی نوێ}}',
@@ -872,8 +870,8 @@ $2
 ئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.",
 'editing' => 'دەستکاریکردنی $1',
 'creating' => 'دروستکردنی $1',
-'editingsection' => 'دەستکاریکردنی: $1 (بەش)',
-'editingcomment' => 'دەستکاریکردنی $1 (بەشی  نوێ)',
+'editingsection' => 'دەستکاریکردنی $1 (بەش)',
+'editingcomment' => 'دەستکاریکردنی $1 (بەشی نوێ)',
 'editconflict' => 'کێشەی دەستکاری: $1',
 'explainconflict' => "کەسێکی تر ئەم پەڕەیە گۆڕیوە لەو کاتەوە تۆ دەستکاریکردنیت دەستپێکردووە.
 بەشی سەرەوەی دەق، شێوازی ئێستای پەڕەکە لە خۆ ئەگرێت.
@@ -1170,7 +1168,7 @@ $1",
 'searchmenu-new' => "'''لەم ویکییەدا پەڕەی « [[:$1]] » دروست بکە!'''",
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|گەڕیان لە پەڕەکانی بەم پێشگرەوە]]',
 'searchprofile-articles' => 'پەڕە بە ناوەڕۆکەکان',
-'searchprofile-project' => 'پەڕەکانی یارمەتی و پڕۆژە',
+'searchprofile-project' => 'پەڕەکانی یارمەتی و پرۆژە',
 'searchprofile-images' => 'ڕەنگاڵە',
 'searchprofile-everything' => 'ھەموو شتێک',
 'searchprofile-advanced' => 'پێشکەوتوو',
@@ -1195,16 +1193,16 @@ $1",
 'searchall' => 'ھەموو',
 'showingresults' => "لە خوارەوە {{PLURAL:$1|'''یەک''' ئەنجام|'''$1''' ئەنجام}} نیشان دراوە، بە دەست پێ کردن لە ژمارەی '''$2'''ەوە.",
 'showingresultsnum' => "لە خوارەوە {{PLURAL:$3|'''١''' ئەنجام|'''$3''' ئەنجام}} دەبینن کە لە ئەنجامی ژمارە '''$2'''ەوە دەست{{PLURAL:$3|پێدەکات|پێدەکەن}}",
-'showingresultsheader' => "{{PLURAL:$5|ئەنجامی '''$1''' لە '''$3'''|ئەنجامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|ئاکامی '''$1''' لە '''$3'''|ئاکامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
 'nonefound' => "'''تێبینی''': لە حاڵەتی بنچینەیی تەنھا لە ھەندێک لە بۆشایی‌ناوەکان گەڕان دەکرێت.
 وشەی ''all:'' بکە بە پێشگری پرسەکە بۆ گەڕان لە نێو ھەموو کەرستەکان (پەڕەکانی وتووێژ، داڕێژەکان و هتد)، یان بۆشایی‌ناوێکی دڵخواز وەک پێشگر بەکار بێنە.",
 'search-nonefound' => 'ھیچ ئاکامێک کە بە داواکارییەکەت بخوا نەدۆزرایەوە.',
 'powersearch' => 'پێشکەوتوو بگەڕێ',
 'powersearch-legend' => 'گەڕانی پێشکەوتوو',
-'powersearch-ns' => 'گەڕان لە بۆشاییناوەکانی:',
-'powersearch-redir' => 'ڕەوانەکراوەکان لیست بکرێن',
+'powersearch-ns' => 'گەڕان لە بۆشاییی ناوەکانی:',
+'powersearch-redir' => 'ڕەوانەکەرەکان پێرست بکە',
 'powersearch-field' => 'گەڕان بۆ',
-'powersearch-togglelabel' => 'پشکنینی:',
+'powersearch-togglelabel' => 'تاوتوێ بکە:',
 'powersearch-toggleall' => 'ھەموو',
 'powersearch-togglenone' => 'ھیچیان',
 'search-external' => 'گەڕانی دەرەکی',
@@ -1216,12 +1214,11 @@ $1",
 'preferences' => 'ھەڵبژاردەکان',
 'mypreferences' => 'ھەڵبژاردەکان',
 'prefs-edits' => 'ژمارەی گۆڕانکارییەکان:',
-'prefsnologin' => 'لەژوورەوە نیت',
 'changepassword' => 'تێپەڕوشە بگۆڕە',
 'prefs-skin' => 'پێستە',
 'skin-preview' => 'پێش بینین',
 'datedefault' => 'ھەڵنەبژێردراو',
-'prefs-beta' => 'کەرەسەکانی بیتا',
+'prefs-beta' => 'تایبەتمەندییەکانی بیتا',
 'prefs-datetime' => 'کات و ڕێکەوت',
 'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
 'prefs-user-pages' => 'پەڕە بەکارھێنەرییەکان',
@@ -1497,6 +1494,7 @@ $1",
 'recentchanges-label-minor' => 'ئەمە دەستکارییەکی بچووکە',
 'recentchanges-label-bot' => 'ئەم دەستکاریە لە لایەن بۆتەوە پێک هاتووە',
 'recentchanges-label-unpatrolled' => 'ئەم دەستکارییە ھێشتا پاس نەدراوە',
+'recentchanges-legend-newpage' => '$1 - لاپەڕەی نوێ',
 'rcnote' => "لە خوارەوەدا {{PLURAL:$1|'''۱''' گۆڕانکاری |دوایین '''$1''' گۆڕانکارییەکان}} لە دوایین {{PLURAL:$2|ڕۆژ|'''$2''' ڕۆژەوە}} ، تا $5، $4 دەبینن.",
 'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2'''ەوە (ھەتا '''$1''' نیشاندراو).",
 'rclistfrom' => 'گۆڕانکارییە نوێکان نیشان بدە بە دەستپێکردن لە $1',
@@ -2318,8 +2316,8 @@ $1',
 'month' => 'لە مانگی (و پێشترەوە):',
 'year' => 'لە ساڵی (و پێشترەوە):',
 
-'sp-contributions-newbies' => 'تەنھا بەشدارییەکانی بەکارھێنەرە تازەکان نیشان بدە',
-'sp-contributions-newbies-sub' => 'لە بەکارھێنەرە تازەکانەوە',
+'sp-contributions-newbies' => 'تەنیا بەشدارییەکانی ھەژمارە نوێکان نیشان بدە',
+'sp-contributions-newbies-sub' => 'بۆ ھەژمارە نوێکان',
 'sp-contributions-newbies-title' => 'بەشدارییەکانی بەکارھێنەر بۆ ھەژمارە نوێکان',
 'sp-contributions-blocklog' => 'لۆگی بەربەستن',
 'sp-contributions-deleted' => 'بەشدارییە سڕاوەکان',
@@ -2529,7 +2527,7 @@ $1',
 'cant-move-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکانی بەکارهێنەر (جیاواز لە ژێرلاپەڕەکان).',
 'cant-move-to-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەیەک بۆ لاپەڕەی بەکارهێنەر (غەیری بۆ ژێرلاپەڕەی بەکارهێنەر).',
 'newtitle' => 'بۆ ناوی نوێی:',
-'move-watch' => 'ئەم پەڕەیە بخە ژێر چاودێری',
+'move-watch' => 'پەڕەی سەرچاوە و مەبەست بخە ژێر چاودێری',
 'movepagebtn' => 'ئەم پەڕەیە بگوازەوە',
 'pagemovedsub' => 'گواستنەوە بە سەرکەوتوویی جێبەجێ کرا',
 'movepage-moved' => "'''«$1» گوازرایەوە بۆ «$2»'''",
@@ -2809,6 +2807,7 @@ $1',
 'pageinfo-authors' => 'ژمارەی نووسەرە جیاوازەکان',
 'pageinfo-recent-edits' => 'ژمارەی دوایین دەستکارییەکان (لە $1ی ڕابردوودا)',
 'pageinfo-recent-authors' => 'ژمارەی دوایین نووسەرە جیاوازەکان',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|پۆلی شاردراوە|پۆلە شاردراوەکان}} ($1)',
 'pageinfo-templates' => 'داڕێژە{{PLURAL:$1|ی بەکارگیراو| بەکارگیراوەکان}} ($1)',
 'pageinfo-toolboxlink' => 'زانیاریی پەڕە',
 'pageinfo-redirectsto-info' => 'زانیاری',
@@ -3446,6 +3445,8 @@ $5
 'tags-display-header' => 'دیمەن لەسەر لیستەکانی گۆڕان',
 'tags-description-header' => 'پێناسەی تەواوی مەبەست',
 'tags-hitcount-header' => 'گۆڕانکاریە تاگ‌کراوەکان',
+'tags-active-yes' => 'بەڵێ',
+'tags-active-no' => 'نا',
 'tags-edit' => 'دەستکاری',
 'tags-hitcount' => '$1 {{PLURAL:$1|گۆڕان|گۆڕانکاری}}',
 
@@ -3478,6 +3479,8 @@ $5
 'htmlform-submit' => 'ناردن',
 'htmlform-reset' => 'پووچەڵکردنەوەی دەستکارییەکان',
 'htmlform-selectorother-other' => 'دیکە',
+'htmlform-no' => 'نا',
+'htmlform-yes' => 'بەڵێ',
 
 # New logging system
 'logentry-delete-delete' => '$1 پەڕەی $3ی {{GENDER:$2|سڕییەوە}}',
@@ -3538,4 +3541,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|سەدە|سەدە}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ھەزارە|ھەزارە}}',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'باشە',
+
 );
index b86f919..0988bbf 100644 (file)
@@ -270,8 +270,6 @@ Tan-awon ang [[Special:Version|pahina sang bersyon]].',
 'ok' => 'Sige',
 'retrievedfrom' => 'Nakuha halin sa "$1"',
 'youhavenewmessages' => 'May ara ka sang $1 ($2).',
-'newmessageslink' => 'mga bag-o nga mensahe',
-'newmessagesdifflink' => 'katapusan nga pag-ilis',
 'youhavenewmessagesmulti' => 'May mga bag-o ka nga mensahe sa $1',
 'editsection' => 'bag-uhon',
 'editold' => 'bag-uhon',
index 8d040c7..f60d84a 100644 (file)
@@ -361,8 +361,6 @@ $1',
 'ok' => 'Ок',
 'retrievedfrom' => 'Менба – "$1"',
 'youhavenewmessages' => 'Янъы $1 бар ($2).',
-'newmessageslink' => 'беянатынъыз',
-'newmessagesdifflink' => 'музакере саифенъизнинъ сонъки денъиштирильмеси',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
 'youhavenewmessagesmanyusers' => 'Бир къач къулланыджыдан $1 бар. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|янъы беянатынъыз|янъы беянатларынъыз}}',
@@ -879,7 +877,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'preferences' => 'Сазламалар',
 'mypreferences' => 'Сазламалар',
 'prefs-edits' => 'Денъиштирмелер сайысы:',
-'prefsnologin' => 'Отурым ачмадынъыз',
 'changepassword' => 'Пароль денъиштир',
 'prefs-skin' => 'Ресимлеме',
 'skin-preview' => 'Бакъып чыкъув',
@@ -1026,6 +1023,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'recentchanges-label-minor' => 'Бу, кичик бир денъиштирме',
 'recentchanges-label-bot' => 'Бу бир ботнынъ япкъан денъиштирмеси',
 'recentchanges-label-unpatrolled' => 'Бу денъиштирме аля даа тешкерильмеген',
+'recentchanges-legend-newpage' => '$1 - янъы саифе',
 'rcnote' => "$4 $5 тарихында сонъки {{PLURAL:$2|куньде|'''$2''' куньде}} япылгъан '''{{PLURAL:$1|1|$1}}''' денъиштирме:",
 'rcnotefrom' => "'''$2''' тарихындан итибарен япылгъан денъиштирмелер ашагъыдадыр (энъ чокъ '''$1''' дане саифе косьтериле).",
 'rclistfrom' => '$1 тарихындан берли япылгъан денъиштирмелерни косьтер',
index 70138a1..aa405a5 100644 (file)
@@ -356,8 +356,6 @@ $1',
 'ok' => 'Ok',
 'retrievedfrom' => 'Menba – "$1"',
 'youhavenewmessages' => 'Yañı $1 bar ($2).',
-'newmessageslink' => 'beyanatıñız',
-'newmessagesdifflink' => 'muzakere saifeñizniñ soñki deñiştirilmesi',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başqa bir qullanıcıdan|$3 qullanıcıdan}} $1 bar. ($2)',
 'youhavenewmessagesmanyusers' => 'Bir qaç qullanıcıdan $1 bar. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|yañı beyanatıñız|yañı beyanatlarıñız}}',
@@ -875,7 +873,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'preferences' => 'Sazlamalar',
 'mypreferences' => 'Sazlamalar',
 'prefs-edits' => 'Deñiştirmeler sayısı:',
-'prefsnologin' => 'Oturım açmadıñız',
 'changepassword' => 'Parol deñiştir',
 'prefs-skin' => 'Resimleme',
 'skin-preview' => 'Baqıp çıquv',
@@ -1022,6 +1019,7 @@ Eger bildirseñiz, saifelerdeki deñiştirmelerni kimniñ yapqanını köstermek
 'recentchanges-label-minor' => 'Bu, kiçik bir deñiştirme',
 'recentchanges-label-bot' => 'Bu bir botnıñ yapqan deñiştirmesi',
 'recentchanges-label-unpatrolled' => 'Bu deñiştirme alâ daa teşkerilmegen',
+'recentchanges-legend-newpage' => '$1 - yañı saife',
 'rcnote' => "$4 $5 tarihında soñki {{PLURAL:$2|künde|'''$2''' künde}} yapılğan '''{{PLURAL:$1|1|$1}}''' deñiştirme:",
 'rcnotefrom' => "'''$2''' tarihından itibaren yapılğan deñiştirmeler aşağıdadır (eñ çоq '''$1''' dane saife kösterile).",
 'rclistfrom' => '$1 tarihından berli yapılğan deñiştirmelerni köster',
index e24ce65..e49ffaf 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' ),
 );
 
 /**
@@ -637,12 +638,10 @@ $1',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Citováno z „$1“',
 'youhavenewmessages' => 'Máte $1 ($2).',
-'newmessageslink' => 'nové zprávy',
-'newmessagesdifflink' => 'rozdíl oproti předchozí verzi',
 'youhavenewmessagesfromusers' => 'Máte $1 od {{PLURAL:$3|jiného uživatele|$3 jiných uživatelů}} ($2).',
 'youhavenewmessagesmanyusers' => 'Máte $1 od mnoha dalších uživatelů ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novou zprávu|nové zprávy}}',
-'newmessagesdifflinkplural' => 'poslední {{PLURAL:$1|změna|změny}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novou zprávu|999=nové zprávy}}',
+'newmessagesdifflinkplural' => 'poslední {{PLURAL:$1|změna|999=změny}}',
 'youhavenewmessagesmulti' => 'Na $1 máte nové zprávy',
 'editsection' => 'editovat',
 'editold' => 'editovat',
@@ -1318,7 +1317,7 @@ pokud nebyla nastavena další omezení.",
 * Potenciálně pomlouvačné informace
 * Nevhodné osobní údaje
 *: ''adresy bydliště a telefonní čísla, rodná čísla apod.''",
-'revdelete-legend' => 'Nastavit omezení k revizi',
+'revdelete-legend' => 'Nastavit omezení viditelnosti',
 'revdelete-hide-text' => 'Text revize',
 'revdelete-hide-image' => 'Skrýt obsah souboru',
 'revdelete-hide-name' => 'Skrýt událost a cíl',
@@ -1482,7 +1481,6 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'preferences' => 'Nastavení',
 'mypreferences' => 'Nastavení',
 'prefs-edits' => 'Počet editací:',
-'prefsnologin' => 'Nejste přihlášen(a)!',
 'prefsnologintext2' => 'Pro změnu uživatelských nastavení se musíte $1.',
 'changepassword' => 'Změna hesla',
 'prefs-skin' => 'Vzhled',
@@ -1782,6 +1780,9 @@ Vaše adresa v takovém případě není prozrazena.',
 'recentchanges-label-minor' => 'Toto je malá editace',
 'recentchanges-label-bot' => 'Tuto editaci provedl bot',
 'recentchanges-label-unpatrolled' => 'Tato změna dosud nebyla prověřena',
+'recentchanges-label-plusminus' => 'Velikost stránky se změnila o tolik bajtů',
+'recentchanges-legend-newpage' => '(vizte též [[Special:NewPages|seznam nových stránek]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => 'Níže {{plural:$1|je poslední|jsou poslední|je posledních}} <strong>$1</strong> {{plural:$1|změna|změny|změn}} za {{PLURAL:$2|poslední|poslední|posledních}} <strong>$2</strong> {{plural:$2|den|dny|dnů}} před $4, $5.',
 'rcnotefrom' => 'Níže {{PLURAL:$1|je|jsou|je}} nejvýše <b>$1</b> {{PLURAL:$1|změna|změny|změn}} od <b>$2</b>.',
 'rclistfrom' => 'Ukázat nové změny, počínaje od $1',
@@ -4286,4 +4287,21 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'limitreport-expansiondepth' => 'Největší hloubka expanze',
 'limitreport-expensivefunctioncount' => 'Počet náročných funkcí parseru',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Substituce šablon',
+'expand_templates_intro' => 'Tato speciální stránka vezme text a rekurzivně rozbalí všechny použité šablony.
+Také rozbalí podporované funkce parseru jako
+<code><nowiki>{{</nowiki>#language:…}}</code> a proměnné jako
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+V podstatě rozbalí prakticky všechno v dvojitých složených závorkách.',
+'expand_templates_title' => 'Název stránky kvůli kontextu pro {{FULLPAGENAME}} apod.:',
+'expand_templates_input' => 'Vstupní text:',
+'expand_templates_output' => 'Výstup',
+'expand_templates_xml_output' => 'Výstup XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Odstranit komentáře',
+'expand_templates_remove_nowiki' => 'Potlačit ve výsledku značky <nowiki>',
+'expand_templates_generate_xml' => 'Zobrazit syntaktický strom v XML',
+'expand_templates_preview' => 'Náhled',
+
 );
index 1465f5d..53ea9be 100644 (file)
@@ -278,8 +278,6 @@ $messages = array(
 'ok' => 'Jo!',
 'retrievedfrom' => 'Z "$1"',
 'youhavenewmessages' => 'Môsz $1 ($2).',
-'newmessageslink' => 'nowe wiadła',
-'newmessagesdifflink' => 'slédnô zmiana',
 'youhavenewmessagesmulti' => 'Môsz nowé klëczi: $1',
 'editsection' => 'Edicëjô',
 'editold' => 'Edicëjô',
@@ -583,7 +581,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
 'preferences' => 'Preferencëje',
 'mypreferences' => 'Mòje nastôwë',
 'prefs-edits' => 'Lëczba edicëjów:',
-'prefsnologin' => 'Felënk logòwóniô',
 'changepassword' => 'Zmiana parolë',
 'prefs-skin' => 'Wëzdrzatk',
 'skin-preview' => 'Pòdzérk',
index c954f6c..d08e017 100644 (file)
@@ -269,10 +269,8 @@ $messages = array(
 'pagetitle' => '$1 · {{SITENAME}}',
 'retrievedfrom' => 'поѩто иꙁ ⁖ $1 ⁖',
 'youhavenewmessages' => '$1 тєбѣ напьсанꙑ сѫтъ ($2)',
-'newmessageslink' => 'нови напьсаниꙗ',
-'newmessagesdifflink' => 'послѣдьнꙗ мѣна',
-'newmessageslinkplural' => '{{PLURAL:$1|ново напьсаниѥ|нова напьсании|новꙑ напьсаниꙗ}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|послѣдьнꙗ мѣна|послѣдьни мѣни|послѣдьн҄ь мѣнъ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ново напьсаниѥ|нова напьсании|999=новꙑ напьсаниꙗ}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|послѣдьнꙗ мѣна|послѣдьни мѣни|999=послѣдьн҄ь мѣнъ}}',
 'editsection' => 'исправи',
 'editold' => 'исправи',
 'viewsourceold' => 'страницѧ источьнъ обраꙁъ',
@@ -431,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 7a93e72..ff06707 100644 (file)
@@ -269,8 +269,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Çăлкуç — «$1»',
 'youhavenewmessages' => 'Сирĕн $1 пур ($2).',
-'newmessageslink' => 'çĕнĕ пĕлтерӳсем',
-'newmessagesdifflink' => 'юлашки улшăну',
 'youhavenewmessagesmulti' => '$1-та çĕнĕ пĕлтерӳсем пур.',
 'editsection' => 'тӳрлет',
 'editold' => 'тӳрлет',
@@ -575,7 +573,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'preferences' => 'Ĕнерлевсем',
 'mypreferences' => 'Ман ĕнерлевсем',
 'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
-'prefsnologin' => 'Эсир сайта кĕмен',
 'changepassword' => 'Пароле улăштар',
 'prefs-skin' => 'Ерешленӳ',
 'skin-preview' => 'Малтанхи курăну',
@@ -646,6 +643,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'recentchanges' => 'Улшăнусем',
 'recentchanges-legend' => 'Çĕнĕ улшăнусен ĕнерлевĕ',
 'recentchanges-label-bot' => 'Ку улшăнăва бот тунă',
+'recentchanges-legend-newpage' => '$1 — çĕнĕ страница',
 'rcnote' => 'Юлашки <strong>$2</strong> кун хушшинчи <strong>$1</strong> улшăнусем. Халě пěтěмпе  <strong>{{NUMBEROFARTICLES}}</strong> статья.',
 'rclistfrom' => 'Юлашки улшăнусене $1 вăхăтран пуçласа кăтартнă',
 'rcshowhideminor' => 'пĕчĕк тӳрлетӳсене $1',
index b9c1cee..c956e90 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' ),
@@ -390,8 +390,6 @@ $1',
 'ok' => 'Iawn',
 'retrievedfrom' => 'Wedi dod o "$1"',
 'youhavenewmessages' => 'Mae gennych chi $1 ($2).',
-'newmessageslink' => 'Neges(eueon) newydd',
-'newmessagesdifflink' => 'y newid diweddaraf',
 'youhavenewmessagesfromusers' => 'Mae gennych $1 oddi wrth {{PLURAL:$3||ddefnyddiwr arall|$2 ddefnyddiwr arall|$3 defnyddiwr arall|$3 defnyddiwr arall|$3 defnyddiwr arall}} ($2).',
 'youhavenewmessagesmanyusers' => 'Mae gennych $1 oddi wrth lu o ddefnyddwyr eraill ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|neges newydd|neges newydd|negeseuon newydd}}',
@@ -523,7 +521,8 @@ Y rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Teitl annilys o\'r enw "$3" yn y parth "$2"',
 'invalidtitle-unknownnamespace' => 'Teitl annilys ag iddi\'r rhif parth anhysbys $1 a\'r enw "$2"',
 'exception-nologin' => 'Nid ydych wedi mewngofnodi',
-'exception-nologin-text' => "Rhaid mewngofnodi i'r wici er mwyn gweld y dudalen neu gyflawni'r weithred.",
+'exception-nologin-text' => "[[Special:Userlogin|Mewngofnodwch]] er mwyn gweld y dudalen neu gyflawni'r weithred.",
+'exception-nologin-text-manual' => "Mae angen $1 er mwyn gweld y dudalen neu gyflawni'r weithred.",
 
 # Virus scanner
 'virus-badscanner' => "Cyfluniad gwael: sganiwr firysau anhysbys: ''$1''",
@@ -1227,7 +1226,7 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'preferences' => 'Dewisiadau',
 'mypreferences' => 'Dewisiadau',
 'prefs-edits' => 'Nifer y golygiadau:',
-'prefsnologin' => 'Nid ydych wedi mewngofnodi',
+'prefsnologintext2' => 'Mae angen $1 er mwyn gosod eich dewisiadau personol.',
 'changepassword' => 'Newid y cyfrinair',
 'prefs-skin' => 'Gwedd',
 'skin-preview' => 'Rhagolwg',
@@ -1526,6 +1525,9 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'recentchanges-label-minor' => 'Mân olygiad',
 'recentchanges-label-bot' => 'Golygwyd gan fot',
 'recentchanges-label-unpatrolled' => "Nid yw'r golygiad hwn wedi derbyn ymweliad patrôl eto",
+'recentchanges-label-plusminus' => "Newidiodd maint y dudalen o'r nifer hwn o feitiau",
+'recentchanges-legend-newpage' => '(gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Isod mae'r '''$1''' newid diweddaraf yn ystod y {{PLURAL:$2|diwrnod|diwrnod|deuddydd|tridiau|'''$2''' diwrnod|'''$2''' diwrnod}} diwethaf, hyd at $5, $4.",
 'rcnotefrom' => "Isod rhestrir pob newid ers '''$2''' (hyd at '''$1''' ohonynt).",
 'rclistfrom' => 'Dangos newidiadau newydd, gan ddechrau ers $1',
@@ -3746,8 +3748,7 @@ Defnydd:
 'specialpages' => 'Tudalennau arbennig',
 'specialpages-note-top' => 'Allwedd',
 'specialpages-note' => '* Tudalennau arbennig ar gael i bawb.
-* <span class="mw-specialpagerestricted">Tudalennau arbennig cyfyngedig.</span>
-* <span class="mw-specialpagecached">Tudalennau arbennig wedi eu cynhyrchu o\'r celc (gallant fod heb eu harfer rhagor).</span>',
+* <span class="mw-specialpagerestricted">Tudalennau arbennig cyfyngedig.</span>',
 'specialpages-group-maintenance' => 'Adroddiadau cynnal a chadw',
 'specialpages-group-other' => 'Eraill',
 'specialpages-group-login' => 'Mewngofnodi / creu cyfrif',
@@ -3959,4 +3960,14 @@ Defnydd:
 'limitreport-expansiondepth' => 'Uchafswm dyfnder yr ehangu',
 'limitreport-expensivefunctioncount' => "Nifer y ffwythiannau dosrannu sy'n dreth ar adnoddau",
 
+# Special:ExpandTemplates
+'expandtemplates' => "Ehangu'r nodynnau",
+'expand_templates_input' => 'Cynnwys y mewnbwn:',
+'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_remove_nowiki' => "Cuddio'r tagiau <nowiki> wrth ehangu",
+'expand_templates_preview' => 'Rhagolwg',
+
 );
index ebe2fd6..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' ),
@@ -363,7 +361,7 @@ $messages = array(
 'vector-action-move' => 'Flyt',
 'vector-action-protect' => 'Beskyt',
 'vector-action-undelete' => 'Gendan',
-'vector-action-unprotect' => 'Ændre beskyttelse',
+'vector-action-unprotect' => 'Ændr beskyttelse',
 'vector-simplesearch-preference' => 'Aktivér forenklet søgefelt (kun Vector-udseendet)',
 'vector-view-create' => 'Opret',
 'vector-view-edit' => 'Redigér',
@@ -400,9 +398,9 @@ $messages = array(
 'undelete_short' => 'Fortryd sletning af {{PLURAL:$1|én version|$1 versioner}}',
 'viewdeleted_short' => 'Vis {{PLURAL:$1|en slettet redigering|$1 slettede redigeringer}}',
 'protect' => 'Beskyt',
-'protect_change' => 'ændre',
+'protect_change' => 'ændr',
 'protectthispage' => 'Beskyt side',
-'unprotect' => 'Ændre beskyttelse',
+'unprotect' => 'Ændr beskyttelse',
 'unprotectthispage' => 'Ændre beskyttelsen af denne side',
 'newpage' => 'Ny side',
 'talkpage' => 'Diskussion',
@@ -469,12 +467,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Hentet fra "$1"',
 'youhavenewmessages' => 'Du har $1 ($2).',
-'newmessageslink' => 'nye beskeder',
-'newmessagesdifflink' => 'ændringer siden sidste visning',
 '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',
@@ -582,7 +578,7 @@ Forespørgsel: $2',
 'viewsourcetext' => 'Du kan se og kopiere kildekoden til siden:',
 'viewyourtext' => "Du kan se og kopiere kildekoden for '''dine redigeringer''' til denne side:",
 'protectedinterface' => 'Denne side indeholder teksten i brugergrænsefladen til softwaren på denne wiki, og er beskyttet for at forhindre misbrug.
-Hvis du vil tilføje eller ændre oversættelser til alle wiki-websteder, brug venligst [//translatewiki.net/ translatewiki.net], MediaWiki lokalisering projektet.',
+Hvis du vil tilføje eller ændre oversættelser for alle wiki-websteder, så brug venligst [//translatewiki.net/ translatewiki.net], projektet for oversættelse af MediaWiki.',
 'editinginterface' => "'''Advarsel:''' Du redigerer en side som bruges i programmets grænseflade. Ændringer på denne side vil påvirke udseendet af grænsefladen for andre brugere af denne wiki.
 For at tilføje eller ændre oversættelser på alle wikier bedes du benytte [//translatewiki.net/ translatewiki.net], projektet for oversættelse af MediaWiki.",
 'cascadeprotected' => 'Denne side er skrivebeskyttet, da den er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse":
@@ -602,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''",
@@ -778,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:
@@ -901,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
@@ -1001,7 +998,7 @@ Den seneste logpost vises nedenfor:",
 'template-protected' => '(skrivebeskyttet)',
 'template-semiprotected' => '(delvist beskyttet)',
 'hiddencategories' => 'Denne side er i {{PLURAL:$1|en skjult kategori|$1 skjulte kategorier}}:',
-'edittools' => '<!-- Denne tekst vises under formularen „Ændre“ samt "Upload". -->',
+'edittools' => '<!-- Denne tekst vises under formularen "Redigér" samt "Læg en fil op". -->',
 'nocreatetext' => 'Serveren har begrænset oprettelse af nye sider. Bestående sider kan ændres eller [[Special:UserLogin|logge på]].',
 'nocreate-loggedin' => 'Du har ikke rettigheder til at oprette nye sider.',
 'sectioneditnotsupported-title' => 'Afsnitsredigering understøttes ikke',
@@ -1155,7 +1152,7 @@ Andre administratorer på {{SITENAME}} vil fortsat være i stand til at se det s
 'revdelete-hide-comment' => 'Redigeringssammendrag',
 'revdelete-hide-user' => 'Brugerens brugernavn/IP-adrsse',
 'revdelete-hide-restricted' => 'Skjul også informationen for administratorer',
-'revdelete-radio-same' => '(ikke ændre)',
+'revdelete-radio-same' => '(ingen ændring)',
 'revdelete-radio-set' => 'Skjult',
 'revdelete-radio-unset' => 'Synligt',
 'revdelete-suppress' => 'Skjul også informationen for administratorer',
@@ -1168,7 +1165,7 @@ $1",
 'logdelete-success' => "'''Synlighed ændret med success.'''",
 'logdelete-failure' => "'''Kunne ikke ændre logsynligheden.'''
 $1",
-'revdel-restore' => 'Ã\86ndre synlighed',
+'revdel-restore' => 'ændre synlighed',
 'revdel-restore-deleted' => 'slettede redigeringer',
 'revdel-restore-visible' => 'synlige ændringer',
 'pagehist' => 'Sidehistorik',
@@ -1314,7 +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:',
-'prefsnologin' => 'Ikke logget på',
+'prefsnologintext2' => 'Du skal $1 for at ændre brugerindstillinger.',
 'changepassword' => 'Skift adgangskode',
 'prefs-skin' => 'Udseende',
 'skin-preview' => 'Forhåndsvisning',
@@ -1448,9 +1445,9 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 * Et umarkeret felt betyder at brugeren ikke er medlem af gruppen.
 * En * betyder at du ikke kan fravælge gruppen, når den først er tilføjet og omvendt.',
 'userrights-reason' => 'Årsag:',
-'userrights-no-interwiki' => 'Du kan ikke ændre brugerrettigheder på andre wikier.',
+'userrights-no-interwiki' => 'Du har ikke tilladelse til at redigere brugerrettigheder på andre wikier.',
 'userrights-nodatabase' => 'Databasen $1 eksisterer ikke lokalt.',
-'userrights-nologin' => 'Du skal [[Special:UserLogin|logge på]] med en administrativ konto, før du kan ændre brugerettigheder.',
+'userrights-nologin' => 'Du skal [[Special:UserLogin|logge på]] med en administrativ konto, før du kan ændre brugerrettigheder.',
 'userrights-notallowed' => 'Du har ikke tilladelse til at tilføje eller fjerne brugerrettigheder.',
 'userrights-changeable-col' => 'Redigerbare grupper',
 'userrights-unchangeable-col' => 'Uredigerbare grupper',
@@ -1614,6 +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-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',
@@ -1710,7 +1709,7 @@ Brug en henvisning af en de følgende typer for at bruge en fil på en side:
 'largefileserver' => 'Filen er større end den på serveren indstillede maksimale størrelse.',
 'emptyfile' => 'Filen du lagde op lader til at være tom. Det kan skyldes en slåfejl i filnavnet. Kontroller om du virkelig ønsker at lægge denne fil op.',
 'windows-nonascii-filename' => 'Denne wiki understøtter ikke filnavne, der indeholder specialtegn.',
-'fileexists' => 'En fil med det navn findes allerede, tjek venligst [[:$1]] om du er sikker på du vil ændre den.
+'fileexists' => 'En fil med det navn findes allerede, tjek venligst <strong>[[:$1]]</strong> om du er sikker på du vil ændre den.
 [[$1|thumb]]',
 'filepageexists' => 'Siden med beskrivelse af denne fil er allerede oprettet på <strong>[[:$1]]</strong>, men der eksisterer ikke en fil med dette navn.
 Den beskrivelse du kan angive nedenfor vil derfor ikke blive brugt.
@@ -2467,7 +2466,7 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sideb
 'pagesize' => '(bytes)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'ændre',
+'restriction-edit' => 'Redigér',
 'restriction-move' => 'flytte',
 'restriction-create' => 'oprette',
 'restriction-upload' => 'oplægge',
@@ -2627,7 +2626,7 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
 Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'ipb-blockingself' => 'Du er ved at blokere dig selv! Er du sikker på, du vil gøre det?',
 'ipb-confirmhideuser' => 'Du er ved at blokere en bruger med "skjul bruger" aktiveret. Dette vil skjule brugerens navn på alle lister og logposter. Er du sikker på du vil gøre det?',
-'ipb-edit-dropdown' => 'Ændre spærreårsager',
+'ipb-edit-dropdown' => 'Rediger blokeringsbegrundelser',
 'ipb-unblock-addr' => 'Ophæv blokeringen af "$1"',
 'ipb-unblock' => 'Frigive IP-adresse/bruger',
 'ipb-blocklist' => 'Vis alle blokeringer som er i kraft',
@@ -2665,7 +2664,7 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'ipblocklist-no-results' => 'Den angivene IP-addresse eller brugernavn er ikke blokeret.',
 'blocklink' => 'bloker',
 'unblocklink' => 'ophæv blokering',
-'change-blocklink' => 'ændr blokering',
+'change-blocklink' => 'ændring af blokering',
 'contribslink' => 'bidrag',
 'emaillink' => 'send e-mail',
 'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
@@ -2693,7 +2692,7 @@ Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med aktuelle
 'ipb_expiry_temp' => 'Brugernavnet kan kun skjules ved permanente blokeringer.',
 'ipb_hide_invalid' => 'Kan ikke skjule denne konto; den kan have for mange redigeringer.',
 'ipb_already_blocked' => '„$1“ er allerede blokeret',
-'ipb-needreblock' => '$1 er allerede blokkeret. Vil du ændre indstillingene?',
+'ipb-needreblock' => '$1 er allerede blokeret. Vil du ændre indstillingerne?',
 'ipb-otherblocks-header' => 'Yderligere {{PLURAL:$1|blokering|blokeringer}}',
 'unblock-hideuser' => 'Du kan ikke ophæve denne brugers blokering, da brugernavnet er blevet skjult.',
 'ipb_cant_unblock' => 'Fejl: Spærre-ID $1 ikke fundet. Spærringen er allerede ophævet.',
@@ -3685,10 +3684,10 @@ Denne bekræftelseskode vil udløbe den $4.',
 'scarytranscludetoolong' => "[URL'en er for lang]",
 
 # Delete conflict
-'deletedwhileediting' => 'Bemærk: Det blev forsøgt at slette denne side, efter at du var begyndt, at ændre den!
+'deletedwhileediting' => "'''Advarsel:''' Denne side er blevet slettet efter du begyndte at redigere den!
 Kig i [{{fullurl:Special:Log|type=delete&page=}}{{FULLPAGENAMEE}} slette-loggen],
-hvorfor siden blev slettet. Hvis du gemmer siden bliver den oprettet igen.',
-'confirmrecreate' => "Bruger [[User:$1|$1]] ([[User talk:$1|Diskussion]]) har slettet denne side, efter at du begyndte at ændre den. Begrundelsen lyder:
+hvorfor siden blev slettet. Hvis du gemmer siden bliver den oprettet igen.",
+'confirmrecreate' => "Brugeren [[User:$1|$1]] ([[User talk:$1|Diskussion]]) har slettet denne side, efter at du begyndte at redigere den. Begrundelsen lyder:
 : ''$2''
 Bekræft venligst, at du virkelig vil oprette denne side igen.",
 'confirmrecreate-noreason' => '[[User:$1|$1]] ([[User talk:$1|diskussion]]) har slettet denne side, efter du begyndte at redigere. Bekræft venligst, at du gerne vil genoprette siden.',
@@ -3774,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',
@@ -3790,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]].',
@@ -3831,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',
@@ -4042,4 +4042,21 @@ Ellers kan du bruge den enkle formular nedenfor. Din kommentar vil blive tilføj
 'limitreport-expansiondepth' => 'Største udvidelsesdybde',
 'limitreport-expensivefunctioncount' => 'Antal dyre parserfunktioner',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Udfold skabeloner',
+'expand_templates_intro' => 'Denne specialside tager en tekst og udfolder alle benyttede skabeloner rekursivt.
+Den udfolder også understøttede parserfunktioner så som
+<code><nowiki>{{</nowiki>#language:…}}</code> og variabler så som 
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>
+Faktisk udfolder den stort set alt i dobbelte tuborgklammer.',
+'expand_templates_title' => 'Sammenhængstitel, for {{FULLPAGENAME}} osv.:',
+'expand_templates_input' => 'Inputtekst:',
+'expand_templates_output' => 'Resultat',
+'expand_templates_xml_output' => 'XML-kode',
+'expand_templates_ok' => 'Udfold',
+'expand_templates_remove_comments' => 'Fjern kommentarer',
+'expand_templates_remove_nowiki' => 'Undertryk <nowiki>-tags i resultatet',
+'expand_templates_generate_xml' => 'Vis analysetræ som XML',
+'expand_templates_preview' => 'Forhåndsvisning',
+
 );
index e9444d0..dee1540 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:' ),
@@ -694,8 +698,6 @@ Siehe die [[Special:Version|Versionsseite]]',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Von „$1“',
 'youhavenewmessages' => 'Du hast $1 ($2).',
-'newmessageslink' => 'neue Nachrichten',
-'newmessagesdifflink' => 'Letzte Änderung',
 'youhavenewmessagesfromusers' => 'Du hast $1 von {{PLURAL:$3|einem anderen Benutzer|$3 Benutzern}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du hast $1 von vielen Benutzern ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|eine neue Nachricht|999=neue Nachrichten}}',
@@ -926,7 +928,7 @@ Es muss sichergestellt sein, dass Cookies aktiviert sind. Danach diese Seite ern
 'passwordtooshort' => 'Passwörter müssen mindestens {{PLURAL:$1|1 Zeichen|$1 Zeichen}} lang sein.',
 'password-name-match' => 'Dein Passwort muss sich von deinem Benutzernamen unterscheiden.',
 'password-login-forbidden' => 'Die Verwendung dieses Benutzernamens und Passwortes ist nicht erlaubt.',
-'mailmypassword' => 'Neues Passwort zusenden',
+'mailmypassword' => 'Passwort zurücksetzen',
 'passwordremindertitle' => 'Neues Passwort für ein {{SITENAME}}-Benutzerkonto',
 'passwordremindertext' => 'Jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert.
 
@@ -999,7 +1001,7 @@ Möglicherweise hast du dein Passwort bereits erfolgreich geändert oder ein neu
 # Special:PasswordReset
 'passwordreset' => 'Passwort zurücksetzen',
 'passwordreset-text-one' => 'Fülle dieses Formular aus, um dein Passwort zurückzusetzen.',
-'passwordreset-text-many' => '{{PLURAL:$1|Füll eines der Felder aus, um dein Passwort zurückzusetzen.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Füll eines der Felder aus, um ein temporäres Passwort per E-Mail zugesandt zu bekommen.}}',
 'passwordreset-legend' => 'Passwort zurücksetzen',
 'passwordreset-disabled' => 'Das Zurücksetzen von Passwörtern wurde in diesem Wiki deaktiviert.',
 'passwordreset-emaildisabled' => 'Die E-Mail-Funktionen wurden auf diesem Wiki deaktiviert.',
@@ -1542,7 +1544,6 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'preferences' => 'Einstellungen',
 'mypreferences' => 'Einstellungen',
 'prefs-edits' => 'Anzahl der Bearbeitungen:',
-'prefsnologin' => 'Nicht angemeldet',
 'prefsnologintext2' => 'Du musst dich $1, um Benutzereinstellungen festzulegen.',
 'changepassword' => 'Passwort ändern',
 'prefs-skin' => 'Benutzeroberfläche',
@@ -1844,6 +1845,9 @@ Diese Information ist öffentlich.',
 'recentchanges-label-minor' => 'Kleine Änderung',
 'recentchanges-label-bot' => 'Änderung durch einen Bot',
 'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Änderung',
+'recentchanges-label-plusminus' => 'Die geänderte Seitengröße (Anzahl in Bytes)',
+'recentchanges-legend-newpage' => '(siehe auch die [[Special:NewPages|Liste neuer Seiten]])',
+'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnote' => "{{PLURAL:$1|'''1''' Änderung|'''$1''' Änderungen}} in den {{PLURAL:$2|letzten 24 Stunden|letzten '''$2''' Tagen}}.
 Stand: $4, $5 Uhr.",
 'rcnotefrom' => "Angezeigt werden die Änderungen seit '''$2''' (max. '''$1''' Einträge).",
@@ -4304,7 +4308,7 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'rotate-comment' => 'Bild um $1 {{PLURAL:$1|Grad}} im Uhrzeigersinn gedreht',
 
 # Limit report
-'limitreport-title' => 'Parser-Profiling-Daten:',
+'limitreport-title' => 'Profilingdaten des Parsers:',
 'limitreport-cputime' => 'CPU-Zeit-Nutzung',
 'limitreport-cputime-value' => '{{PLURAL:$1|Eine Sekunde|$1 Sekunden}}',
 'limitreport-walltime' => 'Echtzeitnutzung',
@@ -4321,4 +4325,21 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'limitreport-expansiondepth-value' => '$1/$2',
 'limitreport-expensivefunctioncount' => 'Anzahl aufwändiger Parserfunktionen',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Vorlagen expandieren',
+'expand_templates_intro' => 'Auf dieser Spezialseite kann Text eingegeben werden. Alle enthaltenen Vorlagen werden dabei rekursiv expandiert.
+Auch Parserfunktionen wie
+<code><nowiki>{{</nowiki>#language:…}}</code> und Variablen wie
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code> werden ausgewertet –
+faktisch alles was in doppelten geschweiften Klammern enthalten ist.',
+'expand_templates_title' => 'Kontexttitel, für {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Eingabefeld:',
+'expand_templates_output' => 'Ergebnis',
+'expand_templates_xml_output' => 'XML-Ausgabe',
+'expand_templates_ok' => 'Okay',
+'expand_templates_remove_comments' => 'Kommentare entfernen',
+'expand_templates_remove_nowiki' => '<nowiki>-Tags in der Ausgabe unterdrücken',
+'expand_templates_generate_xml' => 'XML-Parser-Baum zeigen',
+'expand_templates_preview' => 'Vorschau',
+
 );
index 93b5fbd..15c1cec 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,15 +496,15 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'Mewzu vıraze',
-'vector-action-delete' => 'Bestere',
-'vector-action-move' => 'Beré',
+'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' => 'İycad ke',
 'vector-view-edit' => 'Timar ke',
-'vector-view-history' => 'Veréni bıvin',
+'vector-view-history' => 'Verénan bıvin',
 'vector-view-view' => 'Buwan',
 'vector-view-viewsource' => 'Çımi bıvin',
 'actions' => 'Hereketi',
@@ -510,11 +523,11 @@ $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ıvin',
-'edit' => 'Bıvurnên',
+'edit' => 'Timar ke',
 'create' => 'İycad ke',
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
@@ -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',
@@ -597,12 +610,10 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => '"$1" ra ard',
 'youhavenewmessages' => 'To rê $1 esto ($2).',
-'newmessageslink' => 'mesacê şıma',
-'newmessagesdifflink' => 'vurnayışo peyên',
 'youhavenewmessagesfromusers' => 'Zey $1 ra {{PLURAL:$3|zewbi karber|$3 karberi}} ($2) esto.',
 'youhavenewmessagesmanyusers' => '$1 ra tay karberi ($2) dı estê.',
-'newmessageslinkplural' => '{{PLURAL:$1|yew mesac|mesacê newey}}',
-'newmessagesdifflinkplural' => 'peyni {{PLURAL:$1|vurnayış|vurnayışi}}',
+'newmessageslinkplural' => '{{PLURAL:$1|yew mesaco newe|999=mesacê newey}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|vırnayışa|999=vırnayışé}} peyéni',
 'youhavenewmessagesmulti' => '$1 mesaco newe esto',
 'editsection' => 'bıvurne',
 'editold' => 'bıvurne',
@@ -627,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',
 
@@ -639,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',
 
@@ -656,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',
@@ -729,7 +742,7 @@ Xızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
 'invalidtitle-knownnamespace' => 'Canemey "$2" u metnê "$3" xırabo',
 'invalidtitle-unknownnamespace' => 'Sernameye nêşınasiya yana amraiya canameyo  $1 u metno "$2" xırab',
 'exception-nologin' => 'Şıma cıkewtış nêvıraşto',
-'exception-nologin-text' => 'Na pele ya zi nê karkerdışi rê nê wiki de cıkewtış icab keno.',
+'exception-nologin-text' => 'Na pera ya zi na karkerdışi de  na wiki de [[Special:Userlogin|cıkewtış]] icab keno.',
 
 # Virus scanner
 'virus-badscanner' => "Eyaro şaş: no virus-cıgerayox nêzanyeno: ''$1''",
@@ -774,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' => 'To parola ke ğo 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',
@@ -937,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',
 
@@ -1427,7 +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:',
-'prefsnologin' => 'Şıma cıkewtış nêvıraşto',
+'prefsnologintext2' => 'Reca kem  sazé tercihané karberi $1.',
 'changepassword' => 'Parola bıvurne',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verasayış',
@@ -1639,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ê',
@@ -1720,6 +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-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',
@@ -1733,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',
@@ -2117,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
@@ -2149,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.
@@ -2222,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' => 'Beré',
-'movethispage' => 'Na perer beré',
+'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.',
@@ -2435,14 +2463,12 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.',
 'enotif_anon_editor' => 'karbero anonim $1',
 'enotif_body' => 'Erciyayê $WATCHINGUSERNAME,
 
-{{SITENAME}} keyepel de no $PAGETITLE pelo sernameyın re $PAGEEDITDATE no tarix de $PAGEEDITOR no karberi $CHANGEDORCREATED. şıma eşkeni bıresi halê no peli re $PAGETITLE_URL na adresi ra.
+$PAGEINTRO $NEWPAGE
 
-$NEWPAGE
+eniya timaroği: $PAGESUMMARY $PAGEMINOREDIT
 
-beyanatê karber o ke vurnayiş kerdo: $PAGESUMMARY $PAGEMINOREDIT
-
-cıresayişê karber o ke vurnayiş kerdo:
-e-posta: $PAGEEDITOR_EMAIL
+Timaroğiya irtibat:
+mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
 no pel o ke behs beno heta ziyaret kerdışê yewna heli, mesajê vuriyayişi nêşawiyeno.
@@ -2584,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' => 'Beré',
+'restriction-move' => 'Ber',
 'restriction-create' => 'İycad ke',
 'restriction-upload' => 'Bar ke',
 
@@ -2643,7 +2669,6 @@ belka cıwa ver hewn a biyo..',
 $1',
 'undelete-show-file-confirm' => '"<nowiki>$1</nowiki>" şıma emin î dosyaya revizyonê no $2 $3 tarixi bıvini?',
 'undelete-show-file-submit' => 'E',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Heruna naman:',
@@ -2777,7 +2802,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',
@@ -2912,7 +2937,7 @@ Yewna name bınus.',
 'movenosubpage' => 'pelê bınıni yê no peli çino.',
 'movereason' => 'Sebeb:',
 'revertmove' => 'peyser bia',
-'delete_and_move' => 'Besterné uw beré',
+'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?',
@@ -3063,16 +3088,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.',
@@ -3091,7 +3116,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',
@@ -3133,6 +3158,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. */',
@@ -4133,6 +4159,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:',
@@ -4154,9 +4181,9 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 
 # Special:SpecialPages
 'specialpages' => 'Pelê xısusiy',
-'specialpages-note' => '* Xısusi pelaya normal
-* <span class="mw-specialpagerestricted">Xısusi peleyê keı rê ray nê deyaya.</span>
-* <strong class="mw-specialpagerestricted">Peleya xısusiya ke grota verhefıza.</strong>',
+'specialpages-note-top' => 'Kıtabek',
+'specialpages-note' => '*Normal pera bağsi.
+* <span class="mw-specialpagerestricted">Peré bağseyé ke groté ver hafıza.</span>',
 'specialpages-group-maintenance' => 'Raporê tepıştışi',
 'specialpages-group-other' => 'Pelê xasiyê bini',
 'specialpages-group-login' => 'Cı kewe / hesab vıraze',
@@ -4368,4 +4395,21 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'limitreport-expansiondepth' => 'Tewr veşi herayina dergbiyayışi',
 'limitreport-expensivefunctioncount' => 'Amoriya fonksiyonde vay agozni',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'şablonan hêra ker',
+'expand_templates_intro' => 'Na pela xususi metın geno u şablonê ke tedeyê reyna reyna hêra keno.
+U hem zi nê fonksiyonan hêra keno
+<nowiki>{{</nowiki>#language:…}}</code>, u zey nê parametreyan
+<nowiki>{{</nowiki>CURRENTDAY}}</code>
+Eneri Medya wiki sera xo keno.',
+'expand_templates_title' => 'Sernameyê weziyeti, misal qandê {{FULLPAGENAME}}.:',
+'expand_templates_input' => 'sernameyê cıkewtışi:',
+'expand_templates_output' => 'netice',
+'expand_templates_xml_output' => 'XML vıraştış',
+'expand_templates_ok' => 'temam',
+'expand_templates_remove_comments' => 'Tefsiran wedare',
+'expand_templates_remove_nowiki' => 'neticeyan de etiketê <nowiki> yan çap bıker',
+'expand_templates_generate_xml' => 'Dara XML arêdayoği bımocne',
+'expand_templates_preview' => 'Verqayt',
+
 );
index 625948d..9f63fc2 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,12 +166,12 @@ $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źěłańsku lejstwu pokazaś (pótrjebujo JavaScript)',
-'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś (pótrjebujo JavaScript)',
+'tog-showtoolbar' => 'Wobźěłowańsku rědku pokazaś',
+'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś',
 'tog-editsection' => 'Wobźěłanje wótstawkow pśez wótkaze [wobźěłaś] zmóžniś',
-'tog-editsectiononrightclick' => 'Wobźěłanje wótstawkow pśez kliknjenje z pšaweju tastu myški zmóžniś (JavaScript)',
+'tog-editsectiononrightclick' => 'Wobźěłowanje wótrězkow pśez kliknjenje z pšaweju tastu myški zmóžniś',
 'tog-showtoc' => 'Wopśimjeśe pokazaś, jolic ma bok wěcej nježli 3 nadpisma',
 'tog-rememberpassword' => 'Z toś tym wobglědowakom pśizjawjony wóstaś (za maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
 'tog-watchcreations' => 'Boki, kótarež napórajom a dataje, kótarež nagrawam, wobglědowaś',
@@ -191,7 +189,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Licbu wobglědujucych wužywarjow pokazaś',
 'tog-oldsig' => 'Eksistěrujuca signatura:',
 'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadaś (bźez awtomatiskego wótkaza)',
-'tog-uselivepreview' => 'Live-pśeglěd wužywaś (JavaScript) (eksperimentelnje)',
+'tog-uselivepreview' => 'Live-pśeglěd wužywaś (eksperimentelnje)',
 'tog-forceeditsummary' => 'Warnowaś, gaž pśi składowanju zespominanje felujo',
 'tog-watchlisthideown' => 'Móje změny na wobglědowańskej lisćinje schowaś',
 'tog-watchlisthidebots' => 'Změny awtomatiskich programow (botow) na wobglědowańskej lisćinje schowaś',
@@ -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}}',
@@ -292,7 +303,7 @@ $messages = array(
 'newwindow' => '(se wótcynijo w nowem woknje)',
 'cancel' => 'Pśetergnuś',
 'moredotdotdot' => 'Wěcej…',
-'morenotlisted' => 'Dalšne njepódane...',
+'morenotlisted' => 'Toś ta lisćina njejo dopołna.',
 'mypage' => 'Bok',
 'mytalk' => 'Diskusija',
 'anontalk' => 'Diskusija z toś teju IP',
@@ -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ś',
@@ -364,7 +376,7 @@ $messages = array(
 'articlepage' => 'Nastawk',
 'talk' => 'Diskusija',
 'views' => 'Naglědy',
-'toolbox' => 'Pomocne srědki',
+'toolbox' => 'Rědy',
 'userpage' => 'Wužywarski bok pokazaś',
 'projectpage' => 'Projektowy bok pokazaś',
 'imagepage' => 'Datajowy bok se woglědaś',
@@ -394,7 +406,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' => 'Wó {{GRAMMAR:lokatiw|{{SITENAME}}}}',
 'aboutpage' => 'Project:Wó_{{GRAMMAR:lokatiw|{{SITENAME}}}}',
-'copyright' => 'Wopśimjeśe stoj pód $1.',
+'copyright' => 'Wopśimjeśe stoj pód $1 k dispoziciji, jolic njejo se hynac pódało.',
 'copyrightpage' => '{{ns:project}}:Stwóriśelske pšawo',
 'currentevents' => 'Aktualne tšojenja',
 'currentevents-url' => 'Project:Aktualne tšojenja',
@@ -420,12 +432,10 @@ $1',
 'ok' => 'Pytaś',
 'retrievedfrom' => 'Z {{GRAMMAR:genitiw|$1}}',
 'youhavenewmessages' => 'Maš $1 ($2).',
-'newmessageslink' => 'nowe powěsći',
-'newmessagesdifflink' => 'slědna změna',
 'youhavenewmessagesfromusers' => 'Maš $1 wót {{PLURAL:$3|drugego wužywarja|$3 wužywarjowu|$3 wužywarjow|$3 wužywarjow}} ($2).',
 'youhavenewmessagesmanyusers' => 'Maš $1 wót wjele wužywarjow ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|nowa powěsć|nowej powěsći|nowe powěsći|nowe powěsći}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|slědna změna|slědnej změnje|slědne změny|slědne změny}}',
+'newmessageslinkplural' => '{{PLURAL:$1|nowa powěsć|nowej powěsći|nowe powěsći}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|slědna změna|slědnej změnje|slědne změny}}',
 'youhavenewmessagesmulti' => 'Maš nowe powěsći: $1',
 'editsection' => 'wobźěłaś',
 'editold' => 'wobźěłaś',
@@ -477,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',
@@ -509,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.',
@@ -532,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.
@@ -540,7 +561,8 @@ Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 'invalidtitle-knownnamespace' => 'Njepłaśiwy titel z mjenjowym rumom "$2" a tekstom "$3"',
 'invalidtitle-unknownnamespace' => 'Njepłaśiwy titel z njeznatym mjenjowym rumom $1 a tekstom "$2"',
 'exception-nologin' => 'Njejsy se pśizjawił',
-'exception-nologin-text' => 'Toś ten bok abo toś ta akcija pomina, až sy na toś tom wikiju pśizjawjony.',
+'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''",
@@ -548,15 +570,15 @@ Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 'virus-unknownscanner' => 'njeznaty antiwirus:',
 
 # Login and logout pages
-'logouttext' => "'''Sy se něnto wótzjawił.'''
+'logouttext' => "'''{{GENDER:|Sy|Sy}} něnto {{GENDER:|wótzjawjony|wótzjawjona}}.'''
 
-Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš <span class='plainlinks'>[$1 se znowego pśizjawiś]</span> ako samski abo hynakšy wužywaŕ.
-Źiwaj na to, až někotare boki se dalej tak zwobraznjuju ako by hyšći pśizjawjeny był, až njewuproznijoš cache swójego wobglědowaka.",
+Glědaj: Jo móžno, až někotare boki pokazuju se snaź tak, ako by ty hyšći pśizjawjony był, až njewuproznijoš pufrowak twójogo wobglědowaka.",
 'welcomeuser' => 'Witaj $1',
 'welcomecreation-msg' => 'Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences|nastajenja za {{SITENAME}}]].',
 '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',
@@ -586,15 +608,35 @@ Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš <span class='plainl
 '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ś.',
@@ -624,15 +666,13 @@ 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.
 Woglědowarje, kótarež wužywaju toś tu IP-adresu njamógu tuchylu dalšne konta napóraś.',
 'emailauthenticated' => 'Twója e-mailowa adresa jo se $2 $3 goź. wobkšuśiła.',
-'emailnotauthenticated' => 'Twója e-mailowa adresa njejo hyšći wobkšuśona. E-mailowe funkcije móžoš aklej pó wuspěšnem wobkšuśenju wužywaś.',
+'emailnotauthenticated' => 'Twója e-mailowa adresa hyšći njejo wobkšuśona. Žedna e-mail buźo se za slědujuce funkcije słaś.',
 'noemailprefs' => 'Zapódaj e-mailowu adresu w swójich nastajenjach, aby toś te funkcije stali k dispoziciji.',
 'emailconfirmlink' => 'Wobkšuś swóju e-mailowu adresu.',
 'invalidemailaddress' => 'Toś ta e-mailowa adresa njamóžo se akceptěrowaś, dokulaž zda se, až jo njepłaśiwy format. Pšošym zapódaj adresu w korektnem formaśe abo wuprozń to pólo.',
@@ -645,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()',
@@ -664,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ś',
@@ -672,11 +714,15 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
 'resetpass-wrong-oldpass' => 'Njepłaśiwe nachylne abo aktualne gronidło.
 Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło pominał.',
 'resetpass-temp-password' => 'Nachylne gronidło:',
+'resetpass-abort-generic' => 'Změnjanje gronidła jo se pśez rozšyrjenje pśetergnuł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ś?',
@@ -699,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ś',
@@ -713,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',
@@ -789,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.",
@@ -880,7 +937,7 @@ Nejnowšy protokolowy zapisk jo dołojce ako referenca pódany:",
 'nocreate-loggedin' => 'Njamaš pšawo nowe boki napóraś.',
 'sectioneditnotsupported-title' => 'Wobźěłowanje wótrězka se njepódpěra',
 'sectioneditnotsupported-text' => 'Wobźěłowanje wótrězka njepódpěra se na toś tom wobźěłowańskem boku.',
-'permissionserrors' => 'Problem z pšawami',
+'permissionserrors' => 'Wopšawnjeńska zmólka',
 'permissionserrorstext' => 'Njamaš pšawo to cyniś. {{PLURAL:$1|Pśicyna|Pśicynje|Pśicyny}}:',
 'permissionserrorstext-withaction' => 'Njamaš pšawo $2. {{PLURAL:$1|Pśicyna|Pśicynje|Pśicyny|Pśicyny}}:',
 'recreate-moveddeleted-warn' => "'''Glědaj: Ty wótžywijoš bok, kótaryž jo pjerwjej se wulašował.'''
@@ -902,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',
@@ -935,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ś',
@@ -1023,19 +1082,20 @@ 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 schowaś',
+'revdelete-hide-text' => 'Tekst wersije',
 'revdelete-hide-image' => 'Wopśimjeśe dataje schowaś',
 'revdelete-hide-name' => 'Akciju log-lisćiny schowaś',
-'revdelete-hide-comment' => 'Komentar wobźěłanja schowaś',
-'revdelete-hide-user' => 'mě/IP-adresu wobźěłarja schowaś',
+'revdelete-hide-comment' => 'Zespominanje wobźěłanja',
+'revdelete-hide-user' => 'Mě/IP-adresa wobźěłarja',
 'revdelete-hide-restricted' => 'Daty wót administratorow ako teke te drugich wužywarjow pódtłocyś',
 'revdelete-radio-same' => '(njezměniś)',
-'revdelete-radio-set' => 'Jo',
-'revdelete-radio-unset' => '',
+'revdelete-radio-set' => 'Schowany',
+'revdelete-radio-unset' => 'Widobny',
 'revdelete-suppress' => 'Pśicynu wulašowanja teke za administratorow schowaś',
 'revdelete-unsuppress' => 'Wobgranicowanja za wótnowjone wersije zasej zwignuś.',
 'revdelete-log' => 'Pśicyna:',
@@ -1114,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}}.
@@ -1181,12 +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:',
-'prefsnologin' => 'Njejsy pśizjawjony',
+'prefsnologintext2' => 'Musyš $1, aby wužywarske nastajenja póstajił.',
 'changepassword' => 'Šćitne gronidło změniś',
 'prefs-skin' => 'Šat',
 'skin-preview' => 'Pśeglěd',
@@ -1211,7 +1273,7 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-rendering' => 'Naglěd',
 'saveprefs' => 'Składowaś',
 'resetprefs' => 'Njeskłaźone změny zachyśiś',
-'restoreprefs' => 'Wše standardne nastajenja wobnowiś',
+'restoreprefs' => 'Wšykne standardne nastajenja wótnowiś (we wšych wótrězkach)',
 'prefs-editing' => 'Wobźěłaś',
 'rows' => 'Rědki:',
 'columns' => 'Słupy:',
@@ -1223,6 +1285,9 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'recentchangesdays-max' => '(maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
 'recentchangescount' => 'Licba změnow, kótaraž ma se pó standarźe pokazaś:',
 'prefs-help-recentchangescount' => 'To wopśimujo aktualne změny, stawizny bokow a protokole.',
+'prefs-help-watchlist-token2' => 'To jo pótajmny kluc k webkanaloju twójich wobglědowańkow.
+Něchten, kótaryž jen znajo, móžo twóje wobglědowańki cytaś, njeźěl jen togodla.
+[[Special:ResetTokens|Klikni how, jolic musyš jen slědk stajiś]].',
 'savedprefs' => 'Twóje nastajenja su se składowali.',
 'timezonelegend' => 'Casowa cona:',
 'localtime' => 'Městny cas:',
@@ -1266,11 +1331,13 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'prefs-help-signature' => 'Komentary na diskusijnych bokach měli se pśez "<nowiki>~~~~</nowiki>" pódpisaś, kótarež konwertěrujo se do twójeje signatury a casowego kołka.',
 'badsig' => 'Signatura njejo dobra; pšosym HTML pśekontrolěrowaś.',
 'badsiglength' => 'Twója signatura jo pśedłujka. Musy mjenjej ako $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} měś.',
-'yourgender' => 'Rod:',
-'gender-unknown' => 'Njepódany',
-'gender-male' => 'Muskecy',
-'gender-female' => 'Žeńscyny',
-'prefs-help-gender' => 'Opcionalny: wužywa se za pó roźe specifiske nagronjenje pśez softwaru. Toś ta informacija buźo zjawna.',
+'yourgender' => 'Co coš pódaś?',
+'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' => '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.',
@@ -1281,7 +1348,9 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'prefs-signature' => 'Pódpis',
 'prefs-dateformat' => 'Datumowy format',
 'prefs-timeoffset' => 'Casowy rozdźěl',
-'prefs-advancedediting' => 'Rozšyrjone opcije',
+'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',
@@ -1289,7 +1358,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,9 +1384,11 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'userrights-no-interwiki' => 'Njamaš pšawo wužywarske pšawa w drugich wikijach změniś.',
 'userrights-nodatabase' => 'Datowa banka $1 njeeksistěrujo abo njejo lokalna.',
 'userrights-nologin' => 'Musyš se z administratorowym kontom [[Special:UserLogin|pśizjawiś]], aby wužywarske pšawa změnił.',
-'userrights-notallowed' => 'Twóje konto njama pšawa, aby wužywarske pšawa pśidało abo wótpórało.',
+'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:',
@@ -1359,7 +1432,7 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'right-reupload-shared' => 'Dataje w zgromadnje wužywanem repozitoriju lokalnje pśepisaś',
 'right-upload_by_url' => 'Dataju z URL-adrese nagraś',
 'right-purge' => 'Sedłowy cache za bok bźez wobkšuśenja prozniś',
-'right-autoconfirmed' => 'Połšćitane boki wobźěłaś',
+'right-autoconfirmed' => 'Žedne wobgranicowanje pśez IP-bazěrowane limity',
 'right-bot' => 'Wobchadanje ako awtomatiski proces',
 'right-nominornewtalk' => 'Snadne změny na diskusijnych bokach njedowjedu k pokazanjeju "Nowe powěsći"',
 'right-apihighlimits' => 'Wuše limity w API-wótpšašanjach wužywaś',
@@ -1379,13 +1452,21 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'right-hideuser' => 'Wužywarske mě blokěrowaś a schowaś',
 '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 samogo',
-'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-unblockself' => 'Wótblokěrowaś se',
+'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-editmywatchlist' => 'Swóje wobglědowańki wobźěłaś. Wobglěduj, až někotare akcije hyšći pśidawaju boki bźez toś togo pšawa.',
+'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',
@@ -1437,8 +1518,8 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'action-block' => 'Toś tomu wužiwarjeju wobźěłowanje zawoboraś',
 'action-protect' => 'Šćitowe stopnje za toś ten bok změniś',
 'action-rollback' => 'změny slědnego wužywarja, kótaryž jo wobźěłał wěsty bok, malsnje slědk stajiś',
-'action-import' => 'toś ten bok z drugego wikija importěrowaś',
-'action-importupload' => 'toś ten bok z datajowego nagraśa importěrowaś',
+'action-import' => 'boki z drugego wikija importěrowaś',
+'action-importupload' => 'boki z datajowego nagraśa importěrowaś',
 'action-patrol' => 'změny drugich wužywarjow ako doglědowane markěrowaś',
 'action-autopatrol' => 'twóju změnu ako doglědowanu markěrowaś daś',
 'action-unwatchedpages' => 'lisćinu njewobglědowanych bokow zwobrazniś',
@@ -1447,17 +1528,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-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ś.',
@@ -1480,7 +1571,7 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'rc_categories_any' => 'wše',
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte|byta|byty|bytow}} pó změnje',
 'newsectionsummary' => 'Nowy wótrězk /* $1 */',
-'rc-enhanced-expand' => 'Drobnosći pokazaś (pomina se JavaScript)',
+'rc-enhanced-expand' => 'Drobnostki pokazaś',
 'rc-enhanced-hide' => 'Drobnosći schowaś',
 'rc-old-title' => 'spócetnje napórany ako "$1"',
 
@@ -1739,8 +1830,7 @@ Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
 'upload_source_file' => ' (dataja na twójom kompjuterje)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Toś ten specialny bok pokazujo wšykne nagrate dataje.
-Jolic se pó wužywarju filtrujo, budu se jano dataje pokazowaś, pśi kótarychž ten wužywaŕ jo nejnowšu wersiju nagrał.',
+'listfiles-summary' => 'Toś ten specialny bok pokazujo wšykne nagrate dataje.',
 'listfiles_search_for' => 'Za medijowym mjenim pytaś:',
 'imgfile' => 'dataja',
 'listfiles' => 'Lisćina datajow',
@@ -1751,6 +1841,10 @@ Jolic se pó wužywarju filtrujo, budu se jano dataje pokazowaś, pśi kótarych
 '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',
@@ -1843,6 +1937,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.',
@@ -1873,6 +1974,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.
@@ -1909,7 +2012,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 {{GRAMMAR:lokatiw|{{SITENAME}}}}.',
 'uncategorizedpages' => 'Boki bźez kategorijow',
 'uncategorizedcategories' => 'Njekategorizěrowane kategorije',
-'uncategorizedimages' => 'Njekategorizěrowane dataje.',
+'uncategorizedimages' => 'Njekategorizěrowane dataje',
 'uncategorizedtemplates' => 'Njekategorizěrowane pśedłogi',
 'unusedcategories' => 'Njewužywane kategorije',
 'unusedimages' => 'Njewužywane dataje',
@@ -1930,6 +2033,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',
@@ -1945,6 +2049,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',
@@ -2047,7 +2152,8 @@ Jo nanejmjenjej głowna domena trěbna, na pśikład "*.org"<br />
 # Special:ListGroupRights
 'listgrouprights' => 'Pšawa wužywarskeje kupki',
 'listgrouprights-summary' => 'To jo lisćina wužywarskich kupkow definěrowanych w toś tom wikiju z jich zwězanymi pśistupnymi pšawami. Móžo [[{{MediaWiki:Listgrouprights-helppage}}|pśidatne informacije]] wó jadnotliwych pšawach daś.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Zagarantěrowane pšawo</span>
+'listgrouprights-key' => 'Legenda:
+* <span class="listgrouprights-granted">Zagarantěrowane pšawo</span>
 * <span class="listgrouprights-revoked">Slědk wzete pšawo</span>',
 'listgrouprights-group' => 'Kupka',
 'listgrouprights-rights' => 'Pšawa',
@@ -2119,7 +2225,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',
@@ -2152,7 +2258,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
 
@@ -2160,9 +2268,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}}}}
@@ -2199,10 +2308,12 @@ Pšašanja a dalšna pomoc:
 'deletecomment' => 'Pśicyna:',
 'deleteotherreason' => 'Druga/pśidatna pśicyna:',
 'deletereasonotherlist' => 'Druga pśicyna',
-'deletereason-dropdown' => '* Powšykne pśicyny za lašowanja
-** Žycenje awtora
-** Pśekśiwjenje stworiśelskego pšawa
-** Wandalizm',
+'deletereason-dropdown' => '* Zwucone pśicyny za wulašowanje
+** Spam
+** Wandalizm
+** Pśekśiwjenje awtorskego pšawa
+** Pominanje awtora
+** Defektne dalejpósrědnjenje',
 'delete-edit-reasonlist' => 'Pśicyny za lašowanje wobźěłaś',
 'delete-toobig' => 'Toś ten bok ma z wěcej nježli $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujku historiju. Lašowanje takich bokow bu wobgranicowane, aby wobškoźenju {{GRAMMAR:genitiw|{{SITENAME}}}} z pśigódy zajźowało.',
 'delete-warning-toobig' => 'Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;
@@ -2221,7 +2332,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
@@ -2357,7 +2468,7 @@ $1',
 'contributions' => 'Pśinoski {{GENDER:$1|wužywarja|wužywarki}}',
 'contributions-title' => 'Wužywarske pśinoski wót $1',
 'mycontris' => 'Pśinoski',
-'contribsub2' => 'Za $1 ($2)',
+'contribsub2' => 'Za {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Za toś te kriterije njejsu žedne změny se namakali.',
 'uctop' => '(aktualny)',
 'month' => 'wót mjaseca (a jěsnjej):',
@@ -2669,6 +2780,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ś',
@@ -2750,7 +2863,7 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
 'tooltip-pt-anonuserpage' => 'Wužywarski bok za IP-adresu, z kótarejuž bok wobźěłajoš',
 'tooltip-pt-mytalk' => 'Twój diskusijny bok',
 'tooltip-pt-anontalk' => 'Diskusija wó změnach z tuteje IP-adresy.',
-'tooltip-pt-preferences' => 'Móje pśistajenja',
+'tooltip-pt-preferences' => 'Móje nastajenja',
 'tooltip-pt-watchlist' => 'Lisćina bokow, kótarež se wobglěduju',
 'tooltip-pt-mycontris' => 'Lisćina twójich pśinoskow',
 'tooltip-pt-login' => 'Pśizjawjenje njejo obligatoriske, ale lubje witane.',
@@ -2814,6 +2927,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 +2960,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,13 +2975,14 @@ How '''NIC''' zapisaś!",
 'pageinfo-length' => 'Dłujkosć boka (w bajtach)',
 'pageinfo-article-id' => 'ID boka',
 'pageinfo-language' => 'Rěc bokowego wopśimjeśa',
-'pageinfo-robot-policy' => 'Status pytawy',
-'pageinfo-robot-index' => 'Indeksěrujobny',
-'pageinfo-robot-noindex' => 'Njeindeksěrujobny',
+'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',
 'pageinfo-views' => 'Licba zwobraznjenjow',
 'pageinfo-watchers' => 'Licba  wobglědowarjow boka',
 'pageinfo-few-watchers' => 'Mjenjej ako $1 {{PLURAL:$1|wobglědowaŕ|wobglědowarja|wobglědowarje|wobglědowarjow}}',
-'pageinfo-redirects-name' => 'Dalejpósrědnjenja k toś tomu bokoju',
+'pageinfo-redirects-name' => 'Licba dalejpósrědnjenjow k toś tomu bokoju',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Pódboki toś togo boka',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|dalejpósrědnjenja|dalejpósrědnjeni|dalejpósrědnjenja|dalejpósrědnjenjow}}; $3 {{PLURAL:$3|njedalejpósrědnjenja|njedalejpósrědnjeni|njedalejpósrědnjenja|njedalejpósrědnjenjow}})',
@@ -2946,7 +3061,7 @@ $1',
 'svg-long-desc' => 'dataja SVG, nominalnje: $1 × $2 piksele, wjelikosć dataje: $3',
 'svg-long-desc-animated' => 'Animěrowana SVG-dataja, zakładnej wótměra $1 × $2 pikselow, datajowa wjelikosć: $3',
 'svg-long-error' => 'Njepłaśiwa SVG-dataja: $1',
-'show-big-image' => 'Połne optiske wótgranicowanje.',
+'show-big-image' => 'Originalna dataja',
 'show-big-image-preview' => 'Wjelikosć toś togo pśeglěda: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Druge rozeznaśe||Drugej rozeznaśi|Druge rozeznaśa|Druge rozeznaśa}}: $1.',
 'show-big-image-size' => '$1 × $2 pikselow',
@@ -2975,11 +3090,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:
 
@@ -3191,7 +3320,7 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
 'exif-compression-4' => 'CCITT kupka 4 faksowe koděrowanje',
 
 'exif-copyrighted-true' => 'Pśez awtorske pšawo šćitany',
-'exif-copyrighted-false' => 'Zjawnosći pśistupny',
+'exif-copyrighted-false' => 'Status awtorskego pšawa njepóstajony',
 
 'exif-unknowndate' => 'Njeznaty datum',
 
@@ -3487,6 +3616,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 +3717,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 +3731,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 +3757,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 +3791,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 +3821,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 +3837,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,4 +3957,32 @@ 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ć',
+'limitreport-expensivefunctioncount' => 'Licba wupominańskich parserowych funkcijow',
+
+# 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.',
+'expand_templates_title' => 'Kontekstowy titel, za {{FULLPAGENAME}} atd.',
+'expand_templates_input' => 'Zapódany tekst:',
+'expand_templates_output' => 'Wuslědk',
+'expand_templates_xml_output' => 'Wudany XML',
+'expand_templates_ok' => 'W pórěźe',
+'expand_templates_remove_comments' => 'Komentary wótwónoźeś',
+'expand_templates_remove_nowiki' => 'Toflicki <nowiki> we wuslědku pódtłocyś',
+'expand_templates_generate_xml' => 'Parsowański bom XML pokazaś',
+'expand_templates_preview' => 'Pśeglěd',
+
 );
index 4cffee6..2a69fee 100644 (file)
@@ -273,8 +273,6 @@ Intaai [[Special:Version|bolikon dinolinan]].',
 'ok' => 'Oboh',
 'retrievedfrom' => 'Naanu mantad "$1"',
 'youhavenewmessages' => 'Kiharo $1 montok dia ($2).',
-'newmessageslink' => 'pason kawawagu',
-'newmessagesdifflink' => 'naalanan kawawagu',
 'youhavenewmessagesfromusers' => 'Nakaramit ko do $1 mantad {{PLURAL:$3|momomoguno suai|$3 tongomomomoguno}} ($2).',
 'youhavenewmessagesmanyusers' => 'Nakaramit koh do $1 mantad do tongomomomoguno ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|pason kawawagu|tangapason kawawagu}}',
@@ -977,7 +975,6 @@ Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
 'preferences' => 'Pipilion',
 'mypreferences' => 'Pipilion',
 'prefs-edits' => 'Ginumu niditan:',
-'prefsnologin' => 'Amu nokolog sumuang',
 'changepassword' => 'Alanai kaatalib',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Kokitanan',
index 87c5aeb..b194d54 100644 (file)
@@ -285,8 +285,6 @@ $1',
 'ok' => 'ރަނގަޅު',
 'retrievedfrom' => '$1 އިން',
 'youhavenewmessages' => 'ތިޔަބޭފުޅާއަށް $1 ($2)',
-'newmessageslink' => 'އައު މެސެޖުތައް',
-'newmessagesdifflink' => 'އެންމެ ފަހުގެ ބަދަލު',
 'youhavenewmessagesfromusers' => 'ތިބޭފުޅާއަށް {{PLURAL:$3|މެމްބަރެއް|$3 މެމްބަރުން}} $1 ފޮނުއްވާފައިވެއެވެ. ($2)',
 'youhavenewmessagesmanyusers' => 'ތިބޭފުޅާއަށް ގިނަ މެމްބަރުން $1 ފޮނުއްވާފައިވެއެވެ. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|އާ މެސެޖެއް|މެސެޖުތައް}}',
index 74a74fb..f2c5cde 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';
@@ -637,8 +644,6 @@ $1',
 'ok' => 'Εντάξει',
 'retrievedfrom' => 'Ανακτήθηκε από «$1»',
 'youhavenewmessages' => 'Έχετε $1 ($2).',
-'newmessageslink' => 'νέα μηνύματα',
-'newmessagesdifflink' => 'τελευταία αλλαγή',
 'youhavenewmessagesfromusers' => 'Έχετε $1 από {{PLURAL:$3|έναν άλλο χρήστη|$3 χρήστες}} ($2).',
 'youhavenewmessagesmanyusers' => 'Έχετε $1 από πολλούς χρήστες ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ένα νέο μήνυμα|νέα μηνύματα}}',
@@ -926,7 +931,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Κωδικός επαναφοράς',
 'passwordreset-text-one' => 'Συμπληρώστε την παρακάτω φόρμα για να επαναφέρετε τον κωδικό πρόσβασής σας.',
-'passwordreset-text-many' => '{{PLURAL:$1|ΣÏ\85μÏ\80ληÏ\81Ï\8eÏ\83Ï\84ε Î­Î½Î± Î±Ï\80Ï\8c Ï\84α Ï\80εδία Î³Î¹Î± Î½Î± ÎµÏ\80αναÏ\86έÏ\81εÏ\84ε Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ήÏ\82 Ï\83αÏ\82.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|ΣÏ\85μÏ\80ληÏ\81Ï\8eÏ\83Ï\84ε Î­Î½Î± Î±Ï\80Ï\8c Ï\84α Ï\80εδία Î³Î¹Î± Î½Î± Î»Î¬Î²ÎµÏ\84ε Ï\80Ï\81οÏ\83Ï\89Ï\81ινÏ\8c ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83η Î¼Î­Ï\83Ï\89 Î·Î»ÎµÎºÏ\84Ï\81ονικοÏ\8d Ï\84αÏ\87Ï\85δÏ\81ομείοÏ\85.}}',
 'passwordreset-legend' => 'Επαναφορά κωδικού πρόσβασης',
 'passwordreset-disabled' => 'Η επαναφορά κωδικού πρόσβασης έχει απενεργοποιηθεί σε αυτό το wiki',
 'passwordreset-emaildisabled' => "Τα χαρακτηριστικά ηλεκτρονικού ταχυδρομείου έχουν απενεργοποιηθεί σ' αυτό το wiki.",
@@ -1464,7 +1469,6 @@ $1",
 'preferences' => 'Προτιμήσεις',
 'mypreferences' => 'Προτιμήσεις',
 'prefs-edits' => 'Αριθμός επεξεργασιών:',
-'prefsnologin' => 'Δεν έχετε συνδεθεί.',
 'changepassword' => 'Αλλαγή κωδικού',
 'prefs-skin' => 'Οπτική οργάνωση (skin)',
 'skin-preview' => 'Προεπισκόπηση',
@@ -1758,6 +1762,7 @@ $1",
 'recentchanges-label-minor' => 'Αυτή είναι μια μικροαλλαγή',
 'recentchanges-label-bot' => 'Αυτή η επεξεργασία έγινε από ένα ρομπότ',
 'recentchanges-label-unpatrolled' => 'Αυτή η επεξεργασία δεν έχει ελεγχθεί ακόμα',
+'recentchanges-legend-newpage' => '$1 - νέα σελίδα',
 'rcnote' => "Παρακάτω {{PLURAL:$1|υπάρχει '''1''' αλλαγή|υπάρχουν οι τελευταίες '''$1''' αλλαγές}} στο διάστημα {{PLURAL:$2|της τελευταίας ημέρας|των τελευταίων '''$2''' ημερών}}, από τις $5, $4 και εξής.",
 'rcnotefrom' => "Παρακάτω είναι οι αλλαγές από τις '''$2''' (εμφανίζονται μέχρι '''$1''').",
 'rclistfrom' => 'Εμφάνιση νέων αλλαγών αρχίζοντας από $1',
@@ -4180,4 +4185,21 @@ $5
 'limitreport-expansiondepth' => 'Μεγαλύτερο βάθος ανάπτυξης',
 'limitreport-expensivefunctioncount' => 'Πλήθος ακριβών συναρτήσεων συντακτικού αναλυτή',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Επέκτεινε τα πρότυπα',
+'expand_templates_intro' => 'Αυτή η ειδική σελίδα παίρνει κείμενο και αναπτύσσει όλα τα πρότυπα σε αυτό αναδρομικά. 
+Επίσης αναπτύσσει συναρτήσεις συντακτικού αναλυτή όπως η
+<nowiki>{{</nowiki>#language:…}}, και μεταβλητές όπως η
+<nowiki>{{</nowiki>CURRENTDAY}}.
+Ουσιαστικά επεκτείνει οτιδήποτε βρίσκεται σε διπλές αγκύλες.',
+'expand_templates_title' => 'Τίτλων συμφραζόμενων, για την {{FULLPAGENAME}} κ.τ.λ.:',
+'expand_templates_input' => 'Κείμενο εισόδου:',
+'expand_templates_output' => 'Αποτέλεσμα',
+'expand_templates_xml_output' => 'Έξοδος XML',
+'expand_templates_ok' => 'Εντάξει',
+'expand_templates_remove_comments' => 'Αφαίρεση σχολίων',
+'expand_templates_remove_nowiki' => 'Απόκρυψη της ετικέτας <nowiki> στο αποτέλεσμα',
+'expand_templates_generate_xml' => 'Εμφάνιση δέντρου συντακτικής ανάλυσης XML',
+'expand_templates_preview' => 'Προεπισκόπηση',
+
 );
index ea1f20c..1bd59b2 100644 (file)
@@ -815,7 +815,6 @@ future releases. Also note that since each list value is wrapped in a unique
 'qbedit'         => 'Edit',
 'qbpageoptions'  => 'This page',
 'qbmyoptions'    => 'My pages',
-'qbspecialpages' => 'Special pages',
 'faq'            => 'FAQ',
 'faqpage'        => 'Project:FAQ',
 'sitetitle'      => '{{SITENAME}}', # do not translate or duplicate this message to other languages
@@ -1051,9 +1050,6 @@ It may contain one or more characters that cannot be used in titles.',
 'perfcachedts'                  => 'The following data is cached, and was last updated $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates'          => 'Updates for this page are currently disabled.
 Data here will not presently be refreshed.',
-'wrong_wfQuery_params'          => 'Incorrect parameters to wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource'                    => 'View source',
 'viewsource-title'              => 'View source for $1',
 'actionthrottled'               => 'Action throttled',
@@ -1200,7 +1196,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 +1286,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.',
@@ -2209,6 +2205,9 @@ Your email address is not revealed when other users contact you.',
 'recentchanges-label-minor'         => 'This is a minor edit',
 'recentchanges-label-bot'           => 'This edit was performed by a bot',
 'recentchanges-label-unpatrolled'   => 'This edit has not yet been patrolled',
+'recentchanges-label-plusminus'     => 'The page size changed by this number of bytes',
+'recentchanges-legend-newpage'      => '(also see [[Special:NewPages|list of new pages]])',
+'recentchanges-legend-plusminus'    => "(''±123'')",
 'rcnote'                            => "Below {{PLURAL:$1|is '''1''' change|are the last '''$1''' changes}} in the last {{PLURAL:$2|day|'''$2''' days}}, as of $5, $4.",
 'rcnotefrom'                        => "Below are the changes since '''$2''' (up to '''$1''' shown).",
 'rclistfrom'                        => 'Show new changes starting from $1',
@@ -3222,7 +3221,7 @@ It may have already been undeleted.',
 $1',
 'undelete-show-file-confirm'   => 'Are you sure you want to view the deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
 'undelete-show-file-submit'    => 'Yes',
-'undelete-revisionrow'         => '$1 $2 ($3) $4 . . $5 $6 $7', # only translate this message to other languages if you have to change it
+'undelete-revision-row'         => '$1 $2 ($3) $4 . . $5 $6 $7 $8 $9', # only translate this message to other languages if you have to change it
 
 # Namespace form on various pages
 'namespace'                     => 'Namespace:',
@@ -4534,10 +4533,6 @@ $8', # only translate this message to other languages if you have to change it
 'exif-urgency-high'   => 'High ($1)',
 'exif-urgency-other'  => 'User-defined priority ($1)',
 
-# External editor support
-'edit-externally'      => 'Edit this file using an external application',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
@@ -5147,10 +5142,7 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 
 # ExpandTemplates
 'expandtemplates'                  => 'Expand templates',
-'expandtemplates-desc'             => '[[Special:ExpandTemplates|Expands templates, parser functions
- and variables]] to show expanded wikitext and preview rendered page',
-'expand_templates_intro'           => 'This special page takes text and expands all templates in it 
-recursively.
+'expand_templates_intro'           => 'This special page takes text and expands all templates in it recursively.
 It also expands supported parser functions like
 <code><nowiki>{{</nowiki>#language:…}}</code> and variables like
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
index cc4e418..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' ),
@@ -581,7 +580,7 @@ $1',
 'helppage' => 'Help:Enhavo',
 'mainpage' => 'Ĉefpaĝo',
 'mainpage-description' => 'Ĉefpaĝo',
-'policy-url' => 'Project:Konsiletoj',
+'policy-url' => 'Project:Regularo',
 'portal' => 'Komunuma portalo',
 'portal-url' => 'Project:Komunuma portalo',
 'privacy' => 'Regularo pri respekto de la privateco',
@@ -597,8 +596,6 @@ $1',
 'ok' => 'Ek!',
 'retrievedfrom' => 'Elŝutita el  "$1"',
 'youhavenewmessages' => 'Por vi estas $1 ($2).',
-'newmessageslink' => 'novaj mesaĝoj',
-'newmessagesdifflink' => 'ŝanĝoj kompare kun antaŭlasta versio',
 'youhavenewmessagesfromusers' => 'Riceviĝis $1 de {{PLURAL:$3|alia uzanto|$3 uzantoj}} ($2).',
 'youhavenewmessagesmanyusers' => 'Riceviĝis $1 de multaj uzantoj ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|nova mesaĝo|novaj mesaĝoj}}',
@@ -1376,7 +1373,7 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 # Search results
 'searchresults' => 'Serĉrezultoj',
 'searchresults-title' => 'Serĉrezultoj por "$1"',
-'searchresulttext' => 'Por pliaj informoj kiel priserĉi la {{SITENAME}}n, vidu [[{{MediaWiki:Helppage}}|serĉi en {{SITENAME}}]].',
+'searchresulttext' => 'Por pliaj informoj pri serĉado en {{SITENAME}} vidu [[{{MediaWiki:Helppage}}|{{int:help}}]]..',
 'searchsubtitle' => 'Vi serĉis "\'\'\'[[$1]]\'\'\'" ([[Special:Prefixindex/$1|ĉiuj paĝoj komence de "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ĉiuj paĝoj ligantaj al "$1"]])',
 'searchsubtitleinvalid' => 'Serĉmendo "$1"',
 'toomanymatches' => 'Tro da serĉo-trafoj estis trovitaj; bonvolu provi malsaman serĉomendon.',
@@ -1441,7 +1438,6 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'preferences' => 'Preferoj',
 'mypreferences' => 'Preferoj',
 'prefs-edits' => 'Nombro de redaktoj:',
-'prefsnologin' => 'Ne jam salutis!',
 'changepassword' => 'Ŝanĝi pasvorton',
 'prefs-skin' => 'Etoso',
 'skin-preview' => 'Antaŭrigardo',
@@ -1730,6 +1726,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'recentchanges-label-minor' => 'Ĉi tiu estas eta redakto',
 'recentchanges-label-bot' => 'Ĉi tiu redakto estis farita per roboto.',
 'recentchanges-label-unpatrolled' => 'Ĉi tiu redakto ne jam estis patrolata.',
+'recentchanges-legend-newpage' => '$1 - nova paĝo',
 'rcnote' => "Jen la {{PLURAL:$1|lasta '''1''' ŝanĝo|lastaj '''$1''' ŝanĝoj}} dum la {{PLURAL:$2|lasta tago|lastaj '''$2''' tagoj}}, ekde $5, $4.",
 'rcnotefrom' => "Jen la ŝanĝoj ekde '''$2''' (lastaj ĝis '''$1''').",
 'rclistfrom' => 'Montri novajn ŝanĝojn ekde "$1"',
@@ -2952,9 +2949,9 @@ se vi volus kontribui al la komuna MediaWiki-asimilado.',
 'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages ne subtenata ĉar la variablo wgUseDatabaseMessages estas malkonektita.',
 'allmessages-filter-legend' => 'Filtri',
 'allmessages-filter' => 'Filtri laŭ ŝanĝada stato',
-'allmessages-filter-unmodified' => 'Neŝanĝitaĵoj',
+'allmessages-filter-unmodified' => 'Neŝanĝitaj',
 'allmessages-filter-all' => 'Ĉio',
-'allmessages-filter-modified' => 'Ŝanĝitaĵoj',
+'allmessages-filter-modified' => 'Ŝanĝitaj',
 'allmessages-prefix' => 'Filtri laŭ prefikso:',
 'allmessages-language' => 'Lingvo:',
 'allmessages-filter-submit' => 'Ek!',
@@ -4173,4 +4170,20 @@ Aŭ vi povas uzi la facilan formularon sube. Via komento estos aldonita al la pa
 'duration-centuries' => '$1 {{PLURAL:$1|jarcento|jarcentoj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|jarmilo|jarmiloj}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Ampleksigi ŝablonojn',
+'expand_templates_intro' => 'Ĉi tiu speciala paĝo traktas tekston kaj ampleksigas ĉiujn ŝablonojn en ĝi rekursie.
+Ĝi ankaŭ ampleksigas sintaksajn funkciojn kiel
+<code><nowiki>{{</nowiki>#language:…}}</code> kaj variablojn kiel
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. Fakte preskaŭ iujn ajn en duoblaj krampoj.',
+'expand_templates_title' => 'Kunteksta titolo, por {{FULLPAGENAME}}, ktp.:',
+'expand_templates_input' => 'Enigita teksto:',
+'expand_templates_output' => 'Rezulto',
+'expand_templates_xml_output' => 'XML-eligo',
+'expand_templates_ok' => 'Ek!',
+'expand_templates_remove_comments' => 'Forigi komentojn',
+'expand_templates_remove_nowiki' => 'Nuligi <nowiki> etikedojn en rezulto',
+'expand_templates_generate_xml' => 'Montri XML-sintaksarbon',
+'expand_templates_preview' => 'Antaŭrigardo',
+
 );
index fa1d5ce..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' ),
@@ -649,12 +655,10 @@ $1',
 'ok' => 'Aceptar',
 'retrievedfrom' => 'Obtenido de «$1»',
 'youhavenewmessages' => 'Tienes $1 ($2).',
-'newmessageslink' => 'mensajes nuevos',
-'newmessagesdifflink' => 'última modificación',
 'youhavenewmessagesfromusers' => 'Tienes $1 de {{PLURAL:$3|otro usuario|$3 usuarios}} ($2).',
 'youhavenewmessagesmanyusers' => 'Tienes $1 de muchos usuarios ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un nuevo mensaje|mensajes nuevos}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|última modificación|últimos cambios}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un mensaje nuevo|999=mensajes nuevos}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|último cambio|999=últimos cambios}}',
 'youhavenewmessagesmulti' => 'Tienes mensajes nuevos en $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -1510,13 +1514,12 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'preferences' => 'Preferencias',
 'mypreferences' => 'Preferencias',
 'prefs-edits' => 'Cantidad de ediciones:',
-'prefsnologin' => 'No has iniciado sesión',
 'prefsnologintext2' => 'Necesitas $1 para definir las preferencias del usuario.',
 'changepassword' => 'Cambiar contraseña',
 'prefs-skin' => 'Apariencia',
 'skin-preview' => 'Previsualizar',
 'datedefault' => 'Sin preferencia',
-'prefs-beta' => 'Características de prueba',
+'prefs-beta' => 'Funciones en pruebas',
 'prefs-datetime' => 'Fecha y hora',
 'prefs-labs' => 'Características de los laboratorios',
 'prefs-user-pages' => 'Páginas de usuario',
@@ -1552,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)',
@@ -1809,6 +1812,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'recentchanges-label-minor' => 'Esta es una edición menor',
 'recentchanges-label-bot' => 'Esta edición fue realizada por un robot',
 'recentchanges-label-unpatrolled' => 'Esta edición todavía no se ha patrullado',
+'recentchanges-legend-newpage' => '$1 - página nueva',
 'rcnote' => "Debajo {{PLURAL:$1|hay '''1''' cambio efectuado|están los últimos '''$1''' cambios efectuados}} en  {{PLURAL:$2|el último día|los últimos '''$2''' días}}, hasta el $4, $5.",
 'rcnotefrom' => 'A continuación se muestran los cambios desde <b>$2</b> (hasta <b>$1</b>).',
 'rclistfrom' => 'Mostrar nuevos cambios desde $1',
@@ -4062,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>',
@@ -4106,6 +4110,7 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 'tags-active-header' => '¿Activo?',
 'tags-hitcount-header' => 'Cambios etiquetados',
 'tags-active-yes' => 'Sí',
+'tags-active-no' => 'No',
 'tags-edit' => 'editar',
 'tags-hitcount' => '$1 {{PLURAL:$1|cambio|cambios}}',
 
@@ -4278,4 +4283,19 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'limitreport-expansiondepth' => 'Profundidad máxima de expansión',
 'limitreport-expensivefunctioncount' => 'Cuenta de la funcion expansiva del analizador',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expandir plantillas',
+'expand_templates_intro' => 'Esta página especial toma un texto wiki y expande todas sus plantillas recursivamente.
+También expande las funciones sintácticas como <code><nowiki>{{</nowiki>#language:…}}</code>, y variables como
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. De hecho, expande casi cualquier cosa que esté entre llaves dobles.',
+'expand_templates_title' => 'Título de la página, útil para expandir <nowiki>{{PAGENAME}}</nowiki> o similares',
+'expand_templates_input' => 'Texto a expandir:',
+'expand_templates_output' => 'Resultado:',
+'expand_templates_xml_output' => 'Salida XML',
+'expand_templates_ok' => 'Aceptar',
+'expand_templates_remove_comments' => 'Eliminar comentarios (<!-- ... -->)',
+'expand_templates_remove_nowiki' => 'Suprimir <nowiki> etiquetas en resultado',
+'expand_templates_generate_xml' => 'Mostrar el árbol XML.',
+'expand_templates_preview' => 'Previsualización',
+
 );
index a2e7b9c..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__' ),
@@ -567,12 +578,10 @@ Vaata [[Special:Version|versiooni lehekülge]].',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Pärit leheküljelt "$1"',
 'youhavenewmessages' => 'Sulle on $1 ($2).',
-'newmessageslink' => 'uusi sõnumeid',
-'newmessagesdifflink' => 'viimane muudatus',
 'youhavenewmessagesfromusers' => 'Sulle on $1 {{PLURAL:$3|ühelt|$3}} kasutajalt ($2).',
 'youhavenewmessagesmanyusers' => 'Sulle on $1 paljudelt kasutajatelt ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|uus sõnum|uusi sõnumeid}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|viimane muudatus|viimased muudatused}}',
+'newmessageslinkplural' => '{{PLURAL:$1|uus sõnum|999=uusi sõnumeid}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|viimane muudatus|999=viimased muudatused}}',
 'youhavenewmessagesmulti' => 'Sulle on uusi sõnumeid $1',
 'editsection' => 'muuda',
 'editold' => 'redigeeri',
@@ -591,10 +600,10 @@ Vaata [[Special:Version|versiooni lehekülge]].',
 'feedlinks' => 'Sööde:',
 'feed-invalid' => 'Vigane vootüüp.',
 'feed-unavailable' => 'Uudisvood ei ole saadaval.',
-'site-rss-feed' => '$1 RSS-toide',
-'site-atom-feed' => '$1 Atom-fiid',
-'page-rss-feed' => '"$1" RSS-toide',
-'page-atom-feed' => '"$1" Atom-fiid',
+'site-rss-feed' => '$1 (RSS-voog)',
+'site-atom-feed' => '$1 Atom-voog',
+'page-rss-feed' => '$1 (RSS-voog)',
+'page-atom-feed' => '$1 (Atom-voog)',
 'red-link-title' => '$1 (pole veel kirjutatud)',
 'sort-descending' => 'Järjesta laskuvalt',
 'sort-ascending' => 'Järjesta tõusvalt',
@@ -700,7 +709,8 @@ Administraator lukustas selle järgmisel põhjusel: "$3".',
 'invalidtitle-knownnamespace' => 'Vigane pealkiri nimeruumis "$2" tekstiga "$3"',
 'invalidtitle-unknownnamespace' => 'Vigane pealkiri nimeruuminumbriga $1 ja tekstiga "$2"',
 'exception-nologin' => 'Sisse logimata',
-'exception-nologin-text' => 'Selle lehekülje või toimingu jaoks pead selles vikis olema sisse loginud.',
+'exception-nologin-text' => 'Selle lehekülje või toimingu jaoks [[Special:Userlogin|logi]] palun sisse.',
+'exception-nologin-text-manual' => 'Pead $1, et sellele leheküljele või toimingule ligi pääseda.',
 
 # Virus scanner
 'virus-badscanner' => "Viga konfiguratsioonis: tundmatu viirusetõrje: ''$1''",
@@ -915,7 +925,7 @@ Peaksid load lähtestama, kui jagasid neid kogemata või kui su konto on kellegi
 'resettokens-legend' => 'Lubade lähtestamine',
 'resettokens-tokens' => 'Load:',
 'resettokens-token-label' => '$1 (praegune väärtus: $2)',
-'resettokens-watchlist-token' => '[[Special:Watchlist|Jälgimisloendis olevatel lehekülgedel tehtud muudatuste]] võrgutoite (Atom/RSS) luba',
+'resettokens-watchlist-token' => '[[Special:Watchlist|Jälgimisloendis olevatel lehekülgedel tehtud muudatuste]] veebivoo (Atom/RSS) luba',
 'resettokens-done' => 'Load lähtestatud.',
 'resettokens-resetbutton' => 'Lähtesta valitud load',
 
@@ -1120,6 +1130,7 @@ Tundub, et see on kustutatud.',
 'edit-already-exists' => 'Ei saanud alustada uut lehekülge.
 See on juba olemas.',
 'defaultmessagetext' => 'Sõnumi vaiketekst',
+'content-failed-to-parse' => 'Ebaõnnestus $1i mudeli $2-tüüpi sisu liigendamine: $3',
 'invalid-content-data' => 'Vigased sisuandmed',
 'content-not-allowed-here' => 'Lehekülg [[$2]] ei või sisaldada $1i.',
 'editwarning-warning' => 'Sellelt leheküljelt lahkumise tõttu võivad tehtud muudatused kaotsi minna.
@@ -1412,7 +1423,7 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'preferences' => 'Eelistused',
 'mypreferences' => 'Eelistused',
 'prefs-edits' => 'Redigeerimiste arv:',
-'prefsnologin' => 'Sisse logimata',
+'prefsnologintext2' => 'Pead $1, et oma eelistusi muuta.',
 'changepassword' => 'Muuda parool',
 'prefs-skin' => 'Kujundus',
 'skin-preview' => 'eelvaade',
@@ -1449,7 +1460,7 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'recentchangesdays-max' => 'Ülemmäär $1 {{PLURAL:$1|päev|päeva}}',
 'recentchangescount' => 'Mitut redaktsiooni vaikimisi näidata:',
 'prefs-help-recentchangescount' => 'See käib viimaste muudatuste, lehekülgede ajalugude ja logide kohta.',
-'prefs-help-watchlist-token2' => 'See on sinu jälgimisloendi võrgutoite salavõti.
+'prefs-help-watchlist-token2' => 'See on sinu jälgimisloendi veebivoo salavõti.
 Igaüks, kes seda teab, saab lugeda sinu jälgimisloendit. Seega ära jaga seda.
 [[Special:ResetTokens|Klõpsa siia, kui sul on vaja see lähtestada]].',
 'savedprefs' => 'Sinu eelistused on salvestatud.',
@@ -1708,10 +1719,12 @@ See teave on avalik.',
 'recentchanges-summary' => 'Jälgi sellel leheküljel viimaseid muudatusi.',
 'recentchanges-noresult' => 'Selles ajavahemikus pole tehtud neile kriteeriumitele vastavaid muudatusi.',
 'recentchanges-feed-description' => 'Jälgi vikisse tehtud viimaseid muudatusi.',
-'recentchanges-label-newpage' => 'See muudatus lõi uue lehekülje',
-'recentchanges-label-minor' => 'See on pisiparandus',
-'recentchanges-label-bot' => 'Selle muudatuse tegi robot',
+'recentchanges-label-newpage' => 'Uus lehekülg',
+'recentchanges-label-minor' => 'Pisiparandus',
+'recentchanges-label-bot' => 'Roboti tehtud muudatus',
 'recentchanges-label-unpatrolled' => 'Seda muudatust ei ole veel kontrollitud',
+'recentchanges-label-plusminus' => 'Lehekülje suuruse muutus baitides',
+'recentchanges-legend-newpage' => '(vaata ka [[Special:NewPages|uute lehekülgede loendit]])',
 'rcnote' => "Allpool on esitatud {{PLURAL:$1|'''1''' muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|päeva|'''$2''' päeva}} jooksul seisuga $4, kell $5.",
 'rcnotefrom' => "Allpool on toodud muudatused alates: '''$2''' (näidatakse kuni '''$1''' muudatust)",
 'rclistfrom' => 'Näita muudatusi alates: $1',
@@ -2415,7 +2428,7 @@ Redigeerijaga ühenduse võtmine:
 e-post: $PAGEEDITOR_EMAIL
 viki: $PAGEEDITOR_WIKI
 
-Seni kuni sa seda lehte ei külasta, selle lehega seotud toimingute kohta sulle uusi teavitus-e-kirju ei saadeta. Jälgimisloendis saaksid kõigi jälgitavate lehekülgedega seotud teavitussätted ka lähtestada.
+Seni kuni sa sisselogituna seda lehekülge ei külasta, selle leheküljega seotud toimingute kohta sulle uusi teavituse e-kirju ei saadeta. Jälgimisloendis saaksid kõigi jälgitavate lehekülgedega seotud teavitussätted ka lähtestada.
 
 Abivalmilt
 {{GRAMMAR:genitive|{{SITENAME}}}} teavitussüsteem
@@ -3068,8 +3081,8 @@ Saad vaadata selle lähteteksti.',
 'tooltip-n-help' => 'Kuidas redigeerida',
 'tooltip-t-whatlinkshere' => 'Kõik viki leheküljed, mis siia viitavad',
 'tooltip-t-recentchangeslinked' => 'Viimased muudatused lehekülgedel, millele on siit viidatud',
-'tooltip-feed-rss' => 'Selle lehekülje RSS-toide',
-'tooltip-feed-atom' => 'Selle lehekülje Atom-fiid',
+'tooltip-feed-rss' => 'Selle lehekülje RSS-voog',
+'tooltip-feed-atom' => 'Selle lehekülje Atom-voog',
 'tooltip-t-contributions' => 'Kuva selle kasutaja kaastöö',
 'tooltip-t-emailuser' => 'Saada sellele kasutajale e-kiri',
 'tooltip-t-upload' => 'Laadi faile üles',
@@ -3325,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',
@@ -3368,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',
@@ -3390,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',
@@ -3405,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',
@@ -3432,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',
@@ -3445,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',
@@ -3478,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',
@@ -3493,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',
 
@@ -3504,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)',
 
@@ -3551,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',
 
@@ -3609,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',
@@ -3892,9 +3934,8 @@ GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
 
 # Special:SpecialPages
 'specialpages' => 'Erileheküljed',
-'specialpages-note' => '* Harilikud erileheküljed
-* <span class="mw-specialpagerestricted">Piiranguga erileheküljed</span>
-* <span class="mw-specialpagecached">Uuendamata sisuga erileheküljed (ei pruugi enam kasutuses olla)</span>',
+'specialpages-note' => '* Harilikud erileheküljed.
+* <span class="mw-specialpagerestricted">Piiranguga erileheküljed.</span>',
 'specialpages-group-maintenance' => 'Hooldusaruanded',
 'specialpages-group-other' => 'Teised erileheküljed',
 'specialpages-group-login' => 'Sisselogimine ja konto loomine',
@@ -4107,4 +4148,21 @@ Kui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajan
 'limitreport-expansiondepth' => 'Suurim hõrendussügavus',
 'limitreport-expensivefunctioncount' => 'Kulukate parserifunktsioonide arv',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Mallide hõrendamine',
+'expand_templates_intro' => 'See erilehekülg hõrendab siia sisestatud tekstis kõik mallid rekursiivselt.
+Samuti hõrendab see parserifunktsioonid nagu
+<code><nowiki>{{</nowiki>#language:…}}</code> ja muutujad nagu
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Õigupoolest hõrendab see kahekordsete looksulgude vahel pea kõike.',
+'expand_templates_title' => 'Sisu pealkiri, näiteks {{FULLPAGENAME}} jaoks:',
+'expand_templates_input' => 'Sisendtekst:',
+'expand_templates_output' => 'Tulemus',
+'expand_templates_xml_output' => 'XML-väljund',
+'expand_templates_ok' => 'Hõrenda',
+'expand_templates_remove_comments' => 'Eemalda selgitavad märkused',
+'expand_templates_remove_nowiki' => 'Ära näita tulemuses <nowiki>-silte',
+'expand_templates_generate_xml' => 'Näita XML sõelumispuud',
+'expand_templates_preview' => 'Eelvaade',
+
 );
index 338fb38..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' ),
@@ -398,8 +396,6 @@ $1',
 'ok' => 'Ados',
 'retrievedfrom' => '"$1"(e)tik jasota',
 'youhavenewmessages' => '$1 dauzkazu ($2).',
-'newmessageslink' => 'Mezu berriak',
-'newmessagesdifflink' => 'azken aldaketa ikusi',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Beste erabiltzaile baten|$3 erabiltzaileren}} $1 ($2).',
 'youhavenewmessagesmanyusers' => 'Hainbat erabiltzaileren $1 ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|Mezu berri bat duzu|Mezu berriak dituzu}}',
@@ -1219,7 +1215,6 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'preferences' => 'Hobespenak',
 'mypreferences' => 'Hobespenak',
 'prefs-edits' => 'Aldaketa kopurua:',
-'prefsnologin' => 'Saioa hasi gabe',
 'changepassword' => 'Pasahitza aldatu',
 'prefs-skin' => 'Itxura',
 'skin-preview' => 'Aurrebista',
@@ -1501,6 +1496,7 @@ Informazio hau publikoa da.',
 'recentchanges-label-minor' => 'Hau aldaketa txikia da',
 'recentchanges-label-bot' => 'Aldaketa hau bot batek egin du',
 'recentchanges-label-unpatrolled' => 'Aldaketa hau ez da oraindik patruilatua izan',
+'recentchanges-legend-newpage' => '$1 - orrialde berria',
 'rcnote' => "Beheko azken {{PLURAL:$2|eguneko|'''$2''' egunetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}} hurrengo datan egin ziren: $5, $4.",
 'rcnotefrom' => 'Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).',
 'rclistfrom' => 'Erakutsi $1 ondorengo aldaketa berriak',
@@ -3727,4 +3723,20 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 # Image rotation
 'rotate-comment' => 'Irudia erlojuaren norantzan {{PLURAL:$1|gradu 1|$1 gradu}} biratua izan da',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Txantiloi ordezkatzailea',
+'expand_templates_intro' => 'Aparteko orrialde honek modu errekurtsiboan txantiloiak ordezkatu egiten ditu.
+Funtzioak ere ordezkatu egiten ditu, hala nola
+<code><nowiki>{{</nowiki>#language:…}}</code>, eta
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code> bezalako aldagaiak ere.
+Kortxete bikoitzarekin hobeto egiten da lan.',
+'expand_templates_title' => 'Izenburua ({{FULLPAGENAME}} ordezkatzeko, eta abar):',
+'expand_templates_input' => 'Sarrerako testua:',
+'expand_templates_output' => 'Emaitza',
+'expand_templates_xml_output' => 'XML irteera',
+'expand_templates_ok' => 'Ados',
+'expand_templates_remove_comments' => 'Iruzkinak kendu',
+'expand_templates_generate_xml' => 'Erakutsi XML parse zuhaitza',
+'expand_templates_preview' => 'Aurreikusi',
+
 );
index 7d7c386..c793efe 100644 (file)
@@ -254,8 +254,6 @@ $messages = array(
 'ok' => 'Dalcuerdu',
 'retrievedfrom' => 'Arrecuperau dendi "$1"',
 'youhavenewmessages' => 'Tiinis $1 ($2).',
-'newmessageslink' => 'nuevus mensahis',
-'newmessagesdifflink' => 'úrtimu chambu',
 'youhavenewmessagesmulti' => 'Tiinis nuevus mensahis en $1',
 'editsection' => 'eital',
 'editold' => 'eital',
@@ -784,7 +782,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'preferences' => 'Preferéncias',
 'mypreferences' => 'Las mis preferéncias',
 'prefs-edits' => "Númiru d'eicionis:",
-'prefsnologin' => "Nu t'alcuentras rustriu",
 'changepassword' => 'Chambal consínia',
 'prefs-skin' => 'Aparéncia',
 'skin-preview' => 'Previsoreal',
@@ -2362,4 +2359,7 @@ Pol favol, confirma si rialmenti quieis gorvel a crial la páhina.",
 'revdelete-unrestricted' => 'las restricionis a los çahorilis án siu esborrás',
 'rightsnone' => '(dengunu)',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Previsoreal',
+
 );
index c2264f8..25bb697 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(
@@ -713,12 +726,10 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'برگرفته از «$1»',
 'youhavenewmessages' => '$1 دارید ($2).',
-'newmessageslink' => 'پیام‌های جدید',
-'newmessagesdifflink' => 'آخرین تغییر',
 'youhavenewmessagesfromusers' => 'شما از {{PLURAL:$3|یک کاربر دیگر|$3  کاربر}} $1 دارید ($2).',
 'youhavenewmessagesmanyusers' => 'شما از تعدادی کاربر $1 دارید ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|پیام جدید}}',
-'newmessagesdifflinkplural' => '{{formatnum:$1}} {{PLURAL:$1|تغییر|تغییر}} اخیر',
+'newmessageslinkplural' => '{{PLURAL:$1|پیام جدید|999=پیام‌های جدید}}',
+'newmessagesdifflinkplural' => '{{formatnum:$1}} {{PLURAL:$1|تغییر|999=تغییر}} اخیر',
 'youhavenewmessagesmulti' => 'پیام‌های جدیدی در $1 دارید.',
 'editsection' => 'ویرایش',
 'editold' => 'ویرایش',
@@ -853,7 +864,8 @@ $2',
 'invalidtitle-knownnamespace' => 'عنوان نامعتبر با فضای نام «$2» و متن «$3»',
 'invalidtitle-unknownnamespace' => 'عنوان نامعتبر با فضای نام ناشناختهٔ شمارهٔ $1 و متن «$2»',
 'exception-nologin' => 'به سامانه وارد نشده‌اید',
-'exception-nologin-text' => 'دسترسی به این صفحه یا انجام این عمل در این ویکی نیازمند وارد شدن به سیستم  است.',
+'exception-nologin-text' => 'لطفاً به سامانه [[Special:Userlogin|وارد شوید]] تا بتوانید به این صفحه دسترسی داشته باشید.',
+'exception-nologin-text-manual' => 'لطفاً  $1  تا بتوانید به این صفحه یا عمل دسترسی داشته باشید.',
 
 # Virus scanner
 'virus-badscanner' => "پیکربندی بد: پویشگر ویروس ناشناخته: ''$1''",
@@ -863,7 +875,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''اکنون شما ثبت خروج کرده‌اید.'''
 توجه داشته باشید که تا حافظهٔ نهان مرورگرتان را پاک نکنید، بعضی از صفحات ممکن است همچنان به گونه‌ای نمایش یابند که انگار وارد شده‌اید.",
-'welcomeuser' => 'خوشامدید، $1!',
+'welcomeuser' => 'خوشامدید $1!',
 'welcomecreation-msg' => 'حساب کاربری شما ایجاد شده است.
 فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] خود را تغییر دهید.',
 'yourname' => 'نام کاربری:',
@@ -923,7 +935,7 @@ $2',
 'createacct-benefit-heading' => '{{SITENAME}} توسط افرادی مانند شما ساخته شده‌است',
 'createacct-benefit-body1' => '{{PLURAL:$1|ویرایش}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|صفحه}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|مشارکت‌کنندهٔ|مشارکت‌کنندگان}} اخیر',
+'createacct-benefit-body3' => '{{PLURAL:$1|مشارکت‌کنندهٔ}} اخیر',
 'badretype' => 'گذرواژه‌هایی که وارد کرده‌اید یکسان نیستند.',
 'userexists' => 'نام کاربری‌ای که وارد کردید قبلاً استفاده شده‌است.
 لطفاً یک نام دیگر انتخاب کنید.',
@@ -1029,7 +1041,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'بازنشانی گذرواژه',
 'passwordreset-text-one' => 'برای بازنشانی گذرواژه‌تان این فرم را کامل کنید.',
-'passwordreset-text-many' => '{{PLURAL:$1|یکی از موارد را برای بازنشانی گذرواژه‌تان پر کنید.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|برای دریافت یک گذرواژهٔ موقت از راه رایانامه، یکی از زمینه‌ها را پر کنید.}}',
 'passwordreset-legend' => 'بازنشانی گذرواژه',
 'passwordreset-disabled' => 'بازنشانی گذرواژه در این ویکی غیرفعال شده است.',
 'passwordreset-emaildisabled' => 'ویژگی‌های رایانامه در این ویکی نافعال شده‌اند.',
@@ -1419,7 +1431,7 @@ $2
 'revdelete-suppress-text' => "فرونشانی باید '''تنها''' برای موارد زیر استفاده شود:
 * اطلاعات به طور بالقوه افتراآمیز
 * اطلاعات نامناسب شخصی
-*: ''نشانی منزل، شماره تلفن، شماره تامین اجتماعی و غیره.''",
+*: ''نشانی منزل، شماره تلفن، کد ملی و غیره.''",
 'revdelete-legend' => 'تنظیم محدودیت‌های پیدایی',
 'revdelete-hide-text' => 'متن نسخه',
 'revdelete-hide-image' => 'نهفتن محتویات پرونده',
@@ -1428,8 +1440,8 @@ $2
 'revdelete-hide-user' => 'نام کاربری/نشانی آی‌پی',
 'revdelete-hide-restricted' => 'فرونشانی اطلاعات برای مدیران به همراه دیگران',
 'revdelete-radio-same' => '(بدون تغییر)',
-'revdelete-radio-set' => 'Ù\86Ù\85اÛ\8cان',
-'revdelete-radio-unset' => 'Ù\85Ø®Ù\81Û\8c',
+'revdelete-radio-set' => 'Ù¾Ù\86Ù\87ان',
+'revdelete-radio-unset' => 'Ù\86Ù\85اÛ\8cاÙ\86',
 'revdelete-suppress' => 'از دسترسی مدیران به داده نیز مانند سایر کاربران جلوگیری به عمل آید.',
 'revdelete-unsuppress' => 'خاتمهٔ محدودیت‌ها در مورد نسخه‌های انتخاب شده',
 'revdelete-log' => 'دلیل:',
@@ -1585,7 +1597,7 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'ترجیحات',
 'prefs-edits' => 'تعداد ویرایش‌ها:',
-'prefsnologin' => 'به سامانه وارد نشده‌اید',
+'prefsnologintext2' => 'لطفاً  $1  برای تنظیم ترجیحات کاربر.',
 'changepassword' => 'تغییر گذرواژه',
 'prefs-skin' => 'پوسته',
 'skin-preview' => 'پیش‌نمایش',
@@ -1760,7 +1772,7 @@ $1",
 'right-createpage' => 'ایجاد صفحه (در مورد صفحه‌های غیر بحث)',
 'right-createtalk' => 'ایجاد صفحه‌های بحث',
 'right-createaccount' => 'ایجاد حساب‌های کاربری',
-'right-minoredit' => 'علامت‌زدن ویرایش‌ها به عنوان جزئی',
+'right-minoredit' => 'علامت‌زدن ویرایش‌ها بهعنوان جزئی',
 'right-move' => 'انتقال صفحه',
 'right-move-subpages' => 'انتقال صفحه‌ها به همراه زیر‌صفحه‌هایشان',
 'right-move-rootuserpages' => 'انتقال صفحه‌های کاربری سرشاخه',
@@ -1886,6 +1898,9 @@ $1",
 'recentchanges-label-minor' => 'این ویرایش جزئی‌است',
 'recentchanges-label-bot' => 'این ویرایش را یک ربات انجام داده‌است',
 'recentchanges-label-unpatrolled' => 'این ویرایش هنوز گشت‌زنی نشده‌است',
+'recentchanges-label-plusminus' => 'حجم صفحه به اندازه این بایت‌ها تغییر یافته‌است',
+'recentchanges-legend-newpage' => '(همچنین به [[Special:NewPages|فهرست صفحات جدید]] نگاه کنید)',
+'recentchanges-legend-plusminus' => "('' ±۱۲۳'')",
 'rcnote' => "در زیر {{PLURAL:$1|'''۱''' تغییر|آخرین '''$1''' تغییر}} در آخرین {{PLURAL:$2|روز|'''$2''' روز}} را، تا $4 ساعت $5 می‌بینید.",
 'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
 'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
@@ -2616,7 +2631,7 @@ $PAGEINTRO $NEWPAGE
 نامه: $PAGEEDITOR_EMAIL
 ویکی: $PAGEEDITOR_WIKI
 
-تا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ تغییراتِ بیشتر، اعلانیه‌ای برای شما فرستاده نخواهد شد.
+تا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ فعالیت بیشتر، تا زمانی که در با کاربریتان در سیستم هستید، اعلانیه‌ای برای شما فرستاده نخواهد شد.
 شما همچنین می‌توانید در صفحهٔ پی‌گیری‌های خود پرچم‌های مربوط به آگاهی‌رسانی را صفر کنید همچنین می‌توانید پرچم‌های آگاهی‌سازی را بازنشانی کنید.
 
 دوستدار شما، سامانهٔ آگاهی‌رسانی {{SITENAME}}
@@ -3313,6 +3328,7 @@ $2',
 'tooltip-undo' => '«خنثی‌سازی» این ویرایش را خنثی می‌کند و جعبهٔ ویرایش را در حالت پیش‌نمایش باز می‌کند تا افزودن دلیل در خلاصهٔ ویرایش ممکن شود.',
 'tooltip-preferences-save' => 'ذخیره کردن ترجیحات',
 'tooltip-summary' => 'خلاصه‌ای وارد کنید',
+'interlanguage-link-title' => '$1–$2',
 
 # Stylesheets
 'common.css' => '/* دستورات این بخش همهٔ کاربران را تحت تاثیر قرار می‌دهند. */',
@@ -3357,6 +3373,7 @@ $2',
 'pageinfo-length' => 'حجم صفحه  (بایت)',
 'pageinfo-article-id' => 'شناسهٔ صفحه',
 'pageinfo-language' => 'زبان محتوای صفحه',
+'pageinfo-content-model' => 'ساختار محتوای صفحه',
 'pageinfo-robot-policy' => '‌فهرست‌کردن توسط ربات‌ها',
 'pageinfo-robot-index' => 'مجاز',
 'pageinfo-robot-noindex' => 'نامجاز',
@@ -3444,7 +3461,7 @@ $1',
 'svg-long-desc' => 'پروندهٔ اس‌وی‌جی، با ابعاد <span dir="ltr">$1 × $2</span> پیکسل، اندازهٔ پرونده: $3',
 'svg-long-desc-animated' => 'پروندهٔ اس‌وی‌جی متحرک، با ابعاد <span dir="ltr">$1 × $2</span> پیکسل، اندازهٔ پرونده: $3',
 'svg-long-error' => 'پرونده SVG نامجاز: $1',
-'show-big-image' => 'تصویر با تفکیک‌پذیری بالاتر',
+'show-big-image' => 'پروندهٔ اصلی',
 'show-big-image-preview' => 'اندازهٔ این پیش‌نمایش: $1.',
 'show-big-image-other' => '{{PLURAL:$2|کیفیت|کیفیت‌های}} دیگر: $1.',
 'show-big-image-size' => '<span dir="ltr">$1 × $2</span> پیکسل',
@@ -4015,6 +4032,7 @@ $5
 'semicolon-separator' => '؛&#32;',
 'comma-separator' => '،&#32;',
 'percent' => '$1٪',
+'quotation-marks' => '$1',
 
 # Multipage image navigation
 'imgmultipageprev' => '&rarr; صفحهٔ پیشین',
@@ -4208,8 +4226,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'صفحه‌های ویژه',
+'specialpages-note-top' => 'شرح علائم',
 'specialpages-note' => '* صفحه‌های ویژهٔ عادی.
-* <strong class="mw-specialpagerestricted">صفحه‌های ویژهٔ محدودشده.</strong>',
+* <span class="mw-specialpagerestricted">صفحه‌های ویژهٔ محدودشده.</span>',
 'specialpages-group-maintenance' => 'گزارش‌های نگهداری',
 'specialpages-group-other' => 'سایر صفحه‌های ویژه',
 'specialpages-group-login' => 'ورود / ثبت نام',
@@ -4421,4 +4440,17 @@ $5
 'limitreport-expansiondepth' => 'بیشترین عمق گسترش',
 'limitreport-expensivefunctioncount' => 'تعداد تابع تجزیه‌گر پرمصرف',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'بسط‌دادن الگوها',
+'expand_templates_intro' => 'این صفحهٔ ویژه متنی را دریافت کرده و تمام الگوهای به‌کاررفته در آن را به طور بازگشتی بسط می‌دهد. همچنین تابع‌های تجزیه چون <code><nowiki>{{</nowiki>#language:…}}</code> و متغیرهایی چون  <code><nowiki>{{</nowiki>CURRENTDAY}}</code> را هم بسط می‌دهد — در واقع تقریباً هرچه را که داخل دوآکولاد باشد. این کار با صدازدن مرحلهٔ تجزیهٔ مربوط در خود مدیاویکی صورت می‌گیرد.',
+'expand_templates_title' => 'عنوان موضوع، برای {{FULLPAGENAME}} و غیره:',
+'expand_templates_input' => 'متن ورودی:',
+'expand_templates_output' => 'نتیجه',
+'expand_templates_xml_output' => 'خروجی XML',
+'expand_templates_ok' => 'تأیید',
+'expand_templates_remove_comments' => 'حذف ملاحظات',
+'expand_templates_remove_nowiki' => 'خنثی کردن تگ‌های <nowiki> در نتیجه',
+'expand_templates_generate_xml' => 'نمایش درخت تجزیهٔ XML',
+'expand_templates_preview' => 'پیش‌نمایش',
+
 );
index 8bb1929..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' ),
@@ -592,12 +592,10 @@ $1',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Haettu osoitteesta $1',
 'youhavenewmessages' => 'Sinulle on $1 ($2).',
-'newmessageslink' => 'uusia viestejä',
-'newmessagesdifflink' => 'viimeisin muutos',
 'youhavenewmessagesfromusers' => 'Sinulle on $1 {{PLURAL:$3|toiselta käyttäjältä|$3 käyttäjältä}} ($2).',
 'youhavenewmessagesmanyusers' => 'Sinulle on $1 uusia viestejä useilta käyttäjiltä ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|uusi viesti|uusia viestejä}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|viimeinen muutos|viimeiset muutokset}}',
+'newmessageslinkplural' => '{{PLURAL:$1|uusi viesti|999=uusia viestejä}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|viimeinen muutos|999=viimeiset muutokset}}',
 'youhavenewmessagesmulti' => 'Sinulla on uusia viestejä sivuilla $1',
 'editsection' => 'muokkaa',
 'editold' => 'muokkaa',
@@ -1427,7 +1425,6 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'preferences' => 'Asetukset',
 'mypreferences' => 'Asetukset',
 'prefs-edits' => 'Muokkauksia',
-'prefsnologin' => 'Et ole kirjautunut sisään.',
 'prefsnologintext2' => 'Sinun pitää $1 ennen kuin voit muuttaa käyttäjän asetuksia.',
 'changepassword' => 'Salasanan vaihto',
 'prefs-skin' => 'Ulkoasu',
@@ -1725,6 +1722,8 @@ Tämä tieto on julkinen.',
 'recentchanges-label-minor' => 'Tämä on pieni muutos',
 'recentchanges-label-bot' => 'Tämän muutoksen suoritti botti',
 'recentchanges-label-unpatrolled' => 'Tätä muutosta ei ole vielä tarkastettu',
+'recentchanges-label-plusminus' => 'Sivun koon muutos tavuina',
+'recentchanges-legend-newpage' => '(katso myös [[Special:NewPages|lista uusista sivuista]])',
 'rcnote' => 'Alla on {{PLURAL:$1|yksi muutos|$1 tuoreinta muutosta}} {{PLURAL:$2|yhden päivän|$2 viime päivän}} ajalta $4 kello $5 asti.',
 'rcnotefrom' => 'Alla on muutokset <b>$2</b> lähtien. Enintään <b>$1</b> merkintää näytetään.',
 'rclistfrom' => 'Näytä uudet muutokset $1 alkaen',
@@ -3018,7 +3017,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'import-logentry-upload' => 'toi sivun [[$1]] tiedostomuodossa',
 'import-logentry-upload-detail' => '{{PLURAL:$1|yksi versio|$1 versiota}}',
 'import-logentry-interwiki' => 'toi toisesta wikistä sivun $1',
-'import-logentry-interwiki-detail' => 'toi {{PLURAL:$1|yhden version|$1 versiota}} wikistä $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|versio|versiota}} tuotiin wikistä $2',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptin testaus',
@@ -4148,6 +4147,22 @@ 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',
+'expand_templates_intro' => 'Tämä toimintosivu ottaa syötteekseen tekstiä ja laajentaa kaikki mallineet rekursiivisesti sekä jäsenninfunktiot, kuten
+<code><nowiki>{{</nowiki>#language:...}}</code>, ja -muuttujat, kuten
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Toisin sanoen melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.',
+'expand_templates_title' => 'Otsikko (esimerkiksi muuttujaa {{FULLPAGENAME}} varten)',
+'expand_templates_input' => 'Teksti',
+'expand_templates_output' => 'Tulos',
+'expand_templates_xml_output' => 'XML-tuloste',
+'expand_templates_ok' => 'Laajenna',
+'expand_templates_remove_comments' => 'Poista kommentit',
+'expand_templates_remove_nowiki' => 'Poista <nowiki>-tagit tulosteesta',
+'expand_templates_generate_xml' => 'Näytä XML-jäsennyspuu',
+'expand_templates_preview' => 'Esikatselu',
 
 );
index 942761a..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' ),
@@ -386,12 +385,10 @@ Sí [[Special:Version|versjón síða]].',
 'ok' => 'Í lagi',
 'retrievedfrom' => 'Heintað frá "$1"',
 'youhavenewmessages' => 'Tú hevur $1 ($2).',
-'newmessageslink' => 'nýggj boð',
-'newmessagesdifflink' => 'seinasta broyting',
 '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',
@@ -443,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',
@@ -519,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''",
@@ -1076,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:',
@@ -1226,7 +1226,6 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
 'prefs-edits' => 'Tal av rættingum:',
-'prefsnologin' => 'Tú hevur ikki ritað inn',
 'changepassword' => 'Broyt loyniorð',
 'prefs-skin' => 'Hamur',
 'skin-preview' => 'Forskoðan',
@@ -1505,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',
@@ -1515,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',
@@ -1773,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',
 
@@ -1978,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',
@@ -2333,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
@@ -2738,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',
@@ -2881,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}}',
@@ -3232,4 +3236,9 @@ Hendan váttanarkoda fer úr gildi tann $4.',
 'duration-decades' => '$1 {{PLURAL:$1|áratíggju}}',
 'duration-centuries' => '$1 {{PLURAL:$1|øld|øldir}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Úrslit',
+'expand_templates_ok' => 'Í lagi',
+'expand_templates_preview' => 'Forskoðan',
+
 );
index ccd4cfb..d724e54 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(
@@ -666,11 +681,9 @@ $1",
 'ok' => 'Valider',
 'retrievedfrom' => 'Récupérée de « $1 »',
 'youhavenewmessages' => 'Vous avez $1 ($2).',
-'newmessageslink' => 'de nouveaux messages',
-'newmessagesdifflink' => 'dernière modification',
 'youhavenewmessagesfromusers' => "Vous avez $1 {{PLURAL:$3|d'un autre utilisateur|de $3 autres utilisateurs}} ($2).",
 'youhavenewmessagesmanyusers' => 'Vous avez $1 de nombreux utilisateurs ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un message|de nouveaux messages}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un nouveau message|de nouveaux messages}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|dernière modification|dernières modifications}}',
 'youhavenewmessagesmulti' => 'Vous avez de nouveaux messages sur $1.',
 'editsection' => 'modifier',
@@ -765,7 +778,7 @@ Aucune explication n'a été fournie.",
 'badtitle' => 'Mauvais titre',
 'badtitletext' => 'Le titre de la page demandée est invalide, vide, ou il s’agit d’un titre inter-langue ou inter-projet mal formé. Il contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.',
 'perfcached' => 'Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|un résultat|$1 résultats}} est disponible dans le cache.',
-'perfcachedts' => 'Les données suivantes sont en cache et ont été mises à jour pour la dernière fois à $1. Un maximum de {{PLURAL:$4|un résultat|$4 résultats}} est disponible dans le cache.',
+'perfcachedts' => 'Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le $1. Un maximum de {{PLURAL:$4|un résultat est disponible|$4 résultats sont disponibles}} dans le cache.',
 'querypage-no-updates' => 'Les mises à jour pour cette page sont actuellement désactivées. Les données ci-dessous ne sont pas mises à jour.',
 'wrong_wfQuery_params' => 'Paramètres incorrects sur wfQuery()<br />
 Fonction : $1<br />
@@ -897,7 +910,7 @@ Vérifiez l'orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]
 'passwordtooshort' => 'Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.',
 'password-name-match' => "Votre mot de passe doit être différent de votre nom d'utilisateur.",
 'password-login-forbidden' => "L'utilisation de ce nom d'utilisateur et de ce mot de passe a été interdite.",
-'mailmypassword' => 'Recevoir un nouveau mot de passe par courriel',
+'mailmypassword' => 'Réinitialiser le mot de passe',
 'passwordremindertitle' => 'Nouveau mot de passe temporaire pour {{SITENAME}}',
 'passwordremindertext' => "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de
 passe pour {{SITENAME}} ($4 ). Un mot de passe temporaire a été créé pour
@@ -969,7 +982,7 @@ Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mo
 # Special:PasswordReset
 'passwordreset' => 'Remise à zéro du mot de passe',
 'passwordreset-text-one' => 'Remplissez ce formulaire pour réinitialiser votre mot de passe.',
-'passwordreset-text-many' => '{{PLURAL:$1|Remplissez un des champs pour réinitialiser votre mot de passe.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Remplissez un des champs pour recevoir un mot de passe temporaire par courriel.}}',
 'passwordreset-legend' => 'Remise à zéro du mot de passe',
 'passwordreset-disabled' => 'La réinitialisation des mots de passe a été désactivée sur ce wiki.',
 'passwordreset-emaildisabled' => 'Les fonctionnalités e-mail ont été désactivées sur ce wiki.',
@@ -1508,7 +1521,6 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
 'preferences' => 'Préférences',
 'mypreferences' => 'Préférences',
 'prefs-edits' => 'Nombre de modifications :',
-'prefsnologin' => 'Non connecté',
 'prefsnologintext2' => 'Veuillez $1 pour définir les préférences utilisateur.',
 'changepassword' => 'Changer de mot de passe',
 'prefs-skin' => 'Habillage',
@@ -1808,6 +1820,9 @@ Cette information sera publique.',
 'recentchanges-label-minor' => 'Cette modification est mineure',
 'recentchanges-label-bot' => 'Cette modification a été effectuée par un robot.',
 'recentchanges-label-unpatrolled' => "Cette modification n'a pas encore été patrouillée.",
+'recentchanges-label-plusminus' => 'La taille de la page a changé de ce nombre d’octets',
+'recentchanges-legend-newpage' => '(voir aussi la [[Special:NewPages|liste des nouvelles pages]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Voici {{PLURAL:$1|la dernière modification effectuée|les $1 dernières modifications effectuées}} durant {{PLURAL:$2|la dernière journée|les <b>$2</b> derniers jours}} jusqu'à $5 le $4.",
 'rcnotefrom' => "Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum).",
 'rclistfrom' => 'Afficher les nouvelles modifications depuis le $1.',
@@ -4369,4 +4384,21 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'limitreport-expansiondepth' => 'Plus grande profondeur d’expansion',
 'limitreport-expensivefunctioncount' => 'Nombre de fonctions d’analyse coûteuses',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expansion des modèles',
+'expand_templates_intro' => "Cette page spéciale accepte un texte wiki source et permet de réaliser récursivement l’expansion des modèles qu’il contient.
+Elle réalise aussi l’expansion des fonctions du parseur telles que
+<code><nowiki>{{</nowiki>#language:...}}</code> et des variables telles que
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+En fait, elle réalise l'expansion de pratiquement tout ce qui est encadré par des doubles accolades.",
+'expand_templates_title' => 'Titre de la page, si le code utilise {{FULLPAGENAME}}, etc. :',
+'expand_templates_input' => 'Texte wiki source :',
+'expand_templates_output' => 'Texte wiki obtenu après expansion',
+'expand_templates_xml_output' => 'Résultat intermédiaire de l’analyse, au format XML',
+'expand_templates_ok' => 'Valider',
+'expand_templates_remove_comments' => 'Supprimer les commentaires',
+'expand_templates_remove_nowiki' => 'Supprime les marqueurs <nowiki> dans le résultat',
+'expand_templates_generate_xml' => 'Voir l’arborescence d’analyse XML',
+'expand_templates_preview' => 'Aperçu du rendu',
+
 );
index df78848..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' ),
@@ -582,8 +582,6 @@ Vêde la [[Special:Version|pâge de les vèrsions]].',
 'ok' => 'D’acôrd',
 'retrievedfrom' => 'Rècupèrâye de « $1 »',
 'youhavenewmessages' => 'Vos éd de $1 ($2).',
-'newmessageslink' => 'mèssâjos novéls',
-'newmessagesdifflink' => 'dèrriér changement',
 'youhavenewmessagesfromusers' => 'Vos éd $1 {{PLURAL:$3|d’un ôtr’utilisator|de $3 ôtros utilisators}} ($2).',
 'youhavenewmessagesmanyusers' => 'Vos éd $1 d’un mouél d’utilisators ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|un mèssâjo novél|de mèssâjos novéls}}',
@@ -1448,7 +1446,6 @@ Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'preferences' => 'Prèferences',
 'mypreferences' => 'Prèferences',
 'prefs-edits' => 'Nombro de changements :',
-'prefsnologin' => 'Pas branchiê',
 'changepassword' => 'Changiér lo contresegno',
 'prefs-skin' => 'Habelyâjo',
 'skin-preview' => 'Prèvêre',
@@ -1724,6 +1721,7 @@ Se vos chouèsésséd de lo balyér, serat empleyê por vos atribuar voutres ôv
 'recentchanges-label-minor' => 'O est un petiôt changement',
 'recentchanges-label-bot' => 'Ceti changement est étâ fêt per un robot',
 'recentchanges-label-unpatrolled' => 'Ceti changement est p’oncor étâ gouardâ',
+'recentchanges-legend-newpage' => '$1 - pâge novèla',
 'rcnote' => "Vê-que {{PLURAL:$1|lo dèrriér changement fêt|los '''$1''' dèrriérs changements fêts}} pendent {{PLURAL:$2|lo jorn passâ|los '''$2''' jorns passâs}} tant qu’a $5 lo $4.",
 'rcnotefrom' => "Vê-que los changements fêts dês lo '''$2''' (tant qu’a '''$1''' montrâs).",
 'rclistfrom' => 'Montrar los novéls changements dês lo $1',
@@ -4210,4 +4208,21 @@ Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la
 'duration-centuries' => '$1 sièclo{{PLURAL:$1||s}}',
 'duration-millennia' => '$1 milènèro{{PLURAL:$1||s}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Èxpension des modèlos',
+'expand_templates_intro' => 'Ceta pâge spèciâla accèpte un vouiquitèxto sôrsa et pèrmèt de rèalisar rècursivament l’èxpension des modèlos que contint.
+Rèalise asse-ben l’èxpension de les fonccions du parsor coment
+<code><nowiki>{{</nowiki>#language:...<nowiki>}}</nowiki></code> et de les variâbles prèdèfenies coment
+<code><nowiki>{{</nowiki>CURRENTDAY<nowiki>}}</nowiki></code> — en veré praticament tot cen qu’est encâdrâ per des dobles colâdes.
+Rèalise cen en apelent los étâjos succèssifs que vont avouéc du parsor de MediaWiki lui-mémo.',
+'expand_templates_title' => 'Titro de la pâge, se lo code utilise {{FULLPAGENAME}}, etc. :',
+'expand_templates_input' => 'Vouiquitèxto sôrsa :',
+'expand_templates_output' => 'Rèsultat',
+'expand_templates_xml_output' => 'Rèsultat u format XML',
+'expand_templates_ok' => 'D’acôrd',
+'expand_templates_remove_comments' => 'Suprimar los comentèros',
+'expand_templates_remove_nowiki' => 'Suprime les balises <nowiki> dens lo rèsultat',
+'expand_templates_generate_xml' => 'Fâre vêre l’âbro du parsor u format XML',
+'expand_templates_preview' => 'Prèvisualisacion du rendu',
+
 );
index d62dadd..7e25267 100644 (file)
@@ -297,12 +297,10 @@ Luke efter bi't [[Special:Version|werjuunssidj]]",
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Faan „$1“',
 'youhavenewmessages' => 'Dü heest $1 ($2).',
-'newmessageslink' => 'nei bööd',
-'newmessagesdifflink' => 'Leest änring',
 'youhavenewmessagesfromusers' => 'Dü heest $1 faan {{PLURAL:$3|en öödern brüker|$3 ööder brükern}} ($2).',
 'youhavenewmessagesmanyusers' => 'Dü heest $1 faan flook ööder brükern ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ian nei nooracht|nei noorachten}}',
-'newmessagesdifflinkplural' => 'leetst {{PLURAL:$1|feranrang|feranrangen}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ian nei bööd|999=nei bööd}}',
+'newmessagesdifflinkplural' => 'leetst {{PLURAL:$1|feranrang|999=feranrangen}}',
 'youhavenewmessagesmulti' => 'Dü heest nei bööd üüb $1',
 'editsection' => 'Bewerke',
 'editold' => 'Bewerke',
@@ -432,7 +430,8 @@ Di grünj faan di administraator as: „$3“.',
 'invalidtitle-knownnamespace' => 'Ferkiard auerskraft uun di nöömrüm „$2“ an tekst „$3“',
 'invalidtitle-unknownnamespace' => 'Ferkiard auerskraft uun di ünbekäänd nöömrüm „$1“ an tekst „$2“',
 'exception-nologin' => 'Ei uunmeldet',
-'exception-nologin-text' => 'Det könst dü bluas bewerke, wan dü uunmeldet beest.',
+'exception-nologin-text' => 'Wees so gud an [[Special:Userlogin|melde di uun]], am detdiar sidj of aktjuun ütjtufeeren.',
+'exception-nologin-text-manual' => 'Wees so gud an $1 , am detdiar sidj of aktjuun ütjtufeeren.',
 
 # Virus scanner
 'virus-badscanner' => "Ferkiard iinstelang: Ünbekäänd wiirenscanner: ''$1''",
@@ -985,8 +984,8 @@ Dü könst di ferskeel uunluke. Wan dü muar wed wel, luke iin uun't [{{fullurl:
 'revdelete-hide-user' => 'Brükernööm/IP-adres faan di brüker',
 'revdelete-hide-restricted' => 'Dooten uk för administratooren an öödern fersteeg',
 'revdelete-radio-same' => '(ei feranre)',
-'revdelete-radio-set' => 'Tu sen',
-'revdelete-radio-unset' => 'Ferbürgen',
+'revdelete-radio-set' => 'Ferbürgen',
+'revdelete-radio-unset' => 'Tu sen',
 'revdelete-suppress' => "Grünj för't striken uk för administratooren an öödern fersteeg",
 'revdelete-unsuppress' => 'Weder iinsteld werjuunen luasmaage',
 'revdelete-log' => 'Grünj:',
@@ -1139,7 +1138,7 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'preferences' => 'Iinstelangen',
 'mypreferences' => 'Iinstelangen',
 'prefs-edits' => 'Taal faan feranrangen:',
-'prefsnologin' => 'Ei uunmeldet',
+'prefsnologintext2' => 'Wees so gud an $1 , am din brüker-iinstelangen fäästtuleien.',
 'changepassword' => 'Paaswurd feranre',
 'prefs-skin' => 'Skak',
 'skin-preview' => 'Föörskau',
@@ -1437,6 +1436,9 @@ Arken koon det lees.',
 'recentchanges-label-minor' => 'Letj feranrang',
 'recentchanges-label-bot' => 'Feranrang faan en bot',
 'recentchanges-label-unpatrolled' => 'Detdiar feranrang as noch ei efterluket wurden',
+'recentchanges-label-plusminus' => 'Feranert sidjengrate (am soföl bytes)',
+'recentchanges-legend-newpage' => "(luke uk bi't [[Special:NewPages|list mä nei sidjen]])",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Diar {{PLURAL:$1|stäänt det leetst feranrang|stun a leetst '''$1''' feranrangen}} faan a leetst {{PLURAL:$2|dai|'''$2''' daar}}. Stant: $4, am a klook $5.",
 'rcnotefrom' => "Diar wurd a feranrangen sant '''$2'''uunwiset (ei muar üs '''$1''' feranrangen).",
 'rclistfrom' => 'Bluas feranrangen sant $1 wise.',
@@ -2139,7 +2141,7 @@ Kontakt tu di bewerker:
 E-mail: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Di wurd iarst ans nian e-mails muar tu detdiar sidj schüürd, bit dü det sidj weder beschükst. Üüb din list faan sidjen, diar dü uun\'t uug behual wel, könst dü a noorachtenkääntiaken weder turagsaat.
+Di wurd iarst ans nian e-mails muar tu detdiar sidj schüürd, bit dü det sidj weder uunmeldet beschükst. Üüb din list faan sidjen, diar dü uun\'t uug behual wel, könst dü a noorachtenkääntiaken weder turagsaat.
 
 Dan frinjelk {{SITENAME}}-noorachten siinst
 
@@ -2920,7 +2922,7 @@ $1",
 'svg-long-desc' => 'SVG-datei, grate: $1 × $2 pixel, dateigrate: $3',
 'svg-long-desc-animated' => 'Animiaret SVG-datei, grate $1 × $2 pixel, dateigrate: $3',
 'svg-long-error' => 'Ferkiard SVG-datei: $1',
-'show-big-image' => 'Huuger apliasang',
+'show-big-image' => 'Originaal datei',
 'show-big-image-preview' => 'Grate faan detdiar föörskaubil: $1.',
 'show-big-image-other' => 'Ööder {{PLURAL:$2|apliasang|apliasangen}}: $1.',
 'show-big-image-size' => '$1 × $2 pixel',
@@ -3607,9 +3609,9 @@ An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special
 
 # Special:SpecialPages
 'specialpages' => 'Spezial-sidjen',
+'specialpages-note-top' => 'Legend',
 'specialpages-note' => '* Normool spezial-sidjen
-* <span class="mw-specialpagerestricted">Spezial-sidjen mä tugripsrochten</span>
-* <span class="mw-specialpagecached">Spezial-sidjen uun a cache (As ferlicht ei muar aktuel.)</span>',
+* <span class="mw-specialpagerestricted">Spezial-sidjen mä tugripsrochten</span>',
 'specialpages-group-maintenance' => 'Werksteedsidjen',
 'specialpages-group-other' => 'Ööder spezial-sidjen',
 'specialpages-group-login' => 'Melde di uun of skriiw di iin',
@@ -3823,4 +3825,18 @@ An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special
 'limitreport-expansiondepth' => 'Maksimaal ütjwidjangsjipde',
 'limitreport-expensivefunctioncount' => 'Taal faan apwendag parser-funktjuunen',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Föörlaagen ütjwidje',
+'expand_templates_intro' => 'Üüb detdiar spezial-sidj wurd a föörlaagen faan di tekst rekursiif ütjwidjet.
+Uk parser-funktjuunen liküs <code><nowiki>{{</nowiki>#language:…}}</code> an wariaabeln liküs <code><nowiki>{{</nowiki>CURRENTDAY}}</code> wurd ferwerket - det ment ales, wat tesken dobelt sleufen stäänt.',
+'expand_templates_title' => 'Kontekst-tiitel, för {{FULLPAGENAME}} asw.:',
+'expand_templates_input' => 'Skriiwfial:',
+'expand_templates_output' => 'Resultaat',
+'expand_templates_xml_output' => 'XML-resultaat',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Komentaaren wechnem',
+'expand_templates_remove_nowiki' => "<nowiki>-tags uun't resultaat ei uunwise",
+'expand_templates_generate_xml' => 'XML-parser-buum uunwise',
+'expand_templates_preview' => 'Föörskau',
+
 );
index 90f3c69..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' ),
@@ -340,8 +339,6 @@ $messages = array(
 'ok' => 'Va ben',
 'retrievedfrom' => 'Cjapât fûr di $1',
 'youhavenewmessages' => 'Tu âs $1 ($2).',
-'newmessageslink' => 'gnûfs messaçs',
-'newmessagesdifflink' => 'difarencis cu la penultime revision',
 'youhavenewmessagesmulti' => 'Tu âs gnûfs messaçs su $1',
 'editsection' => 'cambie',
 'editold' => 'cambie',
@@ -705,7 +702,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'preferences' => 'Preferencis',
 'mypreferences' => 'Preferencis',
 'prefs-edits' => 'Numar di cambiaments fats:',
-'prefsnologin' => 'No tu sês jentrât',
 'changepassword' => 'Gambie peraule clâf',
 'prefs-skin' => 'Mascare',
 'skin-preview' => 'Anteprime',
@@ -1676,4 +1672,11 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
 # API errors
 'api-error-unclassified' => 'Al è capitât un erôr no cognossût',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Espant i modei',
+'expand_templates_output' => 'Risultât',
+'expand_templates_ok' => 'Va ben',
+'expand_templates_remove_comments' => 'Gjave i coments',
+'expand_templates_preview' => 'Anteprime',
+
 );
index 1bf830f..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' ),
@@ -387,8 +386,6 @@ $1",
 'ok' => 'Goed',
 'retrievedfrom' => 'Untfongen fan "$1"',
 'youhavenewmessages' => 'Jo hawwe $1 ($2).',
-'newmessageslink' => 'nije berjochten',
-'newmessagesdifflink' => 'ferskil mei foarlêste ferzje',
 'youhavenewmessagesmulti' => 'Jo hawwe nije berjochten op $1',
 'editsection' => 'bewurkje',
 'editold' => 'bewurkje',
@@ -950,7 +947,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'preferences' => 'Ynstellings',
 'mypreferences' => 'Myn foarkarynstellings',
 'prefs-edits' => 'Tal bewurkings:',
-'prefsnologin' => 'Net oanmeld',
 'changepassword' => 'Wachtwurd feroarje',
 'prefs-skin' => 'Side-oansjen',
 'skin-preview' => 'Proefbyld',
@@ -1182,6 +1178,7 @@ Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwi
 'recentchanges-label-minor' => 'Dit is in tekstwiziging',
 'recentchanges-label-bot' => 'Dizze wiziging is troch in robot makke',
 'recentchanges-label-unpatrolled' => 'Dizze wiziging is noch net neisjûn',
+'recentchanges-legend-newpage' => '$1 - nije side',
 'rcnote' => "Dit {{PLURAL:$1|is de lêste feroaring|binne de lêste '''$1''' feroarings}} yn de lêste {{PLURAL:$2|dei|'''$2''' dagen}}, fan $4 $5.",
 'rcnotefrom' => 'Dit binne de feroarings sûnt <b>$2</b> (maksimaal <b>$1</b>).',
 'rclistfrom' => 'Jou nije feroarings, begjinnende mei $1',
index a7ef5b4..a72fa86 100644 (file)
@@ -344,8 +344,6 @@ $messages = array(
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Aisghabháil ó "$1"',
 'youhavenewmessages' => 'Tá $1 agat ($2).',
-'newmessageslink' => 'teachtaireachtaí nua',
-'newmessagesdifflink' => 'difear ón leasú leathdhéanach',
 'youhavenewmessagesmulti' => 'Tá teachtaireachtaí nua agat ar $1',
 'editsection' => 'athraigh',
 'editold' => 'athraigh',
@@ -821,7 +819,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
 # Preferences page
 'preferences' => 'Sainroghanna',
 'mypreferences' => 'Sainroghanna',
-'prefsnologin' => 'Níl tú logáilte isteach',
 'changepassword' => "Athraigh d'fhocal faire",
 'prefs-skin' => 'Craiceann',
 'skin-preview' => 'Réamhamharc',
@@ -959,6 +956,7 @@ do chuid dreachtaí a chur i leith tusa.',
 'recentchanges-feed-description' => 'Rianaigh na n-athruite vicí is déanaí sa fotha seo.',
 'recentchanges-label-minor' => 'Mionathrú é seo',
 'recentchanges-label-bot' => 'Chomhlíon róbó an t-athrú seo',
+'recentchanges-legend-newpage' => '$1 - leathanach nua',
 'rcnote' => "Is {{PLURAL:$1|é seo a leanas <strong>an t-athrú amháin</strong>|iad seo a leanas na <strong>$1</strong> athruithe is déanaí}} {{PLURAL:$2|ar feadh an lae dheireanaigh|ar feadh na '''$2''' lá deireanacha}}, as $5, $4.",
 'rcnotefrom' => 'Is iad seo a leanas na hathruithe ó <b>$2</b> (go dti <b>$1</b> taispeánaithe).',
 'rclistfrom' => 'Taispeáin athruithe nua ó $1 anuas.',
@@ -2215,4 +2213,8 @@ Rachaidh an cód deimhnithe seo as feidhm ag $4.',
 # Search suggestions
 'searchsuggest-search' => 'Cuardaigh',
 
+# Special:ExpandTemplates
+'expand_templates_remove_comments' => 'Scrios nótaí tráchta',
+'expand_templates_preview' => 'Réamhamharc',
+
 );
index 443952b..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ı' ),
@@ -306,8 +305,6 @@ $messages = array(
 'ok' => 'TAMAN',
 'retrievedfrom' => 'Alındı "$1"dän',
 'youhavenewmessages' => 'Var eni $1 ($2).',
-'newmessageslink' => 'eni mesajlar',
-'newmessagesdifflink' => 'Bitki diişmäk',
 'youhavenewmessagesmulti' => "$1'de eni mesajınız var.",
 'editsection' => 'diiştir',
 'editold' => 'diiştir',
index 1c9943d..6d90acc 100644 (file)
@@ -284,8 +284,6 @@ $1',
 'ok' => '做得',
 'retrievedfrom' => '版本页 "$1"',
 'youhavenewmessages' => '倷有 $1 ($2).',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '最晏𠮶改动',
 'youhavenewmessagesmulti' => '$1 上有倷𠮶新消息',
 'editsection' => '编写',
 'editold' => '编写',
@@ -763,7 +761,6 @@ $2',
 'preferences' => '参数设置',
 'mypreferences' => '偶𠮶参数设置',
 'prefs-edits' => '编辑数:',
-'prefsnologin' => '哈冇登入',
 'changepassword' => '改过密码',
 'prefs-skin' => '皮',
 'skin-preview' => '(预览)',
index fc551a2..1aa9cb9 100644 (file)
@@ -32,7 +32,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( '老早嗰頁面' ),
        'BrokenRedirects'           => array( '壞吥嗰重定向頁' ),
        'CreateAccount'             => array( '新建隻帳戶' ),
-       'Disambiguations'           => array( '多義項' ),
        'Fewestrevisions'           => array( '最少改動嗰頁面' ),
        'Longpages'                 => array( '莽文章' ),
        'Mostcategories'            => array( '最多分類嗰頁面' ),
@@ -306,8 +305,6 @@ $1',
 'ok' => '做得',
 'retrievedfrom' => '版本頁「$1」',
 'youhavenewmessages' => '汝有 $1 ($2).',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '頂晏嗰改動',
 'youhavenewmessagesmulti' => '$1 上有倷嗰新消息',
 'editsection' => '編寫',
 'editold' => '編寫',
@@ -785,7 +782,6 @@ $2',
 'preferences' => '參數設置',
 'mypreferences' => '我嗰參數設置',
 'prefs-edits' => '編輯數:',
-'prefsnologin' => '哈冇登入',
 'changepassword' => '改過密碼',
 'prefs-skin' => '皮',
 'skin-preview' => '(預覽)',
index ebffa19..6e255c7 100644 (file)
@@ -309,8 +309,6 @@ Seall air [[Special:Version|duilleag an tionndaidh]].',
 'ok' => 'Ceart ma-thà',
 'retrievedfrom' => 'Air a tharraing à "$1"',
 'youhavenewmessages' => 'Tha $1 ($2) agad.',
-'newmessageslink' => 'teachdaireachdan ùra',
-'newmessagesdifflink' => 'mùthadh mu dheireadh',
 'youhavenewmessagesfromusers' => 'Tha $1 o {{PLURAL:$3|aon chleachdaiche|$3 chleachdaiche|$3 cleachdaichean|$3 cleachdaiche}} agad ($2).',
 'youhavenewmessagesmanyusers' => 'Tha $1 agad o iomadh cleachdaiche ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|aon teachdaireachd ùr|$1 theachdaireachd ùr|$1 teachdaireachdan ùra|$1 teachdaireachd ùr}}',
@@ -1173,7 +1171,6 @@ Faodaidh gum bi inneacsan susbaint {{SITENAME}} tuilleadh 's sean ge-tà.",
 'preferences' => 'Roghainnean',
 'mypreferences' => 'Na roghainnean agam',
 'prefs-edits' => 'Co mheud deasachadh:',
-'prefsnologin' => 'Chan eil thu air clàradh a-steach',
 'changepassword' => 'Atharraich facal-faire',
 'prefs-skin' => 'Bian',
 'skin-preview' => 'Ro-shealladh',
index 9b82053..cd9bc27 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' ),
@@ -527,12 +558,10 @@ $1',
 'ok' => 'Aceptar',
 'retrievedfrom' => 'Traído desde "$1"',
 'youhavenewmessages' => 'Ten $1 ($2).',
-'newmessageslink' => 'mensaxes novas',
-'newmessagesdifflink' => 'diferenzas coa revisión anterior',
 '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',
@@ -664,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''",
@@ -768,7 +798,7 @@ Por favor, inténteo de novo.',
 'passwordtooshort' => 'Os contrasinais deben conter, como mínimo, {{PLURAL:$1|1 carácter|$1 caracteres}}.',
 'password-name-match' => 'O seu contrasinal debe ser diferente do seu nome de usuario.',
 'password-login-forbidden' => 'O uso deste nome de usuario e contrasinal foi prohibido.',
-'mailmypassword' => 'Enviádeme un contrasinal novo por correo',
+'mailmypassword' => 'Restablecer o contrasinal',
 'passwordremindertitle' => 'Novo contrasinal temporal para {{SITENAME}}',
 'passwordremindertext' => 'Alguén (probablemente vostede, desde o enderezo IP $1) solicitou un novo
 contrasinal para acceder a {{SITENAME}} ($4). Un contrasinal temporal para o usuario
@@ -843,7 +873,7 @@ Pode ser que xa cambiase o seu contrasinal ou que solicitase un novo contrasinal
 # Special:PasswordReset
 'passwordreset' => 'Restablecer o contrasinal',
 'passwordreset-text-one' => 'Encha este formulario para restablecer o seu contrasinal.',
-'passwordreset-text-many' => '{{PLURAL:$1|Encha un dos campos para restablecer o seu contrasinal.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Encha un dos campos para recibir por correo electrónico un contrasinal temporal.}}',
 'passwordreset-legend' => 'Restablecer o contrasinal',
 'passwordreset-disabled' => 'O restablecemento de contrasinais está desactivado neste wiki.',
 'passwordreset-emaildisabled' => 'As funcións do correo electrónico están desactivadas neste wiki.',
@@ -1404,8 +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:',
-'prefsnologin' => 'Non accedeu ao sistema',
-'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',
@@ -1445,10 +1475,10 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 Calquera persoa que a saiba poderá ler a súa lista de vixilancia; non comparta esta clave.
 [[Special:ResetTokens|Prema aquí se necesita restablecela]].',
 'savedprefs' => 'Gardáronse as súas preferencias.',
-'timezonelegend' => 'Zona horaria:',
+'timezonelegend' => 'Fuso horario:',
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar a hora do servidor por defecto ($1)',
-'timezoneuseoffset' => 'Outra (especifique o desprazamento)',
+'timezoneuseoffset' => 'Outro (especifique o desprazamento)',
 'timezoneoffset' => 'Desprazamento¹:',
 'servertime' => 'Hora do servidor:',
 'guesstimezone' => 'Encher desde o navegador',
@@ -1704,6 +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-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',
@@ -2035,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.',
@@ -2387,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',
@@ -2443,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
@@ -2561,8 +2594,8 @@ Pode mudar o nivel de protección da páxina pero iso non afectará á protecci
 'protect-expiry-indefinite' => 'indefinido',
 'protect-cascade' => 'Protexer as páxinas incluídas nesta (protección en serie)',
 'protect-cantedit' => 'Non pode modificar os niveis de protección desta páxina porque non ten os permisos necesarios para editala.',
-'protect-othertime' => 'Outro período:',
-'protect-othertime-op' => 'outro período',
+'protect-othertime' => 'Outra duración:',
+'protect-othertime-op' => 'outra duración',
 'protect-existing-expiry' => 'Período de caducidade actual: $2 ás $3',
 'protect-otherreason' => 'Outro motivo:',
 'protect-otherreason-op' => 'Outro motivo',
@@ -2725,7 +2758,7 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
 'ipbemailban' => 'Impedir que o usuario envíe correos electrónicos',
 'ipbenableautoblock' => 'Bloquear automaticamente o último enderezo IP utilizado por este usuario, e calquera outro enderezo desde o que intente editar',
 'ipbsubmit' => 'Bloquear este usuario',
-'ipbother' => 'Outro período de tempo:',
+'ipbother' => 'Outra duración:',
 'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,para sempre:infinite',
 'ipbotheroption' => 'outra',
 'ipbotherreason' => 'Outro motivo:',
@@ -3774,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.',
@@ -3851,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',
@@ -3983,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',
@@ -4006,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
 
@@ -4197,4 +4232,21 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'limitreport-expansiondepth' => 'Máxima profundidade de expansión',
 'limitreport-expensivefunctioncount' => 'Número de funcións de análise custosas',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expandir os modelos',
+'expand_templates_intro' => 'Esta páxina especial toma texto e expande todos os modelos dentro del recursivamente.
+Tamén expande as funcións de análise como
+<code><nowiki>{{</nowiki>#language:…}}</code> e variables como
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+De feito, expande case calquera cousa entre dúas chaves.',
+'expand_templates_title' => 'Título do contexto, para {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Texto de entrada:',
+'expand_templates_output' => 'Resultado',
+'expand_templates_xml_output' => 'Saída XML',
+'expand_templates_ok' => 'Aceptar',
+'expand_templates_remove_comments' => 'Eliminar os comentarios',
+'expand_templates_remove_nowiki' => 'Suprimir as etiquetas <nowiki> no resultado',
+'expand_templates_generate_xml' => 'Mostrar as árbores de análise XML',
+'expand_templates_preview' => 'Vista previa',
+
 );
index c78efd1..4acdb41 100644 (file)
@@ -190,8 +190,6 @@ $messages = array(
 'ok' => 'Zait',
 'retrievedfrom' => '"$1" savn prapt kelam',
 'youhavenewmessages' => 'Tumkam $1 ($2) asat.',
-'newmessageslink' => 'nove sondex',
-'newmessagesdifflink' => 'nimannem bodlop',
 'editsection' => 'sudar',
 'editold' => 'sudar',
 'viewsourceold' => 'mull poloi',
index 653b9cf..9a4a2c1 100644 (file)
@@ -290,8 +290,6 @@ $1',
 'ok' => 'εἶεν',
 'retrievedfrom' => 'Ἀνακτηθεῖσα ὑπὸ "$1"',
 'youhavenewmessages' => 'Ἔχεις $1 ($2).',
-'newmessageslink' => 'νέας ἀγγελίας',
-'newmessagesdifflink' => 'ἐσχάτη μεταβολή',
 'youhavenewmessagesmulti' => 'Νέας εἰσί σοι ἀγγελίας ἐν $1',
 'editsection' => 'μεταγράφειν',
 'editold' => 'μεταγράφειν',
@@ -826,7 +824,6 @@ $1",
 'preferences' => 'Προαιρέσεις',
 'mypreferences' => 'Αἱ προαιρέσεις μου',
 'prefs-edits' => 'Τοσοῦται αἱ μεταβολαί:',
-'prefsnologin' => 'Μὴ συνδεδεμένος',
 'changepassword' => 'Ἀλλάττειν σύνθημα',
 'prefs-skin' => 'Ἐμφάνισις',
 'skin-preview' => 'Προεπισκοπεῖν',
@@ -1070,6 +1067,7 @@ $1",
 'recentchanges-label-minor' => 'Ἥδε μικρὰ μεταγραφή ἐστιν',
 'recentchanges-label-bot' => 'Ἥδε ἡ μεταγραφὴ ἐτελέσθη ὑπὸ αὐτομάτου τινός',
 'recentchanges-label-unpatrolled' => 'Ἥδε ἡ μεταγραφὴ μὴ ἐλεγμένη ἐστίν',
+'recentchanges-legend-newpage' => '$1 - νέα δέλτος',
 'rcnote' => "Κατωτέρω {{PLURAL:$1|ἐστὶ '''1''' ἀλλαγὴ|εἰσὶν αἱ τελευταῖαι '''$1''' ἀλλαγαὶ}} ἐν {{PLURAL:$2|τῇ τελευταίᾳ ἡμέρᾳ|ταῖς τελευταίαις '''$2''' ἡμέραις}}, ἕως καὶ $5, $4.",
 'rcnotefrom' => "Ἰδοῦ αἱ ἀλλαγαὶ ἐκ τοῦ '''$2''' (ἕως τὸ '''$1''').",
 'rclistfrom' => 'Δεικνύναι νέας ἀλλαγάς. Ἐκκίνησις ἐκ τοῦ $1',
@@ -2667,4 +2665,10 @@ $5
 'searchsuggest-search' => 'Ζητεῖν',
 'searchsuggest-containing' => 'περιέχον...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Ἐπεκτείνειν τὰ πρότυπα',
+'expand_templates_output' => 'Ἀποτέλεσμα',
+'expand_templates_ok' => 'εἶεν',
+'expand_templates_preview' => 'Προθεώρησις',
+
 );
index 3d6fbd0..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' ),
@@ -408,12 +408,10 @@ Di maximal Wartezyt fir e Lock isch umme',
 'ok' => 'OK',
 'retrievedfrom' => 'Vun "$1"',
 'youhavenewmessages' => 'Du hesch $1 ($2).',
-'newmessageslink' => 'nöji Nachrichte',
-'newmessagesdifflink' => 'Unterschid',
 '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',
@@ -537,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''",
@@ -738,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',
@@ -748,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',
@@ -908,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",
@@ -946,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',
@@ -985,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.',
@@ -1233,7 +1248,6 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'preferences' => 'Yystellige',
 'mypreferences' => 'Yystellige',
 'prefs-edits' => 'Aazahl vu dr Bearbeitige:',
-'prefsnologin' => 'Nid aagmäldet',
 'changepassword' => 'Passwort ändere',
 'prefs-skin' => 'Benutzeroberflechi',
 'skin-preview' => 'Vorschou',
@@ -1504,6 +1518,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'recentchanges-label-minor' => 'Des isch e chleini Änderig',
 'recentchanges-label-bot' => 'Die Bearbeitig isch dur e Bott uusgfiert wore',
 'recentchanges-label-unpatrolled' => 'Die Bearbeitig isch nonig vun eme Fäldhieter aagluegt wore',
+'recentchanges-legend-newpage' => '$1 - neji Syte',
 'rcnote' => "Azeigt {{PLURAL:$1|wird '''1''' Änderig|wärde di letschte '''$1''' Änderige}} {{PLURAL:$2|vom letschte Tag|i de letschte '''$2''' Täg}} (Stand: $4, $5)",
 'rcnotefrom' => 'Des sin d Ändrige syter <b>$2</b> (bis zem <b>$1</b> zeigt).',
 'rclistfrom' => '<small>Nöji Änderige ab $1 aazeige (UTC)</small>',
@@ -3783,4 +3798,17 @@ Sunscht chasch au s eifach Formular unte nutze. Dyy Kommentar wird, zämme mit D
 'duration-centuries' => '$1 {{PLURAL:$1|Johrhundert|Johrhundert}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Jahrtöusert|Jahrtöusert}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Vorlage expandiere',
+'expand_templates_intro' => 'In däre Spezialsyte cha Täxt yygee wäre und alli Vorlage in ere wäre rekursiv expandiert. Au Parserfunkione wie <nowiki>{{</nowiki>#language:…}} un Variable wie <nowiki>{{</nowiki>CURRENTDAY}} wäre usgwärtet - faktisch alles was in dopplete gschweifte Chlammere din isch. Des gschiht dur dr Ufruef vu dr jewyylige Parser-Phase in MediaWiki.',
+'expand_templates_title' => 'Kontexttitel, fir {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Yygabfäld:',
+'expand_templates_output' => 'Ergebnis',
+'expand_templates_xml_output' => 'XML-Usgab',
+'expand_templates_ok' => 'Uusfiere',
+'expand_templates_remove_comments' => 'Kommentar useneh',
+'expand_templates_remove_nowiki' => '<nowiki>-Befähl im Ergebnis unterdrucke',
+'expand_templates_generate_xml' => 'Zeig XML-Parser-Baum',
+'expand_templates_preview' => 'Vorschou',
+
 );
index f36a514..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( 'ફાઇલપ્રતિકૃતિ_શોધ' ),
@@ -430,12 +430,10 @@ $1',
 'ok' => 'મંજૂર',
 'retrievedfrom' => '"$1"થી લીધેલું',
 'youhavenewmessages' => 'તમારા માટે $1 ($2).',
-'newmessageslink' => 'નવીન સંદેશાઓ',
-'newmessagesdifflink' => 'છેલ્લો ફેરફાર',
 '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' => 'ફેરફાર કરો',
@@ -1281,7 +1279,6 @@ $1",
 'preferences' => 'પસંદ',
 'mypreferences' => 'પસંદગીઓ',
 'prefs-edits' => 'સંપાદનોની સંખ્યા',
-'prefsnologin' => 'પ્રવેશ કરેલ નથી',
 'prefsnologintext2' => 'તમારી પસંદગીઓ પસંદ કરવા માટે કૃપયા $1.',
 'changepassword' => 'ગુપ્તસંજ્ઞા બદલો',
 'prefs-skin' => 'ફલક',
@@ -2282,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}}}}
 
 તમારી ધ્યાનસૂચિના  વિક્લ્પ ગોઠવણ માટે મુલાકાત લો
@@ -3669,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' => 'લવાઇ રહ્યું છે...',
@@ -3878,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|વાળ્યું}} પણ પાછળ દિશાનિર્દેશન છોડ્યું નહી',
@@ -3973,4 +3971,8 @@ $5
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'પરિણામ:',
+'expand_templates_ok' => 'મંજૂર',
+
 );
index b0453c8..716bbb5 100644 (file)
@@ -266,8 +266,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Feddynit ass "$1"',
 'youhavenewmessages' => 'Ta $1 ayd ($2).',
-'newmessageslink' => 'çhaghteraghtyn noa',
-'newmessagesdifflink' => "caghlaa s'jerree",
 'youhavenewmessagesmulti' => 'Ta çhaghteraghtyn noa ayd er $1',
 'editsection' => 'reagh',
 'editold' => 'reagh',
@@ -609,7 +607,6 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
 'preferences' => 'Tosheeaghtyn',
 'mypreferences' => 'My hosheeaghtyn',
 'prefs-edits' => 'Earroo caghlaaghyn:',
-'prefsnologin' => 'Cha nel oo loggit stiagh',
 'changepassword' => 'Fockle yn arrey y cheaghley',
 'prefs-skin' => 'Crackan',
 'skin-preview' => 'Roie-haishbynys',
@@ -1478,4 +1475,8 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
 'searchsuggest-search' => 'Ronsaghey',
 'searchsuggest-containing' => 'goaill stiagh...',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK',
+'expand_templates_preview' => 'Roie-haishbynys',
+
 );
index c0dc165..34097c7 100644 (file)
@@ -16,6 +16,8 @@
  * @author Xiaomingyan
  */
 
+$fallback = 'zh-hant';
+
 $messages = array(
 # User preference toggles
 'tog-underline' => '鏈接加底線:',
@@ -289,8 +291,6 @@ $1',
 'ok' => '做得',
 'retrievedfrom' => '來自"$1"',
 'youhavenewmessages' => '汝有$1($2)。',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '上擺更改',
 'youhavenewmessagesfromusers' => '汝有來自{{PLURAL:$3|另一位用戶|$3位用戶}}嘅$1($2)。',
 'youhavenewmessagesmanyusers' => '汝有來自多位用戶嘅$1( $2 )。',
 'newmessageslinkplural' => '{{PLURAL:$1|一條新信息|新信息}}',
@@ -897,7 +897,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 # Preferences page
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
-'prefsnologin' => '還吂登入',
 'changepassword' => '更改密碼',
 'prefs-skin' => '外皮',
 'skin-preview' => '預覽',
index 02a781d..13d61b5 100644 (file)
@@ -276,8 +276,6 @@ $messages = array(
 'ok' => 'Hiki nō',
 'retrievedfrom' => 'Kiʻi ʻia mai "$1"',
 'youhavenewmessages' => 'He $1 ($2) kāu.',
-'newmessageslink' => 'mau memo hou',
-'newmessagesdifflink' => 'loli hope',
 'youhavenewmessagesmulti' => 'He mau memo kou ma $1',
 'editsection' => 'e ho‘ololi',
 'editold' => 'e ho‘ololi',
@@ -857,4 +855,8 @@ Hiki iā ʻoe ke ʻikena i kāna molekumu.',
 # Special:Tags
 'tags-edit' => 'e hoʻololi',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Hiki nō',
+'expand_templates_preview' => 'Nāmua',
+
 );
index e4957e7..869bfb9 100644 (file)
@@ -12,6 +12,7 @@
  * @author Dekel E
  * @author Drorsnir
  * @author Guycn1
+ * @author Guycn2
  * @author Hoo
  * @author Ijon
  * @author Inkbug
@@ -65,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( 'קטגוריות', 'רשימת_קטגוריות' ),
@@ -82,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( 'חיפוש_קבצים_כפולים' ),
@@ -130,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( 'דפים_קצרים' ),
@@ -153,7 +156,7 @@ $specialPageAliases = array(
        'Unwatchedpages'            => array( 'דפים_שאינם_במעקב' ),
        'Upload'                    => array( 'העלאה', 'העלאת_קובץ_לשרת' ),
        'UploadStash'               => array( 'מאגר_העלאות' ),
-       'Userlogin'                 => array( 'כניסה_לחשבון', 'כניסה', 'כניסה_/_הרשמה_לחשבון' ),
+       'Userlogin'                 => array( 'כניסה_לחשבון', 'כניסה' ),
        'Userlogout'                => array( 'יציאה_מהחשבון', 'יציאה' ),
        'Userrights'                => array( 'ניהול_הרשאות_משתמש', 'הפיכת_משתמש_למפעיל_מערכת', 'הענקת_או_ביטול_הרשאת_בוט' ),
        'Version'                   => array( 'גרסה', 'גרסת_התוכנה' ),
@@ -637,12 +640,10 @@ $1',
 'backlinksubtitle' => '→ $1',
 'retrievedfrom' => 'מקור: $1',
 'youhavenewmessages' => 'יש לך $1 ($2).',
-'newmessageslink' => 'הודעות חדשות',
-'newmessagesdifflink' => 'השוואה לגרסה הקודמת',
 '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' => 'עריכה',
@@ -877,7 +878,7 @@ $2',
 'passwordtooshort' => 'סיסמאות חייבות להיות באורך {{PLURAL:$1|תו אחד|$1 תווים}} לפחות.',
 'password-name-match' => 'סיסמתכם חייבת להיות שונה משם המשתמש שלכם.',
 'password-login-forbidden' => 'השימוש בשם המשתמש והסיסמה האלה נאסר.',
-'mailmypassword' => 'ש×\9c×\97×\95 ×\9c×\99 ×¡×\99ס×\9e×\94 ×\97×\93שה',
+'mailmypassword' => '×\90×\99פ×\95ס ×¡×\99ס×\9eה',
 'passwordremindertitle' => 'סיסמה זמנית חדשה מ{{grammar:תחילית|{{SITENAME}}}}',
 'passwordremindertext' => 'מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש סיסמה
 חדשה לכניסה לחשבון ב{{GRAMMAR:תחילית|{{SITENAME}}}} ($4). נוצרה סיסמה זמנית למשתמש "$2",
@@ -949,8 +950,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'איפוס סיסמה',
-'passwordreset-text-one' => '×\9e×\9c×\90×\95 ×\98×\95פס ×\96×\94 ×\9b×\93×\99 ×\9c×\90פס ×\90ת ×\94ס×\99ס×\9e×\94.',
-'passwordreset-text-many' => '{{PLURAL:$1||×\9e×\9c×\90×\95 ×\90×\97×\93 ×\9e×\94ש×\93×\95ת ×\94×\91×\90×\99×\9d ×\9b×\93×\99 ×\9c×\90פס ×\90ת ×\94ס×\99ס×\9e×\94.}}',
+'passwordreset-text-one' => '×\9e×\9c×\90×\95 ×\98×\95פס ×\96×\94 ×\9b×\93×\99 ×\9cק×\91×\9c ×¡×\99ס×\9e×\94 ×\96×\9e× ×\99ת ×\91×\93×\95×\90\9c.',
+'passwordreset-text-many' => '{{PLURAL:$1||×\9e×\9c×\90×\95 ×\90×\97×\93 ×\9e×\94ש×\93×\95ת ×\94×\91×\90×\99×\9d ×\9b×\93×\99 ×\9cק×\91×\9c ×¡×\99ס×\9e×\94 ×\96×\9e× ×\99ת ×\91×\93×\95×\90\9c.}}',
 'passwordreset-legend' => 'איפוס סיסמה',
 'passwordreset-disabled' => 'איפוסי סיסמה בוטלו באתר ויקי זה.',
 'passwordreset-emaildisabled' => 'שירותי הדוא"ל בוטלו באתר ויקי זה.',
@@ -1501,7 +1502,6 @@ $1",
 'preferences' => 'העדפות',
 'mypreferences' => 'העדפות',
 'prefs-edits' => 'מספר עריכות:',
-'prefsnologin' => 'לא נכנסת לחשבון',
 'prefsnologintext2' => 'אנא $1 כדי לשנות העדפות משתמש.',
 'changepassword' => 'שינוי סיסמה',
 'prefs-skin' => 'עיצוב',
@@ -1804,6 +1804,9 @@ $1",
 'recentchanges-label-minor' => 'זוהי עריכה משנית',
 'recentchanges-label-bot' => 'עריכה זו בוצעה על ידי בוט',
 'recentchanges-label-unpatrolled' => 'עריכה זו טרם נבדקה',
+'recentchanges-label-plusminus' => 'מספר הבתים שבו השתנה גודל הדף',
+'recentchanges-legend-newpage' => '(ראו גם [[Special:NewPages|רשימת דפים חדשים]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "להלן {{PLURAL:$1|השינוי האחרון|'''$1''' השינויים האחרונים}} {{PLURAL:$2|ביום האחרון|ביומיים האחרונים|ב־$2 הימים האחרונים}}, עד $5, $4:",
 'rcnotefrom' => 'להלן <b>$1</b> השינויים האחרונים שבוצעו החל מתאריך <b>$2</b>:',
 'rclistfrom' => 'הצגת שינויים חדשים החל מ־$1',
@@ -2332,7 +2335,7 @@ $1',
 'notargettitle' => 'אין דף מטרה',
 'notargettext' => 'לא ציינתם דף מטרה או משתמש לגביו תבוצע פעולה זו.',
 'nopagetitle' => 'אין דף מטרה כזה',
-'nopagetext' => 'דף המטרה שציינתם אינו קיים.',
+'nopagetext' => 'דף המטרה שציינת אינו קיים.',
 'pager-newer-n' => '{{PLURAL:$1|הבאה|$1 הבאות}}',
 'pager-older-n' => '{{PLURAL:$1|הקודמת|$1 הקודמות}}',
 'suppress' => 'הסתרה',
@@ -2743,7 +2746,7 @@ $1',
 
 # Contributions
 'contributions' => 'תרומות {{GENDER:$1|המשתמש|המשתמשת}}',
-'contributions-title' => 'תרומות של המשתמש $1',
+'contributions-title' => 'תרומות של ה{{GENDER:$1|משתמש|משתמשת}} $1',
 'mycontris' => 'תרומות',
 'contribsub2' => 'עבור {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'לא נמצאו שינויים המתאימים לקריטריונים אלו.',
@@ -2969,7 +2972,7 @@ $1',
 במקרים אלו, תצטרכו להעביר או לשלב את הדפים באופן ידני, אם תרצו.',
 'movearticle' => 'העברת דף:',
 'moveuserpage-warning' => "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
-'movenologin' => 'לא נכנסתם לחשבון',
+'movenologin' => 'לא נכנסת לחשבון',
 'movenologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.',
 'movenotallowed' => 'אינכם מורשים להעביר דפים.',
 'movenotallowedfile' => 'אינכם מורשים להעביר קבצים.',
@@ -3153,13 +3156,13 @@ $2',
 'javascripttest-qunit-heading' => 'מערך בדיקות QUnit ל־JavaScript של מדיה־ויקי',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => '×\93×£ ×\94×\9eשת×\9eש ×©×\9c×\9b×\9d',
+'tooltip-pt-userpage' => '×\93×£ ×\94×\9eשת×\9eש ×©×\9c×\9a',
 'tooltip-pt-anonuserpage' => 'דף המשתמש של משתמש אנונימי זה',
-'tooltip-pt-mytalk' => '×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9b×\9d',
+'tooltip-pt-mytalk' => '×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9a',
 'tooltip-pt-anontalk' => 'שיחה על תרומות המשתמש האנונימי',
-'tooltip-pt-preferences' => '×\94×\94×¢×\93פ×\95ת ×©×\9c×\9b×\9d',
+'tooltip-pt-preferences' => '×\94×\94×¢×\93פ×\95ת ×©×\9c×\9a',
 'tooltip-pt-watchlist' => 'רשימת הדפים שאתם עוקבים אחרי השינויים בהם',
-'tooltip-pt-mycontris' => 'רש×\99×\9eת ×\94תר×\95×\9e×\95ת ×©×\9c×\9b×\9d',
+'tooltip-pt-mycontris' => 'רש×\99×\9eת ×\94תר×\95×\9e×\95ת ×©×\9c×\9a',
 'tooltip-pt-login' => 'מומלץ להירשם, אך אין חובה לעשות כן',
 'tooltip-pt-anonlogin' => 'מומלץ להירשם, אך אין חובה לעשות כן',
 'tooltip-pt-logout' => 'יציאה מהחשבון',
@@ -3208,7 +3211,7 @@ $2',
 'tooltip-ca-nstab-help' => 'צפייה בדף העזרה',
 'tooltip-ca-nstab-category' => 'צפייה בדף הקטגוריה',
 'tooltip-minoredit' => 'סימון עריכה זו כמשנית',
-'tooltip-save' => 'שמירת השינויים שביצעתם',
+'tooltip-save' => 'שמירת השינויים שביצעת',
 'tooltip-preview' => 'תצוגה מקדימה, אנא השתמשו באפשרות זו לפני השמירה!',
 'tooltip-diff' => 'צפייה בשינויים שערכתם בטקסט',
 'tooltip-compareselectedversions' => 'צפייה בהשוואת שתי גרסאות של דף זה',
@@ -3861,7 +3864,7 @@ $1',
 
 # Email address confirmation
 'confirmemail' => 'אימות כתובת דוא"ל',
-'confirmemail_noemail' => '×\90×\99×\9f ×\9c×\9b×\9d ×\9bת×\95×\91ת ×\93×\95×\90\9c ×ª×§×¤×\94 ×\94×\9e×\95×\92×\93רת ×\91[[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] ×©×\9c×\9b×\9d.',
+'confirmemail_noemail' => '×\90×\99×\9f ×\9c×\9a ×\9bת×\95×\91ת ×\93×\95×\90\9c ×ª×§×¤×\94 ×\94×\9e×\95×\92×\93רת ×\91[[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] ×©×\9c×\9a.',
 'confirmemail_text' => 'אתר זה דורש שתאמתו את כתובת הדוא"ל שלכם לפני שתשתמשו בשירותי הדוא"ל. לחצו על הכפתור למטה כדי לשלוח דוא"ל עם קוד אימות לכתובת הדוא"ל שהזנתם. טענו את הקישור בדפדפן שלכם כדי לאשר שכתובת הדוא"ל תקפה.',
 'confirmemail_pending' => 'קוד אימות דוא"ל כבר נשלח אליכם; אם יצרתם את החשבון לאחרונה, ייתכן שתרצו לחכות מספר דקות עד שיגיע לפני שתנסו לבקש קוד חדש.',
 'confirmemail_send' => 'לשלוח קוד אימות',
@@ -3873,9 +3876,9 @@ $1',
 תוכנת שליחת הדוא"ל החזירה את ההודעה הבאה: $1',
 'confirmemail_invalid' => 'קוד האימות שגוי. ייתכן שפג תוקפו.',
 'confirmemail_needlogin' => 'עליכם לבצע $1 כדי לאמת את כתובת הדוא"ל שלכם.',
-'confirmemail_success' => '×\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9b×\9d אושרה.
\9bעת ×\91×\90פשר×\95ת×\9b×\9d [[Special:UserLogin|×\9c×\94×\99×\9bנס ×\9c×\97ש×\91×\95×\9f ×©×\9c×\9b×\9d]] וליהנות מהאתר.',
-'confirmemail_loggedin' => '×\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9b×\9d אושרה כעת.',
+'confirmemail_success' => '×\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9a אושרה.
\9bעת ×\91×\90פשר×\95ת×\9a [[Special:UserLogin|×\9c×\94×\99×\9bנס ×\9c×\97ש×\91×\95×\9f ×©×\9c×\9a]] וליהנות מהאתר.',
+'confirmemail_loggedin' => '×\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9a אושרה כעת.',
 'confirmemail_error' => 'שגיאה בשמירת קוד האימות.',
 'confirmemail_subject' => 'קוד אימות דוא"ל מ{{grammar:תחילית|{{SITENAME}}}}',
 'confirmemail_body' => 'מישהו, כנראה אתם (מכתובת ה־IP הזו: $1),
@@ -4193,9 +4196,9 @@ $5
 'compare-rev1' => 'גרסה 1',
 'compare-rev2' => 'גרסה 2',
 'compare-submit' => 'השוואה',
-'compare-invalid-title' => 'שם הדף שציינתם אינו תקין.',
-'compare-title-not-exists' => 'הדף שציינתם אינו קיים.',
-'compare-revision-not-exists' => 'הגרסה שציינתם אינה קיימת.',
+'compare-invalid-title' => 'שם הדף שציינת אינו תקין.',
+'compare-title-not-exists' => 'הדף שציינת אינו קיים.',
+'compare-revision-not-exists' => 'הגרסה שציינת אינה קיימת.',
 
 # Database error messages
 'dberr-header' => 'בעיה בוויקי',
@@ -4353,4 +4356,21 @@ $5
 'limitreport-expansiondepth' => 'עומק הפריסה הגבוה ביותר',
 'limitreport-expensivefunctioncount' => 'מספר פונקציות המפענח שגוזלות משאבים',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'פריסת תבניות',
+'expand_templates_intro' => 'הדף המיוחד הזה מקבל כמות מסוימת של טקסט ופורס את כל התבניות שבתוכו באופן רקורסיבי.
+הוא גם פורס פונקציות מפענח כגון
+<code><nowiki>{{</nowiki>#תנאי:...}}</code>, ומשתנים כגון
+<code><nowiki>{{</nowiki>יום נוכחי}}</code>.
+למעשה, הוא פורס פחות או יותר כל דבר בסוגריים מסולסלים כפולים.',
+'expand_templates_title' => 'כותרת ההקשר לפענוח, בשביל משתנים כגון {{FULLPAGENAME}} וכדומה:',
+'expand_templates_input' => 'טקסט הקלט:',
+'expand_templates_output' => 'תוצאה',
+'expand_templates_xml_output' => 'פלט XML',
+'expand_templates_ok' => 'אישור',
+'expand_templates_remove_comments' => 'הסרת הערות',
+'expand_templates_remove_nowiki' => 'הסרת תגי <nowiki> בתוצאה',
+'expand_templates_generate_xml' => 'הצגת עץ הפענוח של XML',
+'expand_templates_preview' => 'תצוגה מקדימה',
+
 );
index 9acbedc..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( 'फ़ाइल_प्रति_खोज', 'फाइल_प्रति_खोज', 'संचिका_प्रति_खोज' ),
@@ -462,8 +461,6 @@ $1',
 'ok' => 'ठीक है',
 'retrievedfrom' => '"$1" से लिया गया',
 'youhavenewmessages' => 'आपके लिए $1 हैं। ($2)',
-'newmessageslink' => 'नए सन्देश',
-'newmessagesdifflink' => 'पिछला बदलाव',
 'youhavenewmessagesfromusers' => 'आपके लिये {{PLURAL:$3|एक अन्य सदस्य|$3 अन्य सदस्यों}} के $1 हैं। ($2)',
 'youhavenewmessagesmanyusers' => 'आपके लिये $1 हैं। ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|एक नया सन्देश|नये सन्देश}}',
@@ -1331,7 +1328,6 @@ $1",
 'preferences' => 'मेरी वरीयताएँ',
 'mypreferences' => 'पसंद',
 'prefs-edits' => 'संपादन संख्या:',
-'prefsnologin' => 'लॉग इन नहीं किया है',
 'changepassword' => 'कूटशब्द बदलें',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
@@ -1632,6 +1628,7 @@ HTML टैग की जाँच करें।',
 'recentchanges-label-minor' => 'यह एक छोटा सम्पादन है',
 'recentchanges-label-bot' => 'यह संपादन एक बॉट द्वारा किया गया था',
 'recentchanges-label-unpatrolled' => 'यह संपादन अभी जाँचा नहीं गया है',
+'recentchanges-legend-newpage' => '$1 - नया पन्ना',
 'rcnote' => "$5, $4 के पहले के '''$2''' {{PLURAL:$2|दिन|दिनों}} में  {{PLURAL:$1|हुआ '''$1''' बदलाव निम्न है| हुए '''$1''' बदलाव निम्न हैं}}।",
 'rcnotefrom' => "नीचे '''$2''' के बाद से ('''$1''' तक) हुए बदलाव दर्शाए गये हैं।",
 'rclistfrom' => '$1 से नये बदलाव दिखाएँ',
@@ -4094,4 +4091,20 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|शताब्दी}}',
 'duration-millennia' => '$1 {{PLURAL:$1|सहस्राब्दी}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'साँचा विस्तार',
+'expand_templates_intro' => 'यह विशेष पृष्ठ पाठ इनपुट लेता है और सभी साँचों को विस्तृत करता है।
+यह <code><nowiki>{{</nowiki>#language:…}}</code> जैसे पार्सर फंक्शनों और
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code> जैसे वेरियेबलों को भी विस्तृत करता है।
+यह दोहरे कोष्ठकों में दिया लगभग सब कुछ विस्तृत करता है।',
+'expand_templates_title' => 'कन्टेक्स्ट शीर्षक, जैसे {{FULLPAGENAME}} आदि के लिए:',
+'expand_templates_input' => 'इनपुट पाठ:',
+'expand_templates_output' => 'परिणाम',
+'expand_templates_xml_output' => 'XML आउटपुट',
+'expand_templates_ok' => 'ओके',
+'expand_templates_remove_comments' => 'टिप्पणी हटायें',
+'expand_templates_remove_nowiki' => 'परिणाम में <nowiki> टैग हटाएँ',
+'expand_templates_generate_xml' => 'XML का पार्स (parse) वृक्ष दर्शायें',
+'expand_templates_preview' => 'झलक',
+
 );
index 39719d2..00f5cfc 100644 (file)
@@ -308,8 +308,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '"$1" se lawa gais hae',
 'youhavenewmessages' => 'Aapke pass hai $1 ($2).',
-'newmessageslink' => 'nawaa khabar',
-'newmessagesdifflink' => 'pahile waala badlao',
 'youhavenewmessagesfromusers' => 'Aap ke lage {{PLURAL:$3|duusra sadasya|$3 sadasya}} ke lage se $1 hae ($2).',
 'youhavenewmessagesmanyusers' => 'Aap ke lage dher sadasya se $1 hae ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ek nawaa sandes|nawaa sandes}}',
@@ -1169,7 +1167,6 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
 'preferences' => 'Pasand',
 'mypreferences' => 'Pasand',
 'prefs-edits' => 'Badlao ke number:',
-'prefsnologin' => 'Aap abhi logged in nai hai',
 'changepassword' => 'Pasword ke badlo',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Jhalak',
@@ -1464,6 +1461,7 @@ Iske $1 {{PLURAL:$1|character|characters}} se kamti rahe ke chaahi.',
 'recentchanges-label-minor' => 'Ii ek chhota badlao hae',
 'recentchanges-label-bot' => 'Ii badlao ke ek bot karis hae',
 'recentchanges-label-unpatrolled' => 'Ii badlao pe abhi pahraa nai dewa gais hae.',
+'recentchanges-legend-newpage' => '$1 - nawaa panna',
 'rcnote' => "Niche {{PLURAL:$1|hai '''1''' badlao|aakhri hai '''$1''' badlao}} pahile {{PLURAL:$2|din|'''$2''' din}}, $5, $4 talak.",
 'rcnotefrom' => "Niche '''$2''' se badlao hai ('''$1''' tak )",
 'rclistfrom' => '$1 se suruu kar ke nawaa badlao dekhao',
index 7cefd04..2b35ef2 100644 (file)
@@ -277,8 +277,6 @@ Lantawa ang [[Special:Version|panid sang mga bersiyon]].',
 'ok' => 'Sige',
 'retrievedfrom' => 'Ginkuha halin sa "$1"',
 'youhavenewmessages' => 'Ikaw may $1 ($2).',
-'newmessageslink' => 'mga bag-ong mensahe',
-'newmessagesdifflink' => 'nagligad nga ginbag-o',
 'youhavenewmessagesfromusers' => 'May yara ka sang $1 halin sa {{PLURAL:$3|lain nga manuggamit|$3 mga manuggamit}} ($2).',
 'youhavenewmessagesmanyusers' => 'May yara ka sang $1 halin sa madamo nga manuggamit ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|isa ka bag-o nga mensahe|bag-o nga mga mensahe}}',
@@ -1094,7 +1092,6 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
 'preferences' => 'Mga Ginabasehan',
 'mypreferences' => 'Mga Ginabasehan',
 'prefs-edits' => 'Numero sang mga gin-ilisan:',
-'prefsnologin' => 'Wala naka-sulod',
 'changepassword' => 'Ilisan ang pasword',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Ipakita subong',
@@ -1931,4 +1928,7 @@ Ang iban ay pagataguon sang default.
 'revdelete-unrestricted' => 'ginkakas nga pagbawal sa mga administrador',
 'rightsnone' => '(wala)',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Ipakita subong',
+
 );
index 535dbc7..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' ),
@@ -590,8 +588,6 @@ $1',
 'ok' => 'U redu',
 'retrievedfrom' => 'Dobavljeno iz "$1"',
 'youhavenewmessages' => 'Imate $1 ($2).',
-'newmessageslink' => 'nove poruke',
-'newmessagesdifflink' => 'zadnja promjena na stranici za razgovor',
 'youhavenewmessagesfromusers' => 'Imate $1 {{PLURAL:$3||od $3 suradnika|od $3 suradnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od više suradnika ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|$1 nove poruke|$1 novih poruka}}',
@@ -1410,7 +1406,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'preferences' => 'Postavke',
 'mypreferences' => 'Moje postavke',
 'prefs-edits' => 'Broj uređivanja:',
-'prefsnologin' => 'Niste prijavljeni',
 'changepassword' => 'Promjena lozinke',
 'prefs-skin' => 'Izgled',
 'skin-preview' => 'Pregled',
@@ -1695,6 +1690,7 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'recentchanges-label-minor' => 'Ovo je manja izmjena',
 'recentchanges-label-bot' => 'Ovu izmjenu napravio je bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije pregledana',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnote' => "{{PLURAL:$1|Slijedi zadnja '''$1''' promjena|Slijede zadnje '''$1''' promjene|Slijedi zadnjih '''$1''' promjena}} u {{PLURAL:$2|zadnjem '''$2''' danu|zadnja '''$2''' dana|zadnjih '''$2''' dana}}, od $5, $4.",
 'rcnotefrom' => 'Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).',
 'rclistfrom' => 'Prikaži nove promjene počevši od $1',
@@ -4126,4 +4122,20 @@ Inače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar biti će
 # Image rotation
 'rotate-comment' => 'Sliku je $1 zaokrenuo za {{PLURAL:$1|stupanj|stupnja|stupnjeva}} u smjeru kazaljke na satu.',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Prikaz sadržaja predložaka',
+'expand_templates_intro' => 'Ova posebna stranica omogućuje unos wikiteksta i prikazuje njegov rezultat,
+uključujući i (rekurzivno, tj. potpuno) sve uključene predloške u wikitekstu.
+Prikazuje i rezultate funkcija kao <nowiki>{{</nowiki>#language:...}} i varijabli
+kao <nowiki>{{</nowiki>CURRENTDAY}}. Funkcionira pozivanjem parsera same MedijeWiki.',
+'expand_templates_title' => 'Kontekstni naslov stranice, za {{FULLPAGENAME}} i sl.:',
+'expand_templates_input' => 'Ulazni tekst:',
+'expand_templates_output' => 'Rezultat',
+'expand_templates_xml_output' => 'XML kod',
+'expand_templates_ok' => 'Prikaži',
+'expand_templates_remove_comments' => 'Ukloni komentare',
+'expand_templates_remove_nowiki' => 'Ukloni <nowiki> tagove u rezultatima.',
+'expand_templates_generate_xml' => 'Prikaži XML stablo',
+'expand_templates_preview' => 'Vidi kako će izgledati',
+
 );
index dce4671..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' ),
@@ -428,12 +426,10 @@ $1',
 'ok' => 'W porjadku',
 'retrievedfrom' => 'Z "$1"',
 'youhavenewmessages' => 'Maš $1 ($2).',
-'newmessageslink' => 'nowe powěsće',
-'newmessagesdifflink' => 'poslednja změna',
 'youhavenewmessagesfromusers' => 'Maš $1 wot {{PLURAL:$3|druheho wužiwarja|$3 wužiwarjow|$3 wužiwarjow|$3 wužiwarjow}} ($2).',
 'youhavenewmessagesmanyusers' => 'Maš $1 wot wjele wužiwarjow ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|nowu powěsć|nowej powěsći|nowe powěsće}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednja změna|poslednjej změnje|poslednje změny|poslednje změny}}',
+'newmessageslinkplural' => '{{PLURAL:$1|nowu powěsć|999=nowej powěsći|999=nowe powěsći}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednja změna|999=poslednjej změnje|999=poslednje změny}}',
 'youhavenewmessagesmulti' => 'Maš nowe powěsće: $1',
 'editsection' => 'wobdźěłać',
 'editold' => 'wobdźěłać',
@@ -485,6 +481,9 @@ Płaćiwe specialne strony hodźa so pod [[Special:SpecialPages|lisćinu special
 # General errors
 'error' => 'Zmylk',
 'databaseerror' => 'Zmylk w datowej bance',
+'databaseerror-text' => 'Zmylk w datowej bance je wustupił.
+To móže na programowy zmylk w softwarje pokazać.',
+'databaseerror-textcl' => 'Zmylk w datowej bance je wustupił.',
 'databaseerror-query' => 'Wotprašenje: $1',
 'databaseerror-function' => 'Funkcija: $1',
 'databaseerror-error' => 'Zmylk: $1',
@@ -521,6 +520,7 @@ Móže być, zo je hižo wot někoho druheho wušmórnjena.',
 'cannotdelete-title' => 'Strona "$1" njehodźi so zhašeć',
 'delete-hook-aborted' => 'Zhašenje přez hoku přetorhnjene.
 Njeje žane wujasnjenje podała.',
+'no-null-revision' => 'Nowa nulowa wersija za stronu "$1" njeda so wutworić',
 'badtitle' => 'Wopačny titul',
 'badtitletext' => 'Požadane mjeno strony běše njepłaćiwy, prózdny abo njekorektny titul z mjezyrěčneho abo interwikijoweho wotkaza. Snano wobsahuje jedne znamješko abo wjacore znamješka, kotrež w titulach dowolene njejsu.',
 'perfcached' => 'Slědowace daty pochadźeja z pufrowaka a njejsu snano cyle aktualne. Maksimalnje {{PLURAL:$1|jedyn wuslědk|$1 wuslědkaj|$1 wuslědki|$1 wuslědkow}} w pufrowaku k dispoziciji {{PLURAL:$1|steji|stejitej|steja|steji}}.',
@@ -688,6 +688,8 @@ Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutwori
 'login-abort-generic' => 'Twoje přizjewjenje njebě wuspěšne - přetorhnjene',
 'loginlanguagelabel' => 'Rěč: $1',
 'suspicious-userlogout' => 'Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało',
+'createacct-another-realname-tip' => '* Woprawdźite mjeno je opcionalne.
+Jeli jo podaš, budźe so to wužiwać, zo by přinoški přirjadowało.',
 
 # Email sending
 'php-mail-error-unknown' => 'Njeznaty zmylk w PHP-funkciji mail()',
@@ -758,6 +760,16 @@ Nachwilne hesło: $2',
 
 # Special:ResetTokens
 'resettokens' => 'Tokeny wróćo stajić',
+'resettokens-text' => 'Móžeš tokeny wróćo stajić, kotrež přistup na wěste priwatne daty dowoleja, kotrež su z twojim kontom zwjazane.
+
+Ty dyrbjał zo činić, jeli sy je zmylnje z někim dźělił abo jelic twoje konto je so napadało.',
+'resettokens-no-tokens' => 'Tokeny za wróćostajenje njejsu.',
+'resettokens-legend' => 'Tokeny wróćo stajić',
+'resettokens-tokens' => 'Tokeny:',
+'resettokens-token-label' => '$1 (aktualna hódnota: $2)',
+'resettokens-watchlist-token' => 'Token za webkanal (Atom/RSS) [[Special:Watchlist|změnow na stronach w twojich wobkedźbowankach]]',
+'resettokens-done' => 'Tokeny wróćostajene.',
+'resettokens-resetbutton' => 'Wubrane tokeny wróćo stajić',
 
 # Edit page toolbar
 'bold_sample' => 'Tučny tekst',
@@ -1070,8 +1082,9 @@ Móžeš sej tutón rozdźěl wobhladać; podrobnosće namakaš w [{{fullurl:{{#
 Druzy administratorojo na {{GRAMMAR:lokatiw|{{SITENAME}}}} móža hišće na schowany tekst přistup měć a jón z pomocu samsneho interfejsa wobnowić, chibazo tež přidatne prawa su wobmjezowane.",
 'revdelete-confirm' => 'Prošu potwjerdź, zo chceš to činić, zo rozumiš konsekwency a zo činiš to po [[{{MediaWiki:Policy-url}}|prawidłach]].',
 'revdelete-suppress-text' => "Potłóčenje dyrbjało so '''jenož''' za slědowace pady wužiwać:
+* Potencielnje křiwdźace informacije
 * Njepřihódne wosobinske informacije
-*: ''bydlenske adresy a telefonowe čisła, čisła socialneho zawěsćenja atd.''",
+*: ''Bydlenske adresy a telefonowe čisła, čisła socialneho zawěsćenja atd.''",
 'revdelete-legend' => 'Wobmjezowanja za widźomnosć nastajić',
 'revdelete-hide-text' => 'Tekst wersije',
 'revdelete-hide-image' => 'Wobsah wobraza schować',
@@ -1236,7 +1249,7 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'preferences' => 'Nastajenja',
 'mypreferences' => 'Nastajenja',
 'prefs-edits' => 'Ličba změnow:',
-'prefsnologin' => 'Njepřizjewjeny',
+'prefsnologintext2' => 'Dyrbiš so $1, zo by wužiwarske nastajenja postajił.',
 'changepassword' => 'Hesło změnić',
 'prefs-skin' => 'Drasta',
 'skin-preview' => 'Přehlad',
@@ -1273,6 +1286,9 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'recentchangesdays-max' => '(Maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
 'recentchangescount' => 'Ličba stronow, kotraž ma so po standardźe pokazać:',
 'prefs-help-recentchangescount' => 'To zapřijima aktualne změny, stawizny stronow a protokole.',
+'prefs-help-watchlist-token2' => 'To je tajny kluč k webkanalej twojich wobkedźbowankow.
+Něchtó, kotryž jón znaje, móže twoje wobkedźbowanki čitać, njedźěl jón tohodla.
+[[Special:ResetTokens|Klikń tu, jeli dybiš jón wróćo stajić]].',
 'savedprefs' => 'Nastajenja buchu składowane.',
 'timezonelegend' => 'Časowe pasmo:',
 'localtime' => 'Lokalny čas:',
@@ -1321,7 +1337,9 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'gender-unknown' => 'Nochcu ničo wo tym podać',
 'gender-male' => 'Wón wobdźěłuje wikistrony',
 'gender-female' => 'Wona wobdźěłuje wikistrony',
-'prefs-help-gender' => 'Opcionalny: wužiwa so za po splahu specifiske narěčenje přez softwaru. Tuta informacija budźe zjawna.',
+'prefs-help-gender' => 'Tute podaće je opcionalne:
+Softwara wužiwa jeho hódnotu, zo by će z pomocu wotpowědneho gramatikaliskeho roda narěčała a druhich na tebje pokazała.
+Tuta informacija budźe zjawna.',
 'email' => 'E-mejl',
 'prefs-help-realname' => '* Woprawdźite mjeno (opcionalne): jeli so rozsudźiš to zapodać, budźe to so wužiwać, zo by tebi woprawnjenje za twoje dźěło dało.',
 'prefs-help-email' => 'E-mejlowa adresa je opcionalna, ale zmóžnja ći nowe hesło emejlować, jeli sy swoje hesło zabył.',
@@ -1342,6 +1360,7 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'prefs-displayrc' => 'Zwobraznjenske opcije',
 'prefs-displaysearchoptions' => 'Zwobraznjenske opcije',
 'prefs-displaywatchlist' => 'Zwobraznjenske opcije',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Rozdźěle',
 'prefs-help-prefershttps' => 'Tute nastajenje so po twojim přichodnym přizjewjenju wuskutkuje.',
 
@@ -1415,7 +1434,7 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'right-reupload-shared' => 'Dataje w hromadźe wužiwanej repozitoriju lokalnje přepisać',
 'right-upload_by_url' => 'Dataju z URL-adresy nahrać',
 'right-purge' => 'Pufrowak sydła za stronu bjez wobkrućenskeje strony wuprózdnić',
-'right-autoconfirmed' => 'Połzaškitane strony wobdźěłać',
+'right-autoconfirmed' => 'Žane wobmjezowanje přez IP-bazowane limity',
 'right-bot' => 'Ma so jako awtomatiski proces wobjednać',
 'right-nominornewtalk' => 'Snadne změny k diskusijnym stronam zwobraznjenje nowych powěsćow wuwołać njedać',
 'right-apihighlimits' => 'Wyše limity wi API-naprašowanjach wužiwać',
@@ -1436,7 +1455,7 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'right-ipblock-exempt' => 'Blokowanja IP, awtomatiske blokowanje a blokowanja wobwodow wobeńć',
 'right-proxyunbannable' => 'Automatiske blokowanja proksyjow wobeńć',
 'right-unblockself' => 'Swójske blokowanje zběhnyć',
-'right-protect' => 'Škitowe schodźenki změnić a škitanu stronu wobdźěłać',
+'right-protect' => 'Škitowe schodźenki změnić a z kaskadami škitane strony wobdźěłać',
 'right-editprotected' => 'Strony wobdźěłać, kotrež su přez "{{int:protect-level-sysop}}" škitane',
 'right-editsemiprotected' => 'Strony wobdźěłać, kotrež su přez "{{int:protect-level-autoconfirmed}}" škitane',
 'right-editinterface' => 'Wužiwarski powjerch wobdźěłać',
@@ -1529,6 +1548,9 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'recentchanges-label-minor' => 'To je snadna změna',
 'recentchanges-label-bot' => 'Tuta změna bu přez roboćik přewjedźena',
 'recentchanges-label-unpatrolled' => 'Tuta změnu hišće njebu přepruwowana',
+'recentchanges-label-plusminus' => 'Změnjena wulkosć strony (w bajtach)',
+'recentchanges-legend-newpage' => '(hlej tež [[Special:NewPages|lisćinu nowych stronow]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Deleka {{PLURAL:$1|je '''1''' změna|stej poslednjej '''$1''' změnje|su poslednje '''$1''' změny|je poslednich '''$1''' změnow}} za {{PLURAL:$2|posledni dźeń|poslednjej '''$2''' dnjej|poslednje '''$2''' dny|poslednich '''$2''' dnjow}}, staw wot $4, $5.",
 'rcnotefrom' => "Deleka so změny wot '''$2''' pokazuja (hač k '''$1''').",
 'rclistfrom' => 'Nowe změny pokazać, započinajo z $1',
@@ -1924,6 +1946,7 @@ Snano chceš wopisanje na jeje [$2 stronje datajoweho wopisanja] wobdźěłać.'
 'randomincategory' => 'Připadna strona w kategoriji',
 'randomincategory-invalidcategory' => '"$1" płaćiwe kategorijowe mjeno njeje.',
 'randomincategory-nopages' => 'W kategoriji [[:Category:$1|$1]] žane strony njejsu.',
+'randomincategory-selectcategory' => 'Připadna strona z kategorija: $1 $2',
 'randomincategory-selectcategory-submit' => 'Wotesłać',
 
 # Random redirect
@@ -1956,6 +1979,8 @@ Snano chceš wopisanje na jeje [$2 stronje datajoweho wopisanja] wobdźěłać.'
 'pageswithprop-text' => 'Tuta strona nalistuje strony, kotrež wěstu kajkosć strony wužiwaja.',
 'pageswithprop-prop' => 'Mjeno kajkosće:',
 'pageswithprop-submit' => 'Wotpósłać',
+'pageswithprop-prophidden-long' => 'Hódnota kajkosće dołheho teksta schowana ($1)',
+'pageswithprop-prophidden-binary' => 'binarna kajkostna hódnota schowana ($1)',
 
 'doubleredirects' => 'Dwójne daleposrědkowanja',
 'doubleredirectstext' => 'Tuta strona nalistuje strony, kotrež k druhim daleposrědkowanskim stronam dale posrědkuja.
@@ -2012,6 +2037,7 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
 'mostrevisions' => 'Nastawki z najwjace wersijemi',
 'prefixindex' => 'Wšě strony z prefiksom',
 'prefixindex-namespace' => 'Wšě strony z prefiksom (mjenowy rum $1)',
+'prefixindex-strip' => 'Prefiks w lisćinje wotrězać',
 'shortpages' => 'Krótke nastawki',
 'longpages' => 'Dołhe nastawki',
 'deadendpages' => 'Nastawki bjez wotkazow',
@@ -2245,7 +2271,7 @@ Staj so z wobdźěłarjom do zwiska:
 e-mejl: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Njebudu žane druhe zdźělenki w padźe dalšich změnow, chibazo wopytaš tutu stronu.
+Njebudu žane druhe zdźělenki w padźe dalšeje aktiwity, chibazo wopytaš tutu stronu. mjeztym zo sy přizjewjeny.
 Móžeš tež zdźělenske marki za wšě swoje wobkedźbowane strony we swojich wobkedźbowankach wróćo stajić.
 
 Twój přećelny zdźělenski system {{GRAMMAR:genitiw|{{SITENAME}}}}
@@ -2311,7 +2337,7 @@ Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wo
 Poslednja změna bě wot wužiwarja [[User:$3|$3]] ([[User talk:$3|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Zjeće wobdźěłanja bě: \"''\$1''\".",
 'revertpage' => 'Změny [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) cofnjene a nawróćene k poslednjej wersiji wužiwarja [[User:$1|$1]]',
-'revertpage-nouser' => 'Staji změny wot (wužiwarske mjeno wotstronjene) na předchadnu wersiju wot [[User:$1|$1]] wróćo',
+'revertpage-nouser' => 'Změny su so wot schowaneho wužiwarja anulowali a předchadna wersija wužiwarja {{GENDER:$1|[[User:$1|$1]]}} je so wobnowiła',
 'rollback-success' => 'Změny wužiwarja $1 cofnjene; wróćo na wersiju wužiwarja $2.',
 
 # Edit tokens
@@ -2896,6 +2922,7 @@ $2',
 'tooltip-undo' => 'anuluje tutu změnu a wočinja wobdźěłowanski formular w přehladowym modusu. Zmóžnja přičinu w zjeću přidać.',
 'tooltip-preferences-save' => 'Nastajenja składować',
 'tooltip-summary' => 'Zapodaj krótke zjeće',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/* CSS w tutej dataji budźe so na wšěch stronow wuskutkować. */',
@@ -3545,7 +3572,7 @@ Tute wobkrućenski kod spadnje $4.',
 'confirmemail_body_set' => 'Něchtó, najskerje ty, wot IP-adresy $1,
 je e-mejlowu adresu konta "$2" na {{GRAMMAR:lokatiw|{{SITENAME}}}} na tutu adresu stajił.
 
-Zo by wobkrućił, zo tute konto ći woprawdźe słuša a zo bychu so e-mejlowe funkcije na {{GRAMMAR:lokatiw|{{SITENAME}}}} znowa aktiwizowali, wočiń tutón wotkaz w swojim wobhladowaku:
+Zo by wobkrućił, zo tute konto ći woprawdźe słuša a zo bychu so e-mejlowe funkcije na {{GRAMMAR:lokatiw|{{SITENAME}}}} aktiwizowali, wočiń tutón wotkaz w swojim wobhladowaku:
 
 $3
 
@@ -3753,7 +3780,7 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'tags' => 'Płaćiwe taflički změnow',
 'tag-filter' => 'Filter [[Special:Tags|tafličkow]]:',
 'tag-filter-submit' => 'Filter',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Značka|Značce|Znački}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Značka|Značce|Znački}}]]: $2)',
 'tags-title' => 'Taflički',
 'tags-intro' => 'Tuta strona nalistuje taflički, z kotrymiž softwara móže změnu markěrować a jich woznam.',
 'tags-tag' => 'Mjeno taflički',
@@ -3920,6 +3947,7 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'rotate-comment' => 'Wobraz wo $1 {{PLURAL:$1|stopjeń|stopnjej|stopnje|stopnjow}} w směrje časnika wjerćany',
 
 # Limit report
+'limitreport-title' => 'Profilowanske daty parsera:',
 'limitreport-cputime' => 'Časowe wužiwanje CPU',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekundźe|sekundy|sekundow}}',
 'limitreport-walltime' => 'Wužiwanje woprawdźiteho časa',
@@ -3931,5 +3959,19 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'limitreport-templateargumentsize' => 'Wulkosć předłohoweho argumenta',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
 'limitreport-expansiondepth' => 'Najwyša ekspansijowa hłubokosć',
+'limitreport-expensivefunctioncount' => 'Ličba naročnych parserowych funkcijow',
+
+# Special:ExpandTemplates
+'expandtemplates' => 'Předłohi ekspandować',
+'expand_templates_intro' => 'Na tutej specialnej stronje móžeš tekst zapodać a wšitke do njeje zapřijate předłohi so rekursiwnje ekspanduja. Tež funkcije parsera kaž <code><nowiki>{{</nowiki>#language:...}}</code> a wariable kaž <code><nowiki>{{</nowiki>CURRENTDAY}}</code> so wuhódnočeja – faktisce wšo, štož steji mjezy dwójnymaj wopušatymaj spinkomaj.',
+'expand_templates_title' => 'Kontekstowy titul, za {{FULLPAGENAME}} atd.:',
+'expand_templates_input' => 'Tekst zapodać:',
+'expand_templates_output' => 'Wuslědk',
+'expand_templates_xml_output' => 'Wudaće XML',
+'expand_templates_ok' => 'W porjadku',
+'expand_templates_remove_comments' => 'Komentary wotstronić',
+'expand_templates_remove_nowiki' => 'Taflički <nowiki> we wuslědku potłóčić',
+'expand_templates_generate_xml' => 'Analyzowy štom XML pokazać',
+'expand_templates_preview' => 'Přehlad',
 
 );
index 0360773..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' ),
@@ -396,8 +396,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Rekipere depi « $1 »',
 'youhavenewmessages' => 'Ou genyen $1 ($2).',
-'newmessageslink' => 'nouvo mesaj',
-'newmessagesdifflink' => 'dènye chanjman',
 'youhavenewmessagesmulti' => 'Ou genyen nouvo mesaj sou $1.',
 'editsection' => 'modifye',
 'editold' => 'modifye',
index eeff46e..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' ),
@@ -588,8 +587,6 @@ További információkat a [[Special:Version|verzióinformációs lapon]] talál
 'ok' => 'OK',
 'retrievedfrom' => 'A lap eredeti címe: „$1”',
 'youhavenewmessages' => '$1 a vitalapodon! ($2 külön is megtekintheted.)',
-'newmessageslink' => 'új üzenet vár',
-'newmessagesdifflink' => 'az utolsó üzenetet',
 'youhavenewmessagesfromusers' => '$2 kaptál {{PLURAL:$3|egy|$3}} szerkesztőtől $1!',
 'youhavenewmessagesmanyusers' => '$2 kaptál több szerkesztőtől $1.',
 'newmessageslinkplural' => '{{PLURAL:$1||}}a vitalapodon',
@@ -1405,7 +1402,6 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'preferences' => 'Beállítások',
 'mypreferences' => 'Beállítások',
 'prefs-edits' => 'Szerkesztéseid száma:',
-'prefsnologin' => 'Nem jelentkeztél be',
 'changepassword' => 'Jelszócsere',
 'prefs-skin' => 'Felület',
 'skin-preview' => 'előnézet',
@@ -1686,6 +1682,7 @@ A műveletet nem lehet visszavonni.',
 'recentchanges-label-minor' => 'Ez egy apró szerkesztés',
 'recentchanges-label-bot' => 'Ezt a szerkesztést egy bot hajtotta végre',
 'recentchanges-label-unpatrolled' => 'Ezt a szerkesztést még nem ellenőrizték',
+'recentchanges-legend-newpage' => '$1 – új lap',
 'rcnote' => "Alább az utolsó '''{{PLURAL:$2|egy|$2}}''' nap utolsó '''{{PLURAL:$1|egy|$1}}''' változtatása látható. A lap generálásának időpontja $4, $5.",
 'rcnotefrom' => 'Alább a <b>$2</b> óta történt változtatások láthatóak (<b>$1</b> db).',
 'rclistfrom' => '$1 után történt változtatások megtekintése',
@@ -4068,4 +4065,18 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 # Image rotation
 'rotate-comment' => 'Elforgattam a képet $1 fokkal, az óramutató járásával megegyező irányban',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Sablonok kibontása',
+'expand_templates_intro' => 'Ez a speciális lap a bevitt szövegekben megkeresi a sablonokat és rekurzívan kibontja őket.
+Kibontja az elemző függvényeket (pl. <nowiki>{{</nowiki>#language:...}}), és a változókat (pl. <nowiki>{{</nowiki>CURRENTDAY}}) is – mindent, ami a kettős kapcsos zárójelek között van.',
+'expand_templates_title' => 'Szöveg címe, például {{FULLPAGENAME}} sablonhoz:',
+'expand_templates_input' => 'Vizsgálandó szöveg',
+'expand_templates_output' => 'Eredmény',
+'expand_templates_xml_output' => 'XML kimenet',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Megjegyzések eltávolítása',
+'expand_templates_remove_nowiki' => '<nowiki> tagek mellőzése az eredményben',
+'expand_templates_generate_xml' => 'XML elemzési fa mutatása',
+'expand_templates_preview' => 'Előnézet',
+
 );
index cd294b5..47f7404 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Ahmed-Najib-Biabani-Ibrahimkhel
  * @author Chaojoker
+ * @author M hamlet
  * @author Nemo bis
  * @author Pandukht
  * @author Reedy
@@ -205,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( 'Արտահանելէջերը' ),
@@ -284,16 +283,16 @@ $messages = array(
 'tog-extendwatchlist' => 'Ընդարձակել հսկացանկը՝ ցույց տալով բոլոր փոփոխությունները, այլ ոչ միայն վերջինները',
 'tog-usenewrc' => 'Խմբավորել փոփոխությունները Վերջին փոփոխություններում և հսկացանկում (պահանջում է JavaScript)',
 'tog-numberheadings' => 'Ինքնաթվագրել վերնագրերը',
-'tog-showtoolbar' => 'Ցույց տալ խմբագրումների գործիքների վահանակը (JavaScript)',
-'tog-editondblclick' => 'Խմբագրել էջերը կրկնակի մատնահարմամբ (JavaScript)',
+'tog-showtoolbar' => 'Ցույց տալ խմբագրումների գործիքների վահանակը',
+'tog-editondblclick' => 'Խմբագրել էջերը կրկնակի մատնահարմամբ',
 'tog-editsection' => 'Ցույց տալ [խմբագրել] հղումը ամեն բաժնի համար',
-'tog-editsectiononrightclick' => 'Խմբագրել բաժինները վերնագրի աջ մատնահարմամբ (JavaScript)',
+'tog-editsectiononrightclick' => 'Խմբագրել բաժինները վերնագրի աջ մատնահարմամբ',
 'tog-showtoc' => 'Ցույց տալ բովանդակությունը (3  կամ ավել վերնագրեր ունեցող էջերի համար)',
 'tog-rememberpassword' => 'Հիշել իմ մուտքագրված տվյալներն այս համակարգչում ($1 {{PLURAL:$1|օրից}} ոչ ավել ժամկետով)',
 'tog-watchcreations' => 'Ավելացնել իմ ստեղծած էջերը և բեռնած նիշքերը հսկացանկին',
 'tog-watchdefault' => 'Ավելացնել իմ խմբագրած էջերը և նիշքերը հսկացանկին',
 'tog-watchmoves' => 'Ավելացնել իմ վերնավանած էջերը և նիշքերը հսկացանկին',
-'tog-watchdeletion' => 'Ավելացնել իմ ջնջած էջերը հսկացանկին',
+'tog-watchdeletion' => 'Ավելացնել իմ ջնջած էջերը և նիշքերը իմ հսկացանկին',
 'tog-minordefault' => 'Նշել խմբագրումները որպես չնչին ըստ լռության',
 'tog-previewontop' => 'Ցույց տալ նախադիտումը խմբագրման դաշտից առաջ',
 'tog-previewonfirst' => 'Նախադիտել մինչև առաջին խմբագրությունը',
@@ -418,6 +417,7 @@ $messages = array(
 'newwindow' => '(բացվելու է նոր պատուհանի մեջ)',
 'cancel' => 'Բեկանել',
 'moredotdotdot' => 'Ավելին...',
+'morenotlisted' => 'Այս ցանկը լիարժեք չէ։',
 'mypage' => 'Իմ էջը',
 'mytalk' => 'Քննարկում',
 'anontalk' => 'Քննարկում այս IP-հասցեի համար',
@@ -473,6 +473,7 @@ $messages = array(
 'create-this-page' => 'Ստեղծել այս էջը',
 'delete' => 'Ջնջել',
 'deletethispage' => 'Ջնջել այս էջը',
+'undeletethispage' => 'Վերականգնել այս էջը',
 'undelete_short' => 'Վերականգնել {{PLURAL:$1|մեկ խմբագրում|$1 խմբագրում}}',
 'viewdeleted_short' => 'Դիտել {{PLURAL:$1|ջնջված խմբագրում}}',
 'protect' => 'Պաշտպանել',
@@ -544,14 +545,13 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Ստացված է «$1» էջից',
 'youhavenewmessages' => 'Դուք ունեք $1 ($2)։',
-'newmessageslink' => 'Նոր հաղորդագրություն',
-'newmessagesdifflink' => 'վերջին փոփոխությունը',
-'newmessageslinkplural' => '{{PLURAL:$1|նոր հաղորդագրություն|նոր հաղորդագրություններ}}',
-'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|փոփոխում|փոփոխումներ}}',
+'youhavenewmessagesmanyusers' => 'Դուք ունեք $1 մի քանի օգտագործողից ($2)։',
+'newmessageslinkplural' => '{{PLURAL:$1|նոր հաղորդագրություն|999=նոր հաղորդագրություններ}}',
+'newmessagesdifflinkplural' => 'վերջին {{PLURAL:$1|փոփոխում|999=փոփոխումներ}}',
 'youhavenewmessagesmulti' => 'Դուք նոր ուղերձներ եք ստացել $1 վրա',
 'editsection' => 'խմբագրել',
 'editold' => 'խմբագրել',
-'viewsourceold' => 'Õ¤Õ«Õ¿Õ¥Õ¬ Õ¾Õ«Ö\84Õ«Õ¯Õ¸Õ¤Õ¥Ö\80Õ¨',
+'viewsourceold' => 'դիտել վիքիկոդը',
 'editlink' => 'խմբագրել',
 'viewsourcelink' => 'դիտել ելատեքստը',
 'editsectionhint' => 'Խմբագրել բաժինը. $1',
@@ -600,6 +600,12 @@ $1',
 # General errors
 'error' => 'Սխալ',
 'databaseerror' => 'Տվյալների բազայի սխալ',
+'databaseerror-text' => 'Տվյալների բազայի հարցման սխալ է առաջացել։
+Սա կարող է ծրագրային բագի պատճառով լինել։',
+'databaseerror-textcl' => 'Տվյալների բազայի հարցման սխալ է առաջացել։',
+'databaseerror-query' => 'Հարցում՝ $1',
+'databaseerror-function' => 'Ֆունկցիա՝ $1',
+'databaseerror-error' => 'Սխալ՝ $1',
 'laggedslavemode' => 'Զգուշացում. էջը կարող է չպարունակել վերջին փոփոխությունները։',
 'readonly' => 'Տվյալների բազան կողպված է',
 'enterlockreason' => 'Նշեք կողպման պատճառը և մոտավոր ժամկետը',
@@ -639,7 +645,7 @@ $1',
 'wrong_wfQuery_params' => 'Անթույլատրելի պարամետրեր wfQuery() ֆունկցիայի համար<br />
 Ֆունկցիա՝ $1<br />
 Հայցում՝ $2',
-'viewsource' => 'Ô´Õ«Õ¿Õ¥Õ¬ Õ¾Õ«Ö\84Õ«Õ¯Õ¸Õ¤Õ¥Ö\80Õ¨',
+'viewsource' => 'Դիտել վիքիկոդը',
 'viewsource-title' => 'Դիտել $1 էջի աղբյուրը',
 'actionthrottled' => 'Գործողությունը արգելափակվեց',
 'actionthrottledtext' => 'Որպես հակա-սպամային միջոց, այս գործողության չափից շատ կատարումը կարճ ժամանակահատվածի ընթացքում սահմանափակված է։ Խնդրում ենք փորձել կրկին մի քանի րոպե անց։',
@@ -656,11 +662,14 @@ $2',
 'namespaceprotected' => 'Դուք չունեք «$1» անվանատարածքի էջերի խմբագրման իրավունք։',
 'customcssprotected' => 'Դուք չեք կարող խմբագրել այս CSS էջը, քանի որ այն պարունակում է այլ մասնակցի անձնական նախընտրանքներ։',
 'customjsprotected' => 'Դուք չեք կարող խմբագրել այս ՋավաՍկրիպտ էջը, քանի որ այն պարունակում է այլ մասնակցի անձնական նախընտրանքներ։',
+'mycustomcssprotected' => 'Դուք բավարար իրավունքներ չունեք այս CSS էջը խմբագրելու համար։',
+'mycustomjsprotected' => 'Դուք բավարար իրավունքներ չունեք այս JavaScript էջը խմբագրելու համար։',
+'mypreferencesprotected' => 'Դուք բավարար իրավունքներ չունեք Ձեր նախընտրությունները խմբագրելու համար։',
 'ns-specialprotected' => '«{{ns:special}}» անվանատարածքի էջերը չեն կարող խմբագրվել։',
 'titleprotected' => "Այս անվանմամբ էջի ստեղծումը արգելվել է [[User:$1|$1]] մասնակցի կողմից։
 Տրված պատճառն է՝ ''$2''։",
 'exception-nologin' => 'Չեք մտել համակարգ',
-'exception-nologin-text' => 'Ô±ÕµÕ½ Õ§Õ»Õ¨ Õ¤Õ«Õ¿Õ¥Õ¬Õ¸Ö\82 Õ¯Õ¡Õ´ Õ£Õ¸Ö\80Õ®Õ¸Õ²Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶ Õ¯Õ¡Õ¿Õ¡Ö\80Õ¥Õ¬Õ¸Ö\82 Õ°Õ¡Õ´Õ¡Ö\80 Õ¤Õ¸Ö\82Ö\84 ÕºÕ¥Õ¿Ö\84 Õ§ Õ´Õ¸Ö\82Õ¿Ö\84 Õ£Õ¸Ö\80Õ®Õ¥Ö\84 Õ¡ÕµÕ½ Õ¾Õ«Ö\84Õ«։',
+'exception-nologin-text' => 'Ô½Õ¶Õ¤Ö\80Õ¸Ö\82Õ´ Õ¥Õ¶Ö\84, [[Special:Userlogin|Õ´Õ¸Ö\82Õ¿Ö\84 Õ£Õ¸Ö\80Õ®Õ¥Ö\84]]Õ\9d Õ¡ÕµÕ½ Õ§Õ»Õ¨ Õ¤Õ«Õ¿Õ¥Õ¬Õ¸Ö\82 Õ¯Õ¡Õ´ Õ£Õ¸Ö\80Õ®Õ¸Õ²Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶Õ¨ Õ¯Õ¡Õ¿Õ¡Ö\80Õ¥Õ¬Õ¸Ö\82 Õ°Õ¡Õ´Õ¡Ö\80։',
 
 # Virus scanner
 'virus-badscanner' => "Սխալ կարգավորւմ։ Անծանոթ վիրուսների զննիչ. ''$1''",
@@ -677,6 +686,7 @@ $2',
 'yourname' => 'Մասնակցի անուն՝',
 'userlogin-yourname' => 'Մասնակցային անուն',
 'userlogin-yourname-ph' => 'Մուտքագրեք ձեր մասնակցային անունը',
+'createacct-another-username-ph' => 'Մուտքագրեք մասնակցի անունը',
 'yourpassword' => 'Գաղտնաբառ՝',
 'userlogin-yourpassword' => 'Գաղտնաբառ',
 'userlogin-yourpassword-ph' => 'Մուտքագրեք ձեր գաղտնաբառը',
@@ -706,11 +716,13 @@ $2',
 'gotaccount' => "Դուք արդեն գրանցվա՞ծ եք։ '''$1'''։",
 'gotaccountlink' => 'Մուտք գործեք համակարգ',
 'userlogin-resetlink' => 'Մոռացե՞լ եք Ձեր հաշվի տվյալները։',
-'userlogin-resetpassword-link' => 'Զրոյացնել ձեր գաղտնաբառը։',
+'userlogin-resetpassword-link' => 'Մոռացե՞լ եք գաղտնաբառը',
+'userlogin-createanother' => 'Ստեղծել այլ հաշիվ',
 'createacct-join' => 'Մուտքագրեք Ձեր տեղեկությունները ստորև',
 'createacct-emailrequired' => 'Էլ–փոստի հասցե',
 'createacct-emailoptional' => 'Էլ–փոստի հասցե (ոչ պարտադիր)',
 'createacct-email-ph' => 'Մուտքագրեք ձեր էլ–փոստի հասցեն',
+'createacct-another-email-ph' => 'Մուտքագրեք էլ․ փոստի հասցեն',
 'createaccountmail' => 'Օգտագործել ժամանակավոր պատահական գաղտնաբառ, որը կուղարկվի ձեր էլ–փոստի հասցեին։',
 'createacct-realname' => 'Իրական անուն (պարտադիր չէ)',
 'createaccountreason' => 'Պատճառը՝',
@@ -1217,11 +1229,12 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'preferences' => 'Նախընտրություններ',
 'mypreferences' => 'Նախընտրություններ',
 'prefs-edits' => 'Խմբագրումների քանակը.',
-'prefsnologin' => 'Դուք չեք մտել համակարգ',
+'prefsnologintext2' => 'Նախընտրությունները փոփոխելու համար անհրաժեշտ է $1։',
 'changepassword' => 'Փոխել գաղտնաբառը',
 'prefs-skin' => 'Տեսք',
 'skin-preview' => 'նախադիտել',
 'datedefault' => 'Առանց նախընտրության',
+'prefs-beta' => 'Փորձնական հնարավորություններ',
 'prefs-datetime' => 'Օր ու ժամ',
 'prefs-personal' => 'Անձնական',
 'prefs-rc' => 'Վերջին փոփոխություններ',
@@ -1402,6 +1415,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'recentchanges-label-minor' => 'Սա չնչին խմբագրում է',
 'recentchanges-label-bot' => 'Այս խմբագրումը կատարվել է բոտի կողմից',
 'recentchanges-label-unpatrolled' => 'Այս խմբագրումը դեռ չի պարեկվել',
+'recentchanges-legend-newpage' => '$1 - նոր էջ',
 'rcnote' => 'Ստորև բերված են վերջին <strong>$1</strong> փոփոխությունները վերջին <strong>$2</strong> {{PLURAL:$2|օրվա|օրվա}} ընթացքում՝ $5, $4-ի դրությամբ։',
 'rcnotefrom' => "Ստորև բերված են փոփոխությունները սկսած՝ '''$2''' (մինչև՝ '''$1''')։",
 'rclistfrom' => 'Ցույց տալ նոր փոփոխությունները սկսած $1',
@@ -2691,6 +2705,7 @@ $3
 
 # Special:Version
 'version' => 'ՄեդիաՎիքի տարբերակը',
+'version-poweredby-credits' => "Այս վիքին աշխատում է '''[https://www.mediawiki.org/ MediaWiki]'''֊ով, copyright © 2001-$1 $2։",
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Փնտրել կրկնօրինակ պատկերներ',
@@ -2706,7 +2721,7 @@ $3
 # Special:SpecialPages
 'specialpages' => 'Սպասարկող էջեր',
 'specialpages-note' => '* Հասարակ հատուկ էջեր։
-* <strong class="mw-specialpagerestricted">Սահմանափակված հատուկ էջեր։</strong>',
+* <span class="mw-specialpagerestricted">Սահմանափակված հատուկ էջեր։</span>',
 'specialpages-group-maintenance' => 'Տեխնիկական սպասարկման տեղեկատուներ',
 'specialpages-group-other' => 'Այլ հատուկ էջեր',
 'specialpages-group-login' => 'Մտնել / Գրանցվել',
@@ -2791,4 +2806,7 @@ $3
 'duration-centuries' => '$1 {{PLURAL:$1|դար}}',
 'duration-millennia' => '$1 {{PLURAL:$1|հազարամյակ}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Կաղապարների ընդարձակում',
+
 );
index c364eb6..265e46f 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' ),
@@ -419,12 +419,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Obtenite de "$1"',
 'youhavenewmessages' => 'Tu ha $1 ($2).',
-'newmessageslink' => 'nove messages',
-'newmessagesdifflink' => 'ultime modification',
 'youhavenewmessagesfromusers' => 'Tu ha $1 de {{PLURAL:$3|un altere usator|$3 usatores}} ($2).',
 'youhavenewmessagesmanyusers' => 'Tu ha $1 de multe usatores ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un nove message|$1 nove messages}}',
-'newmessagesdifflinkplural' => 'ultime {{PLURAL:$1|modification|modificationes}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un nove message|999=nove messages}}',
+'newmessagesdifflinkplural' => 'ultime {{PLURAL:$1|modification|999=modificationes}}',
 'youhavenewmessagesmulti' => 'Tu ha nove messages in $1',
 'editsection' => 'modificar',
 'editold' => 'modificar',
@@ -990,7 +988,7 @@ Tu pote retornar e modificar un pagina existente, o [[Special:UserLogin|aperir u
 'permissionserrors' => 'Error de permission',
 'permissionserrorstext' => 'Tu non ha le permission de facer isto, pro le sequente {{PLURAL:$1|motivo|motivos}}:',
 'permissionserrorstext-withaction' => 'Tu non ha le permission de $2, pro le sequente {{PLURAL:$1|motivo|motivos}}:',
-'recreate-moveddeleted-warn' => "'''Attention: Tu es sur le puncto de recrear un pagina que esseva anteriormente delite.'''
+'recreate-moveddeleted-warn' => "'''Attention: Tu es sur le puncto de recrear un pagina que ha essite delite anteriormente.'''
 
 Tu deberea considerar si il es appropriate continuar a modificar iste pagina.
 Ecce le registro de deletiones e de renominationes pro iste pagina:",
@@ -1309,7 +1307,6 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 'preferences' => 'Preferentias',
 'mypreferences' => 'Preferentias',
 'prefs-edits' => 'Numero de modificationes:',
-'prefsnologin' => 'Tu non ha aperite un session',
 'prefsnologintext2' => 'Es necessari $1 pro definir le preferentias de usator.',
 'changepassword' => 'Cambiar contrasigno',
 'prefs-skin' => 'Apparentia',
@@ -1610,6 +1607,8 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'recentchanges-label-minor' => 'Isto es un modification minor',
 'recentchanges-label-bot' => 'Iste modification ha essite effectuate per un robot',
 'recentchanges-label-unpatrolled' => 'Iste modification non ha ancora essite patruliate',
+'recentchanges-label-plusminus' => 'Le dimension del pagina ha cambiate de iste numero de bytes',
+'recentchanges-legend-newpage' => '(vide etiam le [[Special:NewPages|lista de nove paginas]])',
 'rcnote' => "Infra es {{PLURAL:$1|'''1''' modification|le ultime '''$1''' modificationes}} in le ultime {{PLURAL:$2|die|'''$2''' dies}}, actualisate le $4 a $5.",
 'rcnotefrom' => 'infra es le modificationes a partir de <b>$2</b> (usque a <b>$1</b>).',
 'rclistfrom' => 'Monstrar nove modificationes a partir de $1',
@@ -4112,4 +4111,21 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 'limitreport-expansiondepth' => 'Maxime profunditate de expansion',
 'limitreport-expensivefunctioncount' => 'Numero de functiones analysator costose',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expander patronos',
+'expand_templates_intro' => 'Iste pagina special prende texto e expande recursivemente tote le patronos in illo.
+Illo expande etiam le functiones del analysator syntactic como
+<code><nowiki>{{</nowiki>#language:…}}</code>, e variabiles como
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+De facto, illo expande quasi toto inter accolladas duple.',
+'expand_templates_title' => 'Titulo de contexto, pro {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Texto de entrata:',
+'expand_templates_output' => 'Resultato',
+'expand_templates_xml_output' => 'Output XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Eliminar commentos',
+'expand_templates_remove_nowiki' => 'Supprimer le etiquettas <nowiki> in le resultato',
+'expand_templates_generate_xml' => 'Monstrar arbore syntactic XML',
+'expand_templates_preview' => 'Previsualisation',
+
 );
index 063d09e..aa6074f 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' ),
@@ -618,8 +622,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Diperoleh dari "$1"',
 'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
-'newmessageslink' => 'pesan baru',
-'newmessagesdifflink' => 'perubahan terakhir',
 'youhavenewmessagesfromusers' => 'Anda memiliki $1 dari {{PLURAL:$3|$3 pengguna lain}} ($2).',
 'youhavenewmessagesmanyusers' => 'Anda memiliki $1 dari pengguna lain ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|pesan baru}}',
@@ -1463,7 +1465,6 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
 'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Belum masuk log',
 'changepassword' => 'Ganti kata sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratayang',
@@ -1767,6 +1768,7 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'recentchanges-label-minor' => 'Ini adalah suntingan kecil',
 'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
 'recentchanges-label-unpatrolled' => 'Suntingan ini belum terpatroli',
+'recentchanges-legend-newpage' => '$1 - halaman baru',
 'rcnote' => "Berikut adalah {{PLURAL:$1|'''1'''|'''$1'''}} perubahan terbaru dalam {{PLURAL:$2|'''1''' hari|'''$2''' hari}} terakhir, sampai $4 pukul $5.",
 'rcnotefrom' => 'Di bawah ini adalah perubahan sejak <strong>$2</strong> (ditampilkan sampai <strong>$1</strong> perubahan).',
 'rclistfrom' => 'Perlihatkan perubahan terbaru sejak $1',
@@ -2683,7 +2685,6 @@ Lihat [[Special:Log/delete|log penghapusan]] untuk data penghapusan dan pengemba
 $1',
 'undelete-show-file-confirm' => 'Apakah Anda yakin ingin melihat revisi yang telah dihapus dari berkas "<nowiki>$1</nowiki>" per $3, $2?',
 'undelete-show-file-submit' => 'Ya',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Ruang nama:',
@@ -3318,7 +3319,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',
@@ -4350,4 +4351,17 @@ Jika tidak, Anda dapat menggunakan formulir mudah di bawah ini. Komentar Anda ak
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bita|bita}}',
 'limitreport-expensivefunctioncount' => 'Perhitungan fungsi parser yang mahal',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Pengembangan templat',
+'expand_templates_intro' => 'Halaman istimewa ini mengambil teks dan mengembangkan semua templat di dalamnya secara rekursif. Halaman ini juga menerjemahkan semua fungsi parser seperti <code><nowiki>{{</nowiki>#language:…}}</code> dan variabel seperti <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. Bahkan bisa dibilang mengembangkan segala sesuatu yang berada di antara dua tanda kurung.',
+'expand_templates_title' => 'Judul konteks, untuk {{FULLPAGENAME}} dan lain-lain:',
+'expand_templates_input' => 'Teks masukan:',
+'expand_templates_output' => 'Hasil',
+'expand_templates_xml_output' => 'Hasil XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Buang komentar',
+'expand_templates_remove_nowiki' => 'Tidak menampilkan tag <nowiki> pada hasilnya',
+'expand_templates_generate_xml' => 'Tampilkan pohon parser XML',
+'expand_templates_preview' => 'Pratayang',
+
 );
index ced2e20..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,18 +392,16 @@ $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).',
-'newmessageslink' => 'nov missages',
-'newmessagesdifflink' => 'vider missages antiqui',
 'youhavenewmessagesmulti' => 'Vu have nov missages in $1',
 'editsection' => 'redacter',
 'editold' => 'redacter',
 '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?',
@@ -378,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',
@@ -390,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',
@@ -415,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:',
@@ -429,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',
@@ -465,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',
@@ -503,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.',
@@ -538,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}}:',
@@ -550,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',
@@ -566,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',
@@ -581,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',
@@ -609,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',
@@ -629,24 +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',
-'prefsnologin' => 'Vu ne ha intrat',
+'mypreferences' => 'Preferenties',
 'changepassword' => 'Modificar passa-parol',
 'skin-preview' => 'Prevision',
 'saveprefs' => 'Conservar',
@@ -738,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',
 
@@ -826,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
@@ -862,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',
@@ -942,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',
@@ -973,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',
@@ -1081,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):',
 
@@ -1101,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',
@@ -1170,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 */',
@@ -1250,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',
@@ -1260,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',
@@ -1287,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',
@@ -1360,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 bd009a8..626ea8d 100644 (file)
@@ -331,8 +331,6 @@ Lé [[Special:Version|ụdì ihü]].',
 'ok' => 'Ngwanu',
 'retrievedfrom' => "Wefụtàrà ya shí ''$1''",
 'youhavenewmessages' => 'I nwèrè $1 ($2).',
-'newmessageslink' => 'Ozi ohúrù',
-'newmessagesdifflink' => 'mkpete azu ihe gbanwere',
 'youhavenewmessagesmulti' => 'Inwere eziohu na $1',
 'editsection' => 'mèzi',
 'editold' => 'mèzi',
@@ -746,7 +744,6 @@ Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé
 # Preferences page
 'preferences' => 'Otu ha dosẹrẹ ihe',
 'mypreferences' => 'Otú m shị na dose ihem',
-'prefsnologin' => 'I bátà bò',
 'changepassword' => 'Gbanwe okwu éjị à gáfe',
 'prefs-skin' => 'Akpụkpọ',
 'skin-preview' => 'Lètú',
@@ -865,6 +862,7 @@ Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé
 'recentchanges-legend' => 'Nràlụ màkà Ihe gbanwere ubwá',
 'recentchanges-feed-description' => 'Chóputà ihe ógẹ ǹsò na wiki ímé órírí nke á.',
 'recentchanges-label-minor' => 'Ihe bu orü ntakírí',
+'recentchanges-legend-newpage' => '$1 - ihü ohúrù',
 'rcnote' => "Na àlà {{PLURAL:$1|bu gbanwere '''1'''|bu gbanwere mgbèdè nke '''$1'''}} na mgbèdè {{PLURAL:$2|chi|chi '''$2'''}}, na mgbe $5, $4.",
 'rclistfrom' => 'Zìrí ihe gbanwere ọhúrù shí $1',
 'rcshowhideminor' => 'orü ntákírí $1',
@@ -1738,4 +1736,7 @@ Nke ozor gí zonari na áká onwe ha.
 # Search suggestions
 'searchsuggest-search' => 'Chọwa',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Ngwanu',
+
 );
index 10100b8..68acfcc 100644 (file)
@@ -309,8 +309,6 @@ Kitaen ti [[Special:Version|panid ti bersion]].',
 'ok' => 'Sige',
 'retrievedfrom' => 'Naala manipud idiay "$1"',
 'youhavenewmessages' => 'Addaanka ti $1 ($2).',
-'newmessageslink' => 'dagiti baro a mensahe',
-'newmessagesdifflink' => 'naudi a sinukatan',
 'youhavenewmessagesfromusers' => 'Adda $1 manipud {{PLURAL:$3|ti sabali nga agar-aramat|kadagiti $3 a sabsabali nga agar-aramat}} ($2).',
 'youhavenewmessagesmanyusers' => 'Adda $1 manipud kadagiti adu nga agar-aramat ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|baro a mensahem|dagiti baro a mensahem}}',
@@ -1196,7 +1194,6 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'preferences' => 'Kakaykayatan',
 'mypreferences' => 'Kakaykayatan',
 'prefs-edits' => 'Bilang dagiti inurnos:',
-'prefsnologin' => 'Saan a nakastrek',
 'changepassword' => 'Baliwan ti kontrasenias',
 'prefs-skin' => 'Kudil',
 'skin-preview' => 'Ipadas',
@@ -3954,4 +3951,21 @@ Nupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mai
 'limitreport-expansiondepth' => 'Kangatuan a panagpadakkel ti kauneg',
 'limitreport-expensivefunctioncount' => 'Bilang ti nangina nga annong ti parser',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Palawaen dagiti plantilia',
+'expand_templates_intro' => 'Daytoy nga espesial a panid ket agala ti testo ken palawaenna amin dagiti plantilia iti unegna a minaig iti daytoy.
+Palawaenna pay dagiti nasuportaran a parser a pamay-an a kas ti
+<code><nowiki>{{</nowiki>#language:…}}</code> ken dagiti nadumaduma a kita a kas ti
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. 
+Iti kinapudno, palawaenna amin dagiti adda ti doble a tukol.',
+'expand_templates_title' => 'Titulo ti kontesto, para iti {{FULLPAGENAME}} kdpy.:',
+'expand_templates_input' => 'Maikabil a testo:',
+'expand_templates_output' => 'Nagbanagan',
+'expand_templates_xml_output' => 'XML a maiparang',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Ikkaten dagiti komentario',
+'expand_templates_remove_nowiki' => 'Parmeken dagiti <nowiki> nga etiketa kadagiti nagbanagan',
+'expand_templates_generate_xml' => 'Iparang ti XML parse a kayo',
+'expand_templates_preview' => 'Pamadasan',
+
 );
index 282416e..378afdf 100644 (file)
@@ -213,7 +213,7 @@ $messages = array(
 'articlepage' => 'Йоазув тӀа бӀаргтасса',
 'talk' => 'Дувцам',
 'views' => 'БӀаргтассамаш',
-'toolbox' => 'Ð\93Ó\80орсаш',
+'toolbox' => 'Ð\93Ó\80ирсаш',
 'userpage' => 'Дакъалаьцачунна оагӀуве бӀаргтасса',
 'projectpage' => 'Хьахьоадайтама оагӀуве бӀаргтасса',
 'imagepage' => 'Паьла оагӀув тӀа бӀаргтасса',
@@ -264,8 +264,6 @@ $messages = array(
 'ok' => 'ХӀаа',
 'retrievedfrom' => '"$1" ГӀувам',
 'youhavenewmessages' => 'Оаш $1 ($2) дӀайийцад',
-'newmessageslink' => 'керда хоамаш',
-'newmessagesdifflink' => 'тӀехьара хувцамаш',
 'youhavenewmessagesmulti' => 'Оаш $1чу керда хоамаш дӀайийцад',
 'editsection' => 'хувца',
 'editold' => 'хувца',
@@ -464,7 +462,7 @@ $messages = array(
 'history-fieldset-title' => 'Искара бӀаргтасса',
 'history-show-deleted' => 'ДӀадаьккхараш мара',
 'histfirst' => 'къаьнараш',
-'histlast' => 'ха яннараш',
+'histlast' => 'кердараш',
 'historyempty' => '(даьсса)',
 
 # Revision feed
@@ -555,7 +553,6 @@ $messages = array(
 # Preferences page
 'preferences' => 'Оттамаш',
 'mypreferences' => 'Оттамаш',
-'prefsnologin' => 'Шо чудаьнна дац',
 'changepassword' => 'КъайладIоaгIа дIахувцар',
 'prefs-skin' => 'БIагала куц',
 'skin-preview' => 'Хьажа',
@@ -864,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а):',
 
@@ -1027,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 257c0bc..db812d1 100644 (file)
@@ -337,8 +337,6 @@ Videz [[Special:Version|versiono-pagino]].',
 'ok' => 'O.K.',
 'retrievedfrom' => 'Obtenita de "$1"',
 'youhavenewmessages' => 'Vu havas $1 ($2).',
-'newmessageslink' => 'nova mesaji',
-'newmessagesdifflink' => 'lasta chanjo',
 'youhavenewmessagesmulti' => 'Vu havas nova mesaji ye $1',
 'editsection' => 'redaktar',
 'editold' => 'redaktar',
@@ -691,7 +689,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 'preferences' => 'Preferaji',
 'mypreferences' => 'Preferaji',
 'prefs-edits' => 'Nombro di redaktaji:',
-'prefsnologin' => 'Vu ne eniris',
 'changepassword' => 'Chanjar pasovorto',
 'prefs-skin' => 'Pelo',
 'skin-preview' => 'Pre-videz',
@@ -810,6 +807,7 @@ Ol mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.',
 'recentchanges-label-newpage' => 'Ca redaktajo kreis nova pagino',
 'recentchanges-label-minor' => 'Ica es mikra redaktajo',
 'recentchanges-label-bot' => 'Ta chanjo facita da bot',
+'recentchanges-legend-newpage' => '$1 - nova pagino',
 'rcnote' => "Infre esas la lasta {{PLURAL:$1|'''1''' chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|dio|'''$2''' dii}} ye $5, $4.",
 'rcnotefrom' => "Infre esas la lasta chanji depos '''$2''' (montrita til '''$1''').",
 'rclistfrom' => 'Montrar nova chanji startante de $1',
@@ -1552,4 +1550,9 @@ Vu darfos adjuntar kauso en la rezumo.',
 'searchsuggest-search' => 'Serchez',
 'searchsuggest-containing' => 'quan kontenas...',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Rezulto',
+'expand_templates_ok' => 'O.K.',
+'expand_templates_preview' => 'Previdar',
+
 );
index 84e90f8..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' ),
@@ -507,8 +505,6 @@ Sjá [[Special:Version|útgáfusíðuna]].',
 'ok' => 'Í lagi',
 'retrievedfrom' => 'Sótt frá „$1“',
 'youhavenewmessages' => 'Þú hefur fengið $1 ($2).',
-'newmessageslink' => 'ný skilaboð',
-'newmessagesdifflink' => 'síðasta breyting',
 'youhavenewmessagesfromusers' => 'Þú hefur $1 frá {{PLURAL:$3|öðrum notanda|$3 notendum}} ($2)',
 'youhavenewmessagesmanyusers' => 'Þú hefur $1 frá mörgum notendum ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ein|}} ný skilaboð',
@@ -1356,7 +1352,6 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 'preferences' => 'Stillingar',
 'mypreferences' => 'Mínar stillingar',
 'prefs-edits' => 'Fjöldi breytinga:',
-'prefsnologin' => 'Ekki innskráður',
 'changepassword' => 'Breyta lykilorði',
 'prefs-skin' => 'Þema',
 'skin-preview' => 'Forskoða',
@@ -1652,6 +1647,7 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'recentchanges-label-minor' => 'Þetta er minniháttar breyting',
 'recentchanges-label-bot' => 'Þessi breytingar var gerð af vélmenni',
 'recentchanges-label-unpatrolled' => 'Þessi breyting hefur ekki verið yfirfarin',
+'recentchanges-legend-newpage' => '$1 - ný síða',
 'rcnote' => "Að neðan {{PLURAL:$1|er '''1''' breyting|eru síðustu '''$1''' breytingar}} síðast {{PLURAL:$2|liðinn dag|liðna '''$2''' daga}}, frá $5, $4.",
 'rcnotefrom' => "Að neðan eru breytingar síðan '''$2''' (allt að '''$1''' sýndar).",
 'rclistfrom' => 'Sýna breytingar frá og með $1',
@@ -3711,6 +3707,9 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.',
 'confirm-unwatch-button' => 'Í lagi',
 'confirm-unwatch-top' => 'Fjarlægja þessa síðu af vaktlistanum þínum?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '„$1”',
+
 # Multipage image navigation
 'imgmultipageprev' => '← fyrri síða',
 'imgmultipagenext' => 'næsta síða →',
@@ -4024,4 +4023,12 @@ Ef ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemd
 'limitreport-walltime' => 'Rauntímanotkun',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekúnda|sekúndur}}',
 
+# Special:ExpandTemplates
+'expand_templates_input' => 'Inntakstexti:',
+'expand_templates_output' => 'Útkoma',
+'expand_templates_xml_output' => 'XML-úttak',
+'expand_templates_ok' => 'Í lagi',
+'expand_templates_remove_comments' => 'Fjarlægja athugasemdir',
+'expand_templates_preview' => 'Forskoða',
+
 );
index 06ef669..cfb5db5 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' ),
@@ -564,12 +565,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Estratto da "$1"',
 'youhavenewmessages' => 'Hai $1 ($2).',
-'newmessageslink' => 'nuovi messaggi',
-'newmessagesdifflink' => 'ultima modifica',
 'youhavenewmessagesfromusers' => 'Hai $1 da {{PLURAL:$3|un altro utente|$3 utenti}} ($2).',
 'youhavenewmessagesmanyusers' => 'Hai $1 da molti utenti ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un nuovo messaggio|nuovi messaggi}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|ultima modifica|ultime modifiche}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un nuovo messaggio|999=nuovi messaggi}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ultima modifica|999=ultime modifiche}}',
 'youhavenewmessagesmulti' => 'Hai nuovi messaggi su $1',
 'editsection' => 'modifica',
 'editold' => 'modifica',
@@ -794,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' => 'Reimposta password',
 '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".
@@ -863,7 +862,7 @@ La password potrebbe essere stata già cambiata, oppure potrebbe essere stata ri
 # Special:PasswordReset
 'passwordreset' => 'Reimposta password',
 'passwordreset-text-one' => 'Compila questo modulo per reimpostare la tua password.',
-'passwordreset-text-many' => '{{PLURAL:$1|Compila uno dei campi per reimpostare la tua password.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Compila uno dei campi per ricevere una password temporanea tramite email.}}',
 'passwordreset-legend' => 'Reimposta password',
 'passwordreset-disabled' => 'La reimpostazione delle password è stata disabilitata su questa wiki',
 'passwordreset-emaildisabled' => 'Le funzionalità di posta elettronica sono state disabilitate su questa wiki.',
@@ -1397,7 +1396,6 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'preferences' => 'Preferenze',
 'mypreferences' => 'preferenze',
 'prefs-edits' => 'Modifiche effettuate:',
-'prefsnologin' => 'Accesso non effettuato',
 'prefsnologintext2' => "Si prega di $1 per impostare le preferenze dell'utente.",
 'changepassword' => 'Cambia password',
 'prefs-skin' => 'Aspetto grafico (skin)',
@@ -1696,6 +1694,9 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'recentchanges-label-minor' => 'Questa è una modifica minore',
 'recentchanges-label-bot' => 'Questa modifica è stata effettuata da un bot',
 'recentchanges-label-unpatrolled' => 'Questa modifica non è stata ancora verificata',
+'recentchanges-label-plusminus' => 'La dimensione della pagina è cambiata di questo numero di byte',
+'recentchanges-legend-newpage' => "(vedi anche [[Special:NewPages|l'elenco delle nuove pagine]])",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Di seguito {{PLURAL:$1|è elencata la modifica più recente apportata|sono elencate le '''$1''' modifiche più recenti apportate}} al sito {{PLURAL:$2|nelle ultime 24 ore|negli scorsi '''$2''' giorni}}; i dati sono aggiornati alle $5 del $4.",
 'rcnotefrom' => "Di seguito sono elencate le modifiche apportate a partire da '''$2''' (fino a '''$1''').",
 'rclistfrom' => 'Mostra le modifiche apportate a partire da $1',
@@ -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,
@@ -4141,4 +4142,21 @@ Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revi
 'limitreport-expansiondepth' => 'Massima profondità di espansione',
 'limitreport-expensivefunctioncount' => 'Numero funzioni parser dispendiose',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Espansione dei template',
+'expand_templates_intro' => 'Questa pagina speciale elabora un testo espandendo tutti i template presenti.
+Calcola inoltre il risultato delle funzioni supportate dal parser come
+<code><nowiki>{{</nowiki>#language:…}}</code> e delle variabili di sistema quali
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>,
+vale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.',
+'expand_templates_title' => 'Contesto (per {{FULLPAGENAME}} ecc.):',
+'expand_templates_input' => 'Testo da espandere:',
+'expand_templates_output' => 'Risultato',
+'expand_templates_xml_output' => 'Output in formato XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Ignora i commenti',
+'expand_templates_remove_nowiki' => 'Elimina il tag <nowiki> nel risultato',
+'expand_templates_generate_xml' => 'Mostra albero sintattico XML',
+'expand_templates_preview' => 'Anteprima',
+
 );
index ccb6d97..da30f99 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( '短いページ' ),
@@ -642,12 +643,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '「$1」から取得',
 'youhavenewmessages' => '$1があります ($2)。',
-'newmessageslink' => '新着メッセージ',
-'newmessagesdifflink' => '最新の差分',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|他の利用者|$3 人の利用者}}からの$1があります ($2)。',
 'youhavenewmessagesmanyusers' => '多数の利用者からの$1があります ($2)。',
 'newmessageslinkplural' => '{{PLURAL:$1|新着メッセージ}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|最新の差分|最新版までの差分}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|最新の差分|999=最新版までの差分}}',
 'youhavenewmessagesmulti' => '$1に新着メッセージがあります',
 'editsection' => '編集',
 'editold' => '編集',
@@ -865,9 +864,9 @@ $2',
 {{SITENAME}}では利用者のログインに Cookie を使用します。
 ご使用のブラウザーでは Cookie が無効になっています。
 Cookie を有効にしてから、新しい利用者名とパスワードでログインしてください。',
-'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
-Cookieを無効にしているようです。
-Cookieを有効にしてから、もう一度試してください。',
+'nocookieslogin' => '{{SITENAME}}ではログインに Cookie を使用します。
+Cookie を無効にしているようです。
+Cookie を有効にしてから、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
 Cookieを有効にしていることを確認して、このページを再読込してもう一度試してください。',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
@@ -888,7 +887,7 @@ Cookieを有効にしていることを確認して、このページを再読
 'passwordtooshort' => 'パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。',
 'password-name-match' => 'パスワードは利用者名とは異なる必要があります。',
 'password-login-forbidden' => 'この利用者名とパスワードの使用は禁止されています。',
-'mailmypassword' => '新しいパスワードをメールで送信',
+'mailmypassword' => 'パスワードを再設定',
 'passwordremindertitle' => '{{SITENAME}}の仮パスワード通知',
 'passwordremindertext' => '誰か (おそらくあなた) が IP アドレス $1 から{{SITENAME}} ($4) のログイン用パスワードの再発行を申請しました。
 利用者「$2」の仮パスワードが作成され「$3」に設定されました。
@@ -962,8 +961,8 @@ $1待ってから再度試してください。',
 
 # Special:PasswordReset
 'passwordreset' => 'パスワードの再設定',
-'passwordreset-text-one' => 'パスワードを再設定するにはこのフォームに記入してください。',
-'passwordreset-text-many' => '{{PLURAL:$1|パスワードを再設定するにはいずれかの欄に記入してください。}}',
+'passwordreset-text-one' => '仮パスワードをメールで受け取るにはこのフォームに記入してください。',
+'passwordreset-text-many' => '{{PLURAL:$1|仮パスワードをメールで受け取るにはいずれかの欄に記入してください。}}',
 'passwordreset-legend' => 'パスワードの再設定',
 'passwordreset-disabled' => 'パスワードの再設定は、このウィキでは無効になっています。',
 'passwordreset-emaildisabled' => 'メール機能は、このウィキでは無効化されています。',
@@ -1535,7 +1534,6 @@ $1",
 'preferences' => '個人設定',
 'mypreferences' => '個人設定',
 'prefs-edits' => '編集回数:',
-'prefsnologin' => 'ログインしていません',
 'prefsnologintext2' => '個人設定を変更するには$1してください。',
 'changepassword' => 'パスワードの変更',
 'prefs-skin' => '外装',
@@ -1842,6 +1840,9 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'recentchanges-label-minor' => 'これは細部の編集です',
 'recentchanges-label-bot' => 'この編集はボットによって行われました',
 'recentchanges-label-unpatrolled' => 'この編集はまだ巡回されていません',
+'recentchanges-label-plusminus' => 'ページ サイズの増減 (バイト単位)',
+'recentchanges-legend-newpage' => '([[Special:NewPages|新しいページ一覧]]も参照してください)',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "$4 $5 までの{{PLURAL:$2|'''$2'''日間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
 'rcnotefrom' => "以下は'''$2'''以降の更新です (最大 '''$1''' 件)。",
 'rclistfrom' => '$1以降の更新を表示する',
@@ -4503,4 +4504,20 @@ MediaWikiは、有用であることを期待して配布されていますが
 'limitreport-expansiondepth' => '展開の最大深さ',
 'limitreport-expensivefunctioncount' => '高負荷パーサー関数の数',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'テンプレートを展開',
+'expand_templates_intro' => 'この特別ページは、入力したテキストに含まれるすべてのテンプレートを再帰的に展開します。
+<code><nowiki>{{</nowiki>#language:…}}</code> のようなパーサー関数や、
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code> のような変数も展開します。
+つまり、二重中括弧で囲まれたものほぼすべてを展開します。',
+'expand_templates_title' => '{{FULLPAGENAME}} などで使用するページ名:',
+'expand_templates_input' => '展開するテキスト:',
+'expand_templates_output' => '展開結果',
+'expand_templates_xml_output' => 'XML 出力',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'コメントを除去',
+'expand_templates_remove_nowiki' => '結果に含まれる <nowiki> タグを表示しない',
+'expand_templates_generate_xml' => 'XML 構文解析ツリーを表示',
+'expand_templates_preview' => 'プレビュー',
+
 );
index 8e7a041..eb674e9 100644 (file)
@@ -270,8 +270,6 @@ Si [[Special:Version|voerjan piej]].',
 'ok' => 'OK',
 'retrievedfrom' => 'Richriiv frahn "$1"',
 'youhavenewmessages' => 'Yu gat $1 ($2).',
-'newmessageslink' => 'nyuu mechiz',
-'newmessagesdifflink' => 'laas chienj',
 'youhavenewmessagesmulti' => 'Yu gat nyuu mechiz pahn $1',
 'editsection' => 'edit',
 'editold' => 'edit',
index 818acc5..07f6c36 100644 (file)
@@ -315,8 +315,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Sumber artikel iki saka kaca situs web: "$1"',
 'youhavenewmessages' => 'Panjenengan kagungan $1 ($2).',
-'newmessageslink' => 'warta énggal',
-'newmessagesdifflink' => 'mirsani bédané saka révisi sadurungé',
 'youhavenewmessagesfromusers' => 'Sampéyan nduwé $1 saka  {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).',
 'youhavenewmessagesmanyusers' => 'Sampéyang nduwé $1 saka akèh panganggo ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|layang anyar|layang anyar}}',
@@ -1064,7 +1062,6 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'preferences' => 'Preferensi (pilihan)',
 'mypreferences' => 'Préferènsi',
 'prefs-edits' => 'Gunggungé suntingan:',
-'prefsnologin' => 'Durung mlebu log',
 'changepassword' => 'Ganti tembung sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratilik',
@@ -1339,6 +1336,7 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'recentchanges-label-minor' => 'Iki suntingan sithik',
 'recentchanges-label-bot' => 'Suntingan iki diayahi déning bot',
 'recentchanges-label-unpatrolled' => 'Suntingan iki durung dipatroli',
+'recentchanges-legend-newpage' => '$1 - kaca anyar',
 'rcnote' => 'Ing ngisor iki kapacak {{PLURAL:$1|pangowahan|owah-owahan}} pungkasan ing  <strong>$2</strong> dina pungkasan ing $5, $4.',
 'rcnotefrom' => 'Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).',
 'rclistfrom' => 'Saiki nuduhaké owah-owahan wiwit tanggal $1',
@@ -3662,4 +3660,21 @@ Utawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal
 # Image rotation
 'rotate-comment' => 'Gambar diubengaké $1 {{PLURAL:$1|drajat|drajat}} sak arah domé jam',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Cithakan dikembangaké',
+'expand_templates_intro' => 'Kaca astaméwa iki njupuk sawetara tèks lan ngembangaké kabèh cithakan sajroning iku sacara rékursif.
+Kaca iki uga ngembangaké fungsi parser kaya ta
+<nowiki>{{</nowiki>#language:…}}, lan variabel kaya ta
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;sajatiné mèh kabèh sing ana ing antara rong tandha kurung akolade.
+Perkara iki dilakokaké caranémawa nyeluk tahapan parser sing rélévan saka MediaWiki dhéwé.',
+'expand_templates_title' => 'Irah-irahan kontèks, kanggo {{FULLPAGENAME}} lan sabanjuré:',
+'expand_templates_input' => 'Tèks sumber:',
+'expand_templates_output' => 'Pituwas (kasil)',
+'expand_templates_xml_output' => 'Pituwas XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Busaken komentar',
+'expand_templates_remove_nowiki' => 'Brèdèl tag <nowiki> nèng asilé',
+'expand_templates_generate_xml' => 'Tuduhna uwit parser XML',
+'expand_templates_preview' => 'Pratayang',
+
 );
index b8bd501..18a6cfa 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( 'მიწერა_მომხმარებელს' ),
@@ -447,8 +445,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'მოძიებულია „$1“-დან',
 'youhavenewmessages' => 'თქვენ გაქვთ $1 ($2).',
-'newmessageslink' => 'ახალი შეტყობინებები',
-'newmessagesdifflink' => 'განსხვავება წინა ვერსიასთან',
 'youhavenewmessagesfromusers' => 'თქვენ გაქვთ $1 {{PLURAL:$3|სხვა მომხმარებლისგან|$3 მომხმარებლებისგან}} ($2).',
 'youhavenewmessagesmanyusers' => 'თქვენ გაქვთ $1 ბევრი მომხმარებლისგან ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|ახალი შეტყობინება}}',
@@ -1163,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) ადმინისტრატორისგან მანამ, სანამ არ აირჩევთ დამალვის სხვა პარამეტრებს.',
@@ -1295,7 +1291,6 @@ $1",
 'preferences' => 'კონფიგურაცია',
 'mypreferences' => 'კონფიგურაცია',
 'prefs-edits' => 'რედაქციების რაოდენობა:',
-'prefsnologin' => 'შესული არ ხართ',
 'changepassword' => 'პაროლის შეცვლა',
 'prefs-skin' => 'გარეკანი',
 'skin-preview' => 'წინასწარი გადახედვა',
@@ -1588,6 +1583,7 @@ $1",
 'recentchanges-label-minor' => 'ეს არის მცირე შესწორება',
 'recentchanges-label-bot' => 'ეს არის ბოტის რედაქტირება',
 'recentchanges-label-unpatrolled' => 'ეს რედაქტირება გადაუმოწმებელია',
+'recentchanges-legend-newpage' => '$1 - ახალი გვერდი',
 'rcnote' => "ქვემოთ იხილეთ ბოლო '''$1''' ცვლილება უკანასკნელი '''$2''' დღის მანძილზე, $5, $4 მდგომარეობით.",
 'rcnotefrom' => "ქვემოთ მოყვანილია ცვლილებები '''$2'''-დან (ნაჩვენებია '''$1''').",
 'rclistfrom' => 'ახალი ცვლილებების ჩვენება დაწყებული $1-დან',
@@ -1994,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' => 'სათვალავში არ მიიღება არარსებული და სამუშაო გვერდების გადახედვა',
@@ -2502,7 +2498,6 @@ $1',
 $1',
 'undelete-show-file-confirm' => 'დარწმუნებული ხართ, რომ გსურთ ფაილ <nowiki>$1</nowiki>-ის წაშლილი ვერსიის ხილვა $2 $3-დან?',
 'undelete-show-file-submit' => 'ჰო',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'სახელთა სივრცე:',
@@ -4102,4 +4097,15 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|ბაიტი}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|ბაიტი}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'გაშლილი თარგები',
+'expand_templates_title' => 'კონტექსტის სათაური, {{FULLPAGENAME}}-სთვის და ა.შ.:',
+'expand_templates_input' => 'შესაყვანი ტექსტი:',
+'expand_templates_output' => 'შედეგი',
+'expand_templates_xml_output' => 'XML-ის გამოტანა',
+'expand_templates_ok' => 'შესრულება',
+'expand_templates_remove_comments' => 'კომენტარების წაშლა',
+'expand_templates_remove_nowiki' => 'ტეგების დათრგუნვა <nowiki> შედეგში',
+'expand_templates_preview' => 'წინა',
+
 );
index 67a0e57..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' ),
@@ -385,8 +384,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => '"$1" saytınan alıng\'an',
 'youhavenewmessages' => 'Sizge $1 bar ($2).',
-'newmessageslink' => "jan'a xabarlar",
-'newmessagesdifflink' => "aqırg'ı o'zgeris",
 'youhavenewmessagesmulti' => "$1 betinde sizge jan'a xabarlar bar",
 'editsection' => "o'zgertiw",
 'editold' => "o'zgertiw",
@@ -849,7 +846,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'preferences' => 'Sazlawlar',
 'mypreferences' => "Menin' sazlawlarım",
 'prefs-edits' => "O'zgertiwler sanı:",
-'prefsnologin' => 'Kirilmegen',
 'changepassword' => "Paroldi o'zgertiw",
 'prefs-skin' => "Sırtqı ko'rinis",
 'skin-preview' => 'Korip al',
@@ -1037,6 +1033,7 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'recentchanges-label-minor' => "Bul kishi o'zgeris",
 'recentchanges-label-bot' => "Bul o'zgeristi bot kiritti",
 'recentchanges-label-unpatrolled' => "Bul o'zgeris ele baqlanbag'an",
+'recentchanges-legend-newpage' => '$1 - taza bet',
 'rcnote' => "To'mende $4, $5 waqtındag'ı aqırg'ı {{PLURAL:$2|ku'ndegi|'''$2''' ku'ndegi}} {{PLURAL:$1|'''1''' o'zgeris ko'rsetilgen|aqırg'ı '''$1''' o'zgeris ko'rsetilgen}}.",
 'rcnotefrom' => "To'mende '''$2''' baslap '''$1''' shekemgi o'zgerisler ko'rsetilgen.",
 'rclistfrom' => "$1 waqtınan baslap jan'a o'zgerisler ko'rset",
index c0defe4..ec45e1d 100644 (file)
@@ -300,8 +300,6 @@ $1',
 'ok' => 'Seɣbel',
 'retrievedfrom' => 'Yettwaddem seg "$1"',
 'youhavenewmessages' => 'Ɣur-k $1 ($2).',
-'newmessageslink' => 'Izen amaynut',
-'newmessagesdifflink' => 'Abeddel aneggaru',
 'youhavenewmessagesfromusers' => 'Tesɛiḍ $1 n {{PLURAL:$3|useqdac nniḍen|$3 iseqdacen nniḍen}} ( $2 ).',
 'youhavenewmessagesmanyusers' => 'Tesɛiḍ $1 n aṭas n iseqdacen ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|inzan imaynuten}}',
@@ -1045,7 +1043,6 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'preferences' => 'Isemyifiyen',
 'mypreferences' => 'Isemyifiyen inu',
 'prefs-edits' => 'Amḍan n ibeddlilen :',
-'prefsnologin' => 'Ur tekcimeḍ ara',
 'changepassword' => 'Beddel awal n tbaḍnit',
 'prefs-skin' => 'Aglim',
 'skin-preview' => 'Pre-timeẓriwt',
index f60e227..d96e86b 100644 (file)
@@ -310,8 +310,6 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Къыздырахар: "$1"',
 'youhavenewmessages' => 'КъыпхуэкӀуауэ уиӀэ $1 ($2).',
-'newmessageslink' => 'тхыгъэщIэхэр',
-'newmessagesdifflink' => 'иужьрей зэхъуэкІыныгъэр',
 'youhavenewmessagesmulti' => 'КъыпхуэкӀуауэ уиӀэ тхыгъэщӀэхэр $1 идеж',
 'editsection' => 'гъэтэрэзын',
 'editold' => 'гъэтэрэзын',
@@ -970,7 +968,6 @@ $1",
 'preferences' => 'Зэгъэзэхуэпхъэхэр',
 'mypreferences' => 'Си зэгъэзэхуэгъуэхэр',
 'prefs-edits' => 'Гъэтэрэзыгъуэхэм я бжыгъэр:',
-'prefsnologin' => 'Системэм зыкъебгъэцӀыхуакъым',
 'prefs-skin' => 'ЗэфӀэгъувэным и теухуапхъэ',
 'prefs-datetime' => 'Махуэмрэ зэманымрэ',
 'prefs-personal' => 'Ныбжыгъуэ къэӀохугъуэ',
index 8277cb3..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' => 'ربطو خط کشیدگی',
@@ -269,8 +277,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '‘‘$1’’ نقل کاردو',
 'youhavenewmessages' => 'تہ بچے ای $1 شیر۔ ($2)',
-'newmessageslink' => 'نوغ پیغامات',
-'newmessagesdifflink' => 'تـجـدیـد مـاقـبل آخـراری فـرق',
 'youhavenewmessagesmulti' => 'ء$1 تہ بچے نوغ نوغ پیغامات شینی',
 'editsection' => 'ترمیم',
 'editold' => 'ترمیم',
index 9f5ee67..f338c06 100644 (file)
@@ -310,8 +310,6 @@ $1',
 'pagetitle-view-mainpage' => '',
 'retrievedfrom' => '"$1" ra ard',
 'youhavenewmessages' => 'Yê sıma $1 ($2) esto.',
-'newmessageslink' => 'mesacê newey',
-'newmessagesdifflink' => 'vurnaiso peyên',
 'youhavenewmessagesmulti' => '$1 de mesacê sımaê newey estê',
 'editsection' => 'bıvurne',
 'editold' => 'bıvurne',
@@ -765,7 +763,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'preferences' => 'Tercihi',
 'mypreferences' => 'Tercihê mı',
 'prefs-edits' => 'Numra vurnaisun:',
-'prefsnologin' => 'Cı nêkota',
 'changepassword' => 'Parola bıvurne',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verqayt',
@@ -904,6 +901,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'recentchanges-label-minor' => 'No zu vurnaiso qıckeko',
 'recentchanges-label-bot' => 'No vurnais terefê zu boti ra bi',
 'recentchanges-label-unpatrolled' => 'No vurnais hona çım ra ranêvêrdo',
+'recentchanges-legend-newpage' => '$1 - pela newiye',
 'rcnote' => "Cêr {{PLURAL:$1|'''1''' vurnaiso peyên|'''$1''' vurnaisê peyêni}} be {{PLURAL:$2|roza peyêne|'''$2''' rozunê peyênunê}} $5, $4 ra estê.",
 'rcnotefrom' => "Cêr de vurnayîşê esto ke '''$2''' ra raver  (heta '''$1''' mucnayiyo).",
 'rclistfrom' => '$1 ra hata nıka vurnaisunê newu bıasne',
index 774da5e..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( 'سىرتقا_بەرۋ' ),
@@ -606,8 +604,6 @@ $messages = array(
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => '«$1» بەتىنەن الىنعان',
 'youhavenewmessages' => 'سىزگە $1 بار ($2).',
-'newmessageslink' => 'جاڭا حابارلار',
-'newmessagesdifflink' => 'سوڭعى وزگەرىسىنە',
 'youhavenewmessagesmulti' => '$1 دەگەندە جاڭا حابارلار بار',
 'editsection' => 'وڭدەۋ',
 'editold' => 'وڭدەۋ',
@@ -1127,7 +1123,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'preferences' => 'باپتالىمدار',
 'mypreferences' => 'باپتالىمدارىم',
 'prefs-edits' => 'وڭدەمە سانى:',
-'prefsnologin' => 'كىرمەگەنسىز',
 'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
 'prefs-skin' => 'مانەرلەر',
 'skin-preview' => 'قاراپ شىعۋ',
@@ -2837,4 +2832,20 @@ $5
 'revdelete-unrestricted' => 'اكىمشىلەردەن تىيىمداردى الاستادى',
 'rightsnone' => '(ەشقانداي)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ۇلگىلەردى ۇلعايتۋ',
+'expand_templates_intro' => 'وسى قۇرال ارنايى بەتى الدەبىر ٴماتىندى الادى دا,
+بۇنىڭ ىشىندەگى بارلىق كىرىكتەلگەن ۇلگىلەردى مەيلىنشە ۇلعايتادى.
+مىنا <nowiki>{{#language:...}} سىيياقتى جوڭدەتۋ فۋنكتسىييالارىن دا, جانە {{CURRENTDAY}}
+سىيياقتى اينامالىلارىن دا ۇلعايتادى (ناقتى ايتقاندا, قوس قابات ساداق جاقشالار اراسىنداعى بارلىعىن).
+بۇنى ٴوز MediaWiki باعدارلاماسىنان قاتىستى جوڭدەتۋ ساتىن شاقىرىپ ىستەلىنەدى.',
+'expand_templates_title' => 'ٴماتىن ارالىق اتاۋى ({{FULLPAGENAME}} ت.ب. بەتتەر ٴۇشىن):',
+'expand_templates_input' => 'كىرىس ٴماتىنى:',
+'expand_templates_output' => 'ناتىيجەسى',
+'expand_templates_xml_output' => 'XML شىعارۋى',
+'expand_templates_ok' => 'جارايدى',
+'expand_templates_remove_comments' => 'ماندەمەلەرىن الاستاتىپ?',
+'expand_templates_generate_xml' => 'XML وڭدەتۋ بۇتاقتارىن كورسەت',
+'expand_templates_preview' => 'قاراپ شىعۋ',
+
 );
index 90cbddc..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( 'Сыртқа_беру' ),
@@ -635,12 +633,10 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => '«$1» бетінен алынған',
 'youhavenewmessages' => 'Сізде $1 бар ($2).',
-'newmessageslink' => 'жаңа хабарламалар',
-'newmessagesdifflink' => 'соңғы өзгерiсіне',
 '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' => 'өңдеу',
@@ -766,7 +762,7 @@ $2',
 'invalidtitle-knownnamespace' => '"$2" есім кеңістік түрі және  "$3" мәтіні жарамсыз',
 'invalidtitle-unknownnamespace' => 'Нөмері $1 белгісіз есім кеңістік түрі және "$2" мәтіні жарамсыз',
 'exception-nologin' => 'Кірмегенсіз',
-'exception-nologin-text' => 'Бұл бет немесе әрекет бұл уикиге кіріуіңізді міндеттейді.',
+'exception-nologin-text' => 'Бұл әрекетке немесе бетке қатынау үшін [[Special:Userlogin|кіріңіз]].',
 
 # Virus scanner
 'virus-badscanner' => 'Дұрыс емес ішқұрылым. Белгісіз вирус сканері: $1',
@@ -814,9 +810,10 @@ $2',
 'gotaccount' => "Бұған дейін тіркеліп пе едіңіз? '''$1'''.",
 'gotaccountlink' => 'Кіріңіз',
 'userlogin-resetlink' => 'Қатысушы атын не құпия сөзді ұмыттыңыз ба?',
-'userlogin-resetpassword-link' => 'Құпия сөздіңізді ысыру',
+'userlogin-resetpassword-link' => 'Құпия сөздіңізді ұмыттыңыз ба?',
 'helplogin-url' => 'Help:Тіркелу',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Тіркелуге көмек]]',
+'userlogin-createanother' => 'Басқа тіркелгі жасау',
 'createacct-join' => 'Төменге өзіңіз туралы ақпарат енгізіңіз.',
 'createacct-another-join' => 'Төменге жаңа тіркелгі туралы ақпарат енгізіңіз.',
 'createacct-emailrequired' => 'Е-пошта мекен-жайы:',
@@ -1248,8 +1245,8 @@ $3 келтірілген себебі: ''$2''",
 'revdelete-hide-user' => 'Өңдеуші атын (IP мекенжайын) жасыр',
 'revdelete-hide-restricted' => 'Осы тиымдарды әкімшілерге қолдану және бұл тілдесуді құлыптау',
 'revdelete-radio-same' => '(өзгертпе)',
-'revdelete-radio-set' => 'Ð\98Ó\99',
-'revdelete-radio-unset' => 'Ð\96оÒ\9b',
+'revdelete-radio-set' => 'Ð\96аÑ\81Ñ\8bÑ\80Ñ\8bлÒ\93ан',
+'revdelete-radio-unset' => 'Ð\9aÓ©Ñ\80Ñ\81еÑ\82Ñ\96лген',
 'revdelete-suppress' => 'Деректерді баршаға ұқсас әкімшілерден де шеттету',
 'revdelete-unsuppress' => 'Қалпына келтірілген түзетулерден тиымдарды аластау',
 'revdelete-log' => 'Себебі:',
@@ -1382,7 +1379,6 @@ $1",
 'preferences' => 'Баптаулар',
 'mypreferences' => 'Баптаулар',
 'prefs-edits' => 'Өңдеме саны:',
-'prefsnologin' => 'Кірмегенсіз',
 'changepassword' => 'Құпия сөзді өзгерту',
 'prefs-skin' => 'Мәнерлер',
 'skin-preview' => 'Қарап шығу',
@@ -1666,6 +1662,7 @@ $1",
 'recentchanges-label-minor' => 'Бұл шағын өңдеме',
 'recentchanges-label-bot' => 'Бұл өңдемені бот жасады.',
 'recentchanges-label-unpatrolled' => 'Бұл өңдеме әлі тексеруден өтпеді.',
+'recentchanges-legend-newpage' => '$1 - жаңа бет',
 'rcnote' => "Төменде $5, $4 кезіне дейінгі соңғы {{PLURAL:$2|күндегі|'''$2''' күндегі}}, {{PLURAL:$1| '''1''' өзгеріс|соңғы '''$1''' өзгеріс}}  көрсетіледі.",
 'rcnotefrom' => "Төменде '''$2''' кезінен бергі ('''$1''' жеткенше дейін) өзгерістер көрсетіледі.",
 'rclistfrom' => '$1 кезінен бергі жаңа өзгерістерді көрсет.',
@@ -3749,4 +3746,20 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|ғасыр|ғасыр}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мың жылдық|мың жылдық}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Үлгілерді ұлғайту',
+'expand_templates_intro' => 'Осы құрал арнайы беті әлдебір мәтінді алады да,
+бұның ішіндегі барлық кіріктелген үлгілерді мейлінше ұлғайтады.
+Мына <nowiki>{{</nowiki>#language:...}} сияқты жөңдету функцияларын да, және <nowiki>{{</nowiki>CURRENTDAY}}
+сияқты айнамалыларын да ұлғайтады (нақты айтқанда, қос қабат садақ жақшалар арасындағы барлығын).
+Бұны өз MediaWiki бағдарламасынан қатысты жөңдету сатын шақырып істелінеді.',
+'expand_templates_title' => 'Мәтін аралық атауы ({{FULLPAGENAME}} т.б. беттер үшін):',
+'expand_templates_input' => 'Кіріс мәтіні:',
+'expand_templates_output' => 'Нәтижесі',
+'expand_templates_xml_output' => 'XML шығаруы',
+'expand_templates_ok' => 'Жарайды',
+'expand_templates_remove_comments' => 'Мәндемелерін аластатып?',
+'expand_templates_generate_xml' => 'XML өңдету бұтақтарын көрсет',
+'expand_templates_preview' => 'Қарап шығу',
+
 );
index 0d1114c..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' ),
@@ -569,8 +567,6 @@ $messages = array(
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => '«$1» betinen alınğan',
 'youhavenewmessages' => 'Sizge $1 bar ($2).',
-'newmessageslink' => 'jaña xabarlar',
-'newmessagesdifflink' => 'soñğı özgerisine',
 'youhavenewmessagesmulti' => '$1 degende jaña xabarlar bar',
 'editsection' => 'öñdew',
 'editold' => 'öñdew',
@@ -1090,7 +1086,6 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
 'preferences' => 'Baptalımdar',
 'mypreferences' => 'Baptalımdarım',
 'prefs-edits' => 'Öñdeme sanı:',
-'prefsnologin' => 'Kirmegensiz',
 'changepassword' => 'Qupïya sözdi özgertw',
 'prefs-skin' => 'Mänerler',
 'skin-preview' => 'Qarap şığw',
@@ -2796,4 +2791,20 @@ Tağı da [[Special:EditWatchlist|qalıpalğan öñdewişti paýdalana]] alasız
 'revdelete-unrestricted' => 'äkimşilerden tïımdardı alastadı',
 'rightsnone' => '(eşqandaý)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Ülgilerdi ulğaýtw',
+'expand_templates_intro' => 'Osı qural arnaýı beti äldebir mätindi aladı da,
+bunıñ işindegi barlıq kiriktelgen ülgilerdi meýlinşe ulğaýtadı.
+Mına <nowiki>{{</nowiki>#language:...}} sïyaqtı jöñdetw fwnkcïyaların da, jäne <nowiki>{{</nowiki>CURRENTDAY}}
+sïyaqtı aýnamalıların da ulğaýtadı (naqtı aýtqanda, qos qabat sadaq jaqşalar arasındağı barlığın).
+Bunı öz MediaWiki bağdarlamasınan qatıstı jöñdetw satın şaqırıp istelinedi.',
+'expand_templates_title' => 'Mätin aralıq atawı ({{FULLPAGENAME}} t.b. better üşin):',
+'expand_templates_input' => 'Kiris mätini:',
+'expand_templates_output' => 'Nätïjesi',
+'expand_templates_xml_output' => 'XML şığarwı',
+'expand_templates_ok' => 'Jaraýdı',
+'expand_templates_remove_comments' => 'Mändemelerin alastatıp?',
+'expand_templates_generate_xml' => 'XML öñdetw butaqtarın körset',
+'expand_templates_preview' => 'Qarap şığw',
+
 );
index 61682ad..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( 'នាំចេញ' ),
@@ -541,8 +539,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'បានពី "$1"',
 'youhavenewmessages' => 'អ្នកមាន $1 ($2)។',
-'newmessageslink' => 'សារថ្មីៗ',
-'newmessagesdifflink' => 'បន្លាស់ប្ដូរចុងក្រោយ',
 'youhavenewmessagesfromusers' => 'អ្នកមាន $1 ទទួលបានពី {{PLURAL:$3|អ្នកប្រើប្រាស់ម្នាក់|អុ្នកប្រើប្រាស់ចំនួន $3 នាក់}} ($2)។',
 'youhavenewmessagesmanyusers' => 'អ្នកមាន $1 ទទួលបានពីអ្នកប្រើប្រាស់ជាច្រើន ($2)។',
 'newmessageslinkplural' => '{{PLURAL:$1|សារថ្មីមួយ|សារថ្មី}}',
@@ -1399,7 +1395,6 @@ $1",
 'preferences' => 'ចំណង់ចំណូលចិត្ត',
 'mypreferences' => 'ចំណង់ចំណូលចិត្ត​',
 'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
-'prefsnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
 'changepassword' => 'ប្តូរពាក្យសម្ងាត់',
 'prefs-skin' => 'សំបក',
 'skin-preview' => 'មើលជាមុន',
@@ -1693,6 +1688,7 @@ $1",
 'recentchanges-label-minor' => 'នេះជាការកែប្រែតិចតួចមួយប៉ុណ្ណោះ',
 'recentchanges-label-bot' => 'ការកែប្រែនេះត្រូវបានធ្វើឡើងដោយរូបយន្ត',
 'recentchanges-label-unpatrolled' => 'ការកែប្រែនេះមិនទាន់ត្រូវបានល្បាតទេ',
+'recentchanges-legend-newpage' => '$1 - ទំព័រថ្មី',
 'rcnote' => "ខាងក្រោម​នេះ​ជា​{{PLURAL:$1|១បន្លាស់ប្ដូរ|'''$1'''បន្លាស់ប្ដូរ}}​ចុងក្រោយក្នុងរយៈពេល​{{PLURAL:$2|ថ្ងៃ|'''$2'''ថ្ងៃ}}​ចុងក្រោយគិតត្រឹម$5 $4 ។",
 'rcnotefrom' => "ខាងក្រោមនេះជាបន្លាស់ប្ដូរនានាគិតចាប់តាំងពី '''$2''' (បង្ហាញអតិបរមាចំនួន '''$1''')។",
 'rclistfrom' => 'បង្ហាញបន្លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
@@ -3802,4 +3798,12 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|សតវត្សរ៍|សតវត្សរ៍}}',
 'duration-millennia' => '$1 {{PLURAL:$1|សហសវត្សរ៍|សហសវត្សរ៍}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ពង្រីកទំព័រគំរូ',
+'expand_templates_input' => 'សរសេរឃ្លា',
+'expand_templates_output' => 'លទ្ធផល',
+'expand_templates_ok' => 'យល់ព្រម',
+'expand_templates_remove_comments' => 'ដកចេញ វិចារនានា',
+'expand_templates_preview' => 'បង្ហាញការមើលជាមុន',
+
 );
index 6d4357f..c8ff643 100644 (file)
@@ -332,8 +332,6 @@ $messages = array(
 'ok' => 'ಸರಿ',
 'retrievedfrom' => '"$1" ಇಂದ ಪಡೆಯಲ್ಪಟ್ಟಿದೆ',
 'youhavenewmessages' => 'ನಿಮಗೆ $1 ಇವೆ ($2).',
-'newmessageslink' => 'ಹೊಸ ಸಂದೇಶಗಳು',
-'newmessagesdifflink' => 'ಕೊನೆಯ ಬದಲಾವಣೆ',
 'newmessagesdifflinkplural' => 'ಕಡೆಯ {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}',
 'youhavenewmessagesmulti' => '$1 ಅಲ್ಲಿ ನಿಮಗೆ ಹೊಸ ಸಂದೇಶಗಳಿವೆ',
 'editsection' => 'ಬದಲಾಯಿಸಿ',
@@ -918,7 +916,6 @@ $2',
 'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'mypreferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
-'prefsnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
 'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
 'prefs-skin' => 'ಚರ್ಮ',
 'skin-preview' => 'ಮುನ್ನೋಟ',
@@ -2209,4 +2206,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|ಶತಮಾನ|ಶತಮಾನಗಳು}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ಸಹಸ್ರಮಾನ|ಸಹಸ್ರಮಾನಗಳು}}',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'ಮುನ್ನೋಟ',
+
 );
index c4d024f..1ddf8f3 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:' ),
@@ -625,14 +630,12 @@ $1',
 
 'ok' => '확인',
 'retrievedfrom' => '원본 주소 "$1"',
-'youhavenewmessages' => '다른 사용자가 $1에 글을 남겼습니다. ($2)',
-'newmessageslink' => '사용자 토론',
-'newmessagesdifflink' => '마지막으로 바뀐 내용',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} $1에 글을 남겼습니다. ($2)',
-'youhavenewmessagesmanyusers' => '여러 사용자가 $1에 글을 남겼습니다. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|사용자 토론}}',
+'youhavenewmessages' => '다른 사용자가 남긴 $1가 있습니다. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} 남긴 $1가 있습니다. ($2)',
+'youhavenewmessagesmanyusers' => '여러 사용자가 남긴 $1가 있습니다. ($2)',
+'newmessageslinkplural' => '{{PLURAL:$1|새 메시지}}',
 'newmessagesdifflinkplural' => '마지막으로 {{PLURAL:$1|바뀐 내용}}',
-'youhavenewmessagesmulti' => '다른 사용자가 $1에 글을 남겼습니다',
+'youhavenewmessagesmulti' => '다른 사용자가 $1에 남긴 새 메시지가 있습니다',
 'editsection' => '편집',
 'editold' => '편집',
 'viewsourceold' => '원본 보기',
@@ -868,7 +871,7 @@ $2',
 'passwordtooshort' => '비밀번호는 {{PLURAL:$1|$1 글자}} 이상이어야 합니다.',
 'password-name-match' => '비밀번호는 사용자 이름과 반드시 달라야 합니다.',
 'password-login-forbidden' => '이 사용자 이름과 비밀번호는 사용할 수 없습니다.',
-'mailmypassword' => '새 비밀번호를 이메일로 보내기',
+'mailmypassword' => '비밀번호 초기화',
 'passwordremindertitle' => '{{SITENAME}}의 새 임시 비밀번호',
 'passwordremindertext' => '$1 IP 주소에서 누군가가 아마 자신이 {{SITENAME}} ($4)의 새 비밀번호를 요청했습니다.
 "$2" 사용자의 임시 비밀번호는 "$3"로 설정되었습니다. 이것이 자신이 의도한 바라면
@@ -942,7 +945,7 @@ $1 기다렸다가 다시 시도하세요.',
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
 'passwordreset-text-one' => '비밀번호를 재설정하려면 이 양식을 작성해주세요.',
-'passwordreset-text-many' => '{{PLURAL:$1|비밀번호를 재설정하려면 필드 중 하나를 채우세요.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|이메일로 임시 비밀번호를 발급받으려면 필드 중 하나를 채우세요.}}',
 'passwordreset-legend' => '비밀번호 재설정',
 'passwordreset-disabled' => '이 위키에서는 비밀번호를 재설정할 수 없습니다.',
 'passwordreset-emaildisabled' => '이 위키에서 이메일 기능이 비활성화되어 있습니다.',
@@ -1508,7 +1511,6 @@ $1",
 'preferences' => '사용자 환경 설정',
 'mypreferences' => '환경 설정',
 'prefs-edits' => '편집 횟수:',
-'prefsnologin' => '로그인하지 않음',
 'prefsnologintext2' => '사용자 환경 설정을 설정하려면 $1하십시오.',
 'changepassword' => '비밀번호 바꾸기',
 'prefs-skin' => '스킨',
@@ -1811,6 +1813,8 @@ 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'''개입니다.",
 'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
@@ -2356,7 +2360,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'querypage-disabled' => '이 특수 문서는 성능상의 이유로 비활성화되었습니다.',
 
 # Book sources
-'booksources' => 'ì±\85 ì\9e\90ë£\8c',
+'booksources' => 'ì±\85 ì°¾ê¸°',
 'booksources-search-legend' => '책 원본 검색',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => '검색',
@@ -3301,7 +3305,7 @@ $2',
 'spamprotectiontext' => '스팸 필터가 문서 저장을 막았습니다.
 바깥 사이트로 연결하는 링크 중에 블랙리스트에 포함된 사이트가 있을 것입니다.',
 'spamprotectionmatch' => '문제가 되는 부분은 다음과 같습니다: $1',
-'spambot_username' => 'MediaWiki 스팸 제거',
+'spambot_username' => '미디어위키 스팸 정리',
 'spam_reverting' => '$1(을)를 포함하지 않는 최신 버전으로 되돌림',
 'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 차단함',
 'spam_deleting' => '모든 버전에 $1 링크를 포함하고 있어 삭제함',
@@ -3659,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' => '주제 코드',
@@ -4080,7 +4084,7 @@ $5
 'version-hook-subscribedby' => '훅이 사용된 위치',
 'version-version' => '(버전 $1)',
 'version-license' => '라이선스',
-'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''(미디어위키)를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
 'version-poweredby-others' => '그 외 다른 개발자',
 'version-poweredby-translators' => 'translatewiki.net 번역자',
 'version-credits-summary' => '[[Special:Version|미디어위키]]에 기여한 다음 사람에게 감사드립니다.',
@@ -4338,4 +4342,20 @@ $5
 'limitreport-expansiondepth' => '최대 전개 깊이',
 'limitreport-expensivefunctioncount' => '부하 높은 파서 함수 수',
 
+# Special:ExpandTemplates
+'expandtemplates' => '틀 전개',
+'expand_templates_intro' => '이 특수 문서는 글의 모든 틀을 끝까지 풀어 줍니다.
+<code><nowiki>{{</nowiki>#language:…}}</code> 같은 파서 함수나
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code> 같은 변수를 풀어줍니다.
+사실 두개의 중괄호 사이에 있는 것은 거의 모두 풀어줍니다.',
+'expand_templates_title' => '문서 이름 ({{FULLPAGENAME}} 등):',
+'expand_templates_input' => '전개할 내용:',
+'expand_templates_output' => '결과',
+'expand_templates_xml_output' => 'XML 출력',
+'expand_templates_ok' => '확인',
+'expand_templates_remove_comments' => '주석 제거',
+'expand_templates_remove_nowiki' => '결과에서 <nowiki> 태그를 숨기기',
+'expand_templates_generate_xml' => 'XML 구문 트리 보기',
+'expand_templates_preview' => '미리 보기',
+
 );
index 1901e4a..1d2463e 100644 (file)
@@ -165,8 +165,6 @@ $messages = array(
 
 'retrievedfrom' => 'Öшмöс "$1"',
 'youhavenewmessages' => 'Тэныт локтiс $1 ($2).',
-'newmessageslink' => 'виль юöррез',
-'newmessagesdifflink' => 'медбöрьяись вильмöтöм',
 'youhavenewmessagesmulti' => '$1 юкöтын тэ понда мыйкö эм',
 'editsection' => 'мöдкодьсьöтны',
 'editold' => 'мöдкодьсьöтны',
index 147c5ee..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( 'Къошулуучугъа_джазма', 'Джазма_ий' ),
@@ -383,8 +381,6 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Чыкъгъаны — «$1»',
 'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
-'newmessageslink' => 'джангы билдириуле',
-'newmessagesdifflink' => 'сюзюу бетигизни ахыр тюрлениую',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
 'youhavenewmessagesmanyusers' => 'Талай къошулуучудан $1 барды. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириу|джангы билдириуле}}',
@@ -1167,7 +1163,6 @@ $1",
 'preferences' => 'Джарашдырыула',
 'mypreferences' => 'Джарашдырыула',
 'prefs-edits' => 'Тюрлендириулени саны:',
-'prefsnologin' => 'Системагъа кесигизни танытмагъансыз',
 'changepassword' => 'Паролну ауушдур',
 'prefs-skin' => 'Джасауу',
 'skin-preview' => 'Ал къарау',
@@ -1447,6 +1442,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'recentchanges-label-minor' => 'Бу гитче тюрлениудю',
 'recentchanges-label-bot' => 'Бу тюрлендириуню бот этгенди',
 'recentchanges-label-unpatrolled' => 'Бу тюрлендириу алкъын патруль этилинмегенди',
+'recentchanges-legend-newpage' => '$1 — джангы бет',
 'rcnote' => '$4 $5 заманнга, арт {{PLURAL:$1|1|$1}} тюрлениу {{PLURAL:$2|1|$2}}  кюнню ичинде',
 'rcnotefrom' => 'Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле',
 'rclistfrom' => '$1 башлаб джангы тюрлениулени кёргюз',
@@ -3685,4 +3681,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'duration-centuries' => '$1 {{PLURAL:$1|ёмюр}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мингджыллыкъ}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Шаблонланы ачыу',
+
 );
index be848a7..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' ),
@@ -488,8 +486,6 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Di Sigg heh stamp vun „$1“.',
 'youhavenewmessages' => 'Do häs $1 ($2).',
-'newmessageslink' => 'neu Metdeilunge op Dinger Klaafsigg',
-'newmessagesdifflink' => 'Ungerscheid zor vürletzte Version',
 'youhavenewmessagesfromusers' => 'Do häs $1 vun {{PLURAL:$3|enem|$3|keinem}} andere Metmaacher ($2)',
 'youhavenewmessagesmanyusers' => 'Do häs $1 vun andere Metmaacher ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|en neuje Nohreesch|neu Nohreeschte|kein neuje Nohreeschte}}',
@@ -1445,7 +1441,6 @@ dat dänne ehr Daate topaktoell sin,
 'preferences' => 'ming Enstellunge',
 'mypreferences' => 'Enstellunge',
 'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
-'prefsnologin' => 'Nit enjelogg',
 'changepassword' => 'Passwood *',
 'prefs-skin' => 'Et Ussinn',
 'skin-preview' => 'Vör-Ansich',
@@ -1731,6 +1726,7 @@ dat dänne ehr Daate topaktoell sin,
 'recentchanges-label-minor' => 'Heh dat es en Mini-Änderung',
 'recentchanges-label-bot' => 'Di Änderung es fun enem Bot jemaat woode',
 'recentchanges-label-unpatrolled' => 'Heh di Änderung es noch nit nohjeloort',
+'recentchanges-legend-newpage' => '$1 - neu Sigg',
 'rcnote' => '{{PLURAL:$1|Heh es de letzte Änderung us|Heh sin de letzte <strong>$1</strong> Änderunge us|Et jit <strong>kei</strong> Änderunge en}} {{PLURAL:$2|däm letzte Daach|de letzte <strong>$2</strong> Dääsch|dä Zick}} vum <strong>$4</strong> aff <strong>$5</strong> Uhr beß jetz.',
 'rcnotefrom' => 'Hee {{PLURAL:$1|es ein|sin bes op <strong>$1</strong>|es keine}} fun de Änderunge zick dem <strong>$3</strong> öm <strong>$4</strong> Uhr opjelėß.',
 'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
@@ -4364,4 +4360,21 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'limitreport-expensivefunctioncount' => 'Oproofe vun „düüre“ Fonxjuhne em Paaser',
 'limitreport-expensivefunctioncount-value' => '$1 vun $2',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Schablone üvverpröfe',
+'expand_templates_intro' => 'Heh di Extrasigg nemmp Täx aan un lühß alle Oproofe vun <code lang="en"><nowiki>{{</nowiki>&nbsp;…&nbsp;}}</code> Klammere op.
+Och verschaachtelte.
+Derbei jehüüere enschtalleete Paaserfunxjuhne, alsu esu jät wi
+<code lang="en"><nowiki>{{</nowiki>#language:…}}</code>, udder Varijaable, dat es esu jät wi
+<code lang="en"><nowiki>{{</nowiki>CURRENTDAY}}</code>.',
+'expand_templates_title' => 'Dä Siggetitel, also wat för {{FULLPAGENAME}} uew. enjeföllt weed:',
+'expand_templates_input' => 'Wat De üvverpröfe wells:',
+'expand_templates_output' => 'Wat erus kütt es',
+'expand_templates_xml_output' => 'XML ußjevve',
+'expand_templates_ok' => 'Lohß Jonn!',
+'expand_templates_remove_comments' => 'De ėnner Kommentare fottloohße',
+'expand_templates_remove_nowiki' => 'Donn de <nowiki>-Befähle ongerdröcke en dämm, wadd_eruß kütt',
+'expand_templates_generate_xml' => 'Och dä XML-Parser-Boum zeije',
+'expand_templates_preview' => 'Vör-Aansich',
+
 );
index cc09f47..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(
@@ -350,8 +352,6 @@ $messages = array(
 'ok' => 'Baş e',
 'retrievedfrom' => 'Ji "$1" hatiye standin.',
 'youhavenewmessages' => '$1 yên te hene ($2).',
-'newmessageslink' => 'Peyamên nû',
-'newmessagesdifflink' => 'cudayî ji guhertoya berê',
 'youhavenewmessagesfromusers' => 'Ji {{PLURAL:$3|bikarhênerekê/î|$3 bikarhêneran}}, ji bo te $1 ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|peyameke nû heye|peyamên nû hene}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|guherandin|guherandinên dawî}}',
@@ -878,7 +878,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'preferences' => 'Tercîhên min',
 'mypreferences' => 'Tercihên min',
 'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe tomar nekir',
 'changepassword' => 'Şîfreyê biguherîne',
 'prefs-skin' => 'Pêste',
 'skin-preview' => 'Pêşdîtin',
@@ -1055,6 +1054,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'recentchanges-legend' => 'Vebijarkên guherandinên dawî',
 'recentchanges-summary' => 'Guhertinên herî dawî yên wîkiyê li ser vê rûpelê bişopîne.',
 'recentchanges-label-minor' => 'Ev guhertineka biçûk e',
+'recentchanges-legend-newpage' => '$1 - rûpela nû',
 'rcnote' => "Jêr {{PLURAL:$1|guherandinek|'''$1''' guherandinên dawî}} di {{PLURAL:$2|rojê|'''$2''' rojên dawî}} de ji $3 şûnde tên nîşan dan.",
 'rclistfrom' => 'Guherandinên ji $1 şûnde nîşan bide',
 'rcshowhideminor' => 'Guherandinên biçûk $1',
@@ -2182,4 +2182,9 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'searchsuggest-search' => 'Lêgerîn',
 'searchsuggest-containing' => 'dihundirîne...',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Encam',
+'expand_templates_ok' => 'Baş e',
+'expand_templates_preview' => 'Pêşdîtin',
+
 );
index 99fa094..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' ),
 );
@@ -451,8 +450,6 @@ $1',
 'ok' => 'Sur',
 'retrievedfrom' => 'Daskevys dhyworth "$1"',
 'youhavenewmessages' => "$1 a'gas beus ($2).",
-'newmessageslink' => 'Messajys nowyth',
-'newmessagesdifflink' => 'chanj diwettha',
 'youhavenewmessagesfromusers' => "Hwi a'gas beus $1 dhyworth {{PLURAL:$3|devnydhyer aral|$3 devnydhyer}} ($2).",
 'youhavenewmessagesmanyusers' => "Hwi a'gas beus $1 dhyworth lies devnydhyer ($2).",
 'newmessageslinkplural' => '{{PLURAL:$1|messach nowyth|messajys nowyth}}',
@@ -971,6 +968,7 @@ Ny dhiskwedhir agas trigva ebost pan gestaffo devnydhyoryon erel dhywgh.',
 'recentchanges-label-minor' => 'Chanj byhan yw hemma',
 'recentchanges-label-bot' => 'Gwrys veu an chanj-ma gans bott',
 'recentchanges-label-unpatrolled' => 'Ny veu an chanj-ma patrolyes hwath',
+'recentchanges-legend-newpage' => '$1 - folen nowyth',
 'rcnote' => "A-woles yma {{PLURAL:$1|'''1''' janj|an '''$1''' chanjyow diwettha}} y'n {{PLURAL:$2|dydh|'''$2''' dydh}} diwettha, a-dhia $5, $4.",
 'rclistfrom' => 'Diskwedhes chanjyow nowyth yn unn dhalleth dhyworth $1.',
 'rcshowhideminor' => '$1 chanjyow byhan',
index 0926c66..3f97368 100644 (file)
@@ -297,8 +297,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '"$1" булагынан алынды',
 'youhavenewmessages' => 'Сизге $1 ($2) бар.',
-'newmessageslink' => 'жаңы билдирүүлөр',
-'newmessagesdifflink' => 'соңку өзгөрүү',
 'youhavenewmessagesfromusers' => 'Сиз {{PLURAL:$3|колдонуучудан|$3 колдонуучу}} $1 алдыңыз ($2).',
 'youhavenewmessagesmanyusers' => 'Көп колдонуучулардан сиз $1 алдыңыз ($2).',
 'newmessageslinkplural' => 'жаңы {{PLURAL:$1|билдирүү| билдирүүлөр}}',
@@ -784,7 +782,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'preferences' => 'Ырастоолор',
 'mypreferences' => 'Ырастоолор',
 'prefs-edits' => 'Өзгөртүүлөрдүн саны',
-'prefsnologin' => 'Системге кирген жоксуз',
 'changepassword' => 'Сырсөздү өзгөртүү',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Алдын ала көрүү',
index c8471a1..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' ),
@@ -417,12 +416,10 @@ Vide [[Special:Version|paginam versionis]].',
 'ok' => 'Age',
 'retrievedfrom' => 'Receptum de "$1"',
 'youhavenewmessages' => 'Habes $1 ($2).',
-'newmessageslink' => 'nuntia nova',
-'newmessagesdifflink' => 'dissimilia post mutationem ultimam',
 'youhavenewmessagesfromusers' => 'Habes $1 ab {{PLURAL:$3|uno usore alio|usoribus $3}} ($2).',
 'youhavenewmessagesmanyusers' => 'Habes $1 a multis usoribus ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|nuntium novum|nuntia nova}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|dissimilitudo|dissimilitudines}} post mutationem ultimam',
+'newmessageslinkplural' => '{{PLURAL:$1|nuntium novum|999=nuntia nova}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|dissimilitudo|999=dissimilitudines}} post mutationem ultimam',
 'youhavenewmessagesmulti' => 'Habes nuntia nova in $1',
 'editsection' => 'recensere',
 'editold' => 'recensere',
@@ -934,7 +931,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
 'preferences' => 'Praeferentiae',
 'mypreferences' => 'Praeferentiae',
 'prefs-edits' => 'Numerus recensionum:',
-'prefsnologin' => 'Conventum non est apertum',
 'changepassword' => 'Tesseram mutare',
 'prefs-skin' => 'Aspectum',
 'skin-preview' => 'Praevisum',
@@ -1147,6 +1143,7 @@ Si vis id dare, opera tua tibi ascribentur.',
 'recentchanges-label-minor' => 'Haec est recensio minor',
 'recentchanges-label-bot' => 'Hanc emendationem automaton fecit',
 'recentchanges-label-unpatrolled' => 'Haec recensio nondum est examinata',
+'recentchanges-legend-newpage' => '(vide etiam [[Special:NewPages|indicem paginarum novarum]])',
 'rcnote' => "Subter {{PLURAL:$1|est '''1''' nuper mutatum|sunt '''$1''' nuperrime mutata}} in {{PLURAL:$2|die proximo|'''$2''' diebus proximis}} ex $5, $4.",
 'rcnotefrom' => "Subter sunt '''$1''' nuperrime mutata in proxima '''$2''' die.",
 'rclistfrom' => 'Monstrare mutata nova incipiens ab $1',
@@ -2478,4 +2475,7 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
 'api-error-mustbeloggedin' => 'Ad fasciculos inmittendos conventum aperire necesse est.',
 'api-error-unknownerror' => 'Error incognitus: "$1".',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Formulas resolvere',
+
 );
index af5e5eb..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' ),
@@ -423,8 +422,6 @@ $messages = array(
 'ok' => 'DE ACORDDO',
 'retrievedfrom' => 'Acòjido del adhresso "$1"',
 'youhavenewmessages' => 'Tienes $1 ($2).',
-'newmessageslink' => 'mesajes nuevos',
-'newmessagesdifflink' => 'el trocamiento de alcabo',
 'youhavenewmessagesmulti' => 'Tienes messajes nuevos en $1',
 'editsection' => 'troca',
 'editold' => 'troca',
index e4b44fd..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' ),
@@ -460,12 +460,10 @@ Kuckt d'[[Special:Version|Versiounssäit]].",
 'ok' => 'OK',
 'retrievedfrom' => 'Vun „$1“',
 'youhavenewmessages' => 'Dir hutt $1 ($2).',
-'newmessageslink' => 'nei Messagen',
-'newmessagesdifflink' => 'Lescht Ännerung',
 'youhavenewmessagesfromusers' => 'Dir hutt $1 vu(n) {{PLURAL:$3|engem anere Benotzer|$3 anere Benotzer}} ($2).',
 'youhavenewmessagesmanyusers' => 'Dir hutt $1 vu ville Benotzer ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|een neie Message|nei Message}}',
-'newmessagesdifflinkplural' => 'lescht {{PLURAL:$1|Ännerung|Ännerungen}}',
+'newmessageslinkplural' => '{{PLURAL:$1|een neie Message|999=nei Messagen}}',
+'newmessagesdifflinkplural' => 'lescht {{PLURAL:$1|Ännerung|999=Ännerungen}}',
 'youhavenewmessagesmulti' => 'Dir hutt nei Messagen op $1',
 'editsection' => 'änneren',
 'editold' => 'änneren',
@@ -594,7 +592,8 @@ Den Administrateur den d\'Schreiwe gespaart huet, huet dës Erklärung uginn: "$
 'invalidtitle-knownnamespace' => 'Net valabelen Titel mam Nummraum "$2" a mam Text "$3"',
 'invalidtitle-unknownnamespace' => 'Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text "$2"',
 'exception-nologin' => 'Net ageloggt',
-'exception-nologin-text' => 'Dës Säit oder Aktioun erfuerdert datt Dir op dëser Wiki ageloggt sidd.',
+'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''",
@@ -1312,7 +1311,7 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'preferences' => 'Astellungen',
 'mypreferences' => 'Astellungen',
 'prefs-edits' => 'Zuel vun den Ännerungen:',
-'prefsnologin' => 'Net ageloggt',
+'prefsnologintext2' => 'Dir musst Iech $1 fir Är Benotzerastellunge festzeleeën',
 'changepassword' => 'Passwuert änneren',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Kucken',
@@ -1422,6 +1421,7 @@ Dës Informatioun ass ëffentlech.",
 'prefs-displayrc' => 'Optioune vun deem wat gewise gëtt',
 'prefs-displaysearchoptions' => 'Optioune vum Affichage',
 'prefs-displaywatchlist' => 'Optioune vun deem wat gewise gëtt',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Ënnerscheeder',
 'prefs-help-prefershttps' => 'Dës Astellung gëtt déi nächste Kéier wierksam wou Dir Iech ageloggt.',
 
@@ -1609,6 +1609,8 @@ Dës Informatioun ass ëffentlech.",
 'recentchanges-label-minor' => 'Dëst ass eng kleng Ännerung',
 'recentchanges-label-bot' => 'Dës Ännerung gouf vun engem Bot gemaacht',
 'recentchanges-label-unpatrolled' => 'Dës Ännerung gouf nach net nogekuckt',
+'recentchanges-legend-newpage' => '(kuckt och [[Special:NewPages|Lëscht vun den neie Säiten]])',
+'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnote' => "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht '''$1''' Ännerungen}} {{PLURAL:$2|vum leschten Dag|vun de leschten '''$2''' Deeg}}, Stand: $4 ëm $5 Auer.",
 'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
 'rclistfrom' => 'Nei Ännerunge vu(n) $1 u weisen',
@@ -2318,7 +2320,7 @@ Den Editeur kontaktéieren:
 E-Mail: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Et gi soulaang keng weider Maile geschéckt, bis Dir d\'Säit nees emol besicht hutt.
+Et gi soulaang keng weider Maile geschéckt, bis Dir d\'Säit nees emol besicht hutt wärend deem Dir ageloggt sidd.
 Op Ärer Iwwerwaachungslëscht kënnt Dir all Benoorichtigungsmarkeren zesummen zErécksetzen.
 
 
@@ -2330,7 +2332,7 @@ Fir d\'Astellungen op Ären E-Mailbenoriichtigungen z\'änneren, besicht w.e.g.
 {{canonicalurl:{{#special:Preferences}}}}
 
 
-Fir d\'Astellungen vun Ärer Iwwerwaachungslëscht z\'änneren, besicht w.e.g.
+Fir d\'Astellunge vun Ärer Iwwerwaachungslëscht z\'änneren, besicht w.e.g.
 {{canonicalurl:Special:Watchlist/edit}}
 
 Feedback a weider Hëllef:
@@ -3814,9 +3816,9 @@ Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/re
 
 # Special:SpecialPages
 'specialpages' => 'Spezialsäiten',
+'specialpages-note-top' => 'Erklärung',
 'specialpages-note' => '* Normal Spezialsäiten.
-* <span class="mw-specialpagerestricted">Spezialsäite fir Benotzer mat méi Rechter.</span>
-* <span class="mw-specialpagecached">Spezialsäiten aus dem Tëschespäicher (ka vereelst sinn).</span>',
+* <span class="mw-specialpagerestricted">Spezialsäite fir Benotzer mat méi Rechter.</span>',
 'specialpages-group-maintenance' => 'Maintenance-Rapporten',
 'specialpages-group-other' => 'Aner Spezialsäiten',
 'specialpages-group-login' => 'Aloggen / Benotzerkont uleeën',
@@ -4022,4 +4024,20 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|Byte|Byten}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|Byte|Byten}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Schablounen expandéieren',
+'expand_templates_intro' => 'Op dëser Spezialsäit kann Text agesat ginn an all Schablounen doran gi rekursiv expandéiert.
+Och Parserfonctioune wéi<code><nowiki>{{</nowiki>#language:…}}</code> a Variabele wéi
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>, ginn ausgewäert.
+Faktesch alles wat tëscht duebelen Accolade steet gëtt ausgewäert.',
+'expand_templates_title' => 'Titel vun der Säit, dëst kann nëtzlech si wa(nn) {{FULLPAGENAME}} benotzt gëtt:',
+'expand_templates_input' => 'Gitt ären Text hei an:',
+'expand_templates_output' => 'Resultat',
+'expand_templates_xml_output' => 'Resultat als XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Bemierkunge läschen',
+'expand_templates_remove_nowiki' => '<nowiki>-Taggen am Resultat suppriméieren',
+'expand_templates_generate_xml' => "Weis d'Struktur vum XML",
+'expand_templates_preview' => 'Kucken ouni ofzespäicheren',
+
 );
index 96e0bf8..849e641 100644 (file)
@@ -286,8 +286,6 @@ $messages = array(
 'ok' => 'ОК',
 'retrievedfrom' => 'Чешне "$1" я',
 'youhavenewmessages' => 'Квез $1 ($2) атанва.',
-'newmessageslink' => 'цӀийи чарар',
-'newmessagesdifflink' => 'Эхиримжи масакӀавилер',
 'youhavenewmessagesmulti' => '"$1"-да квез цӀийи чарар атанва.',
 'editsection' => 'Дуьзар хъувун',
 'editold' => 'Дуьзар хъувун',
@@ -621,7 +619,6 @@ $messages = array(
 'preferences' => 'Туькlуьрун',
 'mypreferences' => 'Зи низамарунар',
 'prefs-edits' => 'Дьузар хъувунрин кьадар',
-'prefsnologin' => 'Куьне гьахьнавач',
 'changepassword' => 'Парол дегишарун',
 'prefs-skin' => 'Къайдадиз ттунин тема',
 'skin-preview' => 'Сифтедин килигун',
index bf8f3fc..27d94f1 100644 (file)
@@ -228,8 +228,6 @@ $messages = array(
 'ok' => 'Oce',
 'retrievedfrom' => 'Retraeda de "$1"',
 'youhavenewmessages' => 'Tu ave $1 ($2).',
-'newmessageslink' => 'mesajes nova',
-'newmessagesdifflink' => 'cambia presedente',
 'youhavenewmessagesmulti' => 'Tu ave mesajes nova en $1',
 'editsection' => 'cambia',
 'editold' => 'edita',
@@ -955,4 +953,7 @@ Si la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en
 # Special:SpecialPages
 'specialpages' => 'Pajes spesial',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Oce',
+
 );
index b7bcdf1..7833d4d 100644 (file)
@@ -266,8 +266,6 @@ Kebera ku [[Special:Version|lukalala lw'empandika za MediaWiki]].",
 'ok' => 'Kale',
 'retrievedfrom' => 'Bino bigyidwa ku "$1"',
 'youhavenewmessages' => 'Ofunye $1 ($2).',
-'newmessageslink' => 'obubaka',
-'newmessagesdifflink' => "obusing'obupya",
 'youhavenewmessagesmulti' => 'Ku $1 bakuweerezza obubaka',
 'editsection' => 'kyusa',
 'editold' => 'kyusa',
index 3b12fe3..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' ),
@@ -414,8 +412,6 @@ $1',
 'ok' => 'ok',
 'retrievedfrom' => 'Aafkómstig van "$1"',
 'youhavenewmessages' => 'Doe höbs $1 ($2).',
-'newmessageslink' => 'nuuj berichte',
-'newmessagesdifflink' => 'Lèste verangering',
 'youhavenewmessagesmulti' => 'Doe höbs nuuj berichte op $1',
 'editsection' => 'bewèrk',
 'editold' => 'bewirke',
@@ -1154,7 +1150,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'preferences' => 'Veurkäöre',
 'mypreferences' => 'Mien veurkäöre',
 'prefs-edits' => 'Aantal bewèrkinge:',
-'prefsnologin' => 'Neet aangemèld',
 'changepassword' => 'Wachwaord verangere',
 'prefs-skin' => '{{SITENAME}}-uterlik',
 'skin-preview' => 'Veurbesjouwing',
@@ -1429,6 +1424,7 @@ Deze informatie is zichbaar veur angere gebroekers.',
 'recentchanges-label-minor' => "Dit is 'n klein bewirking",
 'recentchanges-label-bot' => "Dees bewirking is oetgeveurd door 'ne bot",
 'recentchanges-label-unpatrolled' => 'Dees bewirking is nog neet gekónterleerd',
+'recentchanges-legend-newpage' => '$1 - Nuuj pagina',
 'rcnote' => "Hiejónger {{PLURAL:$1|steit de lètste bewirking|staon de lètste '''$1''' bewirkinge}} van de aafgeloupe {{PLURAL:$2|daag|'''$2''' daag}}, op $4, um $5.",
 'rcnotefrom' => "Verangeringe sins <b>$2</b> (mit 'n maximum van <b>$1</b> verangeringe).",
 'rclistfrom' => 'Tuin de verangeringe vanaaf $1',
@@ -3668,4 +3664,18 @@ Anges kin se-n ouch \'t einvawdig formeleer hieónger gebroeke. Dien commentaar
 'duration-centuries' => '$1 {{PLURAL:$1|ieëf|ieëf}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Sjablone plekke',
+'expand_templates_intro' => "Dees speciaal pazjena laes de ingegaeve teks in en plektj (mitte functie subst) recursief alle sjablone in de teks. 't Plek ouch alle parserfuncties wie <nowiki>{{</nowiki>#language:...}} en variabele wie <nowiki>{{</nowiki>CURRENTDAY}} - vriejwaal al tösse dóbbel accolades.
+Hiej veur waere de relevante functies van de MediaWiki-parser gebroek.",
+'expand_templates_title' => 'Contekstitel, veur {{FULLPAGENAME}}, etc:',
+'expand_templates_input' => 'Inlaajteks:',
+'expand_templates_output' => 'Rezultaot',
+'expand_templates_xml_output' => 'XML-oetveur',
+'expand_templates_ok' => 'ok',
+'expand_templates_remove_comments' => 'Wis opmerkinge',
+'expand_templates_remove_nowiki' => "Óngerdrök <nowiki>-tags in 't resultaat",
+'expand_templates_generate_xml' => 'XML-parserboum bekieke',
+'expand_templates_preview' => 'Veurvertoeaning',
+
 );
index af13d6a..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' ),
@@ -384,8 +383,6 @@ $1",
 'ok' => "D'accòrdio",
 'retrievedfrom' => 'Estræto da "$1"',
 'youhavenewmessages' => "Ti gh'æ $1 ($2).",
-'newmessageslink' => 'Nêuvi messaggi',
-'newmessagesdifflink' => 'urtima modiffica',
 'youhavenewmessagesfromusers' => "Ti g'hæ $1 da {{PLURAL:$3|un atro utente|$3 utenti}} ($2).",
 'youhavenewmessagesmanyusers' => "Ti g'hæ $1 da tanti utenti ($2).",
 'newmessageslinkplural' => '{{PLURAL:$1|un noeuvo messaggio|noeuvi messaggi}}',
index 5418d93..00ea60d 100644 (file)
@@ -159,8 +159,6 @@ $messages = array(
 
 'retrievedfrom' => 'Ulzõ vȯtštõd "$1"',
 'youhavenewmessages' => 'Täddõn um $1 ($2)',
-'newmessageslink' => 'ūži tīeūţidi',
-'newmessagesdifflink' => 'perri mõitõks',
 'editsection' => 'redigīer',
 'editold' => 'redigīerõgid',
 'viewsourceold' => 'vaņ ovāt-tekstõ',
index bf2409b..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' ),
@@ -344,8 +343,6 @@ $1",
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Utegnüü de "$1"',
 'youhavenewmessages' => "A gh'hii di $1 ($2).",
-'newmessageslink' => 'messagg növ',
-'newmessagesdifflink' => 'diferenza cun la versión de prima',
 'youhavenewmessagesmulti' => "Te gh'hee di messagg növ ins'el $1",
 'editsection' => 'mudifega',
 'editold' => 'mudifega',
@@ -739,6 +736,7 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'recentchanges-label-minor' => "Quela chì l'è una mudifega piscinina.",
 'recentchanges-label-bot' => "Quela mudifega chì l'ha fada un bot",
 'recentchanges-label-unpatrolled' => "Quela mudifega chì a l'è stada mimga anmò verificada.",
+'recentchanges-legend-newpage' => '$1 - pagina növa',
 'rcnote' => "Chì de sota {{PLURAL:$1|gh'è '''1''' mudifega|a hinn i ültim '''$1''' mudifegh}} in di ültim {{PLURAL:$2|dì|'''$2''' dì}}, a partì dai $5 del $4.",
 'rcnotefrom' => "Chì de sota gh'è la lista di mudifegh de <b>$2</b> (fina a <b>$1</b>).",
 'rclistfrom' => 'Fà vidè i cambiament növ a partì de $1',
index 8d95c64..8e1a7d7 100644 (file)
@@ -42,7 +42,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'ການປະກອບສ່ວນ' ),
        'CreateAccount'             => array( 'ສ້າງບັນຊີ' ),
        'Deadendpages'              => array( 'ໜ້າທີ່ບໍ່ມີໜ້າໃດໂຍງມາ' ),
-       'Disambiguations'           => array( 'ແກ້ຄວາມກຳກວມ' ),
        'DoubleRedirects'           => array( 'ໂອນຊ້ອນ' ),
        'Listadmins'                => array( 'ລາຍຊື່ຜູ້ບໍລິຫານລະບົບ' ),
        'Listbots'                  => array( 'ລາຍຊື່ບອຕ' ),
@@ -294,8 +293,6 @@ $messages = array(
 'ok' => 'ຕົກລົງ',
 'retrievedfrom' => 'ຖອນມາຈາກ "$1"',
 'youhavenewmessages' => 'ທ່ານ ມີ $1 ($2).',
-'newmessageslink' => 'ຂໍ້ຄວາມໃໝ່',
-'newmessagesdifflink' => 'ການປ່ຽນແປງຫຼ້າສຸດ',
 'youhavenewmessagesmulti' => 'ທ່ານມີຂໍ້ຄວາມໃໝ່ ຢູ່ $1',
 'editsection' => 'ດັດແກ້',
 'editold' => 'ດັດແກ້',
@@ -954,4 +951,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:SpecialPages
 'specialpages' => 'ໜ້າພິເສດ',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ຂະຫຍາຍແມ່ແບບ',
+
 );
index ae71cc6..4f23f6d 100644 (file)
@@ -207,8 +207,6 @@ $messages = array(
 'ok' => 'lumelisize',
 'retrievedfrom' => 'Bulukezi ye ng\'i di "$1"',
 'youhavenewmessages' => 'A sa pozefisize $1 ($2).',
-'newmessageslink' => 'nca mulumiwani',
-'newmessagesdifflink' => 'nca petuho te-i',
 'youhavenewmessagesmulti' => 'Nca $1 mulumiwani',
 'editsection' => "hloli ye ng'i",
 'editold' => "hloli ye ng'i",
@@ -459,7 +457,6 @@ Informasi: (bye) = petuho a nca selt,
 'preferences' => 'Petohoni di sebelu',
 'mypreferences' => 'Zwa petohoni di sebelu',
 'prefs-edits' => "Hloli ye ng'inabi:",
-'prefsnologin' => 'Ni menuhile',
 'prefs-skin' => 'PendiBe',
 'skin-preview' => 'PendiBe',
 'datedefault' => 'Ni di petohoni di sebelu',
index f1e28cb..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' => 'بلگه حفاظت بيه',
@@ -251,8 +257,6 @@ $1',
 'ok' => 'خوئه',
 'retrievedfrom' => 'بازيافته د"$1"',
 'youhavenewmessages' => 'شما داريت $1($2)',
-'newmessageslink' => 'پيغوما تازه',
-'newmessagesdifflink' => 'آلشت آخری',
 'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
 'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
 'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
@@ -270,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»',
@@ -297,6 +302,7 @@ $1',
 # General errors
 'error' => 'خطا',
 'databaseerror' => 'خطا د جاگه دونسمنيا',
+'databaseerror-text' => 'یه خطا جست کردن د پایگا داده پیش اوما.یه ممکنه یه در کار ونن د نرم اوزار پیش بیاره',
 'databaseerror-textcl' => 'خطاجست گرتن پايگاه دونسمنيا پيشومد كرده',
 'databaseerror-query' => 'نوم گشتن: $1',
 'databaseerror-function' => 'تابع:$1',
@@ -347,6 +353,7 @@ $1',
 'remembermypassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
 'userlogin-remembermypassword' => 'منه مئن سيستم وادار',
 'userlogin-signwithsecure' => 'د وصل بيئن امن استفاده كو',
+'yourdomainname' => 'پوشگیر شما:',
 'password-change-forbidden' => 'شما نتونید پاسوردیانه د ای ویکی آلشت بکید',
 'login' => 'اومائن',
 'nav-login-createaccount' => ' اومائن د سيستم/راس كردن حساو',
@@ -383,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' => 'شما باید یه نوم کارور اختصاص بئیتو',
@@ -402,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
@@ -428,8 +441,11 @@ $1',
 'resetpass-temp-password' => 'رمز موقت:',
 
 # Special:PasswordReset
+'passwordreset' => 'د نۈ وارد كردن رمز',
 'passwordreset-legend' => 'د نۈ وارد كردن رمز',
 'passwordreset-username' => 'نوم كاروری:',
+'passwordreset-domain' => 'پوشگیر',
+'passwordreset-capture' => 'ایمیل نتیجه نه بوینیتو؟',
 'passwordreset-email' => 'نشونی ايميل',
 'passwordreset-emailsent' => 'پاسورد هنی سی ایمیل کل بیه.',
 
@@ -439,6 +455,7 @@ $1',
 'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
 'changeemail-newemail' => 'نشونی ایمیل تازه',
 'changeemail-none' => '(هيش كوم)',
+'changeemail-password' => 'شما {{SITENAME}} پاسورد:',
 'changeemail-submit' => 'آلشت کردن ایمیل',
 'changeemail-cancel' => 'رد كردن',
 
@@ -512,7 +529,9 @@ $1',
 پاک بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
 'moveddeleted-notice' => 'ای بلگه پاک بیه.
 پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
+'edit-conflict' => 'مخالفت نه ویرایشت بکید',
 'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
+'defaultmessagetext' => 'متن پیغوم پیش فرض',
 
 # Content models
 'content-model-wikitext' => 'ويكی متن',
@@ -529,6 +548,7 @@ $1',
 
 # History pages
 'viewpagelogs' => 'سی ای بلگه بوینتو.',
+'currentrev' => 'آخرین دوواره دیئن',
 'currentrev-asof' => 'آخرين دووار ديئن چی $1',
 'revisionasof' => 'دوواره ديئن $1',
 'revision-info' => 'دوواره سیل بیه چی $1 وا $2',
@@ -547,6 +567,7 @@ $1',
 'historyempty' => '(حالی)',
 
 # Revision feed
+'history-feed-title' => 'ویرگار دوواره دیئن',
 'history-feed-item-nocomment' => '$1 د
 $2',
 
@@ -554,14 +575,17 @@ $2',
 'rev-delundel' => 'آلشت وضئيت ديئن',
 'rev-showdeleted' => 'نشو دائن',
 'revdelete-show-file-submit' => 'هری',
-'revdelete-radio-set' => 'هری',
-'revdelete-radio-unset' => 'نه',
+'revdelete-hide-comment' => 'چکسه نه ویرایشت بکید',
+'revdelete-radio-same' => 'آلشت نکید',
+'revdelete-radio-set' => 'قام بیه',
+'revdelete-radio-unset' => 'دیینی',
 'revdelete-log' => 'دلیل:',
 'revdel-restore' => 'آلشت وضئيت ديئن',
 'revdel-restore-deleted' => 'پاك كردن مراجعيا',
 'revdel-restore-visible' => 'مراجعات ديئنی',
 'pagehist' => 'ويرگار بلگه',
 'deletedhist' => 'ویرگار پاک بیه',
+'revdelete-otherreason' => 'دلیل هنی:',
 'revdelete-reasonotherlist' => 'دلیل هنی',
 'revdelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
 
@@ -585,6 +609,7 @@ $2',
 'searchresults' => 'نتيجه يا پی جوری',
 'searchresults-title' => 'نتيجه يا پی جوری سی "$1"',
 'searchsubtitleinvalid' => 'شما پی جوریت سی',
+'titlematches' => 'عنوان بلگه مطاوقت داره',
 'prevn' => 'وادما {{PLURAL:$1|$1}}',
 'nextn' => 'نيايی {{PLURAL:$1|$1}}',
 'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
@@ -627,21 +652,27 @@ $2',
 'preferences' => 'خصوصيات هنی',
 'mypreferences' => 'خصوصيات هنی',
 'prefs-edits' => 'شماره ویرایشتا:',
-'prefsnologin' => 'نبوئه وارد بوئيد',
 'changepassword' => 'پاسورد نه آلشت بكيت',
 'prefs-skin' => 'پوست',
 'skin-preview' => 'پیش سیل',
+'prefs-datetime' => 'وخت و زمون',
+'prefs-user-pages' => 'بلگیا كارور',
+'prefs-personal' => 'پروفایل کارور',
+'prefs-rc' => 'آلشتیا تازه باو',
 'prefs-watchlist' => 'سیل برگ',
 'prefs-misc' => 'شيوسن',
 'prefs-resetpass' => 'پاسورد نه آلشت بكيت',
+'prefs-changeemail' => 'نشونی ایمیل تو نه آلشت بکید',
 'saveprefs' => 'ذخيره كردن',
 'prefs-editing' => 'د حالت ويرايشت',
 'rows' => 'رديفيا:',
 'columns' => 'ستينا:',
 'searchresultshead' => 'پی جوری',
+'stub-threshold-disabled' => 'د كار ونن',
 'timezonelegend' => 'وخت راساگه',
 'localtime' => 'وخت ولاتی:',
 'timezoneuseserverdefault' => 'وخت راساگه',
+'timezoneoffset' => 'آفست:',
 'servertime' => 'وخت سرور:',
 'timezoneregion-africa' => 'افرقا',
 'timezoneregion-america' => 'امركا',
@@ -660,29 +691,52 @@ $2',
 'youremail' => 'ايميل:',
 'yourrealname' => 'نوم راستكی:',
 'yourlanguage' => 'زون:',
+'yournick' => 'امضا تازه:',
 'email' => 'پیومک برقی',
 'prefs-help-email' => 'نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت',
 'prefs-help-email-others' => 'شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.
 نشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.',
 'prefs-editor' => 'ويرايشتگر',
 'prefs-preview' => 'پیش سیل',
+'prefs-diffs' => 'فرخیا',
 
 # 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' => 'ای بلگه نه پاک نکو',
+'action-sendemail' => 'ایمیلیانه کل کو',
 
 # Recent changes
 'nchanges' => '$1 {{جمی:$1|آلشت|آلشتیا}}',
+'enhancedrc-history' => 'ويرگار',
 'recentchanges' => 'تغيريا تازه',
 'recentchanges-legend' => 'گزينه يا آلشتيا تازه',
 'recentchanges-feed-description' => 'دو بیشتر آلشتیا تازباو نه د ویکی که ها د هوال حون پیگری کو.',
@@ -707,6 +761,7 @@ $2',
 'minoreditletter' => 'م',
 'newpageletter' => 'ن',
 'boteditletter' => 'ب',
+'rc_categories_any' => 'هرکوم',
 'rc-enhanced-expand' => 'جزيات نشون بيئه',
 'rc-enhanced-hide' => 'جزياته قام كو',
 
@@ -722,16 +777,37 @@ $2',
 # Upload
 'upload' => 'بلم گير كردن فايلا',
 'uploadlogpage' => 'سوارکرد',
+'filename' => 'نوم فایل',
 'filedesc' => 'چكسته',
+'fileuploadsummary' => 'چکسه',
+'filesource' => 'سرچشمه:',
 'uploadedimage' => 'سوارکرد"[[$1]]"',
+'upload-source' => 'سرچشمه فایل',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'دسرسی منع بی',
 
 'license' => 'ليانس دار بيئن',
 'license-header' => 'د شكل ليسانس دار بيئن',
 
+# Special:ListFiles
+'imgfile' => 'فايل',
+'listfiles_thumb' => 'بن کلکی',
+'listfiles_date' => 'تاريخ',
+'listfiles_name' => 'نوم',
+'listfiles_user' => 'كارور',
+'listfiles_size' => 'انازه',
+'listfiles_count' => 'نسقیا',
+'listfiles-latestversion' => 'نسقه تازه',
+'listfiles-latestversion-yes' => 'هری',
+'listfiles-latestversion-no' => 'نه',
+
 # File description page
 'file-anchor-link' => 'فايل',
 'filehist' => 'ويرگار فايل',
 'filehist-help' => 'ری  ويرگاريا بپورنيت تا نسقه مرتوط بونيت.',
+'filehist-deleteall' => 'همه نه پاک کو',
+'filehist-deleteone' => 'پاك كردن',
 'filehist-revert' => 'ورگنین',
 'filehist-current' => 'تازه باو',
 'filehist-datetime' => 'ويرگار/وخت',
@@ -739,6 +815,7 @@ $2',
 'filehist-thumbtext' => 'كؤچك كردن سی  نسقه چی $1',
 'filehist-user' => 'كارور',
 'filehist-dimensions' => 'بعديا',
+'filehist-filesize' => 'انازه فایل',
 'filehist-comment' => 'نظر',
 'imagelinks' => 'استفاده د فايل',
 'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
@@ -746,11 +823,34 @@ $2',
 'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
 توضی دباره[$2 file description page] د هار نشو دئئه بیه',
 
+# File deletion
+'filedelete-comment' => 'دليل:',
+'filedelete-submit' => 'پاك كردن',
+
+# MIME search
+'download' => 'گرتن',
+
+# Unused templates
+'unusedtemplateswlh' => 'هوم پیوندیا هنی',
+
 # Random page
 'randompage' => 'بلگه بختكی',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'رو',
+
 # Statistics
 'statistics' => 'آماريا',
+'statistics-pages' => 'بلگیا',
+'statistics-users-active' => 'کاروریا کارکو',
+
+'pageswithprop-submit' => 'رو',
+
+'brokenredirects-edit' => 'ویرایشت',
+'brokenredirects-delete' => 'پاك كردن',
+
+'withoutinterwiki-legend' => 'پیشون',
+'withoutinterwiki-submit' => 'نشون دائن',
 
 # Miscellaneous special pages
 'nbytes' => '$1{{PLURAL:$1|كلی|بايت|بايت}}',
index 15f7a9e..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' ),
@@ -458,8 +456,6 @@ $1',
 'ok' => 'Gerai',
 'retrievedfrom' => 'Gauta iš „$1“',
 'youhavenewmessages' => 'Jūs turite $1 ($2).',
-'newmessageslink' => 'naujų žinučių',
-'newmessagesdifflink' => 'paskutinis pakeitimas',
 'youhavenewmessagesfromusers' => 'Jūs gavote $1 nuo {{PLURAL:$3|kito vartotojo|$3 vartotojų}} ($2).',
 'youhavenewmessagesmanyusers' => 'Jūs turite $1 iš daugelio vartotojų ( $2 ) .',
 'newmessageslinkplural' => '{{PLURAL:$1|naują žinutę|naujų žinučių}}',
@@ -1264,7 +1260,6 @@ Prašome patikrinti sąrašus.',
 'preferences' => 'Nustatymai',
 'mypreferences' => 'Nustatymai',
 'prefs-edits' => 'Keitimų skaičius:',
-'prefsnologin' => 'Neprisijungęs',
 'changepassword' => 'Pakeisti slaptažodį',
 'prefs-skin' => 'Išvaizda',
 'skin-preview' => 'Peržiūra',
@@ -1551,6 +1546,7 @@ teisės",
 'recentchanges-label-minor' => 'Tai smulkus pakeitimas',
 'recentchanges-label-bot' => 'Šį keitimą atliko automatinė programa',
 'recentchanges-label-unpatrolled' => 'Šis keitimas dar nebuvo patikrintas',
+'recentchanges-legend-newpage' => '$1 - naujas puslapis',
 'rcnote' => "Žemiau yra {{PLURAL:$1|'''1''' pakeitimas|paskutiniai '''$1''' pakeitimai|paskutinių '''$1''' pakeitimų}} per {{PLURAL:$2|dieną|paskutiniąsias '''$2''' dienas|paskutiniųjų '''$2''' dienų}} skaičiuojant nuo $5, $4.",
 'rcnotefrom' => "Žemiau yra pakeitimai pradedant '''$2''' (rodoma iki '''$1''' pakeitimų).",
 'rclistfrom' => 'Rodyti naujus pakeitimus pradedant $1',
@@ -3940,4 +3936,10 @@ Kitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentar
 'duration-centuries' => '$1 {{PLURAL:$1|amžius|amžiai|amžių}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tūkstantmetis|tūkstantmečiai|tūkstantmečių}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Rezultatas',
+'expand_templates_ok' => 'Gerai',
+'expand_templates_remove_comments' => 'Pašalinti komentarus',
+'expand_templates_preview' => 'Peržiūra',
+
 );
index 564afea..9640eee 100644 (file)
@@ -205,8 +205,6 @@ $messages = array(
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Atdabuot nu "$1"',
 'youhavenewmessages' => 'Tu dabuoji $1 ($2).',
-'newmessageslink' => 'jaunus viestejumus',
-'newmessagesdifflink' => 'pādejā pataise',
 'editsection' => 'pataiseit',
 'editold' => 'pataiseit',
 'editlink' => 'pataiseit',
index 72e6c7b..a860c3b 100644 (file)
@@ -272,8 +272,6 @@ $1',
 'ok' => 'Aw le',
 'retrievedfrom' => '"$1" aṭanga lâk chhuah',
 'youhavenewmessages' => '($2) $1 i nei.',
-'newmessageslink' => 'thudawn thar',
-'newmessagesdifflink' => 'tihdanglam thar',
 'youhavenewmessagesfromusers' => 'Hmangtu dang {{PLURAL:$3|pakhat|$3}} hnên aṭang $1 i nei ($2)',
 'youhavenewmessagesmanyusers' => 'Hmangtu dang tamtak hnên aṭang $1 i nei nual ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|thudawn thar}}',
@@ -770,7 +768,6 @@ Google hmangin i lo zawng hrih thei ang.
 'preferences' => 'Duhdàn',
 'mypreferences' => 'Duhthlanna',
 'prefs-edits' => 'Siamţhat zât',
-'prefsnologin' => 'I la lût lo',
 'changepassword' => 'Thurûk thlâkna',
 'prefs-skin' => 'Vun',
 'skin-preview' => 'Enchhinna',
index 50694c0..f3e2af9 100644 (file)
@@ -324,8 +324,6 @@ $1',
 'ok' => 'Labi',
 'retrievedfrom' => 'Saturs iegūts no "$1"',
 'youhavenewmessages' => 'Tev ir $1 (skatīt $2).',
-'newmessageslink' => 'jauns vēstījums',
-'newmessagesdifflink' => 'pēdējā izmaiņa',
 'newmessageslinkplural' => '{{PLURAL:$1|jauns vēstījums|jauni vēstījumi}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|pēdējā izmaiņa|pēdējās izmaiņas}}',
 'youhavenewmessagesmulti' => 'Tev ir jauns ziņojums: $1',
@@ -1026,7 +1024,6 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
 'preferences' => 'Izvēles',
 'mypreferences' => 'Izvēles',
 'prefs-edits' => 'Izmaiņu skaits:',
-'prefsnologin' => 'Neesi iegājis',
 'changepassword' => 'Mainīt paroli',
 'prefs-skin' => 'Apdare',
 'skin-preview' => 'Priekšskats',
@@ -1295,6 +1292,7 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'recentchanges-label-minor' => 'Šī ir maznozīmīga izmaiņa',
 'recentchanges-label-bot' => 'Šī ir bota veikta izmaiņa',
 'recentchanges-label-unpatrolled' => 'Šis labojums vēl nav pārbaudīts',
+'recentchanges-legend-newpage' => '$1 - jauna lapa',
 'rcnote' => 'Šobrīd ir {{PLURAL:$1|redzama pēdējā <strong>$1</strong> izmaiņa, kas izdarīta|redzamas pēdējās <strong>$1</strong> izmaiņas, kas izdarītas}} {{PLURAL:$2|pēdējā|pēdējās}} <strong>$2</strong> {{PLURAL:$2|dienā|dienās}} (līdz $4, $5).',
 'rcnotefrom' => "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
 'rclistfrom' => 'Parādīt jaunas izmaiņas kopš $1',
@@ -3243,4 +3241,9 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'limitreport-templateargumentsize' => 'Veidnes argumenta izmērs',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|baits|baiti}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Rezultāts',
+'expand_templates_ok' => 'Labi',
+'expand_templates_preview' => 'Pirmskats',
+
 );
index 24bb636..625229e 100644 (file)
@@ -34,7 +34,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '增簿' ),
        'Deadendpages'              => array( '此無路也' ),
        'DeletedContributions'      => array( '已刪之積' ),
-       'Disambiguations'           => array( '釋義' ),
        'DoubleRedirects'           => array( '窮渡' ),
        'EditWatchlist'             => array( '治哨站' ),
        'Emailuser'                 => array( '遺書' ),
@@ -423,8 +422,6 @@ $1',
 'ok' => '可',
 'retrievedfrom' => '取自"$1"',
 'youhavenewmessages' => '有$1書至子書房也。($2)',
-'newmessageslink' => '新訊',
-'newmessagesdifflink' => '變更',
 'youhavenewmessagesfromusers' => '子有 $1 自 {{PLURAL:$3|一簿戶也|$3 簿戶也}} ($2)。',
 'youhavenewmessagesmanyusers' => '子有 $1 自多簿戶 ( $2 )',
 'newmessageslinkplural' => '{{PLURAL:$1|一新訊息|新訊息}}',
@@ -1094,7 +1091,6 @@ $1",
 'preferences' => '簿註',
 'mypreferences' => '簿註',
 'prefs-edits' => '數計:',
-'prefsnologin' => '未登簿',
 'changepassword' => '易符節',
 'prefs-skin' => '面版',
 'skin-preview' => '草覽',
@@ -1359,6 +1355,7 @@ $1",
 'recentchanges-label-minor' => '此乃細纂',
 'recentchanges-label-bot' => '此乃機纂',
 'recentchanges-label-unpatrolled' => '是纂未巡',
+'recentchanges-legend-newpage' => '$1 - 新頁',
 'rcnote' => "下為自$4$5起,'''$2'''日內'''$1'''近易也。",
 'rcnotefrom' => "下為自'''$2'''至'''$1'''之易也。",
 'rclistfrom' => '自$1起之易也',
index a936fc5..50aeb3f 100644 (file)
@@ -286,8 +286,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'प्राप्ति स्थल "$1"',
 'youhavenewmessages' => 'अहाँ लग अछि $1 ($2).',
-'newmessageslink' => 'नव संदेश सभ',
-'newmessagesdifflink' => 'अन्तिम परिवर्तन',
 'youhavenewmessagesmulti' => '$1 पर अहाँ लेल नव सन्देश अछि',
 'editsection' => 'संपादन करू',
 'editold' => 'सम्पादित करू',
@@ -1022,7 +1020,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'preferences' => 'विकल्प',
 'mypreferences' => 'खासमखास',
 'prefs-edits' => 'सम्पादनक संख्या',
-'prefsnologin' => 'सम्प्रवेशित नै',
 'changepassword' => 'कूटशब्द बदलू',
 'prefs-skin' => 'रूप',
 'skin-preview' => 'पूर्वावलोकन',
index e055ad8..93b6549 100644 (file)
@@ -289,8 +289,6 @@ Deleng [[Special:Version|kaca versi]].',
 'ok' => 'OK',
 'retrievedfrom' => 'Ditampa sekang "$1"',
 'youhavenewmessages' => 'Rika duwe $1 ($2).',
-'newmessageslink' => 'pesen anyar',
-'newmessagesdifflink' => 'owahan keri dhewek',
 'youhavenewmessagesfromusers' => 'Rika nduwe $1 sekang {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).',
 'youhavenewmessagesmanyusers' => 'Rika nduwe $1 sekang akeh panganggo ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|pesen anyar|pesen anyar}}',
@@ -978,7 +976,6 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
 'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Durung mlebu log',
 'changepassword' => 'Ganti tembung sandhi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratayang',
index b276079..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( 'Вимс' ),
@@ -398,8 +396,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '"$1"ста сявф',
 'youhavenewmessages' => 'Тонь ули $1 ($2).',
-'newmessageslink' => 'Од сёрмат',
-'newmessagesdifflink' => 'мекольце полафтома',
 'youhavenewmessagesfromusers' => 'Тонь $1 {{PLURAL:$3|тага фкя тиить эзда|$3 тиихнень эзда}} ($2).',
 'youhavenewmessagesmanyusers' => 'Тонь $1 лама тиихнень эзда ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|од сёрма|од сёрмат}}',
@@ -1026,7 +1022,6 @@ $3 макссь туфталсь - ''$2''",
 'preferences' => 'Арафнематне',
 'mypreferences' => 'Монь латцемане',
 'prefs-edits' => 'Петнематнень лувсна:',
-'prefsnologin' => 'Апак сувак',
 'changepassword' => 'Сувама валть полафтомс',
 'prefs-skin' => 'Ванфонь латцема',
 'skin-preview' => 'Васень няфтема',
index b2b6621..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' ),
@@ -492,8 +490,6 @@ Mitaky version $1-n'i MediaWiki",
 'pagetitle' => '$1 - {{SITENAME}}',
 'retrievedfrom' => 'Hita tao amin\'ny "$1"',
 'youhavenewmessages' => 'Manana $1 ($2).',
-'newmessageslink' => 'hafatra vaovao',
-'newmessagesdifflink' => 'fanovana farany',
 'youhavenewmessagesfromusers' => "Manana $1 avy amin'ny mpikambana {{PLURAL:$3|hafa|$3}} ($2).",
 'youhavenewmessagesmanyusers' => "Manana $1 avy amin'ny mpikambana maro ($2).",
 'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray|hafatra maro}}',
@@ -1343,7 +1339,6 @@ ihany no miseho amin'ny vokatry ny karoka).",
 'preferences' => 'Ny momba anao',
 'mypreferences' => 'Safidy',
 'prefs-edits' => 'isa ny fanovàna :',
-'prefsnologin' => 'Tsy tafiditra',
 'changepassword' => 'Hanova tenimiafina',
 'prefs-skin' => 'Endrika',
 'skin-preview' => 'Tsipalotra',
@@ -1638,6 +1633,7 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'recentchanges-label-minor' => 'Kely fotsiny ity fanovana ity',
 'recentchanges-label-bot' => "Nataon'ny rôbô ity fanovana ity.",
 'recentchanges-label-unpatrolled' => 'Ity fanovana ity dia mbola tsy voamarina',
+'recentchanges-legend-newpage' => '$1 - pejy vaovao',
 'rcnote' => "!Ity ny {{PLURAL:$1|fanovàna farany|fanovàna farany}} $1 natao nandritra ny <b>$2</b> andro, hatramin'ny $4 tamin'ny ora faha $5.",
 'rcnotefrom' => "Ity eto ambany ity ny lisitry ny vao niova manomboka ny <b>$2</b> (hatramin'ny <b>$1</b> no miseho).",
 'rclistfrom' => 'Asehoy izay vao niova manomboka ny $1',
index aa005f6..1c504f3 100644 (file)
@@ -230,7 +230,7 @@ $messages = array(
 'errorpagetitle' => 'Йоҥылыш',
 'returnto' => '$1 деке пӧртылаш.',
 'tagline' => '{{SITENAME}} гыч',
-'help' => 'Ð\9fолÑ\88Ñ\8bÑ\88',
+'help' => 'Полыш',
 'search' => 'Кычалмаш',
 'searchbutton' => 'Кычалаш',
 'go' => 'Куснаш',
@@ -298,8 +298,6 @@ $messages = array(
 'ok' => 'Йӧра',
 'retrievedfrom' => 'Налме вер — "$1"',
 'youhavenewmessages' => 'Тендан $1 уло ($2).',
-'newmessageslink' => 'У серыш',
-'newmessagesdifflink' => 'пытартыш тӧрлатымаш',
 'editsection' => 'тӧрлаташ',
 'editold' => 'тӧрлаташ',
 'viewsourceold' => 'тӱҥалтыш текстым ончалаш',
@@ -654,6 +652,7 @@ $messages = array(
 'recentchanges-label-minor' => 'Тиде изи тӧрлатымаш',
 'recentchanges-label-bot' => 'Тиде тӧрлатымашым бот ыштен',
 'recentchanges-label-unpatrolled' => 'Тиде тӧрлатымашым нигӧ терген огыл',
+'recentchanges-legend-newpage' => '$1 - у лаштык',
 'rcnote' => "Ӱлнӧ {{PLURAL:$1|'''1'''|'''$1'''}} вашталтыш пытартыш {{PLURAL:$2||'''$2'''}} кечылан, $5-лан, $4-лан.",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
 'rclistfrom' => '$1 гыч тӱҥалын у вашталтымашым ончыкташ',
@@ -1158,4 +1157,8 @@ $messages = array(
 
 #Размещайте фрагменты регулярных выражений над этой строчкой. Оставьте эту строчку такой, как она есть.</pre>',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Йӧра',
+'expand_templates_preview' => 'Ончылгоч ончымаш',
+
 );
index c6ddd82..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(
@@ -386,8 +437,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Didapek dari "$1"',
 'youhavenewmessages' => 'Sanak punyo $1 ($2).',
-'newmessageslink' => 'pasan baru',
-'newmessagesdifflink' => 'parubahan tarakhia',
 'youhavenewmessagesfromusers' => 'Sanak mandapek $1 dari {{PLURAL:$3|$3 pangguno}} ($2)',
 'youhavenewmessagesmanyusers' => 'Sanak mandapek $1 dari banyak pangguno ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|pasan baru}}',
@@ -1157,7 +1206,6 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'preferences' => 'Pangaturan',
 'mypreferences' => 'Pangaturan',
 'prefs-edits' => 'Jumlah suntiangan:',
-'prefsnologin' => 'Alun masuak log',
 'changepassword' => 'Tuka kato sandi',
 'prefs-skin' => 'Kulik',
 'skin-preview' => 'Caliak',
@@ -2648,4 +2696,13 @@ Sanak mustilah alah manarimo [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi P
 # Image rotation
 'rotate-comment' => 'Gambar diputa $1 {{PLURAL:$1|darajaik}} saarah jarum jam',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Pangambangan templat',
+'expand_templates_input' => 'Teks masuakan:',
+'expand_templates_output' => 'Hasil',
+'expand_templates_xml_output' => 'Hasil XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Hapuih komentar',
+'expand_templates_preview' => 'Pratonton',
+
 );
index af9ec37..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:' ),
@@ -626,11 +630,9 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Преземено од „$1“',
 'youhavenewmessages' => 'Имате $1 ($2).',
-'newmessageslink' => 'нови пораки',
-'newmessagesdifflink' => 'скорешна промена',
 'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|еден корисник|$3 корисници}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 од многу корисници ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нова порака|нови пораки}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нова порака|999=нови пораки}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|последна промена|999=последни промени}}',
 'youhavenewmessagesmulti' => 'Имате нови пораки на $1',
 'editsection' => 'уреди',
@@ -1503,7 +1505,6 @@ $1",
 'preferences' => 'Нагодувања',
 'mypreferences' => 'нагодувања',
 'prefs-edits' => 'Број на уредувања:',
-'prefsnologin' => 'Не сте најавени',
 'prefsnologintext2' => 'Треба да сте $1 за да можете да ги поставувате корисничките нагодувања.',
 'changepassword' => 'Смени лозинка',
 'prefs-skin' => 'Руво',
@@ -1805,6 +1806,9 @@ $1",
 'recentchanges-label-minor' => 'Ова е ситна промена',
 'recentchanges-label-bot' => 'Ова уредување е направено од бот',
 'recentchanges-label-unpatrolled' => 'Ова уредување сè уште не е испатролирано',
+'recentchanges-label-plusminus' => 'Промена на големината на страницата во бајти',
+'recentchanges-legend-newpage' => '(погл. и [[Special:NewPages|списокот на нови страници]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Подолу {{PLURAL:$1|е прикажана '''1''' промена|се прикажани последните '''$1''' промени}} {{PLURAL:$2|за денес|во последниве '''$2''' дена}}, заклучно со $5, $4.",
 'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
 'rclistfrom' => 'Прикажи нови промени почнувајќи од $1',
@@ -4466,4 +4470,21 @@ $5
 'limitreport-expansiondepth' => 'Најголема длабочина на проширувањето',
 'limitreport-expensivefunctioncount' => 'Бр. на сложени парсерски функции',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Прошири шаблони',
+'expand_templates_intro' => 'Оваа специјална страница зема еден текст и рекурзивно ги проширува сите шаблони во него.
+Исто така проширува и парсерски функции како
+<code><nowiki>{{</nowiki>#language:…}}</code> и променливи како
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Всушност, го проширува сето она што стои во двојни аглести загради.',
+'expand_templates_title' => 'Наслов на контекстот, за {{FULLPAGENAME}} и тн.:',
+'expand_templates_input' => 'Влезен текст:',
+'expand_templates_output' => 'Извод',
+'expand_templates_xml_output' => 'XML излез',
+'expand_templates_ok' => 'ОК',
+'expand_templates_remove_comments' => 'Отстрани коментари',
+'expand_templates_remove_nowiki' => 'Притаи <nowiki> ознаки во резултатот',
+'expand_templates_generate_xml' => 'Прикажи XML дрво на парсирање',
+'expand_templates_preview' => 'Преглед',
+
 );
index b383d81..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' ),
@@ -615,12 +627,10 @@ $1',
 'ok' => 'ശരി',
 'retrievedfrom' => '"$1" എന്ന താളിൽനിന്നു ശേഖരിച്ചത്',
 'youhavenewmessages' => 'താങ്കൾക്ക് $1 ഉണ്ട് ($2).',
-'newmessageslink' => 'പുതിയ സന്ദേശങ്ങൾ',
-'newmessagesdifflink' => 'അവസാന മാറ്റം',
 'youhavenewmessagesfromusers' => 'താങ്കൾക്ക് {{PLURAL:$3|ഒരു ഉപയോക്താവ്|$3 ഉപയോക്താക്കൾ}} $1 ചേർത്തിട്ടുണ്ട് ($2).',
 'youhavenewmessagesmanyusers' => 'താങ്കൾക്ക് പലർ $1 ചേർത്തിട്ടുണ്ട് ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|à´ªàµ\81തിയ à´¸à´¨àµ\8dà´¦àµ\87à´¶à´\82|പുതിയ സന്ദേശങ്ങൾ}}',
-'newmessagesdifflinkplural' => 'അവസാന {{PLURAL:$1|മാറ്റം|മാറ്റങ്ങൾ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|à´ªàµ\81തിയ à´\92à´°àµ\81 à´¸à´¨àµ\8dà´¦àµ\87à´¶à´\82|999=പുതിയ സന്ദേശങ്ങൾ}}',
+'newmessagesdifflinkplural' => 'അവസാന {{PLURAL:$1|മാറ്റം|999=മാറ്റങ്ങൾ}}',
 'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1 താളിൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
 'editsection' => 'തിരുത്തുക',
 'editold' => 'തിരുത്തുക',
@@ -761,7 +771,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''താങ്കൾ ഇപ്പോൾ {{SITENAME}} സംരംഭത്തിൽനിന്നും ലോഗൗട്ട് ചെയ്തിരിക്കുന്നു'''
 
-താà´\99àµ\8dà´\95ൾ à´µàµ\86à´¬àµ\8d à´¬àµ\8dà´°àµ\8cസറിന്റെ ക്യാഷെ ശൂന്യമാക്കിയിട്ടില്ലെങ്കിൽ ചില താളുകളിൽ താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കുന്നതായി കാണിക്കാൻ സാധ്യതയുണ്ട്.",
+താà´\99àµ\8dà´\95ൾ à´µàµ\86à´¬àµ\8d à´¬àµ\8dà´°àµ\97സറിന്റെ ക്യാഷെ ശൂന്യമാക്കിയിട്ടില്ലെങ്കിൽ ചില താളുകളിൽ താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കുന്നതായി കാണിക്കാൻ സാധ്യതയുണ്ട്.",
 'welcomeuser' => 'സ്വാഗതം, $1!',
 'welcomecreation-msg' => 'താങ്കളുടെ അംഗത്വം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു.
 താങ്കളുടെ [[Special:Preferences|{{SITENAME}} ക്രമീകരണങ്ങളിൽ]] മാറ്റം വരുത്താൻ മറക്കരുത്.',
@@ -1449,7 +1459,6 @@ $1",
 'preferences' => 'ക്രമീകരണങ്ങൾ',
 'mypreferences' => 'ക്രമീകരണങ്ങൾ',
 'prefs-edits' => 'ആകെ തിരുത്തുകൾ:',
-'prefsnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
 'prefsnologintext2' => 'താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി $1.',
 'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
 'prefs-skin' => 'ദൃശ്യരൂപം',
@@ -1509,7 +1518,7 @@ $1",
 'timezoneregion-indian' => 'ഇന്ത്യൻ മഹാസമുദ്രം',
 'timezoneregion-pacific' => 'ശാന്തസമുദ്രം',
 'allowemail' => 'എനിക്ക് എഴുത്തയക്കാൻ മറ്റുള്ളവരെ അനുവദിക്കുക',
-'prefs-searchoptions' => 'തിരയàµ\81à´\95',
+'prefs-searchoptions' => 'തിരà´\9aàµ\8dà´\9aിൽ',
 'prefs-namespaces' => 'നാമമേഖലകൾ',
 'defaultns' => 'അല്ലെങ്കിൽ ഈ നാമമേഖലകളിൽ തിരയുക:',
 'default' => 'സ്വതേ',
@@ -1748,8 +1757,10 @@ $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|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)',
 'rcnote' => "കഴിഞ്ഞ {{PLURAL:$2|ദിവസം|'''$2''' ദിവസങ്ങൾക്കുള്ളിൽ}} സംഭവിച്ച, {{PLURAL:$1|'''1''' തിരുത്തൽ|'''$1''' തിരുത്തലുകൾ}} താഴെക്കാണാം. ശേഖരിച്ച സമയം: $4, $5.",
 'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങൾ (<b>$1</b> എണ്ണം വരെ കാണാം).',
 'rclistfrom' => '$1 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
@@ -2469,8 +2480,9 @@ $NEWPAGE
 മെയിൽ: $PAGEEDITOR_EMAIL
 വിക്കി: $PAGEEDITOR_WIKI
 
-താങ്കൾ ഈ താൾ സന്ദർശിക്കുന്നില്ലങ്കിൽ മറ്റ് അറിയിപ്പുകൾ ഒന്നുമുണ്ടാകുന്നതല്ല. ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക സന്ദർശിച്ചും ഉൾപ്പെട്ട താളുകളിലെ അറിയിപ്പ് മുദ്രകൾ താങ്കൾക്ക് പുനഃക്രമീകരിക്കാവുന്നതാണ്‌.
-             താങ്കളുടെ {{SITENAME}} സുഹൃദ് അറിയിപ്പ് സജ്ജീകരണം
+താങ്കൾ ലോഗിൻ ചെയ്ത് ഈ താൾ സന്ദർശിക്കുന്നില്ലങ്കിൽ മറ്റ് അറിയിപ്പുകൾ ഒന്നുമുണ്ടാകുന്നതല്ല. ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക സന്ദർശിച്ചും ഉൾപ്പെട്ട താളുകളിലെ അറിയിപ്പ് മുദ്രകൾ താങ്കൾക്ക് പുനഃക്രമീകരിക്കാവുന്നതാണ്‌.
+
+താങ്കളുടെ {{SITENAME}} സുഹൃദ് അറിയിപ്പ് സജ്ജീകരണം
 
 --
 ഇമെയിൽ അറിയിപ്പ് സജ്ജീകരണങ്ങളിൽ മാറ്റംവരുത്താൻ, സന്ദർശിക്കുക
@@ -3767,7 +3779,7 @@ $1',
 'limitall' => 'എല്ലാം',
 
 # Email address confirmation
-'confirmemail' => 'ഇ-മെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
+'confirmemail' => 'ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
 'confirmemail_noemail' => '[[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളുടെ കൂടെ]] സാധുവായൊരു ഇ-മെയിൽ വിലാസം സജ്ജീകരിച്ചിട്ടില്ല.',
 'confirmemail_text' => '{{SITENAME}} സം‌രംഭത്തിൽ ഇ-മെയിൽ സൗകര്യം ഉപയോഗിക്കണമെങ്കിൽ താങ്കൾ താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിന്റെ സാധുത തെളിയിച്ചിരിക്കണം. താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് സ്ഥിരീകരണ മെയിൽ അയക്കുവാൻ താഴെയുള്ള ബട്ടൺ അമർത്തുക. താങ്കൾക്ക് അയക്കുന്ന ഇ-മെയിലിൽ ഒരു സ്ഥിരീകരണ കോഡ് ഉണ്ട്. ആ കോഡിൽ അമർത്തിയാൽ താങ്കളുടെ വിലാസത്തിന്റെ സാധുത തെളിയിക്കപ്പെടും.',
 'confirmemail_pending' => 'താങ്കളുടെ അംഗത്വം ഈ അടുത്ത് ഉണ്ടാക്കിയതാണെങ്കിൽ,  ഒരു സ്ഥിരീകരണ കോഡ് താങ്കൾക്ക് ഇ-മെയിൽ ചെയ്തിട്ടുണ്ട്.  പുതിയ സ്ഥിരീകരണ കോഡ് ആവശ്യപ്പെടാൻ ശ്രമിക്കുന്നതിനു മുൻപ് ആദ്യത്തെ സ്ഥിരീകരണ കോഡിനായി കുറച്ച് സമയം കാത്തിരിക്കൂ.',
@@ -3992,8 +4004,7 @@ $5
 'specialpages' => 'പ്രത്യേക താളുകൾ',
 'specialpages-note-top' => 'സൂചന',
 'specialpages-note' => '* പൊതുവേ ഉപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.
-* <strong class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രത്യേക താളുകൾ.</strong>
-* <span class="mw-specialpagecached">പ്രാദേശികമായി സംഭരിച്ചുപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.</span>',
+* <span class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രത്യേക താളുകൾ.</span>',
 'specialpages-group-maintenance' => 'പരിചരണം ആവശ്യമായവ',
 'specialpages-group-other' => 'മറ്റു പ്രത്യേക താളുകൾ',
 'specialpages-group-login' => 'പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക',
@@ -4206,4 +4217,20 @@ $5
 'limitreport-expansiondepth' => 'വികസിപ്പിക്കാനാവുന്ന ഉയർന്ന പരിധി',
 'limitreport-expensivefunctioncount' => 'വ്യയമേറിയ പാഴ്സർ ഫങ്ഷൻ എണ്ണം',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ഫലകങ്ങൾ വികസിപ്പിക്കുക',
+'expand_templates_intro' => 'ഈ പ്രത്യേക താൾ, ചില എഴുത്തുകൾ എടുത്ത് എല്ലാ ഫലകങ്ങളും പുനരാവർത്തിത സ്വഭാവത്തോടെ വികസിപ്പിക്കുന്നു.
+<code><nowiki>{{</nowiki>#എങ്കിൽ:…}}</code> തുടങ്ങിയ പാഴ്‌സർ ഫങ്ഷനുകളും
+<code><nowiki>{{</nowiki>ഈദിവസം}}</code> തുടങ്ങിയ ചരങ്ങളും, ഈ താൾ വികസിപ്പിക്കുന്നുണ്ട്.
+ചുരുക്കിപറഞ്ഞാൽ ഇരട്ട കോഷ്ഠകങ്ങളിലുള്ള എന്തിനേയും വികസിപ്പിക്കുന്നു.',
+'expand_templates_title' => '{{FULLPAGENAME}} മുതലായവ എടുക്കാനായി ഉള്ളടക്കത്തിന്റെ തലക്കെട്ട്:',
+'expand_templates_input' => 'ഇൻപുട്ട് ടെക്സ്റ്റ്:',
+'expand_templates_output' => 'ഫലം',
+'expand_templates_xml_output' => 'എക്സ്.എം.എൽ. ഔട്ട്പുട്ട്',
+'expand_templates_ok' => 'ശരി',
+'expand_templates_remove_comments' => 'അഭിപ്രായങ്ങൾ ഒഴിവാക്കുക',
+'expand_templates_remove_nowiki' => 'ഫലങ്ങളിലെ <nowiki> റ്റാഗുകൾ ഒതുക്കുക',
+'expand_templates_generate_xml' => 'എക്സ്.എം.എൽ. പാഴ്‌സർ ട്രീ പ്രദർശിപ്പിക്കുക',
+'expand_templates_preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
+
 );
index 30d4020..b664b15 100644 (file)
@@ -11,7 +11,9 @@
  * @author E.shijir
  * @author Kaganer
  * @author Meno25
+ * @author MongolWiki
  * @author Wisdom
+ * @author Zorigt
  * @author לערי ריינהארט
  */
 
@@ -147,18 +149,30 @@ $messages = array(
 'oct' => '10-р сар',
 'nov' => '11-р сар',
 'dec' => '12-р сар',
+'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|Ангилал|Ангиллууд}}',
-'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|Энэ ангилалд дараах хуудас л байна.|Энэ ангилалд нийт $2-с дараах $1 хуудас байна.}}',
+'category-article-count' => '{{PLURAL:$2|Энд нэг хуудас байна.|Энд $2 хуудас байна. Үүнээс $1 доор харагдаж байна.}}',
 'category-article-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|хуудас|$1 хуудаснууд}} байна.',
 'category-file-count' => '{{PLURAL:$2|Энэ ангилалд дараах файл л байна.|Энэ ангилалд нийт $2-с дараах $1 файл байна.}}',
 'category-file-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|файл|$1 файлнууд}} байна.',
@@ -172,6 +186,7 @@ $messages = array(
 'newwindow' => '(шинэ цонх нээгдэнэ)',
 'cancel' => 'Цуцлах',
 'moredotdotdot' => 'Дэлгэрэнгүй...',
+'morenotlisted' => 'Энэ жагсаалт нь бүрэн биш.',
 'mypage' => 'Хэрэглэгчийн хуудас',
 'mytalk' => 'Миний хэлэлцүүлэг',
 'anontalk' => 'Энэ IP-н яриа',
@@ -273,7 +288,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' => 'Ð\90гÑ\83Ñ\83лгÑ\8bг $1-н Ñ\85Ñ\83вÑ\8cд хэрэглэх боломжтой.',
+'copyright' => 'ТÑ\83Ñ\81гайлÑ\81ан Ñ\82айлбаÑ\80 Ð±Ð°Ð¹Ñ\85гүй Ð±Ð¾Ð» Ñ\8dнÑ\8d Ð°Ð³Ñ\83Ñ\83лгÑ\8bг $1 Ð»Ð¸Ñ\86ензийн Ð´Ð°Ð³Ñ\83Ñ\83 хэрэглэх боломжтой.',
 'copyrightpage' => '{{ns:project}}:Зохиогчийн эрх',
 'currentevents' => 'Сүүлийн үеийн мэдээ',
 'currentevents-url' => 'Project:Сүүлийн үеийн мэдээ',
@@ -300,12 +315,10 @@ $1',
 'pagetitle' => '$1 - {{SITENAME}}',
 'retrievedfrom' => '"$1" хуудаснаас авсан',
 'youhavenewmessages' => 'Таньд $1 ($2) байна.',
-'newmessageslink' => 'шинэ мессеж',
-'newmessagesdifflink' => 'сүүлийн өөрчлөлт',
 'youhavenewmessagesfromusers' => 'Танд {{PLURAL:$3|өөр нэгэн хэрэглэгчээс |$3 хэрэглэгчээс}} $1 ирсэн байна ($2).',
 'youhavenewmessagesmanyusers' => 'Танд ($2) олон хэрэглэгчидээс $1.',
-'newmessageslinkplural' => '{{PLURAL:$1|нэг шинэ меммеж| шинэ мессеж}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|сүүлд хийсэн өөрчлөлт|сүүлд хийсэн өөрчлөлт}}',
+'newmessageslinkplural' => '{{PLURAL:$1|шинэ зурвас}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|сүүлд хийгдсэн өөрчлөлт}}',
 'youhavenewmessagesmulti' => 'Таньд $1 дээр шинэ мессеж ирсэн байна',
 'editsection' => 'засварлах',
 'editold' => 'засварлах',
@@ -343,7 +356,7 @@ $1',
 'nstab-mediawiki' => 'Мэдэгдэл',
 'nstab-template' => 'Загвар',
 'nstab-help' => 'Тусламж',
-'nstab-category' => 'Ангилал',
+'nstab-category' => 'Анги',
 
 # Main script and global functions
 'nosuchaction' => 'Тийм үйлдэл байхгүй байна',
@@ -424,7 +437,7 @@ $2',
 'invalidtitle-knownnamespace' => 'Гарчигийг "$2" namespace, "$3" бичвэртэй буруу оруулсан байна',
 'invalidtitle-unknownnamespace' => '$1 гэсэн үл мэдэгдэх неймспайсын дугаар, "$2" бичвэртэй буруу гарчиг байна.',
 'exception-nologin' => 'Та хэрэглэгчийн нэрээр нэвтрээгүй байна.',
-'exception-nologin-text' => 'Уг Ñ\85Ñ\83Ñ\83даÑ\81, Ò¯Ð¹Ð»Ð´Ð»Ð¸Ð¹Ð³ Ñ\85ийÑ\85Ñ\8dд Ñ\82а Ð²Ð¸ÐºÐ¸Ñ\80Ñ\83Ñ\83 Ñ\85олбогдÑ\81он Ð±Ð°Ð¹Ñ\85 Ñ\88ааÑ\80длагаÑ\82ай.',
+'exception-nologin-text' => 'ЭнÑ\8d Ñ\85Ñ\83Ñ\83дÑ\81анд Ñ\85андаÑ\85, Ñ\8dÑ\81вÑ\8dл Ñ\83г Ò¯Ð¹Ð»Ð´Ð»Ð¸Ð¹Ð³ Ñ\85ийÑ\85ийн Ñ\82Ñ\83лд [[Special:Userlogin|нÑ\8dвÑ\82Ñ\8dÑ\80нÑ\8d]] Ò¯Ò¯.',
 
 # Virus scanner
 'virus-badscanner' => "Буруу тохиргоо: үл мэдэгдэх вирус илрүүлэгч программ: ''$1''",
@@ -440,8 +453,16 @@ $2',
 'welcomecreation-msg' => 'Таны бүртгэл хийгдсэн байна.
 Та өөрийн [[Special:Preferences|{{SITENAME}}-н тохиргоогоо]]  өөрчлөхөө бүү мартаарай.',
 'yourname' => 'Хэрэглэгчийн нэр:',
+'userlogin-yourname' => 'Хэрэглэгчийн нэр',
+'userlogin-yourname-ph' => 'Хэрэглэгчийн нэрээ оруулна уу',
+'createacct-another-username-ph' => 'Хэрэглэгчийн нэрээ оруулна уу',
 'yourpassword' => 'Нууц үг:',
+'userlogin-yourpassword' => 'Нууц үг',
+'userlogin-yourpassword-ph' => 'Нууц үгээ оруулна уу',
+'createacct-yourpassword-ph' => 'Нууц үгээ оруулна уу',
 'yourpasswordagain' => 'Нууц үгээ дахин оруулах:',
+'createacct-yourpasswordagain' => 'Нууц үгээ баталгаажуулна уу',
+'createacct-yourpasswordagain-ph' => 'Нууц үгээ дахиж оруулна уу',
 'remembermypassword' => 'Энэ компьютер дээрх миний нэвтрэлтийг сана (хамгийн дээд талдаа $1 {{PLURAL:$1|өдрийн|өдрийн}} туршид)',
 'yourdomainname' => 'Таны домэйн:',
 'password-change-forbidden' => 'Та энэ вики дээрх нууц үгээ сольж болохгүй.',
@@ -454,14 +475,29 @@ $2',
 'logout' => 'Гарах',
 'userlogout' => 'Гарах',
 'notloggedin' => 'Нэвтрээгүй байна',
+'userlogin-joinproject' => '{{SITENAME}}-д бүртгүүлэх',
 'nologin' => "Бүртгэлгүй юу? '''$1'''.",
 'nologinlink' => 'Бүртгүүлэх',
 'createaccount' => 'Бүртгүүлэх',
 'gotaccount' => "Та бүртгэлтэй юу? '''$1'''",
 'gotaccountlink' => 'Нэвтрэх',
 'userlogin-resetlink' => 'Нэвтрэх мэдээллээ мартаа юу?',
+'userlogin-resetpassword-link' => 'Нууц үгээ мартсан уу?',
+'helplogin-url' => 'Help:Нэвтрэх',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Нэвтрэхэд тусламж]]',
+'userlogin-loggedin' => 'Та {{GENDER:$1|$1}} нэрээр нэвтэрсэн байна.
+Өөр нэрээр нэвтрэх бол доорх маягтыг ашиглана уу.',
+'userlogin-createanother' => 'Өөр бүртгэл үүсгэх',
+'createacct-join' => 'Мэдээллээ оруулна уу.',
+'createacct-another-join' => 'Шинэ бүртгэлийн мэдээллээ оруулна уу.',
 'createaccountmail' => 'Мэйлээр илгээх',
+'createacct-realname' => 'Жинхэнэ нэр (хоосон орхиж болно)',
 'createaccountreason' => 'Шалтгаан:',
+'createacct-reason' => 'Шалтгаан',
+'createacct-reason-ph' => 'Өөр бүртгэл үүсгэх шалтгаан',
+'createacct-benefit-heading' => '{{SITENAME}}-г тан шиг хүмүүс хийж байна.',
+'createacct-benefit-body1' => '{{PLURAL:$1|засвар}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|хуудас}}',
 'badretype' => 'Таны оруулсан хоёр нууц үг таарахгүй байна.',
 'userexists' => 'Хэрэглэгчийн нэр ашиглагдаж байна.
 Өөр нэрээр нэвтэрнэ үү.',
@@ -491,7 +527,7 @@ $2',
 Хамгийн багадаа {{PLURAL:$1|1 үсэгтэй|$1 үсэгтэй}} байх ёстой.',
 'password-name-match' => 'Таны нууц үг хэрэглэгчийн нэрнээс ялгаатай байх ёстой.',
 'password-login-forbidden' => 'Ийм хэрэглэгчийн, нууц үгээр нэвтрэхийг хориглож байна.',
-'mailmypassword' => 'Ð\9cÑ\8dйл Ñ\85аÑ\8fгааÑ\80 Ñ\88инÑ\8d Ð½Ñ\83Ñ\83Ñ\86 Ò¯Ð³Ð¸Ð¹Ð³ Ð¸Ð»Ð³Ñ\8dÑ\8d',
+'mailmypassword' => 'Ð\9dÑ\83Ñ\83Ñ\86 Ò¯Ð³Ñ\8dÑ\8d Ñ\81Ñ\8dÑ\80гÑ\8dÑ\8dÑ\85',
 'passwordremindertitle' => '{{SITENAME}}-д нэвтрэх түр зуурын шинэ нууц үг',
 'passwordremindertext' => 'Хэн нэгэн (магадгүй та, $1 гэх IP хаягаас) {{SITENAME}} ($4) хуудсанд нэвтрэх шинэ нууц үг явуулах хүсэлтийг тавьсан байна. "$3" гэсэн түр хугацаанд хэрэглэж болох нууц үгийг хэрэглэгч "$2"-д олгов.
 Хэрэв та ингэхийг хүссэн бол нэвтэрч ороод шинэ нууц үгээ сонгоно уу.
@@ -1081,7 +1117,6 @@ $1",
 'preferences' => 'Хэрэглэгчийн тохиргоо',
 'mypreferences' => 'Миний тохиргоо',
 'prefs-edits' => 'Засваруудын тоо:',
-'prefsnologin' => 'Нэвтрээгүй байна',
 'changepassword' => 'Нууц үгээ солих',
 'prefs-skin' => 'Арьс',
 'skin-preview' => 'Урьдчилж харах',
@@ -1355,6 +1390,7 @@ $1 тэмдэгтээс богино байх ёстой.',
 'recentchanges-label-minor' => 'Энэ нь бага зэргийн засвар байна',
 'recentchanges-label-bot' => 'Энэ засварыг бот гүйцэтгэсэн байна',
 'recentchanges-label-unpatrolled' => 'Энэ засварыг одоогийн байдлаар манаагүй байна',
+'recentchanges-legend-newpage' => '([[Special:NewPages|Шинэ хуудсуудын жагсаалтыг]] бас үзнэ үү.',
 'rcnote' => "Доорх нь $5, $4-ий байдлаарх сүүлийн '''$2''' өдрийн турших '''$1''' засвар юм.",
 'rcnotefrom' => "Доорх нь '''$2'''-с хойших өөрчлөлтүүд ('''$1''' хүртэлхийг харуулав) юм.",
 'rclistfrom' => '$1-с хойших шинэ засваруудыг үзүүлэх',
@@ -1789,7 +1825,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 
 # Miscellaneous special pages
 'nbytes' => '$1 байт',
-'ncategories' => '$1 ангилал',
+'ncategories' => '$1 анги',
 'nlinks' => '$1 линк',
 'nmembers' => '$1 гишүүн',
 'nrevisions' => '$1 засвар',
@@ -1797,12 +1833,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' => 'Хэрэгцээт ангиллууд',
@@ -1889,11 +1925,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' => 'үсгийн дарааллаар ялгах',
 
@@ -2781,7 +2817,7 @@ $1',
 'file-nohires' => 'Илүү чанартай хувилбар байхгүй байна.',
 'svg-long-desc' => 'SVG файл, $1 × $2 пиксэл, файлын хэмжээ: $3',
 'svg-long-error' => '$1 : Буруу SVG файл',
-'show-big-image' => 'Хамгийн Ñ\81айн Ñ\87анаÑ\80Ñ\82ай Ñ\85Ñ\83вилбаÑ\80',
+'show-big-image' => 'ЭÑ\85 Ñ\84айл',
 'show-big-image-preview' => 'Үзлэгийн хэмжээ : $1',
 'show-big-image-other' => 'Бусад {{PLURAL:$2|зургын нягтрал|зургын нягтрал}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксел',
@@ -2974,7 +3010,7 @@ $1',
 'exif-writer' => 'Бичсэн',
 'exif-languagecode' => 'Хэл',
 'exif-iimversion' => 'IIM хувилбар',
-'exif-iimcategory' => 'Ангилал',
+'exif-iimcategory' => 'Анги',
 'exif-datetimeexpires' => 'түүний дараа бүү хэрэглэ',
 'exif-datetimereleased' => 'Гарсан өдөр',
 'exif-originaltransmissionref' => '',
@@ -3455,4 +3491,9 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|зуун|зуун}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мянган|мянган}}',
 
+# Special:ExpandTemplates
+'expand_templates_input' => 'Оруулах бичиг:',
+'expand_templates_output' => 'Үр дүн',
+'expand_templates_remove_comments' => 'Товч агуулгыг авч хаях',
+
 );
index 928f77b..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(
@@ -594,8 +599,6 @@ $1',
 'ok' => 'ठीक',
 'retrievedfrom' => '"$1" पासून हुडकले',
 'youhavenewmessages' => 'तुमच्यासाठी $1 आहे. ($2)',
-'newmessageslink' => 'नवीन संदेश',
-'newmessagesdifflink' => 'ताजा बदल',
 'youhavenewmessagesfromusers' => 'तुमच्यासाठी {{PLURAL:$3|इतर सदस्याकडून|$3 सदस्यांकडून}} $1 आहेत. ($2)',
 'youhavenewmessagesmanyusers' => 'तुमच्यासाठी बऱ्याच सदस्यांकडून $1 आहेत. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|नवीन संदेश|नवीन संदेश}}',
@@ -1278,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' => '* वगळण्याची सामान्य कारणे
 ** प्रताधिकार उल्लंघन
 ** अयोग्य टिप्पणी किंवा व्यक्तिगत माहिती
@@ -1368,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 मध्ये शोधा',
@@ -1378,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' => 'जवळील',
@@ -1408,10 +1411,9 @@ $1",
 'search-error' => 'शोध घेतांना घडलेली त्रूटी:$1',
 
 # Preferences page
-'preferences' => 'माà¤\9dà¥\8dया à¤ªà¤¸à¤\82तà¥\80',
+'preferences' => 'पसà¤\82तà¥\80à¤\95à¥\8dरम',
 'mypreferences' => 'पसंतीक्रम',
 'prefs-edits' => 'संपादनांची संख्या:',
-'prefsnologin' => 'प्रवेश केलेला नाही',
 'changepassword' => 'परवलीचा शब्द बदला',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
@@ -1422,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' => 'तुमचा ई-मेल पत्ता लिहा.',
@@ -1445,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' => 'वेळक्षेत्र',
@@ -1476,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|सदस्यनाम}}:',
@@ -1505,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' => 'संपादक',
@@ -1592,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' => 'लेखन एपीआय चा उपयोग',
@@ -1615,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 संचिका संपादित करा',
@@ -1705,6 +1707,7 @@ $1",
 'recentchanges-label-minor' => 'हे एक किरकोळ संपादन आहे',
 'recentchanges-label-bot' => 'हे संपादन एका सांगकाम्याकडून केले गेले आहे',
 'recentchanges-label-unpatrolled' => 'हे संपादन अजून तपासल्या गेले नाही',
+'recentchanges-legend-newpage' => '$1 - नवीन पान',
 'rcnote' => "खाली $4, $5 पर्यंतचे गेल्या {{PLURAL:$2|'''१''' दिवसातील|'''$2''' दिवसांतील}} {{PLURAL:$1|शेवटचा '''1''' बदल|शेवटचे '''$1''' बदल}} दिलेले आहेत.",
 'rcnotefrom' => "खाली <b>$2</b> पासूनचे ('''$1''' पर्यंत) बदल दाखविले आहेत.",
 'rclistfrom' => '$1 नंतर केले गेलेले बदल दाखवा.',
@@ -4089,4 +4092,20 @@ $5
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|बाइट|बाइट्स}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|बाइट|बाइट्स}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'साचे वाढवा',
+'expand_templates_intro' => 'हे पान काही मजकूर घेऊन त्यातिल सर्व साचे वाढविते. तसेच हे पान पार्सर फंक्शन्स जसे की
+<nowiki>{{</nowiki>#language:...}}, व बदलणार्‍या किमती (variables) जसे की
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;म्हणजेच दोन ब्रेसेसमधील सर्व मजकूर वाढविते.
+मीडियाविकिमधून पार्सर स्टेज मागवून हे केले जाते.',
+'expand_templates_title' => '{{FULLPAGENAME}} वगैरे करीता, कन्टेक्स्ट शीर्षक:',
+'expand_templates_input' => 'इनपुट मजकूर:',
+'expand_templates_output' => 'निकाल',
+'expand_templates_xml_output' => 'XML चे आऊटपुट',
+'expand_templates_ok' => 'ठिक आहे',
+'expand_templates_remove_comments' => 'शेरा हटवा',
+'expand_templates_remove_nowiki' => 'निकालात <nowiki>खूणपतका दाखवू नका',
+'expand_templates_generate_xml' => 'XML चा पार्स (parse) वृक्ष दाखवा',
+'expand_templates_preview' => 'झलक',
+
 );
index e932cfc..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' ),
@@ -474,8 +473,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Diambil daripada "$1"',
 'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
-'newmessageslink' => 'pesanan baru',
-'newmessagesdifflink' => 'perubahan terakhir',
 'youhavenewmessagesfromusers' => 'Anda menerima $1 daripada {{PLURAL:$3|seorang|$3 orang}} pengguna lain ($2).',
 'youhavenewmessagesmanyusers' => 'Anda menerima $1 daripada ramai pengguna ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|pesanan|pesanan-pesanan}} baru',
@@ -1314,7 +1311,6 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'preferences' => 'Keutamaan',
 'mypreferences' => 'Keutamaan',
 'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Belum log masuk',
 'changepassword' => 'Tukar kata laluan',
 'prefs-skin' => 'Rupa',
 'skin-preview' => 'Pralihat',
@@ -1612,6 +1608,7 @@ Tindakan ini tidak boleh dibatalkan.',
 'recentchanges-label-minor' => 'Ini ialah suntingan kecil',
 'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
 'recentchanges-label-unpatrolled' => 'Suntingan ini belum dirondai',
+'recentchanges-legend-newpage' => '$1 - laman baru',
 'rcnote' => "Yang berikut ialah '''$1''' perubahan terakhir sejak '''$2''' hari yang lalu sehingga $5, $4.",
 'rcnotefrom' => 'Yang berikut ialah semua perubahan sejak <b>$2</b> (sehingga <b>$1</b>).',
 'rclistfrom' => 'Papar perubahan sejak $1',
@@ -4063,4 +4060,21 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'limitreport-expansiondepth' => 'Kedalaman peluasan terjauh',
 'limitreport-expensivefunctioncount' => 'Kiraan fungsi penghurai muatan tinggi',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Kembangkan templat',
+'expand_templates_intro' => 'Halaman khas ini mengambil teks dan mengembangkan semua templat di dalamnya secara rekursif.
+Ia juga mengembangkan fungsi-fungsi penghurai seperti
+<code><nowiki>{{</nowiki>#language:…}}</code>, dan pembolehubah-pembolehubah seperti
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Sebenarnya, ia mengembangkan segalanya dalam tanda kurung panah berganda.',
+'expand_templates_title' => 'Tajuk konteks, untuk {{FULLPAGENAME}} dan sebagainya:',
+'expand_templates_input' => 'Teks input:',
+'expand_templates_output' => 'Hasil',
+'expand_templates_xml_output' => 'Output XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Buang ulasan',
+'expand_templates_remove_nowiki' => 'Sekat tag <nowiki> dalam hasil',
+'expand_templates_generate_xml' => 'Papar pepohon hurai XML',
+'expand_templates_preview' => 'Pralihat',
+
 );
index d034f5f..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' ),
@@ -546,8 +545,6 @@ $1",
 'ok' => 'OK',
 'retrievedfrom' => 'Miġjub minn "$1"',
 'youhavenewmessages' => 'Għandek $1 ($2).',
-'newmessageslink' => 'messaġġi ġodda',
-'newmessagesdifflink' => 'l-aħħar bidla',
 'youhavenewmessagesmanyusers' => 'Għandek $1 mingħand ħafna utenti ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|messaġġ ġdid|messaġġi ġodda}}',
 'newmessagesdifflinkplural' => 'l-aħħar {{PLURAL:$1|bidla|bidliet}}',
@@ -1318,7 +1315,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'preferences' => 'Preferenzi',
 'mypreferences' => 'Preferenzi',
 'prefs-edits' => "Numru ta' modifiki:",
-'prefsnologin' => 'Għadek ma dħaltx ġewwa',
 'changepassword' => 'Ibdel il-password',
 'prefs-skin' => 'Aspett grafiku (skin)',
 'skin-preview' => 'dehra proviżorja',
@@ -1590,6 +1586,7 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'recentchanges-label-minor' => 'Din hi modifika minuri',
 'recentchanges-label-bot' => 'Din il-modifika ġiet effettwata minn bot',
 'recentchanges-label-unpatrolled' => 'Din il-modifika għadha ma ġietx verifikata',
+'recentchanges-legend-newpage' => '$1 - paġna ġdida',
 'rcnote' => "Hawn taħt {{PLURAL:$1|tinsab l-aktar modifika riċenti|jinsabu l-'''$1''' modifiki riċenti}} għas-sit fl-aħħar {{PLURAL:$2|24 siegħa|'''$2''' ġranet}}, id-dati ġew aġġornati fil-$5 ta' $4.",
 'rcnotefrom' => "Ħawn taħt jinsabu l-modifiki minn '''$2''' (sa '''$1''').",
 'rclistfrom' => 'Uri l-modifiki ġodda jibdew minn $1',
@@ -3841,4 +3838,21 @@ Flimkien ma' dan il-programm suppost kellek tirċievi [{{SERVER}}{{SCRIPTPATH}}/
 'duration-centuries' => '$1 {{PLURAL:$1|seklu|sekli}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennju|millennji}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Espandi l-mudelli',
+'expand_templates_intro' => "!Din il-paġna speċjali tieħu test u tkabbar il-mudelli kollha preżenti.
+Barra minn hekk, din tikkalkola r-riżultat tal-funzjonijiet ''parser'' bħal
+<code><nowiki>{{</nowiki>#language:…}}</code>, u varjabbli bħal
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Fil-fatt, din tespandi kważi dak kollu bejn żewġ parentesi.",
+'expand_templates_title' => 'Kuntest (għal {{FULLPAGENAME}} etċ.):',
+'expand_templates_input' => "Test ta' ''input'':",
+'expand_templates_output' => 'Riżultat',
+'expand_templates_xml_output' => "Riżultat f'format XML",
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Neħħi l-kummenti',
+'expand_templates_remove_nowiki' => "Ħassar it-''tags'' <nowiki> fir-riżultat",
+'expand_templates_generate_xml' => 'Uri siġra sintattika XML',
+'expand_templates_preview' => 'Dehra proviżorja',
+
 );
index d2284fc..a7a7ce7 100644 (file)
@@ -288,8 +288,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Sacado an "$1"',
 'youhavenewmessages' => 'Tu tenes $1 ($2).',
-'newmessageslink' => 'nuobas mensaiges',
-'newmessagesdifflink' => 'redadeira altaraçon',
 'youhavenewmessagesmulti' => 'Tenes nuobas mensaiges an $1',
 'editsection' => 'eiditar',
 'editold' => 'eiditar',
@@ -653,6 +651,7 @@ Causo l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.
 'recentchanges' => 'Redadeiras altaraçones',
 'recentchanges-legend' => 'Oupçones de las redadeiras altaraçones',
 'recentchanges-feed-description' => 'Acumpanha las redadeiras altaraçones de l biqui por esta semiente.',
+'recentchanges-legend-newpage' => '$1 - nuoba páigina',
 'rcnote' => "A seguir {{PLURAL:$1|stá listada '''ua''' altaraçon feita|stan '''$1''' altaraçones feitas}} {{PLURAL:$2|ne l redadeiro die|ne ls redadeiros '''$2''' dies}}, a partir de las $5 de $4.",
 'rcnotefrom' => 'Alteraçones feitas zde <b>$2</b> (amostradas até <b>$1</b>).',
 'rclistfrom' => 'Amostrar las noubas altaraçones a partir de $1',
index df5b28e..a5c791a 100644 (file)
@@ -325,8 +325,6 @@ $1',
 'ok' => 'အိုကေ',
 'retrievedfrom' => '"$1" မှ ရယူရန်',
 'youhavenewmessages' => 'သင့်တွင် $1 ($2) ရှိသည်။',
-'newmessageslink' => 'မက်ဆေ့ အသစ်',
-'newmessagesdifflink' => 'နောက်ဆုံးအပြောင်းအလဲ',
 'youhavenewmessagesmulti' => '$1 မှာ မက်ဆေ့အသစ်များ ရှိသည်',
 'editsection' => 'ပြင်​ဆင်​ရန်​',
 'editold' => 'ပြင်​ဆင်​ရန်​',
@@ -735,7 +733,6 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
 'preferences' => '​ရွေး​ချယ်​စ​ရာ​များ​',
 'mypreferences' => '​ရွေး​ချယ်​စ​ရာ​များ​',
 'prefs-edits' => 'တည်းဖြတ်မှုအရေအတွက် -',
-'prefsnologin' => 'logged in ဝင်မထားပါ',
 'changepassword' => 'စကားဝှက် ပြောင်းရန်',
 'prefs-skin' => 'အသွင်အပြင်',
 'skin-preview' => 'နမူနာ',
index b42e051..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' ),
@@ -193,13 +193,13 @@ $messages = array(
 'tog-hidepatrolled' => 'Кекшемс лувонь кирдиень витнеметнень-петнематнень чыяконь полавтнематнестэ',
 'tog-newpageshidepatrolled' => 'Кекшемс лувонь кирдиень ванстома лопатнень од лопань керьксэнть эйстэ',
 'tog-extendwatchlist' => 'Келейгавтомс сёрмадовксонь мельга ваномань сёрмалевксэнть невтевест весе полавтнематне, аволь ансяк чыеньсетне.',
-'tog-usenewrc' => 'Ð\9fÑ\83Ñ\80намÑ\81 Ð»Ð¸Ñ\8fкÑ\81Ñ\82омÑ\82омаÑ\82 Ð»Ð¾Ð¿Ð°Ð½Ñ\8c ÐºÐ¾Ñ\80Ñ\8fÑ\81 ÐºÑ\83Ñ\80онÑ\8c-кÑ\83Ñ\80онÑ\8c Ñ\87иенÑ\8c Ð¿Ð¾Ð»Ð°Ð²Ñ\82немаÑ\82неÑ\81Ñ\8d-ванома Ð»ÐµÐ¼Ñ\80иÑ\81Ñ\8cмеÑ\82неÑ\81Ñ\8d  (веÑ\88и JavaScript)',
-'tog-numberheadings' => 'Сёрмадовкс коняксос кадык сынсь ловома валтнэ путовить',
-'tog-showtoolbar' => 'Ð\9aедÑ\8cÑ\91нкÑ\81 Ð»Ð°Ð·Ð½Ñ\8dнÑ\82Ñ\8c Ð½ÐµÐ²Ñ\82емÑ\81 Ñ\81Ñ\91Ñ\80мадома Ñ\88каÑ\81Ñ\82о (JavaScript)',
-'tog-editondblclick' => 'Кавксть лепштязь совамс сёрмадовксонь витнеме-петнеме (JavaScript)',
+'tog-usenewrc' => 'Ð\9fÑ\83Ñ\80намÑ\81 Ð»Ð¸Ñ\8fкÑ\81Ñ\82омÑ\82омаÑ\82 Ð»Ð¾Ð¿Ð°Ð½Ñ\8c ÐºÐ¾Ñ\80Ñ\8fÑ\81 ÐºÑ\83Ñ\80онÑ\8c-кÑ\83Ñ\80онÑ\8c Ñ\87иенÑ\8c Ð¿Ð¾Ð»Ð°Ð²Ñ\82немаÑ\82неÑ\81Ñ\82Ñ\8d-ванома Ð»ÐµÐ¼Ñ\80иÑ\81Ñ\8cмеÑ\82неÑ\81Ñ\82Ñ\8d',
+'tog-numberheadings' => 'Сёрмадовксконяксос кадык сынсь ловома валтнэ путовить',
+'tog-showtoolbar' => 'Ð\9dевÑ\82емÑ\81 ÐºÐµÐ´Ñ\8cÑ\91нкÑ\81лазнÑ\8dнÑ\82Ñ\8c Ñ\81Ñ\91Ñ\80мадома Ñ\88каÑ\81Ñ\82о',
+'tog-editondblclick' => 'Кавксть лепштязь совамс сёрмадовксонь витнеме-петнеме',
 'tog-editsection' => 'Невтемс сюлмавома пенть «витемс» эрьва секциянтень-пельксэнтень',
-'tog-editsectiononrightclick' => 'Витнемс секциятнень-пелькстнэнь, лепштямс сёрмадовксонть лемензэ лангс чэерень витьёнсе повнэсэ  (JavaScript)',
-'tog-showtoc' => 'Невтемс сёрмадовкс потмокс (лопатненень, конатнесэ 3-до ламо сёрмадовкст)',
+'tog-editsectiononrightclick' => 'Витнемс секциятнень-пелькстнэнь, лепштямс сёрмадовксонть лемензэ лангс чеерень витьёнсе повнесэ',
+'tog-showtoc' => 'Невтемс сёрмадовкспотмокс (лопатненень, конатнесэ 3-до ламо сёрмадовкст)',
 'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
 'tog-watchcreations' => 'Совавтомс ванома лемрисьмезэнь монь теевть лопатнень ды сень, мезе йовкстан',
 'tog-watchdefault' => 'Совавтомс монь витевть лопатнень ванома лемрисьмезэнь',
@@ -216,7 +216,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Невтемс зяро теицятнеде, конат аравтызь лопанть эсест ванома лемрисьментень',
 'tog-oldsig' => 'Уликс кедьпутовксось:',
 'tog-fancysig' => 'Лемпутовксось прок викитекст (сонсь теевиця сюлмавома певтеме)',
-'tog-uselivepreview' => 'Максомс эряй васнянь невтевкс (JavaScript) (Варчамонь)',
+'tog-uselivepreview' => 'Максомс эриця васнянь невтевкс (варчамонь сон)',
 'tog-forceeditsummary' => 'Невтик монень, мезе сёрмадомс витнемадо-петнемадо ёвтамонь вальминентень',
 'tog-watchlisthideown' => 'Кекшить монь теевть витневкстнэнь ванома лемрисьменть эйстэ',
 'tog-watchlisthidebots' => 'Кекшить бот витневкстнэнь-петневкстнэнь ванома лемрисьсенть эйстэ',
@@ -290,6 +290,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|Категория|Категорият}}',
@@ -315,6 +327,7 @@ $messages = array(
 'newwindow' => '(панжови од вальмасо)',
 'cancel' => 'Саемс мекев',
 'moredotdotdot' => 'Седе ламо...',
+'morenotlisted' => 'Те лемрисьмесь апак прядо.',
 'mypage' => 'Монь лопам',
 'mytalk' => 'Кортнемам',
 'anontalk' => 'Кортамс те IP-нть марто',
@@ -368,7 +381,9 @@ $messages = array(
 'create-this-page' => 'Теик-шкик те лопанть',
 'delete' => 'Нардамс',
 'deletethispage' => 'Нардамс те лопанть',
+'undeletethispage' => 'Вельмевтемс мекев те лопанть',
 'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|вейке витнема-петнема|$1 витнемат-петнемат}}',
+'viewdeleted_short' => 'Ваномс {{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
 'protect' => 'Аравтомс прянь ванстомас',
 'protect_change' => 'полавтомс',
 'protectthispage' => 'Аравтомс те лопанть ванстомас',
@@ -383,7 +398,7 @@ $messages = array(
 'articlepage' => 'Ваномс потмокслопанть',
 'talk' => 'Кортнеме',
 'views' => 'Ваномкат',
-'toolbox' => 'Кедьёнкс парго',
+'toolbox' => 'Кедьёнкст',
 'userpage' => 'Ваномонзо кирдицянть лопанзо',
 'projectpage' => 'Ваномонзо проектенть лопанть',
 'imagepage' => 'Ваномс файлань лопанть',
@@ -400,13 +415,18 @@ $messages = array(
 'protectedpage' => 'Те лопась ванстомасо',
 'jumpto' => 'Тёкадемс тей:',
 'jumptonavigation' => 'Новигациясь-лездамось',
-'jumptosearch' => 'вешнэме',
+'jumptosearch' => 'вешнеме',
+'view-pool-error' => 'Кежеть иляст са, сервертнень виест а сатыть ней.
+Пекень пек ламо теицят стараить ваномс те лопанть.
+Учокая аламос, мейле одов варчасак тезэнь совамонть.
+$1',
+'pool-queuefull' => 'Процесспулось пешксе',
 'pool-errorunknown' => 'Апак содань ильведькс',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => '{{SITENAME}} ланга',
 'aboutpage' => 'Project:Эстэдензэ',
-'copyright' => '$1-сто муят мезе тесэ.',
+'copyright' => '$1-сто муят мезе тесэ, бути лиякс апак ёвта.',
 'copyrightpage' => '{{ns:project}}:Ломанень видечинзэ',
 'currentevents' => 'Мезе ней моли',
 'currentevents-url' => 'Project:Мезе ней моли',
@@ -414,16 +434,17 @@ $messages = array(
 'disclaimerpage' => 'Project:Видечинь прякс кортнема',
 'edithelp' => 'Витнемань-петнемань лезкс',
 'helppage' => 'Help:Лопась мезе кирди',
-'mainpage' => 'Ð\9fÑ\80Ñ\8fкÑ\81лопа',
-'mainpage-description' => 'Ð\9fÑ\80Ñ\8fкÑ\81лопа',
+'mainpage' => 'Ð\9fÑ\80Ñ\8fвÑ\82лопа',
+'mainpage-description' => 'Ð\9fÑ\80Ñ\8fвÑ\82лопа',
 'policy-url' => 'Project:Политика',
 'portal' => 'Велень-сядонь вальма',
-'portal-url' => 'Project:Ð\92ейÑ\82Ñ\8cÑ\81Ñ\8dнÑ\8c Ð²Ð°Ð»Ñ\8cма',
+'portal-url' => 'Project:Вейсэнь вальма',
 'privacy' => 'Салавачинь политикась',
 'privacypage' => 'Project:Салавачинь политикась',
 
 'badaccess' => 'Меревемань асатыкс',
 'badaccess-group0' => 'Тонеть а мерить теемс мезе вешить.',
+'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|куронь|куротнень}} теицятненень.',
 
 'versionrequired' => 'МедияВикинь $1 версиясь эряви',
 'versionrequiredtext' => 'МедияВикинь $1 версиясь эряви те лопанть тевс нолдамга.
@@ -432,8 +453,6 @@ $messages = array(
 'ok' => 'Маштови',
 'retrievedfrom' => 'Лисмапрясь "$1"-сто',
 'youhavenewmessages' => 'Тонеть сась $1 ($2).',
-'newmessageslink' => 'Од пачтямнэть',
-'newmessagesdifflink' => 'меельсе полавтома',
 'youhavenewmessagesmulti' => 'Од сёрминеть учить эйсэть $1-со',
 'editsection' => 'витнеме-петнеме',
 'editold' => 'витнеме-петнеме',
@@ -478,6 +497,7 @@ $messages = array(
 # General errors
 'error' => 'Ильведькс',
 'databaseerror' => 'Датабазань ильведькс',
+'databaseerror-error' => 'Ильведькс: $1',
 'laggedslavemode' => 'Ванок: Кизды, лопасонть материалось таштомсь.',
 'readonly' => 'Датабазась панжома экшсэ',
 'enterlockreason' => 'Сёрмадт мейс сёлгамс эряви, ды ёвтак, зярдо таго арьсят панжови',
@@ -523,9 +543,18 @@ $messages = array(
 # Login and logout pages
 'welcomeuser' => 'Совак, $1, инеськеть!',
 'yourname' => 'Теицянь лем:',
+'userlogin-yourname' => 'Совамовал',
+'userlogin-yourname-ph' => 'Совавтык совамовалот',
 'yourpassword' => 'Салава валот:',
+'userlogin-yourpassword' => 'салававал',
+'userlogin-yourpassword-ph' => 'Совавтык салававалот',
+'createacct-yourpassword-ph' => 'Совавтык салававал',
 'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
+'createacct-yourpasswordagain' => 'Кемекстык салававалонть',
+'createacct-yourpasswordagain-ph' => 'Совавтык салававалонть одов',
 'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'userlogin-remembermypassword' => 'Кирдемизь совавтозекс',
+'userlogin-signwithsecure' => 'Нолдак тевс ванстозь сюлмавкс',
 'yourdomainname' => 'Эсеть доменэть:',
 'password-change-forbidden' => 'Те викисэнть а полавтсак салававалот.',
 'login' => 'Совамо',
@@ -536,14 +565,23 @@ $messages = array(
 'logout' => 'Лисеме',
 'userlogout' => 'Лисеме',
 'notloggedin' => 'Апак соваво',
+'userlogin-noaccount' => 'Совамотаркат арась?',
+'userlogin-joinproject' => 'Совак «{{SITENAME}}» сайтэнь теицякс',
 'nologin' => "Совамотаркат арась? '''$1'''.",
 'nologinlink' => 'Тейть совамотарка',
 'createaccount' => 'Теемс теицянь од лопа',
 'gotaccount' => "Совамотаркат ули? '''$1'''.",
 'gotaccountlink' => 'Совамс',
 'userlogin-resetlink' => 'Совамо эрявикстнэнь стувтыть?',
-'createaccountmail' => 'Тейть кодамо понгсь салавань вал, кучик сонзэ ало максозь е-сёрмапаргонтень',
+'userlogin-resetpassword-link' => 'Салававалот стувтовсь?',
+'userlogin-createanother' => 'Шкак од совамотарка',
+'createaccountmail' => 'Тейть кодамо понгсь салававал, кучик сонзэ ало максозь е-сёрмапаргонтень',
 'createaccountreason' => 'Тувталось:',
+'createacct-reason' => 'Тувтал',
+'createacct-submit' => 'Шкик совамотаркат',
+'createacct-another-submit' => 'Шкак од совамотарка',
+'createacct-benefit-heading' => '«{{SITENAME}}» сайтэнть теизь тонь кондямо ломанть.',
+'createacct-benefit-body2' => '{{PLURAL:$1|лопа|лопат}}',
 'badretype' => 'Сёрмадыть салава валот кавксть: сынь аволь вейкеть.',
 'userexists' => 'Те лемесь уш саезь.
 Арсека эстеть лия, инеськеть.',
@@ -579,14 +617,14 @@ $messages = array(
 'noemailcreate' => 'Эряви максомс е-сёрмапарго, конась маштови',
 'passwordsent' => '$1 -нь е-сёрмань адресэнтень кучозь од совамо вал.<br />
 Инеськеть, кодак валось пачкоди, совака одов.',
-'eauthentsent' => 'Электрононь адресэзэть кучозь кемекстамонь е-сёрмине.<br /> Сонзэ эйсэ сёрмадозь мезе кода теемс. Ансяк седе мейле, зярдо невтик, адресэсь алкукс эсеть, карматано кучомо лия сёрмат.',
+'eauthentsent' => 'Электрононь сёрмапаргозот кучозь кемекстамонь е-сёрмине.<br /> Сонзэ эйсэ сёрмадозь мезе кода теемс. Ансяк седе мейле, зярдо невтик, сёрмапаргось алкукс эсеть, карматано кучомо лия сёрмат.',
 'mailerror' => 'Е-сёрма кучомсто ильведькс: $1',
 'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
 Тень кисэ, те   IP адресэнть коряс седе тов а маштови теемс-шкамс од сёрмадовкст, зярс.',
-'emailauthenticated' => 'Е-сёрма паргот кемекстазель $2 чыстэ $3 цяссто.',
+'emailauthenticated' => 'Е-сёрмапаргот кемекстазель $2 чистэ $3 цяссто.',
 'emailconfirmlink' => 'Кемекстык е-сёрмапаргот',
 'accountcreated' => 'Совамо таркась теезь',
-'accountcreatedtext' => '$1-нь совицянь таркась теевсь-шкавсь.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|кортнема]]) совицянь таркась теевсь-шкавсь.',
 'loginlanguagelabel' => 'Кель: $1',
 
 # Email sending
@@ -600,7 +638,7 @@ $messages = array(
 'newpassword' => 'Од совамо валот:',
 'retypenew' => 'Сёрмадык омбоцеде совамо валот:',
 'resetpass_submit' => 'Тештик совамо валот ды совак',
-'changepassword-success' => 'Совамо валот полавтовсь теть! Совавтыть эйсэть системас...',
+'changepassword-success' => 'Совамовалот полавтовсь!',
 'resetpass_forbidden' => 'Совамо валтнэ а полавтовить',
 'resetpass-submit-loggedin' => 'Полавтомс совамо валот',
 'resetpass-submit-cancel' => 'Саемс мекев',
@@ -678,9 +716,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'loginreqlink' => 'совамс',
 'loginreqpagetext' => 'Лия лопань ванномга, эряви $1.',
 'accmailtitle' => 'Салавань вал кучозь.',
-'accmailtext' => "Кода понгсь теезь совамо вал [[User talk:$1|$1]]-нь туртов кучозь $2 адресэнтень.
+'accmailtext' => "Кода понгсь теезь совамовал [[User talk:$1|$1]]-нь туртов кучозь $2 сёрмапаргонтень.
 
-Те од совамо таркас совамо валось полавтови ''[[Special:ChangePassword|совамо валонь полавтома]]'' лопас совамодо мейле.",
+Те од совамо таркас совамовалось полавтови ''[[Special:ChangePassword|совамовалонь полавтома]]'' лопас совамодо мейле.",
 'newarticle' => '(Од)',
 'newarticletext' => "Молить налтке мельга сёрмадовксос, конась апак тее.
 Ули мелеть теемс сёрмадовкс, сёрмадт валт ало паргос (вант [[{{MediaWiki:Helppage}}|help page]] тесэ лездамо информация).
@@ -762,8 +800,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 Чарькодевтемат: (молиц.) = редямось молиця версиястонть; (и. молиц.) = редямось икеле молиця версиястонть; '''а''' = аволь седе ламо лиякстомтома.",
 'history-fieldset-title' => 'Ваномс лопанть юронзо-путовксонзо',
 'history-show-deleted' => 'Ансяк нардазь',
-'histfirst' => 'Ð\92аÑ\81енÑ\86е',
-'histlast' => 'Ð\9cеелÑ\8cÑ\81е',
+'histfirst' => 'веÑ\81емеде Ñ\83монÑ\8c',
+'histlast' => 'Ð\9cеелÑ\8cÑ\86е',
 'historysize' => '({{PLURAL:$1|1 байт|$1 байтт}})',
 'historyempty' => '(чаво)',
 
@@ -868,7 +906,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'search-interwiki-default' => '$1 савкс:',
 'search-interwiki-more' => '(седе ламо)',
 'search-relatedarticle' => 'Малавикс',
-'mwsuggest-disable' => 'Лоткавтомс "AJAX" превспутыенть',
+'mwsuggest-disable' => 'Лоткавтомс вешнемань превспутыенть',
 'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
 'searchrelated' => 'малавикс',
 'searchall' => 'весе',
@@ -889,7 +927,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'preferences' => 'Аравтомат',
 'mypreferences' => 'Аравтомат',
 'prefs-edits' => 'Зяроксть витнезь-петнезь:',
-'prefsnologin' => 'Эзить сова',
 'changepassword' => 'Салавань валонь полавтома',
 'prefs-skin' => 'Неемань ладсема',
 'skin-preview' => 'Васнянь неевтезэ',
@@ -950,9 +987,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'badsiglength' => 'Кедень путомат пек кувака.
 Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.',
 'yourgender' => 'Сыметь (цёрань-тейтерень):',
-'gender-unknown' => 'апак Ð½ÐµÐ²Ñ\82е',
-'gender-male' => 'цёрань сыме',
-'gender-female' => 'Ð\90ванÑ\8c Ñ\81Ñ\8bме',
+'gender-unknown' => 'Ð\90 Ð¼ÐµÑ\80евлинÑ\8c',
+'gender-male' => 'Сон витни-петни викилопатнесэ',
+'gender-female' => 'Сон Ð²Ð¸Ñ\82ни-пеÑ\82ни Ð²Ð¸ÐºÐ¸Ð»Ð¾Ð¿Ð°Ñ\82неÑ\81Ñ\8d',
 'email' => 'Е-сёрма',
 'prefs-help-realname' => 'Алкуксонь леметь (арась мелеть, иляк путо): путсак, ды сон карми неявомо не таркатнесэ, косо тон тев теят.',
 'prefs-help-email' => 'Е-сёрмапаргот а эряви тешкстамс. Сон карми эрявомо ансяк салававалонь одов пачтямсто ёмавтындерясак неень салавань валот.',
@@ -1054,8 +1091,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'action-undelete' => 'вельмевтемс мекев те лопанть',
 'action-suppressionlog' => 'ваномс те теицянть тевнеде сёрмадовкс',
 'action-block' => 'кардамс те совицянть витнемадо-петнемадо',
-'action-import' => 'совавтомс те лопанть лия Викистэ',
-'action-importupload' => 'совавтомс те лопанть файлань йовкстамо юртсто',
+'action-import' => 'совавтомс тезэнь лопат лия Викистэ',
+'action-importupload' => 'совавтомс тезэнь лопат файлань путома юртсто',
 'action-mergehistory' => 'вейтьсэндямс те лопанть юронзо-путовксонзо',
 'action-userrights' => 'витнемс-петнемс совицянь весе видечитнень',
 'action-userrights-interwiki' => 'витнемс-петнемс лия викитнесэ теицянь видечитнень',
@@ -1071,6 +1108,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'recentchanges-label-minor' => 'Те а покшкэ витнемась-петнемась',
 'recentchanges-label-bot' => 'Те витнеманть-петнеманть теизе кона-кона бот',
 'recentchanges-label-unpatrolled' => '',
+'recentchanges-legend-newpage' => '(вантаять [[Special:NewPages|од лопань лемрисьме]])',
 'rcnote' => "$5, $4 шканть коряс муят алдо {{PLURAL:$1|Меельсе '''1''' лиякстомтоманть|Меельсе '''$1''' лиякстомтоматнень}}  меельсе {{PLURAL:$2|чинть|'''$2''' читнень}} шкасто.",
 'rcnotefrom' => "Ало невтезь  '''$2''' лиякстомтомасто саезь ('''$1''' видс).",
 'rclistfrom' => 'Невтемс од витьнематнень $1-нть эйстэ саезь.',
@@ -1090,7 +1128,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'boteditletter' => 'б',
 'rc_categories_any' => 'Кодамо илязо уле',
 'newsectionsummary' => '/* $1 */ од пелькс',
-'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга (JavaScript эряви)',
+'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга',
 'rc-enhanced-hide' => 'Кекшемс келейстэ ёвтазенть',
 'rc-old-title' => 'васня сёрмадозель «$1» лем марто',
 
@@ -1424,7 +1462,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'emailsenttext' => 'Е-сёрмасо пачтямнэть кучовсь.',
 
 # Watchlist
-'watchlist' => 'Ð\9cезе Ð¼ÐµÐ»Ñ\8cга Ð¼Ð¾Ð½ Ð²Ð°Ð½Ñ\81Ñ\82нÑ\8fн',
+'watchlist' => 'Ð\92анома Ð»ÐµÐ¼Ñ\80иÑ\81Ñ\8cме',
 'mywatchlist' => 'Мезе мельга мон ванстнян',
 'watchlistfor2' => '$1-нь туртов $2',
 'nowatchlist' => 'Ванома керьксэзэть мезеяк апак путо.',
@@ -1858,7 +1896,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'file-info-size' => '$1 × $2 пиксельть, файлонть-путовксонть сталмозо: $3, MIME типезе: $4',
 'file-nohires' => 'Арась версия покш разрешения марто.',
 'svg-long-desc' => 'SVG файла, $1 × $2 пиксельть, файланть покшолмазо: $3',
-'show-big-image' => 'Ð\9fеÑ\88кÑ\81е Ñ\82еевкÑ\81еÑ\81Ñ\8c',
+'show-big-image' => 'Ð\92аÑ\81енÑ\8c Ñ\84айла',
 'file-info-gif-looped' => 'кирьксэс аравтозь',
 'file-info-png-looped' => 'кирьксэс аравтозь',
 
@@ -2174,7 +2212,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'specialpages-group-highuse' => 'Пек тевс нолдазь лопат',
 'specialpages-group-pages' => 'Лопа керькст',
 'specialpages-group-pagetools' => 'Лопань кедьёнкст',
-'specialpages-group-wiki' => 'Викинь дата ды кедьйонкст',
+'specialpages-group-wiki' => 'Викинь дата ды кедьёнкст',
 'specialpages-group-redirects' => 'Башка тевень лопатнень ютавтома лия таркас',
 'specialpages-group-spam' => 'Шукш пачтнематнеде кедьёнкст',
 
@@ -2230,4 +2268,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'duration-centuries' => '$1 {{PLURAL:$1|пинге|пингеть}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тёжтьие|тёжтьиеть}}',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Васнянь неевтезэ',
+
 );
index c903256..13b8baf 100644 (file)
@@ -378,8 +378,6 @@ $2، $1',
 'ok' => 'خا',
 'retrievedfrom' => '"$1" جه بیته بیّه',
 'youhavenewmessages' => 'شما اتا $1 دانّی ($2).',
-'newmessageslink' => 'ترنه پیغوم‌ئون',
-'newmessagesdifflink' => 'پایانی دچی‌یه',
 'youhavenewmessagesfromusers' => 'شِما {{PLURAL:$3| کارور دیگه| $3  کارور}} $1 دارنی ($2).',
 'youhavenewmessagesmanyusers' => 'شما ات‌سری کارور جه $1 دارنی ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ترنه پیغوم|ترنه پیغوم}}',
@@ -668,7 +666,6 @@ $2، $1',
 # Preferences page
 'mypreferences' => 'مه خاستنی‌ئون',
 'prefs-edits' => 'تعداد دچی‌یه‌ئون:',
-'prefsnologin' => 'سیستم دله نمویی',
 'prefs-rc' => 'تازه دگاردسته‌ئون',
 'youremail' => 'شه مه Email:',
 'username' => 'کاروری نوم:',
index 8977481..1ab8959 100644 (file)
@@ -302,8 +302,6 @@ $messages = array(
 'ok' => 'Nopan iti',
 'retrievedfrom' => 'Ōquīzqui ītech  "$1"',
 'youhavenewmessages' => 'Tiquimpiya $1 ($2).',
-'newmessageslink' => 'yancuīc tlahcuilōltzintli',
-'newmessagesdifflink' => 'achto tlapatlaliztli',
 'youhavenewmessagesmulti' => 'Tiquimpiya yancuīc tlahcuilōlli īpan $1',
 'editsection' => 'ticpatlāz',
 'editold' => 'ticpatlāz',
@@ -630,7 +628,6 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'preferences' => 'Tlaēlēhuiliztli',
 'mypreferences' => 'Notlaēlēhuiliz',
 'prefs-edits' => 'Tlapatlaliztli tlapōhualli:',
-'prefsnologin' => 'Ahmo ōtimocalac',
 'changepassword' => 'Ticpatlāz motlahtōlichtacāyo',
 'skin-preview' => 'Xiquitta quemeh yez',
 'datedefault' => 'Ayāc tlanequiliztli',
@@ -1507,4 +1504,8 @@ Niman tihuelīti [[Special:UserLogin|timocalaqui]] auh ticpactiāz huiquitica.',
 'api-error-uploaddisabled' => 'Sèuhtok in êkawilistli ìpan inìn wiki.',
 'api-error-verification-error' => 'Inìn èwalli welis îtlakauhtok, noso âmò kualli motzòwîtok.',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Cualli',
+'expand_templates_preview' => 'Xiquitta achtochīhualiztli',
+
 );
index 432caf8..cddc1d9 100644 (file)
@@ -12,6 +12,8 @@
  * @author Kaihsu
  */
 
+$fallback = 'cdo, zh-hant';
+
 $datePreferences = array(
        'default',
        'ISO 8601',
@@ -281,8 +283,6 @@ Chhiáⁿ khoàⁿ [[Special:Version|pán-pún ia̍h]].',
 'ok' => 'Hó ah',
 'retrievedfrom' => 'Lâi-goân: "$1"',
 'youhavenewmessages' => 'Lí ū $1 ($2).',
-'newmessageslink' => 'sin sìn-sit',
-'newmessagesdifflink' => 'chêng 2 ê siu-tēng-pún ê diff',
 'youhavenewmessagesmulti' => 'Lí tī $1 ū sin sìn-sit',
 'editsection' => 'siu-kái',
 'editold' => 'siu-kái',
@@ -600,8 +600,6 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 # Preferences page
 'preferences' => 'Siat-tēng',
 'mypreferences' => 'Góa ê siat-tēng',
-'prefsnologin' => 'Bô teng-ji̍p',
-'prefsnologintext' => 'Lí it-tēng ài [[Special:UserLogin|teng-ji̍p]] chiah ē-tàng chhiâu iōng-chiá ê siat-tēng.',
 'changepassword' => 'Oāⁿ bi̍t-bé',
 'prefs-skin' => 'Phôe',
 'skin-preview' => 'Chhì khoàⁿ',
@@ -1169,4 +1167,10 @@ Chit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.',
 # Special:SpecialPages
 'specialpages' => 'Te̍k-sû-ia̍h',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Khok-chhiong pang-bô͘',
+'expand_templates_input' => 'Su-ji̍p bûn-jī:',
+'expand_templates_output' => 'Kiat-kó:',
+'expand_templates_remove_comments' => 'Comments the̍h tiāu',
+
 );
index 649b386..db67e15 100644 (file)
@@ -269,8 +269,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Estratto \'e "$1"',
 'youhavenewmessages' => 'Haje $1 ($2).',
-'newmessageslink' => "nove 'mmasciàte",
-'newmessagesdifflink' => "differenze cu 'a revisione precedente",
 'youhavenewmessagesmulti' => 'Tiene nuove mmasciate $1',
 'editsection' => 'càgna',
 'editold' => 'càgna',
index 7b5bc89..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' ),
@@ -590,8 +590,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Hentet fra «$1»',
 'youhavenewmessages' => 'Du har $1 ($2).',
-'newmessageslink' => 'nye meldinger',
-'newmessagesdifflink' => 'siste endring',
 'youhavenewmessagesfromusers' => 'Du har $1 fra {{PLURAL:$3|en annen bruker| $3 brukere}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 fra mange brukere ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|en ny melding|nye meldinger}}',
@@ -1436,7 +1434,6 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
 'preferences' => 'Innstillinger',
 'mypreferences' => 'Innstillinger',
 'prefs-edits' => 'Antall redigeringer:',
-'prefsnologin' => 'Ikke logget inn',
 'changepassword' => 'Endre passord',
 'prefs-skin' => 'Utseende',
 'skin-preview' => 'Forhåndsvisning',
@@ -1735,6 +1732,7 @@ Informasjonen vil være offentlig.',
 'recentchanges-label-minor' => 'Dette er en mindre endring',
 'recentchanges-label-bot' => 'Denne redigeringen ble gjort av en bot',
 'recentchanges-label-unpatrolled' => 'Denne redigeringen har ikke blitt patruljert ennå',
+'recentchanges-legend-newpage' => '$1 – ny side',
 'rcnote' => "Nedenfor vises {{PLURAL:$1|'''1''' endring|de siste '''$1''' endringene}} fra {{PLURAL:$2|det siste døgnet|de siste '''$2''' døgnene}}, per $5 $4.",
 'rcnotefrom' => "Nedenfor er endringene siden '''$2''' (opp til '''$1''' vises).",
 'rclistfrom' => 'Vis nye endringer med start fra $1',
@@ -1742,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',
@@ -3220,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',
 
@@ -4190,4 +4188,21 @@ Om det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. K
 'limitreport-expansiondepth' => 'Største ekspansjonsdybde',
 'limitreport-expensivefunctioncount' => 'Antall kostbare parserfunksjoner',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Utvid maler',
+'expand_templates_intro' => 'Denne spesialsiden tar tekst og utvider rekusivt alle maler brukt i teksten. 
+Den utvider også alle parserfunksjoner som 
+<code><nowiki>{{</nowiki>#language:…}}</code>, og variabler som 
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Faktisk utvider den det meste innkapslet i doble krøllparenteser.',
+'expand_templates_title' => 'Konteksttittel, for {{FULLPAGENAME}}, etc.:',
+'expand_templates_input' => 'Skriv inn tekst:',
+'expand_templates_output' => 'Resultat',
+'expand_templates_xml_output' => 'XML-resultat',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Fjern kommentarer',
+'expand_templates_remove_nowiki' => 'Ikke vis <nowiki>-merkelapper i resultatet',
+'expand_templates_generate_xml' => 'Vis parsetre som XML',
+'expand_templates_preview' => 'Forhåndsvisning',
+
 );
index 68cade5..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' ),
@@ -473,8 +471,6 @@ $1",
 'ok' => 'OK',
 'retrievedfrom' => 'Vun „$1“',
 'youhavenewmessages' => 'Du hest $1 ($2).',
-'newmessageslink' => 'Ne’e Narichten',
-'newmessagesdifflink' => 'Ünnerscheed to vörher',
 'youhavenewmessagesmulti' => 'Du hest ne’e Narichten op $1',
 'editsection' => 'ännern',
 'editold' => 'ännern',
@@ -1118,7 +1114,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 'preferences' => 'Instellen',
 'mypreferences' => 'För mi Instellen',
 'prefs-edits' => 'Wo faken du in dit Wiki Sieden ännert hest:',
-'prefsnologin' => 'Nich anmellt',
 'changepassword' => 'Passwoort ännern',
 'prefs-skin' => 'Utsehn vun de Steed',
 'skin-preview' => 'Vörschau',
@@ -3103,4 +3098,20 @@ Du kannst ok de [[Special:EditWatchlist|normale Sied to’n Ännern]] bruken.',
 'revdelete-unrestricted' => 'Inschränkungen för Administraters rutnahmen',
 'rightsnone' => '(kene)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Vörlagen oplösen',
+'expand_templates_intro' => 'Mit disse Spezialsied köönt Vörlagen in ingeven Text in Wikitext ümwannelt warrn.
+Ok Parserfunkschonen so as
+<nowiki>{{</nowiki>#language:…}}, un Variabeln so as
+<nowiki>{{</nowiki>CURRENTDAY}} warrt ümwannelt. Also so temlich allens, wat twischen swiefte Klammern steit.
+Dorto warrt de nödigen Parser-Phasen in MediaWiki direkt opropen.',
+'expand_templates_title' => 'Kontexttitel, för {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Inputtext:',
+'expand_templates_output' => 'Resultat',
+'expand_templates_xml_output' => 'XML-Utgaav',
+'expand_templates_ok' => 'Los',
+'expand_templates_remove_comments' => 'Kommentaren rutnehmen',
+'expand_templates_generate_xml' => 'XML-Parser-Boom wiesen',
+'expand_templates_preview' => 'Vörschau',
+
 );
index 2b9accd..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' ),
 );
 
@@ -581,8 +597,6 @@ $1",
 'ok' => 'Best',
 'retrievedfrom' => 'Van "$1"',
 'youhavenewmessages' => 'Je hebben $1 ($2).',
-'newmessageslink' => 'nieje berichten',
-'newmessagesdifflink' => 'verschil mit de veurige versie',
 'youhavenewmessagesfromusers' => 'Je hebben $1 van {{PLURAL:$3|n aandere gebruker|$3 gebrukers}} ($2).',
 'youhavenewmessagesmanyusers' => 'Je hebben $1 van n bulte gebrukers ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|n niej bericht|nieje berichten}}',
@@ -1423,7 +1437,6 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'preferences' => 'Veurkeuren',
 'mypreferences' => 'Mien veurkeuren',
 'prefs-edits' => 'Antal bewarkingen:',
-'prefsnologin' => 'Niet an-meld',
 'changepassword' => 'Wachtwoord wiezigen',
 'prefs-skin' => '{{SITENAME}}-uterlik',
 'skin-preview' => 'bekieken',
@@ -1723,6 +1736,7 @@ Disse informasie is zichtbaor veur aandere gebrukers.',
 'recentchanges-label-minor' => 'Dit is n kleine wieziging',
 'recentchanges-label-bot' => 'Disse bewarking is uutevoerd deur n bot',
 'recentchanges-label-unpatrolled' => 'Disse bewarking is nog niet nao-ekeken',
+'recentchanges-legend-newpage' => '$1 - nieje pagina',
 'rcnote' => "Hieronder {{PLURAL:$1|steet de leste bewarking|staon de leste '''$1''' bewarkingen}} van de aofgeleupen {{PLURAL:$2|dag|'''$2''' dagen}} (per: $5, $4).",
 'rcnotefrom' => 'Dit bin de wiezigingen sinds <b>$2</b> (maximum van <b>$1</b> wiezigingen).',
 'rclistfrom' => 'Bekiek wiezigingen vanaof $1',
@@ -4151,4 +4165,17 @@ Aanders ku\'j oek t eenvoudige formulier hieronder gebruken. Joew kommentaar zal
 'limitreport-expansiondepth' => 'Hoogste uutbreidingsdiepte',
 'limitreport-expensivefunctioncount' => 'Antal kostbaore parserfunksies',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Mallen substitueren',
+'expand_templates_intro' => 'Disse spesiale zied leest de op-egeven tekste en substitueert rekursief alle mallen in de tekste. Oek ondersteunde parserfunksies zo as <code><nowiki>{{</nowiki>#language:…}}</code> en variabels zo as <nowiki>{{</nowiki>CURRENTDAY}}&mdash. Zwat alle teksten tussen dubbelde krulhaken wörden esubstitueerd.',
+'expand_templates_title' => 'Titel, veur {{FULLPAGENAME}}, enz.:',
+'expand_templates_input' => 'Invoertekste:',
+'expand_templates_output' => 'Resultaot',
+'expand_templates_xml_output' => 'XML-uutvoer',
+'expand_templates_ok' => 'Oké',
+'expand_templates_remove_comments' => 'Opmarking vorthaolen',
+'expand_templates_remove_nowiki' => 'Etiketten <nowiki> in resultaot onderdrokken',
+'expand_templates_generate_xml' => 'XML-parserboom bekieken',
+'expand_templates_preview' => 'Naokieken',
+
 );
index 7ac459c..a998926 100644 (file)
@@ -331,8 +331,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => ' "$1" बाट निकालिएको',
 'youhavenewmessages' => 'तपाईंको लागि ($2) मा  $1 छ ।',
-'newmessageslink' => 'नयाँ सन्देशहरू',
-'newmessagesdifflink' => 'आखिरी परिवर्तन',
 'youhavenewmessagesfromusers' => 'तपाईंको लागि  {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
 'youhavenewmessagesmanyusers' => 'तपाईँलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।',
 'newmessageslinkplural' => '{{PLURAL:$1|नयाँ सन्देश|नयाँ सन्देशहरू}}',
@@ -1111,7 +1109,6 @@ $1",
 'preferences' => 'रोजाईहरू',
 'mypreferences' => 'प्राथमिकताहरु',
 'prefs-edits' => 'सम्पादन संख्या:',
-'prefsnologin' => 'प्रवेश (लग ईन) नगरिएको',
 'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
 'prefs-skin' => 'काँचुली',
 'skin-preview' => 'पूर्वावलोकन',
@@ -1389,6 +1386,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'recentchanges-label-minor' => 'यो साधारण सम्पादन हो',
 'recentchanges-label-bot' => 'यो सम्पादन बोट द्वारा गरिएको थियो',
 'recentchanges-label-unpatrolled' => 'यो सम्पादन अहिले सम्म पट्रोल गरिएको छैन',
+'recentchanges-legend-newpage' => '$1 - नयाँ पृष्ठ',
 'rcnote' => "तल पछिल्ला {{PLURAL:$2|day|'''$2''' दिनहरु}} मा  $5, $4 सम्म भएका {{PLURAL:$1|is '''1''' change|पछिल्ला '''$1''' परिवर्तनहरु}} देखाइएको छ ।",
 'rcnotefrom' => "'''$2''' देखिका परिवर्तनहरु तल ('''$1''' सम्मका देखाइन्छ)।",
 'rclistfrom' => '$1 देखिका नयाँ परिवर्तनहरू देखाउनु',
index 54e018d..908187f 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' ),
@@ -646,12 +651,10 @@ Meer informatie is beschikbaar op de pagina [[Special:Version|softwareversie]].'
 'ok' => 'OK',
 'retrievedfrom' => 'Overgenomen van "$1"',
 'youhavenewmessages' => 'U hebt $1 ($2).',
-'newmessageslink' => 'nieuwe berichten',
-'newmessagesdifflink' => 'laatste wijziging',
 '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',
@@ -785,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
@@ -825,7 +828,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'logout' => 'Afmelden',
 'userlogout' => 'Afmelden',
 'notloggedin' => 'Niet aangemeld',
-'userlogin-noaccount' => 'Hebt u geen geregistreerde gebruiker?',
+'userlogin-noaccount' => 'Hebt u geen account?',
 'userlogin-joinproject' => 'Word lid van {{SITENAME}}',
 'nologin' => 'Nog geen gebruikersnaam? $1.',
 'nologinlink' => 'Registreren',
@@ -833,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}}.
@@ -1361,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',
@@ -1534,7 +1538,6 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 'preferences' => 'Voorkeuren',
 'mypreferences' => 'Voorkeuren',
 'prefs-edits' => 'Aantal bewerkingen:',
-'prefsnologin' => 'Niet aangemeld',
 'prefsnologintext2' => 'U moet $1 om voorkeuren in te stellen.',
 'changepassword' => 'Wachtwoord wijzigen',
 'prefs-skin' => 'Vormgeving',
@@ -1834,10 +1837,13 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'recentchanges-summary' => 'Op deze pagina kunt u de recentste wijzigingen in deze wiki bekijken.',
 'recentchanges-noresult' => 'Er zijn in deze periode geen wijzigingen gemaakt die aan de criteria voldoen.',
 'recentchanges-feed-description' => 'Met deze feed kunt u de recentste wijzigingen in deze wiki bekijken.',
-'recentchanges-label-newpage' => 'Met deze bewerking is een nieuwe pagina aangemaakt',
+'recentchanges-label-newpage' => 'Met deze bewerking is een nieuwe pagina aangemaakt.',
 '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',
@@ -4373,4 +4379,21 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'limitreport-expansiondepth' => 'Hoogste uitbreidingsdiepte',
 'limitreport-expensivefunctioncount' => 'Aantal kostbare parserfuncties',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Sjablonen substitueren',
+'expand_templates_intro' => 'Deze speciale pagina leest de opgegeven tekst in en substitueert recursief alle sjablonen in de tekst.
+Het substitueert ook alle parserfuncties zoals
+<code><nowiki>{{</nowiki>#language:…}}</code> en
+variabelen als <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Vrijwel alle tekst tussen dubbele accolades wordt gesubstitueerd.',
+'expand_templates_title' => 'Contexttitel, voor {{FULLPAGENAME}}, enzovoort:',
+'expand_templates_input' => 'Invoertekst:',
+'expand_templates_output' => 'Resultaat',
+'expand_templates_xml_output' => 'XML-uitvoer',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Opmerkingen verwijderen',
+'expand_templates_remove_nowiki' => 'Tags <nowiki> in resultaat onderdrukken',
+'expand_templates_generate_xml' => 'XML-parserboom bekijken',
+'expand_templates_preview' => 'Voorvertoning',
+
 );
index b8ff13a..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' ),
@@ -591,8 +593,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Henta frå «$1»',
 'youhavenewmessages' => 'Du har $1 ($2).',
-'newmessageslink' => 'nye meldingar',
-'newmessagesdifflink' => 'sjå skilnad',
 'youhavenewmessagesfromusers' => 'Du har $1 frå {{PLURAL:$3|ein annan brukar| $3 brukarar}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 frå mange brukarar ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ei ny melding|nye meldingar}}',
@@ -1012,9 +1012,9 @@ Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
 * '''Internet Explorer:''' Haldt nede ''Ctrl'' medan du klikkar ''Oppdater'', eller trykk ''Ctrl-F5.''
 * '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''.",
 'usercssyoucanpreview' => "'''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
-'userjsyoucanpreview' => "''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
+'userjsyoucanpreview' => "'''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
 'usercsspreview' => "'''Hugs at dette berre er ei førehandsvising av din eigen CSS og at han ikkje er lagra enno!'''",
-'userjspreview' => "'''Hugs at du berre testar ditt eige JavaScript, det har ikkje vorte lagra enno!!'''",
+'userjspreview' => "'''Hugs at du berre testar eller førehandsviser brukar-JavaScript-et ditt. Det har ikkje vorte lagra enno!'''",
 'sitecsspreview' => "'''Hugs at du berre førehandsviser dette stilarket. '''
 '''Det er ikkje lagra enno!'''",
 'sitejspreview' => "'''Hugs at du berre førehandsviser denne JavaScript-koden.'''
@@ -1234,8 +1234,8 @@ Andre administratorar på {{SITENAME}} kan framleis sjå det gøymde innhaldet o
 'revdelete-hide-user' => 'Gøym brukarnamn/IP-adresse',
 'revdelete-hide-restricted' => 'Løyn data frå administratorar slik som med andre brukarar',
 'revdelete-radio-same' => '(ikkje endra)',
-'revdelete-radio-set' => 'Ja',
-'revdelete-radio-unset' => 'Nei',
+'revdelete-radio-set' => 'Løynd',
+'revdelete-radio-unset' => 'Synleg',
 'revdelete-suppress' => 'Fjern informasjon frå administratorar også',
 'revdelete-unsuppress' => 'Fjern avgrensingane på dei attoppretta versjonane',
 'revdelete-log' => 'Årsak:',
@@ -1392,7 +1392,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
 'prefs-edits' => 'Tal på endringar:',
-'prefsnologin' => 'Ikkje innlogga',
 'changepassword' => 'Skift passord',
 'prefs-skin' => 'Drakt',
 'skin-preview' => 'førehandsvis',
@@ -1675,6 +1674,7 @@ Denne informasjonen vil vera offentleg.',
 'recentchanges-label-minor' => 'Endringa er småplukk',
 'recentchanges-label-bot' => 'Denne endringa vart gjort av ein bot',
 'recentchanges-label-unpatrolled' => 'Endringa er ikkje patruljert enno',
+'recentchanges-legend-newpage' => '$1 – ny side',
 'rcnote' => "Nedanfor er {{PLURAL:$1|den siste endringa gjord|dei siste '''$1''' endringane gjorde}} {{PLURAL:$2|den siste dagen|dei siste '''$2''' dagane}}, for $4, kl. $5.",
 'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan  ''' $2''' viste.",
 'rclistfrom' => 'Vis nye endringar sidan $1',
@@ -3158,7 +3158,7 @@ $1',
 'svg-long-desc' => 'SVG-fil, standardoppløysing: $1 × $2 pikslar, filstorleik: $3',
 'svg-long-desc-animated' => 'Animert SVG-fil, standardoppløysing $1 × $2 pikslar, filstorleik: $3',
 'svg-long-error' => 'Ugild SVG-fil: $1',
-'show-big-image' => 'Full oppløysing',
+'show-big-image' => 'Opphavleg fil',
 'show-big-image-preview' => 'Storleik på førehandsvising: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Anna oppløysing|Andre oppløysingar}}: $1.',
 'show-big-image-size' => '$1 × $2 pikslar',
@@ -4057,4 +4057,21 @@ Om ikkje kan du nytta det enkle skjemaet under. Merknaden din vert lagd til på
 'limitreport-expansiondepth' => 'Største utvidingsdjupna',
 'limitreport-expensivefunctioncount' => 'Tal på dyre analysefunksjonar',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Utvid malar',
+'expand_templates_intro' => 'Denne sida tek ein tekst og utvider alle malar som er bruka i teksten.
+Ho utvider òg alle funksjonar som
+<nowiki>{{</nowiki>#language:…}}, og variablar som
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash; bortimot alt som står i dobbelte klammeparentesar.
+Dette gjer ho ved å kalla dei relevante parsersetega frå MediaWiki sjølv.',
+'expand_templates_title' => 'Konteksttittel, for {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Inntekst:',
+'expand_templates_output' => 'Resultat',
+'expand_templates_xml_output' => 'XML-resultat',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Fjern kommentarar',
+'expand_templates_remove_nowiki' => 'Ikkje vis <nowiki>-merke i resultatet',
+'expand_templates_generate_xml' => 'Vis parsertre som XML',
+'expand_templates_preview' => 'Førehandsvising',
+
 );
index c22a78b..c2edf96 100644 (file)
@@ -253,8 +253,6 @@ $messages = array(
 
 'retrievedfrom' => 'Le tšwa go "$1"',
 'youhavenewmessages' => 'O na le $1 ($2).',
-'newmessageslink' => 'ya melaetša ye mefsa',
-'newmessagesdifflink' => 'phetogo ya mafelelo',
 'newmessagesdifflinkplural' => 'l{{PLURAL:$1|Phetogo tša|Diphetogo ya}}go feta',
 'youhavenewmessagesmulti' => 'O nale melaetša ye mefsa go $1',
 'editsection' => 'lokiša',
@@ -596,7 +594,6 @@ Leka go fetleka ka go ngwala ''all:'' go fetleka mateng ka moka, goba o šumiše
 'preferences' => 'Dikgatlhegelo',
 'mypreferences' => 'Dikgatlhegelo tša ka',
 'prefs-edits' => 'Palo ya diphetogo:',
-'prefsnologin' => 'Ga wa tsena',
 'changepassword' => 'Fetola ditlhaka-tša-siphiri',
 'skin-preview' => 'Ponopele',
 'prefs-datetime' => 'Tšatšikgwedi le nako',
@@ -1272,4 +1269,7 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] "filter":',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Phetho',
+
 );
index 9b8e1db..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' ),
@@ -566,8 +564,6 @@ $1",
 'ok' => "D'acòrdi",
 'retrievedfrom' => 'Recuperada de « $1 »',
 'youhavenewmessages' => 'Avètz $1 ($2).',
-'newmessageslink' => 'de messatges novèls',
-'newmessagesdifflink' => 'darrièr cambiament',
 'youhavenewmessagesfromusers' => "Avètz $1 {{PLURAL:$3|d'un autre utilizaire|de $3 autres utilizaires}} ($2).",
 'youhavenewmessagesmanyusers' => 'Avètz $1 de fòrça utilizaires ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|un novèl messatge|de novèls messatges}}',
@@ -1401,7 +1397,6 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
 'preferences' => 'Preferéncias',
 'mypreferences' => 'Preferéncias',
 'prefs-edits' => 'Nombre d’edicions :',
-'prefsnologin' => 'Vos sètz pas identificat(ada)',
 'prefsnologintext2' => "$1 per definir las preferéncias d'utilizaire.",
 'changepassword' => 'Modificacion del senhal',
 'prefs-skin' => 'Aparéncia',
@@ -1701,6 +1696,7 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'recentchanges-label-minor' => 'Aqueste cambiament es menor',
 'recentchanges-label-bot' => 'Aqueste cambiament es estat efectuat per un bòt.',
 'recentchanges-label-unpatrolled' => 'Aqueste cambiament es pas estat verificat encara.',
+'recentchanges-legend-newpage' => '$1 - pagina novèla',
 'rcnote' => 'Vaquí {{PLURAL:$1|lo darrièr cambiament|los $1 darrièrs cambiaments}} dempuèi {{PLURAL:$2|lo darrièr jorn|los <b>$2</b> darrièrs jorns}}, determinat{{PLURAL:$1||s}} lo $4, a $5.',
 'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
 'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
@@ -4105,4 +4101,17 @@ Ensajatz la previsualizacion normala.',
 'limitreport-expansiondepth' => 'Mai granda prigondor d’espandiment',
 'limitreport-expensivefunctioncount' => 'Nombre de foncions d’analisi costosas',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Espandiment dels modèls',
+'expand_templates_intro' => 'Aquesta pagina permet de testar l’espandiment de modèls, que son desvolopats recursivament. Las foncions e las variablas predefinidas, coma <nowiki>{{</nowiki>#language:...}} e <nowiki>{{</nowiki>CURRENTDAY}} tanben son desvolopadas.',
+'expand_templates_title' => 'Títol de l’article, util per exemple se lo modèl utiliza {{FULLPAGENAME}} :',
+'expand_templates_input' => 'Picatz vòstre tèxte aicí :',
+'expand_templates_output' => 'Visualizatz lo resultat :',
+'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_ok' => "D'acòrdi",
+'expand_templates_remove_comments' => 'Suprimir los comentaris.',
+'expand_templates_remove_nowiki' => 'Suprimís los marcadors <nowiki> dins lo resultat',
+'expand_templates_generate_xml' => "Veire l'arborescéncia XML",
+'expand_templates_preview' => 'Previsualizacion',
+
 );
index f2b8fb2..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( 'ସଭ୍ୟଙ୍କୁମେଲକରିବେ' ),
@@ -530,8 +528,6 @@ $1',
 'ok' => 'ଠିକ ଅଛି',
 'retrievedfrom' => '"$1" ରୁ ଅଣାଯାଇଅଛି',
 'youhavenewmessages' => 'ଆପଣଙ୍କ ପାଇଁ $1 ($2)।',
-'newmessageslink' => 'ନୂଆ ମେସେଜ',
-'newmessagesdifflink' => 'ଶେଷ ବଦଳ',
 'youhavenewmessagesfromusers' => 'ଆପଣଙ୍କର {{PLURAL:$3|another user|$3 users}} ($2)ରୁ $1 ଅଛି ।',
 'youhavenewmessagesmanyusers' => 'ଆପଣଙ୍କର ବହୁତ ବ୍ୟବହାରକାରୀ($2)ମାନଙ୍କଠାରୁ $1 ଅଛି ।',
 'newmessageslinkplural' => '{{PLURAL:$1|ଏକ ନୂଆ ସନ୍ଦେଶ|ନୂଆ ସନ୍ଦେଶ}}',
@@ -1372,7 +1368,6 @@ $1",
 'preferences' => 'ପସନ୍ଦ',
 'mypreferences' => 'ପସନ୍ଦ',
 'prefs-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା:',
-'prefsnologin' => 'ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି',
 'changepassword' => 'ପାସୱର୍ଡ଼ ବଦଳାନ୍ତୁ',
 'prefs-skin' => 'ବହିରାବରଣ',
 'skin-preview' => 'ସାଇତା ଆଗରୁ ଦେଖଣା',
@@ -4035,4 +4030,11 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'duration-centuries' => '$1 {{PLURAL:$1|century|centuries}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Special:ExpandTemplates
+'expand_templates_input' => 'ଇନପୁଟ ବିଷୟ:',
+'expand_templates_output' => 'ପରିଣାମ',
+'expand_templates_ok' => 'ଠିକ ଅଛି',
+'expand_templates_remove_comments' => 'ମତାମତ ହଟାନ୍ତୁ',
+'expand_templates_preview' => 'ଦେଖଣା',
+
 );
index ead85ea..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' ),
@@ -447,8 +445,6 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Ист æрцыд {{grammar:ablative|"$1"}}',
 'youhavenewmessages' => 'Райстай $1 ($2).',
-'newmessageslink' => 'ног фыстæгтæ',
-'newmessagesdifflink' => 'фæстаг ивд',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Æндæр архайæгæй|$3 архайæгæй}} дæм $1 æрцыд ($2).',
 'youhavenewmessagesmanyusers' => 'Бирæ архайæгæй дæм $1 æрцыдис ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ног фыстæг|ног фыстæджытæ}}',
@@ -1073,7 +1069,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'preferences' => 'Уагæвæрдтæ',
 'mypreferences' => 'Уагæвæрдтæ',
 'prefs-edits' => 'Ивдтыты нымæц:',
-'prefsnologin' => 'Системæйы нæ дæ',
 'changepassword' => 'Пароль ивæн',
 'prefs-skin' => 'Цъар',
 'skin-preview' => 'Разæркаст',
@@ -1868,4 +1863,8 @@ $3',
 'duration-centuries' => '$1 {{PLURAL:$1|æнус|æнусы}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мин аз|мин азы}}',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Афтæ уæд!',
+'expand_templates_preview' => 'Разæркаст',
+
 );
index 84fd688..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( 'ਬਿਨਾਂ_ਇੰਟਰਵਿਕੀਆਂ_ਵਾਲੇ' ),
 );
 
@@ -461,8 +461,6 @@ $1',
 'ok' => 'ਠੀਕ ਹੈ',
 'retrievedfrom' => '"$1" ਤੋਂ ਲਿਆ',
 'youhavenewmessages' => 'ਤੁਹਾਡੇ ਲਈ $1। ($2)',
-'newmessageslink' => 'ਨਵੇਂ ਸੁਨੇਹੇ',
-'newmessagesdifflink' => 'ਆਖ਼ਰੀ ਤਬਦੀਲੀ',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|ਇੱਕ ਵਰਤੋਂਕਾਰ|$3 ਵਰਤੋਂਕਾਰਾਂ}} ਵੱਲੋਂ ਤੁਹਾਨੂੰ $1 ($2)।',
 'youhavenewmessagesmanyusers' => 'ਕਈ ਯੂਜ਼ਰ ਵੱਲੋਂ ਤੁਹਾਨੂੰ $1 ($2)।',
 'newmessageslinkplural' => '{{PLURAL:$1|ਇੱਕ ਨਵਾਂ ਸੁਨੇਹਾ|ਨਵੇਂ ਸੁਨੇਹੇ}} {{PLURAL:$1|ਹੈ|ਹਨ}}',
@@ -517,6 +515,7 @@ $1',
 # General errors
 'error' => 'ਗ਼ਲਤੀ',
 'databaseerror' => 'ਡਾਟਾਬੇਸ ਗਲਤੀ',
+'databaseerror-error' => 'ਦੋਸ਼: $1',
 'laggedslavemode' => "'''ਖ਼ਬਰਦਾਰ:''' ਹੋ ਸਕਦਾ ਹੈ ਸਫ਼ੇ ਵਿਚ ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਸ਼ਾਮਲ ਨਾ ਹੋਣ।",
 'readonly' => 'ਡਾਟਾਬੇਸ ਨੂੰ ਤਾਲ਼ਾ ਲੱਗਿਆ ਹੋਇਆ ਹੈ',
 'enterlockreason' => 'ਤਾਲਾ-ਬੰਦੀ ਲਈ ਕਾਰਨ ਦਾਖ਼ਲ ਕਰੋ, ਨਾਲ਼ ਹੀ ਤਾਲਾ-ਬੰਦੀ ਦੇ ਰਿਲੀਜ਼ ਹੋਣ ਦਾ ਅੰਦਾਜ਼ਨ ਵਕਤ',
@@ -634,6 +633,7 @@ $2',
 'userlogin-resetpassword-link' => 'ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?',
 'helplogin-url' => 'Help: ਲਾਗਇਨ ਕਰਨਾ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ਲਾਗਇਨ ਹੋਣ ਲਈ ਮੱਦਦ]]',
+'userlogin-createanother' => 'ਹੋਰ ਖਾਤਾ ਬਣਾਓ',
 'createacct-join' => 'ਆਪਣੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-another-join' => 'ਆਪਣੇ ਅਕਾਊਂਟ ਦੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-emailrequired' => 'ਈਮੇਲ ਪਤਾ',
@@ -696,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' => 'ਈਮੇਲ ਪਤਾ ਕਬੂਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਅੰਦਾਜ਼ ਵਿਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।
@@ -712,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 ਦੇ ਮੇਲ() ਕਰਜ ਵਿੱਚ ਅਣਜਾਣ ਦੋਸ਼',
@@ -780,6 +782,9 @@ $2
 
 # Special:ResetTokens
 'resettokens' => 'ਟੋਕਨ ਮੁੜ-ਸੈੱਟ ਕਰੋ',
+'resettokens-tokens' => 'ਟੋਕਨ:',
+'resettokens-token-label' => '$1 (ਚਾਲੂ ਮੁੱਲ: $2)',
+'resettokens-resetbutton' => 'ਚੁਣੇ ਹੋਏ ਟੋਕਨ ਮੁੜ ਸੈੱਟ ਕਰੋ',
 
 # Edit page toolbar
 'bold_sample' => 'ਗੂੜੀ ਲਿਖਤ',
@@ -1027,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' => 'ਲੁਕਵਾਂ',
@@ -1040,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' => 'ਦਿੱਖ ਬਦਲੋ',
@@ -1047,7 +1055,7 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'revdel-restore-visible' => 'ਦਿਸਣਯੋਗ ਰੀਵੀਜਨ',
 'pagehist' => 'ਸਫ਼ਾ ਅਤੀਤ',
 'deletedhist' => 'ਹਟਾਇਆ ਗਿਆ ਅਤੀਤ',
-'revdelete-hide-current' => 'ਤਾਰੀਖ &2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਰੀਵਿਜ਼ਨ ਹੈ।
+'revdelete-hide-current' => 'ਤਾਰੀਖ $2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗ਼ਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਦੁਹਰਾਈ ਹੈ।
 ਇਹ ਲੁਕਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ।',
 'revdelete-otherreason' => 'ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:',
 'revdelete-reasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
@@ -1090,6 +1098,7 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'compareselectedversions' => 'ਚੁਣੇ ਵਰਜਨਾਂ ਦੀ ਤੁਲਨਾ',
 'showhideselectedversions' => 'ਚੁਣੇ ਰੀਵਿਜ਼ਨ ਵਖਾਓ/ਲੁਕਾਓ',
 'editundo' => 'ਰੱਦ ਕਰੋ',
+'diff-empty' => '(ਕੋਈ ਫ਼ਰਕ ਨਹੀਂ)',
 'diff-multi' => '({{PLURAL:$2|ਵਰਤੋਂਕਾਰ ਦੀ|$2 ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ}} {{PLURAL:$1|ਵਿਚਕਾਰਲੀ ਰੀਵਿਜਨ ਨਹੀਂ ਦਿਖਾਈ ਜਾ ਰਹੀ|ਵਿਚਕਾਰਲੀਆਂ $1 ਰੀਵਿਜਨਾਂ ਨਹੀਂ ਦਿਖਾਈਆਂ ਜਾ ਰਹੀਆਂ}})',
 
 # Search results
@@ -1098,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' => 'ਸਫ਼ੇ ਦੀ ਲਿਖਤ ਮੇਲ ਖਾਂਦੀ ਹੈ',
@@ -1157,7 +1167,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'preferences' => 'ਪਸੰਦਾਂ',
 'mypreferences' => 'ਪਸੰਦਾਂ',
 'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
-'prefsnologin' => 'ਦਾਖ਼ਲ ਨਹੀਂ ਹੋ',
 'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
 'prefs-skin' => 'ਸਕਿਨ',
 'skin-preview' => 'ਝਲਕ',
@@ -1234,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' => 'ਉਹ ਵਿਕੀ ਸਫ਼ੇ ਸੋਧਦੀ ਹੈ',
@@ -1259,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' => 'ਈ-ਮੇਲ ਪਤਾ ਸਹੀ ਲਗਦਾ ਹੈ',
@@ -1296,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}}:ਅਫ਼ਸਰ',
@@ -1386,6 +1398,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ਆਖ਼ਰੀ ਫੇਰੀ ਤੋਂ ਲੈ ਕੇ}}',
+'enhancedrc-history' => 'ਅਤੀਤ',
 'recentchanges' => 'ਹਾਲ ’ਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ',
 'recentchanges-legend' => 'ਹਾਲ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਸਬੰਧੀ ਚੋਣਾਂ',
 'recentchanges-summary' => 'ਇਸ ਵਿਕੀ ’ਤੇ ਹੋਈਆਂ ਸਭ ਤੋਂ ਨਵੀਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਸਫ਼ੇ ’ਤੇ ਵੇਖੋ।',
@@ -1394,6 +1408,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'recentchanges-label-minor' => 'ਇਹ ਇੱਕ ਛੋਟੀ ਸੋਧ ਹੈ',
 '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 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਖਾਓ',
@@ -1513,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>
@@ -1538,6 +1555,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'listfiles_size' => 'ਆਕਾਰ',
 'listfiles_description' => 'ਵੇਰਵਾ',
 'listfiles_count' => 'ਵਰਜਨ',
+'listfiles-latestversion-yes' => 'ਹਾਂ',
+'listfiles-latestversion-no' => 'ਨਹੀਂ',
 
 # File description page
 'file-anchor-link' => 'ਫ਼ਾਈਲ',
@@ -1616,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' => 'ਰਲ਼ਵਾਂ ਰੀਡਿਰੈਕਟ',
 
@@ -2808,4 +2833,7 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 # Image rotation
 'rotate-comment' => 'ਤਸਵੀਰ ਨੂੰ ਘੜੀ ਦੇ ਰੁਖ ਵਿਚ $1 {{PLURAL:$1|ਡਿਗਰੀ|ਡਿਗਰੀਆਂ}} ਨਾਲ਼ ਘੁਮਾਇਆ ਗਿਆ',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'ਝਲਕ',
+
 );
index f12a2ed..65685c7 100644 (file)
@@ -250,8 +250,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'ok' => 'Sigi',
 'retrievedfrom' => 'Mekua ya king "$1"',
 'youhavenewmessages' => 'Atin kang $1 ($2).',
-'newmessageslink' => 'bayung mensahi',
-'newmessagesdifflink' => 'tauling miyalilan',
 'youhavenewmessagesmulti' => 'Atin kang bayung mensahi king $1',
 'editsection' => 'mag-edit',
 'editold' => 'alilan',
@@ -785,7 +783,6 @@ Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ni
 'preferences' => 'Pinili',
 'mypreferences' => '↓Deng pinili ku',
 'prefs-edits' => 'Bilang da reng edit:',
-'prefsnologin' => 'ekamaka log',
 'changepassword' => 'Alilan ya ing password',
 'prefs-skin' => 'Balat',
 'skin-preview' => 'I-preview',
index 7c1b11e..e66f8f7 100644 (file)
@@ -242,8 +242,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Érprind din  "$1"',
 'youhavenewmessages' => 'Os avez $1 ($2).',
-'newmessageslink' => 'nouvieus messaches',
-'newmessagesdifflink' => 'darin cangemint',
 'youhavenewmessagesmulti' => 'Os avez des nouvieus messaches su $1',
 'editsection' => 'éditer',
 'editold' => 'éditer',
index 8d65c50..d5e0088 100644 (file)
@@ -233,8 +233,6 @@ Guck aa [[Special:Version|Versionsblatt]]',
 'ok' => 'OK',
 'retrievedfrom' => 'Vun „$1“',
 'youhavenewmessages' => 'Du hast $1 uff deinem $2.',
-'newmessageslink' => 'Neiichkeede',
-'newmessagesdifflink' => 'Gschwetz-Blatt',
 'youhavenewmessagesmulti' => 'Du hascht neie Comments: $1',
 'editsection' => 'Ennere',
 'editold' => 'Ennere',
@@ -499,6 +497,7 @@ Paesswatt fer nau: $2',
 'recentchanges' => 'Was mer letscht geduh henn',
 'recentchanges-label-minor' => 'Gleene Ennering',
 'recentchanges-label-bot' => 'Ennering vun em Waddefresser',
+'recentchanges-legend-newpage' => '$1 - neies Blatt',
 'rcshowhideminor' => 'Gleene Enneringe $1',
 'rcshowhidebots' => 'Bots $1',
 'rcshowhideanons' => 'IP-Yuuser $1',
@@ -1009,4 +1008,10 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
 # Search suggestions
 'searchsuggest-search' => 'Uffgucke',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Result',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Anmaerrickinge lösche',
+'expand_templates_preview' => 'Aagucke',
+
 );
index 606ff5c..ab0b726 100644 (file)
@@ -267,8 +267,6 @@ $1',
 'ok' => 'Alla gud',
 'retrievedfrom' => 'Vun "$1"',
 'youhavenewmessages' => 'Du hoschd $1 ($2).',
-'newmessageslink' => 'naije Nochrischde',
-'newmessagesdifflink' => 'ledschdi Ännarung',
 'newmessagesdifflinkplural' => 'ledschdi {{PLURAL:$1|Ännarung|Ännarunge}}',
 'youhavenewmessagesmulti' => 'Do hoschd ä Nochrischd grischd: $1',
 'editsection' => 'beawaide',
index d72d1ea..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' ),
@@ -584,12 +588,10 @@ $1',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Źródło „$1”',
 'youhavenewmessages' => 'Masz $1 ($2).',
-'newmessageslink' => 'nowe wiadomości',
-'newmessagesdifflink' => 'różnica z poprzednią wersją',
 'youhavenewmessagesfromusers' => 'Masz $1 od {{PLURAL:$3|innego użytkownika|$3 użytkowników}} ($2).',
 'youhavenewmessagesmanyusers' => 'Masz $1 od wielu użytkowników ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|jedną wiadomość|nowe wiadomości}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|ostatnia zmiana|ostatnie zmiany}}',
+'newmessageslinkplural' => '{{PLURAL:$1|jedną wiadomość|999=nowe wiadomości}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ostatnia zmiana|999=ostatnie zmiany}}',
 'youhavenewmessagesmulti' => 'Masz nowe wiadomości na $1',
 'editsection' => 'edytuj',
 'editold' => 'edytuj',
@@ -719,7 +721,8 @@ Administrator blokujący go podał następujący powód "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Nieprawidłowa nazwa w obszarze nazw "$2" o treści "$3"',
 'invalidtitle-unknownnamespace' => 'Nieprawidłowa nazwa z nieznaną liczbą przestrzeni nazw  $1  o treści "$2"',
 'exception-nologin' => 'Nie jesteś zalogowany/a',
-'exception-nologin-text' => 'Ta strona lub akcja wymaga bycia zalogowanym na tej wiki.',
+'exception-nologin-text' => 'Proszę [[Special:Userlogin|zaloguj się]] aby mieć dostęp do tej strony lub akcji.',
+'exception-nologin-text-manual' => 'Musisz $1 aby mieć dostęp do tej strony lub akcji.',
 
 # Virus scanner
 'virus-badscanner' => "Zła konfiguracja – nieznany skaner antywirusowy ''$1''",
@@ -1283,6 +1286,7 @@ wybrana wersja nie istnieje lub próbowano ukryć wersję bieżącą.',
 Inni administratorzy {{GRAMMAR:D.lp|{{SITENAME}}}} nadal będą mieć dostęp do ukrytych treści oraz będą mogli je odtworzyć używając standardowych mechanizmów, chyba że nałożono dodatkowe ograniczenia.",
 'revdelete-confirm' => 'Potwierdź, że chcesz to zrobić zgodnie z [[{{MediaWiki:Policy-url}}|zasadami]] i że rozumiesz konsekwencje.',
 'revdelete-suppress-text' => "Ukrywanie powinno być używane '''wyłącznie''' w sytuacji:
+* Informacji, która może być zniesławieniem
 * Ujawnienie danych osobowych
 *: ''adres domowy, numer telefonu, numer PESEL itp''",
 'revdelete-legend' => 'Ustaw ograniczenia widoczności',
@@ -1293,8 +1297,8 @@ Inni administratorzy {{GRAMMAR:D.lp|{{SITENAME}}}} nadal będą mieć dostęp do
 'revdelete-hide-user' => 'Ukryj nazwę użytkownika/adres IP',
 'revdelete-hide-restricted' => 'Ukryj informacje przed administratorami tak samo jak przed innymi',
 'revdelete-radio-same' => '(bez zmian)',
-'revdelete-radio-set' => 'Tak',
-'revdelete-radio-unset' => 'Nie',
+'revdelete-radio-set' => 'Ukryty',
+'revdelete-radio-unset' => 'Widoczny',
 'revdelete-suppress' => 'Utajnij informacje przed administratorami, tak samo jak przed innymi',
 'revdelete-unsuppress' => 'Wyłącz utajnianie dla odtwarzanej historii zmian',
 'revdelete-log' => 'Powód',
@@ -1448,7 +1452,7 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
 'preferences' => 'Preferencje',
 'mypreferences' => 'Preferencje',
 'prefs-edits' => 'Liczba edycji',
-'prefsnologin' => 'Nie jesteś zalogowany',
+'prefsnologintext2' => 'Musisz $1 aby ustawić preferencje.',
 'changepassword' => 'Zmiana hasła',
 'prefs-skin' => 'Skórka',
 'skin-preview' => 'podgląd',
@@ -1746,6 +1750,8 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'recentchanges-label-minor' => 'To jest drobna zmiana',
 'recentchanges-label-bot' => 'Ta edycja została wykonana przez bota',
 'recentchanges-label-unpatrolled' => 'Ta edycja nie została jeszcze sprawdzona',
+'recentchanges-label-plusminus' => 'Zmieniony rozmiar strony (liczba bajtów)',
+'recentchanges-legend-newpage' => '(zobacz też [[Special:NewPages|listę nowych stron]])',
 'rcnote' => "Poniżej {{PLURAL:$1|znajduje się '''1''' ostatnia zmiana wykonana|znajdują się ostatnie '''$1''' zmiany wykonane|znajduje się ostatnich '''$1''' zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniego dnia|ostatnich '''$2''' dni}}, licząc od $5 dnia $4.",
 'rcnotefrom' => "Poniżej pokazano zmiany wykonane po '''$2''' (nie więcej niż '''$1''' pozycji).",
 'rclistfrom' => 'Pokaż nowe zmiany od $1',
@@ -2481,9 +2487,9 @@ Kontakt do autora:
 mail – $PAGEEDITOR_EMAIL
 wiki – $PAGEEDITOR_WIKI
 
-W przypadku kolejnych zmian nowe powiadomienia nie zostaną wysłane, dopóki nie odwiedzisz tej strony. Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron obserwowanych.
+W przypadku kolejnych zmian nowe powiadomienia nie zostaną wysłane, dopóki nie odwiedzisz tej strony jako zalogowany. Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron obserwowanych.
 
-       Wiadomość z systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}
+Wiadomość z systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}
 
 --
 W celu zmiany ustawień swojej listy obserwowanych odwiedź
@@ -3166,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 */',
@@ -3313,7 +3320,7 @@ Jeśli go otworzysz, możesz zarazić swój system.",
 'svg-long-desc' => 'Plik SVG, nominalnie $1 × $2 pikseli, rozmiar pliku: $3',
 'svg-long-desc-animated' => 'Animowany plik SVG, nominalnie $1 × $2 pikseli, rozmiar pliku: $3',
 'svg-long-error' => 'Nieprawidłowy plik SVG:$1',
-'show-big-image' => 'Pełna rozdzielczość',
+'show-big-image' => 'Rozmiar pierwotny',
 'show-big-image-preview' => 'Rozmiar podglądu – $1.',
 'show-big-image-other' => '{{PLURAL:$2|Inna rozdzielczość|Inne rozdzielczości}}: $1.',
 'show-big-image-size' => '$1 x $2 pikseli',
@@ -4066,6 +4073,7 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 
 # Special:SpecialPages
 'specialpages' => 'Strony specjalne',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Normalne strony specjalne.
 * <span class="mw-specialpagerestricted">Zastrzeżone strony specjalne.</span>',
 'specialpages-group-maintenance' => 'Raporty konserwacyjne',
@@ -4280,4 +4288,21 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 'limitreport-expansiondepth' => 'Największa głębokość ekspansji',
 'limitreport-expensivefunctioncount' => 'Liczba wywołań kosztownych funkcji parsera',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Rozwijanie szablonów',
+'expand_templates_intro' => 'We wprowadzonym na tej stronie tekście źródłowym zostaną rozwinięte rekurencyjnie wszystkie szablony.
+Rozwinięte także zostaną funkcje parsera takie jak
+<code><nowiki>{{</nowiki>#language:…}}</code> i zmienne jak
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+W zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.',
+'expand_templates_title' => 'Pozorny tytuł strony dla zmiennych takich jak {{FULLPAGENAME}}',
+'expand_templates_input' => 'Tekst wejściowy',
+'expand_templates_output' => 'Rezultat',
+'expand_templates_xml_output' => 'wynik w formacie XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Usuń komentarze',
+'expand_templates_remove_nowiki' => 'Ukrywaj w wyniku znaczniki <nowiki>',
+'expand_templates_generate_xml' => 'Pokaż drzewo analizatora składni w formacie XML',
+'expand_templates_preview' => 'Podgląd',
+
 );
index ef6ac50..54edd28 100644 (file)
@@ -316,12 +316,10 @@ $1",
 'ok' => 'Va bin',
 'retrievedfrom' => 'Pijàit da «$1»',
 'youhavenewmessages' => "A l'ha $1 ($2).",
-'newmessageslink' => 'ëd mëssagi neuv',
-'newmessagesdifflink' => 'ùltima modìfica',
 'youhavenewmessagesfromusers' => "A l'ha $1 da {{PLURAL:$3|n'autr utent|$3 utent}} ($2).",
 'youhavenewmessagesmanyusers' => "A l'ha $1 da vàire utent ($2).",
-'newmessageslinkplural' => '{{PLURAL:$1|un mëssagi neuv|$1 mëssagi neuv}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|ùltima modìfica|ùltime modìfiche}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un mëssagi neuv|999=dij mëssagi neuv}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ùltima modìfica|999=ùltime modìfiche}}',
 'youhavenewmessagesmulti' => "A l'ha dij neuv mëssagi an $1",
 'editsection' => 'modifiché',
 'editold' => 'modifiché',
@@ -549,7 +547,7 @@ Che a preuva torna, për piasì.",
 'passwordtooshort' => 'Le ciav a devo avèj almanch {{PLURAL:$1|1 caràter|$1 caràter}}.',
 'password-name-match' => 'Soa ciav a dev esse diferenta da sò stranòm.',
 'password-login-forbidden' => "L'usagi ëd së stranòm d'utent e ëd sa ciav a son ëstàit proibì.",
-'mailmypassword' => 'Mandeme na neuva ciav për pòsta eletrònica',
+'mailmypassword' => 'Riamposté la ciav',
 'passwordremindertitle' => 'Neuva ciav provisòria për {{SITENAME}}',
 'passwordremindertext' => "Cheidun (a l'é belfé che a sia stàit pròpe chiel, da 'nt l'adrëssa IP $1) a l'ha ciamà na neuva
 ciav për rintré ant ël sistema ëd {{SITENAME}} ($4).
@@ -621,7 +619,7 @@ Peul desse ch'a l'ha già cambià la ciav o a l'ha ciamà na neuva ciav provisò
 # Special:PasswordReset
 'passwordreset' => 'Ri-inissialisassion ëd la ciav',
 'passwordreset-text-one' => "Ch'a completa 's formolari për reimposté soa ciav.",
-'passwordreset-text-many' => "{{PLURAL:$1|Ch'a compila un dij camp për riamposté soa ciav.}}",
+'passwordreset-text-many' => "{{PLURAL:$1|Ch'a compila un dij camp për arsèive na ciav provisòria për pòsta eletrònica.}}",
 'passwordreset-legend' => 'Riampostassion ëd la ciav',
 'passwordreset-disabled' => "La reinissialisassion ëd le ciav a l'é stàita disabilità su sta wiki.",
 'passwordreset-emaildisabled' => 'Le fonsionalità ëd pòsta eletrònica a son ëstàite disativà su sta wiki.',
@@ -1168,7 +1166,6 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
 'preferences' => 'Mè gust',
 'mypreferences' => 'Gust',
 'prefs-edits' => 'Nùmer ëd modìfiche fàite:',
-'prefsnologin' => "A l'é ancó pa rintrà ant ël sistema",
 'prefsnologintext2' => "Për piasì, ch'a $1 për definì ij gust d'utent.",
 'changepassword' => 'Cangé la ciav',
 'prefs-skin' => 'Facia',
@@ -1471,6 +1468,9 @@ Costa anformassion a sarà pùblica.",
 'recentchanges-label-minor' => "Costa a l'é na modìfica cita",
 'recentchanges-label-bot' => "Sa modìfica a l'é stàita fàita da un trigomiro",
 'recentchanges-label-unpatrolled' => "Sta modìfica-sì a l'é pa ancó stàita verificà",
+'recentchanges-label-plusminus' => "La taja dla pàgina a l'é cangià d'un nùmer ëd bytes",
+'recentchanges-legend-newpage' => '(vëdde ëdcò [[Special:NewPages|lista dle pàgine neuve]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Ambelessì sota a-i {{PLURAL:$1|é '''1''' modìfica|son j'ùltime '''$1''' modìfiche}} ant j'ùltim {{PLURAL:$2|di|'''$2''' di}}, a parte da $5 dël $4.",
 'rcnotefrom' => ' Ambelessì sota a-i é la lista dle modìfiche da <b>$2</b> (fin-a a <b>$1</b>).',
 'rclistfrom' => 'Mostré le modìfiche a parte da $1',
@@ -3960,4 +3960,21 @@ Dësnò, a peul dovré ël formolari semplificà sì-sota. Sò coment a sarà gi
 'limitreport-expansiondepth' => "Pi granda përfondità d'espansion",
 'limitreport-expensivefunctioncount' => "Cont ëd le fonsion d'anàlisi care",
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Anàlisi djë stamp',
+'expand_templates_intro' => "Sta pàgina special-sì a pija dël test e a-i fa n'anàlisi arcorenta ëd tuti jë stamp ch'a l'ha andrinta.
+A l'analisa ëdcò le fonsion anterpretà coma
+<code><nowiki>{{</nowiki>#language:…}}</code>, e le variàbij coma
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+An efet, a espand praticament tut lòn ch'a-i é antrames dle grafe dobie.",
+'expand_templates_title' => 'Tìtol ëd contest për {{FULLPAGENAME}} e via fòrt:',
+'expand_templates_input' => 'Test da analisé:',
+'expand_templates_output' => 'Arzultà',
+'expand_templates_xml_output' => 'Output an XML',
+'expand_templates_ok' => 'Bin parèj',
+'expand_templates_remove_comments' => 'Gava via ij coment',
+'expand_templates_remove_nowiki' => "Gava ij tag <nowiki> ant l'arzultà",
+'expand_templates_generate_xml' => "Mosta l'erbo ëd parse XML",
+'expand_templates_preview' => 'Preuva',
+
 );
index 2fe655f..6dc3836 100644 (file)
@@ -276,8 +276,6 @@ $messages = array(
 'ok' => 'ٹھیک اے',
 'retrievedfrom' => '"$1" توں لیا',
 'youhavenewmessages' => 'تواڈے لئی $1 ($2).',
-'newmessageslink' => 'نواں سنیآ',
-'newmessagesdifflink' => 'آخری تبدیلی',
 'youhavenewmessagesmulti' => 'تھاڈے ل‏ی $1 تے نوں سنیعہ اے۔',
 'editsection' => 'لکھو',
 'editold' => 'لکھو',
@@ -1007,7 +1005,6 @@ $1",
 'preferences' => 'تانگاں',
 'mypreferences' => 'میریاں تانگاں',
 'prefs-edits' => 'تبدیلیاں دی گنتی:',
-'prefsnologin' => 'لاگ ان نئیں او',
 'changepassword' => 'کنجی بدلو',
 'prefs-skin' => 'چھاڑ',
 'skin-preview' => 'کچا کم',
index 36e3486..12dc82c 100644 (file)
@@ -260,8 +260,6 @@ $messages = array(
 'ok' => 'Εγέντον',
 'retrievedfrom' => 'Ασο "$1"',
 'youhavenewmessages' => 'Έχετε $1 ($2).',
-'newmessageslink' => 'καινούρεα μενέματα',
-'newmessagesdifflink' => 'υστερνόν αλλαγήν',
 'youhavenewmessagesmulti' => 'Έχετε καινούρεα μενέματα σο $1',
 'editsection' => 'άλλαξον',
 'editold' => 'άλλαξον',
index 9310b2e..d9db050 100644 (file)
@@ -251,8 +251,6 @@ Pāusai en kategōrijai "$1"',
 'ok' => 'Labbai',
 'retrievedfrom' => 'Aps: "$1"',
 'youhavenewmessages' => 'Tu turri $1 ($2)',
-'newmessageslink' => 'nāunans waīstins',
-'newmessagesdifflink' => 'Šlaitīntan ezze panzdaumai wersiōnin',
 'youhavenewmessagesmulti' => 'Tū turri nāunans waīstins ēn $1',
 'editsection' => 'redigīs',
 'editold' => 'redigīs',
@@ -827,7 +825,6 @@ Pamēnais, kāi tenēisan indicai mazzi ni būtwei aktuālin.',
 'preferences' => 'Pirminiskwas',
 'mypreferences' => 'Majjas pirminiskwas',
 'prefs-edits' => 'Kitawīdinsnan gīrbis:',
-'prefsnologin' => 'Ni assei engūbun',
 'changepassword' => 'Kitawīdinais kliptaswīrdan',
 'prefs-skin' => 'Prusna',
 'skin-preview' => 'Pirmādira',
@@ -1065,6 +1062,7 @@ Tū mazzi dīgi etrīnktun dātun kitēimans drāugautwei sen tin pra tērpautaj
 'recentchanges-label-minor' => 'Sta ast malks redigīsenis',
 'recentchanges-label-bot' => 'Sta ast redigīsenis segītan pra bōtan',
 'recentchanges-label-unpatrolled' => 'Šis redigīsenis ni ast dabber izbandātan',
+'recentchanges-legend-newpage' => '$1 - nāunan pāusan',
 'rcnote' => "Zemmais ast {{PLURAL:$1|'''1''' kitawīdinsna segīta|panzdaumas '''$1''' kitawīdinsnas segītas}} en panzdaumamans {{PLURAL:$2|dēinan|'''$2''' dēinans}}, gīrbawintei ezze $5, $4.",
 'rcnotefrom' => "Zemmais ast kitawīdisnas ezze '''$2''' (ērgi '''$1''' waidīntan).",
 'rclistfrom' => 'Waidinnais nāunans kitawīdinsnans pagaūnintei ezze $1',
index ecc9892..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 Ú¯ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
 ډېر زيات کارنان د همدې مخ د کتلو په هڅه کې دي.
 لطفاً د دې مخ د کتلو د بيا هڅې نه دمخه يو څو شېبې صبر وکړۍ.
 
@@ -431,12 +431,10 @@ $1',
 'ok' => 'ښه',
 'retrievedfrom' => '"$1" نه اخيستل شوی',
 'youhavenewmessages' => 'تاسې $1 لری  ($2).',
-'newmessageslink' => 'نوي پيغامونه',
-'newmessagesdifflink' => 'وروستی بدلون',
 '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' => 'سمول',
@@ -593,7 +591,7 @@ $1',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
 'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
 'createacct-another-email-ph' => 'برېښليک پته مو ورکړۍ',
-'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او په لاندې ورکړل شوې برېښليک پته کې ورلېږل',
+'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او ځانگړې شوې برېښليک پتې ته ورلېږل',
 'createacct-realname' => 'آر نوم (اختياري)',
 'createaccountreason' => 'سبب:',
 'createacct-reason' => 'سبب',
@@ -652,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' => 'دا برېښليک پته نه منل کېږي، دا ځکه چې دا پته يوه ناکره بڼه لري.
@@ -669,7 +667,7 @@ $1',
 که چېرته دا کړنه په تېروتنه کې شوی وي نو تاسې کولای شی چې دا پيغام بابېزه وگڼۍ.',
 'usernamehasherror' => 'کارن-نوم نشي کېدلای چې کرښکې لوښې ولري',
 'login-throttled' => 'تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.
-لطفاً د بيا هڅې نه مخکې يو څو شېبې تم شۍ.',
+لطفاً د بيا هڅې نه مخکې $1 شېبې تم شۍ.',
 'login-abort-generic' => 'غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو',
 'loginlanguagelabel' => 'ژبه: $1',
 
@@ -683,8 +681,7 @@ $1',
 'newpassword' => 'نوی پټنوم:',
 'retypenew' => 'نوی پټنوم بيا وليکه:',
 'resetpass_submit' => 'پټنوم مو وټاکۍ او بيا غونډال ته ورننوځۍ',
-'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!
-اوس غونډال کې د ورننوتلو په حال کې يو ...',
+'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!',
 'resetpass_forbidden' => 'پټنومونه مو نه شي بدلېدلای',
 'resetpass-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'resetpass-submit-loggedin' => 'پټنوم بدلول',
@@ -709,6 +706,7 @@ $1',
 # Special:ChangeEmail
 'changeemail' => 'برېښليک پته بدلول',
 'changeemail-header' => 'د گڼون برېښليک پته بدلول',
+'changeemail-text' => 'د برېښليک پتې بدلولو لپاره مو همدا فورمه ډکه کړۍ. د دې بدلون د تاييد لپاره بايد پټنوم مو ورکړۍ.',
 'changeemail-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'changeemail-oldemail' => 'اوسنۍ برېښليک پته:',
 'changeemail-newemail' => 'نوې برېښليک پته:',
@@ -932,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' => 'ړنګې شوې بڼې',
@@ -1042,7 +1040,6 @@ $1',
 'preferences' => 'غوره توبونه',
 'mypreferences' => 'غوره توبونه',
 'prefs-edits' => 'د سمونو شمېر:',
-'prefsnologin' => 'غونډال کې نه ياست ننوتي',
 'changepassword' => 'پټنوم بدلول',
 'prefs-skin' => 'پوښۍ',
 'skin-preview' => 'مخکتنه',
@@ -1065,7 +1062,7 @@ $1',
 'prefs-rendering' => 'ښکارېدنه',
 'saveprefs' => 'خوندي کول',
 'resetprefs' => 'بيا سمول',
-'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول',
+'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول (په ټولو برخو کې)',
 'prefs-editing' => 'سمېدنې کې دی',
 'rows' => 'ليکې:',
 'columns' => 'ستنې:',
@@ -1114,7 +1111,7 @@ $1',
 'yournick' => 'کورنی نوم:',
 'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
 بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
-'yourgender' => 'جنس:',
+'yourgender' => 'څنگه غواړۍ ځان څرگند کړۍ؟',
 'gender-unknown' => 'ناڅرگنده',
 'gender-male' => 'نارينه',
 'gender-female' => 'ښځينه',
@@ -1150,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' => 'تاسې هغه ډلې چې همدا کارن يې غړی دی بدلولی شی:
 * يو په نښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب لري.
 * يو نانښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب نلري.
@@ -1263,6 +1261,7 @@ $1',
 'recentchanges-label-minor' => 'دا يوه وړه سمونه ده',
 'recentchanges-label-bot' => 'دغه سمون د يو روباټ لخوا ترسره شوی',
 'recentchanges-label-unpatrolled' => 'دغه سمون تر اوسه پورې نه دی څارل شوی',
+'recentchanges-legend-newpage' => '(دا هم وگورۍ [[Special:NewPages|د نويو مخونو لړليک]])',
 'rcnote' => "دلته لاندې {{PLURAL:$1|وروستی '''1''' بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په  {{PLURAL:$2| يوې ورځ|'''$2''' ورځو}} کې تر $4 نېټې او $5 بجو پېښ شوي.",
 'rcnotefrom' => "په همدې ځای کې لاندې هغه بدلونونه دي چې د '''$2''' نه راپدېخوا پېښ شوي (تر '''$1''' پورې ښکاره شوي).",
 'rclistfrom' => 'هغه نوي بدلونونه ښکاره کول چې له $1 نه پيلېږي',
@@ -1403,6 +1402,7 @@ $1',
 'upload_source_file' => '(ستاسو په کمپيوټر کې يوه دوتنه)',
 
 # Special:ListFiles
+'listfiles-summary' => 'همدا ځانگړی مخ ټولې پورته شوې دوتنې ښکاره کوي.',
 'listfiles_search_for' => 'د انځور د نوم لټون:',
 'imgfile' => 'دوتنه',
 'listfiles' => 'د دوتنو لړليک',
@@ -1413,6 +1413,8 @@ $1',
 'listfiles_size' => 'کچه (بايټونه)',
 'listfiles_description' => 'څرگندونه',
 'listfiles_count' => 'بڼې',
+'listfiles-latestversion-yes' => 'هو',
+'listfiles-latestversion-no' => 'نه',
 
 # File description page
 'file-anchor-link' => 'دوتنه',
@@ -1485,6 +1487,7 @@ $1',
 
 # Random page in category
 'randomincategory-selectcategory' => 'يو ناټاکلی مخ له وېشنيزې موندل: $1 $2.',
+'randomincategory-selectcategory-submit' => 'ورځه',
 
 # Random redirect
 'randomredirect' => 'ناټاکلی ورگرځېدنه',
@@ -1566,6 +1569,7 @@ $1',
 'listusers' => 'کارن لړليک',
 'listusers-editsonly' => 'يوازې هغه کارنان چې سمونونه يې کړي ښکاره کول',
 'listusers-creationsort' => 'د جوړېدو د نېټې له مخې اوډل',
+'listusers-desc' => 'مخښکته اوډل',
 'usereditcount' => '{{PLURAL:$1|سمون|سمونونه}}',
 'usercreated' => 'په $1 نېټه په $2 بجو {{GENDER:$3|جوړ شو}}',
 'newpages' => 'نوي مخونه',
@@ -1690,7 +1694,7 @@ $1',
 'emailccme' => 'زما د پيغام يوه بېلگه دې ماته هم برېښليک شي.',
 'emailccsubject' => '$1 ته ستاسو د پيغام لمېسه: $2',
 'emailsent' => 'برېښليک مو ولېږل شو',
-'emailsenttext' => 'ستاسو برېښليکي پيغام ولېږل شو.',
+'emailsenttext' => 'ستاسې برېښليکي پيغام ولېږل شو.',
 'emailuserfooter' => 'دا برېښليک د $1 لخوا $2 ته د {{SITENAME}} په وېبځي کې د "کارن ته برېښليک لېږل" د کړنې په مرسته لېږل شوی.',
 
 # User Messenger
@@ -1716,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' توکي سره ستونزه، ناسم نوم ...",
@@ -2330,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' => 'د گڼياليز کېدنې وخت او نېټه',
@@ -2782,4 +2786,11 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|پېړۍ|پېړۍ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'کينډۍ غځول',
+'expand_templates_input' => 'ځايونکی متن:',
+'expand_templates_output' => 'پايله',
+'expand_templates_ok' => 'ښه',
+'expand_templates_preview' => 'مخکتنه',
+
 );
index fcfa787..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' ),
@@ -594,12 +594,10 @@ Consulte a página da [[Special:Version|versão do sistema]].',
 'ok' => 'OK',
 'retrievedfrom' => 'Obtida de "$1"',
 'youhavenewmessages' => 'Tem $1 ($2).',
-'newmessageslink' => 'mensagens novas',
-'newmessagesdifflink' => 'comparar com a penúltima revisão',
 'youhavenewmessagesfromusers' => 'Tem $1 de {{PLURAL:$3|outro utilizador|$3 utilizadores}} ($2).',
 'youhavenewmessagesmanyusers' => 'Tem $1 de muitos utilizadores ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|uma mensagem nova|mensagens novas}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|última alteração|últimas alterações}}',
+'newmessageslinkplural' => '{{PLURAL:$1|uma mensagem nova|999=mensagens novas}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|última alteração|999=últimas alterações}}',
 'youhavenewmessagesmulti' => 'Tem mensagens novas em $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -728,7 +726,7 @@ O administrador que efetuou o bloqueio deu a seguinte explicação: "$3".',
 'invalidtitle-knownnamespace' => 'Título inválido com o espaço nominal "$2" e texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título inválido com número de espaço nominal $1 desconhecido e texto "$2"',
 'exception-nologin' => 'Não está autenticado',
-'exception-nologin-text' => 'Esta página ou operação requer que esteja autenticado nesta wiki.',
+'exception-nologin-text' => 'Por favor, [[Special:Userlogin|entre]] para poder acessar esta página ou acção.',
 'exception-nologin-text-manual' => 'Por favor  $1  para poder aceder a esta página ou acção.',
 
 # Virus scanner
@@ -776,7 +774,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências]].'
 'gotaccount' => "Já possui uma conta? '''$1'''.",
 'gotaccountlink' => 'Autentique-se',
 'userlogin-resetlink' => 'Esqueceu-se do seu nome de utilizador ou da palavra-chave?',
-'userlogin-resetpassword-link' => 'Recuperar palavra-chave',
+'userlogin-resetpassword-link' => 'Esqueceu a sua palavra-chave?',
 'helplogin-url' => 'Help:Autenticação',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda a fazer login]]',
 'userlogin-loggedin' => 'Já está {{GENDER:$1|autenticado|autenticada|autenticado}} com o nome $1.
@@ -850,9 +848,9 @@ Para prevenir abusos, só um email de recuperação de palavra-chave pode ser en
 'mailerror' => 'Erro ao enviar correio: $1',
 'acct_creation_throttle_hit' => 'Visitantes desta wiki com o seu endereço IP criaram $1 {{PLURAL:$1|conta|contas}} no último dia, o que é o máximo permitido neste período de tempo.
 Em resultado, visitantes com este endereço IP não podem criar mais nenhuma conta neste momento.',
-'emailauthenticated' => 'O seu endereço de correio electrónico foi autenticado a $2 às $3.',
-'emailnotauthenticated' => 'O seu endereço de correio electrónico ainda não foi autenticado.
-Não serão enviados correios de nenhuma das seguintes funcionalidades.',
+'emailauthenticated' => 'O seu endereço de correio electrónico foi confirmado a $2, às $3.',
+'emailnotauthenticated' => 'O seu endereço de correio electrónico ainda não foi confirmado.
+Não serão enviados emails de nenhuma das seguintes funcionalidades.',
 'noemailprefs' => 'Especifique um endereço de correio eletrónico nas suas preferências para ativar estas funcionalidades.',
 'emailconfirmlink' => 'Confirme o seu endereço de correio electrónico',
 'invalidemailaddress' => 'O endereço de correio eletrónico não pode ser aceite porque parece ter um formato inválido.
@@ -1301,7 +1299,7 @@ Outros administradores da {{SITENAME}} continuarão a poder aceder ao conteúdo
 'revdelete-suppress-text' => "A supressão '''só''' deverá ser usada nos seguintes casos:
 * Informação potencialmente caluniosa, difamatória ou injuriosa
 * Informação pessoal imprópria
-*: ''endereços de domicílio e números de telefone, números da segurança social, etc''",
+*: ''endereços de domicílio e números de telefone, números de identificação nacional, etc''",
 'revdelete-legend' => 'Definir restrições de visibilidade',
 'revdelete-hide-text' => 'Revisão do texto',
 'revdelete-hide-image' => 'Ocultar conteúdo do ficheiro',
@@ -1310,8 +1308,8 @@ Outros administradores da {{SITENAME}} continuarão a poder aceder ao conteúdo
 'revdelete-hide-user' => 'Nome de utilizador/endereço de IP',
 'revdelete-hide-restricted' => 'Ocultar dados dos administradores e de todos os outros',
 'revdelete-radio-same' => '(manter)',
-'revdelete-radio-set' => 'Visível',
-'revdelete-radio-unset' => 'Escondido',
+'revdelete-radio-set' => 'Escondido',
+'revdelete-radio-unset' => 'Visível',
 'revdelete-suppress' => 'Ocultar dados dos administradores e de todos os outros',
 'revdelete-unsuppress' => 'Remover restrições das revisões restauradas',
 'revdelete-log' => 'Motivo:',
@@ -1470,7 +1468,7 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
 'preferences' => 'Preferências',
 'mypreferences' => 'Preferências',
 'prefs-edits' => 'Número de edições:',
-'prefsnologin' => 'Não autenticado',
+'prefsnologintext2' => 'Por favor, precisa de $1 para definir as suas preferências.',
 'changepassword' => 'Alterar palavra-chave',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Antever tema',
@@ -1771,6 +1769,7 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'recentchanges-label-minor' => 'Esta é uma edição menor',
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
+'recentchanges-legend-newpage' => '(ver também a [[Special:NewPages|lista de páginas novas]])',
 'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
 'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
 'rclistfrom' => 'Mostrar as novas mudanças a partir das $1',
@@ -2503,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
@@ -3335,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',
@@ -4243,4 +4242,21 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 'limitreport-templateargumentsize' => 'Tamanho dos argumentos da predefinição',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expandir predefinições',
+'expand_templates_intro' => "Esta página especial recebe um texto e expande recursivamente todas as predefinições nele existentes.
+Também expande funções do analisador sintático ''(parser)'', tais como
+<nowiki>{{</nowiki>#language:...}}, e variáveis, tais como
+<nowiki>{{</nowiki>CURRENTDAY}}.
+De fato, expande tudo o que estiver entre chaves duplas.",
+'expand_templates_title' => 'Título de contexto para {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Texto a expandir:',
+'expand_templates_output' => 'Resultado',
+'expand_templates_xml_output' => 'Resultado XML',
+'expand_templates_ok' => 'Expandir',
+'expand_templates_remove_comments' => 'Remover comentários',
+'expand_templates_remove_nowiki' => "Suprimir ''tags'' <nowiki> no resultado",
+'expand_templates_generate_xml' => 'Mostrar a árvore de análise sintáctica do XML',
+'expand_templates_preview' => 'Antevisão do resultado',
+
 );
index 5c44e2d..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)',
@@ -602,8 +600,6 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
 'ok' => 'OK',
 'retrievedfrom' => 'Disponível em "$1"',
 'youhavenewmessages' => 'Você tem $1 ($2).',
-'newmessageslink' => 'novas mensagens',
-'newmessagesdifflink' => 'última alteração',
 'youhavenewmessagesfromusers' => 'Você tem $1 de {{PLURAL:$3|outro usuário|$3 usuários}} ($2)',
 'youhavenewmessagesmanyusers' => 'Você tem $1 de muitos usuários ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|uma mensagem nova|mensagens novas}}',
@@ -787,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}}.
@@ -1300,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:',
@@ -1462,7 +1458,6 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'preferences' => 'Preferências',
 'mypreferences' => 'Preferências',
 'prefs-edits' => 'Número de edições:',
-'prefsnologin' => 'Não autenticado',
 'changepassword' => 'Alterar senha',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Pré-visualização',
@@ -1761,6 +1756,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'recentchanges-label-minor' => 'Esta é uma edição menor',
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
+'recentchanges-legend-newpage' => '$1 - nova página',
 'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
 'rcnotefrom' => "Seguem as alterações desde as '''$4''' de '''$3''' (limitadas a '''$1''').",
 'rclistfrom' => 'Mostrar as novas alterações a partir das $1',
@@ -4224,4 +4220,21 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 'limitreport-expansiondepth' => 'Máxima profundidade de expansão',
 'limitreport-expensivefunctioncount' => 'Conta da função expansiva do analizador',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expandir predefinições',
+'expand_templates_intro' => 'Esta página especial pega algum texto e expande todas as predefinições nela existentes recursivamente. 
+Também expande funções do analisador (parser) como 
+<code><nowiki>{{</nowiki>#language:…}}</code>, e variáveis como 
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Na verdade, expande tudo que está entre chaves duplas.',
+'expand_templates_title' => 'Título de contexto para {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Texto de entrada:',
+'expand_templates_output' => 'Resultado',
+'expand_templates_xml_output' => 'Resultado XML',
+'expand_templates_ok' => 'Expandir',
+'expand_templates_remove_comments' => 'Remover comentários',
+'expand_templates_remove_nowiki' => 'Suprima marcações <nowiki> no resultado',
+'expand_templates_generate_xml' => 'Mostrar árvore de análise (parse) do XML',
+'expand_templates_preview' => 'Pré-visualização',
+
 );
index f1da92f..9367717 100644 (file)
  * @author SPQRobin
  * @author Sanbec
  * @author Sborsody
+ * @author Scimonster
  * @author Se4598
  * @author Seb35
  * @author Sherbrooke
@@ -813,8 +814,8 @@ Parameters:
 ** {{msg-mw|Sp-contributions-newbies-title}}",
 'pagetitle-view-mainpage' => '{{optional}}',
 'backlinksubtitle' => '{{optional}}
-Appears in subtitle
-* $1 is a link to the page (HTML)',
+Appears in subtitle. Parameters:
+* $1 - a link to the page (HTML)',
 'retrievedfrom' => 'Message which appears in the source of every page, but it is hidden. It is shown when printing.
 
 Parameters:
@@ -1438,7 +1439,7 @@ Parameters:
 {{Identical|Login error}}',
 'createacct-error' => 'Used as heading for the error message.',
 'createaccounterror' => 'Parameters:
-* $1 is an error message',
+* $1 - an error message',
 'nocookiesnew' => "This message is displayed when a new account was successfully created, but the browser doesn't accept cookies.",
 'nocookieslogin' => "This message is displayed when someone tried to login, but the browser doesn't accept cookies.",
 'nocookiesfornew' => "This message is displayed when the user tried to create a new account, but it failed the cross-site request forgery (CSRF) check. It could be blocking an attack, but most likely, the browser isn't  accepting cookies.",
@@ -1482,7 +1483,8 @@ Parameters:
 * $1 - the minimum number of characters in the password',
 'password-name-match' => 'Used as error message when password validity check failed.',
 'password-login-forbidden' => 'Error message shown when the user has tried to log in using one of the special username/password combinations used for MediaWiki testing. (See [[mwr:75589]], [[mwr:75605]].)',
-'mailmypassword' => 'Heading in [[Special:PasswordReset]]',
+'mailmypassword' => 'Used as label for Submit button in [[Special:PasswordReset]].
+{{Identical|Reset password}}',
 'passwordremindertitle' => 'Title of email which contains temporary password',
 'passwordremindertext' => 'This text is used in an email sent when a user requests a new temporary password (he has forgotten his password) or when an sysop creates a new user account choosing to have password and username sent to the new user by email.
 
@@ -1841,7 +1843,7 @@ See also:
 * {{msg-mw|cantcreateaccount-text}}.
 {{Identical|No reason given}}',
 'whitelistedittext' => 'Used as error message. Parameters:
-* $1 is a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description
+* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description
 See also:
 * {{msg-mw|Nocreatetext}}
 * {{msg-mw|Uploadnologintext}}
@@ -1897,8 +1899,10 @@ Parameters:
 
 Parameters:
 * $1 - a possible username that has not been registered',
-'userpage-userdoesnotexist-view' => 'Shown in user pages of non existing users. See for example [{{canonicalurl:User:Foo}} User:Foo]. Parameters:
-* $1 is a username.',
+'userpage-userdoesnotexist-view' => 'Shown in user pages of non existing users. See for example [{{canonicalurl:User:Foo}} User:Foo].
+
+Parameters:
+* $1 - a username',
 'blocked-notice-logextract' => '{{gender}}
 Parameters:
 * $1 - (Optional) the name of the blocked user. Can be used for GENDER.',
@@ -2044,7 +2048,9 @@ See also:
 * {{msg-mw|loginreqtitle}}
 {{Identical|Permission error}}',
 'permissionserrorstext' => "This message is \"without action\" version of {{msg-mw|Permissionserrorstext-withaction}}.
-* \$1 is the number of reasons that were found why ''the action'' cannot be performed.",
+
+Parameters:
+* \$1 - the number of reasons that were found why ''the action'' cannot be performed",
 'permissionserrorstext-withaction' => 'This message is "with action" version of {{msg-mw|Permissionserrorstext}}.
 
 Parameters:
@@ -2139,8 +2145,10 @@ This message is substituted in:
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'On some (expensive) [[MetaWikipedia:Help:ParserFunctions|parser functions]] (e.g. <code><nowiki>{{#ifexist:}}</nowiki></code>) there is a limit of how many times it may be used. This is an error message shown when the limit is exceeded.
-* $1 is the current number of parser function calls.
-* $2 is the allowed number of parser function calls.
+
+Parameters:
+* $1 - the current number of parser function calls
+* $2 - the allowed number of parser function calls
 See also [[:mw:Manual:$wgExpensiveParserFunctionLimit|$wgExpensiveParserFunctionLimit in the MediaWiki manual]].
 
 See also:
@@ -2255,10 +2263,14 @@ See the error message:
 * {{msg-mw|history-feed-empty}}',
 'currentrev' => 'Used in Diff Preview page. The diff is between {{msg-mw|currentrev}} and {{msg-mw|yourtext}}.
 {{Identical|Current revision}}',
-'currentrev-asof' => 'Used on a difference page when comparing the current versions of a page with each other. See {{msg-mw|Revisionasof}} for the message for non-current version.
-* $1 is a date and time
-* $2 is a date (optional)
-* $3 is a time (optional)',
+'currentrev-asof' => 'Used on a difference page when comparing the current versions of a page with each other.
+
+See {{msg-mw|Revisionasof}} for the message for non-current version.
+
+Parameters:
+* $1 - a date and time
+* $2 - (Optional) a date
+* $3 - (Optional) a time',
 'revisionasof' => 'Used on a difference page when comparing different versions of a page or when viewing an non-current version of a page.
 
 See {{msg-mw|Currentrev-asof}} for the message for the current version.
@@ -2505,30 +2517,37 @@ Links to page history at Special:RevisionDelete header together with links to th
 Links to [[Special:Undelete]] at [[Special:RevisionDelete]] header together with links to the logs and page history.',
 'revdelete-hide-current' => '{{RevisionDelete}}
 Parameters:
-* $1 is a date
-* $2 is a time',
+* $1 - a date
+* $2 - a time
+{{Related|Revdelete}}',
 'revdelete-show-no-access' => '{{RevisionDelete}}
 Parameters:
-* $1 is a date
-* $2 is a time',
+* $1 - a date
+* $2 - a time
+{{Related|Revdelete}}',
 'revdelete-modify-no-access' => '{{RevisionDelete}}
 Parameters:
-* $1 is a date
-* $2 is a time',
+* $1 - a date
+* $2 - a time
+{{Related|Revdelete}}',
 'revdelete-modify-missing' => '{{RevisionDelete}}
-* $1 is a revision ID',
+* $1 - a revision ID
+{{Related|Revdelete}}',
 'revdelete-no-change' => '{{RevisionDelete}}
 Parameters:
-* $1 is a date
-* $2 is a time',
+* $1 - a date
+* $2 - a time
+{{Related|Revdelete}}',
 'revdelete-concurrent-change' => '{{RevisionDelete}}
 Parameters:
-* $1 is a date
-* $2 is a time',
+* $1 - a date
+* $2 - a time
+{{Related|Revdelete}}',
 'revdelete-only-restricted' => '{{RevisionDelete}}
 Parameters:
 *$1 - date
-*$2 - time',
+*$2 - time
+{{Related|Revdelete}}',
 'revdelete-reason-dropdown' => '{{RevisionDelete}}
 Used as item list for dropdown.
 [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
@@ -2742,8 +2761,9 @@ See also:
 
 Example: [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with invalid revision#]
 
-* $1 is the list of missing revisions IDs
-* $2 is the number of items in $1 (one or two)',
+Parameters:
+* $1 - the list of missing revisions IDs
+* $2 - the number of items in $1 (one or two)',
 
 # Search results
 'searchresults' => 'This is the title of the page that contains the results of a search.
@@ -2944,8 +2964,8 @@ See also:
 In this sentence, "their indexes" refers to "Google\'s indexes".
 
 Shown on [[Special:Search]] when the internal search is disabled.',
-'search-error' => 'Shown when an error has occurred when performing a search
-* $1 is the localized error that was returned',
+'search-error' => 'Shown when an error has occurred when performing a search. Parameters:
+* $1 - the localized error that was returned',
 
 # Preferences page
 'preferences' => 'Title of the [[Special:Preferences]] page.
@@ -3110,8 +3130,8 @@ See also:
 * {{msg-mw|Prefs-memberingroups-type}}',
 'prefs-memberingroups-type' => '{{optional}}
 Parameters:
-* $1 is list of group names
-* $2 is list of group member names. Label for these is {{msg-mw|prefs-memberingroups}}.',
+* $1 - list of group names
+* $2 - list of group member names. Label for these is {{msg-mw|Prefs-memberingroups}}',
 'prefs-registration' => 'Used in [[Special:Preferences]].',
 'prefs-registration-date-time' => '{{optional}}
 Used in [[Special:Preferences]]. Parameters are:
@@ -3263,8 +3283,8 @@ Parameters:
 * $2 - (Optional) the user name, for GENDER',
 'userrights-groupsmember-type' => '{{optional}}
 Parameters:
-* $1 is list of group names.
-* $2 is list of group member names. Used with labels {{msg-mw|userrights-groupsmember}} and {{msg-mw|userrights-groupsmember-auto}}',
+* $1 - list of group names
+* $2 - list of group member names. Used with labels {{msg-mw|Userrights-groupsmember}} and {{msg-mw|Userrights-groupsmember-auto}}',
 'userrights-groups-help' => 'Instructions displayed on [[Special:UserRights]]. Parameters:
 * $1 - (Optional) a username, can be used for GENDER',
 'userrights-reason' => 'Text beside log field when editing user groups
@@ -3585,10 +3605,18 @@ See also:
 'recentchanges-summary' => 'Summary of [[Special:RecentChanges]].',
 'recentchanges-noresult' => 'Used in [[Special:RecentChanges]], [[Special:RecentChangesLinked]], and [[Special:Watchlist]] when there are no changes to be shown.',
 'recentchanges-feed-description' => 'Used in feed of RecentChanges. See example [{{canonicalurl:Special:RecentChanges|feed=atom}} feed].',
-'recentchanges-label-newpage' => 'Tooltip for {{msg-mw|newpageletter}}',
-'recentchanges-label-minor' => 'Tooltip for {{msg-mw|minoreditletter}}',
-'recentchanges-label-bot' => 'Tooltip for {{msg-mw|boteditletter}}',
+'recentchanges-label-newpage' => '# Used as tooltip for {{msg-mw|Newpageletter}}.
+# Also used as legend. Preceded by {{msg-mw|Newpageletter}} and followed by {{msg-mw|Recentchanges-legend-newpage}}.',
+'recentchanges-label-minor' => '# Used as tooltip for {{msg-mw|Minoreditletter}}
+# Also used as legend. Preceded by {{msg-mw|Minoreditletter}}',
+'recentchanges-label-bot' => '# Used as tooltip for {{msg-mw|Boteditletter}}
+# Also used as legend. Preceded by {{msg-mw|Boteditletter}}',
 'recentchanges-label-unpatrolled' => 'Tooltip for {{msg-mw|unpatrolledletter}}',
+'recentchanges-label-plusminus' => 'Legend item for plus/minus.
+
+Preceded by legend example {{msg-mw|Recentchanges-legend-plusminus}}.',
+'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
+'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
 'rcnote' => 'Used on [[Special:RecentChanges]].
 
 Similar to {{msg-mw|wlnote}} which is used on [[Special:Watchlist]].
@@ -3621,22 +3649,22 @@ Parameters:
 * $1 - a link to the revision of a specific date and time. The date and the time are the link description (without split of date and time, [[bugzilla:19104|Bug 19104]]).
 
 The corresponding message is {{msg-mw|Rcnotefrom}}.',
-'rcshowhideminor' => "Option text in [[Special:RecentChanges]]. Parameters:
-* $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.",
-'rcshowhidebots' => "Option text in [[Special:RecentChanges]]. Parameters:
-* $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.
-{{Identical|$1 bots}}",
+'rcshowhideminor' => 'Option text in [[Special:RecentChanges]]. Parameters:
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}',
+'rcshowhidebots' => 'Option text in [[Special:RecentChanges]]. Parameters:
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}
+{{Identical|$1 bots}}',
 'rcshowhideliu' => 'Option text in [[Special:RecentChanges]]. Parameters:
 * $1 - any one of the following messages:
 ** {{msg-mw|Show}}
 ** {{msg-mw|Hide}}',
-'rcshowhideanons' => "Option text in [[Special:RecentChanges]]. Parameters:
-* $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.
-{{Identical|Anonymous user}}",
-'rcshowhidepatr' => "Option text in [[Special:RecentChanges]]. Parameters:
-* $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.",
-'rcshowhidemine' => "Option text in [[Special:RecentChanges]]. Parameters:
-* $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.",
+'rcshowhideanons' => 'Option text in [[Special:RecentChanges]]. Parameters:
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}
+{{Identical|Anonymous user}}',
+'rcshowhidepatr' => 'Option text in [[Special:RecentChanges]]. Parameters:
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}',
+'rcshowhidemine' => 'Option text in [[Special:RecentChanges]]. Parameters:
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}',
 'rclinks' => "Used on [[Special:RecentChanges]].
 * \$1 - a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".
 * \$2 - a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".
@@ -3827,8 +3855,8 @@ See also:
 'badfilename' => 'Parameters:
 * $1 - filename',
 'filetype-mime-mismatch' => 'Upload error. Parameters:
-* $1 is the extension of the uploaded file
-* $2 is the MIME type of the uploaded file',
+* $1 - the extension of the uploaded file
+* $2 - the MIME type of the uploaded file',
 'filetype-badmime' => 'Parameters:
 * $1 - string representing the MIME type',
 'filetype-bad-ie-mime' => 'Parameters:
@@ -4154,11 +4182,10 @@ See also:
 * {{msg-mw|upload-warning-subj|subject}}
 * {{msg-mw|upload-warning-msg|message}}',
 'upload-warning-msg' => 'Used as warning body which is posted on the user talk page. Parameters:
-* $1 is the URL the file was uploaded from, when using upload-by-URL
-* $2 is the session key for the upload
+* $1 - the URL the file was uploaded from, when using upload-by-URL
+* $2 - the session key for the upload
 See also:
-* {{msg-mw|upload-warning-subj|subject}}
-* {{msg-mw|upload-warning-msg|message}}',
+* {{msg-mw|Upload-warning-subj|subject}}',
 
 'upload-proto-error' => 'See also:
 * {{msg-mw|Upload-proto-error|title}}
@@ -5988,15 +6015,17 @@ Parameters:
 * $3 - the time of the displayed revision
 {{Identical|Are you sure you want to view the deleted revision of the file...}}',
 'undelete-show-file-submit' => '{{Identical|Yes}}',
-'undelete-revisionrow' => "{{Optional}}
+'undelete-revision-row' => "{{Optional}}
 A revision row in the undelete page. Parameters:
 * $1 is a checkBox to indicate whether to restore this specific revision
 * $2 is a link to the revision
 * $3 is a link to the last revision of a page ({{msg-mw|last}})
 * $4 is a link to the page
 * $5 is a link to the revision's user
-* $6 is the revision size
-* $7 is the revision comment",
+* $6 is the revision's minor edit identifier
+* $7 is the revision size
+* $8 is the revision comment
+* $9 is the revision's tags",
 
 # Namespace form on various pages
 'namespace' => 'This message is located at [[Special:Contributions]].
@@ -10524,4 +10553,36 @@ Parameters:
 * $1 - the usage
 * $2 - the maximum',
 
+# Special:ExpandTemplates
+'expandtemplates' => '{{doc-special|ExpandTemplates}}
+The name of the [[mw:Extension:ExpandTemplates|Expand Templates extension]].',
+'expand_templates_intro' => 'This is the explanation given in the heading of the [[Special:ExpandTemplates]] page; it describes its functionality to the users.
+For more information, see [[mw:Extension:ExpandTemplates]]',
+'expand_templates_title' => 'The label of the input box for the context title on the form displayed at [[Special:ExpandTemplates]] page.',
+'expand_templates_input' => '{{Identical|Input text}}',
+'expand_templates_output' => '{{Identical|Result}}',
+'expand_templates_xml_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
+'expand_templates_ok' => '{{Identical|OK}}',
+'expand_templates_remove_comments' => 'Check box to tell [[mw:Extension:ExpandTemplates]] to not show comments in the expanded template.',
+'expand_templates_remove_nowiki' => "Option on [[Special:Expandtemplates]]
+
+Here's what the tick box does:
+
+For:
+<pre>
+&lt;nowiki>test&lt;/nowiki>
+</pre>
+
+Not ticked:
+<pre>
+&lt;nowiki>test&lt;/nowiki>
+</pre>
+
+Ticked:
+<pre>
+test
+</pre>",
+'expand_templates_generate_xml' => 'Used as checkbox label.',
+'expand_templates_preview' => '{{Identical|Preview}}',
+
 );
index 1a71c0c..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' ),
@@ -539,8 +537,6 @@ $1",
 'ok' => 'Arí niy',
 'retrievedfrom' => '"$1" p\'anqamanta chaskisqa (Qhichwa / Quechua)',
 'youhavenewmessages' => '$1 qhawanayki kachkan ($2).',
-'newmessageslink' => 'Musuq willaymi',
-'newmessagesdifflink' => 'qayna hukchasqapi wakin kaynin',
 'youhavenewmessagesfromusers' => '$1 {{PLURAL:$3|huk ruraqmanta|$3 ruraqkunamanta}} qhawanayki kachkan ($2).',
 'youhavenewmessagesmanyusers' => '$1 achka ruraqkunamanta qhawanayki kachkan ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|Musuq willaymi|Musuq willaykunam}}',
@@ -1361,7 +1357,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'preferences' => 'Allinkachinakuna',
 'mypreferences' => 'Allinkachinaykuna',
 'prefs-edits' => 'Hukchasqakunap yupaynin:',
-'prefsnologin' => 'Manam yaykurqankichu',
 'changepassword' => 'Yaykuna rimata hukchay',
 'prefs-skin' => 'Qara',
 'skin-preview' => 'Ñawpaqta qhaway',
@@ -1653,6 +1648,7 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
 'recentchanges-label-minor' => "Kayqa aslla llamk'apuymi",
 'recentchanges-label-bot' => "Kayqa rurana antachap llamk'apusqanmi",
 'recentchanges-label-unpatrolled' => "Kay llamk'apusqaqa manaraqmi patrullasqachu",
+'recentchanges-legend-newpage' => "$1 - musuq p'anqa",
 'rcnote' => "Kay qatiqpiqa qhipaq {{PLURAL:$1|'''1''' hukchasqam|'''$1''' hukchasqakunam}} qhipaq {{PLURAL:$2|p'unchawpi|'''$2''' p'unchawkunapi}}, musuqchasqa $5, $4.",
 'rcnotefrom' => "Kay qatiqpiqa '''$2'''-mantapacha ('''$1'''-kama) hukchasqakunatam rikunki.",
 'rclistfrom' => '$1-manta musuq hukchasqakunata rikuchiy',
@@ -4008,4 +4004,11 @@ Mana chayqa, kay qatiqpi kaq hunt'ana p'anqatam llamk'achiyta atinki. Willapuyni
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => "Plantillakunata mast'ariy",
+'expand_templates_input' => 'Yaykuchina qillqa:',
+'expand_templates_output' => 'Lluqsiynin:',
+'expand_templates_remove_comments' => 'Willapusqakunata qichuy',
+'expand_templates_preview' => 'Ñawpaqta qhawallay',
+
 );
index 36d89bc..713c469 100644 (file)
@@ -277,8 +277,6 @@ $1',
 'ok' => 'Ari nina',
 'retrievedfrom' => '$1 pankamanta hapishka',
 'youhavenewmessages' => '$1 charipanki ($2).',
-'newmessageslink' => 'Mushuk willaymi',
-'newmessagesdifflink' => 'yalli mushuk killkay',
 'youhavenewmessagesmulti' => '$1-pi mushuk chaskikunata charipankimi.',
 'editsection' => 'Killkana',
 'editold' => 'Killkana',
index ad053df..9c2ad54 100644 (file)
@@ -300,8 +300,6 @@ $1',
 'ok' => "D'accord",
 'retrievedfrom' => 'Da "$1"',
 'youhavenewmessages' => 'Ti has $1 ($2).',
-'newmessageslink' => 'novs messadis',
-'newmessagesdifflink' => "l'ultima midada",
 'youhavenewmessagesfromusers' => 'Ti has $1 da{{PLURAL:$3|d in utilisader| $3 utilisaders}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ti has $1 da divers utilisaders ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|in nov messadi|novs messadis}}',
@@ -1098,7 +1096,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'preferences' => 'Preferenzas',
 'mypreferences' => 'Preferenzas',
 'prefs-edits' => 'Dumber da las modificaziuns:',
-'prefsnologin' => "Betg t'annunzià",
 'changepassword' => 'Midar pled-clav',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Prevista',
@@ -1374,6 +1371,7 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'recentchanges-label-minor' => 'Quai è ina pitschna modificaziun',
 'recentchanges-label-bot' => 'Questa modificaziun è vegnida exequida dad in bot',
 'recentchanges-label-unpatrolled' => "Questa midada n'è anc betg vegnida controllada",
+'recentchanges-legend-newpage' => '$1 - nova pagina',
 'rcnote' => "Sutvart {{PLURAL:$1|è '''ina''' midada|èn las ultimas '''$1''' midadass}} {{PLURAL:$2|da l'ultim di|dals ultims '''$2''' dis}}, versiun dals  $4 $5.",
 'rcnotefrom' => "Midadas dapi '''$2''' (maximalmain '''$1''' vegnan mussads).",
 'rclistfrom' => 'Mussar las novas midadas entschavend cun $1',
index 3343218..0e64e7f 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ă' ),
@@ -572,12 +570,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Adus de la „$1”',
 'youhavenewmessages' => 'Aveți $1 ($2).',
-'newmessageslink' => 'mesaje noi',
-'newmessagesdifflink' => 'comparație cu versiunea precedentă',
 'youhavenewmessagesfromusers' => 'Aveți $1 de la {{PLURAL:$3|un alt utilizator|$3 utilizatori}} ($2).',
 'youhavenewmessagesmanyusers' => 'Aveți $1 de la mai mulți utilizatori ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un mesaj nou|mesaje noi}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|ultima modificare|ultimele modificări}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un mesaj nou|999=mesaje noi}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ultima modificare|999=ultimele modificări}}',
 'youhavenewmessagesmulti' => 'Aveți mesaje noi la $1',
 'editsection' => 'modificare',
 'editold' => 'modificare',
@@ -807,7 +803,7 @@ Verificați ortografierea.',
 'passwordtooshort' => 'Parola trebuie să aibă cel puțin {{PLURAL:$1|1 caracter|$1 caractere|$1 de caractere}}.',
 'password-name-match' => 'Parola dumneavoastră trebuie să fie diferită de numele de utilizator.',
 'password-login-forbidden' => 'Utilizarea acestui nume de utilizator și a acestei parole este interzisă.',
-'mailmypassword' => 'Trimite-mi parola pe e-mail!',
+'mailmypassword' => 'Resetează parola',
 'passwordremindertitle' => 'Noua parolă temporară la {{SITENAME}}',
 'passwordremindertext' => 'Cineva (probabil dumneavoastră, de la adresa $1)
 a cerut să vi se trimită o nouă parolă pentru {{SITENAME}} ($4).
@@ -877,7 +873,7 @@ Este posibil să fi reușit deja schimbarea parolei sau să fi cerut o parolă t
 # Special:PasswordReset
 'passwordreset' => 'Resetare parolă',
 'passwordreset-text-one' => 'Completați acest formular pentru a vă reseta parola.',
-'passwordreset-text-many' => '{{PLURAL:$1|Completați unul din câmpuri pentru a vă reseta parola.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Completați unul din câmpuri pentru a primi o parolă temporară prin e-mail.}}',
 'passwordreset-legend' => 'Resetare parolă',
 'passwordreset-disabled' => 'Resetarea parolei a fost dezactivată pe acest wiki.',
 'passwordreset-emaildisabled' => 'Funcțiile de e-mail au fost dezactivate de pe acest wiki.',
@@ -1431,7 +1427,6 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'preferences' => 'Preferințe',
 'mypreferences' => 'Preferințe',
 'prefs-edits' => 'Număr de modificări:',
-'prefsnologin' => 'Neautentificat',
 'prefsnologintext2' => 'Vă rugăm să vă $1 pentru a vă seta preferințele de utilizator.',
 'changepassword' => 'Schimbare parolă',
 'prefs-skin' => 'Aspect',
@@ -1732,6 +1727,9 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'recentchanges-label-minor' => 'Aceasta este o modificare minoră',
 'recentchanges-label-bot' => 'Această modificare a fost efectuată de un robot',
 'recentchanges-label-unpatrolled' => 'Această modificare nu a fost încă verificată',
+'recentchanges-label-plusminus' => 'Dimensiunea paginii s-a modificat corespunzător acestui număr de octeți',
+'recentchanges-legend-newpage' => '(vezi și [[Special:NewPages|lista cu pagini noi]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "Mai jos se află {{PLURAL:\$|ultima modificare|ultimele '''\$1''' modificări|ultimele '''\$1''' de modificări}} din {{PLURAL:\$2|ultima zi|ultimele '''\$2''' zile|ultimele '''\$2''' de zile}}, începând cu \$5, \$4.",
 'rcnotefrom' => 'Dedesubt sunt modificările de la <b>$2</b> (maxim <b>$1</b> de modificări sunt afișate - schimbă numărul maxim de linii alegând altă valoare mai jos).',
 'rclistfrom' => 'Se arată modificările începând cu $1',
@@ -4191,4 +4189,17 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'limitreport-expansiondepth' => 'Cea mai mare profunzime a expansiunii',
 'limitreport-expensivefunctioncount' => 'Număr de funcții de analiză costisitoare',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expandare formate',
+'expand_templates_intro' => "Această pagină specială servește la expandarea recursivă a tuturor formatelor dintr-un text. Ea acționează și asupra funcțiilor de analiză (''parser'') de tipul <nowiki>{{</nowiki>#if:...}}, a variabilelor precum <nowiki>{{</nowiki>CURRENTDAY}} și în general asupra oricăror coduri cuprinse între acolade duble.",
+'expand_templates_title' => 'Titlul contextului (de exemplu pentru {{PAGENAME}}):',
+'expand_templates_input' => 'Introduceți textul aici:',
+'expand_templates_output' => 'Rezultat',
+'expand_templates_xml_output' => 'Ieșire XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Elimină comentariile',
+'expand_templates_remove_nowiki' => 'Suprimă etichetele <nowiki> în rezultat',
+'expand_templates_generate_xml' => 'Arată arborele de analiză XML',
+'expand_templates_preview' => 'Previzualizare',
+
 );
index fef0ddc..f4d77d3 100644 (file)
@@ -303,8 +303,6 @@ Vide [[Special:Version|Versione d'a pàgene]].",
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Pigghjete da "$1"',
 'youhavenewmessages' => 'Tu tine $1 ($2).',
-'newmessageslink' => 'messàgge nuève',
-'newmessagesdifflink' => 'urteme cangiaminde',
 'youhavenewmessagesfromusers' => "Tu è $1 da {{PLURAL:$3|'n'otre utende|$3 utinde}} ($2).",
 'youhavenewmessagesmanyusers' => 'Tu è $1 da assaije utinde ($2).',
 'newmessageslinkplural' => "{{PLURAL:$1|'nu messàgge nuève|messàgge nuève}}",
@@ -1187,7 +1185,6 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
 'preferences' => 'Me piece accussì',
 'mypreferences' => 'Me piace accussì',
 'prefs-edits' => 'Numere de cangiaminde:',
-'prefsnologin' => 'Non ge sinde colleghete',
 'changepassword' => "Cange 'a password",
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Andeprime',
@@ -1489,6 +1486,7 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'recentchanges-label-minor' => "Quiste ète 'nu cangiamende stuèdeche",
 'recentchanges-label-bot' => "Stu cangiamende ha state fatte da 'nu bot",
 'recentchanges-label-unpatrolled' => "Stu cangiamende non g'à state angore condrollate",
+'recentchanges-legend-newpage' => '$1 - pàgena nove',
 'rcnote' => "Sotte {{PLURAL:$1|jè '''1''' cangiamende|sonde le urteme '''$1''' cangiaminde}} jndr'à l'urteme{{PLURAL:$2|sciurne|'''$2''' sciurne}}, jndr'à $5, $4.",
 'rcnotefrom' => "Sotte stonne le cangiaminde da '''$2''' (fine a '''$1''' mustrete).",
 'rclistfrom' => 'Fà vedè le urteme cangiaminde partenne da $1',
@@ -2439,7 +2437,6 @@ Pò essere ca già ha state scangellate.",
 $1",
 'undelete-show-file-confirm' => 'Sì secure ca tu vuè ccu vide \'na revisiona scangellate d\'u file "<nowiki>$1</nowiki>" d\'u $2 a le $3?',
 'undelete-show-file-submit' => 'Sine',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Namespace:',
@@ -4192,4 +4189,21 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 'limitreport-expansiondepth' => 'Espanzione massime de profonnetà',
 'limitreport-expensivefunctioncount' => "Analizzatore d'u cunde d'a funzione ca coste assaije",
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Template spannute',
+'expand_templates_intro' => "Sta pàgena speciale pigghie quacche teste e spanne tutte le template jndr'à jidde recorsivamende.<br />
+Jidde spanne pure le funziune de analise cumme<br />
+<code><nowiki>{{</nowiki>#language:…}}</code>, e variabbele cumme <br />
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.<br />
+In pratiche tutte quidde ca stè jndr'à le doppie parendesi graffe.<br />",
+'expand_templates_title' => 'Titele condestuale, pe {{FULLPAGENAME}} ecc.:',
+'expand_templates_input' => 'Teste de input:',
+'expand_templates_output' => 'Resultete',
+'expand_templates_xml_output' => 'XML de output',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Live le commende',
+'expand_templates_remove_nowiki' => "No fà vede le tag <nowiki> jndr'à 'u resultate",
+'expand_templates_generate_xml' => "Fà vedè l'arvule de l'analisi XML",
+'expand_templates_preview' => 'Andeprime',
+
 );
index 696e7ec..0fccf00 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( 'Поиск_дубликатов_файлов' ),
@@ -714,12 +714,10 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Источник — «$1»',
 'youhavenewmessages' => 'Вы получили $1 ($2).',
-'newmessageslink' => 'новые сообщения',
-'newmessagesdifflink' => 'последнее изменение',
 'youhavenewmessagesfromusers' => 'Вы получили $1 от {{PLURAL:$3|$3 участника|$3 участников}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы получили $1 от множества пользователей ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|новое сообщение|новые сообщения}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последнее изменение|последние изменения}}',
+'newmessageslinkplural' => '{{PLURAL:$1|новое сообщение|999=новые сообщения}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последнее изменение|999=последние изменения}}',
 'youhavenewmessagesmulti' => 'Вы получили новые сообщения на $1',
 'editsection' => 'править',
 'editold' => 'править',
@@ -946,7 +944,7 @@ $2',
 'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов|символов}}.',
 'password-name-match' => 'Введённый пароль должен отличаться от имени участника.',
 'password-login-forbidden' => 'Использование этого имени участника и пароля запрещено.',
-'mailmypassword' => 'Ð\92Ñ\8bÑ\81лаÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\8bй Ð¿Ð°Ñ\80олÑ\8c Ð¿Ð¾ Ñ\8dлекÑ\82Ñ\80онной Ð¿Ð¾Ñ\87Ñ\82е',
+'mailmypassword' => 'СбÑ\80оÑ\81иÑ\82Ñ\8c Ð¿Ð°Ñ\80олÑ\8c',
 'passwordremindertitle' => 'Напоминание пароля участника {{grammar:genitive|{{SITENAME}}}}',
 'passwordremindertext' => 'Кто-то (вероятно, вы, с IP-адреса $1) запросил создать
 новый пароль для {{grammar:genitive|{{SITENAME}}}} ($4). Для участника $2
@@ -1023,7 +1021,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Сброс пароля',
 'passwordreset-text-one' => 'Заполните эту форму, чтобы сбросить свой пароль.',
-'passwordreset-text-many' => '{{PLURAL:$1|Заполните одно из полей для сброса пароля.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Заполните одно из полей для получения временного пароля на e-mail.}}',
 'passwordreset-legend' => 'Сбросить пароль',
 'passwordreset-disabled' => 'Сбросы пароля отключены на этой вики.',
 'passwordreset-emaildisabled' => 'Функции электронной почты отключены в этой вики.',
@@ -1580,7 +1578,6 @@ $1",
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Количество правок:',
-'prefsnologin' => 'Вы не представились системе',
 'prefsnologintext2' => 'Необходимо $1, чтобы изменять настройки.',
 'changepassword' => 'Изменение пароля',
 'prefs-skin' => 'Тема оформления',
@@ -1880,6 +1877,9 @@ $1",
 'recentchanges-label-minor' => 'Это незначительное изменение',
 'recentchanges-label-bot' => 'Эта правка сделана ботом',
 'recentchanges-label-unpatrolled' => 'Эта правку ещё никем не патрулировалась',
+'recentchanges-label-plusminus' => 'Размер страницы изменился на данное количество байт',
+'recentchanges-legend-newpage' => '(см. также [[Special:NewPages|список новых страниц]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "{{PLURAL:$1|Последнее '''$1''' изменение|Последние '''$1''' изменения|Последние '''$1''' изменений}} за '''$2''' {{PLURAL:$2|день|дня|дней}}, на момент времени $5 $4.",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
 'rclistfrom' => 'Показать изменения с $1.',
@@ -4443,4 +4443,20 @@ MediaWiki распространяется в надежде, что она бу
 'limitreport-expansiondepth' => 'Наибольшая глубина расширения',
 'limitreport-expensivefunctioncount' => 'Количество «дорогих» функций анализатора',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Развёртка шаблонов',
+'expand_templates_intro' => 'Эта служебная страница преобразует текст, рекурсивно разворачивая все шаблоны в нём.
+Также развёртке подвергаются функции парсера
+<code><nowiki>{{#language:…}}</nowiki></code> и переменные вида
+<code><nowiki>{{CURRENTDAY}}</nowiki></code> — в общем, всё внутри двойных фигурных скобок.',
+'expand_templates_title' => 'Заголовок страницы для {{FULLPAGENAME}} и т. п.:',
+'expand_templates_input' => 'Входной текст:',
+'expand_templates_output' => 'Результат',
+'expand_templates_xml_output' => 'XML вывод',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Удалить комментарии',
+'expand_templates_remove_nowiki' => 'Подавлять теги <nowiki> в результате',
+'expand_templates_generate_xml' => 'Показать дерево разбора XML',
+'expand_templates_preview' => 'Предпросмотр',
+
 );
index fe74b36..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( 'Писмо_хоснователёви' ),
@@ -391,8 +389,6 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Обтримане з "$1"',
 'youhavenewmessages' => 'Маєте $1 ($2).',
-'newmessageslink' => 'новы повідомлїня',
-'newmessagesdifflink' => 'послїдня зміна',
 'youhavenewmessagesfromusers' => 'Мате $1 од {{PLURAL:$3|іншого хоснователя|$3 іншых хоснователїв}} ($2).',
 'youhavenewmessagesmanyusers' => 'Мате $1 од много далшых хоснователїв ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлїня|новы повідомлїня}}',
@@ -1226,7 +1222,6 @@ $1",
 'preferences' => 'Наставлїня',
 'mypreferences' => 'Наставлїня',
 'prefs-edits' => 'Чісло едітовань:',
-'prefsnologin' => 'Не сьте приголошеный(а)!',
 'changepassword' => 'Змінити гесло',
 'prefs-skin' => 'Взгляд',
 'skin-preview' => 'Попереднїй нагляд',
@@ -1525,6 +1520,7 @@ $1",
 'recentchanges-label-minor' => 'Тото є мала зміна',
 'recentchanges-label-bot' => 'Тото едітованя зроблене ботом',
 'recentchanges-label-unpatrolled' => 'Тота зміна дотеперь не была патролёвана.',
+'recentchanges-legend-newpage' => '$1 — нова сторінка',
 'rcnote' => "{{PLURAL:$1|Послїдня '''$1''' зміна|Послїднї '''$1''' зміны|Послїднїх '''$1''' змін}} за '''$2''' {{PLURAL:$2|день|днї|днїв}}, на час $5, $4.",
 'rcnotefrom' => 'Ниже {{PLURAL:$1|є|суть|є}} найвеце <b>$1</b> {{PLURAL:$1|зміна|зміны|змін}} од <b>$2</b>.',
 'rclistfrom' => 'Вказати едітованя почінаючі з $1.',
@@ -3914,4 +3910,17 @@ MediaWiki є дістрібуована в надїї, же буде хосно
 'limitreport-expansiondepth' => 'Найвысша глубка росшырїня',
 'limitreport-expensivefunctioncount' => 'Чісло дорогой функції аналізатора',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Розгортаня шаблон',
+'expand_templates_intro' => 'Тота шпеціална сторінка перетворює текст, рекурзівно розгортаювші у ній вшыткы шаблоны як <code><nowiki>{{</nowiki>#language:…...}}</code> ці перемінны як <code><nowiki>{{</nowiki>CURRENTDAY}}</code> – тзн. практічно вшытко у двоїтых заперках. Ку тому ся хоснують прямо одповідаючі функціі парсера MediaWiki.',
+'expand_templates_title' => 'Назва сторінкы про контекст про {{FULLPAGENAME}} ітд.:',
+'expand_templates_input' => 'Вступный текст:',
+'expand_templates_output' => 'Резултат',
+'expand_templates_xml_output' => 'XML-выступ',
+'expand_templates_ok' => 'ОК',
+'expand_templates_remove_comments' => 'Одстранити коментарї',
+'expand_templates_remove_nowiki' => 'Іґноровати в резултатї значкы <nowiki>',
+'expand_templates_generate_xml' => 'Указати сінтаксічный стром в XML',
+'expand_templates_preview' => 'Нагляд',
+
 );
index aaefcc4..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( 'नवीनतमसम्भन्दिन_परिवर्त' ),
@@ -537,8 +537,6 @@ $1',
 'pagetitle' => '$1 - {{SITENAME}}',
 'retrievedfrom' => '"$1" इत्यस्माद् उद्धृतम्',
 'youhavenewmessages' => 'भवदर्थम् $1 सन्ति। ($2).',
-'newmessageslink' => 'नूतनाः सन्देशाः',
-'newmessagesdifflink' => 'अन्तिमं परिवर्तनम्',
 'youhavenewmessagesfromusers' => 'भवदर्थम् {{PLURAL:$3|अन्यस्मात् सदस्यात्|$3 सदस्येभ्यः}} $1 अस्ति ($2)।',
 'youhavenewmessagesmanyusers' => 'नैकेभ्यः योजकेभ्यः ते $1 सन्ति $2 ।',
 'newmessageslinkplural' => '{{PLURAL:$1|नूतनः सन्देशः|नूतनसन्देशाः}}',
@@ -1304,7 +1302,6 @@ You can still [$1 view this revision]",
 'preferences' => 'इष्टतमानि',
 'mypreferences' => 'मम इष्टतमानि',
 'prefs-edits' => 'सम्पादनानां सख्याः',
-'prefsnologin' => 'नैव प्रविष्ट',
 'changepassword' => 'कूटशब्दः परिवर्त्यताम्',
 'prefs-skin' => 'त्वक्',
 'skin-preview' => 'प्राग्दृश्यम्',
@@ -3915,4 +3912,9 @@ $1 इत्यनेन $3 इति पृष्ठम् $4 इत्ये
 'duration-centuries' => '$1 {{PLURAL:$1|शतकम्|शतकानि}}',
 'duration-millennia' => '$1 {{PLURAL:$1|सहस्राब्धः|सहस्राब्धाः}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'परिणामम्',
+'expand_templates_ok' => 'अस्तु',
+'expand_templates_preview' => 'प्राग्दृश्यम् दर्श्यताम्',
+
 );
index 3882903..a9df4d0 100644 (file)
@@ -317,8 +317,6 @@ $1',
 'ok' => 'Сөп',
 'retrievedfrom' => '"$1" -н кэллэ',
 'youhavenewmessages' => '$1 ($2) кэллэ',
-'newmessageslink' => 'саҥа суруктар',
-'newmessagesdifflink' => 'кэлиҥҥи уларытыы',
 'youhavenewmessagesfromusers' => 'Маны $1 {{PLURAL:$3|соҕотох кыттааччыттан|$3 кыттааччыттан}} туппуккун ($2).',
 'youhavenewmessagesmanyusers' => 'Маны $1 элбэх кыттааччыттан туппуккун ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|саҥа этии|саҥа этии}}',
@@ -1166,7 +1164,6 @@ $1",
 'preferences' => 'Уларытыылар',
 'mypreferences' => 'Туруоруулар',
 'prefs-edits' => 'Көннөрүү ахсаана:',
-'prefsnologin' => 'Ааккын эппэтиҥ',
 'changepassword' => 'Киирии тылы уларытарга',
 'prefs-skin' => 'Тас көстүү',
 'skin-preview' => 'Хайдах буолара',
@@ -1459,6 +1456,7 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
 'recentchanges-label-minor' => 'Бу улахан суолтата суох уларытыы',
 'recentchanges-label-bot' => 'Бу уларытыыны робот оҥорбут',
 'recentchanges-label-unpatrolled' => 'Бу уларытыы өссө ботурууллана илик',
+'recentchanges-legend-newpage' => '$1 — саҥа сирэй',
 'rcnote' => "{{PLURAL:$2|хонук|'''$2''' хонуктар}} иһинэн бүтэһик {{PLURAL:$1|'''1''' уларыйыы|'''$1''' уларыйыылар}}, $5, $4.",
 'rcnotefrom' => "Мантан '''$2''' маныаха '''$1''' дылы уларыыйылар көрдөрүлүннүлэр.",
 'rclistfrom' => 'Бу кэм $1 кэнниттэн оҥоһуллубуттары көрдөр',
@@ -3886,4 +3884,19 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 # Image rotation
 'rotate-comment' => 'Ойуу $1 кыраадыс чаһы хоту эргитиллибит',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Халыыптары тэнитии',
+'expand_templates_intro' => 'Бу аналлаах сирэй тиэкиһи уларытарытарыгар туох баар халыыптары тэнитэн көрдөрөр.
+Парсер функциялара эмиэ тэнитиллэллэр. Холобур, <nowiki>{{</nowiki>#language:...}} уонна переменнайдар <nowiki>{{</nowiki>CURRENTDAY}} уо.&nbsp;д.&nbsp;а. — уопсайынан, хос фигурнай скобка иһигэр баар барыта.
+Бу дьайыы сыыһата суох, MediaWiki көмөтүнэн оҥоһуллар.',
+'expand_templates_title' => '{{FULLPAGENAME}} сирэй аата уонна да атын сибидиэнньэлэр:',
+'expand_templates_input' => 'Киирэр сурук:',
+'expand_templates_output' => 'Түмүк',
+'expand_templates_xml_output' => 'XML тахсыыта',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Ырытыылары сот',
+'expand_templates_remove_nowiki' => 'Түмүккэ <nowiki> бэлиэни аахсыма',
+'expand_templates_generate_xml' => 'XML-ы мас курдук көрдөр',
+'expand_templates_preview' => 'Холоон көрүү',
+
 );
index 38ffa05..9d46180 100644 (file)
@@ -276,8 +276,6 @@ $1',
 'ok' => 'Ṭhik gea',
 'retrievedfrom' => '"$1" khon ñam ạgui',
 'youhavenewmessages' => 'Amaḱ do $1 ($2) menaḱa',
-'newmessageslink' => 'Nãwã sombat',
-'newmessagesdifflink' => 'Mucạt bodol',
 'youhavenewmessagesmulti' => 'Amaḱ nãwã mesagko do $1 menaḱa',
 'editsection' => 'So̠mpado̠n',
 'editold' => 'So̠mpado̠n',
index 71e6275..7eba0ea 100644 (file)
@@ -293,8 +293,6 @@ $messages = array(
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Bogau dae  "$1"',
 'youhavenewmessages' => 'Tenes $1 ($2).',
-'newmessageslink' => 'messàgios noos',
-'newmessagesdifflink' => 'ùrtima mudàntzia',
 'youhavenewmessagesmulti' => 'Tenes messàgios noos in $1',
 'editsection' => 'acontza',
 'editold' => 'acontza',
@@ -652,7 +650,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'preferences' => 'Preferèntzias',
 'mypreferences' => 'Preferèntzias meas',
 'prefs-edits' => 'Nùmeru de acontzos:',
-'prefsnologin' => 'Non ses intrau',
 'changepassword' => 'Càmbia password',
 'prefs-skin' => 'Bisura',
 'skin-preview' => 'Antiprima',
@@ -774,6 +771,7 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'recentchanges-label-newpage' => 'Custu acontzu at creadu una pàgina noa',
 'recentchanges-label-minor' => 'Custu est unu acontzu minore',
 'recentchanges-label-bot' => 'Custu acontzu est stadu fatu dae unu bot',
+'recentchanges-legend-newpage' => '$1 - pàgina noa',
 'rcnote' => "Inoghe sighende {{PLURAL:$1|b'est s'ùrtima mudàntzia|bi sunt is ùrtimas '''$1''' mudàntzias}} {{PLURAL:$2|in s'ùrtima die|in is ùrtimas '''$2''' dies}}; is datos sunt agiornados a  $5, $4.",
 'rcnotefrom' => "Sas chi sighint sunt sas mudàntzias dae '''$2''' (fintzas a '''$1''').",
 'rclistfrom' => 'Ammustra mudàntzias dae $1',
@@ -1524,4 +1522,7 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
 # Search suggestions
 'searchsuggest-search' => 'Chirca',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Antiprima',
+
 );
index ed0991f..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' ),
@@ -423,8 +423,6 @@ $1",
 'ok' => 'OK',
 'retrievedfrom' => 'Estrattu di "$1"',
 'youhavenewmessages' => 'Ricivìsti $1 ($2).',
-'newmessageslink' => 'missaggi novi',
-'newmessagesdifflink' => 'ùrtimi canciamenti',
 'youhavenewmessagesfromusers' => "Hai $1 di {{PLURAL:$3|n'àutru utenti|$3 utenti}} ($2).",
 'youhavenewmessagesmanyusers' => 'Hai $1 di na pocu di utenti ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|Nu missaggiu novu|missaggi novi}}',
@@ -1082,7 +1080,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'preferences' => 'prifirenzi',
 'mypreferences' => 'Li mè prifirenzi',
 'prefs-edits' => 'Nùmmuru di canciamenti:',
-'prefsnologin' => 'Accessu nun effittuatu',
 'changepassword' => 'Cancia la password',
 'prefs-skin' => 'Aspettu',
 'skin-preview' => 'Antiprima',
@@ -1335,6 +1332,7 @@ L'operazioni nun pò èssiri annullata.",
 'recentchanges-label-minor' => 'Chista è nu canciamentu nnicu',
 'recentchanges-label-bot' => 'Stu canciamentu fu fattu dû bot',
 'recentchanges-label-unpatrolled' => 'Stu canciamentu nun havi ancora statu virificatu',
+'recentchanges-legend-newpage' => '$1 - pàggina nova',
 'rcnote' => "Ccà sutta {{PLURAL:$1|c'è lu canciamentu cchiù ricenti appurtatu|cci sunnu l'ùrtimi '''$1''' canciamenti appurtati}} ô situ {{PLURAL:$2|nta l'ùrtimi 24 uri|nta l'ùrtimi '''$2''' giorni}}; li dati sunnu aggiurnati ê $5 dû $4.",
 'rcnotefrom' => 'Ccà sutta cci sunnu li canciamenti a pàrtiri dû <b>$2</b> (ammustrati nzinu ô <b>$1</b>).',
 'rclistfrom' => 'Ammustra li canciamenti novi a pàrtiri di $1',
index a90bf39..c4e01f1 100644 (file)
@@ -259,8 +259,6 @@ $messages = array(
 'ok' => 'Okay',
 'retrievedfrom' => 'Taen frae "$1"',
 'youhavenewmessages' => 'Ye hae $1 ($2).',
-'newmessageslink' => 'new messages',
-'newmessagesdifflink' => 'diff wi last-but-ane reveision',
 'youhavenewmessagesmulti' => 'Ye hae neow messages on $1',
 'editsection' => 'edit',
 'editold' => 'edit',
@@ -733,7 +731,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 
 # Preferences page
 'mypreferences' => 'Ma preferences',
-'prefsnologin' => 'No loggit in',
 'changepassword' => 'Chynge password',
 'prefs-skin' => 'Huil',
 'skin-preview' => 'First Leuk',
index b9ff975..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( 'برآمد' ),
@@ -333,8 +331,6 @@ $messages = array(
 'ok' => 'ٺيڪ',
 'retrievedfrom' => '"$1" تان ورتل',
 'youhavenewmessages' => 'توهان لاءِ $1 ($2) آهن.',
-'newmessageslink' => 'نوان نياپا',
-'newmessagesdifflink' => 'آخري تبديلي',
 'editsection' => 'سنواريو',
 'editold' => 'سنواريو',
 'viewsourceold' => 'ڪوڊ ڏسو',
index 719e49a..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' ),
@@ -322,8 +320,6 @@ $messages = array(
 'ok' => 'EMMU',
 'retrievedfrom' => 'Buggaddu da "$1"',
 'youhavenewmessages' => 'Ài $1 ($2).',
-'newmessageslink' => 'nobi imbasciaddi',
-'newmessagesdifflink' => 'diffarènzia cu la revisioni prizzidenti',
 'youhavenewmessagesmulti' => 'Ài nobi imbasciaddi i $1',
 'editsection' => 'mudifigga',
 'editold' => 'mudifigga',
@@ -787,7 +783,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'preferences' => 'Prifirenzi',
 'mypreferences' => "Li me' prifirenzi",
 'prefs-edits' => 'Mudìfigghi effettuaddi:',
-'prefsnologin' => 'Intradda nò effettuadda',
 'changepassword' => "Ciamba paràura d'órdhini",
 'prefs-skin' => 'Aipettu gràficu',
 'skin-preview' => 'antiprimma',
index 4deb798..0d8ae43 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' ),
@@ -343,8 +341,6 @@ $messages = array(
 
 'retrievedfrom' => 'Vižžojuvvon čujuhusas $1',
 'youhavenewmessages' => 'Dutnje leat $1 ($2).',
-'newmessageslink' => 'ođđa dieđut',
-'newmessagesdifflink' => 'maŋimus rievdadus',
 'youhavenewmessagesmulti' => 'Dutnje lea ođđa dieđut siiddus $1',
 'editsection' => 'rievdat',
 'editold' => 'rievdat',
@@ -634,7 +630,6 @@ $1 {{int:pipe-separator}} $2',
 'preferences' => 'Ásahusat',
 'mypreferences' => 'Ásahusat',
 'prefs-edits' => 'Rievdadusaid mearri:',
-'prefsnologin' => 'It leat čálligoahtán sisa',
 'changepassword' => 'Suollemassáni molson',
 'prefs-skin' => 'Olggosoaidnu',
 'skin-preview' => 'ovdalgihtii geahččan...',
index e1d8e0d..fc806bf 100644 (file)
@@ -216,8 +216,6 @@ $messages = array(
 'ok' => 'ton',
 'retrievedfrom' => 'Paluatlde "$1"',
 'youhavenewmessages' => 'Mecui $1 ($2).',
-'newmessageslink' => 'huniitóm',
-'newmessagesdifflink' => 'quiixcui',
 'youhavenewmessagesmulti' => 'Mecui huniitom $1 iti',
 'editsection' => 'ticpatlöx',
 'editold' => 'ticpatlöx',
@@ -569,8 +567,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'preferences' => 'Quáatlaác',
 'mypreferences' => 'Hequáatlaác',
 'prefs-edits' => 'Ticpatlöx jöxualtec ID-cort:',
-'prefsnologin' => 'Necaápo',
-'prefsnologintext' => 'Zo coccebj Neces [[Special:UserLogin|caápo]] quiixom hequáatlaác.',
 'changepassword' => "Reset'quimx canj",
 'prefs-skin' => 'Zuláugaum',
 'skin-preview' => 'Cuáxiit',
index 84113fc..48580a5 100644 (file)
@@ -303,8 +303,6 @@ $1',
 'ok' => 'Gerā',
 'retrievedfrom' => 'Gautė ėš „$1“',
 'youhavenewmessages' => 'Tamsta toret $1 ($2).',
-'newmessageslink' => 'naujū žėnotiu',
-'newmessagesdifflink' => 'paskotinis pakeitėms',
 'youhavenewmessagesmulti' => 'Toret naujū žėnotiu $1',
 'editsection' => 'taisītė',
 'editold' => 'taisītė',
@@ -760,7 +758,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'preferences' => 'Nustatīmā',
 'mypreferences' => 'Mona nustatīmā',
 'prefs-edits' => 'Keitėmu skaitlius:',
-'prefsnologin' => 'Naprisėjongis',
 'changepassword' => 'Pakeistė slaptažuodė',
 'prefs-skin' => 'Ėšruoda',
 'skin-preview' => 'Parveiza',
@@ -1941,4 +1938,7 @@ Tamsta tēpuogi galėt [[Special:EditWatchlist/raw|redagoutė grīnaji keravuoja
 'logentry-newusers-autocreate' => 'Paskīra $1 bova padėrbta autuomatėškā',
 'rightsnone' => '(juokiū)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Ėšskeistė šabluonus',
+
 );
index 7c79374..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' ),
@@ -480,8 +478,6 @@ $1',
 'ok' => 'da',
 'retrievedfrom' => 'Dobavljeno iz "$1"',
 'youhavenewmessages' => 'Imate $1 ($2).',
-'newmessageslink' => 'novih promjena',
-'newmessagesdifflink' => 'posljednja promjena',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|$1 nove poruke|$1 novih poruka}}',
@@ -1331,7 +1327,6 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'preferences' => 'Postavke',
 'mypreferences' => 'Postavke',
 'prefs-edits' => 'Broj izmjena:',
-'prefsnologin' => 'Niste prijavljeni',
 'changepassword' => 'Promijeni lozinku',
 'prefs-skin' => 'Izgled (skin)',
 'skin-preview' => 'Pretpregled',
@@ -1624,6 +1619,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'recentchanges-label-minor' => 'Ovo je manja izmjena',
 'recentchanges-label-bot' => 'Ovu je izmjenu učinio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnote' => "Ispod {{PLURAL:$1|je '''$1''' promjena|su '''$1''' zadnje promjene|su '''$1''' zadnjih promjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
 'rcnotefrom' => "Ispod {{PLURAL:$1|je '''$1''' izmjena|su '''$1''' zadnje izmjene|su '''$1''' zadnjih izmjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
 'rclistfrom' => 'Prikaži nove izmjene počevši od $1',
index 9bdc67d..2e97f04 100644 (file)
@@ -268,8 +268,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Yurrid z "$1"',
 'youhavenewmessages' => 'Illa dark $1 ($2).',
-'newmessageslink' => 'Tibratin timaynutin',
-'newmessagesdifflink' => 'Imbddeln imĝura',
 'youhavenewmessagesmulti' => 'Dark tibratin timaynutin ɣ $1',
 'editsection' => 'Ẓreg (bddel)',
 'editold' => 'Ẓreg (bddel)',
@@ -649,7 +647,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
 'preferences' => 'Timssusmin',
 'mypreferences' => 'Timssusmin',
 'prefs-edits' => 'Uṭṭun n n imbddeln',
-'prefsnologin' => 'Ur tmlit mat git',
 'changepassword' => 'bdl awal ihdan',
 'prefs-skin' => 'odm',
 'skin-preview' => 'Ammal',
index 7754e8a..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( 'නිර්යාතකරන්න' ),
@@ -466,8 +464,6 @@ $1",
 'ok' => 'හරි',
 'retrievedfrom' => '"$1" වෙතින් සම්ප්‍රවේශනය කෙරිණි',
 'youhavenewmessages' => 'ඔබ හට $1 ($2)',
-'newmessageslink' => 'නව පණිවුඩ',
-'newmessagesdifflink' => 'අවසාන වෙනස',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|තවත් එක් පරිශීලකයෙකුගෙන්|පරිශීලකයන් $3 දෙනෙකුගෙන්}} ඔබ හට $1 ඇත ($2).',
 'youhavenewmessagesmanyusers' => 'බොහෝ පරිශීලකයන් වෙතින් ඔබ හට $1 ඇත ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|නව පණිවුඩයක්|නව පණිවුඩ}}',
@@ -1270,7 +1266,6 @@ $1",
 'preferences' => 'අභිරුචි',
 'mypreferences' => 'අභිරුචීන්',
 'prefs-edits' => 'සංස්කරණයන් සංඛ්‍යාව:',
-'prefsnologin' => 'පිවිසී නැත (Not logged in)',
 'changepassword' => 'මුරපදය වෙනස් කරන්න',
 'prefs-skin' => 'ඡවිය',
 'skin-preview' => 'පෙරදසුන',
@@ -1545,6 +1540,7 @@ HTML ටැගයන් පිරික්සන්න.',
 'recentchanges-label-minor' => 'මෙය සුළු සංස්කරණයකි',
 'recentchanges-label-bot' => 'මෙය රොබෝවක් විසින් කරන ලද සංස්කරණයකි',
 'recentchanges-label-unpatrolled' => 'මෙම සංස්කරණය තවම විමර්ශනය කර නොමැත',
+'recentchanges-legend-newpage' => '$1 -  නව පිටුව',
 'rcnote' => "$4 දින, $5 වන තෙක්, අවසන් {{PLURAL:$2|දිනදී|දින '''$2''' තුලදී}} සිදුවී ඇති, {{PLURAL:$1| '''1''' ක් වෙනස|අවසන් වෙනස්වීම් '''$1'''}} පහත දැක්වේ.",
 'rcnotefrom' => "'''$2''' න් පසු සිදුවී ඇති වෙනස්කම් මෙහි පහත දැක්වේ ('''$1''' ක ප්‍රමාණයක උපරිමයක් පෙන්වා ඇත).",
 'rclistfrom' => '$1 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
@@ -3992,4 +3988,21 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 'duration-centuries' => '{{PLURAL:$1|ශතවර්ෂ|ශතවර්ෂ}} $1 ක්',
 'duration-millennia' => '{{PLURAL:$1|සහස‍්‍රවර්ෂ|සහස‍්‍රවර්ෂ}} $1 ක්',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'සැකිලි පුළුල් කරන්න',
+'expand_templates_intro' => 'මෙම විශේෂ පිටුව විසින් යම් පෙළක්  ගෙන එහි සියළු සැකිලි ආවර්තනික ලෙස පුළුල් කරයි.
+එය  <nowiki>{{</nowiki>#language:…}} වැනි ව්‍යාකරණ විග්‍රහ ශ්‍රිතයන් හා,
+<nowiki>{{</nowiki>CURRENTDAY}}වැනි විචල්‍යයන් ද&mdash; ඇත්ත වශයෙන්ම
+ද්විත්ව-සඟල වරහන් තුල හමුවන සැම දෙයක්ම පාහේ  පුළුල් කරයි.
+එය විසින් මෙය සිදුකරනුයේ මාධයවිකි විසින්ම අදාල ව්‍යාකරණ විග්‍රහ අදියර ඇමතීමෙනි.',
+'expand_templates_title' => '{{FULLPAGENAME}} වැන්න සඳහා, ප්‍රකරණ ශීර්ෂය.:',
+'expand_templates_input' => 'ප්‍රදාන පෙළ:',
+'expand_templates_output' => 'ප්‍රතිඵලය',
+'expand_templates_xml_output' => 'XML ප්‍රතිදානය',
+'expand_templates_ok' => 'හරි',
+'expand_templates_remove_comments' => 'පරිකථනයන්  ඉවත්කරන්න',
+'expand_templates_remove_nowiki' => 'ප්‍රතිපලයෙහි <nowiki> ටැග යටපත් කරන්න',
+'expand_templates_generate_xml' => 'XML ව්‍යාකරණ විග්‍රහ රුක පෙන්වන්න',
+'expand_templates_preview' => 'පෙරදසුන',
+
 );
index e077d91..d426014 100644 (file)
@@ -12,6 +12,7 @@
  * @author Geitost
  * @author Helix84
  * @author Kaganer
+ * @author KuboF
  * @author Kusavica
  * @author Liso
  * @author Maros
@@ -40,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' ),
@@ -50,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í' ),
@@ -558,8 +557,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Zdroj: „$1“',
 'youhavenewmessages' => 'Máte $1 ($2).',
-'newmessageslink' => 'nové správy',
-'newmessagesdifflink' => 'posledná zmena',
 'youhavenewmessagesfromusers' => 'Máte $1 od {{PLURAL:$3|iného používateľa|$3 iných používateľov}} ($2).',
 'youhavenewmessagesmanyusers' => 'Máte $1 od viacerých ďalších používateľov ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novú správu|nové správy}}',
@@ -1262,8 +1259,8 @@ Iní správcovia {{GRAMMAR:genitív|{{SITENAME}}}} budú stále môcť pristupov
 'revdelete-hide-user' => 'Používateľské meno/IP redaktora',
 'revdelete-hide-restricted' => 'Zatajiť údaje pred všetkými, aj pred správcami',
 'revdelete-radio-same' => '(nezmeniť)',
-'revdelete-radio-set' => 'Viditeľné',
-'revdelete-radio-unset' => 'Skryté',
+'revdelete-radio-set' => 'Skrytý',
+'revdelete-radio-unset' => 'Viditeľný',
 'revdelete-suppress' => 'Skryť údaje pred správcami rovnako ako pred ostatnými',
 'revdelete-unsuppress' => 'Odstrániť obmedzenia obnovených revízií',
 'revdelete-log' => 'Dôvod:',
@@ -1416,7 +1413,6 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'preferences' => 'Nastavenia',
 'mypreferences' => 'Nastavenia',
 'prefs-edits' => 'Počet úprav:',
-'prefsnologin' => 'Nie ste prihlásený/á',
 'changepassword' => 'Zmeniť heslo',
 'prefs-skin' => 'Vzhľad',
 'skin-preview' => 'Náhľad',
@@ -1713,6 +1709,7 @@ Softvér používa toto nastavenie na správne oslovenie a označenie vás ostat
 'recentchanges-label-minor' => 'Toto je drobná úprava',
 'recentchanges-label-bot' => 'Túto úpravy vykonal robot',
 'recentchanges-label-unpatrolled' => 'Táto úprava zatiaľ nebola strážená',
+'recentchanges-legend-newpage' => '(pozri tiež [[Special:NewPages|zoznam nových stránok]])',
 'rcnote' => "Tu {{PLURAL:$1|je posledná úprava|sú posledné '''$1''' úpravy|je posledných '''$1''' úprav}} počas {{PLURAL:$2|posledného dňa|posledných '''$2''' dní}} z $4, $5.",
 'rcnotefrom' => "Nižšie sú zobrazené úpravy od '''$2''' (do '''$1''').",
 'rclistfrom' => 'Zobraziť nové úpravy počnúc od $1',
@@ -3272,7 +3269,7 @@ Jeho spustením môžete kompromitovať svoj systém.",
 'svg-long-desc' => 'SVG súbor, $1 × $2 pixelov, veľkosť súboru: $3',
 'svg-long-desc-animated' => 'Animovaný súbor SVG, nominálne $1 × $2 pixlov, veľkosť súboru: $3',
 'svg-long-error' => 'Neplatný súbor SVG: $1',
-'show-big-image' => 'Obrázok vo vyššom rozlíšení',
+'show-big-image' => 'Pôvodný súbor',
 'show-big-image-preview' => 'Veľkosť tohto náhľadu: $1.',
 'show-big-image-other' => 'Iné {{PLURAL:$2|rozlíšenie|rozlíšenia}}: $1 .',
 'show-big-image-size' => '$1 × $2 pixlov',
@@ -4190,4 +4187,24 @@ V opačnom prípade môžete použiť zjednodušený formulár nižšie. Váš k
 'limitreport-expansiondepth' => 'Najväčšia hĺbka expanzie',
 'limitreport-expensivefunctioncount' => 'Počet náročných funkcií parseru',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Substituovať šablóny',
+'expand_templates_intro' => 'Táto špeciálna stránka prijme na
+vstup text a rekurzívne substituuje všetky šablóny,
+ktoré sú v ňom použité. Tiež expanduje funkcie
+syntaktického analyzátora ako <nowiki>{{</nowiki>#language:...}}
+a premenné ako <nowiki>{{</nowiki>CURRENTDAY}}—v podstate
+takmer všetko v zložených zátvorkách. Robí to pomocou
+volania relevantnej fázy syntaktického analyzátora
+samotného MediaWiki.',
+'expand_templates_title' => 'Názov kontextu pre {{FULLPAGENAME}} atď.:',
+'expand_templates_input' => 'Vstupný text:',
+'expand_templates_output' => 'Výsledok',
+'expand_templates_xml_output' => 'XML výstup',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Odstrániť komentáre',
+'expand_templates_remove_nowiki' => 'Potlačiť značky <nowiki> vo výsledku',
+'expand_templates_generate_xml' => 'Zobraziť strom XML',
+'expand_templates_preview' => 'Náhľad',
+
 );
index c1c7b3f..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' ),
@@ -462,8 +460,6 @@ $1',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Vzpostavljeno iz »$1«',
 'youhavenewmessages' => 'Imate $1 ($2)',
-'newmessageslink' => 'nova sporočila',
-'newmessagesdifflink' => 'zadnja sprememba',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugega uporabnika|$3 uporabnikov}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od veliko uporabnikov ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novo sporočilo|nova sporočila}}',
@@ -1334,7 +1330,6 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'preferences' => 'Nastavitve',
 'mypreferences' => 'Nastavitve',
 'prefs-edits' => 'Število urejanj:',
-'prefsnologin' => 'Niste prijavljeni',
 'changepassword' => 'Zamenjava gesla',
 'prefs-skin' => 'Koža',
 'skin-preview' => 'Predogled',
@@ -1634,6 +1629,7 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'recentchanges-label-minor' => 'Manjše urejanje',
 'recentchanges-label-bot' => 'To urejanje je bilo izvedeno z botom',
 'recentchanges-label-unpatrolled' => 'Urejanje še ni bilo pregledano',
+'recentchanges-legend-newpage' => '$1 - nova stran',
 'rcnote' => "Prikazujem {{PLURAL:$1|zadnjo spremembo|zadnji '''$1''' spremembi|zadnje '''$1''' spremembe|zadnjih '''$1''' sprememb|zadnjih '''$1''' sprememb}} v {{PLURAL:$2|zadnjem|zadnjih|zadnjih|zadnjih|zadnjih}} '''$2''' {{PLURAL:$2|dnevu|dneh|dneh|dneh|dneh}}, od $5, $4.",
 'rcnotefrom' => "Navedene so spremembe od '''$2''' dalje (prikazujem jih do '''$1''').",
 'rclistfrom' => 'Prikaži spremembe od $1 naprej',
@@ -4116,4 +4112,21 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'limitreport-expansiondepth' => 'Največja globina razširitve',
 'limitreport-expensivefunctioncount' => 'Število dragih funkcij razčlenjevalnika',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Razširi predloge',
+'expand_templates_intro' => 'Ta posebna stran nekaj vnesenega besedila predela tako, da klice predlog v njem zamenja z njihovo vsebino.
+Prav tako razreši izraze kot
+<code><nowiki>{{</nowiki>#language:…}}</code> in spremenljivke kot
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Pravzaprav razširi skoraj vse v dvojnih zavitih oklepajih.',
+'expand_templates_title' => 'Naslov sobesedila, za {{FULLPAGENAME}} ipd.:',
+'expand_templates_input' => 'Vhodno besedilo:',
+'expand_templates_output' => 'Rezultat',
+'expand_templates_xml_output' => 'Izhod XML',
+'expand_templates_ok' => 'V redu',
+'expand_templates_remove_comments' => 'Odstrani komentarje',
+'expand_templates_remove_nowiki' => 'V rezultatu odstrani oznake <nowiki>',
+'expand_templates_generate_xml' => 'Pokaži razčlenitveno drevo XML',
+'expand_templates_preview' => 'Predogled',
+
 );
index ad4c486..91e34a7 100644 (file)
@@ -259,8 +259,6 @@ $1",
 
 'retrievedfrom' => 'voo "$1"',
 'youhavenewmessages' => 'Du hust $1 ($2).',
-'newmessageslink' => 'Neue Noachrichta',
-'newmessagesdifflink' => 'neue Noachrichta',
 'youhavenewmessagesmulti' => 'Du hast neue Nachrichta: $1',
 'editsection' => 'Bearbta',
 'editold' => 'Bearbta',
@@ -798,7 +796,6 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'preferences' => 'Eenstellunga',
 'mypreferences' => 'Meene Eistellunga',
 'prefs-edits' => 'Oazoahl dar Beoarbeetunga:',
-'prefsnologin' => 'Ne oagemeldet',
 'changepassword' => 'Poaßwurt ändern',
 'prefs-personal' => 'Nutzerdaten',
 'prefs-rc' => 'Letzte Änderunga',
@@ -988,6 +985,7 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'recentchanges-label-minor' => 'Klenne Änderung',
 'recentchanges-label-bot' => "Änderung durch an'n Bot",
 'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Änderung',
+'recentchanges-legend-newpage' => '$1 - neue Seite',
 'rcnote' => "Oagezeegt {{PLURAL:$1|wird '''1''' Ännerong|waan de letzta '''$1''' Änneronga}} {{PLURAL:$2|des letzta Taages|dar letzta '''$2''' Taage}}. Stand: $4, $5. (<b><tt>N</tt></b>&nbsp;– neuer Eentrag; <b><tt>K</tt></b>&nbsp;– kleene Ännerong; <b><tt>B</tt></b>&nbsp;– Ännerong dorch eena Bot; ''(± Zoahl)''&nbsp;– Greeßaännerong ei Byte)",
 'rcnotefrom' => "Oagezeigt waan de Änderunga seit '''$2''' (max. '''$1''' Einträge).",
 'rclistfrom' => 'Oack Änneronga seit $1 zeiga.',
index b7dab95..10b0421 100644 (file)
@@ -270,12 +270,10 @@ fiiri [[Special:Version|nooca bogga]].',
 'ok' => 'waayahay',
 'retrievedfrom' => 'Waxaa laga keenay "$1"',
 'youhavenewmessages' => 'Waxaa heysataa $1 ($2).',
-'newmessageslink' => 'Fariimaha cusub',
-'newmessagesdifflink' => 'bedelkii ugu dambeeyay',
 'youhavenewmessagesfromusers' => 'Waxay $1 kaaga timid {{PLURAL:$3|adeegsade kale|$3 adeegsade}} ($2).',
 'youhavenewmessagesmanyusers' => 'Waxay ka $1 timid adeegsade yaal farabadan ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|Waa fariin cusub|fariin cusub}}',
-'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|bedelkii ugu dambeeyey|bedeladii ugu dambeeyey}}',
+'newmessageslinkplural' => '{{PLURAL:$1|farriin cusub|999=farriimo cusub}}',
+'newmessagesdifflinkplural' => 'isbedel {{PLURAL:$1|dhow|999=isbedello dhow}}',
 'youhavenewmessagesmulti' => '$1 waxaa kuu yaalo fariimo cusub',
 'editsection' => 'Wax ka bedel',
 'editold' => 'Wax ka bedel',
@@ -799,7 +797,6 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 # Preferences page
 'preferences' => 'Dooqyada',
 'mypreferences' => 'Dooqyadeyda',
-'prefsnologin' => 'Gudaha kuma jirtid',
 'prefs-skin' => 'Jirka',
 'skin-preview' => 'Horfiirin',
 'datedefault' => "Ma'jiro dooq",
index a91d570..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' ),
@@ -488,8 +487,6 @@ $1",
 'ok' => 'Ok',
 'retrievedfrom' => 'Marrë nga "$1"',
 'youhavenewmessages' => 'Ju keni $1 ($2).',
-'newmessageslink' => 'mesazhe të reja',
-'newmessagesdifflink' => 'ndryshimi i fundit',
 'youhavenewmessagesfromusers' => 'Ju keni $1 nga {{PLURAL:$3|një përdorues tjetër|$3 përdorues}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ju keni $1 nga shumë përdorues ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|një mesazh i ri|mesazhe të reja}}',
@@ -1264,7 +1261,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'preferences' => 'Parapëlqimet',
 'mypreferences' => 'Parapëlqimet',
 'prefs-edits' => 'Numri i redaktimeve:',
-'prefsnologin' => 'Nuk keni hyrë brenda',
 'changepassword' => 'Ndërroni fjalëkalimin',
 'prefs-skin' => 'Pamja',
 'skin-preview' => 'Parapamje',
@@ -1538,6 +1534,7 @@ Kjo informatë është publike.',
 'recentchanges-label-minor' => 'Ky është një editim i vogël',
 'recentchanges-label-bot' => 'Ky editim është kryer nga një bot',
 'recentchanges-label-unpatrolled' => 'Ky editim ende nuk është patrolluar',
+'recentchanges-legend-newpage' => '$1 - faqe të re',
 'rcnote' => "Më poshtë {{PLURAL:$1|është '''1''' ndryshim| janë '''$1''' ndryshime}} së fundmi gjatë <strong>$2</strong> ditëve sipas të dhënave nga $4, $5.",
 'rcnotefrom' => 'Më poshtë janë ndryshime së fundmi nga <b>$2</b> (treguar deri në <b>$1</b>).',
 'rclistfrom' => 'Tregon ndryshime së fundmi duke filluar nga $1',
@@ -3825,4 +3822,13 @@ Përndryshe, ju mund të formularin e thjeshtë më poshtë. Komenti juaj do të
 'duration-centuries' => '$1 {{PLURAL:$1|shekull|shekuj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milennium|mileniume}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Parapamje stampash',
+'expand_templates_intro' => 'Kjo faqe speciale merr tekstin me stampa dhe të tregon se si do të duket teksti pasi të jenë stamposur të tëra. Kjo faqe gjithashtu tregon parapamjen e funksioneve dhe fjalëve magjike si p.sh. <nowiki>{{</nowiki>#language:...}} dhe <nowiki>{{</nowiki>CURRENTDAY}}.',
+'expand_templates_title' => 'Titulli i faqes për rrethanën, si {{FULLPAGENAME}} etj.:',
+'expand_templates_input' => 'Teksti me stampa:',
+'expand_templates_output' => 'Parapamja',
+'expand_templates_ok' => 'Shko',
+'expand_templates_remove_comments' => 'Hiq komentet',
+
 );
index 920aa96..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( 'Корисничка_пријава' ),
@@ -674,8 +672,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Преузето из „$1“',
 'youhavenewmessages' => 'Имате $1 ($2).',
-'newmessageslink' => 'нових порука',
-'newmessagesdifflink' => 'последња измена',
 'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|нове поруке}}',
@@ -857,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' => 'Унесите податке за нови налог испод.',
@@ -1171,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 />
@@ -1367,8 +1366,8 @@ $2
 'revdelete-hide-user' => 'Кориснчко име уредника/ИП адреса',
 'revdelete-hide-restricted' => 'Сакриј податке од администратора и других корисника',
 'revdelete-radio-same' => '(не мењај)',
-'revdelete-radio-set' => 'Ð\92идÑ\99иво',
-'revdelete-radio-unset' => 'СакÑ\80ивено',
+'revdelete-radio-set' => 'СакÑ\80ивено',
+'revdelete-radio-unset' => 'Ð\92идÑ\99иво',
 'revdelete-suppress' => 'Сакриј податке од администратора и других корисника',
 'revdelete-unsuppress' => 'Уклони ограничења на враћеним изменама',
 'revdelete-log' => 'Разлог:',
@@ -1525,7 +1524,6 @@ $1",
 'preferences' => 'Подешавања',
 'mypreferences' => 'Подешавања',
 'prefs-edits' => 'Број измена:',
-'prefsnologin' => 'Нисте пријављени',
 'changepassword' => 'Промени лозинку',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Прегледај',
@@ -1771,10 +1769,10 @@ $1",
 'action-createtalk' => 'прављење страница за разговор',
 'action-createaccount' => 'отварање овог корисничког налога',
 'action-minoredit' => 'означавање ове измене као мање',
-'action-move' => 'пÑ\80емеÑ\88Ñ\82аÑ\9aе Ð¾Ð²Ðµ Ñ\81Ñ\82Ñ\80аниÑ\86е',
-'action-move-subpages' => 'пÑ\80емеÑ\88Ñ\82аÑ\9aе Ð¾Ð²Ðµ Ñ\81Ñ\82Ñ\80аниÑ\86е Ð¸ Ñ\9aениÑ\85 Ð¿Ð¾Ð´Ñ\81Ñ\82Ñ\80аниÑ\86а',
+'action-move' => 'пÑ\80емеÑ\81Ñ\82и Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83',
+'action-move-subpages' => 'пÑ\80емеÑ\81Ñ\82и Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, ÐºÐ°Ð¾ Ð¸ Ñ\9aене Ð¿Ð¾Ð´Ñ\81Ñ\82Ñ\80аниÑ\86е',
 'action-move-rootuserpages' => 'премештање основних корисничких страница',
-'action-movefile' => 'пÑ\80емеÑ\88Ñ\82аÑ\9aе Ð¾Ð²Ðµ Ð´Ð°Ñ\82оÑ\82еке',
+'action-movefile' => 'пÑ\80емеÑ\81Ñ\82и Ð¾Ð²Ñ\83 Ð´Ð°Ñ\82оÑ\82екÑ\83',
 'action-upload' => 'слање ове датотеке',
 'action-reupload' => 'замењивање постојеће датотеке',
 'action-reupload-shared' => 'постављање ове датотеке на заједничко складиште',
@@ -1814,6 +1812,7 @@ $1",
 'recentchanges-label-minor' => 'Мања измена',
 'recentchanges-label-bot' => 'Ову измену је направио бот',
 'recentchanges-label-unpatrolled' => 'Ова измена још није прегледана',
+'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',
@@ -4079,6 +4078,7 @@ $5
 'ellipsis' => '…',
 'percent' => '$1%',
 'parentheses' => '($1)',
+'quotation-marks' => '„$1“',
 
 # Multipage image navigation
 'imgmultipageprev' => '← претходна страница',
@@ -4132,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' => 'Наслови са списка надгледања су приказани испод и могу се уређивати додавањем или уклањањем ставки са списка;
 један наслов по реду.
@@ -4270,6 +4270,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Посебне странице',
+'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Нормалне посебне странице
 * <span class="mw-specialpagerestricted">Ограничене посебне странице</span>',
 'specialpages-group-maintenance' => 'Извештаји одржавања',
@@ -4473,4 +4474,19 @@ $5
 'limitreport-postexpandincludesize-value' => '$1/$2 бајтова',
 'limitreport-templateargumentsize-value' => '$1/$2 бајтова',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Замена шаблона',
+'expand_templates_intro' => 'Ова посебна страница узима текст и мења све шаблоне у њему рекурзивно.
+Такође мења функције парсера као што је <code><nowiki>{{</nowiki>#language:…}}</code> и променљиве као што је <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. 
+Заправо практично све што се налази између витичастих заграда.',
+'expand_templates_title' => 'Назив контекста; за {{СТРАНИЦА}} итд.:',
+'expand_templates_input' => 'Унос:',
+'expand_templates_output' => 'Резултат',
+'expand_templates_xml_output' => 'XML излаз',
+'expand_templates_ok' => 'У реду',
+'expand_templates_remove_comments' => 'Уклони коментаре',
+'expand_templates_remove_nowiki' => 'Поништава ефекат <nowiki> тагова у приказу чланака',
+'expand_templates_generate_xml' => 'прикажи XML стабло',
+'expand_templates_preview' => 'Приказ',
+
 );
index ce35eb8..4464361 100644 (file)
@@ -581,8 +581,6 @@ Pogledajte stranicu za [[Special:Version|izdanje]].',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Preuzeto iz „$1“',
 'youhavenewmessages' => 'Imate $1 ($2).',
-'newmessageslink' => 'novih poruka',
-'newmessagesdifflink' => 'poslednju izmenu',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
@@ -1057,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 />
@@ -1252,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:',
@@ -1410,7 +1409,6 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'preferences' => 'Podešavanja',
 'mypreferences' => 'Podešavanja',
 'prefs-edits' => 'Broj izmena:',
-'prefsnologin' => 'Niste prijavljeni',
 'changepassword' => 'Promeni lozinku',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Pregledaj',
@@ -1650,10 +1648,10 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'action-createtalk' => 'pravljenje stranica za razgovor',
 'action-createaccount' => 'otvaranje ovog korisničkog naloga',
 'action-minoredit' => 'označavanje ove izmene kao manje',
-'action-move' => 'premeštanje ove stranice',
-'action-move-subpages' => 'premeštanje ove stranice i njenih podstranica',
+'action-move' => 'premesti ovu stranicu',
+'action-move-subpages' => 'premesti ovu stranicu, kao i njene podstranice',
 'action-move-rootuserpages' => 'premeštanje osnovnih korisničkih stranica',
-'action-movefile' => 'premeštanje ove datoteke',
+'action-movefile' => 'premesti ovu datoteku',
 'action-upload' => 'slanje ove datoteke',
 'action-reupload' => 'zamenjivanje postojeće datoteke',
 'action-reupload-shared' => 'postavljanje ove datoteke na zajedničko skladište',
@@ -1690,6 +1688,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'recentchanges-label-minor' => 'Manja izmena',
 'recentchanges-label-bot' => 'Ovu izmenu je napravio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmena još nije pregledana',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnote' => "Ispod {{PLURAL:$1|je '''1''' izmena|su poslednje '''$1''' izmene|su poslednjih '''$1''' izmena}} {{PLURAL:$2|prethodni dan|u poslednja '''$2''' dana|u poslednjih '''$2''' dana}}, od $4; $5.",
 'rcnotefrom' => 'Ispod su izmene od <b>$3; $4</b> (do <b>$1</b> izmena).',
 'rclistfrom' => 'Prikaži nove izmene počev od $1',
@@ -3920,6 +3919,7 @@ Potvrdite da stvarno želite da napravite stranicu.",
 'ellipsis' => '…',
 'percent' => '$1%',
 'parentheses' => '($1)',
+'quotation-marks' => '„$1“',
 
 # Multipage image navigation
 'imgmultipageprev' => '← prethodna stranica',
@@ -3973,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.
@@ -4225,6 +4225,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'logentry-newusers-newusers' => '$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog',
 'logentry-newusers-create' => '$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog',
 'logentry-newusers-create2' => '$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog $3',
+'logentry-newusers-byemail' => 'Korisnički nalog $3 je {{GENDER:$2|napravljen}} od strane $1 i lozinka je poslata na e-poštu',
 'logentry-newusers-autocreate' => 'Korisnički nalog $1 je automatski {{GENDER:$2|otvoren}}',
 'logentry-rights-rights' => '$1 je {{GENDER:$1|promenio|promenila}} članstvo grupe za $3 iz $4 u $5',
 'logentry-rights-rights-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} čalnstvo grupe za $3',
@@ -4306,4 +4307,19 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 # Image rotation
 'rotate-comment' => 'Slika je rotirana za $1° u smeru kazaljke na satu',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Zamena šablona',
+'expand_templates_intro' => 'Ova posebna stranica uzima tekst i menja sve šablone u njemu rekurzivno.
+Takođe menja funkcije parsera kao što je <code><nowiki>{{</nowiki>#language:…}}</code> i promenljive kao što je <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Zapravo praktično sve što se nalazi između vitičastih zagrada.',
+'expand_templates_title' => 'Naziv konteksta; za {{STRANICA}} itd.:',
+'expand_templates_input' => 'Unos:',
+'expand_templates_output' => 'Rezultat',
+'expand_templates_xml_output' => 'XML izlaz',
+'expand_templates_ok' => 'U redu',
+'expand_templates_remove_comments' => 'Ukloni komentare',
+'expand_templates_remove_nowiki' => 'Poništava efekat <nowiki> tagova u prikazu članaka',
+'expand_templates_generate_xml' => 'prikaži XML stablo',
+'expand_templates_preview' => 'Prikaz',
+
 );
index df96074..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' ),
@@ -364,8 +362,6 @@ $messages = array(
 'ok' => 'Abun',
 'retrievedfrom' => 'Teki baka fu "$1"',
 'youhavenewmessages' => 'Yu abi $1 ($2).',
-'newmessageslink' => 'nyun boskopu',
-'newmessagesdifflink' => 'laste kenki',
 'youhavenewmessagesmulti' => 'Yu abi nyun boskopu na tapu $1',
 'editsection' => 'kenki',
 'editold' => 'kenki',
@@ -640,7 +636,6 @@ A kan ben trowe efu dribi.
 'preferences' => 'Seti',
 'mypreferences' => 'Mi seti',
 'prefs-edits' => 'Nomru fu kenki:',
-'prefsnologin' => 'No kon',
 'changepassword' => 'Kenki yu waktiwortu',
 'prefs-skin' => 'Buba',
 'skin-preview' => 'Si-na-fesi',
index 6cab51c..1cddf44 100644 (file)
@@ -300,8 +300,6 @@ $1',
 'ok' => 'Säike (09)',
 'retrievedfrom' => 'Fon "$1"',
 'youhavenewmessages' => 'Du hääst $1 ($2).',
-'newmessageslink' => 'näie Ättergjuchte',
-'newmessagesdifflink' => 'Unnerskeed tou ju foarlääste Version',
 'youhavenewmessagesmulti' => 'Du hääst näie Ättergjuchte: $1',
 'editsection' => 'Beoarbaidje',
 'editold' => 'Beoarbaidje',
@@ -1007,7 +1005,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'preferences' => 'Ienstaalengen',
 'mypreferences' => 'Ienstaalengen',
 'prefs-edits' => 'Antaal Beoarbaidengen:',
-'prefsnologin' => 'Nit anmälded',
 'changepassword' => 'Paaswoud annerje',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Foarskau',
@@ -1273,6 +1270,7 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'recentchanges-label-minor' => 'Litje Annerenge',
 'recentchanges-label-bot' => 'Annerenge truch n Bot',
 'recentchanges-label-unpatrolled' => 'Nit-kontrollierde Annerenge',
+'recentchanges-legend-newpage' => '$1 - näie Siede',
 'rcnote' => "Anwiesd {{PLURAL:$1|wäd '''1''' Annerenge|wäide do lääste '''$1''' Annerengen}} in {{PLURAL:$2|dän lääste Dai|do lääste '''$2''' Deege}} siet $5, $4.",
 'rcnotefrom' => "Anwiesd wäide do Annerengen siet '''$2''' (max. '''$1''' Iendraage).",
 'rclistfrom' => 'Bloot näie Annerengen siet $1 wiese.',
@@ -3239,4 +3237,16 @@ Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''
 'searchsuggest-search' => 'Säik',
 'searchsuggest-containing' => 'Fultextsäike ätter ...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Foarloagen expandierje',
+'expand_templates_intro' => "In disse Spezialsiede kon Text ienroat wäide un aal Foarloagen in hier wäide rekursiv expandierd. Uk Parserfunktione as <nowiki>{{</nowiki>#language:...}} un Variabelen as <nowiki>{{</nowiki>CURRENTDAY}} wäide benutsed - faktisk alles wät twiske dubbelde swoangene Klammere '''{{}}''' stoant. Dit geböärt truch dän Aproup fon apstuunse Parser-Phasen in MediaWiki.",
+'expand_templates_title' => 'Kontexttittel, foar {{FULLPAGENAME}} etc.:',
+'expand_templates_input' => 'Iengoawefäild:',
+'expand_templates_output' => 'Resultoat',
+'expand_templates_xml_output' => 'XML-Uutgoawe',
+'expand_templates_ok' => 'Uutfiere',
+'expand_templates_remove_comments' => 'Kommentoare wächhoalje',
+'expand_templates_generate_xml' => 'Wies XML Parser-Boom',
+'expand_templates_preview' => 'Foarskau',
+
 );
index 230981d..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' ),
@@ -387,8 +385,6 @@ $1',
 'ok' => 'Heug',
 'retrievedfrom' => 'Disalin ti "$1"',
 'youhavenewmessages' => 'Anjeun boga $1 ($2).',
-'newmessageslink' => 'talatah anyar',
-'newmessagesdifflink' => 'bédana ti nu saméméhna',
 'youhavenewmessagesmulti' => 'Anjeun boga talatah anyar di $1',
 'editsection' => 'édit',
 'editold' => 'édit',
@@ -1074,7 +1070,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 'preferences' => 'Préferénsi',
 'mypreferences' => 'Préferéns',
 'prefs-edits' => 'Jumlah éditan:',
-'prefsnologin' => 'Can asup log',
 'changepassword' => 'Robah sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pramidang',
@@ -1332,6 +1327,7 @@ Mun geus anggeus teu bisa dibolaykeun.',
 'recentchanges-label-minor' => 'Ieu éditan minor',
 'recentchanges-label-bot' => 'Ieu parobahan dijieun ku bot',
 'recentchanges-label-unpatrolled' => 'Ieu éditan can karoris',
+'recentchanges-legend-newpage' => '$1 - kaca anyar',
 'rcnote' => "Di handap ieu {{PLURAL:$1|'''1''' parobahan| '''$1''' parobahan anyar}} dina  {{PLURAL:$2|poé|'''$2''' poé}} ahir, nepi $5, $4.",
 'rcnotefrom' => 'Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).',
 'rclistfrom' => 'Témbongkeun nu anyar robah nepi ka $1',
@@ -3024,4 +3020,12 @@ Coba ku sawangan normal.',
 'duration-centuries' => '$1 {{PLURAL:$1|abad|abad}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milénium|milénium}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Mekarkeun citakan',
+'expand_templates_input' => 'Téks input:',
+'expand_templates_output' => 'Hasil:',
+'expand_templates_xml_output' => 'Output XML',
+'expand_templates_ok' => 'Heug',
+'expand_templates_preview' => 'Pramidang',
+
 );
index 380af11..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' ),
@@ -600,12 +599,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Hämtad från "$1"',
 'youhavenewmessages' => 'Du har $1 ($2).',
-'newmessageslink' => 'nya meddelanden',
-'newmessagesdifflink' => 'senaste ändringen',
 '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',
@@ -735,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''",
@@ -1284,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',
@@ -1452,7 +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:',
-'prefsnologin' => 'Inte inloggad',
+'prefsnologintext2' => 'Var god $1 för att ändra användarinställningar.',
 'changepassword' => 'Byt lösenord',
 'prefs-skin' => 'Utseende',
 'skin-preview' => 'förhandsvisning',
@@ -1751,6 +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' => '(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',
@@ -2479,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
 
@@ -4006,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',
@@ -4220,4 +4220,17 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'limitreport-expansiondepth' => 'Största expansionsdjup',
 'limitreport-expensivefunctioncount' => 'Antal dyra parser-funktioner',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Expandera mallar',
+'expand_templates_intro' => 'Den här specialsidan tar en text och expanderar rekursivt alla mallar som används. Även parserfunktioner (som <code><nowiki>{{</nowiki>#language:...}}</code>), variabler som <code><nowiki>{{</nowiki>CURRENTDAY}}</code> och annan kod med dubbla klammerparenteser expanderas.',
+'expand_templates_title' => 'Sidans titel, används för t.ex. {{FULLPAGENAME}}:',
+'expand_templates_input' => 'Text som ska expanderas:',
+'expand_templates_output' => 'Expanderad kod',
+'expand_templates_xml_output' => 'XML-kod',
+'expand_templates_ok' => 'Expandera',
+'expand_templates_remove_comments' => 'Ta bort kommentarer',
+'expand_templates_remove_nowiki' => 'Undertryck <nowiki> taggar i resultatet',
+'expand_templates_generate_xml' => 'Visa parseträd som XML',
+'expand_templates_preview' => 'Förhandsvisning',
+
 );
index 31d5812..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' ),
@@ -397,8 +395,6 @@ Tazama [[Special:Version|ukurasa wa toleo]].',
 'ok' => 'Sawa',
 'retrievedfrom' => 'Rudishwa kutoka "$1"',
 'youhavenewmessages' => 'Una $1 ($2).',
-'newmessageslink' => 'ujumbe mpya',
-'newmessagesdifflink' => 'badiliko la mwisho',
 'youhavenewmessagesfromusers' => 'Una $1 kutoka {{PLURAL:$3|another user|$3 users}} ($2)',
 'youhavenewmessagesmanyusers' => 'Una $1 kutoka kwa watumiaji wengi $2',
 'newmessageslinkplural' => '{{PLURAL:$1|a new message|ujumbe mpya}}',
@@ -454,6 +450,7 @@ Orodha ya kurasa maalumu zinapatika kwenye [[Special:SpecialPages|{{int:kurasama
 # General errors
 'error' => 'Hitilafu',
 'databaseerror' => 'Hitilafu ya hifadhidata',
+'databaseerror-error' => 'Hitilafu: $1',
 'laggedslavemode' => "'''Ilani:'''Labda masahihisho ya hivi karibuni bado hayajaonekana.",
 'readonly' => 'Hifadhidata imefungika',
 'enterlockreason' => 'Ingiza sababu za kufunga, pamoja na makisio yake lini itafunguliwa',
@@ -530,10 +527,13 @@ Unaweza kuendelea kutumia {{SITENAME}} bila kutaja jina lako, au unaweza <span c
 'yourname' => 'Jina la mtumiaji:',
 'userlogin-yourname' => 'Jina la mtumiaji',
 'userlogin-yourname-ph' => 'Weka jina lako la mtumiaji',
+'createacct-another-username-ph' => 'Weka jina la mtumiaji',
 'yourpassword' => 'Neno la siri:',
 'userlogin-yourpassword' => 'Neno la siri',
 'userlogin-yourpassword-ph' => 'Weka neno lako la siri',
+'createacct-yourpassword-ph' => 'Weka neno la siri',
 'yourpasswordagain' => 'Andika tena neno la siri',
+'createacct-yourpasswordagain-ph' => 'Weka neno la siri tena',
 'remembermypassword' => 'Kumbuka kuingia kwangu katika kivinjari hiki (kwa muda usiozidi {{PLURAL:$1|siku}} $1)',
 'yourdomainname' => 'Tovuti yako:',
 'password-change-forbidden' => 'Hauwezi kubadili nywila katika Wiki hii.',
@@ -554,8 +554,12 @@ Unaweza kuendelea kutumia {{SITENAME}} bila kutaja jina lako, au unaweza <span c
 'gotaccount' => "Unayo akaunti tayari? '''$1'''",
 'gotaccountlink' => 'Ingia',
 'userlogin-resetlink' => 'Umesahau maelezo yako ya kuingia?',
+'createacct-emailrequired' => 'Anwani ya barua pepe',
+'createacct-email-ph' => 'Weka anwani yako ya barua pepe',
+'createacct-another-email-ph' => 'Weka anwani ya barua pepe',
 'createaccountmail' => 'Kwa barua pepe',
 'createaccountreason' => 'Sababu:',
+'createacct-reason' => 'Sababu',
 'badretype' => 'Maneno uliyoyaandika ni tofauti.',
 'userexists' => 'Jina la mtumiaji uliloingiza tayari linatumika.
 Tafadhali chagua jina lingine.',
@@ -993,8 +997,8 @@ Wakabidhi wengine wa {{SITENAME}} bado wataweza kuliona lile lililofichwa pamoja
 'revdelete-hide-user' => 'Ficha jina la mhariri/anwani ya IP ya mhariri',
 'revdelete-hide-restricted' => 'Wakabidhi (vilevile wengine) wasiweze kuona data',
 'revdelete-radio-same' => '(isibadilishwe)',
-'revdelete-radio-set' => 'Ndiyo',
-'revdelete-radio-unset' => 'Hapana',
+'revdelete-radio-set' => 'Halionekani',
+'revdelete-radio-unset' => 'Linaonekana',
 'revdelete-suppress' => 'Wakabidhi (vilevile wengine) wasiweze kuona data',
 'revdelete-unsuppress' => 'Uzuio wa kuona mapitio uondolewe, mapitio yanaporudishwa',
 'revdelete-log' => 'Sababu:',
@@ -1128,7 +1132,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'preferences' => 'Mapendekezo',
 'mypreferences' => 'Mapendekezo',
 'prefs-edits' => 'Idadi ya marekebisho:',
-'prefsnologin' => 'Hujaingia',
 'changepassword' => 'Badilisha neno la siri',
 'prefs-skin' => 'Umbo',
 'skin-preview' => 'Hakiki',
@@ -1226,6 +1229,7 @@ Taarifa hii itakuwa wazi.',
 'prefs-dateformat' => 'Jinsi inayoandikwa tarehe',
 'prefs-timeoffset' => 'Kuweka saa tofauti na saa ya seva',
 'prefs-advancedediting' => 'Hitiari za hali ya juu',
+'prefs-preview' => 'Hakiki',
 'prefs-advancedrc' => 'Hitiari za hali ya juu',
 'prefs-advancedrendering' => 'Hitiari za hali ya juu',
 'prefs-advancedsearchoptions' => 'Hitiari za hali ya juu',
@@ -1377,6 +1381,7 @@ Taarifa hii itakuwa wazi.',
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|badiliko|mabadiliko}} $1',
+'enhancedrc-history' => 'historia',
 'recentchanges' => 'Mabadiliko ya karibuni',
 'recentchanges-legend' => "Machaguo ya 'mabadaliko ya karibuni'",
 'recentchanges-summary' => 'Orodha ya mabadilisho yaliyofanywa katika {{SITENAME}} siku zilizopita.',
@@ -1385,6 +1390,7 @@ Taarifa hii itakuwa wazi.',
 'recentchanges-label-minor' => 'Hili ni badiliko dogo',
 'recentchanges-label-bot' => 'Sahihisho hili lilitekelezwa na bot',
 'recentchanges-label-unpatrolled' => 'Haririo hili bado halijafanyiwa doria',
+'recentchanges-legend-newpage' => '$1 - ukurasa mpya',
 'rcnote' => "{{PLURAL:$1|Linalofuata ni badiliko '''1'''|Yanayofuata ni mabadiliko '''$1''' ya mwisho}} kutoka katika {{PLURAL:$2|siku iliyopita|siku '''$2''' zilizopita}}, hadi saa $5, tarehe $4.",
 'rcnotefrom' => "Hapo chini yaonekana mabadiliko tangu '''$2''' (tunaonyesha hadi '''$1''').",
 'rclistfrom' => 'Onyesha mabadiliko mapya kuanzia $1',
@@ -1406,7 +1412,7 @@ Taarifa hii itakuwa wazi.',
 'rc_categories' => 'Chagua jamii zingine (uzitenge na kigawaji hiki "|")',
 'rc_categories_any' => 'Yoyote',
 'newsectionsummary' => '/* $1 */ mjadala mpya',
-'rc-enhanced-expand' => 'Onyesha maelezo mengine (inahitaji JavaScript)',
+'rc-enhanced-expand' => 'Onyesha maelezo',
 'rc-enhanced-hide' => 'Ficha maelezo mengine',
 'rc-old-title' => 'ilitengenezwa hapo awali na "$1"',
 
@@ -1722,6 +1728,9 @@ Kumbuka kuhakikisha kwamba hakuna viungo vingine vinavyoelekea kigezo fulani kab
 'randompage' => 'Ukurasa wa bahati',
 'randompage-nopages' => 'Hakuna kurasa katika {{PLURAL:$2|eneo la wiki lifuatalo|maeneo ya wiki yafuatayo}}: $1.',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Nenda',
+
 # Random redirect
 'randomredirect' => 'Elekezo la bahati',
 'randomredirect-nopages' => 'Hakuna maelekezo katika eneo la wiki la "$1".',
@@ -1747,6 +1756,8 @@ Kumbuka kuhakikisha kwamba hakuna viungo vingine vinavyoelekea kigezo fulani kab
 'statistics-users-active-desc' => 'Watumiaji waliofanya kazi katika siku {{PLURAL:$1|iliyopita|$1 zilizopita}}',
 'statistics-mostpopular' => 'Kurasa zinazotazamwa sana',
 
+'pageswithprop-submit' => 'Nenda',
+
 'doubleredirects' => 'Maelekezo mawilimawili',
 'doubleredirectstext' => 'Ukurasa huu unaorodhesha kurasa zinazoelekeza kurasa zingine za kuelekeza.
 Katika kila mstari kuna viungo vinavyokwenda katika kurasa za kuelekeza zote mbili, pamoja na ukurasa wa mwishilio mwa elekezo la pili. Ukurasa huu wa mwishilio huwa ni ukurasa unaostahili kuelekezwa kutoka kwa ukurasa wa kuelekeza wa kwanza. Vitu <del>vilivyokatwa kwa mstari</del> vimeshatatuliwa.',
@@ -2590,7 +2601,7 @@ Ukilitekeleza faili, mashine yako huenda ikawa matatani.',
 'file-info-size-pages' => 'Piseli $1 × $2, ukubwa wa faili: $3, aina ya MIME: $4, {{PLURAL:$5|ukurasa|kurasa}} $5',
 'file-nohires' => 'Hakuna saizi kubwa zaidi.',
 'svg-long-desc' => 'faili la SVG, husemwa kuwa piseli $1 × $2, saizi ya faili: $3',
-'show-big-image' => 'Ukubwa wa awali',
+'show-big-image' => 'Faili lenyewe',
 'show-big-image-preview' => 'Ukubwa wa hakikisho: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Ukubwa mwingine|Ukubwa zingine}}: $1.',
 'show-big-image-size' => 'piseli $1 × $2',
@@ -3168,4 +3179,8 @@ Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public Lic
 'duration-years' => '{{PLURAL:$1|mwaka|miaka}} $1',
 'duration-centuries' => '{{PLURAL:$1|karne}} $1',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Sawa',
+'expand_templates_preview' => 'Hakiki',
+
 );
index b08878d..e5c7f79 100644 (file)
@@ -333,12 +333,10 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Zdrzůdło "$1"',
 'youhavenewmessages' => 'Mosz $1 ($2).',
-'newmessageslink' => 'nowe powjadůmjyńa',
-'newmessagesdifflink' => 'uostatńe pomjyńyńy',
 'youhavenewmessagesfromusers' => 'Mosz $1 uod {{PLURAL:$3|inszygo używocza|$3 używoczy}} ($2).',
 'youhavenewmessagesmanyusers' => 'Mosz $1 uod wjelu używoczy ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|jydno nowina|nowiny}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|uostatńe sprowjyńe|uostatńe sprowjyńa}}',
+'newmessageslinkplural' => '{{PLURAL:$1|jedno nowina|999=nowiny}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|uostatńe sprowjyńe|999=uostatńe sprowjyńa}}',
 'youhavenewmessagesmulti' => 'Mosz nowe powjadůmjyńa: $1',
 'editsection' => 'Sprowjej',
 'editold' => 'sprowjej',
@@ -456,7 +454,7 @@ Powůd zawarćo: ''$2''.",
 Administrator kery zawarł wćepał kůmyntorz: "$3".',
 'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
 'exception-nologin' => 'Ńy jest żeś zalogůwany',
-'exception-nologin-text' => 'Ta zajta abo akcyja wymogo byćo zalogůwanym na tyj wiki.',
+'exception-nologin-text' => 'Prosza [[Special:Userlogin|zaloguj śe]] coby mjeć mogebność przejśćo do tyj zajty abo akcyji.',
 
 # Virus scanner
 'virus-badscanner' => "Felerno konfiguracyjo – ńyznany skaner antywirusowy ''$1''",
@@ -739,7 +737,9 @@ Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśćach inkszyc
 'previewnote' => "'''To je ino podglůnd - artikel jeszcze ńy je spamjyntany!'''",
 'continue-editing' => 'Przyndź do pola sprowjańo',
 'previewconflict' => 'Wersyjo podglůndano uodnośi śe do tekstu ze pola edycyje na wjyrchu. Tak bydźe wyglůndać zajta jeli zdecydujesz śe jům naszkryflać.',
-'session_fail_preview' => "'''Przepraszomy! Serwer ńy może przetworzić tygo sprowjyńo skuli utraty danych ze sesyji. Sprůbuj jeszcze roz. Kejby to ńy pomogło - wyloguj śe a zalogůj uod nowa.'''",
+'session_fail_preview' => "'''Pozůr! Serwer ńy może przetworzić tyj edycyji, beztuż co dane sesyji uostoły utracůne.
+Poprůbuj jeszcze roz.
+Eli to tyż ńy do podpory – [[Special:UserLogout|wyloguj śe]] a zaloguj jeszcze roz.'''",
 'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
 
 ''Jako iže na {{GRAMMAR:MS.lp|{{SITENAME}}}} wuůnčono zostoua uopcyjo \"raw HTML\", podglůnd zostou schrůńony coby zabezpječyć před atakami JavaScript.''
@@ -751,11 +751,12 @@ Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśćach inkszyc
 'editingsection' => 'Sprowjosz $1 (sekcyjo)',
 'editingcomment' => 'Sprowjosz "$1" (nowy kůmyntorz)',
 'editconflict' => 'Kůnflikt sprowjyń: $1',
-'explainconflict' => "Ktoś zdůnžyu wćepać swoja wersyjo artikla ńim žeś naškryflou sprowjyńy.
-We polu edycyji na wjyrchu moš tekst zajty aktůalńy naškryflany w baźe danych.
-Twoje pomjyńańo sům we polu edycyji půnižyj.
-By wćepać swoje pomjyńańo muśiš pomjyńać tekst w polu na wjyrchu.
-'''Tylko''' tekst z pola na wjyrchu bydźe naškryflany we baźe jak wciśńeš \"{{int:savearticle}}\".",
+'explainconflict' => "Ftoś zdůnżůł wćepać swoja wersyjo artikla ńim żeś naszkryflou sprowjyńy.
+We polu edycyji na wjyrchu mosz tekst zajty aktuelńy naszkryflany we baźe danych.
+Twoje pomjyńańo sům we polu edycyji půńiżyj.
+By wćepać swoje pomjyńańo muśisz pomjyńać tekst we polu na wjyrchu.
+'''Ino''' tekst ze pola na wjyrchu bydźe naszkryflany we baźe jak 
+wciśńesz knefel \"{{int:savearticle}}\".",
 'yourtext' => 'Twůj tekst',
 'storedversion' => 'Naszkryflano wersyjo',
 'nonunicodebrowser' => "'''Pozůr! Twoja přeglůndorka ńy umje poprowńy rozpoznować kodowańo UTF-8 (Unicode). Bestož wšyjske znoki, kerych Twoja přeglůndorka ńy umje rozpoznować, zamjeńůno na jejich kody heksadecymalne.'''",
@@ -777,25 +778,25 @@ Uostotńy wpis w rejerze je ńyżej.",
 'cascadeprotectedwarning' => "'''Dej pozůr:''' Ta zajta zostoła zawarto a ino użytkowńicy ze uprawńyńami admińistratora mogům jům sprowjać. Zajta ta je podpjynto pod {{PLURAL:$1|nastympujůnco zajta, kero zostoła zawarto|nastympujůncych zajtach, kere zostouy zawarte}} ze załůnczonům uopcjům dźedźiczyńo:",
 'titleprotectedwarning' => "'''Dej pozůr: Zajta uo tym titlu zostoła zawarto a ino [[Special:ListGroupRights|ńykerzi użytkowńicy]] mogům jům wćepać.'''
 Uostatńy wpis z rejera je ńyżej.",
-'templatesused' => '{{PLURAL:$1|Szablon|Szablůny}} użyte na tyj zajće:',
-'templatesusedpreview' => '{{PLURAL:$1|Szablon|Szablůny}} użyte na tyj zajće:',
-'templatesusedsection' => '{{PLURAL:$1|Szablon|Szablůny}} użyte w tyj tajli:',
+'templatesused' => '{{PLURAL:$1|Muster|Mustry}} użyte na tyj zajće:',
+'templatesusedpreview' => '{{PLURAL:$1|Muster|Mustry}} użyte na tyj zajće:',
+'templatesusedsection' => '{{PLURAL:$1|Szablon|Szablůny}} użyte we tyj tajli:',
 'template-protected' => '(zawrzity uod sprowjańo)',
 'template-semiprotected' => '(tajlowo zawarte)',
-'hiddencategories' => 'Ta zajta je {{PLURAL:$1|w jednyj schrůńunyj katygoryji|we $1 schrůńunych katygoryjach}}:',
+'hiddencategories' => 'Ta zajta je {{PLURAL:$1|we jednyj schrůńunyj katygoryji|we $1 schrůńunych katygoryjach}}:',
 'nocreatetext' => 'Na {{GRAMMAR:MS.lp|{{SITENAME}}}} twořyńy nowych zajtůw uograńičůno.
 Možeš sprowjać te co juž sům, abo [[Special:UserLogin|zalogować śe, abo zauožyć konto]].',
-'nocreate-loggedin' => 'Ńy moš uprowńyń do twořyńo nowych zajtůw.',
+'nocreate-loggedin' => 'Ńy mosz uprowńyń do tworzyńo nowych zajtůw.',
 'sectioneditnotsupported-title' => 'Sprowjańy tajli ńymogebne',
 'sectioneditnotsupported-text' => 'Sprowjańy tajli ńymogebne na tyj zajće.',
 'permissionserrors' => 'Felerne uprawńyńo',
-'permissionserrorstext' => 'Ńy moš uprowńyń do takij akcyje {{PLURAL:$1|skuli tego, co:|bestůž, co:}}',
+'permissionserrorstext' => 'Ńy mosz uprowńyń do takij akcyje {{PLURAL:$1|skuli tego, co:|bestůż, co:}}',
 'permissionserrorstext-withaction' => 'Ńy mogesz $2, ze {{PLURAL:$1|takigo powodu|takich powodůw}}:',
 'recreate-moveddeleted-warn' => "'''ůostrzeżyńy: Wćepujesz samo zajta, kery bůu poprzedńo wyćepany.'''
 
 Zastanůw śe, czy powinno śe go sam wćepywać.
 Rejer wyćepań tyj zajty je podany půńiżej, cobyś mioł wygoda:",
-'moveddeleted-notice' => 'Ta zajta zostoua wyćepńynto. Rejer wyćepań tyj zajty je pokozany půńižyj.',
+'moveddeleted-notice' => 'Ta zajta zostoła wyćepńynto. Rejer wyćepań tyj zajty je pokozany půńiżyj.',
 'log-fulllog' => 'Ukoż rejer',
 'edit-hook-aborted' => 'Sprowjyńy štopńynte skiž hoka.
 Ńy je wjadůme pů jakymu.',
@@ -893,8 +894,8 @@ Inkśi admińistratorzi {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
 'revdelete-hide-user' => 'Schrůń mjano użytkowńika/adres IP',
 'revdelete-hide-restricted' => 'Schrůń informacyje zarůwno przed admińistratorůma jak i przed inkszymi',
 'revdelete-radio-same' => '(byz pomjyń)',
-'revdelete-radio-set' => 'Ja',
-'revdelete-radio-unset' => 'Ńy',
+'revdelete-radio-set' => 'Zakryty',
+'revdelete-radio-unset' => 'Widoczny',
 'revdelete-suppress' => 'Schrůń informacyje zarůwno před admińistratorůma jak i před inkšymi',
 'revdelete-unsuppress' => 'Usůń uograńičyńo lo wćepanej nazod historyje pomjyńań',
 'revdelete-log' => 'Czymu:',
@@ -1034,7 +1035,6 @@ $1',
 'preferences' => 'Preferyncyje',
 'mypreferences' => 'Preferyncyje',
 'prefs-edits' => 'Liczba sprowjyń:',
-'prefsnologin' => 'Ńy ježeś zalůgowany',
 'changepassword' => 'Zmjana hasua',
 'prefs-skin' => 'Skůrka',
 'skin-preview' => 'podglůnd',
@@ -1097,7 +1097,7 @@ $1',
 'prefs-files' => 'Pliki',
 'youremail' => 'E-brif:',
 'username' => '{{GENDER:$1|Mjano używocza}}:',
-'uid' => 'ID używocza:',
+'uid' => '{{GENDER:$1|ID używocza}}:',
 'prefs-memberingroups' => 'Należy do {{PLURAL:$1|grupy|grup:}}',
 'prefs-registration' => 'Czas twůrzyńa kůnta:',
 'yourrealname' => 'Prawdźiwe mjano',
@@ -2365,7 +2365,7 @@ $1',
 'file-info-size' => '$1 × $2 pikselůw, wjelgość plika: $3, zorta MIME: $4',
 'file-nohires' => 'Wjynksze wymjyry ńy sům dostympne',
 'svg-long-desc' => 'Plik SVG, nůminalńe $1 × $2 pixelůw, rozmior plika: $3',
-'show-big-image' => 'Pełne wymjyry',
+'show-big-image' => 'Pjyrwy wymjor',
 
 # Special:NewFiles
 'newimages' => 'Galerjo nowych uobrozkůw',
@@ -2860,4 +2860,7 @@ Možeš tyž [[Special:EditWatchlist|užyć standardowygo edytora]].',
 'revdelete-unrestricted' => 'wycofej uograničyńo do administratorůw',
 'rightsnone' => 'podstawowo',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK',
+
 );
index 290a5f8..c2d9245 100644 (file)
@@ -360,8 +360,6 @@ $1',
 'ok' => 'சரி',
 'retrievedfrom' => '"$1" இருந்து மீள்விக்கப்பட்டது',
 'youhavenewmessages' => 'உங்களுக்குப் $1 உள்ளன ($2).',
-'newmessageslink' => 'புதிய செய்திகள்',
-'newmessagesdifflink' => 'கடைசி மாற்றம்',
 'youhavenewmessagesfromusers' => 'உங்களுக்கு $1 {{PLURAL:$3|வேறொரு பயனரிடம்|$3 பயனர்களிடம்}} இருந்து உள்ளது ($2).',
 'youhavenewmessagesmanyusers' => 'உங்களுக்கு பல பயனர்களிடமிருந்து $1 பதிய செய்திகள்  உள்ளன ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ஒரு புதிய செய்தி|புதிய செய்திகள்}}',
@@ -1154,7 +1152,6 @@ $1",
 'preferences' => 'விருப்பங்கள்',
 'mypreferences' => 'விருப்பத்தேர்வுகள்',
 'prefs-edits' => 'தொகுப்புகளின் எண்ணிக்கை:',
-'prefsnologin' => 'புகுபதிகை செய்யப்படவில்லை',
 'changepassword' => 'கடவுச்சொல்லை மாற்று',
 'prefs-skin' => 'முகப்புறை',
 'skin-preview' => 'முன்தோற்றம்',
@@ -1437,6 +1434,7 @@ $1",
 'recentchanges-label-minor' => 'இது ஒரு சிறு தொகுப்பு',
 'recentchanges-label-bot' => 'இந்த தொகுப்பானது ஒரு தானியங்கியால் செய்யப்பட்டதாகும்',
 'recentchanges-label-unpatrolled' => 'இந்த  தொகுப்பு  இன்னும் ரோந்திடப்படவில்லை',
+'recentchanges-legend-newpage' => '$1 - புதிய பக்கம்',
 'rcnote' => "கீழே காணப்படுவது $4 ஆம் தேதி $5 மணிக்கு் உள்ளபடி கடைசி {{PLURAL:$2|24 மணிகளில்|'''$2''' நாட்களில்}} செய்யப்பட்ட {{PLURAL:$1|'''ஒரு''' மாற்றம்|'''$1''' கடைசி மாற்றங்கள்}} ஆகும்.",
 'rcnotefrom' => "கீழே காணப்படுவது '''$2''' இலிருந்து செய்யப்பட்ட மாற்றங்களாகும் ('''$1''' வரைக் காட்டப்பட்டுள்ளது).",
 'rclistfrom' => '$1 தொடக்கம் செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்',
@@ -3694,4 +3692,12 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|நூற்றாண்டு|நூற்றாண்டுகள்}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ஆயிரம் ஆண்டு|ஆயிரம் ஆண்டுகள்}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'வார்ப்புருக்களை விரிவாக்கு',
+'expand_templates_input' => 'உள்ளீட்டு உரை:',
+'expand_templates_output' => 'முடிவுகள்',
+'expand_templates_ok' => 'ஆம்',
+'expand_templates_remove_comments' => 'கருத்துரைகளை நீக்கு',
+'expand_templates_preview' => 'முன்தோற்றம்',
+
 );
index f36a2f5..5232b6e 100644 (file)
@@ -261,8 +261,6 @@ $messages = array(
 'ok' => 'ಸರಿ',
 'retrievedfrom' => '"$1" ರ್ದ್ ದೆತ್ತಿನಂಚಿನ',
 'youhavenewmessages' => 'ಇರೆಗ್ $1 ಉಂಡು ($2).',
-'newmessageslink' => 'ಪೊಸ ಸಂದೇಶಲು',
-'newmessagesdifflink' => 'ಕಡೆತ ಬದಲಾವಣೆ',
 'youhavenewmessagesmulti' => '$1 ಡ್ ಇರೆಗ್ ಪೊಸ ಸಂದೇಶೊಲು ಉಂಡು',
 'editsection' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
 'editold' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
index 65ebbba..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( 'ఎగుమతి' ),
@@ -414,8 +412,6 @@ $1',
 'ok' => 'సరే',
 'retrievedfrom' => '"$1" నుండి వెలికితీశారు',
 'youhavenewmessages' => 'మీకు $1 ఉన్నాయి ($2).',
-'newmessageslink' => 'కొత్త సందేశాలు',
-'newmessagesdifflink' => 'చివరి మార్పు',
 'youhavenewmessagesfromusers' => 'మీకు {{PLURAL:$3|మరో వాడుకరి|$3 వాడుకరుల}} నుండి $1 ($2).',
 'youhavenewmessagesmanyusers' => 'మీకు చాలా వాడుకరుల నుండి $1 ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ఒక కొత్త సందేశం వచ్చింది|కొత్త సందేశాలు ఉన్నాయి}}',
@@ -1187,7 +1183,6 @@ $1",
 'preferences' => 'అభిరుచులు',
 'mypreferences' => 'అభిరుచులు',
 'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
-'prefsnologin' => 'లాగిన్‌ అయిలేరు',
 'changepassword' => 'సంకేతపదాన్ని మార్చండి',
 'prefs-skin' => 'అలంకారం',
 'skin-preview' => 'మునుజూపు/సరిచూడు',
@@ -1459,6 +1454,7 @@ $1",
 'recentchanges-label-minor' => 'ఇది ఒక చిన్న మార్పు',
 'recentchanges-label-bot' => 'ఈ మార్పును ఒక బాటు చేసింది',
 'recentchanges-label-unpatrolled' => 'ఈ దిద్దుబాటు మీద నిఘా లేదు',
+'recentchanges-legend-newpage' => '$1 - కొత్త పేజీ',
 'rcnote' => "$4 నాడు $5 సమయానికి, గత {{PLURAL:$2|ఒక్క రోజులో|'''$2''' రోజులలో}} చేసిన చివరి {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.",
 'rcnotefrom' => '<b>$2</b> నుండి జరిగిన మార్పులు (<b>$1</b> వరకు చూపబడ్డాయి).',
 'rclistfrom' => '$1 నుండి జరిగిన మార్పులను చూపించు',
@@ -3599,4 +3595,16 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|శతాబ్దం|శతాబ్దాలు}}',
 'duration-millennia' => '$1 {{PLURAL:$1|సహస్రాబ్దం|సహస్రాబ్దాలు}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'మూసలను విస్తరించు',
+'expand_templates_intro' => 'ఈ ప్రత్యేక పేజీ మీరిచ్చిన మూసలను పూర్తిగా విస్తరించి, చూపిస్తుంది. ఇది <nowiki>{{</nowiki>#language:...}} వంటి పార్సరు ఫంక్షన్లను, <nowiki>{{</nowiki>CURRENTDAY}} వంటి చరరాశులను(వేరియబుల్) కూడా విస్తరిస్తుంది &mdash; నిజానికి జమిలి(మీసాల) బ్రాకెట్లలో ఉన్న ప్రతీదాన్నీ ఇది విస్తరిస్తుంది. మీడియావికీ నుండి సంబంధిత పార్సరు స్టేజిని పిలిచి ఇది ఈ పనిని సాధిస్తుంది.',
+'expand_templates_title' => '{{FULLPAGENAME}} మొదలగు వాటి కొరకు సందర్భ శీర్షిక:',
+'expand_templates_input' => 'విస్తరించవలసిన పాఠ్యం:',
+'expand_templates_output' => 'ఫలితం',
+'expand_templates_xml_output' => 'XML ఔట్&zwnj;పుట్',
+'expand_templates_ok' => 'సరే',
+'expand_templates_remove_comments' => 'వ్యాఖ్యలను తొలగించు',
+'expand_templates_generate_xml' => 'XML పార్స్ ట్రీని చూపించు',
+'expand_templates_preview' => 'మునుజూపు',
+
 );
index f1e717e..2df3f10 100644 (file)
@@ -256,8 +256,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Husi "$1"',
 'youhavenewmessages' => 'Ó iha $1 ($2).',
-'newmessageslink' => 'mensajen foun',
-'newmessagesdifflink' => 'diferensa foun liu hotu',
 'youhavenewmessagesmulti' => 'Ó iha mensajen foun sira iha $1',
 'editsection' => 'edita',
 'editold' => 'edita',
@@ -992,4 +990,7 @@ Ligasaun seluk iha liña - ne'e pájina sira iha ne'ebé bele inklui imajen aat.
 # Search suggestions
 'searchsuggest-search' => 'Buka',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK',
+
 );
index c4610a0..ee1eefa 100644 (file)
@@ -322,8 +322,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Баргирифта аз "$1"',
 'youhavenewmessages' => 'Шумо $1 ($2) доред.',
-'newmessageslink' => 'пайёмҳои нав',
-'newmessagesdifflink' => 'тағйироти охирин',
 'youhavenewmessagesmulti' => 'Шумо номаҳои нав дар $1 доред.',
 'editsection' => 'вироиш',
 'editold' => 'вироиш',
@@ -851,7 +849,6 @@ $1',
 'preferences' => 'Тарҷиҳот',
 'mypreferences' => 'Танзимот',
 'prefs-edits' => 'Шумораи вироишҳо:',
-'prefsnologin' => 'Ба систем ворид нашудаед',
 'changepassword' => 'Иваз намудани калимаи убур',
 'prefs-skin' => 'Пӯст',
 'skin-preview' => 'Пешнамоиш',
@@ -2519,4 +2516,19 @@ $5
 'revdelete-unrestricted' => 'маҳдудиятҳо аз мудирон бардошта шуданд',
 'rightsnone' => '(ҳеҷ)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Бастдодани шаблонҳо',
+'expand_templates_intro' => 'Ин саҳифаи вижа матнеро дарёфт карда ва тамоми шаблонҳои ба кор рафта дар онро ба таври бозгаште баст медиҳад. Ҳамчунин тобеҳои таҷзеҳ
+<nowiki>{{</nowiki>#language:...}}, ва мутағйирҳое чун
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;ро ҳам баст медиҳад – дар воқеъ тақрибан ҳар чиро ки дохили ду акулот бошад.
+Ин кор бо садо задани марҳилаи таҷзеҳи марбут дар худи МедиаВики сурат мегирад.',
+'expand_templates_title' => 'Унвони мавзӯъ, барои {{FULLPAGENAME}} ва ғайра.:',
+'expand_templates_input' => 'Матни вурудӣ:',
+'expand_templates_output' => 'Натиҷа',
+'expand_templates_xml_output' => 'Хуруҷӣ XML',
+'expand_templates_ok' => 'Таъйид',
+'expand_templates_remove_comments' => 'Ҳазфи тавзеҳот',
+'expand_templates_generate_xml' => 'Намоиши дарахти таҷзеҳи XML',
+'expand_templates_preview' => 'Пешнамоиш',
+
 );
index e7f97ae..389bf17 100644 (file)
@@ -263,8 +263,6 @@ $1",
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Bargirifta az "$1"',
 'youhavenewmessages' => 'Şumo $1 ($2) dored.',
-'newmessageslink' => 'pajjomhoi nav',
-'newmessagesdifflink' => 'taƣjiroti oxirin',
 'youhavenewmessagesmulti' => 'Şumo nomahoi nav dar $1 dored.',
 'editsection' => 'viroiş',
 'editold' => 'viroiş',
@@ -725,7 +723,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'preferences' => 'Tarçihot',
 'mypreferences' => 'Tarçihoti man',
 'prefs-edits' => 'Şumorai viroişho:',
-'prefsnologin' => 'Ba sistem vorid naşudaed',
 'changepassword' => 'Ivaz namudani kalimai ubur',
 'prefs-skin' => 'Pūst',
 'skin-preview' => 'Peşnamoiş',
@@ -2297,4 +2294,19 @@ Tavaççūh kuned, ki şumo metavoned az [[Special:EditWatchlist|viroişgari sta
 'revdelete-unrestricted' => 'mahdudijatho az mudiron bardoşta şudand',
 'rightsnone' => '(heç)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Bastdodani şablonho',
+'expand_templates_intro' => "In sahifai viƶa matnero darjoft karda va tamomi şablonhoi ba kor rafta dar onro ba tavri bozgaşte bast medihad. Hamcunin tobehoi taçzeh
+<nowiki>{{</nowiki>#language:...}}, va mutaƣjirhoe cun
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;ro ham bast medihad – dar voqe' taqriban har ciro ki doxili du akulot boşad.
+In kor bo sado zadani marhilai taçzehi marbut dar xudi MediaViki surat megirad.",
+'expand_templates_title' => "Unvoni mavzū', baroi {{FULLPAGENAME}} va ƣajra.:",
+'expand_templates_input' => 'Matni vurudī:',
+'expand_templates_output' => 'Natiça',
+'expand_templates_xml_output' => 'Xuruçī XML',
+'expand_templates_ok' => "Ta'jid",
+'expand_templates_remove_comments' => 'Hazfi tavzehot',
+'expand_templates_generate_xml' => 'Namoişi daraxti taçzehi XML',
+'expand_templates_preview' => 'Peşnamoiş',
+
 );
index 87fd1ff..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( 'อีเมลผู้ใช้' ),
@@ -471,8 +469,6 @@ $1',
 'ok' => 'ตกลง',
 'retrievedfrom' => 'รับข้อมูลจาก "$1"',
 'youhavenewmessages' => 'คุณมี$1 ($2)',
-'newmessageslink' => 'ข้อความใหม่',
-'newmessagesdifflink' => 'การเปลี่ยนแปลงล่าสุด',
 'youhavenewmessagesfromusers' => 'คุณมี $1จาก{{PLURAL:$3|ผู้ใช้คนอื่น|ผู้ใช้ $3 คน}} ($2)',
 'youhavenewmessagesmanyusers' => 'คุณมี $1จากผู้ใช้หลายคน ($2)',
 'newmessageslinkplural' => '$1 ข้อความใหม่',
@@ -1292,7 +1288,6 @@ $1",
 'preferences' => 'ตั้งค่าส่วนตัว',
 'mypreferences' => 'การตั้งค่า',
 'prefs-edits' => 'จำนวนการแก้ไข:',
-'prefsnologin' => 'ไม่ได้ล็อกอิน',
 'changepassword' => 'เปลี่ยนรหัสผ่าน',
 'prefs-skin' => 'หน้าตา',
 'skin-preview' => 'แสดงตัวอย่าง',
@@ -1589,6 +1584,7 @@ $1",
 'recentchanges-label-minor' => 'เป็นการแก้ไขเล็กน้อย',
 'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
 'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
+'recentchanges-legend-newpage' => '$1 - หน้าใหม่',
 'rcnote' => "รายการด้านล่างคือการแก้ไข {{PLURAL:$1|'''1''' รายการ|ล่าสุด '''$1''' รายการ}} ในช่วง '''$2''' วันที่ผ่านมา จนถึง $5, $4",
 'rcnotefrom' => "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ '''$2''' (มากสุด '''$1''' รายการ)",
 'rclistfrom' => 'แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $1',
@@ -3839,4 +3835,8 @@ $5
 'duration-centuries' => '$1 ศตวรรษ',
 'duration-millennia' => '$1 สหัสวรรษ',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'ตกลง',
+'expand_templates_preview' => 'ตัวอย่างผลแสดง',
+
 );
index 03eac79..a7a22fd 100644 (file)
@@ -296,8 +296,6 @@ Bu sahypany ulanmak üçin MediaWikiniň $1 wersiýasy talap edilýär. [[Specia
 'ok' => 'OK',
 'retrievedfrom' => '"$1" adresinden alyndy.',
 'youhavenewmessages' => 'Size $1 bar. ($2)',
-'newmessageslink' => 'täze habar',
-'newmessagesdifflink' => 'soňky üýtgeşme',
 'youhavenewmessagesmulti' => 'Size $1-de täze habar bar.',
 'editsection' => 'redaktirle',
 'editold' => 'redaktirle',
@@ -1000,7 +998,6 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'preferences' => 'Ileri tutmalar',
 'mypreferences' => 'Ileri tutmalar',
 'prefs-edits' => 'Özgerdiş sany:',
-'prefsnologin' => 'Sessiýa açmansyňyz',
 'changepassword' => 'Paroly üýtget',
 'prefs-skin' => 'Bezeg',
 'skin-preview' => 'Deslapky syn',
@@ -1260,6 +1257,7 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 'recentchanges-label-minor' => 'Bu bir ujypsyzja özgerdiş',
 'recentchanges-label-bot' => 'Bu özgerdiş bir bot tarapyndan amala aşyryldy',
 'recentchanges-label-unpatrolled' => 'Bu özgerdişe heniz patrullyk edilmändir',
+'recentchanges-legend-newpage' => '$1 - täze sahypa',
 'rcnote' => "Aşakda $5, $4 senesinden başlap, soňky {{PLURAL:$2|1 günde|'''$2''' günde}} edilen {{PLURAL:$1|'''1''' üýtgeşme|'''$1''' üýtgeşme}} görkezilýär.",
 'rcnotefrom' => '<b>$2</b> senesinden bäri edilen özgerdişler aşakda görkezilýär (<b>$1</b> sanysyna çenli).',
 'rclistfrom' => '$1 senesinden bäri edilen özgerdişleri görkez',
@@ -3107,4 +3105,21 @@ Bu programmanyň ýany bilen siz [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General P
 'searchsuggest-search' => 'Gözleg',
 'searchsuggest-containing' => 'öz içine alýar...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Şablonlary giňelt',
+'expand_templates_intro' => 'Bu ýörite sahypa birazajyk tekst alýar we onuň içindäki ähli şablonlary rekursiw giňeldýär.
+Şeýlede şu hili parser funksiýalaryny hem giňeldýär
+<nowiki>{{</nowiki>#language:…}} we şuňa meňzeş üýtgeýänleri
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;aslynda jübüt ýaýly ähli zatlary diýen ýaly.
+Ol muny degişli parser sepgidini MediaWikiniň özünden çagyryp edýär.',
+'expand_templates_title' => 'Kontekst ady, {{FULLPAGENAME}} we ş.m. üçin:',
+'expand_templates_input' => 'Giriş teksti:',
+'expand_templates_output' => 'Netije',
+'expand_templates_xml_output' => 'XML önümi',
+'expand_templates_ok' => 'Bolýar',
+'expand_templates_remove_comments' => 'Teswirleri aýyr',
+'expand_templates_remove_nowiki' => 'Netijelerde <nowiki> teglerini bökdäň',
+'expand_templates_generate_xml' => 'XML ýygnama agajyny görkez',
+'expand_templates_preview' => 'Deslapky syn',
+
 );
index 4d45f93..43c0bb5 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' ),
@@ -422,8 +422,6 @@ Tingnan ang [[Special:Version|pahina ng bersiyon]].',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Ikinuha mula sa "$1"',
 'youhavenewmessages' => 'Mayroon kang $1 ($2).',
-'newmessageslink' => 'mga bagong mensahe',
-'newmessagesdifflink' => 'huling pagbabago',
 'youhavenewmessagesfromusers' => 'Mayroon kang $1 magmula sa {{PLURAL:$3|ibang tagagamit|$3 mga tagagamit}} ($2).',
 'youhavenewmessagesmanyusers' => 'Mayroon kang $1 magmula sa maraming mga tagagamit ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|isang bagong mensahe|bagong mga mensahe}}',
@@ -1237,7 +1235,6 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'preferences' => 'Mga kagustuhan',
 'mypreferences' => 'Mga nais',
 'prefs-edits' => 'Bilang ng mga pagbabago:',
-'prefsnologin' => 'Hindi nakalagda/nakatala',
 'changepassword' => 'Baguhin ang hudyat',
 'prefs-skin' => 'Pabalat',
 'skin-preview' => 'Unang tingin',
@@ -1517,6 +1514,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'recentchanges-label-minor' => 'Isa itong munting pagbabago',
 'recentchanges-label-bot' => 'Gawa ng isang bot ang pagbabagong ito',
 'recentchanges-label-unpatrolled' => 'Hindi pa napapatrulyahan ang pagbabagong ito',
+'recentchanges-legend-newpage' => '$1 - bagong pahina',
 'rcnote' => "Nasa ibaba {{PLURAL:$1|ang '''1''' pagbabago|ang pinakahuling '''$1''' mga pagbabago}} sa huling {{PLURAL:$2|araw|'''$2''' mga araw}}, mula noong $5, $4.",
 'rcnotefrom' => "Nasa ibaba ang mga pagbabago mula pa noong '''$2''' (ipinapakita ang magpahanggang sa '''$1''').",
 'rclistfrom' => 'Ipakita ang bagong mga pagbabago simula sa $1',
@@ -2415,7 +2413,6 @@ Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa isang talaan ng m
 $1',
 'undelete-show-file-confirm' => 'Nakatitiyak ka bang ibig mong tanawin ang isang nabura nang pagbabago ng talaksang "<nowiki>$1</nowiki>" mula $2 noong $3?',
 'undelete-show-file-submit' => 'Oo',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Ngalan-espasyo:',
@@ -4075,4 +4072,21 @@ O kaya, maaari mo ring gamitin ang pinadaling pormularyo sa ibaba.  Madadagdagan
 'duration-centuries' => '$1 {{PLURAL:$1|daantaon|mga daantaon}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyo|mga milenyo}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Palaparin (palawakin) ang mga suleras',
+'expand_templates_intro' => 'Ang natatanging pahinang ito ay kumukuha ng ilang mga teksto at nagbubuka ng lahat ng mga suleras sa loob nito sa kaparaanang tinatawag ang sarili o rekursibo.
+Nagbubuka rin ito ng mga tungkuling pambanghay na katulad ng
+<nowiki>{{</nowiki>#kung:…}}, at pabagubagong mga halagang katulad ng
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Sa katunayan, pinabubuka nito ang halos lahat ng mga bagay-bagay na may dalawang mga bantas na pansalalay o brakete.',
+'expand_templates_title' => 'Pamagat na pampaunawa (ng konteksto), para sa {{FULLPAGENAME}} atbp.:',
+'expand_templates_input' => 'Tekstong ipinasok:',
+'expand_templates_output' => 'Kinalabasan',
+'expand_templates_xml_output' => 'kinalabasang XML',
+'expand_templates_ok' => "Sige/Ayos 'yan",
+'expand_templates_remove_comments' => 'Tanggalin ang mga puna (kumento)',
+'expand_templates_remove_nowiki' => 'Pigilin ang mga tatak na <nowiki> sa loob ng resulta',
+'expand_templates_generate_xml' => 'Ipakita ang puno na pambanghay ng XML',
+'expand_templates_preview' => 'Paunang tingin',
+
 );
index 37cb810..2fabc68 100644 (file)
@@ -364,8 +364,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Сәвон "$1"',
 'youhavenewmessages' => 'Шымә сәјоне $1 ($2).',
-'newmessageslink' => 'нујә хәбон',
-'newmessagesdifflink' => 'охонә дәгиши',
 'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|охонә дәгиши|охонә дәгишон}}',
 'editsection' => 'Sərost kardey',
 'editold' => 'Сәрост кардеј',
@@ -616,7 +614,6 @@ $messages = array(
 # Preferences page
 'preferences' => 'Кукон',
 'mypreferences' => 'Кукон',
-'prefsnologin' => 'Ыштәни едаштәнијоне',
 'changepassword' => 'Пароли дәгиш кардеј',
 'skin-preview' => 'Сыфтәнә нишо дој',
 'prefs-user-pages' => 'Иштирокәкә сәһифон',
index 22a76af..e8c207a 100644 (file)
@@ -191,7 +191,6 @@ $messages = array(
 
 'ok' => 'Fai ā',
 'youhavenewmessages' => 'ʻOku ʻi ai haʻo $1 ($2).',
-'newmessageslink' => 'ngaahi tala foʻou',
 'youhavenewmessagesmulti' => 'ʻOku ʻi ai haʻo tala foʻou ʻi $1',
 'editsection' => 'fatuʻi vahe',
 'editold' => 'fatu',
@@ -443,7 +442,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 # Preferences page
 'preferences' => 'Faʻiteliha',
 'mypreferences' => 'faʻiteliha ʻaʻaku',
-'prefsnologin' => 'ʻOku ʻikai kau ki ai',
 'changepassword' => 'Liliu hoʻo leatapu',
 'prefs-skin' => 'Kili',
 'skin-preview' => 'Vakai pē',
@@ -1220,4 +1218,7 @@ Kātaki fakapapauʻi te ke fie toe fatu ʻa e kupu ni.",
 # New logging system
 'rightsnone' => '(hala)',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Fakalahiange ʻa e ngaahi sīpinga',
+
 );
index 3906b88..d15ee57 100644 (file)
@@ -254,7 +254,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Ikam long "$1"',
 'youhavenewmessages' => '$1 i kam ($2).',
-'newmessageslink' => 'Ol nupela toksave',
 'editsection' => 'senisim',
 'editold' => 'senisim',
 'viewsourceold' => 'lukim as tok',
@@ -877,4 +876,7 @@ Yu inap lukim as tok bilong em',
 # Search suggestions
 'searchsuggest-search' => 'Painim',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK',
+
 );
index 68aa71a..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' ),
@@ -362,7 +362,7 @@ $messages = array(
 'tog-extendwatchlist' => 'İzleme listesini sadece en son değil, tüm değişiklikleri göstermek için genişlet',
 'tog-usenewrc' => 'Son değişiklikler sayfasındaki ve izleme listesindeki değişiklikleri gruplandır',
 'tog-numberheadings' => 'Başlıkları otomatik numaralandır',
-'tog-showtoolbar' => 'Düzenleme yaparken araç çubuğunu göster',
+'tog-showtoolbar' => 'Düzenleme araç çubuğunu göster',
 'tog-editondblclick' => 'Çift tıklayarak sayfaları düzenle',
 'tog-editsection' => 'Bölümleri [{{int:Editsection}}] bağlantıları ile düzenlemeyi etkinleştir',
 'tog-editsectiononrightclick' => 'Bölüm başlığına sağ tıklayarak bölümleri düzenleyebilme olanağı ver',
@@ -628,8 +628,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '"$1" adresinden alındı.',
 'youhavenewmessages' => 'Yeni $1 var ($2).',
-'newmessageslink' => 'mesajınız',
-'newmessagesdifflink' => 'son değişiklik',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).',
 'youhavenewmessagesmanyusers' => 'Birçok kullanıcıdan $1 var ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
@@ -761,7 +759,8 @@ Kilitleyen hizmetlinin bu konudaki nedeni: "$3".',
 'invalidtitle-knownnamespace' => '"$2" alan adı için "$3" metni geçersiz bir başlık',
 'invalidtitle-unknownnamespace' => 'Bilinmeyen $1 ad alanı sayısı ve geçersiz "$2" başlık',
 'exception-nologin' => 'Giriş yapılmamış',
-'exception-nologin-text' => 'Bu sayfa ya da eylem için bu vikide oturum açmış olmanız gerekir.',
+'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''",
@@ -811,6 +810,9 @@ Tarayıcınızın önbelleğini temizleyinceye kadar bazı sayfalarda, oturumunu
 'userlogin-resetpassword-link' => 'Parolanızı mı unuttunuz?',
 'helplogin-url' => 'Help:Oturum açma',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Oturum açma konusunda yardım alın]]',
+'userlogin-loggedin' => 'Zaten {{GENDER:$1|$1}} olarak oturum açtınız.
+Başka bir kullanıcı olarak oturum açmak için aşağıdaki formu kullanın.',
+'userlogin-createanother' => 'Başka bir hesap oluşturun',
 'createacct-join' => 'Aşağıya bilgilerinizi girin.',
 'createacct-another-join' => 'Aşağıya yeni hesabınızın bilgilerini girin.',
 'createacct-emailrequired' => 'E-posta adresi',
@@ -866,13 +868,13 @@ Parola değişimini siz istemediyseniz veya parolanızı hatırladıysanız ve a
 'noemailcreate' => 'Geçerli bir e-posta adresi sağlamalısınız',
 'passwordsent' => '"$1" adına kayıtlı e-posta adresine yeni bir parola gönderildi. Oturumu, lütfen, iletiyi aldıktan sonra açın.',
 'blocked-mailpassword' => 'Siteye erişiminiz engellenmiş olduğundan, yeni şifre gönderilme işlemi yapılamamaktadır.',
-'eauthentsent' => 'Kaydedilen adrese onay kodu içeren bir e-posta gönderildi.
-E-postadaki yönerge uygulanıp adresin size ait olduğu onaylanmadıkça başka e-posta gönderilmeyecek.',
+'eauthentsent' => 'Belirtilen e-posta adresine onay kodu içeren bir e-posta gönderildi.
+Hesaba başka bir e-posta gönderilmeden önce, e-postadaki yönergeleri uygulayıp, hesabın gerçekten size ait olduğunu onaylamanız gerekir.',
 'throttled-mailpassword' => 'Bir parola sıfırlama e-postası son {{PLURAL:$1|bir saat|$1 saat}} içinde zaten gönderildi. Hizmeti kötüye kullanmayı önlemek için, her {{PLURAL:$1|bir saatte|$1 saatte}} sadece bir parola sıfırlama e-postası gönderilecektir.',
 'mailerror' => 'E-posta gönderim hatası: $1',
 'acct_creation_throttle_hit' => 'Sizin IP adresinizi kullanarak bu vikiyi ziyaret edenler son günde {{PLURAL:$1|1 hesap|$1 hesap}} oluşturdu, bu sayı bu zaman aralığında izin verilen azami sayıdır.
 Sonuç olarak, bu IP adresini kullanan ziyaretçiler şu anda daha fazla hesap açamazlar.',
-'emailauthenticated' => 'E-posta adresiniz $2 $3 tarihinde doğrulandı.',
+'emailauthenticated' => 'E-posta adresiniz $2 $3 tarihinde onaylandı.',
 'emailnotauthenticated' => 'E-posta adresiniz henüz onaylanmadı.
 Aşağıdaki işlevlerin hiçbiri için e-posta gönderilmeyecektir.',
 'noemailprefs' => 'Bu özelliklerin çalışması için bir e-posta adresi belirtiniz.',
@@ -1303,19 +1305,20 @@ Bir hizmetli olarak bu değişikliği görebilirsiniz; [{{fullurl:{{#Special:Log
 'revdelete-text' => "'''Silinen revizyonlar ve olaylar hala sayfa geçmişinde ve günlüklerde görünecektir, fakat içeriğin parçaları umumi olarak erişilemeyecektir.'''
 {{SITENAME}} sitesindeki diğer hizmetliler gizli içeriğe erişebilir ve ilave kısıtlamalar ayarlanmadıysa bu arayüz ile geri getirebilir.",
 'revdelete-confirm' => 'Lütfen, bunu yapmak istediğinizi , sonuçlarını anladığınızı, ve bunu [[{{MediaWiki:Policy-url}}|ilkelere]] göre yapıyor olduğunuzu onaylayın.',
-'revdelete-suppress-text' => "Saklama '''sadece''' aşağıdaki durumlar için kullanılmalıdır:
+'revdelete-suppress-text' => "Saklama '''sadece''' aşağıdaki durumlarda kullanılmalıdır:
+* Muhtemel iftira niteliğindeki bilgi
 * Uygunsuz kişisel bilgi
 *: ''ev adresleri ve telefon numaraları, sosyal güvenlik numaraları, vs.''",
 'revdelete-legend' => 'Görünürlük kısıtlamaları ayarla',
-'revdelete-hide-text' => 'Değişiklik yazısını gizle',
+'revdelete-hide-text' => 'Revizyon metni',
 'revdelete-hide-image' => 'Dosya içeriğini gizle',
 'revdelete-hide-name' => 'Olayı ve hedefi gizle',
-'revdelete-hide-comment' => 'Özeti gösterme',
-'revdelete-hide-user' => 'Değişikliği yapan kullanıcı adını/IP adresi gizle',
+'revdelete-hide-comment' => 'Değişiklik özeti',
+'revdelete-hide-user' => "Editör'ün kullanıcı adı/IP adresi",
 'revdelete-hide-restricted' => 'Verileri hizmetlilerle birlikte diğerlerinden de sakla',
 'revdelete-radio-same' => '(değiştirme)',
-'revdelete-radio-set' => 'Evet',
-'revdelete-radio-unset' => 'Hayır',
+'revdelete-radio-set' => 'Gizli',
+'revdelete-radio-unset' => 'Görünür',
 'revdelete-suppress' => 'Verileri hem diğerlerinden hem de hizmetlilerden gizle',
 'revdelete-unsuppress' => 'Geri döndürülmüş revizyonlardaki kısıtlamaları kaldır',
 'revdelete-log' => 'Neden:',
@@ -1400,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ı',
@@ -1462,12 +1469,13 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'powersearch-togglenone' => 'Hiçbiri',
 'search-external' => 'Dış arama',
 'searchdisabled' => '{{SITENAME}} sitesinde arama yapma geçici olarak durdurulmuştur. Bu arada Google kullanarak {{SITENAME}} içinde arama yapabilirsiniz. Arama sitelerinde dizinlerin biraz eski kalmış olabileceğini göz önünde bulundurunuz.',
+'search-error' => 'Arama yapılırken bir hata oluştu: $1',
 
 # Preferences page
 'preferences' => 'Tercihler',
 'mypreferences' => 'Tercihler',
 'prefs-edits' => 'Değişiklik sayısı:',
-'prefsnologin' => 'Oturum açık değil',
+'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',
@@ -1492,7 +1500,7 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'prefs-rendering' => 'Görünüm',
 'saveprefs' => 'Kaydet',
 'resetprefs' => 'Ayarları ilk durumuna getir',
-'restoreprefs' => 'Tüm varsayılan ayarları geri yükle',
+'restoreprefs' => 'Tüm varsayılan ayarları geri yükle (tüm bölümlerde)',
 'prefs-editing' => 'Sayfa yazma alanı',
 'rows' => 'Satır',
 'columns' => 'Sütun',
@@ -1578,6 +1586,7 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'prefs-displaywatchlist' => 'Görüntüleme seçenekleri',
 'prefs-tokenwatchlist' => 'Anahtar',
 'prefs-diffs' => 'Farklar',
+'prefs-help-prefershttps' => 'Bu tercih bir sonraki girişinizde etkili olacaktır.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-posta adresi geçerli görünüyor',
@@ -1601,9 +1610,11 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'userrights-no-interwiki' => 'Diğer vikilerdeki kullanıcıların izinlerini değiştirmeye yetkiniz yok.',
 'userrights-nodatabase' => '$1 veritabanı mevcut veya bölgesel değil',
 'userrights-nologin' => 'Kullanıcı haklarını atamak için hizmetli hesabı ile [[Special:UserLogin|giriş yapmanız gerekir]].',
-'userrights-notallowed' => 'Hesabınızın kullanıcı hakları eklemek veya kaldırmak için izni yok.',
+'userrights-notallowed' => 'Kullanıcı hakları eklemek veya kaldırmak için izniniz yok.',
 'userrights-changeable-col' => 'Değiştirebildiğiniz gruplar',
 'userrights-unchangeable-col' => 'Değiştirebilmediğiniz gruplar',
+'userrights-conflict' => 'Kullanıcı hakları değişikliklerinde çakışma! Lütfen değişikliklerinizi gözden geçirin ve onaylayın.',
+'userrights-removed-self' => 'Kendi haklarınız başarıyla kaldırıldı. Bu nedenle, artık bu sayfaya erişemeyeceksiniz.',
 
 # Groups
 'group' => 'Grup:',
@@ -1654,6 +1665,7 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'right-writeapi' => 'API yaz kullanımı',
 'right-delete' => 'Sayfaları sil',
 'right-bigdelete' => 'Uzun tarihli sayfaları sil',
+'right-deletelogentry' => 'Belirli günlük girdilerini sil ve geri getir',
 'right-deleterevision' => 'Sayfaların belirli revizyonlarını sil ve geri yükle',
 'right-deletedhistory' => 'Silinmiş geçmiş girdilerini gör, ilgili metinleri olmadan',
 'right-deletedtext' => 'Silinmiş metni ve silinmiş revizyonlar arasındaki değişiklikleri gör',
@@ -1668,11 +1680,18 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'right-proxyunbannable' => 'Proxylerin otomatik engellemelerini atla',
 'right-unblockself' => 'Kendi engellemesini kaldır',
 'right-protect' => 'Koruma düzeylerini değiştir ve kademeli korumalı sayfaları düzenle',
-'right-editprotected' => 'Korumalı sayfalarda değişiklik yap (korumayı basamaklamadan)',
+'right-editprotected' => '"{{int:protect-level-sysop}}" olarak korunan sayfalarda değişiklik yap',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" olarak korunan sayfalarda değişiklik yap',
 'right-editinterface' => 'Kullanıcı arayüzünü değiştirmek',
 'right-editusercssjs' => 'Diğer kullanıcıların CSS ve JS dosyalarında değişiklik yap',
 'right-editusercss' => 'Diğer kullanıcıların CSS dosyalarında değişiklik yap',
 'right-edituserjs' => 'Diğer kullanıcıların JS dosyalarında değişiklik yap',
+'right-editmyusercss' => 'Kendi kullanıcı CSS dosyaları düzenle',
+'right-editmyuserjs' => 'Kendi kullanıcı JavaScript dosyalarını düzenle',
+'right-viewmywatchlist' => 'Kendi izleme listeni gör',
+'right-editmywatchlist' => 'Kendi izleme listeni düzenle. Not, bazı eylemler bu yetki olmadan da sayfa ekleyebilir.',
+'right-viewmyprivateinfo' => 'Kendi özel bilgilerini görüntüle (e-posta adresi, gerçek isim vb.)',
+'right-editmyprivateinfo' => 'Kendi özel bilgilerini değiştir (e-posta adresi, gerçek isim vb.)',
 'right-editmyoptions' => 'tercihlerini düzenle',
 'right-rollback' => 'Belirli bir sayfayı değiştiren son kullanıcının değişikliklerini hızlıca geri döndür',
 'right-markbotedits' => 'Geri döndürülen değişiklikleri, bot değişiklikleri olarak işaretle',
@@ -1725,8 +1744,8 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'action-block' => 'bu kullanıcının değişiklik yapmasını engellemeye',
 'action-protect' => 'bu sayfa için koruma düzeylerini değiştirmeye',
 'action-rollback' => 'Belirli bir sayfayı değiştiren son kullanıcının değişikliklerini hızlıca geri döndür',
-'action-import' => 'bu sayfayı bir başka vikiden içeri aktarmaya',
-'action-importupload' => 'bu sayfayı bir dosya yüklemesinden içeri aktarmaya',
+'action-import' => 'başka bir vikiden sayfaları içeri aktarmaya',
+'action-importupload' => 'bir dosya yüklemesinden sayfaları içeri aktarmaya',
 'action-patrol' => 'diğerlerinin değişikliğini gözlenmiş olarak işaretlemeye',
 'action-autopatrol' => 'değişikliğinizi gözlenmiş olarak işaretlemeye',
 'action-unwatchedpages' => 'izlenmeyen sayfalar listesini görmeye',
@@ -1737,6 +1756,8 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'action-sendemail' => 'e-posta gönder',
 'action-editmywatchlist' => 'izleme listeni düzenle',
 'action-viewmywatchlist' => 'izleme listeni gör',
+'action-viewmyprivateinfo' => 'kendi özel bilgilerinizi görmeye',
+'action-editmyprivateinfo' => 'kendi özel bilgilerinizi değiştirmeye',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|değişiklik|değişiklik}}',
@@ -1751,6 +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-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',
@@ -1793,7 +1816,7 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'reuploaddesc' => 'Yükleme formuna geri dön.',
 'upload-tryagain' => 'Değiştirilmiş dosya açıklamasını gönder',
 'uploadnologin' => 'Oturum açık değil',
-'uploadnologintext' => 'Dosya yükleyebilmek için [[$1|oturum aç]]manız gerekiyor.',
+'uploadnologintext' => 'Dosya yükleyebilmek için $1manız gerekiyor.',
 'upload_directory_missing' => 'Yükleme dizini ($1) kayıp ve websunucusu tarafından oluşturulamıyor.',
 'upload_directory_read_only' => 'Dosya yükleme dizinine ($1) web sunucusunun yazma izni yok.',
 'uploaderror' => 'Yükleme hatası',
@@ -1931,13 +1954,19 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'upload-too-many-redirects' => 'URL çok fazla yönlendirme içeriyor',
 'upload-unknown-size' => 'Bilinmeyen boyut',
 'upload-http-error' => 'Bir HTTP hatası oluştu: $1',
+'upload-copy-upload-invalid-domain' => 'Kopya yüklemeler bu etki alanında mevcut değil.',
 
 # File backend
 'backend-fail-stream' => '$1 dosyası okunamadı.',
+'backend-fail-backup' => '"$1" dosyası yedeklenemedi.',
 'backend-fail-notexists' => '$1 dosyası mevcut değil.',
+'backend-fail-hashes' => 'Karşılaştırma için dosya sağlamaları alınamadı.',
+'backend-fail-notsame' => 'Aynı olmayan bir dosya "$1" konumunda zaten var.',
 'backend-fail-invalidpath' => '"$1" geçerli bir depolama yolu değil.',
 'backend-fail-delete' => '"$1" dosyası silinemedi.',
+'backend-fail-describe' => '"$1" dosyası için üstveri değiştirilemiyor.',
 'backend-fail-alreadyexists' => '"$1" dosyası zaten mevcut.',
+'backend-fail-store' => '"$1" dosyası "$2" konumuna saklanamadı.',
 'backend-fail-copy' => '"$1" dosyası, "$2" dosyasına kopyalanamadı.',
 'backend-fail-move' => '"$1" dosyası, "$2" dosyasına taşınamadı.',
 'backend-fail-opentemp' => 'Geçici dosya açılamadı.',
@@ -1946,6 +1975,29 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'backend-fail-read' => '$1 dosyası okunamadı.',
 '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
+'filejournal-fail-dbconnect' => '"$1" depolama arkaplan uygulaması için günlük veri tabanına erişilemiyor.',
+'filejournal-fail-dbquery' => '"$1" depolama arkaplan uygulaması için günlük veri tabanı güncellenemiyor.',
+
+# Lock manager
+'lockmanager-notlocked' => '"$1" kilidi açılamıyor; kilitli değil.',
+'lockmanager-fail-closelock' => '"$1" için kilit dosyası kapatılamıyor.',
+'lockmanager-fail-deletelock' => '"$1" için kilit dosyası silinemiyor.',
+'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.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'Dosya ZIP denetimleri için açılırken bir hata ile karşılaşıldı.',
@@ -2010,8 +2062,7 @@ Sitenin daha az meşgul olduğu bir zamanda denemek daha iyi olabilir.',
 'upload_source_file' => ' (bilgisayarınızdaki bir dosya)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Bu özel sayfa yüklenilen tüm dosyaları gösterir. 
-Kullanıcı tarafından filtrelendiğinde, sadece o kullanıcı dosyanın en son sürümünü yüklediği dosyalar gösterilir.',
+'listfiles-summary' => 'Bu özel sayfa yüklenen tüm dosyaları gösterir.',
 'listfiles_search_for' => 'Medya adı ara:',
 'imgfile' => 'dosya',
 'listfiles' => 'Dosya listesi',
@@ -2022,6 +2073,7 @@ Kullanıcı tarafından filtrelendiğinde, sadece o kullanıcı dosyanın en son
 'listfiles_size' => 'Boyut (bayt)',
 'listfiles_description' => 'Tanım',
 'listfiles_count' => 'Sürümler',
+'listfiles-show-all' => 'Görüntülerin eski sürümlerini içer',
 'listfiles-latestversion' => 'Geçerli sürüm',
 'listfiles-latestversion-yes' => 'Evet',
 'listfiles-latestversion-no' => 'Hayır',
@@ -2065,6 +2117,7 @@ Dosyanın açıklama sayfasında değişiklik yapmak için ilgili sayfaya [$2 bu
 'uploadnewversion-linktext' => 'Dosyanın yenisini yükleyin',
 'shared-repo-from' => "$1'dan",
 'shared-repo' => 'ortak bir havuz',
+'upload-disallowed-here' => 'Bu dosyanın üzerine yazamazsınız.',
 
 # File reversion
 'filerevert' => '$1 dosyasını eski haline döndür',
@@ -2119,6 +2172,8 @@ Dosyanın açıklama sayfasında değişiklik yapmak için ilgili sayfaya [$2 bu
 
 # Random page in category
 'randomincategory' => 'Kategoriye göre rastgele sayfa',
+'randomincategory-invalidcategory' => '"$1" geçerli bir kategori adı değil.',
+'randomincategory-nopages' => '[[:Category:$1|$1]] kategorisinde hiç sayfa yok.',
 'randomincategory-selectcategory' => 'Rastgele sayfa alınacak kategori: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Getir',
 
@@ -2148,8 +2203,12 @@ Dosyanın açıklama sayfasında değişiklik yapmak için ilgili sayfaya [$2 bu
 'statistics-mostpopular' => 'En çok ziyaret edilen sayfalar',
 
 'pageswithprop' => 'Bir sayfa özelliğine sahip sayfalar',
+'pageswithprop-legend' => 'Bir sayfa özelliğine sahip sayfalar',
 'pageswithprop-text' => 'Bu sayfa belirli bir sayfa özelliğini kullanan sayfaları listeler.',
+'pageswithprop-prop' => 'Özellik adı:',
 'pageswithprop-submit' => 'Git',
+'pageswithprop-prophidden-long' => 'uzun metin özellik değeri gizlendi ($1)',
+'pageswithprop-prophidden-binary' => 'ikili özellik değeri gizlendi ($1)',
 
 'doubleredirects' => 'Çift yönlendirmeler',
 'doubleredirectstext' => 'Bu sayfa diğer yönlendirme sayfalarına yönlendirme yapan sayfaları listeler.
@@ -2195,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',
@@ -2204,6 +2265,8 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'mostinterwikis' => "En çok interwiki'ye sahip sayfalar",
 'mostrevisions' => 'En çok değişikliğe uğramış sayfalar',
 'prefixindex' => 'Önek ile tüm sayfalar',
+'prefixindex-namespace' => 'Önek ile tüm sayfalar ($1 ad alanında)',
+'prefixindex-strip' => 'Listede öneki kırp',
 'shortpages' => 'Kısa sayfalar',
 'longpages' => 'Uzun sayfalar',
 'deadendpages' => 'Başka sayfalara bağlantısı olmayan sayfalar',
@@ -2219,6 +2282,7 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'listusers' => 'Kullanıcı listesi',
 'listusers-editsonly' => 'Sadece değişiklik yapan kullanıcıları göster',
 'listusers-creationsort' => 'Oluşturma tarihine göre sırala',
+'listusers-desc' => 'Azalan sırada sırala',
 'usereditcount' => '$1 {{PLURAL:$1|değişiklik|değişiklik}}',
 'usercreated' => "$1 tarihinde $2'de {{GENDER:$3|oluşturuldu}}.",
 'newpages' => 'Yeni sayfalar',
@@ -2254,6 +2318,7 @@ Lütfen unutmayın ki, diğer web siteleri bir dosyaya doğrudan bir URL ile ba
 Günlük tipini, kullanıcı adını (büyük-küçük harf duyarlı), ya da etkilenen sayfayı (yine büyük-küçük harf duyarlı) seçerek görünümü daraltabilirsiniz.',
 'logempty' => 'Kayıtlarda eşleşen bilgi yok.',
 'log-title-wildcard' => 'Bu metinle başlayan başlıklar ara',
+'showhideselectedlogentries' => 'Seçili günlük girdilerinin görünürlüğünü değiştir',
 
 # Special:AllPages
 'allpages' => 'Tüm sayfalar',
@@ -2274,6 +2339,8 @@ Günlük tipini, kullanıcı adını (büyük-küçük harf duyarlı), ya da etk
 'allpages-hide-redirects' => 'Yönlendirmeleri gizle',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Bu sayfanın önbelleğe alınan bir sürümünü görüntülüyorsunuz, $1 eski olabilir.',
+'cachedspecial-viewing-cached-ts' => 'Bu sayfanın önbelleğe alınan bir sürümünü görüntülüyorsunuz, tam olarak güncel olmayabilir.',
 'cachedspecial-refresh-now' => 'En son görünüm.',
 
 # Special:Categories
@@ -2394,7 +2461,7 @@ Bundan sonra, bu sayfaya ve ilgili tartışma sayfasına yapılacak değişiklik
 'notvisiblerev' => 'Revizyon silinmiş',
 'watchlist-details' => 'Tartışma sayfaları hariç {{PLURAL:$1|$1 sayfa|$1 sayfa}} izleme listenizdedir.',
 'wlheader-enotif' => 'E-posta bildirimi etkin.',
-'wlheader-showupdated' => "Son ziyaretinizden sonraki sayfa değişiklikleri '''kalın yazıyla''' gösterilmiştir.",
+'wlheader-showupdated' => "Sayfaları son ziyaretinizden beri değişen sayfalar '''kalın''' gösterilmiştir.",
 'watchmethod-recent' => 'izlediğiniz sayfalarda yapılan son değişiklikler kontrol ediliyor',
 'watchmethod-list' => 'izlediğiniz sayfalarda yapılan son değişiklikler kontrol ediliyor',
 'watchlistcontains' => 'İzleme listenizde $1 tane {{PLURAL:$1|sayfa|sayfa}} var.',
@@ -2434,7 +2501,7 @@ Editörün iletişim bilgileri:
 e-posta: $PAGEEDITOR_EMAIL
 viki: $PAGEEDITOR_WIKI
 
-Bahsi geçen sayfayı ziyaret edinceye kadar sayfayla ilgili başka bildirim gönderilmeyecektir. Ayrıca izleme listenizdeki tüm sayfaların bildirim durumlarını sıfırlayabilirsiniz.
+Bahsi geçen sayfayı oturum açarak ziyaret edinceye kadar sayfayla ilgili başka bildirim gönderilmeyecektir. Ayrıca izleme listenizdeki tüm sayfaların bildirim durumlarını sıfırlayabilirsiniz.
 
 {{SITENAME}} bildirim sistemi
 
@@ -2476,10 +2543,12 @@ Yakın zamanda silinenleri görmek için: $2.',
 'deletecomment' => 'Neden:',
 'deleteotherreason' => 'Diğer/ilave neden:',
 'deletereasonotherlist' => 'Diğer nedenler',
-'deletereason-dropdown' => '*Genel silme gerekçeleri
-** Sayfayı oluşturan kullanıcının isteği
+'deletereason-dropdown' => '* Yaygın silme gerekçeleri
+** İstenmeyen değişiklik (spam)
+** Vandalizm
 ** Telif hakkı ihlali
-** Vandalizm',
+** Yazar talebi
+** Bozuk yönlendirme',
 'delete-edit-reasonlist' => 'Silme nedenlerini değiştir',
 'delete-toobig' => 'Bu sayfa, $1 {{PLURAL:$1|tane değişiklik|tane değişiklik}} ile çok uzun bir geçmişe sahiptir.
 Böyle sayfaların silinmesi, {{SITENAME}} sitesini bozmamak için sınırlanmaktadır.',
@@ -2492,6 +2561,7 @@ dikkatle devam edin.',
 'rollback_short' => 'geri al',
 'rollbacklink' => 'geri döndür',
 'rollbacklinkcount' => '$1 {{PLURAL:$1|değişikliği|değişikliği}} geri döndür',
+'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|değişiklikten|değişiklikten}} fazla geri döndür',
 'rollbackfailed' => 'geri alma işlemi başarısız',
 'cantrollback' => 'Sayfaya son katkıda bulunan kullanıcı, sayfaya katkıda bulunmuş tek kişi olduğu için, değişiklikler geri alınamıyor.',
 'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tarafından [[:$1]] sayfasında yapılmış son değişiklik geriye alınamıyor;
@@ -2500,7 +2570,7 @@ başka biri sayfada değişiklik yaptı ya da sayfayı geriye aldı.
 Son değişikliği yapan: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Değişiklik özeti: \"''\$1''\" idi.",
 'revertpage' => '[[Special:Contributions/$2|$2]] [[User talk:$2|mesaj]] tarafından yapılan değişiklikler geri alınarak, [[User:$1|$1]] tarafından değiştirilmiş önceki sürüm geri getirildi.',
-'revertpage-nouser' => '(kullanıcı adı çıkarılmış) tarafından yapılan değişiklikler [[User:$1|$1]] tarafından yapılan son revizyona geri alındı',
+'revertpage-nouser' => 'Gizli bir kullanıcı tarafından yapılan değişiklikler geri alınarak {{GENDER:$1|[[User:$1|$1]]}} tarafından yapılan son revizyon geri getirildi',
 'rollback-success' => '$1 tarafından yapılan değişiklikler geri alınarak;
 $2 tarafından değiştirilmiş önceki sürüme geri dönüldü.',
 
@@ -2521,7 +2591,10 @@ Lütfen "geri" gidin ve geldiğiniz sayfayı yeniden yükleyin, sonra tekrar den
 'protect-title' => '"$1" için bir koruma seviyesi seçiniz',
 'protect-title-notallowed' => '"$1" için koruma seviyesini görüntüleyin',
 'prot_1movedto2' => '[[$1]] sayfasının yeni adı: [[$2]]',
+'protect-badnamespace-title' => 'Korumaya alınamayan ad alanı',
 'protect-badnamespace-text' => 'Bu ad alanındaki sayfalar korunamaz.',
+'protect-norestrictiontypes-text' => 'Bu sayfa mevcut kısıtlama türü bulunmadığı için korumaya alınamıyor.',
+'protect-norestrictiontypes-title' => 'Korumaya alınamayan sayfa',
 'protect-legend' => 'Korumayı onayla',
 'protectcomment' => 'Sebep:',
 'protectexpiry' => 'Bitiş tarihi:',
@@ -2538,7 +2611,7 @@ Lütfen "geri" gidin ve geldiğiniz sayfayı yeniden yükleyin, sonra tekrar den
 'protect-cascadeon' => 'Bu sayfa, kademeli koruma aktif hale getirilmiş aşağıdaki {{PLURAL:$1|$1 sayfada|$1 sayfada}} kullanıldığı için şu an koruma altındadır.
 Bu sayfanın koruma seviyesini değiştirebilirsiniz; ancak bu kademeli korumaya etki etmeyecektir.',
 'protect-default' => 'Tüm kullanıcılara izin ver',
-'protect-fallback' => '"$1" izni gerektir',
+'protect-fallback' => 'Sadece "$1" yetkisine sahip kullanıcılara izin ver',
 'protect-level-autoconfirmed' => 'Yalnızca otomatik onaylanmış kullanıcılara izin verilir',
 'protect-level-sysop' => 'Yalnızca hizmetlilere izin verilir',
 'protect-summary-cascade' => 'kademeli',
@@ -2584,7 +2657,8 @@ Bu sayfanın koruma seviyesini değiştirebilirsiniz; ancak bu kademeli korumaya
 'undeletepagetext' => 'Aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} silinmiştir ama hala arşivdedir ve geri getirilebilir.
 Arşiv düzenli olarak temizlenebilir.',
 'undelete-fieldset-title' => 'Revizyonları geri yükle',
-'undeleteextrahelp' => "Sayfalarla birlikte geçmişi geri getirmek için onay kutularına dokunmadan '''Geri getir!''' tuşuna tıklayın. Sayfanın geçmişini ayrı ayrı getirmek için geri getirmek istediğiniz değişikliklerin onay kutularını seçip '''Geri getir!''' tuşuna tıklayın. Seçilen onay kutularını ve neden alanını sıfırlamak için '''Vazgeç''' tuşuna tıklayın.",
+'undeleteextrahelp' => "Sayfanın tüm geçmişini geri getirmek için onay kutularını boş bırakarak '''''{{int:undeletebtn}}''''' tuşuna tıklayın.
+Sayfanın geçmişini ayrı ayrı getirmek için geri getirmek istediğiniz değişikliklerin onay kutularını seçip '''''{{int:undeletebtn}}''''' tuşuna tıklayın.",
 'undeleterevisions' => '$1 {{PLURAL:$1|revizyon|revizyon}} arşivlendi',
 'undeletehistory' => 'Eğer sayfayı geri getirirseniz, tüm revizyonlar geçmişe geri getirilecektir.
 Silindikten sonra aynı isimle yeni bir sayfa oluşturulmuşsa, geri gelen revizyonlar varolan sayfanın geçmişinde görünecektir.',
@@ -2631,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
@@ -2737,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',
@@ -2797,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',
@@ -2827,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.
@@ -2897,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',
@@ -2924,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',
@@ -2954,8 +3038,12 @@ Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [https:
 'thumbnail-more' => 'Büyüt',
 'filemissing' => 'Dosya bulunmadı',
 'thumbnail_error' => 'Küçük resim oluşturmada hata: $1',
+'thumbnail_error_remote' => '$1 için hata mesajı:
+$2',
 'djvu_page_error' => 'DjVu sayfası kapsamdışı',
 'djvu_no_xml' => 'DjVu dosyası için XML alınamıyor',
+'thumbnail-temp-create' => 'Geçici küçük resim dosyası oluşturulamıyor',
+'thumbnail-dest-create' => 'Küçük resim hedefe kaydedilemiyor',
 'thumbnail_invalid_params' => 'Geçersiz küçük resim parametreleri',
 'thumbnail_dest_directory' => 'Hedef dizini oluşturulamıyor',
 'thumbnail_image-type' => 'Görüntü türü desteklenmiyor',
@@ -3004,6 +3092,15 @@ Geçici dosya kayıp.',
 'import-upload' => 'XML bilgileri yükle',
 'import-token-mismatch' => 'Oturum verisi kaybı. Lütfen yeniden deneyin.',
 'import-invalid-interwiki' => 'Belirtilen vikiden içe aktarım yapılamaz.',
+'import-error-edit' => '"$1" sayfası içe aktarılamadı çünkü sayfayı değiştirmeye yetkiniz yok.',
+'import-error-create' => '"$1" sayfası içe aktarılamadı çünkü sayfayı oluşturmaya yetkiniz yok.',
+'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.',
 
 # Import log
 'importlogpage' => 'Aktarım günlüğü',
@@ -3016,6 +3113,10 @@ Geçici dosya kayıp.',
 # JavaScriptTest
 'javascripttest' => 'JavaScript denemesi',
 'javascripttest-title' => '$1 testleri çalışıyor',
+'javascripttest-pagetext-noframework' => 'Bu sayfa JavaScript testleri çalıştırmak için ayrılmıştır.',
+'javascripttest-pagetext-unknownframework' => 'Bilinmeyen test çerçevesi "$1".',
+'javascripttest-pagetext-frameworks' => 'Lütfen aşağıdaki test çerçevelerinden birini seçin: $1',
+'javascripttest-pagetext-skins' => 'Testleri koşmak için bir tema seçin:',
 'javascripttest-qunit-intro' => 'mediawiki.org üzerinden [$1 deneme belgelerine] bakınız.',
 'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit deneme paketi',
 
@@ -3117,11 +3218,13 @@ Geçici dosya kayıp.',
 'spambot_username' => 'Medyaviki spam temizleme',
 'spam_reverting' => '$1 ile bağlantı içermeyen son sürüme geri dönülüyor',
 'spam_blanking' => 'Tüm revizyonlar $1 sayfasına bağlantı içeriyor, boşaltılıyor',
+'spam_deleting' => 'Tüm revizyonlar $1 sayfasına bağlantı içeriyor, siliniyor',
 'simpleantispam-label' => "Anti-spam denetimi.
-Bunu '''doldurmayın'''!",
+Bunu '''doldurMAyın'''!",
 
 # Info page
 'pageinfo-title' => 'Bilgi için "$1"',
+'pageinfo-not-current' => 'Üzgünüz, eski sürümler için bu bilgileri sağlamamız mümkün değildir.',
 'pageinfo-header-basic' => 'Temel bilgiler',
 'pageinfo-header-edits' => 'Düzenleme geçmişi',
 'pageinfo-header-restrictions' => 'Sayfa koruması',
@@ -3131,14 +3234,17 @@ Bunu '''doldurmayın'''!",
 'pageinfo-length' => 'Sayfa uzunluğu (bayt cinsinden)',
 'pageinfo-article-id' => 'Sayfa ID',
 'pageinfo-language' => 'Sayfa içeriğinin dili',
-'pageinfo-robot-policy' => 'Arama motoru durumu',
-'pageinfo-robot-index' => 'İndekslenebilir',
-'pageinfo-robot-noindex' => 'İndekslenemez',
+'pageinfo-content-model' => 'Sayfa içerik modeli',
+'pageinfo-robot-policy' => 'Robotlar tarafından endeksleniyor',
+'pageinfo-robot-index' => 'İzin verilmiş',
+'pageinfo-robot-noindex' => 'İzin verilmedi',
 'pageinfo-views' => 'Görüntülenme sayısı',
 'pageinfo-watchers' => 'Sayfanın izleyici sayısı',
-'pageinfo-redirects-name' => 'Bu sayfaya yönlendirmeler',
+'pageinfo-few-watchers' => '$1 {{PLURAL:$1|izleyiciden|izleyiciden}} az',
+'pageinfo-redirects-name' => 'Bu sayfaya yönlendirme sayısı',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Bu sayfanın alt sayfaları',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|yönlendirme|yönlendirme}}; $3 {{PLURAL:$3|yönlendirme olmayan|non-yönlendirme olmayan}})',
 'pageinfo-firstuser' => 'Sayfa oluşturucu',
 'pageinfo-firsttime' => 'Sayfa oluşturulma tarihi',
 'pageinfo-lastuser' => 'En son düzenleyici',
@@ -3150,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',
@@ -3175,6 +3283,8 @@ Bunu '''doldurmayın'''!",
 'markedaspatrollederror' => 'Kontrol edilmedi',
 'markedaspatrollederrortext' => 'Gözlenmiş olarak işaretlemek için bir revizyon belirtmelisiniz.',
 'markedaspatrollederror-noautopatrol' => 'Kendi değişikliklerinizi kontrol edilmiş olarak işaretleyemezsiniz.',
+'markedaspatrollednotify' => '$1 için bu değişiklik kontrol edildi olarak işaretlendi.',
+'markedaspatrollederrornotify' => 'Kontrol edildi olarak işaretleme başarısız oldu.',
 
 # Patrol log
 'patrol-log-page' => 'Kontrol kaydı',
@@ -3209,7 +3319,7 @@ Bunu çalıştırmak, sisteminizi tehlikeye atabilir.",
 'svg-long-desc' => 'SVG dosyası, sözde $1 × $2 piksel, dosya boyutu: $3',
 'svg-long-desc-animated' => 'Hareketli SVG dosyası, sözde $1 × $2 piksel, dosya boyutu: $3',
 'svg-long-error' => 'Geçersiz SVG dosyası: $1',
-'show-big-image' => 'Tam çözünürlük',
+'show-big-image' => 'Özgün dosya',
 'show-big-image-preview' => 'Ön izleme boyutu: $1.',
 'show-big-image-other' => 'Diğer {{PLURAL:$2|çözünürlük|çözünürlükleri}}: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -3218,6 +3328,8 @@ Bunu çalıştırmak, sisteminizi tehlikeye atabilir.",
 'file-info-png-looped' => 'döngüye girdi',
 'file-info-png-repeat' => '$1 {{PLURAL:$1|defa|defa}} oynatıldı',
 'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'file-no-thumb-animation' => "'''Not: Teknik sınırlamalar nedeniyle, bu dosyanın küçük resimlerinde animasyon yoktur.'''",
+'file-no-thumb-animation-gif' => "'''Not: Teknik sınırlamalar nedeniyle, bu gibi yüksek çözünürlüklü GIF resimlerinin küçük resimlerinde animasyon yoktur.'''",
 
 # Special:NewFiles
 'newimages' => 'Yeni dosya galerisi',
@@ -3407,13 +3519,18 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-gpsdifferential' => 'GPS differential correction',
 'exif-jpegfilecomment' => 'JPEG dosyası yorumu',
 'exif-keywords' => 'Anahtar kelimeler',
+'exif-worldregioncreated' => 'Resmin çekildiği dünya bölgesi',
 'exif-countrycreated' => 'Resmin alındığı ülke',
+'exif-countrycodecreated' => 'Resmin çekildiği ülke kodu',
+'exif-provinceorstatecreated' => 'Resmin çekildiği eyalet ya da il',
 'exif-citycreated' => 'Resmin alındığı şehir',
+'exif-sublocationcreated' => 'Resmin çekildiği şehrin alt bölgesi',
 'exif-worldregiondest' => 'Gösterilen bölge',
 'exif-countrydest' => 'Gösterilen ülke',
 'exif-countrycodedest' => 'Gösterilen ülke kodu',
 'exif-provinceorstatedest' => 'Gösterilen il ya da devlet/eyalet',
 'exif-citydest' => 'Gösterilen Şehir',
+'exif-sublocationdest' => 'Şehrin alt bölgesi gösteriliyor',
 'exif-objectname' => 'Kısa başlık',
 'exif-specialinstructions' => 'Özel talimatlar',
 'exif-headline' => 'Başlık',
@@ -3423,26 +3540,35 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-urgency' => 'Aciliyet',
 'exif-fixtureidentifier' => 'Fikstür adı',
 'exif-locationdest' => 'Yerin konumu',
+'exif-locationdestcode' => 'Konumun kodu tanımlandı',
+'exif-objectcycle' => 'Ortamın planlandığı günün saati',
 'exif-contact' => 'İletişim bilgileri',
 'exif-writer' => 'Yazar',
 'exif-languagecode' => 'Dil',
 'exif-iimversion' => 'IIM sürümü',
 'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Tamamlayıcı kategoriler',
 'exif-datetimeexpires' => 'Bu tarihten sonra kullanmayın:',
+'exif-datetimereleased' => 'Tarihinde yayınlandı',
+'exif-originaltransmissionref' => 'Orijinal iletim konum kodu',
 'exif-identifier' => 'Tanımlayıcı',
 'exif-lens' => 'Kullanılan objektif',
 'exif-serialnumber' => 'Kameranın seri numarası',
 'exif-cameraownername' => 'Kameranın sahibi',
 'exif-label' => 'Etiket',
+'exif-datetimemetadata' => 'Üstveri son değişim tarihi',
 'exif-nickname' => 'Görüntünün resmî olmayan adı',
 'exif-rating' => 'Oylama (5 üzerinden)',
+'exif-rightscertificate' => 'Hak yönetimi sertifikası',
 'exif-copyrighted' => 'Telif hakkı durumu',
 'exif-copyrightowner' => 'Telif hakkı sahibi',
 'exif-usageterms' => 'Kullanım şartları',
 'exif-webstatement' => 'Çevrimiçi telif hakkı bildirimi',
+'exif-originaldocumentid' => 'Özgün belgenin benzersiz kimliği',
 'exif-licenseurl' => 'Telif hakkı lisansı için URL',
 'exif-morepermissionsurl' => 'Alternatif lisans bilgileri',
 'exif-attributionurl' => 'Bu çalışmayı yeniden kullanırken lütfen bağlantı verin',
+'exif-preferredattributionname' => 'Bu çalışmayı yeniden kullanırken, lütfen atıf verin',
 'exif-pngfilecomment' => 'PNG dosyası yorumu',
 'exif-disclaimer' => 'Sorumluluk reddi',
 'exif-contentwarning' => 'İçerik uyarısı',
@@ -3458,6 +3584,9 @@ 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',
 
 'exif-copyrighted-true' => 'Telif hakkı',
@@ -3644,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ı',
@@ -3741,13 +3871,13 @@ iptal etmek için aşağıdaki bağlantıyı takip edin:
 $5
 
 Bu onay kodu $4 tarihine kadar geçerli olacak.',
-'confirmemail_body_set' => 'Birisi $1 IP adresiyle {{SITENAME}} sitesinde "$2" kullanıcı hesabının e-posta adresi olarak bu e-posta adresini belirtti.
+'confirmemail_body_set' => 'Birisi, muhtemelen siz, $1 IP adresiyle {{SITENAME}} sitesinde "$2" kullanıcı hesabının e-posta adresi olarak bu e-posta adresini belirtti.
 
-Eğer bu işlemi yapan sizseniz ve {{SITENAME}} sitesindeki e-posta işlevlerini tekrar aktif etmek istiyorsanız alttaki bağlantıyı tarayıcınızda açmanız gerekiyor:
+Bu hesabın gerçekten size ait olduğunu onaylamak ve {{SITENAME}} sitesindeki e-posta işlevlerini aktif etmek için alttaki bağlantıyı tarayıcınızda açmanız gerekiyor:
 
 $3
 
-Eğer bu işlemi yapan siz değilseniz ve böyle bir üyeliğiniz yoksa e-posta onay işlemini iptal etmek için alttaki bağlantıyı tarayıcınızda açmanız gerekiyor:
+Eğer bu hesap size ait değilse, e-posta adresi onayını iptal etmek için alttaki bağlantıyı takip edin:
 
 $5
 
@@ -3758,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
@@ -3877,6 +4008,8 @@ Ayrıca [[Special:EditWatchlist|standart düzenleme sayfasını]] da kullanabili
 'version-license' => 'Lisans',
 '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.
@@ -3892,10 +4025,12 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # Special:Redirect
 'redirect' => 'Dosya, kullanıcı veya sayfa ID yönlendirme',
 'redirect-legend' => 'Bir dosya veya sayfaya yönlendirme',
-'redirect-summary' => "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliği verilen) adresine yönlendirir.",
+'redirect-summary' => "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliği verilen) adresine yönlendirir. Kullanım: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ya da  [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Git',
+'redirect-lookup' => 'Ara:',
 'redirect-value' => 'Değer:',
 'redirect-user' => 'Kullanıcı kimliği',
+'redirect-revision' => 'Sayfa revizyonu',
 'redirect-file' => 'Dosya adı',
 'redirect-not-exists' => 'Değer bulunamadı',
 
@@ -3912,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',
@@ -3946,6 +4081,7 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'tags' => 'Geçerli değişiklik etiketleri',
 'tag-filter' => '[[Special:Tags|Etiket]] süzgeci:',
 'tag-filter-submit' => 'Süzgeç',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Etiket|Etiketler}}]]: $2)',
 'tags-title' => 'Etiketler',
 'tags-intro' => 'Bu sayfa, yazılımın bir değişikliği işaretleyebileceği etiketleri ve bunların anlamlarını listeler.',
 'tags-tag' => 'Etiket adı',
@@ -3975,6 +4111,7 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'dberr-problems' => 'Üzgünüz! Bu site teknik zorluklar yaşıyor.',
 'dberr-again' => 'Bir kaç dakika bekleyip tekrar yüklemeyi deneyin.',
 'dberr-info' => '(Veritabanı sunucusuyla irtibat kurulamıyor: $1)',
+'dberr-info-hidden' => '(Veritabanı sunucusuna bağlantı kurulamıyor)',
 'dberr-usegoogle' => 'Bu zaman zarfında Google ile aramayı deneyebilirsiniz.',
 'dberr-outofdate' => 'İçeriğimizin onların dizinlerinde güncel olmayabileceğini dikkate alın.',
 'dberr-cachederror' => 'Aşağıdaki istenen sayfanın önbellekteki bir kopyasıdır, ve güncel olmayabilir.',
@@ -3992,18 +4129,24 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'htmlform-selectorother-other' => 'Diğer',
 'htmlform-no' => 'Hayır',
 'htmlform-yes' => 'Evet',
+'htmlform-chosen-placeholder' => 'Bir seçenek seçin',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 tam-metin arama desteği ile',
 'sqlite-no-fts' => '$1 tam-metin arama desteği olmaksızın',
 
 # New logging system
-'logentry-delete-delete' => '$1 $3 sayfasını sildi',
-'logentry-delete-restore' => '$1 $3 sayfasını geri getirdi',
-'logentry-delete-revision' => '$1 $3: $4 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü değiştirdi',
-'logentry-delete-revision-legacy' => '$1 $3 sayfasındaki sürümlerin görünürlüğünü değiştirdi',
-'logentry-suppress-revision' => '$1 $3: $4 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü gizlice değiştirdi',
-'logentry-suppress-revision-legacy' => '$1 $3 sayfasındaki sürümlerin görünürlüğünü değiştirdi',
+'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ş',
 'revdelete-uname-hid' => 'kullanıcı adı gizli',
@@ -4012,17 +4155,24 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'revdelete-uname-unhid' => 'kullanıcı adı gösterildi',
 'revdelete-restricted' => 'hizmetliler için uygulanmış kısıtlamalar',
 'revdelete-unrestricted' => 'hizmetliler için kaldırılmış kısıtlamalar',
-'logentry-move-move' => '$1 $3 sayfasını $4 sayfasına taşıdı',
-'logentry-move-move-noredirect' => '$1 $3 sayfasını $4 sayfasına yönlendirme olmaksızın taşıdı',
-'logentry-move-move_redir' => '$1 $3 sayfasını $4 sayfasına yönlendirme üzerinden taşıdı',
-'logentry-patrol-patrol-auto' => '$1 $3 sayfasını $4 sürümü ile kontrol etti',
+'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',
@@ -4043,15 +4193,20 @@ 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.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|izin verilen bir dosya türü değil|izin verilen bir dosya türü değil}}. İzin verilen {{PLURAL:$3|dosya türü|dosya türleri}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|izin verilen bir dosya türü değil|izin verilen dosya türleri değil}}. İzin verilen {{PLURAL:$3|dosya türü|dosya türleri}} $2.',
 'api-error-filetype-missing' => 'Dosya uzantısı eksik.',
 'api-error-hookaborted' => 'Yapmaya çalıştığınız değişiklik bir eklenti tarafından iptal edildi.',
 'api-error-http' => 'İç hata: sunucu ile bağlantı kurulamıyor.',
@@ -4067,6 +4222,7 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'api-error-ok-but-empty' => 'İç hata: Sunucu yanıt vermiyor.',
 'api-error-overwrite' => 'Varolan dosyanın üzerine yazmaya izin verilmiyor.',
 'api-error-stashfailed' => 'İç hata: Sunucu, geçici dosyaları kaybetti.',
+'api-error-publishfailed' => 'İç hata: Sunucu geçici dosyayı yayınlarken başarısız oldu.',
 'api-error-timeout' => 'Sunucu beklenen süre içinde yanıt vermedi.',
 'api-error-unclassified' => 'Bilinmeyen bir hata oluştu.',
 'api-error-unknown-code' => 'Bilinmeyen hata: "$1"',
@@ -4087,17 +4243,37 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'duration-centuries' => '$1 {{PLURAL:$1|yüzyıl|yüzyıl}}',
 'duration-millennia' => '$1 {{PLURAL:$1|bin yıl|bin yıl}}',
 
+# Image rotation
+'rotate-comment' => 'Resim saat yönünde $1 {{PLURAL:$1|derece|derece}} çevrildi',
+
 # Limit report
 'limitreport-title' => 'Ayrıştırıcı profil verileri:',
 'limitreport-cputime' => 'CPU süresi kullanımı',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|saniye|saniye}}',
 'limitreport-walltime' => 'Gerçek süre kullanımı',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|saniye|saniye}}',
 'limitreport-ppvisitednodes' => 'Önişlemci düğümü ziyaret sayısı',
 'limitreport-ppgeneratednodes' => 'Önişlemcinin ürettiği düğüm sayısı',
 'limitreport-postexpandincludesize' => 'Gönderi genişliği boyutu dahil',
-'limitreport-postexpandincludesize-value' => '$1/$2 bayt',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bayt|bayt}}',
 'limitreport-templateargumentsize' => 'Şablon değişkeni boyutu',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bayt|bayt}}',
 'limitreport-expansiondepth' => 'En yüksek genişleme derinliği',
 'limitreport-expensivefunctioncount' => 'Daha fazla ayrıştırıcı işlev sayısı',
 
+# 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 <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ç',
+'expand_templates_xml_output' => 'XML üretim',
+'expand_templates_ok' => 'Tamam',
+'expand_templates_remove_comments' => 'Yorumları sil',
+'expand_templates_remove_nowiki' => 'Sonuçlarda <nowiki> etiketlerini bastır',
+'expand_templates_generate_xml' => 'XML derleyici ağacını göster',
+'expand_templates_preview' => 'Önizleme',
+
 );
index 47b3f5e..1430a55 100644 (file)
@@ -180,8 +180,6 @@ $messages = array(
 'ok' => 'Tamam',
 'retrievedfrom' => 'men "$1"',
 'youhavenewmessages' => 'Kıtlux $1 ($2) .',
-'newmessageslink' => 'Ṫebe ḥaṭe',
-'newmessagesdifflink' => 'Degoşo ḥaroyo',
 'youhavenewmessagesmulti' => 'Kitlux Ṫebe ḥaṭe b$1',
 'editsection' => 'mşaḥlaf',
 'editold' => 'mşaḥlaf',
index d26a779..a8e6c4e 100644 (file)
@@ -244,8 +244,6 @@ See [[Special:Version|version page]].',
 'ok' => 'Hiswona',
 'retrievedfrom' => 'ku suka e "$1"',
 'youhavenewmessages' => 'U na $1 ($2).',
-'newmessageslink' => 'Marungula mantswa',
-'newmessagesdifflink' => 'last change',
 'youhavenewmessagesmulti' => 'Una marungula mantswa hi $1',
 'editsection' => 'Lulamisa',
 'editold' => 'Lulamisa',
@@ -908,4 +906,8 @@ Lebyi n'wana vuxokoxoko bya finiso byitumbetiwile.
 # Special:Tags
 'tag-filter' => 'Xihluti xa [[Special:Tags|Xi angi]]:',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Hiswona',
+'expand_templates_preview' => 'Ringanisa',
+
 );
index 391c4b7..e8f53f2 100644 (file)
@@ -483,8 +483,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Чыганагы — "$1"',
 'youhavenewmessages' => 'Сездә $1 бар ($2).',
-'newmessageslink' => 'яңа хәбәрләр',
-'newmessagesdifflink' => 'бәхәс битегезнең соңгы үзгәртүе',
 'youhavenewmessagesfromusers' => 'Сезгә {{PLURAL:$3|$3 кулланучыдан}} $1 килде ($2).',
 'youhavenewmessagesmanyusers' => 'Сез бик күп кулланучыдан $1 алдыгыз ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|яңа хәбәр}}',
@@ -1189,7 +1187,6 @@ $1",
 'preferences' => 'Көйләнмәләр',
 'mypreferences' => 'Көйләнмәләр',
 'prefs-edits' => 'Үзгәртүләр исәбе:',
-'prefsnologin' => 'Кермәгәнсез',
 'changepassword' => 'Серсүзне үзгәртү',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан карау',
@@ -1374,6 +1371,7 @@ $1",
 'recentchanges-label-minor' => 'Бу кече үзгәртү',
 'recentchanges-label-bot' => 'Бу үзгәртү бот белән эшләнгән иде',
 'recentchanges-label-unpatrolled' => 'Үзгәртүне әлегә тикшермәгәннәр',
+'recentchanges-legend-newpage' => '$1 — яңа бит',
 'rcnote' => 'Аста $4 $5 вакытынна соңгы {{PLURAL:$2|1|$2}} көн эчендә булган соңгы {{PLURAL:$1|1|$1}} үзгәртмә күрсәтелә:',
 'rcnotefrom' => "Астарак '''$2''' башлап ('''$1''' кадәр) үзгәртүләр күрсәтелгән.",
 'rclistfrom' => '$1 башлап яңа үзгәртүләрне күрсәт',
@@ -2567,4 +2565,8 @@ $1',
 'api-error-uploaddisabled' => 'Бу викидә файллар йөкләү мөмкинлеге сүндерелгән.',
 'api-error-verification-error' => 'Бәлки, бу файл бозылгандыр яки дөрес түгел киңәйтелмәгә ия.',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Үрнәкләрне ачу',
+'expand_templates_ok' => 'OK',
+
 );
index c388277..69f9af2 100644 (file)
@@ -347,8 +347,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Çığanağı — "$1"',
 'youhavenewmessages' => 'Sezdä $1 bar ($2).',
-'newmessageslink' => 'yaña xäbärlär',
-'newmessagesdifflink' => 'bäxäs bitegezneñ soñğı üzgärtüe',
 'youhavenewmessagesmulti' => 'Sezgä monda yaña xäbärlär bar: $1',
 'editsection' => 'üzgärtü',
 'editold' => 'üzgärtü',
@@ -923,7 +921,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' s
 'preferences' => 'Köylänmälär',
 'mypreferences' => 'Köylänmälärem',
 'prefs-edits' => 'Üzgärtülär isäbe:',
-'prefsnologin' => 'Kermägänsez',
 'changepassword' => 'Sersüzne üzgärtü',
 'prefs-skin' => 'Küreneş',
 'skin-preview' => 'Aldan qaraw',
index 953210f..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(
@@ -321,8 +321,6 @@ $messages = array(
 'ok' => 'Чөп',
 'retrievedfrom' => '«$1» деп адрестен парлаттынган',
 'youhavenewmessages' => 'Силерде $1 ($2) бар.',
-'newmessageslink' => 'чаа чагаалар',
-'newmessagesdifflink' => 'эрткен өскерлиишкин',
 'youhavenewmessagesmulti' => '«$1» деп арында силерге чаа чагаалар бар.',
 'editsection' => 'эдер',
 'editold' => 'эдер',
@@ -751,6 +749,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'recentchanges-label-minor' => 'Бо өскерлиишкин бичии-дир',
 'recentchanges-label-bot' => 'Бо эдилгени робот күүсеткен.',
 'recentchanges-label-unpatrolled' => 'Бо өскертилге истетинмээн (патрульдаттынмаан)',
+'recentchanges-legend-newpage' => '$1 — чаа арын',
 'rcnote' => "$4 $5 өйде соңгу '''$2''' {{PLURAL:$2|хонуктуң}} {{PLURAL:$1|сөөлгү '''$1''' '''өскерилгелери'''}} .",
 'rcnotefrom' => 'Адаанда <strong>$2</strong> тура (<strong>$1</strong> чедир) өскертилгелерни санаан.',
 'rclistfrom' => '$1 тура чаа өскерилгелерни көргүзер',
index 1803bc0..e273423 100644 (file)
@@ -325,8 +325,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => '"$1" دىن ئېرىشكەن',
 'youhavenewmessages' => 'سىزدە $1 ($2) بار.',
-'newmessageslink' => 'يېڭى ئۇچۇر',
-'newmessagesdifflink' => 'ئاخىرقى ئۆزگەرتىش',
 'youhavenewmessagesfromusers' => 'سىزنىڭ {{PLURAL:$3|باشقا ئىشلەتكۈچى|$3 ئىشلەتكۈچى}} $1  ($2)ڭىز بار.',
 'youhavenewmessagesmanyusers' => 'سىزنىڭ نۇرغۇن ئىشلەتكۈچىدىن كەلگەن $1  ($2) بار.',
 'newmessageslinkplural' => '{{PLURAL:$1|بىر يېڭى |يېڭى ئۇچۇر}}ئۇچۇر',
@@ -1196,7 +1194,6 @@ $1",
 'preferences' => 'مايىللىق',
 'mypreferences' => 'مايىللىق',
 'prefs-edits' => 'تەھرىر سانى:',
-'prefsnologin' => 'تىزىمغا كىرمىدى',
 'changepassword' => 'پارولنى ئۆزگەرتىش',
 'prefs-skin' => 'تېرە',
 'skin-preview' => 'ئالدىن كۆزەت',
@@ -1486,6 +1483,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'recentchanges-label-minor' => 'بۇ ئازراقلا تەھرىرلەش',
 'recentchanges-label-bot' => 'بۇ تەھرىرنى ماشىنا ئادەم ئېلىپ بارغان',
 'recentchanges-label-unpatrolled' => 'بۇ تەھرىر تېخى كۆزىتىلمىگەن',
+'recentchanges-legend-newpage' => '$1 - يېڭى بەت',
 'rcnote' => "تۆۋەندىكى $4 $5 يېقىنقى {{PLURAL:$2|كۈن|'''$2''' كۈن}}  ئىچىدىكى {{PLURAL:$1| '''1''' ئۆزگەرتىش| '''$1''' ئۆزگەرتىش}}  خاتىرىسى",
 'rcnotefrom' => "تۆۋەندىكىسى '''$2''' نىڭ ئۆزگەرتىشى (ئەڭ كۆپ بولغاندا '''$1''' كۆرسىتىدۇ )",
 'rclistfrom' => '$1 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت',
@@ -2404,7 +2402,6 @@ $1',
 $1',
 'undelete-show-file-confirm' => '$2 $3 دىكى \\"<nowiki>$1</nowiki>\\" نىڭ ئۆچۈرۈلگەن تۈزىتىلگەن نەشرىنى راستىنلا كۆرەمسىز؟',
 'undelete-show-file-submit' => 'ھەئە',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'ئات بوشلۇقى',
@@ -3975,4 +3972,9 @@ MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئېلان 
 'limitreport-walltime' => 'ئەمەلىي كەتكەن ۋاقىت',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|سېكۇنت}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'نەتىجە',
+'expand_templates_ok' => 'جەزملە',
+'expand_templates_preview' => 'ئالدىن كۆزەت',
+
 );
index 7b20e61..de8ce62 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' ),
@@ -641,12 +642,10 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Отримано з $1',
 'youhavenewmessages' => 'Ви отримали $1 ($2).',
-'newmessageslink' => 'нові повідомлення',
-'newmessagesdifflink' => 'остання зміна',
 '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' => 'ред.',
@@ -878,7 +877,7 @@ $1',
 'passwordtooshort' => 'Ваш пароль закороткий, він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}}.',
 'password-name-match' => 'Уведений пароль має відрізнятися від імені користувача.',
 'password-login-forbidden' => 'Використання цього імені користувача і пароля заборонено.',
-'mailmypassword' => 'Ð\9dадÑ\96Ñ\81лаÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ пароль',
+'mailmypassword' => 'Ð\9fеÑ\80евÑ\81Ñ\82ановиÑ\82и пароль',
 'passwordremindertitle' => "Пам'ятка пароля користувача {{grammar:genitive|{{SITENAME}}}}",
 'passwordremindertext' => 'Хтось (можливо, ви, з IP-адреси $1) зробив запит
 на надсилання вам нового пароля користувача {{grammar:genitive|{{SITENAME}}}} ($4). Для користувача
@@ -951,7 +950,7 @@ $1',
 # Special:PasswordReset
 'passwordreset' => 'Скинути пароль',
 'passwordreset-text-one' => 'Заповніть цю форму для відновлення пароля.',
-'passwordreset-text-many' => '{{PLURAL:$1|Заповніть одне з полів для скидання пароля.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Заповніть одне з полів для отримання тимчасового паролю через електронну пошту.}}',
 'passwordreset-legend' => 'Перевстановити пароль',
 'passwordreset-disabled' => 'У цій вікі вимкнена можливість скидання пароля.',
 'passwordreset-emaildisabled' => 'Функції електронної пошти вимкнуто в цій вікі.',
@@ -1506,7 +1505,6 @@ $1",
 'preferences' => 'Налаштування',
 'mypreferences' => 'Налаштування',
 'prefs-edits' => 'Кількість редагувань:',
-'prefsnologin' => 'Ви не ввійшли в систему',
 'prefsnologintext2' => 'Потрібно $1 для налаштування параметрів користувача.',
 'changepassword' => 'Змінити пароль',
 'prefs-skin' => 'Оформлення',
@@ -1810,6 +1808,9 @@ $1",
 'recentchanges-label-minor' => 'Це незначна зміна',
 'recentchanges-label-bot' => 'Це редагування зроблене ботом',
 'recentchanges-label-unpatrolled' => 'Це редагування ще не було відпатрульоване',
+'recentchanges-label-plusminus' => 'Розмір сторінки змінився на таке число байтів',
+'recentchanges-legend-newpage' => '(див. також [[Special:NewPages|список нових сторінок]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "{{PLURAL:$1|Остання '''$1''' зміна|Останні '''$1''' зміни|Останні '''$1''' змін}} за '''$2''' {{PLURAL:$2|день|дні|днів}}, на час $5, $4.",
 'rcnotefrom' => 'Нижче відображені редагування з <strong>$2</strong> (до <strong>$1</strong>).',
 'rclistfrom' => 'Показати редагування починаючи з $1.',
@@ -4461,4 +4462,21 @@ MediaWiki поширюється в надії, що вона буде кори
 'limitreport-expansiondepth' => 'Найвища глибина розширення',
 'limitreport-expensivefunctioncount' => 'Число дорогої функції аналізатора',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Розгортання шаблонів',
+'expand_templates_intro' => 'Ця спеціальна сторінка перетворює текст, рекурсивно розгортаючи всі шаблони в ньому.
+Також розгортаються всі функції парсера
+<nowiki>{{</nowiki>#language:...}} і змінні типу
+<nowiki>{{</nowiki>CURRENTDAY}}.
+Фактично, усе всередині подвійних фігурних дужок.',
+'expand_templates_title' => 'Заголовок сторінки для {{FULLPAGENAME}} тощо:',
+'expand_templates_input' => 'Вхідний текст:',
+'expand_templates_output' => 'Результат',
+'expand_templates_xml_output' => 'XML-вивід',
+'expand_templates_ok' => 'Гаразд',
+'expand_templates_remove_comments' => 'Вилучити коментарі',
+'expand_templates_remove_nowiki' => 'Ігнорувати теги <nowiki> в результаті',
+'expand_templates_generate_xml' => 'Показати дерево аналізу XML',
+'expand_templates_preview' => 'Попередній перегляд',
+
 );
index 1a54af9..d59a34d 100644 (file)
@@ -22,6 +22,7 @@
  * @author زكريا
  * @author سمرقندی
  * @author محبوب عالم
+ * @author පසිඳු කාවින්ද
  */
 
 $fallback8bitEncoding = 'windows-1256';
@@ -63,7 +64,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'خراب_عنوان' ),
        'Blankpage'                 => array( 'خالی_صفحہ' ),
        'Block'                     => array( 'پابندی', 'دستور_شبکی_پابندی', 'پابندی_بر_صارف' ),
-       'Blockme'                   => array( 'میری_پابندی' ),
        'Booksources'               => array( 'کتابی_وسائل' ),
        'BrokenRedirects'           => array( 'شکستہ_رجوع_مکررات' ),
        'Categories'                => array( 'زمرہ_جات' ),
@@ -75,7 +75,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'تخلیق_کھاتہ' ),
        'Deadendpages'              => array( 'مردہ_صفحات' ),
        'DeletedContributions'      => array( 'حذف_شدہ_شراکتیں' ),
-       'Disambiguations'           => array( 'ضد_ابہام_صفحات' ),
        'DoubleRedirects'           => array( 'دوہرے_رجوع_مکررات' ),
        'EditWatchlist'             => array( 'ترمیم_زیر_نظر' ),
        'Emailuser'                 => array( 'صارف_ڈاک' ),
@@ -417,8 +416,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '‘‘$1’’ مستعادہ منجانب',
 'youhavenewmessages' => 'آپکے لیۓ ایک $1 ہے۔ ($2)',
-'newmessageslink' => 'نئے پیغامات',
-'newmessagesdifflink' => 'تـجـدیـد مـاقـبل آخـر سے فـرق',
 'newmessagesdifflinkplural' => 'آخری {{PLURAL:$1|تبدیلی|تبدیلیاں}}',
 'youhavenewmessagesmulti' => 'ء$1 پر آپ کیلئے نئے پیغامات ہیں',
 'editsection' => 'ترمیم',
@@ -958,7 +955,6 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'میری ترجیہات',
 'prefs-edits' => 'تدوینات کی تعداد:',
-'prefsnologin' => 'نا داخل شدہ حالت',
 'changepassword' => 'کلمۂ شناخت تبدیل کریں',
 'prefs-skin' => 'جِلد',
 'skin-preview' => 'پیش منظر',
@@ -1643,4 +1639,12 @@ $1 × $2 عکصر (پکسلز)، حجم ملف: $3، MIME قسم: $4',
 # Search suggestions
 'searchsuggest-search' => 'تلاش',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'سانچے کو وسیع کریں',
+'expand_templates_input' => 'ان پٹ متن:',
+'expand_templates_output' => 'نتیجہ',
+'expand_templates_ok' => 'ٹھیک ہے',
+'expand_templates_remove_comments' => 'تبصرے حذف کریں',
+'expand_templates_preview' => 'پیش نظارہ',
+
 );
index f6ae821..608d502 100644 (file)
@@ -371,11 +371,9 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => ' "$1" dan olindi',
 'youhavenewmessages' => 'Sizga $1 keldi ($2).',
-'newmessageslink' => 'yangi xabarlar',
-'newmessagesdifflink' => 'soʻnggi oʻzgarish',
 'youhavenewmessagesfromusers' => 'Siz {{PLURAL:$3|boshqa foydalanuvchidan|$3 ta foydalanuvchidan}} $1 oldingiz ($2).',
 'youhavenewmessagesmanyusers' => "Siz ko'p foydalanuvchilardan $1 oldingiz ($2).",
-'newmessageslinkplural' => '{{PLURAL:$1|yangi xabar|yangi xabarlar}}',
+'newmessageslinkplural' => '{{PLURAL:$1|yangi xabar|999=yangi xabarlar}}',
 'newmessagesdifflinkplural' => 'oxirgi {{PLURAL:$1|oʻzgarish|oʻzgarishlar}}',
 'youhavenewmessagesmulti' => 'Siz $1ga yangi xat oldingiz',
 'editsection' => 'tahrirlash',
@@ -800,7 +798,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'preferences' => 'Moslamalar',
 'mypreferences' => 'Moslamalarim',
 'prefs-edits' => 'Tahrirlar soni:',
-'prefsnologin' => "Siz tizimda o'zingizni tanitmadingiz",
 'changepassword' => 'Maxfiy soʻzni oʻzgartirish',
 'prefs-skin' => 'Tashqi ko‘rinishi',
 'skin-preview' => 'Ko‘rib chiqish',
index 2953b49..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' ),
@@ -431,8 +431,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Cavà fora da "$1"',
 'youhavenewmessages' => 'Te ghè $1 ($2).',
-'newmessageslink' => 'dei mesagi novi',
-'newmessagesdifflink' => 'ultimo canbiamento',
 'youhavenewmessagesfromusers' => "Te ghè $1 da {{PLURAL:$3|n'altro utente|$3 utenti}} ($2).",
 'youhavenewmessagesmanyusers' => 'Te ghè $1 da vari utenti ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|un messagio novo|dei messagi novi}}',
@@ -1235,7 +1233,6 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'preferences' => 'Prefarense',
 'mypreferences' => 'Prefarense',
 'prefs-edits' => 'Nùmaro de modifiche:',
-'prefsnologin' => 'No te ghè eseguìo el login',
 'changepassword' => 'Cànbia ła password',
 'prefs-skin' => 'Aspeto grafico',
 'skin-preview' => 'Anteprima',
@@ -1512,6 +1509,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'recentchanges-label-minor' => 'Sto qua el xe un canbiamento picenin',
 'recentchanges-label-bot' => 'Sta modifica el la ga fata un bot',
 'recentchanges-label-unpatrolled' => 'Sta modifica no la xe stà gnancora verificà',
+'recentchanges-legend-newpage' => '$1 - pagina nova',
 'rcnote' => "Qua soto se vede {{PLURAL:$1|l'ultimo canbiamento|i ultimi '''$1''' canbiamenti}} {{PLURAL:$2|in te l'ultimo zorno|in tei ultimi '''$2''' zorni}}, fin a le $5 del $4.",
 'rcnotefrom' => "Qui di seguito sono elencate le modifiche da '''$2''' (fino a '''$1''').",
 'rclistfrom' => 'Fà védar i canbiamenti fati dal $1',
@@ -3880,4 +3878,17 @@ Insieme co sto programa te dovaressi 'ver ricevùo na copia de la Licensa Public
 # Image rotation
 'rotate-comment' => 'Imagine girà de $1 {{PLURAL:$1|grado|gradi}} in senso orario',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Espansion dei template',
+'expand_templates_intro' => 'Sta pagina speciale la elabora un testo espandendo tuti i template presenti. La calcola inoltre el risultato de le funzion suportàe dal parser come <nowiki>{{</nowiki>#language:...}} e de le variabili de sistema quali <nowiki>{{</nowiki>CURRENTDAY}}, overo in pratica tuto quel che se cata tra dopie parentesi grafe. La funsiona riciamando le oportune funzion del parser de MediaWiki.',
+'expand_templates_title' => 'Contesto (par {{FULLPAGENAME}} ecc.):',
+'expand_templates_input' => 'Testo da espàndar:',
+'expand_templates_output' => 'Risultato',
+'expand_templates_xml_output' => 'Output in formato XML',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Ignora i comenti',
+'expand_templates_remove_nowiki' => 'Cava i tag <nowiki> dal risultato',
+'expand_templates_generate_xml' => 'Mostra àlbaro sintàtico XML',
+'expand_templates_preview' => 'Anteprima',
+
 );
index 0381d52..45a1497 100644 (file)
@@ -98,9 +98,9 @@ $messages = array(
 'tog-usenewrc' => 'Kävutagat paremboitud tantoižed toižetused (pidab otta radho JavaScript)',
 'tog-numberheadings' => 'Nomeruida avtomatižikš pälkirjutesed',
 'tog-showtoolbar' => "Ozutada azegiden üläpanel' redaktiruindan aigan (JavaScript)",
-'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul (JavaScript)',
+'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul',
 'tog-editsection' => 'Ozutada "Redaktiruida"-kosketuz kaikuččen sekcijan täht',
-'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele (JavaScript)',
+'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele',
 'tog-showtoc' => 'Ozutada südäiolend (lehtpoled, kudambil om enamba, mi 3 pälkirjutest)',
 'tog-rememberpassword' => 'Muštta minun kävutajan nimi neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled minun kaclendkirjuteshe',
@@ -193,6 +193,18 @@ $messages = array(
 'oct' => 'reduku',
 'nov' => 'kül’mku',
 'dec' => 'tal’vku',
+'january-date' => '$1. viluku',
+'february-date' => '$1. uhoku',
+'march-date' => "$1. keväz'ku",
+'april-date' => '$1. sulaku',
+'may-date' => '$1. semendku',
+'june-date' => '$1. kezaku',
+'july-date' => '$1. heinku',
+'august-date' => '$1. eloku',
+'september-date' => "$1. sügüz'ku",
+'october-date' => '$1. reduku',
+'november-date' => "$1. kül'mku",
+'december-date' => "$1. tal'vku",
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorii|Kategorijad}}',
@@ -218,7 +230,7 @@ $messages = array(
 'newwindow' => '(avaidase udes iknas)',
 'cancel' => 'Heitta pätand',
 'moredotdotdot' => 'Edeleze...',
-'mypage' => "Minun lehtpol'",
+'mypage' => "Lehtpol'",
 'mytalk' => 'Lodud',
 'anontalk' => 'Lodud neciš IP-adresas',
 'navigation' => 'Navigacii',
@@ -251,6 +263,7 @@ $messages = array(
 'namespaces' => 'Nimiavaruded',
 'variants' => 'Variantad',
 
+'navigation-heading' => 'Navigacii',
 'errorpagetitle' => 'Petuz',
 'returnto' => 'Pörttas lehtpolele $1.',
 'tagline' => '{{SITENAME}}',
@@ -288,7 +301,7 @@ $messages = array(
 'articlepage' => "Kacu südäimišton lehtpol'",
 'talk' => 'Diskussii',
 'views' => 'Kacundad',
-'toolbox' => 'Azegišt',
+'toolbox' => 'Instrumentad',
 'userpage' => "Kacu kävutajan lehtpol'",
 'projectpage' => "Kacu projektan lehtpol'",
 'imagepage' => "Kacu fajlan lehtpol'",
@@ -346,8 +359,6 @@ Kacu [[Special:Version|informacii kävutadud versijoiš]].',
 'ok' => 'Ka',
 'retrievedfrom' => 'Purde - "$1"',
 'youhavenewmessages' => 'Tö sat $1 ($2).',
-'newmessageslink' => 'uded tedotused',
-'newmessagesdifflink' => "jäl'gmäine toižetuz",
 'youhavenewmessagesmulti' => 'Teil om uzid tedotusid $1-lehtpolel',
 'editsection' => 'redaktiruida',
 'editold' => 'redaktiruida',
@@ -399,6 +410,7 @@ Kc. [[Special:SpecialPages|specialižiden lehtpoliden nimikirj]].",
 # General errors
 'error' => 'Petuz',
 'databaseerror' => 'Andmusiden bazan petuz',
+'databaseerror-error' => 'Petuz: $1',
 'laggedslavemode' => "Varutuz: voib olda, lehtpolen versijal ei ole jäl'gmäižid ližadusid.",
 'readonly' => 'Andmusiden baz om luklostadud',
 'enterlockreason' => 'Kirjutagat sü da pandud blokiruindan strok',
@@ -463,10 +475,18 @@ Sü om "\'\'$2\'\'".',
 
 Sab jatkta rad {{SITENAME}}-saital anonimižikš, vai <span class='plainlinks'>[$1 kirjutagatoiš udes]</span> sil-žo vai toižel kävutajan nimel.
 Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel teiden lähtendad sistemaspäi. Miše vajehtada niiden nägu, puhtastagat teiden kaclimen keš.",
+'welcomeuser' => 'Tulgat tervhin, $1!',
 'yourname' => 'Kävutajan nimi:',
+'userlogin-yourname' => 'Kävutajannimi',
+'createacct-another-username-ph' => 'Kirjutagat kävutajannimi',
 'yourpassword' => 'Peitsana:',
+'userlogin-yourpassword' => 'Peitsana',
+'createacct-yourpassword-ph' => 'Kirjutagat peitsana',
 'yourpasswordagain' => 'Kirjutagat peitsana udes:',
+'createacct-yourpasswordagain' => 'Peitsanan vahvištoituz',
+'createacct-yourpasswordagain-ph' => 'Kirjutagat peitsana toškerdan',
 'remembermypassword' => 'Panda muštho minun tulendandmused neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
+'userlogin-remembermypassword' => 'Jäda sistemha',
 'yourdomainname' => 'Teiden domen:',
 'externaldberror' => 'Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.',
 'login' => 'Kirjutadas sistemha',
@@ -485,6 +505,12 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'userlogin-resetlink' => 'Unohtid-ik andmused tulendan täht?',
 'createaccountmail' => 'e-počtaiči',
 'createaccountreason' => 'Sü:',
+'createacct-reason' => 'Sü',
+'createacct-reason-ph' => 'Mikš sädad kävutajanprofilid?',
+'createacct-captcha' => 'Varuitomuden kodvind',
+'createacct-imgcaptcha-ph' => 'Kirjutagat tekst pälpäi',
+'createacct-submit' => "Säta kävutajanprofil'",
+'createacct-another-submit' => "Säta toine kävutajanprofil'",
 'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
 'userexists' => 'Kirjutadud kävutajan nimi om jo kävutamižes.
 Olgat hüväd, valikat toine kävutajan nimi.',
@@ -576,6 +602,9 @@ Aigaline peitsana: $2',
 'changeemail-submit' => 'Toižetada e-počtan adres',
 'changeemail-cancel' => 'Heitta',
 
+# Special:ResetTokens
+'resettokens-tokens' => 'Tokenad:',
+
 # Edit page toolbar
 'bold_sample' => 'Lihavoitud tekst',
 'bold_tip' => 'Lihavoitud tekst',
@@ -966,7 +995,6 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'preferences' => 'Järgendused',
 'mypreferences' => 'Järgendused',
 'prefs-edits' => 'Redaktiruindoiden lugu:',
-'prefsnologin' => 'Tö et olgoi kirjutanus sistemha.',
 'changepassword' => 'Peitsanan toižetuz',
 'prefs-skin' => 'Irdnägu',
 'skin-preview' => 'Ezikaclend',
@@ -1047,7 +1075,7 @@ Kodvgat HTML-virgad.',
 Pidab tehta se $1 {{PLURAL:$1|simvolaspäi|simvoloišpäi}}.",
 'yourgender' => 'Sugu:',
 'gender-unknown' => 'Ei ole ozutadud',
-'gender-male' => 'Mez’',
+'gender-male' => "Mez'",
 'gender-female' => 'Naine',
 'prefs-help-gender' => 'Opcionaline: kävutadas likutimen erasiš tedotusiš, miše ozutada kävutajan sugu oikti. Nece informacii om avoin.',
 'email' => 'E-počt',
@@ -1062,6 +1090,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'prefs-dateformat' => 'Datan format',
 'prefs-timeoffset' => 'Aigan sirdand',
 'prefs-advancedediting' => 'Ližaopcijad',
+'prefs-preview' => 'Ezikacund',
 'prefs-advancedrc' => 'Ližaopcijad',
 'prefs-advancedrendering' => 'Ližaopcijad',
 'prefs-advancedsearchoptions' => 'Ližaopcijad',
@@ -1069,6 +1098,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'prefs-displayrc' => 'Nägun opcijad',
 'prefs-displaysearchoptions' => 'Nägun opcijad',
 'prefs-displaywatchlist' => 'Nägun opcijad',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Erod',
 
 # User preference: email validation using jQuery
@@ -1219,6 +1249,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|toižetuz|toižetust}}',
+'enhancedrc-history' => 'istorii',
 'recentchanges' => 'Tantoižed toižetused',
 'recentchanges-legend' => 'Tantoižiden toižetusiden järgendused',
 'recentchanges-summary' => 'Necil lehtpolil om tantoižid toižetusid {{SITENAME}}-saital.',
@@ -1227,6 +1258,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'recentchanges-label-minor' => 'Nece redakcii om penikaine',
 'recentchanges-label-bot' => 'Necen redakcijan tegi bot',
 'recentchanges-label-unpatrolled' => 'Necidä redakcijad ei völ patruliruinugoi',
+'recentchanges-legend-newpage' => "$1 - uz' lehtpol'",
 'rcnote' => "Alahan om ozutadud {{PLURAL:$1| '''1''' toižetuz|'''$1''' toižetust}} {{PLURAL:$2|jäl'gmäižes päiväs|jäl'gmäižiš '''$2''' päiviš}}, aigal $5, $4.",
 'rcnotefrom' => "Alemba oma anttud toižetused '''$2'''-späi ( '''$1'''-hesai).",
 'rclistfrom' => 'Ozutada uded toižetused dataspäi $1 augotaden',
@@ -1412,6 +1444,7 @@ Ku valitas vaiše ühten kävutajan failad, ka ozutadas vaiše necen kävutajan
 'listfiles_size' => 'Suruz’',
 'listfiles_description' => 'Ümbrikirjutand',
 'listfiles_count' => 'Versijad',
+'listfiles-latestversion-yes' => 'Ka',
 
 # File description page
 'file-anchor-link' => 'Fail',
@@ -1491,6 +1524,9 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'randompage' => "Statjaline lehtpol'",
 'randompage-nopages' => '"$1"-{{PLURAL:$2|Nimiavarudes|Nimiavaruziš}} ei ole lehtpolid.',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Mäne',
+
 # Random redirect
 'randomredirect' => 'Statjaline läbikosketuz',
 'randomredirect-nopages' => '"$1"-nimiavaruses ei ole läbikosketusid.',
@@ -1935,7 +1971,7 @@ $1',
 'contributions' => '{{GENDER:$1|Kävutajan}} tond',
 'contributions-title' => '$1-kävutajan tond',
 'mycontris' => 'Minun tond',
-'contribsub2' => '$1-kävutajan ($2) tond',
+'contribsub2' => '{{GENDER:$3|$1}}-kävutajan ($2) tond',
 'uctop' => '(nügüdläine)',
 'month' => 'Ku:',
 'year' => 'Voz’:',
@@ -2338,6 +2374,8 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 'pageinfo-watchers' => 'Lehtpolen kaclijoiden lugu',
 'pageinfo-edits' => 'Redakcijoiden lugumär',
 'pageinfo-authors' => 'Erazvuiččiden avtoroiden lugu',
+'pageinfo-contentpage-yes' => 'Ka',
+'pageinfo-protect-cascading-yes' => 'Ka',
 
 # Skin names
 'skinname-cologneblue' => "Köl'nan sinine",
@@ -2380,7 +2418,7 @@ $1',
 'file-info-size' => '$1 × $2 pikselad, failan suruz: $3, MIME-tip: $4',
 'file-nohires' => 'Ei ole versijad paremban tarkoiktusenke.',
 'svg-long-desc' => 'SVG-fail, nominaližikš $1 × $2 pikselid, failan suruz: $3',
-'show-big-image' => 'Korgedtarkoiktuseline kuvan versii',
+'show-big-image' => 'Originaline fail',
 'show-big-image-preview' => 'Ezikacundan suruz: $1.',
 'show-big-image-size' => '$1 × $2 pikselid',
 'file-info-gif-looped' => 'toštase',
@@ -2738,6 +2776,9 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-dc-publisher' => 'Pästai',
 'exif-dc-rights' => 'Oiktused',
 
+'exif-isospeedratings-overflow' => 'Более 65535',
+
+'exif-iimcategory-ace' => "Čomamaht, kul'tur da bobuštused",
 'exif-iimcategory-clj' => 'Ogerantegend da käskuz',
 'exif-iimcategory-dis' => 'Katastrofad da avarijad',
 'exif-iimcategory-fin' => 'Ekonomik da biznes',
@@ -2818,6 +2859,9 @@ Necen vahvištoitandkodan kävutamižen lopstrok om $4.',
 'confirm-watch-button' => 'OK',
 'confirm-unwatch-button' => 'OK',
 
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
 # Multipage image navigation
 'imgmultipageprev' => "← edeline lehtpol'",
 'imgmultipagenext' => "jäl'ghine lehtpol' →",
@@ -2971,7 +3015,9 @@ Kävutagat normaline ezikacund.',
 'tags-tag' => 'Tegan (virgan) nimi',
 'tags-display-header' => 'Nägu toižetisiden aigkirjoiš',
 'tags-description-header' => "Znamoičendan täuz' ümbrikirjutand",
+'tags-active-header' => 'Aktivine-ik?',
 'tags-hitcount-header' => 'Virgastadud redakcijad',
+'tags-active-yes' => 'Ka',
 'tags-edit' => 'redaktiruida',
 'tags-hitcount' => '$1 {{PLURAL:$1|toižetuz|toižetust}}',
 
@@ -3004,6 +3050,7 @@ Kävutagat normaline ezikacund.',
 'htmlform-submit' => 'Oigeta',
 'htmlform-reset' => 'Tühjitada toižetused',
 'htmlform-selectorother-other' => 'Toine',
+'htmlform-yes' => 'Ka',
 
 # SQLite database support
 'sqlite-has-fts' => " $1 täuz'tekstaižen ecindan tügedamiženke",
@@ -3046,4 +3093,12 @@ Kävutagat normaline ezikacund.',
 'duration-years' => "$1 {{PLURAL:$1|voz'|vot}}",
 'duration-decades' => '$1 {{PLURAL:$1|dekad|dekadad}}',
 
+# Special:ExpandTemplates
+'expand_templates_input' => 'Tekst:',
+'expand_templates_output' => "Rezul'tat",
+'expand_templates_xml_output' => 'XML-lähtmižvend',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Čuta kommentarijad',
+'expand_templates_preview' => 'Ezikacund',
+
 );
index 3b92c70..8a3eb58 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(
@@ -599,12 +611,10 @@ $1',
 'pagetitle' => '$1 – {{SITENAME}}',
 'retrievedfrom' => 'Lấy từ “$1”',
 'youhavenewmessages' => 'Bạn có $1 ($2).',
-'newmessageslink' => 'tin nhắn mới',
-'newmessagesdifflink' => 'thay đổi gần nhất',
 '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',
@@ -730,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''",
@@ -826,7 +837,7 @@ Hãy kiểm tra lại chính tả, hoặc [[Special:UserLogin/signup|mở tài k
 'passwordtooshort' => 'Mật khẩu phải có ít nhất {{PLURAL:$1|1 ký tự|$1 ký tự}}.',
 'password-name-match' => 'Mật khẩu của bạn phải khác với tên người dùng của bạn.',
 'password-login-forbidden' => 'Tên đăng nhập và mật khẩu này đã bị cấm không được sử dụng.',
-'mailmypassword' => 'Gửi mật khẩu mới qua thư điện tử',
+'mailmypassword' => 'Tái tạo mật khẩu',
 'passwordremindertitle' => 'Mật khẩu tạm thời cho {{SITENAME}}',
 'passwordremindertext' => 'Ai đó (có thể là bạn, có địa chỉ IP $1) đã yêu cầu chúng tôi gửi mật khẩu mới của {{SITENAME}} ($4). Chúng tôi đã tạo một mật khẩu tạm “$3” cho thành viên “$2”. Nếu bạn chính là người đã yêu cầu mật khẩu, bạn cần phải đăng nhập và thay đổi mật khẩu ngay bây giờ. Mật khẩu tạm sẽ hết hạn trong vòng {{PLURAL:$5|một ngày|$5 ngày}}.
 
@@ -889,7 +900,7 @@ Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đ
 # Special:PasswordReset
 'passwordreset' => 'Tái tạo mật khẩu',
 'passwordreset-text-one' => 'Hãy điền mẫu đơn này để tái tạo mật khẩu.',
-'passwordreset-text-many' => '{{PLURAL:$1|Điền vào một hộp sau để tái tạo mật khẩu.}}',
+'passwordreset-text-many' => 'Điền vào {{PLURAL:$1}}một hộp sau để nhận một mật khẩu tạm thời qua thư điện tử.',
 'passwordreset-legend' => 'Tái tạo mật khẩu',
 'passwordreset-disabled' => 'Chức năng tái tạo mật khẩu đã bị tắt trên wiki này.',
 'passwordreset-emaildisabled' => 'Tính năng gửi thư điện tử không được kích hoạt trên wiki này.',
@@ -1439,7 +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:',
-'prefsnologin' => 'Chưa đăng nhập',
+'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',
@@ -1739,6 +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-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.',
@@ -2466,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:
@@ -4104,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',
@@ -4319,4 +4333,17 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'limitreport-expansiondepth' => 'Độ sâu bung cao nhất',
 'limitreport-expensivefunctioncount' => 'Số lời gọi hàm cú pháp tốn cần mức độ xử lý cao',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Bung bản mẫu',
+'expand_templates_intro' => 'Trang đặc biệt này sẽ nhận vào văn bản và bung tất cả các bản mẫu trong nó ra một cách đệ quy cho đến hết. Nó cũng bung cả những hàm cú pháp như <code><nowiki>{{</nowiki>#language:…}}</code>, và những biến số như <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. Thực ra nó bung các dữ liệu bình thường đặt trong ngoặc móc.',
+'expand_templates_title' => 'Tên của trang văn cảnh (để phân tích {{FULLPAGENAME}} v.v.):',
+'expand_templates_input' => 'Mã nguồn để bung:',
+'expand_templates_output' => 'Kết quả',
+'expand_templates_xml_output' => 'Xuất XML',
+'expand_templates_ok' => 'Bung',
+'expand_templates_remove_comments' => 'Bỏ các chú thích',
+'expand_templates_remove_nowiki' => 'Bỏ qua thẻ <nowiki> trong kết quả',
+'expand_templates_generate_xml' => 'Xem cây phân tích XML',
+'expand_templates_preview' => 'Xem trước',
+
 );
index 4d5b813..c7e9ed0 100644 (file)
@@ -278,8 +278,6 @@ $1",
 'ok' => 'In ôrdnung',
 'retrievedfrom' => 'Fon „$1“ ghold',
 'youhavenewmessages' => "S'gajd $1 af dajnâr disghusjoons-sajdn ($2).",
-'newmessageslink' => 'naje middajlunga',
-'newmessagesdifflink' => 'lädschde fârendârung',
 'youhavenewmessagesmulti' => "S'gajd naje middajlungn: $1",
 'editsection' => 'Beärbâdn',
 'editold' => 'Bearbajdn',
@@ -540,7 +538,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'preferences' => 'ajschdelunga',
 'mypreferences' => 'Ajschdelunga',
 'prefs-edits' => 'So ofd umgmoodld:',
-'prefsnologin' => 'Ned ôôgmäld',
 'changepassword' => "S'bhaswôrd ändârn",
 'prefs-skin' => 'Schaale',
 'skin-preview' => 'Môôl schbign',
index cdf855e..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' ),
@@ -369,8 +368,6 @@ $messages = array(
 'ok' => 'Si!',
 'retrievedfrom' => 'Pekopiedon se „$1“',
 'youhavenewmessages' => 'Su pad ola binons $1 ($2).',
-'newmessageslink' => 'nuns nulik',
-'newmessagesdifflink' => 'votükam lätik',
 'youhavenewmessagesfromusers' => 'Labol $1 de {{PLURAL:$3|geban votik|gebans $3}} ($2).',
 'youhavenewmessagesmanyusers' => 'Labol $1 de gebans mödik ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|nuni nulik|nunis nulik}}',
@@ -1006,7 +1003,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'preferences' => 'Buükams',
 'mypreferences' => 'Buükams',
 'prefs-edits' => 'Num redakamas:',
-'prefsnologin' => 'No enunädon oki',
 'changepassword' => 'Votükön letavödi',
 'prefs-skin' => 'Fomät',
 'skin-preview' => 'Büologed',
@@ -1238,6 +1234,7 @@ Muton labön {{PLURAL:$1|malati|malatis}} läs $1.',
 'recentchanges-label-minor' => 'Atos binon redakam pülik',
 'recentchanges-label-bot' => 'Redakam at pädunon fa el bot',
 'recentchanges-label-unpatrolled' => 'Redakam at no nog pekontrolon',
+'recentchanges-legend-newpage' => '$1 - pad nulik',
 'rcnote' => "Dono {{PLURAL:$1|binon votükam '''1'''|binons votükams '''$1'''}} lätikün {{PLURAL:$2|dela|delas '''$2'''}} lätikün, pänumädöls tü $5, $4.",
 'rcnotefrom' => "Is palisedons votükams sis '''$2''' (jü '''$1''').",
 'rclistfrom' => 'Jonön votükamis nulik, primölo tü düp $1',
@@ -2914,4 +2911,19 @@ Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
 'duration-centuries' => '{{PLURAL:$1|tumyel|tumyels}} $1',
 'duration-millennia' => '{{PLURAL:$1|milyel|milyels}} $1',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'stäänükön samafomotis',
+'expand_templates_intro' => 'Pad patik at sumon vödemi e stäänükon samafomotis onik valik okvokölo.
+Stäänükon i programasekätis soäs
+<code><nowiki>{{</nowiki>#language:...}}</code> e vödis soäs <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Ibo, stäänükon valikosi vü pärs klämas fridik.',
+'expand_templates_title' => 'Yumedatiäd, pro {{FULLPAGENAME}} e r.:',
+'expand_templates_input' => 'Penolös vödem:',
+'expand_templates_output' => 'Seks',
+'expand_templates_xml_output' => 'Seks fomätü XML',
+'expand_templates_ok' => 'Baiced',
+'expand_templates_remove_comments' => 'Moükön küpetis',
+'expand_templates_generate_xml' => 'Jonön bimi: XML',
+'expand_templates_preview' => 'Büologed',
+
 );
index b21667c..1f4be79 100644 (file)
@@ -179,8 +179,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Jälcinnü adresissa "$1"',
 'youhavenewmessages' => 'Teill on $1 ($2).',
-'newmessageslink' => 'Uusiit zapiskoit',
-'newmessagesdifflink' => 'viimõin muutuz',
 'editsection' => 'muuttaa',
 'editold' => 'muuttaa',
 'viewsourceold' => 'lähtekoodi',
@@ -673,7 +671,6 @@ Cüľľellä $2 on spiiska viimeiziss pühcimühsiiss.',
 'undeletecomment' => 'Süü:',
 'undelete-search-submit' => 'Etsi',
 'undelete-show-file-submit' => 'Daa',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Nimiruumi:',
index 53bb760..9282da1 100644 (file)
@@ -298,8 +298,6 @@ $1",
 'ok' => 'Hää külh',
 'retrievedfrom' => 'Vällä otsit teedüskogost "$1"',
 'youhavenewmessages' => 'Sul om $1 ($2).',
-'newmessageslink' => 'vahtsit sõnomiid',
-'newmessagesdifflink' => 'perämäne muutminõ',
 'youhavenewmessagesmulti' => 'Sullõ om vahtsit sõnomit lehe pääl $1',
 'editsection' => 'toimõndaq',
 'editold' => 'toimõndaq',
@@ -802,7 +800,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 'preferences' => 'Säädmine',
 'mypreferences' => 'Säädmiseq',
 'prefs-edits' => 'Tõimõndamiisi arv:',
-'prefsnologin' => 'Sa olõ-i nimega sisse lännüq',
 'changepassword' => 'Muudaq salasõnna',
 'prefs-skin' => 'Vällänägemine',
 'skin-preview' => 'Kaeminõ',
index 0b11e86..ae871a3 100644 (file)
@@ -318,8 +318,6 @@ $1",
 'ok' => "'l est bon",
 'retrievedfrom' => 'Prin del pådje «$1»',
 'youhavenewmessages' => 'Vos avoz des $1 ($2).',
-'newmessageslink' => 'noveas messaedjes',
-'newmessagesdifflink' => 'dierin candjmint',
 'youhavenewmessagesmulti' => 'Vos avoz des noveas messaedjes so $1',
 'editsection' => 'candjî',
 'editold' => 'candjî',
@@ -844,7 +842,6 @@ Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' c
 'preferences' => 'Preferinces',
 'mypreferences' => 'Mes preferinces',
 'prefs-edits' => 'Nombe di candjmints:',
-'prefsnologin' => "Vos n' estoz nén elodjî",
 'changepassword' => "Candjî l' sicret",
 'prefs-skin' => 'Pea',
 'skin-preview' => 'vey divant',
index ab280d9..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' ),
@@ -339,8 +338,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Ginkuha tikang ha "$1"',
 'youhavenewmessages' => 'Mayda ka $1 ($2).',
-'newmessageslink' => 'bag-o nga mga mensahe',
-'newmessagesdifflink' => 'kataposan nga pagbag-o',
 'youhavenewmessagesfromusers' => 'May-ada ka $1 tikang ha {{PLURAL:$3|iba nga gumaramit|$3 mga gumaramit}} ($2).',
 'youhavenewmessagesmanyusers' => 'May-ada ka $1 tikang ha damo nga mga gumaramit ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|uska bag-o nga mensahe|bag-o nga mga mensahe}}',
@@ -1015,7 +1012,6 @@ Ginpapasabot nga an sulod han mga panudlok han {{SITENAME}} in bangin daan an.',
 'preferences' => 'Mga karuyag',
 'mypreferences' => 'Mga akon karuyag',
 'prefs-edits' => 'Ihap han mga pagliwat:',
-'prefsnologin' => 'Diri nakalog-in',
 'changepassword' => 'Igliwan an tigaman-pagsulod',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Pahiuna nga pagawas',
index 9e3a08b..1f7fc2e 100644 (file)
@@ -327,8 +327,6 @@ $1',
 'ok' => 'waaw',
 'retrievedfrom' => 'Ci « $1 » lañ ko jële',
 'youhavenewmessages' => 'Am nga $1 ($2).',
-'newmessageslink' => 'Bataaxal yu bees',
-'newmessagesdifflink' => 'Coppite gu mujj',
 'youhavenewmessagesmulti' => 'Am nga bataaxal yu yees ci $1',
 'editsection' => 'Soppi',
 'editold' => 'Soppi',
@@ -911,7 +909,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'preferences' => 'Tànneef',
 'mypreferences' => 'Samay tànneef',
 'prefs-edits' => 'Limu coppite yi:',
-'prefsnologin' => 'Duggoo',
 'changepassword' => 'Coppiteg baatujàll bi',
 'prefs-skin' => 'Melokaan',
 'skin-preview' => 'Wonendil',
@@ -1148,6 +1145,7 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'recentchanges-label-minor' => 'Coppite gu néewal la',
 'recentchanges-label-bot' => 'Coppite bu ab bot def',
 'recentchanges-label-unpatrolled' => 'Coppite bii kenn fugloogu ko',
+'recentchanges-legend-newpage' => '$1 - xët wu bees',
 'rcnote' => '{{PLURAL:$1|Lii mooy coppite bu mujj bees def|Yii ñooy coppite yu mujj yees def}} ci {{PLURAL:$2|bés bu mujj bi|<b>$2</b> bés yu mujj yi}}; njoxe yi ñoo ngi leen yeesal $5 ci $4.',
 'rcnotefrom' => "Yii ñooy coppite yi dalee '''$2''' (ba '''$1''').",
 'rclistfrom' => 'Wone coppite yi mujj yi dooree $1.',
index ded0b9a..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"分类里个媒体',
@@ -293,8 +293,6 @@ $1',
 'ok' => '好',
 'retrievedfrom' => '取自“$1”',
 'youhavenewmessages' => '你侬有$1($2)。',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '此垡更改',
 'newmessageslinkplural' => '{{PLURAL:$1|新消息}}',
 'newmessagesdifflinkplural' => '此垡̺{{PLURAL:$1|变化}}',
 'youhavenewmessagesmulti' => '爾徠$1裏有新信息',
@@ -994,7 +992,6 @@ $1",
 'preferences' => '偏好',
 'mypreferences' => '偏好设定',
 'prefs-edits' => '编辑数量:',
-'prefsnologin' => '朆登录',
 'changepassword' => '改密码',
 'prefs-skin' => '皮肤',
 'skin-preview' => '预览',
index 1cfd90d..81275b9 100644 (file)
@@ -306,8 +306,6 @@ $1',
 'ok' => 'Тиим',
 'retrievedfrom' => '"$1" гидг халхас йовулсн',
 'youhavenewmessages' => 'Та $1та бәәнәт ($2).',
-'newmessageslink' => 'шин зәңгс',
-'newmessagesdifflink' => 'шидрә сольлһн',
 'youhavenewmessagesmulti' => 'Таньд $1 деер шин зәңг ирсн бәәнә.',
 'editsection' => 'чиклх',
 'editold' => 'чиклх',
@@ -592,7 +590,6 @@ $1',
 'preferences' => 'Дурллһн',
 'mypreferences' => 'Көгүд',
 'prefs-edits' => 'Чикллһнә то:',
-'prefsnologin' => 'Та харһв биш',
 'changepassword' => 'Нууц үгиг сольҗ',
 'prefs-skin' => 'Хувцнь',
 'skin-preview' => 'Хәләвр',
@@ -706,6 +703,7 @@ $1',
 'recentchanges-label-newpage' => 'Тер үүләр шин халх бүтәв',
 'recentchanges-label-minor' => 'Эн баһ чинртә сольлһн',
 'recentchanges-label-bot' => 'Эн сольлһн көдлвр (робот) кехв',
+'recentchanges-legend-newpage' => '$1 — шин халх',
 'rcnote' => "{{PLURAL:$1|'''$1''' шидрә сольлһн|'''$1''' шидрә сольлһн|'''$1''' шидрә сольлһн}}, '''$2''' өдрә,  $5 $4 цагин.",
 'rclistfrom' => 'Тер цагас авн сольлһн үзүлх: $1.',
 'rcshowhideminor' => 'баһ чикллһиг $1',
index fe9c8e0..97ce03f 100644 (file)
@@ -203,8 +203,6 @@ $messages = array(
 'ok' => 'ჯგირი',
 'retrievedfrom' => 'გორილ რე "$1"-იშე',
 'youhavenewmessages' => 'თქვა გიღუნა $1 ($2).',
-'newmessageslink' => 'ახალი შატყვინაფეფი',
-'newmessagesdifflink' => 'ეკონია თირაფა',
 'editsection' => 'რედაქტირაფა',
 'editold' => 'რედაქტირაფა',
 'viewsourceold' => 'წყუშ ძირაფა',
index c3cc126..5bf7c1b 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(
@@ -471,12 +472,10 @@ $1',
 'backlinksubtitle' => '→ $1',
 'retrievedfrom' => 'גענומען פֿון "$1"',
 'youhavenewmessages' => 'איר האט $1 ($2).',
-'newmessageslink' => 'נייע מעלדונגען',
-'newmessagesdifflink' => 'לעצטע ענדערונג',
 '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' => 'רעדאַקטירן',
@@ -1343,7 +1342,7 @@ $1",
 'preferences' => 'פרעפֿערענצן',
 'mypreferences' => 'פּרעפֿערענצן',
 'prefs-edits' => 'צאָל ענדערונגען:',
-'prefsnologin' => 'נישט אריינלאגירט',
+'prefsnologintext2' => 'זייט אזוי גוט $1 כדי צו שטעלן באניצער פרעפערענצן.',
 'changepassword' => 'טוישן פאַסווארט',
 'prefs-skin' => 'סקין',
 'skin-preview' => 'פארויסדיגע ווייזונג',
@@ -1642,6 +1641,8 @@ $1",
 'recentchanges-label-minor' => 'דאָס איז אַ מינערדיקע רעדאַקטירונג',
 'recentchanges-label-bot' => ' די רעדאַקטירונג האט אויסגעפירט א באט',
 'recentchanges-label-unpatrolled' => 'די רעדאקטירונג איז נאך נישט נאכגעקוקט',
+'recentchanges-label-plusminus' => 'בלאט גרייס געענדערט מיט דער אצל בייטן',
+'recentchanges-legend-newpage' => '(זעים אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])',
 'rcnote' => "אונטן {{PLURAL:$1|איז '''1''' ענדערונג|זײַנען די לעצטע '''$1''' ענדערונגען}} אין {{PLURAL:$2|דעם לעצטן טאג|די לעצטע $2 טעג}}, ביז $5, $4.",
 'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
@@ -2509,7 +2510,6 @@ $UNWATCHURL
 $1',
 'undelete-show-file-confirm' => 'צי זענט איר זעכער איר ווילט באַקוקן די אויסגעמעקטע רעוויזיע פון דער טעקע "<nowiki>$1</nowiki>" פון $2 בשעה $3?',
 'undelete-show-file-submit' => 'יא',
-'undelete-revisionrow' => '$1 $2 $3 $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'נאמענטייל:',
@@ -3774,8 +3774,7 @@ $5
 # Special:SpecialPages
 'specialpages' => 'ספּעציעלע זײַטן',
 'specialpages-note' => '* נארמאַלע באַזונדערע בלעטער.
-* <strong class="mw-specialpagerestricted">באַגרענעצטע באַזונדערע בלעטער.</strong>
-* <span class="mw-specialpagecached">באַזונדערע בלעטער פֿון זאַפאַס (קענען זײַן פֿאַרעלטערט).</span>',
+* <span class="mw-specialpagerestricted">באַגרענעצטע באַזונדערע בלעטער.</span>',
 'specialpages-group-maintenance' => 'אויפֿהאַלטונג באַריכטן',
 'specialpages-group-other' => 'אַנדערע ספעציעלע בלעטער',
 'specialpages-group-login' => 'ארײַנלאגירן / שאַפֿן קאנטע',
@@ -3983,4 +3982,12 @@ $5
 'limitreport-expansiondepth' => 'גרעסטע אויסשפרייט טיף',
 'limitreport-expensivefunctioncount' => 'צאל פזרנישע פארזער־פֿונקציעס',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'פרואוו מוסטערן',
+'expand_templates_input' => 'אײַנגעבן טעקסט',
+'expand_templates_output' => 'רעזולטאט',
+'expand_templates_xml_output' => 'XML אויסגאָב',
+'expand_templates_ok' => 'אויספֿירן',
+'expand_templates_preview' => 'פֿאראויסשטעלונג',
+
 );
index 13eb68f..14a1975 100644 (file)
@@ -326,8 +326,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => 'Jẹ́ kíkójáde láti "$1"',
 'youhavenewmessages' => 'Ẹ ní $1 ($2).',
-'newmessageslink' => 'ìránṣẹ́ tuntun',
-'newmessagesdifflink' => 'àtúnṣe tógbẹ̀yìn',
 'youhavenewmessagesfromusers' => 'Ẹ ní $1 láti ọ̀dọ̀ {{PLURAL:$3|oníṣe míràn|àwọn oníṣe $3}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ẹ ní $1 láti ọ̀dọ̀ àwọn oníṣe púpọ̀ ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ìránṣẹ́ tuntun kan|àwọn ìránṣẹ́ tuntun}}',
@@ -1163,7 +1161,6 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'preferences' => 'Àwọn ìfẹ́ràn',
 'mypreferences' => 'Àwọn ìfẹ́ràn',
 'prefs-edits' => 'Iye àwọn àtúnṣe:',
-'prefsnologin' => 'Ẹ kò tíì wọlé',
 'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
 'prefs-skin' => 'Skin (Àwọ̀)',
 'skin-preview' => 'Àkọ́yẹ̀wò',
@@ -1440,6 +1437,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'recentchanges-label-minor' => 'Àtùnṣe kékeré nìyí',
 'recentchanges-label-bot' => 'Rọ́bọ́ọ̀tì ni ó ṣe àtúnṣe yìí',
 'recentchanges-label-unpatrolled' => 'Àtúnṣe yìí kò tí ì jẹ́ onísíṣọ́',
+'recentchanges-legend-newpage' => '$1 - ojúewé tuntun',
 'rcnote' => "Lábẹ́ ni {{PLURAL:$1|àtúnṣe '''kan'''|àwọn àtúnṣe '''$1''' tí wọn gbẹ̀yìn}} láàrin {{PLURAL:$2|ọjọ́ kan|ọjọ́ '''$2'''}} sẹ́yìn ní ago $5, lọ́jọ́ $4.",
 'rcnotefrom' => "Àwọn àtúnṣe láti ''''$2''' (títí dé '''$1''' hàn) lábẹ́.",
 'rclistfrom' => 'Àfihàn àwọn àtúnṣe tuntun nípa bíbẹ̀rẹ̀ láti $1',
@@ -1462,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"',
 
@@ -2367,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):',
@@ -2962,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 8aa212d..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( '解封' ),
@@ -492,8 +490,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '由 "$1" 收',
 'youhavenewmessages' => '你有$1($2)。',
-'newmessageslink' => '新信息',
-'newmessagesdifflink' => '上次更改',
 'youhavenewmessagesmulti' => '你響 $1 有新信',
 'editsection' => '編輯',
 'editold' => '編輯',
@@ -1155,7 +1151,6 @@ $1",
 'preferences' => '喜好設定',
 'mypreferences' => '自訂喜好',
 'prefs-edits' => '編輯數:',
-'prefsnologin' => '重未登入',
 'changepassword' => '改密碼',
 'prefs-skin' => '畫面',
 'skin-preview' => '預覽',
@@ -1420,6 +1415,7 @@ $1",
 'recentchanges-label-minor' => '呢個係一個細編輯',
 'recentchanges-label-bot' => '呢次編輯係由機械人進行',
 'recentchanges-label-unpatrolled' => '呢次編輯重未巡查過',
+'recentchanges-legend-newpage' => '$1 - 新版',
 'rcnote' => "以下係響$4 $5,近'''$2'''日嘅最後'''$1'''次修改。",
 'rcnotefrom' => "以下係自'''$2'''嘅更改(顯示到'''$1''')。",
 'rclistfrom' => '顯示由$1嘅新更改',
@@ -3316,4 +3312,16 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅
 # Durations
 'duration-hours' => '$1{{PLURAL:$1|個鐘}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => '展開模',
+'expand_templates_intro' => '呢個特別頁係用於將一啲文字中嘅模展開,包括響個模度引用嘅模。同時亦都展開解譯器函數好似<nowiki>{{</nowiki>#language:...}},以及一啲變數好似<nowiki>{{</nowiki>CURRENTDAY}}&mdash;實際上,幾乎所有響雙括弧中嘅內容都會被展開。呢個特別頁係通過使用MediaWiki嘅相關解釋階段嘅功能完成嘅。',
+'expand_templates_title' => '內容標題,用於 {{FULLPAGENAME}} 等頁面:',
+'expand_templates_input' => '輸入文字:',
+'expand_templates_output' => '結果:',
+'expand_templates_xml_output' => 'XML輸出',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => '拎走注釋',
+'expand_templates_generate_xml' => '顯示XML語法樹',
+'expand_templates_preview' => '預覽',
+
 );
index 5856b2d..682aa6c 100644 (file)
@@ -299,8 +299,6 @@ $1",
 'ok' => 'OK',
 'retrievedfrom' => 'Truggeplekt van "$1"',
 'youhavenewmessages' => 'Je ei $1 ($2).',
-'newmessageslink' => 'nieuw bericht',
-'newmessagesdifflink' => 'de bewerkieng bekieken',
 'youhavenewmessagesmulti' => 'Je ei nieuwe berichen op $1',
 'editsection' => 'bewerken',
 'editold' => 'bewerk',
@@ -829,7 +827,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
 'preferences' => 'Vòkeuren',
 'mypreferences' => 'Mien vòkeuren',
 'prefs-edits' => 'Antal bewerkiengen:',
-'prefsnologin' => 'Nie anemeld',
 'changepassword' => 'Wachtwoôrd wiezigen',
 'prefs-skin' => 'Vurmhevieng',
 'skin-preview' => 'Voevertoônienge',
index acb6e77..bf4b8cc 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__' ),
@@ -367,10 +386,10 @@ $messages = array(
 'tog-hideminor' => '隐藏最近更改中的小编辑',
 'tog-hidepatrolled' => '隐藏最近更改中的已巡查编辑',
 'tog-newpageshidepatrolled' => '隐藏新页面列表中的已巡查页面',
-'tog-extendwatchlist' => 'æ\89©å¤§监视列表以显示所有更改而不仅是最近更改',
-'tog-usenewrc' => '按页面组合最近更改和监视列表中的更改',
+'tog-extendwatchlist' => 'æ\89©å±\95监视列表以显示所有更改而不仅是最近更改',
+'tog-usenewrc' => '按页面合并最近更改和监视列表中的更改',
 'tog-numberheadings' => '自动编号标题',
-'tog-showtoolbar' => 'æ\98¾ç¤ºç¼\96è¾\91å·¥å\85·æ\9d¡',
+'tog-showtoolbar' => 'æ\98¾ç¤ºç¼\96è¾\91å·¥å\85·æ \8f',
 'tog-editondblclick' => '双击编辑页面',
 'tog-editsection' => '启用[编辑]链接编辑段落',
 'tog-editsectiononrightclick' => '启用右击段落标题编辑段落',
@@ -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个子分类}}。',
@@ -635,8 +654,6 @@ $1',
 'backlinksubtitle' => '←$1',
 'retrievedfrom' => '取自“$1”',
 'youhavenewmessages' => '你有$1($2)。',
-'newmessageslink' => '新信息',
-'newmessagesdifflink' => '最后更改',
 'youhavenewmessagesfromusers' => '你有来自{{PLURAL:$3|其他用户|$3个用户}}的$1($2)。',
 'youhavenewmessagesmanyusers' => '你有来自多个用户的$1($2)。',
 'newmessageslinkplural' => '{{PLURAL:$1|新信息|999=新消息}}',
@@ -855,7 +872,7 @@ $2',
 'passwordtooshort' => '您的密码至少需要$1个字符。',
 'password-name-match' => '您的密码必须和您的用户名不相同。',
 'password-login-forbidden' => '这个用户名称及密码的使用是被禁止的。',
-'mailmypassword' => '电子邮件发送新密码',
+'mailmypassword' => '重置密码',
 'passwordremindertitle' => '{{SITENAME}}的新临时密码',
 'passwordremindertext' => '有人(可能是您,来自IP地址$1)已请求{{SITENAME}}的新密码($4)。
 用户“$2”的一个新临时密码现在已被设置好为“$3”。
@@ -922,7 +939,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => '重置密码',
 'passwordreset-text-one' => '请输入你要重置的用户名。',
-'passwordreset-text-many' => '{{PLURAL:$1|å¡«å\85\85é\83¨å\88\86å­\97段以é\87\8dç½®æ\82¨ç\9a\84å¯\86ç \81。}}',
+'passwordreset-text-many' => '{{PLURAL:$1|å\9c¨æ­¤é\94®å\85¥æ\82¨å¸\8cæ\9c\9bæ\8e¥æ\94¶ä¸´æ\97¶å¯\86ç \81ç\9a\84é\82®ä»¶å\9c°å\9d\80。}}',
 'passwordreset-legend' => '重置密码',
 'passwordreset-disabled' => '此Wiki已经禁用密码重置。',
 'passwordreset-emaildisabled' => '此Wiki上无法使用邮件功能。',
@@ -962,17 +979,17 @@ $2
 'changeemail-cancel' => '取消',
 
 # Special:ResetTokens
-'resettokens' => '重置权标',
-'resettokens-text' => '您可以重置权标,其允许访问某些与您的帐户相关联的私人数据
+'resettokens' => '重置密钥',
+'resettokens-text' => '你可以在这里重置允许访问与你的账户有关的特定私人数据的密钥
 
-如果您意外地与他人共享权标,或您的帐户已遭到破坏,您应该重置权标。',
-'resettokens-no-tokens' => '没有可重置得权标。',
-'resettokens-legend' => '重置权标',
-'resettokens-tokens' => '权标:',
+如果你意外将它们分享给他人,或是你的账户已经被入侵,你应该重置它们。',
+'resettokens-no-tokens' => '没有可以重置的密钥。',
+'resettokens-legend' => '重置密钥',
+'resettokens-tokens' => '密钥:',
 'resettokens-token-label' => '$1(当前值:$2)',
-'resettokens-watchlist-token' => '请在[[Special:Watchlist|您的监视列表]]中更改Web订阅(Atom或RSS)的权标',
-'resettokens-done' => '权标已重置。',
-'resettokens-resetbutton' => '重置所选的权标',
+'resettokens-watchlist-token' => '[[Special:Watchlist|对你的监视列表中的页面的更改]]的网页feed(Atom/RSS)的密钥',
+'resettokens-done' => '密钥已重置。',
+'resettokens-resetbutton' => '重置选择的密钥',
 
 # Edit page toolbar
 'bold_sample' => '粗体文字',
@@ -1057,10 +1074,10 @@ $2
 'userpage-userdoesnotexist' => '用户账户“$1”没有注册。请在创建/编辑本页前检查。',
 'userpage-userdoesnotexist-view' => '用户账户“$1”未曾创建。',
 'blocked-notice-logextract' => '这位用户目前已被封禁。以下提供最近的封禁日志以供参考:',
-'clearyourcache' => "'''注意:'''保存之后,你必须清除浏览器缓存才能看到做出的更改。
-* '''火狐(Firefox)/Safari:'''按住“Shift”,同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
+'clearyourcache' => "'''注意:'''在保存之后,你可能需要清除你的浏览器的缓存以查看更改。
+* '''Firefox/Safari:'''按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
 * '''Google Chrome:'''按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
-* '''Internet Explorer:'''按住“Ctrl”同时单击“刷新”,或按“Ctrl-F5”
+* '''Internet Explorer:'''按住“Ctrl”同时单击“刷新”,或按“Ctrl-F5”
 * '''Opera:'''在“工具→首选项”中清除缓存",
 'usercssyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 CSS 。",
 'userjsyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 JavaScript 。",
@@ -1265,8 +1282,8 @@ $3的理由是''$2''",
 'revdelete-hide-user' => '编辑者的用户名/IP地址',
 'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
 'revdelete-radio-same' => '(不更改)',
-'revdelete-radio-set' => '隐藏',
-'revdelete-radio-unset' => '可见',
+'revdelete-radio-set' => '可见',
+'revdelete-radio-unset' => '隐藏',
 'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
 'revdelete-unsuppress' => '在已恢复的修订中移除限制',
 'revdelete-log' => '原因:',
@@ -1414,7 +1431,6 @@ $1",
 'preferences' => '设置',
 'mypreferences' => '设置',
 'prefs-edits' => '编辑数:',
-'prefsnologin' => '未登录',
 'prefsnologintext2' => '进行用户设置需要您$1。',
 'changepassword' => '更改密码',
 'prefs-skin' => '皮肤',
@@ -1429,9 +1445,9 @@ $1",
 'prefs-watchlist' => '监视列表',
 'prefs-watchlist-days' => '监视列表中显示的天数:',
 'prefs-watchlist-days-max' => '最多$1天',
-'prefs-watchlist-edits' => '扩展监视列表中显示的最大更改数:',
-'prefs-watchlist-edits-max' => '最大数:1000',
-'prefs-watchlist-token' => '监视列表权标:',
+'prefs-watchlist-edits' => '在扩展监视列表中显示的更改的最大数目:',
+'prefs-watchlist-edits-max' => '最大数:1000',
+'prefs-watchlist-token' => '监视列表密钥:',
 'prefs-misc' => '其他',
 'prefs-resetpass' => '更改密码',
 'prefs-changeemail' => '更改电子邮件地址',
@@ -1451,10 +1467,8 @@ $1",
 'recentchangesdays' => '最近更改中显示的天数:',
 'recentchangesdays-max' => '最多$1天',
 'recentchangescount' => '默认显示的编辑数:',
-'prefs-help-recentchangescount' => '该项包含最近更改、页面历史和日志。',
-'prefs-help-watchlist-token2' => '这是您的监视列表网络订阅源密钥的关键。
-知道它的人将能够读取您的监视列表,所以不应分享它。
-[[Special:ResetTokens|点击这里以重置它]]。',
+'prefs-help-recentchangescount' => '这包括近更改、页面历史和日志。',
+'prefs-help-watchlist-token2' => '这是你的监视列表网页feed的密钥。任何知道它的人均可以阅读你的监视列表,因此不要分享它。[[Special:ResetTokens|如果需要重置它,请点击这里]]。',
 'savedprefs' => '你的系统设置已保存。',
 'timezonelegend' => '时区:',
 'localtime' => '当地时间:',
@@ -1522,9 +1536,9 @@ $1",
 'prefs-displayrc' => '显示',
 'prefs-displaysearchoptions' => '显示',
 'prefs-displaywatchlist' => '显示',
-'prefs-tokenwatchlist' => '权标',
+'prefs-tokenwatchlist' => '密钥',
 'prefs-diffs' => '差异对比',
-'prefs-help-prefershttps' => '此首选项将在您下次登录时生效。',
+'prefs-help-prefershttps' => '该设置将在你下次登录时生效。',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => '电子邮件地址有效',
@@ -1710,6 +1724,9 @@ $1",
 'recentchanges-label-minor' => '这是一个小编辑',
 'recentchanges-label-bot' => '该编辑由机器人进行',
 'recentchanges-label-unpatrolled' => '该编辑尚未巡查',
+'recentchanges-label-plusminus' => '页面大小通过该字节数更改',
+'recentchanges-legend-newpage' => '(另见[[Special:NewPages|新页面列表]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "下面是过去'''$2'''天的最后'''$1'''个更改,截至$4 $5。",
 'rcnotefrom' => "下面是'''$2'''之后的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示$1之后的新更改',
@@ -2134,7 +2151,7 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1字节',
-'ncategories' => '$1个分类',
+'ncategories' => '$1个{{PLURAL:$1|分类}}',
 'ninterwikis' => '$1个跨语言链接',
 'nlinks' => '$1个链接',
 'nmembers' => '$1个成员',
@@ -2436,11 +2453,11 @@ $UNWATCHURL
 'deleteotherreason' => '其他/附加原因:',
 'deletereasonotherlist' => '其他原因',
 'deletereason-dropdown' => '*常见删除原因
-** 广告
-** 破坏行为
-** 侵犯著作权
-** 作者申请
-** 损坏的重定向',
+**广告
+**破坏行为
+**侵犯著作权
+**作者申请
+**受损重定向',
 'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
@@ -3059,28 +3076,28 @@ $2',
 'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
-'common.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86åº\94ç\94¨äº\8eæ\89\80æ\9c\89ç\9a\84皮肤 */',
-'cologneblue.css' => '/* æ­¤å¤\84ç\9a\84 CSS 将影响使用科隆香水蓝皮肤的用户 */',
-'monobook.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å½±å\93\8d使ç\94¨ Monobook 皮肤的用户 */',
-'modern.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å½±å\93\8d使ç\94¨ Modern 皮肤的用户 */',
-'vector.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å½±å\93\8d使ç\94¨ Vector 皮肤的用户 */',
-'print.css' => '/* æ­¤å¤\84ç\9a\84 CSS 将影响打印输出 */',
-'noscript.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å½±å\93\8d没æ\9c\89å\90¯ç\94¨ JavaScript 的用户 */',
-'group-autoconfirmed.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å\8fªä¼\9a影响自动确认用户 */',
-'group-bot.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å\8fªä¼\9a影响机器人 */',
-'group-sysop.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å\8fªä¼\9a影响管理员 */',
-'group-bureaucrat.css' => '/* æ­¤å¤\84ç\9a\84 CSS å°\86å\8fªä¼\9aå½±å\93\8d行政员 */',
+'common.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86åº\94ç\94¨äº\8eæ\89\80æ\9c\89皮肤 */',
+'cologneblue.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSS将影响使用科隆香水蓝皮肤的用户 */',
+'monobook.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å½±å\93\8d使ç\94¨MonoBook皮肤的用户 */',
+'modern.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å½±å\93\8d使ç\94¨ç\8e°ä»£皮肤的用户 */',
+'vector.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å½±å\93\8d使ç\94¨Vector皮肤的用户 */',
+'print.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSS将影响打印输出 */',
+'noscript.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å½±å\93\8då\81\9cç\94¨JavaScript的用户 */',
+'group-autoconfirmed.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å\8fª影响自动确认用户 */',
+'group-bot.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å\8fª影响机器人 */',
+'group-sysop.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å\8fª影响管理员 */',
+'group-bureaucrat.css' => '/* æ\94¾ç½®äº\8eè¿\99é\87\8cç\9a\84CSSå°\86å\8fªå½±å\93\8dæ\9cº行政员 */',
 
 # Scripts
-'common.js' => '/* 此处的JavaScript将加载于所有用户每一个页面。 */',
-'cologneblue.js' => '/* 此处的JavaScript将加载于使用科隆香水蓝皮肤的用户 */',
-'monobook.js' => '/* 此处的JavaScript将加载于使用Monobook皮肤的用户 */',
-'modern.js' => '/* 此处的JavaScript将加载于使用Modern皮肤的用户 */',
-'vector.js' => '/* 此处的JavaScript将加载于使用Vector皮肤的用户 */',
-'group-autoconfirmed.js' => '/* 此处的JavaScript将仅加载于自动确认用户 */',
-'group-bot.js' => '/* 此处的JavaScript将仅加载于机器人 */',
-'group-sysop.js' => '/* 此处的JavaScript将仅加载于管理员 */',
-'group-bureaucrat.js' => '/* 此处的JavaScript将仅加载于行政员 */',
+'common.js' => '/* 这里的任何JavaScript将为所有用户在每一页面载入加载。 */',
+'cologneblue.js' => '/* 这里的任何JavaScript将为使用科隆香水蓝皮肤的用户加载 */',
+'monobook.js' => '/* 这里的任何JavaScript将为使用MonoBook皮肤的用户加载 */',
+'modern.js' => '/* 这里的任何JavaScript将为使用现代皮肤的用户加载 */',
+'vector.js' => '/* 这里的任何JavaScript将为使用Vector皮肤的用户加载 */',
+'group-autoconfirmed.js' => '/* 这里的任何JavaScript将只为自动确认用户加载 */',
+'group-bot.js' => '/* 这里的任何JavaScript将只为机器人加载 */',
+'group-sysop.js' => '/* 这里的任何JavaScript将只为管理员加载 */',
+'group-bureaucrat.js' => '/* 这里的任何JavaScript将只为行政员加载 */',
 
 # Metadata
 'notacceptable' => '该网站服务器不能提供您的客户端能识别的数据格式。',
@@ -3284,7 +3301,7 @@ Variants for Chinese language
 'variantname-kk-cyrl' => 'kk-cyrl',
 
 # Metadata
-'metadata' => 'å\8e\9få§\8b数据',
+'metadata' => 'å\85\83数据',
 'metadata-help' => '此文件中包含有扩展的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。
 
 如果此文件的源文件已经被修改,一些信息在修改后的文件中将不能完全反映出来。',
@@ -4138,4 +4155,19 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'limitreport-expansiondepth' => '最高扩展深度',
 'limitreport-expensivefunctioncount' => '高开销函数分析器',
 
+# Special:ExpandTemplates
+'expandtemplates' => '展开模板',
+'expand_templates_intro' => '此特殊页面可以递归地展开所给文本中的模板。
+它同时还可展开诸如<nowiki>{{</nowiki>#language:...}}的解析器函数和诸如<nowiki>{{</nowiki>CURRENTDAY}}的变量。
+实际上,几乎所有在双重花括号中的内容都会被展开。',
+'expand_templates_title' => '上下文标题,用于{{FULLPAGENAME}}等:',
+'expand_templates_input' => '输入文本:',
+'expand_templates_output' => '结果:',
+'expand_templates_xml_output' => 'XML输出',
+'expand_templates_ok' => '确定',
+'expand_templates_remove_comments' => '移除注释',
+'expand_templates_remove_nowiki' => '在结果中隐藏<nowiki>标签',
+'expand_templates_generate_xml' => '显示XML语法树',
+'expand_templates_preview' => '预览',
+
 );
index 70417f8..c9c43cd 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 個子分類。',
@@ -539,12 +541,10 @@ $1',
 'ok' => '確定',
 'retrievedfrom' => '取自「$1」',
 'youhavenewmessages' => '您有$1($2)。',
-'newmessageslink' => '新訊息',
-'newmessagesdifflink' => '最新變更',
 'youhavenewmessagesfromusers' => '你有來自{{PLURAL:$3|另一位使用者|$3 位使用者}}的$1($2)。',
 'youhavenewmessagesmanyusers' => '你有來自多位使用者的$1( $2 )。',
-'newmessageslinkplural' => '{{PLURAL:$1|一項新訊息|新訊息}}',
-'newmessagesdifflinkplural' => 'æ\9c\80æ\96°{{PLURAL:$1|變更}}',
+'newmessageslinkplural' => '{{PLURAL:$1|一個新訊息|999=新訊息}}',
+'newmessagesdifflinkplural' => 'æ\96°è¿\91{{PLURAL:$1|變更}}',
 'youhavenewmessagesmulti' => '您在 $1 有新訊息',
 'editsection' => '編輯',
 'editold' => '編輯',
@@ -675,7 +675,8 @@ $2',
 'invalidtitle-knownnamespace' => '使用名字空間「$2」和文本「$3」的無效標題',
 'invalidtitle-unknownnamespace' => '使用未知名字空間編號$1和文本“$2”的無效標題',
 'exception-nologin' => '未登入',
-'exception-nologin-text' => '你需要登錄此wiki查閲此頁或進行操作。',
+'exception-nologin-text' => '你需要[[Special:Userlogin|登錄]]此wiki查閲此頁或進行操作。',
+'exception-nologin-text-manual' => '請$1以便能夠訪問此頁或行動。',
 
 # Virus scanner
 'virus-badscanner' => "損壞設定: 未知的病毒掃瞄器: ''$1''",
@@ -770,7 +771,7 @@ $2',
 'passwordtooshort' => '您的密碼不能少於$1個字元。',
 'password-name-match' => '您的密碼必須跟您的用戶名不相同。',
 'password-login-forbidden' => '這個用戶名稱及密碼的使用是被禁止的。',
-'mailmypassword' => '將新密碼寄給我',
+'mailmypassword' => '重設密碼',
 'passwordremindertitle' => '{{SITENAME}}的新臨時密碼',
 'passwordremindertext' => '有人(可能是您,來自IP位址$1)已請求{{SITENAME}}的新密碼 ($4)。
 用戶"$2"的一個新臨時密碼現在已被設定好為"$3"。
@@ -841,7 +842,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => '重新設定密碼',
 'passwordreset-text-one' => '完成此表格以重新設定您的密碼。',
-'passwordreset-text-many' => '{{PLURAL:$1|輸入其中一項以重新設定您的密碼。}}',
+'passwordreset-text-many' => '{{PLURAL:$1|鍵入一個電郵位址以便遞送新密碼。}}',
 'passwordreset-legend' => '重設密碼',
 'passwordreset-disabled' => '此圍記(Wiki)已禁用重設密碼。',
 'passwordreset-emaildisabled' => '此圍記(Wiki)已禁用電子郵件功能。',
@@ -1364,12 +1365,12 @@ $1",
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
 'prefs-edits' => '編輯次數:',
-'prefsnologin' => '還未登入',
+'prefsnologintext2' => '請$1以進入用戶設定。',
 'changepassword' => '變更密碼',
 'prefs-skin' => '外觀',
 'skin-preview' => '預覽',
 'datedefault' => '預設值',
-'prefs-beta' => 'Beta 功能',
+'prefs-beta' => '測試功能',
 'prefs-datetime' => '日期和時間',
 'prefs-labs' => '實驗中的功能',
 'prefs-user-pages' => '使用者頁面',
@@ -1662,6 +1663,9 @@ $1",
 'recentchanges-label-minor' => '這是一個小編輯',
 'recentchanges-label-bot' => '這次編輯是由機器人進行',
 'recentchanges-label-unpatrolled' => '這次編輯尚未巡查過',
+'recentchanges-label-plusminus' => '通過此處位元組的數位以更改頁面大小',
+'recentchanges-legend-newpage' => '(另見[[Special:NewPages|新頁面列表]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnote' => "以下是在$4 $5,最近 '''$2''' 天內的 '''$1''' 次最近更改記錄。",
 'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
 'rclistfrom' => '顯示自 $1 以來的新變更',
@@ -2356,13 +2360,13 @@ $1',
 'enotif_lastvisited' => '請參閱 $1 檢視你上次訪問後的所有更改。',
 'enotif_lastdiff' => '請參閱 $1 檢視該更改。',
 'enotif_anon_editor' => '匿名用戶$1',
-'enotif_body' => '$WATCHINGUSERNAME
+'enotif_body' => '$WATCHINGUSERNAME閣下,
 
 $PAGEINTRO $NEWPAGE
 
 編輯摘要:$PAGESUMMARY $PAGEMINOREDIT
 
\81¯ç¹«此編輯者:
\81¯çµ¡此編輯者:
 
 郵件:$PAGEEDITOR_EMAIL
 本站:$PAGEEDITOR_WIKI
@@ -3903,9 +3907,9 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 
 # Special:SpecialPages
 'specialpages' => '特殊頁面',
+'specialpages-note-top' => '圖例',
 'specialpages-note' => '* 標準特殊頁面。
-* <strong class="mw-specialpagerestricted">有限制的特殊頁面。</strong>
-* <span class="mw-specialpagecached">用於重新整理的特殊頁面(可能過時)。</span>',
+* <span class="mw-specialpagerestricted">用於重新整理的特殊頁面(可能過時)。</span>',
 'specialpages-group-maintenance' => '維護報告',
 'specialpages-group-other' => '其它特殊頁面',
 'specialpages-group-login' => '登入/建立新帳號',
@@ -4117,4 +4121,17 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'limitreport-expansiondepth' => '最高展開深度',
 'limitreport-expensivefunctioncount' => '昂貴分析器函數計數',
 
+# Special:ExpandTemplates
+'expandtemplates' => '展開模板',
+'expand_templates_intro' => '本特殊頁面用於將一些文字中的模版展開,包括模版中引用的模版。同時也展開解譯器函數如<nowiki>{{</nowiki>#language:...}},以及變數如<nowiki>{{</nowiki>CURRENTDAY}}&mdash;實際上,幾乎所有在雙括弧中的內容都被展開。',
+'expand_templates_title' => '上下文標題,用於 {{FULLPAGENAME}} 等:',
+'expand_templates_input' => '輸入文字:',
+'expand_templates_output' => '結果:',
+'expand_templates_xml_output' => 'XML輸出',
+'expand_templates_ok' => '確定',
+'expand_templates_remove_comments' => '移除注釋',
+'expand_templates_remove_nowiki' => '在結果中隱藏<nowiki>標記',
+'expand_templates_generate_xml' => '顯示XML語法樹',
+'expand_templates_preview' => '預覽',
+
 );
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 5a5eb58..52cb209 100644 (file)
@@ -87,7 +87,7 @@ class GetConfiguration extends Maintenance {
        public function finalSetup() {
                parent::finalSetup();
 
-               $this->regex = $this->getOption( 'regex' ) ? : $this->getOption( 'iregex' );
+               $this->regex = $this->getOption( 'regex' ) ?: $this->getOption( 'iregex' );
                if ( $this->regex ) {
                        $this->regex = '/' . $this->regex . '/';
                        if ( $this->hasOption( 'iregex' ) ) {
index e081c20..dadc84a 100644 (file)
@@ -36,7 +36,7 @@ if ( count( $args ) < 1 || isset( $options['help'] ) ) {
        if ( is_file( $filename ) ) {
 
                $title = isset( $options['title'] ) ? $options['title'] : titleFromFilename( $filename );
-               $title = Title::newFromURL( $title );
+               $title = Title::newFromText( $title );
 
                if ( is_object( $title ) ) {
 
index 7a10b66..b06c11f 100644 (file)
@@ -477,7 +477,7 @@ $wgOptionalMessages = array(
        'version-entrypoints-scriptpath',
        'mergehistory-revisionrow',
        'categoryviewer-pagedlinks',
-       'undelete-revisionrow',
+       'undelete-revision-row',
        'pageinfo-redirects-value',
        'created', // @deprecated. Remove in MediaWiki 1.23.
        'changed', // @deprecated. Remove in MediaWiki 1.23.
index a6c99bd..947dfe9 100644 (file)
@@ -188,7 +188,6 @@ $wgMessageStructure = array(
                'qbedit',
                'qbpageoptions',
                'qbmyoptions',
-               'qbspecialpages',
                'faq',
                'faqpage',
                'sitetitle',
@@ -406,7 +405,6 @@ $wgMessageStructure = array(
                'perfcached',
                'perfcachedts',
                'querypage-no-updates',
-               'wrong_wfQuery_params',
                'viewsource',
                'viewsource-title',
                'actionthrottled',
@@ -1328,6 +1326,9 @@ $wgMessageStructure = array(
                'recentchanges-label-minor',
                'recentchanges-label-bot',
                'recentchanges-label-unpatrolled',
+               'recentchanges-label-plusminus',
+               'recentchanges-legend-newpage',
+               'recentchanges-legend-plusminus',
                'rcnote',
                'rcnotefrom',
                'rclistfrom',
@@ -2204,7 +2205,7 @@ $wgMessageStructure = array(
                'undelete-error-long',
                'undelete-show-file-confirm',
                'undelete-show-file-submit',
-               'undelete-revisionrow',
+               'undelete-revision-row',
        ),
        'nsform' => array(
                'namespace',
@@ -3450,10 +3451,6 @@ $wgMessageStructure = array(
                'exif-urgency-high',
                'exif-urgency-other',
        ),
-       'edit-externally' => array(
-               'edit-externally',
-               'edit-externally-help',
-       ),
        'all' => array(
                'watchlistall2',
                'namespacesall',
@@ -3974,7 +3971,6 @@ $wgMessageStructure = array(
        ),
        'expandtemplates' => array(
                'expandtemplates',
-               'expandtemplates-desc',
                'expand_templates_intro',
                'expand_templates_title',
                'expand_templates_input',
@@ -4189,7 +4185,6 @@ Variants for Chinese language",
        'exif-maxaperturevalue' => '',
        'exif-iimcategory' => '',
        'exif-urgency' => '',
-       'edit-externally' => 'External editor support',
        'all' => "'all' in various places, this might be different for inflected languages",
        'confirmemail' => 'Email address confirmation',
        'scarytransclusion' => 'Scary transclusion',
index eda101e..243f97c 100644 (file)
@@ -30,7 +30,7 @@ require_once __DIR__ . '/Maintenance.php';
  *
  * @ingroup Maintenance
  */
-class mcTest extends Maintenance {
+class McTest extends Maintenance {
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Makes several 'set', 'incr' and 'get' requests on every"
@@ -111,5 +111,5 @@ class mcTest extends Maintenance {
        }
 }
 
-$maintClass = "mcTest";
+$maintClass = "McTest";
 require_once RUN_MAINTENANCE_IF_MAIN;
index 219b5d8..06ccccb 100644 (file)
@@ -28,7 +28,7 @@ require_once __DIR__ . '/Maintenance.php';
  *
  * @ingroup Maintenance
  */
-class nextJobDB extends Maintenance {
+class NextJobDB extends Maintenance {
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Pick a database that has pending jobs";
@@ -115,5 +115,5 @@ class nextJobDB extends Maintenance {
        }
 }
 
-$maintClass = "nextJobDb";
+$maintClass = "NextJobDb";
 require_once RUN_MAINTENANCE_IF_MAIN;
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 964b313..7ca04b4 100644 (file)
@@ -47,7 +47,7 @@ class UpdateCollation extends Maintenance {
                $this->mDescription = <<<TEXT
 This script will find all rows in the categorylinks table whose collation is
 out-of-date (cl_collation != '$wgCategoryCollation') and repopulate cl_sortkey
-using the page title and cl_sortkey_prefix.  If everything's collation is
+using the page title and cl_sortkey_prefix.  If all collations are
 up-to-date, it will do nothing.
 TEXT;
 
@@ -188,15 +188,14 @@ TEXT;
                                                __METHOD__
                                        );
                                }
+                               if ( $row ) {
+                                       $batchConds = array( $this->getBatchCondition( $row, $dbw ) );
+                               }
                        }
                        if ( !$dryRun ) {
                                $dbw->commit( __METHOD__ );
                        }
 
-                       if ( $row ) {
-                               $batchConds = array( $this->getBatchCondition( $row ) );
-                       }
-
                        $count += $res->numRows();
                        $this->output( "$count done.\n" );
 
@@ -219,8 +218,7 @@ TEXT;
         * Return an SQL expression selecting rows which sort above the given row,
         * assuming an ordering of cl_to, cl_type, cl_from
         */
-       function getBatchCondition( $row ) {
-               $dbw = $this->getDB( DB_MASTER );
+       function getBatchCondition( $row, $dbw ) {
                $fields = array( 'cl_to', 'cl_type', 'cl_from' );
                $first = true;
                $cond = false;
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 f198167..f497f2a 100644 (file)
@@ -30,7 +30,7 @@ require_once __DIR__ . '/commandLine.inc';
 /**
  * @ingroup Maintenance
  */
-class userOptions {
+class UserOptions {
        public $mQuick;
        public $mQuiet;
        public $mDry;
@@ -43,7 +43,7 @@ class userOptions {
        /** Constructor. Will show usage and exit if script options are not correct */
        function __construct( $opts, $args ) {
                if ( !$this->checkOpts( $opts, $args ) ) {
-                       userOptions::showUsageAndExit();
+                       UserOptions::showUsageAndExit();
                } else {
                        $this->mReady = $this->initializeOpts( $opts, $args );
                }
index e0de357..53db48c 100644 (file)
@@ -28,7 +28,7 @@
 require_once 'userOptions.inc';
 
 // Load up our tool system, exit with usage() if options are not fine
-$uo = new userOptions( $options, $args );
+$uo = new UserOptions( $options, $args );
 
 $uo->run();
 
index 31714a6..a022c6d 100644 (file)
@@ -158,6 +158,7 @@ return array(
        'jquery.autoEllipsis' => array(
                'scripts' => 'resources/jquery/jquery.autoEllipsis.js',
                'dependencies' => 'jquery.highlightText',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'jquery.badge' => array(
                'scripts' => 'resources/jquery/jquery.badge.js',
@@ -171,6 +172,7 @@ return array(
        'jquery.byteLimit' => array(
                'scripts' => 'resources/jquery/jquery.byteLimit.js',
                'dependencies' => 'jquery.byteLength',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'jquery.checkboxShiftClick' => array(
                'scripts' => 'resources/jquery/jquery.checkboxShiftClick.js',
@@ -225,6 +227,7 @@ return array(
        'jquery.highlightText' => array(
                'scripts' => 'resources/jquery/jquery.highlightText.js',
                'dependencies' => 'jquery.mwExtension',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'jquery.hoverIntent' => array(
                'scripts' => 'resources/jquery/jquery.hoverIntent.js',
@@ -605,6 +608,7 @@ return array(
        'mediawiki.api' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.js',
                'dependencies' => 'mediawiki.util',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.api.category' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.category.js',
@@ -710,6 +714,7 @@ return array(
                'dependencies' => array(
                        'mediawiki.page.startup',
                ),
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.notify' => array(
                'scripts' => 'resources/mediawiki/mediawiki.notify.js',
@@ -736,9 +741,11 @@ return array(
                        'jquery.byteLength',
                        'mediawiki.util',
                ),
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.Uri' => array(
                'scripts' => 'resources/mediawiki/mediawiki.Uri.js',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.user' => array(
                'scripts' => 'resources/mediawiki/mediawiki.user.js',
@@ -748,6 +755,7 @@ return array(
                        'user.options',
                        'user.tokens',
                ),
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.util' => array(
                'scripts' => 'resources/mediawiki/mediawiki.util.js',
@@ -800,6 +808,7 @@ return array(
        'mediawiki.action.history.diff' => array(
                'styles' => 'resources/mediawiki.action/mediawiki.action.history.diff.css',
                'group' => 'mediawiki.action.history',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.action.view.dblClickEdit' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.view.dblClickEdit.js',
index 993fa8c..38938ab 100644 (file)
@@ -3,6 +3,11 @@
        float: right;
 }
 
+/* collapse links in captions should be inline */
+caption .mw-collapsible-toggle {
+       float: none;
+}
+
 /* list-items go as wide as their parent element, don't float them inside list items */
 li .mw-collapsible-toggle {
        float: none;
index 0cd6417..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.
         *
 
                if ( !options.plainMode && $collapsible.is( 'table' ) ) {
                        // Tables
-                       $containers = $collapsible.find( '> tbody > tr' );
+                       // If there is a caption, hide all rows; otherwise, only hide body rows
+                       if ( $collapsible.find( '> caption' ).length ) {
+                               $containers = $collapsible.find( '> * > tr' );
+                       } else {
+                               $containers = $collapsible.find( '> tbody > tr' );
+                       }
                        if ( $defaultToggle ) {
                                // Exclude table row containing togglelink
                                $containers = $containers.not( $defaultToggle.closest( 'tr' ) );
                }
 
                return this.each( function () {
-                       var $collapsible, collapseText, expandText, $toggle, actionHandler, buildDefaultToggleLink,
+                       var $collapsible, collapseText, expandText, $caption, $toggle, actionHandler, buildDefaultToggleLink,
                                premadeToggleHandler, $toggleLink, $firstItem, collapsibleId, $customTogglers, firstval;
 
                        // Ensure class "mw-collapsible" is present in case .makeCollapsible()
                        } 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 = {};
                                // contents and add the toggle link. Different elements are
                                // treated differently.
                                if ( $collapsible.is( 'table' ) ) {
-                                       // The toggle-link will be in one the the cells (td or th) of the first row
-                                       $firstItem = $collapsible.find( 'tr:first th, tr:first td' );
-                                       $toggle = $firstItem.find( '> .mw-collapsible-toggle' );
 
-                                       // If theres no toggle link, add it to the last cell
-                                       if ( !$toggle.length ) {
-                                               $toggleLink = buildDefaultToggleLink().prependTo( $firstItem.eq( -1 ) );
+                                       // If the table has a caption, collapse to the caption
+                                       // as opposed to the first row
+                                       $caption = $collapsible.find( '> caption' );
+                                       if ( $caption.length ) {
+                                               $toggle = $caption.find( '> .mw-collapsible-toggle' );
+
+                                               // If there is no toggle link, add it to the end of the caption
+                                               if ( !$toggle.length ) {
+                                                       $toggleLink = buildDefaultToggleLink().appendTo( $caption );
+                                               } else {
+                                                       actionHandler = premadeToggleHandler;
+                                                       $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler );
+                                               }
                                        } else {
-                                               actionHandler = premadeToggleHandler;
-                                               $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler );
+                                               // The toggle-link will be in one the the cells (td or th) of the first row
+                                               $firstItem = $collapsible.find( 'tr:first th, tr:first td' );
+                                               $toggle = $firstItem.find( '> .mw-collapsible-toggle' );
+
+                                               // If theres no toggle link, add it to the last cell
+                                               if ( !$toggle.length ) {
+                                                       $toggleLink = buildDefaultToggleLink().prependTo( $firstItem.eq( -1 ) );
+                                               } else {
+                                                       actionHandler = premadeToggleHandler;
+                                                       $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler );
+                                               }
                                        }
 
                                } else if ( $collapsible.is( 'ul' ) || $collapsible.is( 'ol' ) ) {
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 631d13d..3927f00 100644 (file)
@@ -73,6 +73,10 @@ var language = {
                        return form;
                } );
 
+               if ( forms.length === 0 ) {
+                       return '';
+               }
+
                pluralRules = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'pluralRules' );
                if ( !pluralRules ) {
                        // default fallback.
index fb44a76..3c93de0 100644 (file)
@@ -4,28 +4,57 @@
  * PDF and DjVu files
  */
 ( function (mw, $) {
+
+       // Initialize ajax request variable
+       var xhr;
+
        // Use jQuery's load function to specifically select and replace table.multipageimage's child
        // tr with the new page's table.multipageimage's tr element.
        // table.multipageimage always has only one row.
-       function loadPage( page ) {
+       function loadPage( page, hist ) {
+               if ( xhr ) {
+                       // Abort previous requests to prevent backlog created by
+                       // repeatedly pressing back/forwards buttons
+                       xhr.abort();
+               }
+
                var $multipageimage = $( 'table.multipageimage' ),
+                       $spinner;
+
+               // Add a new spinner if one doesn't already exist
+               if ( !$multipageimage.find( '.mw-spinner' ).length ) {
+
                        $spinner = $.createSpinner( {
                                size: 'large',
                                type: 'block'
-                       } );
-
-               // Set the spinner's dimensions equal to the table's dimensions so that
-               // the current scroll position is not lost after the table is emptied prior to
-               // its contents being updated
-               $spinner.css( {
-                       height: $multipageimage.find( 'tr' ).height(),
-                       width: $multipageimage.find( 'tr' ).width()
-               } );
+                       } )
+                               // Set the spinner's dimensions equal to the table's dimensions so that
+                               // the current scroll position is not lost after the table is emptied prior to
+                               // its contents being updated
+                               .css( {
+                                       height: $multipageimage.find( 'tr' ).height(),
+                                       width: $multipageimage.find( 'tr' ).width()
+                               } );
+
+                       $multipageimage.empty().append( $spinner );
+               }
 
-               $multipageimage.empty().append( $spinner ).load(
-                       page + ' table.multipageimage tr',
-                       ajaxifyPageNavigation
-               );
+               xhr = $.ajax( {
+                       url: page,
+                       success: function ( data ) {
+                               // Load the page
+                               $multipageimage.empty().append( $( data ).find( 'table.multipageimage tr' ) );
+                               // Fire hook because the page's content has changed
+                               mw.hook( 'wikipage.content' ).fire( $multipageimage );
+                               // Set up the new page for pagination
+                               ajaxifyPageNavigation();
+                               // Add new page of image to history.  To preserve the back-forwards chain in the browser,
+                               // if the user gets here via the back/forward button, don't update the history.
+                               if ( window.history && history.pushState && !hist ) {
+                                       history.pushState( { url: page }, document.title, page );
+                               }
+                       }
+               } );
        }
 
        function ajaxifyPageNavigation() {
 
        $( document ).ready( function() {
                // The presence of table.multipageimage signifies that this file is a multi-page image
-               if( mw.config.get( 'wgNamespaceNumber' ) === 6 && $( 'table.multipageimage' ).length !== 0 ) {
+               if ( mw.config.get( 'wgNamespaceNumber' ) === 6 && $( 'table.multipageimage' ).length !== 0 ) {
                        ajaxifyPageNavigation();
+
+                       // Set up history.pushState (if available), so that when the user browses to a new page of
+                       // the same file, the browser's history is updated. If the user clicks the back/forward button
+                       // in the midst of navigating a file's pages, load the page inline.
+                       if ( window.history && history.pushState && history.replaceState ) {
+                               history.replaceState( { url: window.location.href }, '' );
+                               $( window ).on( 'popstate', function ( e ) {
+                                       var state = e.originalEvent.state;
+                                       if ( state ) {
+                                               loadPage( state.url, true );
+                                       }
+                               });
+                       }
                }
        } );
-}( mediaWiki, jQuery ) );
+}( mediaWiki, jQuery ) );
\ No newline at end of file
index 5e4af7b..b96a26e 100644 (file)
@@ -5,3 +5,27 @@
 .mw-changeslist-line-watched .mw-title {
        font-weight: bold;
 }
+
+.mw-changeslist-legend {
+       float: right;
+       margin-left: 1em;
+       margin-bottom: 0.5em;
+       clear: right;
+       font-size: 85%;
+       line-height: 1.2em;
+       padding: 0.5em;
+       border: 1px solid #ddd;
+}
+
+.mw-changeslist-legend dt {
+       float: left;
+}
+
+.mw-changeslist-legend dd {
+       margin-left: 1.5em;
+       line-height: 1.3em;
+}
+
+.mw-changeslist-legend dd.mw-changeslist-legend-plusminus {
+       margin-left: 3.5em;
+}
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 10d36ff..a931756 100644 (file)
        .buttonColors();
        border-radius: @buttonBorderRadius;
 
-       // Content styling
+       // Ensure that buttons and inputs are nicely aligned when they have differing heights
        vertical-align: middle;
 
+       // Content styling
        text-align: center;
        text-decoration: none;
 
index 4ed7261..1b177ee 100644 (file)
@@ -19,6 +19,9 @@
 
        color: @agoraTextColor;
        padding: 0.35em 0.5em 0.35em 0.5em;
+
+       // Ensure that buttons and inputs are nicely aligned when they have differing heights
+       vertical-align: middle;
 }
 
 .agora-label-styling() {
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;
index 8a8215d..724ca5e 100644 (file)
@@ -1749,38 +1749,6 @@ var mw = ( function ( $, undefined ) {
                                        // Cache hit stats
                                        stats: { hits: 0, misses: 0, expired: 0 },
 
-                                       // Experiment data
-                                       experiment: ( function () {
-                                               var start = ( new Date() ).getTime(), id = 0, seed = 0;
-
-                                               try {
-                                                       id = JSON.parse( localStorage.getItem( 'moduleStorageExperiment' ) );
-                                                       if ( typeof id !== 'number' ) {
-                                                               id = Math.floor( Math.random() * Math.random() * 1e16 );
-                                                               localStorage.setItem( 'moduleStorageExperiment', id );
-                                                       }
-                                                       seed = id % 2000;
-                                               } catch ( e ) {}
-
-                                               return {
-                                                       // Unique identifier for this browser. This allows us to group all
-                                                       // datapoints generated by a particular browser, which in turn allows us
-                                                       // to see how the initial load compares to subsequent page loads.
-                                                       id: id,
-
-                                                       // Group assignment may be 0 (not in experiment), 1 (control group), or 2
-                                                       // (experimental group). Browsers that don't implement all the prerequisite APIs
-                                                       // (JSON and Web Storage) are ineligible. Eligible browsers have a 0.1% chance
-                                                       // of being included in the experiment, in which case they are equally likely to
-                                                       // be assigned to either the experimental or control group.
-                                                       group: seed === 1 ? 1 : ( seed === 2 ? 2 : 0 ),
-
-                                                       // Assess module storage performance by measuring the time between this
-                                                       // reference point and the window load event.
-                                                       start: start
-                                               };
-                                       }() ),
-
                                        /**
                                         * Construct a JSON-serializable object representing the content of the store.
                                         * @return {Object} Module store contents.
@@ -1838,12 +1806,9 @@ var mw = ( function ( $, undefined ) {
                                                        return;
                                                }
 
-                                               if (
-                                                       // We're in debug mode
-                                                       mw.config.get( 'debug' ) ||
-                                                       // Module storage is neither enabled by default, nor enabled for this user's group.
-                                                       !( mw.config.get( 'wgResourceLoaderStorageEnabled' ) || mw.loader.store.experiment.group === 2 )
-                                               ) {
+                                               if ( !mw.config.get( 'wgResourceLoaderStorageEnabled' ) || mw.config.get( 'debug' ) ) {
+                                                       // Disabled by configuration, or because debug mode is set.
+                                                       mw.loader.store.enabled = false;
                                                        return;
                                                }
 
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
index e3c2c51..83d043e 100644 (file)
@@ -82,7 +82,7 @@
                },
                addData: function ( $collapsible ) {
                        var $settings = $collapsible.parent().data( 'collapsibleTabsSettings' );
-                       if ( $settings !== null ) {
+                       if ( $settings ) {
                                $collapsible.data( 'collapsibleTabsSettings', {
                                        expandedContainer: $settings.expandedContainer,
                                        collapsedContainer: $settings.collapsedContainer,
@@ -93,7 +93,7 @@
                },
                getSettings: function ( $collapsible ) {
                        var $settings = $collapsible.data( 'collapsibleTabsSettings' );
-                       if ( $settings === undefined ) {
+                       if ( !$settings ) {
                                $.collapsibleTabs.addData( $collapsible );
                                $settings = $collapsible.data( 'collapsibleTabsSettings' );
                        }
                        } );
                },
                moveToCollapsed: function ( ele ) {
-                       var data, expContainerSettings, target,
+                       var outerData, expContainerSettings, target,
                                $moving = $( ele );
 
-                       data = $.collapsibleTabs.getSettings( $moving );
-                       if ( !data ) {
+                       outerData = $.collapsibleTabs.getSettings( $moving );
+                       if ( !outerData ) {
                                return;
                        }
-                       expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+                       expContainerSettings = $.collapsibleTabs.getSettings( $( outerData.expandedContainer ) );
                        if ( !expContainerSettings ) {
                                return;
                        }
                        expContainerSettings.shifting = true;
 
                        // Remove the element from where it's at and put it in the dropdown menu
-                       target = data.collapsedContainer;
+                       target = outerData.collapsedContainer;
                        $moving.css( 'position', 'relative' )
                                .css( ( rtl ? 'left' : 'right' ), 0 )
                                .animate( { width: '1px' }, 'normal', function () {
                                        $( this ).hide();
                                        // add the placeholder
                                        $( '<span class="placeholder" style="display: none;"></span>' ).insertAfter( this );
-                                       // XXX: 'data' is undefined here, should the 'data' from the outer scope have
-                                       // a different name?
-                                       $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );
+                                       $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', outerData );
                                        $( this ).attr( 'style', 'display: list-item;' );
                                        data = $.collapsibleTabs.getSettings( $( ele ) );
                                        if ( data ) {
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'
-        )
+       )
 );
index 76a9a10..0b04c6e 100644 (file)
@@ -1,7 +1,10 @@
 <?php
 
 class DiffHistoryBlobTest extends MediaWikiTestCase {
+
        protected function setUp() {
+               parent::setUp();
+
                if ( !extension_loaded( 'xdiff' ) ) {
                        $this->markTestSkipped( 'The xdiff extension is not available' );
 
@@ -17,7 +20,6 @@ class DiffHistoryBlobTest extends MediaWikiTestCase {
 
                        return;
                }
-               parent::setUp();
        }
 
        /**
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 376009d..30a554e 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * @author Adam Shorland
  */
-class StatusTest extends MediaWikiTestCase {
+class StatusTest extends MediaWikiLangTestCase {
 
        public function testCanConstruct() {
                new Status();
@@ -126,6 +126,7 @@ class StatusTest extends MediaWikiTestCase {
         * @dataProvider provideMockMessageDetails
         * @covers Status::warning
         * @covers Status::getWarningsArray
+        * @covers Status::getStatusArray
         */
        public function testWarningWithMessage( $mockDetails ) {
                $status = new Status();
@@ -147,6 +148,7 @@ class StatusTest extends MediaWikiTestCase {
         * @dataProvider provideMockMessageDetails
         * @covers Status::error
         * @covers Status::getErrorsArray
+        * @covers Status::getStatusArray
         */
        public function testErrorWithMessage( $mockDetails ) {
                $status = new Status();
@@ -245,7 +247,7 @@ class StatusTest extends MediaWikiTestCase {
        }
 
        /**
-        * @dataProvider provideGetWikiText
+        * @dataProvider provideGetWikiTextAndHtml
         * @covers Status::getWikiText
         * @todo test long and short context messages generated through this method
         *       this can not really be done now due to use of wfMessage()->plain()
@@ -255,12 +257,23 @@ class StatusTest extends MediaWikiTestCase {
                $this->assertEquals( $expected, $status->getWikiText() );
        }
 
+       /**
+        * @dataProvider provideGetWikiTextAndHtml
+        * @covers Status::getHtml
+        * @todo test long and short context messages generated through this method
+        *       this can not really be done now due to use of $this->getWikiText using wfMessage()->plain()
+        *       It is possible to mock such methods but only if namespaces are used
+        */
+       public function testGetHtml( Status $status, $expected ) {
+               $this->assertEquals( $expected, $status->getHTML() );
+       }
+
        /**
         * @return array of arrays with values;
         *    0 => status object
         *    1 => expected string (with no context)
         */
-       public static function provideGetWikiText() {
+       public static function provideGetWikiTextAndHtml() {
                $testCases = array();
 
                $testCases[ 'GoodStatus' ] = array(
@@ -308,12 +321,155 @@ class StatusTest extends MediaWikiTestCase {
                return $testCases;
        }
 
-       //todo test getMessage
-       //todo test getErrorMessage
-       //todo test getHTML
-       //todo test getErrorMessageArray
-       //todo test getStatusArray
-       //todo test getErrorsByType
-       //todo test replaceMessage
+       /**
+        * @dataProvider provideGetMessage
+        * @covers Status::getMessage
+        * @todo test long and short context messages generated through this method
+        */
+       public function testGetMessage( Status $status, $expectedParams = array(), $expectedKey ) {
+               $message = $status->getMessage();
+               $this->assertInstanceOf( 'Message', $message );
+               $this->assertEquals( $expectedParams, $message->getParams() );
+               $this->assertEquals( $expectedKey, $message->getKey() );
+       }
+
+       /**
+        * @return array of arrays with values;
+        *    0 => status object
+        *    1 => expected Message Params (with no context)
+        */
+       public static function provideGetMessage() {
+               $testCases = array();
+
+               $testCases[ 'GoodStatus' ] = array(
+                       new Status(),
+                       array( "Status::getMessage called for a good result, this is incorrect\n" ),
+                       'internalerror_info'
+               );
+
+               $status = new Status();
+               $status->ok = false;
+               $testCases[ 'GoodButNoError' ] = array(
+                       $status,
+                       array( "Status::getMessage: Invalid result object: no error text but not OK\n" ),
+                       'internalerror_info'
+               );
+
+               $status = new Status();
+               $status->warning( 'fooBar!' );
+               $testCases[ '1StringWarning' ] = array(
+                       $status,
+                       array(),
+                       "fooBar!"
+               );
+
+               //NOTE: this seems to return a string instead of a Message object...
+//             $status = new Status();
+//             $status->warning( 'fooBar!' );
+//             $status->warning( 'fooBar2!' );
+//             $testCases[ '2StringWarnings' ] = array(
+//                     $status,
+//                     array(),
+//                     ''
+//             );
+
+               $status = new Status();
+               $status->warning( new Message( 'fooBar!', array( 'foo', 'bar' )  ) );
+               $testCases[ '1MessageWarning' ] = array(
+                       $status,
+                       array( 'foo', 'bar' ),
+                       "fooBar!",
+               );
+
+               //NOTE: this seems to return a string instead of a Message object...
+//             $status = new Status();
+//             $status->warning( new Message( 'fooBar!', array( 'foo', 'bar' ) ) );
+//             $status->warning( new Message( 'fooBar2!' ) );
+//             $testCases[ '2MessageWarnings' ] = array(
+//                     $status,
+//                     array(),
+//                     "",
+//             );
+
+               return $testCases;
+       }
+
+       /**
+        * @covers Status::replaceMessage
+        */
+       public function testReplaceMessage() {
+               $status = new Status();
+               $message = new Message( 'key1', array( 'foo1', 'bar1' ) );
+               $status->error( $message );
+               $newMessage = new Message( 'key2', array( 'foo2', 'bar2' ) );
+
+               $status->replaceMessage( $message, $newMessage );
+
+               $this->assertEquals( $newMessage, $status->errors[0]['message'] );
+       }
+
+       /**
+        * @covers Status::getErrorMessage
+        */
+       public function testGetErrorMessage() {
+               $method = new ReflectionMethod( 'Status', 'getErrorMessage' );
+               $method->setAccessible( true );
+               $status = new Status();
+               $key = 'foo';
+               $params = array( 'bar' );
+
+               /** @var Message $message */
+               $message = $method->invoke( $status, array_merge( array( $key ), $params ) );
+               $this->assertInstanceOf( 'Message', $message );
+               $this->assertEquals( $key, $message->getKey() );
+               $this->assertEquals( $params, $message->getParams() );
+       }
+
+       /**
+        * @covers Status::getErrorMessageArray
+        */
+       public function testGetErrorMessageArray() {
+               $method = new ReflectionMethod( 'Status', 'getErrorMessageArray' );
+               $method->setAccessible( true );
+               $status = new Status();
+               $key = 'foo';
+               $params = array( 'bar' );
+
+               /** @var Message[] $messageArray */
+               $messageArray = $method->invoke(
+                       $status,
+                       array(
+                               array_merge( array( $key ), $params ),
+                               array_merge( array( $key ), $params )
+                       )
+               );
+
+               $this->assertInternalType( 'array', $messageArray );
+               $this->assertCount( 2, $messageArray );
+               foreach ( $messageArray as $message ) {
+                       $this->assertInstanceOf( 'Message', $message );
+                       $this->assertEquals( $key, $message->getKey() );
+                       $this->assertEquals( $params, $message->getParams() );
+               }
+       }
+
+       /**
+        * @covers Status::getErrorsByType
+        */
+       public function testGetErrorsByType() {
+               $status = new Status();
+               $warning = new Message( 'warning111' );
+               $error = new Message( 'error111' );
+               $status->warning( $warning );
+               $status->error( $error );
+
+               $warnings = $status->getErrorsByType( 'warning' );
+               $errors = $status->getErrorsByType( 'error' );
+
+               $this->assertCount( 1, $warnings );
+               $this->assertCount( 1, $errors );
+               $this->assertEquals( $warning, $warnings[0]['message'] );
+               $this->assertEquals( $error, $errors[0]['message'] );
+       }
 
 }
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 8fe08e1..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] );
@@ -126,6 +126,9 @@ class ApiEditPageTest extends ApiTestCase {
                $this->assertEquals( $data, $page->getContent()->serialize() );
        }
 
+       /**
+        * @return array
+        */
        public static function provideEditAppend() {
                return array(
                        array( #0: append
@@ -407,6 +410,10 @@ class ApiEditPageTest extends ApiTestCase {
                        "no edit conflict expected here" );
        }
 
+       /**
+        * @param WikiPage $page
+        * @param string|int $timestamp
+        */
        protected function forceRevisionDate( WikiPage $page, $timestamp ) {
                $dbw = wfGetDB( DB_MASTER );
 
index 6e5edbf..6659414 100644 (file)
@@ -99,6 +99,12 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                return true;
        }
 
+       /**
+        * @param IContextSource $context
+        * @param array|null $options
+        *
+        * @return array
+        */
        public function getOptionKinds( IContextSource $context, $options = null ) {
                // Match with above.
                $kinds = array(
index 7e18b6e..42f02fa 100644 (file)
@@ -29,7 +29,10 @@ abstract class ApiTestCaseUpload extends ApiTestCase {
 
        /**
         * Helper function -- remove files and associated articles by Title
-        * @param $title Title: title to be removed
+        *
+        * @param Title $title title to be removed
+        *
+        * @return bool
         */
        public function deleteFileByTitle( $title ) {
                if ( $title->exists() ) {
@@ -53,7 +56,10 @@ abstract class ApiTestCaseUpload extends ApiTestCase {
 
        /**
         * Helper function -- remove files and associated articles with a particular filename
-        * @param $fileName String: filename to be removed
+        *
+        * @param string $fileName filename to be removed
+        *
+        * @return bool
         */
        public function deleteFileByFileName( $fileName ) {
                return $this->deleteFileByTitle( Title::newFromText( $fileName, NS_FILE ) );
@@ -61,7 +67,10 @@ abstract class ApiTestCaseUpload extends ApiTestCase {
 
        /**
         * Helper function -- given a file on the filesystem, find matching content in the db (and associated articles) and remove them.
-        * @param $filePath String: path to file on the filesystem
+        *
+        * @param string $filePath path to file on the filesystem
+        *
+        * @return bool
         */
        public function deleteFileByContent( $filePath ) {
                $hash = FSFile::getSha1Base36FromPath( $filePath );
@@ -77,10 +86,14 @@ abstract class ApiTestCaseUpload extends ApiTestCase {
        /**
         * Fake an upload by dumping the file into temp space, and adding info to $_FILES.
         * (This is what PHP would normally do).
-        * @param $fieldName String: name this would have in the upload form
-        * @param $fileName String: name to title this
-        * @param $type String: mime type
-        * @param $filePath String: path where to find file contents
+        *
+        * @param string $fieldName name this would have in the upload form
+        * @param string $fileName name to title this
+        * @param string $type mime type
+        * @param string $filePath path where to find file contents
+        *
+        * @throws Exception
+        * @return bool
         */
        function fakeUploadFile( $fieldName, $fileName, $type, $filePath ) {
                $tmpName = tempnam( wfTempDir(), "" );
index b089894..ba7fb25 100644 (file)
@@ -3,6 +3,7 @@
 /**
  * @group API
  * @group Database
+ * @group medium
  */
 
 /**
@@ -109,6 +110,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        $this->markTestIncomplete( $e->getMessage() );
                }
 
+               /** @var array $filePaths */
                $filePath = $filePaths[0];
                $fileSize = filesize( $filePath );
                $fileName = basename( $filePath );
@@ -198,6 +200,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                }
 
                // we'll reuse this filename
+               /** @var array $filePaths */
                $fileName = basename( $filePaths[0] );
 
                // clear any other files with the same name
@@ -268,6 +271,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        $this->markTestIncomplete( $e->getMessage() );
                }
 
+               /** @var array $filePaths */
                $fileNames[0] = basename( $filePaths[0] );
                $fileNames[1] = "SameContentAs" . $fileNames[0];
 
@@ -352,6 +356,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        $this->markTestIncomplete( $e->getMessage() );
                }
 
+               /** @var array $filePaths */
                $filePath = $filePaths[0];
                $fileSize = filesize( $filePath );
                $fileName = basename( $filePath );
index 13b751b..1d534ee 100644 (file)
@@ -113,7 +113,11 @@ class RandomImageGenerator {
 
        /**
         * Figure out how we write images. This is a factor of both format and the local system
-        * @param $format (a typical extension like 'svg', 'jpg', etc.)
+        *
+        * @param string $format (a typical extension like 'svg', 'jpg', etc.)
+        *
+        * @throws Exception
+        * @return string
         */
        function getImageWriteMethod( $format ) {
                global $wgUseImageMagick, $wgImageMagickConvertCommand;
@@ -219,9 +223,12 @@ class RandomImageGenerator {
        /**
         * Based on image specification, write a very simple SVG file to disk.
         * Ignores the background spec because transparency is cool. :)
-        * @param $spec: spec describing background and shapes to draw
-        * @param $format: file format to write (which is obviously always svg here)
-        * @param $filename: filename to write to
+        *
+        * @param array $spec spec describing background and shapes to draw
+        * @param string $format file format to write (which is obviously always svg here)
+        * @param string $filename filename to write to
+        *
+        * @throws Exception
         */
        public function writeSvg( $spec, $format, $filename ) {
                $svg = new SimpleXmlElement( '<svg/>' );
@@ -247,9 +254,9 @@ class RandomImageGenerator {
 
        /**
         * Based on an image specification, write such an image to disk, using Imagick PHP extension
-        * @param $spec: spec describing background and circles to draw
-        * @param $format: file format to write
-        * @param $filename: filename to write to
+        * @param array $spec spec describing background and circles to draw
+        * @param string $format file format to write
+        * @param string $filename filename to write to
         */
        public function writeImageWithApi( $spec, $format, $filename ) {
                // this is a hack because I can't get setImageOrientation() to work. See below.
@@ -304,7 +311,7 @@ class RandomImageGenerator {
         * This is used when simulating a rotated image capture with Exif orientation
         * @param $spec Object returned by getImageSpec
         * @param $matrix 2x2 transformation matrix
-        * @return transformed Spec
+        * @return array transformed Spec
         */
        private static function rotateImageSpec( &$spec, $matrix ) {
                $tSpec = array();
@@ -361,9 +368,12 @@ class RandomImageGenerator {
         *   -draw 'fill rgb(99,123,231) circle 59,39 56,57' \
         *   -draw 'fill rgb(240,12,32)  circle 50,21 50,3'  filename.png
         *
-        * @param $spec: spec describing background and shapes to draw
-        * @param $format: file format to write (unused by this method but kept so it has the same signature as writeImageWithApi)
-        * @param $filename: filename to write to
+        * @param array $spec spec describing background and shapes to draw
+        * @param string $format file format to write (unused by this method but kept so it has the same signature as
+        * writeImageWithApi)
+        * @param string $filename filename to write to
+        *
+        * @return bool
         */
        public function writeImageWithCommandLine( $spec, $format, $filename ) {
                global $wgImageMagickConvertCommand;
@@ -388,7 +398,7 @@ class RandomImageGenerator {
        /**
         * Generate a string of random colors for ImageMagick or SVG, like "rgb(12, 37, 98)"
         *
-        * @return {String}
+        * @return string
         */
        public function getRandomColor() {
                $components = array();
@@ -422,8 +432,10 @@ class RandomImageGenerator {
         *
         * Will throw exception if the file could not be read or if it had fewer lines than requested.
         *
-        * @param $number_desired Integer: number of lines desired
-        * @return Array: of exactly n elements, drawn randomly from lines the file
+        * @param int $number_desired number of lines desired
+        *
+        * @throws Exception
+        * @return array of exactly n elements, drawn randomly from lines the file
         */
        private function getRandomLines( $number_desired ) {
                $filepath = $this->dictionaryFile;
index a68c830..9c5b3ca 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- *
  *
  * Created on Feb 6, 2013
  *
@@ -35,6 +34,8 @@ require_once 'ApiQueryTestBase.php';
  * @covers ApiQuery
  */
 class ApiQueryBasicTest extends ApiQueryTestBase {
+       protected $exceptionFromAddDBData;
+
        /**
         * Create a set of pages. These must not change, otherwise the tests might give wrong results.
         * @see MediaWikiTestCase::addDBData()
@@ -130,6 +131,7 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
                ) )
        );
 
+       // Although this appears to have no use it is used by testLists()
        private static $allcategories = array(
                array( 'list' => 'allcategories', 'acprefix' => 'AQBT-' ),
                array( 'allcategories' => array(
@@ -236,6 +238,7 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
                $this->check( self::$alllinks );
                $this->check( self::$alltransclusions );
                // This test is temporarily disabled until a sqlite bug is fixed
+               // Confirmed still broken 15-nov-2013
                // $this->check( self::$allcategories );
                $this->check( self::$backlinks );
                $this->check( self::$embeddedin );
@@ -367,29 +370,30 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
 
        /**
         * Recursively compare arrays, ignoring mismatches in numeric key and pageids.
-        * @param $expected array expected values
-        * @param $result array returned values
+        *
+        * @param $expectedArray array expected values
+        * @param $resultArray array returned values
         */
-       private function assertQueryResults( $expected, $result ) {
-               reset( $expected );
-               reset( $result );
+       private function assertQueryResults( $expectedArray, $resultArray ) {
+               reset( $expectedArray );
+               reset( $resultArray );
                while ( true ) {
-                       $e = each( $expected );
-                       $r = each( $result );
+                       $expectedValue = each( $expectedArray );
+                       $resultValue = each( $resultArray );
                        // If either of the arrays is shorter, abort. If both are done, success.
-                       $this->assertEquals( (bool)$e, (bool)$r );
-                       if ( !$e ) {
+                       $this->assertEquals( (bool)$expectedValue, (bool)$resultValue );
+                       if ( !$expectedValue ) {
                                break; // done
                        }
                        // continue only if keys are identical or both keys are numeric
-                       $this->assertTrue( $e['key'] === $r['key'] || ( is_numeric( $e['key'] ) && is_numeric( $r['key'] ) ) );
+                       $this->assertTrue( $expectedValue['key'] === $resultValue['key'] || ( is_numeric( $expectedValue['key'] ) && is_numeric( $resultValue['key'] ) ) );
                        // don't compare pageids
-                       if ( $e['key'] !== 'pageid' ) {
+                       if ( $expectedValue['key'] !== 'pageid' ) {
                                // If values are arrays, compare recursively, otherwise compare with ===
-                               if ( is_array( $e['value'] ) && is_array( $r['value'] ) ) {
-                                       $this->assertQueryResults( $e['value'], $r['value'] );
+                               if ( is_array( $expectedValue['value'] ) && is_array( $resultValue['value'] ) ) {
+                                       $this->assertQueryResults( $expectedValue['value'], $resultValue['value'] );
                                } else {
-                                       $this->assertEquals( $e['value'], $r['value'] );
+                                       $this->assertEquals( $expectedValue['value'], $resultValue['value'] );
                                }
                        }
                }
index 2116cd3..347cd6f 100644 (file)
@@ -27,6 +27,8 @@ require_once 'ApiQueryContinueTestBase.php';
  * @covers ApiQuery
  */
 class ApiQueryContinue2Test extends ApiQueryContinueTestBase {
+       protected $exceptionFromAddDBData;
+
        /**
         * Create a set of pages. These must not change, otherwise the tests might give wrong results.
         * @see MediaWikiTestCase::addDBData()
index 7797522..0379790 100644 (file)
@@ -31,6 +31,8 @@ require_once 'ApiQueryContinueTestBase.php';
  * @covers ApiQuery
  */
 class ApiQueryContinueTest extends ApiQueryContinueTestBase {
+       protected $exceptionFromAddDBData;
+
        /**
         * Create a set of pages. These must not change, otherwise the tests might give wrong results.
         * @see MediaWikiTestCase::addDBData()
index 3b55b13..e7203c9 100644 (file)
@@ -110,6 +110,9 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
                } while ( true );
        }
 
+       /**
+        * @param array $data
+        */
        private function printResult( $data ) {
                $q = $data['query'];
                $print = array();
@@ -149,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 e938be7..56f8490 100644 (file)
@@ -17,6 +17,17 @@ class LanguageRuTest 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 f1babf5..e958fde 100644 (file)
@@ -1486,13 +1486,14 @@ class LanguageTest extends LanguageClassesTestCase {
 
        public static function provideCommafyData() {
                return array(
-                       array( 1, '1' ),
+                       array( -1, '-1' ),
                        array( 10, '10' ),
                        array( 100, '100' ),
                        array( 1000, '1,000' ),
                        array( 10000, '10,000' ),
                        array( 100000, '100,000' ),
                        array( 1000000, '1,000,000' ),
+                       array( -1.0001, '-1.0001' ),
                        array( 1.0001, '1.0001' ),
                        array( 10.0001, '10.0001' ),
                        array( 100.0001, '100.0001' ),
@@ -1500,6 +1501,8 @@ class LanguageTest extends LanguageClassesTestCase {
                        array( 10000.0001, '10,000.0001' ),
                        array( 100000.0001, '100,000.0001' ),
                        array( 1000000.0001, '1,000,000.0001' ),
+                       array( '200000000000000000000', '200,000,000,000,000,000,000' ),
+                       array( '-200000000000000000000', '-200,000,000,000,000,000,000' ),
                );
        }
 
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',
index 6da56ed..3c508d4 100644 (file)
                $toggle.trigger( 'click' );
        } );
 
+       function tableWithCaptionTest( $collapsible, assert ) {
+               var $caption, $headerRow, $contentRow, $toggle;
+
+               $caption = $collapsible.find( 'caption' );
+               $headerRow = $collapsible.find( 'tr:first' );
+               $contentRow = $collapsible.find( 'tr:last' );
+
+               $toggle = $caption.find( '.mw-collapsible-toggle' );
+               assert.equal( $toggle.length, 1, 'toggle is added to the end of the caption' );
+
+               assert.assertTrue( $caption.is( ':visible' ), 'caption is visible' );
+               assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' );
+               assert.assertTrue( $contentRow.is( ':visible' ), 'contentRow is visible' );
+
+               $collapsible.on( 'afterCollapse.mw-collapsible', function () {
+                       assert.assertTrue( $caption.is( ':visible' ), 'after collapsing: caption is still visible' );
+                       assert.assertTrue( $headerRow.is( ':hidden' ), 'after collapsing: headerRow is hidden' );
+                       assert.assertTrue( $contentRow.is( ':hidden' ), 'after collapsing: contentRow is hidden' );
+
+                       $collapsible.on( 'afterExpand.mw-collapsible', function () {
+                               assert.assertTrue( $caption.is( ':visible' ), 'after expanding: caption is still visible' );
+                               assert.assertTrue( $headerRow.is( ':visible' ), 'after expanding: headerRow is visible' );
+                               assert.assertTrue( $contentRow.is( ':visible' ), 'after expanding: contentRow is visible' );
+                               QUnit.start();
+                       } );
+
+                       $toggle.trigger( 'click' );
+               } );
+
+               $toggle.trigger( 'click' );
+       }
+
+       QUnit.asyncTest( 'basic operation (<table> with caption)', 10, function ( assert ) {
+               tableWithCaptionTest( prepareCollapsible(
+                       '<table class="mw-collapsible">' +
+                               '<caption>' + loremIpsum + '</caption>' +
+                               '<tr><th>' + loremIpsum + '</th><th>' + loremIpsum + '</th></tr>' +
+                               '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
+                               '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
+                       '</table>'
+               ), assert );
+       } );
+
+       QUnit.asyncTest( 'basic operation (<table> with caption and <thead>)', 10, function ( assert ) {
+               tableWithCaptionTest( prepareCollapsible(
+                       '<table class="mw-collapsible">' +
+                               '<caption>' + loremIpsum + '</caption>' +
+                               '<thead><tr><th>' + loremIpsum + '</th><th>' + loremIpsum + '</th></tr></thead>' +
+                               '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
+                               '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
+                       '</table>'
+               ), assert );
+       } );
+
        function listTest( listType, assert ) {
                var $collapsible, $toggleItem, $contentItem, $toggle;
                $collapsible = prepareCollapsible(
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));