Merge "Define 'MW_UPDATER' when running update.php"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 5 Dec 2013 21:59:32 +0000 (21:59 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 5 Dec 2013 21:59:32 +0000 (21:59 +0000)
685 files changed:
.gitignore
.jshintignore
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/Skin.php
includes/SkinTemplate.php
includes/SpecialPage.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/WikiPage.php
includes/Xml.php
includes/actions/HistoryAction.php
includes/api/ApiBase.php
includes/api/ApiComparePages.php
includes/api/ApiEditPage.php
includes/api/ApiFeedContributions.php
includes/api/ApiFormatJson.php
includes/api/ApiMain.php
includes/api/ApiModuleManager.php
includes/api/ApiMove.php
includes/api/ApiParse.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryFileRepoInfo.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUsers.php
includes/api/ApiUpload.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/clientpool/RedisConnectionPool.php
includes/content/TextContentHandler.php
includes/db/ChronologyProtector.php
includes/db/CloneDatabase.php
includes/db/Database.php
includes/db/DatabaseError.php
includes/db/DatabaseMssql.php
includes/db/DatabaseMysql.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabaseMysqli.php
includes/db/DatabaseOracle.php
includes/db/DatabasePostgres.php
includes/db/DatabaseSqlite.php
includes/db/DatabaseUtility.php
includes/db/IORMRow.php
includes/db/IORMTable.php
includes/db/LBFactory.php
includes/db/LBFactory_Multi.php
includes/db/LoadBalancer.php
includes/db/LoadMonitor.php
includes/db/ORMIterator.php
includes/db/ORMResult.php
includes/db/ORMRow.php
includes/db/ORMTable.php
includes/debug/Debug.php
includes/deferred/CallableUpdate.php
includes/deferred/DataUpdate.php
includes/deferred/DeferredUpdates.php
includes/deferred/HTMLCacheUpdate.php
includes/deferred/LinksUpdate.php
includes/deferred/SearchUpdate.php
includes/deferred/SiteStatsUpdate.php
includes/deferred/SqlDataUpdate.php
includes/deferred/SquidUpdate.php
includes/deferred/ViewCountUpdate.php
includes/diff/ArrayDiffFormatter.php
includes/diff/DairikiDiff.php
includes/diff/DiffFormatter.php
includes/diff/DifferenceEngine.php
includes/diff/TableDiffFormatter.php
includes/diff/UnifiedDiffFormatter.php
includes/diff/WikiDiff3.php
includes/externalstore/ExternalStore.php
includes/externalstore/ExternalStoreDB.php
includes/externalstore/ExternalStoreMedium.php
includes/externalstore/ExternalStoreMwstore.php
includes/filebackend/FSFile.php
includes/filebackend/FSFileBackend.php
includes/filebackend/FileBackend.php
includes/filebackend/FileBackendGroup.php
includes/filebackend/FileBackendMultiWrite.php
includes/filebackend/FileBackendStore.php
includes/filebackend/FileOp.php
includes/filebackend/FileOpBatch.php
includes/filebackend/SwiftFileBackend.php
includes/filebackend/TempFSFile.php
includes/filebackend/filejournal/DBFileJournal.php
includes/filebackend/filejournal/FileJournal.php
includes/filebackend/lockmanager/DBLockManager.php
includes/filebackend/lockmanager/FSLockManager.php
includes/filebackend/lockmanager/LSLockManager.php
includes/filebackend/lockmanager/LockManager.php
includes/filebackend/lockmanager/LockManagerGroup.php
includes/filebackend/lockmanager/MemcLockManager.php
includes/filebackend/lockmanager/QuorumLockManager.php
includes/filebackend/lockmanager/RedisLockManager.php
includes/filebackend/lockmanager/ScopedLock.php
includes/filerepo/FSRepo.php
includes/filerepo/FileRepo.php
includes/filerepo/FileRepoStatus.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/ForeignDBRepo.php
includes/filerepo/ForeignDBViaLBRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/NullRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/ArchivedFile.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignAPIFile.php
includes/filerepo/file/ForeignDBFile.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/BMP.php
includes/media/Bitmap.php
includes/media/BitmapMetadataHandler.php
includes/media/Bitmap_ClientOnly.php
includes/media/DjVu.php
includes/media/DjVuImage.php
includes/media/Exif.php
includes/media/ExifBitmap.php
includes/media/FormatMetadata.php
includes/media/GIF.php
includes/media/GIFMetadataExtractor.php
includes/media/IPTC.php
includes/media/ImageHandler.php
includes/media/Jpeg.php
includes/media/JpegMetadataExtractor.php
includes/media/MediaHandler.php
includes/media/MediaTransformOutput.php
includes/media/PNG.php
includes/media/PNGMetadataExtractor.php
includes/media/SVG.php
includes/media/SVGMetadataExtractor.php
includes/media/Tiff.php
includes/media/XCF.php
includes/media/XMP.php
includes/media/XMPInfo.php
includes/media/XMPValidate.php
includes/objectcache/MemcachedClient.php
includes/objectcache/RedisBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/parser/CacheTime.php
includes/parser/CoreParserFunctions.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/ParserOptions.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/profiler/Profiler.php
includes/profiler/ProfilerSimpleUDP.php
includes/rcfeed/JSONRCFeedFormatter.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/revisiondelete/RevisionDeleter.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialExpandTemplates.php [new file with mode: 0644]
includes/specials/SpecialImport.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialSearch.php
includes/specials/SpecialSpecialpages.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialWatchlist.php
includes/templates/NoLocalSettings.php
includes/templates/Usercreate.php
includes/templates/Userlogin.php
includes/upload/UploadBase.php
includes/utils/Cdb.php
index.php
languages/Language.php
languages/LanguageConverter.php
languages/Names.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageBs.php
languages/classes/LanguageDsb.php
languages/classes/LanguageGv.php
languages/classes/LanguageHr.php
languages/classes/LanguageHsb.php
languages/classes/LanguageKk_cyrl.php
languages/classes/LanguageKsh.php
languages/classes/LanguageOs.php
languages/classes/LanguageRu.php
languages/classes/LanguageSr.php
languages/classes/LanguageSr_ec.php
languages/classes/LanguageSr_el.php
languages/classes/LanguageTr.php
languages/classes/LanguageTyv.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 [new file with mode: 0644]
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/dictionary/mediawiki.dic
maintenance/doMaintenance.php
maintenance/dumpTextPass.php
maintenance/dumpUploads.php
maintenance/findHooks.php
maintenance/fuzz-tester.php [deleted file]
maintenance/generateSitemap.php
maintenance/getConfiguration.php
maintenance/importTextFile.php
maintenance/language/StatOutputs.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/language/zhtable/trad2simp_supp_unset.manual [deleted file]
maintenance/locking/LockServerDaemon.php
maintenance/mctest.php
maintenance/moveBatch.php
maintenance/nextJobDB.php
maintenance/parse.php
maintenance/pruneFileCache.php
maintenance/reassignEdits.php
maintenance/rebuildImages.php
maintenance/refreshImageMetadata.php
maintenance/runBatchedQuery.php
maintenance/showCacheStats.php
maintenance/storage/checkStorage.php
maintenance/storage/compressOld.php
maintenance/storage/fixBug20757.php
maintenance/storage/testCompression.php
maintenance/storage/trackBlobs.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.changeemail.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
resources/mediawiki/mediawiki.util.js
resources/oojs/oojs.js [new file with mode: 0644]
resources/startup.js
skins/.gitignore [new file with mode: 0644]
skins/CologneBlue.php
skins/MonoBook.php
skins/common/commonPrint.css
skins/common/shared.css
skins/modern/print.css
skins/vector/collapsibleTabs.js
tests/phpunit/MediaWikiPHPUnitCommand.php
tests/phpunit/MediaWikiTestCase.php
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/EditPageTest.php
tests/phpunit/includes/ExceptionTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/LinkFilterTest.php [new file with mode: 0644]
tests/phpunit/includes/PathRouterTest.php
tests/phpunit/includes/PreferencesTest.php
tests/phpunit/includes/ResourceLoaderModuleTest.php [new file with mode: 0644]
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/RevisionStorageTest_ContentHandlerUseDB.php
tests/phpunit/includes/RevisionTest.php
tests/phpunit/includes/SpecialPageTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TitleMethodsTest.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/WikiPageTest.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/api/query/ApiQueryTestBase.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/content/WikitextContentHandlerTest.php
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/debug/MWDebugTest.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/ExifRotationTest.php
tests/phpunit/includes/media/ExifTest.php
tests/phpunit/includes/media/JpegMetadataExtractorTest.php
tests/phpunit/includes/media/JpegTest.php
tests/phpunit/includes/media/PNGMetadataExtractorTest.php
tests/phpunit/includes/media/SVGTest.php
tests/phpunit/includes/parser/TidyTest.php
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/phpunit/includes/upload/UploadBaseTest.php
tests/phpunit/includes/utils/ZipDirectoryReaderTest.php
tests/phpunit/languages/LanguageBe_taraskTest.php
tests/phpunit/languages/LanguageRuTest.php
tests/phpunit/languages/LanguageSrTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/languages/LanguageUkTest.php
tests/phpunit/languages/LanguageUzTest.php
tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/MaintenanceTest.php
tests/phpunit/maintenance/backupPrefetchTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/backup_LogTest.php
tests/phpunit/maintenance/backup_PageTest.php
tests/phpunit/maintenance/fetchTextTest.php
tests/phpunit/skins/SideBarTest.php
tests/phpunit/structure/ResourcesTest.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]
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/testHelpers.inc
thumb.php

index 9c0c3b6..76d220a 100644 (file)
@@ -62,3 +62,5 @@ Thumbs.db
 /favicon.ico
 /static*
 /tags
+/.htaccess
+/.htpasswd
index f740f13..27bb258 100644 (file)
@@ -24,6 +24,7 @@ resources/jquery.tipsy/
 resources/jquery.ui/
 resources/mediawiki.libs/
 resources/jquery.chosen/chosen.jquery.js
+resources/oojs/
 
 # github.com/jshint/jshint/issues/729
 tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js
index e2c0670..6703f89 100644 (file)
@@ -39,6 +39,13 @@ 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.
+* Added $wgAPIFormatModules, allowing extensions to add additional output
+  formatting modules for the API.
 
 === Bug fixes in 1.23 ===
 * (bug 41759) The "updated since last visit" markers (on history pages, recent
@@ -49,18 +56,21 @@ production.
   when the email address is already confirmed. Also, consistently use
   "confirmed", rather than "authenticated", when messaging whether or not the
   user has confirmed an email address.
-* (bug 19415) action=render no longer shows section edit links. This affects
-  behavior of several other features where (bogus) section edit links will
-  disappear, such as file description pages loaded via $wgUseInstantCommons or
-  pages transcluded cross-wiki via $wgEnableScaryTranscluding.
 * (bug 56912) Show correct link color on cached result of Special:DeadendPages.
 * 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
   categories.
+* 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===
 
@@ -68,6 +78,8 @@ MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Bugzilla reports.
 
+* Support was added for Northern Luri (lrc)
+
 === Other changes in 1.23 ===
 * The rc_type field in the recentchanges table has been superseded by a new
   rc_source field.  The rc_source field is a string representation of the
@@ -81,6 +93,9 @@ changes to languages because of Bugzilla reports.
 * The global variable $wgArticle has been removed after a lengthy deprecation.
 * The global functions addButton and insertTags (for mw.toolbar.addButton and
   mw.toolbar.insertTags) now emits mw.log.warn when accessed.
+* User::getPageRenderingHash() was deprecated since 1.17 and has been removed.
+* The ExpandTemplates extension has been moved into MediaWiki core.
+* (bug 52812) Removed "Disable search suggestions" from Preference.
 
 == Compatibility ==
 
index 30b9b72..15387f8 100644 (file)
@@ -898,7 +898,7 @@ $oldid: oldid (int) being viewed
 'DoEditSectionLink': Override the HTML generated for section edit links
 $skin: Skin object rendering the UI
 $title: Title object for the title being linked to (may not be the same as
-  $wgTitle, if the section is included from a template)
+  the page title, if the section is included from a template)
 $section: The designation of the section being pointed to, to be included in
   the link, like "&section=$section"
 $tooltip: The default tooltip.  Escape before using.
@@ -1369,7 +1369,7 @@ $context: IContextSource object
 &$pageInfo: Array of information
 
 'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect.
-$title: Title object ($wgTitle)
+$title: Title object for the current page
 $request: WebRequest
 $ignoreRedirect: boolean to skip redirect check
 $target: Title/string of redirect target
@@ -1624,7 +1624,7 @@ something completely different, after the basic globals have been set up, but
 before ordinary actions take place.
 $output: $wgOut
 $article: Article on which the action will be performed
-$title: $wgTitle
+$title: Title on which the action will be performed
 $user: $wgUser
 $request: $wgRequest
 $mediaWiki: The $mediawiki object
@@ -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 854f7f1..821c32e 100644 (file)
@@ -1478,7 +1478,6 @@ class Article implements Page {
         */
        public function render() {
                $this->getContext()->getOutput()->setArticleBodyOnly( true );
-               $this->getContext()->getOutput()->enableSectionEditLinks( false );
                $this->view();
        }
 
@@ -1553,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 cd634c2..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',
@@ -505,11 +506,11 @@ $wgAutoloadLocalClasses = array(
        # includes/diff
        'DiffEngine' => 'includes/diff/DairikiDiff.php',
        'DiffOp' => 'includes/diff/DairikiDiff.php',
-       'DiffOp_Add' => 'includes/diff/DairikiDiff.php',
-       'DiffOp_Change' => 'includes/diff/DairikiDiff.php',
-       'DiffOp_Copy' => 'includes/diff/DairikiDiff.php',
-       'DiffOp_Delete' => 'includes/diff/DairikiDiff.php',
-       'HWLDF_WordAccumulator' => 'includes/diff/DairikiDiff.php',
+       'DiffOpAdd' => 'includes/diff/DairikiDiff.php',
+       'DiffOpChange' => 'includes/diff/DairikiDiff.php',
+       'DiffOpCopy' => 'includes/diff/DairikiDiff.php',
+       'DiffOpDelete' => 'includes/diff/DairikiDiff.php',
+       'HWLDFWordAccumulator' => 'includes/diff/DairikiDiff.php',
        'ArrayDiffFormatter' => 'includes/diff/ArrayDiffFormatter.php',
        'Diff' => 'includes/diff/DairikiDiff.php',
        'DifferenceEngine' => 'includes/diff/DifferenceEngine.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',
 
@@ -958,6 +962,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialContributions' => 'includes/specials/SpecialContributions.php',
        'SpecialEditWatchlist' => 'includes/specials/SpecialEditWatchlist.php',
        'SpecialEmailUser' => 'includes/specials/SpecialEmailuser.php',
+       'SpecialExpandTemplates' => 'includes/specials/SpecialExpandTemplates.php',
        'SpecialExport' => 'includes/specials/SpecialExport.php',
        'SpecialFilepath' => 'includes/specials/SpecialFilepath.php',
        'SpecialImport' => 'includes/specials/SpecialImport.php',
index 34b89e7..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();
                }
@@ -1083,7 +1083,6 @@ class Block {
                return null;
        }
 
-
        /**
         * Get all blocks that match any IP from an array of IP addresses
         *
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 fbf838c..868c64e 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
  *
@@ -1798,7 +1814,7 @@ $wgCompressRevisions = false;
  *
  * CAUTION: Access to database might lead to code execution
  */
-$wgExternalStores = false;
+$wgExternalStores = array();
 
 /**
  * An array of external MySQL servers.
@@ -2134,7 +2150,7 @@ $wgStyleVersion = '303';
 /**
  * This will cache static pages for non-logged-in users to reduce
  * database traffic on public sites.
- * Must set $wgShowIPinHeader = false
+ * Automatically sets $wgShowIPinHeader = false
  * ResourceLoader requests to default language and skins are cached
  * as well as single module requests.
  */
@@ -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
@@ -3974,7 +3993,6 @@ $wgDefaultUserOptions = array(
        'date' => 'default',
        'diffonly' => 0,
        'disablemail' => 0,
-       'disablesuggest' => 0,
        'editfont' => 'default',
        'editondblclick' => 0,
        'editsection' => 1,
@@ -5037,7 +5055,7 @@ $wgProfilePerHost = false;
  * Host for UDP profiler.
  *
  * The host should be running a daemon which can be obtained from MediaWiki
- * Git at: 
+ * Git at:
  * http://git.wikimedia.org/tree/operations%2Fsoftware.git/master/udpprofile
  */
 $wgUDPProfilerHost = '127.0.0.1';
@@ -6054,7 +6072,7 @@ $wgHooks = array();
  */
 $wgJobClasses = array(
        'refreshLinks' => 'RefreshLinksJob',
-       'refreshLinks2' => 'RefreshLinksJob2',
+       'refreshLinks2' => 'RefreshLinksJob2', // b/c
        'htmlCacheUpdate' => 'HTMLCacheUpdateJob',
        'sendMail' => 'EmaillingJob',
        'enotifNotify' => 'EnotifNotifyJob',
@@ -6539,6 +6557,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 be350cb..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';
@@ -3643,29 +3647,6 @@ HTML
                $wgOut->returnToMain( false, $this->mTitle );
        }
 
-       /**
-        * Produce the stock "your edit contains spam" page
-        *
-        * @param string|bool $match Text which triggered one or more filters
-        * @deprecated since 1.17 Use method spamPageWithContent() instead
-        */
-       static function spamPage( $match = false ) {
-               wfDeprecated( __METHOD__, '1.17' );
-
-               global $wgOut, $wgTitle;
-
-               $wgOut->prepareErrorPage( wfMessage( 'spamprotectiontitle' ) );
-
-               $wgOut->addHTML( '<div id="spamprotected">' );
-               $wgOut->addWikiMsg( 'spamprotectiontext' );
-               if ( $match ) {
-                       $wgOut->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) );
-               }
-               $wgOut->addHTML( '</div>' );
-
-               $wgOut->returnToMain( false, $wgTitle );
-       }
-
        /**
         * Show "your edit contains spam" page with your diff and text
         *
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 98de4c0..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 ) .
@@ -604,7 +605,7 @@ class XmlDumpWriter {
                if ( $row->page_is_redirect ) {
                        $page = WikiPage::factory( $title );
                        $redirect = $page->getRedirectTarget();
-                       if ( $redirect instanceOf Title && $redirect->isValidRedirectTarget() ) {
+                       if ( $redirect instanceof Title && $redirect->isValidRedirectTarget() ) {
                                $out .= '    ' . Xml::element( 'redirect', array( 'title' => self::canonicalTitle( $redirect ) ) ) . "\n";
                        }
                }
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 57877a2..819b076 100644 (file)
@@ -508,7 +508,6 @@ function wfExpandUrl( $url, $defaultProto = PROTO_CURRENT ) {
                }
        }
 
-
        // Analyze $serverUrl to obtain its protocol
        $bits = wfParseUrl( $serverUrl );
        $serverHasProto = $bits && $bits['scheme'] != '';
@@ -966,8 +965,8 @@ function wfIsDebugRawPage() {
                || (
                        isset( $_SERVER['SCRIPT_NAME'] )
                        && substr( $_SERVER['SCRIPT_NAME'], -8 ) == 'load.php'
-               ) )
-       {
+               )
+       {
                $cache = true;
        } else {
                $cache = false;
@@ -1464,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 );
@@ -1487,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 );
@@ -1994,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;
@@ -2771,11 +2770,11 @@ 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, 
+ *    - duplicateStderr: Set this to true to duplicate stderr to stdout,
  *      including errors from limit.sh
- *      
+ *
  * @return string collected stdout as a string
  */
 function wfShellExec( $cmd, &$retval = null, $environ = array(),
@@ -2878,9 +2877,9 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
        $logMsg = false;
 
        // According to the documentation, it is possible for stream_select()
-       // to fail due to EINTR. I haven't managed to induce this in testing 
-       // despite sending various signals. If it did happen, the error 
-       // message would take the form: 
+       // to fail due to EINTR. I haven't managed to induce this in testing
+       // despite sending various signals. If it did happen, the error
+       // message would take the form:
        //
        // stream_select(): unable to select [4]: Interrupted system call (max_fd=5)
        //
@@ -3514,7 +3513,6 @@ function wfResetSessionID() {
        wfRunHooks( 'ResetSessionID', array( $oldSessionId, $newSessionId ) );
 }
 
-
 /**
  * Initialise php session
  *
index b60146a..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 );
 
@@ -745,7 +744,7 @@ class HTMLForm extends ContextSource {
                        $attribs['class'] = array( 'mw-htmlform-submit' );
 
                        if ( $this->isVForm() ) {
-                               // mw-ui-block is necessary because the buttons aren't necessarily in an 
+                               // mw-ui-block is necessary because the buttons aren't necessarily in an
                                // immediate child div of the vform.
                                array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-big', 'mw-ui-primary', 'mw-ui-block' );
                        }
index 932f753..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;
                        }
 
@@ -664,7 +664,7 @@ class Html {
        }
 
        /**
-        * Convenience function to produce an "<input>" element.
+        * Convenience function to produce a <textarea> element.
         *
         * This supports leaving out the cols= and rows= which Xml requires and are
         * required by HTML4/XHTML but not required by HTML5.
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 5ffb802..a0d7e30 100644 (file)
@@ -256,15 +256,10 @@ class OutputPage extends ContextSource {
        private $mTarget = null;
 
        /**
-        * @var bool: Whether parser output should contain table of contents
+        * @var bool: Whether output should contain table of contents
         */
        private $mEnableTOC = true;
 
-       /**
-        * @var bool: Whether parser output should contain section edit links
-        */
-       private $mEnableSectionEditLinks = true;
-
        /**
         * Constructor for OutputPage. This should not be called directly.
         * Instead a new RequestContext should be created and it will implicitly create
@@ -452,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;
                        }
                }
@@ -896,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()
+               );
        }
 
        /**
@@ -1617,7 +1615,6 @@ class OutputPage extends ContextSource {
        function addParserOutput( &$parserOutput ) {
                $this->addParserOutputNoText( $parserOutput );
                $parserOutput->setTOCEnabled( $this->mEnableTOC );
-               $parserOutput->setEditSectionTokens( $this->mEnableSectionEditLinks );
                $text = $parserOutput->getText();
                wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) );
                $this->addHTML( $text );
@@ -1629,10 +1626,7 @@ class OutputPage extends ContextSource {
         * @param $template QuickTemplate
         */
        public function addTemplate( &$template ) {
-               ob_start();
-               $template->execute();
-               $this->addHTML( ob_get_contents() );
-               ob_end_clean();
+               $this->addHTML( $template->getHTML() );
        }
 
        /**
@@ -2497,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' );
@@ -3681,21 +3675,4 @@ $templates
        public function isTOCEnabled() {
                return $this->mEnableTOC;
        }
-
-       /**
-        * Enables/disables section edit links, doesn't override __NOEDITSECTION__
-        * @param bool $flag
-        * @since 1.23
-        */
-       public function enableSectionEditLinks( $flag = true ) {
-               $this->mEnableSectionEditLinks = $flag;
-       }
-
-       /**
-        * @return bool
-        * @since 1.23
-        */
-       public function sectionEditLinksEnabled() {
-               return $this->mEnableSectionEditLinks;
-       }
 }
index 4a14c7e..19c3c43 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
@@ -650,8 +659,8 @@ abstract class IndexPager extends ContextSource implements Pager {
         * representing the result row $row. Rows will be concatenated and
         * returned by getBody()
         *
-        * @param $row Object: database row
-        * @return String
+        * @param array $row Database row
+        * @return string
         */
        abstract function formatRow( $row );
 
index c9caf4f..cf4d5c9 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 ) {
@@ -1062,12 +1062,6 @@ class Preferences {
                        );
                }
 
-               $defaultPreferences['disablesuggest'] = array(
-                       'type' => 'toggle',
-                       'label-message' => 'mwsuggest-disable',
-                       'section' => 'searchoptions/displaysearchoptions',
-               );
-
                $defaultPreferences['searcheverything'] = array(
                        'type' => 'toggle',
                        'label-message' => 'searcheverything-enable',
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 2e083d8..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";
 }
 
@@ -293,7 +293,6 @@ if ( $wgMetaNamespace === false ) {
        $wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
 }
 
-
 // Default value is either the suhosin limit or -1 for unlimited
 if ( $wgResourceLoaderMaxQueryLength === false ) {
        $maxValueLength = ini_get( 'suhosin.get.max_value_length' );
index a71bafc..290882c 100644 (file)
@@ -243,9 +243,7 @@ abstract class Skin extends ContextSource {
                                        $modules['watch'][] = 'mediawiki.page.watch.ajax';
                                }
 
-                               if ( !$user->getOption( 'disablesuggest', false ) ) {
-                                       $modules['search'][] = 'mediawiki.searchSuggest';
-                               }
+                               $modules['search'][] = 'mediawiki.searchSuggest';
                        }
                }
 
@@ -1394,8 +1392,8 @@ abstract class Skin extends ContextSource {
                                // Singular if no revision -> diff link will show latest change only in any case
                                $plural = false;
                        }
-                       $plural = $plural ? 2 : 1;
-                       // 2 signifies "more than one revision". We don't know how many, and even if we did,
+                       $plural = $plural ? 999 : 1;
+                       // 999 signifies "more than one revision". We don't know how many, and even if we did,
                        // the number of revisions or authors is not necessarily the same as the number of
                        // "messages".
                        $newMessagesLink = Linker::linkKnown(
index 0990584..da4c376 100644 (file)
@@ -130,44 +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() );
-
-                                       $language_urls[] = array(
-                                               'href' => $languageLinkTitle->getFullURL(),
-                                               'text' => $ilLangName,
-                                               'title' => wfMessage( 'interlanguage-link-title', $languageLinkTitle->getText(), $ilLangLocalName )->text(),
-                                               'class' => $class,
-                                               'lang' => wfBCP47( $ilInterwikiCode ),
-                                               'hreflang' => wfBCP47( $ilInterwikiCode ),
-                                       );
+                       $languageLinkTitle = Title::newFromText( $languageLinkText );
+                       if ( $languageLinkTitle ) {
+                               $ilInterwikiCode = $languageLinkTitle->getInterwiki();
+                               $ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
+
+                               if ( strval( $ilLangName ) === '' ) {
+                                       $ilLangName = $languageLinkText;
+                               } else {
+                                       $ilLangName = $this->formatLanguageName( $ilLangName );
                                }
+
+                               // 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() {
@@ -1020,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,
@@ -1450,6 +1471,20 @@ abstract class QuickTemplate {
        public function getSkin() {
                return $this->data['skin'];
        }
+
+       /**
+        * Fetch the output of a QuickTemplate and return it
+        *
+        * @since 1.23
+        * @return String
+        */
+       public function getHTML() {
+               ob_start();
+               $this->execute();
+               $html = ob_get_contents();
+               ob_end_clean();
+               return $html;
+       }
 }
 
 /**
index 9fb39da..f70a6dc 100644 (file)
@@ -1460,7 +1460,6 @@ class SpecialAllMyUploads extends RedirectSpecialPage {
        }
 }
 
-
 /**
  * Redirect from Special:PermanentLink/### to index.php?oldid=###
  */
index 1ede0c1..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',
@@ -149,6 +149,7 @@ class SpecialPageFactory {
                'Undelete'                  => 'SpecialUndelete',
                'Whatlinkshere'             => 'SpecialWhatlinkshere',
                'MergeHistory'              => 'SpecialMergeHistory',
+               'ExpandTemplates'           => 'SpecialExpandTemplates',
 
                // Other
                'Booksources'               => 'SpecialBookSources',
@@ -169,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
         */
@@ -182,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;
        }
 
        /**
@@ -230,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 224626b..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';
                }
 
@@ -3513,56 +3511,6 @@ class User {
                return (bool)$userblock->doAutoblock( $this->getRequest()->getIP() );
        }
 
-       /**
-        * Generate a string which will be different for any combination of
-        * user options which would produce different parser output.
-        * This will be used as part of the hash key for the parser cache,
-        * so users with the same options can share the same cached data
-        * safely.
-        *
-        * Extensions which require it should install 'PageRenderingHash' hook,
-        * which will give them a chance to modify this key based on their own
-        * settings.
-        *
-        * @deprecated since 1.17 use the ParserOptions object to get the relevant options
-        * @return string Page rendering hash
-        */
-       public function getPageRenderingHash() {
-               wfDeprecated( __METHOD__, '1.17' );
-
-               global $wgRenderHashAppend, $wgLang, $wgContLang;
-               if ( $this->mHash ) {
-                       return $this->mHash;
-               }
-
-               // stubthreshold is only included below for completeness,
-               // since it disables the parser cache, its value will always
-               // be 0 when this function is called by parsercache.
-
-               $confstr = $this->getOption( 'math' );
-               $confstr .= '!' . $this->getStubThreshold();
-               $confstr .= '!' . ( $this->getOption( 'numberheadings' ) ? '1' : '' );
-               $confstr .= '!' . $wgLang->getCode();
-               $confstr .= '!' . $this->getOption( 'thumbsize' );
-               // add in language specific options, if any
-               $extra = $wgContLang->getExtraHashOptions();
-               $confstr .= $extra;
-
-               // Since the skin could be overloading link(), it should be
-               // included here but in practice, none of our skins do that.
-
-               $confstr .= $wgRenderHashAppend;
-
-               // Give a chance for extensions to modify the hash, if they have
-               // extra options or other effects on the parser cache.
-               wfRunHooks( 'PageRenderingHash', array( &$confstr ) );
-
-               // Make it a valid memcached key fragment
-               $confstr = str_replace( ' ', '_', $confstr );
-               $this->mHash = $confstr;
-               return $confstr;
-       }
-
        /**
         * Get whether the user is explicitly blocked from account creation.
         * @return bool|Block
@@ -3662,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 536ce12..dfa8cf6 100644 (file)
@@ -54,7 +54,7 @@ class WebRequest {
         * Cached URL protocol
         * @var string
         */
-       private $protocol;
+       protected $protocol;
 
        public function __construct() {
                /// @todo FIXME: This preemptive de-quoting can interfere with other web libraries
@@ -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 6c2c6ad..9507e5f 100644 (file)
@@ -2247,7 +2247,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @return Status
         */
        public function doUpdateRestrictions( array $limit, array $expiry, &$cascade, $reason, User $user ) {
-               global $wgCascadingRestrictionLevels;
+               global $wgCascadingRestrictionLevels, $wgContLang;
 
                if ( wfReadOnly() ) {
                        return Status::newFatal( 'readonlytext', wfReadOnlyReason() );
@@ -2320,6 +2320,9 @@ class WikiPage implements Page, IDBAccessObject {
                        $logAction = 'protect';
                }
 
+               // Truncate for whole multibyte characters
+               $reason = $wgContLang->truncate( $reason, 255 );
+
                if ( $id ) { // Protection of existing page
                        if ( !wfRunHooks( 'ArticleProtect', array( &$this, &$user, $limit, $reason ) ) ) {
                                return Status::newGood();
@@ -2393,7 +2396,7 @@ class WikiPage implements Page, IDBAccessObject {
                                                'pt_namespace' => $this->mTitle->getNamespace(),
                                                'pt_title' => $this->mTitle->getDBkey(),
                                                'pt_create_perm' => $limit['create'],
-                                               'pt_timestamp' => $dbw->encodeExpiry( wfTimestampNow() ),
+                                               'pt_timestamp' => $dbw->timestamp(),
                                                'pt_expiry' => $dbw->encodeExpiry( $expiry['create'] ),
                                                'pt_user' => $user->getId(),
                                                'pt_reason' => $reason,
@@ -2421,7 +2424,7 @@ class WikiPage implements Page, IDBAccessObject {
 
                // Update the protection log
                $log = new LogPage( 'protect' );
-               $log->addEntry( $logAction, $this->mTitle, trim( $reason ), $params, $user );
+               $log->addEntry( $logAction, $this->mTitle, $reason, $params, $user );
 
                return Status::newGood();
        }
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 47fb687..b6a7ca8 100644 (file)
@@ -177,9 +177,9 @@ abstract class ApiBase extends ContextSource {
        public function getModuleProfileName( $db = false ) {
                if ( $db ) {
                        return 'API:' . $this->mModuleName . '-DB';
-               } else {
-                       return 'API:' . $this->mModuleName;
                }
+
+               return 'API:' . $this->mModuleName;
        }
 
        /**
@@ -530,9 +530,9 @@ abstract class ApiBase extends ContextSource {
                        }
 
                        return $msg;
-               } else {
-                       return false;
                }
+
+               return false;
        }
 
        /**
@@ -1297,9 +1297,9 @@ abstract class ApiBase extends ContextSource {
        private function warnOrDie( $msg, $enforceLimits = false ) {
                if ( $enforceLimits ) {
                        $this->dieUsage( $msg, 'integeroutofrange' );
-               } else {
-                       $this->setWarning( $msg );
                }
+
+               $this->setWarning( $msg );
        }
 
        /**
@@ -1902,14 +1902,14 @@ abstract class ApiBase extends ContextSource {
                global $wgDebugAPI;
                if ( $wgDebugAPI !== true ) {
                        $this->dieUsageMsg( $error );
-               } else {
-                       if ( is_string( $error ) ) {
-                               $error = array( $error );
-                       }
-                       $parsed = $this->parseMsg( $error );
-                       $this->setWarning( '$wgDebugAPI: ' . $parsed['code']
-                               . ' - ' . $parsed['info'] );
                }
+
+               if ( is_string( $error ) ) {
+                       $error = array( $error );
+               }
+
+               $parsed = $this->parseMsg( $error );
+               $this->setWarning( '$wgDebugAPI: ' . $parsed['code'] . ' - ' . $parsed['info'] );
        }
 
        /**
index 1049b49..237e8c8 100644 (file)
@@ -70,10 +70,10 @@ class ApiComparePages extends ApiBase {
                                        'not exist or you do not have permission to view them.',
                                'baddiff'
                        );
-               } else {
-                       ApiResult::setContent( $vals, $difftext );
                }
 
+               ApiResult::setContent( $vals, $difftext );
+
                $this->getResult()->addValue( null, $this->getModuleName(), $vals );
        }
 
index 4e1c871..73eebca 100644 (file)
@@ -381,9 +381,9 @@ class ApiEditPage extends ApiBase {
                                $apiResult->addValue( null, $this->getModuleName(), $r );
 
                                return;
-                       } else {
-                               $this->dieUsageMsg( 'hookaborted' );
                        }
+
+                       $this->dieUsageMsg( 'hookaborted' );
                }
 
                // Do the actual save
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 15dc73b..be0b58b 100644 (file)
@@ -91,8 +91,8 @@ class ApiFormatJson extends ApiFormatBase {
        public function getDescription() {
                if ( $this->mIsRaw ) {
                        return 'Output data with the debugging elements in JSON format' . parent::getDescription();
-               } else {
-                       return 'Output data in JSON format' . parent::getDescription();
                }
+
+               return 'Output data in JSON format' . parent::getDescription();
        }
 }
index c3ada1f..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;
@@ -741,12 +742,14 @@ class ApiMain extends ApiBase {
                if ( $salt !== false ) {
                        if ( !isset( $moduleParams['token'] ) ) {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
-                       } else {
-                               if ( !$this->getUser()
-                                       ->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() )
-                               ) {
-                                       $this->dieUsageMsg( 'sessionfailure' );
-                               }
+                       }
+
+                       if ( !$this->getUser()->matchEditToken(
+                               $moduleParams['token'],
+                               $salt,
+                               $this->getContext()->getRequest() )
+                       ) {
+                               $this->dieUsageMsg( 'sessionfailure' );
                        }
                }
 
@@ -773,11 +776,9 @@ class ApiMain extends ApiBase {
 
                                if ( $wgShowHostnames ) {
                                        $this->dieUsage( "Waiting for $host: $lag seconds lagged", 'maxlag' );
-                               } else {
-                                       $this->dieUsage( "Waiting for a database server: $lag seconds lagged", 'maxlag' );
                                }
 
-                               return false;
+                               $this->dieUsage( "Waiting for a database server: $lag seconds lagged", 'maxlag' );
                        }
                }
 
index 407e089..c33e18c 100644 (file)
@@ -146,9 +146,9 @@ class ApiModuleManager extends ContextSource {
        public function isDefined( $moduleName, $group = null ) {
                if ( isset( $this->mModules[$moduleName] ) ) {
                        return $group === null || $this->mModules[$moduleName][0] === $group;
-               } else {
-                       return false;
                }
+
+               return false;
        }
 
        /**
@@ -159,9 +159,9 @@ class ApiModuleManager extends ContextSource {
        public function getModuleGroup( $moduleName ) {
                if ( isset( $this->mModules[$moduleName] ) ) {
                        return $this->mModules[$moduleName][0];
-               } else {
-                       return null;
                }
+
+               return null;
        }
 
        /**
index 5d5d1b7..20ac48a 100644 (file)
@@ -157,19 +157,19 @@ class ApiMove extends ApiBase {
                $success = $fromTitle->moveSubpages( $toTitle, true, $reason, !$noredirect );
                if ( isset( $success[0] ) ) {
                        return array( 'error' => $this->parseMsg( $success ) );
-               } else {
-                       // At least some pages could be moved
-                       // Report each of them separately
-                       foreach ( $success as $oldTitle => $newTitle ) {
-                               $r = array( 'from' => $oldTitle );
-                               if ( is_array( $newTitle ) ) {
-                                       $r['error'] = $this->parseMsg( reset( $newTitle ) );
-                               } else {
-                                       // Success
-                                       $r['to'] = $newTitle;
-                               }
-                               $retval[] = $r;
+               }
+
+               // At least some pages could be moved
+               // Report each of them separately
+               foreach ( $success as $oldTitle => $newTitle ) {
+                       $r = array( 'from' => $oldTitle );
+                       if ( is_array( $newTitle ) ) {
+                               $r['error'] = $this->parseMsg( reset( $newTitle ) );
+                       } else {
+                               // Success
+                               $r['to'] = $newTitle;
                        }
+                       $retval[] = $r;
                }
 
                return $retval;
index 3ce5da2..88904c0 100644 (file)
@@ -425,23 +425,24 @@ class ApiParse extends ApiBase {
                if ( $this->section !== false && $this->content !== null ) {
                        $this->content = $this->getSectionContent(
                                $this->content,
-                               !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getText() );
+                               !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getText()
+                       );
 
                        // Not cached (save or load)
                        return $this->content->getParserOutput( $page->getTitle(), null, $popts );
-               } else {
-                       // Try the parser cache first
-                       // getParserOutput will save to Parser cache if able
-                       $pout = $page->getParserOutput( $popts );
-                       if ( !$pout ) {
-                               $this->dieUsage( "There is no revision ID {$page->getLatest()}", 'missingrev' );
-                       }
-                       if ( $getWikitext ) {
-                               $this->content = $page->getContent( Revision::RAW );
-                       }
+               }
 
-                       return $pout;
+               // Try the parser cache first
+               // getParserOutput will save to Parser cache if able
+               $pout = $page->getParserOutput( $popts );
+               if ( !$pout ) {
+                       $this->dieUsage( "There is no revision ID {$page->getLatest()}", 'missingrev' );
+               }
+               if ( $getWikitext ) {
+                       $this->content = $page->getContent( Revision::RAW );
                }
+
+               return $pout;
        }
 
        private function getSectionContent( Content $content, $what ) {
@@ -531,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;
 
@@ -715,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 cfc2244..fcd3180 100644 (file)
@@ -547,24 +547,20 @@ abstract class ApiQueryBase extends ApiBase {
         * @return void
         */
        public function showHiddenUsersAddBlockInfo( $showBlockInfo ) {
-               $userCanViewHiddenUsers = $this->getUser()->isAllowed( 'hideuser' );
-
-               if ( $showBlockInfo || !$userCanViewHiddenUsers ) {
-                       $this->addTables( 'ipblocks' );
-                       $this->addJoinConds( array(
-                               'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
-                       ) );
+               $this->addTables( 'ipblocks' );
+               $this->addJoinConds( array(
+                       'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
+               ) );
 
-                       $this->addFields( 'ipb_deleted' );
+               $this->addFields( 'ipb_deleted' );
 
-                       if ( $showBlockInfo ) {
-                               $this->addFields( array( 'ipb_id', 'ipb_by', 'ipb_by_text', 'ipb_reason', 'ipb_expiry' ) );
-                       }
+               if ( $showBlockInfo ) {
+                       $this->addFields( array( 'ipb_id', 'ipb_by', 'ipb_by_text', 'ipb_reason', 'ipb_expiry' ) );
+               }
 
-                       // Don't show hidden names
-                       if ( !$userCanViewHiddenUsers ) {
-                               $this->addWhere( 'ipb_deleted = 0 OR ipb_deleted IS NULL' );
-                       }
+               // Don't show hidden names
+               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+                       $this->addWhere( 'ipb_deleted = 0 OR ipb_deleted IS NULL' );
                }
        }
 
index 35e78ac..f63e033 100644 (file)
@@ -59,6 +59,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                $fld_sha1 = isset( $prop['sha1'] );
                $fld_content = isset( $prop['content'] );
                $fld_token = isset( $prop['token'] );
+               $fld_tags = isset( $prop['tags'] );
 
                // If we're in JSON callback mode, no tokens can be obtained
                if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) ) {
@@ -112,6 +113,22 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                $this->addFieldsIf( 'ar_len', $fld_len );
                $this->addFieldsIf( 'ar_sha1', $fld_sha1 );
 
+               if ( $fld_tags ) {
+                       $this->addTables( 'tag_summary' );
+                       $this->addJoinConds(
+                               array( 'tag_summary' => array( 'LEFT JOIN', array( 'ar_rev_id=ts_rev_id' ) ) )
+                       );
+                       $this->addFields( 'ts_tags' );
+               }
+
+               if ( !is_null( $params['tag'] ) ) {
+                       $this->addTables( 'change_tag' );
+                       $this->addJoinConds(
+                               array( 'change_tag' => array( 'INNER JOIN', array( 'ar_rev_id=ct_rev_id' ) ) )
+                       );
+                       $this->addWhereFld( 'ct_tag', $params['tag'] );
+               }
+
                if ( $fld_content ) {
                        $this->addTables( 'text' );
                        $this->addFields( array( 'ar_text', 'ar_text_id', 'old_text', 'old_flags' ) );
@@ -264,6 +281,16 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
                        }
 
+                       if ( $fld_tags ) {
+                               if ( $row->ts_tags ) {
+                                       $tags = explode( ',', $row->ts_tags );
+                                       $this->getResult()->setIndexedTagName( $tags, 'tag' );
+                                       $rev['tags'] = $tags;
+                               } else {
+                                       $rev['tags'] = array();
+                               }
+                       }
+
                        if ( !isset( $pageMap[$row->ar_namespace][$row->ar_title] ) ) {
                                $pageID = $newPageID++;
                                $pageMap[$row->ar_namespace][$row->ar_title] = $pageID;
@@ -313,6 +340,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        'prefix' => null,
                        'continue' => null,
                        'unique' => false,
+                       'tag' => null,
                        'user' => array(
                                ApiBase::PARAM_TYPE => 'user'
                        ),
@@ -343,7 +371,8 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                        'len',
                                        'sha1',
                                        'content',
-                                       'token'
+                                       'token',
+                                       'tags'
                                ),
                                ApiBase::PARAM_ISMULTI => true
                        ),
@@ -372,12 +401,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                ' sha1           - Adds the SHA-1 (base 16) of the revision',
                                ' content        - Adds the content of the revision',
                                ' token          - Gives the edit token',
+                               ' tags           - Tags for the revision',
                        ),
                        'namespace' => 'Only list pages in this namespace (3)',
                        'user' => 'Only list revisions by this user',
                        'excludeuser' => 'Don\'t list revisions by this user',
                        'continue' => 'When more results are available, use this to continue (1, 3)',
                        'unique' => 'List only one revision for each page (3)',
+                       'tag' => 'Only list revisions tagged with this tag',
                );
        }
 
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 0d2f475..14364cb 100644 (file)
@@ -102,7 +102,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN',
                                array( 'log_id=ct_log_id' ) ) ) );
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                if ( !is_null( $params['action'] ) ) {
index 50a3352..02a05e8 100644 (file)
@@ -72,7 +72,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
         * @param  $pageid
         * @param  $title
         * @param $rc RecentChange (optional)
-        * @return bool|String
+        * @return bool|string
         */
        public static function getPatrolToken( $pageid, $title, $rc = null ) {
                global $wgUser;
@@ -85,23 +85,22 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        ) {
                                $validTokenUser = true;
                        }
-               } else {
-                       if ( $wgUser->useRCPatrol() || $wgUser->useNPPatrol() ) {
-                               $validTokenUser = true;
-                       }
+               } elseif ( $wgUser->useRCPatrol() || $wgUser->useNPPatrol() ) {
+                       $validTokenUser = true;
                }
 
                if ( $validTokenUser ) {
                        // The patrol token is always the same, let's exploit that
                        static $cachedPatrolToken = null;
+
                        if ( is_null( $cachedPatrolToken ) ) {
                                $cachedPatrolToken = $wgUser->getEditToken( 'patrol' );
                        }
 
                        return $cachedPatrolToken;
-               } else {
-                       return false;
                }
+
+               return false;
        }
 
        /**
@@ -199,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',
@@ -322,7 +324,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        $this->addTables( 'change_tag' );
                        $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'rc_id=ct_rc_id' ) ) ) );
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                $this->token = $params['token'];
index 86351c0..ea992b3 100644 (file)
@@ -180,9 +180,6 @@ class ApiQueryRevisions extends ApiQueryBase {
                        $this->contentFormat = $params['contentformat'];
                }
 
-               // Possible indexes used
-               $index = array();
-
                $userMax = ( $this->fld_content ? ApiBase::LIMIT_SML1 : ApiBase::LIMIT_BIG1 );
                $botMax = ( $this->fld_content ? ApiBase::LIMIT_SML2 : ApiBase::LIMIT_BIG2 );
                $limit = $params['limit'];
@@ -210,7 +207,6 @@ class ApiQueryRevisions extends ApiQueryBase {
                                array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) )
                        );
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                if ( isset( $prop['content'] ) || !is_null( $this->difftotext ) ) {
@@ -379,7 +375,6 @@ class ApiQueryRevisions extends ApiQueryBase {
                }
 
                $this->addOption( 'LIMIT', $limit + 1 );
-               $this->addOption( 'USE INDEX', $index );
 
                $count = 0;
                $res = $this->select( __METHOD__ );
index 6c7a57d..1c9a93c 100644 (file)
@@ -282,7 +282,6 @@ class ApiQueryContributions extends ApiQueryBase {
                                array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) )
                        );
                        $this->addWhereFld( 'ct_tag', $this->params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                if ( $this->params['toponly'] ) {
index f22140a..cd4a8fc 100644 (file)
@@ -271,11 +271,7 @@ class ApiQueryUsers extends ApiQueryBase {
        }
 
        public function getCacheMode( $params ) {
-               if ( isset( $params['token'] ) ) {
-                       return 'private';
-               } else {
-                       return 'anon-public-user-private';
-               }
+               return isset( $params['token'] ) ? 'private' : 'anon-public-user-private';
        }
 
        public function getAllowedParams() {
index 01e0f6e..1a642b9 100644 (file)
@@ -458,9 +458,9 @@ class ApiUpload extends ApiBase {
                if ( $permission !== true ) {
                        if ( !$user->isLoggedIn() ) {
                                $this->dieUsageMsg( array( 'mustbeloggedin', 'upload' ) );
-                       } else {
-                               $this->dieUsageMsg( 'badaccess-groups' );
                        }
+
+                       $this->dieUsageMsg( 'badaccess-groups' );
                }
        }
 
@@ -661,11 +661,10 @@ class ApiUpload extends ApiBase {
                                                'result' => 'Queued',
                                                'statuskey' => $error[0][1],
                                        );
-                               } else {
-                                       $this->getResult()->setIndexedTagName( $error, 'error' );
-
-                                       $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
                                }
+
+                               $this->getResult()->setIndexedTagName( $error, 'error' );
+                               $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
                        }
                        $result['result'] = 'Success';
                }
index dcd8191..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 ) {
@@ -223,7 +223,7 @@ class BacklinkCache {
                                );
                        }
 
-                       if ( !$startId && !$endId && $res->numRows() < $max ) {
+                       if ( $select === 'all' && !$startId && !$endId && $res->numRows() < $max ) {
                                // The full results fit within the limit, so cache them
                                $this->fullResultCache[$table] = $res;
                        } else {
@@ -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 4837525..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 );
 
@@ -433,6 +433,7 @@ class EnhancedChangesList extends ChangesList {
 
                $r .= $users;
                $r .= $this->numberofWatchingusers( $block[0]->numberofWatchingusers );
+               $r .= '</td></tr>';
 
                # Sub-entries
                foreach ( $block as $rcObj ) {
index f4a2fa6..537deac 100644 (file)
@@ -316,6 +316,17 @@ class RedisConnectionPool {
 
                return true;
        }
+
+       /**
+        * Make sure connections are closed for sanity
+        */
+       function __destruct() {
+               foreach ( $this->connections as $server => &$serverConnections ) {
+                       foreach ( $serverConnections as $key => &$connection ) {
+                               $connection['conn']->close();
+                       }
+               }
+       }
 }
 
 /**
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 de5e72c..3d1f453 100644 (file)
@@ -83,6 +83,7 @@ class ChronologyProtector {
                $info = $lb->parentInfo();
                if ( !$db || !$db->doneWrites() ) {
                        wfDebug( __METHOD__ . ": LB {$info['id']}, no writes done\n" );
+
                        return;
                }
                $pos = $db->getMasterPos();
index 819925c..1e01d29 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 class CloneDatabase {
-
        /**
         * Table prefix for cloning
         * @var String
@@ -66,8 +65,8 @@ class CloneDatabase {
         * @param $dropCurrentTables bool
         */
        public function __construct( DatabaseBase $db, array $tablesToClone,
-               $newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true )
-       {
+               $newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true
+       {
                $this->db = $db;
                $this->tablesToClone = $tablesToClone;
                $this->newTablePrefix = $newTablePrefix;
@@ -98,7 +97,9 @@ class CloneDatabase {
                        self::changePrefix( $this->newTablePrefix );
                        $newTableName = $this->db->tableName( $tbl, 'raw' );
 
-                       if ( $this->dropCurrentTables && !in_array( $this->db->getType(), array( 'postgres', 'oracle' ) ) ) {
+                       if ( $this->dropCurrentTables
+                               && !in_array( $this->db->getType(), array( 'postgres', 'oracle' ) )
+                       ) {
                                $this->db->dropTable( $tbl, __METHOD__ );
                                wfDebug( __METHOD__ . " dropping {$newTableName}\n", true );
                                //Dropping the oldTable because the prefix was changed
index e2c59ed..fa12595 100644 (file)
@@ -208,7 +208,8 @@ interface DatabaseType {
  * Interface for classes that implement or wrap DatabaseBase
  * @ingroup Database
  */
-interface IDatabase {}
+interface IDatabase {
+}
 
 /**
  * Database abstraction object
@@ -626,7 +627,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Clear a flag for this connection
         *
-        * @param $flag: same as setFlag()'s $flag param
+        * @param $flag : same as setFlag()'s $flag param
         */
        public function clearFlag( $flag ) {
                global $wgDebugDBTransactions;
@@ -639,7 +640,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Returns a boolean whether the flag $flag is set for this connection
         *
-        * @param $flag: same as setFlag()'s $flag param
+        * @param $flag : same as setFlag()'s $flag param
         * @return Boolean
         */
        public function getFlag( $flag ) {
@@ -758,13 +759,14 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * not restored on unserialize.
         */
        public function __sleep() {
-               throw new MWException( 'Database serialization may cause problems, since the connection is not restored on wakeup.' );
+               throw new MWException( 'Database serialization may cause problems, since ' .
+                       'the connection is not restored on wakeup.' );
        }
 
        /**
         * Given a DB type, construct the name of the appropriate child class of
         * DatabaseBase. This is designed to replace all of the manual stuff like:
-        *      $class = 'Database' . ucfirst( strtolower( $dbType ) );
+        *    $class = 'Database' . ucfirst( strtolower( $dbType ) );
         * as well as validate against the canonical list of DB types we have
         *
         * This factory function is mostly useful for when you need to connect to a
@@ -784,11 +786,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         */
        final public static function factory( $dbType, $p = array() ) {
                $canonicalDBTypes = array(
-                       'mysql'    => array( 'mysqli', 'mysql' ),
+                       'mysql' => array( 'mysqli', 'mysql' ),
                        'postgres' => array(),
-                       'sqlite'   => array(),
-                       'oracle'   => array(),
-                       'mssql'    => array(),
+                       'sqlite' => array(),
+                       'oracle' => array(),
+                       'mssql' => array(),
                );
 
                $driver = false;
@@ -829,6 +831,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                'tablePrefix' => isset( $p['tablePrefix'] ) ? $p['tablePrefix'] : 'get from global',
                                'foreign' => isset( $p['foreign'] ) ? $p['foreign'] : false
                        );
+
                        return new $class( $params );
                } else {
                        return null;
@@ -852,6 +855,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( $this->mPHPError ) {
                        $error = preg_replace( '!\[<a.*</a>\]!', '', $this->mPHPError );
                        $error = preg_replace( '!^.*?:\s?(.*)$!', '$1', $error );
+
                        return $error;
                } else {
                        return false;
@@ -891,6 +895,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
                        $ret = $this->closeConnection();
                        $this->mConn = false;
+
                        return $ret;
                } else {
                        return true;
@@ -987,8 +992,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
                # If DBO_TRX is set, start a transaction
                if ( ( $this->mFlags & DBO_TRX ) && !$this->mTrxLevel &&
-                       $sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK' )
-               {
+                       $sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK'
+               {
                        # Avoid establishing transactions for SHOW and SET statements too -
                        # that would delay transaction initializations to once connection
                        # is really used by application
@@ -1100,7 +1105,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        wfDebug( "SQL ERROR (ignored): $error\n" );
                        $this->ignoreErrors( $ignore );
                } else {
-                       $sql1line = str_replace( "\n", "\\n", $sql );
+                       $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 );
@@ -1198,9 +1203,15 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                return $arg;
                        case '&':
                                # return $this->addQuotes( file_get_contents( $arg ) );
-                               throw new DBUnexpectedError( $this, '& mode is not implemented. If it\'s really needed, uncomment the line above.' );
+                               throw new DBUnexpectedError(
+                                       $this,
+                                       '& mode is not implemented. If it\'s really needed, uncomment the line above.'
+                               );
                        default:
-                               throw new DBUnexpectedError( $this, 'Received invalid match. This should never happen!' );
+                               throw new DBUnexpectedError(
+                                       $this,
+                                       'Received invalid match. This should never happen!'
+                               );
                }
        }
 
@@ -1362,6 +1373,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                : $options['HAVING'];
                        $sql .= ' HAVING ' . $having;
                }
+
                return $sql;
        }
 
@@ -1378,8 +1390,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $ob = is_array( $options['ORDER BY'] )
                                ? implode( ',', $options['ORDER BY'] )
                                : $options['ORDER BY'];
+
                        return ' ORDER BY ' . $ob;
                }
+
                return '';
        }
 
@@ -1546,8 +1560,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @see DatabaseBase::select()
         */
        public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
-               $options = array(), $join_conds = array() )
-       {
+               $options = array(), $join_conds = array()
+       {
                if ( is_array( $vars ) ) {
                        $vars = implode( ',', $this->fieldNamesWithAlias( $vars ) );
                }
@@ -1608,11 +1622,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string|array $options Query options
         * @param $join_conds array|string Join conditions
         *
-        * @return object|bool
+        * @return stdClass|bool
         */
        public function selectRow( $table, $vars, $conds, $fname = __METHOD__,
-               $options = array(), $join_conds = array() )
-       {
+               $options = array(), $join_conds = array()
+       {
                $options = (array)$options;
                $options['LIMIT'] = 1;
                $res = $this->select( $table, $vars, $conds, $fname, $options, $join_conds );
@@ -1651,8 +1665,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @return Integer: row count
         */
        public function estimateRowCount( $table, $vars = '*', $conds = '',
-               $fname = __METHOD__, $options = array() )
-       {
+               $fname = __METHOD__, $options = array()
+       {
                $rows = 0;
                $res = $this->select( $table, array( 'rowcount' => 'COUNT(*)' ), $conds, $fname, $options );
 
@@ -1905,7 +1919,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param $table  String name of the table to UPDATE. This will be passed through
         *                DatabaseBase::tableName().
         *
-        * @param array $values  An array of values to SET. For each array element,
+        * @param array $values An array of values to SET. For each array element,
         *                the key gives the field name, and the value gives the data
         *                to set that field to. The data will be quoted by
         *                DatabaseBase::addQuotes().
@@ -2099,6 +2113,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                $delim, $table, $field, $conds = '', $join_conds = array()
        ) {
                $fld = "GROUP_CONCAT($field SEPARATOR " . $this->addQuotes( $delim ) . ')';
+
                return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
        }
 
@@ -2116,6 +2131,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                # if your database engine supports a concept similar to MySQL's
                # databases you may as well.
                $this->mDBname = $db;
+
                return true;
        }
 
@@ -2183,7 +2199,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        list( $table ) = $dbDetails;
                        if ( $wgSharedDB !== null # We have a shared database
                                && $this->mForeign == false # We're not working on a foreign database
-                               && !$this->isQuotedIdentifier( $table ) # Paranoia check to prevent shared tables listing '`table`'
+                               && !$this->isQuotedIdentifier( $table ) # Prevent shared tables listing '`table`'
                                && in_array( $table, $wgSharedTables ) # A shared table is selected
                        ) {
                                $database = $wgSharedDB;
@@ -2285,6 +2301,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        }
                        $retval[] = $this->tableNameWithAlias( $table, $alias );
                }
+
                return $retval;
        }
 
@@ -2318,6 +2335,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        }
                        $retval[] = $this->fieldNameWithAlias( $field, $alias );
                }
+
                return $retval;
        }
 
@@ -2462,13 +2480,17 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * LIKE statement wrapper, receives a variable-length argument list with parts of pattern to match
-        * containing either string literals that will be escaped or tokens returned by anyChar() or anyString().
-        * Alternatively, the function could be provided with an array of aforementioned parameters.
+        * LIKE statement wrapper, receives a variable-length argument list with
+        * parts of pattern to match containing either string literals that will be
+        * escaped or tokens returned by anyChar() or anyString(). Alternatively,
+        * the function could be provided with an array of aforementioned
+        * parameters.
         *
-        * Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns a LIKE clause that searches
-        * for subpages of 'My page title'.
-        * Alternatively: $pattern = array( 'My_page_title/', $dbr->anyString() ); $query .= $dbr->buildLike( $pattern );
+        * Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns
+        * a LIKE clause that searches for subpages of 'My page title'.
+        * Alternatively:
+        *   $pattern = array( 'My_page_title/', $dbr->anyString() );
+        *   $query .= $dbr->buildLike( $pattern );
         *
         * @since 1.16
         * @return String: fully built LIKE statement
@@ -2751,8 +2773,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @throws DBUnexpectedError
         */
        public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds,
-               $fname = __METHOD__ )
-       {
+               $fname = __METHOD__
+       {
                if ( !$conds ) {
                        throw new DBUnexpectedError( $this,
                                'DatabaseBase::deleteJoin() called with empty $conds' );
@@ -2863,8 +2885,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         */
        public function insertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = array(), $selectOptions = array() )
-       {
+               $insertOptions = array(), $selectOptions = array()
+       {
                $destTable = $this->tableName( $destTable );
 
                if ( is_array( $insertOptions ) ) {
@@ -2923,6 +2945,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( !is_numeric( $limit ) ) {
                        throw new DBUnexpectedError( $this, "Invalid non-numeric limit passed to limitResult()\n" );
                }
+
                return "$sql LIMIT "
                        . ( ( is_numeric( $offset ) && $offset != 0 ) ? "{$offset}," : "" )
                        . "{$limit} ";
@@ -2947,6 +2970,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         */
        public function unionQueries( $sqls, $all ) {
                $glue = $all ? ') UNION ALL (' : ') UNION (';
+
                return '(' . implode( $glue, $sqls ) . ')';
        }
 
@@ -2963,6 +2987,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( is_array( $cond ) ) {
                        $cond = $this->makeList( $cond, LIST_AND );
                }
+
                return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
        }
 
@@ -3083,9 +3108,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( $tries <= 0 ) {
                        $this->rollback( __METHOD__ );
                        $this->reportQueryError( $error, $errno, $sql, $fname );
+
                        return false;
                } else {
                        $this->commit( __METHOD__ );
+
                        return $retVal;
                }
        }
@@ -3110,15 +3137,18 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        if ( $wait > $timeout * 1e6 ) {
                                wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
                                wfProfileOut( __METHOD__ );
+
                                return -1;
                        } elseif ( $wait > 0 ) {
                                wfDebug( "Fake slave waiting $wait us\n" );
                                usleep( $wait );
                                wfProfileOut( __METHOD__ );
+
                                return 1;
                        } else {
                                wfDebug( "Fake slave up to date ($wait us)\n" );
                                wfProfileOut( __METHOD__ );
+
                                return 0;
                        }
                }
@@ -3138,6 +3168,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( !is_null( $this->mFakeSlaveLag ) ) {
                        $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
                        wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
+
                        return $pos;
                } else {
                        # Stub
@@ -3216,7 +3247,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                        $this->clearFlag( DBO_TRX ); // make each query its own transaction
                                        call_user_func( $phpCallback );
                                        $this->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore automatic begin()
-                               } catch ( Exception $e ) {}
+                               } catch ( Exception $e ) {
+                               }
                        }
                } while ( count( $this->mTrxIdleCallbacks ) );
 
@@ -3239,7 +3271,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                try {
                                        list( $phpCallback ) = $callback;
                                        call_user_func( $phpCallback );
-                               } catch ( Exception $e ) {}
+                               } catch ( Exception $e ) {
+                               }
                        }
                } while ( count( $this->mTrxPreCommitCallbacks ) );
 
@@ -3309,14 +3342,16 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * Begin a transaction. If a transaction is already in progress, that transaction will be committed before the
-        * new transaction is started.
+        * Begin a transaction. If a transaction is already in progress,
+        * that transaction will be committed before the new transaction is started.
         *
-        * Note that when the DBO_TRX flag is set (which is usually the case for web requests, but not for maintenance scripts),
-        * any previous database query will have started a transaction automatically.
+        * Note that when the DBO_TRX flag is set (which is usually the case for web
+        * requests, but not for maintenance scripts), any previous database query
+        * will have started a transaction automatically.
         *
-        * Nesting of transactions is not supported. Attempts to nest transactions will cause a warning, unless the current
-        * transaction was started automatically because of the DBO_TRX flag.
+        * Nesting of transactions is not supported. Attempts to nest transactions
+        * will cause a warning, unless the current transaction was started
+        * automatically because of the DBO_TRX flag.
         *
         * @param $fname string
         * @throws DBError
@@ -3384,15 +3419,19 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Nesting of transactions is not supported.
         *
         * @param $fname string
-        * @param string $flush Flush flag, set to 'flush' to disable warnings about explicitly committing implicit
-        *        transactions, or calling commit when no transaction is in progress.
-        *        This will silently break any ongoing explicit transaction. Only set the flush flag if you are sure
-        *        that it is safe to ignore these warnings in your context.
+        * @param string $flush Flush flag, set to 'flush' to disable warnings about
+        *   explicitly committing implicit transactions, or calling commit when no
+        *   transaction is in progress. This will silently break any ongoing
+        *   explicit transaction. Only set the flush flag if you are sure that it
+        *   is safe to ignore these warnings in your context.
         */
        final public function commit( $fname = __METHOD__, $flush = '' ) {
                if ( !$this->mTrxAtomicLevels->isEmpty() ) {
                        // There are still atomic sections open. This cannot be ignored
-                       throw new DBUnexpectedError( $this, "Attempted to commit transaction while atomic sections are still open" );
+                       throw new DBUnexpectedError(
+                               $this,
+                               "Attempted to commit transaction while atomic sections are still open"
+                       );
                }
 
                if ( $flush != 'flush' ) {
@@ -3511,8 +3550,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * For caching purposes the list of all views should be stored in
         * $this->allViews. The process cache can be cleared with clearViewsCache()
         *
-        * @param string $prefix   Only show VIEWs with this prefix, eg. unit_test_
-        * @param string $fname    Name of calling function
+        * @param string $prefix Only show VIEWs with this prefix, eg. unit_test_
+        * @param string $fname Name of calling function
         * @throws MWException
         * @since 1.22
         */
@@ -3673,8 +3712,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param bool|callable $lineCallback Optional function called before reading each line
         * @param bool|callable $resultCallback Optional function called for each MySQL result
         * @param bool|string $fname Calling function name or false if name should be
-        *      generated dynamically using $filename
-        * @param bool|callable $inputCallback Callback: Optional function called for each complete line sent
+        *   generated dynamically using $filename
+        * @param bool|callable $inputCallback Callback: Optional function called
+        *   for each complete line sent
         * @throws MWException
         * @throws Exception|MWException
         * @return bool|string
@@ -3696,8 +3736,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
                try {
                        $error = $this->sourceStream( $fp, $lineCallback, $resultCallback, $fname, $inputCallback );
-               }
-               catch ( MWException $e ) {
+               } catch ( MWException $e ) {
                        fclose( $fp );
                        throw $e;
                }
@@ -3751,8 +3790,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @return bool|string
         */
        public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
-               $fname = __METHOD__, $inputCallback = false )
-       {
+               $fname = __METHOD__, $inputCallback = false
+       {
                $cmd = '';
 
                while ( !feof( $fp ) ) {
@@ -3790,6 +3829,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
                                        if ( false === $res ) {
                                                $err = $this->lastError();
+
                                                return "Query \"{$cmd}\" failed with error code \"$err\".\n";
                                        }
                                }
@@ -3815,6 +3855,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -3845,6 +3886,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        // replace /*$var*/
                        $ins = str_replace( '/*$' . $var . '*/', $this->strencode( $value ), $ins );
                }
+
                return $ins;
        }
 
@@ -3998,6 +4040,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( $this->cascadingDeletes() ) {
                        $sql .= " CASCADE";
                }
+
                return $this->query( $sql, $fName );
        }
 
@@ -4078,7 +4121,6 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $callers = array();
                        foreach ( $this->mTrxIdleCallbacks as $callbackInfo ) {
                                $callers[] = $callbackInfo[1];
-
                        }
                        $callers = implode( ', ', $callers );
                        trigger_error( "DB transaction callbacks still pending (from $callers)." );
index f14a502..8be8530 100644 (file)
@@ -26,7 +26,6 @@
  * @ingroup Database
  */
 class DBError extends MWException {
-
        /**
         * @var DatabaseBase
         */
@@ -129,6 +128,7 @@ class DBConnectionError extends DBError {
                } else {
                        $message = $fallback;
                }
+
                return wfMsgReplaceArgs( $message, $args );
        }
 
@@ -146,8 +146,14 @@ class DBConnectionError extends DBError {
        function getHTML() {
                global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors;
 
-               $sorry = htmlspecialchars( $this->msg( 'dberr-problems', 'Sorry! This site is experiencing technical difficulties.' ) );
-               $again = htmlspecialchars( $this->msg( 'dberr-again', 'Try waiting a few minutes and reloading.' ) );
+               $sorry = htmlspecialchars( $this->msg(
+                       'dberr-problems',
+                       'Sorry! This site is experiencing technical difficulties.'
+               ) );
+               $again = htmlspecialchars( $this->msg(
+                       'dberr-again',
+                       'Try waiting a few minutes and reloading.'
+               ) );
 
                if ( $wgShowHostnames || $wgShowSQLErrors ) {
                        $info = str_replace(
@@ -155,7 +161,10 @@ class DBConnectionError extends DBError {
                                htmlspecialchars( $this->msg( 'dberr-info', '(Cannot contact the database server: $1)' ) )
                        );
                } else {
-                       $info = htmlspecialchars( $this->msg( 'dberr-info-hidden', '(Cannot contact the database server)' ) );
+                       $info = htmlspecialchars( $this->msg(
+                               'dberr-info-hidden',
+                               '(Cannot contact the database server)'
+                       ) );
                }
 
                # No database access
@@ -202,6 +211,7 @@ class DBConnectionError extends DBError {
 
                                        // Output cached page with notices on bottom and re-close body
                                        echo "{$cache}<hr />{$this->getHTML()}</body></html>";
+
                                        return;
                                }
                        } catch ( MWException $e ) {
@@ -219,8 +229,14 @@ class DBConnectionError extends DBError {
        function searchForm() {
                global $wgSitename, $wgCanonicalServer, $wgRequest;
 
-               $usegoogle = htmlspecialchars( $this->msg( 'dberr-usegoogle', 'You can try searching via Google in the meantime.' ) );
-               $outofdate = htmlspecialchars( $this->msg( 'dberr-outofdate', 'Note that their indexes of our content may be out of date.' ) );
+               $usegoogle = htmlspecialchars( $this->msg(
+                       'dberr-usegoogle',
+                       'You can try searching via Google in the meantime.'
+               ) );
+               $outofdate = htmlspecialchars( $this->msg(
+                       'dberr-outofdate',
+                       'Note that their indexes of our content may be out of date.'
+               ) );
                $googlesearch = htmlspecialchars( $this->msg( 'searchbutton', 'Search' ) );
 
                $search = htmlspecialchars( $wgRequest->getVal( 'search' ) );
@@ -246,6 +262,7 @@ class DBConnectionError extends DBError {
        </p>
 </form>
 EOT;
+
                return $trygoogle;
        }
 
@@ -297,7 +314,9 @@ class DBQueryError extends DBError {
         * @param $fname string
         */
        function __construct( DatabaseBase $db, $error, $errno, $sql, $fname ) {
-               $message = "A database error has occurred. Did you forget to run maintenance/update.php after upgrading?  See: https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
+               $message = "A database error has occurred. Did you forget to run " .
+                       "maintenance/update.php after upgrading?  See: " .
+                       "https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
                        "Query: $sql\n" .
                        "Function: $fname\n" .
                        "Error: $errno $error\n";
@@ -408,12 +427,13 @@ This may indicate a bug in the software.',
                        'databaseerror-function' => 'Function: $1',
                        'databaseerror-error' => 'Error: $1',
                );
+
                return $messages[$key];
        }
-
 }
 
 /**
  * @ingroup Database
  */
-class DBUnexpectedError extends DBError {}
+class DBUnexpectedError extends DBError {
+}
index 240a097..5a5eab1 100644 (file)
@@ -78,12 +78,16 @@ class DatabaseMssql extends DatabaseBase {
        function open( $server, $user, $password, $dbName ) {
                # Test for driver support, to avoid suppressed fatal error
                if ( !function_exists( 'sqlsrv_connect' ) ) {
-                       throw new DBConnectionError( $this, "MS Sql Server Native (sqlsrv) functions missing. You can download the driver from: http://go.microsoft.com/fwlink/?LinkId=123470\n" );
+                       throw new DBConnectionError(
+                               $this,
+                               "MS Sql Server Native (sqlsrv) functions missing. You can download " .
+                                       "the driver from: http://go.microsoft.com/fwlink/?LinkId=123470\n" );
                }
 
                global $wgDBport;
 
-               if ( !strlen( $user ) ) { # e.g. the class is being loaded
+               # e.g. the class is being loaded
+               if ( !strlen( $user ) ) {
                        return;
                }
 
@@ -102,9 +106,11 @@ class DatabaseMssql extends DatabaseBase {
 
                // Start NT Auth Hack
                // Quick and dirty work around to provide NT Auth designation support.
-               // Current solution requires installer to know to input 'ntauth' for both username and password
-               // to trigger connection via NT Auth. - ugly, ugly, ugly
-               // TO-DO: Make this better and add NT Auth choice to MW installer when SQL Server option is chosen.
+               // Current solution requires installer to know to input 'ntauth' for
+               // both username and password to trigger connection via NT Auth. Ugly,
+               // ugly, ugly!
+               // @todo Make this better and add NT Auth choice to MW installer when
+               // SQL Server option is chosen.
                $ntAuthUserTest = strtolower( $user );
                $ntAuthPassTest = strtolower( $password );
 
@@ -123,12 +129,15 @@ class DatabaseMssql extends DatabaseBase {
 
                if ( $this->mConn === false ) {
                        wfDebug( "DB connection error\n" );
-                       wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+                       wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " .
+                               substr( $password, 0, 3 ) . "...\n" );
                        wfDebug( $this->lastError() . "\n" );
+
                        return false;
                }
 
                $this->mOpened = true;
+
                return $this->mConn;
        }
 
@@ -145,10 +154,11 @@ class DatabaseMssql extends DatabaseBase {
                wfDebug( "SQL: [$sql]\n" );
                $this->offset = 0;
 
-               // several extensions seem to think that all databases support limits via LIMIT N after the WHERE clause
-               // well, MSSQL uses SELECT TOP N, so to catch any of those extensions we'll do a quick check for a LIMIT
-               // clause and pass $sql through $this->LimitToTopN() which parses the limit clause and passes the result to
-               // $this->limitResult();
+               // several extensions seem to think that all databases support limits
+               // via LIMIT N after the WHERE clause well, MSSQL uses SELECT TOP N,
+               // so to catch any of those extensions we'll do a quick check for a
+               // LIMIT clause and pass $sql through $this->LimitToTopN() which parses
+               // the limit clause and passes the result to $this->limitResult();
                if ( preg_match( '/\bLIMIT\s*/i', $sql ) ) {
                        // massage LIMIT -> TopN
                        $sql = $this->LimitToTopN( $sql );
@@ -163,7 +173,9 @@ class DatabaseMssql extends DatabaseBase {
                // perform query
                $stmt = sqlsrv_query( $this->mConn, $sql );
                if ( $stmt == false ) {
-                       $message = "A database error has occurred. Did you forget to run maintenance/update.php after upgrading?  See: http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
+                       $message = "A database error has occurred. Did you forget " .
+                               "to run maintenance/update.php after upgrading?  See: " .
+                               "http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
                                "Query: " . htmlentities( $sql ) . "\n" .
                                "Function: " . __METHOD__ . "\n";
                        // process each error (our driver will give us an array of errors unlike other providers)
@@ -176,9 +188,11 @@ class DatabaseMssql extends DatabaseBase {
                // remember number of rows affected
                $this->mAffectedRows = sqlsrv_rows_affected( $stmt );
 
-               // if it is a SELECT statement, or an insert with a request to output something we want to return a row.
+               // if it is a SELECT statement, or an insert with a request to output
+               // something we want to return a row.
                if ( ( preg_match( '#\bSELECT\s#i', $sql ) ) ||
-                       ( preg_match( '#\bINSERT\s#i', $sql ) && preg_match( '#\bOUTPUT\s+INSERTED\b#i', $sql ) ) ) {
+                       ( preg_match( '#\bINSERT\s#i', $sql ) && preg_match( '#\bOUTPUT\s+INSERTED\b#i', $sql ) )
+               ) {
                        // this is essentially a rowset, but Mediawiki calls these 'result'
                        // the rowset owns freeing the statement
                        $res = new MssqlResult( $stmt );
@@ -186,6 +200,7 @@ class DatabaseMssql extends DatabaseBase {
                        // otherwise we simply return it was successful, failure throws an exception
                        $res = true;
                }
+
                return $res;
        }
 
@@ -201,6 +216,7 @@ class DatabaseMssql extends DatabaseBase {
                        $res = $res->result;
                }
                $row = $res->fetch( 'OBJECT' );
+
                return $row;
        }
 
@@ -216,6 +232,7 @@ class DatabaseMssql extends DatabaseBase {
                } else {
                        $strRet = "No errors found";
                }
+
                return $strRet;
        }
 
@@ -224,6 +241,7 @@ class DatabaseMssql extends DatabaseBase {
                        $res = $res->result;
                }
                $row = $res->fetch( SQLSRV_FETCH_BOTH );
+
                return $row;
        }
 
@@ -231,6 +249,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return ( $res ) ? $res->numrows() : 0;
        }
 
@@ -238,6 +257,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return ( $res ) ? $res->numfields() : 0;
        }
 
@@ -245,6 +265,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return ( $res ) ? $res->fieldname( $n ) : 0;
        }
 
@@ -260,6 +281,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return ( $res ) ? $res->seek( $row ) : false;
        }
 
@@ -291,21 +313,26 @@ class DatabaseMssql extends DatabaseBase {
         * @param $vars    Mixed: array or string, field name(s) to be retrieved
         * @param $conds   Mixed: array or string, condition(s) for WHERE
         * @param $fname   String: calling function name (use __METHOD__) for logs/profiling
-        * @param array $options associative array of options (e.g. array('GROUP BY' => 'page_title')),
-        *                 see Database::makeSelectOptions code for list of supported stuff
-        * @param $join_conds Array: Associative array of table join conditions (optional)
-        *                                                 (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
-        * @return Mixed: database result resource (feed to Database::fetchObject or whatever), or false on failure
+        * @param array $options associative array of options (e.g.
+        *   array('GROUP BY' => 'page_title')), see Database::makeSelectOptions
+        *   code for list of supported stuff
+        * @param $join_conds Array: Associative array of table join conditions
+        *   (optional) (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+        * @return Mixed: database result resource (feed to Database::fetchObject
+        *   or whatever), or false on failure
         */
-       function select( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() )
-       {
+       function select( $table, $vars, $conds = '', $fname = __METHOD__,
+               $options = array(), $join_conds = array()
+       ) {
                $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
                if ( isset( $options['EXPLAIN'] ) ) {
                        sqlsrv_query( $this->mConn, "SET SHOWPLAN_ALL ON;" );
                        $ret = $this->query( $sql, $fname );
                        sqlsrv_query( $this->mConn, "SET SHOWPLAN_ALL OFF;" );
+
                        return $ret;
                }
+
                return $this->query( $sql, $fname );
        }
 
@@ -316,16 +343,19 @@ class DatabaseMssql extends DatabaseBase {
         * @param $vars    Mixed:  Array or string, field name(s) to be retrieved
         * @param $conds   Mixed:  Array or string, condition(s) for WHERE
         * @param $fname   String: Calling function name (use __METHOD__) for logs/profiling
-        * @param array $options  Associative array of options (e.g. array('GROUP BY' => 'page_title')),
+        * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
         *                 see Database::makeSelectOptions code for list of supported stuff
         * @param $join_conds Array: Associative array of table join conditions (optional)
         *                    (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
         * @return string, the SQL text
         */
-       function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+       function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
+               $options = array(), $join_conds = array()
+       ) {
                if ( isset( $options['EXPLAIN'] ) ) {
                        unset( $options['EXPLAIN'] );
                }
+
                return parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
        }
 
@@ -337,8 +367,11 @@ class DatabaseMssql extends DatabaseBase {
         * Takes same arguments as Database::select()
         * @return int
         */
-       function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
-               $options['EXPLAIN'] = true;// http://msdn2.microsoft.com/en-us/library/aa259203.aspx
+       function estimateRowCount( $table, $vars = '*', $conds = '',
+               $fname = __METHOD__, $options = array()
+       ) {
+               // http://msdn2.microsoft.com/en-us/library/aa259203.aspx
+               $options['EXPLAIN'] = true;
                $res = $this->select( $table, $vars, $conds, $fname, $options );
 
                $rows = -1;
@@ -348,6 +381,7 @@ class DatabaseMssql extends DatabaseBase {
                                $rows = $row['EstimateRows'];
                        }
                }
+
                return $rows;
        }
 
@@ -357,8 +391,9 @@ class DatabaseMssql extends DatabaseBase {
         * @return array|bool|null
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
-               # This does not return the same info as MYSQL would, but that's OK because MediaWiki never uses the
-               # returned value except to check for the existance of indexes.
+               # This does not return the same info as MYSQL would, but that's OK
+               # because MediaWiki never uses the returned value except to check for
+               # the existance of indexes.
                $sql = "sp_helpindex '" . $table . "'";
                $res = $this->query( $sql, $fname );
                if ( !$res ) {
@@ -383,6 +418,7 @@ class DatabaseMssql extends DatabaseBase {
                                }
                        }
                }
+
                return empty( $result ) ? false : $result;
        }
 
@@ -413,16 +449,20 @@ class DatabaseMssql extends DatabaseBase {
 
                $table = $this->tableName( $table );
 
-               if ( !( isset( $arrToInsert[0] ) && is_array( $arrToInsert[0] ) ) ) {// Not multi row
-                       $arrToInsert = array( 0 => $arrToInsert );// make everything multi row compatible
+               if ( !( isset( $arrToInsert[0] ) && is_array( $arrToInsert[0] ) ) ) { // Not multi row
+                       $arrToInsert = array( 0 => $arrToInsert ); // make everything multi row compatible
                }
 
                $allOk = true;
 
                // We know the table we're inserting into, get its identity column
                $identity = null;
-               $tableRaw = preg_replace( '#\[([^\]]*)\]#', '$1', $table ); // strip matching square brackets from table name
-               $res = $this->doQuery( "SELECT NAME AS idColumn FROM SYS.IDENTITY_COLUMNS WHERE OBJECT_NAME(OBJECT_ID)='{$tableRaw}'" );
+               // strip matching square brackets from table name
+               $tableRaw = preg_replace( '#\[([^\]]*)\]#', '$1', $table );
+               $res = $this->doQuery(
+                       "SELECT NAME AS idColumn FROM SYS.IDENTITY_COLUMNS " .
+                               "WHERE OBJECT_NAME(OBJECT_ID)='{$tableRaw}'"
+               );
                if ( $res && $res->numrows() ) {
                        // There is an identity for this table.
                        $identity = array_pop( $res->fetch( SQLSRV_FETCH_ASSOC ) );
@@ -430,7 +470,8 @@ class DatabaseMssql extends DatabaseBase {
                unset( $res );
 
                foreach ( $arrToInsert as $a ) {
-                       // start out with empty identity column, this is so we can return it as a result of the insert logic
+                       // start out with empty identity column, this is so we can return
+                       // it as a result of the insert logic
                        $sqlPre = '';
                        $sqlPost = '';
                        $identityClause = '';
@@ -444,14 +485,15 @@ class DatabaseMssql extends DatabaseBase {
                                                        // there is a value being passed to us, we need to turn on and off inserted identity
                                                        $sqlPre = "SET IDENTITY_INSERT $table ON;";
                                                        $sqlPost = ";SET IDENTITY_INSERT $table OFF;";
-
                                                } else {
                                                        // we can't insert NULL into an identity column, so remove the column from the insert.
                                                        unset( $a[$k] );
                                                }
                                        }
                                }
-                               $identityClause = "OUTPUT INSERTED.$identity "; // we want to output an identity column as result
+
+                               // we want to output an identity column as result
+                               $identityClause = "OUTPUT INSERTED.$identity ";
                        }
 
                        $keys = array_keys( $a );
@@ -469,7 +511,8 @@ class DatabaseMssql extends DatabaseBase {
                        // translate MySQL INSERT IGNORE to something SQL Server can use
                        // example:
                        // MySQL: INSERT IGNORE INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
-                       // MSSQL: IF NOT EXISTS (SELECT * FROM user_groups WHERE ug_user = '1') INSERT INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
+                       // MSSQL: IF NOT EXISTS (SELECT * FROM user_groups WHERE ug_user = '1')
+                       //        INSERT INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
                        if ( $ignoreClause ) {
                                $prival = $a[$keys[0]];
                                $sqlPre .= "IF NOT EXISTS (SELECT * FROM $table WHERE $keys[0] = '$prival')";
@@ -520,19 +563,19 @@ class DatabaseMssql extends DatabaseBase {
                        }
                        $allOk = false;
                }
+
                return $allOk;
        }
 
        /**
         * INSERT SELECT wrapper
         * $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
-        * Source items may be literals rather than field names, but strings should be quoted with Database::addQuotes()
-        * $conds may be "*" to copy the whole table
-        * srcTable may be an array of tables.
+        * Source items may be literals rather than field names, but strings should
+        * be quoted with Database::addQuotes().
         * @param string $destTable
-        * @param array|string $srcTable
+        * @param array|string $srcTable May be an array of tables.
         * @param array $varMap
-        * @param array $conds
+        * @param array $conds May be "*" to copy the whole table.
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
@@ -541,15 +584,25 @@ class DatabaseMssql extends DatabaseBase {
         */
        function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
                $insertOptions = array(), $selectOptions = array() ) {
-               $ret = parent::insertSelect( $destTable, $srcTable, $varMap, $conds, $fname, $insertOptions, $selectOptions );
+               $ret = parent::insertSelect(
+                       $destTable,
+                       $srcTable,
+                       $varMap,
+                       $conds,
+                       $fname,
+                       $insertOptions,
+                       $selectOptions
+               );
 
                if ( $ret === false ) {
                        throw new DBQueryError( $this, $this->getErrors(), $this->lastErrno(), /*$sql*/ '', $fname );
                } elseif ( $ret != null ) {
                        // remember number of rows affected
                        $this->mAffectedRows = sqlsrv_rows_affected( $ret );
+
                        return $ret;
                }
+
                return null;
        }
 
@@ -559,14 +612,19 @@ class DatabaseMssql extends DatabaseBase {
         */
        function nextSequenceValue( $seqName ) {
                if ( !$this->tableExists( 'sequence_' . $seqName ) ) {
-                       sqlsrv_query( $this->mConn, "CREATE TABLE [sequence_$seqName] (id INT NOT NULL IDENTITY PRIMARY KEY, junk varchar(10) NULL)" );
+                       sqlsrv_query(
+                               $this->mConn,
+                               "CREATE TABLE [sequence_$seqName] (id INT NOT NULL IDENTITY PRIMARY KEY, junk varchar(10) NULL)"
+                       );
                }
                sqlsrv_query( $this->mConn, "INSERT INTO [sequence_$seqName] (junk) VALUES ('')" );
                $ret = sqlsrv_query( $this->mConn, "SELECT TOP 1 id FROM [sequence_$seqName] ORDER BY id DESC" );
-               $row = sqlsrv_fetch_array( $ret, SQLSRV_FETCH_ASSOC );// KEEP ASSOC THERE, weird weird bug dealing with the return value if you don't
+               // KEEP ASSOC THERE, weird weird bug dealing with the return value if you don't
+               $row = sqlsrv_fetch_array( $ret, SQLSRV_FETCH_ASSOC );
 
                sqlsrv_free_stmt( $ret );
                $this->mInsertId = $row['id'];
+
                return $row['id'];
        }
 
@@ -579,6 +637,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( $ret !== false ) {
                        $row = sqlsrv_fetch_array( $ret );
                        sqlsrv_free_stmt( $ret );
+
                        return $row['id'];
                } else {
                        return $this->nextSequenceValue( $seqName );
@@ -596,6 +655,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( strtolower( $row['DATA_TYPE'] ) != 'text' ) {
                        $size = $row['CHARACTER_MAXIMUM_LENGTH'];
                }
+
                return $size;
        }
 
@@ -622,13 +682,16 @@ class DatabaseMssql extends DatabaseBase {
                                        ) as sub2
                                ) AS sub3
                                WHERE line3 BETWEEN ' . ( $offset + 1 ) . ' AND ' . ( $offset + $limit );
+
                        return $sql;
                }
        }
 
-       // If there is a limit clause, parse it, strip it, and pass the remaining sql through limitResult()
-       // with the appropriate parameters. Not the prettiest solution, but better than building a whole new parser.
-       // This exists becase there are still too many extensions that don't use dynamic sql generation.
+       // If there is a limit clause, parse it, strip it, and pass the remaining
+       // SQL through limitResult() with the appropriate parameters. Not the
+       // prettiest solution, but better than building a whole new parser. This
+       // exists becase there are still too many extensions that don't use dynamic
+       // sql generation.
        function LimitToTopN( $sql ) {
                // Matches: LIMIT {[offset,] row_count | row_count OFFSET offset}
                $pattern = '/\bLIMIT\s+((([0-9]+)\s*,\s*)?([0-9]+)(\s+OFFSET\s+([0-9]+))?)/i';
@@ -637,13 +700,15 @@ class DatabaseMssql extends DatabaseBase {
                        $row_count = $matches[4];
                        // offset = $matches[3] OR $matches[6]
                        $offset = $matches[3] or
-                               $offset = $matches[6] or
-                               $offset = false;
+                       $offset = $matches[6] or
+                       $offset = false;
 
                        // strip the matching LIMIT clause out
                        $sql = str_replace( $matches[0], '', $sql );
+
                        return $this->limitResult( $sql, $row_count, $offset );
                }
+
                return $sql;
        }
 
@@ -667,6 +732,7 @@ class DatabaseMssql extends DatabaseBase {
                if ( isset( $server_info['SQLServerVersion'] ) ) {
                        $version = $server_info['SQLServerVersion'];
                }
+
                return $version;
        }
 
@@ -675,6 +741,7 @@ class DatabaseMssql extends DatabaseBase {
                        WHERE table_type='BASE TABLE' AND table_name = '$table'" );
                if ( $res === false ) {
                        print "Error in tableExists query: " . $this->getErrors();
+
                        return false;
                }
                if ( sqlsrv_fetch( $res ) ) {
@@ -694,6 +761,7 @@ class DatabaseMssql extends DatabaseBase {
                        WHERE TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" );
                if ( $res === false ) {
                        print "Error in fieldExists query: " . $this->getErrors();
+
                        return false;
                }
                if ( sqlsrv_fetch( $res ) ) {
@@ -709,12 +777,14 @@ class DatabaseMssql extends DatabaseBase {
                        WHERE TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" );
                if ( $res === false ) {
                        print "Error in fieldInfo query: " . $this->getErrors();
+
                        return false;
                }
                $meta = $this->fetchRow( $res );
                if ( $meta ) {
                        return new MssqlField( $meta );
                }
+
                return false;
        }
 
@@ -759,9 +829,11 @@ class DatabaseMssql extends DatabaseBase {
                        throw new MWException( "The identifier '$identifier' is too long (max. 128)" );
                }
                if ( ( strpos( $identifier, '[' ) !== false ) || ( strpos( $identifier, ']' ) !== false ) ) {
-                       // It may be allowed if you quoted with double quotation marks, but that would break if QUOTED_IDENTIFIER is OFF
+                       // It may be allowed if you quoted with double quotation marks, but
+                       // that would break if QUOTED_IDENTIFIER is OFF
                        throw new MWException( "You can't use square brackers in the identifier '$identifier'" );
                }
+
                return "[$identifier]";
        }
 
@@ -825,13 +897,13 @@ class DatabaseMssql extends DatabaseBase {
        }
 
        function encodeBlob( $b ) {
-       // we can't have zero's and such, this is a simple encoding to make sure we don't barf
+               // we can't have zero's and such, this is a simple encoding to make sure we don't barf
                return base64_encode( $b );
        }
 
        function decodeBlob( $b ) {
-       // we can't have zero's and such, this is a simple encoding to make sure we don't barf
-       return base64_decode( $b );
+               // we can't have zero's and such, this is a simple encoding to make sure we don't barf
+               return base64_decode( $b );
        }
 
        /**
@@ -868,6 +940,7 @@ class DatabaseMssql extends DatabaseBase {
                // We can't separate explicit JOIN clauses with ',', use ' ' for those
                $straightJoins = !empty( $ret ) ? implode( ',', $ret ) : "";
                $otherJoins = !empty( $retJOIN ) ? implode( ' ', $retJOIN ) : "";
+
                // Compile our final table clause
                return implode( ' ', array( $straightJoins, $otherJoins ) );
        }
@@ -951,7 +1024,6 @@ class DatabaseMssql extends DatabaseBase {
        public function getInfinity() {
                return '3000-01-31 00:00:00.000';
        }
-
 } // end DatabaseMssql class
 
 /**
@@ -961,6 +1033,7 @@ class DatabaseMssql extends DatabaseBase {
  */
 class MssqlField implements Field {
        private $name, $tablename, $default, $max_length, $nullable, $type;
+
        function __construct( $info ) {
                $this->name = $info['COLUMN_NAME'];
                $this->tablename = $info['TABLE_NAME'];
@@ -996,8 +1069,9 @@ class MssqlField implements Field {
 }
 
 /**
- * The MSSQL PHP driver doesn't support sqlsrv_num_rows, so we recall all rows into an array and maintain our
- * own cursor index into that array...This is similar to the way the Oracle driver handles this same issue
+ * The MSSQL PHP driver doesn't support sqlsrv_num_rows, so we recall all rows
+ * into an array and maintain our own cursor index into that array... This is
+ * similar to the way the Oracle driver handles this same issue
  *
  * @ingroup Database
  */
@@ -1014,11 +1088,11 @@ class MssqlResult {
                foreach ( $rows as $row ) {
                        if ( $row !== null ) {
                                foreach ( $row as $k => $v ) {
-                                       if ( is_object( $v ) && method_exists( $v, 'format' ) ) {// DateTime Object
+                                       if ( is_object( $v ) && method_exists( $v, 'format' ) ) { // DateTime Object
                                                $row[$k] = $v->format( "Y-m-d\TH:i:s\Z" );
                                        }
                                }
-                               $this->mRows[] = $row;// read results into memory, cursors are not supported
+                               $this->mRows[] = $row; // read results into memory, cursors are not supported
                        }
                }
                $this->mRowCount = count( $this->mRows );
@@ -1036,6 +1110,7 @@ class MssqlResult {
                                }
                        }
                }
+
                return $obj;
        }
 
@@ -1067,6 +1142,7 @@ class MssqlResult {
                }
 
                $this->mCursor++;
+
                return $ret;
        }
 
@@ -1088,6 +1164,7 @@ class MssqlResult {
 
        public function fieldname( $nr ) {
                $arrKeys = array_keys( $this->mRows[0] );
+
                return $arrKeys[$nr];
        }
 
@@ -1193,6 +1270,7 @@ class MssqlResult {
                        default:
                                $strType = $intType;
                }
+
                return $strType;
        }
 
index 1314b12..e253f91 100644 (file)
@@ -28,7 +28,6 @@
  * @see Database
  */
 class DatabaseMysql extends DatabaseMysqlBase {
-
        /**
         * @param $sql string
         * @return resource
@@ -39,6 +38,7 @@ class DatabaseMysql extends DatabaseMysqlBase {
                } else {
                        $ret = mysql_unbuffered_query( $sql, $this->mConn );
                }
+
                return $ret;
        }
 
@@ -46,7 +46,10 @@ class DatabaseMysql extends DatabaseMysqlBase {
                # Fail now
                # Otherwise we get a suppressed fatal error, which is very hard to track down
                if ( !extension_loaded( 'mysql' ) ) {
-                       throw new DBConnectionError( $this, "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
+                       throw new DBConnectionError(
+                               $this,
+                               "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n"
+                       );
                }
 
                $connFlags = 0;
@@ -129,6 +132,7 @@ class DatabaseMysql extends DatabaseMysqlBase {
         */
        function selectDB( $db ) {
                $this->mDBname = $db;
+
                return mysql_select_db( $db, $this->mConn );
        }
 
index 6a3ebcb..61b9a17 100644 (file)
@@ -94,6 +94,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
 
                        wfProfileOut( __METHOD__ );
+
                        return $this->reportConnectionError( $error );
                }
 
@@ -107,6 +108,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                        "from client host " . wfHostname() . "\n" );
 
                                wfProfileOut( __METHOD__ );
+
                                return $this->reportConnectionError( "Error selecting database $dbName" );
                        }
                }
@@ -121,11 +123,18 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                // Set SQL mode, default is turning them all off, can be overridden or skipped with null
                if ( is_string( $wgSQLMode ) ) {
                        $mode = $this->addQuotes( $wgSQLMode );
-                       $this->query( "SET sql_mode = $mode", __METHOD__ );
+                       // Use doQuery() to avoid opening implicit transactions (DBO_TRX)
+                       $success = $this->doQuery( "SET sql_mode = $mode", __METHOD__ );
+                       if ( !$success ) {
+                               wfLogDBError( "Error setting sql_mode to $mode on server {$this->mServer}" );
+                               wfProfileOut( __METHOD__ );
+                               return $this->reportConnectionError( "Error setting sql_mode to $mode" );
+                       }
                }
 
                $this->mOpened = true;
                wfProfileOut( __METHOD__ );
+
                return true;
        }
 
@@ -189,8 +198,12 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                // these are the only errors mysql_fetch_object can cause.
                // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
                if ( $errno == 2000 || $errno == 2013 ) {
-                       throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
+                       throw new DBUnexpectedError(
+                               $this,
+                               'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() )
+                       );
                }
+
                return $row;
        }
 
@@ -221,8 +234,12 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                // these are the only errors mysql_fetch_array can cause.
                // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
                if ( $errno == 2000 || $errno == 2013 ) {
-                       throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
+                       throw new DBUnexpectedError(
+                               $this,
+                               'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() )
+                       );
                }
+
                return $row;
        }
 
@@ -246,6 +263,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                wfSuppressWarnings();
                $n = $this->mysqlNumRows( $res );
                wfRestoreWarnings();
+
                // Unfortunately, mysql_num_rows does not reset the last errno.
                // We are not checking for any errors here, since
                // these are no errors mysql_num_rows can cause.
@@ -270,6 +288,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return $this->mysqlNumFields( $res );
        }
 
@@ -290,6 +309,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return $this->mysqlFieldName( $res, $n );
        }
 
@@ -311,6 +331,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return $this->mysqlDataSeek( $res, $row );
        }
 
@@ -341,6 +362,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( $error ) {
                        $error .= ' (' . $this->mServer . ')';
                }
+
                return $error;
        }
 
@@ -375,7 +397,9 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * @param $options string|array
         * @return int
         */
-       public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
+       public function estimateRowCount( $table, $vars = '*', $conds = '',
+               $fname = __METHOD__, $options = array()
+       ) {
                $options['EXPLAIN'] = true;
                $res = $this->select( $table, $vars, $conds, $fname, $options );
                if ( $res === false ) {
@@ -389,6 +413,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                foreach ( $res as $plan ) {
                        $rows *= $plan->rows > 0 ? $plan->rows : 1; // avoid resetting to zero
                }
+
                return $rows;
        }
 
@@ -410,6 +435,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                return new MySQLField( $meta );
                        }
                }
+
                return false;
        }
 
@@ -452,6 +478,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                $result[] = $row;
                        }
                }
+
                return empty( $result ) ? false : $result;
        }
 
@@ -467,6 +494,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                        $this->ping();
                        $sQuoted = $this->mysqlRealEscapeString( $s );
                }
+
                return $sQuoted;
        }
 
@@ -504,6 +532,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                $this->mOpened = false;
                $this->mConn = false;
                $this->open( $this->mServer, $this->mUser, $this->mPassword, $this->mDBname );
+
                return true;
        }
 
@@ -524,6 +553,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        function getLag() {
                if ( !is_null( $this->mFakeSlaveLag ) ) {
                        wfDebug( "getLag: fake slave lagged {$this->mFakeSlaveLag} seconds\n" );
+
                        return $this->mFakeSlaveLag;
                }
 
@@ -577,7 +607,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                $row->State != 'Waiting to reconnect after a failed master event read' &&
                                $row->State != 'Reconnecting after a failed master event read' &&
                                $row->State != 'Registering slave on master'
-                               ) {
+                       ) {
                                # This is it, return the time (except -ve)
                                if ( $row->Time > 0x7fffffff ) {
                                        return false;
@@ -586,6 +616,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                }
                        }
                }
+
                return false;
        }
 
@@ -609,6 +640,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( !is_null( $this->mFakeSlaveLag ) ) {
                        $status = parent::masterPosWait( $pos, $timeout );
                        wfProfileOut( __METHOD__ );
+
                        return $status;
                }
 
@@ -627,6 +659,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $status;
        }
 
@@ -644,7 +677,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                $row = $this->fetchObject( $res );
 
                if ( $row ) {
-                       $pos = isset( $row->Exec_master_log_pos ) ? $row->Exec_master_log_pos : $row->Exec_Master_Log_Pos;
+                       $pos = isset( $row->Exec_master_log_pos )
+                               ? $row->Exec_master_log_pos
+                               : $row->Exec_Master_Log_Pos;
+
                        return new MySQLMasterPos( $row->Relay_Master_Log_File, $pos );
                } else {
                        return false;
@@ -710,6 +746,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                        $this->delimiter = $m[1];
                        $newLine = '';
                }
+
                return parent::streamStatementEnd( $sql, $newLine );
        }
 
@@ -725,6 +762,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                $lockName = $this->addQuotes( $lockName );
                $result = $this->query( "SELECT IS_FREE_LOCK($lockName) AS lockstatus", $method );
                $row = $this->fetchObject( $result );
+
                return ( $row->lockstatus == 1 );
        }
 
@@ -743,12 +781,14 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                        return true;
                } else {
                        wfDebug( __METHOD__ . " failed to acquire lock\n" );
+
                        return false;
                }
        }
 
        /**
-        * FROM MYSQL DOCS: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
+        * FROM MYSQL DOCS:
+        * http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
         * @param $lockName string
         * @param $method string
         * @return bool
@@ -757,6 +797,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                $lockName = $this->addQuotes( $lockName );
                $result = $this->query( "SELECT RELEASE_LOCK($lockName) as lockstatus", $method );
                $row = $this->fetchObject( $result );
+
                return ( $row->lockstatus == 1 );
        }
 
@@ -772,8 +813,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
                foreach ( $write as $table ) {
                        $tbl = $this->tableName( $table ) .
-                                       ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
-                                       ' WRITE';
+                               ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
+                               ' WRITE';
                        $items[] = $tbl;
                }
                foreach ( $read as $table ) {
@@ -781,6 +822,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                }
                $sql = "LOCK TABLES " . implode( ',', $items );
                $this->query( $sql, $method );
+
                return true;
        }
 
@@ -790,6 +832,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         */
        public function unlockTables( $method ) {
                $this->query( "UNLOCK TABLES", $method );
+
                return true;
        }
 
@@ -887,6 +930,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         */
        function getServerUptime() {
                $vars = $this->getMysqlStatus( 'Uptime' );
+
                return (int)$vars['Uptime'];
        }
 
@@ -975,6 +1019,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( !$this->tableExists( $tableName, $fName ) ) {
                        return false;
                }
+
                return $this->query( "DROP TABLE IF EXISTS " . $this->tableName( $tableName ), $fName );
        }
 
@@ -984,7 +1029,12 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        protected function getDefaultSchemaVars() {
                $vars = parent::getDefaultSchemaVars();
                $vars['wgDBTableOptions'] = str_replace( 'TYPE', 'ENGINE', $GLOBALS['wgDBTableOptions'] );
-               $vars['wgDBTableOptions'] = str_replace( 'CHARSET=mysql4', 'CHARSET=binary', $vars['wgDBTableOptions'] );
+               $vars['wgDBTableOptions'] = str_replace(
+                       'CHARSET=mysql4',
+                       'CHARSET=binary',
+                       $vars['wgDBTableOptions']
+               );
+
                return $vars;
        }
 
@@ -1008,9 +1058,9 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Lists VIEWs in the database
         *
-        * @param string $prefix   Only show VIEWs with this prefix, eg.
+        * @param string $prefix Only show VIEWs with this prefix, eg.
         * unit_test_, or $wgDBprefix. Default: null, would return all views.
-        * @param string $fname    Name of calling function
+        * @param string $fname Name of calling function
         * @return array
         * @since 1.22
         */
@@ -1040,6 +1090,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                                array_push( $filteredViews, $viewName );
                        }
                }
+
                return $filteredViews;
        }
 
@@ -1053,11 +1104,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        public function isView( $name, $prefix = null ) {
                return in_array( $name, $this->listViews( $prefix ) );
        }
-
 }
 
-
-
 /**
  * Utility class.
  * @ingroup Database
@@ -1152,12 +1200,14 @@ class MySQLMasterPos implements DBMasterPos {
                if ( preg_match( '!\.(\d+)/(\d+)$!', (string)$this, $m ) ) {
                        return array( (int)$m[1], (int)$m[2] );
                }
+
                return false;
        }
 
        function hasReached( MySQLMasterPos $pos ) {
                $thisPos = $this->getCoordinates();
                $thatPos = $pos->getCoordinates();
+
                return ( $thisPos && $thatPos && $thisPos >= $thatPos );
        }
 }
index a47c804..9f18da3 100644 (file)
@@ -29,7 +29,6 @@
  * @see Database
  */
 class DatabaseMysqli extends DatabaseMysqlBase {
-
        /**
         * @param $sql string
         * @return resource
@@ -40,6 +39,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                } else {
                        $ret = $this->mConn->query( $sql, MYSQLI_USE_RESULT );
                }
+
                return $ret;
        }
 
@@ -70,8 +70,8 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                                usleep( 1000 );
                        }
                        if ( $mysqli->real_connect( $realServer, $this->mUser,
-                               $this->mPassword, $this->mDBname, null, null, $connFlags ) )
-                       {
+                               $this->mPassword, $this->mDBname, null, null, $connFlags )
+                       {
                                return $mysqli;
                        }
                }
@@ -128,6 +128,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
         */
        function selectDB( $db ) {
                $this->mDBname = $db;
+
                return $this->mConn->select_db( $db );
        }
 
@@ -140,6 +141,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
 
        protected function mysqlFreeResult( $res ) {
                $res->free_result();
+
                return true;
        }
 
@@ -148,6 +150,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                if ( $object === null ) {
                        return false;
                }
+
                return $object;
        }
 
@@ -156,6 +159,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                if ( $array === null ) {
                        return false;
                }
+
                return $array;
        }
 
@@ -174,11 +178,13 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                $field->unique_key = $field->flags & MYSQLI_UNIQUE_KEY_FLAG;
                $field->multiple_key = $field->flags & MYSQLI_MULTIPLE_KEY_FLAG;
                $field->binary = $field->flags & MYSQLI_BINARY_FLAG;
+
                return $field;
        }
 
        protected function mysqlFieldName( $res, $n ) {
                $field = $res->fetch_field_direct( $n );
+
                return $field->name;
        }
 
@@ -201,5 +207,4 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        protected function mysqlPing() {
                return $this->mConn->ping();
        }
-
 }
index 6b4113e..10715e4 100644 (file)
@@ -57,10 +57,12 @@ class ORAResult {
        function __construct( &$db, $stmt, $unique = false ) {
                $this->db =& $db;
 
-               if ( ( $this->nrows = oci_fetch_all( $stmt, $this->rows, 0, - 1, OCI_FETCHSTATEMENT_BY_ROW | OCI_NUM ) ) === false ) {
+               $this->nrows = oci_fetch_all( $stmt, $this->rows, 0, -1, OCI_FETCHSTATEMENT_BY_ROW | OCI_NUM );
+               if ( $this->nrows === false ) {
                        $e = oci_error( $stmt );
                        $db->reportQueryError( $e['message'], $e['code'], '', __METHOD__ );
                        $this->free();
+
                        return;
                }
 
@@ -121,6 +123,7 @@ class ORAResult {
                        $ret[$lc] = $v;
                        $ret[$k] = $v;
                }
+
                return $ret;
        }
 }
@@ -235,21 +238,27 @@ class DatabaseOracle extends DatabaseBase {
        function cascadingDeletes() {
                return true;
        }
+
        function cleanupTriggers() {
                return true;
        }
+
        function strictIPs() {
                return true;
        }
+
        function realTimestamps() {
                return true;
        }
+
        function implicitGroupby() {
                return false;
        }
+
        function implicitOrderby() {
                return false;
        }
+
        function searchableIPs() {
                return true;
        }
@@ -266,7 +275,11 @@ class DatabaseOracle extends DatabaseBase {
        function open( $server, $user, $password, $dbName ) {
                global $wgDBOracleDRCP;
                if ( !function_exists( 'oci_connect' ) ) {
-                       throw new DBConnectionError( $this, "Oracle functions missing, have you compiled PHP with the --with-oci8 option?\n (Note: if you recently installed PHP, you may need to restart your webserver and database)\n" );
+                       throw new DBConnectionError(
+                               $this,
+                               "Oracle functions missing, have you compiled PHP with the --with-oci8 option?\n " .
+                                       "(Note: if you recently installed PHP, you may need to restart your webserver\n " .
+                                       "and database)\n" );
                }
 
                $this->close();
@@ -300,11 +313,29 @@ class DatabaseOracle extends DatabaseBase {
 
                wfSuppressWarnings();
                if ( $this->mFlags & DBO_PERSISTENT ) {
-                       $this->mConn = oci_pconnect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
+                       $this->mConn = oci_pconnect(
+                               $this->mUser,
+                               $this->mPassword,
+                               $this->mServer,
+                               $this->defaultCharset,
+                               $session_mode
+                       );
                } elseif ( $this->mFlags & DBO_DEFAULT ) {
-                       $this->mConn = oci_new_connect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
+                       $this->mConn = oci_new_connect(
+                               $this->mUser,
+                               $this->mPassword,
+                               $this->mServer,
+                               $this->defaultCharset,
+                               $session_mode
+                       );
                } else {
-                       $this->mConn = oci_connect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
+                       $this->mConn = oci_connect(
+                               $this->mUser,
+                               $this->mPassword,
+                               $this->mServer,
+                               $this->defaultCharset,
+                               $session_mode
+                       );
                }
                wfRestoreWarnings();
 
@@ -323,6 +354,7 @@ class DatabaseOracle extends DatabaseBase {
                $this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
                $this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
                $this->doQuery( 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=\'.,\'' );
+
                return $this->mConn;
        }
 
@@ -358,13 +390,20 @@ class DatabaseOracle extends DatabaseBase {
                // you have to select data from plan table after explain
                $explain_id = MWTimestamp::getLocalInstance()->format( 'dmYHis' );
 
-               $sql = preg_replace( '/^EXPLAIN /', 'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR', $sql, 1, $explain_count );
+               $sql = preg_replace(
+                       '/^EXPLAIN /',
+                       'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR',
+                       $sql,
+                       1,
+                       $explain_count
+               );
 
                wfSuppressWarnings();
 
                if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
                        $e = oci_error( $this->mConn );
                        $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                        return false;
                }
 
@@ -372,6 +411,7 @@ class DatabaseOracle extends DatabaseBase {
                        $e = oci_error( $stmt );
                        if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                                return false;
                        }
                }
@@ -379,11 +419,13 @@ class DatabaseOracle extends DatabaseBase {
                wfRestoreWarnings();
 
                if ( $explain_count > 0 ) {
-                       return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table WHERE statement_id = \'' . $explain_id . '\'' );
+                       return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table ' .
+                               'WHERE statement_id = \'' . $explain_id . '\'' );
                } elseif ( oci_statement_type( $stmt ) == 'SELECT' ) {
                        return new ORAResult( $this, $stmt, $union_unique );
                } else {
                        $this->mAffectedRows = oci_num_rows( $stmt );
+
                        return true;
                }
        }
@@ -458,6 +500,7 @@ class DatabaseOracle extends DatabaseBase {
                } else {
                        $e = oci_error( $this->mConn );
                }
+
                return $e['message'];
        }
 
@@ -467,6 +510,7 @@ class DatabaseOracle extends DatabaseBase {
                } else {
                        $e = oci_error( $this->mConn );
                }
+
                return $e['code'];
        }
 
@@ -524,6 +568,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( is_numeric( $col ) ) {
                        $bind = $val;
                        $val = null;
+
                        return $bind;
                } elseif ( $includeCol ) {
                        $bind = "$col = ";
@@ -574,6 +619,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
                        $e = oci_error( $this->mConn );
                        $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                        return false;
                }
                foreach ( $row as $col => &$val ) {
@@ -596,6 +642,7 @@ class DatabaseOracle extends DatabaseBase {
                                if ( oci_bind_by_name( $stmt, ":$col", $val, -1, SQLT_CHR ) === false ) {
                                        $e = oci_error( $stmt );
                                        $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                                        return false;
                                }
                        } else {
@@ -610,10 +657,10 @@ class DatabaseOracle extends DatabaseBase {
 
                                if ( $col_type == 'BLOB' ) {
                                        $lob[$col]->writeTemporary( $val, OCI_TEMP_BLOB );
-                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_BLOB );
+                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, OCI_B_BLOB );
                                } else {
                                        $lob[$col]->writeTemporary( $val, OCI_TEMP_CLOB );
-                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_CLOB );
+                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, OCI_B_CLOB );
                                }
                        }
                }
@@ -624,6 +671,7 @@ class DatabaseOracle extends DatabaseBase {
                        $e = oci_error( $stmt );
                        if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                                return false;
                        } else {
                                $this->mAffectedRows = oci_num_rows( $stmt );
@@ -648,8 +696,8 @@ class DatabaseOracle extends DatabaseBase {
        }
 
        function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = array(), $selectOptions = array() )
-       {
+               $insertOptions = array(), $selectOptions = array()
+       {
                $destTable = $this->tableName( $destTable );
                if ( !is_array( $selectOptions ) ) {
                        $selectOptions = array( $selectOptions );
@@ -662,8 +710,8 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                if ( ( $sequenceData = $this->getSequenceData( $destTable ) ) !== false &&
-                               !isset( $varMap[$sequenceData['column']] ) )
-               {
+                       !isset( $varMap[$sequenceData['column']] )
+               {
                        $varMap[$sequenceData['column']] = 'GET_SEQUENCE_VALUE(\'' . $sequenceData['sequence'] . '\')';
                }
 
@@ -714,8 +762,10 @@ class DatabaseOracle extends DatabaseBase {
 
        function tableNameInternal( $name ) {
                $name = $this->tableName( $name );
+
                return preg_replace( '/.*\.(.*)/', '$1', $name );
        }
+
        /**
         * Return the next in a sequence, save the value for retrieval via insertId()
         * @return null
@@ -724,6 +774,7 @@ class DatabaseOracle extends DatabaseBase {
                $res = $this->query( "SELECT $seqName.nextval FROM dual" );
                $row = $this->fetchRow( $res );
                $this->mInsertId = $row[0];
+
                return $this->mInsertId;
        }
 
@@ -734,13 +785,18 @@ class DatabaseOracle extends DatabaseBase {
        private function getSequenceData( $table ) {
                if ( $this->sequenceData == null ) {
                        $result = $this->doQuery( "SELECT lower(asq.sequence_name),
-                                  lower(atc.table_name),
-                                  lower(atc.column_name)
-                         FROM all_sequences asq, all_tab_columns atc
-                        WHERE decode(atc.table_name, '{$this->mTablePrefix}MWUSER', '{$this->mTablePrefix}USER', atc.table_name) || '_' ||
-                                  atc.column_name || '_SEQ' = '{$this->mTablePrefix}' || asq.sequence_name
-                          AND asq.sequence_owner = upper('{$this->mDBname}')
-                          AND atc.owner = upper('{$this->mDBname}')" );
+                               lower(atc.table_name),
+                               lower(atc.column_name)
+                       FROM all_sequences asq, all_tab_columns atc
+                       WHERE decode(
+                                       atc.table_name,
+                                       '{$this->mTablePrefix}MWUSER',
+                                       '{$this->mTablePrefix}USER',
+                                       atc.table_name
+                               ) || '_' ||
+                               atc.column_name || '_SEQ' = '{$this->mTablePrefix}' || asq.sequence_name
+                               AND asq.sequence_owner = upper('{$this->mDBname}')
+                               AND atc.owner = upper('{$this->mDBname}')" );
 
                        while ( ( $row = $result->fetchRow() ) !== false ) {
                                $this->sequenceData[$row[1]] = array(
@@ -750,12 +806,14 @@ class DatabaseOracle extends DatabaseBase {
                        }
                }
                $table = strtolower( $this->removeIdentifierQuotes( $this->tableName( $table ) ) );
+
                return ( isset( $this->sequenceData[$table] ) ) ? $this->sequenceData[$table] : false;
        }
 
        # Returns the size of a text field, or -1 for "unlimited"
        function textFieldSize( $table, $field ) {
                $fieldInfoData = $this->fieldInfo( $table, $field );
+
                return $fieldInfoData->maxLength();
        }
 
@@ -763,6 +821,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( $offset === false ) {
                        $offset = 0;
                }
+
                return "SELECT * FROM ($sql) WHERE rownum >= (1 + $offset) AND rownum < (1 + $limit + $offset)";
        }
 
@@ -774,19 +833,24 @@ class DatabaseOracle extends DatabaseBase {
                if ( $b instanceof Blob ) {
                        $b = $b->fetch();
                }
+
                return $b;
        }
 
        function unionQueries( $sqls, $all ) {
                $glue = ' UNION ALL ';
-               return 'SELECT * ' . ( $all ? '' : '/* UNION_UNIQUE */ ' ) . 'FROM (' . implode( $glue, $sqls ) . ')';
+
+               return 'SELECT * ' . ( $all ? '' : '/* UNION_UNIQUE */ ' ) .
+                       'FROM (' . implode( $glue, $sqls ) . ')';
        }
 
        function wasDeadlock() {
                return $this->lastErrno() == 'OCI-00060';
        }
 
-       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
+       function duplicateTableStructure( $oldName, $newName, $temporary = false,
+               $fname = __METHOD__
+       ) {
                $temporary = $temporary ? 'TRUE' : 'FALSE';
 
                $newName = strtoupper( $newName );
@@ -796,7 +860,8 @@ class DatabaseOracle extends DatabaseBase {
                $oldPrefix = substr( $oldName, 0, strlen( $oldName ) - strlen( $tabName ) );
                $newPrefix = strtoupper( $this->mTablePrefix );
 
-               return $this->doQuery( "BEGIN DUPLICATE_TABLE( '$tabName', '$oldPrefix', '$newPrefix', $temporary ); END;" );
+               return $this->doQuery( "BEGIN DUPLICATE_TABLE( '$tabName', " .
+                       "'$oldPrefix', '$newPrefix', $temporary ); END;" );
        }
 
        function listTables( $prefix = null, $fname = __METHOD__ ) {
@@ -806,7 +871,8 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                $owner = strtoupper( $this->mDBname );
-               $result = $this->doQuery( "SELECT table_name FROM all_tables WHERE owner='$owner' AND table_name NOT LIKE '%!_IDX\$_' ESCAPE '!' $listWhere" );
+               $result = $this->doQuery( "SELECT table_name FROM all_tables " .
+                       "WHERE owner='$owner' AND table_name NOT LIKE '%!_IDX\$_' ESCAPE '!' $listWhere" );
 
                // dirty code ... i know
                $endArray = array();
@@ -869,10 +935,14 @@ class DatabaseOracle extends DatabaseBase {
         */
        function getServerVersion() {
                //better version number, fallback on driver
-               $rset = $this->doQuery( 'SELECT version FROM product_component_version WHERE UPPER(product) LIKE \'ORACLE DATABASE%\'' );
+               $rset = $this->doQuery(
+                       'SELECT version FROM product_component_version ' .
+                               'WHERE UPPER(product) LIKE \'ORACLE DATABASE%\''
+               );
                if ( !( $row = $rset->fetchRow() ) ) {
                        return oci_server_version( $this->mConn );
                }
+
                return $row['version'];
        }
 
@@ -893,6 +963,7 @@ class DatabaseOracle extends DatabaseBase {
                } else {
                        $count = 0;
                }
+
                return $count != 0;
        }
 
@@ -913,6 +984,7 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                $res->free();
+
                return $exists;
        }
 
@@ -947,10 +1019,15 @@ class DatabaseOracle extends DatabaseBase {
                        $tableWhere = '= \'' . $table . '\'';
                }
 
-               $fieldInfoStmt = oci_parse( $this->mConn, 'SELECT * FROM wiki_field_info_full WHERE table_name ' . $tableWhere . ' and column_name = \'' . $field . '\'' );
+               $fieldInfoStmt = oci_parse(
+                       $this->mConn,
+                       'SELECT * FROM wiki_field_info_full WHERE table_name ' .
+                               $tableWhere . ' and column_name = \'' . $field . '\''
+               );
                if ( oci_execute( $fieldInfoStmt, $this->execFlags() ) === false ) {
                        $e = oci_error( $fieldInfoStmt );
                        $this->reportQueryError( $e['message'], $e['code'], 'fieldInfo QUERY', __METHOD__ );
+
                        return false;
                }
                $res = new ORAResult( $this, $fieldInfoStmt );
@@ -969,6 +1046,7 @@ class DatabaseOracle extends DatabaseBase {
                        $this->mFieldInfoCache["$table.$field"] = $fieldInfoTemp;
                }
                $res->free();
+
                return $fieldInfoTemp;
        }
 
@@ -982,6 +1060,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( is_array( $table ) ) {
                        throw new DBUnexpectedError( $this, 'DatabaseOracle::fieldInfo called with table array!' );
                }
+
                return $this->fieldInfoMulti( $table, $field );
        }
 
@@ -1018,7 +1097,7 @@ class DatabaseOracle extends DatabaseBase {
 
                $replacements = array();
 
-               while ( ! feof( $fp ) ) {
+               while ( !feof( $fp ) ) {
                        if ( $lineCallback ) {
                                call_user_func( $lineCallback );
                        }
@@ -1028,7 +1107,7 @@ class DatabaseOracle extends DatabaseBase {
                        if ( $sl < 0 ) {
                                continue;
                        }
-                       if ( '-' == $line { 0 } && '-' == $line { 1 } ) {
+                       if ( '-' == $line[0] && '-' == $line[1] ) {
                                continue;
                        }
 
@@ -1042,7 +1121,7 @@ class DatabaseOracle extends DatabaseBase {
                                        $dollarquote = true;
                                }
                        } elseif ( !$dollarquote ) {
-                               if ( ';' == $line { $sl } && ( $sl < 2 || ';' != $line { $sl - 1 } ) ) {
+                               if ( ';' == $line[$sl] && ( $sl < 2 || ';' != $line[$sl - 1] ) ) {
                                        $done = true;
                                        $line = substr( $line, 0, $sl );
                                }
@@ -1075,6 +1154,7 @@ class DatabaseOracle extends DatabaseBase {
 
                                        if ( false === $res ) {
                                                $err = $this->lastError();
+
                                                return "Query \"{$cmd}\" failed with error code \"$err\".\n";
                                        }
                                }
@@ -1083,6 +1163,7 @@ class DatabaseOracle extends DatabaseBase {
                                $done = false;
                        }
                }
+
                return true;
        }
 
@@ -1101,8 +1182,10 @@ class DatabaseOracle extends DatabaseBase {
                        if ( $e['code'] != '1435' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
                        }
+
                        return false;
                }
+
                return true;
        }
 
@@ -1115,6 +1198,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( isset( $wgContLang->mLoaded ) && $wgContLang->mLoaded ) {
                        $s = $wgContLang->checkTitleEncoding( $s );
                }
+
                return "'" . $this->strencode( $s ) . "'";
        }
 
@@ -1122,6 +1206,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( !$this->getFlag( DBO_DDLMODE ) ) {
                        $s = '/*Q*/' . $s;
                }
+
                return $s;
        }
 
@@ -1160,13 +1245,17 @@ class DatabaseOracle extends DatabaseBase {
                                $conds2[$col] = $val;
                        }
                }
+
                return $conds2;
        }
 
-       function selectRow( $table, $vars, $conds, $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+       function selectRow( $table, $vars, $conds, $fname = __METHOD__,
+               $options = array(), $join_conds = array()
+       ) {
                if ( is_array( $conds ) ) {
                        $conds = $this->wrapConditionsForWhere( $table, $conds );
                }
+
                return parent::selectRow( $table, $vars, $conds, $fname, $options, $join_conds );
        }
 
@@ -1203,7 +1292,7 @@ class DatabaseOracle extends DatabaseBase {
                        $startOpts .= 'DISTINCT';
                }
 
-               if ( isset( $options['USE INDEX'] ) && ! is_array( $options['USE INDEX'] ) ) {
+               if ( isset( $options['USE INDEX'] ) && !is_array( $options['USE INDEX'] ) ) {
                        $useIndex = $this->useIndexClause( $options['USE INDEX'] );
                } else {
                        $useIndex = '';
@@ -1220,18 +1309,29 @@ class DatabaseOracle extends DatabaseBase {
                // all deletions on these tables have transactions so final failure rollbacks these updates
                $table = $this->tableName( $table );
                if ( $table == $this->tableName( 'user' ) ) {
-                               $this->update( 'archive', array( 'ar_user' => 0 ), array( 'ar_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'ipblocks', array( 'ipb_user' => 0 ), array( 'ipb_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'image', array( 'img_user' => 0 ), array( 'img_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'oldimage', array( 'oi_user' => 0 ), array( 'oi_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'filearchive', array( 'fa_deleted_user' => 0 ), array( 'fa_deleted_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'filearchive', array( 'fa_user' => 0 ), array( 'fa_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'uploadstash', array( 'us_user' => 0 ), array( 'us_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'recentchanges', array( 'rc_user' => 0 ), array( 'rc_user' => $conds['user_id'] ), $fname );
-                               $this->update( 'logging', array( 'log_user' => 0 ), array( 'log_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'archive', array( 'ar_user' => 0 ),
+                               array( 'ar_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'ipblocks', array( 'ipb_user' => 0 ),
+                               array( 'ipb_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'image', array( 'img_user' => 0 ),
+                               array( 'img_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'oldimage', array( 'oi_user' => 0 ),
+                               array( 'oi_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'filearchive', array( 'fa_deleted_user' => 0 ),
+                               array( 'fa_deleted_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'filearchive', array( 'fa_user' => 0 ),
+                               array( 'fa_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'uploadstash', array( 'us_user' => 0 ),
+                               array( 'us_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'recentchanges', array( 'rc_user' => 0 ),
+                               array( 'rc_user' => $conds['user_id'] ), $fname );
+                       $this->update( 'logging', array( 'log_user' => 0 ),
+                               array( 'log_user' => $conds['user_id'] ), $fname );
                } elseif ( $table == $this->tableName( 'image' ) ) {
-                               $this->update( 'oldimage', array( 'oi_name' => 0 ), array( 'oi_name' => $conds['img_name'] ), $fname );
+                       $this->update( 'oldimage', array( 'oi_name' => 0 ),
+                               array( 'oi_name' => $conds['img_name'] ), $fname );
                }
+
                return parent::delete( $table, $conds, $fname );
        }
 
@@ -1262,6 +1362,7 @@ class DatabaseOracle extends DatabaseBase {
                if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
                        $e = oci_error( $this->mConn );
                        $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                        return false;
                }
                foreach ( $values as $col => &$val ) {
@@ -1283,6 +1384,7 @@ class DatabaseOracle extends DatabaseBase {
                                if ( oci_bind_by_name( $stmt, ":$col", $val ) === false ) {
                                        $e = oci_error( $stmt );
                                        $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                                        return false;
                                }
                        } else {
@@ -1293,10 +1395,10 @@ class DatabaseOracle extends DatabaseBase {
 
                                if ( $col_type == 'BLOB' ) {
                                        $lob[$col]->writeTemporary( $val );
-                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, SQLT_BLOB );
+                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, SQLT_BLOB );
                                } else {
                                        $lob[$col]->writeTemporary( $val );
-                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_CLOB );
+                                       oci_bind_by_name( $stmt, ":$col", $lob[$col], -1, OCI_B_CLOB );
                                }
                        }
                }
@@ -1307,6 +1409,7 @@ class DatabaseOracle extends DatabaseBase {
                        $e = oci_error( $stmt );
                        if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+
                                return false;
                        } else {
                                $this->mAffectedRows = oci_num_rows( $stmt );
@@ -1358,6 +1461,7 @@ class DatabaseOracle extends DatabaseBase {
                $delim, $table, $field, $conds = '', $join_conds = array()
        ) {
                $fld = "LISTAGG($field," . $this->addQuotes( $delim ) . ") WITHIN GROUP (ORDER BY $field)";
+
                return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
        }
 
@@ -1368,5 +1472,4 @@ class DatabaseOracle extends DatabaseBase {
        public function getInfinity() {
                return '31-12-2030 12:00:00.000000';
        }
-
 } // end DatabaseOracle class
index 4688000..cfa2074 100644 (file)
@@ -79,6 +79,7 @@ SQL;
                $n->conname = $row->conname;
                $n->has_default = ( $row->atthasdef === 't' );
                $n->default = $row->adsrc;
+
                return $n;
        }
 
@@ -113,6 +114,7 @@ SQL;
        function conname() {
                return $this->conname;
        }
+
        /**
         * @since 1.19
         */
@@ -123,7 +125,6 @@ SQL;
                        return false;
                }
        }
-
 }
 
 /**
@@ -181,7 +182,6 @@ class PostgresTransactionState {
                                        }
                                        $old = next( $this->mCurrentState );
                                        $new = next( $this->mNewState );
-
                                }
                        }
                }
@@ -224,8 +224,8 @@ class SavepointPostgres {
                $this->didbegin = false;
                /* If we are not in a transaction, we need to be for savepoint trickery */
                if ( !$dbw->trxLevel() ) {
-                               $dbw->begin( "FOR SAVEPOINT" );
-                               $this->didbegin = true;
+                       $dbw->begin( "FOR SAVEPOINT" );
+                       $this->didbegin = true;
                }
        }
 
@@ -247,10 +247,10 @@ class SavepointPostgres {
                global $wgDebugDBTransactions;
                if ( $this->dbw->doQuery( $keyword . " " . $this->id ) !== false ) {
                        if ( $wgDebugDBTransactions ) {
-                               wfDebug( sprintf ( $msg_ok, $this->id ) );
+                               wfDebug( sprintf( $msg_ok, $this->id ) );
                        }
                } else {
-                       wfDebug( sprintf ( $msg_failed, $this->id ) );
+                       wfDebug( sprintf( $msg_failed, $this->id ) );
                }
        }
 
@@ -296,32 +296,42 @@ class DatabasePostgres extends DatabaseBase {
        function cascadingDeletes() {
                return true;
        }
+
        function cleanupTriggers() {
                return true;
        }
+
        function strictIPs() {
                return true;
        }
+
        function realTimestamps() {
                return true;
        }
+
        function implicitGroupby() {
                return false;
        }
+
        function implicitOrderby() {
                return false;
        }
+
        function searchableIPs() {
                return true;
        }
+
        function functionalIndexes() {
                return true;
        }
 
        function hasConstraint( $name ) {
-               $SQL = "SELECT 1 FROM pg_catalog.pg_constraint c, pg_catalog.pg_namespace n WHERE c.connamespace = n.oid AND conname = '" .
-                               pg_escape_string( $this->mConn, $name ) . "' AND n.nspname = '" . pg_escape_string( $this->mConn, $this->getCoreSchema() ) . "'";
+               $SQL = "SELECT 1 FROM pg_catalog.pg_constraint c, pg_catalog.pg_namespace n " .
+                       "WHERE c.connamespace = n.oid AND conname = '" .
+                       pg_escape_string( $this->mConn, $name ) . "' AND n.nspname = '" .
+                       pg_escape_string( $this->mConn, $this->getCoreSchema() ) . "'";
                $res = $this->doQuery( $SQL );
+
                return $this->numRows( $res );
        }
 
@@ -337,7 +347,12 @@ class DatabasePostgres extends DatabaseBase {
        function open( $server, $user, $password, $dbName ) {
                # Test for Postgres support, to avoid suppressed fatal error
                if ( !function_exists( 'pg_connect' ) ) {
-                       throw new DBConnectionError( $this, "Postgres functions missing, have you compiled PHP with the --with-pgsql option?\n (Note: if you recently installed PHP, you may need to restart your webserver and database)\n" );
+                       throw new DBConnectionError(
+                               $this,
+                               "Postgres functions missing, have you compiled PHP with the --with-pgsql\n" .
+                               "option? (Note: if you recently installed PHP, you may need to restart your\n" .
+                               "webserver and database)\n"
+                       );
                }
 
                global $wgDBport;
@@ -382,7 +397,8 @@ class DatabasePostgres extends DatabaseBase {
 
                if ( !$this->mConn ) {
                        wfDebug( "DB connection error\n" );
-                       wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+                       wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " .
+                               substr( $password, 0, 3 ) . "...\n" );
                        wfDebug( $this->lastError() . "\n" );
                        throw new DBConnectionError( $this, str_replace( "\n", ' ', $phpError ) );
                }
@@ -428,6 +444,7 @@ class DatabasePostgres extends DatabaseBase {
                foreach ( $vars as $name => $value ) {
                        $s .= "$name='" . str_replace( "'", "\\'", $value ) . "' ";
                }
+
                return $s;
        }
 
@@ -454,24 +471,28 @@ class DatabasePostgres extends DatabaseBase {
                if ( pg_result_error( $this->mLastResult ) ) {
                        return false;
                }
+
                return $this->mLastResult;
        }
 
        protected function dumpError() {
-               $diags = array( PGSQL_DIAG_SEVERITY,
-                               PGSQL_DIAG_SQLSTATE,
-                               PGSQL_DIAG_MESSAGE_PRIMARY,
-                               PGSQL_DIAG_MESSAGE_DETAIL,
-                               PGSQL_DIAG_MESSAGE_HINT,
-                               PGSQL_DIAG_STATEMENT_POSITION,
-                               PGSQL_DIAG_INTERNAL_POSITION,
-                               PGSQL_DIAG_INTERNAL_QUERY,
-                               PGSQL_DIAG_CONTEXT,
-                               PGSQL_DIAG_SOURCE_FILE,
-                               PGSQL_DIAG_SOURCE_LINE,
-                               PGSQL_DIAG_SOURCE_FUNCTION );
+               $diags = array(
+                       PGSQL_DIAG_SEVERITY,
+                       PGSQL_DIAG_SQLSTATE,
+                       PGSQL_DIAG_MESSAGE_PRIMARY,
+                       PGSQL_DIAG_MESSAGE_DETAIL,
+                       PGSQL_DIAG_MESSAGE_HINT,
+                       PGSQL_DIAG_STATEMENT_POSITION,
+                       PGSQL_DIAG_INTERNAL_POSITION,
+                       PGSQL_DIAG_INTERNAL_QUERY,
+                       PGSQL_DIAG_CONTEXT,
+                       PGSQL_DIAG_SOURCE_FILE,
+                       PGSQL_DIAG_SOURCE_LINE,
+                       PGSQL_DIAG_SOURCE_FUNCTION
+               );
                foreach ( $diags as $d ) {
-                       wfDebug( sprintf( "PgSQL ERROR(%d): %s\n", $d, pg_result_error_field( $this->mLastResult, $d ) ) );
+                       wfDebug( sprintf( "PgSQL ERROR(%d): %s\n",
+                               $d, pg_result_error_field( $this->mLastResult, $d ) ) );
                }
        }
 
@@ -481,6 +502,7 @@ class DatabasePostgres extends DatabaseBase {
                        /* Check for constraint violation */
                        if ( $errno === '23505' ) {
                                parent::reportQueryError( $error, $errno, $sql, $fname, $tempIgnore );
+
                                return;
                        }
                }
@@ -517,8 +539,12 @@ class DatabasePostgres extends DatabaseBase {
                # @todo hashar: not sure if the following test really trigger if the object
                #          fetching failed.
                if ( pg_last_error( $this->mConn ) ) {
-                       throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
+                       throw new DBUnexpectedError(
+                               $this,
+                               'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) )
+                       );
                }
+
                return $row;
        }
 
@@ -530,8 +556,12 @@ class DatabasePostgres extends DatabaseBase {
                $row = pg_fetch_array( $res );
                wfRestoreWarnings();
                if ( pg_last_error( $this->mConn ) ) {
-                       throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
+                       throw new DBUnexpectedError(
+                               $this,
+                               'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) )
+                       );
                }
+
                return $row;
        }
 
@@ -543,8 +573,12 @@ class DatabasePostgres extends DatabaseBase {
                $n = pg_num_rows( $res );
                wfRestoreWarnings();
                if ( pg_last_error( $this->mConn ) ) {
-                       throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
+                       throw new DBUnexpectedError(
+                               $this,
+                               'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) )
+                       );
                }
+
                return $n;
        }
 
@@ -552,6 +586,7 @@ class DatabasePostgres extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return pg_num_fields( $res );
        }
 
@@ -559,6 +594,7 @@ class DatabasePostgres extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return pg_field_name( $res, $n );
        }
 
@@ -576,6 +612,7 @@ class DatabasePostgres extends DatabaseBase {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return pg_result_seek( $res, $row );
        }
 
@@ -590,6 +627,7 @@ class DatabasePostgres extends DatabaseBase {
                        return 'No database connection';
                }
        }
+
        function lastErrno() {
                if ( $this->mLastResult ) {
                        return pg_result_error_field( $this->mLastResult, PGSQL_DIAG_SQLSTATE );
@@ -606,6 +644,7 @@ class DatabasePostgres extends DatabaseBase {
                if ( empty( $this->mLastResult ) ) {
                        return 0;
                }
+
                return pg_affected_rows( $this->mLastResult );
        }
 
@@ -617,7 +656,9 @@ class DatabasePostgres extends DatabaseBase {
         * Takes same arguments as Database::select()
         * @return int
         */
-       function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
+       function estimateRowCount( $table, $vars = '*', $conds = '',
+               $fname = __METHOD__, $options = array()
+       ) {
                $options['EXPLAIN'] = true;
                $res = $this->select( $table, $vars, $conds, $fname, $options );
                $rows = -1;
@@ -628,6 +669,7 @@ class DatabasePostgres extends DatabaseBase {
                                $rows = $count[1];
                        }
                }
+
                return $rows;
        }
 
@@ -647,6 +689,7 @@ class DatabasePostgres extends DatabaseBase {
                                return $row;
                        }
                }
+
                return false;
        }
 
@@ -709,6 +752,7 @@ __INDEXATTR__;
                } else {
                        return null;
                }
+
                return $a;
        }
 
@@ -724,6 +768,7 @@ __INDEXATTR__;
                foreach ( $res as $row ) {
                        return true;
                }
+
                return false;
        }
 
@@ -851,15 +896,15 @@ __INDEXATTR__;
        /**
         * INSERT SELECT wrapper
         * $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
-        * Source items may be literals rather then field names, but strings should be quoted with Database::addQuotes()
+        * Source items may be literals rather then field names, but strings should
+        * be quoted with Database::addQuotes()
         * $conds may be "*" to copy the whole table
         * srcTable may be an array of tables.
         * @todo FIXME: Implement this a little better (seperate select/insert)?
         * @return bool
         */
        function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = array(), $selectOptions = array() )
-       {
+               $insertOptions = array(), $selectOptions = array() ) {
                $destTable = $this->tableName( $destTable );
 
                if ( !is_array( $insertOptions ) ) {
@@ -889,8 +934,8 @@ __INDEXATTR__;
                }
 
                $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                               " SELECT $startOpts " . implode( ',', $varMap ) .
-                               " FROM $srcTable $useIndex";
+                       " SELECT $startOpts " . implode( ',', $varMap ) .
+                       " FROM $srcTable $useIndex";
 
                if ( $conds != '*' ) {
                        $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
@@ -946,6 +991,7 @@ __INDEXATTR__;
                $res = $this->query( "SELECT nextval('$safeseq')" );
                $row = $this->fetchRow( $res );
                $this->mInsertId = $row[0];
+
                return $this->mInsertId;
        }
 
@@ -958,6 +1004,7 @@ __INDEXATTR__;
                $res = $this->query( "SELECT currval('$safeseq')" );
                $row = $this->fetchRow( $res );
                $currval = $row[0];
+
                return $currval;
        }
 
@@ -975,6 +1022,7 @@ __INDEXATTR__;
                } else {
                        $size = $row->size;
                }
+
                return $size;
        }
 
@@ -989,7 +1037,9 @@ __INDEXATTR__;
        function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
                $newName = $this->addIdentifierQuotes( $newName );
                $oldName = $this->addIdentifierQuotes( $oldName );
-               return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName (LIKE $oldName INCLUDING DEFAULTS)", $fname );
+
+               return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName " .
+                       "(LIKE $oldName INCLUDING DEFAULTS)", $fname );
        }
 
        function listTables( $prefix = null, $fname = __METHOD__ ) {
@@ -1044,8 +1094,8 @@ __INDEXATTR__;
                                        $text, $match, 0, $offset );
                                $offset += strlen( $match[0] );
                                $output[] = ( '"' != $match[1][0]
-                                               ? $match[1]
-                                               : stripcslashes( substr( $match[1], 1, -1 ) ) );
+                                       ? $match[1]
+                                       : stripcslashes( substr( $match[1], 1, -1 ) ) );
                                if ( '},' == $match[3] ) {
                                        return $output;
                                }
@@ -1053,6 +1103,7 @@ __INDEXATTR__;
                                $offset = $this->pg_array_parse( $text, $output, $limit, $offset + 1 );
                        }
                } while ( $limit > $offset );
+
                return $output;
        }
 
@@ -1080,6 +1131,7 @@ __INDEXATTR__;
        function getCurrentSchema() {
                $res = $this->query( "SELECT current_schema()", __METHOD__ );
                $row = $this->fetchRow( $res );
+
                return $row[0];
        }
 
@@ -1097,7 +1149,9 @@ __INDEXATTR__;
                $res = $this->query( "SELECT current_schemas(false)", __METHOD__ );
                $row = $this->fetchRow( $res );
                $schemas = array();
+
                /* PHP pgsql support does not support array type, "{a,b}" string is returned */
+
                return $this->pg_array_parse( $row[0], $schemas );
        }
 
@@ -1113,7 +1167,9 @@ __INDEXATTR__;
        function getSearchPath() {
                $res = $this->query( "SHOW search_path", __METHOD__ );
                $row = $this->fetchRow( $res );
+
                /* PostgreSQL returns SHOW values as strings */
+
                return explode( ",", $row[0] );
        }
 
@@ -1155,14 +1211,15 @@ __INDEXATTR__;
                                 */
                                $search_path = $this->getSearchPath();
                                array_unshift( $search_path,
-                                       $this->addIdentifierQuotes( $desired_schema ));
+                                       $this->addIdentifierQuotes( $desired_schema ) );
                                $this->setSearchPath( $search_path );
                                $this->mCoreSchema = $desired_schema;
                                wfDebug( "Schema \"" . $desired_schema . "\" added to the search path\n" );
                        }
                } else {
                        $this->mCoreSchema = $this->getCurrentSchema();
-                       wfDebug( "Schema \"" . $desired_schema . "\" not found, using current \"" . $this->mCoreSchema . "\"\n" );
+                       wfDebug( "Schema \"" . $desired_schema . "\" not found, using current \"" .
+                               $this->mCoreSchema . "\"\n" );
                }
                /* Commit SET otherwise it will be rollbacked on error or IGNORE SELECT */
                $this->commit( __METHOD__ );
@@ -1195,6 +1252,7 @@ __INDEXATTR__;
                                $this->numeric_version = pg_parameter_status( $this->mConn, 'server_version' );
                        }
                }
+
                return $this->numeric_version;
        }
 
@@ -1218,6 +1276,7 @@ __INDEXATTR__;
                        . "AND c.relkind IN ('" . implode( "','", $types ) . "')";
                $res = $this->query( $SQL );
                $count = $res ? $res->numRows() : 0;
+
                return (bool)$count;
        }
 
@@ -1253,6 +1312,7 @@ SQL;
                        return null;
                }
                $rows = $res->numRows();
+
                return $rows;
        }
 
@@ -1264,12 +1324,13 @@ SQL;
                                'schemaname' => $this->getCoreSchema()
                        )
                );
+
                return $exists === $rule;
        }
 
        function constraintExists( $table, $constraint ) {
                $SQL = sprintf( "SELECT 1 FROM information_schema.table_constraints " .
-                               "WHERE constraint_schema = %s AND table_name = %s AND constraint_name = %s",
+                       "WHERE constraint_schema = %s AND table_name = %s AND constraint_name = %s",
                        $this->addQuotes( $this->getCoreSchema() ),
                        $this->addQuotes( $table ),
                        $this->addQuotes( $constraint )
@@ -1279,6 +1340,7 @@ SQL;
                        return null;
                }
                $rows = $res->numRows();
+
                return $rows;
        }
 
@@ -1289,6 +1351,7 @@ SQL;
        function schemaExists( $schema ) {
                $exists = $this->selectField( '"pg_catalog"."pg_namespace"', 1,
                        array( 'nspname' => $schema ), __METHOD__ );
+
                return (bool)$exists;
        }
 
@@ -1299,6 +1362,7 @@ SQL;
        function roleExists( $roleName ) {
                $exists = $this->selectField( '"pg_catalog"."pg_roles"', 1,
                        array( 'rolname' => $roleName ), __METHOD__ );
+
                return (bool)$exists;
        }
 
@@ -1314,6 +1378,7 @@ SQL;
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
                }
+
                return pg_field_type( $res, $index );
        }
 
@@ -1329,6 +1394,7 @@ SQL;
                if ( $b instanceof Blob ) {
                        $b = $b->fetch();
                }
+
                return pg_unescape_bytea( $b );
        }
 
@@ -1348,6 +1414,7 @@ SQL;
                } elseif ( $s instanceof Blob ) {
                        return "'" . $s->fetch( $s ) . "'";
                }
+
                return "'" . pg_escape_string( $this->mConn, $s ) . "'";
        }
 
@@ -1435,6 +1502,7 @@ SQL;
                $delimiter, $table, $field, $conds = '', $options = array(), $join_conds = array()
        ) {
                $fld = "array_to_string(array_agg($field)," . $this->addQuotes( $delimiter ) . ')';
+
                return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
        }
 
@@ -1447,11 +1515,11 @@ SQL;
                if ( substr( $newLine, 0, 4 ) == '$mw$' ) {
                        if ( $this->delimiter ) {
                                $this->delimiter = false;
-                       }
-                       else {
+                       } else {
                                $this->delimiter = ';';
                        }
                }
+
                return parent::streamStatementEnd( $sql, $newLine );
        }
 
@@ -1469,6 +1537,7 @@ SQL;
                $result = $this->query( "SELECT (CASE(pg_try_advisory_lock($key))
                        WHEN 'f' THEN 'f' ELSE pg_advisory_unlock($key) END) AS lockstatus", $method );
                $row = $this->fetchObject( $result );
+
                return ( $row->lockstatus === 't' );
        }
 
@@ -1492,11 +1561,13 @@ SQL;
                        }
                }
                wfDebug( __METHOD__ . " failed to acquire lock\n" );
+
                return false;
        }
 
        /**
-        * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKSFROM PG DOCS: http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
+        * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKSFROM
+        * PG DOCS: http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
         * @param $lockName string
         * @param $method string
         * @return bool
@@ -1505,6 +1576,7 @@ SQL;
                $key = $this->addQuotes( $this->bigintFromLockName( $lockName ) );
                $result = $this->query( "SELECT pg_advisory_unlock($key) as lockstatus", $method );
                $row = $this->fetchObject( $result );
+
                return ( $row->lockstatus === 't' );
        }
 
index 84f1bcf..89f0818 100644 (file)
@@ -26,7 +26,6 @@
  * @ingroup Database
  */
 class DatabaseSqlite extends DatabaseBase {
-
        private static $fulltextEnabled = null;
 
        var $mAffectedRows;
@@ -104,6 +103,7 @@ class DatabaseSqlite extends DatabaseBase {
                        throw new DBConnectionError( $this, "SQLite database not accessible" );
                }
                $this->openFile( $fileName );
+
                return $this->mConn;
        }
 
@@ -137,6 +137,7 @@ class DatabaseSqlite extends DatabaseBase {
                        $this->mConn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
                        # Enforce LIKE to be case sensitive, just like MySQL
                        $this->query( 'PRAGMA case_sensitive_like = 1' );
+
                        return true;
                }
        }
@@ -147,6 +148,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        protected function closeConnection() {
                $this->mConn = null;
+
                return true;
        }
 
@@ -174,6 +176,7 @@ class DatabaseSqlite extends DatabaseBase {
                                self::$fulltextEnabled = stristr( $row['sql'], 'fts' ) !== false;
                        }
                }
+
                return self::$fulltextEnabled;
        }
 
@@ -195,6 +198,7 @@ class DatabaseSqlite extends DatabaseBase {
                        $cachedResult = 'FTS3';
                }
                $db->close();
+
                return $cachedResult;
        }
 
@@ -202,8 +206,10 @@ class DatabaseSqlite extends DatabaseBase {
         * Attaches external database to our connection, see http://sqlite.org/lang_attach.html
         * for details.
         *
-        * @param string $name database name to be used in queries like SELECT foo FROM dbname.table
-        * @param string $file database file name. If omitted, will be generated using $name and $wgSQLiteDataDir
+        * @param string $name database name to be used in queries like
+        *   SELECT foo FROM dbname.table
+        * @param string $file database file name. If omitted, will be generated
+        *   using $name and $wgSQLiteDataDir
         * @param string $fname calling function name
         *
         * @return ResultWrapper
@@ -214,6 +220,7 @@ class DatabaseSqlite extends DatabaseBase {
                        $file = self::generateFileName( $wgSQLiteDataDir, $name );
                }
                $file = $this->addQuotes( $file );
+
                return $this->query( "ATTACH DATABASE $file AS $name", $fname );
        }
 
@@ -244,6 +251,7 @@ class DatabaseSqlite extends DatabaseBase {
                        $this->mAffectedRows = $r->rowCount();
                        $res = new ResultWrapper( $this, $r->fetchAll() );
                }
+
                return $res;
        }
 
@@ -281,6 +289,7 @@ class DatabaseSqlite extends DatabaseBase {
 
                        return $obj;
                }
+
                return false;
        }
 
@@ -297,8 +306,10 @@ class DatabaseSqlite extends DatabaseBase {
                $cur = current( $r );
                if ( is_array( $cur ) ) {
                        next( $r );
+
                        return $cur;
                }
+
                return false;
        }
 
@@ -311,6 +322,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function numRows( $res ) {
                $r = $res instanceof ResultWrapper ? $res->result : $res;
+
                return count( $r );
        }
 
@@ -320,6 +332,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function numFields( $res ) {
                $r = $res instanceof ResultWrapper ? $res->result : $res;
+
                return is_array( $r ) ? count( $r[0] ) : 0;
        }
 
@@ -332,8 +345,10 @@ class DatabaseSqlite extends DatabaseBase {
                $r = $res instanceof ResultWrapper ? $res->result : $res;
                if ( is_array( $r ) ) {
                        $keys = array_keys( $r[0] );
+
                        return $keys[$n];
                }
+
                return false;
        }
 
@@ -349,6 +364,7 @@ class DatabaseSqlite extends DatabaseBase {
                if ( strpos( $name, 'sqlite_' ) === 0 ) {
                        return $name;
                }
+
                return str_replace( '"', '', parent::tableName( $name, $format ) );
        }
 
@@ -399,6 +415,7 @@ class DatabaseSqlite extends DatabaseBase {
                        return "Cannot return last error, no db connection";
                }
                $e = $this->mConn->errorInfo();
+
                return isset( $e[2] ) ? $e[2] : '';
        }
 
@@ -410,6 +427,7 @@ class DatabaseSqlite extends DatabaseBase {
                        return "Cannot return last error, no db connection";
                } else {
                        $info = $this->mConn->errorInfo();
+
                        return $info[1];
                }
        }
@@ -441,6 +459,7 @@ class DatabaseSqlite extends DatabaseBase {
                foreach ( $res as $row ) {
                        $info[] = $row->name;
                }
+
                return $info;
        }
 
@@ -467,6 +486,7 @@ class DatabaseSqlite extends DatabaseBase {
                }
                $firstPart = substr( $row->sql, 0, $indexPos );
                $options = explode( ' ', $firstPart );
+
                return in_array( 'UNIQUE', $options );
        }
 
@@ -483,6 +503,7 @@ class DatabaseSqlite extends DatabaseBase {
                                $options[$k] = '';
                        }
                }
+
                return parent::makeSelectOptions( $options );
        }
 
@@ -492,6 +513,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function makeUpdateOptions( $options ) {
                $options = self::fixIgnore( $options );
+
                return parent::makeUpdateOptions( $options );
        }
 
@@ -506,6 +528,7 @@ class DatabaseSqlite extends DatabaseBase {
                                $options[$k] = 'OR IGNORE';
                        }
                }
+
                return $options;
        }
 
@@ -515,6 +538,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function makeInsertOptions( $options ) {
                $options = self::fixIgnore( $options );
+
                return parent::makeInsertOptions( $options );
        }
 
@@ -593,6 +617,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function unionQueries( $sqls, $all ) {
                $glue = $all ? ' UNION ALL ' : ' UNION ';
+
                return implode( $glue, $sqls );
        }
 
@@ -629,6 +654,7 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function getServerVersion() {
                $ver = $this->mConn->getAttribute( PDO::ATTR_SERVER_VERSION );
+
                return $ver;
        }
 
@@ -636,7 +662,9 @@ class DatabaseSqlite extends DatabaseBase {
         * @return string User-friendly database information
         */
        public function getServerInfo() {
-               return wfMessage( self::getFulltextSearchModule() ? 'sqlite-has-fts' : 'sqlite-no-fts', $this->getServerVersion() )->text();
+               return wfMessage( self::getFulltextSearchModule()
+                       ? 'sqlite-has-fts'
+                       : 'sqlite-no-fts', $this->getServerVersion() )->text();
        }
 
        /**
@@ -656,6 +684,7 @@ class DatabaseSqlite extends DatabaseBase {
                                return new SQLiteField( $row, $tableName );
                        }
                }
+
                return false;
        }
 
@@ -696,7 +725,7 @@ class DatabaseSqlite extends DatabaseBase {
         * @return string
         */
        function strencode( $s ) {
-               return substr( $this->addQuotes( $s ), 1, - 1 );
+               return substr( $this->addQuotes( $s ), 1, -1 );
        }
 
        /**
@@ -715,6 +744,7 @@ class DatabaseSqlite extends DatabaseBase {
                if ( $b instanceof Blob ) {
                        $b = $b->fetch();
                }
+
                return $b;
        }
 
@@ -748,6 +778,7 @@ class DatabaseSqlite extends DatabaseBase {
                if ( count( $params ) > 0 && is_array( $params[0] ) ) {
                        $params = $params[0];
                }
+
                return parent::buildLike( $params ) . "ESCAPE '\' ";
        }
 
@@ -765,6 +796,7 @@ class DatabaseSqlite extends DatabaseBase {
        public function deadlockLoop( /*...*/ ) {
                $args = func_get_args();
                $function = array_shift( $args );
+
                return call_user_func_array( $function, $args );
        }
 
@@ -784,7 +816,11 @@ class DatabaseSqlite extends DatabaseBase {
                        // INT -> INTEGER
                        $s = preg_replace( '/\b(tiny|small|medium|big|)int(\s*\(\s*\d+\s*\)|\b)/i', 'INTEGER', $s );
                        // floating point types -> REAL
-                       $s = preg_replace( '/\b(float|double(\s+precision)?)(\s*\(\s*\d+\s*(,\s*\d+\s*)?\)|\b)/i', 'REAL', $s );
+                       $s = preg_replace(
+                               '/\b(float|double(\s+precision)?)(\s*\(\s*\d+\s*(,\s*\d+\s*)?\)|\b)/i',
+                               'REAL',
+                               $s
+                       );
                        // varchar -> TEXT
                        $s = preg_replace( '/\b(var)?char\s*\(.*?\)/i', 'TEXT', $s );
                        // TEXT normalization
@@ -814,6 +850,7 @@ class DatabaseSqlite extends DatabaseBase {
                        // DROP INDEX is database-wide, not table-specific, so no ON <table> clause.
                        $s = preg_replace( '/\sON\s+[^\s]*/i', '', $s );
                }
+
                return $s;
        }
 
@@ -832,6 +869,7 @@ class DatabaseSqlite extends DatabaseBase {
                $delim, $table, $field, $conds = '', $join_conds = array()
        ) {
                $fld = "group_concat($field," . $this->addQuotes( $delim ) . ')';
+
                return '(' . $this->selectSQLText( $table, $fld, $conds, null, array(), $join_conds ) . ')';
        }
 
@@ -844,13 +882,19 @@ class DatabaseSqlite extends DatabaseBase {
         * @return bool|ResultWrapper
         */
        function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
-               $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name=" . $this->addQuotes( $oldName ) . " AND type='table'", $fname );
+               $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name=" .
+                       $this->addQuotes( $oldName ) . " AND type='table'", $fname );
                $obj = $this->fetchObject( $res );
                if ( !$obj ) {
                        throw new MWException( "Couldn't retrieve structure for table $oldName" );
                }
                $sql = $obj->sql;
-               $sql = preg_replace( '/(?<=\W)"?' . preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ) ) . '"?(?=\W)/', $this->addIdentifierQuotes( $newName ), $sql, 1 );
+               $sql = preg_replace(
+                       '/(?<=\W)"?' . preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ) ) . '"?(?=\W)/',
+                       $this->addIdentifierQuotes( $newName ),
+                       $sql,
+                       1
+               );
                if ( $temporary ) {
                        if ( preg_match( '/^\\s*CREATE\\s+VIRTUAL\\s+TABLE\b/i', $sql ) ) {
                                wfDebug( "Table $oldName is virtual, can't create a temporary duplicate.\n" );
@@ -858,6 +902,7 @@ class DatabaseSqlite extends DatabaseBase {
                                $sql = str_replace( 'CREATE TABLE', 'CREATE TEMPORARY TABLE', $sql );
                        }
                }
+
                return $this->query( $sql, $fname );
        }
 
@@ -886,13 +931,11 @@ class DatabaseSqlite extends DatabaseBase {
                                if ( strpos( $table, 'sqlite_' ) !== 0 ) {
                                        $endArray[] = $table;
                                }
-
                        }
                }
 
                return $endArray;
        }
-
 } // end DatabaseSqlite class
 
 /**
@@ -912,6 +955,7 @@ class DatabaseSqliteStandalone extends DatabaseSqlite {
  */
 class SQLiteField implements Field {
        private $info, $tableName;
+
        function __construct( $info, $tableName ) {
                $this->info = $info;
                $this->tableName = $tableName;
@@ -932,6 +976,7 @@ class SQLiteField implements Field {
                                return str_replace( "''", "'", $this->info->dflt_value );
                        }
                }
+
                return $this->info->dflt_value;
        }
 
@@ -945,5 +990,4 @@ class SQLiteField implements Field {
        function type() {
                return $this->info->type;
        }
-
 } // end SQLiteField
index de58bab..de5be08 100644 (file)
@@ -187,6 +187,7 @@ class ResultWrapper implements Iterator {
                if ( is_null( $this->currentRow ) ) {
                        $this->next();
                }
+
                return $this->currentRow;
        }
 
@@ -203,6 +204,7 @@ class ResultWrapper implements Iterator {
        function next() {
                $this->pos++;
                $this->currentRow = $this->fetchObject();
+
                return $this->currentRow;
        }
 
@@ -277,8 +279,9 @@ class FakeResultWrapper extends ResultWrapper {
 }
 
 /**
- * Used by DatabaseBase::buildLike() to represent characters that have special meaning in SQL LIKE clauses
- * and thus need no escaping. Don't instantiate it manually, use DatabaseBase::anyChar() and anyString() instead.
+ * Used by DatabaseBase::buildLike() to represent characters that have special
+ * meaning in SQL LIKE clauses and thus need no escaping. Don't instantiate it
+ * manually, use DatabaseBase::anyChar() and anyString() instead.
  */
 class LikeMatch {
        private $str;
index 3941179..21ae808 100644 (file)
@@ -32,7 +32,6 @@
  */
 
 interface IORMRow {
-
        /**
         * Load the specified fields from the database.
         *
@@ -268,5 +267,4 @@ interface IORMRow {
         * @return IORMTable
         */
        public function getTable();
-
 }
index 3686565..9e9c526 100644 (file)
@@ -28,7 +28,6 @@
  */
 
 interface IORMTable {
-
        /**
         * Returns the name of the database table objects of this type are stored in.
         *
@@ -63,8 +62,9 @@ interface IORMTable {
         * * array
         * * blob
         *
-        * TODO: get rid of the id field. Every row instance needs to have
-        * one so this is just causing hassle at various locations by requiring an extra check for field name.
+        * @todo Get rid of the id field. Every row instance needs to have one so
+        *   this is just causing hassle at various locations by requiring an extra
+        *   check for field name.
         *
         * @since 1.20
         *
@@ -110,7 +110,7 @@ interface IORMTable {
         * @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode)
         */
        public function select( $fields = null, array $conditions = array(),
-                                                       array $options = array(), $functionName = null );
+               array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -126,7 +126,7 @@ interface IORMTable {
         * @return array of self
         */
        public function selectObjects( $fields = null, array $conditions = array(),
-                                                                  array $options = array(), $functionName = null );
+               array $options = array(), $functionName = null );
 
        /**
         * Do the actual select.
@@ -142,7 +142,7 @@ interface IORMTable {
         * @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode)
         */
        public function rawSelect( $fields = null, array $conditions = array(),
-                                                          array $options = array(), $functionName = null );
+               array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -167,7 +167,7 @@ interface IORMTable {
         * @return array of array
         */
        public function selectFields( $fields = null, array $conditions = array(),
-                                                                 array $options = array(), $collapse = true, $functionName = null );
+               array $options = array(), $collapse = true, $functionName = null );
 
        /**
         * Selects the the specified fields of the first matching record.
@@ -183,7 +183,7 @@ interface IORMTable {
         * @return IORMRow|bool False on failure
         */
        public function selectRow( $fields = null, array $conditions = array(),
-                                                          array $options = array(), $functionName = null );
+               array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -199,7 +199,7 @@ interface IORMTable {
         * @return ResultWrapper
         */
        public function rawSelectRow( array $fields, array $conditions = array(),
-                                                                 array $options = array(), $functionName = null );
+               array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the first record matching the provided
@@ -219,7 +219,7 @@ interface IORMTable {
         * @return mixed|array|bool False on failure
         */
        public function selectFieldsRow( $fields = null, array $conditions = array(),
-                                                                        array $options = array(), $collapse = true, $functionName = null );
+               array $options = array(), $collapse = true, $functionName = null );
 
        /**
         * Returns if there is at least one record matching the provided conditions.
@@ -316,14 +316,16 @@ interface IORMTable {
         *
         * @since 1.20
         *
-        * @return String|bool The target wiki, in a form that  LBFactory understands (or false if the local wiki is used)
+        * @return String|bool The target wiki, in a form that LBFactory
+        *   understands (or false if the local wiki is used)
         */
        public function getTargetWiki();
 
        /**
         * Set the ID of the any foreign wiki to use as a target for database operations
         *
-        * @param string|bool $wiki The target wiki, in a form that  LBFactory understands (or false if the local wiki shall be used)
+        * @param string|bool $wiki The target wiki, in a form that LBFactory
+        *   understands (or false if the local wiki shall be used)
         *
         * @since 1.20
         */
@@ -513,5 +515,4 @@ interface IORMTable {
         * @return boolean
         */
        public function canHaveField( $name );
-
 }
index 16c43a0..6e377ff 100644 (file)
@@ -26,7 +26,6 @@
  * @ingroup Database
  */
 abstract class LBFactory {
-
        /**
         * @var LBFactory
         */
@@ -52,6 +51,7 @@ abstract class LBFactory {
                        $class = $wgLBFactoryConf['class'];
                        self::$instance = new $class( $wgLBFactoryConf );
                }
+
                return self::$instance;
        }
 
@@ -210,13 +210,13 @@ class LBFactory_Simple extends LBFactory {
                                'type' => $wgDBtype,
                                'load' => 1,
                                'flags' => $flags
-                       ));
+                       ) );
                }
 
                return new LoadBalancer( array(
                        'servers' => $servers,
                        'masterWaitTimeout' => $wgMasterWaitTimeout
-               ));
+               ) );
        }
 
        /**
@@ -229,6 +229,7 @@ class LBFactory_Simple extends LBFactory {
                        $this->mainLB->parentInfo( array( 'id' => 'main' ) );
                        $this->chronProt->initLB( $this->mainLB );
                }
+
                return $this->mainLB;
        }
 
@@ -243,9 +244,10 @@ class LBFactory_Simple extends LBFactory {
                if ( !isset( $wgExternalServers[$cluster] ) ) {
                        throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
                }
+
                return new LoadBalancer( array(
                        'servers' => $wgExternalServers[$cluster]
-               ));
+               ) );
        }
 
        /**
@@ -259,6 +261,7 @@ class LBFactory_Simple extends LBFactory {
                        $this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
                        $this->chronProt->initLB( $this->extLBs[$cluster] );
                }
+
                return $this->extLBs[$cluster];
        }
 
@@ -325,6 +328,7 @@ class LBFactory_Fake extends LBFactory {
  */
 class DBAccessError extends MWException {
        function __construct() {
-               parent::__construct( "Mediawiki tried to access the database via wfGetDB(). This is not allowed." );
+               parent::__construct( "Mediawiki tried to access the database via wfGetDB(). " .
+                       "This is not allowed." );
        }
 }
index 3043946..a37a560 100644 (file)
  * Configuration:
  *     sectionsByDB                A map of database names to section names
  *
- *     sectionLoads                A 2-d map. For each section, gives a map of server names to load ratios.
- *                                 For example: array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
+ *     sectionLoads                A 2-d map. For each section, gives a map of server names to
+ *                                 load ratios. For example:
+ *                                 array(
+ *                                     'section1' => array(
+ *                                         'db1' => 100,
+ *                                         'db2' => 100
+ *                                     )
+ *                                 )
  *
- *     serverTemplate              A server info associative array as documented for $wgDBservers. The host,
- *                                 hostName and load entries will be overridden.
+ *     serverTemplate              A server info associative array as documented for $wgDBservers.
+ *                                 The host, hostName and load entries will be overridden.
  *
- *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group. For example:
- *                                 array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
+ *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group.
+ *                                 For example:
+ *                                 array(
+ *                                     'section1' => array(
+ *                                         'group1' => array(
+ *                                             'db1' => 100,
+ *                                             'db2' => 100
+ *                                         )
+ *                                     )
+ *                                 )
  *
  *     groupLoadsByDB              A 3-d map giving server load ratios by DB name.
  *
  *
  *     externalLoads               A map of external storage cluster name to server load map
  *
- *     externalTemplateOverrides   A set of server info keys overriding serverTemplate for external storage
+ *     externalTemplateOverrides   A set of server info keys overriding serverTemplate for external
+ *                                 storage
  *
- *     templateOverridesByServer   A 2-d map overriding serverTemplate and externalTemplateOverrides on a
- *                                 server-by-server basis. Applies to both core and external storage.
+ *     templateOverridesByServer   A 2-d map overriding serverTemplate and
+ *                                 externalTemplateOverrides on a server-by-server basis. Applies
+ *                                 to both core and external storage.
  *
  *     templateOverridesByCluster  A 2-d map overriding the server info by external storage cluster
  *
  *     masterTemplateOverrides     An override array for all master servers.
  *
- *     readOnlyBySection           A map of section name to read-only message. Missing or false for read/write.
+ *     readOnlyBySection           A map of section name to read-only message.
+ *                                 Missing or false for read/write.
  *
  * @ingroup Database
  */
@@ -117,6 +134,7 @@ class LBFactory_Multi extends LBFactory {
                }
                $this->lastSection = $section;
                $this->lastWiki = $wiki;
+
                return $section;
        }
 
@@ -131,10 +149,16 @@ class LBFactory_Multi extends LBFactory {
                if ( isset( $this->groupLoadsByDB[$dbName] ) ) {
                        $groupLoads = $this->groupLoadsByDB[$dbName];
                }
+
                if ( isset( $this->groupLoadsBySection[$section] ) ) {
                        $groupLoads = array_merge_recursive( $groupLoads, $this->groupLoadsBySection[$section] );
                }
-               return $this->newLoadBalancer( $this->serverTemplate, $this->sectionLoads[$section], $groupLoads );
+
+               return $this->newLoadBalancer(
+                       $this->serverTemplate,
+                       $this->sectionLoads[$section],
+                       $groupLoads
+               );
        }
 
        /**
@@ -149,6 +173,7 @@ class LBFactory_Multi extends LBFactory {
                        $this->chronProt->initLB( $lb );
                        $this->mainLBs[$section] = $lb;
                }
+
                return $this->mainLBs[$section];
        }
 
@@ -169,6 +194,7 @@ class LBFactory_Multi extends LBFactory {
                if ( isset( $this->templateOverridesByCluster[$cluster] ) ) {
                        $template = $this->templateOverridesByCluster[$cluster] + $template;
                }
+
                return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
        }
 
@@ -183,6 +209,7 @@ class LBFactory_Multi extends LBFactory {
                        $this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
                        $this->chronProt->initLB( $this->extLBs[$cluster] );
                }
+
                return $this->extLBs[$cluster];
        }
 
@@ -200,7 +227,8 @@ class LBFactory_Multi extends LBFactory {
                $lb = new LoadBalancer( array(
                        'servers' => $servers,
                        'masterWaitTimeout' => $wgMasterWaitTimeout
-               ));
+               ) );
+
                return $lb;
        }
 
@@ -245,6 +273,7 @@ class LBFactory_Multi extends LBFactory {
                        $serverInfo['load'] = $load;
                        $servers[] = $serverInfo;
                }
+
                return $servers;
        }
 
@@ -260,6 +289,7 @@ class LBFactory_Multi extends LBFactory {
                                $reindexed[$server][$group] = $load;
                        }
                }
+
                return $reindexed;
        }
 
@@ -271,6 +301,7 @@ class LBFactory_Multi extends LBFactory {
        function getDBNameAndPrefix( $wiki = false ) {
                if ( $wiki === false ) {
                        global $wgDBname, $wgDBprefix;
+
                        return array( $wgDBname, $wgDBprefix );
                } else {
                        return wfSplitWikiID( $wiki );
index 011c083..9967cc0 100644 (file)
@@ -101,6 +101,7 @@ class LoadBalancer {
                        $class = $this->mLoadMonitorClass;
                        $this->mLoadMonitor = new $class( $this );
                }
+
                return $this->mLoadMonitor;
        }
 
@@ -212,6 +213,7 @@ class LoadBalancer {
                                # No loads for this group, return false and the caller can use some other group
                                wfDebug( __METHOD__ . ": no loads for group $group\n" );
                                wfProfileOut( __METHOD__ );
+
                                return false;
                        }
                } else {
@@ -255,6 +257,7 @@ class LoadBalancer {
                                        # wants us to return false.
                                        wfDebugLog( 'connect', __METHOD__ . ": pickRandom() returned false\n" );
                                        wfProfileOut( __METHOD__ );
+
                                        return false;
                                }
 
@@ -329,6 +332,7 @@ class LoadBalancer {
                        }
                }
                wfProfileOut( __METHOD__ );
+
                return $i;
        }
 
@@ -342,6 +346,7 @@ class LoadBalancer {
                wfDebug( __METHOD__ . ": waiting $t us\n" );
                usleep( $t );
                wfProfileOut( __METHOD__ );
+
                return $t;
        }
 
@@ -372,7 +377,8 @@ class LoadBalancer {
        public function waitForAll( $pos ) {
                wfProfileIn( __METHOD__ );
                $this->mWaitForPos = $pos;
-               for ( $i = 1; $i < count( $this->mServers ); $i++ ) {
+               $serverCount = count( $this->mServers );
+               for ( $i = 1; $i < $serverCount; $i++ ) {
                        if ( $this->mLoads[$i] > 0 ) {
                                $this->doWait( $i, true );
                        }
@@ -393,6 +399,7 @@ class LoadBalancer {
                                return reset( $conns[$i] );
                        }
                }
+
                return false;
        }
 
@@ -408,11 +415,13 @@ class LoadBalancer {
                if ( !$conn ) {
                        if ( !$open ) {
                                wfDebug( __METHOD__ . ": no connection open\n" );
+
                                return false;
                        } else {
                                $conn = $this->openConnection( $index, '' );
                                if ( !$conn ) {
                                        wfDebug( __METHOD__ . ": failed to open connection\n" );
+
                                        return false;
                                }
                        }
@@ -424,9 +433,11 @@ class LoadBalancer {
                if ( $result == -1 || is_null( $result ) ) {
                        # Timed out waiting for slave, use master instead
                        wfDebug( __METHOD__ . ": Timed out waiting for slave #$index pos {$this->mWaitForPos}\n" );
+
                        return false;
                } else {
                        wfDebug( __METHOD__ . ": Done\n" );
+
                        return true;
                }
        }
@@ -447,10 +458,12 @@ class LoadBalancer {
 
                if ( $i == DB_LAST ) {
                        wfProfileOut( __METHOD__ );
-                       throw new MWException( 'Attempt to call ' . __METHOD__ . ' with deprecated server index DB_LAST' );
+                       throw new MWException( 'Attempt to call ' . __METHOD__ .
+                               ' with deprecated server index DB_LAST' );
                } elseif ( $i === null || $i === false ) {
                        wfProfileOut( __METHOD__ );
-                       throw new MWException( 'Attempt to call ' . __METHOD__ . ' with invalid server index' );
+                       throw new MWException( 'Attempt to call ' . __METHOD__ .
+                               ' with invalid server index' );
                }
 
                if ( $wiki === wfWikiID() ) {
@@ -487,6 +500,7 @@ class LoadBalancer {
                        if ( $i === false ) {
                                $this->mLastError = 'No working slave server: ' . $this->mLastError;
                                wfProfileOut( __METHOD__ );
+
                                return $this->reportConnectionError();
                        }
                }
@@ -495,10 +509,12 @@ class LoadBalancer {
                $conn = $this->openConnection( $i, $wiki );
                if ( !$conn ) {
                        wfProfileOut( __METHOD__ );
+
                        return $this->reportConnectionError();
                }
 
                wfProfileOut( __METHOD__ );
+
                return $conn;
        }
 
@@ -522,6 +538,7 @@ class LoadBalancer {
                }
                if ( $serverIndex === null || $refCount === null ) {
                        wfDebug( __METHOD__ . ": this connection was not opened as a foreign connection\n" );
+
                        /**
                         * This can happen in code like:
                         *   foreach ( $dbs as $db ) {
@@ -532,10 +549,12 @@ class LoadBalancer {
                         * When a connection to the local DB is opened in this way, reuseConnection()
                         * should be ignored
                         */
+
                        return;
                }
                if ( $this->mConns['foreignUsed'][$serverIndex][$wiki] !== $conn ) {
-                       throw new MWException( __METHOD__ . ": connection not found, has the connection been freed already?" );
+                       throw new MWException( __METHOD__ . ": connection not found, has " .
+                               "the connection been freed already?" );
                }
                $conn->setLBInfo( 'foreignPoolRefCount', --$refCount );
                if ( $refCount <= 0 ) {
@@ -598,6 +617,7 @@ class LoadBalancer {
                if ( $wiki !== false ) {
                        $conn = $this->openForeignConnection( $i, $wiki );
                        wfProfileOut( __METHOD__ );
+
                        return $conn;
                }
                if ( isset( $this->mConns['local'][$i][0] ) ) {
@@ -616,6 +636,7 @@ class LoadBalancer {
                        }
                }
                wfProfileOut( __METHOD__ );
+
                return $conn;
        }
 
@@ -690,6 +711,7 @@ class LoadBalancer {
                        $conn->setLBInfo( 'foreignPoolRefCount', $refCount + 1 );
                }
                wfProfileOut( __METHOD__ );
+
                return $conn;
        }
 
@@ -704,6 +726,7 @@ class LoadBalancer {
                if ( !is_integer( $index ) ) {
                        return false;
                }
+
                return (bool)$this->getAnyOpenConnection( $index );
        }
 
@@ -743,6 +766,7 @@ class LoadBalancer {
                if ( isset( $server['fakeMaster'] ) ) {
                        $db->setFakeMaster( true );
                }
+
                return $db;
        }
 
@@ -764,6 +788,7 @@ class LoadBalancer {
                        wfLogDBError( "Connection error: {$this->mLastError} ({$server})\n" );
                        $conn->reportConnectionError( "{$this->mLastError} ({$server})" ); // throws DBConnectionError
                }
+
                return false; /* not reached */
        }
 
@@ -833,7 +858,8 @@ class LoadBalancer {
        }
 
        /**
-        * Sets the server info structure for the given index. Entry at index $i is created if it doesn't exist
+        * Sets the server info structure for the given index. Entry at index $i
+        * is created if it doesn't exist
         * @param $i
         * @param $serverInfo
         */
@@ -850,17 +876,21 @@ class LoadBalancer {
                # master (however unlikely that may be), then we can fetch the position from the slave.
                $masterConn = $this->getAnyOpenConnection( 0 );
                if ( !$masterConn ) {
-                       for ( $i = 1; $i < count( $this->mServers ); $i++ ) {
+                       $serverCount = count( $this->mServers );
+                       for ( $i = 1; $i < $serverCount; $i++ ) {
                                $conn = $this->getAnyOpenConnection( $i );
                                if ( $conn ) {
                                        wfDebug( "Master pos fetched from slave\n" );
+
                                        return $conn->getSlavePos();
                                }
                        }
                } else {
                        wfDebug( "Master pos fetched from master\n" );
+
                        return $masterConn->getMasterPos();
                }
+
                return false;
        }
 
@@ -976,6 +1006,7 @@ class LoadBalancer {
                        return $this->mAllowLagged;
                }
                $this->mAllowLagged = $mode;
+
                return $this->mAllowLagged;
        }
 
@@ -993,6 +1024,7 @@ class LoadBalancer {
                                }
                        }
                }
+
                return $success;
        }
 
@@ -1046,6 +1078,7 @@ class LoadBalancer {
                                }
                        }
                }
+
                return array( $host, $maxLag, $maxIndex );
        }
 
@@ -1070,6 +1103,7 @@ class LoadBalancer {
                        $this->mLagTimes = $this->getLoadMonitor()->getLagTimes(
                                array_keys( $this->mServers ), $wiki );
                }
+
                return $this->mLagTimes;
        }
 
@@ -1137,6 +1171,7 @@ class DBConnRef implements IDatabase {
                        list( $db, $groups, $wiki ) = $this->params;
                        $this->conn = $this->lb->getConnection( $db, $groups, $wiki );
                }
+
                return call_user_func_array( array( $this->conn, $name ), $arguments );
        }
 
index f10d07f..b293531 100644 (file)
@@ -154,6 +154,7 @@ class LoadMonitor_MySQL implements LoadMonitor {
                        if ( mt_rand( 0, $chance ) != 0 ) {
                                unset( $times['timestamp'] ); // hide from caller
                                wfProfileOut( __METHOD__ );
+
                                return $times;
                        }
                        wfIncrStats( 'lag_cache_miss_expired' );
@@ -164,13 +165,14 @@ class LoadMonitor_MySQL implements LoadMonitor {
                # Cache key missing or expired
                if ( $wgMemc->add( "$memcKey:lock", 1, 10 ) ) {
                        # Let this process alone update the cache value
-                       $unlocker = new ScopedCallback( function() use ( $wgMemc, $memcKey ) {
+                       $unlocker = new ScopedCallback( function () use ( $wgMemc, $memcKey ) {
                                $wgMemc->delete( $memcKey );
                        } );
                } elseif ( is_array( $times ) ) {
                        # Could not acquire lock but an old cache exists, so use it
                        unset( $times['timestamp'] ); // hide from caller
                        wfProfileOut( __METHOD__ );
+
                        return $times;
                }
 
@@ -191,6 +193,7 @@ class LoadMonitor_MySQL implements LoadMonitor {
                unset( $times['timestamp'] ); // hide from caller
 
                wfProfileOut( __METHOD__ );
+
                return $times;
        }
 
@@ -207,6 +210,7 @@ class LoadMonitor_MySQL implements LoadMonitor {
                if ( $status['Threads_running'] > $threshold ) {
                        $server = $conn->getProperty( 'mServer' );
                        wfLogDBError( "LB backoff from $server - Threads_running = {$status['Threads_running']}\n" );
+
                        return $status['Threads_connected'];
                } else {
                        return 0;
index 077eab0..e8104b6 100644 (file)
@@ -27,5 +27,4 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 interface ORMIterator extends Iterator {
-
 }
index 160033c..e4efc01 100644 (file)
@@ -30,7 +30,6 @@
  */
 
 class ORMResult implements ORMIterator {
-
        /**
         * @var ResultWrapper
         */
@@ -119,5 +118,4 @@ class ORMResult implements ORMIterator {
        public function valid() {
                return $this->current !== false;
        }
-
 }
index 5ce3794..1d11202 100644 (file)
@@ -32,7 +32,6 @@
  */
 
 class ORMRow implements IORMRow {
-
        /**
         * The fields of the object.
         * field name (w/o prefix) => value
@@ -130,8 +129,10 @@ class ORMRow implements IORMRow {
 
                        if ( $result !== false ) {
                                $this->setFields( $this->table->getFieldsFromDBResult( $result ), $override );
+
                                return true;
                        }
+
                        return false;
                }
 
@@ -232,8 +233,7 @@ class ORMRow implements IORMRow {
         * @return boolean
         */
        public function hasIdField() {
-               return $this->hasField( 'id' )
-                       && !is_null( $this->getField( 'id' ) );
+               return $this->hasField( 'id' ) && !is_null( $this->getField( 'id' ) );
        }
 
        /**
@@ -252,7 +252,7 @@ class ORMRow implements IORMRow {
                                $value = $this->fields[$name];
 
                                // Skip null id fields so that the DBMS can set the default.
-                               if ( $name === 'id' && is_null ( $value ) ) {
+                               if ( $name === 'id' && is_null( $value ) ) {
                                        continue;
                                }
 
@@ -456,8 +456,9 @@ class ORMRow implements IORMRow {
 
        /**
         * Before removal of an object happens, @see beforeRemove gets called.
-        * This method loads the fields of which the names have been returned by this one (or all fields if null is returned).
-        * This allows for loading info needed after removal to get rid of linked data and the like.
+        * This method loads the fields of which the names have been returned by
+        * this one (or all fields if null is returned). This allows for loading
+        * info needed after removal to get rid of linked data and the like.
         *
         * @since 1.20
         *
@@ -552,7 +553,6 @@ class ORMRow implements IORMRow {
         * @param array|string|null $summaryFields
         */
        public function loadSummaryFields( $summaryFields = null ) {
-
        }
 
        /**
@@ -590,5 +590,4 @@ class ORMRow implements IORMRow {
        public function getTable() {
                return $this->table;
        }
-
 }
index 5f6723b..e47bc67 100644 (file)
@@ -29,7 +29,6 @@
  */
 
 class ORMTable extends DBAccessBase implements IORMTable {
-
        /**
         * Cache for instances, used by the singleton method.
         *
@@ -96,7 +95,9 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @param string|null $rowClass
         * @param string $fieldPrefix
         */
-       public function __construct( $tableName = '', array $fields = array(), array $defaults = array(), $rowClass = null, $fieldPrefix = '' ) {
+       public function __construct( $tableName = '', array $fields = array(),
+               array $defaults = array(), $rowClass = null, $fieldPrefix = ''
+       ) {
                $this->tableName = $tableName;
                $this->fields = $fields;
                $this->defaults = $defaults;
@@ -201,8 +202,10 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return ORMResult
         */
        public function select( $fields = null, array $conditions = array(),
-                                                       array $options = array(), $functionName = null ) {
+               array $options = array(), $functionName = null
+       ) {
                $res = $this->rawSelect( $fields, $conditions, $options, $functionName );
+
                return new ORMResult( $this, $res );
        }
 
@@ -221,7 +224,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode).
         */
        public function selectObjects( $fields = null, array $conditions = array(),
-                                                                  array $options = array(), $functionName = null ) {
+               array $options = array(), $functionName = null
+       ) {
                $result = $this->selectFields( $fields, $conditions, $options, false, $functionName );
 
                $objects = array();
@@ -239,19 +243,19 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @since 1.20
         *
         * @param null|string|array $fields
-        * @param array             $conditions
-        * @param array             $options
-        * @param null|string       $functionName
+        * @param array $conditions
+        * @param array $options
+        * @param null|string $functionName
         *
         * @return ResultWrapper
         * @throws DBQueryError if the quey failed (even if the database was in ignoreErrors mode).
         */
        public function rawSelect( $fields = null, array $conditions = array(),
-                                                          array $options = array(), $functionName = null ) {
+               array $options = array(), $functionName = null
+       ) {
                if ( is_null( $fields ) ) {
                        $fields = array_keys( $this->getFields() );
-               }
-               else {
+               } else {
                        $fields = (array)$fields;
                }
 
@@ -313,7 +317,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return array of array
         */
        public function selectFields( $fields = null, array $conditions = array(),
-                                                                 array $options = array(), $collapse = true, $functionName = null ) {
+               array $options = array(), $collapse = true, $functionName = null
+       ) {
                $objects = array();
 
                $result = $this->rawSelect( $fields, $conditions, $options, $functionName );
@@ -325,8 +330,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
                if ( $collapse ) {
                        if ( count( $fields ) === 1 ) {
                                $objects = array_map( 'array_shift', $objects );
-                       }
-                       elseif ( count( $fields ) === 2 ) {
+                       } elseif ( count( $fields ) === 2 ) {
                                $o = array();
 
                                foreach ( $objects as $object ) {
@@ -354,7 +358,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return IORMRow|bool False on failure
         */
        public function selectRow( $fields = null, array $conditions = array(),
-                                                          array $options = array(), $functionName = null ) {
+               array $options = array(), $functionName = null
+       ) {
                $options['LIMIT'] = 1;
 
                $objects = $this->select( $fields, $conditions, $options, $functionName );
@@ -376,7 +381,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return ResultWrapper
         */
        public function rawSelectRow( array $fields, array $conditions = array(),
-                                                                 array $options = array(), $functionName = null ) {
+               array $options = array(), $functionName = null
+       ) {
                $dbr = $this->getReadDbConnection();
 
                $result = $dbr->selectRow(
@@ -388,6 +394,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
                );
 
                $this->releaseConnection( $dbr );
+
                return $result;
        }
 
@@ -409,7 +416,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @return mixed|array|bool False on failure
         */
        public function selectFieldsRow( $fields = null, array $conditions = array(),
-                                                                        array $options = array(), $collapse = true, $functionName = null ) {
+               array $options = array(), $collapse = true, $functionName = null
+       ) {
                $options['LIMIT'] = 1;
 
                $objects = $this->selectFields( $fields, $conditions, $options, $collapse, $functionName );
@@ -491,6 +499,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
                ) !== false; // DatabaseBase::delete does not always return true for success as documented...
 
                $this->releaseConnection( $dbw );
+
                return $result;
        }
 
@@ -535,7 +544,9 @@ class ORMTable extends DBAccessBase implements IORMTable {
                        }
 
                        if ( $setDefaults && $hasDefault ) {
-                               $default = is_array( $defaults[$field] ) ? implode( '|', $defaults[$field] ) : $defaults[$field];
+                               $default = is_array( $defaults[$field] )
+                                       ? implode( '|', $defaults[$field] )
+                                       : $defaults[$field];
                                $params[$field][ApiBase::PARAM_DFLT] = $default;
                        }
                }
@@ -568,7 +579,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
        }
 
        /**
-        * Set the database ID to use for read operations, use DB_XXX constants or an index to the load balancer setup.
+        * Set the database ID to use for read operations, use DB_XXX constants or
+        *   an index to the load balancer setup.
         *
         * @param integer $db
         *
@@ -583,7 +595,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
         *
         * @since 1.20
         *
-        * @return String|bool The target wiki, in a form that  LBFactory understands (or false if the local wiki is used)
+        * @return String|bool The target wiki, in a form that LBFactory understands
+        *   (or false if the local wiki is used)
         */
        public function getTargetWiki() {
                return $this->wiki;
@@ -592,7 +605,8 @@ class ORMTable extends DBAccessBase implements IORMTable {
        /**
         * Set the ID of the any foreign wiki to use as a target for database operations
         *
-        * @param string|bool $wiki The target wiki, in a form that  LBFactory understands (or false if the local wiki shall be used)
+        * @param string|bool $wiki The target wiki, in a form that  LBFactory
+        *   understands (or false if the local wiki shall be used)
         *
         * @since 1.20
         */
@@ -638,9 +652,11 @@ class ORMTable extends DBAccessBase implements IORMTable {
         *
         * @since 1.20
         */
+       // @codingStandardsIgnoreStart Suppress "useless method overriding" sniffer warning
        public function releaseConnection( DatabaseBase $db ) {
                parent::releaseConnection( $db ); // just make it public
        }
+       // @codingStandardsIgnoreEnd
 
        /**
         * Update the records matching the provided conditions by
@@ -665,6 +681,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
                ) !== false; // DatabaseBase::update does not always return true for success as documented...
 
                $this->releaseConnection( $dbw );
+
                return $result;
        }
 
@@ -711,8 +728,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
                                if ( is_array( $value ) ) {
                                        $field = $value[0];
                                        $value = $value[1];
-                               }
-                               else {
+                               } else {
                                        $value = explode( ' ', $value, 2 );
                                        $value[0] = $this->getPrefixedField( $value[0] );
                                        $prefixedValues[] = implode( ' ', $value );
@@ -1103,5 +1119,4 @@ class ORMTable extends DBAccessBase implements IORMTable {
 
                return $success;
        }
-
 }
index 6e9ccc4..d0f8916 100644 (file)
@@ -31,7 +31,6 @@
  * @since 1.19
  */
 class MWDebug {
-
        /**
         * Log lines
         *
@@ -185,7 +184,9 @@ class MWDebug {
         *    MWDebug::deprecated() (Added in 1.20).
         * @return mixed
         */
-       public static function deprecated( $function, $version = false, $component = false, $callerOffset = 2 ) {
+       public static function deprecated( $function, $version = false,
+               $component = false, $callerOffset = 2
+       ) {
                $callerDescription = self::getCallerDescription( $callerOffset );
                $callerFunc = $callerDescription['func'];
 
@@ -227,7 +228,11 @@ class MWDebug {
 
                if ( $sendToLog ) {
                        global $wgDevelopmentWarnings; // we could have a more specific $wgDeprecationWarnings setting.
-                       self::sendWarning( $msg, $callerDescription, $wgDevelopmentWarnings ? E_USER_DEPRECATED : false );
+                       self::sendWarning(
+                               $msg,
+                               $callerDescription,
+                               $wgDevelopmentWarnings ? E_USER_DEPRECATED : false
+                       );
                }
 
                if ( self::$enabled ) {
@@ -445,10 +450,15 @@ class MWDebug {
                                $display = "\xc2\xa0";
                        }
 
-                       if ( !$ident && $diff < 0 && substr( $display, 0, 9 ) != 'Entering ' && substr( $display, 0, 8 ) != 'Exiting ' ) {
+                       if ( !$ident
+                               && $diff < 0
+                               && substr( $display, 0, 9 ) != 'Entering '
+                               && substr( $display, 0, 8 ) != 'Exiting '
+                       ) {
                                $ident = $curIdent;
                                $diff = 0;
-                               $display = '<span style="background:yellow;">' . nl2br( htmlspecialchars( $display ) ) . '</span>';
+                               $display = '<span style="background:yellow;">' .
+                                       nl2br( htmlspecialchars( $display ) ) . '</span>';
                        } else {
                                $display = nl2br( htmlspecialchars( $display ) );
                        }
@@ -460,7 +470,7 @@ class MWDebug {
                        } else {
                                $ret .= str_repeat( "<ul><li>\n", $diff );
                        }
-                       $ret .= "<tt>$display</tt>\n";
+                       $ret .= "<code>$display</code>\n";
 
                        $curIdent = $ident;
                }
@@ -517,6 +527,7 @@ class MWDebug {
 
                global $wgVersion, $wgRequestTime;
                $request = $context->getRequest();
+
                return array(
                        'mwVersion' => $wgVersion,
                        'phpVersion' => PHP_VERSION,
index 6eb5541..f0569dd 100644 (file)
@@ -4,14 +4,14 @@
  * Deferrable Update for closure/callback
  */
 class MWCallableUpdate implements DeferrableUpdate {
-
        /**
-        * @var closure/callabck
+        * @var closure/callback
         */
        private $callback;
 
        /**
         * @param callable $callback
+        * @throws MWException
         */
        public function __construct( $callback ) {
                if ( !is_callable( $callback ) ) {
@@ -26,5 +26,4 @@ class MWCallableUpdate implements DeferrableUpdate {
        public function doUpdate() {
                call_user_func( $this->callback );
        }
-
 }
index 7b9ac28..986a1f7 100644 (file)
@@ -30,7 +30,6 @@
  *        subclasses can override the beginTransaction() and commitTransaction() methods.
  */
 abstract class DataUpdate implements DeferrableUpdate {
-
        /**
         * Constructor
         */
@@ -122,5 +121,4 @@ abstract class DataUpdate implements DeferrableUpdate {
                        throw $exception; // rethrow after cleanup
                }
        }
-
 }
index c385f13..5cf0d2b 100644 (file)
@@ -46,7 +46,7 @@ class DeferredUpdates {
 
        /**
         * Add an update to the deferred list
-        * @param $update DeferrableUpdate Some object that implements doUpdate()
+        * @param DeferrableUpdate $update Some object that implements doUpdate()
         */
        public static function addUpdate( DeferrableUpdate $update ) {
                array_push( self::$updates, $update );
@@ -56,8 +56,8 @@ class DeferredUpdates {
         * HTMLCacheUpdates are the most common deferred update people use. This
         * is a shortcut method for that.
         * @see HTMLCacheUpdate::__construct()
-        * @param $title
-        * @param $table
+        * @param Title $title
+        * @param string $table
         */
        public static function addHTMLCacheUpdate( $title, $table ) {
                self::addUpdate( new HTMLCacheUpdate( $title, $table ) );
@@ -77,7 +77,7 @@ class DeferredUpdates {
         * Do any deferred updates and clear the list
         *
         * @param string $commit set to 'commit' to commit after every update to
-        *                prevent lock contention
+        *   prevent lock contention
         */
        public static function doUpdates( $commit = '' ) {
                global $wgDeferredUpdateList;
@@ -89,14 +89,17 @@ class DeferredUpdates {
                // No need to get master connections in case of empty updates array
                if ( !count( $updates ) ) {
                        wfProfileOut( __METHOD__ );
+
                        return;
                }
 
+               $dbw = false;
                $doCommit = $commit == 'commit';
                if ( $doCommit ) {
                        $dbw = wfGetDB( DB_MASTER );
                }
 
+               /** @var DeferrableUpdate $update */
                foreach ( $updates as $update ) {
                        try {
                                $update->doUpdate();
index 4147424..0713a05 100644 (file)
  * @ingroup Cache
  */
 class HTMLCacheUpdate implements DeferrableUpdate {
-       /**
-        * @var Title
-        */
+       /** @var Title */
        public $mTitle;
 
+       /** @var string */
        public $mTable;
 
        /**
-        * @param $titleTo
-        * @param $table
+        * @param Title $titleTo
+        * @param string $table
         */
        function __construct( Title $titleTo, $table ) {
                $this->mTitle = $titleTo;
@@ -61,7 +60,7 @@ class HTMLCacheUpdate implements DeferrableUpdate {
                        JobQueueGroup::singleton()->deduplicateRootJob( $job );
                } else { // few backlinks ($count might be off even if 0)
                        $dbw = wfGetDB( DB_MASTER );
-                       $dbw->onTransactionIdle( function() use ( $job ) {
+                       $dbw->onTransactionIdle( function () use ( $job ) {
                                $job->run(); // just do the purge query now
                        } );
                }
index fdd0e3c..9cd7708 100644 (file)
  * @todo document (e.g. one-sentence top-level class description).
  */
 class LinksUpdate extends SqlDataUpdate {
-
        // @todo make members protected, but make sure extensions don't break
 
-       public $mId,         //!< Page ID of the article linked from
-               $mTitle,         //!< Title object of the article linked from
-               $mParserOutput,  //!< Parser output
-               $mLinks,         //!< Map of title strings to IDs for the links in the document
-               $mImages,        //!< DB keys of the images used, in the array key only
-               $mTemplates,     //!< Map of title strings to IDs for the template references, including broken ones
-               $mExternals,     //!< URLs of external links, array key only
-               $mCategories,    //!< Map of category names to sort keys
-               $mInterlangs,    //!< Map of language codes to titles
-               $mProperties,    //!< Map of arbitrary name to value
-               $mDb,            //!< Database connection reference
-               $mOptions,       //!< SELECT options to be used (array)
-               $mRecursive;     //!< Whether to queue jobs for recursive updates
+       /** @var int Page ID of the article linked from */
+       public $mId;
+
+       /** @var Title object of the article linked from */
+       public $mTitle;
+
+       /** @var ParserOutput */
+       public $mParserOutput;
+
+       /** @var array Map of title strings to IDs for the links in the document */
+       public $mLinks;
+
+       /** @var array DB keys of the images used, in the array key only */
+       public $mImages;
+
+       /** @var array Map of title strings to IDs for the template references, including broken ones */
+       public $mTemplates;
+
+       /** @var array URLs of external links, array key only */
+       public $mExternals;
+
+       /** @var array Map of category names to sort keys */
+       public $mCategories;
+
+       /** @var array ap of language codes to titles */
+       public $mInterlangs;
+
+       /** @var array Map of arbitrary name to value */
+       public $mProperties;
+
+       /** @var DatabaseBase Database connection reference */
+       public $mDb;
+
+       /** @var array SELECT options to be used */
+       public $mOptions;
+
+       /** @var bool Whether to queue jobs for recursive updates */
+       public $mRecursive;
 
        /**
         * @var null|array Added links if calculated.
@@ -56,9 +80,9 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Constructor
         *
-        * @param $title Title of the page we're updating
-        * @param $parserOutput ParserOutput: output from a full parse of this page
-        * @param $recursive Boolean: queue jobs for recursive updates?
+        * @param Title $title Title of the page we're updating
+        * @param ParserOutput $parserOutput Output from a full parse of this page
+        * @param bool $recursive Queue jobs for recursive updates?
         * @throws MWException
         */
        function __construct( $title, $parserOutput, $recursive = true ) {
@@ -78,7 +102,8 @@ class LinksUpdate extends SqlDataUpdate {
                $this->mId = $title->getArticleID();
 
                if ( !$this->mId ) {
-                       throw new MWException( "The Title object did not provide an article ID. Perhaps the page doesn't exist?" );
+                       throw new MWException( "The Title object did not provide an article " .
+                               "ID. Perhaps the page doesn't exist?" );
                }
 
                $this->mParserOutput = $parserOutput;
@@ -216,15 +241,16 @@ class LinksUpdate extends SqlDataUpdate {
         * Queue a RefreshLinks job for any table.
         *
         * @param Title $title Title to do job for
-        * @param String $table Table to use (e.g. 'templatelinks')
+        * @param string $table Table to use (e.g. 'templatelinks')
         */
        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()}"
                                )
@@ -244,8 +270,8 @@ class LinksUpdate extends SqlDataUpdate {
 
        /**
         * Update all the appropriate counts in the category table.
-        * @param array $added associative array of category name => sort key
-        * @param array $deleted associative array of category name => sort key
+        * @param array $added Associative array of category name => sort key
+        * @param array $deleted Associative array of category name => sort key
         */
        function updateCategoryCounts( $added, $deleted ) {
                $a = WikiPage::factory( $this->mTitle );
@@ -263,10 +289,10 @@ class LinksUpdate extends SqlDataUpdate {
 
        /**
         * Update a table by doing a delete query then an insert query
-        * @param $table
-        * @param $prefix
-        * @param $deletions
-        * @param $insertions
+        * @param string $table Table name
+        * @param string $prefix Field name prefix
+        * @param array $deletions
+        * @param array $insertions Rows to insert
         */
        function incrTableUpdate( $table, $prefix, $deletions, $insertions ) {
                if ( $table == 'page_props' ) {
@@ -313,7 +339,7 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Get an array of pagelinks insertions for passing to the DB
         * Skips the titles specified by the 2-D array $existing
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getLinkInsertions( $existing = array() ) {
@@ -330,12 +356,13 @@ class LinksUpdate extends SqlDataUpdate {
                                );
                        }
                }
+
                return $arr;
        }
 
        /**
         * Get an array of template insertions. Like getLinkInsertions()
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getTemplateInsertions( $existing = array() ) {
@@ -350,13 +377,14 @@ class LinksUpdate extends SqlDataUpdate {
                                );
                        }
                }
+
                return $arr;
        }
 
        /**
         * Get an array of image insertions
         * Skips the names specified in $existing
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getImageInsertions( $existing = array() ) {
@@ -368,12 +396,13 @@ class LinksUpdate extends SqlDataUpdate {
                                'il_to' => $iname
                        );
                }
+
                return $arr;
        }
 
        /**
         * Get an array of externallinks insertions. Skips the names specified in $existing
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getExternalInsertions( $existing = array() ) {
@@ -388,6 +417,7 @@ class LinksUpdate extends SqlDataUpdate {
                                );
                        }
                }
+
                return $arr;
        }
 
@@ -432,6 +462,7 @@ class LinksUpdate extends SqlDataUpdate {
                                'cl_type' => $type,
                        );
                }
+
                return $arr;
        }
 
@@ -452,12 +483,13 @@ class LinksUpdate extends SqlDataUpdate {
                                'll_title' => $title
                        );
                }
+
                return $arr;
        }
 
        /**
         * Get an array of page property insertions
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        function getPropertyInsertions( $existing = array() ) {
@@ -470,19 +502,23 @@ class LinksUpdate extends SqlDataUpdate {
                                'pp_value' => $value,
                        );
                }
+
                return $arr;
        }
 
        /**
         * Get an array of interwiki insertions for passing to the DB
         * Skips the titles specified by the 2-D array $existing
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getInterwikiInsertions( $existing = array() ) {
                $arr = array();
                foreach ( $this->mInterwikis as $prefix => $dbkeys ) {
-                       $diffs = isset( $existing[$prefix] ) ? array_diff_key( $dbkeys, $existing[$prefix] ) : $dbkeys;
+                       $diffs = isset( $existing[$prefix] )
+                               ? array_diff_key( $dbkeys, $existing[$prefix] )
+                               : $dbkeys;
+
                        foreach ( $diffs as $dbk => $id ) {
                                $arr[] = array(
                                        'iwl_from' => $this->mId,
@@ -491,13 +527,14 @@ class LinksUpdate extends SqlDataUpdate {
                                );
                        }
                }
+
                return $arr;
        }
 
        /**
         * Given an array of existing links, returns those links which are not in $this
         * and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getLinkDeletions( $existing ) {
@@ -509,13 +546,14 @@ class LinksUpdate extends SqlDataUpdate {
                                $del[$ns] = $existing[$ns];
                        }
                }
+
                return $del;
        }
 
        /**
         * Given an array of existing templates, returns those templates which are not in $this
         * and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getTemplateDeletions( $existing ) {
@@ -527,13 +565,14 @@ class LinksUpdate extends SqlDataUpdate {
                                $del[$ns] = $existing[$ns];
                        }
                }
+
                return $del;
        }
 
        /**
         * Given an array of existing images, returns those images which are not in $this
         * and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getImageDeletions( $existing ) {
@@ -543,7 +582,7 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Given an array of existing external links, returns those links which are not
         * in $this and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getExternalDeletions( $existing ) {
@@ -553,7 +592,7 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Given an array of existing categories, returns those categories which are not in $this
         * and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getCategoryDeletions( $existing ) {
@@ -563,7 +602,7 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Given an array of existing interlanguage links, returns those links which are not
         * in $this and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getInterlangDeletions( $existing ) {
@@ -572,7 +611,7 @@ class LinksUpdate extends SqlDataUpdate {
 
        /**
         * Get array of properties which should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        function getPropertyDeletions( $existing ) {
@@ -582,7 +621,7 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Given an array of existing interwiki links, returns those links which are not in $this
         * and thus should be deleted.
-        * @param $existing array
+        * @param array $existing
         * @return array
         */
        private function getInterwikiDeletions( $existing ) {
@@ -594,6 +633,7 @@ class LinksUpdate extends SqlDataUpdate {
                                $del[$prefix] = $existing[$prefix];
                        }
                }
+
                return $del;
        }
 
@@ -612,6 +652,7 @@ class LinksUpdate extends SqlDataUpdate {
                        }
                        $arr[$row->pl_namespace][$row->pl_title] = 1;
                }
+
                return $arr;
        }
 
@@ -630,6 +671,7 @@ class LinksUpdate extends SqlDataUpdate {
                        }
                        $arr[$row->tl_namespace][$row->tl_title] = 1;
                }
+
                return $arr;
        }
 
@@ -645,6 +687,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $res as $row ) {
                        $arr[$row->il_to] = 1;
                }
+
                return $arr;
        }
 
@@ -660,6 +703,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $res as $row ) {
                        $arr[$row->el_to] = 1;
                }
+
                return $arr;
        }
 
@@ -675,6 +719,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $res as $row ) {
                        $arr[$row->cl_to] = $row->cl_sortkey_prefix;
                }
+
                return $arr;
        }
 
@@ -691,6 +736,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $res as $row ) {
                        $arr[$row->ll_lang] = $row->ll_title;
                }
+
                return $arr;
        }
 
@@ -708,13 +754,14 @@ class LinksUpdate extends SqlDataUpdate {
                        }
                        $arr[$row->iwl_prefix][$row->iwl_title] = 1;
                }
+
                return $arr;
        }
 
        /**
         * Get an array of existing categories, with the name in the key and sort key in the value.
         *
-        * @return array
+        * @return array of property names and values
         */
        private function getExistingProperties() {
                $res = $this->mDb->select( 'page_props', array( 'pp_propname', 'pp_value' ),
@@ -723,6 +770,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $res as $row ) {
                        $arr[$row->pp_propname] = $row->pp_value;
                }
+
                return $arr;
        }
 
@@ -753,7 +801,7 @@ class LinksUpdate extends SqlDataUpdate {
 
        /**
         * Invalidate any necessary link lists related to page property changes
-        * @param $changed
+        * @param array $changed
         */
        private function invalidateProperties( $changed ) {
                global $wgPagePropLinkInvalidations;
@@ -783,8 +831,9 @@ class LinksUpdate extends SqlDataUpdate {
                }
                $result = array();
                foreach ( $this->linkInsertions as $insertion ) {
-                       $result[] = Title::makeTitle( $insertion[ 'pl_namespace' ], $insertion[ 'pl_title' ] );
+                       $result[] = Title::makeTitle( $insertion['pl_namespace'], $insertion['pl_title'] );
                }
+
                return $result;
        }
 
@@ -803,6 +852,7 @@ class LinksUpdate extends SqlDataUpdate {
                                $result[] = Title::makeTitle( $ns, $title );
                        }
                }
+
                return $result;
        }
 }
@@ -811,13 +861,13 @@ class LinksUpdate extends SqlDataUpdate {
  * Update object handling the cleanup of links tables after a page was deleted.
  **/
 class LinksDeletionUpdate extends SqlDataUpdate {
-
-       protected $mPage;     //!< WikiPage the wikipage that was deleted
+       /** @var WikiPage The WikiPage that was deleted */
+       protected $mPage;
 
        /**
         * Constructor
         *
-        * @param $page WikiPage Page we are updating
+        * @param WikiPage $page Page we are updating
         * @throws MWException
         */
        function __construct( WikiPage $page ) {
@@ -880,8 +930,8 @@ class LinksDeletionUpdate extends SqlDataUpdate {
 
        /**
         * Update all the appropriate counts in the category table.
-        * @param array $added associative array of category name => sort key
-        * @param array $deleted associative array of category name => sort key
+        * @param array $added Associative array of category name => sort key
+        * @param array $deleted Associative array of category name => sort key
         */
        function updateCategoryCounts( $added, $deleted ) {
                $a = WikiPage::factory( $this->mTitle );
index 82a413e..7ca4158 100644 (file)
  * @ingroup Search
  */
 class SearchUpdate implements DeferrableUpdate {
-       /**
-        * Page id being updated
-        * @var int
-        */
+       /** @var int Page id being updated */
        private $id = 0;
 
-       /**
-        * Title we're updating
-        * @var Title
-        */
+       /** @var Title Title we're updating */
        private $title;
 
-       /**
-        * Content of the page (not text)
-        * @var Content|false
-        */
+       /** @var Content|false Content of the page (not text) */
        private $content;
 
        /**
@@ -52,7 +43,7 @@ class SearchUpdate implements DeferrableUpdate {
         *
         * @param int $id Page id to update
         * @param Title|string $title Title of page to update
-        * @param Content|string|false $c Content of the page to update.
+        * @param Content|string|bool $c Content of the page to update. Default: false.
         *  If a Content object, text will be gotten from it. String is for back-compat.
         *  Passing false tells the backend to just update the title, not the content
         */
@@ -180,6 +171,7 @@ class SearchUpdate implements DeferrableUpdate {
                # Strip wiki '' and '''
                $text = preg_replace( "/''[']*/", " ", $text );
                wfProfileOut( __METHOD__ . '-regexps' );
+
                return $text;
        }
 }
index 09ff87d..7bfafee 100644 (file)
  * Class for handling updates to the site_stats table
  */
 class SiteStatsUpdate implements DeferrableUpdate {
+       /** @var int */
        protected $views = 0;
+
+       /** @var int */
        protected $edits = 0;
+
+       /** @var int */
        protected $pages = 0;
+
+       /** @var int */
        protected $articles = 0;
+
+       /** @var int */
        protected $users = 0;
+
+       /** @var int */
        protected $images = 0;
 
        // @todo deprecate this constructor
@@ -39,7 +50,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
        }
 
        /**
-        * @param $deltas Array
+        * @param array $deltas
         * @return SiteStatsUpdate
         */
        public static function factory( array $deltas ) {
@@ -71,20 +82,20 @@ class SiteStatsUpdate implements DeferrableUpdate {
 
        /**
         * Do not call this outside of SiteStatsUpdate
-        *
-        * @return void
         */
        public function tryDBUpdateInternal() {
                global $wgSiteStatsAsyncFactor;
 
                $dbw = wfGetDB( DB_MASTER );
                $lockKey = wfMemcKey( 'site_stats' ); // prepend wiki ID
+               $pd = array();
                if ( $wgSiteStatsAsyncFactor ) {
                        // Lock the table so we don't have double DB/memcached updates
                        if ( !$dbw->lockIsFree( $lockKey, __METHOD__ )
                                || !$dbw->lock( $lockKey, __METHOD__, 1 ) // 1 sec timeout
                        ) {
                                $this->doUpdatePendingDeltas();
+
                                return;
                        }
                        $pd = $this->getPendingDeltas();
@@ -118,7 +129,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
        }
 
        /**
-        * @param $dbw DatabaseBase
+        * @param DatabaseBase $dbw
         * @return bool|mixed
         */
        public static function cacheUpdate( $dbw ) {
@@ -133,7 +144,8 @@ class SiteStatsUpdate implements DeferrableUpdate {
                                'rc_user != 0',
                                'rc_bot' => 0,
                                'rc_log_type != ' . $dbr->addQuotes( 'newusers' ) . ' OR rc_log_type IS NULL',
-                               'rc_timestamp >= ' . $dbr->addQuotes( $dbr->timestamp( wfTimestamp( TS_UNIX ) - $wgActiveUserDays * 24 * 3600 ) ),
+                               'rc_timestamp >= ' . $dbr->addQuotes( $dbr->timestamp( wfTimestamp( TS_UNIX )
+                                       - $wgActiveUserDays * 24 * 3600 ) ),
                        ),
                        __METHOD__
                );
@@ -143,6 +155,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
                        array( 'ss_row_id' => 1 ),
                        __METHOD__
                );
+
                return $activeUsers;
        }
 
@@ -156,9 +169,9 @@ class SiteStatsUpdate implements DeferrableUpdate {
        }
 
        /**
-        * @param $sql string
-        * @param $field string
-        * @param $delta integer
+        * @param string $sql
+        * @param string $field
+        * @param int $delta
         */
        protected function appendUpdate( &$sql, $field, $delta ) {
                if ( $delta ) {
@@ -174,7 +187,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
        }
 
        /**
-        * @param $type string
+        * @param string $type
         * @param string $sign ('+' or '-')
         * @return string
         */
@@ -185,9 +198,8 @@ class SiteStatsUpdate implements DeferrableUpdate {
        /**
         * Adjust the pending deltas for a stat type.
         * Each stat type has two pending counters, one for increments and decrements
-        * @param $type string
-        * @param $delta integer Delta (positive or negative)
-        * @return void
+        * @param string $type
+        * @param int $delta Delta (positive or negative)
         */
        protected function adjustPending( $type, $delta ) {
                global $wgMemc;
@@ -208,16 +220,15 @@ class SiteStatsUpdate implements DeferrableUpdate {
 
        /**
         * Get pending delta counters for each stat type
-        * @return Array Positive and negative deltas for each type
-        * @return void
+        * @return array Positive and negative deltas for each type
         */
        protected function getPendingDeltas() {
                global $wgMemc;
 
                $pending = array();
                foreach ( array( 'ss_total_views', 'ss_total_edits',
-                       'ss_good_articles', 'ss_total_pages', 'ss_users', 'ss_images' ) as $type )
-               {
+                       'ss_good_articles', 'ss_total_pages', 'ss_users', 'ss_images' ) as $type
+               {
                        // Get pending increments and pending decrements
                        $pending[$type]['+'] = (int)$wgMemc->get( $this->getTypeCacheKey( $type, '+' ) );
                        $pending[$type]['-'] = (int)$wgMemc->get( $this->getTypeCacheKey( $type, '-' ) );
@@ -229,7 +240,6 @@ class SiteStatsUpdate implements DeferrableUpdate {
        /**
         * Reduce pending delta counters after updates have been applied
         * @param array $pd Result of getPendingDeltas(), used for DB update
-        * @return void
         */
        protected function removePendingDeltas( array $pd ) {
                global $wgMemc;
@@ -242,4 +252,3 @@ class SiteStatsUpdate implements DeferrableUpdate {
                }
        }
 }
-
index 51188d8..09d18c4 100644 (file)
  *        the beginTransaction() and commitTransaction() methods.
  */
 abstract class SqlDataUpdate extends DataUpdate {
+       /** @var DatabaseBase Database connection reference */
+       protected $mDb;
 
-       protected $mDb;            //!< Database connection reference
-       protected $mOptions;       //!< SELECT options to be used (array)
+       /** @var array SELECT options to be used (array) */
+       protected $mOptions;
 
-       private   $mHasTransaction; //!< bool whether a transaction is open on this object (internal use only!)
-       protected $mUseTransaction; //!< bool whether this update should be wrapped in a transaction
+       /** @var bool Whether a transaction is open on this object (internal use only!) */
+       private $mHasTransaction;
+
+       /** @var  bool Whether this update should be wrapped in a transaction */
+       protected $mUseTransaction;
 
        /**
         * Constructor
         *
-        * @param bool $withTransaction whether this update should be wrapped in a transaction (default: true).
-        *             A transaction is only started if no transaction is already in progress,
-        *             see beginTransaction() for details.
-        **/
+        * @param bool $withTransaction whether this update should be wrapped in a
+        *   transaction (default: true). A transaction is only started if no
+        *   transaction is already in progress, see beginTransaction() for details.
+        */
        public function __construct( $withTransaction = true ) {
                global $wgAntiLockFlags;
 
@@ -56,7 +61,8 @@ abstract class SqlDataUpdate extends DataUpdate {
                        $this->mOptions = array( 'FOR UPDATE' );
                }
 
-               // @todo get connection only when it's needed? make sure that doesn't break anything, especially transactions!
+               // @todo Get connection only when it's needed? Make sure that doesn't
+               // break anything, especially transactions!
                $this->mDb = wfGetDB( DB_MASTER );
 
                $this->mWithTransaction = $withTransaction;
@@ -64,10 +70,12 @@ abstract class SqlDataUpdate extends DataUpdate {
        }
 
        /**
-        * Begin a database transaction, if $withTransaction was given as true in the constructor for this SqlDataUpdate.
+        * Begin a database transaction, if $withTransaction was given as true in
+        * the constructor for this SqlDataUpdate.
         *
-        * Because nested transactions are not supported by the Database class, this implementation
-        * checks Database::trxLevel() and only opens a transaction if none is already active.
+        * Because nested transactions are not supported by the Database class,
+        * this implementation checks Database::trxLevel() and only opens a
+        * transaction if none is already active.
         */
        public function beginTransaction() {
                if ( !$this->mWithTransaction ) {
@@ -105,8 +113,8 @@ abstract class SqlDataUpdate extends DataUpdate {
         * Invalidate the cache of a list of pages from a single namespace.
         * This is intended for use by subclasses.
         *
-        * @param $namespace Integer
-        * @param $dbkeys Array
+        * @param int $namespace Namespace number
+        * @param array $dbkeys
         */
        protected function invalidatePages( $namespace, array $dbkeys ) {
                if ( $dbkeys === array() ) {
@@ -148,5 +156,4 @@ abstract class SqlDataUpdate extends DataUpdate {
                        ), __METHOD__
                );
        }
-
 }
index 71afeba..bac9f10 100644 (file)
@@ -26,7 +26,6 @@
  * @ingroup Cache
  */
 class SquidUpdate {
-
        /**
         * Collection of URLs to purge.
         * @var array
@@ -83,6 +82,7 @@ class SquidUpdate {
                }
 
                wfProfileOut( __METHOD__ );
+
                return new SquidUpdate( $blurlArr );
        }
 
@@ -96,12 +96,14 @@ class SquidUpdate {
        public static function newFromTitles( $titles, $urlArr = array() ) {
                global $wgMaxSquidPurgeTitles;
                $i = 0;
+               /** @var Title $title */
                foreach ( $titles as $title ) {
                        $urlArr[] = $title->getInternalURL();
                        if ( $i++ > $wgMaxSquidPurgeTitles ) {
                                break;
                        }
                }
+
                return new SquidUpdate( $urlArr );
        }
 
@@ -111,6 +113,7 @@ class SquidUpdate {
         */
        public static function newSimplePurge( Title $title ) {
                $urlArr = $title->getSquidURLs();
+
                return new SquidUpdate( $urlArr );
        }
 
@@ -194,11 +197,12 @@ class SquidUpdate {
 
                // pfsockopen doesn't work because we need set_sock_opt
                $conn = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
-               if ( ! $conn ) {
+               if ( !$conn ) {
                        $errstr = socket_strerror( socket_last_error() );
                        wfDebugLog( 'squid', __METHOD__ .
                                ": Error opening UDP socket: $errstr\n" );
                        wfProfileOut( __METHOD__ );
+
                        return;
                }
 
@@ -295,6 +299,7 @@ class SquidUpdate {
                                return $routing;
                        }
                }
+
                return false;
        }
 }
index 22a4649..ddd2e09 100644 (file)
  * from that table to update the 'page_counter' field in a batch operation.
  */
 class ViewCountUpdate implements DeferrableUpdate {
+       /** @var int Page ID to increment the view count */
        protected $id;
 
        /**
         * Constructor
         *
-        * @param $id Integer: page ID to increment the view count
+        * @param int $id Page ID to increment the view count
         */
        public function __construct( $id ) {
                $this->id = intval( $id );
@@ -48,7 +49,12 @@ class ViewCountUpdate implements DeferrableUpdate {
                $dbw = wfGetDB( DB_MASTER );
 
                if ( $wgHitcounterUpdateFreq <= 1 || $dbw->getType() == 'sqlite' ) {
-                       $dbw->update( 'page', array( 'page_counter = page_counter + 1' ), array( 'page_id' => $this->id ), __METHOD__ );
+                       $dbw->update(
+                               'page', array( 'page_counter = page_counter + 1' ),
+                               array( 'page_id' => $this->id ),
+                               __METHOD__
+                       );
+
                        return;
                }
 
@@ -59,7 +65,8 @@ class ViewCountUpdate implements DeferrableUpdate {
                        if ( rand() % $checkfreq == 0 && $dbw->lastErrno() == 0 ) {
                                $this->collect();
                        }
-               } catch ( DBError $e ) {}
+               } catch ( DBError $e ) {
+               }
        }
 
        protected function collect() {
index 7da6905..331ce7d 100644 (file)
@@ -29,7 +29,6 @@
  * @ingroup DifferenceEngine
  */
 class ArrayDiffFormatter extends DiffFormatter {
-
        /**
         * @param $diff
         * @return array
@@ -74,6 +73,7 @@ class ArrayDiffFormatter extends DiffFormatter {
                                        $newline += count( $edit->orig );
                        }
                }
+
                return $retval;
        }
 }
index 53e80c4..f80a4ad 100644 (file)
@@ -35,7 +35,7 @@ abstract class DiffOp {
        public $orig;
        public $closing;
 
-       public abstract function reverse();
+       abstract public function reverse();
 
        /**
         * @return int
@@ -57,7 +57,7 @@ abstract class DiffOp {
  * @private
  * @ingroup DifferenceEngine
  */
-class DiffOp_Copy extends DiffOp {
+class DiffOpCopy extends DiffOp {
        public $type = 'copy';
 
        function __construct( $orig, $closing = false ) {
@@ -69,10 +69,10 @@ class DiffOp_Copy extends DiffOp {
        }
 
        /**
-        * @return DiffOp_Copy
+        * @return DiffOpCopy
         */
        function reverse() {
-               return new DiffOp_Copy( $this->closing, $this->orig );
+               return new DiffOpCopy( $this->closing, $this->orig );
        }
 }
 
@@ -81,7 +81,7 @@ class DiffOp_Copy extends DiffOp {
  * @private
  * @ingroup DifferenceEngine
  */
-class DiffOp_Delete extends DiffOp {
+class DiffOpDelete extends DiffOp {
        public $type = 'delete';
 
        function __construct( $lines ) {
@@ -90,10 +90,10 @@ class DiffOp_Delete extends DiffOp {
        }
 
        /**
-        * @return DiffOp_Add
+        * @return DiffOpAdd
         */
        function reverse() {
-               return new DiffOp_Add( $this->orig );
+               return new DiffOpAdd( $this->orig );
        }
 }
 
@@ -102,7 +102,7 @@ class DiffOp_Delete extends DiffOp {
  * @private
  * @ingroup DifferenceEngine
  */
-class DiffOp_Add extends DiffOp {
+class DiffOpAdd extends DiffOp {
        public $type = 'add';
 
        function __construct( $lines ) {
@@ -111,10 +111,10 @@ class DiffOp_Add extends DiffOp {
        }
 
        /**
-        * @return DiffOp_Delete
+        * @return DiffOpDelete
         */
        function reverse() {
-               return new DiffOp_Delete( $this->closing );
+               return new DiffOpDelete( $this->closing );
        }
 }
 
@@ -123,7 +123,7 @@ class DiffOp_Add extends DiffOp {
  * @private
  * @ingroup DifferenceEngine
  */
-class DiffOp_Change extends DiffOp {
+class DiffOpChange extends DiffOp {
        public $type = 'change';
 
        function __construct( $orig, $closing ) {
@@ -132,10 +132,10 @@ class DiffOp_Change extends DiffOp {
        }
 
        /**
-        * @return DiffOp_Change
+        * @return DiffOpChange
         */
        function reverse() {
-               return new DiffOp_Change( $this->closing, $this->orig );
+               return new DiffOpChange( $this->closing, $this->orig );
        }
 }
 
@@ -144,14 +144,14 @@ class DiffOp_Change extends DiffOp {
  *
  * The algorithm used here is mostly lifted from the perl module
  * Algorithm::Diff (version 1.06) by Ned Konz, which is available at:
- *      http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
+ *     http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
  *
  * More ideas are taken from:
- *      http://www.ics.uci.edu/~eppstein/161/960229.html
+ *     http://www.ics.uci.edu/~eppstein/161/960229.html
  *
  * Some ideas are (and a bit of code) are from from analyze.c, from GNU
  * diffutils-2.7, which can be found at:
- *      ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
+ *     ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
  *
  * closingly, some ideas (subdivision by NCHUNKS > 2, and some optimizations)
  * are my own.
@@ -164,7 +164,6 @@ class DiffOp_Change extends DiffOp {
  * @ingroup DifferenceEngine
  */
 class DiffEngine {
-
        const MAX_XREF_LENGTH = 10000;
 
        protected $xchanged, $ychanged;
@@ -204,12 +203,13 @@ class DiffEngine {
                        // Skip matching "snake".
                        $copy = array();
                        while ( $xi < $n_from && $yi < $n_to
-                       && !$this->xchanged[$xi] && !$this->ychanged[$yi] ) {
+                               && !$this->xchanged[$xi] && !$this->ychanged[$yi]
+                       ) {
                                $copy[] = $from_lines[$xi++];
                                ++$yi;
                        }
                        if ( $copy ) {
-                               $edits[] = new DiffOp_Copy( $copy );
+                               $edits[] = new DiffOpCopy( $copy );
                        }
 
                        // Find deletes & adds.
@@ -224,14 +224,15 @@ class DiffEngine {
                        }
 
                        if ( $delete && $add ) {
-                               $edits[] = new DiffOp_Change( $delete, $add );
+                               $edits[] = new DiffOpChange( $delete, $add );
                        } elseif ( $delete ) {
-                               $edits[] = new DiffOp_Delete( $delete );
+                               $edits[] = new DiffOpDelete( $delete );
                        } elseif ( $add ) {
-                               $edits[] = new DiffOp_Add( $add );
+                               $edits[] = new DiffOpAdd( $add );
                        }
                }
                wfProfileOut( __METHOD__ );
+
                return $edits;
        }
 
@@ -373,28 +374,31 @@ class DiffEngine {
                for ( $chunk = 0; $chunk < $nchunks; $chunk++ ) {
                        if ( $chunk > 0 ) {
                                for ( $i = 0; $i <= $this->lcs; $i++ ) {
-                                       $ymids[$i][$chunk -1] = $this->seq[$i];
+                                       $ymids[$i][$chunk - 1] = $this->seq[$i];
                                }
                        }
 
-                       $x1 = $xoff + (int)( ( $numer + ( $xlim -$xoff ) * $chunk ) / $nchunks );
+                       $x1 = $xoff + (int)( ( $numer + ( $xlim - $xoff ) * $chunk ) / $nchunks );
                        for ( ; $x < $x1; $x++ ) {
                                $line = $flip ? $this->yv[$x] : $this->xv[$x];
                                if ( empty( $ymatches[$line] ) ) {
                                        continue;
                                }
+
+                               $k = 0;
                                $matches = $ymatches[$line];
                                reset( $matches );
                                while ( list( , $y ) = each( $matches ) ) {
                                        if ( empty( $this->in_seq[$y] ) ) {
                                                $k = $this->lcsPos( $y );
                                                assert( '$k > 0' );
-                                               $ymids[$k] = $ymids[$k -1];
+                                               $ymids[$k] = $ymids[$k - 1];
                                                break;
                                        }
                                }
+
                                while ( list( , $y ) = each( $matches ) ) {
-                                       if ( $y > $this->seq[$k -1] ) {
+                                       if ( $y > $this->seq[$k - 1] ) {
                                                assert( '$y < $this->seq[$k]' );
                                                // Optimization: this is a common case:
                                                //      next match is just replacing previous match.
@@ -404,7 +408,7 @@ class DiffEngine {
                                        } elseif ( empty( $this->in_seq[$y] ) ) {
                                                $k = $this->lcsPos( $y );
                                                assert( '$k > 0' );
-                                               $ymids[$k] = $ymids[$k -1];
+                                               $ymids[$k] = $ymids[$k - 1];
                                        }
                                }
                        }
@@ -431,6 +435,7 @@ class DiffEngine {
                if ( $end == 0 || $ypos > $this->seq[$end] ) {
                        $this->seq[++$this->lcs] = $ypos;
                        $this->in_seq[$ypos] = 1;
+
                        return $this->lcs;
                }
 
@@ -449,6 +454,7 @@ class DiffEngine {
                $this->in_seq[$this->seq[$end]] = false;
                $this->seq[$end] = $ypos;
                $this->in_seq[$ypos] = 1;
+
                return $end;
        }
 
@@ -477,7 +483,8 @@ class DiffEngine {
 
                // Slide up the top initial diagonal.
                while ( $xlim > $xoff && $ylim > $yoff
-               && $this->xv[$xlim - 1] == $this->yv[$ylim - 1] ) {
+                       && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]
+               ) {
                        --$xlim;
                        --$ylim;
                }
@@ -550,7 +557,7 @@ class DiffEngine {
                                $j++;
                        }
 
-                       while ( $i < $len && ! $changed[$i] ) {
+                       while ( $i < $len && !$changed[$i] ) {
                                assert( '$j < $other_len && ! $other_changed[$j]' );
                                $i++;
                                $j++;
@@ -659,13 +666,12 @@ class Diff {
         * Computes diff between sequences of strings.
         *
         * @param $from_lines array An array of strings.
-        *                (Typically these are lines from a file.)
+        *   Typically these are lines from a file.
         * @param $to_lines array An array of strings.
         */
        function __construct( $from_lines, $to_lines ) {
                $eng = new DiffEngine;
                $this->edits = $eng->diff( $from_lines, $to_lines );
-               // $this->check($from_lines, $to_lines);
        }
 
        /**
@@ -673,10 +679,10 @@ class Diff {
         *
         * SYNOPSIS:
         *
-        *      $diff = new Diff($lines1, $lines2);
-        *      $rev = $diff->reverse();
+        *    $diff = new Diff($lines1, $lines2);
+        *    $rev = $diff->reverse();
         * @return Object A Diff object representing the inverse of the
-        *                                original diff.
+        *   original diff.
         */
        function reverse() {
                $rev = $this;
@@ -685,6 +691,7 @@ class Diff {
                foreach ( $this->edits as $edit ) {
                        $rev->edits[] = $edit->reverse();
                }
+
                return $rev;
        }
 
@@ -699,6 +706,7 @@ class Diff {
                                return false;
                        }
                }
+
                return true;
        }
 
@@ -716,6 +724,7 @@ class Diff {
                                $lcs += count( $edit->orig );
                        }
                }
+
                return $lcs;
        }
 
@@ -735,6 +744,7 @@ class Diff {
                                array_splice( $lines, count( $lines ), 0, $edit->orig );
                        }
                }
+
                return $lines;
        }
 
@@ -754,44 +764,8 @@ class Diff {
                                array_splice( $lines, count( $lines ), 0, $edit->closing );
                        }
                }
-               return $lines;
-       }
-
-       /**
-        * Check a Diff for validity.
-        *
-        * This is here only for debugging purposes.
-        * @param $from_lines
-        * @param $to_lines
-        */
-       private function check( $from_lines, $to_lines ) {
-               wfProfileIn( __METHOD__ );
-               if ( serialize( $from_lines ) != serialize( $this->orig() ) ) {
-                       trigger_error( "Reconstructed original doesn't match", E_USER_ERROR );
-               }
-               if ( serialize( $to_lines ) != serialize( $this->closing() ) ) {
-                       trigger_error( "Reconstructed closing doesn't match", E_USER_ERROR );
-               }
-
-               $rev = $this->reverse();
-               if ( serialize( $to_lines ) != serialize( $rev->orig() ) ) {
-                       trigger_error( "Reversed original doesn't match", E_USER_ERROR );
-               }
-               if ( serialize( $from_lines ) != serialize( $rev->closing() ) ) {
-                       trigger_error( "Reversed closing doesn't match", E_USER_ERROR );
-               }
-
-               $prevtype = 'none';
-               foreach ( $this->edits as $edit ) {
-                       if ( $prevtype == $edit->type ) {
-                               trigger_error( 'Edit sequence is non-optimal', E_USER_ERROR );
-                       }
-                       $prevtype = $edit->type;
-               }
 
-               $lcs = $this->lcs();
-               trigger_error( 'Diff okay: LCS = ' . $lcs, E_USER_NOTICE );
-               wfProfileOut( __METHOD__ );
+               return $lines;
        }
 }
 
@@ -811,18 +785,18 @@ class MappedDiff extends Diff {
         * changes in white-space.
         *
         * @param $from_lines array An array of strings.
-        *      (Typically these are lines from a file.)
+        *   Typically these are lines from a file.
         *
         * @param $to_lines array An array of strings.
         *
         * @param $mapped_from_lines array This array should
-        *      have the same size number of elements as $from_lines.
-        *      The elements in $mapped_from_lines and
-        *      $mapped_to_lines are what is actually compared
-        *      when computing the diff.
+        *   have the same size number of elements as $from_lines.
+        *   The elements in $mapped_from_lines and
+        *   $mapped_to_lines are what is actually compared
+        *   when computing the diff.
         *
         * @param $mapped_to_lines array This array should
-        *      have the same number of elements as $to_lines.
+        *   have the same number of elements as $to_lines.
         */
        function __construct( $from_lines, $to_lines,
                $mapped_from_lines, $mapped_to_lines ) {
@@ -834,7 +808,8 @@ class MappedDiff extends Diff {
                parent::__construct( $mapped_from_lines, $mapped_to_lines );
 
                $xi = $yi = 0;
-               for ( $i = 0; $i < count( $this->edits ); $i++ ) {
+               $editCount = count( $this->edits );
+               for ( $i = 0; $i < $editCount; $i++ ) {
                        $orig = &$this->edits[$i]->orig;
                        if ( is_array( $orig ) ) {
                                $orig = array_slice( $from_lines, $xi, count( $orig ) );
@@ -860,7 +835,7 @@ class MappedDiff extends Diff {
  * @private
  * @ingroup DifferenceEngine
  */
-class HWLDF_WordAccumulator {
+class HWLDFWordAccumulator {
        private $lines = array();
        private $line = '';
        private $group = '';
@@ -873,10 +848,10 @@ class HWLDF_WordAccumulator {
                if ( $this->group !== '' ) {
                        if ( $this->tag == 'ins' ) {
                                $this->line .= '<ins class="diffchange diffchange-inline">' .
-                                               htmlspecialchars( $this->group ) . '</ins>';
+                                       htmlspecialchars( $this->group ) . '</ins>';
                        } elseif ( $this->tag == 'del' ) {
                                $this->line .= '<del class="diffchange diffchange-inline">' .
-                                               htmlspecialchars( $this->group ) . '</del>';
+                                       htmlspecialchars( $this->group ) . '</del>';
                        } else {
                                $this->line .= htmlspecialchars( $this->group );
                        }
@@ -927,6 +902,7 @@ class HWLDF_WordAccumulator {
         */
        public function getLines() {
                $this->flushLine( '~done' );
+
                return $this->lines;
        }
 }
@@ -950,7 +926,7 @@ class WordLevelDiff extends MappedDiff {
                list( $closing_words, $closing_stripped ) = $this->split( $closing_lines );
 
                parent::__construct( $orig_words, $closing_words,
-               $orig_stripped, $closing_stripped );
+                       $orig_stripped, $closing_stripped );
                wfProfileOut( __METHOD__ );
        }
 
@@ -979,8 +955,8 @@ class WordLevelDiff extends MappedDiff {
                        } else {
                                $m = array();
                                if ( preg_match_all( '/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
-                                       $line, $m ) )
-                               {
+                                       $line, $m )
+                               {
                                        foreach ( $m[0] as $word ) {
                                                $words[] = $word;
                                        }
@@ -991,6 +967,7 @@ class WordLevelDiff extends MappedDiff {
                        }
                }
                wfProfileOut( __METHOD__ );
+
                return array( $words, $stripped );
        }
 
@@ -999,7 +976,7 @@ class WordLevelDiff extends MappedDiff {
         */
        public function orig() {
                wfProfileIn( __METHOD__ );
-               $orig = new HWLDF_WordAccumulator;
+               $orig = new HWLDFWordAccumulator;
 
                foreach ( $this->edits as $edit ) {
                        if ( $edit->type == 'copy' ) {
@@ -1010,6 +987,7 @@ class WordLevelDiff extends MappedDiff {
                }
                $lines = $orig->getLines();
                wfProfileOut( __METHOD__ );
+
                return $lines;
        }
 
@@ -1018,7 +996,7 @@ class WordLevelDiff extends MappedDiff {
         */
        public function closing() {
                wfProfileIn( __METHOD__ );
-               $closing = new HWLDF_WordAccumulator;
+               $closing = new HWLDFWordAccumulator;
 
                foreach ( $this->edits as $edit ) {
                        if ( $edit->type == 'copy' ) {
@@ -1029,6 +1007,7 @@ class WordLevelDiff extends MappedDiff {
                }
                $lines = $closing->getLines();
                wfProfileOut( __METHOD__ );
+
                return $lines;
        }
 }
index 78ac77f..d9e1c95 100644 (file)
  * @ingroup DifferenceEngine
  */
 abstract class DiffFormatter {
-       /**
-        * Number of leading context "lines" to preserve.
+       /** @var int Number of leading context "lines" to preserve.
         *
         * This should be left at zero for this class, but subclasses
         * may want to set this to other values.
         */
        protected $leadingContextLines = 0;
 
-       /**
-        * Number of trailing context "lines" to preserve.
+       /** @var int Number of trailing context "lines" to preserve.
         *
         * This should be left at zero for this class, but subclasses
         * may want to set this to other values.
@@ -68,6 +66,8 @@ abstract class DiffFormatter {
 
                $this->startDiff();
 
+               // Initialize $x0 and $y0 to prevent IDEs from getting confused.
+               $x0 = $y0 = 0;
                foreach ( $diff->edits as $edit ) {
                        if ( $edit->type == 'copy' ) {
                                if ( is_array( $block ) ) {
@@ -76,7 +76,7 @@ abstract class DiffFormatter {
                                        } else {
                                                if ( $ntrail ) {
                                                        $context = array_slice( $edit->orig, 0, $ntrail );
-                                                       $block[] = new DiffOp_Copy( $context );
+                                                       $block[] = new DiffOpCopy( $context );
                                                }
                                                $this->block( $x0, $ntrail + $xi - $x0,
                                                        $y0, $ntrail + $yi - $y0,
@@ -92,7 +92,7 @@ abstract class DiffFormatter {
                                        $y0 = $yi - count( $context );
                                        $block = array();
                                        if ( $context ) {
-                                               $block[] = new DiffOp_Copy( $context );
+                                               $block[] = new DiffOpCopy( $context );
                                        }
                                }
                                $block[] = $edit;
@@ -114,15 +114,17 @@ abstract class DiffFormatter {
 
                $end = $this->endDiff();
                wfProfileOut( __METHOD__ );
+
                return $end;
        }
 
        /**
-        * @param $xbeg
-        * @param $xlen
-        * @param $ybeg
-        * @param $ylen
+        * @param int $xbeg
+        * @param int $xlen
+        * @param int $ybeg
+        * @param int $ylen
         * @param $edits
+        * @throws MWException
         */
        protected function block( $xbeg, $xlen, $ybeg, $ylen, &$edits ) {
                wfProfileIn( __METHOD__ );
@@ -154,6 +156,7 @@ abstract class DiffFormatter {
        protected function endDiff() {
                $val = ob_get_contents();
                ob_end_clean();
+
                return $val;
        }
 
index cf78ce0..6e74f2c 100644 (file)
@@ -34,33 +34,47 @@ define( 'MW_DIFF_VERSION', '1.11a' );
  * @ingroup DifferenceEngine
  */
 class DifferenceEngine extends ContextSource {
+       /** @var int */
        public $mOldid;
+
+       /** @var int */
        public $mNewid;
+
        private $mOldTags;
        private $mNewTags;
 
-       /**
-        * @var Content
-        */
+       /** @var Content */
        public $mOldContent;
+
+       /** @var Content */
        public $mNewContent;
+
+       /** @var Language */
        protected $mDiffLang;
 
-       /**
-        * @var Title
-        */
+       /** @var  Title */
        public $mOldPage;
+
+       /** @var  Title */
        public $mNewPage;
 
-       /**
-        * @var Revision
-        */
+       /** @var Revision */
        public $mOldRev;
+
+       /** @var  Revision */
        public $mNewRev;
-       private $mRevisionsIdsLoaded = false; // Have the revisions IDs been loaded
-       public $mRevisionsLoaded = false; // Have the revisions been loaded
-       public $mTextLoaded = 0; // How many text blobs have been loaded, 0, 1 or 2?
-       public $mCacheHit = false; // Was the diff fetched from cache?
+
+       /** @var bool Have the revisions IDs been loaded */
+       private $mRevisionsIdsLoaded = false;
+
+       /** @var bool Have the revisions been loaded */
+       public $mRevisionsLoaded = false;
+
+       /** @var int How many text blobs have been loaded, 0, 1 or 2? */
+       public $mTextLoaded = 0;
+
+       /** @var bool Was the diff fetched from cache? */
+       public $mCacheHit = false;
 
        /**
         * Set this to true to add debug info to the HTML output.
@@ -69,14 +83,16 @@ class DifferenceEngine extends ContextSource {
         */
        public $enableDebugComment = false;
 
-       // If true, line X is not displayed when X is 1, for example to increase
-       // readability and conserve space with many small diffs.
+       /** @var bool  If true, line X is not displayed when X is 1, for example
+        *    to increase readability and conserve space with many small diffs.
+        */
        protected $mReducedLineNumbers = false;
 
-       // Link to action=markpatrolled
+       /** @var string Link to action=markpatrolled  */
        protected $mMarkPatrolledLink = null;
 
-       protected $unhide = false; # show rev_deleted content if allowed
+       /** @var bool Show rev_deleted content if allowed */
+       protected $unhide = false;
        /**#@-*/
 
        /**
@@ -118,6 +134,7 @@ class DifferenceEngine extends ContextSource {
                        # Default language in which the diff text is written.
                        $this->mDiffLang = $this->getTitle()->getPageLanguage();
                }
+
                return $this->mDiffLang;
        }
 
@@ -133,6 +150,7 @@ class DifferenceEngine extends ContextSource {
         */
        function getOldid() {
                $this->loadRevisionIds();
+
                return $this->mOldid;
        }
 
@@ -141,6 +159,7 @@ class DifferenceEngine extends ContextSource {
         */
        function getNewid() {
                $this->loadRevisionIds();
+
                return $this->mNewid;
        }
 
@@ -160,12 +179,14 @@ class DifferenceEngine extends ContextSource {
                        if ( $row ) {
                                $rev = Revision::newFromArchiveRow( $row );
                                $title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
+
                                return SpecialPage::getTitleFor( 'Undelete' )->getFullURL( array(
                                        'target' => $title->getPrefixedText(),
                                        'timestamp' => $rev->getTimestamp()
-                               ));
+                               ) );
                        }
                }
+
                return false;
        }
 
@@ -215,6 +236,7 @@ class DifferenceEngine extends ContextSource {
                if ( !$this->loadRevisionData() ) {
                        $this->showMissingRevision();
                        wfProfileOut( __METHOD__ );
+
                        return;
                }
 
@@ -283,7 +305,8 @@ class DifferenceEngine extends ContextSource {
                                                        'href' => $this->mNewPage->getLocalURL( array(
                                                                'action' => 'edit',
                                                                'undoafter' => $this->mOldid,
-                                                               'undo' => $this->mNewid ) ),
+                                                               'undo' => $this->mNewid
+                                                       ) ),
                                                        'title' => Linker::titleAttrib( 'undo' )
                                                ),
                                                $this->msg( 'editundo' )->text()
@@ -316,9 +339,9 @@ class DifferenceEngine extends ContextSource {
 
                        $oldHeader = '<div id="mw-diff-otitle1"><strong>' . $oldRevisionHeader . '</strong></div>' .
                                '<div id="mw-diff-otitle2">' .
-                                       Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '</div>' .
+                               Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '</div>' .
                                '<div id="mw-diff-otitle3">' . $oldminor .
-                                       Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '</div>' .
+                               Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '</div>' .
                                '<div id="mw-diff-otitle5">' . $oldChangeTags[0] . '</div>' .
                                '<div id="mw-diff-otitle4">' . $prevlink . '</div>';
 
@@ -370,9 +393,9 @@ class DifferenceEngine extends ContextSource {
 
                $newHeader = '<div id="mw-diff-ntitle1"><strong>' . $newRevisionHeader . '</strong></div>' .
                        '<div id="mw-diff-ntitle2">' . Linker::revUserTools( $this->mNewRev, !$this->unhide ) .
-                               " $rollback</div>" .
+                       " $rollback</div>" .
                        '<div id="mw-diff-ntitle3">' . $newminor .
-                               Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '</div>' .
+                       Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '</div>' .
                        '<div id="mw-diff-ntitle5">' . $newChangeTags[0] . '</div>' .
                        '<div id="mw-diff-ntitle4">' . $nextlink . $this->markPatrolledLink() . '</div>';
 
@@ -503,6 +526,7 @@ class DifferenceEngine extends ContextSource {
                if ( $link !== '' ) {
                        $link = '&#160;&#160;&#160;' . $link . ' ';
                }
+
                return $link;
        }
 
@@ -589,6 +613,7 @@ class DifferenceEngine extends ContextSource {
                }
 
                $parserOutput = $page->getParserOutput( $parserOptions, $rev->getId() );
+
                return $parserOutput;
        }
 
@@ -606,10 +631,12 @@ class DifferenceEngine extends ContextSource {
                $diff = $this->getDiff( $otitle, $ntitle, $notice );
                if ( $diff === false ) {
                        $this->showMissingRevision();
+
                        return false;
                } else {
                        $this->showDiffStyle();
                        $this->getOutput()->addHTML( $diff );
+
                        return true;
                }
        }
@@ -658,23 +685,27 @@ class DifferenceEngine extends ContextSource {
                // Check if the diff should be hidden from this user
                if ( !$this->loadRevisionData() ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                } elseif ( $this->mOldRev &&
                        !$this->mOldRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
                ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                } elseif ( $this->mNewRev &&
                        !$this->mNewRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
                ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
                // Short-circuit
                if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev
-                       && $this->mOldRev->getID() == $this->mNewRev->getID() ) )
-               {
+                       && $this->mOldRev->getID() == $this->mNewRev->getID() )
+               {
                        wfProfileOut( __METHOD__ );
+
                        return '';
                }
                // Cacheable?
@@ -690,6 +721,7 @@ class DifferenceEngine extends ContextSource {
                                        $difftext = $this->localiseLineNumbers( $difftext );
                                        $difftext .= "\n<!-- diff cache key $key -->\n";
                                        wfProfileOut( __METHOD__ );
+
                                        return $difftext;
                                }
                        } // don't try to load but save the result
@@ -699,6 +731,7 @@ class DifferenceEngine extends ContextSource {
                // Loadtext is permission safe, this just clears out the diff
                if ( !$this->loadText() ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
 
@@ -718,6 +751,7 @@ class DifferenceEngine extends ContextSource {
                        $difftext = $this->localiseLineNumbers( $difftext );
                }
                wfProfileOut( __METHOD__ );
+
                return $difftext;
        }
 
@@ -757,8 +791,8 @@ class DifferenceEngine extends ContextSource {
         */
        function generateContentDiffBody( Content $old, Content $new ) {
                if ( !( $old instanceof TextContent ) ) {
-                       throw new MWException( "Diff not implemented for " . get_class( $old ) . "; "
-                                       . "override generateContentDiffBody to fix this." );
+                       throw new MWException( "Diff not implemented for " . get_class( $old ) . "; " .
+                               "override generateContentDiffBody to fix this." );
                }
 
                if ( !( $new instanceof TextContent ) ) {
@@ -806,9 +840,10 @@ class DifferenceEngine extends ContextSource {
                if ( $wgExternalDiffEngine == 'wikidiff' && function_exists( 'wikidiff_do_diff' ) ) {
                        # For historical reasons, external diff engine expects
                        # input text to be HTML-escaped already
-                       $otext = htmlspecialchars ( $wgContLang->segmentForDiff( $otext ) );
-                       $ntext = htmlspecialchars ( $wgContLang->segmentForDiff( $ntext ) );
+                       $otext = htmlspecialchars( $wgContLang->segmentForDiff( $otext ) );
+                       $ntext = htmlspecialchars( $wgContLang->segmentForDiff( $ntext ) );
                        wfProfileOut( __METHOD__ );
+
                        return $wgContLang->unsegmentForDiff( wikidiff_do_diff( $otext, $ntext, 2 ) ) .
                        $this->debug( 'wikidiff1' );
                }
@@ -821,6 +856,7 @@ class DifferenceEngine extends ContextSource {
                        $text .= $this->debug( 'wikidiff2' );
                        wfProfileOut( 'wikidiff2_do_diff' );
                        wfProfileOut( __METHOD__ );
+
                        return $text;
                }
                if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
@@ -832,11 +868,13 @@ class DifferenceEngine extends ContextSource {
                        $tempFile1 = fopen( $tempName1, "w" );
                        if ( !$tempFile1 ) {
                                wfProfileOut( __METHOD__ );
+
                                return false;
                        }
                        $tempFile2 = fopen( $tempName2, "w" );
                        if ( !$tempFile2 ) {
                                wfProfileOut( __METHOD__ );
+
                                return false;
                        }
                        fwrite( $tempFile1, $otext );
@@ -851,6 +889,7 @@ class DifferenceEngine extends ContextSource {
                        unlink( $tempName1 );
                        unlink( $tempName2 );
                        wfProfileOut( __METHOD__ );
+
                        return $difftext;
                }
 
@@ -860,7 +899,8 @@ class DifferenceEngine extends ContextSource {
                $diffs = new Diff( $ota, $nta );
                $formatter = new TableDiffFormatter();
                $difftext = $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) .
-               wfProfileOut( __METHOD__ );
+                       wfProfileOut( __METHOD__ );
+
                return $difftext;
        }
 
@@ -868,7 +908,7 @@ class DifferenceEngine extends ContextSource {
         * Generate a debug comment indicating diff generating time,
         * server node, and generator backend.
         *
-        * @param String $generator: What diff engine was used
+        * @param String $generator : What diff engine was used
         *
         * @return string
         */
@@ -882,13 +922,10 @@ class DifferenceEngine extends ContextSource {
                        $data[] = wfHostname();
                }
                $data[] = wfTimestamp( TS_DB );
-               return "<!-- diff generator: "
-                       . implode( " ",
-                               array_map(
-                                       "htmlspecialchars",
-                               $data )
-                       )
-                       . " -->\n";
+
+               return "<!-- diff generator: " .
+                       implode( " ", array_map( "htmlspecialchars", $data ) ) .
+                       " -->\n";
        }
 
        /**
@@ -899,14 +936,18 @@ class DifferenceEngine extends ContextSource {
         * @return mixed
         */
        function localiseLineNumbers( $text ) {
-               return preg_replace_callback( '/<!--LINE (\d+)-->/',
-               array( &$this, 'localiseLineNumbersCb' ), $text );
+               return preg_replace_callback(
+                       '/<!--LINE (\d+)-->/',
+                       array( &$this, 'localiseLineNumbersCb' ),
+                       $text
+               );
        }
 
        function localiseLineNumbersCb( $matches ) {
                if ( $matches[1] === '1' && $this->mReducedLineNumbers ) {
                        return '';
                }
+
                return $this->msg( 'lineno' )->numParams( $matches[1] )->escaped();
        }
 
@@ -934,8 +975,10 @@ class DifferenceEngine extends ContextSource {
                if ( $nEdits > 0 ) {
                        $limit = 100; // use diff-multi-manyusers if too many users
                        $numUsers = $this->mNewPage->countAuthorsBetween( $oldRev, $newRev, $limit );
+
                        return self::intermediateEditsMsg( $nEdits, $numUsers, $limit );
                }
+
                return ''; // nothing
        }
 
@@ -953,6 +996,7 @@ class DifferenceEngine extends ContextSource {
                } else {
                        $msg = 'diff-multi';
                }
+
                return wfMessage( $msg )->numParams( $numEdits, $numUsers )->parse();
        }
 
@@ -1015,11 +1059,12 @@ class DifferenceEngine extends ContextSource {
        /**
         * Add the header to a diff body
         *
-        * @param String $diff: Diff body
-        * @param String $otitle: Old revision header
-        * @param String $ntitle: New revision header
-        * @param String $multi: Notice telling user that there are intermediate revisions between the ones being compared
-        * @param String $notice: Other notices, e.g. that user is viewing deleted content
+        * @param string $diff Diff body
+        * @param string $otitle Old revision header
+        * @param string $ntitle New revision header
+        * @param string $multi Notice telling user that there are intermediate
+        *   revisions between the ones being compared
+        * @param string $notice Other notices, e.g. that user is viewing deleted content
         *
         * @return string
         */
@@ -1149,7 +1194,10 @@ class DifferenceEngine extends ContextSource {
                        $this->mNewid = 0;
                }
 
-               wfRunHooks( 'NewDifferenceEngine', array( $this->getTitle(), &$this->mOldid, &$this->mNewid, $old, $new ) );
+               wfRunHooks(
+                       'NewDifferenceEngine',
+                       array( $this->getTitle(), &$this->mOldid, &$this->mNewid, $old, $new )
+               );
        }
 
        /**
index 0ce17df..5f28627 100644 (file)
@@ -45,6 +45,7 @@ class TableDiffFormatter extends DiffFormatter {
                $msg = preg_replace( '/^ /m', '&#160; ', $msg );
                $msg = preg_replace( '/ $/m', ' &#160;', $msg );
                $msg = preg_replace( '/  /', '&#160; ', $msg );
+
                return $msg;
        }
 
@@ -58,6 +59,7 @@ class TableDiffFormatter extends DiffFormatter {
        protected function blockHeader( $xbeg, $xlen, $ybeg, $ylen ) {
                $r = '<tr><td colspan="2" class="diff-lineno"><!--LINE ' . $xbeg . "--></td>\n" .
                        '<td colspan="2" class="diff-lineno"><!--LINE ' . $ybeg . "--></td></tr>\n";
+
                return $r;
        }
 
@@ -112,6 +114,7 @@ class TableDiffFormatter extends DiffFormatter {
                        // The <div> wrapper is needed for 'overflow: auto' style to scroll properly
                        $line = Xml::tags( 'div', null, $this->escapeWhiteSpace( $line ) );
                }
+
                return "<td class='diff-marker'>$marker</td><td class='$class'>$line</td>";
        }
 
@@ -174,7 +177,7 @@ class TableDiffFormatter extends DiffFormatter {
                        echo '<tr>' . $this->deletedLine( $line ) .
                                $this->addedLine( $aline ) . "</tr>\n";
                }
-               foreach ( $add as $line ) {     # If any leftovers
+               foreach ( $add as $line ) { # If any leftovers
                        echo '<tr>' . $this->emptyLine() .
                                $this->addedLine( $line ) . "</tr>\n";
                }
index d489538..0a86ccc 100644 (file)
  * @ingroup DifferenceEngine
  */
 class UnifiedDiffFormatter extends DiffFormatter {
+       /** @var int */
        protected $leadingContextLines = 2;
+
+       /** @var int */
        protected $trailingContextLines = 2;
 
        /**
index ea6f6e5..7c019b0 100644 (file)
@@ -138,8 +138,9 @@ class WikiDiff3 {
                         */
                        $max = min( $this->m, $this->n );
                        for ( $forwardBound = 0; $forwardBound < $max
-                                       && $this->from[$forwardBound] === $this->to[$forwardBound];
-                                       ++$forwardBound ) {
+                               && $this->from[$forwardBound] === $this->to[$forwardBound];
+                               ++$forwardBound
+                       ) {
                                $this->removed[$forwardBound] = $this->added[$forwardBound] = false;
                        }
 
@@ -147,7 +148,8 @@ class WikiDiff3 {
                        $backBoundL2 = $this->n - 1;
 
                        while ( $backBoundL1 >= $forwardBound && $backBoundL2 >= $forwardBound
-                                       && $this->from[$backBoundL1] === $this->to[$backBoundL2] ) {
+                               && $this->from[$backBoundL1] === $this->to[$backBoundL2]
+                       ) {
                                $this->removed[$backBoundL1--] = $this->added[$backBoundL2--] = false;
                        }
 
@@ -156,8 +158,14 @@ class WikiDiff3 {
                        $snake = array( 0, 0, 0 );
 
                        $this->length = $forwardBound + $this->m - $backBoundL1 - 1
-                               + $this->lcs_rec( $forwardBound, $backBoundL1,
-                               $forwardBound, $backBoundL2, $V, $snake );
+                               + $this->lcs_rec(
+                                       $forwardBound,
+                                       $backBoundL1,
+                                       $forwardBound,
+                                       $backBoundL2,
+                                       $V,
+                                       $snake
+                       );
                }
 
                $this->m = $m;
@@ -189,8 +197,9 @@ class WikiDiff3 {
                while ( $xi < $this->m || $yi < $this->n ) {
                        // Matching "snake".
                        while ( $xi < $this->m && $yi < $this->n
-                                       && !$this->removed[$xi]
-                                       && !$this->added[$yi] ) {
+                               && !$this->removed[$xi]
+                               && !$this->added[$yi]
+                       ) {
                                ++$xi;
                                ++$yi;
                        }
@@ -206,10 +215,10 @@ class WikiDiff3 {
                        }
 
                        if ( $xi > $xstart || $yi > $ystart ) {
-                               $ranges[] = new RangeDifference( $xstart, $xi,
-                                                               $ystart, $yi );
+                               $ranges[] = new RangeDifference( $xstart, $xi, $ystart, $yi );
                        }
                }
+
                return $ranges;
        }
 
@@ -220,7 +229,7 @@ class WikiDiff3 {
                }
 
                $d = $this->find_middle_snake( $bottoml1, $topl1, $bottoml2,
-                                                       $topl2, $V, $snake );
+                       $topl2, $V, $snake );
 
                // need to store these so we don't lose them when they're
                // overwritten by the recursion
@@ -236,9 +245,9 @@ class WikiDiff3 {
                if ( $d > 1 ) {
                        return $len
                        + $this->lcs_rec( $bottoml1, $startx - 1, $bottoml2,
-                                                       $starty - 1, $V, $snake )
+                               $starty - 1, $V, $snake )
                        + $this->lcs_rec( $startx + $len, $topl1, $starty + $len,
-                                                       $topl2, $V, $snake );
+                               $topl2, $V, $snake );
                } elseif ( $d == 1 ) {
                        /*
                         * In this case the sequences differ by exactly 1 line. We have
@@ -250,8 +259,10 @@ class WikiDiff3 {
                                $this->removed[$bottoml1 + $i] =
                                        $this->added[$bottoml2 + $i] = false;
                        }
+
                        return $max + $len;
                }
+
                return $len;
        }
 
@@ -263,8 +274,8 @@ class WikiDiff3 {
                $snake0 = &$snake[0];
                $snake1 = &$snake[1];
                $snake2 = &$snake[2];
-               $bottoml1_min_1 = $bottoml1 -1;
-               $bottoml2_min_1 = $bottoml2 -1;
+               $bottoml1_min_1 = $bottoml1 - 1;
+               $bottoml2_min_1 = $bottoml2 - 1;
                $N = $topl1 - $bottoml1_min_1;
                $M = $topl2 - $bottoml2_min_1;
                $delta = $N - $M;
@@ -307,7 +318,8 @@ class WikiDiff3 {
                                // compute forward furthest reaching paths
                                for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
                                        if ( $k == -$d || ( $k < $d
-                                                       && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] ) ) {
+                                                       && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] )
+                                       ) {
                                                $x = $V0[$limit_plus_1 + $k];
                                        } else {
                                                $x = $V0[$limit_min_1 + $k] + 1;
@@ -320,12 +332,13 @@ class WikiDiff3 {
                                                ++$absx;
                                                ++$absy;
                                        }
-                                       $x = $absx -$bottoml1;
+                                       $x = $absx - $bottoml1;
 
-                                       $snake2 = $absx -$snake0;
+                                       $snake2 = $absx - $snake0;
                                        $V0[$limit + $k] = $x;
                                        if ( $k >= $delta - $d + 1 && $k <= $delta + $d - 1
-                                                       && $x >= $V1[$limit + $k - $delta] ) {
+                                               && $x >= $V1[$limit + $k - $delta]
+                                       ) {
                                                return 2 * $d - 1;
                                        }
 
@@ -345,7 +358,8 @@ class WikiDiff3 {
                                // compute backward furthest reaching paths
                                for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
                                        if ( $k == $d
-                                       || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] ) ) {
+                                               || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] )
+                                       ) {
                                                $x = $V1[$limit_min_1 + $k];
                                        } else {
                                                $x = $V1[$limit_plus_1 + $k] - 1;
@@ -355,7 +369,8 @@ class WikiDiff3 {
 
                                        $snake2 = 0;
                                        while ( $x > 0 && $y > 0
-                                       && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1] ) {
+                                               && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1]
+                                       ) {
                                                --$x;
                                                --$y;
                                                ++$snake2;
@@ -380,7 +395,8 @@ class WikiDiff3 {
                                // compute forward furthest reaching paths
                                for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
                                        if ( $k == -$d
-                                       || ( $k < $d && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] ) ) {
+                                               || ( $k < $d && $V0[$limit_min_1 + $k] < $V0[$limit_plus_1 + $k] )
+                                       ) {
                                                $x = $V0[$limit_plus_1 + $k];
                                        } else {
                                                $x = $V0[$limit_min_1 + $k] + 1;
@@ -393,14 +409,14 @@ class WikiDiff3 {
                                                ++$absx;
                                                ++$absy;
                                        }
-                                       $x = $absx -$bottoml1;
-                                       $snake2 = $absx -$snake0;
+                                       $x = $absx - $bottoml1;
+                                       $snake2 = $absx - $snake0;
                                        $V0[$limit + $k] = $x;
 
                                        // check to see if we can cut down the diagonal range
                                        if ( $x >= $N && $end_forward > $k - 1 ) {
                                                $end_forward = $k - 1;
-                                       } elseif ( $absy -$bottoml2 >= $M ) {
+                                       } elseif ( $absy - $bottoml2 >= $M ) {
                                                $start_forward = $k + 1;
                                                $value_to_add_forward = 0;
                                        }
@@ -413,7 +429,8 @@ class WikiDiff3 {
                                // compute backward furthest reaching paths
                                for ( $k = $start_diag; $k <= $end_diag; $k += 2 ) {
                                        if ( $k == $d
-                                       || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] ) ) {
+                                               || ( $k != -$d && $V1[$limit_min_1 + $k] < $V1[$limit_plus_1 + $k] )
+                                       ) {
                                                $x = $V1[$limit_min_1 + $k];
                                        } else {
                                                $x = $V1[$limit_plus_1 + $k] - 1;
@@ -423,7 +440,8 @@ class WikiDiff3 {
 
                                        $snake2 = 0;
                                        while ( $x > 0 && $y > 0
-                                                       && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1] ) {
+                                               && $from[$x + $bottoml1_min_1] === $to[$y + $bottoml2_min_1]
+                                       ) {
                                                --$x;
                                                --$y;
                                                ++$snake2;
@@ -431,9 +449,11 @@ class WikiDiff3 {
                                        $V1[$limit + $k] = $x;
 
                                        if ( $k >= -$delta - $d && $k <= $d - $delta
-                                                       && $x <= $V0[$limit + $k + $delta] ) {
+                                               && $x <= $V0[$limit + $k + $delta]
+                                       ) {
                                                $snake0 = $bottoml1 + $x;
                                                $snake1 = $bottoml2 + $y;
+
                                                return 2 * $d;
                                        }
 
@@ -460,6 +480,7 @@ class WikiDiff3 {
                $snake2 = 0;
                wfDebug( "Computing the LCS is too expensive. Using a heuristic.\n" );
                $this->heuristicUsed = true;
+
                return 5; /*
                * HACK: since we didn't really finish the LCS computation
                * we don't really know the length of the SES. We don't do
@@ -554,11 +575,11 @@ class WikiDiff3 {
        public function getLcsLength() {
                if ( $this->heuristicUsed && !$this->lcsLengthCorrectedForHeuristic ) {
                        $this->lcsLengthCorrectedForHeuristic = true;
-                       $this->length = $this->m -array_sum( $this->added );
+                       $this->length = $this->m - array_sum( $this->added );
                }
+
                return $this->length;
        }
-
 }
 
 /**
@@ -568,13 +589,22 @@ class WikiDiff3 {
  * @ingroup DifferenceEngine
  */
 class RangeDifference {
-
+       /** @var int */
        public $leftstart;
+
+       /** @var int */
        public $leftend;
+
+       /** @var int */
        public $leftlength;
 
+       /** @var int */
        public $rightstart;
+
+       /** @var int */
        public $rightend;
+
+       /** @var int */
        public $rightlength;
 
        function __construct( $leftstart, $leftend, $rightstart, $rightend ) {
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 02bdcb5..a526df6 100644 (file)
@@ -61,9 +61,10 @@ abstract class ExternalStoreMedium {
                        // Dont return when false to allow for simpler implementations.
                        // errored urls are handled in ExternalStore::batchFetchFromURLs
                        if ( $data !== false ) {
-                               $retval[$urls] = $data;
+                               $retval[$url] = $data;
                        }
                }
+
                return $retval;
        }
 
index aa48679..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;
        }
 
@@ -63,9 +64,10 @@ class ExternalStoreMwstore extends ExternalStoreMedium {
                }
                $blobs = array();
                foreach ( $pathsByBackend as $backendName => $paths ) {
-                       $be = FileBackendGroup::get( $backendName );
+                       $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 8f0a133..3a0aa97 100644 (file)
  * @ingroup FileBackend
  */
 class FSFile {
-       protected $path; // path to file
-       protected $sha1Base36; // file SHA-1 in base 36
+       /** @var string Path to file */
+       protected $path;
+
+       /** @var string File SHA-1 in base 36  */
+       protected $sha1Base36;
 
        /**
         * Sets up the file object
@@ -82,6 +85,7 @@ class FSFile {
                if ( $timestamp !== false ) {
                        $timestamp = wfTimestamp( TS_MW, $timestamp );
                }
+
                return $timestamp;
        }
 
@@ -98,7 +102,7 @@ class FSFile {
         * Get an associative array containing information about
         * a file with the given storage path.
         *
-        * @param Mixed $ext: the file extension, or true to extract it from the filename.
+        * @param mixed $ext The file extension, or true to extract it from the filename.
         *             Set it to false to ignore the extension.
         *
         * @return array
@@ -147,13 +151,14 @@ class FSFile {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $info;
        }
 
        /**
         * Placeholder file properties to use for files that don't exist
         *
-        * @return Array
+        * @return array
         */
        public static function placeholderProps() {
                $info = array();
@@ -165,6 +170,7 @@ class FSFile {
                $info['width'] = 0;
                $info['height'] = 0;
                $info['bits'] = 0;
+
                return $info;
        }
 
@@ -172,7 +178,7 @@ class FSFile {
         * Exract image size information
         *
         * @param array $gis
-        * @return Array
+        * @return array
         */
        protected function extractImageSizeInfo( array $gis ) {
                $info = array();
@@ -184,6 +190,7 @@ class FSFile {
                } else {
                        $info['bits'] = 0;
                }
+
                return $info;
        }
 
@@ -202,6 +209,7 @@ class FSFile {
 
                if ( $this->sha1Base36 !== null && !$recache ) {
                        wfProfileOut( __METHOD__ );
+
                        return $this->sha1Base36;
                }
 
@@ -214,6 +222,7 @@ class FSFile {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $this->sha1Base36;
        }
 
@@ -225,6 +234,7 @@ class FSFile {
         */
        public static function extensionFromPath( $path ) {
                $i = strrpos( $path, '.' );
+
                return strtolower( $i ? substr( $path, $i + 1 ) : '' );
        }
 
@@ -232,12 +242,13 @@ class FSFile {
         * Get an associative array containing information about a file in the local filesystem.
         *
         * @param string $path absolute local filesystem path
-        * @param Mixed $ext: the file extension, or true to extract it from the filename.
-        *             Set it to false to ignore the extension.
+        * @param mixed $ext The file extension, or true to extract it from the filename.
+        *   Set it to false to ignore the extension.
         * @return array
         */
        public static function getPropsFromPath( $path, $ext = true ) {
                $fsFile = new self( $path );
+
                return $fsFile->getProps( $ext );
        }
 
@@ -253,6 +264,7 @@ class FSFile {
         */
        public static function getSha1Base36FromPath( $path ) {
                $fsFile = new self( $path );
+
                return $fsFile->getSha1Base36();
        }
 }
index 6d64216..8438919 100644 (file)
  * @since 1.19
  */
 class FSFileBackend extends FileBackendStore {
-       protected $basePath; // string; directory holding the container directories
-       /** @var Array Map of container names to root paths */
-       protected $containerPaths = array(); // for custom container paths
-       protected $fileMode; // integer; file permission mode
-       protected $fileOwner; // string; required OS username to own files
-       protected $currentUser; // string; OS username running this script
-
-       /** @var Array */
+       /** @var string Directory holding the container directories */
+       protected $basePath;
+
+       /** @var array Map of container names to root paths for custom container paths */
+       protected $containerPaths = array();
+
+       /** @var int File permission mode */
+       protected $fileMode;
+
+       /** @var string Required OS username to own files */
+       protected $fileOwner;
+
+       /** @var string OS username running this script */
+       protected $currentUser;
+
+       /** @var array */
        protected $hadWarningErrors = array();
 
        /**
@@ -90,6 +98,7 @@ class FSFileBackend extends FileBackendStore {
                                return $relStoragePath;
                        }
                }
+
                return null;
        }
 
@@ -125,6 +134,7 @@ class FSFileBackend extends FileBackendStore {
                } elseif ( isset( $this->basePath ) ) {
                        return "{$this->basePath}/{$fullCont}";
                }
+
                return null; // no container base path defined
        }
 
@@ -144,6 +154,7 @@ class FSFileBackend extends FileBackendStore {
                if ( $relPath != '' ) {
                        $fsPath .= "/{$relPath}";
                }
+
                return $fsPath;
        }
 
@@ -174,6 +185,7 @@ class FSFileBackend extends FileBackendStore {
                $dest = $this->resolveToFSPath( $params['dst'] );
                if ( $dest === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -181,6 +193,7 @@ class FSFileBackend extends FileBackendStore {
                        $tempFile = TempFSFile::factory( 'create_', 'tmp' );
                        if ( !$tempFile ) {
                                $status->fatal( 'backend-fail-create', $params['dst'] );
+
                                return $status;
                        }
                        $this->trapWarnings();
@@ -188,6 +201,7 @@ class FSFileBackend extends FileBackendStore {
                        $this->untrapWarnings();
                        if ( $bytes === false ) {
                                $status->fatal( 'backend-fail-create', $params['dst'] );
+
                                return $status;
                        }
                        $cmd = implode( ' ', array(
@@ -203,6 +217,7 @@ class FSFileBackend extends FileBackendStore {
                        $this->untrapWarnings();
                        if ( $bytes === false ) {
                                $status->fatal( 'backend-fail-create', $params['dst'] );
+
                                return $status;
                        }
                        $this->chmod( $dest );
@@ -214,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
@@ -227,6 +242,7 @@ class FSFileBackend extends FileBackendStore {
                $dest = $this->resolveToFSPath( $params['dst'] );
                if ( $dest === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -248,6 +264,7 @@ class FSFileBackend extends FileBackendStore {
                                        trigger_error( __METHOD__ . ": copy() failed but returned true." );
                                }
                                $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
+
                                return $status;
                        }
                        $this->chmod( $dest );
@@ -259,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
@@ -272,12 +289,14 @@ class FSFileBackend extends FileBackendStore {
                $source = $this->resolveToFSPath( $params['src'] );
                if ( $source === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
                $dest = $this->resolveToFSPath( $params['dst'] );
                if ( $dest === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -285,6 +304,7 @@ class FSFileBackend extends FileBackendStore {
                        if ( empty( $params['ignoreMissingSource'] ) ) {
                                $status->fatal( 'backend-fail-copy', $params['src'] );
                        }
+
                        return $status; // do nothing; either OK or bad status
                }
 
@@ -308,6 +328,7 @@ class FSFileBackend extends FileBackendStore {
                                        trigger_error( __METHOD__ . ": copy() failed but returned true." );
                                }
                                $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+
                                return $status;
                        }
                        $this->chmod( $dest );
@@ -319,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
@@ -332,12 +353,14 @@ class FSFileBackend extends FileBackendStore {
                $source = $this->resolveToFSPath( $params['src'] );
                if ( $source === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
                $dest = $this->resolveToFSPath( $params['dst'] );
                if ( $dest === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -345,6 +368,7 @@ class FSFileBackend extends FileBackendStore {
                        if ( empty( $params['ignoreMissingSource'] ) ) {
                                $status->fatal( 'backend-fail-move', $params['src'] );
                        }
+
                        return $status; // do nothing; either OK or bad status
                }
 
@@ -362,6 +386,7 @@ class FSFileBackend extends FileBackendStore {
                        clearstatcache(); // file no longer at source
                        if ( !$ok ) {
                                $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
+
                                return $status;
                        }
                }
@@ -372,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
@@ -385,6 +410,7 @@ class FSFileBackend extends FileBackendStore {
                $source = $this->resolveToFSPath( $params['src'] );
                if ( $source === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
@@ -392,6 +418,7 @@ class FSFileBackend extends FileBackendStore {
                        if ( empty( $params['ignoreMissingSource'] ) ) {
                                $status->fatal( 'backend-fail-delete', $params['src'] );
                        }
+
                        return $status; // do nothing; either OK or bad status
                }
 
@@ -407,6 +434,7 @@ class FSFileBackend extends FileBackendStore {
                        $this->untrapWarnings();
                        if ( !$ok ) {
                                $status->fatal( 'backend-fail-delete', $params['src'] );
+
                                return $status;
                        }
                }
@@ -417,13 +445,19 @@ 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
                }
        }
 
+       /**
+        * @param string $fullCont
+        * @param $dirRel
+        * @param array $params
+        * @return Status
+        */
        protected function doPrepareInternal( $fullCont, $dirRel, array $params ) {
                $status = Status::newGood();
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -444,6 +478,7 @@ class FSFileBackend extends FileBackendStore {
                if ( is_dir( $dir ) && !$existed ) {
                        $status->merge( $this->doSecureInternal( $fullCont, $dirRel, $params ) );
                }
+
                return $status;
        }
 
@@ -471,6 +506,7 @@ class FSFileBackend extends FileBackendStore {
                                $status->fatal( 'backend-fail-create', "{$storeDir}/.htaccess" );
                        }
                }
+
                return $status;
        }
 
@@ -498,6 +534,7 @@ class FSFileBackend extends FileBackendStore {
                        }
                        $this->untrapWarnings();
                }
+
                return $status;
        }
 
@@ -511,6 +548,7 @@ class FSFileBackend extends FileBackendStore {
                        rmdir( $dir ); // remove directory if empty
                }
                $this->untrapWarnings();
+
                return $status;
        }
 
@@ -557,7 +595,10 @@ class FSFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::getDirectoryListInternal()
-        * @return Array|null
+        * @param string $fullCont
+        * @param string $dirRel
+        * @param array $params
+        * @return array|null
         */
        public function getDirectoryListInternal( $fullCont, $dirRel, array $params ) {
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -566,17 +607,23 @@ class FSFileBackend extends FileBackendStore {
                $exists = is_dir( $dir );
                if ( !$exists ) {
                        wfDebug( __METHOD__ . "() given directory does not exist: '$dir'\n" );
+
                        return array(); // nothing under this dir
                } elseif ( !is_readable( $dir ) ) {
                        wfDebug( __METHOD__ . "() given directory is unreadable: '$dir'\n" );
+
                        return null; // bad permissions?
                }
+
                return new FSFileBackendDirList( $dir, $params );
        }
 
        /**
         * @see FileBackendStore::getFileListInternal()
-        * @return Array|FSFileBackendFileList|null
+        * @param string $fullCont
+        * @param string $dirRel
+        * @param array $params
+        * @return array|FSFileBackendFileList|null
         */
        public function getFileListInternal( $fullCont, $dirRel, array $params ) {
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -585,11 +632,14 @@ class FSFileBackend extends FileBackendStore {
                $exists = is_dir( $dir );
                if ( !$exists ) {
                        wfDebug( __METHOD__ . "() given directory does not exist: '$dir'\n" );
+
                        return array(); // nothing under this dir
                } elseif ( !is_readable( $dir ) ) {
                        wfDebug( __METHOD__ . "() given directory is unreadable: '$dir'\n" );
+
                        return null; // bad permissions?
                }
+
                return new FSFileBackendFileList( $dir, $params );
        }
 
@@ -662,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 ) {
@@ -718,8 +768,6 @@ class FSFileBackend extends FileBackendStore {
 
        /**
         * Listen for E_WARNING errors and track whether any happen
-        *
-        * @return void
         */
        protected function trapWarnings() {
                $this->hadWarningErrors[] = false; // push to stack
@@ -737,7 +785,7 @@ class FSFileBackend extends FileBackendStore {
        }
 
        /**
-        * @param integer $errno
+        * @param int $errno
         * @param string $errstr
         * @return bool
         * @access private
@@ -745,6 +793,7 @@ class FSFileBackend extends FileBackendStore {
        public function handleWarning( $errno, $errstr ) {
                wfDebugLog( 'FSFileBackend', $errstr ); // more detailed error logging
                $this->hadWarningErrors[count( $this->hadWarningErrors ) - 1] = true;
+
                return true; // suppress from PHP handler
        }
 }
@@ -761,7 +810,7 @@ class FSFileOpHandle extends FileBackendStoreOpHandle {
         * @param array $params
         * @param string $call
         * @param string $cmd
-        * @param integer|null $chmodPath
+        * @param int|null $chmodPath
         */
        public function __construct(
                FSFileBackend $backend, array $params, $call, $cmd, $chmodPath = null
@@ -784,9 +833,14 @@ class FSFileOpHandle extends FileBackendStoreOpHandle {
 abstract class FSFileBackendList implements Iterator {
        /** @var Iterator */
        protected $iter;
-       protected $suffixStart; // integer
-       protected $pos = 0; // integer
-       /** @var Array */
+
+       /** @var int */
+       protected $suffixStart;
+
+       /** @var int */
+       protected $pos = 0;
+
+       /** @var array */
        protected $params = array();
 
        /**
@@ -823,6 +877,7 @@ abstract class FSFileBackendList implements Iterator {
                        # RecursiveDirectoryIterator extends FilesystemIterator.
                        # FilesystemIterator::SKIP_DOTS default is inconsistent in PHP 5.3.x.
                        $flags = FilesystemIterator::CURRENT_AS_SELF | FilesystemIterator::SKIP_DOTS;
+
                        return new RecursiveIteratorIterator(
                                new RecursiveDirectoryIterator( $dir, $flags ),
                                RecursiveIteratorIterator::CHILD_FIRST // include dirs
@@ -832,7 +887,7 @@ abstract class FSFileBackendList implements Iterator {
 
        /**
         * @see Iterator::key()
-        * @return integer
+        * @return int
         */
        public function key() {
                return $this->pos;
@@ -848,7 +903,7 @@ abstract class FSFileBackendList implements Iterator {
 
        /**
         * @see Iterator::next()
-        * @return void
+        * @throws FileBackendError
         */
        public function next() {
                try {
@@ -862,7 +917,7 @@ abstract class FSFileBackendList implements Iterator {
 
        /**
         * @see Iterator::rewind()
-        * @return void
+        * @throws FileBackendError
         */
        public function rewind() {
                $this->pos = 0;
@@ -885,13 +940,14 @@ abstract class FSFileBackendList implements Iterator {
        /**
         * Filter out items by advancing to the next ones
         */
-       protected function filterViaNext() {}
+       protected function filterViaNext() {
+       }
 
        /**
         * Return only the relative path and normalize slashes to FileBackend-style.
         * Uses the "real path" since the suffix is based upon that.
         *
-        * @param string $path
+        * @param string $dir
         * @return string
         */
        protected function getRelPath( $dir ) {
@@ -899,6 +955,7 @@ abstract class FSFileBackendList implements Iterator {
                if ( $path === false ) {
                        $path = $dir;
                }
+
                return strtr( substr( $path, $this->suffixStart ), '\\', '/' );
        }
 }
index 4bcaa7f..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.
  *
  * @since 1.19
  */
 abstract class FileBackend {
-       protected $name; // string; unique backend name
-       protected $wikiId; // string; unique wiki name
-       protected $readOnly; // string; read-only explanation message
-       protected $parallelize; // string; when to do operations in parallel
-       protected $concurrency; // integer; how many operations can be done in parallel
+       /** @var string Unique backend name */
+       protected $name;
+
+       /** @var string Unique wiki name */
+       protected $wikiId;
+
+       /** @var string Read-only explanation message */
+       protected $readOnly;
+
+       /** @var string When to do operations in parallel */
+       protected $parallelize;
+
+       /** @var int How many operations can be done in parallel */
+       protected $concurrency;
 
        /** @var LockManager */
        protected $lockManager;
+
        /** @var FileJournal */
        protected $fileJournal;
 
@@ -75,7 +108,7 @@ abstract class FileBackend {
         * Create a new backend instance from configuration.
         * This should only be called from within FileBackendGroup.
         *
-        * $config includes:
+        * @param array $config Parameters include:
         *   - name        : The unique name of this backend.
         *                   This should consist of alphanumberic, '-', and '_' characters.
         *                   This name should not be changed after use (e.g. with journaling).
@@ -93,8 +126,6 @@ abstract class FileBackend {
         *   - parallelize : When to do file operations in parallel (when possible).
         *                   Allowed values are "implicit", "explicit" and "off".
         *   - concurrency : How many file operations can be done in parallel.
-        *
-        * @param array $config
         * @throws MWException
         */
        public function __construct( array $config ) {
@@ -671,8 +702,7 @@ abstract class FileBackend {
         * otherwise safe from modification from other processes. Normally,
         * the file will be a new temp file, which should be adequate.
         *
-        * @param array $params Operation parameters
-        * $params include:
+        * @param array $params Operation parameters, include:
         *   - srcs        : ordered source storage paths (e.g. chunk1, chunk2, ...)
         *   - dst         : file system path to 0-byte temp file
         *   - parallelize : try to do operations in parallel when possible
@@ -691,8 +721,7 @@ abstract class FileBackend {
         * However, setting them is not guaranteed to actually do anything.
         * Additional server configuration may be needed to achieve the desired effect.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir            : storage directory
         *   - noAccess       : try to deny file access (since 1.20)
         *   - noListing      : try to deny file listing (since 1.20)
@@ -721,8 +750,7 @@ abstract class FileBackend {
         * This is not guaranteed to actually make files or listings publically hidden.
         * Additional server configuration may be needed to achieve the desired effect.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir            : storage directory
         *   - noAccess       : try to deny file access
         *   - noListing      : try to deny file listing
@@ -752,8 +780,7 @@ abstract class FileBackend {
         * This is not guaranteed to actually make files or listings publically viewable.
         * Additional server configuration may be needed to achieve the desired effect.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir            : storage directory
         *   - access         : try to allow file access
         *   - listing        : try to allow file listing
@@ -779,8 +806,7 @@ abstract class FileBackend {
         * Backends using key/value stores may do nothing unless the directory
         * is that of an empty container, in which case it will be deleted.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir            : storage directory
         *   - recursive      : recursively delete empty subdirectories first (since 1.20)
         *   - bypassReadOnly : allow writes in read-only mode (since 1.20)
@@ -809,10 +835,11 @@ abstract class FileBackend {
        final protected function getScopedPHPBehaviorForOps() {
                if ( PHP_SAPI != 'cli' ) { // http://bugs.php.net/bug.php?id=47540
                        $old = ignore_user_abort( true ); // avoid half-finished operations
-                       return new ScopedCallback( function() use ( $old ) {
+                       return new ScopedCallback( function () use ( $old ) {
                                ignore_user_abort( $old );
                        } );
                }
+
                return null;
        }
 
@@ -820,8 +847,7 @@ abstract class FileBackend {
         * Check if a file exists at a storage path in the backend.
         * This returns false if only a directory exists at the path.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
         * @return bool|null Returns null on failure
@@ -831,8 +857,7 @@ abstract class FileBackend {
        /**
         * Get the last-modified timestamp of the file at a storage path.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
         * @return string|bool TS_MW timestamp or false on failure
@@ -843,8 +868,7 @@ abstract class FileBackend {
         * Get the contents of a file at a storage path in the backend.
         * This should be avoided for potentially large files.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
         * @return string|bool Returns false on failure
@@ -863,12 +887,11 @@ abstract class FileBackend {
         *
         * @see FileBackend::getFileContents()
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - srcs        : list of source storage paths
         *   - latest      : use the latest available data
         *   - parallelize : try to do operations in parallel when possible
-        * @return Array Map of (path name => string or false on failure)
+        * @return array Map of (path name => string or false on failure)
         * @since 1.20
         */
        abstract public function getFileContentsMulti( array $params );
@@ -876,11 +899,10 @@ abstract class FileBackend {
        /**
         * Get the size (bytes) of a file at a storage path in the backend.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
-        * @return integer|bool Returns false on failure
+        * @return int|bool Returns false on failure
         */
        abstract public function getFileSize( array $params );
 
@@ -892,19 +914,17 @@ abstract class FileBackend {
         *   - size   : the file size (bytes)
         * Additional values may be included for internal use only.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
-        * @return Array|bool|null Returns null on failure
+        * @return array|bool|null Returns null on failure
         */
        abstract public function getFileStat( array $params );
 
        /**
         * Get a SHA-1 hash of the file at a storage path in the backend.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
         * @return string|bool Hash string or false on failure
@@ -915,11 +935,10 @@ abstract class FileBackend {
         * Get the properties of the file at a storage path in the backend.
         * This gives the result of FSFile::getProps() on a local copy of the file.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
-        * @return Array Returns FSFile::placeholderProps() on failure
+        * @return array Returns FSFile::placeholderProps() on failure
         */
        abstract public function getFileProps( array $params );
 
@@ -930,8 +949,7 @@ abstract class FileBackend {
         * will be sent if streaming began, while none will be sent otherwise.
         * Implementations should flush the output buffer before sending data.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src     : source storage path
         *   - headers : list of additional HTTP headers to send on success
         *   - latest  : use the latest available data
@@ -952,8 +970,7 @@ abstract class FileBackend {
         * In that later case, there are copies of the file that must stay in sync.
         * Additionally, further calls to this function may return the same file.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
         * @return FSFile|null Returns null on failure
@@ -972,12 +989,11 @@ abstract class FileBackend {
         *
         * @see FileBackend::getLocalReference()
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - srcs        : list of source storage paths
         *   - latest      : use the latest available data
         *   - parallelize : try to do operations in parallel when possible
-        * @return Array Map of (path name => FSFile or null on failure)
+        * @return array Map of (path name => FSFile or null on failure)
         * @since 1.20
         */
        abstract public function getLocalReferenceMulti( array $params );
@@ -987,8 +1003,7 @@ abstract class FileBackend {
         * The temporary copy will have the same file extension as the source.
         * Temporary files may be purged when the file object falls out of scope.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src    : source storage path
         *   - latest : use the latest available data
         * @return TempFSFile|null Returns null on failure
@@ -1007,12 +1022,11 @@ abstract class FileBackend {
         *
         * @see FileBackend::getLocalCopy()
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - srcs        : list of source storage paths
         *   - latest      : use the latest available data
         *   - parallelize : try to do operations in parallel when possible
-        * @return Array Map of (path name => TempFSFile or null on failure)
+        * @return array Map of (path name => TempFSFile or null on failure)
         * @since 1.20
         */
        abstract public function getLocalCopyMulti( array $params );
@@ -1027,8 +1041,7 @@ abstract class FileBackend {
         * Otherwise, one would need to use getLocalReference(), which involves loading
         * the entire file on to local disk.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - src : source storage path
         *   - ttl : lifetime (seconds) if pre-authenticated; default is 1 day
         * @return string|null
@@ -1043,8 +1056,7 @@ abstract class FileBackend {
         *
         * Storage backends with eventual consistency might return stale data.
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir : storage directory
         * @return bool|null Returns null on failure
         * @since 1.20
@@ -1063,8 +1075,7 @@ abstract class FileBackend {
         *
         * Failures during iteration can result in FileBackendError exceptions (since 1.22).
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir     : storage directory
         *   - topOnly : only return direct child dirs of the directory
         * @return Traversable|Array|null Returns null on failure
@@ -1080,8 +1091,7 @@ abstract class FileBackend {
         *
         * Failures during iteration can result in FileBackendError exceptions (since 1.22).
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir : storage directory
         * @return Traversable|Array|null Returns null on failure
         * @since 1.20
@@ -1102,8 +1112,7 @@ abstract class FileBackend {
         *
         * Failures during iteration can result in FileBackendError exceptions (since 1.22).
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir        : storage directory
         *   - topOnly    : only return direct child files of the directory (since 1.20)
         *   - adviseStat : set to true if stat requests will be made on the files (since 1.22)
@@ -1119,8 +1128,7 @@ abstract class FileBackend {
         *
         * Failures during iteration can result in FileBackendError exceptions (since 1.22).
         *
-        * @param array $params
-        * $params include:
+        * @param array $params Parameters include:
         *   - dir        : storage directory
         *   - adviseStat : set to true if stat requests will be made on the files (since 1.22)
         * @return Traversable|Array|null Returns null on failure
@@ -1135,18 +1143,18 @@ abstract class FileBackend {
         * This should be used when stat calls will be made on a known list of a many files.
         *
         * @param array $paths Storage paths
-        * @return void
         */
-       public function preloadCache( array $paths ) {}
+       public function preloadCache( array $paths ) {
+       }
 
        /**
         * Invalidate any in-process file stat and property cache.
         * If $paths is given, then only the cache for those files will be cleared.
         *
         * @param array $paths Storage paths (optional)
-        * @return void
         */
-       public function clearCache( array $paths = null ) {}
+       public function clearCache( array $paths = null ) {
+       }
 
        /**
         * Lock the files at the given storage paths in the backend.
@@ -1155,11 +1163,12 @@ abstract class FileBackend {
         * Callers should consider using getScopedFileLocks() instead.
         *
         * @param array $paths Storage paths
-        * @param integer $type LockManager::LOCK_* constant
+        * @param int $type LockManager::LOCK_* constant
         * @return Status
         */
        final public function lockFiles( array $paths, $type ) {
                $paths = array_map( 'FileBackend::normalizeStoragePath', $paths );
+
                return $this->lockManager->lock( $paths, $type );
        }
 
@@ -1167,11 +1176,12 @@ abstract class FileBackend {
         * Unlock the files at the given storage paths in the backend.
         *
         * @param array $paths Storage paths
-        * @param integer $type LockManager::LOCK_* constant
+        * @param int $type LockManager::LOCK_* constant
         * @return Status
         */
        final public function unlockFiles( array $paths, $type ) {
                $paths = array_map( 'FileBackend::normalizeStoragePath', $paths );
+
                return $this->lockManager->unlock( $paths, $type );
        }
 
@@ -1186,7 +1196,7 @@ abstract class FileBackend {
         * @see ScopedLock::factory()
         *
         * @param array $paths List of storage paths or map of lock types to path lists
-        * @param integer|string $type LockManager::LOCK_* constant or "mixed"
+        * @param int|string $type LockManager::LOCK_* constant or "mixed"
         * @param Status $status Status to update on lock/unlock
         * @return ScopedLock|null Returns null on failure
         */
@@ -1198,6 +1208,7 @@ abstract class FileBackend {
                } else {
                        $paths = array_map( 'FileBackend::normalizeStoragePath', $paths );
                }
+
                return ScopedLock::factory( $this->lockManager, $paths, $type, $status );
        }
 
@@ -1214,7 +1225,7 @@ abstract class FileBackend {
         *
         * @param array $ops List of file operations to FileBackend::doOperations()
         * @param Status $status Status to update on lock/unlock
-        * @return Array List of ScopedFileLocks or null values
+        * @return array List of ScopedFileLocks or null values
         * @since 1.20
         */
        abstract public function getScopedLocksForOps( array $ops, Status $status );
@@ -1267,7 +1278,7 @@ abstract class FileBackend {
         * This does not do any path normalization or traversal checks.
         *
         * @param string $storagePath
-        * @return Array (backend, container, rel object) or (null, null, null)
+        * @return array (backend, container, rel object) or (null, null, null)
         */
        final public static function splitStoragePath( $storagePath ) {
                if ( self::isStoragePath( $storagePath ) ) {
@@ -1281,6 +1292,7 @@ abstract class FileBackend {
                                }
                        }
                }
+
                return array( null, null, null );
        }
 
@@ -1301,6 +1313,7 @@ abstract class FileBackend {
                                        : "mwstore://{$backend}/{$container}";
                        }
                }
+
                return null;
        }
 
@@ -1315,6 +1328,7 @@ abstract class FileBackend {
        final public static function parentStoragePath( $storagePath ) {
                $storagePath = dirname( $storagePath );
                list( , , $rel ) = self::splitStoragePath( $storagePath );
+
                return ( $rel === null ) ? null : $storagePath;
        }
 
@@ -1326,6 +1340,7 @@ abstract class FileBackend {
         */
        final public static function extensionFromPath( $path ) {
                $i = strrpos( $path, '.' );
+
                return strtolower( $i ? substr( $path, $i + 1 ) : '' );
        }
 
@@ -1395,6 +1410,7 @@ abstract class FileBackend {
                                return null;
                        }
                }
+
                return $path;
        }
 }
@@ -1403,4 +1419,5 @@ abstract class FileBackend {
  * @ingroup FileBackend
  * @since 1.22
  */
-class FileBackendError extends MWException {}
+class FileBackendError extends MWException {
+}
index be8a207..491424b 100644 (file)
  * @since 1.19
  */
 class FileBackendGroup {
-       /**
-        * @var FileBackendGroup
-        */
+       /** @var FileBackendGroup */
        protected static $instance = null;
 
-       /** @var Array (name => ('class' => string, 'config' => array, 'instance' => object)) */
+       /** @var array (name => ('class' => string, 'config' => array, 'instance' => object)) */
        protected $backends = array();
 
-       protected function __construct() {}
+       protected function __construct() {
+       }
 
        /**
         * @return FileBackendGroup
@@ -47,13 +46,12 @@ class FileBackendGroup {
                        self::$instance = new self();
                        self::$instance->initFromGlobals();
                }
+
                return self::$instance;
        }
 
        /**
         * Destroy the singleton instance
-        *
-        * @return void
         */
        public static function destroySingleton() {
                self::$instance = null;
@@ -61,8 +59,6 @@ class FileBackendGroup {
 
        /**
         * Register file backends from the global variables
-        *
-        * @return void
         */
        protected function initFromGlobals() {
                global $wgLocalFileRepo, $wgForeignFileRepos, $wgFileBackends;
@@ -116,8 +112,7 @@ class FileBackendGroup {
        /**
         * Register an array of file backend configurations
         *
-        * @param Array $configs
-        * @return void
+        * @param array $configs
         * @throws MWException
         */
        protected function register( array $configs ) {
@@ -159,6 +154,7 @@ class FileBackendGroup {
                        $config = $this->backends[$name]['config'];
                        $this->backends[$name]['instance'] = new $class( $config );
                }
+
                return $this->backends[$name]['instance'];
        }
 
@@ -166,7 +162,7 @@ class FileBackendGroup {
         * Get the config array for a backend object with a given name
         *
         * @param string $name
-        * @return Array
+        * @return array
         * @throws MWException
         */
        public function config( $name ) {
@@ -174,6 +170,7 @@ class FileBackendGroup {
                        throw new MWException( "No backend defined with the name `$name`." );
                }
                $class = $this->backends[$name]['class'];
+
                return array( 'class' => $class ) + $this->backends[$name]['config'];
        }
 
@@ -188,6 +185,7 @@ class FileBackendGroup {
                if ( $backend !== null && isset( $this->backends[$backend] ) ) {
                        return $this->get( $backend );
                }
+
                return null;
        }
 }
index 97584a7..b3c46c6 100644 (file)
  * @since 1.19
  */
 class FileBackendMultiWrite extends FileBackend {
-       /** @var Array Prioritized list of FileBackendStore objects */
-       protected $backends = array(); // array of (backend index => backends)
-       protected $masterIndex = -1; // integer; index of master backend
-       protected $syncChecks = 0; // integer; bitfield
-       protected $autoResync = false; // boolean
+       /** @var array Prioritized list of FileBackendStore objects.
+        * array of (backend index => backends)
+        */
+       protected $backends = array();
+
+       /** @var int Index of master backend  */
+       protected $masterIndex = -1;
+
+       /** @var int Bitfield */
+       protected $syncChecks = 0;
+
+       /** @var string|bool */
+       protected $autoResync = false;
 
-       /** @var Array */
+       /** @var array */
        protected $noPushDirConts = array();
-       protected $noPushQuickOps = false; // boolean
+
+       /** @var bool */
+       protected $noPushQuickOps = false;
 
        /* Possible internal backend consistency checks */
        const CHECK_SIZE = 1;
@@ -81,7 +91,7 @@ class FileBackendMultiWrite extends FileBackend {
         *   - noPushQuickOps : (hack) Only apply doQuickOperations() to the master backend.
         *   - noPushDirConts : (hack) Only apply directory functions to the master backend.
         *
-        * @param Array $config
+        * @param array $config
         * @throws MWException
         */
        public function __construct( array $config ) {
@@ -167,6 +177,7 @@ class FileBackendMultiWrite extends FileBackend {
                        // Try to resync the clone backends to the master on the spot...
                        if ( !$this->autoResync || !$this->resyncFiles( $relevantPaths )->isOK() ) {
                                $status->merge( $syncStatus );
+
                                return $status; // abort
                        }
                }
@@ -321,8 +332,8 @@ class FileBackendMultiWrite extends FileBackend {
                                        // already synced; nothing to do
                                } elseif ( $mSha1 !== false ) { // file is in master
                                        if ( $this->autoResync === 'conservative'
-                                               && $cStat && $cStat['mtime'] > $mStat['mtime'] )
-                                       {
+                                               && $cStat && $cStat['mtime'] > $mStat['mtime']
+                                       {
                                                $status->fatal( 'backend-fail-synced', $path );
                                                continue; // don't rollback data
                                        }
@@ -348,7 +359,7 @@ class FileBackendMultiWrite extends FileBackend {
         * Get a list of file storage paths to read or write for a list of operations
         *
         * @param array $ops Same format as doOperations()
-        * @return Array List of storage paths to files (does not include directories)
+        * @return array List of storage paths to files (does not include directories)
         */
        protected function fileStoragePathsForOps( array $ops ) {
                $paths = array();
@@ -357,8 +368,8 @@ class FileBackendMultiWrite extends FileBackend {
                                // For things like copy/move/delete with "ignoreMissingSource" and there
                                // is no source file, nothing should happen and there should be no errors.
                                if ( empty( $op['ignoreMissingSource'] )
-                                       || $this->fileExists( array( 'src' => $op['src'] ) ) )
-                               {
+                                       || $this->fileExists( array( 'src' => $op['src'] ) )
+                               {
                                        $paths[] = $op['src'];
                                }
                        }
@@ -369,6 +380,7 @@ class FileBackendMultiWrite extends FileBackend {
                                $paths[] = $op['dst'];
                        }
                }
+
                return array_values( array_unique( array_filter( $paths, 'FileBackend::isStoragePath' ) ) );
        }
 
@@ -378,7 +390,7 @@ class FileBackendMultiWrite extends FileBackend {
         *
         * @param array $ops List of file operation arrays
         * @param FileBackendStore $backend
-        * @return Array
+        * @return array
         */
        protected function substOpBatchPaths( array $ops, FileBackendStore $backend ) {
                $newOps = array(); // operations
@@ -391,6 +403,7 @@ class FileBackendMultiWrite extends FileBackend {
                        }
                        $newOps[] = $newOp;
                }
+
                return $newOps;
        }
 
@@ -399,10 +412,11 @@ class FileBackendMultiWrite extends FileBackend {
         *
         * @param array $ops File operation array
         * @param FileBackendStore $backend
-        * @return Array
+        * @return array
         */
        protected function substOpPaths( array $ops, FileBackendStore $backend ) {
                $newOps = $this->substOpBatchPaths( array( $ops ), $backend );
+
                return $newOps[0];
        }
 
@@ -411,7 +425,7 @@ class FileBackendMultiWrite extends FileBackend {
         *
         * @param array|string $paths List of paths or single string path
         * @param FileBackendStore $backend
-        * @return Array|string
+        * @return array|string
         */
        protected function substPaths( $paths, FileBackendStore $backend ) {
                return preg_replace(
@@ -425,7 +439,7 @@ class FileBackendMultiWrite extends FileBackend {
         * Substitute the backend of internal storage paths with the proxy backend's name
         *
         * @param array|string $paths List of paths or single string path
-        * @return Array|string
+        * @return array|string
         */
        protected function unsubstPaths( $paths ) {
                return preg_replace(
@@ -456,6 +470,7 @@ class FileBackendMultiWrite extends FileBackend {
                $status->success = $masterStatus->success;
                $status->successCount = $masterStatus->successCount;
                $status->failCount = $masterStatus->failCount;
+
                return $status;
        }
 
@@ -465,6 +480,7 @@ class FileBackendMultiWrite extends FileBackend {
         */
        protected function replicateContainerDirChanges( $path ) {
                list( , $shortCont, ) = self::splitStoragePath( $path );
+
                return !in_array( $shortCont, $this->noPushDirConts );
        }
 
@@ -477,6 +493,7 @@ class FileBackendMultiWrite extends FileBackend {
                                $status->merge( $backend->doPrepare( $realParams ) );
                        }
                }
+
                return $status;
        }
 
@@ -489,6 +506,7 @@ class FileBackendMultiWrite extends FileBackend {
                                $status->merge( $backend->doSecure( $realParams ) );
                        }
                }
+
                return $status;
        }
 
@@ -501,6 +519,7 @@ class FileBackendMultiWrite extends FileBackend {
                                $status->merge( $backend->doPublish( $realParams ) );
                        }
                }
+
                return $status;
        }
 
@@ -513,32 +532,38 @@ class FileBackendMultiWrite extends FileBackend {
                                $status->merge( $backend->doClean( $realParams ) );
                        }
                }
+
                return $status;
        }
 
        public function concatenate( array $params ) {
                // We are writing to an FS file, so we don't need to do this per-backend
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->concatenate( $realParams );
        }
 
        public function fileExists( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->fileExists( $realParams );
        }
 
        public function getFileTimestamp( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileTimestamp( $realParams );
        }
 
        public function getFileSize( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileSize( $realParams );
        }
 
        public function getFileStat( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileStat( $realParams );
        }
 
@@ -550,21 +575,25 @@ class FileBackendMultiWrite extends FileBackend {
                foreach ( $contentsM as $path => $data ) {
                        $contents[$this->unsubstPaths( $path )] = $data;
                }
+
                return $contents;
        }
 
        public function getFileSha1Base36( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileSha1Base36( $realParams );
        }
 
        public function getFileProps( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileProps( $realParams );
        }
 
        public function streamFile( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->streamFile( $realParams );
        }
 
@@ -576,6 +605,7 @@ class FileBackendMultiWrite extends FileBackend {
                foreach ( $fsFilesM as $path => $fsFile ) {
                        $fsFiles[$this->unsubstPaths( $path )] = $fsFile;
                }
+
                return $fsFiles;
        }
 
@@ -587,26 +617,31 @@ class FileBackendMultiWrite extends FileBackend {
                foreach ( $tempFilesM as $path => $tempFile ) {
                        $tempFiles[$this->unsubstPaths( $path )] = $tempFile;
                }
+
                return $tempFiles;
        }
 
        public function getFileHttpUrl( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileHttpUrl( $realParams );
        }
 
        public function directoryExists( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->directoryExists( $realParams );
        }
 
        public function getDirectoryList( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getDirectoryList( $realParams );
        }
 
        public function getFileList( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+
                return $this->backends[$this->masterIndex]->getFileList( $realParams );
        }
 
@@ -627,6 +662,7 @@ class FileBackendMultiWrite extends FileBackend {
                        LockManager::LOCK_UW => $this->unsubstPaths( $paths[LockManager::LOCK_UW] ),
                        LockManager::LOCK_EX => $this->unsubstPaths( $paths[LockManager::LOCK_EX] )
                );
+
                // Actually acquire the locks
                return array( $this->getScopedFileLocks( $pbPaths, 'mixed', $status ) );
        }
index eaa653d..2f3e0e2 100644 (file)
@@ -43,7 +43,7 @@ abstract class FileBackendStore extends FileBackend {
        /** @var ProcessCacheLRU Map of paths to large (RAM/disk) cache items */
        protected $expensiveCache;
 
-       /** @var Array Map of container names to sharding config */
+       /** @var array Map of container names to sharding config */
        protected $shardViaHashLevels = array();
 
        /** @var callback Method to get the MIME type of files */
@@ -68,7 +68,7 @@ abstract class FileBackendStore extends FileBackend {
                parent::__construct( $config );
                $this->mimeCallback = isset( $config['mimeCallback'] )
                        ? $config['mimeCallback']
-                       : function( $storagePath, $content, $fsPath ) {
+                       : function ( $storagePath, $content, $fsPath ) {
                                // @TODO: handle the case of extension-less files using the contents
                                return StreamFile::contentTypeFromPath( $storagePath ) ?: 'unknown/unknown';
                        };
@@ -82,7 +82,7 @@ abstract class FileBackendStore extends FileBackend {
         * medium restrictions and basic performance constraints.
         * Do not call this function from places outside FileBackend and FileOp.
         *
-        * @return integer Bytes
+        * @return int Bytes
         */
        final public function maxFileSizeInternal() {
                return $this->maxFileSize;
@@ -129,11 +129,13 @@ abstract class FileBackendStore extends FileBackend {
                                $this->deleteFileCache( $params['dst'] ); // persistent cache
                        }
                }
+
                return $status;
        }
 
        /**
         * @see FileBackendStore::createInternal()
+        * @param array $params
         * @return Status
         */
        abstract protected function doCreateInternal( array $params );
@@ -168,11 +170,13 @@ abstract class FileBackendStore extends FileBackend {
                                $this->deleteFileCache( $params['dst'] ); // persistent cache
                        }
                }
+
                return $status;
        }
 
        /**
         * @see FileBackendStore::storeInternal()
+        * @param array $params
         * @return Status
         */
        abstract protected function doStoreInternal( array $params );
@@ -203,11 +207,13 @@ abstract class FileBackendStore extends FileBackend {
                if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
                        $this->deleteFileCache( $params['dst'] ); // persistent cache
                }
+
                return $status;
        }
 
        /**
         * @see FileBackendStore::copyInternal()
+        * @param array $params
         * @return Status
         */
        abstract protected function doCopyInternal( array $params );
@@ -236,6 +242,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::deleteInternal()
+        * @param array $params
         * @return Status
         */
        abstract protected function doDeleteInternal( array $params );
@@ -267,11 +274,13 @@ abstract class FileBackendStore extends FileBackend {
                if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
                        $this->deleteFileCache( $params['dst'] ); // persistent cache
                }
+
                return $status;
        }
 
        /**
         * @see FileBackendStore::moveInternal()
+        * @param array $params
         * @return Status
         */
        protected function doMoveInternal( array $params ) {
@@ -285,6 +294,7 @@ abstract class FileBackendStore extends FileBackend {
                        $status->merge( $this->deleteInternal( array( 'src' => $params['src'] ) ) );
                        $status->setResult( true, $status->value ); // ignore delete() errors
                }
+
                return $status;
        }
 
@@ -311,11 +321,13 @@ abstract class FileBackendStore extends FileBackend {
                } else {
                        $status = Status::newGood(); // nothing to do
                }
+
                return $status;
        }
 
        /**
         * @see FileBackendStore::describeInternal()
+        * @param array $params
         * @return Status
         */
        protected function doDescribeInternal( array $params ) {
@@ -355,6 +367,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::concatenate()
+        * @param array $params
         * @return Status
         */
        protected function doConcatenate( array $params ) {
@@ -368,6 +381,7 @@ abstract class FileBackendStore extends FileBackend {
                wfRestoreWarnings();
                if ( !$ok ) { // not present or not empty
                        $status->fatal( 'backend-fail-opentemp', $tmpPath );
+
                        return $status;
                }
 
@@ -378,6 +392,7 @@ abstract class FileBackendStore extends FileBackend {
                                $fsFile = $this->getLocalReference( array( 'src' => $path ) );
                                if ( !$fsFile ) { // retry failed?
                                        $status->fatal( 'backend-fail-read', $path );
+
                                        return $status;
                                }
                        }
@@ -388,6 +403,7 @@ abstract class FileBackendStore extends FileBackend {
                $tmpHandle = fopen( $tmpPath, 'ab' );
                if ( $tmpHandle === false ) {
                        $status->fatal( 'backend-fail-opentemp', $tmpPath );
+
                        return $status;
                }
 
@@ -398,6 +414,7 @@ abstract class FileBackendStore extends FileBackend {
                        if ( $sourceHandle === false ) {
                                fclose( $tmpHandle );
                                $status->fatal( 'backend-fail-read', $virtualSource );
+
                                return $status;
                        }
                        // Append chunk to file (pass chunk size to avoid magic quotes)
@@ -405,12 +422,14 @@ abstract class FileBackendStore extends FileBackend {
                                fclose( $sourceHandle );
                                fclose( $tmpHandle );
                                $status->fatal( 'backend-fail-writetemp', $tmpPath );
+
                                return $status;
                        }
                        fclose( $sourceHandle );
                }
                if ( !fclose( $tmpHandle ) ) {
                        $status->fatal( 'backend-fail-closetemp', $tmpPath );
+
                        return $status;
                }
 
@@ -426,6 +445,7 @@ abstract class FileBackendStore extends FileBackend {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
+
                        return $status; // invalid storage path
                }
 
@@ -444,6 +464,9 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::doPrepare()
+        * @param $container
+        * @param string $dir
+        * @param array $params
         * @return Status
         */
        protected function doPrepareInternal( $container, $dir, array $params ) {
@@ -457,6 +480,7 @@ abstract class FileBackendStore extends FileBackend {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
+
                        return $status; // invalid storage path
                }
 
@@ -475,6 +499,9 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::doSecure()
+        * @param $container
+        * @param string $dir
+        * @param array $params
         * @return Status
         */
        protected function doSecureInternal( $container, $dir, array $params ) {
@@ -488,6 +515,7 @@ abstract class FileBackendStore extends FileBackend {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
+
                        return $status; // invalid storage path
                }
 
@@ -506,6 +534,9 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::doPublish()
+        * @param $container
+        * @param string $dir
+        * @param array $params
         * @return Status
         */
        protected function doPublishInternal( $container, $dir, array $params ) {
@@ -531,6 +562,7 @@ abstract class FileBackendStore extends FileBackend {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
+
                        return $status; // invalid storage path
                }
 
@@ -558,6 +590,9 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::doClean()
+        * @param $container
+        * @param string $dir
+        * @param array $params
         * @return Status
         */
        protected function doCleanInternal( $container, $dir, array $params ) {
@@ -567,18 +602,21 @@ abstract class FileBackendStore extends FileBackend {
        final public function fileExists( array $params ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $stat = $this->getFileStat( $params );
+
                return ( $stat === null ) ? null : (bool)$stat; // null => failure
        }
 
        final public function getFileTimestamp( array $params ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $stat = $this->getFileStat( $params );
+
                return $stat ? $stat['mtime'] : false;
        }
 
        final public function getFileSize( array $params ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $stat = $this->getFileStat( $params );
+
                return $stat ? $stat['size'] : false;
        }
 
@@ -625,6 +663,7 @@ abstract class FileBackendStore extends FileBackend {
                } else { // an error occurred
                        wfDebug( __METHOD__ . ": Could not stat file $path.\n" );
                }
+
                return $stat;
        }
 
@@ -644,7 +683,8 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::getFileContentsMulti()
-        * @return Array
+        * @param array $params
+        * @return array
         */
        protected function doGetFileContentsMulti( array $params ) {
                $contents = array();
@@ -653,6 +693,7 @@ abstract class FileBackendStore extends FileBackend {
                        $contents[$path] = $fsFile ? file_get_contents( $fsFile->getPath() ) : false;
                        wfRestoreWarnings();
                }
+
                return $contents;
        }
 
@@ -675,11 +716,13 @@ abstract class FileBackendStore extends FileBackend {
                $hash = $this->doGetFileSha1Base36( $params );
                wfProfileOut( __METHOD__ . '-miss-' . $this->name );
                $this->cheapCache->set( $path, 'sha1', array( 'hash' => $hash, 'latest' => $latest ) );
+
                return $hash;
        }
 
        /**
         * @see FileBackendStore::getFileSha1Base36()
+        * @param array $params
         * @return bool|string
         */
        protected function doGetFileSha1Base36( array $params ) {
@@ -695,6 +738,7 @@ abstract class FileBackendStore extends FileBackend {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $fsFile = $this->getLocalReference( $params );
                $props = $fsFile ? $fsFile->getProps() : FSFile::placeholderProps();
+
                return $props;
        }
 
@@ -734,7 +778,8 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::getLocalReferenceMulti()
-        * @return Array
+        * @param array $params
+        * @return array
         */
        protected function doGetLocalReferenceMulti( array $params ) {
                return $this->doGetLocalCopyMulti( $params );
@@ -751,12 +796,14 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::getLocalCopyMulti()
-        * @return Array
+        * @param array $params
+        * @return array
         */
        abstract protected function doGetLocalCopyMulti( array $params );
 
        /**
         * @see FileBackend::getFileHttpUrl()
+        * @param array $params
         * @return string|null
         */
        public function getFileHttpUrl( array $params ) {
@@ -798,6 +845,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::streamFile()
+        * @param array $params
         * @return Status
         */
        protected function doStreamFile( array $params ) {
@@ -833,6 +881,7 @@ abstract class FileBackendStore extends FileBackend {
                                        $res = null; // if we don't find anything, it is indeterminate
                                }
                        }
+
                        return $res;
                }
        }
@@ -859,6 +908,7 @@ abstract class FileBackendStore extends FileBackend {
                        wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
                        // File listing spans multiple containers/shards
                        list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
+
                        return new FileBackendStoreShardDirIterator( $this,
                                $fullCont, $dir, $this->getContainerSuffixes( $shortCont ), $params );
                }
@@ -888,6 +938,7 @@ abstract class FileBackendStore extends FileBackend {
                        wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
                        // File listing spans multiple containers/shards
                        list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
+
                        return new FileBackendStoreShardFileIterator( $this,
                                $fullCont, $dir, $this->getContainerSuffixes( $shortCont ), $params );
                }
@@ -913,7 +964,7 @@ abstract class FileBackendStore extends FileBackend {
         * An exception is thrown if an unsupported operation is requested.
         *
         * @param array $ops Same format as doOperations()
-        * @return Array List of FileOp objects
+        * @return array List of FileOp objects
         * @throws MWException
         */
        final public function getOperationsInternal( array $ops ) {
@@ -953,7 +1004,7 @@ abstract class FileBackendStore extends FileBackend {
         * normalized.
         *
         * @param array $performOps List of FileOp objects
-        * @return Array (LockManager::LOCK_UW => path list, LockManager::LOCK_EX => path list)
+        * @return array (LockManager::LOCK_UW => path list, LockManager::LOCK_EX => path list)
         */
        final public function getPathsToLockForOpsInternal( array $performOps ) {
                // Build up a list of files to lock...
@@ -975,6 +1026,7 @@ abstract class FileBackendStore extends FileBackend {
 
        public function getScopedLocksForOps( array $ops, Status $status ) {
                $paths = $this->getPathsToLockForOpsInternal( $this->getOperationsInternal( $ops ) );
+
                return array( $this->getScopedFileLocks( $paths, 'mixed', $status ) );
        }
 
@@ -1080,9 +1132,10 @@ abstract class FileBackendStore extends FileBackend {
         * The resulting Status object fields will correspond
         * to the order in which the handles where given.
         *
-        * @param array $handles List of FileBackendStoreOpHandle objects
-        * @return Array Map of Status objects
+        * @param array $fileOpHandles
         * @throws MWException
+        * @internal param array $handles List of FileBackendStoreOpHandle objects
+        * @return array Map of Status objects
         */
        final public function executeOpHandlesInternal( array $fileOpHandles ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
@@ -1097,6 +1150,7 @@ abstract class FileBackendStore extends FileBackend {
                foreach ( $fileOpHandles as $fileOpHandle ) {
                        $fileOpHandle->closeResources();
                }
+
                return $res;
        }
 
@@ -1104,12 +1158,13 @@ abstract class FileBackendStore extends FileBackend {
         * @see FileBackendStore::executeOpHandlesInternal()
         * @param array $fileOpHandles
         * @throws MWException
-        * @return Array List of corresponding Status objects
+        * @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." );
                }
+
                return array();
        }
 
@@ -1120,7 +1175,7 @@ abstract class FileBackendStore extends FileBackend {
         * specific errors, especially in the middle of batch file operations.
         *
         * @param array $op Same format as doOperation()
-        * @return Array
+        * @return array
         */
        protected function stripInvalidHeadersFromOp( array $op ) {
                static $longs = array( 'Content-Disposition' );
@@ -1135,6 +1190,7 @@ abstract class FileBackendStore extends FileBackend {
                                }
                        }
                }
+
                return $op;
        }
 
@@ -1172,9 +1228,9 @@ abstract class FileBackendStore extends FileBackend {
         * @see FileBackend::clearCache()
         *
         * @param array $paths Storage paths (optional)
-        * @return void
         */
-       protected function doClearCache( array $paths = null ) {}
+       protected function doClearCache( array $paths = null ) {
+       }
 
        /**
         * Is this a key/value store where directories are just virtual?
@@ -1212,7 +1268,7 @@ abstract class FileBackendStore extends FileBackend {
         * be scanned by looking in all the container shards.
         *
         * @param string $storagePath
-        * @return Array (container, path, container suffix) or (null, null, null) if invalid
+        * @return array (container, path, container suffix) or (null, null, null) if invalid
         */
        final protected function resolveStoragePath( $storagePath ) {
                list( $backend, $container, $relPath ) = self::splitStoragePath( $storagePath );
@@ -1236,6 +1292,7 @@ abstract class FileBackendStore extends FileBackend {
                                }
                        }
                }
+
                return array( null, null, null );
        }
 
@@ -1252,13 +1309,14 @@ abstract class FileBackendStore extends FileBackend {
         * @see FileBackendStore::resolveStoragePath()
         *
         * @param string $storagePath
-        * @return Array (container, path) or (null, null) if invalid
+        * @return array (container, path) or (null, null) if invalid
         */
        final protected function resolveStoragePathReal( $storagePath ) {
                list( $container, $relPath, $cShard ) = $this->resolveStoragePath( $storagePath );
                if ( $cShard !== null && substr( $relPath, -1 ) !== '/' ) {
                        return array( $container, $relPath );
                }
+
                return array( null, null );
        }
 
@@ -1293,8 +1351,10 @@ abstract class FileBackendStore extends FileBackend {
                        if ( preg_match( "!^(?:[^/]{2,}/)*$hashDirRegex(?:/|$)!", $relPath, $m ) ) {
                                return '.' . implode( '', array_slice( $m, 1 ) );
                        }
+
                        return null; // failed to match
                }
+
                return ''; // no sharding
        }
 
@@ -1308,6 +1368,7 @@ abstract class FileBackendStore extends FileBackend {
         */
        final public function isSingleShardPathInternal( $storagePath ) {
                list( , , $shard ) = $this->resolveStoragePath( $storagePath );
+
                return ( $shard !== null );
        }
 
@@ -1317,7 +1378,7 @@ abstract class FileBackendStore extends FileBackend {
         * the container are required to be hashed accordingly.
         *
         * @param string $container
-        * @return Array (integer levels, integer base, repeat flag) or (0, 0, false)
+        * @return array (integer levels, integer base, repeat flag) or (0, 0, false)
         */
        final protected function getContainerHashLevels( $container ) {
                if ( isset( $this->shardViaHashLevels[$container] ) ) {
@@ -1330,6 +1391,7 @@ abstract class FileBackendStore extends FileBackend {
                                }
                        }
                }
+
                return array( 0, 0, false ); // no sharding
        }
 
@@ -1337,7 +1399,7 @@ abstract class FileBackendStore extends FileBackend {
         * Get a list of full container shard suffixes for a container
         *
         * @param string $container
-        * @return Array
+        * @return array
         */
        final protected function getContainerSuffixes( $container ) {
                $shards = array();
@@ -1348,6 +1410,7 @@ abstract class FileBackendStore extends FileBackend {
                                $shards[] = '.' . wfBaseConvert( $index, 10, $base, $digits );
                        }
                }
+
                return $shards;
        }
 
@@ -1406,7 +1469,6 @@ abstract class FileBackendStore extends FileBackend {
         *
         * @param string $container Resolved container name
         * @param array $val Information to cache
-        * @return void
         */
        final protected function setContainerCache( $container, array $val ) {
                $this->memCache->add( $this->containerCacheKey( $container ), $val, 14 * 86400 );
@@ -1417,7 +1479,6 @@ abstract class FileBackendStore extends FileBackend {
         * The cache key is salted for a while to prevent race conditions.
         *
         * @param string $container Resolved container name
-        * @return void
         */
        final protected function deleteContainerCache( $container ) {
                if ( !$this->memCache->set( $this->containerCacheKey( $container ), 'PURGED', 300 ) ) {
@@ -1430,8 +1491,7 @@ abstract class FileBackendStore extends FileBackend {
         * used in a list of container names, storage paths, or FileOp objects.
         * This loads the persistent cache values into the process cache.
         *
-        * @param Array $items
-        * @return void
+        * @param array $items
         */
        final protected function primeContainerCache( array $items ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
@@ -1474,9 +1534,9 @@ abstract class FileBackendStore extends FileBackend {
         * Only containers that actually exist should appear in the map.
         *
         * @param array $containerInfo Map of resolved container names to cached info
-        * @return void
         */
-       protected function doPrimeContainerCache( array $containerInfo ) {}
+       protected function doPrimeContainerCache( array $containerInfo ) {
+       }
 
        /**
         * Get the cache key for a file path
@@ -1495,7 +1555,6 @@ abstract class FileBackendStore extends FileBackend {
         *
         * @param string $path Storage path
         * @param array $val Stat information to cache
-        * @return void
         */
        final protected function setFileCache( $path, array $val ) {
                $path = FileBackend::normalizeStoragePath( $path );
@@ -1514,7 +1573,6 @@ abstract class FileBackendStore extends FileBackend {
         * a file is created at a path were there was none before.
         *
         * @param string $path Storage path
-        * @return void
         */
        final protected function deleteFileCache( $path ) {
                $path = FileBackend::normalizeStoragePath( $path );
@@ -1532,7 +1590,6 @@ abstract class FileBackendStore extends FileBackend {
         * This loads the persistent cache values into the process cache.
         *
         * @param array $items List of storage paths or FileOps
-        * @return void
         */
        final protected function primeFileCache( array $items ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
@@ -1575,7 +1632,7 @@ abstract class FileBackendStore extends FileBackend {
         * Set the 'concurrency' option from a list of operation options
         *
         * @param array $opts Map of operation options
-        * @return Array
+        * @return array
         */
        final protected function setConcurrencyFlags( array $opts ) {
                $opts['concurrency'] = 1; // off
@@ -1588,6 +1645,7 @@ abstract class FileBackendStore extends FileBackend {
                                $opts['concurrency'] = $this->concurrency;
                        }
                }
+
                return $opts;
        }
 
@@ -1613,19 +1671,17 @@ abstract class FileBackendStore extends FileBackend {
  * passed to FileBackendStore::executeOpHandlesInternal().
  */
 abstract class FileBackendStoreOpHandle {
-       /** @var Array */
+       /** @var array */
        public $params = array(); // params to caller functions
        /** @var FileBackendStore */
        public $backend;
-       /** @var Array */
+       /** @var array */
        public $resourcesToClose = array();
 
        public $call; // string; name that identifies the function called
 
        /**
         * Close all open file handles
-        *
-        * @return void
         */
        public function closeResources() {
                array_map( 'fclose', $this->resourcesToClose );
@@ -1641,13 +1697,17 @@ abstract class FileBackendStoreOpHandle {
 abstract class FileBackendStoreShardListIterator extends FilterIterator {
        /** @var FileBackendStore */
        protected $backend;
-       /** @var Array */
+
+       /** @var array */
        protected $params;
 
-       protected $container; // string; full container name
-       protected $directory; // string; resolved relative path
+       /** @var string Full container name */
+       protected $container;
+
+       /** @var string Resolved relative path */
+       protected $directory;
 
-       /** @var Array */
+       /** @var array */
        protected $multiShardPaths = array(); // (rel path => 1)
 
        /**
@@ -1683,6 +1743,7 @@ abstract class FileBackendStoreShardListIterator extends FilterIterator {
                        return false;
                } else {
                        $this->multiShardPaths[$rel] = 1;
+
                        return true;
                }
        }
index 3c5b7b2..82959d8 100644 (file)
  * @since 1.19
  */
 abstract class FileOp {
-       /** @var Array */
+       /** @var array */
        protected $params = array();
+
        /** @var FileBackendStore */
        protected $backend;
 
-       protected $state = self::STATE_NEW; // integer
-       protected $failed = false; // boolean
-       protected $async = false; // boolean
-       protected $batchId; // string
+       /** @var int */
+       protected $state = self::STATE_NEW;
+
+       /** @var bool */
+       protected $failed = false;
+
+       /** @var bool */
+       protected $async = false;
+
+       /** @var string */
+       protected $batchId;
+
+       /** @var bool Operation is not a no-op */
+       protected $doOperation = true;
+
+       /** @var string */
+       protected $sourceSha1;
+
+       /** @var bool */
+       protected $overwriteSameCase;
 
-       protected $doOperation = true; // boolean; operation is not a no-op
-       protected $sourceSha1; // string
-       protected $overwriteSameCase; // boolean
-       protected $destExists; // boolean
+       /** @var bool */
+       protected $destExists;
 
        /* Object life-cycle */
        const STATE_NEW = 1;
@@ -58,7 +73,7 @@ abstract class FileOp {
         * Build a new batch file operation transaction
         *
         * @param FileBackendStore $backend
-        * @param Array $params
+        * @param array $params
         * @throws MWException
         */
        final public function __construct( FileBackendStore $backend, array $params ) {
@@ -84,7 +99,6 @@ abstract class FileOp {
                }
        }
 
-
        /**
         * Normalize a string if it is a valid storage path
         *
@@ -94,8 +108,10 @@ abstract class FileOp {
        protected static function normalizeIfValidStoragePath( $path ) {
                if ( FileBackend::isStoragePath( $path ) ) {
                        $res = FileBackend::normalizeStoragePath( $path );
+
                        return ( $res !== null ) ? $res : $path;
                }
+
                return $path;
        }
 
@@ -103,7 +119,6 @@ abstract class FileOp {
         * Set the batch UUID this operation belongs to
         *
         * @param string $batchId
-        * @return void
         */
        final public function setBatchId( $batchId ) {
                $this->batchId = $batchId;
@@ -131,7 +146,7 @@ abstract class FileOp {
        /**
         * Get a new empty predicates array for precheck()
         *
-        * @return Array
+        * @return array
         */
        final public static function newPredicates() {
                return array( 'exists' => array(), 'sha1' => array() );
@@ -140,7 +155,7 @@ abstract class FileOp {
        /**
         * Get a new empty dependency tracking array for paths read/written to
         *
-        * @return Array
+        * @return array
         */
        final public static function newDependencies() {
                return array( 'read' => array(), 'write' => array() );
@@ -150,18 +165,19 @@ abstract class FileOp {
         * Update a dependency tracking array to account for this operation
         *
         * @param array $deps Prior path reads/writes; format of FileOp::newPredicates()
-        * @return Array
+        * @return array
         */
        final public function applyDependencies( array $deps ) {
                $deps['read'] += array_fill_keys( $this->storagePathsRead(), 1 );
                $deps['write'] += array_fill_keys( $this->storagePathsChanged(), 1 );
+
                return $deps;
        }
 
        /**
         * Check if this operation changes files listed in $paths
         *
-        * @param array $paths Prior path reads/writes; format of FileOp::newPredicates()
+        * @param array $deps Prior path reads/writes; format of FileOp::newPredicates()
         * @return boolean
         */
        final public function dependsOn( array $deps ) {
@@ -175,6 +191,7 @@ abstract class FileOp {
                                return true; // "flow" dependency
                        }
                }
+
                return false;
        }
 
@@ -183,7 +200,7 @@ abstract class FileOp {
         *
         * @param array $oPredicates Pre-op info about files (format of FileOp::newPredicates)
         * @param array $nPredicates Post-op info about files (format of FileOp::newPredicates)
-        * @return Array
+        * @return array
         */
        final public function getJournalEntries( array $oPredicates, array $nPredicates ) {
                if ( !$this->doOperation ) {
@@ -215,6 +232,7 @@ abstract class FileOp {
                                );
                        }
                }
+
                return array_merge( $nullEntries, $updateEntries, $deleteEntries );
        }
 
@@ -223,7 +241,7 @@ abstract class FileOp {
         * This must update $predicates for each path that the op can change
         * except when a failing status object is returned.
         *
-        * @param Array $predicates
+        * @param array $predicates
         * @return Status
         */
        final public function precheck( array &$predicates ) {
@@ -235,10 +253,12 @@ abstract class FileOp {
                if ( !$status->isOK() ) {
                        $this->failed = true;
                }
+
                return $status;
        }
 
        /**
+        * @param array $predicates
         * @return Status
         */
        protected function doPrecheck( array &$predicates ) {
@@ -266,6 +286,7 @@ abstract class FileOp {
                } else { // no-op
                        $status = Status::newGood();
                }
+
                return $status;
        }
 
@@ -285,13 +306,14 @@ abstract class FileOp {
                $this->async = true;
                $result = $this->attempt();
                $this->async = false;
+
                return $result;
        }
 
        /**
         * Get the file operation parameters
         *
-        * @return Array (required params list, optional params list, list of params that are paths)
+        * @return array (required params list, optional params list, list of params that are paths)
         */
        protected function allowedParams() {
                return array( array(), array(), array() );
@@ -300,8 +322,8 @@ abstract class FileOp {
        /**
         * Adjust params to FileBackendStore internal file calls
         *
-        * @param Array $params
-        * @return Array (required params list, optional params list)
+        * @param array $params
+        * @return array (required params list, optional params list)
         */
        protected function setFlags( array $params ) {
                return array( 'async' => $this->async ) + $params;
@@ -310,7 +332,7 @@ abstract class FileOp {
        /**
         * Get a list of storage paths read from for this operation
         *
-        * @return Array
+        * @return array
         */
        public function storagePathsRead() {
                return array();
@@ -319,7 +341,7 @@ abstract class FileOp {
        /**
         * Get a list of storage paths written to for this operation
         *
-        * @return Array
+        * @return array
         */
        public function storagePathsChanged() {
                return array();
@@ -330,7 +352,7 @@ abstract class FileOp {
         * Also set the destExists, overwriteSameCase and sourceSha1 member variables.
         * A bad status will be returned if there is no chance it can be overwritten.
         *
-        * @param Array $predicates
+        * @param array $predicates
         * @return Status
         */
        protected function precheckDestExistence( array $predicates ) {
@@ -356,12 +378,15 @@ abstract class FileOp {
                                } else {
                                        $this->overwriteSameCase = true; // OK
                                }
+
                                return $status; // do nothing; either OK or bad status
                        } else {
                                $status->fatal( 'backend-fail-alreadyexists', $this->params['dst'] );
+
                                return $status;
                        }
                }
+
                return $status;
        }
 
@@ -379,7 +404,7 @@ abstract class FileOp {
         * Check if a file will exist in storage when this operation is attempted
         *
         * @param string $source Storage path
-        * @param Array $predicates
+        * @param array $predicates
         * @return bool
         */
        final protected function fileExists( $source, array $predicates ) {
@@ -387,6 +412,7 @@ abstract class FileOp {
                        return $predicates['exists'][$source]; // previous op assures this
                } else {
                        $params = array( 'src' => $source, 'latest' => true );
+
                        return $this->backend->fileExists( $params );
                }
        }
@@ -395,7 +421,7 @@ abstract class FileOp {
         * Get the SHA-1 of a file in storage when this operation is attempted
         *
         * @param string $source Storage path
-        * @param Array $predicates
+        * @param array $predicates
         * @return string|bool False on failure
         */
        final protected function fileSha1( $source, array $predicates ) {
@@ -405,6 +431,7 @@ abstract class FileOp {
                        return false; // previous op assures this
                } else {
                        $params = array( 'src' => $source, 'latest' => true );
+
                        return $this->backend->getFileSha1Base36( $params );
                }
        }
@@ -422,7 +449,6 @@ abstract class FileOp {
         * Log a file operation failure and preserve any temp files
         *
         * @param string $action
-        * @return void
         */
        final public function logFailure( $action ) {
                $params = $this->params;
@@ -456,11 +482,13 @@ class CreateFileOp extends FileOp {
                        $status->fatal( 'backend-fail-maxsize',
                                $this->params['dst'], $this->backend->maxFileSizeInternal() );
                        $status->fatal( 'backend-fail-create', $this->params['dst'] );
+
                        return $status;
                // Check if a file can be placed/changed at the destination
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['dst'] );
                        $status->fatal( 'backend-fail-create', $this->params['dst'] );
+
                        return $status;
                }
                // Check if destination file exists
@@ -471,6 +499,7 @@ class CreateFileOp extends FileOp {
                        $predicates['exists'][$this->params['dst']] = true;
                        $predicates['sha1'][$this->params['dst']] = $this->sourceSha1;
                }
+
                return $status; // safe to call attempt()
        }
 
@@ -479,6 +508,7 @@ class CreateFileOp extends FileOp {
                        // Create the file at the destination
                        return $this->backend->createInternal( $this->setFlags( $this->params ) );
                }
+
                return Status::newGood();
        }
 
@@ -509,17 +539,20 @@ class StoreFileOp extends FileOp {
                // Check if the source file exists on the file system
                if ( !is_file( $this->params['src'] ) ) {
                        $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+
                        return $status;
                // Check if the source file is too big
                } elseif ( filesize( $this->params['src'] ) > $this->backend->maxFileSizeInternal() ) {
                        $status->fatal( 'backend-fail-maxsize',
                                $this->params['dst'], $this->backend->maxFileSizeInternal() );
                        $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] );
+
                        return $status;
                // Check if a file can be placed/changed at the destination
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['dst'] );
                        $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] );
+
                        return $status;
                }
                // Check if destination file exists
@@ -530,6 +563,7 @@ class StoreFileOp extends FileOp {
                        $predicates['exists'][$this->params['dst']] = true;
                        $predicates['sha1'][$this->params['dst']] = $this->sourceSha1;
                }
+
                return $status; // safe to call attempt()
        }
 
@@ -538,6 +572,7 @@ class StoreFileOp extends FileOp {
                        // Store the file at the destination
                        return $this->backend->storeInternal( $this->setFlags( $this->params ) );
                }
+
                return Status::newGood();
        }
 
@@ -548,6 +583,7 @@ class StoreFileOp extends FileOp {
                if ( $hash !== false ) {
                        $hash = wfBaseConvert( $hash, 16, 36, 31 );
                }
+
                return $hash;
        }
 
@@ -578,15 +614,18 @@ class CopyFileOp extends FileOp {
                                // Update file existence predicates (cache 404s)
                                $predicates['exists'][$this->params['src']] = false;
                                $predicates['sha1'][$this->params['src']] = false;
+
                                return $status; // nothing to do
                        } else {
                                $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+
                                return $status;
                        }
-               // Check if a file can be placed/changed at the destination
+                       // Check if a file can be placed/changed at the destination
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['dst'] );
                        $status->fatal( 'backend-fail-copy', $this->params['src'], $this->params['dst'] );
+
                        return $status;
                }
                // Check if destination file exists
@@ -597,6 +636,7 @@ class CopyFileOp extends FileOp {
                        $predicates['exists'][$this->params['dst']] = true;
                        $predicates['sha1'][$this->params['dst']] = $this->sourceSha1;
                }
+
                return $status; // safe to call attempt()
        }
 
@@ -613,6 +653,7 @@ class CopyFileOp extends FileOp {
                        // Copy the file to the destination
                        $status = $this->backend->copyInternal( $this->setFlags( $this->params ) );
                }
+
                return $status;
        }
 
@@ -647,15 +688,18 @@ class MoveFileOp extends FileOp {
                                // Update file existence predicates (cache 404s)
                                $predicates['exists'][$this->params['src']] = false;
                                $predicates['sha1'][$this->params['src']] = false;
+
                                return $status; // nothing to do
                        } else {
                                $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+
                                return $status;
                        }
                // Check if a file can be placed/changed at the destination
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['dst'] );
                        $status->fatal( 'backend-fail-move', $this->params['src'], $this->params['dst'] );
+
                        return $status;
                }
                // Check if destination file exists
@@ -668,6 +712,7 @@ class MoveFileOp extends FileOp {
                        $predicates['exists'][$this->params['dst']] = true;
                        $predicates['sha1'][$this->params['dst']] = $this->sourceSha1;
                }
+
                return $status; // safe to call attempt()
        }
 
@@ -692,6 +737,7 @@ class MoveFileOp extends FileOp {
                        // Move the file to the destination
                        $status = $this->backend->moveInternal( $this->setFlags( $this->params ) );
                }
+
                return $status;
        }
 
@@ -722,20 +768,24 @@ class DeleteFileOp extends FileOp {
                                // Update file existence predicates (cache 404s)
                                $predicates['exists'][$this->params['src']] = false;
                                $predicates['sha1'][$this->params['src']] = false;
+
                                return $status; // nothing to do
                        } else {
                                $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+
                                return $status;
                        }
                // Check if a file can be placed/changed at the source
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['src'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['src'] );
                        $status->fatal( 'backend-fail-delete', $this->params['src'] );
+
                        return $status;
                }
                // Update file existence predicates
                $predicates['exists'][$this->params['src']] = false;
                $predicates['sha1'][$this->params['src']] = false;
+
                return $status; // safe to call attempt()
        }
 
@@ -763,11 +813,13 @@ class DescribeFileOp extends FileOp {
                // Check if the source file exists
                if ( !$this->fileExists( $this->params['src'], $predicates ) ) {
                        $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+
                        return $status;
                // Check if a file can be placed/changed at the source
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['src'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['src'] );
                        $status->fatal( 'backend-fail-describe', $this->params['src'] );
+
                        return $status;
                }
                // Update file existence predicates
@@ -775,6 +827,7 @@ class DescribeFileOp extends FileOp {
                        $this->fileExists( $this->params['src'], $predicates );
                $predicates['sha1'][$this->params['src']] =
                        $this->fileSha1( $this->params['src'], $predicates );
+
                return $status; // safe to call attempt()
        }
 
@@ -791,4 +844,5 @@ class DescribeFileOp extends FileOp {
 /**
  * Placeholder operation that has no params and does nothing
  */
-class NullFileOp extends FileOp {}
+class NullFileOp extends FileOp {
+}
index 785c0bc..32b65ba 100644 (file)
@@ -62,6 +62,7 @@ class FileOpBatch {
                if ( $n > self::MAX_BATCH_SIZE ) {
                        $status->fatal( 'backend-fail-batchsize', $n, self::MAX_BATCH_SIZE );
                        wfProfileOut( __METHOD__ );
+
                        return $status;
                }
 
@@ -108,6 +109,7 @@ class FileOpBatch {
                                ++$status->failCount;
                                if ( !$ignoreErrors ) {
                                        wfProfileOut( __METHOD__ );
+
                                        return $status; // abort
                                }
                        }
@@ -122,6 +124,7 @@ class FileOpBatch {
                        $subStatus = $journal->logChangeBatch( $entries, $batchId );
                        if ( !$subStatus->isOK() ) {
                                wfProfileOut( __METHOD__ );
+
                                return $subStatus; // abort
                        }
                }
@@ -134,6 +137,7 @@ class FileOpBatch {
                self::runParallelBatches( $pPerformOps, $status );
 
                wfProfileOut( __METHOD__ );
+
                return $status;
        }
 
@@ -145,7 +149,7 @@ class FileOpBatch {
         * within any given sub-batch do not depend on each other.
         * This will abort remaining ops on failure.
         *
-        * @param Array $pPerformOps
+        * @param array $pPerformOps
         * @param Status $status
         * @return bool Success
         */
@@ -199,6 +203,7 @@ class FileOpBatch {
                                }
                        }
                }
+
                return $status;
        }
 }
index 1787d66..dc2995f 100644 (file)
  * @since 1.19
  */
 class SwiftFileBackend extends FileBackendStore {
-       /** @var CF_Authentication */
-       protected $auth; // Swift authentication handler
-       protected $authTTL; // integer seconds
-       protected $swiftTempUrlKey; // string; shared secret value for making temp urls
-       protected $swiftAnonUser; // string; username to handle unauthenticated requests
-       protected $swiftUseCDN; // boolean; whether CloudFiles CDN is enabled
-       protected $swiftCDNExpiry; // integer; how long to cache things in the CDN
-       protected $swiftCDNPurgable; // boolean; whether object CDN purging is enabled
+       /** @var CF_Authentication Swift authentication handler */
+       protected $auth;
+
+       /** @var int TTL in seconds */
+       protected $authTTL;
+
+       /** @var string Shared secret value for making temp URLs */
+       protected $swiftTempUrlKey;
+
+       /** @var string Username to handle unauthenticated requests */
+       protected $swiftAnonUser;
+
+       /** @var bool Whether CloudFiles CDN is enabled */
+       protected $swiftUseCDN;
+
+       /** @var int How long to cache things in the CDN */
+       protected $swiftCDNExpiry;
+
+       /** @var bool Whether object CDN purging is enabled */
+       protected $swiftCDNPurgable;
 
        // Rados Gateway specific options
-       protected $rgwS3AccessKey; // string; S3 access key
-       protected $rgwS3SecretKey; // string; S3 authentication key
+       /** @var string S3 access key */
+       protected $rgwS3AccessKey;
 
-       /** @var CF_Connection */
-       protected $conn; // Swift connection handle
-       protected $sessionStarted = 0; // integer UNIX timestamp
+       /** @var string S3 authentication key */
+       protected $rgwS3SecretKey;
+
+       /** @var CF_Connection Swift connection handle*/
+       protected $conn;
+
+       /** @var int UNIX timestamp */
+       protected $sessionStarted = 0;
 
        /** @var CloudFilesException */
        protected $connException;
-       protected $connErrorTime = 0; // UNIX timestamp
+
+       /** @var int UNIX timestamp */
+       protected $connErrorTime = 0;
 
        /** @var BagOStuff */
        protected $srvCache;
@@ -153,7 +172,8 @@ class SwiftFileBackend extends FileBackendStore {
                        } else {
                                try { // look for APC, XCache, WinCache, ect...
                                        $this->srvCache = ObjectCache::newAccelerator( array() );
-                               } catch ( Exception $e ) {}
+                               } catch ( Exception $e ) {
+                               }
                        }
                }
                $this->srvCache = $this->srvCache ? $this->srvCache : new EmptyBagOStuff();
@@ -161,7 +181,10 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::resolveContainerPath()
-        * @return null
+        * @param string $container
+        * @param string $relStoragePath
+        * @return string|null Returns null when the URL encoded storage path is
+        *   longer than 1024 characters or not UTF-8 encoded.
         */
        protected function resolveContainerPath( $container, $relStoragePath ) {
                if ( !mb_check_encoding( $relStoragePath, 'UTF-8' ) ) { // mb_string required by CF
@@ -169,6 +192,7 @@ class SwiftFileBackend extends FileBackendStore {
                } elseif ( strlen( urlencode( $relStoragePath ) ) > 1024 ) {
                        return null; // too long for Swift
                }
+
                return $relStoragePath;
        }
 
@@ -180,6 +204,7 @@ class SwiftFileBackend extends FileBackendStore {
 
                try {
                        $this->getContainer( $container );
+
                        return true; // container exists
                } catch ( NoSuchContainerException $e ) {
                } catch ( CloudFilesException $e ) { // some other exception?
@@ -198,6 +223,7 @@ class SwiftFileBackend extends FileBackendStore {
                if ( isset( $headers['Content-Disposition'] ) ) {
                        $headers['Content-Disposition'] = $this->truncDisp( $headers['Content-Disposition'] );
                }
+
                return $headers;
        }
 
@@ -216,6 +242,7 @@ class SwiftFileBackend extends FileBackendStore {
                                break; // too long; sigh
                        }
                }
+
                return $res;
        }
 
@@ -225,6 +252,7 @@ class SwiftFileBackend extends FileBackendStore {
                list( $dstCont, $dstRel ) = $this->resolveStoragePathReal( $params['dst'] );
                if ( $dstRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -233,9 +261,11 @@ class SwiftFileBackend extends FileBackendStore {
                        $dContObj = $this->getContainer( $dstCont );
                } catch ( NoSuchContainerException $e ) {
                        $status->fatal( 'backend-fail-create', $params['dst'] );
+
                        return $status;
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -279,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 ) {
@@ -293,6 +323,7 @@ class SwiftFileBackend extends FileBackendStore {
                list( $dstCont, $dstRel ) = $this->resolveStoragePathReal( $params['dst'] );
                if ( $dstRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -301,9 +332,11 @@ class SwiftFileBackend extends FileBackendStore {
                        $dContObj = $this->getContainer( $dstCont );
                } catch ( NoSuchContainerException $e ) {
                        $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+
                        return $status;
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -313,6 +346,7 @@ class SwiftFileBackend extends FileBackendStore {
                wfRestoreWarnings();
                if ( $sha1Hash === false ) { // source doesn't exist?
                        $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+
                        return $status;
                }
                $sha1Hash = wfBaseConvert( $sha1Hash, 16, 36, 31 );
@@ -363,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 ) {
@@ -379,12 +413,14 @@ class SwiftFileBackend extends FileBackendStore {
                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
                if ( $srcRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
                list( $dstCont, $dstRel ) = $this->resolveStoragePathReal( $params['dst'] );
                if ( $dstRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -396,9 +432,11 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( empty( $params['ignoreMissingSource'] ) || isset( $sContObj ) ) {
                                $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
                        }
+
                        return $status;
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -434,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
@@ -448,12 +486,14 @@ class SwiftFileBackend extends FileBackendStore {
                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
                if ( $srcRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
                list( $dstCont, $dstRel ) = $this->resolveStoragePathReal( $params['dst'] );
                if ( $dstRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+
                        return $status;
                }
 
@@ -465,9 +505,11 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( empty( $params['ignoreMissingSource'] ) || isset( $sContObj ) ) {
                                $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
                        }
+
                        return $status;
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -506,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
@@ -520,6 +562,7 @@ class SwiftFileBackend extends FileBackendStore {
                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
                if ( $srcRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
@@ -554,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 ) {
@@ -572,6 +615,7 @@ class SwiftFileBackend extends FileBackendStore {
                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
                if ( $srcRel === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+
                        return $status;
                }
 
@@ -605,12 +649,14 @@ class SwiftFileBackend extends FileBackendStore {
                // (a) Check if container already exists
                try {
                        $this->getContainer( $fullCont );
+
                        // NoSuchContainerException not thrown: container must exist
                        return $status; // already exists
                } catch ( NoSuchContainerException $e ) {
                        // NoSuchContainerException thrown: container does not exist
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -631,6 +677,7 @@ class SwiftFileBackend extends FileBackendStore {
                        // CDN not enabled; nothing to see here
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -639,6 +686,9 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::doSecureInternal()
+        * @param string $fullCont
+        * @param string $dir
+        * @param array $params
         * @return Status
         */
        protected function doSecureInternal( $fullCont, $dir, array $params ) {
@@ -674,6 +724,9 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::doPublishInternal()
+        * @param string $fullCont
+        * @param string $dir
+        * @param array $params
         * @return Status
         */
        protected function doPublishInternal( $fullCont, $dir, array $params ) {
@@ -727,6 +780,7 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status; // ok, nothing to do
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -740,6 +794,7 @@ class SwiftFileBackend extends FileBackendStore {
                                return $status; // race? consistency delay?
                        } catch ( CloudFilesException $e ) { // some other exception?
                                $this->handleException( $e, $status, __METHOD__, $params );
+
                                return $status;
                        }
                }
@@ -786,6 +841,7 @@ class SwiftFileBackend extends FileBackendStore {
         */
        protected function convertSwiftDate( $ts, $format = TS_MW ) {
                $timestamp = new MWTimestamp( $ts );
+
                return $timestamp->getTimestamp( $format );
        }
 
@@ -813,6 +869,7 @@ class SwiftFileBackend extends FileBackendStore {
                                        $obj->setMetadataValues( array( 'Sha1base36' => $hash ) );
                                        $obj->sync_metadata(); // save to Swift
                                        wfProfileOut( __METHOD__ );
+
                                        return true; // success
                                }
                        }
@@ -820,6 +877,7 @@ class SwiftFileBackend extends FileBackendStore {
                trigger_error( "Unable to set SHA-1 metadata for $path", E_USER_WARNING );
                $obj->setMetadataValues( array( 'Sha1base36' => false ) );
                wfProfileOut( __METHOD__ );
+
                return false; // failed
        }
 
@@ -893,12 +951,16 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::doDirectoryExists()
+        * @param string $fullCont
+        * @param string $dir
+        * @param array $params
         * @return bool|null
         */
        protected function doDirectoryExists( $fullCont, $dir, array $params ) {
                try {
                        $container = $this->getContainer( $fullCont );
                        $prefix = ( $dir == '' ) ? null : "{$dir}/";
+
                        return ( count( $container->list_objects( 1, null, $prefix ) ) > 0 );
                } catch ( NoSuchContainerException $e ) {
                        return false;
@@ -912,6 +974,9 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::getDirectoryListInternal()
+        * @param string $fullCont
+        * @param string $dir
+        * @param array $params
         * @return SwiftFileBackendDirList
         */
        public function getDirectoryListInternal( $fullCont, $dir, array $params ) {
@@ -920,6 +985,9 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::getFileListInternal()
+        * @param string $fullCont
+        * @param string $dir
+        * @param array $params
         * @return SwiftFileBackendFileList
         */
        public function getFileListInternal( $fullCont, $dir, array $params ) {
@@ -932,9 +1000,9 @@ class SwiftFileBackend extends FileBackendStore {
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved storage directory with no trailing slash
         * @param string|null $after Resolved container relative path to list items after
-        * @param integer $limit Max number of items to list
+        * @param int $limit Max number of items to list
         * @param array $params Parameters for getDirectoryList()
-        * @return Array List of container relative resolved paths of directories directly under $dir
+        * @return array List of container relative resolved paths of directories directly under $dir
         * @throws FileBackendError
         */
        public function getDirListPageInternal( $fullCont, $dir, &$after, $limit, array $params ) {
@@ -1007,9 +1075,9 @@ class SwiftFileBackend extends FileBackendStore {
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved storage directory with no trailing slash
         * @param string|null $after Resolved container relative path of file to list items after
-        * @param integer $limit Max number of items to list
+        * @param int $limit Max number of items to list
         * @param array $params Parameters for getDirectoryList()
-        * @return Array List of resolved container relative paths of files under $dir
+        * @return array List of resolved container relative paths of files under $dir
         * @throws FileBackendError
         */
        public function getFileListPageInternal( $fullCont, $dir, &$after, $limit, array $params ) {
@@ -1022,7 +1090,8 @@ class SwiftFileBackend extends FileBackendStore {
                try {
                        $container = $this->getContainer( $fullCont );
                        $prefix = ( $dir == '' ) ? null : "{$dir}/";
-                       $objects = array(); // list of unfiltered names or CF_Object items
+
+                       // $objects will contain a list of unfiltered names or CF_Object items
                        // Non-recursive: only list files right under $dir
                        if ( !empty( $params['topOnly'] ) ) {
                                if ( !empty( $params['adviseStat'] ) ) {
@@ -1075,8 +1144,8 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( is_object( $object ) ) {
                                $stat = array(
                                        // Convert various random Swift dates to TS_MW
-                                       'mtime'  => $this->convertSwiftDate( $object->last_modified, TS_MW ),
-                                       'size'   => (int)$object->content_length,
+                                       'mtime' => $this->convertSwiftDate( $object->last_modified, TS_MW ),
+                                       'size' => (int)$object->content_length,
                                        'latest' => false // eventually consistent
                                );
                                $names[] = array( $object->name, $stat );
@@ -1085,6 +1154,7 @@ class SwiftFileBackend extends FileBackendStore {
                                $names[] = array( $object, null );
                        }
                }
+
                return $names;
        }
 
@@ -1093,7 +1163,6 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param string $path Storage path
         * @param array $val Stat value
-        * @return void
         */
        public function loadListingStatInternal( $path, array $val ) {
                $this->cheapCache->set( $path, 'stat', $val );
@@ -1107,6 +1176,7 @@ class SwiftFileBackend extends FileBackendStore {
                                $this->clearCache( array( $params['src'] ) );
                                $stat = $this->getFileStat( $params );
                        }
+
                        return $stat['sha1'];
                } else {
                        return false;
@@ -1125,9 +1195,11 @@ class SwiftFileBackend extends FileBackendStore {
                        $cont = $this->getContainer( $srcCont );
                } catch ( NoSuchContainerException $e ) {
                        $status->fatal( 'backend-fail-stream', $params['src'] );
+
                        return $status;
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, $status, __METHOD__, $params );
+
                        return $status;
                }
 
@@ -1215,8 +1287,8 @@ class SwiftFileBackend extends FileBackendStore {
 
        public function getFileHttpUrl( array $params ) {
                if ( $this->swiftTempUrlKey != '' ||
-                       ( $this->rgwS3AccessKey != '' && $this->rgwS3SecretKey != '' ) )
-               {
+                       ( $this->rgwS3AccessKey != '' && $this->rgwS3SecretKey != '' )
+               {
                        list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
                        if ( $srcRel === null ) {
                                return null; // invalid path
@@ -1239,6 +1311,7 @@ class SwiftFileBackend extends FileBackendStore {
                                                $this->rgwS3SecretKey,
                                                true // raw
                                        ) );
+
                                        // See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
                                        // Note: adding a newline for empty CanonicalizedAmzHeaders does not work.
                                        return wfAppendQuery(
@@ -1255,6 +1328,7 @@ class SwiftFileBackend extends FileBackendStore {
                                $this->handleException( $e, null, __METHOD__, $params );
                        }
                }
+
                return null;
        }
 
@@ -1268,13 +1342,14 @@ class SwiftFileBackend extends FileBackendStore {
         * $params is currently only checked for a 'latest' flag.
         *
         * @param array $params
-        * @return Array
+        * @return array
         */
        protected function headersFromParams( array $params ) {
                $hdrs = array();
                if ( !empty( $params['latest'] ) ) {
                        $hdrs[] = 'X-Newest: true';
                }
+
                return $hdrs;
        }
 
@@ -1290,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 );
@@ -1307,7 +1382,13 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * Set read/write permissions for a Swift container.
         *
-        * $readGrps is a list of the possible criteria for a request to have
+        * @see http://swift.openstack.org/misc.html#acls
+        *
+        * In general, we don't allow listings to end-users. It's not useful, isn't well-defined
+        * (lists are truncated to 10000 item with no way to page), and is just a performance risk.
+        *
+        * @param CF_Container $contObj Swift container
+        * @param array $readGrps List of the possible criteria for a request to have
         * access to read a container. Each item is one of the following formats:
         *   - account:user        : Grants access if the request is by the given user
         *   - ".r:<regex>"        : Grants access if the request is from a referrer host that
@@ -1315,19 +1396,9 @@ class SwiftFileBackend extends FileBackendStore {
         *                           Setting this to '*' effectively makes a container public.
         *   -".rlistings:<regex>" : Grants access if the request is from a referrer host that
         *                           matches the expression and the request is for a listing.
-        *
-        * $writeGrps is a list of the possible criteria for a request to have
+        * @param array $writeGrps A list of the possible criteria for a request to have
         * access to write to a container. Each item is of the following format:
         *   - account:user       : Grants access if the request is by the given user
-        *
-        * @see http://swift.openstack.org/misc.html#acls
-        *
-        * In general, we don't allow listings to end-users. It's not useful, isn't well-defined
-        * (lists are truncated to 10000 item with no way to page), and is just a performance risk.
-        *
-        * @param CF_Container $contObj Swift container
-        * @param array $readGrps List of read access routes
-        * @param array $writeGrps List of write access routes
         * @return Status
         */
        protected function setContainerAccess(
@@ -1351,7 +1422,6 @@ class SwiftFileBackend extends FileBackendStore {
         * This is for Rackspace/Akamai CDNs.
         *
         * @param array $objects List of CF_Object items
-        * @return void
         */
        public function purgeCDNCache( array $objects ) {
                if ( $this->swiftUseCDN && $this->swiftCDNPurgable ) {
@@ -1413,13 +1483,12 @@ class SwiftFileBackend extends FileBackendStore {
                        }
                        $this->conn = new CF_Connection( $this->auth );
                }
+
                return $this->conn;
        }
 
        /**
         * Close the connection to the Swift proxy
-        *
-        * @return void
         */
        protected function closeConnection() {
                if ( $this->conn ) {
@@ -1466,6 +1535,7 @@ class SwiftFileBackend extends FileBackendStore {
                                );
                        }
                }
+
                return $this->connContainerCache->get( $container, 'obj' );
        }
 
@@ -1487,7 +1557,6 @@ class SwiftFileBackend extends FileBackendStore {
         * Delete a Swift container
         *
         * @param string $container Container name
-        * @return void
         * @throws CloudFilesException
         */
        protected function deleteContainer( $container ) {
@@ -1514,10 +1583,9 @@ class SwiftFileBackend extends FileBackendStore {
         * This also sets the Status object to have a fatal error.
         *
         * @param Exception $e
-        * @param Status $status|null
+        * @param Status $status null
         * @param string $func
         * @param array $params
-        * @return void
         */
        protected function handleException( Exception $e, $status, $func, array $params ) {
                if ( $status instanceof Status ) {
@@ -1547,7 +1615,8 @@ class SwiftFileBackend extends FileBackendStore {
 class SwiftFileOpHandle extends FileBackendStoreOpHandle {
        /** @var CF_Async_Op */
        public $cfOp;
-       /** @var Array */
+
+       /** @var array */
        public $affectedObjects = array();
 
        /**
@@ -1574,18 +1643,29 @@ class SwiftFileOpHandle extends FileBackendStoreOpHandle {
  * @ingroup FileBackend
  */
 abstract class SwiftFileBackendList implements Iterator {
-       /** @var Array List of path or (path,stat array) entries */
+       /** @var array List of path or (path,stat array) entries */
        protected $bufferIter = array();
-       protected $bufferAfter = null; // string; list items *after* this path
-       protected $pos = 0; // integer
-       /** @var Array */
+
+       /** @var string List items *after* this path */
+       protected $bufferAfter = null;
+
+       /** @var int */
+       protected $pos = 0;
+
+       /** @var array */
        protected $params = array();
 
        /** @var SwiftFileBackend */
        protected $backend;
-       protected $container; // string; container name
-       protected $dir; // string; storage directory
-       protected $suffixStart; // integer
+
+       /** @var string Container name */
+       protected $container;
+
+       /** @var string Storage directory */
+       protected $dir;
+
+       /** @var int */
+       protected $suffixStart;
 
        const PAGE_SIZE = 9000; // file listing buffer size
 
@@ -1612,7 +1692,7 @@ abstract class SwiftFileBackendList implements Iterator {
 
        /**
         * @see Iterator::key()
-        * @return integer
+        * @return int
         */
        public function key() {
                return $this->pos;
@@ -1620,7 +1700,6 @@ abstract class SwiftFileBackendList implements Iterator {
 
        /**
         * @see Iterator::next()
-        * @return void
         */
        public function next() {
                // Advance to the next file in the page
@@ -1637,7 +1716,6 @@ abstract class SwiftFileBackendList implements Iterator {
 
        /**
         * @see Iterator::rewind()
-        * @return void
         */
        public function rewind() {
                $this->pos = 0;
@@ -1664,10 +1742,10 @@ abstract class SwiftFileBackendList implements Iterator {
         *
         * @param string $container Resolved container name
         * @param string $dir Resolved path relative to container
-        * @param string $after|null
-        * @param integer $limit
+        * @param string $after null
+        * @param int $limit
         * @param array $params
-        * @return Traversable|Array
+        * @return Traversable|array
         */
        abstract protected function pageFromList( $container, $dir, &$after, $limit, array $params );
 }
@@ -1686,7 +1764,12 @@ class SwiftFileBackendDirList extends SwiftFileBackendList {
 
        /**
         * @see SwiftFileBackendList::pageFromList()
-        * @return Array
+        * @param string $container
+        * @param string $dir
+        * @param string $after
+        * @param int $limit
+        * @param array $params
+        * @return array
         */
        protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
                return $this->backend->getDirListPageInternal( $container, $dir, $after, $limit, $params );
@@ -1708,12 +1791,18 @@ class SwiftFileBackendFileList extends SwiftFileBackendList {
                        $storageDir = rtrim( $this->params['dir'], '/' );
                        $this->backend->loadListingStatInternal( "$storageDir/$relPath", $stat );
                }
+
                return $relPath;
        }
 
        /**
         * @see SwiftFileBackendList::pageFromList()
-        * @return Array
+        * @param string $container
+        * @param string $dir
+        * @param string $after
+        * @param int $limit
+        * @param array $params
+        * @return array
         */
        protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
                return $this->backend->getFileListPageInternal( $container, $dir, $after, $limit, $params );
index 8266e42..611fab9 100644 (file)
  * @ingroup FileBackend
  */
 class TempFSFile extends FSFile {
-       protected $canDelete = false; // bool; garbage collect the temp file
+       /** @var bool Garbage collect the temp file */
+       protected $canDelete = false;
 
-       /** @var Array of active temp files to purge on shutdown */
+       /** @var array Active temp files to purge on shutdown */
        protected static $instances = array();
 
        /**
@@ -56,12 +57,14 @@ class TempFSFile extends FSFile {
                        }
                        if ( $attempt >= 5 ) {
                                wfProfileOut( __METHOD__ );
+
                                return null; // give up
                        }
                }
                $tmpFile = new self( $path );
                $tmpFile->canDelete = true; // safely instantiated
                wfProfileOut( __METHOD__ );
+
                return $tmpFile;
        }
 
@@ -75,13 +78,14 @@ class TempFSFile extends FSFile {
                wfSuppressWarnings();
                $ok = unlink( $this->path );
                wfRestoreWarnings();
+
                return $ok;
        }
 
        /**
         * Clean up the temporary file only after an object goes out of scope
         *
-        * @param Object $object
+        * @param stdClass $object
         * @return TempFSFile This object
         */
        public function bind( $object ) {
@@ -92,6 +96,7 @@ class TempFSFile extends FSFile {
                        }
                        $object->tempFSFileReferences[] = $this;
                }
+
                return $this;
        }
 
@@ -102,6 +107,7 @@ class TempFSFile extends FSFile {
         */
        public function preserve() {
                $this->canDelete = false;
+
                return $this;
        }
 
@@ -112,6 +118,7 @@ class TempFSFile extends FSFile {
         */
        public function autocollect() {
                $this->canDelete = true;
+
                return $this;
        }
 
index 9250aa5..4f64f02 100644 (file)
@@ -34,10 +34,9 @@ class DBFileJournal extends FileJournal {
 
        /**
         * Construct a new instance from configuration.
-        * $config includes:
-        *     'wiki' : wiki name to use for LoadBalancer
         *
-        * @param $config Array
+        * @param array $config Includes:
+        *     'wiki' : wiki name to use for LoadBalancer
         */
        protected function __construct( array $config ) {
                parent::__construct( $config );
@@ -47,6 +46,8 @@ class DBFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::logChangeBatch()
+        * @param array $entries
+        * @param string $batchId
         * @return Status
         */
        protected function doLogChangeBatch( array $entries, $batchId ) {
@@ -56,6 +57,7 @@ class DBFileJournal extends FileJournal {
                        $dbw = $this->getMasterDB();
                } catch ( DBError $e ) {
                        $status->fatal( 'filejournal-fail-dbconnect', $this->backend );
+
                        return $status;
                }
 
@@ -80,6 +82,7 @@ class DBFileJournal extends FileJournal {
                        }
                } catch ( DBError $e ) {
                        $status->fatal( 'filejournal-fail-dbquery', $this->backend );
+
                        return $status;
                }
 
@@ -88,7 +91,7 @@ class DBFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::doGetCurrentPosition()
-        * @return integer|false
+        * @return bool|mixed The value from the field, or false on failure.
         */
        protected function doGetCurrentPosition() {
                $dbw = $this->getMasterDB();
@@ -101,13 +104,14 @@ class DBFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::doGetPositionAtTime()
-        * @param $time integer|string timestamp
-        * @return integer|false
+        * @param int|string $time Timestamp
+        * @return bool|mixed The value from the field, or false on failure.
         */
        protected function doGetPositionAtTime( $time ) {
                $dbw = $this->getMasterDB();
 
                $encTimestamp = $dbw->addQuotes( $dbw->timestamp( $time ) );
+
                return $dbw->selectField( 'filejournal', 'fj_id',
                        array( 'fj_backend' => $this->backend, "fj_timestamp <= $encTimestamp" ),
                        __METHOD__,
@@ -117,8 +121,9 @@ class DBFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::doGetChangeEntries()
-        * @return Array
-        * @throws DBError
+        * @param int $start
+        * @param int $limit
+        * @return array
         */
        protected function doGetChangeEntries( $start, $limit ) {
                $dbw = $this->getMasterDB();
@@ -179,6 +184,7 @@ class DBFileJournal extends FileJournal {
                        $this->dbw = $lb->getConnection( DB_MASTER, array(), $this->wiki );
                        $this->dbw->clearFlag( DBO_TRX );
                }
+
                return $this->dbw;
        }
 }
index a1b7a45..3ab9f5d 100644 (file)
  * @since 1.20
  */
 abstract class FileJournal {
-       protected $backend; // string
-       protected $ttlDays; // integer
+       /** @var  string */
+       protected $backend;
+
+       /** @var int */
+       protected $ttlDays;
 
        /**
         * Construct a new instance from configuration.
-        * $config includes:
-        *     'ttlDays' : days to keep log entries around (false means "forever")
         *
-        * @param $config Array
+        * @param array $config Includes:
+        *     'ttlDays' : days to keep log entries around (false means "forever")
         */
        protected function __construct( array $config ) {
                $this->ttlDays = isset( $config['ttlDays'] ) ? $config['ttlDays'] : false;
@@ -53,7 +55,7 @@ abstract class FileJournal {
        /**
         * Create an appropriate FileJournal object from config
         *
-        * @param $config Array
+        * @param array $config
         * @param string $backend A registered file backend name
         * @throws MWException
         * @return FileJournal
@@ -65,6 +67,7 @@ abstract class FileJournal {
                        throw new MWException( "Class given is not an instance of FileJournal." );
                }
                $jrn->backend = $backend;
+
                return $jrn;
        }
 
@@ -79,18 +82,18 @@ abstract class FileJournal {
                        $s .= mt_rand( 0, 2147483647 );
                }
                $s = wfBaseConvert( sha1( $s ), 16, 36, 31 );
+
                return substr( wfBaseConvert( wfTimestamp( TS_MW ), 10, 36, 9 ) . $s, 0, 31 );
        }
 
        /**
         * Log changes made by a batch file operation.
-        * $entries is an array of log entries, each of which contains:
+        *
+        * @param array $entries List of file operations (each an array of parameters) which contain:
         *     op      : Basic operation name (create, update, delete)
         *     path    : The storage path of the file
         *     newSha1 : The final base 36 SHA-1 of the file
-        * Note that 'false' should be used as the SHA-1 for non-existing files.
-        *
-        * @param array $entries List of file operations (each an array of parameters)
+        *   Note that 'false' should be used as the SHA-1 for non-existing files.
         * @param string $batchId UUID string that identifies the operation batch
         * @return Status
         */
@@ -98,6 +101,7 @@ abstract class FileJournal {
                if ( !count( $entries ) ) {
                        return Status::newGood();
                }
+
                return $this->doLogChangeBatch( $entries, $batchId );
        }
 
@@ -113,7 +117,7 @@ abstract class FileJournal {
        /**
         * Get the position ID of the latest journal entry
         *
-        * @return integer|false
+        * @return int|bool
         */
        final public function getCurrentPosition() {
                return $this->doGetCurrentPosition();
@@ -121,15 +125,15 @@ abstract class FileJournal {
 
        /**
         * @see FileJournal::getCurrentPosition()
-        * @return integer|false
+        * @return int|bool
         */
        abstract protected function doGetCurrentPosition();
 
        /**
         * Get the position ID of the latest journal entry at some point in time
         *
-        * @param $time integer|string timestamp
-        * @return integer|false
+        * @param int|string $time timestamp
+        * @return int|bool
         */
        final public function getPositionAtTime( $time ) {
                return $this->doGetPositionAtTime( $time );
@@ -137,8 +141,8 @@ abstract class FileJournal {
 
        /**
         * @see FileJournal::getPositionAtTime()
-        * @param $time integer|string timestamp
-        * @return integer|false
+        * @param int|string $time Timestamp
+        * @return int|bool
         */
        abstract protected function doGetPositionAtTime( $time );
 
@@ -146,7 +150,10 @@ abstract class FileJournal {
         * Get an array of file change log entries.
         * A starting change ID and/or limit can be specified.
         *
-        * The result as a list of associative arrays, each having:
+        * @param $start integer Starting change ID or null
+        * @param $limit integer Maximum number of items to return
+        * @param &$next string Updated to the ID of the next entry.
+        * @return array List of associative arrays, each having:
         *     id         : unique, monotonic, ID for this change
         *     batch_uuid : UUID for an operation batch
         *     backend    : the backend name
@@ -154,13 +161,7 @@ abstract class FileJournal {
         *     path       : affected storage path
         *     new_sha1   : base 36 sha1 of the new file had the operation succeeded
         *     timestamp  : TS_MW timestamp of the batch change
-
-        * Also, $next is updated to the ID of the next entry.
-        *
-        * @param $start integer Starting change ID or null
-        * @param $limit integer Maximum number of items to return
-        * @param &$next string
-        * @return Array
+        *   Also, $next is updated to the ID of the next entry.
         */
        final public function getChangeEntries( $start = null, $limit = 0, &$next = null ) {
                $entries = $this->doGetChangeEntries( $start, $limit ? $limit + 1 : 0 );
@@ -170,12 +171,15 @@ abstract class FileJournal {
                } else {
                        $next = null; // end of list
                }
+
                return $entries;
        }
 
        /**
         * @see FileJournal::getChangeEntries()
-        * @return Array
+        * @param int $start
+        * @param int $limit
+        * @return array
         */
        abstract protected function doGetChangeEntries( $start, $limit );
 
@@ -202,8 +206,8 @@ abstract class FileJournal {
 class NullFileJournal extends FileJournal {
        /**
         * @see FileJournal::doLogChangeBatch()
-        * @param $entries array
-        * @param $batchId string
+        * @param array $entries
+        * @param string $batchId
         * @return Status
         */
        protected function doLogChangeBatch( array $entries, $batchId ) {
@@ -212,7 +216,7 @@ class NullFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::doGetCurrentPosition()
-        * @return integer|false
+        * @return int|bool
         */
        protected function doGetCurrentPosition() {
                return false;
@@ -220,8 +224,8 @@ class NullFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::doGetPositionAtTime()
-        * @param $time integer|string timestamp
-        * @return integer|false
+        * @param int|string $time timestamp
+        * @return int|bool
         */
        protected function doGetPositionAtTime( $time ) {
                return false;
@@ -229,7 +233,9 @@ class NullFileJournal extends FileJournal {
 
        /**
         * @see FileJournal::doGetChangeEntries()
-        * @return Array
+        * @param int $start
+        * @param int $limit
+        * @return array
         */
        protected function doGetChangeEntries( $start, $limit ) {
                return array();
index 3e934ba..4418a83 100644 (file)
@@ -37,7 +37,7 @@
  * @since 1.19
  */
 abstract class DBLockManager extends QuorumLockManager {
-       /** @var Array Map of DB names to server config */
+       /** @var array Map of DB names to server config */
        protected $dbServers; // (DB name => server config array)
        /** @var BagOStuff */
        protected $statusCache;
@@ -46,13 +46,13 @@ abstract class DBLockManager extends QuorumLockManager {
        protected $safeDelay; // integer number of seconds
 
        protected $session = 0; // random integer
-       /** @var Array Map Database connections (DB name => Database) */
+       /** @var array Map Database connections (DB name => Database) */
        protected $conns = array();
 
        /**
         * Construct a new instance from configuration.
         *
-        * $config paramaters include:
+        * @param array $config Paramaters include:
         *   - dbServers   : Associative array of DB names to server configuration.
         *                   Configuration is an associative array that includes:
         *                     - host        : DB server name
@@ -70,8 +70,6 @@ abstract class DBLockManager extends QuorumLockManager {
         *   - lockExpiry  : Lock timeout (seconds) for dropped connections. [optional]
         *                   This tells the DB server how long to wait before assuming
         *                   connection failure and releasing all the locks for a session.
-        *
-        * @param array $config
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -116,6 +114,7 @@ abstract class DBLockManager extends QuorumLockManager {
                foreach ( $pathsByType as $type => $paths ) {
                        $status->merge( $this->doGetLocksOnServer( $lockSrv, $paths, $type ) );
                }
+
                return $status;
        }
 
@@ -125,6 +124,7 @@ abstract class DBLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::isServerUp()
+        * @param string $lockSrv
         * @return bool
         */
        protected function isServerUp( $lockSrv ) {
@@ -135,15 +135,17 @@ abstract class DBLockManager extends QuorumLockManager {
                        $this->getConnection( $lockSrv );
                } catch ( DBError $e ) {
                        $this->cacheRecordFailure( $lockSrv );
+
                        return false; // failed to connect
                }
+
                return true;
        }
 
        /**
         * Get (or reuse) a connection to a lock DB
         *
-        * @param $lockDb string
+        * @param string $lockDb
         * @return DatabaseBase
         * @throws DBError
         */
@@ -175,18 +177,19 @@ abstract class DBLockManager extends QuorumLockManager {
                if ( !$this->conns[$lockDb]->trxLevel() ) {
                        $this->conns[$lockDb]->begin( __METHOD__ ); // start transaction
                }
+
                return $this->conns[$lockDb];
        }
 
        /**
         * Do additional initialization for new lock DB connection
         *
-        * @param $lockDb string
-        * @param $db DatabaseBase
-        * @return void
+        * @param string $lockDb
+        * @param DatabaseBase $db
         * @throws DBError
         */
-       protected function initConnection( $lockDb, DatabaseBase $db ) {}
+       protected function initConnection( $lockDb, DatabaseBase $db ) {
+       }
 
        /**
         * Checks if the DB has not recently had connection/query errors.
@@ -204,7 +207,7 @@ abstract class DBLockManager extends QuorumLockManager {
        /**
         * Log a lock request failure to the cache
         *
-        * @param $lockDb string
+        * @param string $lockDb
         * @return bool Success
         */
        protected function cacheRecordFailure( $lockDb ) {
@@ -216,7 +219,7 @@ abstract class DBLockManager extends QuorumLockManager {
        /**
         * Get a cache key for recent query misses for a DB
         *
-        * @param $lockDb string
+        * @param string $lockDb
         * @return string
         */
        protected function getMissKey( $lockDb ) {
@@ -242,7 +245,7 @@ abstract class DBLockManager extends QuorumLockManager {
  * @ingroup LockManager
  */
 class MySqlLockManager extends DBLockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_SH,
@@ -250,8 +253,8 @@ class MySqlLockManager extends DBLockManager {
        );
 
        /**
-        * @param $lockDb string
-        * @param $db DatabaseBase
+        * @param string $lockDb
+        * @param DatabaseBase $db
         */
        protected function initConnection( $lockDb, DatabaseBase $db ) {
                # Let this transaction see lock rows from other transactions
@@ -263,6 +266,9 @@ class MySqlLockManager extends DBLockManager {
         * This does not use GET_LOCK() per http://bugs.mysql.com/bug.php?id=1118.
         *
         * @see DBLockManager::getLocksOnServer()
+        * @param string $lockSrv
+        * @param array $paths
+        * @param string $type
         * @return Status
         */
        protected function doGetLocksOnServer( $lockSrv, array $paths, $type ) {
@@ -359,7 +365,7 @@ class MySqlLockManager extends DBLockManager {
  * @ingroup LockManager
  */
 class PostgreSqlLockManager extends DBLockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_SH,
@@ -374,7 +380,7 @@ class PostgreSqlLockManager extends DBLockManager {
 
                $db = $this->getConnection( $lockSrv ); // checked in isServerUp()
                $bigints = array_unique( array_map(
-                       function( $key ) {
+                       function ( $key ) {
                                return wfBaseConvert( substr( $key, 0, 15 ), 16, 10 );
                        },
                        array_map( array( $this, 'sha1Base16Absolute' ), $paths )
index eacba70..bce6b34 100644 (file)
@@ -34,7 +34,7 @@
  * @since 1.19
  */
 class FSLockManager extends LockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_SH,
@@ -43,16 +43,14 @@ class FSLockManager extends LockManager {
 
        protected $lockDir; // global dir for all servers
 
-       /** @var Array Map of (locked key => lock file handle) */
+       /** @var array Map of (locked key => lock file handle) */
        protected $handles = array();
 
        /**
         * Construct a new instance from configuration.
         *
-        * $config includes:
+        * @param array $config Includes:
         *   - lockDirectory : Directory containing the lock files
-        *
-        * @param array $config
         */
        function __construct( array $config ) {
                parent::__construct( $config );
@@ -62,8 +60,8 @@ class FSLockManager extends LockManager {
 
        /**
         * @see LockManager::doLock()
-        * @param $paths array
-        * @param $type int
+        * @param array $paths
+        * @param int $type
         * @return Status
         */
        protected function doLock( array $paths, $type ) {
@@ -77,6 +75,7 @@ class FSLockManager extends LockManager {
                        } else {
                                // Abort and unlock everything
                                $status->merge( $this->doUnlock( $lockedPaths, $type ) );
+
                                return $status;
                        }
                }
@@ -86,8 +85,8 @@ class FSLockManager extends LockManager {
 
        /**
         * @see LockManager::doUnlock()
-        * @param $paths array
-        * @param $type int
+        * @param array $paths
+        * @param int $type
         * @return Status
         */
        protected function doUnlock( array $paths, $type ) {
@@ -103,8 +102,8 @@ class FSLockManager extends LockManager {
        /**
         * Lock a single resource key
         *
-        * @param $path string
-        * @param $type integer
+        * @param string $path
+        * @param int $type
         * @return Status
         */
        protected function doSingleLock( $path, $type ) {
@@ -148,8 +147,8 @@ class FSLockManager extends LockManager {
        /**
         * Unlock a single resource key
         *
-        * @param $path string
-        * @param $type integer
+        * @param string $path
+        * @param int $type
         * @return Status
         */
        protected function doSingleUnlock( $path, $type ) {
@@ -191,8 +190,8 @@ class FSLockManager extends LockManager {
        }
 
        /**
-        * @param $path string
-        * @param $handlesToClose array
+        * @param string $path
+        * @param array $handlesToClose
         * @return Status
         */
        private function closeLockHandles( $path, array $handlesToClose ) {
@@ -205,11 +204,12 @@ class FSLockManager extends LockManager {
                                $status->warning( 'lockmanager-fail-closelock', $path );
                        }
                }
+
                return $status;
        }
 
        /**
-        * @param $path string
+        * @param string $path
         * @return Status
         */
        private function pruneKeyLockFiles( $path ) {
@@ -221,12 +221,13 @@ class FSLockManager extends LockManager {
                        }
                        unset( $this->handles[$path] );
                }
+
                return $status;
        }
 
        /**
         * Get the path to the lock file for a key
-        * @param $path string
+        * @param string $path
         * @return string
         */
        protected function getLockPath( $path ) {
index 97de8dc..539a780 100644 (file)
  * @since 1.19
  */
 class LSLockManager extends QuorumLockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_SH,
                self::LOCK_EX => self::LOCK_EX
        );
 
-       /** @var Array Map of server names to server config */
+       /** @var array Map of server names to server config */
        protected $lockServers; // (server name => server config array)
 
-       /** @var Array Map Server connections (server name => resource) */
+       /** @var array Map Server connections (server name => resource) */
        protected $conns = array();
 
        protected $connTimeout; // float number of seconds
@@ -56,7 +56,7 @@ class LSLockManager extends QuorumLockManager {
        /**
         * Construct a new instance from configuration.
         *
-        * $config paramaters include:
+        * @param array $config Paramaters include:
         *   - lockServers  : Associative array of server names to configuration.
         *                    Configuration is an associative array that includes:
         *                      - host    : IP address/hostname
@@ -65,8 +65,6 @@ class LSLockManager extends QuorumLockManager {
         *   - srvsByBucket : Array of 1-16 consecutive integer keys, starting from 0,
         *                    each having an odd-numbered list of server names (peers) as values.
         *   - connTimeout  : Lock server connection attempt timeout. [optional]
-        *
-        * @param array $config
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -87,6 +85,9 @@ class LSLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::getLocksOnServer()
+        * @param string $lockSrv
+        * @param array $paths
+        * @param int $type
         * @return Status
         */
        protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
@@ -108,6 +109,9 @@ class LSLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::freeLocksOnServer()
+        * @param string $lockSrv
+        * @param array $paths
+        * @param int $type
         * @return Status
         */
        protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
@@ -146,6 +150,7 @@ class LSLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::isServerUp()
+        * @param string $lockSrv
         * @return bool
         */
        protected function isServerUp( $lockSrv ) {
@@ -155,10 +160,10 @@ class LSLockManager extends QuorumLockManager {
        /**
         * Send a command and get back the response
         *
-        * @param $lockSrv string
-        * @param $action string
-        * @param $type string
-        * @param $values Array
+        * @param string $lockSrv
+        * @param string $action
+        * @param string $type
+        * @param array $values
         * @return string|bool
         */
        protected function sendCommand( $lockSrv, $action, $type, $values ) {
@@ -179,13 +184,14 @@ class LSLockManager extends QuorumLockManager {
                if ( $response === false ) {
                        return false;
                }
+
                return trim( $response );
        }
 
        /**
         * Get (or reuse) a connection to a lock server
         *
-        * @param $lockSrv string
+        * @param string $lockSrv
         * @return resource
         */
        protected function getConnection( $lockSrv ) {
@@ -203,6 +209,7 @@ class LSLockManager extends QuorumLockManager {
                        stream_set_timeout( $conn, $sec, $usec );
                        $this->conns[$lockSrv] = $conn;
                }
+
                return $this->conns[$lockSrv];
        }
 
index dad8a62..df8d2d4 100644 (file)
  * @since 1.19
  */
 abstract class LockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_EX, // subclasses may use self::LOCK_SH
                self::LOCK_EX => self::LOCK_EX
        );
 
-       /** @var Array Map of (resource path => lock type => count) */
+       /** @var array Map of (resource path => lock type => count) */
        protected $locksHeld = array();
 
        protected $domain; // string; domain (usually wiki ID)
@@ -64,12 +64,10 @@ abstract class LockManager {
        /**
         * Construct a new instance from configuration
         *
-        * $config paramaters include:
+        * @param array $config Paramaters include:
         *   - domain  : Domain (usually wiki ID) that all resources are relative to [optional]
         *   - lockTTL : Age (in seconds) at which resource locks should expire.
         *               This only applies if locks are not tied to a connection/process.
-        *
-        * @param $config Array
         */
        public function __construct( array $config ) {
                $this->domain = isset( $config['domain'] ) ? $config['domain'] : wfWikiID();
@@ -87,8 +85,8 @@ abstract class LockManager {
         * Lock the resources at the given abstract paths
         *
         * @param array $paths List of resource names
-        * @param $type integer LockManager::LOCK_* constant
-        * @param integer $timeout Timeout in seconds (0 means non-blocking) (since 1.21)
+        * @param int $type LockManager::LOCK_* constant
+        * @param int $timeout Timeout in seconds (0 means non-blocking) (since 1.21)
         * @return Status
         */
        final public function lock( array $paths, $type = self::LOCK_EX, $timeout = 0 ) {
@@ -99,7 +97,7 @@ abstract class LockManager {
         * Lock the resources at the given abstract paths
         *
         * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
-        * @param integer $timeout Timeout in seconds (0 means non-blocking) (since 1.21)
+        * @param int $timeout Timeout in seconds (0 means non-blocking) (since 1.21)
         * @return Status
         * @since 1.22
         */
@@ -119,6 +117,7 @@ abstract class LockManager {
                        $elapsed = microtime( true ) - $start;
                } while ( $elapsed < $timeout && $elapsed >= 0 );
                wfProfileOut( __METHOD__ );
+
                return $status;
        }
 
@@ -126,7 +125,7 @@ abstract class LockManager {
         * Unlock the resources at the given abstract paths
         *
         * @param array $paths List of paths
-        * @param $type integer LockManager::LOCK_* constant
+        * @param int $type LockManager::LOCK_* constant
         * @return Status
         */
        final public function unlock( array $paths, $type = self::LOCK_EX ) {
@@ -145,6 +144,7 @@ abstract class LockManager {
                $pathsByType = $this->normalizePathsByType( $pathsByType );
                $status = $this->doUnlockByType( $pathsByType );
                wfProfileOut( __METHOD__ );
+
                return $status;
        }
 
@@ -153,7 +153,7 @@ abstract class LockManager {
         * Before hashing, the path will be prefixed with the domain ID.
         * This should be used interally for lock key or file names.
         *
-        * @param $path string
+        * @param string $path
         * @return string
         */
        final protected function sha1Base36Absolute( $path ) {
@@ -165,7 +165,7 @@ abstract class LockManager {
         * Before hashing, the path will be prefixed with the domain ID.
         * This should be used interally for lock key or file names.
         *
-        * @param $path string
+        * @param string $path
         * @return string
         */
        final protected function sha1Base16Absolute( $path ) {
@@ -176,8 +176,8 @@ abstract class LockManager {
         * Normalize the $paths array by converting LOCK_UW locks into the
         * appropriate type and removing any duplicated paths for each lock type.
         *
-        * @param array $paths Map of LockManager::LOCK_* constants to lists of paths
-        * @return Array
+        * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
+        * @return array
         * @since 1.22
         */
        final protected function normalizePathsByType( array $pathsByType ) {
@@ -185,12 +185,13 @@ abstract class LockManager {
                foreach ( $pathsByType as $type => $paths ) {
                        $res[$this->lockTypeMap[$type]] = array_unique( $paths );
                }
+
                return $res;
        }
 
        /**
         * @see LockManager::lockByType()
-        * @param array $paths Map of LockManager::LOCK_* constants to lists of paths
+        * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
         * @return Status
         * @since 1.22
         */
@@ -203,12 +204,13 @@ abstract class LockManager {
                                $lockedByType[$type] = $paths;
                        } else {
                                // Release the subset of locks that were acquired
-                               foreach ( $lockedByType as $type => $paths ) {
-                                       $status->merge( $this->doUnlock( $paths, $type ) );
+                               foreach ( $lockedByType as $lType => $lPaths ) {
+                                       $status->merge( $this->doUnlock( $lPaths, $lType ) );
                                }
                                break;
                        }
                }
+
                return $status;
        }
 
@@ -216,14 +218,14 @@ abstract class LockManager {
         * Lock resources with the given keys and lock type
         *
         * @param array $paths List of paths
-        * @param $type integer LockManager::LOCK_* constant
+        * @param int $type LockManager::LOCK_* constant
         * @return Status
         */
        abstract protected function doLock( array $paths, $type );
 
        /**
         * @see LockManager::unlockByType()
-        * @param array $paths Map of LockManager::LOCK_* constants to lists of paths
+        * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
         * @return Status
         * @since 1.22
         */
@@ -232,6 +234,7 @@ abstract class LockManager {
                foreach ( $pathsByType as $type => $paths ) {
                        $status->merge( $this->doUnlock( $paths, $type ) );
                }
+
                return $status;
        }
 
@@ -239,7 +242,7 @@ abstract class LockManager {
         * Unlock resources with the given keys and lock type
         *
         * @param array $paths List of paths
-        * @param $type integer LockManager::LOCK_* constant
+        * @param int $type LockManager::LOCK_* constant
         * @return Status
         */
        abstract protected function doUnlock( array $paths, $type );
index 9aff241..ecf396a 100644 (file)
  * @since 1.19
  */
 class LockManagerGroup {
-       /** @var Array (domain => LockManager) */
+       /** @var array (domain => LockManager) */
        protected static $instances = array();
 
        protected $domain; // string; domain (usually wiki ID)
 
-       /** @var Array of (name => ('class' => ..., 'config' => ..., 'instance' => ...)) */
+       /** @var array of (name => ('class' => ..., 'config' => ..., 'instance' => ...)) */
        protected $managers = array();
 
        /**
@@ -45,7 +45,7 @@ class LockManagerGroup {
        }
 
        /**
-        * @param string $domain Domain (usually wiki ID)
+        * @param bool|string $domain Domain (usually wiki ID). Default: false.
         * @return LockManagerGroup
         */
        public static function singleton( $domain = false ) {
@@ -54,13 +54,12 @@ class LockManagerGroup {
                        self::$instances[$domain] = new self( $domain );
                        self::$instances[$domain]->initFromGlobals();
                }
+
                return self::$instances[$domain];
        }
 
        /**
         * Destroy the singleton instances
-        *
-        * @return void
         */
        public static function destroySingletons() {
                self::$instances = array();
@@ -68,8 +67,6 @@ class LockManagerGroup {
 
        /**
         * Register lock managers from the global variables
-        *
-        * @return void
         */
        protected function initFromGlobals() {
                global $wgLockManagers;
@@ -80,8 +77,7 @@ class LockManagerGroup {
        /**
         * Register an array of file lock manager configurations
         *
-        * @param $configs Array
-        * @return void
+        * @param array $configs
         * @throws MWException
         */
        protected function register( array $configs ) {
@@ -107,7 +103,7 @@ class LockManagerGroup {
        /**
         * Get the lock manager object with a given name
         *
-        * @param $name string
+        * @param string $name
         * @return LockManager
         * @throws MWException
         */
@@ -121,14 +117,15 @@ class LockManagerGroup {
                        $config = $this->managers[$name]['config'];
                        $this->managers[$name]['instance'] = new $class( $config );
                }
+
                return $this->managers[$name]['instance'];
        }
 
        /**
         * Get the config array for a lock manager object with a given name
         *
-        * @param $name string
-        * @return Array
+        * @param string $name
+        * @return array
         * @throws MWException
         */
        public function config( $name ) {
@@ -136,6 +133,7 @@ class LockManagerGroup {
                        throw new MWException( "No lock manager defined with the name `$name`." );
                }
                $class = $this->managers[$name]['class'];
+
                return array( 'class' => $class ) + $this->managers[$name]['config'];
        }
 
index 5eab03e..f7ffb2d 100644 (file)
  * @since 1.20
  */
 class MemcLockManager extends QuorumLockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_SH,
                self::LOCK_EX => self::LOCK_EX
        );
 
-       /** @var Array Map server names to MemcachedBagOStuff objects */
+       /** @var array Map server names to MemcachedBagOStuff objects */
        protected $bagOStuffs = array();
-       /** @var Array */
-       protected $serversUp = array(); // (server name => bool)
 
-       protected $session = ''; // string; random UUID
+       /** @var array (server name => bool) */
+       protected $serversUp = array();
+
+       /** @var string random UUID */
+       protected $session = '';
 
        /**
         * Construct a new instance from configuration.
         *
-        * $config paramaters include:
+        * @param array $config Paramaters include:
         *   - lockServers  : Associative array of server names to "<IP>:<port>" strings.
         *   - srvsByBucket : Array of 1-16 consecutive integer keys, starting from 0,
         *                    each having an odd-numbered list of server names (peers) as values.
         *   - memcConfig   : Configuration array for ObjectCache::newFromParams. [optional]
         *                    If set, this must use one of the memcached classes.
-        *
-        * @param array $config
         * @throws MWException
         */
        public function __construct( array $config ) {
@@ -88,7 +88,7 @@ class MemcLockManager extends QuorumLockManager {
                $this->session = wfRandomString( 32 );
        }
 
-       // @TODO: change this code to work in one batch
+       // @todo Change this code to work in one batch
        protected function getLocksOnServer( $lockSrv, array $pathsByType ) {
                $status = Status::newGood();
 
@@ -100,8 +100,8 @@ class MemcLockManager extends QuorumLockManager {
                                        ? array_merge( $lockedPaths[$type], $paths )
                                        : $paths;
                        } else {
-                               foreach ( $lockedPaths as $type => $paths ) {
-                                       $status->merge( $this->doFreeLocksOnServer( $lockSrv, $paths, $type ) );
+                               foreach ( $lockedPaths as $lType => $lPaths ) {
+                                       $status->merge( $this->doFreeLocksOnServer( $lockSrv, $lPaths, $lType ) );
                                }
                                break;
                        }
@@ -110,7 +110,7 @@ class MemcLockManager extends QuorumLockManager {
                return $status;
        }
 
-       // @TODO: change this code to work in one batch
+       // @todo Change this code to work in one batch
        protected function freeLocksOnServer( $lockSrv, array $pathsByType ) {
                $status = Status::newGood();
 
@@ -123,6 +123,9 @@ class MemcLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::getLocksOnServer()
+        * @param string $lockSrv
+        * @param array $paths
+        * @param string $type
         * @return Status
         */
        protected function doGetLocksOnServer( $lockSrv, array $paths, $type ) {
@@ -136,6 +139,7 @@ class MemcLockManager extends QuorumLockManager {
                        foreach ( $paths as $path ) {
                                $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
+
                        return $status;
                }
 
@@ -195,6 +199,9 @@ class MemcLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::freeLocksOnServer()
+        * @param string $lockSrv
+        * @param array $paths
+        * @param string $type
         * @return Status
         */
        protected function doFreeLocksOnServer( $lockSrv, array $paths, $type ) {
@@ -208,7 +215,8 @@ class MemcLockManager extends QuorumLockManager {
                        foreach ( $paths as $path ) {
                                $status->fatal( 'lockmanager-fail-releaselock', $path );
                        }
-                       return;
+
+                       return $status;
                }
 
                // Fetch all the existing lock records...
@@ -254,6 +262,7 @@ class MemcLockManager extends QuorumLockManager {
 
        /**
         * @see QuorumLockManager::isServerUp()
+        * @param string $lockSrv
         * @return bool
         */
        protected function isServerUp( $lockSrv ) {
@@ -280,11 +289,12 @@ class MemcLockManager extends QuorumLockManager {
                                return null; // server appears to be down
                        }
                }
+
                return $memc;
        }
 
        /**
-        * @param $path string
+        * @param string $path
         * @return string
         */
        protected function recordKeyForPath( $path ) {
@@ -292,27 +302,28 @@ class MemcLockManager extends QuorumLockManager {
        }
 
        /**
-        * @return Array An empty lock structure for a key
+        * @return array An empty lock structure for a key
         */
        protected static function newLockArray() {
                return array( self::LOCK_SH => array(), self::LOCK_EX => array() );
        }
 
        /**
-        * @param $a array
-        * @return Array An empty lock structure for a key
+        * @param array $a
+        * @return array An empty lock structure for a key
         */
        protected static function sanitizeLockArray( $a ) {
                if ( is_array( $a ) && isset( $a[self::LOCK_EX] ) && isset( $a[self::LOCK_SH] ) ) {
                        return $a;
                } else {
                        trigger_error( __METHOD__ . ": reset invalid lock array.", E_USER_WARNING );
+
                        return self::newLockArray();
                }
        }
 
        /**
-        * @param $memc MemcachedBagOStuff
+        * @param MemcachedBagOStuff $memc
         * @param array $keys List of keys to acquire
         * @return bool
         */
@@ -350,9 +361,8 @@ class MemcLockManager extends QuorumLockManager {
        }
 
        /**
-        * @param $memc MemcachedBagOStuff
+        * @param MemcachedBagOStuff $memc
         * @param array $keys List of acquired keys
-        * @return void
         */
        protected function releaseMutexes( MemcachedBagOStuff $memc, array $keys ) {
                foreach ( $keys as $key ) {
index 8356d32..d17074e 100644 (file)
  * @since 1.20
  */
 abstract class QuorumLockManager extends LockManager {
-       /** @var Array Map of bucket indexes to peer server lists */
+       /** @var array Map of bucket indexes to peer server lists */
        protected $srvsByBucket = array(); // (bucket index => (lsrv1, lsrv2, ...))
-       /** @var Array Map of degraded buckets */
+
+       /** @var array Map of degraded buckets */
        protected $degradedBuckets = array(); // (buckey index => UNIX timestamp)
 
        final protected function doLock( array $paths, $type ) {
@@ -65,6 +66,7 @@ abstract class QuorumLockManager extends LockManager {
                        $status->merge( $this->doLockingRequestBucket( $bucket, $pathsToLockByType ) );
                        if ( !$status->isOK() ) {
                                $status->merge( $this->doUnlockByType( $lockedPaths ) );
+
                                return $status;
                        }
                        // Record these locks as active
@@ -120,7 +122,7 @@ abstract class QuorumLockManager extends LockManager {
         * Attempt to acquire locks with the peers for a bucket.
         * This is all or nothing; if any key is locked then this totally fails.
         *
-        * @param $bucket integer
+        * @param int $bucket
         * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
         * @return Status
         */
@@ -162,7 +164,7 @@ abstract class QuorumLockManager extends LockManager {
        /**
         * Attempt to release locks with the peers for a bucket
         *
-        * @param $bucket integer
+        * @param int $bucket
         * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
         * @return Status
         */
@@ -198,8 +200,8 @@ abstract class QuorumLockManager extends LockManager {
         * Get the bucket for resource path.
         * This should avoid throwing any exceptions.
         *
-        * @param $path string
-        * @return integer
+        * @param string $path
+        * @return int
         */
        protected function getBucketFromPath( $path ) {
                $prefix = substr( sha1( $path ), 0, 2 ); // first 2 hex chars (8 bits)
@@ -210,7 +212,7 @@ abstract class QuorumLockManager extends LockManager {
         * Check if a lock server is up.
         * This should process cache results to reduce RTT.
         *
-        * @param $lockSrv string
+        * @param string $lockSrv
         * @return bool
         */
        abstract protected function isServerUp( $lockSrv );
@@ -218,7 +220,7 @@ abstract class QuorumLockManager extends LockManager {
        /**
         * Get a connection to a lock server and acquire locks
         *
-        * @param $lockSrv string
+        * @param string $lockSrv
         * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
         * @return Status
         */
@@ -229,7 +231,7 @@ abstract class QuorumLockManager extends LockManager {
         *
         * Subclasses must effectively implement this or releaseAllLocks().
         *
-        * @param $lockSrv string
+        * @param string $lockSrv
         * @param array $pathsByType Map of LockManager::LOCK_* constants to lists of paths
         * @return Status
         */
index 43b0198..9d5612a 100644 (file)
@@ -38,7 +38,7 @@
  * @since 1.22
  */
 class RedisLockManager extends QuorumLockManager {
-       /** @var Array Mapping of lock types to the type actually used */
+       /** @var array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_SH,
@@ -47,21 +47,21 @@ class RedisLockManager extends QuorumLockManager {
 
        /** @var RedisConnectionPool */
        protected $redisPool;
-       /** @var Array Map server names to hostname/IP and port numbers */
+
+       /** @var array Map server names to hostname/IP and port numbers */
        protected $lockServers = array();
 
-       protected $session = ''; // string; random UUID
+       /** @var string random UUID */
+       protected $session = '';
 
        /**
         * Construct a new instance from configuration.
         *
-        * $config paramaters include:
+        * @param array $config Parameters include:
         *   - lockServers  : Associative array of server names to "<IP>:<port>" strings.
         *   - srvsByBucket : Array of 1-16 consecutive integer keys, starting from 0,
         *                    each having an odd-numbered list of server names (peers) as values.
         *   - redisConfig  : Configuration for RedisConnectionPool::__construct().
-        *
-        * @param Array $config
         * @throws MWException
         */
        public function __construct( array $config ) {
@@ -90,8 +90,8 @@ class RedisLockManager extends QuorumLockManager {
                                        ? array_merge( $lockedPaths[$type], $paths )
                                        : $paths;
                        } else {
-                               foreach ( $lockedPaths as $type => $paths ) {
-                                       $status->merge( $this->doFreeLocksOnServer( $lockSrv, $paths, $type ) );
+                               foreach ( $lockedPaths as $lType => $lPaths ) {
+                                       $status->merge( $this->doFreeLocksOnServer( $lockSrv, $lPaths, $lType ) );
                                }
                                break;
                        }
@@ -100,7 +100,7 @@ class RedisLockManager extends QuorumLockManager {
                return $status;
        }
 
-       // @TODO: change this code to work in one batch
+       // @todo Change this code to work in one batch
        protected function freeLocksOnServer( $lockSrv, array $pathsByType ) {
                $status = Status::newGood();
 
@@ -120,6 +120,7 @@ class RedisLockManager extends QuorumLockManager {
                        foreach ( $paths as $path ) {
                                $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
+
                        return $status;
                }
 
@@ -204,6 +205,7 @@ LUA;
                        foreach ( $paths as $path ) {
                                $status->fatal( 'lockmanager-fail-releaselock', $path );
                        }
+
                        return $status;
                }
 
@@ -267,7 +269,7 @@ LUA;
        }
 
        /**
-        * @param $path string
+        * @param string $path
         * @return string
         */
        protected function recordKeyForPath( $path ) {
index 5faad4a..2056e10 100644 (file)
 class ScopedLock {
        /** @var LockManager */
        protected $manager;
+
        /** @var Status */
        protected $status;
-       /** @var Array Map of lock types to resource paths */
+
+       /** @var array Map of lock types to resource paths */
        protected $pathsByType;
 
        /**
@@ -55,14 +57,13 @@ class ScopedLock {
         * Any locks are released once this object goes out of scope.
         * The status object is updated with any errors or warnings.
         *
-        * $type can be "mixed" and $paths can be a map of types to paths (since 1.22).
-        * Otherwise $type should be an integer and $paths should be a list of paths.
-        *
         * @param LockManager $manager
         * @param array $paths List of storage paths or map of lock types to path lists
-        * @param integer|string $type LockManager::LOCK_* constant or "mixed"
+        * @param int|string $type LockManager::LOCK_* constant or "mixed" and $paths
+        *   can be a map of types to paths (since 1.22). Otherwise $type should be an
+        *   integer and $paths should be a list of paths.
         * @param Status $status
-        * @param integer $timeout Timeout in seconds (0 means non-blocking) (since 1.22)
+        * @param int $timeout Timeout in seconds (0 means non-blocking) (since 1.22)
         * @return ScopedLock|null Returns null on failure
         */
        public static function factory(
@@ -74,6 +75,7 @@ class ScopedLock {
                if ( $lockStatus->isOK() ) {
                        return new self( $manager, $pathsByType, $status );
                }
+
                return null;
        }
 
@@ -83,7 +85,6 @@ class ScopedLock {
         * This is the same as setting the lock object to null.
         *
         * @param ScopedLock $lock
-        * @return void
         * @since 1.21
         */
        public static function release( ScopedLock &$lock = null ) {
index 42c9c94..edf0eec 100644 (file)
@@ -31,9 +31,8 @@
  * @deprecated since 1.19
  */
 class FSRepo extends FileRepo {
-
        /**
-        * @param $info array
+        * @param array $info
         * @throws MWException
         */
        function __construct( array $info ) {
index 1195d5f..f62db89 100644 (file)
@@ -40,29 +40,86 @@ class FileRepo {
        const OVERWRITE_SAME = 4;
        const SKIP_LOCKING = 8;
 
+       /** @var bool Whether to fetch commons image description pages and display
+        *    them on the local wiki */
+       public $fetchDescription;
+
+       /** @var int */
+       public $descriptionCacheExpiry;
+
        /** @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 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 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
+        * @param array|null $info
         * @throws MWException
         */
        public function __construct( array $info = null ) {
@@ -72,7 +129,8 @@ class FileRepo {
                        || !array_key_exists( 'name', $info )
                        || !array_key_exists( 'backend', $info )
                ) {
-                       throw new MWException( __CLASS__ . " requires an array of options having both 'name' and 'backend' keys.\n" );
+                       throw new MWException( __CLASS__ .
+                               " requires an array of options having both 'name' and 'backend' keys.\n" );
                }
 
                // Required settings
@@ -167,13 +225,14 @@ class FileRepo {
                                throw new MWException( "No '$zone' zone defined in the {$this->name} repo." );
                        }
                }
+
                return $status;
        }
 
        /**
         * Determine if a string is an mwrepo:// URL
         *
-        * @param $url string
+        * @param string $url
         * @return bool
         */
        public static function isVirtualUrl( $url ) {
@@ -185,7 +244,7 @@ class FileRepo {
         * The suffix, if supplied, is considered to be unencoded, and will be
         * URL-encoded before being returned.
         *
-        * @param $suffix string|bool
+        * @param string|bool $suffix
         * @return string
         */
        public function getVirtualUrl( $suffix = false ) {
@@ -193,6 +252,7 @@ class FileRepo {
                if ( $suffix !== false ) {
                        $path .= '/' . rawurlencode( $suffix );
                }
+
                return $path;
        }
 
@@ -201,14 +261,17 @@ 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' ) ) ) { // standard public zones
+               if ( in_array( $zone, array( 'public', 'temp', 'thumb', 'transcoded' ) ) ) {
+                       // standard public zones
                        if ( $ext !== null && isset( $this->zones[$zone]['urlsByExt'][$ext] ) ) {
-                               return $this->zones[$zone]['urlsByExt'][$ext]; // custom URL for extension/zone
+                               // custom URL for extension/zone
+                               return $this->zones[$zone]['urlsByExt'][$ext];
                        } elseif ( isset( $this->zones[$zone]['url'] ) ) {
-                               return $this->zones[$zone]['url']; // custom URL for zone
+                               // custom URL for zone
+                               return $this->zones[$zone]['url'];
                        }
                }
                switch ( $zone ) {
@@ -238,14 +301,15 @@ class FileRepo {
         * same host name as the wiki that is used for viewing thumbnails.
         *
         * @param string $zone one of: public, deleted, temp, thumb
-        * @return String or false
+        * @return string|bool String or false
         */
        public function getZoneHandlerUrl( $zone ) {
                if ( isset( $this->zones[$zone]['handlerUrl'] )
-                       && in_array( $zone, array( 'public', 'temp', 'thumb', 'transcoded' ) ) )
-               {
+                       && in_array( $zone, array( 'public', 'temp', 'thumb', 'transcoded' ) )
+               {
                        return $this->zones[$zone]['handlerUrl'];
                }
+
                return false;
        }
 
@@ -253,7 +317,7 @@ class FileRepo {
         * Get the backend storage path corresponding to a virtual URL.
         * Use this function wisely.
         *
-        * @param $url string
+        * @param string $url
         * @throws MWException
         * @return string
         */
@@ -273,26 +337,28 @@ class FileRepo {
                if ( !$base ) {
                        throw new MWException( __METHOD__ . ": invalid zone: $zone" );
                }
+
                return $base . '/' . rawurldecode( $rel );
        }
 
        /**
         * The the storage container and base path of a zone
         *
-        * @param $zone string
-        * @return Array (container, base path) or (null, null)
+        * @param string $zone
+        * @return array (container, base path) or (null, null)
         */
        protected function getZoneLocation( $zone ) {
                if ( !isset( $this->zones[$zone] ) ) {
                        return array( null, null ); // bogus
                }
+
                return array( $this->zones[$zone]['container'], $this->zones[$zone]['directory'] );
        }
 
        /**
         * Get the storage path corresponding to one of the zones
         *
-        * @param $zone string
+        * @param string $zone
         * @return string|null Returns null if the zone is not defined
         */
        public function getZonePath( $zone ) {
@@ -304,18 +370,19 @@ class FileRepo {
                if ( $base != '' ) { // may not be set
                        $base = "/{$base}";
                }
+
                return "mwstore://$backendName/{$container}{$base}";
        }
 
        /**
         * Create a new File object from the local repository
         *
-        * @param $title Mixed: Title object or string
-        * @param $time Mixed: Time at which the image was uploaded.
-        *              If this is specified, the returned object will be an
-        *              instance of the repository's old file class instead of a
-        *              current file. Repositories not supporting version control
-        *              should return false if this parameter is set.
+        * @param Title|string $title Title object or string
+        * @param bool|string $time Time at which the image was uploaded. If this
+        *   is specified, the returned object will be an instance of the
+        *   repository's old file class instead of a current file. Repositories
+        *   not supporting version control should return false if this parameter
+        *   is set.
         * @return File|null A File, or null if passed an invalid Title
         */
        public function newFile( $title, $time = false ) {
@@ -339,17 +406,15 @@ class FileRepo {
         * Returns false if the file does not exist. Repositories not supporting
         * version control should return false if the time is specified.
         *
-        * @param $title Mixed: Title object or string
+        * @param Title|string $title Title object or string
         * @param array $options Associative array of options:
-        *     time:           requested time for a specific file version, or false for the
-        *                     current version. An image object will be returned which was
-        *                     created at the specified time (which may be archived or current).
-        *
-        *     ignoreRedirect: If true, do not follow file redirects
-        *
-        *     private:        If true, return restricted (deleted) files if the current
-        *                     user is allowed to view them. Otherwise, such files will not
-        *                     be found.
+        *   time:           requested time for a specific file version, or false for the
+        *                   current version. An image object will be returned which was
+        *                   created at the specified time (which may be archived or current).
+        *   ignoreRedirect: If true, do not follow file redirects
+        *   private:        If true, return restricted (deleted) files if the current
+        *                   user is allowed to view them. Otherwise, such files will not
+        *                   be found.
         * @return File|bool False on failure
         */
        public function findFile( $title, $options = array() ) {
@@ -390,9 +455,11 @@ class FileRepo {
                        }
                        if ( $img->exists() ) {
                                $img->redirectedFrom( $title->getDBkey() );
+
                                return $img;
                        }
                }
+
                return false;
        }
 
@@ -405,7 +472,9 @@ class FileRepo {
         *     $findItem = array( 'title' => $title, 'private' => true );
         *     $findBatch = array( $findItem );
         *     $repo->findFiles( $findBatch );
-        * @return array
+        *
+        *    No title should appear in $items twice, as the result use titles as keys
+        * @return array (Map of file names => File objects) for matches
         */
        public function findFiles( array $items ) {
                $result = array();
@@ -423,6 +492,7 @@ class FileRepo {
                                $result[$file->getTitle()->getDBkey()] = $file;
                        }
                }
+
                return $result;
        }
 
@@ -431,7 +501,7 @@ class FileRepo {
         * Returns false if the file does not exist. Repositories not supporting
         * version control should return false if the time is specified.
         *
-        * @param string $sha1 base 36 SHA-1 hash
+        * @param string $sha1 Base 36 SHA-1 hash
         * @param array $options Option array, same as findFile().
         * @return File|bool False on failure
         */
@@ -457,6 +527,7 @@ class FileRepo {
                                }
                        }
                }
+
                return false;
        }
 
@@ -465,7 +536,7 @@ class FileRepo {
         * SHA-1 content hash.
         *
         * STUB
-        * @param $hash
+        * @param string $hash SHA-1 hash
         * @return array
         */
        public function findBySha1( $hash ) {
@@ -487,6 +558,7 @@ class FileRepo {
                                $result[$hash] = $files;
                        }
                }
+
                return $result;
        }
 
@@ -531,10 +603,10 @@ 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
+        * @param Title $title
+        * @return string
         */
        public function getNameFromTitle( Title $title ) {
                global $wgContLang;
@@ -546,6 +618,7 @@ class FileRepo {
                } else {
                        $name = $title->getDBkey();
                }
+
                return $name;
        }
 
@@ -583,8 +656,8 @@ class FileRepo {
        }
 
        /**
-        * @param $name
-        * @param $levels
+        * @param string $name
+        * @param int $levels
         * @return string
         */
        protected static function getHashPathForLevel( $name, $levels ) {
@@ -596,6 +669,7 @@ class FileRepo {
                        for ( $i = 1; $i <= $levels; $i++ ) {
                                $path .= substr( $hash, 0, $i ) . '/';
                        }
+
                        return $path;
                }
        }
@@ -603,7 +677,7 @@ class FileRepo {
        /**
         * Get the number of hash directory levels
         *
-        * @return integer
+        * @return int
         */
        public function getHashLevels() {
                return $this->hashLevels;
@@ -621,15 +695,17 @@ class FileRepo {
        /**
         * Make an url to this repo
         *
-        * @param $query mixed Query string to append
+        * @param string $query Query string to append
         * @param string $entry Entry point; defaults to index
         * @return string|bool False on failure
         */
        public function makeUrl( $query = '', $entry = 'index' ) {
                if ( isset( $this->scriptDirUrl ) ) {
                        $ext = isset( $this->scriptExtension ) ? $this->scriptExtension : '.php';
+
                        return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}{$ext}", $query );
                }
+
                return false;
        }
 
@@ -642,13 +718,13 @@ class FileRepo {
         * In particular, it uses the article paths as specified to the repository
         * constructor, whereas local repositories use the local Title functions.
         *
-        * @param $name string
+        * @param string $name
         * @return string
         */
        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 ) ) {
@@ -667,6 +743,7 @@ class FileRepo {
                        # and just sort of hope index.php is right. ;)
                        return $this->makeUrl( "title=Image:$encName" );
                }
+
                return false;
        }
 
@@ -676,8 +753,8 @@ class FileRepo {
         * repository's file class, since it may return invalid results. User code
         * should use File::getDescriptionText().
         *
-        * @param string $name name of image to fetch
-        * @param string $lang language to fetch it in, if any.
+        * @param string $name Name of image to fetch
+        * @param string $lang Language to fetch it in, if any.
         * @return string
         */
        public function getDescriptionRenderUrl( $name, $lang = null ) {
@@ -710,21 +787,22 @@ class FileRepo {
                        return $this->makeUrl( 'title=MediaWiki:Filepage.css&' .
                                wfArrayToCgi( Skin::getDynamicStylesheetQuery() ) );
                }
+
                return false;
        }
 
        /**
         * Store a file to a given destination.
         *
-        * @param string $srcPath source file system path, storage path, or virtual URL
-        * @param string $dstZone destination zone
-        * @param string $dstRel destination relative path
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::DELETE_SOURCE     Delete the source file after upload
-        *     self::OVERWRITE         Overwrite an existing destination file instead of failing
-        *     self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
-        *                             same contents as the source
-        *     self::SKIP_LOCKING      Skip any file locking when doing the store
+        * @param string $srcPath Source file system path, storage path, or virtual URL
+        * @param string $dstZone Destination zone
+        * @param string $dstRel Destination relative path
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::DELETE_SOURCE     Delete the source file after upload
+        *   self::OVERWRITE         Overwrite an existing destination file instead of failing
+        *   self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
+        *                           same contents as the source
+        *   self::SKIP_LOCKING      Skip any file locking when doing the store
         * @return FileRepoStatus
         */
        public function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) {
@@ -742,12 +820,12 @@ class FileRepo {
         * Store a batch of files
         *
         * @param array $triplets (src, dest zone, dest rel) triplets as per store()
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::DELETE_SOURCE     Delete the source file after upload
-        *     self::OVERWRITE         Overwrite an existing destination file instead of failing
-        *     self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
-        *                             same contents as the source
-        *     self::SKIP_LOCKING      Skip any file locking when doing the store
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::DELETE_SOURCE     Delete the source file after upload
+        *   self::OVERWRITE         Overwrite an existing destination file instead of failing
+        *   self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
+        *                           same contents as the source
+        *   self::SKIP_LOCKING      Skip any file locking when doing the store
         * @throws MWException
         * @return FileRepoStatus
         */
@@ -824,8 +902,8 @@ class FileRepo {
         * It will try to delete each file, but ignores any errors that may occur.
         *
         * @param array $files List of files to delete
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::SKIP_LOCKING      Skip any file locking when doing the deletions
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::SKIP_LOCKING      Skip any file locking when doing the deletions
         * @return FileRepoStatus
         */
        public function cleanupBatch( array $files, $flags = 0 ) {
@@ -958,9 +1036,9 @@ class FileRepo {
         * file can later be disposed using FileRepo::freeTemp().
         *
         * @param string $originalName the base name of the file as specified
-        *     by the user. The file extension will be maintained.
-        * @param string $srcPath the current location of the file.
-        * @return FileRepoStatus object with the URL in the value.
+        *   by the user. The file extension will be maintained.
+        * @param string $srcPath The current location of the file.
+        * @return FileRepoStatus Object with the URL in the value.
         */
        public function storeTemp( $originalName, $srcPath ) {
                $this->assertWritableRepo(); // fail out if read-only
@@ -979,8 +1057,8 @@ class FileRepo {
        /**
         * Remove a temporary file or mark it for garbage collection
         *
-        * @param string $virtualUrl the virtual URL returned by FileRepo::storeTemp()
-        * @return Boolean: true on success, false on failure
+        * @param string $virtualUrl The virtual URL returned by FileRepo::storeTemp()
+        * @return bool True on success, false on failure
         */
        public function freeTemp( $virtualUrl ) {
                $this->assertWritableRepo(); // fail out if read-only
@@ -988,6 +1066,7 @@ class FileRepo {
                $temp = $this->getVirtualUrl( 'temp' );
                if ( substr( $virtualUrl, 0, strlen( $temp ) ) != $temp ) {
                        wfDebug( __METHOD__ . ": Invalid temp virtual URL\n" );
+
                        return false;
                }
 
@@ -999,8 +1078,8 @@ class FileRepo {
         *
         * @param array $srcPaths Ordered list of source virtual URLs/storage paths
         * @param string $dstPath Target file system path
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::DELETE_SOURCE     Delete the source files
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::DELETE_SOURCE     Delete the source files
         * @return FileRepoStatus
         */
        public function concatenate( array $srcPaths, $dstPath, $flags = 0 ) {
@@ -1043,12 +1122,12 @@ class FileRepo {
         * Options to $options include:
         *   - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
         *
-        * @param string $srcPath the source file system path, storage path, or URL
-        * @param string $dstRel the destination relative path
-        * @param string $archiveRel the relative path where the existing file is to
-        *        be archived, if there is one. Relative to the public zone root.
-        * @param $flags Integer: bitfield, may be FileRepo::DELETE_SOURCE to indicate
-        *        that the source file should be deleted if possible
+        * @param string $srcPath The source file system path, storage path, or URL
+        * @param string $dstRel The destination relative path
+        * @param string $archiveRel The relative path where the existing file is to
+        *   be archived, if there is one. Relative to the public zone root.
+        * @param int $flags Bitfield, may be FileRepo::DELETE_SOURCE to indicate
+        *   that the source file should be deleted if possible
         * @param array $options Optional additional parameters
         * @return FileRepoStatus
         */
@@ -1075,9 +1154,9 @@ class FileRepo {
         * Publish a batch of files
         *
         * @param array $ntuples (source, dest, archive) triplets or
-        *        (source, dest, archive, options) 4-tuples as per publish().
-        * @param $flags Integer: bitfield, may be FileRepo::DELETE_SOURCE to indicate
-        *        that the source files should be deleted if possible
+        *   (source, dest, archive, options) 4-tuples as per publish().
+        * @param int $flags Bitfield, may be FileRepo::DELETE_SOURCE to indicate
+        *   that the source files should be deleted if possible
         * @throws MWException
         * @return FileRepoStatus
         */
@@ -1238,6 +1317,7 @@ class FileRepo {
         */
        public function fileExists( $file ) {
                $result = $this->fileExistsBatch( array( $file ) );
+
                return $result[0];
        }
 
@@ -1253,6 +1333,7 @@ class FileRepo {
                        $file = $this->resolveToStoragePath( $file );
                        $result[$key] = $this->backend->fileExists( array( 'src' => $file ) );
                }
+
                return $result;
        }
 
@@ -1261,9 +1342,9 @@ class FileRepo {
         * If no valid deletion archive exists, this may either delete the file
         * or throw an exception, depending on the preference of the repository
         *
-        * @param $srcRel Mixed: relative path for the file to be deleted
-        * @param $archiveRel Mixed: relative path for the archive location.
-        *        Relative to a private archive directory.
+        * @param mixed $srcRel Relative path for the file to be deleted
+        * @param mixed $archiveRel Relative path for the archive location.
+        *   Relative to a private archive directory.
         * @return FileRepoStatus object
         */
        public function delete( $srcRel, $archiveRel ) {
@@ -1282,10 +1363,10 @@ class FileRepo {
         * assumes a naming scheme in the deleted zone based on content hash, as
         * opposed to the public zone which is assumed to be unique.
         *
-        * @param array $sourceDestPairs of source/destination pairs. Each element
-        *        is a two-element array containing the source file path relative to the
-        *        public root in the first element, and the archive file path relative
-        *        to the deleted zone root in the second element.
+        * @param array $sourceDestPairs Array of source/destination pairs. Each element
+        *   is a two-element array containing the source file path relative to the
+        *   public root in the first element, and the archive file path relative
+        *   to the deleted zone root in the second element.
         * @throws MWException
         * @return FileRepoStatus
         */
@@ -1355,7 +1436,7 @@ class FileRepo {
         * Get a relative path for a deletion archive key,
         * e.g. s/z/a/ for sza251lrxrc1jad41h5mgilp8nysje52.jpg
         *
-        * @param $key string
+        * @param string $key
         * @throws MWException
         * @return string
         */
@@ -1367,6 +1448,7 @@ class FileRepo {
                for ( $i = 0; $i < $this->deletedHashLevels; $i++ ) {
                        $path .= $key[$i] . '/';
                }
+
                return $path;
        }
 
@@ -1374,7 +1456,7 @@ class FileRepo {
         * If a path is a virtual URL, resolve it to a storage path.
         * Otherwise, just return the path as it is.
         *
-        * @param $path string
+        * @param string $path
         * @return string
         * @throws MWException
         */
@@ -1382,6 +1464,7 @@ class FileRepo {
                if ( $this->isVirtualUrl( $path ) ) {
                        return $this->resolveVirtualUrl( $path );
                }
+
                return $path;
        }
 
@@ -1389,11 +1472,12 @@ class FileRepo {
         * Get a local FS copy of a file with a given virtual URL/storage path.
         * Temporary files may be purged when the file object falls out of scope.
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return TempFSFile|null Returns null on failure
         */
        public function getLocalCopy( $virtualUrl ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
+
                return $this->backend->getLocalCopy( array( 'src' => $path ) );
        }
 
@@ -1402,11 +1486,12 @@ class FileRepo {
         * The file is either an original or a copy. It should not be changed.
         * Temporary files may be purged when the file object falls out of scope.
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return FSFile|null Returns null on failure.
         */
        public function getLocalReference( $virtualUrl ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
+
                return $this->backend->getLocalReference( array( 'src' => $path ) );
        }
 
@@ -1414,57 +1499,62 @@ class FileRepo {
         * Get properties of a file with a given virtual URL/storage path.
         * Properties should ultimately be obtained via FSFile::getProps().
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return Array
         */
        public function getFileProps( $virtualUrl ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
+
                return $this->backend->getFileProps( array( 'src' => $path ) );
        }
 
        /**
         * Get the timestamp of a file with a given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return string|bool False on failure
         */
        public function getFileTimestamp( $virtualUrl ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
+
                return $this->backend->getFileTimestamp( array( 'src' => $path ) );
        }
 
        /**
         * Get the size of a file with a given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return integer|bool False on failure
         */
        public function getFileSize( $virtualUrl ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
+
                return $this->backend->getFileSize( array( 'src' => $path ) );
        }
 
        /**
         * Get the sha1 (base 36) of a file with a given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return string|bool
         */
        public function getFileSha1( $virtualUrl ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
+
                return $this->backend->getFileSha1Base36( array( 'src' => $path ) );
        }
 
        /**
         * Attempt to stream a file with the given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @param array $headers Additional HTTP headers to send on success
         * @return bool Success
         */
        public function streamFile( $virtualUrl, $headers = array() ) {
                $path = $this->resolveToStoragePath( $virtualUrl );
                $params = array( 'src' => $path, 'headers' => $headers );
+
                return $this->backend->streamFile( $params )->isOK();
        }
 
@@ -1473,7 +1563,7 @@ class FileRepo {
         * This only acts on the current version of files, not any old versions.
         * May use either the database or the filesystem.
         *
-        * @param $callback Array|string
+        * @param array|string $callback
         * @return void
         */
        public function enumFiles( $callback ) {
@@ -1484,7 +1574,7 @@ class FileRepo {
         * Call a callback function for every public file in the repository.
         * May use either the database or the filesystem.
         *
-        * @param $callback Array|string
+        * @param array|string $callback
         * @return void
         */
        protected function enumFilesInStorage( $callback ) {
@@ -1516,13 +1606,14 @@ class FileRepo {
                if ( strval( $filename ) == '' ) {
                        return false;
                }
+
                return FileBackend::isPathTraversalFree( $filename );
        }
 
        /**
         * Get a callback function to use for cleaning error message parameters
         *
-        * @return Array
+        * @return array
         */
        function getErrorCleanupFunction() {
                switch ( $this->pathDisclosureProtection ) {
@@ -1539,7 +1630,7 @@ class FileRepo {
        /**
         * Path disclosure protection function
         *
-        * @param $param string
+        * @param string $param
         * @return string
         */
        function paranoidClean( $param ) {
@@ -1549,7 +1640,7 @@ class FileRepo {
        /**
         * Path disclosure protection function
         *
-        * @param $param string
+        * @param string $param
         * @return string
         */
        function passThrough( $param ) {
@@ -1559,18 +1650,20 @@ class FileRepo {
        /**
         * Create a new fatal error
         *
+        * @param $message
         * @return FileRepoStatus
         */
        public function newFatal( $message /*, parameters...*/ ) {
                $params = func_get_args();
                array_unshift( $params, $this );
+
                return call_user_func_array( array( 'FileRepoStatus', 'newFatal' ), $params );
        }
 
        /**
         * Create a new good result
         *
-        * @param $value null|string
+        * @param null|string $value
         * @return FileRepoStatus
         */
        public function newGood( $value = null ) {
@@ -1582,8 +1675,8 @@ class FileRepo {
         * title object. If not, return false.
         * STUB
         *
-        * @param $title Title of image
-        * @return Bool
+        * @param Title $title Title of image
+        * @return bool
         */
        public function checkRedirect( Title $title ) {
                return false;
@@ -1594,9 +1687,10 @@ class FileRepo {
         * Doesn't do anything for repositories that don't support image redirects.
         *
         * STUB
-        * @param $title Title of image
+        * @param Title $title Title of image
         */
-       public function invalidateImageRedirect( Title $title ) {}
+       public function invalidateImageRedirect( Title $title ) {
+       }
 
        /**
         * Get the human-readable name of the repo
@@ -1608,6 +1702,7 @@ class FileRepo {
                if ( $this->isLocal() ) {
                        return null;
                }
+
                // 'shared-repo-name-wikimediacommons' is used when $wgUseInstantCommons = true
                return wfMessageFallback( 'shared-repo-name-' . $this->name, 'shared-repo' )->text();
        }
@@ -1624,6 +1719,7 @@ class FileRepo {
                        $ext = FileBackend::extensionFromPath( $name );
                        $name = ( $ext == '' ) ? 'thumbnail' : "thumbnail.$ext";
                }
+
                return $name;
        }
 
@@ -1658,6 +1754,7 @@ class FileRepo {
        public function getLocalCacheKey( /*...*/ ) {
                $args = func_get_args();
                array_unshift( $args, 'filerepo', $this->getName() );
+
                return call_user_func_array( 'wfMemcKey', $args );
        }
 
@@ -1680,13 +1777,13 @@ class FileRepo {
                                ),
                                'thumb' => array(
                                        'container' => $this->zones['thumb']['container'],
-                                       'directory' => ( $this->zones['thumb']['directory'] == '' )
+                                       'directory' => $this->zones['thumb']['directory'] == ''
                                                ? 'temp'
                                                : $this->zones['thumb']['directory'] . '/temp'
                                ),
                                'transcoded' => array(
                                        'container' => $this->zones['transcoded']['container'],
-                                       'directory' => ( $this->zones['transcoded']['directory'] == '' )
+                                       'directory' => $this->zones['transcoded']['directory'] == ''
                                                ? 'temp'
                                                : $this->zones['transcoded']['directory'] . '/temp'
                                )
@@ -1701,7 +1798,7 @@ class FileRepo {
        /**
         * Get an UploadStash associated with this repo.
         *
-        * @param $user User
+        * @param User $user
         * @return UploadStash
         */
        public function getUploadStash( User $user = null ) {
@@ -1715,8 +1812,8 @@ class FileRepo {
         * @return void
         * @throws MWException
         */
-       protected function assertWritableRepo() {}
-
+       protected function assertWritableRepo() {
+       }
 
        /**
         * Return information about the repository.
@@ -1725,12 +1822,24 @@ class FileRepo {
         * @since 1.22
         */
        public function getInfo() {
-               return array(
+               $ret = array(
                        'name' => $this->getName(),
                        'displayname' => $this->getDisplayName(),
-                       'rootUrl' => $this->getRootUrl(),
+                       'rootUrl' => $this->getZoneUrl( 'public' ),
                        'local' => $this->isLocal(),
                );
+
+               $optionalSettings = array(
+                       'url', 'thumbUrl', 'initialCapital', 'descBaseUrl', 'scriptDirUrl', 'articleUrl',
+                       'fetchDescription', 'descriptionCacheExpiry', 'scriptExtension'
+               );
+               foreach ( $optionalSettings as $k ) {
+                       if ( isset( $this->$k ) ) {
+                               $ret[$k] = $this->$k;
+                       }
+               }
+
+               return $ret;
        }
 }
 
index 5300e5e..4be38bf 100644 (file)
@@ -37,6 +37,7 @@ class FileRepoStatus extends Status {
                $result = new self( $repo );
                call_user_func_array( array( &$result, 'error' ), $params );
                $result->ok = false;
+
                return $result;
        }
 
@@ -48,11 +49,12 @@ class FileRepoStatus extends Status {
        static function newGood( $repo = false, $value = null ) {
                $result = new self( $repo );
                $result->value = $value;
+
                return $result;
        }
 
        /**
-        * @param $repo FileRepo
+        * @param bool|FileRepo $repo
         */
        function __construct( $repo = false ) {
                if ( $repo ) {
index e64c88a..8906834 100644 (file)
@@ -52,15 +52,19 @@ 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  */
        protected $mFileExists = array();
 
+       /** @var array  */
+       private $mQueryCache = array();
+
        /**
         * @param $info array|null
         */
@@ -102,19 +106,20 @@ class ForeignAPIRepo extends FileRepo {
         * Per docs in FileRepo, this needs to return false if we don't support versioned
         * files. Well, we don't.
         *
-        * @param $title Title
-        * @param $time string|bool
+        * @param Title $title
+        * @param string|bool $time
         * @return File
         */
        function newFile( $title, $time = false ) {
                if ( $time ) {
                        return false;
                }
+
                return parent::newFile( $title, $time );
        }
 
        /**
-        * @param $files array
+        * @param array $files
         * @return array
         */
        function fileExistsBatch( array $files ) {
@@ -136,8 +141,11 @@ class ForeignAPIRepo extends FileRepo {
                        }
                }
 
-               $data = $this->fetchImageQuery( array( 'titles' => implode( $files, '|' ),
-                                                                                       'prop' => 'imageinfo' ) );
+               $data = $this->fetchImageQuery( array(
+                       'titles' => implode( $files, '|' ),
+                       'prop' => 'imageinfo' )
+               );
+
                if ( isset( $data['query']['pages'] ) ) {
                        # First, get results from the query. Note we only care whether the image exists,
                        # not whether it has a description page.
@@ -161,11 +169,12 @@ class ForeignAPIRepo extends FileRepo {
                                $results[$key] = $this->mFileExists[$file];
                        }
                }
+
                return $results;
        }
 
        /**
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return bool
         */
        function getFileProps( $virtualUrl ) {
@@ -173,7 +182,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $query array
+        * @param array $query
         * @return string
         */
        function fetchImageQuery( $query ) {
@@ -200,7 +209,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $data array
+        * @param array $data
         * @return bool|array
         */
        function getImageInfo( $data ) {
@@ -211,11 +220,12 @@ class ForeignAPIRepo extends FileRepo {
                                }
                        }
                }
+
                return false;
        }
 
        /**
-        * @param $hash string
+        * @param string $hash
         * @return array
         */
        function findBySha1( $hash ) {
@@ -234,15 +244,16 @@ class ForeignAPIRepo extends FileRepo {
                                $ret[] = new ForeignAPIFile( Title::makeTitle( NS_FILE, $img['name'] ), $this, $img );
                        }
                }
+
                return $ret;
        }
 
        /**
-        * @param $name string
-        * @param $width int
-        * @param $height int
-        * @param $result null
-        * @param $otherParams string
+        * @param string $name
+        * @param int $width
+        * @param int $height
+        * @param null $result
+        * @param string $otherParams
         * @return bool
         */
        function getThumbUrl( $name, $width = -1, $height = -1, &$result = null, $otherParams = '' ) {
@@ -258,6 +269,7 @@ class ForeignAPIRepo extends FileRepo {
                if ( $data && $info && isset( $info['thumburl'] ) ) {
                        wfDebug( __METHOD__ . " got remote thumb " . $info['thumburl'] . "\n" );
                        $result = $info;
+
                        return $info['thumburl'];
                } else {
                        return false;
@@ -265,10 +277,11 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $name string
-        * @param $width int
-        * @param $height int
-        * @param $otherParams string
+        * @param string $name
+        * @param int $width
+        * @param int $height
+        * @param string $otherParams
+        * @param string $lang Language code for language of error
         * @return bool|MediaTransformError
         * @since 1.22
         */
@@ -286,6 +299,7 @@ class ForeignAPIRepo extends FileRepo {
 
                if ( $data && $info && isset( $info['thumberror'] ) ) {
                        wfDebug( __METHOD__ . " got remote thumb error " . $info['thumberror'] . "\n" );
+
                        return new MediaTransformError(
                                'thumbnail_error_remote',
                                $width,
@@ -305,9 +319,10 @@ class ForeignAPIRepo extends FileRepo {
         * Otherwise retrieve remote thumb url, check for local file.
         *
         * @param string $name is a dbkey form of a title
-        * @param $width
-        * @param $height
-        * @param string $params Other rendering parameters (page number, etc) from handler's makeParamString.
+        * @param int $width
+        * @param int $height
+        * @param string $params Other rendering parameters (page number, etc)
+        *   from handler's makeParamString.
         * @return bool|string
         */
        function getThumbUrlFromCache( $name, $width, $height, $params = "" ) {
@@ -332,6 +347,7 @@ class ForeignAPIRepo extends FileRepo {
                        if ( isset( $knownThumbUrls[$sizekey] ) ) {
                                wfDebug( __METHOD__ . ': Got thumburl from local cache: ' .
                                        "{$knownThumbUrls[$sizekey]} \n" );
+
                                return $knownThumbUrls[$sizekey];
                        }
                        /* This size is not yet known */
@@ -342,6 +358,7 @@ class ForeignAPIRepo extends FileRepo {
 
                if ( !$foreignUrl ) {
                        wfDebug( __METHOD__ . " Could not find thumburl\n" );
+
                        return false;
                }
 
@@ -349,14 +366,17 @@ class ForeignAPIRepo extends FileRepo {
                $fileName = rawurldecode( pathinfo( $foreignUrl, PATHINFO_BASENAME ) );
                if ( !$this->validateFilename( $fileName ) ) {
                        wfDebug( __METHOD__ . " The deduced filename $fileName is not safe\n" );
+
                        return false;
                }
                $localPath = $this->getZonePath( 'thumb' ) . "/" . $this->getHashPath( $name ) . $name;
                $localFilename = $localPath . "/" . $fileName;
-               $localUrl = $this->getZoneUrl( 'thumb' ) . "/" . $this->getHashPath( $name ) . rawurlencode( $name ) . "/" . rawurlencode( $fileName );
+               $localUrl = $this->getZoneUrl( 'thumb' ) . "/" . $this->getHashPath( $name ) .
+                       rawurlencode( $name ) . "/" . rawurlencode( $fileName );
 
                if ( $backend->fileExists( array( 'src' => $localFilename ) )
-                       && isset( $metadata['timestamp'] ) ) {
+                       && isset( $metadata['timestamp'] )
+               ) {
                        wfDebug( __METHOD__ . " Thumbnail was already downloaded before\n" );
                        $modified = $backend->getFileTimestamp( array( 'src' => $localFilename ) );
                        $remoteModified = strtotime( $metadata['timestamp'] );
@@ -366,6 +386,7 @@ class ForeignAPIRepo extends FileRepo {
                                /* Use our current and already downloaded thumbnail */
                                $knownThumbUrls[$sizekey] = $localUrl;
                                $wgMemc->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
+
                                return $localUrl;
                        }
                        /* There is a new Commons file, or existing thumbnail older than a month */
@@ -373,6 +394,7 @@ class ForeignAPIRepo extends FileRepo {
                $thumb = self::httpGet( $foreignUrl );
                if ( !$thumb ) {
                        wfDebug( __METHOD__ . " Could not download thumb\n" );
+
                        return false;
                }
 
@@ -381,17 +403,19 @@ class ForeignAPIRepo extends FileRepo {
                $params = array( 'dst' => $localFilename, 'content' => $thumb );
                if ( !$backend->quickCreate( $params )->isOK() ) {
                        wfDebug( __METHOD__ . " could not write to thumb path '$localFilename'\n" );
+
                        return $foreignUrl;
                }
                $knownThumbUrls[$sizekey] = $localUrl;
                $wgMemc->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
                wfDebug( __METHOD__ . " got local thumb $localUrl, saving to cache \n" );
+
                return $localUrl;
        }
 
        /**
         * @see FileRepo::getZoneUrl()
-        * @param $zone String
+        * @param string $zone
         * @param string|null $ext Optional file extension
         * @return String
         */
@@ -408,7 +432,7 @@ class ForeignAPIRepo extends FileRepo {
 
        /**
         * Get the local directory corresponding to one of the basic zones
-        * @param $zone string
+        * @param string $zone
         * @return bool|null|string
         */
        function getZonePath( $zone ) {
@@ -416,6 +440,7 @@ class ForeignAPIRepo extends FileRepo {
                if ( in_array( $zone, $supported ) ) {
                        return parent::getZonePath( $zone );
                }
+
                return false;
        }
 
@@ -468,9 +493,9 @@ class ForeignAPIRepo extends FileRepo {
        /**
         * Like a Http:get request, but with custom User-Agent.
         * @see Http:get
-        * @param $url string
-        * @param $timeout string
-        * @param $options array
+        * @param string $url
+        * @param string $timeout
+        * @param array $options
         * @return bool|String
         */
        public static function httpGet( $url, $timeout = 'default', $options = array() ) {
@@ -505,9 +530,10 @@ class ForeignAPIRepo extends FileRepo {
 
        /**
         * HTTP GET request to a mediawiki API (with caching)
-        * @param $target string Used in cache key creation, mostly
-        * @param $query array The query parameters for the API request
-        * @param $cacheTTL int Time to live for the memcached caching
+        * @param string $target Used in cache key creation, mostly
+        * @param array $query The query parameters for the API request
+        * @param int $cacheTTL Time to live for the memcached caching
+        * @return null
         */
        public function httpGetCached( $target, $query, $cacheTTL = 3600 ) {
                if ( $this->mApiBase ) {
@@ -544,7 +570,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $callback Array|string
+        * @param array|string $callback
         * @throws MWException
         */
        function enumFiles( $callback ) {
index 37c6572..92f017f 100644 (file)
  * @ingroup FileRepo
  */
 class ForeignDBRepo extends LocalRepo {
-       # Settings
-       var $dbType, $dbServer, $dbUser, $dbPassword, $dbName, $dbFlags,
-               $tablePrefix, $hasSharedCache;
+       /** @var string */
+       protected $dbType;
+
+       /** @var string */
+       protected $dbServer;
+
+       /** @var string */
+       protected $dbUser;
+
+       /** @var string */
+       protected $dbPassword;
+
+       /** @var string */
+       protected $dbName;
+
+       /** @var string */
+       protected $dbFlags;
+
+       /** @var string */
+       protected $tablePrefix;
+
+       /** @var bool */
+       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
+        * @param array|null $info
         */
        function __construct( $info ) {
                parent::__construct( $info );
@@ -68,6 +88,7 @@ class ForeignDBRepo extends LocalRepo {
                                )
                        );
                }
+
                return $this->dbConn;
        }
 
@@ -95,6 +116,7 @@ class ForeignDBRepo extends LocalRepo {
                if ( $this->hasSharedCache() ) {
                        $args = func_get_args();
                        array_unshift( $args, $this->dbName, $this->tablePrefix );
+
                        return call_user_func_array( 'wfForeignMemcKey', $args );
                } else {
                        return false;
index 7951fb1..18f8d5d 100644 (file)
  * @ingroup FileRepo
  */
 class ForeignDBViaLBRepo extends LocalRepo {
-       var $wiki, $dbName, $tablePrefix;
-       var $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
-       var $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
+       /** @var string */
+       protected $wiki;
+
+       /** @var string */
+       protected $dbName;
+
+       /** @var string */
+       protected $tablePrefix;
+
+       /** @var array */
+       protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
+
+       /** @var array */
+       protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
 
        /**
-        * @param $info array|null
+        * @param array|null $info
         */
        function __construct( $info ) {
                parent::__construct( $info );
@@ -69,6 +80,7 @@ class ForeignDBViaLBRepo extends LocalRepo {
                if ( $this->hasSharedCache() ) {
                        $args = func_get_args();
                        array_unshift( $args, $this->wiki );
+
                        return implode( ':', $args );
                } else {
                        return false;
index 9b62243..aa851ff 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'   );
+       /** @var array */
+       protected $fileFactory = array( 'LocalFile', 'newFromTitle' );
+
+       /** @var array */
+       protected $fileFactoryKey = array( 'LocalFile', 'newFromKey' );
+
+       /** @var array */
+       protected $fileFromRowFactory = array( 'LocalFile', 'newFromRow' );
+
+       /** @var array */
+       protected $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' );
+
+       /** @var array */
+       protected $oldFileFactory = array( 'OldLocalFile', 'newFromTitle' );
+
+       /** @var array */
+       protected $oldFileFactoryKey = array( 'OldLocalFile', 'newFromKey' );
 
        /**
         * @throws MWException
-        * @param $row
+        * @param array $row
         * @return LocalFile
         */
        function newFileFromRow( $row ) {
@@ -52,8 +63,8 @@ class LocalRepo extends FileRepo {
        }
 
        /**
-        * @param $title
-        * @param $archiveName
+        * @param Title $title
+        * @param string $archiveName
         * @return OldLocalFile
         */
        function newFromArchiveName( $title, $archiveName ) {
@@ -66,7 +77,7 @@ class LocalRepo extends FileRepo {
         * interleave database locks with file operations, which is potentially a
         * remote operation.
         *
-        * @param $storageKeys array
+        * @param array $storageKeys
         *
         * @return FileRepoStatus
         */
@@ -97,6 +108,7 @@ class LocalRepo extends FileRepo {
                        }
                        $dbw->commit( __METHOD__ );
                }
+
                return $status;
        }
 
@@ -111,6 +123,7 @@ class LocalRepo extends FileRepo {
                $options = ( $lock === 'lock' ) ? array( 'FOR UPDATE' ) : array();
 
                $dbw = $this->getMasterDB();
+
                return (bool)$dbw->selectField( 'filearchive', '1',
                        array( 'fa_storage_group' => 'deleted', 'fa_storage_key' => $key ),
                        __METHOD__, $options
@@ -131,6 +144,7 @@ class LocalRepo extends FileRepo {
                $ext = File::normalizeExtension( substr( $key, strcspn( $key, '.' ) + 1 ) );
 
                $dbw = $this->getMasterDB();
+
                return (bool)$dbw->selectField( 'oldimage', '1',
                        array( 'oi_sha1' => $sha1,
                                'oi_archive_name ' . $dbw->buildLike( $dbw->anyString(), ".$ext" ),
@@ -152,7 +166,7 @@ class LocalRepo extends FileRepo {
        /**
         * Checks if there is a redirect named as $title
         *
-        * @param $title Title of file
+        * @param Title $title Title of file
         * @return bool
         */
        function checkRedirect( Title $title ) {
@@ -178,6 +192,7 @@ class LocalRepo extends FileRepo {
                $id = $this->getArticleID( $title );
                if ( !$id ) {
                        $wgMemc->add( $memcKey, " ", $expiry );
+
                        return false;
                }
                $dbr = $this->getSlaveDB();
@@ -191,9 +206,11 @@ class LocalRepo extends FileRepo {
                if ( $row && $row->rd_namespace == NS_FILE ) {
                        $targetTitle = Title::makeTitle( $row->rd_namespace, $row->rd_title );
                        $wgMemc->add( $memcKey, $targetTitle->getDBkey(), $expiry );
+
                        return $targetTitle;
                } else {
                        $wgMemc->add( $memcKey, '', $expiry );
+
                        return false;
                }
        }
@@ -202,7 +219,7 @@ class LocalRepo extends FileRepo {
         * Function link Title::getArticleID().
         * We can't say Title object, what database it should use, so we duplicate that function here.
         *
-        * @param $title Title
+        * @param Title $title
         * @return bool|int|mixed
         */
        protected function getArticleID( $title ) {
@@ -219,15 +236,100 @@ class LocalRepo extends FileRepo {
                        ),
                        __METHOD__ //Function name
                );
+
                return $id;
        }
 
+       public function findFiles( array $items ) {
+               $finalFiles = array(); // map of (DB key => corresponding File) for matches
+
+               $searchSet = array(); // map of (DB key => normalized search params)
+               foreach ( $items as $item ) {
+                       $title = is_array( $item )
+                               ? File::normalizeTitle( $item['title'] )
+                               : File::normalizeTitle( $item );
+                       if ( $title ) { // valid title
+                               $searchSet[$title->getDbKey()] = ( is_array( $item ) ? $item : array() );
+                       }
+               }
+
+               $fileMatchesSearch = function( File $file, array $search ) {
+                       // Note: file name comparison done elsewhere (to handle redirects)
+                       return (
+                               $file->exists() &&
+                               (
+                                       ( empty( $search['time'] ) && !$file->isOld() ) ||
+                                       ( !empty( $search['time'] ) && $search['time'] === $file->getTimestamp() )
+                               ) &&
+                               ( !empty( $search['private'] ) || !$file->isDeleted( File::DELETED_FILE ) ) &&
+                               $file->userCan( File::DELETED_FILE )
+                       );
+               };
+
+               $repo = $this;
+               $applyMatchingFiles = function( ResultWrapper $res, &$searchSet, &$finalFiles )
+                       use ( $repo, $fileMatchesSearch )
+               {
+                       foreach ( $res as $row ) {
+                               $possFile = $repo->newFileFromRow( $row );
+                               $dbKey = $possFile->getName();
+                               // There must have been a search for this DB Key
+                               if ( $fileMatchesSearch( $possFile, $searchSet[$dbKey] ) ) {
+                                       $finalFiles[$dbKey] = $possFile;
+                                       unset( $searchSet[$dbKey] );
+                               }
+                       }
+               };
+
+               $dbr = $this->getSlaveDB();
+
+               // Query image table
+               $imgNames = array_keys( $searchSet );
+               if ( count( $imgNames ) ) {
+                       $res = $dbr->select( 'image',
+                               LocalFile::selectFields(), array( 'img_name' => $imgNames ), __METHOD__ );
+                       $applyMatchingFiles( $res, $searchSet, $finalFiles );
+               }
+
+               // Query old image table
+               $oiConds = array(); // WHERE clause array for each file
+               foreach ( $searchSet as $dbKey => $search ) {
+                       if ( isset( $search['params']['time'] ) ) {
+                               $oiConds[] = $dbr->makeList( array( 'oi_name' => $dbKey,
+                                       'oi_timestamp' => $dbr->timestamp( $search['params']['time'] ) ), LIST_AND );
+                       }
+               }
+               if ( count( $oiConds ) ) {
+                       $res = $dbr->select( 'oldimage',
+                               OldLocalFile::selectFields(), $dbr->makeList( $oiConds, LIST_OR ), __METHOD__ );
+                       $applyMatchingFiles( $res, $searchSet, $finalFiles );
+               }
+
+               // Check for redirects...
+               foreach ( $searchSet as $dbKey => $search ) {
+                       if ( !empty( $search['ignoreRedirect'] ) ) {
+                               continue;
+                       }
+                       $title = File::normalizeTitle( $dbKey );
+                       $redir = $this->checkRedirect( $title ); // hopefully hits memcached
+                       if ( $redir && $redir->getNamespace() == NS_FILE ) {
+                               $possFile = $this->newFile( $redir );
+                               if ( $possFile && $fileMatchesSearch( $possFile, $search ) ) {
+                                       $possFile->redirectedFrom( $title->getDBkey() );
+                                       $finalFiles[$dbKey] = $possFile;
+                               }
+                       }
+               }
+
+               return $finalFiles;
+       }
+
        /**
         * Get an array or iterator of file objects for files that have a given
         * SHA-1 content hash.
         *
         * @param string $hash a sha1 hash to look for
-        * @return Array
+        * @return array
         */
        function findBySha1( $hash ) {
                $dbr = $this->getSlaveDB();
@@ -299,13 +401,14 @@ class LocalRepo extends FileRepo {
                        'img_name ' . $dbr->buildLike( $prefix, $dbr->anyString() ),
                        __METHOD__,
                        $selectOptions
-                       );
+               );
 
                // Build file objects
                $files = array();
                foreach ( $res as $row ) {
                        $files[] = $this->newFileFromRow( $row );
                }
+
                return $files;
        }
 
@@ -334,13 +437,14 @@ class LocalRepo extends FileRepo {
         */
        function getSharedCacheKey( /*...*/ ) {
                $args = func_get_args();
+
                return call_user_func_array( 'wfMemcKey', $args );
        }
 
        /**
         * Invalidates image redirect cache related to that image
         *
-        * @param $title Title of page
+        * @param Title $title Title of page
         * @return void
         */
        function invalidateImageRedirect( Title $title ) {
index dda51ce..f2b7395 100644 (file)
  * @ingroup FileRepo
  */
 class NullRepo extends FileRepo {
-
        /**
-        * @param $info array|null
+        * @param array|null $info
         */
-       function __construct( $info ) {}
+       function __construct( $info ) {
+       }
 
        protected function assertWritableRepo() {
                throw new MWException( get_class( $this ) . ': write operations are not supported.' );
index b2b9477..f9b4fb4 100644 (file)
  * @ingroup FileRepo
  */
 class RepoGroup {
-       /**
-        * @var LocalRepo
-        */
-       var $localRepo;
+       /** @var LocalRepo */
+       protected $localRepo;
 
-       var $foreignRepos, $reposInitialised = false;
-       var $localInfo, $foreignInfo;
-       var $cache;
+       /** @var array */
+       protected $foreignRepos;
 
-       /**
-        * @var RepoGroup
-        */
+       /** @var bool */
+       protected $reposInitialised = false;
+
+       /** @var array */
+       protected $localInfo;
+
+       /** @var array */
+       protected $foreignInfo;
+
+       /** @var array  */
+       protected $cache;
+
+       /** @var RepoGroup */
        protected static $instance;
+
+       /** Maximum number of cache items */
        const MAX_CACHE_SIZE = 500;
 
        /**
@@ -53,6 +62,7 @@ class RepoGroup {
                }
                global $wgLocalFileRepo, $wgForeignFileRepos;
                self::$instance = new RepoGroup( $wgLocalFileRepo, $wgForeignFileRepos );
+
                return self::$instance;
        }
 
@@ -70,7 +80,7 @@ class RepoGroup {
         * It's not enough to just create a superclass ... you have
         * to get people to call into it even though all they know is RepoGroup::singleton()
         *
-        * @param $instance RepoGroup
+        * @param RepoGroup $instance
         */
        static function setSingleton( $instance ) {
                self::$instance = $instance;
@@ -81,9 +91,9 @@ class RepoGroup {
         *
         * @param array $localInfo Associative array for local repo's info
         * @param array $foreignInfo of repository info arrays.
-        *     Each info array is an associative array with the 'class' member
-        *     giving the class name. The entire array is passed to the repository
-        *     constructor as the first parameter.
+        *   Each info array is an associative array with the 'class' member
+        *   giving the class name. The entire array is passed to the repository
+        *   constructor as the first parameter.
         */
        function __construct( $localInfo, $foreignInfo ) {
                $this->localInfo = $localInfo;
@@ -97,18 +107,15 @@ class RepoGroup {
         *
         * @param $title Title|string Title object or string
         * @param array $options Associative array of options:
-        *     time:           requested time for an archived image, or false for the
-        *                     current version. An image object will be returned which was
-        *                     created at the specified time.
-        *
-        *     ignoreRedirect: If true, do not follow file redirects
-        *
-        *     private:        If true, return restricted (deleted) files if the current
-        *                     user is allowed to view them. Otherwise, such files will not
-        *                     be found.
-        *
-        *     bypassCache:    If true, do not use the process-local cache of File objects
-        * @return File object or false if it is not found
+        *   time:           requested time for an archived image, or false for the
+        *                   current version. An image object will be returned which was
+        *                   created at the specified time.
+        *   ignoreRedirect: If true, do not follow file redirects
+        *   private:        If true, return restricted (deleted) files if the current
+        *                   user is allowed to view them. Otherwise, such files will not
+        *                   be found.
+        *   bypassCache:    If true, do not use the process-local cache of File objects
+        * @return File|bool False if title is not found
         */
        function findFile( $title, $options = array() ) {
                if ( !is_array( $options ) ) {
@@ -126,14 +133,15 @@ class RepoGroup {
                # Check the cache
                if ( empty( $options['ignoreRedirect'] )
                        && empty( $options['private'] )
-                       && empty( $options['bypassCache'] ) )
-               {
+                       && empty( $options['bypassCache'] )
+               {
                        $time = isset( $options['time'] ) ? $options['time'] : '';
                        $dbkey = $title->getDBkey();
                        if ( isset( $this->cache[$dbkey][$time] ) ) {
                                wfDebug( __METHOD__ . ": got File:$dbkey from process cache\n" );
                                # Move it to the end of the list so that we can delete the LRU entry later
                                $this->pingCache( $dbkey );
+
                                # Return the entry
                                return $this->cache[$dbkey][$time];
                        }
@@ -166,7 +174,7 @@ class RepoGroup {
        }
 
        /**
-        * @param $inputItems array
+        * @param array $inputItems
         * @return array
         */
        function findFiles( $inputItems ) {
@@ -195,6 +203,7 @@ class RepoGroup {
 
                        $images = array_merge( $images, $repo->findFiles( $items ) );
                }
+
                return $images;
        }
 
@@ -218,6 +227,7 @@ class RepoGroup {
                                return $redir;
                        }
                }
+
                return false;
        }
 
@@ -243,6 +253,7 @@ class RepoGroup {
                                }
                        }
                }
+
                return $file;
        }
 
@@ -262,6 +273,7 @@ class RepoGroup {
                        $result = array_merge( $result, $repo->findBySha1( $hash ) );
                }
                usort( $result, 'File::compare' );
+
                return $result;
        }
 
@@ -269,7 +281,7 @@ class RepoGroup {
         * Find all instances of files with this keys
         *
         * @param array $hashes base 36 SHA-1 hashes
-        * @return Array of array of File objects
+        * @return array of array of File objects
         */
        function findBySha1s( array $hashes ) {
                if ( !$this->reposInitialised ) {
@@ -284,12 +296,13 @@ class RepoGroup {
                foreach ( $result as $hash => $files ) {
                        usort( $result[$hash], 'File::compare' );
                }
+
                return $result;
        }
 
        /**
         * Get the repo instance with a given key.
-        * @param $index string|int
+        * @param string|int $index
         * @return bool|LocalRepo
         */
        function getRepo( $index ) {
@@ -307,7 +320,7 @@ class RepoGroup {
 
        /**
         * Get the repo instance by its name
-        * @param $name string
+        * @param string $name
         * @return bool
         */
        function getRepoByName( $name ) {
@@ -319,6 +332,7 @@ class RepoGroup {
                                return $repo;
                        }
                }
+
                return false;
        }
 
@@ -336,8 +350,8 @@ class RepoGroup {
         * Call a function for each foreign repo, with the repo object as the
         * first parameter.
         *
-        * @param $callback Callback: the function to call
-        * @param array $params optional additional parameters to pass to the function
+        * @param callable $callback The function to call
+        * @param array $params Optional additional parameters to pass to the function
         * @return bool
         */
        function forEachForeignRepo( $callback, $params = array() ) {
@@ -347,12 +361,13 @@ class RepoGroup {
                                return true;
                        }
                }
+
                return false;
        }
 
        /**
         * Does the installation have any foreign repos set up?
-        * @return Boolean
+        * @return bool
         */
        function hasForeignRepos() {
                return (bool)$this->foreignRepos;
@@ -379,12 +394,13 @@ class RepoGroup {
         */
        protected function newRepo( $info ) {
                $class = $info['class'];
+
                return new $class( $info );
        }
 
        /**
         * Split a virtual URL into repo, zone and rel parts
-        * @param $url string
+        * @param string $url
         * @throws MWException
         * @return array containing repo, zone and rel
         */
@@ -397,11 +413,12 @@ class RepoGroup {
                if ( count( $bits ) != 3 ) {
                        throw new MWException( __METHOD__ . ": invalid mwrepo URL: $url" );
                }
+
                return $bits;
        }
 
        /**
-        * @param $fileName string
+        * @param string $fileName
         * @return array
         */
        function getFileProps( $fileName ) {
@@ -411,6 +428,7 @@ class RepoGroup {
                                $repoName = 'local';
                        }
                        $repo = $this->getRepo( $repoName );
+
                        return $repo->getFileProps( $fileName );
                } else {
                        return FSFile::getPropsFromPath( $fileName );
@@ -442,7 +460,7 @@ class RepoGroup {
 
        /**
         * Clear RepoGroup process cache used for finding a file
-        * @param $title Title|null Title of the file or null to clear all files
+        * @param Title|null $title Title of the file or null to clear all files
         */
        public function clearCache( Title $title = null ) {
                if ( $title == null ) {
index 749f11a..0d86c70 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 int filearchive row ID */
+       private $id;
 
-       /**
-        * @var MediaHandler
-        */
-       var $handler;
-       /**
-        * @var Title
+       /** @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
         */
-       var $title; # image title
+       private $pageCount;
+
+       /** @var string Original base filename */
+       private $archive_name;
 
-       /**#@-*/
+       /** @var MediaHandler */
+       protected $handler;
+
+       /** @var Title */
+       protected $title; # image title
 
        /**
         * @throws MWException
@@ -162,13 +195,13 @@ class ArchivedFile {
        /**
         * Loads a file object from the filearchive table
         *
-        * @param $row
-        *
+        * @param stdClass $row
         * @return ArchivedFile
         */
        public static function newFromRow( $row ) {
                $file = new ArchivedFile( Title::makeTitle( NS_FILE, $row->fa_name ) );
                $file->loadFromRow( $row );
+
                return $file;
        }
 
@@ -204,7 +237,7 @@ class ArchivedFile {
        /**
         * Load ArchivedFile object fields from a DB row.
         *
-        * @param $row Object database row
+        * @param stdClass $row Object database row
         * @since 1.21
         */
        public function loadFromRow( $row ) {
@@ -256,6 +289,7 @@ class ArchivedFile {
         */
        public function getID() {
                $this->load();
+
                return $this->id;
        }
 
@@ -264,6 +298,7 @@ class ArchivedFile {
         */
        public function exists() {
                $this->load();
+
                return $this->exists;
        }
 
@@ -273,6 +308,7 @@ class ArchivedFile {
         */
        public function getKey() {
                $this->load();
+
                return $this->key;
        }
 
@@ -298,6 +334,7 @@ class ArchivedFile {
         */
        public function getWidth() {
                $this->load();
+
                return $this->width;
        }
 
@@ -307,6 +344,7 @@ class ArchivedFile {
         */
        public function getHeight() {
                $this->load();
+
                return $this->height;
        }
 
@@ -316,6 +354,7 @@ class ArchivedFile {
         */
        public function getMetadata() {
                $this->load();
+
                return $this->metadata;
        }
 
@@ -325,6 +364,7 @@ class ArchivedFile {
         */
        public function getSize() {
                $this->load();
+
                return $this->size;
        }
 
@@ -334,6 +374,7 @@ class ArchivedFile {
         */
        public function getBits() {
                $this->load();
+
                return $this->bits;
        }
 
@@ -343,6 +384,7 @@ class ArchivedFile {
         */
        public function getMimeType() {
                $this->load();
+
                return $this->mime;
        }
 
@@ -354,6 +396,7 @@ class ArchivedFile {
                if ( !isset( $this->handler ) ) {
                        $this->handler = MediaHandler::getHandler( $this->getMimeType() );
                }
+
                return $this->handler;
        }
 
@@ -369,6 +412,7 @@ class ArchivedFile {
                                $this->pageCount = false;
                        }
                }
+
                return $this->pageCount;
        }
 
@@ -379,6 +423,7 @@ class ArchivedFile {
         */
        public function getMediaType() {
                $this->load();
+
                return $this->media_type;
        }
 
@@ -389,6 +434,7 @@ class ArchivedFile {
         */
        public function getTimestamp() {
                $this->load();
+
                return wfTimestamp( TS_MW, $this->timestamp );
        }
 
@@ -400,6 +446,7 @@ class ArchivedFile {
         */
        function getSha1() {
                $this->load();
+
                return $this->sha1;
        }
 
@@ -452,6 +499,7 @@ class ArchivedFile {
         */
        public function getRawUser() {
                $this->load();
+
                return $this->user;
        }
 
@@ -462,6 +510,7 @@ class ArchivedFile {
         */
        public function getRawUserText() {
                $this->load();
+
                return $this->user_text;
        }
 
@@ -472,6 +521,7 @@ class ArchivedFile {
         */
        public function getRawDescription() {
                $this->load();
+
                return $this->description;
        }
 
@@ -481,29 +531,32 @@ class ArchivedFile {
         */
        public function getVisibility() {
                $this->load();
+
                return $this->deleted;
        }
 
        /**
         * for file or revision rows
         *
-        * @param $field Integer: one of DELETED_* bitfield constants
+        * @param int $field One of DELETED_* bitfield constants
         * @return bool
         */
        public function isDeleted( $field ) {
                $this->load();
+
                return ( $this->deleted & $field ) == $field;
        }
 
        /**
         * Determine if the current user is allowed to view a particular
         * field of this FileStore image file, if it's marked as deleted.
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
+        * @param int $field
+        * @param null|User $user User object to check, or null to use $wgUser
         * @return bool
         */
        public function userCan( $field, User $user = null ) {
                $this->load();
+
                return Revision::userCanBitfield( $this->deleted, $field, $user );
        }
 }
index 5a5221f..1a22d92 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';
 
        /**
@@ -137,8 +156,8 @@ abstract class File {
         * may return false or throw exceptions if they are not set.
         * Most subclasses will want to call assertRepoDefined() here.
         *
-        * @param $title Title|string|bool
-        * @param $repo FileRepo|bool
+        * @param Title|string|bool $title
+        * @param FileRepo|bool $repo
         */
        function __construct( $title, $repo ) {
                if ( $title !== false ) { // subclasses may not use MW titles
@@ -152,7 +171,7 @@ abstract class File {
         * Given a string or Title object return either a
         * valid Title object with namespace NS_FILE or null
         *
-        * @param $title Title|string
+        * @param Title|string $title
         * @param string|bool $exception Use 'exception' to throw an error on bad titles
         * @throws MWException
         * @return Title|null
@@ -174,6 +193,7 @@ abstract class File {
                if ( !$ret && $exception !== false ) {
                        throw new MWException( "`$title` is not a valid file title." );
                }
+
                return $ret;
        }
 
@@ -183,6 +203,7 @@ abstract class File {
                        return null;
                } else {
                        $this->$name = call_user_func( $function );
+
                        return $this->$name;
                }
        }
@@ -214,7 +235,7 @@ abstract class File {
        /**
         * Checks if file extensions are compatible
         *
-        * @param $old File Old file
+        * @param File $old Old file
         * @param string $new New name
         *
         * @return bool|null
@@ -224,6 +245,7 @@ abstract class File {
                $n = strrpos( $new, '.' );
                $newExt = self::normalizeExtension( $n ? substr( $new, $n + 1 ) : '' );
                $mimeMagic = MimeMagic::singleton();
+
                return $mimeMagic->isMatchingExtension( $newExt, $oldMime );
        }
 
@@ -232,7 +254,8 @@ abstract class File {
         * Called by ImagePage
         * STUB
         */
-       function upgradeRow() {}
+       function upgradeRow() {
+       }
 
        /**
         * Split an internet media type into its two components; if not
@@ -252,10 +275,9 @@ abstract class File {
        /**
         * Callback for usort() to do file sorts by name
         *
-        * @param $a File
-        * @param $b File
-        *
-        * @return Integer: result of name comparison
+        * @param File $a
+        * @param File $b
+        * @return int Result of name comparison
         */
        public static function compare( File $a, File $b ) {
                return strcmp( $a->getName(), $b->getName() );
@@ -271,6 +293,7 @@ abstract class File {
                        $this->assertRepoDefined();
                        $this->name = $this->repo->getNameFromTitle( $this->title );
                }
+
                return $this->name;
        }
 
@@ -285,6 +308,7 @@ abstract class File {
                        $this->extension = self::normalizeExtension(
                                $n ? substr( $this->getName(), $n + 1 ) : '' );
                }
+
                return $this->extension;
        }
 
@@ -306,6 +330,7 @@ abstract class File {
                if ( $this->redirected ) {
                        return $this->getRedirectedTitle();
                }
+
                return $this->title;
        }
 
@@ -320,6 +345,7 @@ abstract class File {
                        $ext = $this->getExtension();
                        $this->url = $this->repo->getZoneUrl( 'public', $ext ) . '/' . $this->getUrlRel();
                }
+
                return $this->url;
        }
 
@@ -328,7 +354,7 @@ abstract class File {
         * Upload URL paths _may or may not_ be fully qualified, so
         * we check. Local paths are assumed to belong on $wgServer.
         *
-        * @return String
+        * @return string
         */
        public function getFullUrl() {
                return wfExpandUrl( $this->getUrl(), PROTO_RELATIVE );
@@ -351,6 +377,7 @@ abstract class File {
                        } else {
                                wfDebug( __METHOD__ . ': supposed to render ' . $this->getName() .
                                        ' (' . $this->getMimeType() . "), but can't!\n" );
+
                                return $this->getURL(); #hm... return NULL?
                        }
                } else {
@@ -376,6 +403,7 @@ abstract class File {
                        $this->assertRepoDefined();
                        $this->path = $this->repo->getZonePath( 'public' ) . '/' . $this->getRel();
                }
+
                return $this->path;
        }
 
@@ -394,6 +422,7 @@ abstract class File {
                                $this->fsFile = false; // null => false; cache negative hits
                        }
                }
+
                return ( $this->fsFile )
                        ? $this->fsFile->getPath()
                        : false;
@@ -406,9 +435,8 @@ abstract class File {
         * STUB
         * Overridden by LocalFile, UnregisteredLocalFile
         *
-        * @param $page int
-        *
-        * @return number
+        * @param int $page
+        * @return int|bool
         */
        public function getWidth( $page = 1 ) {
                return false;
@@ -421,9 +449,8 @@ abstract class File {
         * STUB
         * Overridden by LocalFile, UnregisteredLocalFile
         *
-        * @param $page int
-        *
-        * @return bool|number False on failure
+        * @param int $page
+        * @return bool|int False on failure
         */
        public function getHeight( $page = 1 ) {
                return false;
@@ -434,7 +461,6 @@ abstract class File {
         * STUB
         *
         * @param string $type 'text' or 'id'
-        *
         * @return string|int
         */
        public function getUser( $type = 'text' ) {
@@ -444,7 +470,7 @@ abstract class File {
        /**
         * Get the duration of a media file in seconds
         *
-        * @return number
+        * @return int
         */
        public function getLength() {
                $handler = $this->getHandler();
@@ -515,20 +541,22 @@ abstract class File {
        /**
         * Like getMetadata but returns a handler independent array of common values.
         * @see MediaHandler::getCommonMetaArray()
-        * @return Array or false if not supported
+        * @return array|bool Array or false if not supported
         * @since 1.23
         */
        public function getCommonMetaArray() {
                $handler = $this->getHandler();
+
                return $handler->getCommonMetaArray( $this );
        }
 
        /**
         * get versioned metadata
         *
-        * @param $metadata Mixed Array or String of (serialized) metadata
-        * @param $version integer version number.
-        * @return Array containing metadata, or what was passed to it on fail (unserializing if not array)
+        * @param array|string $metadata Array or string of (serialized) metadata
+        * @param int $version Version number.
+        * @return array Array containing metadata, or what was passed to it on fail
+        *   (unserializing if not array)
         */
        public function convertMetadataVersion( $metadata, $version ) {
                $handler = $this->getHandler();
@@ -601,6 +629,7 @@ abstract class File {
                if ( !isset( $this->canRender ) ) {
                        $this->canRender = $this->getHandler() && $this->handler->canRender( $this );
                }
+
                return $this->canRender;
        }
 
@@ -650,8 +679,9 @@ abstract class File {
         */
        function isSafeFile() {
                if ( !isset( $this->isSafeFile ) ) {
-                       $this->isSafeFile = $this->_getIsSafeFile();
+                       $this->isSafeFile = $this->getIsSafeFileUncached();
                }
+
                return $this->isSafeFile;
        }
 
@@ -669,7 +699,7 @@ abstract class File {
         *
         * @return bool
         */
-       protected function _getIsSafeFile() {
+       protected function getIsSafeFileUncached() {
                global $wgTrustedMediaFormats;
 
                if ( $this->allowInlineDisplay() ) {
@@ -724,7 +754,7 @@ abstract class File {
         *
         * Overridden by LocalFile to avoid unnecessary stat calls.
         *
-        * @return boolean Whether file exists in the repository.
+        * @return bool Whether file exists in the repository.
         */
        public function exists() {
                return $this->getPath() && $this->repo->fileExists( $this->path );
@@ -734,7 +764,7 @@ abstract class File {
         * Returns true if file exists in the repository and can be included in a page.
         * It would be unsafe to include private images, making public thumbnails inadvertently
         *
-        * @return boolean Whether file exists in the repository and is includable.
+        * @return bool Whether file exists in the repository and is includable.
         */
        public function isVisible() {
                return $this->exists();
@@ -753,13 +783,14 @@ abstract class File {
                                }
                        }
                }
+
                return $this->transformScript;
        }
 
        /**
         * Get a ThumbnailImage which is the same size as the source
         *
-        * @param $handlerParams array
+        * @param array $handlerParams
         *
         * @return string
         */
@@ -771,6 +802,7 @@ abstract class File {
                        return $this->iconThumb();
                }
                $hp['width'] = $width;
+
                return $this->transform( $hp );
        }
 
@@ -780,13 +812,14 @@ abstract class File {
         * Otherwise, the format may be "<params>-<source>" or "<params>-thumbnail.<ext>".
         *
         * @param array $params handler-specific parameters
-        * @param $flags integer Bitfield that supports THUMB_* constants
+        * @param int $flags Bitfield that supports THUMB_* constants
         * @return string
         */
        public function thumbName( $params, $flags = 0 ) {
                $name = ( $this->repo && !( $flags & self::THUMB_FULL_NAME ) )
                        ? $this->repo->nameForThumb( $this->getName() )
                        : $this->getName();
+
                return $this->generateThumbName( $name, $params );
        }
 
@@ -795,7 +828,6 @@ abstract class File {
         *
         * @param string $name
         * @param array $params Parameters which will be passed to MediaHandler::makeParamString
-        *
         * @return string
         */
        public function generateThumbName( $name, $params ) {
@@ -803,12 +835,13 @@ abstract class File {
                        return null;
                }
                $extension = $this->getExtension();
-               list( $thumbExt, $thumbMime ) = $this->handler->getThumbType(
+               list( $thumbExt, ) = $this->handler->getThumbType(
                        $extension, $this->getMimeType(), $params );
                $thumbName = $this->handler->makeParamString( $params ) . '-' . $name;
                if ( $thumbExt != $extension ) {
                        $thumbName .= ".$thumbExt";
                }
+
                return $thumbName;
        }
 
@@ -824,8 +857,8 @@ abstract class File {
         * specified, the generated image will be no bigger than width x height,
         * and will also have correct aspect ratio.
         *
-        * @param $width Integer: maximum width of the generated thumbnail
-        * @param $height Integer: maximum height of the image (optional)
+        * @param int $width Maximum width of the generated thumbnail
+        * @param int $height Maximum height of the image (optional)
         *
         * @return string
         */
@@ -838,6 +871,7 @@ abstract class File {
                if ( is_null( $thumb ) || $thumb->isError() ) {
                        return '';
                }
+
                return $thumb->getUrl();
        }
 
@@ -846,8 +880,8 @@ abstract class File {
         *
         * @param string $thumbPath Thumbnail storage path
         * @param string $thumbUrl Thumbnail URL
-        * @param $params Array
-        * @param $flags integer
+        * @param array $params
+        * @param int $flags
         * @return MediaTransformOutput
         */
        protected function transformErrorOutput( $thumbPath, $thumbUrl, $params, $flags ) {
@@ -866,8 +900,8 @@ abstract class File {
         * Transform a media file
         *
         * @param array $params an associative array of handler-specific parameters.
-        *                Typical keys are width, height and page.
-        * @param $flags Integer: a bitfield, may contain self::RENDER_NOW to force rendering
+        *   Typical keys are width, height and page.
+        * @param int $flags A bitfield, may contain self::RENDER_NOW to force rendering
         * @return MediaTransformOutput|bool False on failure
         */
        function transform( $params, $flags = 0 ) {
@@ -986,6 +1020,7 @@ abstract class File {
                } while ( false );
 
                wfProfileOut( __METHOD__ );
+
                return is_object( $thumb ) ? $thumb : false;
        }
 
@@ -999,6 +1034,7 @@ abstract class File {
                if ( $thumbExt != '' && $thumbExt !== $this->getExtension() ) {
                        $fileName .= ".$thumbExt";
                }
+
                return FileBackend::makeContentDisposition( 'inline', $fileName );
        }
 
@@ -1007,17 +1043,20 @@ abstract class File {
         * STUB
         * Overridden by LocalFile
         */
-       function migrateThumbFile( $thumbName ) {}
+       function migrateThumbFile( $thumbName ) {
+       }
 
        /**
         * Get a MediaHandler instance for this file
         *
-        * @return MediaHandler|boolean Registered MediaHandler for file's mime type or false if none found
+        * @return MediaHandler|bool Registered MediaHandler for file's MIME type
+        *   or false if none found
         */
        function getHandler() {
                if ( !isset( $this->handler ) ) {
                        $this->handler = MediaHandler::getHandler( $this->getMimeType() );
                }
+
                return $this->handler;
        }
 
@@ -1035,9 +1074,11 @@ abstract class File {
                        $filepath = $wgStyleDirectory . $path;
                        if ( file_exists( $filepath ) ) { // always FS
                                $params = array( 'width' => 120, 'height' => 120 );
+
                                return new ThumbnailImage( $this, $wgStylePath . $path, false, $params );
                        }
                }
+
                return null;
        }
 
@@ -1064,9 +1105,10 @@ abstract class File {
         * STUB
         * Overridden by LocalFile
         * @param array $options Options, which include:
-        *     'forThumbRefresh' : The purging is only to refresh thumbnails
+        *   'forThumbRefresh' : The purging is only to refresh thumbnails
         */
-       function purgeCache( $options = array() ) {}
+       function purgeCache( $options = array() ) {
+       }
 
        /**
         * Purge the file description page, but don't go after
@@ -1102,7 +1144,7 @@ abstract class File {
         * Return a fragment of the history of file.
         *
         * STUB
-        * @param $limit integer Limit of rows to return
+        * @param int $limit Limit of rows to return
         * @param string $start timestamp Only revisions older than $start will be returned
         * @param string $end timestamp Only revisions newer than $end will be returned
         * @param bool $inc Include the endpoints of the time range
@@ -1132,7 +1174,8 @@ abstract class File {
         * STUB
         * Overridden in LocalFile.
         */
-       public function resetHistory() {}
+       public function resetHistory() {
+       }
 
        /**
         * Get the filename hash component of the directory including trailing slash,
@@ -1146,6 +1189,7 @@ abstract class File {
                        $this->assertRepoDefined();
                        $this->hashPath = $this->repo->getHashPath( $this->getName() );
                }
+
                return $this->hashPath;
        }
 
@@ -1173,6 +1217,7 @@ abstract class File {
                } else {
                        $path .= $suffix;
                }
+
                return $path;
        }
 
@@ -1181,7 +1226,6 @@ abstract class File {
         * thumbnail directory or a particular file if $suffix is specified
         *
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string
         */
        function getThumbRel( $suffix = false ) {
@@ -1189,6 +1233,7 @@ abstract class File {
                if ( $suffix !== false ) {
                        $path .= '/' . $suffix;
                }
+
                return $path;
        }
 
@@ -1208,7 +1253,6 @@ abstract class File {
         *
         * @param string $archiveName the timestamped name of an archived image
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string
         */
        function getArchiveThumbRel( $archiveName, $suffix = false ) {
@@ -1218,6 +1262,7 @@ abstract class File {
                } else {
                        $path .= $suffix;
                }
+
                return $path;
        }
 
@@ -1225,11 +1270,11 @@ abstract class File {
         * Get the path of the archived file.
         *
         * @param bool|string $suffix if not false, the name of an archived file.
-        *
         * @return string
         */
        function getArchivePath( $suffix = false ) {
                $this->assertRepoDefined();
+
                return $this->repo->getZonePath( 'public' ) . '/' . $this->getArchiveRel( $suffix );
        }
 
@@ -1238,11 +1283,11 @@ abstract class File {
         *
         * @param string $archiveName the timestamped name of an archived image
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string
         */
        function getArchiveThumbPath( $archiveName, $suffix = false ) {
                $this->assertRepoDefined();
+
                return $this->repo->getZonePath( 'thumb' ) . '/' .
                        $this->getArchiveThumbRel( $archiveName, $suffix );
        }
@@ -1250,32 +1295,31 @@ abstract class File {
        /**
         * Get the path of the thumbnail directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getThumbPath( $suffix = false ) {
                $this->assertRepoDefined();
+
                return $this->repo->getZonePath( 'thumb' ) . '/' . $this->getThumbRel( $suffix );
        }
 
        /**
         * Get the path of the transcoded directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of a media file
-        *
+        * @param bool|string $suffix If not false, the name of a media file
         * @return string
         */
        function getTranscodedPath( $suffix = false ) {
                $this->assertRepoDefined();
+
                return $this->repo->getZonePath( 'transcoded' ) . '/' . $this->getThumbRel( $suffix );
        }
 
        /**
         * Get the URL of the archive directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of an archived file
-        *
+        * @param bool|string $suffix If not false, the name of an archived file
         * @return string
         */
        function getArchiveUrl( $suffix = false ) {
@@ -1287,6 +1331,7 @@ abstract class File {
                } else {
                        $path .= rawurlencode( $suffix );
                }
+
                return $path;
        }
 
@@ -1294,8 +1339,7 @@ abstract class File {
         * Get the URL of the archived file's thumbs, or a particular thumb if $suffix is specified
         *
         * @param string $archiveName the timestamped name of an archived image
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getArchiveThumbUrl( $archiveName, $suffix = false ) {
@@ -1308,6 +1352,7 @@ abstract class File {
                } else {
                        $path .= rawurlencode( $suffix );
                }
+
                return $path;
        }
 
@@ -1315,8 +1360,7 @@ abstract class File {
         * Get the URL of the zone directory, or a particular file if $suffix is specified
         *
         * @param string $zone name of requested zone
-        * @param bool|string $suffix if not false, the name of a file in zone
-        *
+        * @param bool|string $suffix If not false, the name of a file in zone
         * @return string path
         */
        function getZoneUrl( $zone, $suffix = false ) {
@@ -1326,6 +1370,7 @@ abstract class File {
                if ( $suffix !== false ) {
                        $path .= '/' . rawurlencode( $suffix );
                }
+
                return $path;
        }
 
@@ -1333,7 +1378,6 @@ abstract class File {
         * Get the URL of the thumbnail directory, or a particular file if $suffix is specified
         *
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string path
         */
        function getThumbUrl( $suffix = false ) {
@@ -1343,8 +1387,7 @@ abstract class File {
        /**
         * Get the URL of the transcoded directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of a media file
-        *
+        * @param bool|string $suffix If not false, the name of a media file
         * @return string path
         */
        function getTranscodedUrl( $suffix = false ) {
@@ -1354,8 +1397,7 @@ abstract class File {
        /**
         * Get the public zone virtual URL for a current version source file
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getVirtualUrl( $suffix = false ) {
@@ -1364,14 +1406,14 @@ abstract class File {
                if ( $suffix !== false ) {
                        $path .= '/' . rawurlencode( $suffix );
                }
+
                return $path;
        }
 
        /**
         * Get the public zone virtual URL for an archived version source file
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getArchiveVirtualUrl( $suffix = false ) {
@@ -1382,14 +1424,14 @@ abstract class File {
                } else {
                        $path .= rawurlencode( $suffix );
                }
+
                return $path;
        }
 
        /**
         * Get the virtual URL for a thumbnail file or directory
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getThumbVirtualUrl( $suffix = false ) {
@@ -1398,6 +1440,7 @@ abstract class File {
                if ( $suffix !== false ) {
                        $path .= '/' . rawurlencode( $suffix );
                }
+
                return $path;
        }
 
@@ -1406,6 +1449,7 @@ abstract class File {
         */
        function isHashed() {
                $this->assertRepoDefined();
+
                return (bool)$this->repo->getHashLevels();
        }
 
@@ -1422,16 +1466,18 @@ abstract class File {
         * Overridden by LocalFile
         * @param $oldver
         * @param $desc
-        * @param $license string
-        * @param $copyStatus string
-        * @param $source string
-        * @param $watch bool
-        * @param $timestamp string|bool
-        * @param $user User object or null to use $wgUser
+        * @param string $license
+        * @param string $copyStatus
+        * @param string $source
+        * @param bool $watch
+        * @param string|bool $timestamp
+        * @param null|User $user User object or null to use $wgUser
         * @return bool
         * @throws MWException
         */
-       function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '', $watch = false, $timestamp = false, User $user = null ) {
+       function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '',
+               $watch = false, $timestamp = false, User $user = null
+       ) {
                $this->readOnlyError();
        }
 
@@ -1447,12 +1493,11 @@ abstract class File {
         *   - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
         *
         * @param string $srcPath local filesystem path to the source image
-        * @param $flags Integer: a bitwise combination of:
-        *     File::DELETE_SOURCE    Delete the source file, i.e. move
-        *         rather than copy
+        * @param int $flags A bitwise combination of:
+        *   File::DELETE_SOURCE    Delete the source file, i.e. move rather than copy
         * @param array $options Optional additional parameters
         * @return FileRepoStatus object. On success, the value member contains the
-        *     archive name, or an empty string if it was a new file.
+        *   archive name, or an empty string if it was a new file.
         *
         * STUB
         * Overridden by LocalFile
@@ -1468,6 +1513,7 @@ abstract class File {
                if ( !$this->getHandler() ) {
                        return false;
                }
+
                return $this->getHandler()->formatMetadata( $this, $this->getMetadata() );
        }
 
@@ -1512,8 +1558,7 @@ abstract class File {
         * Is this file a "deleted" file in a private archive?
         * STUB
         *
-        * @param integer $field one of DELETED_* bitfield constants
-        *
+        * @param int $field one of DELETED_* bitfield constants
         * @return bool
         */
        function isDeleted( $field ) {
@@ -1536,6 +1581,7 @@ abstract class File {
         */
        function wasDeleted() {
                $title = $this->getTitle();
+
                return $title && $title->isDeletedQuick();
        }
 
@@ -1548,7 +1594,7 @@ abstract class File {
         * Cache purging is done; checks for validity
         * and logging are caller's responsibility
         *
-        * @param $target Title New file name
+        * @param Title $target New file name
         * @return FileRepoStatus object.
         */
        function move( $target ) {
@@ -1563,8 +1609,8 @@ abstract class File {
         *
         * Cache purging is done; logging is caller's responsibility.
         *
-        * @param $reason String
-        * @param $suppress Boolean: hide content from sysops?
+        * @param string $reason
+        * @param bool $suppress Hide content from sysops?
         * @return bool on success, false on some kind of failure
         * STUB
         * Overridden by LocalFile
@@ -1580,10 +1626,10 @@ abstract class File {
         * May throw database exceptions on error.
         *
         * @param array $versions set of record ids of deleted items to restore,
-        *                    or empty to restore all revisions.
+        *   or empty to restore all revisions.
         * @param bool $unsuppress remove restrictions on content upon restoration?
         * @return int|bool the number of file revisions restored if successful,
-        *         or false on failure
+        *   or false on failure
         * STUB
         * Overridden by LocalFile
         */
@@ -1596,7 +1642,7 @@ abstract class File {
         * e.g. DJVU or PDF. Note that this may be true even if the file in
         * question only has a single page.
         *
-        * @return Bool
+        * @return bool
         */
        function isMultipage() {
                return $this->getHandler() && $this->handler->isMultiPage( $this );
@@ -1616,15 +1662,16 @@ abstract class File {
                                $this->pageCount = false;
                        }
                }
+
                return $this->pageCount;
        }
 
        /**
         * Calculate the height of a thumbnail using the source and destination width
         *
-        * @param $srcWidth
-        * @param $srcHeight
-        * @param $dstWidth
+        * @param int $srcWidth
+        * @param int $srcHeight
+        * @param int $dstWidth
         *
         * @return int
         */
@@ -1642,12 +1689,13 @@ abstract class File {
         * can't be determined.
         *
         * @param string $fileName The filename
-        * @return Array
+        * @return array
         */
        function getImageSize( $fileName ) {
                if ( !$this->getHandler() ) {
                        return false;
                }
+
                return $this->handler->getImageSize( $this, $fileName );
        }
 
@@ -1668,7 +1716,7 @@ abstract class File {
        /**
         * Get the HTML text of the description page, if available
         *
-        * @param $lang Language Optional language to fetch description in
+        * @param bool|Language $lang Optional language to fetch description in
         * @return string
         */
        function getDescriptionText( $lang = false ) {
@@ -1683,11 +1731,16 @@ abstract class File {
                if ( $renderUrl ) {
                        if ( $this->repo->descriptionCacheExpiry > 0 ) {
                                wfDebug( "Attempting to get the description from cache..." );
-                               $key = $this->repo->getLocalCacheKey( 'RemoteFileDescription', 'url', $lang->getCode(),
-                                                                       $this->getName() );
+                               $key = $this->repo->getLocalCacheKey(
+                                       'RemoteFileDescription',
+                                       'url',
+                                       $lang->getCode(),
+                                       $this->getName()
+                               );
                                $obj = $wgMemc->get( $key );
                                if ( $obj ) {
                                        wfDebug( "success!\n" );
+
                                        return $obj;
                                }
                                wfDebug( "miss\n" );
@@ -1697,6 +1750,7 @@ abstract class File {
                        if ( $res && $this->repo->descriptionCacheExpiry > 0 ) {
                                $wgMemc->set( $key, $res, $this->repo->descriptionCacheExpiry );
                        }
+
                        return $res;
                } else {
                        return false;
@@ -1707,12 +1761,12 @@ abstract class File {
         * Get description of file revision
         * STUB
         *
-        * @param $audience Integer: one of:
-        *      File::FOR_PUBLIC       to be displayed to all users
-        *      File::FOR_THIS_USER    to be displayed to the given user
-        *      File::RAW              get the description regardless of permissions
-        * @param $user User object to check for, only if FOR_THIS_USER is passed
-        *              to the $audience parameter
+        * @param int $audience One of:
+        *   File::FOR_PUBLIC       to be displayed to all users
+        *   File::FOR_THIS_USER    to be displayed to the given user
+        *   File::RAW              get the description regardless of permissions
+        * @param User $user User object to check for, only if FOR_THIS_USER is
+        *   passed to the $audience parameter
         * @return string
         */
        function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
@@ -1726,6 +1780,7 @@ abstract class File {
         */
        function getTimestamp() {
                $this->assertRepoDefined();
+
                return $this->repo->getFileTimestamp( $this->getPath() );
        }
 
@@ -1736,6 +1791,7 @@ abstract class File {
         */
        function getSha1() {
                $this->assertRepoDefined();
+
                return $this->repo->getFileSha1( $this->getPath() );
        }
 
@@ -1751,6 +1807,7 @@ abstract class File {
                }
                $ext = $this->getExtension();
                $dotExt = $ext === '' ? '' : ".$ext";
+
                return $hash . $dotExt;
        }
 
@@ -1758,9 +1815,9 @@ abstract class File {
         * Determine if the current user is allowed to view a particular
         * field of this file, if it's marked as deleted.
         * STUB
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
-        * @return Boolean
+        * @param int $field
+        * @param User $user User object to check, or null to use $wgUser
+        * @return bool
         */
        function userCan( $field, User $user = null ) {
                return true;
@@ -1770,8 +1827,8 @@ abstract class File {
         * Get an associative array containing information about a file in the local filesystem.
         *
         * @param string $path absolute local filesystem path
-        * @param $ext Mixed: the file extension, or true to extract it from the filename.
-        *             Set it to false to ignore the extension.
+        * @param string|bool $ext The file extension, or true to extract it from
+        *   the filename. Set it to false to ignore the extension.
         *
         * @return array
         * @deprecated since 1.19
@@ -1781,6 +1838,7 @@ abstract class File {
                wfDeprecated( __METHOD__, '1.19' );
 
                $fsFile = new FSFile( $path );
+
                return $fsFile->getProps();
        }
 
@@ -1792,7 +1850,6 @@ abstract class File {
         * fairly neatly.
         *
         * @param $path string
-        *
         * @return bool|string False on failure
         * @deprecated since 1.19
         */
@@ -1800,11 +1857,12 @@ abstract class File {
                wfDeprecated( __METHOD__, '1.19' );
 
                $fsFile = new FSFile( $path );
+
                return $fsFile->getSha1Base36();
        }
 
        /**
-        * @return Array HTTP header name/value map to use for HEAD/GET request responses
+        * @return array HTTP header name/value map to use for HEAD/GET request responses
         */
        function getStreamHeaders() {
                $handler = $this->getHandler();
@@ -1852,7 +1910,7 @@ abstract class File {
        }
 
        /**
-        * @return
+        * @return string
         */
        function getRedirected() {
                return $this->redirected;
@@ -1866,13 +1924,15 @@ abstract class File {
                        if ( !$this->redirectTitle ) {
                                $this->redirectTitle = Title::makeTitle( NS_FILE, $this->redirected );
                        }
+
                        return $this->redirectTitle;
                }
+
                return null;
        }
 
        /**
-        * @param  $from
+        * @param string $from
         * @return void
         */
        function redirectedFrom( $from ) {
@@ -1888,7 +1948,7 @@ abstract class File {
 
        /**
         * Check if this file object is small and can be cached
-        * @return boolean
+        * @return bool
         */
        public function isCacheable() {
                return true;
index 0b3d5df..690d1b8 100644 (file)
@@ -34,7 +34,7 @@ class ForeignAPIFile extends File {
 
        /**
         * @param $title
-        * @param $repo ForeignApiRepo
+        * @param ForeignApiRepo $repo
         * @param $info
         * @param bool $exists
         */
@@ -48,8 +48,8 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $title Title
-        * @param $repo ForeignApiRepo
+        * @param Title $title
+        * @param ForeignApiRepo $repo
         * @return ForeignAPIFile|null
         */
        static function newFromTitle( Title $title, $repo ) {
@@ -78,6 +78,7 @@ class ForeignAPIFile extends File {
                        } else {
                                $img = new self( $title, $repo, $info, true );
                        }
+
                        return $img;
                } else {
                        return null;
@@ -133,6 +134,7 @@ class ForeignAPIFile extends File {
                );
                if ( $thumbUrl === false ) {
                        global $wgLang;
+
                        return $this->repo->getThumbError(
                                $this->getName(),
                                $width,
@@ -141,13 +143,14 @@ class ForeignAPIFile extends File {
                                $wgLang->getCode()
                        );
                }
+
                return $this->handler->getTransform( $this, 'bogus', $thumbUrl, $params );
        }
 
        // Info we can get from API...
 
        /**
-        * @param $page int
+        * @param int $page
         * @return int|number
         */
        public function getWidth( $page = 1 ) {
@@ -155,7 +158,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $page int
+        * @param int $page
         * @return int
         */
        public function getHeight( $page = 1 ) {
@@ -169,21 +172,24 @@ class ForeignAPIFile extends File {
                if ( isset( $this->mInfo['metadata'] ) ) {
                        return serialize( self::parseMetadata( $this->mInfo['metadata'] ) );
                }
+
                return null;
        }
 
        /**
-        * @return array|null extended metadata (see imageinfo API for format) or null on error
+        * @return array|null Extended metadata (see imageinfo API for format) or
+        *   null on error
         */
        public function getExtendedMetadata() {
                if ( isset( $this->mInfo['extmetadata'] ) ) {
                        return $this->mInfo['extmetadata'];
                }
+
                return null;
        }
 
        /**
-        * @param $metadata array
+        * @param array $metadata
         * @return array
         */
        public static function parseMetadata( $metadata ) {
@@ -194,6 +200,7 @@ class ForeignAPIFile extends File {
                foreach ( $metadata as $meta ) {
                        $ret[$meta['name']] = self::parseMetadata( $meta['value'] );
                }
+
                return $ret;
        }
 
@@ -220,6 +227,8 @@ class ForeignAPIFile extends File {
        }
 
        /**
+        * @param int $audience
+        * @param User $user
         * @return null|string
         */
        public function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
@@ -236,7 +245,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @return bool|Mixed|string
+        * @return bool|string
         */
        function getTimestamp() {
                return wfTimestamp( TS_MW,
@@ -254,6 +263,7 @@ class ForeignAPIFile extends File {
                        $magic = MimeMagic::singleton();
                        $this->mInfo['mime'] = $magic->guessTypesForExtension( $this->getExtension() );
                }
+
                return $this->mInfo['mime'];
        }
 
@@ -265,6 +275,7 @@ class ForeignAPIFile extends File {
                        return $this->mInfo['mediatype'];
                }
                $magic = MimeMagic::singleton();
+
                return $magic->getMediaType( null, $this->getMimeType() );
        }
 
@@ -279,7 +290,7 @@ class ForeignAPIFile extends File {
 
        /**
         * Only useful if we're locally caching thumbs anyway...
-        * @param $suffix string
+        * @param string $suffix
         * @return null|string
         */
        function getThumbPath( $suffix = '' ) {
@@ -288,6 +299,7 @@ class ForeignAPIFile extends File {
                        if ( $suffix ) {
                                $path = $path . $suffix . '/';
                        }
+
                        return $path;
                } else {
                        return null;
@@ -327,7 +339,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $options array
+        * @param array $options
         */
        function purgeThumbnails( $options = array() ) {
                global $wgMemc;
index 01d6b0f..36558c4 100644 (file)
  * @ingroup FileAbstraction
  */
 class ForeignDBFile extends LocalFile {
-
        /**
-        * @param $title
-        * @param $repo
-        * @param $unused
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param null $unused
         * @return ForeignDBFile
         */
        static function newFromTitle( $title, $repo, $unused = null ) {
@@ -42,23 +41,23 @@ class ForeignDBFile extends LocalFile {
         * Create a ForeignDBFile from a title
         * Do not call this except from inside a repo class.
         *
-        * @param $row
-        * @param $repo
-        *
+        * @param stdClass $row
+        * @param FileRepo $repo
         * @return ForeignDBFile
         */
        static function newFromRow( $row, $repo ) {
                $title = Title::makeTitle( NS_FILE, $row->img_name );
                $file = new self( $title, $repo );
                $file->loadFromRow( $row );
+
                return $file;
        }
 
        /**
-        * @param $srcPath String
-        * @param $flags int
-        * @param $options Array
-        * @return \FileRepoStatus
+        * @param string $srcPath
+        * @param int $flags
+        * @param array $options
+        * @return FileRepoStatus
         * @throws MWException
         */
        function publish( $srcPath, $flags = 0, array $options = array() ) {
@@ -83,9 +82,9 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $versions array
-        * @param $unsuppress bool
-        * @return \FileRepoStatus
+        * @param array $versions
+        * @param bool $unsuppress
+        * @return FileRepoStatus
         * @throws MWException
         */
        function restore( $versions = array(), $unsuppress = false ) {
@@ -93,9 +92,9 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $reason string
-        * @param $suppress bool
-        * @return \FileRepoStatus
+        * @param string $reason
+        * @param bool $suppress
+        * @return FileRepoStatus
         * @throws MWException
         */
        function delete( $reason, $suppress = false ) {
@@ -103,8 +102,8 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $target Title
-        * @return \FileRepoStatus
+        * @param Title $target
+        * @return FileRepoStatus
         * @throws MWException
         */
        function move( $target ) {
@@ -120,7 +119,7 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $lang Language Optional language to fetch description in.
+        * @param bool|Language $lang Optional language to fetch description in.
         * @return string
         */
        function getDescriptionText( $lang = false ) {
index b609f43..dd8e38a 100644 (file)
@@ -46,44 +46,81 @@ define( 'MW_FILE_VERSION', 9 );
 class LocalFile extends File {
        const CACHE_FIELD_MAX_LEN = 1000;
 
-       /**#@+
-        * @private
-        */
-       var
-               $fileExists,       # does the file exist on disk? (loadFromXxx)
-               $historyLine,      # Number of line to return by nextHistoryLine() (constructor)
-               $historyRes,       # result of the query for the file's history (nextHistoryLine)
-               $width,            # \
-               $height,           #  |
-               $bits,             #   --- returned by getimagesize (loadFromXxx)
-               $attr,             # /
-               $media_type,       # MEDIATYPE_xxx (bitmap, drawing, audio...)
-               $mime,             # MIME type, determined by MimeMagic::guessMimeType
-               $major_mime,       # Major mime type
-               $minor_mime,       # Minor mime type
-               $size,             # Size in bytes (loadFromXxx)
-               $metadata,         # Handler-specific metadata
-               $timestamp,        # Upload timestamp
-               $sha1,             # SHA-1 base 36 content hash
-               $user, $user_text, # User, who uploaded the file
-               $description,      # Description of current revision of the file
-               $dataLoaded,       # Whether or not core data has been loaded from the database (loadFromXxx)
-               $extraDataLoaded,  # Whether or not lazy-loaded data has been loaded from the database
-               $upgraded,         # Whether the row was upgraded on load
-               $locked,           # True if the image row is locked
-               $lockedOwnTrx,     # True if the image row is locked with a lock initiated transaction
-               $missing,          # True if file is not present in file system. Not to be cached in memcached
-               $deleted;          # Bitfield akin to rev_deleted
-
-       /**#@-*/
-
-       /**
-        * @var LocalRepo
-        */
-       var $repo;
+       /** @var bool Does the file exist on disk? (loadFromXxx) */
+       protected $fileExists;
 
+       /** @var int image width */
+       protected $width;
+
+       /** @var int image height */
+       protected $height;
+
+       /** @var int Returned by getimagesize (loadFromXxx) */
+       protected $bits;
+
+       /** @var string MEDIATYPE_xxx (bitmap, drawing, audio...) */
+       protected $media_type;
+
+       /** @var string MIME type, determined by MimeMagic::guessMimeType */
+       protected $mime;
+
+       /** @var int Size in bytes (loadFromXxx) */
+       protected $size;
+
+       /** @var string Handler-specific metadata */
+       protected $metadata;
+
+       /** @var string SHA-1 base 36 content hash */
+       protected $sha1;
+
+       /** @var bool Whether or not core data has been loaded from the database (loadFromXxx) */
+       protected $dataLoaded;
+
+       /** @var bool Whether or not lazy-loaded data has been loaded from the database */
+       protected $extraDataLoaded;
+
+       /** @var int Bitfield akin to rev_deleted */
+       protected $deleted;
+
+       /** @var string */
        protected $repoClass = 'LocalRepo';
 
+       /** @var int Number of line to return by nextHistoryLine() (constructor) */
+       private $historyLine;
+
+       /** @var int Result of the query for the file's history (nextHistoryLine) */
+       private $historyRes;
+
+       /** @var string Major mime type */
+       private $major_mime;
+
+       /** @var string Minor mime type */
+       private $minor_mime;
+
+       /** @var string Upload timestamp */
+       private $timestamp;
+
+       /** @var int User ID of uploader */
+       private $user;
+
+       /** @var string User name of uploader */
+       private $user_text;
+
+       /** @var string Description of current revision of the file */
+       private $description;
+
+       /** @var bool Whether the row was upgraded on load */
+       private $upgraded;
+
+       /** @var bool True if the image row is locked */
+       private $locked;
+
+       /** @var bool True if the image row is locked with a lock initiated transaction */
+       private $lockedOwnTrx;
+
+       /** @var bool True if file is not present in file system. Not to be cached in memcached */
+       private $missing;
+
        const LOAD_ALL = 1; // integer; load all the lazy fields too (like metadata)
 
        /**
@@ -92,8 +129,8 @@ class LocalFile extends File {
         *
         * Note: $unused param is only here to avoid an E_STRICT
         *
-        * @param $title
-        * @param $repo
+        * @param Title $title
+        * @param FileRepo $repo
         * @param $unused
         *
         * @return LocalFile
@@ -106,8 +143,8 @@ class LocalFile extends File {
         * Create a LocalFile from a title
         * Do not call this except from inside a repo class.
         *
-        * @param $row
-        * @param $repo
+        * @param stdClass $row
+        * @param FileRepo $repo
         *
         * @return LocalFile
         */
@@ -124,9 +161,8 @@ class LocalFile extends File {
         * Do not call this except from inside a repo class.
         *
         * @param string $sha1 base-36 SHA-1
-        * @param $repo LocalRepo
+        * @param LocalRepo $repo
         * @param string|bool $timestamp MW_timestamp (optional)
-        *
         * @return bool|LocalFile
         */
        static function newFromKey( $sha1, $repo, $timestamp = false ) {
@@ -210,6 +246,7 @@ class LocalFile extends File {
 
                if ( !$key ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
 
@@ -236,6 +273,7 @@ class LocalFile extends File {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $this->dataLoaded;
        }
 
@@ -289,7 +327,8 @@ class LocalFile extends File {
         */
        function getCacheFields( $prefix = 'img_' ) {
                static $fields = array( 'size', 'width', 'height', 'bits', 'media_type',
-                       'major_mime', 'minor_mime', 'metadata', 'timestamp', 'sha1', 'user', 'user_text', 'description' );
+                       'major_mime', 'minor_mime', 'metadata', 'timestamp', 'sha1', 'user',
+                       'user_text', 'description' );
                static $results = array();
 
                if ( $prefix == '' ) {
@@ -308,6 +347,7 @@ class LocalFile extends File {
        }
 
        /**
+        * @param string $prefix
         * @return array
         */
        function getLazyCacheFields( $prefix = 'img_' ) {
@@ -390,9 +430,10 @@ class LocalFile extends File {
        }
 
        /**
-        * @param Row $row
-        * @param $prefix string
-        * @return Array
+        * @param array $row Row
+        * @param string $prefix
+        * @throws MWException
+        * @return array
         */
        protected function unprefixRow( $row, $prefix = 'img_' ) {
                $array = (array)$row;
@@ -407,6 +448,7 @@ class LocalFile extends File {
                foreach ( $array as $name => $value ) {
                        $decoded[substr( $name, $prefixLength )] = $value;
                }
+
                return $decoded;
        }
 
@@ -518,6 +560,7 @@ class LocalFile extends File {
                if ( !$this->fileExists ) {
                        wfDebug( __METHOD__ . ": file does not exist, aborting\n" );
                        wfProfileOut( __METHOD__ );
+
                        return;
                }
 
@@ -526,6 +569,7 @@ class LocalFile extends File {
 
                if ( wfReadOnly() ) {
                        wfProfileOut( __METHOD__ );
+
                        return;
                }
                wfDebug( __METHOD__ . ': upgrading ' . $this->getName() . " to the current schema\n" );
@@ -597,13 +641,14 @@ class LocalFile extends File {
                        list( $fileExists ) = $this->repo->fileExists( $this->getVirtualUrl() );
                        $this->missing = !$fileExists;
                }
+
                return $this->missing;
        }
 
        /**
         * Return the width of the image
         *
-        * @param $page int
+        * @param int $page
         * @return int
         */
        public function getWidth( $page = 1 ) {
@@ -630,7 +675,7 @@ class LocalFile extends File {
        /**
         * Return the height of the image
         *
-        * @param $page int
+        * @param int $page
         * @return int
         */
        public function getHeight( $page = 1 ) {
@@ -684,15 +729,17 @@ class LocalFile extends File {
         */
        function getBitDepth() {
                $this->load();
+
                return $this->bits;
        }
 
        /**
-        * Return the size of the image file, in bytes
+        * Returns the size of the image file, in bytes
         * @return int
         */
        public function getSize() {
                $this->load();
+
                return $this->size;
        }
 
@@ -702,16 +749,18 @@ class LocalFile extends File {
         */
        function getMimeType() {
                $this->load();
+
                return $this->mime;
        }
 
        /**
-        * Return the type of the media in the file.
+        * Returns the type of the media in the file.
         * Use the value returned by this function with the MEDIATYPE_xxx constants.
         * @return string
         */
        function getMediaType() {
                $this->load();
+
                return $this->media_type;
        }
 
@@ -723,10 +772,11 @@ class LocalFile extends File {
 
        /**
         * Returns true if the file exists on disk.
-        * @return boolean Whether file exist on disk.
+        * @return bool Whether file exist on disk.
         */
        public function exists() {
                $this->load();
+
                return $this->fileExists;
        }
 
@@ -738,9 +788,9 @@ class LocalFile extends File {
 
        /**
         * Fix thumbnail files from 1.4 or before, with extreme prejudice
-        * @todo : do we still care about this? Perhaps a maintenance script
-        *        can be made instead. Enabling this code results in a serious
-        *        RTT regression for wikis without 404 handling.
+        * @todo Do we still care about this? Perhaps a maintenance script
+        *   can be made instead. Enabling this code results in a serious
+        *   RTT regression for wikis without 404 handling.
         */
        function migrateThumbFile( $thumbName ) {
                /* Old code for bug 2532
@@ -761,7 +811,6 @@ class LocalFile extends File {
                        clearstatcache();
                }
                */
-
                /*
                if ( $this->repo->fileExists( $thumbDir ) ) {
                        // Delete file where directory should be
@@ -793,7 +842,8 @@ class LocalFile extends File {
                        foreach ( $iterator as $file ) {
                                $files[] = $file;
                        }
-               } catch ( FileBackendError $e ) {} // suppress (bug 54674)
+               } catch ( FileBackendError $e ) {
+               } // suppress (bug 54674)
 
                return $files;
        }
@@ -826,7 +876,7 @@ class LocalFile extends File {
        /**
         * Delete all previously generated thumbnails, refresh metadata in memcached and purge the squid.
         *
-        * @param Array $options An array potentially with the key forThumbRefresh.
+        * @param array $options An array potentially with the key forThumbRefresh.
         *
         * @note This used to purge old thumbnails by default as well, but doesn't anymore.
         */
@@ -845,7 +895,7 @@ class LocalFile extends File {
 
        /**
         * Delete cached transformed files for an archived version only.
-        * @param string $archiveName name of the archived file
+        * @param string $archiveName Name of the archived file
         */
        function purgeOldThumbnails( $archiveName ) {
                global $wgUseSquid;
@@ -881,8 +931,8 @@ class LocalFile extends File {
                // Delete thumbnails
                $files = $this->getThumbnails();
                // Always purge all files from squid regardless of handler filters
+               $urls = array();
                if ( $wgUseSquid ) {
-                       $urls = array();
                        foreach ( $files as $file ) {
                                $urls[] = $this->getThumbUrl( $file );
                        }
@@ -913,8 +963,8 @@ class LocalFile extends File {
 
        /**
         * Delete a list of thumbnails visible at urls
-        * @param string $dir base dir of the files.
-        * @param array $files of strings: relative filenames (to $dir)
+        * @param string $dir Base dir of the files.
+        * @param array $files Array of strings: relative filenames (to $dir)
         */
        protected function purgeThumbList( $dir, $files ) {
                $fileListDebug = strtr(
@@ -944,10 +994,10 @@ class LocalFile extends File {
        /** purgeEverything inherited */
 
        /**
-        * @param $limit null
-        * @param $start null
-        * @param $end null
-        * @param $inc bool
+        * @param int $limit Optional: Limit to number of results
+        * @param int $start Optional: Timestamp, start from
+        * @param int $end Optional: Timestamp, end at
+        * @param bool $inc
         * @return array
         */
        function getHistory( $limit = null, $start = null, $end = null, $inc = true ) {
@@ -982,11 +1032,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' ) {
@@ -997,7 +1043,7 @@ class LocalFile extends File {
        }
 
        /**
-        * Return the history of this file, line by line.
+        * Returns the history of this file, line by line.
         * starts with current version, then old versions.
         * uses $this->historyLine to check which line to return:
         *  0      return line for current version
@@ -1011,7 +1057,7 @@ class LocalFile extends File {
 
                $dbr = $this->repo->getSlaveDB();
 
-               if ( $this->historyLine == 0 ) {// called for the first time, return line from cur
+               if ( $this->historyLine == 0 ) { // called for the first time, return line from cur
                        $this->historyRes = $dbr->select( 'image',
                                array(
                                        '*',
@@ -1025,6 +1071,7 @@ class LocalFile extends File {
 
                        if ( 0 == $dbr->numRows( $this->historyRes ) ) {
                                $this->historyRes = null;
+
                                return false;
                        }
                } elseif ( $this->historyLine == 1 ) {
@@ -1034,7 +1081,7 @@ class LocalFile extends File {
                                array( 'ORDER BY' => 'oi_timestamp DESC' )
                        );
                }
-               $this->historyLine ++;
+               $this->historyLine++;
 
                return $dbr->fetchObject( $this->historyRes );
        }
@@ -1064,21 +1111,24 @@ class LocalFile extends File {
 
        /**
         * Upload a file and record it in the DB
-        * @param string $srcPath source storage path, virtual URL, or filesystem path
-        * @param string $comment upload description
-        * @param string $pageText text to use for the new description page,
-        *                  if a new description page is created
-        * @param $flags Integer|bool: flags for publish()
-        * @param array|bool $props File properties, if known. This can be used to reduce the
-        *               upload time when uploading virtual URLs for which the file info
-        *               is already known
-        * @param string|bool $timestamp timestamp for img_timestamp, or false to use the current time
-        * @param $user User|null: User object or null to use $wgUser
+        * @param string $srcPath Source storage path, virtual URL, or filesystem path
+        * @param string $comment Upload description
+        * @param string $pageText Text to use for the new description page,
+        *   if a new description page is created
+        * @param int|bool $flags Flags for publish()
+        * @param array|bool $props File properties, if known. This can be used to
+        *   reduce the upload time when uploading virtual URLs for which the file
+        *   info is already known
+        * @param string|bool $timestamp Timestamp for img_timestamp, or false to use the
+        *   current time
+        * @param User|null $user User object or null to use $wgUser
         *
         * @return FileRepoStatus object. On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
-       function upload( $srcPath, $comment, $pageText, $flags = 0, $props = false, $timestamp = false, $user = null ) {
+       function upload( $srcPath, $comment, $pageText, $flags = 0, $props = false,
+               $timestamp = false, $user = null
+       ) {
                global $wgContLang;
 
                if ( $this->getRepo()->getReadOnlyReason() !== false ) {
@@ -1088,8 +1138,8 @@ class LocalFile extends File {
                if ( !$props ) {
                        wfProfileIn( __METHOD__ . '-getProps' );
                        if ( $this->repo->isVirtualUrl( $srcPath )
-                               || FileBackend::isStoragePath( $srcPath ) )
-                       {
+                               || FileBackend::isStoragePath( $srcPath )
+                       {
                                $props = $this->repo->getFileProps( $srcPath );
                        } else {
                                $props = FSFile::getPropsFromPath( $srcPath );
@@ -1130,19 +1180,18 @@ class LocalFile extends File {
 
        /**
         * Record a file upload in the upload log and the image table
-        * @param $oldver
-        * @param $desc string
-        * @param $license string
-        * @param $copyStatus string
-        * @param $source string
-        * @param $watch bool
-        * @param $timestamp string|bool
-        * @param $user User object or null to use $wgUser
+        * @param string $oldver
+        * @param string $desc
+        * @param string $license
+        * @param string $copyStatus
+        * @param string $source
+        * @param bool $watch
+        * @param string|bool $timestamp
+        * @param User|null $user User object or null to use $wgUser
         * @return bool
         */
        function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '',
-               $watch = false, $timestamp = false, User $user = null )
-       {
+               $watch = false, $timestamp = false, User $user = null ) {
                if ( !$user ) {
                        global $wgUser;
                        $user = $wgUser;
@@ -1157,17 +1206,18 @@ class LocalFile extends File {
                if ( $watch ) {
                        $user->addWatch( $this->getTitle() );
                }
+
                return true;
        }
 
        /**
         * Record a file upload in the upload log and the image table
-        * @param $oldver
-        * @param $comment string
-        * @param $pageText string
-        * @param $props bool|array
-        * @param $timestamp bool|string
-        * @param $user null|User
+        * @param string $oldver
+        * @param string $comment
+        * @param string $pageText
+        * @param bool|array $props
+        * @param string|bool $timestamp
+        * @param null|User $user
         * @return bool
         */
        function recordUpload2(
@@ -1203,6 +1253,7 @@ class LocalFile extends File {
                if ( !$this->fileExists ) {
                        wfDebug( __METHOD__ . ": File " . $this->getRel() . " went missing!\n" );
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
 
@@ -1242,21 +1293,21 @@ class LocalFile extends File {
                        # Insert previous contents into oldimage
                        $dbw->insertSelect( 'oldimage', 'image',
                                array(
-                                       'oi_name'         => 'img_name',
+                                       'oi_name' => 'img_name',
                                        'oi_archive_name' => $dbw->addQuotes( $oldver ),
-                                       'oi_size'         => 'img_size',
-                                       'oi_width'        => 'img_width',
-                                       'oi_height'       => 'img_height',
-                                       'oi_bits'         => 'img_bits',
-                                       'oi_timestamp'    => 'img_timestamp',
-                                       'oi_description'  => 'img_description',
-                                       'oi_user'         => 'img_user',
-                                       'oi_user_text'    => 'img_user_text',
-                                       'oi_metadata'     => 'img_metadata',
-                                       'oi_media_type'   => 'img_media_type',
-                                       'oi_major_mime'   => 'img_major_mime',
-                                       'oi_minor_mime'   => 'img_minor_mime',
-                                       'oi_sha1'         => 'img_sha1'
+                                       'oi_size' => 'img_size',
+                                       'oi_width' => 'img_width',
+                                       'oi_height' => 'img_height',
+                                       'oi_bits' => 'img_bits',
+                                       'oi_timestamp' => 'img_timestamp',
+                                       'oi_description' => 'img_description',
+                                       'oi_user' => 'img_user',
+                                       'oi_user_text' => 'img_user_text',
+                                       'oi_metadata' => 'img_metadata',
+                                       'oi_media_type' => 'img_media_type',
+                                       'oi_major_mime' => 'img_major_mime',
+                                       'oi_minor_mime' => 'img_minor_mime',
+                                       'oi_sha1' => 'img_sha1'
                                ),
                                array( 'img_name' => $this->getName() ),
                                __METHOD__
@@ -1265,19 +1316,19 @@ class LocalFile extends File {
                        # Update the current image row
                        $dbw->update( 'image',
                                array( /* SET */
-                                       'img_size'        => $this->size,
-                                       'img_width'       => intval( $this->width ),
-                                       'img_height'      => intval( $this->height ),
-                                       'img_bits'        => $this->bits,
-                                       'img_media_type'  => $this->media_type,
-                                       'img_major_mime'  => $this->major_mime,
-                                       'img_minor_mime'  => $this->minor_mime,
-                                       'img_timestamp'   => $timestamp,
+                                       'img_size' => $this->size,
+                                       'img_width' => intval( $this->width ),
+                                       'img_height' => intval( $this->height ),
+                                       'img_bits' => $this->bits,
+                                       'img_media_type' => $this->media_type,
+                                       'img_major_mime' => $this->major_mime,
+                                       'img_minor_mime' => $this->minor_mime,
+                                       'img_timestamp' => $timestamp,
                                        'img_description' => $comment,
-                                       'img_user'        => $user->getId(),
-                                       'img_user_text'   => $user->getName(),
-                                       'img_metadata'    => $dbw->encodeBlob( $this->metadata ),
-                                       'img_sha1'        => $this->sha1
+                                       'img_user' => $user->getId(),
+                                       'img_user_text' => $user->getName(),
+                                       'img_metadata' => $dbw->encodeBlob( $this->metadata ),
+                                       'img_sha1' => $this->sha1
                                ),
                                array( 'img_name' => $this->getName() ),
                                __METHOD__
@@ -1356,7 +1407,13 @@ class LocalFile extends File {
                        # There's already a log entry, so don't make a second RC entry
                        # Squid and file cache for the description page are purged by doEditContent.
                        $content = ContentHandler::makeContent( $pageText, $descTitle );
-                       $status = $wikiPage->doEditContent( $content, $comment, EDIT_NEW | EDIT_SUPPRESS_RC, false, $user );
+                       $status = $wikiPage->doEditContent(
+                               $content,
+                               $comment,
+                               EDIT_NEW | EDIT_SUPPRESS_RC,
+                               false,
+                               $user
+                       );
 
                        $dbw->begin( __METHOD__ ); // XXX; doEdit() uses a transaction
                        // Now that the page exists, make an RC entry.
@@ -1371,7 +1428,6 @@ class LocalFile extends File {
                        $dbw->commit( __METHOD__ ); // commit before anything bad can happen
                }
 
-
                wfProfileOut( __METHOD__ . '-edit' );
 
                # Save to cache and purge the squid
@@ -1414,6 +1470,7 @@ class LocalFile extends File {
                }
 
                wfProfileOut( __METHOD__ );
+
                return true;
        }
 
@@ -1425,11 +1482,11 @@ class LocalFile extends File {
         * The archive name should be passed through to recordUpload for database
         * registration.
         *
-        * @param string $srcPath local filesystem path to the source image
-        * @param $flags Integer: a bitwise combination of:
-        *     File::DELETE_SOURCE      Delete the source file, i.e. move rather than copy
+        * @param string $srcPath Local filesystem path to the source image
+        * @param int $flags A bitwise combination of:
+        *     File::DELETE_SOURCE    Delete the source file, i.e. move rather than copy
         * @param array $options Optional additional parameters
-        * @return FileRepoStatus object. On success, the value member contains the
+        * @return FileRepoStatus On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
        function publish( $srcPath, $flags = 0, array $options = array() ) {
@@ -1443,12 +1500,12 @@ class LocalFile extends File {
         * The archive name should be passed through to recordUpload for database
         * registration.
         *
-        * @param string $srcPath local filesystem path to the source image
-        * @param string $dstRel target relative path
-        * @param $flags Integer: a bitwise combination of:
-        *     File::DELETE_SOURCE      Delete the source file, i.e. move rather than copy
+        * @param string $srcPath Local filesystem path to the source image
+        * @param string $dstRel Target relative path
+        * @param int $flags A bitwise combination of:
+        *     File::DELETE_SOURCE    Delete the source file, i.e. move rather than copy
         * @param array $options Optional additional parameters
-        * @return FileRepoStatus object. On success, the value member contains the
+        * @return FileRepoStatus On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
        function publishTo( $srcPath, $dstRel, $flags = 0, array $options = array() ) {
@@ -1488,8 +1545,8 @@ class LocalFile extends File {
         * Cache purging is done; checks for validity
         * and logging are caller's responsibility
         *
-        * @param $target Title New file name
-        * @return FileRepoStatus object.
+        * @param Title $target New file name
+        * @return FileRepoStatus
         */
        function move( $target ) {
                if ( $this->getRepo()->getReadOnlyReason() !== false ) {
@@ -1513,7 +1570,7 @@ class LocalFile extends File {
                // Hack: the lock()/unlock() pair is nested in a transaction so the locking is not
                // tied to BEGIN/COMMIT. To avoid slow purges in the transaction, move them outside.
                $this->getRepo()->getMasterDB()->onTransactionIdle(
-                       function() use ( $oldTitleFile, $newTitleFile, $archiveNames ) {
+                       function () use ( $oldTitleFile, $newTitleFile, $archiveNames ) {
                                $oldTitleFile->purgeEverything();
                                foreach ( $archiveNames as $archiveName ) {
                                        $oldTitleFile->purgeOldThumbnails( $archiveName );
@@ -1541,9 +1598,9 @@ class LocalFile extends File {
         *
         * Cache purging is done; logging is caller's responsibility.
         *
-        * @param $reason
-        * @param $suppress
-        * @return FileRepoStatus object.
+        * @param string $reason
+        * @param bool $suppress
+        * @return FileRepoStatus
         */
        function delete( $reason, $suppress = false ) {
                if ( $this->getRepo()->getReadOnlyReason() !== false ) {
@@ -1567,7 +1624,7 @@ class LocalFile extends File {
                // tied to BEGIN/COMMIT. To avoid slow purges in the transaction, move them outside.
                $file = $this;
                $this->getRepo()->getMasterDB()->onTransactionIdle(
-                       function() use ( $file, $archiveNames ) {
+                       function () use ( $file, $archiveNames ) {
                                global $wgUseSquid;
 
                                $file->purgeEverything();
@@ -1597,11 +1654,11 @@ class LocalFile extends File {
         *
         * Cache purging is done; logging is caller's responsibility.
         *
-        * @param $archiveName String
-        * @param $reason String
-        * @param $suppress Boolean
-        * @throws MWException or FSException on database or file store failure
-        * @return FileRepoStatus object.
+        * @param string $archiveName
+        * @param string $reason
+        * @param bool $suppress
+        * @throws MWException Exception on database or file store failure
+        * @return FileRepoStatus
         */
        function deleteOld( $archiveName, $reason, $suppress = false ) {
                global $wgUseSquid;
@@ -1637,8 +1694,8 @@ class LocalFile extends File {
         * May throw database exceptions on error.
         *
         * @param array $versions set of record ids of deleted items to restore,
-        *                    or empty to restore all revisions.
-        * @param $unsuppress Boolean
+        *   or empty to restore all revisions.
+        * @param bool $unsuppress
         * @return FileRepoStatus
         */
        function restore( $versions = array(), $unsuppress = false ) {
@@ -1673,7 +1730,7 @@ class LocalFile extends File {
 
        /**
         * Get the URL of the file description page.
-        * @return String
+        * @return string
         */
        function getDescriptionUrl() {
                return $this->title->getLocalURL();
@@ -1684,7 +1741,7 @@ class LocalFile extends File {
         * This is not used by ImagePage for local files, since (among other things)
         * it skips the parser cache.
         *
-        * @param $lang Language What language to get description in (Optional)
+        * @param Language $lang What language to get description in (Optional)
         * @return bool|mixed
         */
        function getDescriptionText( $lang = null ) {
@@ -1697,10 +1754,13 @@ class LocalFile extends File {
                        return false;
                }
                $pout = $content->getParserOutput( $this->title, null, new ParserOptions( null, $lang ) );
+
                return $pout->getText();
        }
 
        /**
+        * @param int $audience
+        * @param User $user
         * @return string
         */
        function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
@@ -1708,8 +1768,8 @@ class LocalFile extends File {
                if ( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_COMMENT ) ) {
                        return '';
                } elseif ( $audience == self::FOR_THIS_USER
-                       && !$this->userCan( self::DELETED_COMMENT, $user ) )
-               {
+                       && !$this->userCan( self::DELETED_COMMENT, $user )
+               {
                        return '';
                } else {
                        return $this->description;
@@ -1721,6 +1781,7 @@ class LocalFile extends File {
         */
        function getTimestamp() {
                $this->load();
+
                return $this->timestamp;
        }
 
@@ -1754,15 +1815,17 @@ class LocalFile extends File {
         */
        function isCacheable() {
                $this->load();
+
                // If extra data (metadata) was not loaded then it must have been large
                return $this->extraDataLoaded
-                       && strlen( serialize( $this->metadata ) ) <= self::CACHE_FIELD_MAX_LEN;
+               && strlen( serialize( $this->metadata ) ) <= self::CACHE_FIELD_MAX_LEN;
        }
 
        /**
         * Start a transaction and lock the image for update
         * Increments a reference counter if the lock is already held
-        * @return boolean True if the image exists, false otherwise
+        * @throws MWException
+        * @return bool True if the image exists, false otherwise
         */
        function lock() {
                $dbw = $this->repo->getMasterDB();
@@ -1780,7 +1843,7 @@ class LocalFile extends File {
                        if ( !$cache->lock( $key, 60 ) ) {
                                throw new MWException( "Could not acquire lock for '{$this->getName()}.'" );
                        }
-                       $dbw->onTransactionIdle( function() use ( $cache, $key ) {
+                       $dbw->onTransactionIdle( function () use ( $cache, $key ) {
                                $cache->unlock( $key ); // release on commit
                        } );
                }
@@ -1830,19 +1893,31 @@ class LocalFile extends File {
  * @ingroup FileAbstraction
  */
 class LocalFileDeleteBatch {
+       /** @var LocalFile */
+       private $file;
 
-       /**
-        * @var LocalFile
-        */
-       var $file;
+       /** @var string */
+       private $reason;
+
+       /** @var array */
+       private $srcRels = array();
+
+       /** @var array */
+       private $archiveUrls = array();
+
+       /** @var array Items to be processed in the deletion batch */
+       private $deletionBatch;
+
+       /** @var bool Wether to suppress all suppressable fields when deleting */
+       private $suppress;
 
-       var $reason, $srcRels = array(), $archiveUrls = array(), $deletionBatch, $suppress;
-       var $status;
+       /** @var FileRepoStatus */
+       private $status;
 
        /**
-        * @param $file File
-        * @param $reason string
-        * @param $suppress bool
+        * @param File $file
+        * @param string $reason
+        * @param bool $suppress
         */
        function __construct( File $file, $reason = '', $suppress = false ) {
                $this->file = $file;
@@ -1856,7 +1931,7 @@ class LocalFileDeleteBatch {
        }
 
        /**
-        * @param $oldName string
+        * @param string $oldName
         */
        function addOld( $oldName ) {
                $this->srcRels[$oldName] = $this->file->getArchiveRel( $oldName );
@@ -1865,7 +1940,7 @@ class LocalFileDeleteBatch {
 
        /**
         * Add the old versions of the image to the batch
-        * @return Array List of archive names from old versions
+        * @return array List of archive names from old versions
         */
        function addOlds() {
                $archiveNames = array();
@@ -1990,27 +2065,27 @@ class LocalFileDeleteBatch {
                        $dbw->insertSelect( 'filearchive', 'image',
                                array(
                                        'fa_storage_group' => $encGroup,
-                                       'fa_storage_key'   => "CASE WHEN img_sha1='' THEN '' ELSE $concat END",
-                                       'fa_deleted_user'      => $encUserId,
+                                       'fa_storage_key' => "CASE WHEN img_sha1='' THEN '' ELSE $concat END",
+                                       'fa_deleted_user' => $encUserId,
                                        'fa_deleted_timestamp' => $encTimestamp,
-                                       'fa_deleted_reason'    => $encReason,
-                                       'fa_deleted'           => $this->suppress ? $bitfield : 0,
+                                       'fa_deleted_reason' => $encReason,
+                                       'fa_deleted' => $this->suppress ? $bitfield : 0,
 
-                                       'fa_name'         => 'img_name',
+                                       'fa_name' => 'img_name',
                                        'fa_archive_name' => 'NULL',
-                                       'fa_size'         => 'img_size',
-                                       'fa_width'        => 'img_width',
-                                       'fa_height'       => 'img_height',
-                                       'fa_metadata'     => 'img_metadata',
-                                       'fa_bits'         => 'img_bits',
-                                       'fa_media_type'   => 'img_media_type',
-                                       'fa_major_mime'   => 'img_major_mime',
-                                       'fa_minor_mime'   => 'img_minor_mime',
-                                       'fa_description'  => 'img_description',
-                                       'fa_user'         => 'img_user',
-                                       'fa_user_text'    => 'img_user_text',
-                                       'fa_timestamp'    => 'img_timestamp',
-                                       'fa_sha1'         => 'img_sha1',
+                                       'fa_size' => 'img_size',
+                                       'fa_width' => 'img_width',
+                                       'fa_height' => 'img_height',
+                                       'fa_metadata' => 'img_metadata',
+                                       'fa_bits' => 'img_bits',
+                                       'fa_media_type' => 'img_media_type',
+                                       'fa_major_mime' => 'img_major_mime',
+                                       'fa_minor_mime' => 'img_minor_mime',
+                                       'fa_description' => 'img_description',
+                                       'fa_user' => 'img_user',
+                                       'fa_user_text' => 'img_user_text',
+                                       'fa_timestamp' => 'img_timestamp',
+                                       'fa_sha1' => 'img_sha1',
                                ), $where, __METHOD__ );
                }
 
@@ -2022,27 +2097,27 @@ class LocalFileDeleteBatch {
                        $dbw->insertSelect( 'filearchive', 'oldimage',
                                array(
                                        'fa_storage_group' => $encGroup,
-                                       'fa_storage_key'   => "CASE WHEN oi_sha1='' THEN '' ELSE $concat END",
-                                       'fa_deleted_user'      => $encUserId,
+                                       'fa_storage_key' => "CASE WHEN oi_sha1='' THEN '' ELSE $concat END",
+                                       'fa_deleted_user' => $encUserId,
                                        'fa_deleted_timestamp' => $encTimestamp,
-                                       'fa_deleted_reason'    => $encReason,
-                                       'fa_deleted'           => $this->suppress ? $bitfield : 'oi_deleted',
+                                       'fa_deleted_reason' => $encReason,
+                                       'fa_deleted' => $this->suppress ? $bitfield : 'oi_deleted',
 
-                                       'fa_name'         => 'oi_name',
+                                       'fa_name' => 'oi_name',
                                        'fa_archive_name' => 'oi_archive_name',
-                                       'fa_size'         => 'oi_size',
-                                       'fa_width'        => 'oi_width',
-                                       'fa_height'       => 'oi_height',
-                                       'fa_metadata'     => 'oi_metadata',
-                                       'fa_bits'         => 'oi_bits',
-                                       'fa_media_type'   => 'oi_media_type',
-                                       'fa_major_mime'   => 'oi_major_mime',
-                                       'fa_minor_mime'   => 'oi_minor_mime',
-                                       'fa_description'  => 'oi_description',
-                                       'fa_user'         => 'oi_user',
-                                       'fa_user_text'    => 'oi_user_text',
-                                       'fa_timestamp'    => 'oi_timestamp',
-                                       'fa_sha1'         => 'oi_sha1',
+                                       'fa_size' => 'oi_size',
+                                       'fa_width' => 'oi_width',
+                                       'fa_height' => 'oi_height',
+                                       'fa_metadata' => 'oi_metadata',
+                                       'fa_bits' => 'oi_bits',
+                                       'fa_media_type' => 'oi_media_type',
+                                       'fa_major_mime' => 'oi_major_mime',
+                                       'fa_minor_mime' => 'oi_minor_mime',
+                                       'fa_description' => 'oi_description',
+                                       'fa_user' => 'oi_user',
+                                       'fa_user_text' => 'oi_user_text',
+                                       'fa_timestamp' => 'oi_timestamp',
+                                       'fa_sha1' => 'oi_sha1',
                                ), $where, __METHOD__ );
                }
        }
@@ -2130,6 +2205,7 @@ class LocalFileDeleteBatch {
                        // TODO: delete the defunct filearchive rows if we are using a non-transactional DB
                        $this->file->unlockAndRollback();
                        wfProfileOut( __METHOD__ );
+
                        return $this->status;
                }
 
@@ -2175,16 +2251,24 @@ class LocalFileDeleteBatch {
  * @ingroup FileAbstraction
  */
 class LocalFileRestoreBatch {
-       /**
-        * @var LocalFile
-        */
-       var $file;
+       /** @var LocalFile */
+       private $file;
+
+       /** @var array List of file IDs to restore */
+       private $cleanupBatch;
+
+       /** @var array List of file IDs to restore */
+       private $ids;
 
-       var $cleanupBatch, $ids, $all, $unsuppress = false;
+       /** @var bool Add all revisions of the file  */
+       private $all;
+
+       /** @var bool Wether to remove all settings for suppressed fields  */
+       private $unsuppress = false;
 
        /**
-        * @param $file File
-        * @param $unsuppress bool
+        * @param File $file
+        * @param bool $unsuppress
         */
        function __construct( File $file, $unsuppress = false ) {
                $this->file = $file;
@@ -2274,7 +2358,8 @@ class LocalFileRestoreBatch {
                                continue;
                        }
 
-                       $deletedRel = $this->file->repo->getDeletedHashPath( $row->fa_storage_key ) . $row->fa_storage_key;
+                       $deletedRel = $this->file->repo->getDeletedHashPath( $row->fa_storage_key ) .
+                               $row->fa_storage_key;
                        $deletedUrl = $this->file->repo->getVirtualUrl() . '/deleted/' . $deletedRel;
 
                        if ( isset( $row->fa_sha1 ) ) {
@@ -2292,7 +2377,8 @@ class LocalFileRestoreBatch {
                        if ( is_null( $row->fa_major_mime ) || $row->fa_major_mime == 'unknown'
                                || is_null( $row->fa_minor_mime ) || $row->fa_minor_mime == 'unknown'
                                || is_null( $row->fa_media_type ) || $row->fa_media_type == 'UNKNOWN'
-                               || is_null( $row->fa_metadata ) ) {
+                               || is_null( $row->fa_metadata )
+                       ) {
                                // Refresh our metadata
                                // Required for a new current revision; nice for older ones too. :)
                                $props = RepoGroup::singleton()->getFileProps( $deletedUrl );
@@ -2301,7 +2387,7 @@ class LocalFileRestoreBatch {
                                        'minor_mime' => $row->fa_minor_mime,
                                        'major_mime' => $row->fa_major_mime,
                                        'media_type' => $row->fa_media_type,
-                                       'metadata'   => $row->fa_metadata
+                                       'metadata' => $row->fa_metadata
                                );
                        }
 
@@ -2309,20 +2395,20 @@ class LocalFileRestoreBatch {
                                // This revision will be published as the new current version
                                $destRel = $this->file->getRel();
                                $insertCurrent = array(
-                                       'img_name'        => $row->fa_name,
-                                       'img_size'        => $row->fa_size,
-                                       'img_width'       => $row->fa_width,
-                                       'img_height'      => $row->fa_height,
-                                       'img_metadata'    => $props['metadata'],
-                                       'img_bits'        => $row->fa_bits,
-                                       'img_media_type'  => $props['media_type'],
-                                       'img_major_mime'  => $props['major_mime'],
-                                       'img_minor_mime'  => $props['minor_mime'],
+                                       'img_name' => $row->fa_name,
+                                       'img_size' => $row->fa_size,
+                                       'img_width' => $row->fa_width,
+                                       'img_height' => $row->fa_height,
+                                       'img_metadata' => $props['metadata'],
+                                       'img_bits' => $row->fa_bits,
+                                       'img_media_type' => $props['media_type'],
+                                       'img_major_mime' => $props['major_mime'],
+                                       'img_minor_mime' => $props['minor_mime'],
                                        'img_description' => $row->fa_description,
-                                       'img_user'        => $row->fa_user,
-                                       'img_user_text'   => $row->fa_user_text,
-                                       'img_timestamp'   => $row->fa_timestamp,
-                                       'img_sha1'        => $sha1
+                                       'img_user' => $row->fa_user,
+                                       'img_user_text' => $row->fa_user_text,
+                                       'img_timestamp' => $row->fa_timestamp,
+                                       'img_sha1' => $sha1
                                );
 
                                // The live (current) version cannot be hidden!
@@ -2348,22 +2434,22 @@ class LocalFileRestoreBatch {
                                $archiveNames[$archiveName] = true;
                                $destRel = $this->file->getArchiveRel( $archiveName );
                                $insertBatch[] = array(
-                                       'oi_name'         => $row->fa_name,
+                                       'oi_name' => $row->fa_name,
                                        'oi_archive_name' => $archiveName,
-                                       'oi_size'         => $row->fa_size,
-                                       'oi_width'        => $row->fa_width,
-                                       'oi_height'       => $row->fa_height,
-                                       'oi_bits'         => $row->fa_bits,
-                                       'oi_description'  => $row->fa_description,
-                                       'oi_user'         => $row->fa_user,
-                                       'oi_user_text'    => $row->fa_user_text,
-                                       'oi_timestamp'    => $row->fa_timestamp,
-                                       'oi_metadata'     => $props['metadata'],
-                                       'oi_media_type'   => $props['media_type'],
-                                       'oi_major_mime'   => $props['major_mime'],
-                                       'oi_minor_mime'   => $props['minor_mime'],
-                                       'oi_deleted'      => $this->unsuppress ? 0 : $row->fa_deleted,
-                                       'oi_sha1'         => $sha1 );
+                                       'oi_size' => $row->fa_size,
+                                       'oi_width' => $row->fa_width,
+                                       'oi_height' => $row->fa_height,
+                                       'oi_bits' => $row->fa_bits,
+                                       'oi_description' => $row->fa_description,
+                                       'oi_user' => $row->fa_user,
+                                       'oi_user_text' => $row->fa_user_text,
+                                       'oi_timestamp' => $row->fa_timestamp,
+                                       'oi_metadata' => $props['metadata'],
+                                       'oi_media_type' => $props['media_type'],
+                                       'oi_major_mime' => $props['major_mime'],
+                                       'oi_minor_mime' => $props['minor_mime'],
+                                       'oi_deleted' => $this->unsuppress ? 0 : $row->fa_deleted,
+                                       'oi_sha1' => $sha1 );
                        }
 
                        $deleteIds[] = $row->fa_id;
@@ -2448,7 +2534,7 @@ class LocalFileRestoreBatch {
 
        /**
         * Removes non-existent files from a store batch.
-        * @param $triplets array
+        * @param array $triplets
         * @return array
         */
        function removeNonexistentFiles( $triplets ) {
@@ -2470,7 +2556,7 @@ class LocalFileRestoreBatch {
 
        /**
         * Removes non-existent files from a cleanup batch.
-        * @param $batch array
+        * @param array $batch
         * @return array
         */
        function removeNonexistentFromCleanup( $batch ) {
@@ -2539,23 +2625,26 @@ class LocalFileRestoreBatch {
  * @ingroup FileAbstraction
  */
 class LocalFileMoveBatch {
+       /** @var LocalFile */
+       protected $file;
 
-       /**
-        * @var LocalFile
-        */
-       var $file;
+       /** @var Title */
+       protected $target;
 
-       /**
-        * @var Title
-        */
-       var $target;
+       /** @var   */
+       protected $cur;
 
-       var $cur, $olds, $oldCount, $archive;
+       /** @var   */
+       protected $olds;
 
-       /**
-        * @var DatabaseBase
-        */
-       var $db;
+       /** @var   */
+       protected $oldCount;
+
+       /** @var   */
+       protected $archive;
+
+       /** @var DatabaseBase */
+       protected $db;
 
        /**
         * @param File $file
@@ -2582,7 +2671,7 @@ class LocalFileMoveBatch {
 
        /**
         * Add the old versions of the image to the batch
-        * @return Array List of archive names from old versions
+        * @return array List of archive names from old versions
         */
        function addOlds() {
                $archiveBase = 'archive';
@@ -2650,21 +2739,25 @@ class LocalFileMoveBatch {
                if ( !$statusDb->isGood() ) {
                        $this->file->unlockAndRollback();
                        $statusDb->ok = false;
+
                        return $statusDb;
                }
-               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
+               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: " .
+                       "{$statusDb->successCount} successes, {$statusDb->failCount} failures" );
 
                // Copy the files into their new location.
                // If a prior process fataled copying or cleaning up files we tolerate any
                // of the existing files if they are identical to the ones being stored.
                $statusMove = $repo->storeBatch( $triplets, FileRepo::OVERWRITE_SAME );
-               wfDebugLog( 'imagemove', "Moved files for {$this->file->getName()}: {$statusMove->successCount} successes, {$statusMove->failCount} failures" );
+               wfDebugLog( 'imagemove', "Moved files for {$this->file->getName()}: " .
+                       "{$statusMove->successCount} successes, {$statusMove->failCount} failures" );
                if ( !$statusMove->isGood() ) {
                        // Delete any files copied over (while the destination is still locked)
                        $this->cleanupTarget( $triplets );
                        $this->file->unlockAndRollback(); // unlocks the destination
                        wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
                        $statusMove->ok = false;
+
                        return $statusMove;
                }
                $this->file->unlock(); // done
@@ -2702,6 +2795,7 @@ class LocalFileMoveBatch {
                } else {
                        $status->failCount++;
                        $status->fatal( 'imageinvalidfilename' );
+
                        return $status;
                }
 
@@ -2743,7 +2837,10 @@ class LocalFileMoveBatch {
                        // $move: (oldRelativePath, newRelativePath)
                        $srcUrl = $this->file->repo->getVirtualUrl() . '/public/' . rawurlencode( $move[0] );
                        $triplets[] = array( $srcUrl, 'public', $move[1] );
-                       wfDebugLog( 'imagemove', "Generated move triplet for {$this->file->getName()}: {$srcUrl} :: public :: {$move[1]}" );
+                       wfDebugLog(
+                               'imagemove',
+                               "Generated move triplet for {$this->file->getName()}: {$srcUrl} :: public :: {$move[1]}"
+                       );
                }
 
                return $triplets;
@@ -2751,7 +2848,7 @@ class LocalFileMoveBatch {
 
        /**
         * Removes non-existent files from move batch.
-        * @param $triplets array
+        * @param array $triplets
         * @return array
         */
        function removeNonexistentFiles( $triplets ) {
index 2c54596..d6c6a3c 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;
 
        /**
-        * @param $title Title
-        * @param $repo FileRepo
-        * @param $time null
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param null|int $time Timestamp or null
         * @return OldLocalFile
         * @throws MWException
         */
@@ -44,13 +48,14 @@ class OldLocalFile extends LocalFile {
                if ( $time === null ) {
                        throw new MWException( __METHOD__ . ' got null for $time parameter' );
                }
+
                return new self( $title, $repo, $time, null );
        }
 
        /**
-        * @param $title Title
-        * @param $repo FileRepo
-        * @param $archiveName
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param string $archiveName
         * @return OldLocalFile
         */
        static function newFromArchiveName( $title, $repo, $archiveName ) {
@@ -58,14 +63,15 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $row
-        * @param $repo FileRepo
+        * @param stdClass $row
+        * @param FileRepo $repo
         * @return OldLocalFile
         */
        static function newFromRow( $row, $repo ) {
                $title = Title::makeTitle( NS_FILE, $row->oi_name );
                $file = new self( $title, $repo, null, $row->oi_archive_name );
                $file->loadFromRow( $row, 'oi_' );
+
                return $file;
        }
 
@@ -74,7 +80,7 @@ class OldLocalFile extends LocalFile {
         * Do not call this except from inside a repo class.
         *
         * @param string $sha1 base-36 SHA-1
-        * @param $repo LocalRepo
+        * @param LocalRepo $repo
         * @param string|bool $timestamp MW_timestamp (optional)
         *
         * @return bool|OldLocalFile
@@ -121,9 +127,9 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $title Title
-        * @param $repo FileRepo
-        * @param string $time timestamp or null to load by archive name
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param string $time Timestamp or null to load by archive name
         * @param string $archiveName archive name or null to load by timestamp
         * @throws MWException
         */
@@ -144,12 +150,13 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @return String
+        * @return string
         */
        function getArchiveName() {
                if ( !isset( $this->archive_name ) ) {
                        $this->load();
                }
+
                return $this->archive_name;
        }
 
@@ -226,13 +233,14 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $prefix string
+        * @param string $prefix
         * @return array
         */
        function getCacheFields( $prefix = 'img_' ) {
                $fields = parent::getCacheFields( $prefix );
                $fields[] = $prefix . 'archive_name';
                $fields[] = $prefix . 'deleted';
+
                return $fields;
        }
 
@@ -258,6 +266,7 @@ class OldLocalFile extends LocalFile {
                if ( !$this->fileExists ) {
                        wfDebug( __METHOD__ . ": file does not exist, aborting\n" );
                        wfProfileOut( __METHOD__ );
+
                        return;
                }
 
@@ -267,15 +276,15 @@ class OldLocalFile extends LocalFile {
                wfDebug( __METHOD__ . ': upgrading ' . $this->archive_name . " to the current schema\n" );
                $dbw->update( 'oldimage',
                        array(
-                               'oi_size'       => $this->size, // sanity
-                               'oi_width'      => $this->width,
-                               'oi_height'     => $this->height,
-                               'oi_bits'       => $this->bits,
+                               'oi_size' => $this->size, // sanity
+                               'oi_width' => $this->width,
+                               'oi_height' => $this->height,
+                               'oi_bits' => $this->bits,
                                'oi_media_type' => $this->media_type,
                                'oi_major_mime' => $major,
                                'oi_minor_mime' => $minor,
-                               'oi_metadata'   => $this->metadata,
-                               'oi_sha1'       => $this->sha1,
+                               'oi_metadata' => $this->metadata,
+                               'oi_sha1' => $this->sha1,
                        ), array(
                                'oi_name' => $this->getName(),
                                'oi_archive_name' => $this->archive_name ),
@@ -285,12 +294,13 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $field Integer: one of DELETED_* bitfield constants
-        *               for file or revision rows
+        * @param int $field One of DELETED_* bitfield constants for file or
+        *   revision rows
         * @return bool
         */
        function isDeleted( $field ) {
                $this->load();
+
                return ( $this->deleted & $field ) == $field;
        }
 
@@ -300,6 +310,7 @@ class OldLocalFile extends LocalFile {
         */
        function getVisibility() {
                $this->load();
+
                return (int)$this->deleted;
        }
 
@@ -307,12 +318,13 @@ class OldLocalFile extends LocalFile {
         * Determine if the current user is allowed to view a particular
         * field of this image file, if it's marked as deleted.
         *
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
+        * @param int $field
+        * @param User|null $user User object to check, or null to use $wgUser
         * @return bool
         */
        function userCan( $field, User $user = null ) {
                $this->load();
+
                return Revision::userCanBitfield( $this->deleted, $field, $user );
        }
 
@@ -321,12 +333,11 @@ class OldLocalFile extends LocalFile {
         *
         * @param string $srcPath File system path of the source file
         * @param string $archiveName Full archive name of the file, in the form
-        *     $timestamp!$filename, where $filename must match $this->getName()
-        *
-        * @param $timestamp string
-        * @param $comment string
-        * @param $user
-        * @param $flags int
+        *   $timestamp!$filename, where $filename must match $this->getName()
+        * @param string $timestamp
+        * @param string $comment
+        * @param User $user
+        * @param int $flags
         * @return FileRepoStatus
         */
        function uploadOld( $srcPath, $archiveName, $timestamp, $comment, $user, $flags = 0 ) {
@@ -353,9 +364,9 @@ class OldLocalFile extends LocalFile {
         *
         * @param string $srcPath File system path to the source file
         * @param string $archiveName The archive name of the file
-        * @param $timestamp string
+        * @param string $timestamp
         * @param string $comment Upload comment
-        * @param $user User User who did this upload
+        * @param User $user User who did this upload
         * @return bool
         */
        function recordOldUpload( $srcPath, $archiveName, $timestamp, $comment, $user ) {
@@ -370,21 +381,21 @@ class OldLocalFile extends LocalFile {
 
                $dbw->insert( 'oldimage',
                        array(
-                               'oi_name'         => $this->getName(),
+                               'oi_name' => $this->getName(),
                                'oi_archive_name' => $archiveName,
-                               'oi_size'         => $props['size'],
-                               'oi_width'        => intval( $props['width'] ),
-                               'oi_height'       => intval( $props['height'] ),
-                               'oi_bits'         => $props['bits'],
-                               'oi_timestamp'    => $dbw->timestamp( $timestamp ),
-                               'oi_description'  => $comment,
-                               'oi_user'         => $user->getId(),
-                               'oi_user_text'    => $user->getName(),
-                               'oi_metadata'     => $props['metadata'],
-                               'oi_media_type'   => $props['media_type'],
-                               'oi_major_mime'   => $props['major_mime'],
-                               'oi_minor_mime'   => $props['minor_mime'],
-                               'oi_sha1'         => $props['sha1'],
+                               'oi_size' => $props['size'],
+                               'oi_width' => intval( $props['width'] ),
+                               'oi_height' => intval( $props['height'] ),
+                               'oi_bits' => $props['bits'],
+                               'oi_timestamp' => $dbw->timestamp( $timestamp ),
+                               'oi_description' => $comment,
+                               'oi_user' => $user->getId(),
+                               'oi_user_text' => $user->getName(),
+                               'oi_metadata' => $props['metadata'],
+                               'oi_media_type' => $props['media_type'],
+                               'oi_major_mime' => $props['major_mime'],
+                               'oi_minor_mime' => $props['minor_mime'],
+                               'oi_sha1' => $props['sha1'],
                        ), __METHOD__
                );
 
@@ -392,5 +403,4 @@ class OldLocalFile extends LocalFile {
 
                return true;
        }
-
 }
index 47ba6d6..782e23a 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
-        * @param $mime string
+        * @param string $mime
         * @return UnregisteredLocalFile
         */
        static function newFromPath( $path, $mime ) {
@@ -51,8 +62,8 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $title
-        * @param $repo
+        * @param Title $title
+        * @param FileRepo $repo
         * @return UnregisteredLocalFile
         */
        static function newFromTitle( $title, $repo ) {
@@ -64,14 +75,15 @@ class UnregisteredLocalFile extends File {
         * A FileRepo object is not required here, unlike most other File classes.
         *
         * @throws MWException
-        * @param $title Title|bool
-        * @param $repo FileRepo|bool
-        * @param $path string|bool
-        * @param $mime string|bool
+        * @param Title|bool $title
+        * @param FileRepo|bool $repo
+        * @param string|bool $path
+        * @param string|bool $mime
         */
        function __construct( $title = false, $repo = false, $path = false, $mime = false ) {
                if ( !( $title && $repo ) && !$path ) {
-                       throw new MWException( __METHOD__ . ': not enough parameters, must specify title and repo, or a full path' );
+                       throw new MWException( __METHOD__ .
+                               ': not enough parameters, must specify title and repo, or a full path' );
                }
                if ( $title instanceof Title ) {
                        $this->title = File::normalizeTitle( $title, 'exception' );
@@ -95,7 +107,7 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $page int
+        * @param int $page
         * @return bool
         */
        private function cachePageDimensions( $page = 1 ) {
@@ -105,24 +117,27 @@ class UnregisteredLocalFile extends File {
                        }
                        $this->dims[$page] = $this->handler->getPageDimensions( $this, $page );
                }
+
                return $this->dims[$page];
        }
 
        /**
-        * @param $page int
-        * @return number
+        * @param int $page
+        * @return int
         */
        function getWidth( $page = 1 ) {
                $dim = $this->cachePageDimensions( $page );
+
                return $dim['width'];
        }
 
        /**
-        * @param $page int
-        * @return number
+        * @param int $page
+        * @return int
         */
        function getHeight( $page = 1 ) {
                $dim = $this->cachePageDimensions( $page );
+
                return $dim['height'];
        }
 
@@ -134,17 +149,19 @@ class UnregisteredLocalFile extends File {
                        $magic = MimeMagic::singleton();
                        $this->mime = $magic->guessMimeType( $this->getLocalRefPath() );
                }
+
                return $this->mime;
        }
 
        /**
-        * @param $filename String
-        * @return Array|bool
+        * @param string $filename
+        * @return array|bool
         */
        function getImageSize( $filename ) {
                if ( !$this->getHandler() ) {
                        return false;
                }
+
                return $this->handler->getImageSize( $this, $this->getLocalRefPath() );
        }
 
@@ -159,6 +176,7 @@ class UnregisteredLocalFile extends File {
                                $this->metadata = $this->handler->getMetadata( $this, $this->getLocalRefPath() );
                        }
                }
+
                return $this->metadata;
        }
 
@@ -179,6 +197,7 @@ class UnregisteredLocalFile extends File {
         */
        function getSize() {
                $this->assertRepoDefined();
+
                return $this->repo->getFileSize( $this->path );
        }
 
@@ -187,7 +206,7 @@ class UnregisteredLocalFile extends File {
         * The file at the path of $fsFile should not be deleted (or at least
         * not until the end of the request). This is mostly a performance hack.
         *
-        * @param $fsFile FSFile
+        * @param FSFile $fsFile
         * @return void
         */
        public function setLocalReference( FSFile $fsFile ) {
index f8b8c50..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;
@@ -74,7 +88,7 @@ abstract class ImageGalleryBase extends ContextSource {
                }
        }
 
-       static private function loadModes() {
+       private static function loadModes() {
                if ( self::$modeMapping === false ) {
                        self::$modeMapping = array(
                                'traditional' => 'TraditionalImageGallery',
@@ -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 1f60fa6..cfedac7 100644 (file)
@@ -21,8 +21,6 @@
  */
 
 class TraditionalImageGallery extends ImageGalleryBase {
-
-
        /**
         * Return a HTML representation of the image gallery
         *
@@ -38,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(
@@ -60,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];
@@ -90,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(
@@ -120,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();
                                }
@@ -128,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 ) {
@@ -158,48 +169,46 @@ 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" :
                                '';
 
-
                        $galleryText = $textlink . $text . $fileSize;
                        $galleryText = $this->wrapGalleryText( $galleryText, $thumb );
 
                        # 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>";
 
                return $output;
        }
 
-
        /**
         * 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>";
        }
 
        /**
@@ -213,7 +222,6 @@ class TraditionalImageGallery extends ImageGalleryBase {
        }
 
        /**
-        *
         * @note GB stands for gallerybox (as in the <li class="gallerybox"> element)
         *
         * @return int
@@ -236,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();
@@ -249,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;
@@ -259,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(
@@ -285,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();
@@ -297,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();
@@ -308,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 56d8353..2433fbd 100644 (file)
@@ -220,12 +220,23 @@ 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;";
+                       }
                }
 
-               $wgServerSetting = "";
+               $serverSetting = "";
                if ( array_key_exists( 'wgServer', $this->values ) && $this->values['wgServer'] !== null ) {
-                       $wgServerSetting = "\n## The protocol and server name to use in fully-qualified URLs\n";
-                       $wgServerSetting .= "\$wgServer = \"{$this->values['wgServer']}\";\n";
+                       $serverSetting = "\n## The protocol and server name to use in fully-qualified URLs\n";
+                       $serverSetting .= "\$wgServer = \"{$this->values['wgServer']}\";\n";
                }
 
                switch ( $this->values['wgMainCacheType'] ) {
@@ -271,7 +282,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 ## http://www.mediawiki.org/wiki/Manual:Short_URL
 \$wgScriptPath = \"{$this->values['wgScriptPath']}\";
 \$wgScriptExtension = \"{$this->values['wgScriptExtension']}\";
-${wgServerSetting}
+${serverSetting}
 ## The relative URL path to the skins directory
 \$wgStylePath = \"\$wgScriptPath/skins\";
 
@@ -353,6 +364,7 @@ ${wgServerSetting}
 # 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 6178e5b..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 );
                                }
@@ -302,7 +302,6 @@ class WebInstallerOutput {
 
 </div></div>
 
-
 <div id="mw-panel">
        <div class="portal" id="p-logo">
          <a style="background-image: url(../skins/common/images/mediawiki.png);"
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 44c240b..8885e25 100644 (file)
@@ -47,13 +47,17 @@ 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
-        * @param $title Title: the title linked to
+        * @param Title $title The title linked to
         * @param array $params job parameters (table, start and end page_ids)
-        * @param $id Integer: job id
+        * @param int $id Job id
         */
        function __construct( $title, $params, $id = 0 ) {
                global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
@@ -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,9 +137,8 @@ class HTMLCacheUpdateJob extends Job {
         * using a pre-calculated title array which gives the links in that range.
         * Queue the resulting jobs.
         *
-        * @param $titleArray array
-        * @param $rootJobParams array
-        * @return void
+        * @param array|TitleArrayFromResult $titleArray
+        * @param array $rootJobParams
         */
        protected function insertJobsFromTitles( $titleArray, $rootJobParams = array() ) {
                // Carry over any "root job" information
@@ -144,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
@@ -184,8 +190,7 @@ class HTMLCacheUpdateJob extends Job {
        }
 
        /**
-        * @param $rootJobParams array
-        * @return void
+        * @param array $rootJobParams
         */
        protected function insertPartitionJobs( $rootJobParams = array() ) {
                // Carry over any "root job" information
@@ -213,7 +218,7 @@ class HTMLCacheUpdateJob extends Job {
 
        /**
         * Invalidate an array (or iterator) of Title objects, right now
-        * @param $titleArray array
+        * @param array|TitleArrayFromResult $titleArray
         */
        protected function invalidateTitles( $titleArray ) {
                global $wgUseFileCache, $wgUseSquid;
@@ -223,6 +228,7 @@ class HTMLCacheUpdateJob extends Job {
 
                # Get all IDs in this query into an array
                $ids = array();
+               /** @var Title $title */
                foreach ( $titleArray as $title ) {
                        $ids[] = $title->getArticleID();
                }
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 5a24f93..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,11 +48,12 @@ 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;
                        }
 
-
                        UploadBase::setSessionStatus(
                                $this->params['filekey'],
                                array( 'result' => 'Poll', 'stage' => 'publish', 'status' => Status::newGood() )
@@ -74,6 +76,7 @@ class PublishStashedFileJob extends Job {
                                        array( 'result' => 'Failure', 'stage' => 'publish', 'status' => $status )
                                );
                                $this->setLastError( "Could not verify upload." );
+
                                return false;
                        }
 
@@ -90,6 +93,7 @@ class PublishStashedFileJob extends Job {
                                        array( 'result' => 'Failure', 'stage' => 'publish', 'status' => $status )
                                );
                                $this->setLastError( $status->getWikiText() );
+
                                return false;
                        }
 
@@ -121,8 +125,10 @@ class PublishStashedFileJob extends Job {
                                )
                        );
                        $this->setLastError( get_class( $e ) . ": " . $e->getText() );
+
                        return false;
                }
+
                return true;
        }
 
@@ -131,6 +137,7 @@ class PublishStashedFileJob extends Job {
                if ( is_array( $info['params'] ) ) {
                        $info['params'] = array( 'filekey' => $info['params']['filekey'] );
                }
+
                return $info;
        }
 
index 4fc8bac..cc35cf1 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 && $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..2b1b81f 100644 (file)
@@ -63,6 +63,7 @@ class LogEventsList extends ContextSource {
         * @return Title object
         */
        public function getDisplayTitle() {
+               wfDeprecated( __METHOD__, '1.20' );
                return $this->getTitle();
        }
 
@@ -176,6 +177,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 +193,7 @@ class LogEventsList extends ContextSource {
                        unset( $this->mDefaultQuery['month'] );
                        unset( $this->mDefaultQuery['year'] );
                }
+
                return $this->mDefaultQuery;
        }
 
@@ -202,6 +205,7 @@ class LogEventsList extends ContextSource {
                $queryType = count( $queryTypes ) == 1 ? $queryTypes[0] : '';
                $selector = $this->getTypeSelector();
                $selector->setDefault( $queryType );
+
                return $selector->getHtml();
        }
 
@@ -242,9 +246,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 +262,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 +297,7 @@ class LogEventsList extends ContextSource {
                        return Xml::inputLabel( $this->msg( 'revdelete-offender' )->text(), 'offender',
                                'mw-log-offender', 20, $offender );
                }
+
                return '';
        }
 
@@ -343,8 +360,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 +373,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 +395,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 +426,7 @@ class LogEventsList extends ContextSource {
                                $match = $wgUser->isAllowed( $right );
                        }
                }
+
                return $match;
        }
 
@@ -431,10 +464,11 @@ class LogEventsList extends ContextSource {
                                global $wgUser;
                                $user = $wgUser;
                        }
+
                        return $user->isAllowed( $permission );
-               } else {
-                       return true;
                }
+
+               return true;
        }
 
        /**
@@ -613,6 +647,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..9665cde 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;
        }
 
@@ -198,6 +200,8 @@ class LogPage {
        public static function logName( $type ) {
                global $wgLogNames;
 
+               wfDeprecated( __METHOD__, '1.21' );
+
                if ( isset( $wgLogNames[$type] ) ) {
                        return str_replace( '_', ' ', wfMessage( $wgLogNames[$type] )->text() );
                } else {
@@ -216,6 +220,9 @@ class LogPage {
         */
        public static function logHeader( $type ) {
                global $wgLogHeaders;
+
+               wfDeprecated( __METHOD__, '1.21' );
+
                return wfMessage( $wgLogHeaders[$type] )->parse();
        }
 
@@ -233,8 +240,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 +261,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 +270,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 +294,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 +420,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 +542,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 +614,7 @@ class LogPage {
                } else {
                        $key = 'log-description-' . $this->type;
                }
+
                return wfMessage( $key );
        }
 
@@ -609,6 +631,7 @@ class LogPage {
                        // '' always returns true with $user->isAllowed()
                        $restriction = '';
                }
+
                return $restriction;
        }
 
@@ -619,7 +642,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 99b7741..7271d99 100644 (file)
@@ -28,7 +28,6 @@
  * @ingroup Media
  */
 class BmpHandler extends BitmapHandler {
-
        /**
         * @param $file
         * @return bool
@@ -75,6 +74,7 @@ class BmpHandler extends BitmapHandler {
                } catch ( MWException $e ) {
                        return false;
                }
+
                return array( $w[1], $h[1] );
        }
 }
index 43ba117..f50c3e5 100644 (file)
@@ -61,9 +61,10 @@ class BitmapHandler extends ImageHandler {
                if ( is_null( $checkImageAreaHookResult ) ) {
                        global $wgMaxImageArea;
 
-                       if ( $srcWidth * $srcHeight > $wgMaxImageArea &&
-                                       !( $image->getMimeType() == 'image/jpeg' &&
-                                               self::getScalerType( false, false ) == 'im' ) ) {
+                       if ( $srcWidth * $srcHeight > $wgMaxImageArea
+                               && !( $image->getMimeType() == 'image/jpeg'
+                               && self::getScalerType( false, false ) == 'im' )
+                       ) {
                                # Only ImageMagick can efficiently downsize jpg images without loading
                                # the entire file in memory
                                return false;
@@ -96,6 +97,7 @@ class BitmapHandler extends ImageHandler {
                        $width = $params['physicalWidth'];
                        $height = $params['physicalHeight'];
                }
+
                return array( $width, $height );
        }
 
@@ -121,8 +123,9 @@ class BitmapHandler extends ImageHandler {
                        'clientWidth' => $params['width'],
                        'clientHeight' => $params['height'],
                        # Comment as will be added to the Exif of the thumbnail
-                       'comment' => isset( $params['descriptionUrl'] ) ?
-                               "File source: {$params['descriptionUrl']}" : '',
+                       'comment' => isset( $params['descriptionUrl'] )
+                               ? "File source: {$params['descriptionUrl']}"
+                               : '',
                        # Properties of the original image
                        'srcWidth' => $image->getWidth(),
                        'srcHeight' => $image->getHeight(),
@@ -137,11 +140,13 @@ class BitmapHandler extends ImageHandler {
                wfDebug( __METHOD__ . ": creating {$scalerParams['physicalDimensions']} thumbnail at $dstPath using scaler $scaler\n" );
 
                if ( !$image->mustRender() &&
-                               $scalerParams['physicalWidth'] == $scalerParams['srcWidth']
-                               && $scalerParams['physicalHeight'] == $scalerParams['srcHeight'] ) {
+                       $scalerParams['physicalWidth'] == $scalerParams['srcWidth']
+                       && $scalerParams['physicalHeight'] == $scalerParams['srcHeight']
+               ) {
 
                        # normaliseParams (or the user) wants us to return the unscaled image
                        wfDebug( __METHOD__ . ": returning unscaled image\n" );
+
                        return $this->getClientScalingThumbnailImage( $image, $scalerParams );
                }
 
@@ -157,12 +162,14 @@ class BitmapHandler extends ImageHandler {
                                'width' => $scalerParams['clientWidth'],
                                'height' => $scalerParams['clientHeight']
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, false, $params );
                }
 
                # Try to make a target path for the thumbnail
                if ( !wfMkdirParents( dirname( $dstPath ), null, __METHOD__ ) ) {
                        wfDebug( __METHOD__ . ": Unable to create thumbnail destination directory, falling back to client scaling\n" );
+
                        return $this->getClientScalingThumbnailImage( $image, $scalerParams );
                }
 
@@ -172,6 +179,7 @@ class BitmapHandler extends ImageHandler {
                        wfDebugLog( 'thumbnail',
                                sprintf( 'Thumbnail failed on %s: could not get local copy of "%s"',
                                        wfHostname(), $image->getName() ) );
+
                        return new MediaTransformError( 'thumbnail_error',
                                $scalerParams['clientWidth'], $scalerParams['clientHeight'] );
                }
@@ -220,6 +228,7 @@ class BitmapHandler extends ImageHandler {
                                'width' => $scalerParams['clientWidth'],
                                'height' => $scalerParams['clientHeight']
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
        }
@@ -249,6 +258,7 @@ class BitmapHandler extends ImageHandler {
                } else {
                        $scaler = 'client';
                }
+
                return $scaler;
        }
 
@@ -267,6 +277,7 @@ class BitmapHandler extends ImageHandler {
                        'width' => $scalerParams['clientWidth'],
                        'height' => $scalerParams['clientHeight']
                );
+
                return new ThumbnailImage( $image, $image->getURL(), null, $params );
        }
 
@@ -280,8 +291,7 @@ class BitmapHandler extends ImageHandler {
         */
        protected function transformImageMagick( $image, $params ) {
                # use ImageMagick
-               global $wgSharpenReductionThreshold, $wgSharpenParameter,
-                       $wgMaxAnimatedGifArea,
+               global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
                        $wgImageMagickTempDir, $wgImageMagickConvertCommand;
 
                $quality = '';
@@ -294,15 +304,15 @@ class BitmapHandler extends ImageHandler {
                        $quality = "-quality 80"; // 80%
                        # Sharpening, see bug 6193
                        if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
-                                       / ( $params['srcWidth'] + $params['srcHeight'] )
-                                       < $wgSharpenReductionThreshold ) {
+                               / ( $params['srcWidth'] + $params['srcHeight'] )
+                               < $wgSharpenReductionThreshold
+                       ) {
                                $sharpen = "-sharpen " . wfEscapeShellArg( $wgSharpenParameter );
                        }
                        if ( version_compare( $this->getMagickVersion(), "6.5.6" ) >= 0 ) {
                                // JPEG decoder hint to reduce memory, available since IM 6.5.6-2
                                $decoderHint = "-define jpeg:size={$params['physicalDimensions']}";
                        }
-
                } elseif ( $params['mimeType'] == 'image/png' ) {
                        $quality = "-quality 95"; // zlib 9, adaptive filtering
 
@@ -311,7 +321,6 @@ class BitmapHandler extends ImageHandler {
                                // Extract initial frame only; we're so big it'll
                                // be a total drag. :P
                                $scene = 0;
-
                        } elseif ( $this->isAnimatedImage( $image ) ) {
                                // Coalesce is needed to scale animated GIFs properly (bug 1017).
                                $animation_pre = '-coalesce';
@@ -363,6 +372,7 @@ class BitmapHandler extends ImageHandler {
 
                if ( $retval !== 0 ) {
                        $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                        return $this->getMediaTransformError( $params, $err );
                }
 
@@ -387,8 +397,9 @@ class BitmapHandler extends ImageHandler {
                        if ( $params['mimeType'] == 'image/jpeg' ) {
                                // Sharpening, see bug 6193
                                if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
-                                               / ( $params['srcWidth'] + $params['srcHeight'] )
-                                               < $wgSharpenReductionThreshold ) {
+                                       / ( $params['srcWidth'] + $params['srcHeight'] )
+                                       < $wgSharpenReductionThreshold
+                               ) {
                                        // Hack, since $wgSharpenParamater is written specifically for the command line convert
                                        list( $radius, $sigma ) = explode( 'x', $wgSharpenParameter );
                                        $im->sharpenImage( $radius, $sigma );
@@ -437,13 +448,11 @@ class BitmapHandler extends ImageHandler {
                                return $this->getMediaTransformError( $params,
                                        "Unable to write thumbnail to {$params['dstPath']}" );
                        }
-
                } catch ( ImagickException $e ) {
                        return $this->getMediaTransformError( $params, $e->getMessage() );
                }
 
                return false;
-
        }
 
        /**
@@ -473,8 +482,10 @@ class BitmapHandler extends ImageHandler {
 
                if ( $retval !== 0 ) {
                        $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                        return $this->getMediaTransformError( $params, $err );
                }
+
                return false; # No error
        }
 
@@ -488,8 +499,9 @@ class BitmapHandler extends ImageHandler {
        protected function logErrorForExternalProcess( $retval, $err, $cmd ) {
                wfDebugLog( 'thumbnail',
                        sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
-                                       wfHostname(), $retval, trim( $err ), $cmd ) );
+                               wfHostname(), $retval, trim( $err ), $cmd ) );
        }
+
        /**
         * Get a MediaTransformError with error 'thumbnail_error'
         *
@@ -499,7 +511,7 @@ class BitmapHandler extends ImageHandler {
         */
        public function getMediaTransformError( $params, $errMsg ) {
                return new MediaTransformError( 'thumbnail_error', $params['clientWidth'],
-                                       $params['clientHeight'], $errMsg );
+                       $params['clientHeight'], $errMsg );
        }
 
        /**
@@ -517,16 +529,17 @@ class BitmapHandler extends ImageHandler {
                # input routine for this.
 
                $typemap = array(
-                       'image/gif'          => array( 'imagecreatefromgif',  'palette',   'imagegif'  ),
-                       'image/jpeg'         => array( 'imagecreatefromjpeg', 'truecolor', array( __CLASS__, 'imageJpegWrapper' ) ),
-                       'image/png'          => array( 'imagecreatefrompng',  'bits',      'imagepng'  ),
-                       'image/vnd.wap.wbmp' => array( 'imagecreatefromwbmp', 'palette',   'imagewbmp'  ),
-                       'image/xbm'          => array( 'imagecreatefromxbm',  'palette',   'imagexbm'  ),
+                       'image/gif' => array( 'imagecreatefromgif', 'palette', 'imagegif' ),
+                       'image/jpeg' => array( 'imagecreatefromjpeg', 'truecolor', array( __CLASS__, 'imageJpegWrapper' ) ),
+                       'image/png' => array( 'imagecreatefrompng', 'bits', 'imagepng' ),
+                       'image/vnd.wap.wbmp' => array( 'imagecreatefromwbmp', 'palette', 'imagewbmp' ),
+                       'image/xbm' => array( 'imagecreatefromxbm', 'palette', 'imagexbm' ),
                );
                if ( !isset( $typemap[$params['mimeType']] ) ) {
                        $err = 'Image type not supported';
                        wfDebug( "$err\n" );
                        $errMsg = wfMessage( 'thumbnail_image-type' )->text();
+
                        return $this->getMediaTransformError( $params, $errMsg );
                }
                list( $loader, $colorStyle, $saveType ) = $typemap[$params['mimeType']];
@@ -535,6 +548,7 @@ class BitmapHandler extends ImageHandler {
                        $err = "Incomplete GD library configuration: missing function $loader";
                        wfDebug( "$err\n" );
                        $errMsg = wfMessage( 'thumbnail_gd-library', $loader )->text();
+
                        return $this->getMediaTransformError( $params, $errMsg );
                }
 
@@ -542,6 +556,7 @@ class BitmapHandler extends ImageHandler {
                        $err = "File seems to be missing: {$params['srcPath']}";
                        wfDebug( "$err\n" );
                        $errMsg = wfMessage( 'thumbnail_image-missing', $params['srcPath'] )->text();
+
                        return $this->getMediaTransformError( $params, $errMsg );
                }
 
@@ -600,6 +615,7 @@ class BitmapHandler extends ImageHandler {
                if ( strlen( $s ) > 0 && ( $s[0] === '-' || $s[0] === '@' ) ) {
                        $s = '\\' . $s;
                }
+
                return $s;
        }
 
@@ -640,6 +656,7 @@ class BitmapHandler extends ImageHandler {
         */
        function escapeMagickOutput( $path, $scene = false ) {
                $path = str_replace( '%', '%%', $path );
+
                return $this->escapeMagickPath( $path, $scene );
        }
 
@@ -673,6 +690,7 @@ class BitmapHandler extends ImageHandler {
                } else {
                        $path .= "[$scene]";
                }
+
                return $path;
        }
 
@@ -695,11 +713,14 @@ class BitmapHandler extends ImageHandler {
                        $x = preg_match( '/Version: ImageMagick ([0-9]*\.[0-9]*\.[0-9]*)/', $return, $matches );
                        if ( $x != 1 ) {
                                wfDebug( __METHOD__ . ": ImageMagick version check failed\n" );
+
                                return null;
                        }
                        $wgMemc->set( "imagemagick-version", $matches[1], 3600 );
+
                        return $matches[1];
                }
+
                return $cache;
        }
 
@@ -708,7 +729,6 @@ class BitmapHandler extends ImageHandler {
                imagejpeg( $dst_image, $thumbPath, 95 );
        }
 
-
        /**
         * Returns whether the current scaler supports rotation (im and gd do)
         *
@@ -736,7 +756,7 @@ class BitmapHandler extends ImageHandler {
        /**
         * @param $file File
         * @param array $params Rotate parameters.
-        *      'rotation' clockwise rotation in degrees, allowed are multiples of 90
+        *    'rotation' clockwise rotation in degrees, allowed are multiples of 90
         * @since 1.21
         * @return bool
         */
@@ -760,8 +780,10 @@ class BitmapHandler extends ImageHandler {
                                wfProfileOut( 'convert' );
                                if ( $retval !== 0 ) {
                                        $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                                        return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
                                }
+
                                return false;
                        case 'imext':
                                $im = new Imagick();
@@ -775,6 +797,7 @@ class BitmapHandler extends ImageHandler {
                                        return new MediaTransformError( 'thumbnail_error', 0, 0,
                                                "Unable to write image to {$params['dstPath']}" );
                                }
+
                                return false;
                        default:
                                return new MediaTransformError( 'thumbnail_error', 0, 0,
index 7c39c81..f85f15e 100644 (file)
@@ -32,8 +32,8 @@
  * @ingroup Media
  */
 class BitmapMetadataHandler {
-
        private $metadata = array();
+
        private $metaPriority = array(
                20 => array( 'other' ),
                40 => array( 'native' ),
@@ -44,6 +44,7 @@ class BitmapMetadataHandler {
                100 => array( 'iptc-bad-hash' ),
                120 => array( 'exif' ),
        );
+
        private $iptcType = 'iptc-no-hash';
 
        /**
@@ -89,6 +90,7 @@ class BitmapMetadataHandler {
                        }
                }
        }
+
        /** Add misc metadata. Warning: atm if the metadata category
         * doesn't have a priority, it will be silently discarded.
         *
@@ -116,7 +118,7 @@ class BitmapMetadataHandler {
        function getMetadataArray() {
                // this seems a bit ugly... This is all so its merged in right order
                // based on the MWG recomendation.
-               $temp = Array();
+               $temp = array();
                krsort( $this->metaPriority );
                foreach ( $this->metaPriority as $pri ) {
                        foreach ( $pri as $type ) {
@@ -138,6 +140,7 @@ class BitmapMetadataHandler {
                                }
                        }
                }
+
                return $temp;
        }
 
@@ -153,7 +156,7 @@ class BitmapMetadataHandler {
 
                $seg = JpegMetadataExtractor::segmentSplitter( $filename );
                if ( isset( $seg['COM'] ) && isset( $seg['COM'][0] ) ) {
-                       $meta->addMetadata( Array( 'JPEGFileComment' => $seg['COM'] ), 'native' );
+                       $meta->addMetadata( array( 'JPEGFileComment' => $seg['COM'] ), 'native' );
                }
                if ( isset( $seg['PSIR'] ) && count( $seg['PSIR'] ) > 0 ) {
                        foreach ( $seg['PSIR'] as $curPSIRValue ) {
@@ -168,7 +171,6 @@ class BitmapMetadataHandler {
                                 * is not well tested and a bit fragile.
                                 */
                                $xmp->parseExtended( $xmpExt );
-
                        }
                        $res = $xmp->getResults();
                        foreach ( $res as $type => $array ) {
@@ -178,6 +180,7 @@ class BitmapMetadataHandler {
                if ( isset( $seg['byteOrder'] ) ) {
                        $meta->getExif( $filename, $seg['byteOrder'] );
                }
+
                return $meta->getMetadataArray();
        }
 
@@ -207,6 +210,7 @@ class BitmapMetadataHandler {
                unset( $array['text'] );
                $array['metadata'] = $meta->getMetadataArray();
                $array['metadata']['_MW_PNG_VERSION'] = PNGMetadataExtractor::VERSION;
+
                return $array;
        }
 
@@ -234,7 +238,6 @@ class BitmapMetadataHandler {
                        foreach ( $xmpRes as $type => $xmpSection ) {
                                $meta->addMetadata( $xmpSection, $type );
                        }
-
                }
 
                unset( $baseArray['comment'] );
@@ -242,6 +245,7 @@ class BitmapMetadataHandler {
 
                $baseArray['metadata'] = $meta->getMetadataArray();
                $baseArray['metadata']['_MW_GIF_VERSION'] = GIFMetadataExtractor::VERSION;
+
                return $baseArray;
        }
 
@@ -269,6 +273,7 @@ class BitmapMetadataHandler {
                        $data = $exif->getFilteredData();
                        if ( $data ) {
                                $data['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+
                                return $data;
                        } else {
                                throw new MWException( "Could not extract data from tiff file $filename" );
@@ -277,6 +282,7 @@ class BitmapMetadataHandler {
                        throw new MWException( "File doesn't exist - $filename" );
                }
        }
+
        /**
         * Read the first 2 bytes of a tiff file to figure out
         * Little Endian or Big Endian. Needed for exif stuff.
index 63af255..ac751fe 100644 (file)
@@ -30,7 +30,6 @@
  * @ingroup Media
  */
 class BitmapHandler_ClientOnly extends BitmapHandler {
-
        /**
         * @param $image File
         * @param  $params
@@ -52,6 +51,7 @@ class BitmapHandler_ClientOnly extends BitmapHandler {
                if ( !$this->normaliseParams( $image, $params ) ) {
                        return new TransformParameterError( $params );
                }
+
                return new ThumbnailImage( $image, $image->getURL(), $image->getLocalRefPath(), $params );
        }
 }
index b9e89d9..fe3313a 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class DjVuHandler extends ImageHandler {
-
        /**
         * @return bool
         */
@@ -35,6 +34,7 @@ class DjVuHandler extends ImageHandler {
                global $wgDjvuRenderer, $wgDjvuDump, $wgDjvuToXML;
                if ( !$wgDjvuRenderer || ( !$wgDjvuDump && !$wgDjvuToXML ) ) {
                        wfDebug( "DjVu is disabled, please set \$wgDjvuRenderer and \$wgDjvuDump\n" );
+
                        return false;
                } else {
                        return true;
@@ -93,6 +93,7 @@ class DjVuHandler extends ImageHandler {
                if ( !isset( $params['width'] ) ) {
                        return false;
                }
+
                return "page{$page}-{$params['width']}px";
        }
 
@@ -137,6 +138,7 @@ class DjVuHandler extends ImageHandler {
                if ( !$xml ) {
                        $width = isset( $params['width'] ) ? $params['width'] : 0;
                        $height = isset( $params['height'] ) ? $params['height'] : 0;
+
                        return new MediaTransformError( 'thumbnail_error', $width, $height,
                                wfMessage( 'djvu_no_xml' )->text() );
                }
@@ -162,6 +164,7 @@ class DjVuHandler extends ImageHandler {
                                'height' => $height,
                                'page' => $page
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
 
@@ -195,6 +198,7 @@ class DjVuHandler extends ImageHandler {
                        wfDebugLog( 'thumbnail',
                                sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
                                        wfHostname(), $retval, trim( $err ), $cmd ) );
+
                        return new MediaTransformError( 'thumbnail_error', $width, $height, $err );
                } else {
                        $params = array(
@@ -202,6 +206,7 @@ class DjVuHandler extends ImageHandler {
                                'height' => $height,
                                'page' => $page
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
        }
@@ -219,6 +224,7 @@ class DjVuHandler extends ImageHandler {
                } else {
                        $deja = $image->dejaImage;
                }
+
                return $deja;
        }
 
@@ -236,6 +242,7 @@ class DjVuHandler extends ImageHandler {
                $metadata = $image->getMetadata();
                if ( !$this->isMetadataValid( $image, $metadata ) ) {
                        wfDebug( "DjVu XML metadata is invalid or missing, should have been fixed in upgradeRow\n" );
+
                        return false;
                }
                wfProfileIn( __METHOD__ );
@@ -280,11 +287,13 @@ class DjVuHandler extends ImageHandler {
                        $magic = MimeMagic::singleton();
                        $mime = $magic->guessTypesForExtension( $wgDjvuOutputExtension );
                }
+
                return array( $wgDjvuOutputExtension, $mime );
        }
 
        function getMetadata( $image, $path ) {
                wfDebug( "Getting DjVu metadata for $path\n" );
+
                return $this->getDjVuImage( $image, $path )->retrieveMetaData();
        }
 
@@ -301,6 +310,7 @@ class DjVuHandler extends ImageHandler {
                if ( !$tree ) {
                        return false;
                }
+
                return count( $tree->xpath( '//OBJECT' ) );
        }
 
@@ -330,11 +340,10 @@ class DjVuHandler extends ImageHandler {
                $o = $tree->BODY[0]->PAGE[$page - 1];
                if ( $o ) {
                        $txt = $o['value'];
+
                        return $txt;
                } else {
                        return false;
                }
-
        }
-
 }
index 54efe7a..f201c28 100644 (file)
@@ -54,6 +54,7 @@ class DjVuImage {
         */
        public function isValid() {
                $info = $this->getInfo();
+
                return $info !== false;
        }
 
@@ -71,6 +72,7 @@ class DjVuImage {
                        return array( $width, $height, 'DjVu',
                                "width=\"$width\" height=\"$height\"" );
                }
+
                return false;
        }
 
@@ -120,6 +122,7 @@ class DjVuImage {
                wfRestoreWarnings();
                if ( $file === false ) {
                        wfDebug( __METHOD__ . ": missing or failed file read\n" );
+
                        return false;
                }
 
@@ -145,6 +148,7 @@ class DjVuImage {
                        }
                }
                fclose( $file );
+
                return $info;
        }
 
@@ -155,6 +159,7 @@ class DjVuImage {
                } else {
                        // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
                        extract( unpack( 'a4chunk/Nlength', $header ) );
+
                        return array( $chunk, $length );
                }
        }
@@ -182,6 +187,7 @@ class DjVuImage {
                                $subtype = fread( $file, 4 );
                                if ( $subtype == 'DJVU' ) {
                                        wfDebug( __METHOD__ . ": found first subpage\n" );
+
                                        return $this->getPageInfo( $file, $length );
                                }
                                $this->skipChunk( $file, $length - 4 );
@@ -192,6 +198,7 @@ class DjVuImage {
                } while ( $length != 0 && !feof( $file ) && ftell( $file ) - $start < $formLength );
 
                wfDebug( __METHOD__ . ": multi-page DJVU file contained no pages\n" );
+
                return false;
        }
 
@@ -199,16 +206,19 @@ class DjVuImage {
                list( $chunk, $length ) = $this->readChunk( $file );
                if ( $chunk != 'INFO' ) {
                        wfDebug( __METHOD__ . ": expected INFO chunk, got '$chunk'\n" );
+
                        return false;
                }
 
                if ( $length < 9 ) {
                        wfDebug( __METHOD__ . ": INFO should be 9 or 10 bytes, found $length\n" );
+
                        return false;
                }
                $data = fread( $file, $length );
                if ( strlen( $data ) < $length ) {
                        wfDebug( __METHOD__ . ": INFO chunk cut off\n" );
+
                        return false;
                }
 
@@ -220,6 +230,7 @@ class DjVuImage {
                        'Cmajor/' .
                        'vresolution/' .
                        'Cgamma', $data ) );
+
                # Newer files have rotation info in byte 10, but we don't use it yet.
 
                return array(
@@ -284,6 +295,7 @@ EOR;
                        }
                }
                wfProfileOut( __METHOD__ );
+
                return $xml;
        }
 
@@ -334,6 +346,7 @@ EOT;
 
                                if ( preg_match( '/^ *DIRM.*indirect/', $line ) ) {
                                        wfDebug( "Indirect multi-page DjVu document, bad for server!\n" );
+
                                        return false;
                                }
                                if ( preg_match( '/^ *FORM:DJVU/', $line ) ) {
@@ -352,6 +365,7 @@ EOT;
                }
 
                $xml .= "</BODY>\n</DjVuXML>\n";
+
                return $xml;
        }
 
@@ -368,7 +382,8 @@ EOT;
                        }
 
                        if ( preg_match( '/^ *INFO *\[\d*\] *DjVu *(\d+)x(\d+), *\w*, *(\d+) *dpi, *gamma=([0-9.-]+)/', $line, $m ) ) {
-                               $xml .= Xml::tags( 'OBJECT',
+                               $xml .= Xml::tags(
+                                       'OBJECT',
                                        array(
                                                #'data' => '',
                                                #'type' => 'image/x.djvu',
@@ -377,13 +392,15 @@ EOT;
                                                #'usemap' => '',
                                        ),
                                        "\n" .
-                                       Xml::element( 'PARAM', array( 'name' => 'DPI', 'value' => $m[3] ) ) . "\n" .
-                                       Xml::element( 'PARAM', array( 'name' => 'GAMMA', 'value' => $m[4] ) ) . "\n"
+                                               Xml::element( 'PARAM', array( 'name' => 'DPI', 'value' => $m[3] ) ) . "\n" .
+                                               Xml::element( 'PARAM', array( 'name' => 'GAMMA', 'value' => $m[4] ) ) . "\n"
                                ) . "\n";
+
                                return true;
                        }
                        $line = strtok( "\n" );
                }
+
                # Not found
                return false;
        }
index 9a2794a..5f40fe9 100644 (file)
@@ -30,7 +30,6 @@
  * @ingroup Media
  */
 class Exif {
-
        const BYTE = 1; //!< An 8-bit (1-byte) unsigned integer.
        const ASCII = 2; //!< An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL.
        const SHORT = 3; //!< A 16-bit (2-byte) unsigned integer.
@@ -98,6 +97,7 @@ class Exif {
         * extension doesn't fully process some obscure props.
         */
        private $byteOrder;
+
        //@}
 
        /**
@@ -125,122 +125,122 @@ class Exif {
                        # TIFF Rev. 6.0 Attribute Information (p22)
                        'IFD0' => array(
                                # Tags relating to image structure
-                               'ImageWidth' => Exif::SHORT_OR_LONG,            # Image width
-                               'ImageLength' => Exif::SHORT_OR_LONG,           # Image height
-                               'BitsPerSample' => array( Exif::SHORT, 3 ),             # Number of bits per component
+                               'ImageWidth' => Exif::SHORT_OR_LONG, # Image width
+                               'ImageLength' => Exif::SHORT_OR_LONG, # Image height
+                               'BitsPerSample' => array( Exif::SHORT, 3 ), # Number of bits per component
                                # "When a primary image is JPEG compressed, this designation is not"
                                # "necessary and is omitted." (p23)
-                               'Compression' => Exif::SHORT,                           # Compression scheme #p23
-                               'PhotometricInterpretation' => Exif::SHORT,             # Pixel composition #p23
-                               'Orientation' => Exif::SHORT,                           # Orientation of image #p24
-                               'SamplesPerPixel' => Exif::SHORT,                       # Number of components
-                               'PlanarConfiguration' => Exif::SHORT,                   # Image data arrangement #p24
-                               'YCbCrSubSampling' => array( Exif::SHORT, 2 ),          # Subsampling ratio of Y to C #p24
-                               'YCbCrPositioning' => Exif::SHORT,                      # Y and C positioning #p24-25
-                               'XResolution' => Exif::RATIONAL,                        # Image resolution in width direction
-                               'YResolution' => Exif::RATIONAL,                        # Image resolution in height direction
-                               'ResolutionUnit' => Exif::SHORT,                        # Unit of X and Y resolution #(p26)
+                               'Compression' => Exif::SHORT, # Compression scheme #p23
+                               'PhotometricInterpretation' => Exif::SHORT, # Pixel composition #p23
+                               'Orientation' => Exif::SHORT, # Orientation of image #p24
+                               'SamplesPerPixel' => Exif::SHORT, # Number of components
+                               'PlanarConfiguration' => Exif::SHORT, # Image data arrangement #p24
+                               'YCbCrSubSampling' => array( Exif::SHORT, 2 ), # Subsampling ratio of Y to C #p24
+                               'YCbCrPositioning' => Exif::SHORT, # Y and C positioning #p24-25
+                               'XResolution' => Exif::RATIONAL, # Image resolution in width direction
+                               'YResolution' => Exif::RATIONAL, # Image resolution in height direction
+                               'ResolutionUnit' => Exif::SHORT, # Unit of X and Y resolution #(p26)
 
                                # Tags relating to recording offset
-                               'StripOffsets' => Exif::SHORT_OR_LONG,                  # Image data location
-                               'RowsPerStrip' => Exif::SHORT_OR_LONG,                  # Number of rows per strip
-                               'StripByteCounts' => Exif::SHORT_OR_LONG,               # Bytes per compressed strip
-                               'JPEGInterchangeFormat' => Exif::SHORT_OR_LONG,         # Offset to JPEG SOI
-                               'JPEGInterchangeFormatLength' => Exif::SHORT_OR_LONG,   # Bytes of JPEG data
+                               'StripOffsets' => Exif::SHORT_OR_LONG, # Image data location
+                               'RowsPerStrip' => Exif::SHORT_OR_LONG, # Number of rows per strip
+                               'StripByteCounts' => Exif::SHORT_OR_LONG, # Bytes per compressed strip
+                               'JPEGInterchangeFormat' => Exif::SHORT_OR_LONG, # Offset to JPEG SOI
+                               'JPEGInterchangeFormatLength' => Exif::SHORT_OR_LONG, # Bytes of JPEG data
 
                                # Tags relating to image data characteristics
-                               'TransferFunction' => Exif::IGNORE,                     # Transfer function
-                               'WhitePoint' => array( Exif::RATIONAL, 2 ),             # White point chromaticity
-                               'PrimaryChromaticities' => array( Exif::RATIONAL, 6 ),  # Chromaticities of primarities
-                               'YCbCrCoefficients' => array( Exif::RATIONAL, 3 ),      # Color space transformation matrix coefficients #p27
-                               'ReferenceBlackWhite' => array( Exif::RATIONAL, 6 ),    # Pair of black and white reference values
+                               'TransferFunction' => Exif::IGNORE, # Transfer function
+                               'WhitePoint' => array( Exif::RATIONAL, 2 ), # White point chromaticity
+                               'PrimaryChromaticities' => array( Exif::RATIONAL, 6 ), # Chromaticities of primarities
+                               'YCbCrCoefficients' => array( Exif::RATIONAL, 3 ), # Color space transformation matrix coefficients #p27
+                               'ReferenceBlackWhite' => array( Exif::RATIONAL, 6 ), # Pair of black and white reference values
 
                                # Other tags
-                               'DateTime' => Exif::ASCII,                              # File change date and time
-                               'ImageDescription' => Exif::ASCII,                      # Image title
-                               'Make' => Exif::ASCII,                                  # Image input equipment manufacturer
-                               'Model' => Exif::ASCII,                                 # Image input equipment model
-                               'Software' => Exif::ASCII,                              # Software used
-                               'Artist' => Exif::ASCII,                                # Person who created the image
-                               'Copyright' => Exif::ASCII,                             # Copyright holder
+                               'DateTime' => Exif::ASCII, # File change date and time
+                               'ImageDescription' => Exif::ASCII, # Image title
+                               'Make' => Exif::ASCII, # Image input equipment manufacturer
+                               'Model' => Exif::ASCII, # Image input equipment model
+                               'Software' => Exif::ASCII, # Software used
+                               'Artist' => Exif::ASCII, # Person who created the image
+                               'Copyright' => Exif::ASCII, # Copyright holder
                        ),
 
                        # Exif IFD Attribute Information (p30-31)
                        'EXIF' => array(
                                # TODO: NOTE: Nonexistence of this field is taken to mean nonconformance
                                # to the Exif 2.1 AND 2.2 standards
-                               'ExifVersion' => Exif::UNDEFINED,                       # Exif version
-                               'FlashPixVersion' => Exif::UNDEFINED,                   # Supported Flashpix version #p32
+                               'ExifVersion' => Exif::UNDEFINED, # Exif version
+                               'FlashPixVersion' => Exif::UNDEFINED, # Supported Flashpix version #p32
 
                                # Tags relating to Image Data Characteristics
-                               'ColorSpace' => Exif::SHORT,                            # Color space information #p32
+                               'ColorSpace' => Exif::SHORT, # Color space information #p32
 
                                # Tags relating to image configuration
-                               'ComponentsConfiguration' => Exif::UNDEFINED,                   # Meaning of each component #p33
-                               'CompressedBitsPerPixel' => Exif::RATIONAL,                     # Image compression mode
-                               'PixelYDimension' => Exif::SHORT_OR_LONG,               # Valid image width
-                               'PixelXDimension' => Exif::SHORT_OR_LONG,               # Valid image height
+                               'ComponentsConfiguration' => Exif::UNDEFINED, # Meaning of each component #p33
+                               'CompressedBitsPerPixel' => Exif::RATIONAL, # Image compression mode
+                               'PixelYDimension' => Exif::SHORT_OR_LONG, # Valid image width
+                               'PixelXDimension' => Exif::SHORT_OR_LONG, # Valid image height
 
                                # Tags relating to related user information
-                               'MakerNote' => Exif::IGNORE,                            # Manufacturer notes
-                               'UserComment' => Exif::UNDEFINED,                       # User comments #p34
+                               'MakerNote' => Exif::IGNORE, # Manufacturer notes
+                               'UserComment' => Exif::UNDEFINED, # User comments #p34
 
                                # Tags relating to related file information
-                               'RelatedSoundFile' => Exif::ASCII,                      # Related audio file
+                               'RelatedSoundFile' => Exif::ASCII, # Related audio file
 
                                # Tags relating to date and time
-                               'DateTimeOriginal' => Exif::ASCII,                      # Date and time of original data generation #p36
-                               'DateTimeDigitized' => Exif::ASCII,                     # Date and time of original data generation
-                               'SubSecTime' => Exif::ASCII,                            # DateTime subseconds
-                               'SubSecTimeOriginal' => Exif::ASCII,                    # DateTimeOriginal subseconds
-                               'SubSecTimeDigitized' => Exif::ASCII,                   # DateTimeDigitized subseconds
+                               'DateTimeOriginal' => Exif::ASCII, # Date and time of original data generation #p36
+                               'DateTimeDigitized' => Exif::ASCII, # Date and time of original data generation
+                               'SubSecTime' => Exif::ASCII, # DateTime subseconds
+                               'SubSecTimeOriginal' => Exif::ASCII, # DateTimeOriginal subseconds
+                               'SubSecTimeDigitized' => Exif::ASCII, # DateTimeDigitized subseconds
 
                                # Tags relating to picture-taking conditions (p31)
-                               'ExposureTime' => Exif::RATIONAL,                       # Exposure time
-                               'FNumber' => Exif::RATIONAL,                            # F Number
-                               'ExposureProgram' => Exif::SHORT,                       # Exposure Program #p38
-                               'SpectralSensitivity' => Exif::ASCII,                   # Spectral sensitivity
-                               'ISOSpeedRatings' => Exif::SHORT,                       # ISO speed rating
+                               'ExposureTime' => Exif::RATIONAL, # Exposure time
+                               'FNumber' => Exif::RATIONAL, # F Number
+                               'ExposureProgram' => Exif::SHORT, # Exposure Program #p38
+                               'SpectralSensitivity' => Exif::ASCII, # Spectral sensitivity
+                               'ISOSpeedRatings' => Exif::SHORT, # ISO speed rating
                                'OECF' => Exif::IGNORE,
                                # Optoelectronic conversion factor. Note: We don't have support for this atm.
-                               'ShutterSpeedValue' => Exif::SRATIONAL,                 # Shutter speed
-                               'ApertureValue' => Exif::RATIONAL,                      # Aperture
-                               'BrightnessValue' => Exif::SRATIONAL,                   # Brightness
-                               'ExposureBiasValue' => Exif::SRATIONAL,                 # Exposure bias
-                               'MaxApertureValue' => Exif::RATIONAL,                   # Maximum land aperture
-                               'SubjectDistance' => Exif::RATIONAL,                    # Subject distance
-                               'MeteringMode' => Exif::SHORT,                          # Metering mode #p40
-                               'LightSource' => Exif::SHORT,                           # Light source #p40-41
-                               'Flash' => Exif::SHORT,                                 # Flash #p41-42
-                               'FocalLength' => Exif::RATIONAL,                        # Lens focal length
-                               'SubjectArea' => array( Exif::SHORT, 4 ),               # Subject area
-                               'FlashEnergy' => Exif::RATIONAL,                        # Flash energy
-                               'SpatialFrequencyResponse' => Exif::IGNORE,             # Spatial frequency response. Not supported atm.
-                               'FocalPlaneXResolution' => Exif::RATIONAL,              # Focal plane X resolution
-                               'FocalPlaneYResolution' => Exif::RATIONAL,              # Focal plane Y resolution
-                               'FocalPlaneResolutionUnit' => Exif::SHORT,              # Focal plane resolution unit #p46
-                               'SubjectLocation' => array( Exif::SHORT, 2 ),           # Subject location
-                               'ExposureIndex' => Exif::RATIONAL,                      # Exposure index
-                               'SensingMethod' => Exif::SHORT,                         # Sensing method #p46
-                               'FileSource' => Exif::UNDEFINED,                        # File source #p47
-                               'SceneType' => Exif::UNDEFINED,                         # Scene type #p47
-                               'CFAPattern' => Exif::IGNORE,                           # CFA pattern. not supported atm.
-                               'CustomRendered' => Exif::SHORT,                        # Custom image processing #p48
-                               'ExposureMode' => Exif::SHORT,                          # Exposure mode #p48
-                               'WhiteBalance' => Exif::SHORT,                          # White Balance #p49
-                               'DigitalZoomRatio' => Exif::RATIONAL,                   # Digital zoom ration
-                               'FocalLengthIn35mmFilm' => Exif::SHORT,                 # Focal length in 35 mm film
-                               'SceneCaptureType' => Exif::SHORT,                      # Scene capture type #p49
-                               'GainControl' => Exif::SHORT,                           # Scene control #p49-50
-                               'Contrast' => Exif::SHORT,                              # Contrast #p50
-                               'Saturation' => Exif::SHORT,                            # Saturation #p50
-                               'Sharpness' => Exif::SHORT,                             # Sharpness #p50
+                               'ShutterSpeedValue' => Exif::SRATIONAL, # Shutter speed
+                               'ApertureValue' => Exif::RATIONAL, # Aperture
+                               'BrightnessValue' => Exif::SRATIONAL, # Brightness
+                               'ExposureBiasValue' => Exif::SRATIONAL, # Exposure bias
+                               'MaxApertureValue' => Exif::RATIONAL, # Maximum land aperture
+                               'SubjectDistance' => Exif::RATIONAL, # Subject distance
+                               'MeteringMode' => Exif::SHORT, # Metering mode #p40
+                               'LightSource' => Exif::SHORT, # Light source #p40-41
+                               'Flash' => Exif::SHORT, # Flash #p41-42
+                               'FocalLength' => Exif::RATIONAL, # Lens focal length
+                               'SubjectArea' => array( Exif::SHORT, 4 ), # Subject area
+                               'FlashEnergy' => Exif::RATIONAL, # Flash energy
+                               'SpatialFrequencyResponse' => Exif::IGNORE, # Spatial frequency response. Not supported atm.
+                               'FocalPlaneXResolution' => Exif::RATIONAL, # Focal plane X resolution
+                               'FocalPlaneYResolution' => Exif::RATIONAL, # Focal plane Y resolution
+                               'FocalPlaneResolutionUnit' => Exif::SHORT, # Focal plane resolution unit #p46
+                               'SubjectLocation' => array( Exif::SHORT, 2 ), # Subject location
+                               'ExposureIndex' => Exif::RATIONAL, # Exposure index
+                               'SensingMethod' => Exif::SHORT, # Sensing method #p46
+                               'FileSource' => Exif::UNDEFINED, # File source #p47
+                               'SceneType' => Exif::UNDEFINED, # Scene type #p47
+                               'CFAPattern' => Exif::IGNORE, # CFA pattern. not supported atm.
+                               'CustomRendered' => Exif::SHORT, # Custom image processing #p48
+                               'ExposureMode' => Exif::SHORT, # Exposure mode #p48
+                               'WhiteBalance' => Exif::SHORT, # White Balance #p49
+                               'DigitalZoomRatio' => Exif::RATIONAL, # Digital zoom ration
+                               'FocalLengthIn35mmFilm' => Exif::SHORT, # Focal length in 35 mm film
+                               'SceneCaptureType' => Exif::SHORT, # Scene capture type #p49
+                               'GainControl' => Exif::SHORT, # Scene control #p49-50
+                               'Contrast' => Exif::SHORT, # Contrast #p50
+                               'Saturation' => Exif::SHORT, # Saturation #p50
+                               'Sharpness' => Exif::SHORT, # Sharpness #p50
                                'DeviceSettingDescription' => Exif::IGNORE,
                                # Device settings description. This could maybe be supported. Need to find an
                                # example file that uses this to see if it has stuff of interest in it.
-                               'SubjectDistanceRange' => Exif::SHORT,                  # Subject distance range #p51
+                               'SubjectDistanceRange' => Exif::SHORT, # Subject distance range #p51
 
-                               'ImageUniqueID' => Exif::ASCII,                         # Unique image ID
+                               'ImageUniqueID' => Exif::ASCII, # Unique image ID
                        ),
 
                        # GPS Attribute Information (p52)
@@ -248,38 +248,38 @@ class Exif {
                                'GPSVersion' => Exif::UNDEFINED,
                                # Should be an array of 4 Exif::BYTE's. However php treats it as an undefined
                                # Note exif standard calls this GPSVersionID, but php doesn't like the id suffix
-                               'GPSLatitudeRef' => Exif::ASCII,                        # North or South Latitude #p52-53
-                               'GPSLatitude' => array( Exif::RATIONAL, 3 ),            # Latitude
-                               'GPSLongitudeRef' => Exif::ASCII,                       # East or West Longitude #p53
-                               'GPSLongitude' => array( Exif::RATIONAL, 3 ),           # Longitude
+                               'GPSLatitudeRef' => Exif::ASCII, # North or South Latitude #p52-53
+                               'GPSLatitude' => array( Exif::RATIONAL, 3 ), # Latitude
+                               'GPSLongitudeRef' => Exif::ASCII, # East or West Longitude #p53
+                               'GPSLongitude' => array( Exif::RATIONAL, 3 ), # Longitude
                                'GPSAltitudeRef' => Exif::UNDEFINED,
                                # Altitude reference. Note, the exif standard says this should be an EXIF::Byte,
                                # but php seems to disagree.
-                               'GPSAltitude' => Exif::RATIONAL,                        # Altitude
-                               'GPSTimeStamp' => array( Exif::RATIONAL, 3 ),           # GPS time (atomic clock)
-                               'GPSSatellites' => Exif::ASCII,                         # Satellites used for measurement
-                               'GPSStatus' => Exif::ASCII,                             # Receiver status #p54
-                               'GPSMeasureMode' => Exif::ASCII,                        # Measurement mode #p54-55
-                               'GPSDOP' => Exif::RATIONAL,                             # Measurement precision
-                               'GPSSpeedRef' => Exif::ASCII,                           # Speed unit #p55
-                               'GPSSpeed' => Exif::RATIONAL,                           # Speed of GPS receiver
-                               'GPSTrackRef' => Exif::ASCII,                           # Reference for direction of movement #p55
-                               'GPSTrack' => Exif::RATIONAL,                           # Direction of movement
-                               'GPSImgDirectionRef' => Exif::ASCII,                    # Reference for direction of image #p56
-                               'GPSImgDirection' => Exif::RATIONAL,                    # Direction of image
-                               'GPSMapDatum' => Exif::ASCII,                           # Geodetic survey data used
-                               'GPSDestLatitudeRef' => Exif::ASCII,                    # Reference for latitude of destination #p56
-                               'GPSDestLatitude' => array( Exif::RATIONAL, 3 ),        # Latitude destination
-                               'GPSDestLongitudeRef' => Exif::ASCII,                   # Reference for longitude of destination #p57
-                               'GPSDestLongitude' => array( Exif::RATIONAL, 3 ),       # Longitude of destination
-                               'GPSDestBearingRef' => Exif::ASCII,                     # Reference for bearing of destination #p57
-                               'GPSDestBearing' => Exif::RATIONAL,                     # Bearing of destination
-                               'GPSDestDistanceRef' => Exif::ASCII,                    # Reference for distance to destination #p57-58
-                               'GPSDestDistance' => Exif::RATIONAL,                    # Distance to destination
-                               'GPSProcessingMethod' => Exif::UNDEFINED,               # Name of GPS processing method
-                               'GPSAreaInformation' => Exif::UNDEFINED,                # Name of GPS area
-                               'GPSDateStamp' => Exif::ASCII,                          # GPS date
-                               'GPSDifferential' => Exif::SHORT,                       # GPS differential correction
+                               'GPSAltitude' => Exif::RATIONAL, # Altitude
+                               'GPSTimeStamp' => array( Exif::RATIONAL, 3 ), # GPS time (atomic clock)
+                               'GPSSatellites' => Exif::ASCII, # Satellites used for measurement
+                               'GPSStatus' => Exif::ASCII, # Receiver status #p54
+                               'GPSMeasureMode' => Exif::ASCII, # Measurement mode #p54-55
+                               'GPSDOP' => Exif::RATIONAL, # Measurement precision
+                               'GPSSpeedRef' => Exif::ASCII, # Speed unit #p55
+                               'GPSSpeed' => Exif::RATIONAL, # Speed of GPS receiver
+                               'GPSTrackRef' => Exif::ASCII, # Reference for direction of movement #p55
+                               'GPSTrack' => Exif::RATIONAL, # Direction of movement
+                               'GPSImgDirectionRef' => Exif::ASCII, # Reference for direction of image #p56
+                               'GPSImgDirection' => Exif::RATIONAL, # Direction of image
+                               'GPSMapDatum' => Exif::ASCII, # Geodetic survey data used
+                               'GPSDestLatitudeRef' => Exif::ASCII, # Reference for latitude of destination #p56
+                               'GPSDestLatitude' => array( Exif::RATIONAL, 3 ), # Latitude destination
+                               'GPSDestLongitudeRef' => Exif::ASCII, # Reference for longitude of destination #p57
+                               'GPSDestLongitude' => array( Exif::RATIONAL, 3 ), # Longitude of destination
+                               'GPSDestBearingRef' => Exif::ASCII, # Reference for bearing of destination #p57
+                               'GPSDestBearing' => Exif::RATIONAL, # Bearing of destination
+                               'GPSDestDistanceRef' => Exif::ASCII, # Reference for distance to destination #p57-58
+                               'GPSDestDistance' => Exif::RATIONAL, # Distance to destination
+                               'GPSProcessingMethod' => Exif::UNDEFINED, # Name of GPS processing method
+                               'GPSAreaInformation' => Exif::UNDEFINED, # Name of GPS area
+                               'GPSDateStamp' => Exif::ASCII, # GPS date
+                               'GPSDifferential' => Exif::SHORT, # GPS differential correction
                        ),
                );
 
@@ -319,7 +319,7 @@ class Exif {
         * Make $this->mFilteredExifData
         */
        function makeFilteredData() {
-               $this->mFilteredExifData = Array();
+               $this->mFilteredExifData = array();
 
                foreach ( array_keys( $this->mRawExifData ) as $section ) {
                        if ( !in_array( $section, array_keys( $this->mExifTags ) ) ) {
@@ -379,7 +379,7 @@ class Exif {
                        $this->mFilteredExifData['GPSAltitude'] = $num / $denom;
 
                        if ( $this->mFilteredExifData['GPSAltitudeRef'] === "\1" ) {
-                               $this->mFilteredExifData['GPSAltitude'] *= - 1;
+                               $this->mFilteredExifData['GPSAltitude'] *= -1;
                        }
                        unset( $this->mFilteredExifData['GPSAltitudeRef'] );
                }
@@ -432,8 +432,8 @@ class Exif {
                        }
                        unset( $this->mFilteredExifData['GPSVersion'] );
                }
-
        }
+
        /**
         * Do userComment tags and similar. See pg. 34 of exif standard.
         * basically first 8 bytes is charset, rest is value.
@@ -448,6 +448,7 @@ class Exif {
 
                                $this->debug( $this->mFilteredExifData[$prop], __FUNCTION__, false );
                                unset( $this->mFilteredExifData[$prop] );
+
                                return;
                        }
                        $charCode = substr( $this->mFilteredExifData[$prop], 0, 8 );
@@ -488,6 +489,7 @@ class Exif {
                                //only whitespace.
                                $this->debug( $this->mFilteredExifData[$prop], __FUNCTION__, "$prop: Is only whitespace" );
                                unset( $this->mFilteredExifData[$prop] );
+
                                return;
                        }
 
@@ -495,6 +497,7 @@ class Exif {
                        $this->mFilteredExifData[$prop] = $val;
                }
        }
+
        /**
         * Convert an Exif::UNDEFINED from a raw binary string
         * to its value. This is sometimes needed depending on
@@ -506,6 +509,7 @@ class Exif {
                        $this->mFilteredExifData[$prop] = ord( $this->mFilteredExifData[$prop] );
                }
        }
+
        /**
         * Convert gps in exif form to a single floating point number
         * for example 10 degress 20`40`` S -> -10.34444
@@ -525,7 +529,7 @@ class Exif {
                        $res += ( $num / $denom ) * ( 1 / 3600 );
 
                        if ( $dir === 'S' || $dir === 'W' ) {
-                               $res *= - 1; // make negative
+                               $res *= -1; // make negative
                        }
                }
 
@@ -551,6 +555,7 @@ class Exif {
                $this->mFormattedExifData = FormatMetadata::getFormattedData(
                        $this->mFilteredExifData );
        }
+
        /**#@-*/
 
        /**#@+
@@ -584,8 +589,10 @@ class Exif {
                if ( !$this->mFormattedExifData ) {
                        $this->makeFormattedData();
                }
+
                return $this->mFormattedExifData;
        }
+
        /**#@-*/
 
        /**
@@ -615,9 +622,11 @@ class Exif {
        private function isByte( $in ) {
                if ( !is_array( $in ) && sprintf( '%d', $in ) == $in && $in >= 0 && $in <= 255 ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
@@ -633,11 +642,13 @@ class Exif {
 
                if ( preg_match( "/[^\x0a\x20-\x7e]/", $in ) ) {
                        $this->debug( $in, __FUNCTION__, 'found a character not in our whitelist' );
+
                        return false;
                }
 
                if ( preg_match( '/^\s*$/', $in ) ) {
                        $this->debug( $in, __FUNCTION__, 'input consisted solely of whitespace' );
+
                        return false;
                }
 
@@ -651,9 +662,11 @@ class Exif {
        private function isShort( $in ) {
                if ( !is_array( $in ) && sprintf( '%d', $in ) == $in && $in >= 0 && $in <= 65536 ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
@@ -665,9 +678,11 @@ class Exif {
        private function isLong( $in ) {
                if ( !is_array( $in ) && sprintf( '%d', $in ) == $in && $in >= 0 && $in <= 4294967296 ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
@@ -682,6 +697,7 @@ class Exif {
                        return $this->isLong( $m[1] ) && $this->isLong( $m[2] );
                } else {
                        $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
+
                        return false;
                }
        }
@@ -692,6 +708,7 @@ class Exif {
         */
        private function isUndefined( $in ) {
                $this->debug( $in, __FUNCTION__, true );
+
                return true;
        }
 
@@ -702,9 +719,11 @@ class Exif {
        private function isSlong( $in ) {
                if ( $this->isLong( abs( $in ) ) ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
@@ -719,9 +738,11 @@ class Exif {
                        return $this->isSlong( $m[0] ) && $this->isSlong( $m[1] );
                } else {
                        $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
+
                        return false;
                }
        }
+
        /**#@-*/
 
        /**
@@ -747,6 +768,7 @@ class Exif {
                $count = count( $val );
                if ( $ecount != $count ) {
                        $this->debug( $val, __FUNCTION__, "Expected $ecount elements for $tag but got $count" );
+
                        return false;
                }
                if ( $count > 1 ) {
@@ -755,42 +777,54 @@ class Exif {
                                        return false;
                                }
                        }
+
                        return true;
                }
                // Does not work if not typecast
                switch ( (string)$etype ) {
                        case (string)Exif::BYTE:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isByte( $val );
                        case (string)Exif::ASCII:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isASCII( $val );
                        case (string)Exif::SHORT:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isShort( $val );
                        case (string)Exif::LONG:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isLong( $val );
                        case (string)Exif::RATIONAL:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isRational( $val );
                        case (string)Exif::SHORT_OR_LONG:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isShort( $val ) || $this->isLong( $val );
                        case (string)Exif::UNDEFINED:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isUndefined( $val );
                        case (string)Exif::SLONG:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isSlong( $val );
                        case (string)Exif::SRATIONAL:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isSrational( $val );
                        case (string)Exif::IGNORE:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return false;
                        default:
                                $this->debug( $val, __FUNCTION__, "The tag '$tag' is unknown" );
+
                                return false;
                }
        }
index d3fa36d..0a14ca8 100644 (file)
@@ -28,7 +28,6 @@
  * @ingroup Media
  */
 class ExifBitmapHandler extends BitmapHandler {
-
        const BROKEN_FILE = '-1'; // error extracting metadata
        const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
 
@@ -76,6 +75,7 @@ class ExifBitmapHandler extends BitmapHandler {
                        }
                }
                $metadata['MEDIAWIKI_EXIF_VERSION'] = 1;
+
                return $metadata;
        }
 
@@ -89,6 +89,7 @@ class ExifBitmapHandler extends BitmapHandler {
                        # Old special value indicating that there is no Exif data in the file.
                        # or that there was an error well extracting the metadata.
                        wfDebug( __METHOD__ . ": back-compat version\n" );
+
                        return self::METADATA_COMPATIBLE;
                }
                if ( $metadata === self::BROKEN_FILE ) {
@@ -97,20 +98,23 @@ 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;
                        }
                        # Wrong (non-compatible) version
                        wfDebug( __METHOD__ . ": wrong version\n" );
+
                        return self::METADATA_BAD;
                }
+
                return self::METADATA_GOOD;
        }
 
@@ -129,10 +133,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();
@@ -177,6 +181,7 @@ class ExifBitmapHandler extends BitmapHandler {
                        $gis[0] = $gis[1];
                        $gis[1] = $width;
                }
+
                return $gis;
        }
 
@@ -199,6 +204,7 @@ class ExifBitmapHandler extends BitmapHandler {
                }
 
                $data = $file->getMetadata();
+
                return $this->getRotationForExif( $data );
        }
 
@@ -231,6 +237,7 @@ class ExifBitmapHandler extends BitmapHandler {
                                        return 0;
                        }
                }
+
                return 0;
        }
 }
index 1b1841c..fa0fa55 100644 (file)
@@ -46,7 +46,6 @@
  * @since 1.23 the class extends ContextSource and various formerly-public internal methods are private
  */
 class FormatMetadata extends ContextSource {
-
        /**
         * Only output a single language for multi-language fields
         * @var boolean
@@ -82,6 +81,7 @@ class FormatMetadata extends ContextSource {
                if ( $context ) {
                        $obj->setContext( $context );
                }
+
                return $obj->makeFormattedData( $tags );
        }
 
@@ -105,7 +105,7 @@ class FormatMetadata extends ContextSource {
                        // This seems ugly to wrap non-array's in an array just to unwrap again,
                        // especially when most of the time it is not an array
                        if ( !is_array( $tags[$tag] ) ) {
-                               $vals = Array( $vals );
+                               $vals = array( $vals );
                        }
 
                        // _type is a special value to say what array type
@@ -166,701 +166,807 @@ class FormatMetadata extends ContextSource {
                        foreach ( $vals as &$val ) {
 
                                switch ( $tag ) {
-                               case 'Compression':
-                                       switch ( $val ) {
-                                       case 1: case 2: case 3: case 4:
-                                       case 5: case 6: case 7: case 8:
-                                       case 32773: case 32946: case 34712:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'Compression':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 8:
+                                                       case 32773:
+                                                       case 32946:
+                                                       case 34712:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'PhotometricInterpretation':
-                                       switch ( $val ) {
-                                       case 2: case 6:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'PhotometricInterpretation':
+                                               switch ( $val ) {
+                                                       case 2:
+                                                       case 6:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Orientation':
-                                       switch ( $val ) {
-                                       case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'Orientation':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 8:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'PlanarConfiguration':
-                                       switch ( $val ) {
-                                       case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
-                                               break;
-                                       }
-                                       break;
-
-                               // TODO: YCbCrSubSampling
-                               case 'YCbCrPositioning':
-                                       switch ( $val ) {
-                                       case 1:
-                                       case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'PlanarConfiguration':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
-
-                               case 'XResolution':
-                               case 'YResolution':
-                                       switch ( $resolutionunit ) {
-                                               case 2:
-                                                       $val = $this->exifMsg( 'XYResolution', 'i', $this->formatNum( $val ) );
-                                                       break;
-                                               case 3:
-                                                       $val = $this->exifMsg( 'XYResolution', 'c', $this->formatNum( $val ) );
-                                                       break;
-                                               default:
-                                                       /* If not recognized, display as is. */
-                                                       break;
-                                       }
-                                       break;
 
-                               // TODO: YCbCrCoefficients  #p27 (see annex E)
-                               case 'ExifVersion': case 'FlashpixVersion':
-                                       $val = "$val" / 100;
-                                       break;
-
-                               case 'ColorSpace':
-                                       switch ( $val ) {
-                                       case 1: case 65535:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       // TODO: YCbCrSubSampling
+                                       case 'YCbCrPositioning':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'ComponentsConfiguration':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 5: case 6:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'XResolution':
+                                       case 'YResolution':
+                                               switch ( $resolutionunit ) {
+                                                       case 2:
+                                                               $val = $this->exifMsg( 'XYResolution', 'i', $this->formatNum( $val ) );
+                                                               break;
+                                                       case 3:
+                                                               $val = $this->exifMsg( 'XYResolution', 'c', $this->formatNum( $val ) );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       // TODO: YCbCrCoefficients  #p27 (see annex E)
+                                       case 'ExifVersion':
+                                       case 'FlashpixVersion':
+                                               $val = "$val" / 100;
                                                break;
-                                       }
-                                       break;
-
-                               case 'DateTime':
-                               case 'DateTimeOriginal':
-                               case 'DateTimeDigitized':
-                               case 'DateTimeReleased':
-                               case 'DateTimeExpires':
-                               case 'GPSDateStamp':
-                               case 'dc-date':
-                               case 'DateTimeMetadata':
-                                       if ( $val == '0000:00:00 00:00:00' || $val == '    :  :     :  :  ' ) {
-                                               $val = $this->msg( 'exif-unknowndate' )->text();
-                                       } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/D', $val ) ) {
-                                               // Full date.
-                                               $time = wfTimestamp( TS_MW, $val );
-                                               if ( $time && intval( $time ) > 0 ) {
-                                                       $val = $this->getLanguage()->timeanddate( $time );
-                                               }
-                                       } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d)$/D', $val ) ) {
-                                               // No second field. Still format the same
-                                               // since timeanddate doesn't include seconds anyways,
-                                               // but second still available in api
-                                               $time = wfTimestamp( TS_MW, $val . ':00' );
-                                               if ( $time && intval( $time ) > 0 ) {
-                                                       $val = $this->getLanguage()->timeanddate( $time );
-                                               }
-                                       } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d)$/D', $val ) ) {
-                                               // If only the date but not the time is filled in.
-                                               $time = wfTimestamp( TS_MW, substr( $val, 0, 4 )
-                                                       . substr( $val, 5, 2 )
-                                                       . substr( $val, 8, 2 )
-                                                       . '000000' );
-                                               if ( $time && intval( $time ) > 0 ) {
-                                                       $val = $this->getLanguage()->date( $time );
-                                               }
-                                       }
-                                       // else it will just output $val without formatting it.
-                                       break;
 
-                               case 'ExposureProgram':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'ColorSpace':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 65535:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'ComponentsConfiguration':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SubjectDistance':
-                                       $val = $this->exifMsg( $tag, '', $this->formatNum( $val ) );
-                                       break;
+                                       case 'DateTime':
+                                       case 'DateTimeOriginal':
+                                       case 'DateTimeDigitized':
+                                       case 'DateTimeReleased':
+                                       case 'DateTimeExpires':
+                                       case 'GPSDateStamp':
+                                       case 'dc-date':
+                                       case 'DateTimeMetadata':
+                                               if ( $val == '0000:00:00 00:00:00' || $val == '    :  :     :  :  ' ) {
+                                                       $val = $this->msg( 'exif-unknowndate' )->text();
+                                               } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/D', $val ) ) {
+                                                       // Full date.
+                                                       $time = wfTimestamp( TS_MW, $val );
+                                                       if ( $time && intval( $time ) > 0 ) {
+                                                               $val = $this->getLanguage()->timeanddate( $time );
+                                                       }
+                                               } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d)$/D', $val ) ) {
+                                                       // No second field. Still format the same
+                                                       // since timeanddate doesn't include seconds anyways,
+                                                       // but second still available in api
+                                                       $time = wfTimestamp( TS_MW, $val . ':00' );
+                                                       if ( $time && intval( $time ) > 0 ) {
+                                                               $val = $this->getLanguage()->timeanddate( $time );
+                                                       }
+                                               } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d)$/D', $val ) ) {
+                                                       // If only the date but not the time is filled in.
+                                                       $time = wfTimestamp( TS_MW, substr( $val, 0, 4 )
+                                                               . substr( $val, 5, 2 )
+                                                               . substr( $val, 8, 2 )
+                                                               . '000000' );
+                                                       if ( $time && intval( $time ) > 0 ) {
+                                                               $val = $this->getLanguage()->date( $time );
+                                                       }
+                                               }
+                                               // else it will just output $val without formatting it.
+                                               break;
 
-                               case 'MeteringMode':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 255:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'ExposureProgram':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 8:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'SubjectDistance':
+                                               $val = $this->exifMsg( $tag, '', $this->formatNum( $val ) );
                                                break;
-                                       }
-                                       break;
-
-                               case 'LightSource':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 9: case 10: case 11:
-                                       case 12: case 13: case 14: case 15: case 17: case 18: case 19: case 20:
-                                       case 21: case 22: case 23: case 24: case 255:
-                                               $val = $this->exifMsg( $tag, $val );
+
+                                       case 'MeteringMode':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 255:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'LightSource':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 9:
+                                                       case 10:
+                                                       case 11:
+                                                       case 12:
+                                                       case 13:
+                                                       case 14:
+                                                       case 15:
+                                                       case 17:
+                                                       case 18:
+                                                       case 19:
+                                                       case 20:
+                                                       case 21:
+                                                       case 22:
+                                                       case 23:
+                                                       case 24:
+                                                       case 255:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
-
-                               case 'Flash':
-                                       $flashDecode = array(
-                                               'fired' => $val & bindec( '00000001' ),
-                                               'return' => ( $val & bindec( '00000110' ) ) >> 1,
-                                               'mode' => ( $val & bindec( '00011000' ) ) >> 3,
-                                               'function' => ( $val & bindec( '00100000' ) ) >> 5,
-                                               'redeye' => ( $val & bindec( '01000000' ) ) >> 6,
+
+                                       case 'Flash':
+                                               $flashDecode = array(
+                                                       'fired' => $val & bindec( '00000001' ),
+                                                       'return' => ( $val & bindec( '00000110' ) ) >> 1,
+                                                       'mode' => ( $val & bindec( '00011000' ) ) >> 3,
+                                                       'function' => ( $val & bindec( '00100000' ) ) >> 5,
+                                                       'redeye' => ( $val & bindec( '01000000' ) ) >> 6,
 //                                             'reserved' => ($val & bindec( '10000000' )) >> 7,
-                                       );
-                                       $flashMsgs = array();
-                                       # We do not need to handle unknown values since all are used.
-                                       foreach ( $flashDecode as $subTag => $subValue ) {
-                                               # We do not need any message for zeroed values.
-                                               if ( $subTag != 'fired' && $subValue == 0 ) {
-                                                       continue;
+                                               );
+                                               $flashMsgs = array();
+                                               # We do not need to handle unknown values since all are used.
+                                               foreach ( $flashDecode as $subTag => $subValue ) {
+                                                       # We do not need any message for zeroed values.
+                                                       if ( $subTag != 'fired' && $subValue == 0 ) {
+                                                               continue;
+                                                       }
+                                                       $fullTag = $tag . '-' . $subTag;
+                                                       $flashMsgs[] = $this->exifMsg( $fullTag, $subValue );
                                                }
-                                               $fullTag = $tag . '-' . $subTag;
-                                               $flashMsgs[] = $this->exifMsg( $fullTag, $subValue );
-                                       }
-                                       $val = $this->getLanguage()->commaList( $flashMsgs );
-                                       break;
-
-                               case 'FocalPlaneResolutionUnit':
-                                       switch ( $val ) {
-                                       case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                               $val = $this->getLanguage()->commaList( $flashMsgs );
                                                break;
-                                       }
-                                       break;
 
-                               case 'SensingMethod':
-                                       switch ( $val ) {
-                                       case 1: case 2: case 3: case 4: case 5: case 7: case 8:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'FocalPlaneResolutionUnit':
+                                               switch ( $val ) {
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'FileSource':
-                                       switch ( $val ) {
-                                       case 3:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'SensingMethod':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 7:
+                                                       case 8:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SceneType':
-                                       switch ( $val ) {
-                                       case 1:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'FileSource':
+                                               switch ( $val ) {
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'CustomRendered':
-                                       switch ( $val ) {
-                                       case 0: case 1:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'SceneType':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'ExposureMode':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'CustomRendered':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'WhiteBalance':
-                                       switch ( $val ) {
-                                       case 0: case 1:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'ExposureMode':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'WhiteBalance':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SceneCaptureType':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'SceneCaptureType':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GainControl':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'GainControl':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'Contrast':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'Saturation':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Contrast':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'Sharpness':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'SubjectDistanceRange':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Saturation':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       //The GPS...Ref values are kept for compatibility, probably won't be reached.
+                                       case 'GPSLatitudeRef':
+                                       case 'GPSDestLatitudeRef':
+                                               switch ( $val ) {
+                                                       case 'N':
+                                                       case 'S':
+                                                               $val = $this->exifMsg( 'GPSLatitude', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GPSLongitudeRef':
+                                       case 'GPSDestLongitudeRef':
+                                               switch ( $val ) {
+                                                       case 'E':
+                                                       case 'W':
+                                                               $val = $this->exifMsg( 'GPSLongitude', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Sharpness':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'GPSAltitude':
+                                               if ( $val < 0 ) {
+                                                       $val = $this->exifMsg( 'GPSAltitude', 'below-sealevel', $this->formatNum( -$val, 3 ) );
+                                               } else {
+                                                       $val = $this->exifMsg( 'GPSAltitude', 'above-sealevel', $this->formatNum( $val, 3 ) );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GPSStatus':
+                                               switch ( $val ) {
+                                                       case 'A':
+                                                       case 'V':
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SubjectDistanceRange':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'GPSMeasureMode':
+                                               switch ( $val ) {
+                                                       case 2:
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GPSTrackRef':
+                                       case 'GPSImgDirectionRef':
+                                       case 'GPSDestBearingRef':
+                                               switch ( $val ) {
+                                                       case 'T':
+                                                       case 'M':
+                                                               $val = $this->exifMsg( 'GPSDirection', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
-
-                               //The GPS...Ref values are kept for compatibility, probably won't be reached.
-                               case 'GPSLatitudeRef':
-                               case 'GPSDestLatitudeRef':
-                                       switch ( $val ) {
-                                       case 'N': case 'S':
-                                               $val = $this->exifMsg( 'GPSLatitude', $val );
+
+                                       case 'GPSLatitude':
+                                       case 'GPSDestLatitude':
+                                               $val = $this->formatCoords( $val, 'latitude' );
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'GPSLongitude':
+                                       case 'GPSDestLongitude':
+                                               $val = $this->formatCoords( $val, 'longitude' );
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSLongitudeRef':
-                               case 'GPSDestLongitudeRef':
-                                       switch ( $val ) {
-                                       case 'E': case 'W':
-                                               $val = $this->exifMsg( 'GPSLongitude', $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'GPSSpeedRef':
+                                               switch ( $val ) {
+                                                       case 'K':
+                                                       case 'M':
+                                                       case 'N':
+                                                               $val = $this->exifMsg( 'GPSSpeed', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSAltitude':
-                                       if ( $val < 0 ) {
-                                               $val = $this->exifMsg( 'GPSAltitude', 'below-sealevel', $this->formatNum( -$val, 3 ) );
-                                       } else {
-                                               $val = $this->exifMsg( 'GPSAltitude', 'above-sealevel', $this->formatNum( $val, 3 ) );
-                                       }
-                                       break;
+                                       case 'GPSDestDistanceRef':
+                                               switch ( $val ) {
+                                                       case 'K':
+                                                       case 'M':
+                                                       case 'N':
+                                                               $val = $this->exifMsg( 'GPSDestDistance', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
+                                               break;
 
-                               case 'GPSStatus':
-                                       switch ( $val ) {
-                                       case 'A': case 'V':
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'GPSDOP':
+                                               // See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+                                               if ( $val <= 2 ) {
+                                                       $val = $this->exifMsg( $tag, 'excellent', $this->formatNum( $val ) );
+                                               } elseif ( $val <= 5 ) {
+                                                       $val = $this->exifMsg( $tag, 'good', $this->formatNum( $val ) );
+                                               } elseif ( $val <= 10 ) {
+                                                       $val = $this->exifMsg( $tag, 'moderate', $this->formatNum( $val ) );
+                                               } elseif ( $val <= 20 ) {
+                                                       $val = $this->exifMsg( $tag, 'fair', $this->formatNum( $val ) );
+                                               } else {
+                                                       $val = $this->exifMsg( $tag, 'poor', $this->formatNum( $val ) );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       // This is not in the Exif standard, just a special
+                                       // case for our purposes which enables wikis to wikify
+                                       // the make, model and software name to link to their articles.
+                                       case 'Make':
+                                       case 'Model':
+                                               $val = $this->exifMsg( $tag, '', $val );
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSMeasureMode':
-                                       switch ( $val ) {
-                                       case 2: case 3:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'Software':
+                                               if ( is_array( $val ) ) {
+                                                       //if its a software, version array.
+                                                       $val = $this->msg( 'exif-software-version-value', $val[0], $val[1] )->text();
+                                               } else {
+                                                       $val = $this->exifMsg( $tag, '', $val );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'ExposureTime':
+                                               // Show the pretty fraction as well as decimal version
+                                               $val = $this->msg( 'exif-exposuretime-format',
+                                                       $this->formatFraction( $val ), $this->formatNum( $val ) )->text();
                                                break;
-                                       }
-                                       break;
-
-                               case 'GPSTrackRef':
-                               case 'GPSImgDirectionRef':
-                               case 'GPSDestBearingRef':
-                                       switch ( $val ) {
-                                       case 'T': case 'M':
-                                               $val = $this->exifMsg( 'GPSDirection', $val );
+                                       case 'ISOSpeedRatings':
+                                               // If its = 65535 that means its at the
+                                               // limit of the size of Exif::short and
+                                               // is really higher.
+                                               if ( $val == '65535' ) {
+                                                       $val = $this->exifMsg( $tag, 'overflow' );
+                                               } else {
+                                                       $val = $this->formatNum( $val );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'FNumber':
+                                               $val = $this->msg( 'exif-fnumber-format',
+                                                       $this->formatNum( $val ) )->text();
                                                break;
-                                       }
-                                       break;
-
-                               case 'GPSLatitude':
-                               case 'GPSDestLatitude':
-                                       $val = $this->formatCoords( $val, 'latitude' );
-                                       break;
-                               case 'GPSLongitude':
-                               case 'GPSDestLongitude':
-                                       $val = $this->formatCoords( $val, 'longitude' );
-                                       break;
-
-                               case 'GPSSpeedRef':
-                                       switch ( $val ) {
-                                       case 'K': case 'M': case 'N':
-                                               $val = $this->exifMsg( 'GPSSpeed', $val );
+
+                                       case 'FocalLength':
+                                       case 'FocalLengthIn35mmFilm':
+                                               $val = $this->msg( 'exif-focallength-format',
+                                                       $this->formatNum( $val ) )->text();
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'MaxApertureValue':
+                                               if ( strpos( $val, '/' ) !== false ) {
+                                                       // need to expand this earlier to calculate fNumber
+                                                       list( $n, $d ) = explode( '/', $val );
+                                                       if ( is_numeric( $n ) && is_numeric( $d ) ) {
+                                                               $val = $n / $d;
+                                                       }
+                                               }
+                                               if ( is_numeric( $val ) ) {
+                                                       $fNumber = pow( 2, $val / 2 );
+                                                       if ( $fNumber !== false ) {
+                                                               $val = $this->msg( 'exif-maxaperturevalue-value',
+                                                                       $this->formatNum( $val ),
+                                                                       $this->formatNum( $fNumber, 2 )
+                                                               )->text();
+                                                       }
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSDestDistanceRef':
-                                       switch ( $val ) {
-                                       case 'K': case 'M': case 'N':
-                                               $val = $this->exifMsg( 'GPSDestDistance', $val );
+                                       case 'iimCategory':
+                                               switch ( strtolower( $val ) ) {
+                                                       // See pg 29 of IPTC photo
+                                                       // metadata standard.
+                                                       case 'ace':
+                                                       case 'clj':
+                                                       case 'dis':
+                                                       case 'fin':
+                                                       case 'edu':
+                                                       case 'evn':
+                                                       case 'hth':
+                                                       case 'hum':
+                                                       case 'lab':
+                                                       case 'lif':
+                                                       case 'pol':
+                                                       case 'rel':
+                                                       case 'sci':
+                                                       case 'soi':
+                                                       case 'spo':
+                                                       case 'war':
+                                                       case 'wea':
+                                                               $val = $this->exifMsg(
+                                                                       'iimcategory',
+                                                                       $val
+                                                               );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'SubjectNewsCode':
+                                               // Essentially like iimCategory.
+                                               // 8 (numeric) digit hierarchical
+                                               // classification. We decode the
+                                               // first 2 digits, which provide
+                                               // a broad category.
+                                               $val = $this->convertNewsCode( $val );
                                                break;
-                                       }
-                                       break;
-
-                               case 'GPSDOP':
-                                       // See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-                                       if ( $val <= 2 ) {
-                                               $val = $this->exifMsg( $tag, 'excellent', $this->formatNum( $val ) );
-                                       } elseif ( $val <= 5 ) {
-                                               $val = $this->exifMsg( $tag, 'good', $this->formatNum( $val ) );
-                                       } elseif ( $val <= 10 ) {
-                                               $val = $this->exifMsg( $tag, 'moderate', $this->formatNum( $val ) );
-                                       } elseif ( $val <= 20 ) {
-                                               $val = $this->exifMsg( $tag, 'fair', $this->formatNum( $val ) );
-                                       } else {
-                                               $val = $this->exifMsg( $tag, 'poor', $this->formatNum( $val ) );
-                                       }
-                                       break;
-
-                               // This is not in the Exif standard, just a special
-                               // case for our purposes which enables wikis to wikify
-                               // the make, model and software name to link to their articles.
-                               case 'Make':
-                               case 'Model':
-                                       $val = $this->exifMsg( $tag, '', $val );
-                                       break;
-
-                               case 'Software':
-                                       if ( is_array( $val ) ) {
-                                               //if its a software, version array.
-                                               $val = $this->msg( 'exif-software-version-value', $val[0], $val[1] )->text();
-                                       } else {
-                                               $val = $this->exifMsg( $tag, '', $val );
-                                       }
-                                       break;
-
-                               case 'ExposureTime':
-                                       // Show the pretty fraction as well as decimal version
-                                       $val = $this->msg( 'exif-exposuretime-format',
-                                               $this->formatFraction( $val ), $this->formatNum( $val ) )->text();
-                                       break;
-                               case 'ISOSpeedRatings':
-                                       // If its = 65535 that means its at the
-                                       // limit of the size of Exif::short and
-                                       // is really higher.
-                                       if ( $val == '65535' ) {
-                                               $val = $this->exifMsg( $tag, 'overflow' );
-                                       } else {
-                                               $val = $this->formatNum( $val );
-                                       }
-                                       break;
-                               case 'FNumber':
-                                       $val = $this->msg( 'exif-fnumber-format',
-                                               $this->formatNum( $val ) )->text();
-                                       break;
-
-                               case 'FocalLength': case 'FocalLengthIn35mmFilm':
-                                       $val = $this->msg( 'exif-focallength-format',
-                                               $this->formatNum( $val ) )->text();
-                                       break;
-
-                               case 'MaxApertureValue':
-                                       if ( strpos( $val, '/' ) !== false ) {
-                                               // need to expand this earlier to calculate fNumber
-                                               list( $n, $d ) = explode( '/', $val );
-                                               if ( is_numeric( $n ) && is_numeric( $d ) ) {
-                                                       $val = $n / $d;
+                                       case 'Urgency':
+                                               // 1-8 with 1 being highest, 5 normal
+                                               // 0 is reserved, and 9 is 'user-defined'.
+                                               $urgency = '';
+                                               if ( $val == 0 || $val == 9 ) {
+                                                       $urgency = 'other';
+                                               } elseif ( $val < 5 && $val > 1 ) {
+                                                       $urgency = 'high';
+                                               } elseif ( $val == 5 ) {
+                                                       $urgency = 'normal';
+                                               } elseif ( $val <= 8 && $val > 5 ) {
+                                                       $urgency = 'low';
                                                }
-                                       }
-                                       if ( is_numeric( $val ) ) {
-                                               $fNumber = pow( 2, $val / 2 );
-                                               if ( $fNumber !== false ) {
-                                                       $val = $this->msg( 'exif-maxaperturevalue-value',
-                                                               $this->formatNum( $val ),
-                                                               $this->formatNum( $fNumber, 2 )
-                                                       )->text();
-                                               }
-                                       }
-                                       break;
-
-                               case 'iimCategory':
-                                       switch ( strtolower( $val ) ) {
-                                               // See pg 29 of IPTC photo
-                                               // metadata standard.
-                                               case 'ace': case 'clj':
-                                               case 'dis': case 'fin':
-                                               case 'edu': case 'evn':
-                                               case 'hth': case 'hum':
-                                               case 'lab': case 'lif':
-                                               case 'pol': case 'rel':
-                                               case 'sci': case 'soi':
-                                               case 'spo': case 'war':
-                                               case 'wea':
-                                                       $val = $this->exifMsg(
-                                                               'iimcategory',
-                                                               $val
+
+                                               if ( $urgency !== '' ) {
+                                                       $val = $this->exifMsg( 'urgency',
+                                                               $urgency, $val
                                                        );
-                                       }
-                                       break;
-                               case 'SubjectNewsCode':
-                                       // Essentially like iimCategory.
-                                       // 8 (numeric) digit hierarchical
-                                       // classification. We decode the
-                                       // first 2 digits, which provide
-                                       // a broad category.
-                                       $val = $this->convertNewsCode( $val );
-                                       break;
-                               case 'Urgency':
-                                       // 1-8 with 1 being highest, 5 normal
-                                       // 0 is reserved, and 9 is 'user-defined'.
-                                       $urgency = '';
-                                       if ( $val == 0 || $val == 9 ) {
-                                               $urgency = 'other';
-                                       } elseif ( $val < 5 && $val > 1 ) {
-                                               $urgency = 'high';
-                                       } elseif ( $val == 5 ) {
-                                               $urgency = 'normal';
-                                       } elseif ( $val <= 8 && $val > 5 ) {
-                                               $urgency = 'low';
-                                       }
+                                               }
+                                               break;
 
-                                       if ( $urgency !== '' ) {
-                                               $val = $this->exifMsg( 'urgency',
-                                                       $urgency, $val
-                                               );
-                                       }
-                                       break;
-
-                               // Things that have a unit of pixels.
-                               case 'OriginalImageHeight':
-                               case 'OriginalImageWidth':
-                               case 'PixelXDimension':
-                               case 'PixelYDimension':
-                               case 'ImageWidth':
-                               case 'ImageLength':
-                                       $val = $this->formatNum( $val ) . ' ' . $this->msg( 'unit-pixel' )->text();
-                                       break;
-
-                               // Do not transform fields with pure text.
-                               // For some languages the formatNum()
-                               // conversion results to wrong output like
-                               // foo,bar@example,com or foo٫bar@example٫com.
-                               // Also some 'numeric' things like Scene codes
-                               // are included here as we really don't want
-                               // commas inserted.
-                               case 'ImageDescription':
-                               case 'Artist':
-                               case 'Copyright':
-                               case 'RelatedSoundFile':
-                               case 'ImageUniqueID':
-                               case 'SpectralSensitivity':
-                               case 'GPSSatellites':
-                               case 'GPSVersionID':
-                               case 'GPSMapDatum':
-                               case 'Keywords':
-                               case 'WorldRegionDest':
-                               case 'CountryDest':
-                               case 'CountryCodeDest':
-                               case 'ProvinceOrStateDest':
-                               case 'CityDest':
-                               case 'SublocationDest':
-                               case 'WorldRegionCreated':
-                               case 'CountryCreated':
-                               case 'CountryCodeCreated':
-                               case 'ProvinceOrStateCreated':
-                               case 'CityCreated':
-                               case 'SublocationCreated':
-                               case 'ObjectName':
-                               case 'SpecialInstructions':
-                               case 'Headline':
-                               case 'Credit':
-                               case 'Source':
-                               case 'EditStatus':
-                               case 'FixtureIdentifier':
-                               case 'LocationDest':
-                               case 'LocationDestCode':
-                               case 'Writer':
-                               case 'JPEGFileComment':
-                               case 'iimSupplementalCategory':
-                               case 'OriginalTransmissionRef':
-                               case 'Identifier':
-                               case 'dc-contributor':
-                               case 'dc-coverage':
-                               case 'dc-publisher':
-                               case 'dc-relation':
-                               case 'dc-rights':
-                               case 'dc-source':
-                               case 'dc-type':
-                               case 'Lens':
-                               case 'SerialNumber':
-                               case 'CameraOwnerName':
-                               case 'Label':
-                               case 'Nickname':
-                               case 'RightsCertificate':
-                               case 'CopyrightOwner':
-                               case 'UsageTerms':
-                               case 'WebStatement':
-                               case 'OriginalDocumentID':
-                               case 'LicenseUrl':
-                               case 'MorePermissionsUrl':
-                               case 'AttributionUrl':
-                               case 'PreferredAttributionName':
-                               case 'PNGFileComment':
-                               case 'Disclaimer':
-                               case 'ContentWarning':
-                               case 'GIFFileComment':
-                               case 'SceneCode':
-                               case 'IntellectualGenre':
-                               case 'Event':
-                               case 'OrginisationInImage':
-                               case 'PersonInImage':
-
-                                       $val = htmlspecialchars( $val );
-                                       break;
-
-                               case 'ObjectCycle':
-                                       switch ( $val ) {
-                                       case 'a': case 'p': case 'b':
-                                               $val = $this->exifMsg( $tag, $val );
+                                       // Things that have a unit of pixels.
+                                       case 'OriginalImageHeight':
+                                       case 'OriginalImageWidth':
+                                       case 'PixelXDimension':
+                                       case 'PixelYDimension':
+                                       case 'ImageWidth':
+                                       case 'ImageLength':
+                                               $val = $this->formatNum( $val ) . ' ' . $this->msg( 'unit-pixel' )->text();
                                                break;
-                                       default:
+
+                                       // Do not transform fields with pure text.
+                                       // For some languages the formatNum()
+                                       // conversion results to wrong output like
+                                       // foo,bar@example,com or foo٫bar@example٫com.
+                                       // Also some 'numeric' things like Scene codes
+                                       // are included here as we really don't want
+                                       // commas inserted.
+                                       case 'ImageDescription':
+                                       case 'Artist':
+                                       case 'Copyright':
+                                       case 'RelatedSoundFile':
+                                       case 'ImageUniqueID':
+                                       case 'SpectralSensitivity':
+                                       case 'GPSSatellites':
+                                       case 'GPSVersionID':
+                                       case 'GPSMapDatum':
+                                       case 'Keywords':
+                                       case 'WorldRegionDest':
+                                       case 'CountryDest':
+                                       case 'CountryCodeDest':
+                                       case 'ProvinceOrStateDest':
+                                       case 'CityDest':
+                                       case 'SublocationDest':
+                                       case 'WorldRegionCreated':
+                                       case 'CountryCreated':
+                                       case 'CountryCodeCreated':
+                                       case 'ProvinceOrStateCreated':
+                                       case 'CityCreated':
+                                       case 'SublocationCreated':
+                                       case 'ObjectName':
+                                       case 'SpecialInstructions':
+                                       case 'Headline':
+                                       case 'Credit':
+                                       case 'Source':
+                                       case 'EditStatus':
+                                       case 'FixtureIdentifier':
+                                       case 'LocationDest':
+                                       case 'LocationDestCode':
+                                       case 'Writer':
+                                       case 'JPEGFileComment':
+                                       case 'iimSupplementalCategory':
+                                       case 'OriginalTransmissionRef':
+                                       case 'Identifier':
+                                       case 'dc-contributor':
+                                       case 'dc-coverage':
+                                       case 'dc-publisher':
+                                       case 'dc-relation':
+                                       case 'dc-rights':
+                                       case 'dc-source':
+                                       case 'dc-type':
+                                       case 'Lens':
+                                       case 'SerialNumber':
+                                       case 'CameraOwnerName':
+                                       case 'Label':
+                                       case 'Nickname':
+                                       case 'RightsCertificate':
+                                       case 'CopyrightOwner':
+                                       case 'UsageTerms':
+                                       case 'WebStatement':
+                                       case 'OriginalDocumentID':
+                                       case 'LicenseUrl':
+                                       case 'MorePermissionsUrl':
+                                       case 'AttributionUrl':
+                                       case 'PreferredAttributionName':
+                                       case 'PNGFileComment':
+                                       case 'Disclaimer':
+                                       case 'ContentWarning':
+                                       case 'GIFFileComment':
+                                       case 'SceneCode':
+                                       case 'IntellectualGenre':
+                                       case 'Event':
+                                       case 'OrginisationInImage':
+                                       case 'PersonInImage':
+
                                                $val = htmlspecialchars( $val );
                                                break;
-                                       }
-                                       break;
-                               case 'Copyrighted':
-                                       switch ( $val ) {
-                                       case 'True': case 'False':
-                                               $val = $this->exifMsg( $tag, $val );
+
+                                       case 'ObjectCycle':
+                                               switch ( $val ) {
+                                                       case 'a':
+                                                       case 'p':
+                                                       case 'b':
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               $val = htmlspecialchars( $val );
+                                                               break;
+                                               }
+                                               break;
+                                       case 'Copyrighted':
+                                               switch ( $val ) {
+                                                       case 'True':
+                                                       case 'False':
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                               }
+                                               break;
+                                       case 'Rating':
+                                               if ( $val == '-1' ) {
+                                                       $val = $this->exifMsg( $tag, 'rejected' );
+                                               } else {
+                                                       $val = $this->formatNum( $val );
+                                               }
                                                break;
-                                       }
-                                       break;
-                               case 'Rating':
-                                       if ( $val == '-1' ) {
-                                               $val = $this->exifMsg( $tag, 'rejected' );
-                                       } else {
-                                               $val = $this->formatNum( $val );
-                                       }
-                                       break;
 
-                               case 'LanguageCode':
-                                       $lang = Language::fetchLanguageName( strtolower( $val ), $this->getLanguage()->getCode() );
-                                       if ( $lang ) {
-                                               $val = htmlspecialchars( $lang );
-                                       } else {
-                                               $val = htmlspecialchars( $val );
-                                       }
-                                       break;
+                                       case 'LanguageCode':
+                                               $lang = Language::fetchLanguageName( strtolower( $val ), $this->getLanguage()->getCode() );
+                                               if ( $lang ) {
+                                                       $val = htmlspecialchars( $lang );
+                                               } else {
+                                                       $val = htmlspecialchars( $val );
+                                               }
+                                               break;
 
-                               default:
-                                       $val = $this->formatNum( $val );
-                                       break;
+                                       default:
+                                               $val = $this->formatNum( $val );
+                                               break;
                                }
                        }
                        // End formatting values, start flattening arrays.
                        $vals = $this->flattenArrayReal( $vals, $type );
-
                }
+
                return $tags;
        }
 
@@ -887,6 +993,7 @@ class FormatMetadata extends ContextSource {
                $context = new DerivativeContext( $obj->getContext() );
                $context->setLanguage( $wgContLang );
                $obj->setContext( $context );
+
                return $obj->flattenArrayReal( $vals, $type, $noHtml );
        }
 
@@ -908,6 +1015,7 @@ class FormatMetadata extends ContextSource {
                if ( $context ) {
                        $obj->setContext( $context );
                }
+
                return $obj->flattenArrayReal( $vals, $type, $noHtml );
        }
 
@@ -939,102 +1047,103 @@ class FormatMetadata extends ContextSource {
 
                if ( !is_array( $vals ) ) {
                        return $vals; // do nothing if not an array;
-               }
-               elseif ( count( $vals ) === 1 && $type !== 'lang' ) {
+               } elseif ( count( $vals ) === 1 && $type !== 'lang' ) {
                        return $vals[0];
-               }
-               elseif ( count( $vals ) === 0 ) {
+               } elseif ( count( $vals ) === 0 ) {
                        wfDebug( __METHOD__ . " metadata array with 0 elements!\n" );
+
                        return ""; // paranoia. This should never happen
-               }
-               /* @todo FIXME: This should hide some of the list entries if there are
-                * say more than four. Especially if a field is translated into 20
-                * languages, we don't want to show them all by default
-                */
-               else {
+               } else {
+                       /* @todo FIXME: This should hide some of the list entries if there are
+                        * say more than four. Especially if a field is translated into 20
+                        * languages, we don't want to show them all by default
+                        */
                        switch ( $type ) {
-                       case 'lang':
-                               // Display default, followed by ContLang,
-                               // followed by the rest in no particular
-                               // order.
-
-                               // Todo: hide some items if really long list.
-
-                               $content = '';
-
-                               $priorityLanguages = $this->getPriorityLanguages();
-                               $defaultItem = false;
-                               $defaultLang = false;
-
-                               // If default is set, save it for later,
-                               // as we don't know if it's equal to
-                               // one of the lang codes. (In xmp
-                               // you specify the language for a
-                               // default property by having both
-                               // a default prop, and one in the language
-                               // that are identical)
-                               if ( isset( $vals['x-default'] ) ) {
-                                       $defaultItem = $vals['x-default'];
-                                       unset( $vals['x-default'] );
-                               }
-                               foreach ( $priorityLanguages as $pLang ) {
-                                       if ( isset( $vals[$pLang] ) ) {
-                                               $isDefault = false;
-                                               if ( $vals[$pLang] === $defaultItem ) {
-                                                       $defaultItem = false;
-                                                       $isDefault = true;
+                               case 'lang':
+                                       // Display default, followed by ContLang,
+                                       // followed by the rest in no particular
+                                       // order.
+
+                                       // Todo: hide some items if really long list.
+
+                                       $content = '';
+
+                                       $priorityLanguages = $this->getPriorityLanguages();
+                                       $defaultItem = false;
+                                       $defaultLang = false;
+
+                                       // If default is set, save it for later,
+                                       // as we don't know if it's equal to
+                                       // one of the lang codes. (In xmp
+                                       // you specify the language for a
+                                       // default property by having both
+                                       // a default prop, and one in the language
+                                       // that are identical)
+                                       if ( isset( $vals['x-default'] ) ) {
+                                               $defaultItem = $vals['x-default'];
+                                               unset( $vals['x-default'] );
+                                       }
+                                       foreach ( $priorityLanguages as $pLang ) {
+                                               if ( isset( $vals[$pLang] ) ) {
+                                                       $isDefault = false;
+                                                       if ( $vals[$pLang] === $defaultItem ) {
+                                                               $defaultItem = false;
+                                                               $isDefault = true;
+                                                       }
+                                                       $content .= $this->langItem(
+                                                               $vals[$pLang], $pLang,
+                                                               $isDefault, $noHtml );
+
+                                                       unset( $vals[$pLang] );
+
+                                                       if ( $this->singleLang ) {
+                                                               return Html::rawElement( 'span',
+                                                                       array( 'lang' => $pLang ), $vals[$pLang] );
+                                                       }
                                                }
-                                               $content .= $this->langItem(
-                                                       $vals[$pLang], $pLang,
-                                                       $isDefault, $noHtml );
-
-                                               unset( $vals[$pLang] );
+                                       }
 
+                                       // Now do the rest.
+                                       foreach ( $vals as $lang => $item ) {
+                                               if ( $item === $defaultItem ) {
+                                                       $defaultLang = $lang;
+                                                       continue;
+                                               }
+                                               $content .= $this->langItem( $item,
+                                                       $lang, false, $noHtml );
                                                if ( $this->singleLang ) {
                                                        return Html::rawElement( 'span',
-                                                               array( 'lang' => $pLang ), $vals[$pLang] );
+                                                               array( 'lang' => $lang ), $item );
                                                }
                                        }
-                               }
-
-                               // Now do the rest.
-                               foreach ( $vals as $lang => $item ) {
-                                       if ( $item === $defaultItem ) {
-                                               $defaultLang = $lang;
-                                               continue;
-                                       }
-                                       $content .= $this->langItem( $item,
-                                               $lang, false, $noHtml );
-                                       if ( $this->singleLang ) {
-                                               return Html::rawElement( 'span',
-                                                       array( 'lang' => $lang ), $item );
+                                       if ( $defaultItem !== false ) {
+                                               $content = $this->langItem( $defaultItem,
+                                                               $defaultLang, true, $noHtml ) .
+                                                       $content;
+                                               if ( $this->singleLang ) {
+                                                       return $defaultItem;
+                                               }
                                        }
-                               }
-                               if ( $defaultItem !== false ) {
-                                       $content = $this->langItem( $defaultItem,
-                                               $defaultLang, true, $noHtml ) .
-                                               $content;
-                                       if ( $this->singleLang ) {
-                                               return $defaultItem;
+                                       if ( $noHtml ) {
+                                               return $content;
                                        }
-                               }
-                               if ( $noHtml ) {
-                                       return $content;
-                               }
-                               return '<ul class="metadata-langlist">' .
+
+                                       return '<ul class="metadata-langlist">' .
                                        $content .
                                        '</ul>';
-                       case 'ol':
-                               if ( $noHtml ) {
-                                       return "\n#" . implode( "\n#", $vals );
-                               }
-                               return "<ol><li>" . implode( "</li>\n<li>", $vals ) . '</li></ol>';
-                       case 'ul':
-                       default:
-                               if ( $noHtml ) {
-                                       return "\n*" . implode( "\n*", $vals );
-                               }
-                               return "<ul><li>" . implode( "</li>\n<li>", $vals ) . '</li></ul>';
+                               case 'ol':
+                                       if ( $noHtml ) {
+                                               return "\n#" . implode( "\n#", $vals );
+                                       }
+
+                                       return "<ol><li>" . implode( "</li>\n<li>", $vals ) . '</li></ol>';
+                               case 'ul':
+                               default:
+                                       if ( $noHtml ) {
+                                               return "\n*" . implode( "\n*", $vals );
+                                       }
+
+                                       return "<ul><li>" . implode( "</li>\n<li>", $vals ) . '</li></ul>';
                        }
                }
        }
@@ -1067,6 +1176,7 @@ class FormatMetadata extends ContextSource {
                        if ( $noHtml ) {
                                return $msg->text() . "\n\n";
                        } /* else */
+
                        return '<li class="mw-metadata-lang-default">'
                                . $msg->text()
                                . "</li>\n";
@@ -1098,6 +1208,7 @@ class FormatMetadata extends ContextSource {
                $item .= '" lang="' . $lang . '">';
                $item .= $msg->text();
                $item .= "</li>\n";
+
                return $item;
        }
 
@@ -1118,6 +1229,7 @@ class FormatMetadata extends ContextSource {
                if ( $val === '' ) {
                        $val = 'value';
                }
+
                return $this->msg( $wgContLang->lc( "exif-$tag-$val" ), $arg, $arg2 )->text();
        }
 
@@ -1136,6 +1248,7 @@ class FormatMetadata extends ContextSource {
                        foreach ( $num as $number ) {
                                $out[] = $this->formatNum( $number );
                        }
+
                        return $this->getLanguage()->commaList( $out );
                }
                if ( preg_match( '/^(-?\d+)\/(\d+)$/', $num, $m ) ) {
@@ -1153,6 +1266,7 @@ class FormatMetadata extends ContextSource {
                        if ( is_numeric( $num ) && $round !== false ) {
                                $num = round( $num, $round );
                        }
+
                        return $this->getLanguage()->formatNum( $num );
                }
        }
@@ -1176,6 +1290,7 @@ class FormatMetadata extends ContextSource {
                                return $this->formatNum( $numerator / $gcd ) . '/' . $this->formatNum( $denominator / $gcd );
                        }
                }
+
                return $this->formatNum( $num );
        }
 
@@ -1203,6 +1318,7 @@ class FormatMetadata extends ContextSource {
                        $a = $b;
                        $b = $remainder;
                }
+
                return $a;
        }
 
@@ -1281,6 +1397,7 @@ class FormatMetadata extends ContextSource {
                        $catMsg = $this->exifMsg( 'iimcategory', $cat );
                        $val = $this->exifMsg( 'subjectnewscode', '', $val, $catMsg );
                }
+
                return $val;
        }
 
@@ -1358,6 +1475,7 @@ class FormatMetadata extends ContextSource {
                        foreach ( $vals as &$val ) {
                                $val = htmlspecialchars( $val );
                        }
+
                        return $this->flattenArrayReal( $vals );
                } else {
                        // We have a real ContactInfo field.
@@ -1408,10 +1526,10 @@ class FormatMetadata extends ContextSource {
                                                        $emails[] = $finalEmail;
                                                } else {
                                                        $emails[] = '[mailto:'
-                                                       . $finalEmail
-                                                       . ' <span class="email">'
-                                                       . $finalEmail
-                                                       . '</span>]';
+                                                               . $finalEmail
+                                                               . ' <span class="email">'
+                                                               . $finalEmail
+                                                               . '</span>]';
                                                }
                                        }
                                }
@@ -1440,6 +1558,7 @@ class FormatMetadata extends ContextSource {
                                        . htmlspecialchars( $vals['CiUrlWork'] )
                                        . '</span>';
                        }
+
                        return $this->msg( 'exif-contact-value', $email, $url,
                                $street, $city, $region, $postal, $country,
                                $tel )->text();
@@ -1462,6 +1581,7 @@ class FormatMetadata extends ContextSource {
                        }
                }
                $fields = array_map( 'strtolower', $fields );
+
                return $fields;
        }
 
@@ -1479,13 +1599,15 @@ class FormatMetadata extends ContextSource {
 
                // If revision deleted, exit immediately
                if ( $file->isDeleted( File::DELETED_FILE ) ) {
+                       wfProfileOut( __METHOD__ );
+
                        return array();
                }
 
                $cacheKey = wfMemcKey(
                        'getExtendedMetadata',
                        $this->getLanguage()->getCode(),
-                       (int) $this->singleLang,
+                       (int)$this->singleLang,
                        $file->getSha1()
                );
 
@@ -1512,6 +1634,7 @@ class FormatMetadata extends ContextSource {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $extendedMetadata;
        }
 
@@ -1555,7 +1678,7 @@ class FormatMetadata extends ContextSource {
                                $name = $text;
                        }
 
-                       $fileMetadata[ 'ObjectName' ] = array(
+                       $fileMetadata['ObjectName'] = array(
                                'value' => $name,
                                'source' => 'mediawiki-metadata',
                        );
@@ -1573,6 +1696,7 @@ class FormatMetadata extends ContextSource {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $fileMetadata;
        }
 
@@ -1599,12 +1723,13 @@ class FormatMetadata extends ContextSource {
 
                $visible = array_flip( self::getVisibleFields() );
                foreach ( $extendedMetadata as $key => $value ) {
-                       if ( !isset( $visible[ strtolower( $key ) ] ) ) {
+                       if ( !isset( $visible[strtolower( $key )] ) ) {
                                $extendedMetadata[$key]['hidden'] = '';
                        }
                }
 
                wfProfileOut( __METHOD__ );
+
                return $extendedMetadata;
        }
 
@@ -1616,8 +1741,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'] )
@@ -1731,10 +1855,10 @@ 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] );
+               $priorityLanguages = array_merge( (array)$this->getLanguage()->getCode(), $priorityLanguages[0], $priorityLanguages[1] );
+
                return $priorityLanguages;
        }
 }
@@ -1751,7 +1875,7 @@ class FormatExif {
        /**
         * @param $meta array
         */
-       function FormatExif( $meta ) {
+       function __construct( $meta ) {
                wfDeprecated( __METHOD__, '1.18' );
                $this->meta = $meta;
        }
index 19635da..830b5ca 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class GIFHandler extends BitmapHandler {
-
        const BROKEN_FILE = '0'; // value to store in img_metadata if error extracting metadata.
 
        function getMetadata( $image, $filename ) {
@@ -36,6 +35,7 @@ class GIFHandler extends BitmapHandler {
                } catch ( Exception $e ) {
                        // Broken file?
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
                        return self::BROKEN_FILE;
                }
 
@@ -71,6 +71,7 @@ class GIFHandler extends BitmapHandler {
                        return array();
                }
                unset( $meta['metadata']['_MW_GIF_VERSION'] );
+
                return $meta['metadata'];
        }
 
@@ -83,6 +84,7 @@ class GIFHandler extends BitmapHandler {
                $ser = $image->getMetadata();
                if ( $ser ) {
                        $metadata = unserialize( $ser );
+
                        return $image->getWidth() * $image->getHeight() * $metadata['frameCount'];
                } else {
                        return $image->getWidth() * $image->getHeight();
@@ -101,6 +103,7 @@ class GIFHandler extends BitmapHandler {
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -112,6 +115,7 @@ class GIFHandler extends BitmapHandler {
        function canAnimateThumbnail( $file ) {
                global $wgMaxAnimatedGifArea;
                $answer = $this->getImageArea( $file ) <= $wgMaxAnimatedGifArea;
+
                return $answer;
        }
 
@@ -131,14 +135,18 @@ class GIFHandler extends BitmapHandler {
 
                if ( !$data || !is_array( $data ) ) {
                        wfDebug( __METHOD__ . " invalid GIF metadata\n" );
+
                        return self::METADATA_BAD;
                }
 
                if ( !isset( $data['metadata']['_MW_GIF_VERSION'] )
-                       || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION ) {
+                       || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION
+               ) {
                        wfDebug( __METHOD__ . " old but compatible GIF metadata\n" );
+
                        return self::METADATA_COMPATIBLE;
                }
+
                return self::METADATA_GOOD;
        }
 
index 887afa3..a9b5b91 100644 (file)
@@ -33,7 +33,9 @@
  */
 class GIFMetadataExtractor {
        static $gif_frame_sep;
+
        static $gif_extension_sep;
+
        static $gif_term;
 
        const VERSION = 1;
@@ -163,8 +165,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,15 +219,14 @@ 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!" );
                                                }
 
                                                // strip out trailer.
                                                $xmp = substr( $xmp, 0, -257 );
-
                                        } else {
                                                // unrecognized extension block
                                                fseek( $fh, -( $blockLength + 1 ), SEEK_CUR );
@@ -341,7 +342,7 @@ class GIFMetadataExtractor {
                        $data .= fread( $fh, ord( $subLength ) );
                        $subLength = fread( $fh, 1 );
                }
+
                return $data;
        }
-
 }
index 544dd21..4b228b4 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class IPTC {
-
        /**
         * This takes the results of iptcparse() and puts it into a
         * form that can be handled by mediawiki. Generally called from
@@ -40,9 +39,9 @@ class IPTC {
         */
        static function parse( $rawData ) {
                $parsed = iptcparse( $rawData );
-               $data = Array();
+               $data = array();
                if ( !is_array( $parsed ) ) {
-                               return $data;
+                       return $data;
                }
 
                $c = '';
@@ -225,7 +224,7 @@ class IPTC {
                                        if ( isset( $parsed['2#060'] ) ) {
                                                $time = $parsed['2#060'];
                                        } else {
-                                               $time = Array();
+                                               $time = array();
                                        }
                                        $timestamp = self::timeHelper( $val, $time, $c );
                                        if ( $timestamp ) {
@@ -239,7 +238,7 @@ class IPTC {
                                        if ( isset( $parsed['2#063'] ) ) {
                                                $time = $parsed['2#063'];
                                        } else {
-                                               $time = Array();
+                                               $time = array();
                                        }
                                        $timestamp = self::timeHelper( $val, $time, $c );
                                        if ( $timestamp ) {
@@ -252,7 +251,7 @@ class IPTC {
                                        if ( isset( $parsed['2#035'] ) ) {
                                                $time = $parsed['2#035'];
                                        } else {
-                                               $time = Array();
+                                               $time = array();
                                        }
                                        $timestamp = self::timeHelper( $val, $time, $c );
                                        if ( $timestamp ) {
@@ -265,7 +264,7 @@ class IPTC {
                                        if ( isset( $parsed['2#038'] ) ) {
                                                $time = $parsed['2#038'];
                                        } else {
-                                               $time = Array();
+                                               $time = array();
                                        }
                                        $timestamp = self::timeHelper( $val, $time, $c );
                                        if ( $timestamp ) {
@@ -300,7 +299,7 @@ class IPTC {
                                                wfDebugLog( 'iptc', 'IPTC: '
                                                        . '2:04 too short. '
                                                        . 'Ignoring.' );
-                                                       break;
+                                               break;
                                        }
                                        $extracted = substr( $con[0], 4 );
                                        $data['IntellectualGenre'] = $extracted;
@@ -315,9 +314,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;
@@ -341,11 +338,11 @@ class IPTC {
                                        break;
 
                                default:
-                                       wfDebugLog( 'iptc', "Unsupported iptc tag: $tag. Value: " . implode( ',', $val ));
+                                       wfDebugLog( 'iptc', "Unsupported iptc tag: $tag. Value: " . implode( ',', $val ) );
                                        break;
                        }
-
                }
+
                return $data;
        }
 
@@ -387,12 +384,14 @@ class IPTC {
                        // April, but the year and day is unknown. We don't process these
                        // types of incomplete dates atm.
                        wfDebugLog( 'iptc', "IPTC: invalid time ( $time ) or date ( $date )" );
+
                        return null;
                }
 
-               $unixTS = wfTimestamp( TS_UNIX, $date . substr( $time, 0, 6 ));
+               $unixTS = wfTimestamp( TS_UNIX, $date . substr( $time, 0, 6 ) );
                if ( $unixTS === false ) {
                        wfDebugLog( 'iptc', "IPTC: can't convert date to TS_UNIX: $date $time." );
+
                        return null;
                }
 
@@ -400,12 +399,13 @@ class IPTC {
                        + ( intval( substr( $time, 9, 2 ) ) * 60 );
 
                if ( substr( $time, 6, 1 ) === '-' ) {
-                       $tz = - $tz;
+                       $tz = -$tz;
                }
 
                $finalTimestamp = wfTimestamp( TS_EXIF, $unixTS + $tz );
                if ( $finalTimestamp === false ) {
                        wfDebugLog( 'iptc', "IPTC: can't make final timestamp. Date: " . ( $unixTS + $tz ) );
+
                        return null;
                }
                if ( $dateOnly ) {
@@ -434,6 +434,7 @@ class IPTC {
 
                return $data;
        }
+
        /**
         * Helper function of a helper function to convert charset for iptc values.
         * @param $data Mixed String or Array: The iptc string
@@ -461,6 +462,7 @@ class IPTC {
                                return self::convIPTCHelper( $oldData, 'Windows-1252' );
                        }
                }
+
                return trim( $data );
        }
 
index e079003..c319908 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 abstract class ImageHandler extends MediaHandler {
-
        /**
         * @param $file File
         * @return bool
@@ -60,6 +59,7 @@ abstract class ImageHandler extends MediaHandler {
                } else {
                        throw new MWException( 'No width specified to ' . __METHOD__ );
                }
+
                # Removed for ProofreadPage
                #$width = intval( $width );
                return "{$width}px";
@@ -140,9 +140,11 @@ abstract class ImageHandler extends MediaHandler {
                }
 
                if ( !$this->validateThumbParams( $params['physicalWidth'],
-                               $params['physicalHeight'], $srcWidth, $srcHeight, $mimeType ) ) {
+                       $params['physicalHeight'], $srcWidth, $srcHeight, $mimeType )
+               ) {
                        return false;
                }
+
                return true;
        }
 
@@ -162,10 +164,12 @@ abstract class ImageHandler extends MediaHandler {
                # Sanity check $width
                if ( $width <= 0 ) {
                        wfDebug( __METHOD__ . ": Invalid destination width: $width\n" );
+
                        return false;
                }
                if ( $srcWidth <= 0 ) {
                        wfDebug( __METHOD__ . ": Invalid source width: $srcWidth\n" );
+
                        return false;
                }
 
@@ -174,6 +178,7 @@ abstract class ImageHandler extends MediaHandler {
                        # Force height to be at least 1 pixel
                        $height = 1;
                }
+
                return true;
        }
 
@@ -198,8 +203,10 @@ abstract class ImageHandler extends MediaHandler {
                wfSuppressWarnings();
                $gis = getimagesize( $path );
                wfRestoreWarnings();
+
                return $gis;
        }
+
        /**
         * Function that returns the number of pixels to be thumbnailed.
         * Intended for animated GIFs to multiply by the number of frames.
@@ -213,7 +220,6 @@ abstract class ImageHandler extends MediaHandler {
                return $image->getWidth() * $image->getHeight();
        }
 
-
        /**
         * @param $file File
         * @return string
@@ -237,12 +243,13 @@ abstract class ImageHandler extends MediaHandler {
                if ( $pages === false || $pages <= 1 ) {
                        $msg = wfMessage( 'file-info-size' )->numParams( $file->getWidth(),
                                $file->getHeight() )->params( $size,
-                               $file->getMimeType() )->parse();
+                                       $file->getMimeType() )->parse();
                } else {
                        $msg = wfMessage( 'file-info-size-pages' )->numParams( $file->getWidth(),
                                $file->getHeight() )->params( $size,
-                               $file->getMimeType() )->numParams( $pages )->parse();
+                                       $file->getMimeType() )->numParams( $pages )->parse();
                }
+
                return $msg;
        }
 
index fa76366..ccbd544 100644 (file)
@@ -31,7 +31,6 @@
  * @ingroup Media
  */
 class JpegHandler extends ExifBitmapHandler {
-
        function getMetadata( $image, $filename ) {
                try {
                        $meta = BitmapMetadataHandler::Jpeg( $filename );
@@ -40,9 +39,9 @@ class JpegHandler extends ExifBitmapHandler {
                                throw new MWException( 'Metadata array is not an array' );
                        }
                        $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+
                        return serialize( $meta );
-               }
-               catch ( MWException $e ) {
+               } catch ( MWException $e ) {
                        // BitmapMetadataHandler throws an exception in certain exceptional cases like if file does not exist.
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
 
@@ -55,6 +54,7 @@ class JpegHandler extends ExifBitmapHandler {
                         * Thus switch to using -1 to denote only a broken file, and use an array with only
                         * MEDIAWIKI_EXIF_VERSION to denote no props.
                         */
+
                        return ExifBitmapHandler::BROKEN_FILE;
                }
        }
@@ -62,7 +62,7 @@ class JpegHandler extends ExifBitmapHandler {
        /**
         * @param $file File
         * @param array $params Rotate parameters.
-        *      'rotation' clockwise rotation in degrees, allowed are multiples of 90
+        *    'rotation' clockwise rotation in degrees, allowed are multiples of 90
         * @since 1.21
         * @return bool
         */
@@ -83,12 +83,13 @@ class JpegHandler extends ExifBitmapHandler {
                        wfProfileOut( 'jpegtran' );
                        if ( $retval !== 0 ) {
                                $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                                return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
                        }
+
                        return false;
                } else {
                        return parent::rotate( $file, $params );
                }
        }
-
 }
index c7030eb..7763c6f 100644 (file)
@@ -30,8 +30,8 @@
  * @ingroup Media
  */
 class JpegMetadataExtractor {
-
        const MAX_JPEG_SEGMENTS = 200;
+
        // the max segment is a sanity check.
        // A jpeg file should never even remotely have
        // that many segments. Your average file has about 10.
@@ -113,7 +113,6 @@ class JpegMetadataExtractor {
                                } else {
                                        wfDebug( __METHOD__ . " Ignoring JPEG comment as is garbage.\n" );
                                }
-
                        } elseif ( $buffer === "\xE1" ) {
                                // APP1 section (Exif, XMP, and XMP extended)
                                // only extract if XMP is enabled.
@@ -160,7 +159,6 @@ class JpegMetadataExtractor {
                                }
                                fseek( $fh, $size['int'] - 2, SEEK_CUR );
                        }
-
                }
                // shouldn't get here.
                throw new MWException( "Reached end of jpeg file unexpectedly" );
@@ -181,6 +179,7 @@ class JpegMetadataExtractor {
                if ( strlen( $segment ) !== $size['int'] - 2 ) {
                        throw new MWException( "Segment shorter than expected" );
                }
+
                return $segment;
        }
 
@@ -275,7 +274,6 @@ class JpegMetadataExtractor {
                                $lenData['len']++;
                        }
                        $offset += $lenData['len'];
-
                }
 
                if ( !$realHash || !$recordedHash ) {
index ddb8efd..4bf0b4b 100644 (file)
@@ -31,6 +31,7 @@ abstract class MediaHandler {
        const METADATA_GOOD = true;
        const METADATA_BAD = false;
        const METADATA_COMPATIBLE = 2; // for old but backwards compatible.
+
        /**
         * Instance cache
         */
@@ -39,7 +40,7 @@ abstract class MediaHandler {
        /**
         * Get a MediaHandler for a given MIME type from the instance cache
         *
-        * @param $type string
+        * @param string $type
         *
         * @return MediaHandler
         */
@@ -47,6 +48,7 @@ abstract class MediaHandler {
                global $wgMediaHandlers;
                if ( !isset( $wgMediaHandlers[$type] ) ) {
                        wfDebug( __METHOD__ . ": no handler found for $type.\n" );
+
                        return false;
                }
                $class = $wgMediaHandlers[$type];
@@ -56,6 +58,7 @@ abstract class MediaHandler {
                                self::$handlers[$class] = false;
                        }
                }
+
                return self::$handlers[$class];
        }
 
@@ -70,7 +73,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 +81,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 +107,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,11 +138,12 @@ 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
-               wfRunHooks( 'GetMetadataVersion', Array( &$version ) );
+               $version = array( '2' ); // core metadata version
+               wfRunHooks( 'GetMetadataVersion', array( &$version ) );
+
                return implode( ';', $version );
        }
 
@@ -149,9 +153,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 ) ) {
@@ -160,14 +164,16 @@ abstract class MediaHandler {
                        wfSuppressWarnings();
                        $ret = unserialize( $metadata );
                        wfRestoreWarnings();
+
                        return $ret;
                }
+
                return $metadata;
        }
 
        /**
         * Get a string describing the type of metadata, for display purposes.
-        *
+        * @param $image
         * @return string
         */
        function getMetadataType( $image ) {
@@ -217,7 +223,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 +247,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 +261,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 +275,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 +298,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();
@@ -379,8 +385,8 @@ abstract class MediaHandler {
         *
         * @note For non-paged media, use getImageSize.
         *
-        * @param $image File
-        * @param $page What page to get dimensions of
+        * @param File $image
+        * @param int $page What page to get dimensions of
         * @return array|bool
         */
        function getPageDimensions( $image, $page ) {
@@ -462,6 +468,7 @@ abstract class MediaHandler {
                                $value
                        );
                }
+
                return $result;
        }
 
@@ -527,6 +534,7 @@ abstract class MediaHandler {
         */
        function getShortDesc( $file ) {
                global $wgLang;
+
                return htmlspecialchars( $wgLang->formatSize( $file->getSize() ) );
        }
 
@@ -538,6 +546,7 @@ abstract class MediaHandler {
         */
        function getLongDesc( $file ) {
                global $wgLang;
+
                return wfMessage( 'file-info', htmlspecialchars( $wgLang->formatSize( $file->getSize() ) ),
                        $file->getMimeType() )->parse();
        }
@@ -550,6 +559,7 @@ abstract class MediaHandler {
         */
        static function getGeneralShortDesc( $file ) {
                global $wgLang;
+
                return $wgLang->formatSize( $file->getSize() );
        }
 
@@ -561,6 +571,7 @@ abstract class MediaHandler {
         */
        static function getGeneralLongDesc( $file ) {
                global $wgLang;
+
                return wfMessage( 'file-info', $wgLang->formatSize( $file->getSize() ),
                        $file->getMimeType() )->parse();
        }
@@ -603,7 +614,8 @@ abstract class MediaHandler {
         * @param Parser $parser
         * @param File $file
         */
-       function parserTransformHook( $parser, $file ) {}
+       function parserTransformHook( $parser, $file ) {
+       }
 
        /**
         * File validation hook called on upload.
@@ -642,9 +654,11 @@ abstract class MediaHandler {
                                                sprintf( 'Removing bad %d-byte thumbnail "%s". unlink() failed',
                                                        $thumbstat['size'], $dstPath ) );
                                }
+
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -691,5 +705,4 @@ abstract class MediaHandler {
        public function getRotation( $file ) {
                return 0;
        }
-
 }
index c49d3f2..494a495 100644 (file)
@@ -156,6 +156,7 @@ abstract class MediaTransformOutput {
                        $be = $this->file->getRepo()->getBackend();
                        // The temp file will be process cached by FileBackend
                        $fsFile = $be->getLocalReference( array( 'src' => $this->path ) );
+
                        return $fsFile ? $fsFile->getPath() : false;
                } else {
                        return $this->path; // may return false
@@ -173,6 +174,7 @@ abstract class MediaTransformOutput {
                        return false;
                } elseif ( FileBackend::isStoragePath( $this->path ) ) {
                        $be = $this->file->getRepo()->getBackend();
+
                        return $be->streamFile( array( 'src' => $this->path, 'headers' => $headers ) )->isOK();
                } else { // FS-file
                        return StreamFile::stream( $this->getLocalCopyPath(), $headers );
@@ -224,6 +226,7 @@ abstract class MediaTransformOutput {
                if ( $title ) {
                        $attribs['title'] = $title;
                }
+
                return $attribs;
        }
 }
@@ -377,7 +380,6 @@ class ThumbnailImage extends MediaTransformOutput {
 
                return $this->linkWrap( $linkAttribs, Xml::element( 'img', $attribs ) );
        }
-
 }
 
 /**
index d2c17ef..fd26575 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class PNGHandler extends BitmapHandler {
-
        const BROKEN_FILE = '0';
 
        /**
@@ -41,6 +40,7 @@ class PNGHandler extends BitmapHandler {
                } catch ( Exception $e ) {
                        // Broken file?
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
                        return self::BROKEN_FILE;
                }
 
@@ -77,6 +77,7 @@ class PNGHandler extends BitmapHandler {
                        return array();
                }
                unset( $meta['metadata']['_MW_PNG_VERSION'] );
+
                return $meta['metadata'];
        }
 
@@ -92,8 +93,10 @@ class PNGHandler extends BitmapHandler {
                                return true;
                        }
                }
+
                return false;
        }
+
        /**
         * We do not support making APNG thumbnails, so always false
         * @param $image File
@@ -120,14 +123,18 @@ class PNGHandler extends BitmapHandler {
 
                if ( !$data || !is_array( $data ) ) {
                        wfDebug( __METHOD__ . " invalid png metadata\n" );
+
                        return self::METADATA_BAD;
                }
 
                if ( !isset( $data['metadata']['_MW_PNG_VERSION'] )
-                       || $data['metadata']['_MW_PNG_VERSION'] != PNGMetadataExtractor::VERSION ) {
+                       || $data['metadata']['_MW_PNG_VERSION'] != PNGMetadataExtractor::VERSION
+               ) {
                        wfDebug( __METHOD__ . " old but compatible png metadata\n" );
+
                        return self::METADATA_COMPATIBLE;
                }
+
                return self::METADATA_GOOD;
        }
 
@@ -166,5 +173,4 @@ class PNGHandler extends BitmapHandler {
 
                return $wgLang->commaList( $info );
        }
-
 }
index 845d212..bb32678 100644 (file)
@@ -32,7 +32,9 @@
  */
 class PNGMetadataExtractor {
        static $png_sig;
+
        static $CRC_size;
+
        static $text_chunks;
 
        const VERSION = 1;
@@ -49,22 +51,22 @@ class PNGMetadataExtractor {
                        # Artist is unofficial. Author is the recommended
                        # keyword in the PNG spec. However some people output
                        # Artist so support both.
-                       'artist'      => 'Artist',
-                       'model'       => 'Model',
-                       'make'        => 'Make',
-                       'author'      => 'Artist',
-                       'comment'     => 'PNGFileComment',
+                       'artist' => 'Artist',
+                       'model' => 'Model',
+                       'make' => 'Make',
+                       'author' => 'Artist',
+                       'comment' => 'PNGFileComment',
                        'description' => 'ImageDescription',
-                       'title'       => 'ObjectName',
-                       'copyright'   => 'Copyright',
+                       'title' => 'ObjectName',
+                       'copyright' => 'Copyright',
                        # Source as in original device used to make image
                        # not as in who gave you the image
-                       'source'      => 'Model',
-                       'software'    => 'Software',
-                       'disclaimer'  => 'Disclaimer',
-                       'warning'     => 'ContentWarning',
-                       'url'         => 'Identifier', # Not sure if this is best mapping. Maybe WebStatement.
-                       'label'       => 'Label',
+                       'source' => 'Model',
+                       'software' => 'Software',
+                       'disclaimer' => 'Disclaimer',
+                       'warning' => 'ContentWarning',
+                       'url' => 'Identifier', # Not sure if this is best mapping. Maybe WebStatement.
+                       'label' => 'Label',
                        'creation time' => 'DateTimeDigitized',
                        /* Other potentially useful things - Document */
                );
@@ -206,7 +208,6 @@ class PNGMetadataExtractor {
                                                                fseek( $fh, self::$CRC_size, SEEK_CUR );
                                                                continue;
                                                        }
-
                                                } else {
                                                        wfDebug( __METHOD__ . ' Skipping compressed png iTXt chunk due to lack of zlib,'
                                                                . " or potentially invalid compression method\n" );
@@ -217,12 +218,10 @@ class PNGMetadataExtractor {
                                        $finalKeyword = self::$text_chunks[$items[1]];
                                        $text[$finalKeyword][$items[3]] = $items[5];
                                        $text[$finalKeyword]['_type'] = 'lang';
-
                                } else {
                                        // Error reading iTXt chunk
                                        throw new Exception( __METHOD__ . ": Read error on iTXt chunk" );
                                }
-
                        } elseif ( $chunk_type == 'tEXt' ) {
                                $buf = self::read( $fh, $chunk_size );
 
@@ -238,7 +237,7 @@ class PNGMetadataExtractor {
 
                                // Theoretically should be case-sensitive, but in practise...
                                $keyword = strtolower( $keyword );
-                               if ( !isset( self::$text_chunks[ $keyword ] ) ) {
+                               if ( !isset( self::$text_chunks[$keyword] ) ) {
                                        // Don't recognize chunk, so skip.
                                        fseek( $fh, self::$CRC_size, SEEK_CUR );
                                        continue;
@@ -254,7 +253,6 @@ class PNGMetadataExtractor {
                                $finalKeyword = self::$text_chunks[$keyword];
                                $text[$finalKeyword]['x-default'] = $content;
                                $text[$finalKeyword]['_type'] = 'lang';
-
                        } elseif ( $chunk_type == 'zTXt' ) {
                                if ( function_exists( 'gzuncompress' ) ) {
                                        $buf = self::read( $fh, $chunk_size );
@@ -271,7 +269,7 @@ class PNGMetadataExtractor {
                                        // Theoretically should be case-sensitive, but in practise...
                                        $keyword = strtolower( $keyword );
 
-                                       if ( !isset( self::$text_chunks[ $keyword ] ) ) {
+                                       if ( !isset( self::$text_chunks[$keyword] ) ) {
                                                // Don't recognize chunk, so skip.
                                                fseek( $fh, self::$CRC_size, SEEK_CUR );
                                                continue;
@@ -306,7 +304,6 @@ class PNGMetadataExtractor {
                                        $finalKeyword = self::$text_chunks[$keyword];
                                        $text[$finalKeyword]['x-default'] = $content;
                                        $text[$finalKeyword]['_type'] = 'lang';
-
                                } else {
                                        wfDebug( __METHOD__ . " Cannot decompress zTXt chunk due to lack of zlib. Skipping.\n" );
                                        fseek( $fh, $chunk_size, SEEK_CUR );
@@ -332,7 +329,6 @@ class PNGMetadataExtractor {
                                if ( $exifTime ) {
                                        $text['DateTime'] = $exifTime;
                                }
-
                        } elseif ( $chunk_type == 'pHYs' ) {
                                // how big pixels are (dots per meter).
                                if ( $chunk_size !== 9 ) {
@@ -359,7 +355,6 @@ class PNGMetadataExtractor {
                                                // 3 = dots per cm (from Exif).
                                        }
                                }
-
                        } elseif ( $chunk_type == "IEND" ) {
                                break;
                        } else {
@@ -399,6 +394,7 @@ class PNGMetadataExtractor {
                                }
                        }
                }
+
                return array(
                        'frameCount' => $frameCount,
                        'loopCount' => $loopCount,
@@ -407,8 +403,8 @@ class PNGMetadataExtractor {
                        'bitDepth' => $bitDepth,
                        'colorType' => $colorType,
                );
-
        }
+
        /**
         * Read a chunk, checking to make sure its not too big.
         *
@@ -422,6 +418,7 @@ class PNGMetadataExtractor {
                        throw new Exception( __METHOD__ . ': Chunk size of ' . $size .
                                ' too big. Max size is: ' . self::MAX_CHUNK_SIZE );
                }
+
                return fread( $fh, $size );
        }
 }
index d6f8483..d06acd8 100644 (file)
@@ -45,6 +45,7 @@ class SvgHandler extends ImageHandler {
                global $wgSVGConverters, $wgSVGConverter;
                if ( !isset( $wgSVGConverters[$wgSVGConverter] ) ) {
                        wfDebug( "\$wgSVGConverter is invalid, disabling SVG rendering.\n" );
+
                        return false;
                } else {
                        return true;
@@ -72,6 +73,7 @@ class SvgHandler extends ImageHandler {
                                return $metadata['animated'];
                        }
                }
+
                return false;
        }
 
@@ -108,6 +110,7 @@ class SvgHandler extends ImageHandler {
                                $params['physicalHeight'] = $wgSVGMaxSize;
                        }
                }
+
                return true;
        }
 
@@ -136,6 +139,7 @@ class SvgHandler extends ImageHandler {
                $metadata = $this->unpackMetadata( $image->getMetadata() );
                if ( isset( $metadata['error'] ) ) { // sanity check
                        $err = wfMessage( 'svg-long-error', $metadata['error']['message'] )->text();
+
                        return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $err );
                }
 
@@ -205,9 +209,11 @@ class SvgHandler extends ImageHandler {
                $removed = $this->removeBadFile( $dstPath, $retval );
                if ( $retval != 0 || $removed ) {
                        wfDebugLog( 'thumbnail', sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
-                                       wfHostname(), $retval, trim( $err ), $cmd ) );
+                               wfHostname(), $retval, trim( $err ), $cmd ) );
+
                        return new MediaTransformError( 'thumbnail_error', $width, $height, $err );
                }
+
                return true;
        }
 
@@ -239,7 +245,7 @@ class SvgHandler extends ImageHandler {
 
                if ( isset( $metadata['width'] ) && isset( $metadata['height'] ) ) {
                        return array( $metadata['width'], $metadata['height'], 'SVG',
-                                       "width=\"{$metadata['width']}\" height=\"{$metadata['height']}\"" );
+                               "width=\"{$metadata['width']}\" height=\"{$metadata['height']}\"" );
                } else { // error
                        return array( 0, 0, 'SVG', "width=\"0\" height=\"0\"" );
                }
@@ -291,6 +297,7 @@ class SvgHandler extends ImageHandler {
                        );
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
                }
+
                return serialize( $metadata );
        }
 
@@ -318,11 +325,13 @@ class SvgHandler extends ImageHandler {
                        // Old but compatible
                        return self::METADATA_COMPATIBLE;
                }
+
                return self::METADATA_GOOD;
        }
 
        function visibleMetadataFields() {
                $fields = array( 'objectname', 'imagedescription' );
+
                return $fields;
        }
 
@@ -369,6 +378,7 @@ class SvgHandler extends ImageHandler {
                                $value
                        );
                }
+
                return $showMeta ? $result : false;
        }
 
@@ -385,10 +395,13 @@ class SvgHandler extends ImageHandler {
                        // Validate $code
                        if ( !Language::isValidBuiltinCode( $value ) ) {
                                wfDebug( "Invalid user language code\n" );
+
                                return false;
                        }
+
                        return true;
                }
+
                // Only lang, width and height are acceptable keys
                return false;
        }
@@ -406,6 +419,7 @@ class SvgHandler extends ImageHandler {
                if ( !isset( $params['width'] ) ) {
                        return false;
                }
+
                return "$lang{$params['width']}px";
        }
 
@@ -457,6 +471,7 @@ class SvgHandler extends ImageHandler {
                                $stdMetadata[$tag] = $value;
                        }
                }
+
                return $stdMetadata;
        }
 }
index 2e33bb9..15cf82d 100644 (file)
@@ -31,6 +31,7 @@
 class SVGMetadataExtractor {
        static function getMetadata( $filename ) {
                $svg = new SVGReader( $filename );
+
                return $svg->getMetadata();
        }
 }
@@ -44,8 +45,10 @@ class SVGReader {
        const NS_SVG = 'http://www.w3.org/2000/svg';
 
        private $reader = null;
+
        private $mDebug = false;
-       private $metadata = Array();
+
+       private $metadata = array();
 
        /**
         * Constructor
@@ -238,7 +241,8 @@ class SVGReader {
                $keepReading = $this->reader->read();
                while ( $keepReading ) {
                        if ( $this->reader->localName == $name && $this->reader->depth <= $exitDepth
-                               && $this->reader->nodeType == XmlReader::END_ELEMENT ) {
+                               && $this->reader->nodeType == XmlReader::END_ELEMENT
+                       ) {
                                break;
                        } elseif ( $this->reader->namespaceURI == self::NS_SVG && $this->reader->nodeType == XmlReader::ELEMENT ) {
                                switch ( $this->reader->localName ) {
@@ -333,7 +337,7 @@ class SVGReader {
         * http://www.w3.org/TR/SVG11/coords.html#UnitIdentifiers
         *
         * @param string $length CSS/SVG length.
-        * @param $viewportSize: Float optional scale for percentage units...
+        * @param $viewportSize : Float optional scale for percentage units...
         * @return float: length in pixels
         */
        static function scaleSVGUnit( $length, $viewportSize = 512 ) {
@@ -347,7 +351,7 @@ class SVGReader {
                        'em' => 16.0, // fake it?
                        'ex' => 12.0, // fake it?
                        '' => 1.0, // "User units" pixels by default
-                       );
+               );
                $matches = array();
                if ( preg_match( '/^\s*(\d+(?:\.\d+)?)(em|ex|px|pt|pc|cm|mm|in|%|)\s*$/', $length, $matches ) ) {
                        $length = floatval( $matches[1] );
index 55acb12..dda8265 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class TiffHandler extends ExifBitmapHandler {
-
        /**
         * Conversion to PNG for inline display can be disabled here...
         * Note scaling should work with ImageMagick, but may not with GD scaling.
@@ -42,6 +41,7 @@ class TiffHandler extends ExifBitmapHandler {
         */
        function canRender( $file ) {
                global $wgTiffThumbnailType;
+
                return (bool)$wgTiffThumbnailType
                        || $file->getRepo() instanceof ForeignAPIRepo;
        }
@@ -66,6 +66,7 @@ class TiffHandler extends ExifBitmapHandler {
         */
        function getThumbType( $ext, $mime, $params = null ) {
                global $wgTiffThumbnailType;
+
                return $wgTiffThumbnailType;
        }
 
@@ -85,12 +86,13 @@ class TiffHandler extends ExifBitmapHandler {
                                        throw new MWException( 'Metadata array is not an array' );
                                }
                                $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+
                                return serialize( $meta );
-                       }
-                       catch ( MWException $e ) {
+                       } catch ( MWException $e ) {
                                // BitmapMetadataHandler throws an exception in certain exceptional
                                // cases like if file does not exist.
                                wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
                                return ExifBitmapHandler::BROKEN_FILE;
                        }
                } else {
index e77d384..abf1f36 100644 (file)
@@ -33,7 +33,6 @@
  * @ingroup Media
  */
 class XCFHandler extends BitmapHandler {
-
        /**
         * @param $file
         * @return bool
@@ -103,12 +102,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;
@@ -117,6 +116,7 @@ class XCFHandler extends BitmapHandler {
                # Check values
                if ( $header['magic'] !== 'gimp xcf' ) {
                        wfDebug( __METHOD__ . " '$filename' has invalid magic signature.\n" );
+
                        return false;
                }
                # TODO: we might want to check for sane values of width and height
@@ -128,13 +128,13 @@ class XCFHandler extends BitmapHandler {
                $metadata = array();
                $metadata[0] = $header['width'];
                $metadata[1] = $header['height'];
-               $metadata[2] = null;   # IMAGETYPE constant, none exist for XCF.
+               $metadata[2] = null; # IMAGETYPE constant, none exist for XCF.
                $metadata[3] = sprintf(
                        'height="%s" width="%s"', $header['height'], $header['width']
                );
                $metadata['mime'] = 'image/x-xcf';
                $metadata['channels'] = null;
-               $metadata['bits'] = 8;  # Always 8-bits per color
+               $metadata['bits'] = 8; # Always 8-bits per color
 
                assert( '7 == count($metadata); # return array must contains 7 elements just like getimagesize() return' );
 
index 7eb3d19..36e967e 100644 (file)
  *
  * The public methods one would call in this class are
  * - parse( $content )
- *     Reads in xmp content.
- *     Can potentially be called multiple times with partial data each time.
+ *    Reads in xmp content.
+ *    Can potentially be called multiple times with partial data each time.
  * - parseExtended( $content )
- *     Reads XMPExtended blocks (jpeg files only).
+ *    Reads XMPExtended blocks (jpeg files only).
  * - getResults
- *     Outputs a results array.
+ *    Outputs a results array.
  *
  * Note XMP kind of looks like rdf. They are not the same thing - XMP is
  * encoded as a specific subset of rdf. This class can read XMP. It cannot
  *
  */
 class XMPReader {
+       private $curItem = array(); // array to hold the current element (and previous element, and so on)
 
-       private $curItem = array();        // array to hold the current element (and previous element, and so on)
-       private $ancestorStruct = false;   // the structure name when processing nested structures.
-       private $charContent = false;      // temporary holder for character data that appears in xmp doc.
-       private $mode = array();           // stores the state the xmpreader is in (see MODE_FOO constants)
-       private $results = array();        // array to hold results
-       private $processingArray = false;  // if we're doing a seq or bag.
-       private $itemLang = false;         // used for lang alts only
+       private $ancestorStruct = false; // the structure name when processing nested structures.
+
+       private $charContent = false; // temporary holder for character data that appears in xmp doc.
+
+       private $mode = array(); // stores the state the xmpreader is in (see MODE_FOO constants)
+
+       private $results = array(); // array to hold results
+
+       private $processingArray = false; // if we're doing a seq or bag.
+
+       private $itemLang = false; // used for lang alts only
 
        private $xmlParser;
+
        private $charset = false;
+
        private $extendedXMPOffset = 0;
 
        protected $items;
@@ -105,8 +112,8 @@ class XMPReader {
                $this->items = XMPInfo::getItems();
 
                $this->resetXMLParser();
-
        }
+
        /**
         * Main use is if a single item has multiple xmp documents describing it.
         * For example in jpeg's with extendedXMP
@@ -142,7 +149,7 @@ class XMPReader {
         * the array, and transform any metadata that is special-cased.
         *
         * @return Array array of results as an array of arrays suitable for
-        *      FormatMetadata::getFormattedData().
+        *    FormatMetadata::getFormattedData().
         */
        public function getResults() {
                // xmp-special is for metadata that affects how stuff
@@ -155,7 +162,7 @@ class XMPReader {
 
                $data = $this->results;
 
-               wfRunHooks( 'XMPGetResults', Array( &$data ) );
+               wfRunHooks( 'XMPGetResults', array( &$data ) );
 
                if ( isset( $data['xmp-special']['AuthorsPosition'] )
                        && is_string( $data['xmp-special']['AuthorsPosition'] )
@@ -301,8 +308,10 @@ class XMPReader {
                } catch ( MWException $e ) {
                        wfDebugLog( 'XMP', 'XMP parse error: ' . $e );
                        $this->results = array();
+
                        return false;
                }
+
                return true;
        }
 
@@ -318,14 +327,17 @@ class XMPReader {
                // or programs that make such files..
                $guid = substr( $content, 0, 32 );
                if ( !isset( $this->results['xmp-special']['HasExtendedXMP'] )
-                       || $this->results['xmp-special']['HasExtendedXMP'] !== $guid ) {
+                       || $this->results['xmp-special']['HasExtendedXMP'] !== $guid
+               ) {
                        wfDebugLog( 'XMP', __METHOD__ . " Ignoring XMPExtended block due to wrong guid (guid= '$guid')" );
+
                        return false;
                }
                $len = unpack( 'Nlength/Noffset', substr( $content, 32, 8 ) );
 
                if ( !$len || $len['length'] < 4 || $len['offset'] < 0 || $len['offset'] > $len['length'] ) {
                        wfDebugLog( 'XMP', __METHOD__ . 'Error reading extended XMP block, invalid length or offset.' );
+
                        return false;
                }
 
@@ -341,6 +353,7 @@ class XMPReader {
                if ( $len['offset'] !== $this->extendedXMPOffset ) {
                        wfDebugLog( 'XMP', __METHOD__ . 'Ignoring XMPExtended block due to wrong order. (Offset was '
                                . $len['offset'] . ' but expected ' . $this->extendedXMPOffset . ')' );
+
                        return false;
                }
 
@@ -361,6 +374,7 @@ class XMPReader {
                }
 
                wfDebugLog( 'XMP', __METHOD__ . 'Parsing a XMPExtended block' );
+
                return $this->parse( $actualContent, $atEnd );
        }
 
@@ -407,7 +421,6 @@ class XMPReader {
                } else {
                        $this->charContent .= $data;
                }
-
        }
 
        /** When we hit a closing element in MODE_IGNORE
@@ -453,7 +466,6 @@ class XMPReader {
                }
                array_shift( $this->curItem );
                array_shift( $this->mode );
-
        }
 
        /**
@@ -499,7 +511,6 @@ class XMPReader {
                        if ( !isset( $this->results['xmp-' . $info['map_group']][$finalName] ) ) {
                                // This can happen if all the members of the struct failed validation.
                                wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> has no valid members." );
-
                        } elseif ( is_callable( $validate ) ) {
                                $val =& $this->results['xmp-' . $info['map_group']][$finalName];
                                call_user_func_array( $validate, array( $info, &$val, false ) );
@@ -552,6 +563,7 @@ class XMPReader {
 
                if ( !isset( $this->results['xmp-' . $info['map_group']][$finalName] ) ) {
                        wfDebugLog( 'XMP', __METHOD__ . " Empty compund element $finalName." );
+
                        return;
                }
 
@@ -564,7 +576,6 @@ class XMPReader {
                        if ( $info['mode'] === self::MODE_LANG ) {
                                $this->results['xmp-' . $info['map_group']][$finalName]['_type'] = 'lang';
                        }
-
                } else {
                        throw new MWException( __METHOD__ . " expected </rdf:seq> or </rdf:bag> but instead got $elm." );
                }
@@ -585,6 +596,7 @@ class XMPReader {
                if ( $elm === self::NS_RDF . ' value' ) {
                        list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
                        $this->saveValue( $ns, $tag, $this->charContent );
+
                        return;
                } else {
                        array_shift( $this->mode );
@@ -608,8 +620,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;
                }
@@ -626,6 +638,7 @@ class XMPReader {
                        // that forgets the namespace on some things.
                        // (Luckily they are unimportant things).
                        wfDebugLog( 'XMP', __METHOD__ . " Encountered </$elm> which has no namespace. Skipping." );
+
                        return;
                }
 
@@ -706,7 +719,6 @@ class XMPReader {
                } else {
                        throw new MWException( "Expected <rdf:Bag> but got $elm." );
                }
-
        }
 
        /**
@@ -727,7 +739,6 @@ class XMPReader {
                } else {
                        throw new MWException( "Expected <rdf:Seq> but got $elm." );
                }
-
        }
 
        /**
@@ -750,7 +761,6 @@ class XMPReader {
                } else {
                        throw new MWException( "Expected <rdf:Seq> but got $elm." );
                }
-
        }
 
        /**
@@ -784,15 +794,12 @@ class XMPReader {
                } elseif ( $elm === self::NS_RDF . ' value' ) {
                        // This should not be here.
                        throw new MWException( __METHOD__ . ' Encountered <rdf:value> where it was unexpected.' );
-
                } else {
                        // something else we don't recognize, like a qualifier maybe.
                        wfDebugLog( 'XMP', __METHOD__ . " Encountered element <$elm> where only expecting character data as value of " . $this->curItem[0] );
                        array_unshift( $this->mode, self::MODE_IGNORE );
                        array_unshift( $this->curItem, $elm );
-
                }
-
        }
 
        /**
@@ -846,6 +853,7 @@ class XMPReader {
 
                                        array_unshift( $this->mode, self::MODE_IGNORE );
                                        array_unshift( $this->curItem, $ns . ' ' . $tag );
+
                                        return;
                                }
                                $mode = $this->items[$ns][$tag]['mode'];
@@ -865,9 +873,9 @@ class XMPReader {
                                wfDebugLog( 'XMP', __METHOD__ . " Ignoring unrecognized element <$ns:$tag>." );
                                array_unshift( $this->mode, self::MODE_IGNORE );
                                array_unshift( $this->curItem, $ns . ' ' . $tag );
+
                                return;
                        }
-
                }
                // process attributes
                $this->doAttribs( $attribs );
@@ -897,8 +905,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
@@ -914,9 +922,9 @@ class XMPReader {
                        } else {
                                array_unshift( $this->mode, self::MODE_IGNORE );
                                array_unshift( $this->curItem, $elm );
+
                                return;
                        }
-
                }
 
                if ( $ns === self::NS_RDF && $tag === 'Description' ) {
@@ -965,7 +973,6 @@ class XMPReader {
                                ? $this->items[$curNS][$curTag]['map_name'] : $curTag;
 
                        $this->doAttribs( $attribs );
-
                } else {
                        // Normal BAG or SEQ containing simple values.
                        array_unshift( $this->mode, self::MODE_SIMPLE );
@@ -974,7 +981,6 @@ class XMPReader {
                        array_unshift( $this->curItem, $this->curItem[0] );
                        $this->processingArray = true;
                }
-
        }
 
        /**
@@ -996,8 +1002,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 +1032,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' ) {
@@ -1049,6 +1055,7 @@ class XMPReader {
                if ( strpos( $elm, ' ' ) === false ) {
                        // This probably shouldn't happen.
                        wfDebugLog( 'XMP', __METHOD__ . " Encountered <$elm> which has no namespace. Skipping." );
+
                        return;
                }
 
@@ -1119,8 +1126,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;
                }
@@ -1177,6 +1184,7 @@ class XMPReader {
                                // is to be consistent between here and validating structures.
                                if ( is_null( $val ) ) {
                                        wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> failed validation." );
+
                                        return;
                                }
                        } else {
index f0b2cb5..03d8505 100644 (file)
@@ -27,7 +27,6 @@
  * extract.
  */
 class XMPInfo {
-
        /** get the items array
         * @return Array XMP item configuration array.
         */
@@ -35,9 +34,10 @@ class XMPInfo {
                if ( !self::$ranHooks ) {
                        // This is for if someone makes a custom metadata extension.
                        // For example, a medical wiki might want to decode DICOM xmp properties.
-                       wfRunHooks( 'XMPGetInfo', Array( &self::$items ) );
+                       wfRunHooks( 'XMPGetInfo', array( &self::$items ) );
                        self::$ranHooks = true; // Only want to do this once.
                }
+
                return self::$items;
        }
 
@@ -57,9 +57,9 @@ class XMPInfo {
         *       * mode - What type of item (self::MODE_SIMPLE usually, see above for all values)
         *       * validate - method to validate input. Could also post-process the input. A string value is assumed to be a static method of XMPValidate. Can also take a array( 'className', 'methodName' ).
         *       * choices  - array of potential values (format of 'value' => true ). Only used with validateClosed
-        *      * rangeLow and rangeHigh - alternative to choices for numeric ranges. Again for validateClosed only.
+        *    * rangeLow and rangeHigh - alternative to choices for numeric ranges. Again for validateClosed only.
         *       * children - for MODE_STRUCT items, allowed children.
-        *      * structPart - Indicates that this element can only appear as a member of a structure.
+        *    * structPart - Indicates that this element can only appear as a member of a structure.
         *
         * currently this just has a bunch of exif values as this class is only half-done
         */
@@ -67,368 +67,368 @@ class XMPInfo {
                'http://ns.adobe.com/exif/1.0/' => array(
                        'ApertureValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'BrightnessValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'CompressedBitsPerPixel' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'DigitalZoomRatio' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ExposureBiasValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ExposureIndex' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ExposureTime' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FlashEnergy' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
                        'FNumber' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FocalLength' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FocalPlaneXResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FocalPlaneYResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSAltitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
                        'GPSDestBearing' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSDestDistance' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSDOP' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSImgDirection' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSSpeed' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSTrack' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
-                       'MaxApertureValue'  => array(
+                       'MaxApertureValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ShutterSpeedValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
-                       'SubjectDistance'   => array(
+                       'SubjectDistance' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        /* Flash */
-                       'Flash'             => array(
-                               'mode'      => XMPReader::MODE_STRUCT,
-                               'children'  => array(
-                                       'Fired'      => true,
-                                       'Function'   => true,
-                                       'Mode'       => true,
+                       'Flash' => array(
+                               'mode' => XMPReader::MODE_STRUCT,
+                               'children' => array(
+                                       'Fired' => true,
+                                       'Function' => true,
+                                       'Mode' => true,
                                        'RedEyeMode' => true,
-                                       'Return'     => true,
+                                       'Return' => true,
                                ),
-                               'validate'  => 'validateFlash',
+                               'validate' => 'validateFlash',
                                'map_group' => 'exif',
                        ),
-                       'Fired'             => array(
+                       'Fired' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateBoolean',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'validate' => 'validateBoolean',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
-                       'Function'          => array(
+                       'Function' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateBoolean',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'validate' => 'validateBoolean',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
-                       'Mode'              => array(
+                       'Mode' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateClosed',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'choices'   => array( '0' => true, '1' => true,
-                                               '2' => true, '3' => true ),
-                               'structPart'=> true,
+                               'validate' => 'validateClosed',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'choices' => array( '0' => true, '1' => true,
+                                       '2' => true, '3' => true ),
+                               'structPart' => true,
                        ),
-                       'Return'            => array(
+                       'Return' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateClosed',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'choices'   => array( '0' => true,
-                                               '2' => true, '3' => true ),
-                               'structPart'=> true,
+                               'validate' => 'validateClosed',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'choices' => array( '0' => true,
+                                       '2' => true, '3' => true ),
+                               'structPart' => true,
                        ),
-                       'RedEyeMode'        => array(
+                       'RedEyeMode' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateBoolean',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'validate' => 'validateBoolean',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        /* End Flash */
-                       'ISOSpeedRatings'   => array(
+                       'ISOSpeedRatings' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger'
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger'
                        ),
                        /* end rational things */
-                       'ColorSpace'   => array(
+                       'ColorSpace' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '65535' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '65535' => true ),
                        ),
-                       'ComponentsConfiguration'   => array(
+                       'ComponentsConfiguration' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '2' => true, '3' => true, '4' => true,
-                                               '5' => true, '6' => true )
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '2' => true, '3' => true, '4' => true,
+                                       '5' => true, '6' => true )
                        ),
-                       'Contrast'          => array(
+                       'Contrast' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true, '2' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true, '2' => true )
                        ),
-                       'CustomRendered'    => array(
+                       'CustomRendered' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true )
                        ),
-                       'DateTimeOriginal'  => array(
+                       'DateTimeOriginal' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
                        'DateTimeDigitized' => array( /* xmp:CreateDate */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
                        /* todo: there might be interesting information in
                         * exif:DeviceSettingDescription, but need to find an
                         * example
                         */
-                       'ExifVersion'       => array(
+                       'ExifVersion' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'ExposureMode'      => array(
+                       'ExposureMode' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 2,
                        ),
-                       'ExposureProgram'   => array(
+                       'ExposureProgram' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 8,
                        ),
-                       'FileSource'        => array(
+                       'FileSource' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '3' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '3' => true )
                        ),
-                       'FlashpixVersion'   => array(
+                       'FlashpixVersion' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'FocalLengthIn35mmFilm' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
                        'FocalPlaneResolutionUnit' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '3' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '3' => true ),
                        ),
-                       'GainControl'       => array(
+                       'GainControl' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 4,
                        ),
                        /* this value is post-processed out later */
-                       'GPSAltitudeRef'    => array(
+                       'GPSAltitudeRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true ),
                        ),
                        'GPSAreaInformation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'GPSDestBearingRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'T' => true, 'M' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'T' => true, 'M' => true ),
                        ),
                        'GPSDestDistanceRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'K' => true, 'M' => true,
-                                               'N' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'K' => true, 'M' => true,
+                                       'N' => true ),
                        ),
-                       'GPSDestLatitude'   => array(
+                       'GPSDestLatitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSDestLongitude'  => array(
+                       'GPSDestLongitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSDifferential'   => array(
+                       'GPSDifferential' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true ),
                        ),
                        'GPSImgDirectionRef' => array(
-                               'map_group'  => 'exif',
-                               'mode'       => XMPReader::MODE_SIMPLE,
-                               'validate'   => 'validateClosed',
-                               'choices'    => array( 'T' => true, 'M' => true ),
+                               'map_group' => 'exif',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'T' => true, 'M' => true ),
                        ),
-                       'GPSLatitude'       => array(
+                       'GPSLatitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSLongitude'      => array(
+                       'GPSLongitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSMapDatum'       => array(
+                       'GPSMapDatum' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'GPSMeasureMode'    => array(
+                       'GPSMeasureMode' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '3' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '3' => true )
                        ),
                        'GPSProcessingMethod' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'GPSSatellites'     => array(
+                       'GPSSatellites' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'GPSSpeedRef'       => array(
+                       'GPSSpeedRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'K' => true, 'M' => true,
-                                               'N' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'K' => true, 'M' => true,
+                                       'N' => true ),
                        ),
-                       'GPSStatus'         => array(
+                       'GPSStatus' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'A' => true, 'V' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'A' => true, 'V' => true )
                        ),
-                       'GPSTimeStamp'      => array(
+                       'GPSTimeStamp' => array(
                                'map_group' => 'exif',
                                // Note: in exif, GPSDateStamp does not include
                                // the time, where here it does.
-                               'map_name'  => 'GPSDateStamp',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'map_name' => 'GPSDateStamp',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
-                       'GPSTrackRef'       => array(
+                       'GPSTrackRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'T' => true, 'M' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'T' => true, 'M' => true )
                        ),
-                       'GPSVersionID'      => array(
+                       'GPSVersionID' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'ImageUniqueID'     => array(
+                       'ImageUniqueID' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'LightSource'       => array(
+                       'LightSource' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
                                /* can't use a range, as it skips... */
-                               'choices'   => array( '0' => true, '1' => true,
+                               'choices' => array( '0' => true, '1' => true,
                                        '2' => true, '3' => true, '4' => true,
                                        '9' => true, '10' => true, '11' => true,
                                        '12' => true, '13' => true,
@@ -440,217 +440,217 @@ class XMPInfo {
                                        '255' => true,
                                ),
                        ),
-                       'MeteringMode'      => array(
+                       'MeteringMode' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 6,
-                               'choices'   => array( '255' => true ),
+                               'choices' => array( '255' => true ),
                        ),
                        /* Pixel(X|Y)Dimension are rather useless, but for
                         * completeness since we do it with exif.
                         */
-                       'PixelXDimension'   => array(
+                       'PixelXDimension' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'PixelYDimension'   => array(
+                       'PixelYDimension' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'Saturation'        => array(
+                       'Saturation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 2,
                        ),
-                       'SceneCaptureType'  => array(
+                       'SceneCaptureType' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 3,
                        ),
-                       'SceneType'         => array(
+                       'SceneType' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true ),
                        ),
                        // Note, 6 is not valid SensingMethod.
-                       'SensingMethod'     => array(
+                       'SensingMethod' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 1,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 1,
                                'rangeHigh' => 5,
-                               'choices'   => array( '7' => true, 8 => true ),
+                               'choices' => array( '7' => true, 8 => true ),
                        ),
-                       'Sharpness'         => array(
+                       'Sharpness' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 2,
                        ),
                        'SpectralSensitivity' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        // This tag should perhaps be displayed to user better.
-                       'SubjectArea'       => array(
+                       'SubjectArea' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger',
                        ),
                        'SubjectDistanceRange' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 3,
                        ),
-                       'SubjectLocation'   => array(
+                       'SubjectLocation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger',
                        ),
-                       'UserComment'       => array(
+                       'UserComment' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'mode' => XMPReader::MODE_LANG,
                        ),
-                       'WhiteBalance'      => array(
+                       'WhiteBalance' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true )
                        ),
                ),
                'http://ns.adobe.com/tiff/1.0/' => array(
-                       'Artist'            => array(
+                       'Artist' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'BitsPerSample'     => array(
+                       'BitsPerSample' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger',
                        ),
-                       'Compression'       => array(
+                       'Compression' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '6' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '6' => true ),
                        ),
                        /* this prop should not be used in XMP. dc:rights is the correct prop */
-                       'Copyright'         => array(
+                       'Copyright' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'mode' => XMPReader::MODE_LANG,
                        ),
-                       'DateTime'          => array( /* proper prop is xmp:ModifyDate */
+                       'DateTime' => array( /* proper prop is xmp:ModifyDate */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
-                       'ImageDescription'  => array( /* proper one is dc:description */
+                       'ImageDescription' => array( /* proper one is dc:description */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'mode' => XMPReader::MODE_LANG,
                        ),
-                       'ImageLength'       => array(
+                       'ImageLength' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'ImageWidth'        => array(
+                       'ImageWidth' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'Make'              => array(
+                       'Make' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'Model'             => array(
+                       'Model' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        /**** Do not extract this property
                         * It interferes with auto exif rotation.
                         * 'Orientation'       => array(
-                        *      'map_group' => 'exif',
-                        *      'mode'      => XMPReader::MODE_SIMPLE,
-                        *      'validate'  => 'validateClosed',
-                        *      'choices'   => array( '1' => true, '2' => true, '3' => true, '4' => true, 5 => true,
-                        *                      '6' => true, '7' => true, '8' => true ),
+                        *    'map_group' => 'exif',
+                        *    'mode'      => XMPReader::MODE_SIMPLE,
+                        *    'validate'  => 'validateClosed',
+                        *    'choices'   => array( '1' => true, '2' => true, '3' => true, '4' => true, 5 => true,
+                        *            '6' => true, '7' => true, '8' => true ),
                         *),
                         ******/
                        'PhotometricInterpretation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '6' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '6' => true ),
                        ),
                        'PlanerConfiguration' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '2' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '2' => true ),
                        ),
                        'PrimaryChromaticities' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
                        'ReferenceBlackWhite' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
-                       'ResolutionUnit'    => array(
+                       'ResolutionUnit' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '3' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '3' => true ),
                        ),
-                       'SamplesPerPixel'   => array(
+                       'SamplesPerPixel' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'Software'          => array( /* see xmp:CreatorTool */
+                       'Software' => array( /* see xmp:CreatorTool */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        /* ignore TransferFunction */
-                       'WhitePoint'        => array(
+                       'WhitePoint' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
-                       'XResolution'       => array(
+                       'XResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
-                       'YResolution'       => array(
+                       'YResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
                        'YCbCrCoefficients' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
-                       'YCbCrPositioning'  => array(
+                       'YCbCrPositioning' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '2' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '2' => true ),
                        ),
                        /********
                         * Disable extracting this property (bug 31944)
@@ -663,170 +663,170 @@ class XMPInfo {
                         * just disable this prop for now, until such
                         * XMPReader is more graceful (bug 32172)
                         * 'YCbCrSubSampling'  => array(
-                        *      'map_group' => 'exif',
-                        *      'mode'      => XMPReader::MODE_SEQ,
-                        *      'validate'  => 'validateClosed',
-                        *      'choices'   => array( '1' => true, '2' => true ),
+                        *    'map_group' => 'exif',
+                        *    'mode'      => XMPReader::MODE_SEQ,
+                        *    'validate'  => 'validateClosed',
+                        *    'choices'   => array( '1' => true, '2' => true ),
                         * ),
                         */
                ),
                'http://ns.adobe.com/exif/1.0/aux/' => array(
-                       'Lens'              => array(
+                       'Lens' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'SerialNumber'      => array(
+                       'SerialNumber' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'OwnerName'         => array(
+                       'OwnerName' => array(
                                'map_group' => 'exif',
-                               'map_name'  => 'CameraOwnerName',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CameraOwnerName',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                ),
                'http://purl.org/dc/elements/1.1/' => array(
-                       'title'             => array(
+                       'title' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'ObjectName',
-                               'mode'      => XMPReader::MODE_LANG
+                               'map_name' => 'ObjectName',
+                               'mode' => XMPReader::MODE_LANG
                        ),
-                       'description'       => array(
+                       'description' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'ImageDescription',
-                               'mode'      => XMPReader::MODE_LANG
+                               'map_name' => 'ImageDescription',
+                               'mode' => XMPReader::MODE_LANG
                        ),
-                       'contributor'       => array(
+                       'contributor' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-contributor',
-                               'mode'      => XMPReader::MODE_BAG
+                               'map_name' => 'dc-contributor',
+                               'mode' => XMPReader::MODE_BAG
                        ),
-                       'coverage'          => array(
+                       'coverage' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-coverage',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'dc-coverage',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'creator'           => array(
+                       'creator' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Artist', //map with exif Artist, iptc byline (2:80)
-                               'mode'      => XMPReader::MODE_SEQ,
+                               'map_name' => 'Artist', //map with exif Artist, iptc byline (2:80)
+                               'mode' => XMPReader::MODE_SEQ,
                        ),
-                       'date'              => array(
+                       'date' => array(
                                'map_group' => 'general',
                                // Note, not mapped with other date properties, as this type of date is
                                // non-specific: "A point or period of time associated with an event in
                                //  the lifecycle of the resource"
-                               'map_name'  => 'dc-date',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateDate',
+                               'map_name' => 'dc-date',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateDate',
                        ),
                        /* Do not extract dc:format, as we've got better ways to determine mimetype */
-                       'identifier'        => array(
+                       'identifier' => array(
                                'map_group' => 'deprecated',
-                               'map_name'  => 'Identifier',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'Identifier',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'language'          => array(
+                       'language' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'LanguageCode', /* mapped with iptc 2:135 */
-                               'mode'      => XMPReader::MODE_BAG,
-                               'validate'  => 'validateLangCode',
+                               'map_name' => 'LanguageCode', /* mapped with iptc 2:135 */
+                               'mode' => XMPReader::MODE_BAG,
+                               'validate' => 'validateLangCode',
                        ),
-                       'publisher'         => array(
+                       'publisher' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-publisher',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'dc-publisher',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        // for related images/resources
-                       'relation'          => array(
+                       'relation' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-relation',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'dc-relation',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
-                       'rights'            => array(
+                       'rights' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Copyright',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'map_name' => 'Copyright',
+                               'mode' => XMPReader::MODE_LANG,
                        ),
                        // Note: source is not mapped with iptc source, since iptc
                        // source describes the source of the image in terms of a person
                        // who provided the image, where this is to describe an image that the
                        // current one is based on.
-                       'source'            => array(
+                       'source' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-source',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'dc-source',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'subject'           => array(
+                       'subject' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Keywords', /* maps to iptc 2:25 */
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'Keywords', /* maps to iptc 2:25 */
+                               'mode' => XMPReader::MODE_BAG,
                        ),
-                       'type'              => array(
+                       'type' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-type',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'dc-type',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                ),
                'http://ns.adobe.com/xap/1.0/' => array(
                        'CreateDate' => array(
                                'map_group' => 'general',
                                'map_name' => 'DateTimeDigitized',
-                               'mode'     => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                                'validate' => 'validateDate',
                        ),
                        'CreatorTool' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Software',
-                               'mode'      => XMPReader::MODE_SIMPLE
+                               'map_name' => 'Software',
+                               'mode' => XMPReader::MODE_SIMPLE
                        ),
                        'Identifier' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        'Label' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'ModifyDate' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'DateTime',
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'DateTime',
+                               'validate' => 'validateDate',
                        ),
                        'MetadataDate' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                                // map_name to be consistent with other date names.
-                               'map_name'  => 'DateTimeMetadata',
-                               'validate'  => 'validateDate',
+                               'map_name' => 'DateTimeMetadata',
+                               'validate' => 'validateDate',
                        ),
                        'Nickname' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Rating' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRating',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRating',
                        ),
                ),
                'http://ns.adobe.com/xap/1.0/rights/' => array(
                        'Certificate' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'RightsCertificate',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'RightsCertificate',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Marked' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Copyrighted',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateBoolean',
+                               'map_name' => 'Copyrighted',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateBoolean',
                        ),
                        'Owner' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'CopyrightOwner',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'CopyrightOwner',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        // this seems similar to dc:rights.
                        'UsageTerms' => array(
@@ -844,7 +844,7 @@ class XMPInfo {
                        // as well do this too.
                        'OriginalDocumentID' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        // It might also be useful to do xmpMM:LastURL
                        // and xmpMM:DerivedFrom as you can potentially,
@@ -855,31 +855,31 @@ class XMPInfo {
                ),
                'http://creativecommons.org/ns#' => array(
                        'license' => array(
-                               'map_name'  => 'LicenseUrl',
+                               'map_name' => 'LicenseUrl',
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'morePermissions' => array(
-                               'map_name'  => 'MorePermissionsUrl',
+                               'map_name' => 'MorePermissionsUrl',
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'attributionURL' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'AttributionUrl',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'AttributionUrl',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'attributionName' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'PreferredAttributionName',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'PreferredAttributionName',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                ),
                //Note, this property affects how jpeg metadata is extracted.
                'http://ns.adobe.com/xmp/note/' => array(
                        'HasExtendedXMP' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                ),
                /* Note, in iptc schemas, the legacy properties are denoted
@@ -890,41 +890,41 @@ class XMPInfo {
                'http://ns.adobe.com/photoshop/1.0/' => array(
                        'City' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'CityDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CityDest',
                        ),
                        'Country' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'CountryDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CountryDest',
                        ),
                        'State' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'ProvinceOrStateDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'ProvinceOrStateDest',
                        ),
                        'DateCreated' => array(
                                'map_group' => 'deprecated',
                                // marking as deprecated as the xmp prop preferred
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'DateTimeOriginal',
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'DateTimeOriginal',
+                               'validate' => 'validateDate',
                                // note this prop is an XMP, not IPTC date
                        ),
                        'CaptionWriter' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'Writer',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'Writer',
                        ),
                        'Instructions' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'SpecialInstructions',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'SpecialInstructions',
                        ),
                        'TransmissionReference' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'OriginalTransmissionRef',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'OriginalTransmissionRef',
                        ),
                        'AuthorsPosition' => array(
                                /* This corresponds with 2:85
@@ -932,46 +932,46 @@ class XMPInfo {
                                 * handled weirdly to correspond
                                 * with iptc/exif. */
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE
+                               'mode' => XMPReader::MODE_SIMPLE
                        ),
                        'Credit' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Source' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Urgency' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Category' => array(
                                // Note, this prop is deprecated, but in general
                                // group since it doesn't have a replacement.
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'iimCategory',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'iimCategory',
                        ),
                        'SupplementalCategories' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'map_name'  => 'iimSupplementalCategory',
+                               'mode' => XMPReader::MODE_BAG,
+                               'map_name' => 'iimSupplementalCategory',
                        ),
                        'Headline' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE
+                               'mode' => XMPReader::MODE_SIMPLE
                        ),
                ),
                'http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/' => array(
                        'CountryCode' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'CountryCodeDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CountryCodeDest',
                        ),
                        'IntellectualGenre' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        // Note, this is a six digit code.
                        // See: http://cv.iptc.org/newscodes/scene/
@@ -979,9 +979,9 @@ class XMPInfo {
                        // we just show the number.
                        'Scene' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'validate'  => 'validateInteger',
-                               'map_name'  => 'SceneCode',
+                               'mode' => XMPReader::MODE_BAG,
+                               'validate' => 'validateInteger',
+                               'map_name' => 'SceneCode',
                        ),
                        /* Note: SubjectCode should be an 8 ascii digits.
                         * it is not really an integer (has leading 0's,
@@ -990,14 +990,14 @@ class XMPInfo {
                         */
                        'SubjectCode' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'map_name'  => 'SubjectNewsCode',
-                               'validate'  => 'validateInteger'
+                               'mode' => XMPReader::MODE_BAG,
+                               'map_name' => 'SubjectNewsCode',
+                               'validate' => 'validateInteger'
                        ),
                        'Location' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'SublocationDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'SublocationDest',
                        ),
                        'CreatorContactInfo' => array(
                                /* Note this maps to 2:118 in iim
@@ -1007,94 +1007,94 @@ class XMPInfo {
                                 * is more structured.
                                 */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_STRUCT,
-                               'map_name'  => 'Contact',
-                               'children'  => array(
+                               'mode' => XMPReader::MODE_STRUCT,
+                               'map_name' => 'Contact',
+                               'children' => array(
                                        'CiAdrExtadr' => true,
-                                       'CiAdrCity'   => true,
-                                       'CiAdrCtry'   => true,
+                                       'CiAdrCity' => true,
+                                       'CiAdrCtry' => true,
                                        'CiEmailWork' => true,
-                                       'CiTelWork'   => true,
-                                       'CiAdrPcode'  => true,
+                                       'CiTelWork' => true,
+                                       'CiAdrPcode' => true,
                                        'CiAdrRegion' => true,
-                                       'CiUrlWork'   => true,
+                                       'CiUrlWork' => true,
                                ),
                        ),
                        'CiAdrExtadr' => array( /* address */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrCity' => array( /* city */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrCtry' => array( /* country */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiEmailWork' => array( /* email (possibly separated by ',') */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiTelWork' => array( /* telephone */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrPcode' => array( /* postal code */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrRegion' => array( /* province/state */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiUrlWork' => array( /* url. Multiple may be separated by comma. */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        /* End contact info struct properties */
                ),
                'http://iptc.org/std/Iptc4xmpExt/2008-02-29/' => array(
                        'Event' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'OrganisationInImageName' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'map_name'  => 'OrganisationInImage'
+                               'mode' => XMPReader::MODE_BAG,
+                               'map_name' => 'OrganisationInImage'
                        ),
                        'PersonInImage' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        'MaxAvailHeight' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
-                               'map_name'  => 'OriginalImageHeight',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
+                               'map_name' => 'OriginalImageHeight',
                        ),
                        'MaxAvailWidth' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
-                               'map_name'  => 'OriginalImageWidth',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
+                               'map_name' => 'OriginalImageWidth',
                        ),
                        // LocationShown and LocationCreated are handled
                        // specially because they are hierarchical, but we
                        // also want to merge with the old non-hierarchical.
                        'LocationShown' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_BAGSTRUCT,
-                               'children'  => array(
+                               'mode' => XMPReader::MODE_BAGSTRUCT,
+                               'children' => array(
                                        'WorldRegion' => true,
                                        'CountryCode' => true, /* iso code */
                                        'CountryName' => true,
@@ -1105,8 +1105,8 @@ class XMPInfo {
                        ),
                        'LocationCreated' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_BAGSTRUCT,
-                               'children'  => array(
+                               'mode' => XMPReader::MODE_BAGSTRUCT,
+                               'children' => array(
                                        'WorldRegion' => true,
                                        'CountryCode' => true, /* iso code */
                                        'CountryName' => true,
@@ -1117,35 +1117,35 @@ class XMPInfo {
                        ),
                        'WorldRegion' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CountryCode' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CountryName' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
-                               'map_name'  => 'Country',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
+                               'map_name' => 'Country',
                        ),
                        'ProvinceState' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
-                               'map_name'  => 'ProvinceOrState',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
+                               'map_name' => 'ProvinceOrState',
                        ),
                        'City' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'Sublocation' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
 
                        /* Other props that might be interesting but
index 87f8abf..1055631 100644 (file)
@@ -28,7 +28,7 @@
  * Each of these functions take the same parameters
  * * an info array which is a subset of the XMPInfo::items array
  * * A value (passed as reference) to validate. This can be either a
- *     simple value or an array
+ *    simple value or an array
  * * A boolean to determine if this is validating a simple or complex values
  *
  * It should be noted that when an array is being validated, typically the validation
@@ -57,7 +57,6 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected True or False but got $val" );
                        $val = null;
                }
-
        }
 
        /**
@@ -76,7 +75,6 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected rational but got $val" );
                        $val = null;
                }
-
        }
 
        /**
@@ -99,6 +97,7 @@ class XMPValidate {
                ) {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected rating but got $val" );
                        $val = null;
+
                        return;
                } else {
                        $nVal = (float)$val;
@@ -108,11 +107,13 @@ class XMPValidate {
                                // as -1 is meant as a special reject rating.
                                wfDebugLog( 'XMP', __METHOD__ . " Rating too low, setting to -1 (Rejected)" );
                                $val = '-1';
+
                                return;
                        }
                        if ( $nVal > 5 ) {
                                wfDebugLog( 'XMP', __METHOD__ . " Rating too high, setting to 5" );
                                $val = '5';
+
                                return;
                        }
                }
@@ -134,7 +135,6 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected integer but got $val" );
                        $val = null;
                }
-
        }
 
        /**
@@ -219,7 +219,6 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected Lang code but got $val" );
                        $val = null;
                }
-
        }
 
        /**
@@ -235,8 +234,8 @@ class XMPValidate {
         *
         * @param array $info information about current property
         * @param &$val Mixed current value to validate. Converts to TS_EXIF as a side-effect.
-        *      in cases where there's only a partial date, it will give things like
-        *      2011:04.
+        *    in cases where there's only a partial date, it will give things like
+        *    2011:04.
         * @param $standalone Boolean if this is a simple property or array
         */
        public static function validateDate( $info, &$val, $standalone ) {
@@ -270,6 +269,7 @@ class XMPValidate {
                        if ( $res[1] === '0000' ) {
                                wfDebugLog( 'XMP', __METHOD__ . " Invalid date (year 0): $val" );
                                $val = null;
+
                                return;
                        }
 
@@ -282,6 +282,7 @@ class XMPValidate {
                                if ( isset( $res[3] ) ) {
                                        $val .= ':' . $res[3];
                                }
+
                                return;
                        }
 
@@ -292,6 +293,7 @@ class XMPValidate {
                                if ( isset( $res[6] ) && $res[6] !== '' ) {
                                        $val .= ':' . $res[6];
                                }
+
                                return;
                        }
 
@@ -320,7 +322,6 @@ class XMPValidate {
                                $val = substr( $val, 0, -3 );
                        }
                }
-
        }
 
        /** function to validate, and more importantly
@@ -352,6 +353,7 @@ class XMPValidate {
                                $coord = -$coord;
                        }
                        $val = $coord;
+
                        return;
                } elseif ( preg_match(
                        '/(\d{1,3}),(\d{1,2}(?:.\d*)?)([NWSE])/D',
@@ -363,12 +365,13 @@ class XMPValidate {
                                $coord = -$coord;
                        }
                        $val = $coord;
-                       return;
 
+                       return;
                } else {
                        wfDebugLog( 'XMP', __METHOD__
                                . " Expected GPSCoordinate, but got $val." );
                        $val = null;
+
                        return;
                }
        }
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 acf2703..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];
                        }
 
@@ -248,13 +248,13 @@ class SqlBagOStuff extends BagOStuff {
                                        $db = $this->getDB( $row->serverIndex );
                                        if ( $this->isExpired( $db, $row->exptime ) ) { // MISS
                                                $this->debug( "get: key has expired, deleting" );
-                                               $db->begin( __METHOD__ );
+                                               $db->commit( __METHOD__, 'flush' );
                                                # Put the expiry time in the WHERE condition to avoid deleting a
                                                # newly-inserted value
                                                $db->delete( $row->tableName,
                                                        array( 'keyname' => $key, 'exptime' => $row->exptime ),
                                                        __METHOD__ );
-                                               $db->commit( __METHOD__ );
+                                               $db->commit( __METHOD__, 'flush' );
                                                $values[$key] = false;
                                        } else { // HIT
                                                $values[$key] = $this->unserialize( $db->decodeBlob( $row->value ) );
@@ -296,7 +296,7 @@ class SqlBagOStuff extends BagOStuff {
 
                                $encExpiry = $db->timestamp( $exptime );
                        }
-                       $db->begin( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                        // (bug 24425) use a replace if the db supports it instead of
                        // delete/insert to avoid clashes with conflicting keynames
                        $db->replace(
@@ -307,7 +307,7 @@ class SqlBagOStuff extends BagOStuff {
                                        'value' => $db->encodeBlob( $this->serialize( $value ) ),
                                        'exptime' => $encExpiry
                                ), __METHOD__ );
-                       $db->commit( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                } catch ( DBError $e ) {
                        $this->handleWriteError( $e, $serverIndex );
                        return false;
@@ -341,7 +341,7 @@ class SqlBagOStuff extends BagOStuff {
                                }
                                $encExpiry = $db->timestamp( $exptime );
                        }
-                       $db->begin( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                        // (bug 24425) use a replace if the db supports it instead of
                        // delete/insert to avoid clashes with conflicting keynames
                        $db->update(
@@ -357,7 +357,7 @@ class SqlBagOStuff extends BagOStuff {
                                ),
                                __METHOD__
                        );
-                       $db->commit( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                } catch ( DBQueryError $e ) {
                        $this->handleWriteError( $e, $serverIndex );
 
@@ -376,12 +376,12 @@ class SqlBagOStuff extends BagOStuff {
                list( $serverIndex, $tableName ) = $this->getTableByKey( $key );
                try {
                        $db = $this->getDB( $serverIndex );
-                       $db->begin( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                        $db->delete(
                                $tableName,
                                array( 'keyname' => $key ),
                                __METHOD__ );
-                       $db->commit( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                } catch ( DBError $e ) {
                        $this->handleWriteError( $e, $serverIndex );
                        return false;
@@ -400,7 +400,7 @@ class SqlBagOStuff extends BagOStuff {
                try {
                        $db = $this->getDB( $serverIndex );
                        $step = intval( $step );
-                       $db->begin( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                        $row = $db->selectRow(
                                $tableName,
                                array( 'value', 'exptime' ),
@@ -409,14 +409,14 @@ class SqlBagOStuff extends BagOStuff {
                                array( 'FOR UPDATE' ) );
                        if ( $row === false ) {
                                // Missing
-                               $db->commit( __METHOD__ );
+                               $db->commit( __METHOD__, 'flush' );
 
                                return null;
                        }
                        $db->delete( $tableName, array( 'keyname' => $key ), __METHOD__ );
                        if ( $this->isExpired( $db, $row->exptime ) ) {
                                // Expired, do not reinsert
-                               $db->commit( __METHOD__ );
+                               $db->commit( __METHOD__, 'flush' );
 
                                return null;
                        }
@@ -434,7 +434,7 @@ class SqlBagOStuff extends BagOStuff {
                                // Race condition. See bug 28611
                                $newValue = null;
                        }
-                       $db->commit( __METHOD__ );
+                       $db->commit( __METHOD__, 'flush' );
                } catch ( DBError $e ) {
                        $this->handleWriteError( $e, $serverIndex );
                        return null;
@@ -524,7 +524,7 @@ class SqlBagOStuff extends BagOStuff {
                                                        $maxExpTime = $row->exptime;
                                                }
 
-                                               $db->begin( __METHOD__ );
+                                               $db->commit( __METHOD__, 'flush' );
                                                $db->delete(
                                                        $this->getTableNameByShard( $i ),
                                                        array(
@@ -533,7 +533,7 @@ class SqlBagOStuff extends BagOStuff {
                                                                'keyname' => $keys
                                                        ),
                                                        __METHOD__ );
-                                               $db->commit( __METHOD__ );
+                                               $db->commit( __METHOD__, 'flush' );
 
                                                if ( $progressCallback ) {
                                                        if ( intval( $totalSeconds ) === 0 ) {
@@ -566,9 +566,9 @@ class SqlBagOStuff extends BagOStuff {
                        try {
                                $db = $this->getDB( $serverIndex );
                                for ( $i = 0; $i < $this->shards; $i++ ) {
-                                       $db->begin( __METHOD__ );
+                                       $db->commit( __METHOD__, 'flush' );
                                        $db->delete( $this->getTableNameByShard( $i ), '*', __METHOD__ );
-                                       $db->commit( __METHOD__ );
+                                       $db->commit( __METHOD__, 'flush' );
                                }
                        } catch ( DBError $e ) {
                                $this->handleWriteError( $e, $serverIndex );
@@ -678,18 +678,18 @@ 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' );
                        }
 
                        for ( $i = 0; $i < $this->shards; $i++ ) {
-                               $db->begin( __METHOD__ );
+                               $db->commit( __METHOD__, 'flush' );
                                $db->query(
                                        'CREATE TABLE ' . $db->tableName( $this->getTableNameByShard( $i ) ) .
                                        ' LIKE ' . $db->tableName( 'objectcache' ),
                                        __METHOD__ );
-                               $db->commit( __METHOD__ );
+                               $db->commit( __METHOD__, 'flush' );
                        }
                }
        }
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 44c7458..f57d412 100644 (file)
@@ -427,7 +427,7 @@ class CoreParserFunctions {
         * @param mixed $value value to match
         * @return boolean true on successful match
         */
-       static private function matchAgainstMagicword( $magicword, $value ) {
+       private static function matchAgainstMagicword( $magicword, $value ) {
                if ( strval( $value ) === '' ) {
                        return false;
                }
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 e12f32d..8393216 100644 (file)
@@ -493,8 +493,6 @@ class ParserOptions {
         * so users sharign the options with vary for the same page share
         * the same cached data safely.
         *
-        * Replaces User::getPageRenderingHash()
-        *
         * Extensions which require it should install 'PageRenderingHash' hook,
         * which will give them a chance to modify this key based on their own
         * settings.
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 3138f48..6b2a874 100644 (file)
@@ -160,7 +160,6 @@ class Preprocessor_DOM implements Preprocessor {
                        $xml = $this->preprocessToXml( $text, $flags );
                }
 
-
                // Fail if the number of elements exceeds acceptable limits
                // Do not attempt to generate the DOM
                $this->parser->mGeneratedPPNodeCount += substr_count( $xml, '<' );
@@ -400,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 );
                                                        }
 
@@ -476,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>';
@@ -1142,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 418ab12..982c6ae 100644 (file)
@@ -23,7 +23,7 @@
 
 /**
  * ProfilerSimpleUDP class, that sends out messages for 'udpprofile' daemon
- * (the one from 
+ * (the one from
  *  http://git.wikimedia.org/tree/operations%2Fsoftware.git/master/udpprofile)
  * @ingroup Profiler
  */
index f4cb992..144ec95 100644 (file)
@@ -44,8 +44,8 @@ class JSONRCFeedFormatter implements RCFeedFormatter {
                                break;
 
                        case RC_NEW:
-                               $packet['length'] = array( 'old' => NULL, 'new' => $attrib['rc_new_len'] );
-                               $packet['revision'] = array( 'old' => NULL, 'new' => $attrib['rc_this_oldid'] );
+                               $packet['length'] = array( 'old' => null, 'new' => $attrib['rc_new_len'] );
+                               $packet['revision'] = array( 'old' => null, 'new' => $attrib['rc_this_oldid'] );
                                break;
 
                        case RC_LOG:
index 91acd11..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;
                }
@@ -738,7 +736,6 @@ class ResourceLoader {
                        $blobs = array();
                }
 
-
                foreach ( $missing as $name ) {
                        $states[$name] = 'missing';
                }
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 dbcb3d7..02e1dda 100644 (file)
@@ -201,7 +201,6 @@ class RevisionDeleter {
                return call_user_func( array( self::$allowedTypes[$typeName], 'suggestTarget' ), $target, $ids );
        }
 
-
        /**
         * Checks if a revision still exists in the revision table.
         * If it doesn't, returns the corresponding ar_timestamp field
index 8b96e6c..43a4d2c 100644 (file)
@@ -99,7 +99,7 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                                                'wpLoginToken' => $token,
                                                'wpPassword' => $request->getVal( 'wpNewPassword' ),
                                        ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
-                                       $login = new LoginForm( new FauxRequest( $data, true ) );
+                                       $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
                                        $login->setContext( $this->getContext() );
                                        $login->execute( null );
                                }
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 e085240..daa56b3 100644 (file)
@@ -62,7 +62,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                $this->setHeaders();
 
                # Anons don't get a watchlist
-               $this->requireLogin( 'watchlistanontext', 'watchnologin' );
+               $this->requireLogin( 'watchlistanontext' );
 
                $out = $this->getOutput();
 
diff --git a/includes/specials/SpecialExpandTemplates.php b/includes/specials/SpecialExpandTemplates.php
new file mode 100644 (file)
index 0000000..a78133c
--- /dev/null
@@ -0,0 +1,229 @@
+<?php
+/**
+ * Implements Special:ExpandTemplates
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * A special page that expands submitted templates, parser functions,
+ * and variables, allowing easier debugging of these.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialExpandTemplates extends SpecialPage {
+
+       /** @var boolean whether or not to show the XML parse tree */
+       protected $generateXML;
+
+       /** @var boolean whether or not to remove comments in the expanded wikitext */
+       protected $removeComments;
+
+       /** @var boolean whether or not to remove <nowiki> tags in the expanded wikitext */
+       protected $removeNowiki;
+
+       /** @var maximum size in bytes to include. 50MB allows fixing those huge pages */
+       const MAX_INCLUDE_SIZE = 50000000;
+
+       function __construct() {
+               parent::__construct( 'ExpandTemplates' );
+       }
+
+       /**
+        * Show the special page
+        */
+       function execute( $subpage ) {
+               global $wgParser, $wgUseTidy, $wgAlwaysUseTidy;
+
+               $this->setHeaders();
+
+               $request = $this->getRequest();
+               $titleStr = $request->getText( 'wpContextTitle' );
+               $title = Title::newFromText( $titleStr );
+
+               if ( !$title ) {
+                       $title = $this->getTitle();
+               }
+               $input = $request->getText( 'wpInput' );
+               $this->generateXML = $request->getBool( 'wpGenerateXml' );
+
+               if ( strlen( $input ) ) {
+                       $this->removeComments = $request->getBool( 'wpRemoveComments', false );
+                       $this->removeNowiki = $request->getBool( 'wpRemoveNowiki', false );
+                       $options = ParserOptions::newFromContext( $this->getContext() );
+                       $options->setRemoveComments( $this->removeComments );
+                       $options->setTidy( true );
+                       $options->setMaxIncludeSize( self::MAX_INCLUDE_SIZE );
+
+                       if ( $this->generateXML ) {
+                               $wgParser->startExternalParse( $title, $options, OT_PREPROCESS );
+                               $dom = $wgParser->preprocessToDom( $input );
+
+                               if ( method_exists( $dom, 'saveXML' ) ) {
+                                       $xml = $dom->saveXML();
+                               } else {
+                                       $xml = $dom->__toString();
+                               }
+                       }
+
+                       $output = $wgParser->preprocess( $input, $title, $options );
+               } else {
+                       $this->removeComments = $request->getBool( 'wpRemoveComments', true );
+                       $this->removeNowiki = $request->getBool( 'wpRemoveNowiki', false );
+                       $output = false;
+               }
+
+               $out = $this->getOutput();
+               $out->addWikiMsg( 'expand_templates_intro' );
+               $out->addHTML( $this->makeForm( $titleStr, $input ) );
+
+               if ( $output !== false ) {
+                       if ( $this->generateXML && strlen( $output ) > 0 ) {
+                               $out->addHTML( $this->makeOutput( $xml, 'expand_templates_xml_output' ) );
+                       }
+
+                       $tmp = $this->makeOutput( $output );
+
+                       if ( $this->removeNowiki ) {
+                               $tmp = preg_replace(
+                                       array( '_&lt;nowiki&gt;_', '_&lt;/nowiki&gt;_', '_&lt;nowiki */&gt;_' ),
+                                       '',
+                                       $tmp
+                               );
+                       }
+
+                       if ( ( $wgUseTidy && $options->getTidy() ) || $wgAlwaysUseTidy ) {
+                               $tmp = MWTidy::tidy( $tmp );
+                       }
+
+                       $out->addHTML( $tmp );
+                       $this->showHtmlPreview( $title, $output, $out );
+               }
+
+       }
+
+       /**
+        * Generate a form allowing users to enter information
+        *
+        * @param string $title Value for context title field
+        * @param string $input Value for input textbox
+        * @return string
+        */
+       private function makeForm( $title, $input ) {
+               $self = $this->getTitle();
+               $form = Xml::openElement(
+                       'form',
+                       array( 'method' => 'post', 'action' => $self->getLocalUrl() )
+               );
+               $form .= "<fieldset><legend>" . $this->msg( 'expandtemplates' )->escaped() . "</legend>\n";
+
+               $form .= '<p>' . Xml::inputLabel(
+                       $this->msg( 'expand_templates_title' )->plain(),
+                       'wpContextTitle',
+                       'contexttitle',
+                       60,
+                       $title,
+                       array( 'autofocus' => true )
+               ) . '</p>';
+               $form .= '<p>' . Xml::label(
+                       $this->msg( 'expand_templates_input' )->text(),
+                       'input'
+               ) . '</p>';
+               $form .= Xml::textarea(
+                       'wpInput',
+                       $input,
+                       10,
+                       10,
+                       array( 'id' => 'input' )
+               );
+
+               $form .= '<p>' . Xml::checkLabel(
+                       $this->msg( 'expand_templates_remove_comments' )->text(),
+                       'wpRemoveComments',
+                       'removecomments',
+                       $this->removeComments
+               ) . '</p>';
+               $form .= '<p>' . Xml::checkLabel(
+                       $this->msg( 'expand_templates_remove_nowiki' )->text(),
+                       'wpRemoveNowiki',
+                       'removenowiki',
+                       $this->removeNowiki
+               ) . '</p>';
+               $form .= '<p>' . Xml::checkLabel(
+                       $this->msg( 'expand_templates_generate_xml' )->text(),
+                       'wpGenerateXml',
+                       'generate_xml',
+                       $this->generateXML
+               ) . '</p>';
+               $form .= '<p>' . Xml::submitButton(
+                       $this->msg( 'expand_templates_ok' )->text(),
+                       array( 'accesskey' => 's' )
+               ) . '</p>';
+               $form .= "</fieldset>\n";
+               $form .= Xml::closeElement( 'form' );
+
+               return $form;
+       }
+
+       /**
+        * Generate a nice little box with a heading for output
+        *
+        * @param string $output Wiki text output
+        * @param string $heading
+        * @return string
+        */
+       private function makeOutput( $output, $heading = 'expand_templates_output' ) {
+               $out = "<h2>" . $this->msg( $heading )->escaped() . "</h2>\n";
+               $out .= Xml::textarea(
+                       'output',
+                       $output,
+                       10,
+                       10,
+                       array( 'id' => 'output', 'readonly' => 'readonly' )
+               );
+
+               return $out;
+       }
+
+       /**
+        * Render the supplied wiki text and append to the page as a preview
+        *
+        * @param Title $title
+        * @param string $text
+        * @param OutputPage $out
+        */
+       private function showHtmlPreview( Title $title, $text, OutputPage $out ) {
+               global $wgParser;
+
+               $popts = ParserOptions::newFromContext( $this->getContext() );
+               $popts->setTargetLanguage( $title->getPageLanguage() );
+               $pout = $wgParser->parse( $text, $title, $popts );
+               $lang = $title->getPageViewLanguage();
+
+               $out->addHTML( "<h2>" . $this->msg( 'expand_templates_preview' )->escaped() . "</h2>\n" );
+               $out->addHTML( Html::openElement( 'div', array(
+                       'class' => 'mw-content-' . $lang->getDir(),
+                       'dir' => $lang->getDir(),
+                       'lang' => $lang->getHtmlCode(),
+               ) ) );
+
+               $out->addHTML( $pout->getText() );
+               $out->addHTML( Html::closeElement( 'div' ) );
+       }
+}
index d7d860d..1bc6c92 100644 (file)
@@ -411,7 +411,6 @@ class ImportReporter extends ContextSource {
        private $mOriginalPageOutCallback = null;
        private $mLogItemCount = 0;
 
-
        /**
         * @param WikiImporter $importer
         * @param $upload
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 5f4b208..51454f6 100644 (file)
@@ -37,7 +37,7 @@ class SpecialPreferences extends SpecialPage {
                $out = $this->getOutput();
                $out->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
 
-               $this->requireLogin( 'prefsnologintext2', 'prefsnologin' );
+               $this->requireLogin( 'prefsnologintext2' );
                $this->checkReadOnly();
 
                if ( $par == 'reset' ) {
index 0e022bf..14123a8 100644 (file)
@@ -87,7 +87,6 @@ class SpecialRandomInCategory extends SpecialPage {
                        $this->setCategory( $cat );
                }
 
-
                if ( !$this->category && $categoryStr ) {
                        $this->setHeaders();
                        $this->getOutput()->addWikiMsg( 'randomincategory-invalidcategory',
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 47c89d0..0042b43 100644 (file)
@@ -144,6 +144,7 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                }
 
                if ( $includesRestrictedPages || $includesCachedPages ) {
+                       $out->wrapWikiMsg( "<h2 class=\"mw-specialpages-note-top\">$1</h2>", 'specialpages-note-top' );
                        $out->wrapWikiMsg( "<div class=\"mw-specialpages-notes\">\n$1\n</div>", 'specialpages-note' );
                }
        }
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 c51b61b..9e93881 100644 (file)
@@ -39,9 +39,10 @@ class SpecialWatchlist extends SpecialPage {
 
                $user = $this->getUser();
                $output = $this->getOutput();
+               $output->addModuleStyles( 'mediawiki.special.changeslist' );
 
                # Anons don't get a watchlist
-               $this->requireLogin( 'watchlistanontext', 'watchnologin' );
+               $this->requireLogin( 'watchlistanontext' );
 
                // Check permissions
                $this->checkPermissions();
@@ -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 4750af9..2f569d9 100644 (file)
@@ -113,17 +113,16 @@ class UsercreateTemplate extends BaseTemplate {
 
                        <?php
                        if ( $this->data['usedomain'] ) {
-                               $doms = "";
+                               $select = new XmlSelect( 'wpDomain', false, $this->data['domain'] );
+                               $select->setAttribute( 'tabindex', 4 );
                                foreach ( $this->data['domainnames'] as $dom ) {
-                                       $doms .= "<option>" . htmlspecialchars( $dom ) . "</option>";
+                                       $select->addOption( $dom );
                                }
                        ?>
                                <div id="mw-user-domain-section">
                                        <label for="wpDomain"><?php $this->msg( 'yourdomainname' ); ?></label>
                                        <div class="mw-input">
-                                               <select name="wpDomain" value="<?php $this->text( 'domain' ); ?>" tabindex="4">
-                                                       <?php echo $doms ?>
-                                               </select>
+                                               <?php echo $select->getHTML(); ?>
                                        </div>
                                </div>
                        <?php } ?>
index 5eb6094..38e071c 100644 (file)
@@ -113,16 +113,15 @@ class UserloginTemplate extends BaseTemplate {
 
                        <?php
                        if ( isset( $this->data['usedomain'] ) && $this->data['usedomain'] ) {
-                               $doms = "";
+                               $select = new XmlSelect( 'wpDomain', false, $this->data['domain'] );
+                               $select->setAttribute( 'tabindex', 3 );
                                foreach ( $this->data['domainnames'] as $dom ) {
-                                       $doms .= "<option>" . htmlspecialchars( $dom ) . "</option>";
+                                       $select->addOption( $dom );
                                }
                        ?>
                                <div id="mw-user-domain-section">
                                        <label for='wpDomain'><?php $this->msg( 'yourdomainname' ); ?></label>
-                                       <select name="wpDomain" value="<?php $this->text( 'domain' ); ?>" tabindex="3">
-                                               <?php echo $doms; ?>
-                                       </select>
+                                       <?php echo $select->getHTML(); ?>
                                </div>
                        <?php } ?>
 
index b162de2..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 );
                }
@@ -394,7 +397,6 @@ abstract class UploadBase {
                return true;
        }
 
-
        /**
         * Verifies that it's ok to include the uploaded file
         *
@@ -421,7 +423,6 @@ abstract class UploadBase {
                        }
                }
 
-
                $handler = MediaHandler::getHandler( $mime );
                if ( $handler ) {
                        $handlerStatus = $handler->verifyUpload( $this->mTempPath );
@@ -1097,7 +1098,6 @@ abstract class UploadBase {
                return false;
        }
 
-
        /**
         * Check a whitelist of xml encodings that are known not to be interpreted differently
         * by the server's xml parser (expat) and some common browsers.
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 b18fb80..8885d0e 100644 (file)
--- a/index.php
+++ b/index.php
@@ -42,7 +42,7 @@ if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.
 
 # Initialise common code.  This gives us access to GlobalFunctions, the
 # AutoLoader, and the globals $wgRequest, $wgOut, $wgUser, $wgLang and
-# $wgContLang, amongst others; it does *not* load $wgTitle
+# $wgContLang, amongst others
 require __DIR__ . '/includes/WebStart.php';
 
 $mediaWiki = new MediaWiki();
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 0bf96d4..fa6e697 100644 (file)
        'crh-cyrl' => "къырымтатарджа (Кирилл)\xE2\x80\x8E",       # Crimean Tatar (Cyrillic)
        'cs' => 'čeština',    # Czech
        'csb' => 'kaszëbsczi', # Cassubian
-       'cu' => 'словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
+       'cu' => 'словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',        # Old Church Slavonic (ancient language)
        'cv' => 'Чӑвашла',       # Chuvash
        'cy' => 'Cymraeg',              # Welsh
        'da' => 'dansk',                # Danish
        'lmo' => 'lumbaart',    # Lombard
        'ln' => 'lingála',             # Lingala
        'lo' => 'ລາວ',    # Laotian
+       'lrc' => 'لوری',    # Northern Luri
        'loz' => 'Silozi', # Lozi
        'lt' => 'lietuvių',    # Lithuanian
        'ltg' => 'latgaļu',    # Latgalian
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 3da7711..072e857 100644 (file)
@@ -28,7 +28,6 @@
  */
 class LanguageBs extends Language {
 
-
        /**
         * Convert from the nominative form of a noun to some other case
         * Invoked with {{GRAMMAR:case|word}}
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 5a7bbf3..4e08613 100644 (file)
@@ -727,7 +727,7 @@ class LanguageKk_cyrl extends Language {
                $lastLetter[0] = $ar[count( $ar ) - 1];
 
                // Find the last vowel in the word
-               $lastLetter[1] = NULL;
+               $lastLetter[1] = null;
                foreach ( $wordReversed as $xvalue ) {
                        foreach ( $allVowels as $yvalue ) {
                                if ( strcmp( $xvalue, $yvalue ) == 0 ) {
@@ -737,7 +737,7 @@ class LanguageKk_cyrl extends Language {
                                        continue;
                                }
                        }
-                       if ( $lastLetter[1] !== NULL ) {
+                       if ( $lastLetter[1] !== null ) {
                                break;
                        } else {
                                continue;
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 f37e2d5..7ea67f2 100644 (file)
@@ -67,7 +67,6 @@ class LanguageOs extends Language {
                # Variable for ending
                $ending = '';
 
-
                # CHecking if the $word is in plural form
                if ( preg_match( '/тæ$/u', $word ) ) {
                        $word = mb_substr( $word, 0, -1 );
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 887f05c..8d2fe16 100644 (file)
@@ -21,7 +21,6 @@
  * @ingroup Language
  */
 
-
 /**
  * Turkish (Türkçe)
  *
index fc1e8a8..f362329 100644 (file)
@@ -66,7 +66,7 @@ class LanguageTyv extends Language {
                $wordReversed = array_reverse( $ar[0] ); // Here's an array with the order of the letters in the word reversed so we can find a match quicker *shrug*
 
                // Find the last vowel in the word
-               $wordLastVowel = NULL;
+               $wordLastVowel = null;
                foreach ( $wordReversed as $xvalue ) {
                        foreach ( $allVowels as $yvalue ) {
                                if ( strcmp( $xvalue, $yvalue ) == 0 ) {
@@ -76,7 +76,7 @@ class LanguageTyv extends Language {
                                        continue;
                                }
                        }
-                       if ( $wordLastVowel !== NULL ) {
+                       if ( $wordLastVowel !== null ) {
                                break;
                        } else {
                                continue;
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 e62d025..d021e51 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' ),
@@ -316,7 +320,6 @@ $messages = array(
 'qbedit' => 'Andam',
 'qbpageoptions' => 'Laman nyoe',
 'qbmyoptions' => 'Laman lôn',
-'qbspecialpages' => 'Laman kusuih',
 'faq' => 'Teunanyöng Umom',
 'faqpage' => 'Project:FAQ',
 
@@ -432,8 +435,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}}',
@@ -531,9 +532,6 @@ Hana jeuneulaih.",
 'perfcachedts' => 'Data di yup nyoe geupeusom, ngön geupeubarô seuneulheueh bak $1. {{PLURAL:$4|saboh hase|$4 hase}} paléng le na lam beujana.',
 'querypage-no-updates' => "Beunarô keu laman nyoe hat nyoe teungöh h'an jeuët.
 Data sinoe h'an geupasoe ulang.",
-'wrong_wfQuery_params' => 'Parameter salah u wfQuery()<br />
-Meunafaat: $1<br />
-Neulakee: $2',
 'viewsource' => 'Eu nè',
 'viewsource-title' => 'Eu ne keu $1',
 'actionthrottled' => 'Buet geupeubataih',
@@ -895,10 +893,6 @@ Dalèh $3 nyoe nakeuh ''$2''",
 # Search results
 'searchresults' => 'Hasé mita',
 'searchresults-title' => 'Hasé mita keu "$1"',
-'searchresulttext' => 'Keu beurita leubèh le bhah meunita bak {{SITENAME}}, eu [[{{MediaWiki:Helppage}}|ôn beunantu]].',
-'searchsubtitle' => 'Droëneuh neumita \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ban dum ôn nyang geupuphôn ngön "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|bandum ôn nyang teuhubông u "$1"]])',
-'searchsubtitleinvalid' => "Droëneuh neumita '''$1'''",
-'notitlematches' => 'Hana nan laman nyang pah',
 'notextmatches' => 'Hana naseukah laman nyang pah',
 'prevn' => '{{PLURAL:$1|$1}} sigohlomjih',
 'nextn' => '{{PLURAL:$1|$1}} lheuëh nyan',
@@ -929,14 +923,10 @@ Dalèh $3 nyoe nakeuh ''$2''",
 'searchrelated' => 'meusambat',
 'searchall' => 'ban dum',
 'showingresultsheader' => "{{PLURAL:$5|Hase '''$1''' nibak '''$3'''|Hase '''$1 - $2''' nibak '''$3'''}} keu '''$4'''",
-'nonefound' => "'''Teuneurang''': Ladôm ruweuëng nan mantöng nyang geumita. 
-Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (rôh lam nyan laman marit, seunaleuëk, ngön nyang la’én nibak nyan), atawa neungui ruweuëng nan nyang neumeuh’eut sibagoë neuawai.",
 'search-nonefound' => 'Hana hasé nyang paih lagèë neulakèë',
-'powersearch' => 'Mita lanjut',
 'powersearch-legend' => 'Mita lanjut',
 'powersearch-ns' => 'Mita bak ruweuëng nan:',
 'powersearch-redir' => 'Dapeuta peuninah',
-'powersearch-field' => 'Mita',
 'powersearch-toggleall' => 'Ban dum',
 'powersearch-togglenone' => 'Hana',
 
@@ -944,7 +934,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',
@@ -964,14 +953,12 @@ Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (
 'prefs-email' => 'Peuniléh surat-e',
 'prefs-rendering' => 'Seuneudeuh',
 'saveprefs' => 'Kubah',
-'resetprefs' => 'Peugléh neuubah nyang goh meukubah',
 'prefs-editing' => 'Neuandam',
 'rows' => 'Baréh:',
 'searchresultshead' => 'Mita',
 'resultsperpage' => 'Hasé lam saboh laman:',
 'stub-threshold-disabled' => 'Geupeumaté',
 'timezoneuseoffset' => "La'én (peuteuntèe bidajih)",
-'timezoneoffset' => 'Bida:',
 'timezoneregion-america' => 'Amirika',
 'timezoneregion-antarctica' => 'Antartika',
 'timezoneregion-atlantic' => 'Laôt Atlantik',
@@ -1629,10 +1616,6 @@ Data nyang la'én eunteuk teupeusom keudroë.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Andam beureukah nyoë ngön aplikasi luwa',
-'edit-externally-help' => '(Ngiëng [//meta.wikimedia.org/wiki/Help:External_editors peurintah atô] keu haba leubèh lanjôt)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ban dum',
 'namespacesall' => 'ban dum',
@@ -1681,8 +1664,7 @@ Neuci peudeuih hasé biasa.',
 
 # Special:SpecialPages
 'specialpages' => 'Laman kusuih',
-'specialpages-note' => '----
-* Laman kusuih lagèë biasa.
+'specialpages-note' => '* Laman kusuih lagèë biasa.
 * <span class="mw-specialpagerestricted">Laman kusuih meuhat.</span>',
 'specialpages-group-maintenance' => 'Beuneuri thèë plara',
 'specialpages-group-other' => "La'én-la'én",
index ef541ee..454b9b8 100644 (file)
@@ -158,7 +158,6 @@ $messages = array(
 'qbedit' => 'modifi el page (baddelha)',
 'qbpageoptions' => 'هذه الصفحة',
 'qbmyoptions' => 'صفحاتي',
-'qbspecialpages' => 'الصفحات الخاصة',
 'faq' => 'الأسئلة الأكثر تكرارا',
 'faqpage' => 'Project:أسئلة متكررة',
 
@@ -272,8 +271,6 @@ $1',
 'ok' => 'ok',
 'retrievedfrom' => 'تم الاسترجاع من "$1"',
 'youhavenewmessages' => 'توجد لديك $1 ($2).',
-'newmessageslink' => 'رسائل جديدة',
-'newmessagesdifflink' => 'آخر تغيير',
 'youhavenewmessagesmulti' => 'لديك رسائل جديدة على $1',
 'editsection' => 'modifi el page (baddelha)',
 'editold' => 'modifi el page (baddelha)',
@@ -365,9 +362,6 @@ mahouwech mobarrar',
 'perfcachedts' => 'البيانات التالية مختزنة وكان آخر تحديث لها في $1. {{PLURAL:$4||نتيجة واحدة|نتيجتان|$4 نتائج|$4 نتيجة}} على الأكثر {{PLURAL:$4||مختزنة|مختزنتان|مختزنة}}.',
 'querypage-no-updates' => 'التحديثات لهذه الصفحة معطلة حاليا.
 البيانات هنا لن يتم تحديثها حاليا.',
-'wrong_wfQuery_params' => 'محددات خاطئة في wfQuery()<br />
-الدالة: $1<br />
-الاستعلام: $2',
 'viewsource' => 'اعرض المصدر',
 'viewsource-title' => 'إظهار مصدر $1',
 'actionthrottled' => 'لا يمكن عمل المزيد من هذا الفعل',
@@ -984,7 +978,6 @@ $1",
 # Search results
 'searchresults' => 'el resultats',
 'searchresults-title' => 'نتائج البحث عن "$1"',
-'searchresulttext' => 'للمزيد من المعلومات حول البحث في {{SITENAME}}، انظر [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'prevn' => '{{PLURAL:$1|$1}} السابقة',
 'nextn' => '{{PLURAL:$1|$1}} التالية',
 'prevn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
@@ -1322,10 +1315,6 @@ $1",
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'الكل',
 'namespacesall' => 'الكل',
index c90bd21..0c8339d 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' ),
@@ -367,7 +365,6 @@ $messages = array(
 'qbedit' => 'Wysig',
 'qbpageoptions' => 'Bladsyopsies',
 'qbmyoptions' => 'My bladsye',
-'qbspecialpages' => 'Spesiale bladsye',
 'faq' => 'Gewilde vrae',
 'faqpage' => 'Project:GewildeVrae',
 
@@ -483,8 +480,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}}",
@@ -584,9 +579,6 @@ Geen verduideliking is verskaf nie.",
 'perfcached' => "Die volgende inligting is gekas en mag dalk nie op datum wees nie. 'n Maksimum van {{PLURAL:$1|een resultaat|$1 resultate}} is in die kas beskikbaar.",
 'perfcachedts' => "Die volgende data is gekas en is laas op $2 om $3 bygewerk. 'n Maksimum van {{PLURAL:$4|een resultaat|$4 resultate}} is in die kas beskikbaar.",
 'querypage-no-updates' => 'Opdatering van hierdie bladsy is huidiglik afgeskakel. Inligting hier sal nie tans verfris word nie.',
-'wrong_wfQuery_params' => 'Foutiewe parameters na wfQuery()<br />
-Funksie: $1<br />
-Navraag: $2',
 'viewsource' => 'Wys bronteks',
 'viewsource-title' => 'Wys bron van $1',
 'actionthrottled' => 'Outo-rem op aksie uitgevoer',
@@ -1264,12 +1256,8 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 # Search results
 'searchresults' => 'Soekresultate',
 'searchresults-title' => 'Soekresultate vir "$1"',
-'searchresulttext' => 'Vir meer inligting oor {{SITENAME}}-soekresultate, lees [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'U soek vir \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle bladsye wat met "$1" begin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle bladsye wat aan "$1" skakel]])',
-'searchsubtitleinvalid' => 'Vir navraag "$1"',
 'toomanymatches' => "Te veel resultate. Probeer asseblief 'n ander soektog.",
 'titlematches' => 'Artikeltitel resultate',
-'notitlematches' => 'Geen artikeltitel resultate nie',
 'textmatches' => 'Artikelteks resultate',
 'notextmatches' => 'Geen artikelteks resultate nie',
 'prevn' => 'vorige {{PLURAL:$1|$1}}',
@@ -1278,10 +1266,8 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
 'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per bladsy',
 'viewprevnext' => 'Wys ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Soekopsies',
 'searchmenu-exists' => "'''Daar is reeds 'n bladsy genaamd \"[[:\$1]]\" op die wiki'''",
 'searchmenu-new' => "'''Skep die bladsy \"[[:\$1]]\" op hierdie wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wys bladsye wat met die voorvoegsel begin]]',
 'searchprofile-articles' => 'Inhoudelike bladsye',
 'searchprofile-project' => 'Hulp- en projekbladsye',
 'searchprofile-images' => 'Multimedia',
@@ -1309,15 +1295,10 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 'showingresults' => "Hier volg {{PLURAL:$1|'''1''' resultaat|'''$1''' resultate}} vanaf #'''$2'''.",
 'showingresultsnum' => "Hier onder {{PLURAL:$3|is '''1''' resultaat|is '''$3''' resultate}} vanaf #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} vir '''$4'''",
-'nonefound' => "<strong>Opmerking</strong>: nie alle naamruimtes word by verstek deursoek nie.
-As die voorvoegsel \"''all:''\" in 'n soekopdrag gebruik word, word alle bladsye deursoek (inklusief besprekengsbladsye, sjablone, ensovoorts).
-U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'search-nonefound' => 'Daar is geen resultate vir u soekopdrag nie.',
-'powersearch' => 'Gevorderde soektog',
 'powersearch-legend' => 'Gevorderde soektog',
 'powersearch-ns' => 'Soek in naamruimtes:',
 'powersearch-redir' => 'Wys aanstuurbladsye',
-'powersearch-field' => 'Soek vir',
 'powersearch-togglelabel' => 'Kies:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Geen',
@@ -1329,8 +1310,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'preferences' => 'Voorkeure',
 'mypreferences' => 'Voorkeure',
 'prefs-edits' => 'Aantal wysigings:',
-'prefsnologin' => 'Nie ingeteken nie',
-'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aanmeld]</span> om voorkeure te kan verander.',
 'changepassword' => 'Verander wagwoord',
 'prefs-skin' => 'Omslag',
 'skin-preview' => 'Voorskou',
@@ -1354,7 +1333,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'prefs-email' => 'E-posopsies',
 'prefs-rendering' => 'Voorkoms',
 'saveprefs' => 'Stoor voorkeure',
-'resetprefs' => 'Herstel voorkeure',
 'restoreprefs' => 'Herstel voorkeure',
 'prefs-editing' => 'Wysigings',
 'rows' => 'Rye',
@@ -1372,7 +1350,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'localtime' => 'Plaaslike tyd:',
 'timezoneuseserverdefault' => 'Gebruik wiki se verstekwaarde ($1)',
 'timezoneuseoffset' => 'Ander (spesifiseer tydsverskil)',
-'timezoneoffset' => 'Tydsverskil¹:',
 'servertime' => 'Bedienertyd:',
 'guesstimezone' => 'Vul in vanaf webblaaier',
 'timezoneregion-africa' => 'Afrika',
@@ -1625,6 +1602,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',
@@ -2125,10 +2103,8 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re
 'protectedpages' => 'Beskermde bladsye',
 'protectedpages-indef' => 'Slegs blokkades sonder vervaldatum',
 'protectedpages-cascade' => 'Slegs blokkades wat neergolf',
-'protectedpagestext' => 'Die volgende bladsye is beskerm teen verskuiwing of wysiging:',
 'protectedpagesempty' => 'Geen bladsye is tans met die parameters beveilig nie.',
 'protectedtitles' => 'Beskermde titels',
-'protectedtitlestext' => 'Die volgende titels is beveilig en kan nie geskep word nie',
 'protectedtitlesempty' => 'Geen titels is tans met die parameters beveilig nie.',
 'listusers' => 'Gebruikerslys',
 'listusers-editsonly' => 'Slegs gebruikers met wysigings',
@@ -3634,10 +3610,6 @@ Ander velde sal versteek wees.
 'exif-urgency-high' => 'Hoog ($1)',
 'exif-urgency-other' => 'Gebruiker-gedefinieerde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => "Wysig hierdie lêer met 'n eksterne program",
-'edit-externally-help' => '(Sien [https://www.mediawiki.org/wiki/Manual:External_editors instruksies] vir meer inligting)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alle',
@@ -3864,8 +3836,7 @@ Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van
 
 # Special:SpecialPages
 'specialpages' => 'Spesiale bladsye',
-'specialpages-note' => '----
-* Normale spesiale bladsye.
+'specialpages-note' => '* Normale spesiale bladsye.
 * <span class="mw-specialpagerestricted">Spesiale bladsye met beperkte toegang.</span>
 * <span class="mw-specialpagecached">Spesiale bladsye met gegewens uit die kas (kan verouderd wees).</span>',
 'specialpages-group-maintenance' => 'Onderhoud verslae',
@@ -4078,4 +4049,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 5b4e097..4e0f671 100644 (file)
@@ -210,7 +210,6 @@ $messages = array(
 'qbedit' => 'Redakto',
 'qbpageoptions' => 'Kjo faqe',
 'qbmyoptions' => 'Faqet e mija',
-'qbspecialpages' => 'Faqet speciale',
 'faq' => 'Pyetjet e shpeshta',
 'faqpage' => 'Project:Pyetjet e shpeshta',
 
@@ -320,8 +319,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',
@@ -407,9 +404,6 @@ Ndodh që ka shêja që nuk munden me u përdorë në titull.',
 'perfcachedts' => 'Shenimi i mâposhtëm âsht kopje e memorizueme dhe âsht rifreskue së fundit me $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Redaktimi i kësaj faqeje âsht ndalue për momentin.
 Shenimet këtu nuk do të rifreskohen.',
-'wrong_wfQuery_params' => 'Parametra gabim te wfQuery()<br />
-Funksioni: $1<br />
-Kërkesa: $2',
 'viewsource' => 'Shih kodin',
 'actionthrottled' => 'Veprimi âsht i kufizuem',
 'actionthrottledtext' => 'Si masë kunder spamit, jeni të kufizuem me kry këtë veprim shumë herë për nji kohë shumë të shkurtë, dhe e keni tejkalue këtë kufizim.
@@ -872,12 +866,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 # Search results
 'searchresults' => 'Rezultatet e kërkimit',
 'searchresults-title' => 'Rezultatet e kërkimit për "$1"',
-'searchresulttext' => 'Për mâ shumë informata rreth kërkimit në {{SITENAME}} shih [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Keni kërkue \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tâna faqet që nisin me "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tâna faqet që lidhen me "$1"]])',
-'searchsubtitleinvalid' => "Keni kërkue '''$1'''",
 'toomanymatches' => 'Ka tepër shumë përputhje, provoni nji kërkesë mâ të ngushtë',
 'titlematches' => 'Tituj që përputhen',
-'notitlematches' => 'Nuk ka përputhje në tituj',
 'textmatches' => 'Përputhje në tekst',
 'notextmatches' => 'Nuk ka përputhje tekstuale në asnji faqe',
 'prevn' => 'e përparme {{PLURAL:$1|$1}}',
@@ -886,10 +876,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'nextn-title' => '$1 {{PLURAL:$1|rezultat|rezultate}} të ardhshme',
 'shown-title' => 'Trego $1 {{PLURAL:$1|rezultat|rezultate}} për faqe',
 'viewprevnext' => 'Shih ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcionet e kërkimit',
 'searchmenu-exists' => "'''Në këtë wiki âsht nji faqe me titullin \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Krijo faqen \"[[:\$1]]\" në këtë wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfleto faqet me këtë prefiks]]',
 'searchprofile-articles' => 'Faqet me përmbajtje',
 'searchprofile-project' => 'Faqet e ndihmës dhe projekteve',
 'searchprofile-images' => 'Multimedia',
@@ -916,14 +904,10 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'showingresults' => "Mâ poshtë {{PLURAL:$1|tregohet '''1''' rezultat|tregohen '''$1''' rezultate}} që nisin me #'''$2'''.",
 'showingresultsnum' => "Mâ poshtë {{PLURAL:$3|tregohet '''1''' rezultat|tregohen '''$3''' rezultate}} që nisin me #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultati '''$1''' prej '''$3'''|Rezultatet '''$1 - $2''' prej '''$3'''}} për '''$4'''",
-'nonefound' => "'''Shenim''': Vetëm disa hapësina kërkohen me t'lême.
-Provoni me ia parashtue kërkesës tuej ''tâna:'' që me lypë tânë përmbajtjen (përfshî edhe diskutimet, shabllonat, etj.), ose përdorni hapësinën e dëshirueme si parashtesë.",
 'search-nonefound' => 'Nuk ka rezultate që përputhen me kërkesën.',
-'powersearch' => 'Kërkimi i detajshëm',
 'powersearch-legend' => 'Kërkimi i detajshëm',
 'powersearch-ns' => 'Kërkimi në hapësina:',
 'powersearch-redir' => 'Listo përcjelljet',
-'powersearch-field' => 'Kërko',
 'powersearch-togglelabel' => 'Zgjedh:',
 'powersearch-toggleall' => 'Tâna',
 'powersearch-togglenone' => 'Asnji',
@@ -936,8 +920,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çë',
-'prefsnologintext' => 'Duheni me qenë <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} i kyçun]</span> për me i caktue parapëlqimet.',
 'changepassword' => 'Ndërrimi i fjalëkalimit',
 'prefs-skin' => 'Doka',
 'skin-preview' => 'Parapâmja',
@@ -957,7 +939,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
 'prefs-email' => 'Opcionet për email',
 'prefs-rendering' => 'Pâmja',
 'saveprefs' => 'Regjistro',
-'resetprefs' => 'Fshij ndryshimet e paruejtuna',
 'restoreprefs' => 'Kthe tâna përcaktimet si në fillim',
 'prefs-editing' => 'Tue redaktue',
 'rows' => 'Rreshta:',
@@ -974,7 +955,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
 'localtime' => 'Ora lokale:',
 'timezoneuseserverdefault' => 'Përdor të paracaktuemen e serverit',
 'timezoneuseoffset' => 'Tjetër (specifiko kcimin)',
-'timezoneoffset' => 'Kcimi¹:',
 'servertime' => 'Ora e serverit:',
 'guesstimezone' => 'Mbush prej shfletuesit:',
 'timezoneregion-africa' => 'Afrikë',
@@ -1556,10 +1536,6 @@ Tjerat kanë me mbetë të mshefuna.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Ndryshoni kët figurë/skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shih [https://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për mâ shumë informata)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'krejt',
 'namespacesall' => 'krejt',
index e6af0f5..5c2587c 100644 (file)
@@ -185,7 +185,6 @@ $messages = array(
 'qbedit' => 'አርም',
 'qbpageoptions' => 'ይህ ገጽ',
 'qbmyoptions' => 'የኔ ገጾች',
-'qbspecialpages' => 'ልዩ ገጾች',
 'faq' => 'ብጊየጥ (ብዙ ጊዜ የሚጠየቁ ጥያቀዎች)',
 'faqpage' => 'Project:ብጊየጥ',
 
@@ -294,8 +293,6 @@ $1',
 'ok' => 'እሺ',
 'retrievedfrom' => 'ከ «$1» የተወሰደ',
 'youhavenewmessages' => '$1 አሉዎት ($2)።',
-'newmessageslink' => 'አዲስ መልእክቶች',
-'newmessagesdifflink' => 'የመጨረሻ ለውጥ',
 'youhavenewmessagesfromusers' => 'ከ{{PLURAL:$3|ሌላ አባል|$3 አባላት}} $1 {{PLURAL:$1|አለዎት|አሉልዎ}}። ($2).',
 'youhavenewmessagesmanyusers' => 'ከአሥር አባላት በላይ $1 አሉልዎ! ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|፩ አዲስ መልዕክት|አዲስ መልእክቶች}}',
@@ -377,9 +374,6 @@ $1',
 'perfcached' => 'ማስታወቂያ፡ ይህ መረጃ በየጊዜ የሚታደስ ስለሆነ ዘመናዊ ሳይሆን የቆየ ሊሆን ይችላል። A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'የሚቀጥለው መረጃ ተቆጥቧል፣ መጨረሻ የታደሠው $1 እ.ኤ.አ. ነው።',
 'querypage-no-updates' => 'ይህ ገጽ አሁን የታደሠ አይደለም። ወደፊትም መታደሱ ቀርቷል። በቅርብ ግዜ አይታደስም።',
-'wrong_wfQuery_params' => 'ለwfQuery() ትክክለኛ ያልሆነ ግቤት<br />
-ተግባር፦ $1<br />
-ጥያቄ፦ $2',
 'viewsource' => 'ምንጩን ተመልከት',
 'viewsource-title' => 'ጥሬ ኮዱን ለ$1 ለማየት',
 'actionthrottled' => 'ተግባሩ ተቋረጠ',
@@ -805,12 +799,8 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 # Search results
 'searchresults' => 'የፍለጋ ውጤቶች',
 'searchresults-title' => 'ለ"$1" የፍለጋ ውጤቶች',
-'searchresulttext' => 'በተጨማሪ ስለ ፍለጋዎች ለመረዳት፣ [[{{MediaWiki:Helppage}}]] ያንብቡ።',
-'searchsubtitle' => 'እየፈለግህ/ሽ ያለሀው/ሽው \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all ከሱጋር የተያያዙ በሙላ "$1"]])',
-'searchsubtitleinvalid' => "ለ'''$1''' ፈለጉ",
 'toomanymatches' => 'ከመጠን በላይ ያሉ ስምምነቶች ተመለሱ፤ እባክዎ ሌላ ጥያቄ ይሞክሩ።',
 'titlematches' => 'የሚስማሙ አርዕስቶች',
-'notitlematches' => 'የሚስማሙ አርዕስቶች የሉም',
 'textmatches' => 'ጽሕፈት የሚስማማባቸው ገጾች',
 'notextmatches' => 'ጽሕፈት የሚስማማባቸው ገጾች የሉም',
 'prevn' => 'ፊተኛ {{PLURAL:$1|$1}}',
@@ -819,7 +809,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'nextn-title' => '{{PLURAL:$1|የሚቀጥለው|የሚቀጥሉ}} $1 {{PLURAL:$1|ውጤት|ውጤቶች}}',
 'shown-title' => '$1 {{PLURAL:$1|ውጤት|ውጤቶች}} በየገጹ {{PLURAL:$1|ይታይ|ይታዩ}}',
 'viewprevnext' => 'በቁጥር ለማየት፡ ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'የፍለጋ ምርጫዎች',
 'searchmenu-exists' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ በዚሁ ዊኪ ላይ አለ።'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ ይፈጠር?'''",
 'searchprofile-articles' => 'ይዞታ ያላቸው መጣጥፎች',
@@ -847,14 +836,10 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'showingresults' => 'ከ ቁ.#<b>$2</b> ጀምሮ እስከ <b>$1</b> ውጤቶች ድረስ ከዚህ በታች ይታያሉ።',
 'showingresultsnum' => "ከ#'''$2''' ጀምሮ {{PLURAL:$3|'''1''' ውጤት|'''$3''' ውጤቶች}} ከዚህ ታች ማየት ይቻላል።",
 'showingresultsheader' => "{{PLURAL:$5|ከ'''$3''' ውጤት ውስጥ '''$1'''|ከ'''$3''' ውጤቶች ውስጥ ከ'''$1''' እስከ '''$2'''}} ለ'''$4'''",
-'nonefound' => "\"ማስገንዘቢያ\" የተወሰኑ ፍለጋዎች ብቻ በዋናው ስምምነት መሰረት ተፈልገው ይገኛሉ::
-ከምትፈልገው ነገር በፊት ''all:''ን በማስገባት ፍለጋህን ደግመህ ሞክር ይህም ሁሉንም የፍለጋ ቦታዎች እንድታዳርስ ይረዳሃል።",
 'search-nonefound' => 'ለጥያቄው ምንም የሚስማማ ውጤት አልተገኘም።',
-'powersearch' => 'ፍለጋ',
 'powersearch-legend' => 'ተጨማሪ ፍለጋ',
 'powersearch-ns' => 'በነዚሁ ክፍለ-ዊኪዎች ይፈልግ:',
 'powersearch-redir' => 'መምሪያ መንገዶቹም ይዘርዝሩ',
-'powersearch-field' => 'ለዚሁ ጽሕፈት ይፈልግ፦',
 'powersearch-toggleall' => ' ሁሉም',
 'powersearch-togglenone' => ' ምንም',
 'search-external' => 'አፍአዊ ፍለጋ',
@@ -864,8 +849,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'preferences' => 'ምርጫዎች፤',
 'mypreferences' => 'ምርጫዎች፤',
 'prefs-edits' => 'የለውጦች ቁጥር:',
-'prefsnologin' => 'ገና አልገቡም',
-'prefsnologintext' => 'ምርጫዎችዎን ለማስተካከል አስቀድሞ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} መግባት]</span>  ያስፈልግዎታል።',
 'changepassword' => 'መግቢያ ቃልዎን ለመቀየር',
 'prefs-skin' => 'የድህረ-ገጽ መልክ',
 'skin-preview' => 'ቅድመ-ዕይታ',
@@ -885,7 +868,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'prefs-email' => 'የኢ-ሜል ምርጫዎች',
 'prefs-rendering' => ' አቀራረብ',
 'saveprefs' => 'ይቆጠብ',
-'resetprefs' => 'እንደ በፊቱ ይታደስ',
 'prefs-editing' => 'የማዘጋጀት ምርጫዎች',
 'rows' => 'በማዘጋጀቱ ሰንጠረዥ ስንት ተርታዎች?',
 'columns' => 'ስንት ዓምዶችስ?',
@@ -898,7 +880,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'timezonelegend' => 'የሰዓት ክልል',
 'localtime' => 'የክልሉ ሰዓት (Local time)',
 'timezoneuseoffset' => 'ሌላ (ኦፍ ሴት ለመወሰን)',
-'timezoneoffset' => 'ኦፍ ሰት¹',
 'servertime' => 'የሰርቨሩ ሰዓት',
 'guesstimezone' => 'ከኮምፒውተርዎ መዝገብ ልዩነቱ ይገኝ',
 'timezoneregion-africa' => 'አፍሪካ',
@@ -1072,6 +1053,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 ጀምሮ አዲስ ለውጦቹን ለማየት)',
@@ -1391,10 +1373,8 @@ $1',
 'deadendpages' => 'መያያዣ የሌለባቸው ፅሑፎች',
 'deadendpagestext' => 'የሚቀጥሉት ገጾች በ{{SITENAME}} ውስጥ ከሚገኙ ሌሎች ገጾች ጋር አያያይዙም።',
 'protectedpages' => 'የተቆለፉ ገጾች',
-'protectedpagestext' => 'የሚከተሉት ገጾች ከመዛወር ወይም ከመታረም ተቆልፈዋል።',
 'protectedpagesempty' => 'በዚያ ግቤት የሚቆለፍ ገጽ አሁን የለም።',
 'protectedtitles' => 'የተቆለፉ አርዕስቶች',
-'protectedtitlestext' => 'የሚከተሉት አርዕስቶች ከመፈጠር ተጠብቀዋል።',
 'protectedtitlesempty' => 'እንደዚህ አይነት አርእስት አሁን የሚቆለፍ ምንም የለም።',
 'listusers' => 'አባላት',
 'listusers-editsonly' => 'ለውጦች ያላቸው ተጠቃሚዎች ብቻ ይታዩ',
@@ -2395,10 +2375,6 @@ $1',
 
 'exif-urgency-high' => 'ከፍተኛ ($1)',
 
-# External editor support
-'edit-externally' => 'ይህንን ፋይል በአፍአዊ ሶፍትዌር ለማዘጋጀት',
-'edit-externally-help' => '(ለተጨማሪ መረጃ ይህን ገፅ ተመልከቱ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ሁሉ',
 'namespacesall' => 'ሁሉ (all)',
@@ -2601,4 +2577,7 @@ $3
 'api-error-uploaddisabled' => 'ፋይል መላክ በዚህ ውኪ ላይ አልተፈቀደም።',
 'api-error-verification-error' => 'ይህ ፋይል የተበላሸ ወይም ትክክል ያልሆነ ቅጥያ ያለው ሊሆን ይችላል።',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'እሺ',
+
 );
index 1e232c6..def8ed6 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' ),
@@ -275,7 +273,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Ista pachina',
 'qbmyoptions' => 'Pachinas propias',
-'qbspecialpages' => 'Pachinas especials',
 'faq' => 'Preguntas freqüents (FAQ)',
 'faqpage' => 'Project:Preguntas freqüents',
 
@@ -390,8 +387,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',
@@ -478,9 +473,6 @@ Por favor, comunique-lo a un [[Special:ListUsers/sysop|almenistrador]] indicando
 'perfcached' => 'Os datos siguients son en caché, y talment no son esviellatos. I hai un maximo de {{PLURAL:$1|un resultau disponible|$1 resultaus disponibles}} en a caché.',
 'perfcachedts' => "Os datos siguients se troban en a caché, que estió esviellata por zaguer vegada o $1. I hai un maximo {{PLURAL:$4|d'un resultau disponible|de $4 resultaus disponibles}} en a caché.",
 'querypage-no-updates' => "S'han desactivato as actualizacions d'ista pachina. Por ixo, no s'esta esviellando os datos.",
-'wrong_wfQuery_params' => 'Parametros incorrectos ta wfQuery()<br />
-Función: $1<br />
-Consulta: $2',
 'viewsource' => 'Veyer o codigo fuent',
 'viewsource-title' => 'Veyer o codigo fuent de «$1»',
 'actionthrottled' => 'acción afogata',
@@ -1025,12 +1017,8 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 # Search results
 'searchresults' => "Resultau d'a busca",
 'searchresults-title' => 'Resultaus de mirar "$1"',
-'searchresulttext' => "Ta más información sobre cómo mirar pachinas en {{SITENAME}}, consulte l'[[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Ha mirato \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas as pachinas que prencipian con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as pachinas con vinclos enta "$1"]])',
-'searchsubtitleinvalid' => 'Ha mirato "$1"',
 'toomanymatches' => "S'ha retornato masiadas coincidencias, por favor, torne a prebar con una consulta diferent",
 'titlematches' => 'Consonancias de títols de pachina',
-'notitlematches' => "No bi ha garra consonancia en os títols d'as pachinas",
 'textmatches' => "Consonancias en o texto d'as pachinas",
 'notextmatches' => "No bi ha garra consonancia en os textos d'as pachinas",
 'prevn' => '{{PLURAL:$1|$1}} anteriors',
@@ -1039,10 +1027,8 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'nextn-title' => 'Siguients $1 {{PLURAL:$1|resultau|resultaus}}',
 'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultau|resultaus}} por pachina',
 'viewprevnext' => 'Veyer ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcions de busca',
 'searchmenu-exists' => "'''Bi ha una pachina clamada \"[[\$1]]\" en ista wiki'''",
 'searchmenu-new' => "'''Creyar a pachina \"[[:\$1]]\" en ista wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Veyer pachinas con iste prefixo]]',
 'searchprofile-articles' => 'Pachinas de conteniu',
 'searchprofile-project' => "Pachinas d'aduya y d'o prochecto",
 'searchprofile-images' => 'Multimedia',
@@ -1070,13 +1056,10 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'showingresults' => "Contino se bi {{PLURAL:$1|amuestra '''1''' resultau|amuestran '''$1''' resultaus}} prencipiando por o numero '''$2'''.",
 'showingresultsnum' => "Contino se bi {{PLURAL:$3|amuestra '''1''' resultau|amuestran os '''$3''' resultaus}} prencipiando por o numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultau '''$1''' de '''$3'''|Resultaus '''$1-$2''' de '''$3'''}} ta '''$4'''",
-'nonefound' => "'''Pare cuenta''': Por defecto nomás se mira en bells espacios de nombres. Si quiere mirar en totz os contenius (incluyendo-ie pachinas de descusión, plantillas, etc), mire d'emplegar o prefixo ''all:'' u clave como prefixo o espacio de nombres deseyau.",
 'search-nonefound' => "No s'ha trobato garra resultau que cumpla os criterios.",
-'powersearch' => 'Busca abanzata',
 'powersearch-legend' => 'Busca abanzata',
 'powersearch-ns' => 'Mirar en os espacios de nombres:',
 'powersearch-redir' => 'Listar reendreceras',
-'powersearch-field' => 'Mirar',
 'powersearch-togglelabel' => 'Marcar:',
 'powersearch-toggleall' => 'Totz',
 'powersearch-togglenone' => 'Garra',
@@ -1087,8 +1070,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',
-'prefsnologintext' => 'Ha d\'haber <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} encetato una sesión] </span> ta cambiar as preferencias d\'usuario.',
 'changepassword' => 'Cambiar a clau',
 'prefs-skin' => 'Aparencia',
 'skin-preview' => 'Fer una prebatina',
@@ -1111,7 +1092,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'prefs-email' => 'Opcions de correu electronico',
 'prefs-rendering' => 'Apariencia',
 'saveprefs' => 'Alzar preferencias',
-'resetprefs' => "Tornar t'as preferencias por defecto",
 'restoreprefs' => 'Restaure todas as confeguracions por defecto',
 'prefs-editing' => 'Edición',
 'rows' => 'Ringleras:',
@@ -1129,7 +1109,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => "Usar a zona d'o servidor ($1)",
 'timezoneuseoffset' => 'Atra (especifica a esferencia)',
-'timezoneoffset' => 'Esferencia¹:',
 'servertime' => 'A hora en o servidor ye:',
 'guesstimezone' => "Emplir-lo con a hora d'o navegador",
 'timezoneregion-africa' => 'Africa',
@@ -1361,6 +1340,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',
@@ -1816,10 +1796,8 @@ Cada ringlera contién o vinclo t'a primer y segunda reendreceras, y tamién o d
 'protectedpages' => 'Pachinas protechitas',
 'protectedpages-indef' => 'Nomás proteccions indefinitas',
 'protectedpages-cascade' => 'Nomás proteccions en cascada',
-'protectedpagestext' => 'As siguients pachinas son protechitas contra edicions u treslaus',
 'protectedpagesempty' => 'En iste inte no bi ha garra pachina protechita con ixos parametros.',
 'protectedtitles' => 'Títols protechitos',
-'protectedtitlestext' => 'Os siguients títols son protechitos ta privar a suya creyación',
 'protectedtitlesempty' => 'En iste inte no bi ha garra títol protechito con ixos parametros.',
 'listusers' => "Lista d'usuarios",
 'listusers-editsonly' => 'Amostrar nomás usuarios con edicions',
@@ -3221,10 +3199,6 @@ Os campos de metadatos d'a imachen que amaneixen en iste mensache s'amostrarán
 'exif-urgency-high' => 'Alto ($1)',
 'exif-urgency-other' => "Prioridat definida por l'usuario ($1)",
 
-# External editor support
-'edit-externally' => 'Editar iste fichero fendo servir una aplicación externa',
-'edit-externally-help' => '(Ta más información, leiga as [https://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuración])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totz',
 'namespacesall' => 'totz',
@@ -3424,8 +3398,7 @@ Con iste programa ha d'haber recibiu [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia
 
 # Special:SpecialPages
 'specialpages' => 'Pachinas especials',
-'specialpages-note' => '----
-* Pachinas especials normals.
+'specialpages-note' => '* Pachinas especials normals.
 * <strong class="mw-specialpagerestricted">Pachinas especials restrinchitas.</strong>',
 'specialpages-group-maintenance' => 'Informes de mantenimiento',
 'specialpages-group-other' => 'Atras pachinas especials',
@@ -3596,4 +3569,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 996b3c3..0542d37 100644 (file)
@@ -11,6 +11,7 @@
  * @author Espreon
  * @author Gott wisst
  * @author JJohnson
+ * @author JJohnson1701
  * @author Omnipaedista
  * @author Shirayuki
  * @author Spacebirdy
 
 $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(
@@ -190,7 +199,6 @@ $messages = array(
 'qbedit' => 'Adihtan',
 'qbpageoptions' => 'Þes tramet',
 'qbmyoptions' => 'Mīne trametas',
-'qbspecialpages' => 'Syndrige trametas',
 'faq' => 'Oftost ascoda ascunga',
 'faqpage' => 'Project:FAQ',
 
@@ -237,7 +245,7 @@ $messages = array(
 'protect' => 'Beorgan',
 'protect_change' => 'Wendan',
 'protectthispage' => 'Beorgan þisne tramet',
-'unprotect' => 'Andwendan beorgunge',
+'unprotect' => 'Wendan beorgunge',
 'unprotectthispage' => 'Andwendan beorgune þisses trametes',
 'newpage' => 'Nīwe tramet',
 'talkpage' => 'Sprecan ymbe þisne tramet',
@@ -303,8 +311,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}}',
@@ -329,6 +335,8 @@ Seoh þone [[Special:Version|fadunge tramet]].',
 'page-rss-feed' => '$1 RSS strēam',
 'page-atom-feed' => '$1 Atom strēam',
 'red-link-title' => '$1 (tramet ne biþ)',
+'sort-descending' => 'sīgende behweorfan',
+'sort-ascending' => 'stīgende behweorfan',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Tramet',
@@ -368,11 +376,13 @@ Getæl gengra syndrigra trameta cann man findan be [[Special:SpecialPages|þǣm
 'badarticleerror' => 'Þēos dǣd ne cann bēon gefremed on þissum tramete.',
 'badtitle' => 'Nā genge titul',
 'viewsource' => 'Sēon fruman',
+'viewsource-title' => 'Fruman for $1 sēon',
 'cascadeprotected' => 'Þes trament wæs geborgen wiþ adihtunge, for þǣm þe hē is befangen in þissum {{PLURAL:$1|tramente, þe is| tramentum, þe sind}} geborgen settum wyrcende þǣm cyre "cascading": $2',
+'exception-nologin' => 'Ne inloggod',
 
 # Virus scanner
 'virus-badscanner' => 'Bad configuration: Unknown virus scanner: $1',
-'virus-unknownscanner' => 'unknown antivirus:',
+'virus-unknownscanner' => 'uncūþ andgund:',
 
 # Login and logout pages
 'logouttext' => "'''Þū eart nū ūtmeldod.'''
@@ -383,6 +393,7 @@ Cnāw þæt sume trametas mihten gīet wesan geīwde swā þū wǣre gīet inmel
 'yourname' => 'Þīn brūcendnama:',
 'userlogin-yourname' => 'Brūcendnama:',
 'userlogin-yourname-ph' => 'Inwrīt þīnne brūcendnaman',
+'createacct-another-username-ph' => 'Wrīt þone brūcendnaman in',
 'yourpassword' => 'Þafungword:',
 'userlogin-yourpassword' => 'Þafungword',
 'userlogin-yourpassword-ph' => 'Inwrīt þīn þafungword',
@@ -402,13 +413,15 @@ Cnāw þæt sume trametas mihten gīet wesan geīwde swā þū wǣre gīet inmel
 'logout' => 'Ūtmeldian',
 'userlogout' => 'Ūtmeldian',
 'notloggedin' => 'Nā ingemeldod',
-'userlogin-noaccount' => "Don't have an account?",
+'userlogin-noaccount' => 'Næfst þu hordcleofan?',
 'userlogin-joinproject' => 'Join {{SITENAME}}',
 'nologin' => 'Næfst þū reccinge? $1',
 'nologinlink' => 'Scieppan reccinge',
 'createaccount' => 'Scieppan reccinge',
 'gotaccount' => 'Hafast þū reccinge ǣr? $1.',
 'gotaccountlink' => 'Inmeldian',
+'userlogin-resetpassword-link' => 'Forgēate þū þīn gelēafword?',
+'helplogin-url' => 'Help:Inmeldung',
 'createaccountmail' => 'Notian sceortne tīman hlētlic þafungword and sendan hit to þǣm spearcǣrenda naman þe is niðer',
 'createaccountreason' => 'Racu:',
 'badretype' => 'Þā þafungword þe write þū, bēoþ ungelīc.',
@@ -427,7 +440,7 @@ Scēawa þīne wrītunge eft, oþþe [[Special:UserLogin/signup|sciepp nīwe rec
 'nosuchusershort' => 'Þǣr nis nān brūcend mid þǣm naman "$1".  Scēawa þīne wrītunge.',
 'passwordtooshort' => 'Þafungword sculon habban læst {{PLURAL:$1|1 stafan|$1 stafena}}.',
 'mailmypassword' => 'Sendan nīwe þafungword on spearcǣrende',
-'acct_creation_throttle_hit' => 'Hwæt, þu hæfst gēo geseted {{PLURAL:$1|1 hordcleofan|$1 -}}. Þu ne canst settan ǣnige māran.',
+'acct_creation_throttle_hit' => 'Nēosiende tō þissum wici, þe þīnne IP-Stōwe brȳcþ, hæfþ gesett {{PLURAL:$1|1 hordcleofan|$1 hordcleofan}} in þǣm læsten dæge. Þu ne canst settan ǣnige māran. Þǣrfram ne cunnon Nēosiende, þe þisne IP-Stōwe brȳcþ, settan ǣnige hordcleofan māran on þisse handhwīle.',
 'accountcreated' => 'Scōp reccinge',
 'loginlanguagelabel' => 'Sprǣc: $1',
 
@@ -439,6 +452,9 @@ Scēawa þīne wrītunge eft, oþþe [[Special:UserLogin/signup|sciepp nīwe rec
 'resetpass-submit-loggedin' => 'Andwendan þafungword',
 'resetpass-submit-cancel' => 'Undōn',
 
+# Special:PasswordReset
+'passwordreset-username' => 'Brūcendnama:',
+
 # Edit page toolbar
 'bold_sample' => 'Þicce traht',
 'bold_tip' => 'Þicce traht',
@@ -549,8 +565,8 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 'revdelete-hide-comment' => 'Hȳdan adihtunge sceortnesse',
 'revdelete-hide-user' => 'Hȳdan adihtendes brūcendnaman/IP address',
 'revdelete-radio-same' => '(nā andwendan)',
-'revdelete-radio-set' => 'Gēa',
-'revdelete-radio-unset' => 'Nese',
+'revdelete-radio-set' => 'Gehȳdd',
+'revdelete-radio-unset' => 'Gesīene',
 'revdel-restore' => 'andwendan īwunge',
 'pagehist' => 'Trametes stǣr',
 'revdelete-reasonotherlist' => 'Ōðru racu',
@@ -572,10 +588,6 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 # Search results
 'searchresults' => 'Sōcne wæstmas',
 'searchresults-title' => 'Sōcne wæstmas for "$1"',
-'searchresulttext' => 'Gif þū wille mā leornian ymbe þā sēcunge on {{SITENAME}}, seoh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Þū sōhtest '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Þū sōhtest '''$1'''",
-'notitlematches' => 'Nis þǣr nǣnig swilc tramet mid þǣm naman',
 'notextmatches' => 'Nis þǣr nǣnig swilc traht on nǣngum trametum',
 'prevn' => 'ǣror {{PLURAL:$1|$1}}',
 'nextn' => 'nīehst {{PLURAL:$1|$1}}',
@@ -599,17 +611,14 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 'searchall' => 'eall',
 'showingresults' => 'Īewan under oþ <b>$1</b> tōhīgunga onginnenda mid #<b>$2</b>.',
 'showingresultsnum' => 'Under sind <b>$3</b> tóhígunga onginnende mid #<b>$2</b>.',
-'powersearch' => 'Sēcan forþ',
 'powersearch-legend' => 'Manigfeald sēcung',
 'powersearch-ns' => 'Sēcan in namstedum:',
 'powersearch-redir' => 'Settan edlǣdunge on getæle',
-'powersearch-field' => 'Sēcan',
 'search-external' => 'Ūtanweard sōcn',
 
 # 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',
@@ -677,6 +686,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',
@@ -1217,9 +1227,6 @@ Cēos ōðerne naman lā.',
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Sōþ rihtung',
 
-# External editor support
-'edit-externally-help' => '(Sēon þā [https://www.mediawiki.org/wiki/Manual:External_editors gearwunge gewissunga] ymb mā cȳþþe)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'eall',
 'namespacesall' => 'eall',
index d4c86ac..5ef850a 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( 'صفحات_خاصة' ),
@@ -634,7 +641,6 @@ $messages = array(
 'qbedit' => 'عدل',
 'qbpageoptions' => 'هذه الصفحة',
 'qbmyoptions' => 'صفحاتي',
-'qbspecialpages' => 'الصفحات الخاصة',
 'faq' => 'الأسئلة المتكررة',
 'faqpage' => 'Project:أسئلة متكررة',
 
@@ -750,12 +756,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' => 'عدل',
@@ -855,9 +859,6 @@ $1',
 'perfcachedts' => 'البيانات التالية مخبّأة وكان آخر تحديث لها في $1. {{PLURAL:$4||نتيجة واحدة|نتيجتان|$4 نتائج|$4 نتيجة}} على الأكثر {{PLURAL:$4||مخبّأة|مخبّأتان|مخبّأة}}.',
 'querypage-no-updates' => 'تحديثات هذه الصفحة معطلة حاليا.
 البيانات هنا لن يتم تحديثها حاليا.',
-'wrong_wfQuery_params' => 'معاملات خاطئة في wfQuery()<br />
-الدالة: $1<br />
-الاستعلام: $2',
 'viewsource' => 'اعرض المصدر',
 'viewsource-title' => 'استعرض مصدر $1',
 'actionthrottled' => 'تم كبح الفعل',
@@ -889,7 +890,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 +1115,7 @@ $2
 'resettokens-legend' => 'غير المفاتيح',
 'resettokens-tokens' => 'مفاتيح:',
 'resettokens-token-label' => '$1 (القيمة الحالية: $2)',
+'resettokens-watchlist-token' => 'رمز تغذية الوب (آتوم/آس إس إس) [[Special:Watchlist|للتغيرات التي على قائمة مراقبتك]]',
 'resettokens-done' => 'تغيير المفاتيح',
 'resettokens-resetbutton' => 'غير المفاتيح المختارة',
 
@@ -1453,15 +1456,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' => 'مخفي',
@@ -1558,12 +1562,8 @@ $1",
 # Search results
 'searchresults' => 'نتائج البحث',
 'searchresults-title' => 'نتائج البحث عن "$1"',
-'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' => 'نص الصفحة يطابق',
 'notextmatches' => 'لم يتم إيجاد أي نص مطابق',
 'prevn' => '{{PLURAL:$1|$1}} السابقة',
@@ -1572,10 +1572,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} تالية',
 'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
 'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'خيارات البحث',
 'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
 'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|تصفح الصفحات بهذه البادئة]]',
 'searchprofile-articles' => 'صفحات المحتوى',
 'searchprofile-project' => 'صفحات المساعدة والمشروع',
 'searchprofile-images' => 'الوسائط المتعددة',
@@ -1603,14 +1601,10 @@ $1",
 'showingresults' => "معروض بالأسفل {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} بدءا من رقم '''$2'''.",
 'showingresultsnum' => "معروض بالأسفل {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} بدءا من رقم'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
-'nonefound' => "'''ملاحظة''': فقط بعض النطاقات يتم البحث فيها افتراضيا.
-حاول بدء استعلامك ب ''all:'' للبحث في كل المحتوى (شاملا صفحات النقاش، القوالب، إلى آخره)، أو استخدم النطاق المطلوب كبادئة.",
 'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
-'powersearch' => 'بحث متقدم',
 'powersearch-legend' => 'بحث متقدم',
 'powersearch-ns' => 'بحث في النطاقات:',
 'powersearch-redir' => 'عرض التحويلات',
-'powersearch-field' => 'بحث عن',
 'powersearch-togglelabel' => 'اختر:',
 'powersearch-toggleall' => 'الكل',
 'powersearch-togglenone' => 'لا شيء',
@@ -1624,8 +1618,7 @@ $1",
 'preferences' => 'تفضيلات',
 'mypreferences' => 'تفضيلات',
 'prefs-edits' => 'عدد التعديلات:',
-'prefsnologin' => 'غير مسجل الدخول',
-'prefsnologintext' => 'يجب أن تكون <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} مسجل الدخول]</span>  حتى تتمكن من تعديل تفضيلات المستخدم.',
+'prefsnologintext2' => 'الرجاء $1 لضبط تفضيلات المستخدم.',
 'changepassword' => 'غير كلمة السر',
 'prefs-skin' => 'واجهة',
 'skin-preview' => 'عرض مسبق',
@@ -1649,7 +1642,6 @@ $1",
 'prefs-email' => 'خيارات البريد الإلكتروني',
 'prefs-rendering' => 'المظهر',
 'saveprefs' => 'احفظ',
-'resetprefs' => 'أزل التغييرات غير المحفوظة',
 'restoreprefs' => 'إسترجع كل الإعدادات الافتراضية',
 'prefs-editing' => 'التحرير',
 'rows' => 'صفوف:',
@@ -1669,7 +1661,6 @@ $1",
 'localtime' => 'الوقت المحلي:',
 'timezoneuseserverdefault' => 'استخدام الويكي الافتراضي ($1)',
 'timezoneuseoffset' => 'آخر (حدد الفرق)',
-'timezoneoffset' => 'الفرق¹:',
 'servertime' => 'وقت الخادوم:',
 'guesstimezone' => 'أدخل التوقيت من المتصفح',
 'timezoneregion-africa' => 'أفريقيا',
@@ -1923,6 +1914,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',
@@ -2433,10 +2425,8 @@ $1',
 'protectedpages' => 'صفحات محمية',
 'protectedpages-indef' => 'عمليات الحماية غير المحددة فقط',
 'protectedpages-cascade' => 'الحماية المضمنة فقط',
-'protectedpagestext' => 'الصفحات التالية محمية من النقل أو التعديل',
 'protectedpagesempty' => 'لا توجد صفحات محمية حاليا بهذه المحددات.',
 'protectedtitles' => 'عناوين محمية',
-'protectedtitlestext' => 'العناوين التالية محمية ضد الإنشاء',
 'protectedtitlesempty' => 'لا توجد عناوين محمية حاليا بهذه المحددات.',
 'listusers' => 'قائمة الأعضاء',
 'listusers-editsonly' => 'اعرض المستخدمين الذين أجروا تعديلات فقط',
@@ -2730,7 +2720,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.',
 
@@ -2876,7 +2866,7 @@ $1',
 'contributions' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمة}}',
 'contributions-title' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمة}} $1',
 'mycontris' => 'مساهماتي',
-'contribsub2' => 'ل$1 ($2)',
+'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'لم يتم العثور على تغييرات تطابق هذه المحددات.',
 'uctop' => 'حالي',
 'month' => 'من شهر (وأقدم):',
@@ -3508,7 +3498,7 @@ $1',
 'svg-long-desc' => 'ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3',
 'svg-long-desc-animated' => 'ملف SVG متحرك، بمقاسات  $1  ×  $2  بكسل، حجم الملف: $3',
 'svg-long-error' => 'ملف SVG غير صالح: $1',
-'show-big-image' => 'دÙ\82Ø© Ù\83اÙ\85Ù\84Ø©',
+'show-big-image' => 'اÙ\84Ù\85Ù\84Ù\81 Ø§Ù\84أصÙ\84Ù\8a',
 'show-big-image-preview' => 'حجم هذه المعاينة: $1.',
 'show-big-image-other' => '{{PLURAL:$2||البعد الآخر|البعدان الآخران|الأبعاد الأخرى}}: $1.',
 'show-big-image-size' => '$1 × $2 بكسل',
@@ -4008,10 +3998,6 @@ $1',
 'exif-urgency-high' => 'عالي ( $1 )',
 'exif-urgency-other' => 'الأولوية محددة من قبل المستخدم ($1)',
 
-# External editor support
-'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'الكل',
 'namespacesall' => 'الكل',
@@ -4310,7 +4296,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' => 'الوجهة',
@@ -4332,10 +4318,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'الصفحات الخاصة',
-'specialpages-note' => '----
-* صفحات خاصة عادية.
-* <span class="mw-specialpagerestricted">صفحات خاصة للمخولين.</span>
-* <span class="mw-specialpagecached">صفحات خاصة لبيانات مخزنة فقط (قد تكون مهجورة).</span>',
+'specialpages-note-top' => 'المفتاح',
+'specialpages-note' => '* صفحات خاصة عادية.
+* <span class="mw-specialpagerestricted">صفحات خاصة للمخولين.</span>',
 'specialpages-group-maintenance' => 'تقارير الصيانة',
 'specialpages-group-other' => 'صفحات خاصة أخرى',
 'specialpages-group-login' => 'دخول / إنشاء حساب',
@@ -4541,4 +4526,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 33b463c..b4e6e74 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ܒܪܝ_ܚܘܫܒܢܐ' ),
        'Deadendpages'              => array( 'ܦܐܬܬ̈ܐ_ܥܡ_ܚܪܬܐ_ܡܝܬܬܐ' ),
        'DeletedContributions'      => array( 'ܫܘܬܦܘ̈ܬܐ_ܫܝ̈ܦܬܐ' ),
-       'Disambiguations'           => array( 'ܬܘܚܡ̈ܐ_ܐܚܪ̈ܢܐ' ),
        'DoubleRedirects'           => array( 'ܨܘܝܒ̈ܐ_ܥܦܝ̈ܦܐ' ),
        'EditWatchlist'             => array( 'ܫܚܠܦ_ܪ̈ܗܝܬܐ' ),
        'Emailuser'                 => array( 'ܫܕܪ_ܒܝܠܕܪܐ_ܐܠܩܛܪܘܢܝܐ_ܠܡܦܠܚܢܐ' ),
@@ -249,7 +248,6 @@ $messages = array(
 'qbedit' => 'ܫܚܠܦ',
 'qbpageoptions' => 'ܗܕܐ ܦܐܬܐ',
 'qbmyoptions' => 'ܦܐܬܬ̈ܐ ܕܝܠܝ',
-'qbspecialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 
@@ -307,7 +305,7 @@ $messages = array(
 'articlepage' => 'ܚܘܝܝܐ ܕܦܐܬܐ ܕܚܒܝܫܬ̈ܐ',
 'talk' => 'ܡܡܠܠܐ',
 'views' => 'ܚܙܝܬ̈ܐ',
-'toolbox' => 'ܣܢÜ\95Ü\98Ü©Ü\90 Ü\95Ü¡Ü\90Ü¢Ì\88Ü\90',
+'toolbox' => 'ܡܐܢ̈ܐ',
 'userpage' => 'ܚܙܝ ܦܐܬܐ ܕܡܦܠܚܢܐ',
 'projectpage' => 'ܚܙܝ ܦܐܬܐ ܕܬܪܡܝܬܐ',
 'imagepage' => 'ܚܙܝ ܦܐܬܐ ܕܠܦܦܐ',
@@ -358,12 +356,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 +622,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' => 'ܬܢܝܬ̈ܐ ܫܝܦ̈ܐ',
@@ -673,11 +669,7 @@ $1',
 # Search results
 'searchresults' => 'ܦܠܛ̈ܐ ܕܒܨܝܐ',
 'searchresults-title' => 'ܦܠܛ̈ܐ ܕܒܨܝܐ ܥܠ "$1"',
-'searchresulttext' => 'ܠܝܬܝܪ ܝܕ̈ܥܬܐ ܥܠ ܒܨܝܐ ܒ {{SITENAME}}, ܚܙܝ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'ܒܨܐ ܐܢܬ ܥܠ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ܟܠ ܦܐܬܬ̈ܐ ܕܫܪܝܢ ܒ"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ܟܠ ܦܐܬܬ̈ܐ ܕܐܣܪܝܢ ܥܡ "$1"]])',
-'searchsubtitleinvalid' => "ܒܨܐ ܐܢܬ ܥܠ '''$1'''",
 'titlematches' => 'ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
-'notitlematches' => 'ܠܝܬ ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
 'textmatches' => 'ܟܬܒܬܐ ܐܘܝܢܬܐ',
 'notextmatches' => 'ܠܝܬ ܟܬܒܬܐ ܐܘܝܢܬܐ',
 'prevn' => '{{PLURAL:$1|$1}} ܕܩܕܡ',
@@ -686,7 +678,6 @@ $1',
 'nextn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܕܒܬܪ',
 'shown-title' => 'ܚܘܝ $1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܠܟܠ ܦܐܬܐ',
 'viewprevnext' => 'ܚܘܝ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'searchmenu-exists' => "'''ܐܝܬ ܦܐܬܐ ܒܫܡ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ'''",
 'searchmenu-new' => "'''ܒܪܝ ܦܐܬܐ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ!'''",
 'searchprofile-articles' => 'ܦܐܬܬ̈ܐ ܕܚܒܝܫܬ̈ܐ',
@@ -713,11 +704,9 @@ $1',
 'showingresultsnum' => "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$3|'''ܚܕ ܦܠܛܐ'''|'''$3''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''",
 'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝܢ̈ܐ ܠܗܢܐ ܒܨܝܐ.',
-'powersearch' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-legend' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-ns' => 'ܒܨܝ ܒܚܩܠܬ̈ܐ:',
 'powersearch-redir' => 'ܚܘܝ ܨܘܝܒ̈ܐ',
-'powersearch-field' => 'ܒܨܝ ܥܠ',
 'powersearch-togglelabel' => 'ܓܒܝ:',
 'powersearch-toggleall' => 'ܟܠ',
 'powersearch-togglenone' => 'ܠܐ ܡܕܡ',
@@ -727,7 +716,6 @@ $1',
 'preferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
 'mypreferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
 'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
-'prefsnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
 'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
 'prefs-skin' => 'ܓܠܕܐ',
 'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
@@ -744,7 +732,6 @@ $1',
 'prefs-email' => 'ܓܒܝܬ̈ܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 'prefs-rendering' => 'ܐܣܟܝܡܐ',
 'saveprefs' => 'ܠܒܘܟ',
-'resetprefs' => 'ܡܫܝ ܫܘܚܠܦ̈ܐ ܠܐ ܠܒܝܟ̈ܐ',
 'prefs-editing' => 'ܫܚܠܦܬܐ',
 'rows' => 'ܨ̈ܦܐ',
 'columns' => 'ܥܡܘܕ̈ܐ:',
@@ -892,6 +879,7 @@ $1',
 'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
+'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
 'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
 'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
@@ -1115,7 +1103,6 @@ $1',
 'deadendpages' => 'ܦܐܬܬ̈ܐ ܥܡ ܚܪܬܐ ܡܝܬܬܐ',
 'protectedpages' => 'ܦܐܬܬ̈ܐ ܢܛܝܪ̈ܬܐ',
 'protectedtitles' => 'ܟܘܢܝ̈ܐ ܢܛܝܪ̈ܐ',
-'protectedtitlestext' => 'ܟܘܢܝ̈ܐ ܗܠܝܢ ܢܛܝܪ̈ܐ ܐܢܘܢ ܠܘܩܒܠ ܒܪܝܐ',
 'protectedtitlesempty' => 'ܠܝܬ ܟܘܢܝ̈ܐ ܢܛܝܪ̈ܐ ܗܫܐܝܬ ܥܡ ܗܠܝܢ ܦܪ̈ܘܫܝܐ',
 'listusers' => 'ܡܟܬܒܘܬܐ ܕܗܕ̈ܡܐ',
 'listusers-editsonly' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܥܡ ܫܘܚܠܦ̈ܐ ܒܠܚܘܕ',
@@ -1628,7 +1615,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 ܦܩܣܠ',
 
@@ -1794,8 +1781,7 @@ $1',
 
 # Special:SpecialPages
 'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
-'specialpages-note' => '----
-* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
+'specialpages-note' => '* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
 * <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
 'specialpages-group-maintenance' => 'ܬܫܪܪ̈ܐ ܕܚܕܬܘܬܐ',
 'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
@@ -1862,4 +1848,10 @@ $1',
 'searchsuggest-search' => 'ܒܨܝ',
 'searchsuggest-containing' => 'ܬܚܒܘܫ...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ܐܪܘܚ ܩܠܒ̈ܐ',
+'expand_templates_output' => 'ܦܠܛܐ',
+'expand_templates_ok' => 'ܛܒ',
+'expand_templates_preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
+
 );
index 4d58115..f4ff02e 100644 (file)
@@ -111,7 +111,6 @@ $messages = array(
 'qbedit' => 'Pepikape',
 'qbpageoptions' => 'Tüfachi wülngiñ',
 'qbmyoptions' => 'tañi nütramkawe',
-'qbspecialpages' => 'Kangelu',
 'faq' => 'Rumelfemkelu ramtun',
 'faqpage' => 'Project:FAQ',
 
@@ -203,8 +202,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',
@@ -426,13 +423,10 @@ Rulpakünuy feychi kangelkülelu dungu.",
 'searchall' => 'kom',
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' ñi tripalu '''$3''' mew|'''$1-$2''' ñi tripalu '''$3''' mew}} '''$4''' ngealu",
 'search-nonefound' => 'Tripalu dungu falilay chumngechi kintuael.',
-'powersearch' => 'Kintun',
-'powersearch-field' => 'Kintun',
 
 # 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 +489,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',
@@ -901,10 +896,6 @@ Ka dungu ellkangeay wünedullin reke.
 
 'exif-subjectdistancerange-0' => 'Kimnoelchi',
 
-# External editor support
-'edit-externally' => 'Kümeelün tüfachi eltukawün wekun küdauwe mew',
-'edit-externally-help' => '(Pen feychi [https://www.mediawiki.org/wiki/Manual:External_editors adtukünun chumngechi pünengeael]  doy dungungeam)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kom',
 'namespacesall' => 'kom',
index 9f237a4..016fda0 100644 (file)
@@ -159,7 +159,6 @@ $messages = array(
 'qbedit' => 'Ĝedel',
 'qbpageoptions' => "Had 'ṣ-ṣefḫa",
 'qbmyoptions' => "'Ṣ-Ṣefḫaṫ dyawli",
-'qbspecialpages' => 'Ṣefḫaṫ ĥaṣṣin',
 'faq' => 'asaila kaytaawdo bzaf',
 'faqpage' => 'Project:asaila kaytaawdo',
 
@@ -276,8 +275,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',
@@ -366,9 +363,6 @@ ymkn ikon ċi waḫd aĥor ḫdfo.',
 'perfcachedts' => 'l-bayanaṫ ṫ-ṫalia kayna f-lcache, o-ṫḫddṫaṫ aĥir mrra f-$1.',
 'querypage-no-updates' => 'ṫḫdiṫad dial had ṣfḫa ma ĥḍḍamaċ daba.
 l-bayanaṫ lli kayna hna daba maĥadiċ ṫṫḫḍḍṫ.',
-'wrong_wfQuery_params' => 'parametrat ġalta l-wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Ċof l-ĝin',
 'actionthrottled' => 'had l-feĝl ṫṫḫbs',
 'actionthrottledtext' => 'baċ nṫfadaw ṣ-ṣpam, ĝadad l-mṛṛaṫ lli ymkn ddir fiha had l-feĝl f-modda qṣiṛa rah mḫdod, o-nta rak fṫṫi had l-ĝadar.
@@ -888,12 +882,8 @@ $1",
 # Search results
 'searchresults' => "N-Naṫa'ij dyal l-beḫṫ",
 'searchresults-title' => 'N-Naṫa\'ij dyal l-beḫṫ ĝla "$1"',
-'searchresulttext' => 'Ila bġiṫi kṫer de l-meĝlomaṫ ĝla {{SITENAME}}, ċof [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Qelebṫiw ĝla « '''[[:$1]]''' » ([[Special:Prefixindex/$1|ṣ-ṣefḫaṫ kolhom li badyin be « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ṣ-ṣefḫaṫ kolhom li mlaqyin mĝa « $1 »]])",
-'searchsubtitleinvalid' => "Qellebṫi ĝla '''$1'''",
 'toomanymatches' => 'bzzaf dl-motabaqaṫ ṫrddaṫ, ċof ċi talab aĥor',
 'titlematches' => 'onwan sfha yotabiq',
-'notitlematches' => 'Ḫṫa ċi neṣ ma mlaqi mĝa dak ċ-ċi l-li kaṫ-qelleb ĝlih',
 'textmatches' => 'neṣ sfha kaytabq',
 'notextmatches' => 'Ḫṫa ċi neṣ ma mlaqi mĝa dakċi li kaṫqelleb ĝlih',
 'prevn' => 'L-Li qbel {{PLURAL:$1|$1}}',
@@ -902,10 +892,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|naṫija|naṫayj}} lli bĝd',
 'shown-title' => 'wrri $1 {{PLURAL:$1|naṫija|naṫayj}} f-ṣṣfḫa',
 'viewprevnext' => 'Ċof ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'khiyarat lbaht',
 'searchmenu-exists' => "'''ḫṫṫa ṣfḫa f-had l-wiki ma smiṫha \"[[:\$1]]\".'''",
 'searchmenu-new' => "'''ṣayb f-had l-wiki ṣfḫṫ \"[[:\$1]]\"!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ṫṣffeh ṣfaḫi b-had ṣ-ṣabiqa]]',
 'searchprofile-articles' => 'sfht mohtawa',
 'searchprofile-project' => 'sfhai dyal lmossada ol mchroa',
 'searchprofile-images' => 'media',
@@ -933,14 +921,10 @@ $1",
 'showingresults' => "mbyyena l-ṫḫṫ ḫṫṫa l-{{PLURAL:$3|'''1''' n-naṫija|'''$3''' d-nnaṫa'ij}} badya mn rqm '''$2'''.",
 'showingresultsnum' => "mbyyena l-ṫḫṫ {{PLURAL:$3|'''1''' n-naṫija|'''$3''' d-nnaṫa'ij}} badya mn rqm '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|n-naṫija '''$1''' mn '''$3'''|n-naṫa'ij '''$1 - $2''' mn '''$3'''}} l-'''$4'''",
-'nonefound' => "'''Molaḫada''': Ma kayen ġir weḫdin men l-blaṣaṫ dyal s-smiyyaṫ li kanqellbo ĝlihom otomaṫikiyan.
-Jerreb be l-préfiks \"all:\" baċ ṫqelleb ĝla l-meḍmon kollo (o ḫṫa ṣ-ṣefḫaṫ dyal n-niqaċ, l-modélaṫ, etc.) ola ṣṫeĝmel l-blaṣa dyal s-smiyya li bġiṫi bḫal ċi préfiks.",
 'search-nonefound' => 'ḫṫṫa naṫija ma bḫal ḫad t-talab.',
-'powersearch' => 'Ṫeqlab ṣĝib',
 'powersearch-legend' => 'Ṫeqlab ṣĝib',
 'powersearch-ns' => 'Qelleb fe maḫel s-smiyyaṫ',
 'powersearch-redir' => "Lisṫaṫ 'ṫ-ṫeḫwilaṫ",
-'powersearch-field' => 'Qeleb ĝla',
 'powersearch-togglelabel' => 'Ĥṫar',
 'powersearch-toggleall' => 'Kolċi',
 'powersearch-togglenone' => 'Walo',
@@ -953,8 +937,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',
-'prefsnologintext' => 'ĥaṣṣk ṫkon  <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} daĥol]</span> baċ ṫĝyyer ṫfḍilaṫ l-moṣṫĥdim.',
 'changepassword' => 'tbdl lmot de passe',
 'prefs-skin' => 'skin',
 'skin-preview' => 'L-Prévizualizasyon',
@@ -975,7 +957,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'prefs-email' => "reglage dyal l'email",
 'prefs-rendering' => "l'apparence",
 'saveprefs' => 'sjl',
-'resetprefs' => 'hiyd tgyirat li mamsjlach',
 'restoreprefs' => 'rjaa kaml liadadat liftiradiya',
 'prefs-editing' => 'thrir',
 'rows' => 'sofof:',
@@ -993,7 +974,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'localtime' => 'Lwaqt lmahali :',
 'timezoneuseserverdefault' => 'stakhdm iftirad serveur',
 'timezoneuseoffset' => 'khor (hdd lfarq)',
-'timezoneoffset' => 'Lfarq¹:',
 'servertime' => 'wqt serveur',
 'guesstimezone' => 'dkhl twqit mn navigateur',
 'timezoneregion-africa' => 'Ifriqya',
@@ -2455,10 +2435,6 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
 'exif-urgency-high' => 'ĝalia ($1)',
 'exif-urgency-other' => 'l-awlawiyya lli ḫddadha l-mosṫĥdim ($1)',
 
-# External editor support
-'edit-externally' => 'Ṣayeb had l-fiċyé be ċi aplikasyon ĥarijiya',
-'edit-externally-help' => '(Ċof [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] ila ḫṫajiṫi meĝlomaṫ ĥrin)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kolċi',
 'namespacesall' => 'kolċi',
index 41042ec..ff8945e 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' => 'المناقشة مع عنوان الأيبى دا',
@@ -447,7 +460,6 @@ $messages = array(
 'qbedit' => 'عدل',
 'qbpageoptions' => ' الصفحه دى',
 'qbmyoptions' => 'صفحاتى',
-'qbspecialpages' => 'الصفحات الخاصة',
 'faq' => 'اسئله بتتسئل كتير',
 'faqpage' => 'Project:اسئله بتتسئل كتير',
 
@@ -458,6 +470,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 +480,7 @@ $messages = array(
 'namespaces' => 'النطاقات',
 'variants' => 'المتغيرات',
 
+'navigation-heading' => 'لستة التصفح',
 'errorpagetitle' => 'غلطه',
 'returnto' => 'ارجع ل $1.',
 'tagline' => 'من ويكيبيديا, الموسوعه الحره',
@@ -481,13 +495,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 +549,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 +576,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 +590,8 @@ $1',
 'toc' => 'المحتويات',
 'showtoc' => 'عرض',
 'hidetoc' => 'تخبية',
+'collapsible-collapse' => 'خبى',
+'collapsible-expand' => 'اتوسع',
 'thisisdeleted' => 'عرض او استرجاع $1؟',
 'viewdeleted' => 'عرض $1؟',
 'restorelink' => '{{PLURAL:$1|تعديل واحد ملغي|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغي|$1 تعديل ملغي}}',
@@ -582,6 +603,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,20 +664,20 @@ $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 />
-الخاصّيه: $1<br />
-الاستعلام: $2',
 '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 +692,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''أنت دلوقتى مش مسجل دخولك.'''
 
-تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو <span class='plainlinks'>[$1 الدخول مرة تانيه]</span> بنفس الاسم أو باسم تاني.
+تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو [[Special:UserLogin|الدخول مرة تانيه]] بنفس الاسم أو باسم تاني.
 ممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية فى المتصفح بتاعك.",
 'yourname' => 'اليوزرنيم:',
 'yourpassword' => 'الباسوورد:',
@@ -691,7 +714,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 +764,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 +778,7 @@ $2',
 
 لو سمحت تتجاهل الرسالة دى اذا الحساب دا اتفتحلك بالغلط.',
 'usernamehasherror' => 'اسم اليوزر مش ممكن يكون فيه حروف هاش',
-'login-throttled' => 'انت عملت  محاولات لوجين كتيره حديثة على الحساب ده.
+'login-throttled' => 'انت عملت  محاولات لوجين كتيره  ع الحساب ده.
 من فضلك استنى قبل المحاولة مرة تانيه.',
 'loginlanguagelabel' => 'اللغة: $1',
 
@@ -768,7 +791,7 @@ $2',
 'newpassword' => 'الباسورد جديدة:',
 'retypenew' => 'اكتب الباسورد الجديده تانى:',
 'resetpass_submit' => 'اظبط الباسورد و ادخل',
-'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح! دلوقتى  بنسجل دخولك...',
+'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح!',
 'resetpass_forbidden' => 'مش ممكن تغيير الباسورد',
 'resetpass-no-info' => 'لازم تسجل دخولك علشان تقدر توصل للصفحة دى على طول.',
 'resetpass-submit-loggedin' => 'غير الباسورد',
@@ -857,7 +880,7 @@ $2',
 'accmailtitle' => ' كلمة السر اتبعتت .',
 'accmailtext' => "الباسورد العشوائيه اللى اتعملت لـ[[User talk:$1|$1]]  اتبعتت لـ $2.
 
-الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''  وقت تسجيل الدخول.",
+الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''   بعد  تسجيل الدخول.",
 'newarticle' => '(جديد)',
 'newarticletext' => "انت وصلت لصفحه مابتدتش لسه.
 علشان  تبتدى الصفحة ابتدى الكتابه فى الصندوق اللى تحت.
@@ -926,12 +949,12 @@ $2',
 'copyrightwarning2' => "لو سمحت تعمل حسابك ان كل مشاركاتك فى {{SITENAME}} ممكن المشاركين التانيين يعدلوها،يغيروها، او يمسحوها خالص. لو مانتش حابب ان كتاباتك تتعدل و تتغير بالشكل دا، فياريت ما تنشرهاش هنا.<br />.
 و كمان انت بتدينا كلمة شرف  انك صاحب الكتابات دي، او انك نقلتها من مكان مش خاضع لحقوق النشر .(شوف التفاصيل فى $1 ).
 '''لو سمحت ما تحطش هنا اى نص خاضع لحقوق النشر من غير تصريح!'''.",
-'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو $2 كيلوبايت.
+'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.
 مش ممكن يتحفظ.'''",
-'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلوقاي.
+'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلواتى.
 لو حبيت ممكن  تنسخ النص وتحفظه فى ملف نصى علشان تستعمله بعدين.'''
 
-الإدارى اللى أغلقها أعطى هذا التفسير: $1",
+الإدارى اللى قفلها كتب السبب دا $1",
 'protectedpagewarning' => "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرات السيسوبات هما بس اللى يقدرو يعدلوها.'''
 اخر سجل محطوط تحت علشان المراجعه:",
 'semiprotectedpagewarning' => "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.
@@ -1031,7 +1054,7 @@ $2',
 حاول [[Special:Search|التدوير فى الويكى]] عن صفحات جديدة ليها صلة.',
 
 # Revision deletion
-'rev-deleted-comment' => '(التعليق اتشال)',
+'rev-deleted-comment' => '( ملخص التعديل اتمسح)',
 'rev-deleted-user' => '(اسم اليوزر اتشال)',
 'rev-deleted-event' => '(السجل إتشال)',
 'rev-deleted-user-contribs' => '[اسم اليوزر أو الآى بى اتشال - التعديل مخفى من المساهمات]',
@@ -1171,12 +1194,8 @@ $1",
 # Search results
 'searchresults' => 'نتايج التدوير',
 'searchresults-title' => 'نتايج التدوير على "$1"',
-'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' => 'نص الصفحة بيطابق',
 'notextmatches' => 'ما لقيناش أى نص مطابق',
 'prevn' => '{{PLURAL:$1|$1}} اللى قبل كده',
@@ -1185,10 +1204,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|النتيجه|النتايج}}  $1 اللى بعد كدا.',
 'shown-title' => 'اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه',
 'viewprevnext' => 'شوف ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'اختيارات التدوير',
 'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
 'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|استعرض الصفحات اللى بتبتدى بالبريفيكس دا]]',
 'searchprofile-articles' => 'صفحات محتوى',
 'searchprofile-project' => 'صفحات  المساعده و المشروع',
 'searchprofile-images' => 'مالتيميديا',
@@ -1216,14 +1233,10 @@ $1",
 'showingresults' => "القائمة دى بتعرض {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} من أول  رقم '''$2'''.",
 'showingresultsnum' => "معروض تحت {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} من أول من رقم'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|النتيجه '''$1''' من'''$3'''|النتايج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
-'nonefound' => "'''ملاحظة''': فى شوية اسامى مساحات بس بيتدور فيها اوتوماتيكى.
-حاول تبتدى تدويرك بـ ''all:'' علشان تدور فى المحتوى كله (مع صفح المناقشه, القوالب, الخ), او استعمل اسم المساحه المطلوب اللى تدور فيه.",
 'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
-'powersearch' => 'تدوير متفصل',
 'powersearch-legend' => 'تدوير متقدم',
 'powersearch-ns' => 'تدوير فى اسم المساحه:',
 'powersearch-redir' => 'لستة التحويلات',
-'powersearch-field' => 'تدوير على',
 'powersearch-togglelabel' => 'التشييك:',
 'powersearch-toggleall' => 'الكل',
 'powersearch-togglenone' => 'و لا حاجه',
@@ -1236,8 +1249,6 @@ $1",
 'preferences' => 'تفضيلات',
 'mypreferences' => 'تفضيلاتى',
 'prefs-edits' => 'عدد التعديلات:',
-'prefsnologin' => 'مش متسجل',
-'prefsnologintext' => 'لازم تكون <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} مسجل الدخول]</span> علشان تقدر تعدل تفضيلاتك.',
 'changepassword' => 'غير الباسورد',
 'prefs-skin' => 'الوش',
 'skin-preview' => 'بروفه',
@@ -1258,7 +1269,6 @@ $1",
 'prefs-email' => 'اختيارات الايميل',
 'prefs-rendering' => 'المنظر',
 'saveprefs' => 'حفظ',
-'resetprefs' => 'امسح التغييرات اللى مش المحفوظة',
 'restoreprefs' => 'استرجع التظبيطات الاصليه',
 'prefs-editing' => 'تعديل',
 'rows' => 'صفوف:',
@@ -1276,7 +1286,6 @@ $1",
 'localtime' => 'التوقيت المحلى',
 'timezoneuseserverdefault' => 'استخدم افتراض السرفر',
 'timezoneuseoffset' => 'تانى (حدد الفرق)',
-'timezoneoffset' => 'فرق¹',
 'servertime' => 'وقت السيرفر',
 'guesstimezone' => 'دخل التوقيت من البراوزر',
 'timezoneregion-africa' => 'افريقيا',
@@ -1504,6 +1513,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',
@@ -1525,7 +1535,7 @@ $1",
 'rc_categories' => 'حصر لتصنيفات (مفصولة برمز "|")',
 'rc_categories_any' => 'أى',
 'newsectionsummary' => '/* $1 */ قسم جديد',
-'rc-enhanced-expand' => 'عرض التفاصيل (يتطلب جافاسكريبت)',
+'rc-enhanced-expand' => '[اعرض التفاصيل]',
 'rc-enhanced-hide' => 'إخفاء التفاصيل',
 
 # Recent changes linked
@@ -1891,10 +1901,8 @@ PICT # misc.
 'protectedpages' => 'صفحات محميه',
 'protectedpages-indef' => 'عمليات الحماية اللى مش متحددة بس',
 'protectedpages-cascade' => 'الحماية المتضمنة بس',
-'protectedpagestext' => 'الصفحات دى محمية من النقل أو التعديل',
 'protectedpagesempty' => 'مافيش  صفحات محمية دلوقتى  على حسب المحددات دي.',
 'protectedtitles' => 'عناوين محمية',
-'protectedtitlestext' => 'العناوين دى محمية ضد الإنشاء',
 'protectedtitlesempty' => 'مافيش عناوين محمية دلوقتى على حسب المحددات دي.',
 'listusers' => 'لستة الأعضاء',
 'listusers-editsonly' => 'عرض اليوزرز اللى قاموا بتعديلات فقط',
@@ -2286,7 +2294,7 @@ $1',
 'contributions' => 'تعديلات اليوزر {{GENDER:$1|اليوزر|اليوزره}}',
 'contributions-title' => 'مساهمات اليوزر ل$1',
 'mycontris' => 'تعديلاتى',
-'contribsub2' => 'لليوزر $1 ($2)',
+'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'مالقيناش   تغييرات تطابق المحددات دي.',
 'uctop' => '(آخر تعديل)',
 'month' => 'من شهر (واللى قبل كده):',
@@ -2785,7 +2793,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|برواز|براويز}}',
 
@@ -3105,10 +3113,6 @@ $1',
 'exif-gpsdirection-t' => 'الاتجاه الحقيقي',
 'exif-gpsdirection-m' => 'الاتجاه المغناطيسي',
 
-# External editor support
-'edit-externally' => 'استعمل تطبيق من بره علشان تعدل الملف دا',
-'edit-externally-help' => '(بص على [https://www.mediawiki.org/wiki/Manual:External_editors  تعليمات الاعداد] علشان معلومات اكتر.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'الكل',
 'namespacesall' => 'الكل',
@@ -3344,8 +3348,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'صفح مخصوصه',
-'specialpages-note' => '----
-* صفحات خاصة عادية.
+'specialpages-note' => '* صفحات خاصة عادية.
 * <strong class="mw-specialpagerestricted">صفحات خاصة للناس اللى مسموح لهم.</strong>',
 'specialpages-group-maintenance' => 'تقارير الصيانة',
 'specialpages-group-other' => 'صفحات خاصه تا نيه',
@@ -3421,4 +3424,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 4dcd050..5faa151 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' ),
@@ -340,7 +338,6 @@ $messages = array(
 'qbedit' => 'সম্পাদনা',
 'qbpageoptions' => 'এই পৃষ্ঠা',
 'qbmyoptions' => 'মোৰ পৃষ্ঠাসমূহ',
-'qbspecialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
 'faq' => 'সততে উদিত প্ৰশ্নসমূহ (FAQ)',
 'faqpage' => 'Project:সততে উদিত প্ৰশ্নসমূহ',
 
@@ -456,8 +453,6 @@ $1',
 'ok' => 'ঠিক আছে',
 'retrievedfrom' => '"$1"ৰ পৰা সংকলিত',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
-'newmessageslink' => 'নতুন সংবাদ',
-'newmessagesdifflink' => 'শেহতীয়া সাল-সলনি',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'youhavenewmessagesmanyusers' => 'কেইবাজনো সদস্যৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|নতুন বাৰ্তা}}',
@@ -558,8 +553,6 @@ $1',
 'perfcached' => "তলত দিয়া তথ্যখিনি আগতে জমা কৰি থোৱা (cached) আৰু সাম্প্ৰতিক নহ'ব পাৰে। এই তথ্যখিনিত সৰ্বোচ্চ {{PLURAL:$1|এটা ফলাফল|$1টা ফলাফল}} উপলব্ধ।",
 'perfcachedts' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই কেশ্বত পাব।',
 'querypage-no-updates' => 'এই পৃষ্ঠাটো নৱীকৰণ কৰা ৰোধ কৰা হৈছে। ইয়াৰ তথ্য এতিয়া সতেজ কৰিব নোৱাৰি।',
-'wrong_wfQuery_params' => 'wfQuery() ৰ কাৰণে ভুল মাপদণ্ড দিয়া হৈছে <br />
-কাৰ্য: $1<br />পৃষ্ঠা: $2',
 'viewsource' => 'উৎস চাওক',
 'viewsource-title' => '$1ৰ উৎস চাওক',
 'actionthrottled' => 'কাৰ্য লেহেম কৰা হৈছে',
@@ -1258,12 +1251,8 @@ $1",
 # Search results
 'searchresults' => 'অনুসন্ধানৰ ফলাফল',
 'searchresults-title' => '"$1" অনুসন্ধানৰ ফলাফল',
-'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' => 'পৃষ্ঠাৰ পাঠ মিলিছে',
 'notextmatches' => 'কোনো পৃষ্ঠাৰ পাঠ মিলা নাই',
 'prevn' => 'পূৰ্বৱৰ্তী {{PLURAL:$1|$1}}টা',
@@ -1272,10 +1261,8 @@ $1",
 'nextn-title' => 'পিছৰ $1 {{PLURAL:$1|ফলাফল|ফলাফলবোৰ}}',
 'shown-title' => 'পৃষ্ঠাই প্ৰতি $1 {{PLURAL:$1|টা ফলাফল|টা ফলাফল}} দেখুৱাওক',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) চাওক।',
-'searchmenu-legend' => 'সন্ধান বিকল্পসমূহ',
 'searchmenu-exists' => 'এই ৱিকিত "[[:$1]]" নামৰ পৃষ্ঠা এখন আছে ।',
 'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই উপসৰ্গ থকা পৃষ্ঠাসমূহ ব্ৰাউজ কৰক]]',
 'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -1303,14 +1290,10 @@ $1",
 'showingresults' => "তলত #'''$2'''ৰ পৰা {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফল}} দেখুওৱা হৈছে।",
 'showingresultsnum' => "তলত #'''$2'''ৰ পৰা {{PLURAL:$3|'''1''' ফলাফল|'''$3'''ফলাফল}} দেখুওৱা হৈছে ।",
 'showingresultsheader' => "'''$4'''ৰ বাবে {{PLURAL:$5|'''$3''' ৰ '''$1''' ফলাফল| '''$3''' ৰ '''$1 - $2''' ফলাফলসমূহ}}",
-'nonefound' => "'''টোকা:''' ডিফ’ল্ট অনুযায়ী মাথোঁ কেইটামানহে নামস্থান অনুসন্ধান কৰা হয় ।
-আপোনাৰ অনুসন্ধানত ''all:'' ব্যবহাৰ কৰি সকলো সমল (কথা-বতৰা, শ্ৰেনী ইত্যদি) অনুসন্ধান কৰিব পাৰে, নতুবা আকাংক্ষিত নামস্থান প্ৰিফিক্স হিছাপে ব্যবহাৰ কৰিব পাৰে ।",
 'search-nonefound' => 'এই অনুসন্ধানৰ কোনো ফলাফল নাই ।',
-'powersearch' => 'শক্তিশালী সন্ধান',
 'powersearch-legend' => 'শক্তিশালী সন্ধান',
 'powersearch-ns' => 'নামস্থানবোৰত সন্ধান:',
 'powersearch-redir' => 'পুনৰ্নিৰ্দেশনাৰ তালিকা',
-'powersearch-field' => 'ৰ কাৰণে সন্ধান কৰক',
 'powersearch-togglelabel' => 'পৰীক্ষা কৰক:',
 'powersearch-toggleall' => 'সকলো',
 'powersearch-togglenone' => 'একো নাই',
@@ -1324,8 +1307,6 @@ $1",
 'preferences' => 'পছন্দসমূহ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনাৰ সংখ্যা:',
-'prefsnologin' => 'প্ৰৱেশ কৰা নাই',
-'prefsnologintext' => 'আপোনাৰ পছন্দ সলনি কৰিবলৈ হ’লে <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} প্ৰৱেশ]</span> কৰাতো আৱশ্যক।',
 'changepassword' => 'গুপ্তশব্দ সলনি কৰক',
 'prefs-skin' => 'আৱৰণ',
 'skin-preview' => 'খচৰা',
@@ -1349,7 +1330,6 @@ $1",
 'prefs-email' => 'ই-মেইল বিকল্প',
 'prefs-rendering' => 'ৰূপ',
 'saveprefs' => 'সাঁচি থওক',
-'resetprefs' => 'অসঞ্চিত সাল-সলনি বাতিল কৰক',
 'restoreprefs' => 'সকলো পূৰ্বনিৰ্ধাৰিত ছেটিং ঘূৰাই আনক (সকলো ছেক্‌শ্যনতে)',
 'prefs-editing' => 'সম্পাদন',
 'rows' => 'পথালী শাৰী:',
@@ -1369,7 +1349,6 @@ $1",
 'localtime' => 'স্থানীয় সময়:',
 'timezoneuseserverdefault' => 'ডিফ’ল্ট ৱিকি ($1) ব্যৱহাৰ কৰক',
 'timezoneuseoffset' => 'অন্য (অফচেট ধাৰ্য কৰক)',
-'timezoneoffset' => 'অফচেট¹:',
 'servertime' => 'চাৰ্ভাৰৰ সময়:',
 'guesstimezone' => 'ব্ৰাউজাৰৰ পৰা ভৰাওক',
 'timezoneregion-africa' => 'আফ্ৰিকা',
@@ -2106,10 +2085,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'protectedpages' => 'সুৰক্ষিত পৃষ্ঠাসমূহ',
 'protectedpages-indef' => 'কেৱল অনিৰ্দিষ্ট সুৰক্ষা',
 'protectedpages-cascade' => 'কেৱল প্ৰপাতাকাৰ সুৰক্ষা',
-'protectedpagestext' => 'তলৰ পৃষ্ঠাসমূহ অৱলুপ্তি বা স্থানান্তৰকৰণৰ পৰা সুৰক্ষিত',
 'protectedpagesempty' => 'এই পাৰামিটাৰবোৰেৰে কোনো পৃষ্ঠা এতিয়া সুৰক্ষিত কৰা হোৱা নাই ।',
 'protectedtitles' => 'সুৰক্ষিত শিৰোনামাসমূহ',
-'protectedtitlestext' => 'তলৰ শিৰোনামাসমূহ দি পৃষ্ঠা সৃষ্টি কৰিব পৰা নাযাব',
 'protectedtitlesempty' => 'এই পাৰামিটাৰবোৰেৰে কোনো শিৰোনামা এতিয়া সুৰক্ষিত কৰা হোৱা নাই ।',
 'listusers' => 'সদস্য তালিকা',
 'listusers-editsonly' => 'কেৱল সম্পাদনা কৰা সদস্যকহে দেখুৱাওক',
@@ -3613,10 +3590,6 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-urgency-high' => 'উচ্চ ($1)',
 'exif-urgency-other' => 'ব্যৱহাৰকাৰী-বিৱৰিত প্ৰাথমিকতা ($1)',
 
-# External editor support
-'edit-externally' => 'বাহিৰা আহিলা ব্যৱহাৰ কৰি এই ফাইলটো সম্পাদনা কৰক ।',
-'edit-externally-help' => 'অধিক তথ্যৰ কাৰণে [https://www.mediawiki.org/wiki/Manual:External_editors প্ৰস্তুত কৰা নিৰ্দেশনা] চাওক ।',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'সকলো',
 'namespacesall' => 'সকলোবোৰ',
@@ -3846,8 +3819,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
-'specialpages-note' => '----
-* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
+'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
 * <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
 * <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
 'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
@@ -4046,4 +4018,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 a5e2251..615f988 100644 (file)
@@ -221,7 +221,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta páxina',
 'qbmyoptions' => 'Les mios páxines',
-'qbspecialpages' => 'Páxines especiales',
 'faq' => 'EMF (entrugues más frecuentes)',
 'faqpage' => 'Project:FAQ',
 
@@ -337,12 +336,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',
@@ -441,9 +438,6 @@ Pue contener un caráuter o más que nun puen usase nos títulos.',
 'perfcachedts' => "Los datos siguientes tán na caché y anovaronse por última vegada'l $1. Hai un máximu {{PLURAL:$4|d'un resultáu disponible|de $4 resultaos disponibles}} na caché.",
 'querypage-no-updates' => "Anguaño los anovamientos d'esta páxina tán desactivaos.
 Estos datos nun van refrescase nestos momentos.",
-'wrong_wfQuery_params' => 'Parámetros incorreutos pa wfQuery()<br />
-Función: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver fonte',
 'viewsource-title' => 'Ver la fonte de $1',
 'actionthrottled' => 'Aición llendada',
@@ -475,7 +469,8 @@ L'alministrador que lu bloquió dio esti motivu: «$3».",
 'invalidtitle-knownnamespace' => "Títulu inválidu col espaciu de nomes «$2» ya'l testu «$3»",
 'invalidtitle-unknownnamespace' => "Títulu inválidu col númberu $1 d'espaciu de nomes desconocíu ya'l testu «$2»",
 'exception-nologin' => 'Nun anició sesión',
-'exception-nologin-text' => "Esta páxina o aición necesita qu'anicies sesión nesta wiki.",
+'exception-nologin-text' => 'Por favor, [[Special:Userlogin|anicie sesión]] pa tener accesu a esta páxina o aición.',
+'exception-nologin-text-manual' => 'Por favor, $1 pa tener accesu a esta páxina o aición.',
 
 # Virus scanner
 'virus-badscanner' => "Fallu de configuración: Escáner de virus desconocíu: ''$1''",
@@ -579,7 +574,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
@@ -655,7 +650,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.',
@@ -1150,12 +1145,8 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 # Search results
 'searchresults' => 'Resultaos de la busca',
 'searchresults-title' => 'Resultaos de buscar "$1"',
-'searchresulttext' => 'Pa más información tocante a busques en {{SITENAME}}, vete a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Buscasti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toles páxines qu\'emprimen con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toles páxines qu\'enllacien a "$1"]])',
-'searchsubtitleinvalid' => "Buscasti '''$1'''",
 'toomanymatches' => 'Atopáronse demasiaes coincidencies, por favor fai una consulta diferente',
 'titlematches' => 'Coincidencies de los títulos de la páxina',
-'notitlematches' => 'Nun hai coincidencies nel títulu de la páxina',
 'textmatches' => 'Coincidencies del testu de la páxina',
 'notextmatches' => 'Nun hai coincidencies nel testu de la páxina',
 'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -1164,10 +1155,8 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'nextn-title' => '{{PLURAL:$1|Siguiente resultáu|Siguientes $1 resultaos}}',
 'shown-title' => 'Amosar $1 {{PLURAL:$1|resultáu|resultaos}} por páxina',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opciones de busca',
 'searchmenu-exists' => "'''Hai una páxina nomada \"[[\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''¡Crear la páxina \"[[:\$1]]\" nesta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Restolar páxines con esti prefixu]]',
 'searchprofile-articles' => 'Páxines de conteníu',
 'searchprofile-project' => 'Páxines de proyeutu y ayuda',
 'searchprofile-images' => 'Multimedia',
@@ -1195,13 +1184,10 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'showingresults' => "Abaxo {{PLURAL:$1|amuésase '''un''' resultáu|amuésense '''$1''' resultaos}}, entamando col #'''$2'''.",
 'showingresultsnum' => "Abaxo {{PLURAL:$3|amuésase '''un''' resultáu|amuésense '''$3''' resultaos}}, entamando col #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultáu '''$1''' de '''$3'''|Resultaos '''$1 - $2''' de '''$3'''}} pa '''$4'''",
-'nonefound' => "'''Nota''': De mou predetermináu namái se busca en dellos espacios de nomes. Prueba a poner delantre de la to consulta ''all:'' pa buscar en tol conteníu (inxiriendo páxines d'alderique, plantíes, etc.), o usa como prefixu l'espaciu de nome deseáu.",
 'search-nonefound' => 'Nun hebo resultaos que casaren cola consulta.',
-'powersearch' => 'Busca avanzada',
 'powersearch-legend' => 'Busca avanzada',
 'powersearch-ns' => 'Buscar nos espacios de nome:',
 'powersearch-redir' => 'Llistar redireiciones',
-'powersearch-field' => 'Buscar',
 'powersearch-togglelabel' => 'Comprobar:',
 'powersearch-toggleall' => 'Toos',
 'powersearch-togglenone' => 'Dengún',
@@ -1213,8 +1199,7 @@ 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',
-'prefsnologintext' => 'Necesita <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aniciar sesión]</span> pa camudar la configuración d\'usuariu.',
+'prefsnologintext2' => "Por favor, $1 pa configurar les preferencies d'usuariu",
 'changepassword' => 'Camudar la clave',
 'prefs-skin' => 'Apariencia',
 'skin-preview' => 'Vista previa',
@@ -1238,7 +1223,6 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'prefs-email' => 'Opciones de corréu',
 'prefs-rendering' => 'Aspeutu',
 'saveprefs' => 'Guardar',
-'resetprefs' => 'Llimpiar los cambios ensin guardar',
 'restoreprefs' => 'Restaurar tolos axustes predeterminaos (en toles seiciones)',
 'prefs-editing' => 'Edición',
 'rows' => 'Fileres:',
@@ -1259,7 +1243,6 @@ Cualquiera que la sepa podrá lleer la so llista de vixilancia; nun la comparta.
 'localtime' => 'Hora llocal:',
 'timezoneuseserverdefault' => 'Usar la predeterminada de la wiki ($1)',
 'timezoneuseoffset' => 'Otru (especificar diferencia)',
-'timezoneoffset' => 'Diferencia¹:',
 'servertime' => 'Hora del sirvidor:',
 'guesstimezone' => 'Obtener del navegador',
 'timezoneregion-africa' => 'África',
@@ -1512,6 +1495,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',
@@ -2022,10 +2008,8 @@ Les entraes <del>tachaes</del> tan resueltes.',
 'protectedpages' => 'Páxines protexíes',
 'protectedpages-indef' => 'Namái les proteiciones permanentes',
 'protectedpages-cascade' => 'Namái proteiciones en cascada',
-'protectedpagestext' => "Les páxines siguientes tán protexíes escontra'l treslláu y la edición",
 'protectedpagesempty' => 'Nun hai páxines protexíes anguaño con estos parámetros.',
 'protectedtitles' => 'Títulos protexíos',
-'protectedtitlestext' => 'Los siguiente títulos tán protexíos de la so creación',
 'protectedtitlesempty' => 'Nun hai títulos protexíos anguaño con estos parámetros.',
 'listusers' => "Llista d'usuarios",
 'listusers-editsonly' => 'Amosar namái usuarios con ediciones',
@@ -2249,7 +2233,7 @@ Ponte en contautu col editor:
 corréu: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-En casu de producise más cambios, nun habrá más notificaciones a nun ser que visites esta páxina. Tamién podríes reaniciar na to llista de vixilancia los marcadores de notificación de toles páxines que tengas vixilaes.
+En casu de producise más actividá, nun habrá más notificaciones a nun ser que visites esta páxina teniendo sesión aniciada. Tamién podríes reaniciar na to llista de vixilancia los marcadores de notificación de toles páxines que tengas vixilaes.
 
 El to abertable sistema de notificación de {{SITENAME}}
 
@@ -2932,6 +2916,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 */",
@@ -3551,10 +3536,6 @@ Los demás tarán anubríos de mou predetermináu.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridá definía pol usuariu ($1)',
 
-# External editor support
-'edit-externally' => 'Editar esti ficheru usando una aplicación esterna',
-'edit-externally-help' => '(Pa más información ver les [https://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'too',
 'namespacesall' => 'toos',
@@ -3784,10 +3765,9 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 
 # Special:SpecialPages
 'specialpages' => 'Páxines especiales',
-'specialpages-note' => '----
-* Páxines especiales normales.
-* <span class="mw-specialpagerestricted">Páxines especiales restrinxíes.</span>
-* <span class="mw-specialpagecached">Páxines especiales en caché (seique nun tean actualizaes).</span>',
+'specialpages-note-top' => 'Lleenda',
+'specialpages-note' => '* Páxines especiales normales.
+* <span class="mw-specialpagerestricted">Páxines especiales restrinxíes.</span>',
 'specialpages-group-maintenance' => 'Informes de mantenimientu',
 'specialpages-group-other' => 'Otres páxines especiales',
 'specialpages-group-login' => 'Entrar / crear cuenta',
@@ -4000,4 +3980,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 aeb394a..a3c8299 100644 (file)
@@ -228,7 +228,6 @@ $messages = array(
 'qbedit' => 'Betara',
 'qbpageoptions' => 'Ikatcuksbu',
 'qbmyoptions' => 'Jinaf ikatcukseem',
-'qbspecialpages' => 'Aptaf bueem',
 'faq' => 'NEB',
 'faqpage' => 'Project:FAQ',
 
@@ -329,8 +328,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',
@@ -406,9 +403,6 @@ Rotir artan ixam al sular.',
 'perfcached' => 'Vlevef orig yo tid koe palsexo nume me zo ronusked. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Vlevef orig yo tid koe palsexo, ise ironokafa nuskera tir $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Nuskera va batu bu me noelon flir. Acum origeem me zo divneditir.',
-'wrong_wfQuery_params' => 'Mewadaf dor koe wfQuery() dirgara<br />
-Fliok : $1<br />
-Erura : $2',
 'viewsource' => 'Wira va klitakrent',
 'viewsource-title' => 'Wira va klita ke $1',
 'actionthrottled' => 'Tulokaliana tegira',
@@ -794,12 +788,8 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 # Search results
 'searchresults' => 'Aneyaradanekseem',
 'searchresults-title' => 'Aneyaratrasiks va "$1"',
-'searchresulttext' => 'Ta lo giva icde aneyara ko {{SITENAME}}, va [[{{MediaWiki:Helppage}}|{{int:help}}]] teliz disukel.',
-'searchsubtitle' => 'Rin va \'\'\'[[:$1]]\'\'\' aneyayal ([[Special:Prefixindex/$1|kotu bu dem "$1" toza]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kotu bu gluyasu va "$1"]])',
-'searchsubtitleinvalid' => "Rin va '''$1''' aneyayal",
 'toomanymatches' => 'Slik trasiks, vay va amidafa aneyara yawal',
 'titlematches' => 'Vadjesaceem vanmia vergumvelteem',
-'notitlematches' => 'Mek telizvergumvelt ruldas va erune',
 'textmatches' => 'Vadjesaceem ko krenteem',
 'notextmatches' => 'Mek krentvergumvelt ruldas va erune',
 'prevn' => '{{PLURAL:$1|$1}} abduef',
@@ -837,14 +827,10 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'showingresults' => "Vlevefa nedira va {{PLURAL:$1|'''1''' trasiks|'''$1''' trasiks}} dem #'''$2''' toza.",
 'showingresultsnum' => "Nedira va '''$3''' trasiks male #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Trasiks '''$1''' ke '''$3'''|Trasiks '''$1 - $2''' ke '''$3'''}} icde '''$4'''",
-'nonefound' => "'''Straga''': Anton yoltxo omavon zo aneyar.
-Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce abdueosta va galpeno yoltxo favel.",
 'search-nonefound' => 'Mek trasiks vas kucilara',
-'powersearch' => 'Aneyara',
 'powersearch-legend' => 'Aneyapara',
 'powersearch-ns' => 'Aneyara koe yoltxo:',
 'powersearch-redir' => 'Vexalara va graskara',
-'powersearch-field' => 'Aneyara va',
 'powersearch-toggleall' => 'Kot',
 'powersearch-togglenone' => 'Mek',
 'search-external' => 'Divafa aneyara',
@@ -854,8 +840,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',
-'prefsnologintext' => 'Ede va favesiklodamaceem djubetal, gotil <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} dogluyarakiraf]</span>.',
 'changepassword' => 'Betara va remravlem',
 'prefs-skin' => 'Laviuca',
 'skin-preview' => 'Abdiwira',
@@ -872,7 +856,6 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'prefs-resetpass' => 'Betara va remravlem',
 'prefs-rendering' => 'Laviuca',
 'saveprefs' => 'Va lodamaceem tuená',
-'resetprefs' => 'Va lodamceem dimplekú',
 'prefs-editing' => 'Sutelaxo',
 'rows' => 'Emacekeem',
 'columns' => 'Brizeem',
@@ -884,7 +867,6 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'savedprefs' => 'Lodamaceem su zo giwar.',
 'timezonelegend' => 'Bartivxo',
 'localtime' => 'Lizukaf bartiv :',
-'timezoneoffset' => 'Bartivferenuca :',
 'servertime' => 'Bartiv ke zanisiko :',
 'guesstimezone' => 'Favera va voda ke exulesiki',
 'timezoneregion-africa' => 'Afrika',
@@ -1313,10 +1295,8 @@ Abdi sulara, setikel da va ari skedasiki va teza stujel.',
 'deadendpages' => 'Axodabueem',
 'deadendpagestext' => 'Batu bu se tid gluyasikiiskafu gu aru bu koe {{SITENAME}}.',
 'protectedpages' => 'Nendan bueem',
-'protectedpagestext' => 'Batu bu se icde arrundara is betara zo nendad',
 'protectedpagesempty' => 'Meku bu nendanu kan bat doreem.',
 'protectedtitles' => 'Nendan vergumvelteem',
-'protectedtitlestext' => 'Radimef vergumvelteem reduron zo nendar',
 'protectedtitlesempty' => 'Nedoy vergumvelt kan bat dor se zo nendar.',
 'listusers' => 'Pakesikeem',
 'listusers-editsonly' => 'Va yon betayas favesik anton nedir',
@@ -2190,10 +2170,6 @@ Kotari milconyafi gluyasiki roklon zo krafiar.',
 'exif-gpsdirection-t' => 'Ageltania',
 'exif-gpsdirection-m' => 'Zatnia',
 
-# External editor support
-'edit-externally' => 'Betara va bat iyeltak faveson va divef talpey',
-'edit-externally-help' => '(Ta lo giva va [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] disukel !)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kot',
 'namespacesall' => 'koto',
index 444b0d0..357b363 100644 (file)
@@ -17,6 +17,7 @@
  * @author Gulmammad
  * @author Kaganer
  * @author Khan27
+ * @author Mushviq Abdulla
  * @author PPerviz
  * @author PrinceValiant
  * @author Sortilegus
@@ -123,6 +124,8 @@ $messages = array(
 'tog-diffonly' => 'Versiyaların müqayisəsi zamanı səhifənin məzmununu göstərmə',
 'tog-showhiddencats' => 'Gizli kateqoriyaları göstər',
 'tog-norollbackdiff' => 'Geri qaytardıqdan sonra, edilmiş dəyişikikləri dəyişikliklər siyahısından sil',
+'tog-useeditwarning' => 'Qeyd edilməmiş dəyişikliyə sahib bir dəyişiklik səhifəsindən çıxarkən məni xəbərdar et',
+'tog-prefershttps' => 'Sessiya aaçarkən hər zaman etibarlı bağlantıdan istifadə et.',
 
 'underline-always' => 'Həmişə',
 'underline-never' => 'Heç vaxt',
@@ -186,6 +189,18 @@ $messages = array(
 'oct' => 'Oktyabr',
 'nov' => 'Noyabr',
 'dec' => 'Dekabr',
+'january-date' => '$1 Yanvar',
+'february-date' => '$1 Fevral',
+'march-date' => '$1 Mart',
+'april-date' => '$1 Aprel',
+'may-date' => '$1 May',
+'june-date' => '$1 İyun',
+'july-date' => '$1 İyul',
+'august-date' => '$1 Avqust',
+'september-date' => ' $1 Sentyabr',
+'october-date' => '$1 Oktyabr',
+'november-date' => '$1 Noyabr',
+'december-date' => '$1 Dekabr',
 
 # Categories related messages
 'pagecategories' => '$1 {{PLURAL:$1|Kateqoriya|Kateqoriya}}',
@@ -211,6 +226,7 @@ $messages = array(
 'newwindow' => '(yeni pəncərədə açılır)',
 'cancel' => 'Ləğv et',
 'moredotdotdot' => 'Daha...',
+'morenotlisted' => 'Bu siyahı tam deyil.',
 'mypage' => 'Mənim səhifəm',
 'mytalk' => 'Danışıqlarım',
 'anontalk' => 'Bu IP-yə aid müzakirə',
@@ -223,7 +239,6 @@ $messages = array(
 'qbedit' => 'Redaktə',
 'qbpageoptions' => 'Bu səhifə',
 'qbmyoptions' => 'Mənim səhifələrim',
-'qbspecialpages' => 'Xüsusi səhifələr',
 'faq' => 'TSS',
 'faqpage' => 'Project:TSS',
 
@@ -266,6 +281,7 @@ $messages = array(
 'create-this-page' => 'Bu səhifəni yarat',
 'delete' => 'Sil',
 'deletethispage' => 'Bu səhifəni sil',
+'undeletethispage' => 'Bu səhifənin silmə əməliyyatını geri qaytar',
 'undelete_short' => '$1 {{PLURAL:$1|dəyişikliyi|dəyişiklikləri}} bərpa et',
 'viewdeleted_short' => '{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}',
 'protect' => 'Mühafizə et',
@@ -341,8 +357,10 @@ 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}}',
+'newmessagesdifflinkplural' => 'son {{PLURAL:$1|dəyişiklik|dəyişikliklər}}',
 'youhavenewmessagesmulti' => '"$1"da yeni mesajınız var.',
 'editsection' => 'redaktə',
 'editold' => 'redaktə',
@@ -396,6 +414,12 @@ Mövcud xüsusi səhifələrin siyahısı: [[Special:SpecialPages|Xüsusi səhif
 # General errors
 'error' => 'Xəta',
 'databaseerror' => 'Verilənlər bazası xətası',
+'databaseerror-text' => 'Bir verilənlər bazası sorğu xətası baş verdi.
+Bu proqramdan qaynaqlanan bir xətanı göstərmiş ola bilər.',
+'databaseerror-textcl' => 'Bir verilənlər bazası sorğu xətası baş verdi.',
+'databaseerror-query' => 'Sorğu: $1',
+'databaseerror-function' => 'Funksiya: $1',
+'databaseerror-error' => 'Xəta: $1',
 'laggedslavemode' => "'''Xəbərdarlıq:''' Səhifə son əlavələri əks etdirməyə bilər.",
 'readonly' => 'Verilənlər bazası bloklanıb',
 'enterlockreason' => 'Bloklamanın səbəbini və nəzərdə tutulan müddətini qeyd edin',
@@ -426,21 +450,22 @@ Xahiş edirik bunu bir [[Special:ListUsers/sysop|İdarəçilərə]], URL not ed
 'cannotdelete' => 'İstədiyiniz "$1" səhifə və ya faylını silmək mümkün deyil.
 Bu səhifə və ya fayl başqa bir istifadəçi tərəfindən silinmiş ola bilər.',
 'cannotdelete-title' => '"$1" səhifəsinin silinməsi mümkünsüzdür.',
+'delete-hook-aborted' => 'Silmə əməliyyatı qarmaq tərəfindən dayandırıldı. 
+Heç bir açıqlama edilmədi.',
+'no-null-revision' => '"$1" səhifəsi üçün yeni boş bir versiya yaradıla bilmədi',
 'badtitle' => 'Səhv başlıq',
 'badtitletext' => 'Axtarılan səhifə adı səhvdir və ya boşdur, ya da düzgün olmayan dillərarası, yaxud vikilərarası keçid istifadə edilib.
 Başlıqlarda istifadə edilməsi qadağan olunan bir və ya daha çox simvol istifadə edilmiş ola bilər.',
 'perfcached' => 'Aşağıdakı məlumatlar keş yaddaşdan götürülmüşdür və bu səbəbdən aktual olmaya bilər. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Aşağıdakı məlumatlar keş yaddaşdan götürülmüşdür və sonuncu dəfə $1 tarixində yenilənmişdir. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Bu an üçün güncəlləmələr sıradan çıxdı. Buradakı məlumat dərhal yenilənməyəcək.',
-'wrong_wfQuery_params' => 'wfQuery() funksiyası üçün qəbuledilməz parametrlər <br />
-Funksiya: $1<br />
-Sorğu: $2',
 'viewsource' => 'Mənbə göstər',
 'viewsource-title' => '$1 üçün mənbəyə bax',
 'actionthrottled' => 'Sürət məhdudiyyəti',
 'actionthrottledtext' => 'Anti-spam hərəkətləri səbəbilə, bir hərəkəti qısa bir zaman aralığında çoxetməniz əngəlləndi, və siz həddi aşmısınız. Lütfən bir neçə dəqiqə sonra yenidən yoxlayın.',
 'protectedpagetext' => 'Bu səhifə redaktə üçün bağlıdır.',
 'viewsourcetext' => 'Siz bu səhifənin məzmununu görə və köçürə bilərsiniz:',
+'viewyourtext' => "Bu səhifəyə '''etdiyiniz dəyişikliklərin''' mənbəyini görüntüləyib köçürə bilərsiniz:",
 'protectedinterface' => 'Bu səhifədə proqram təminatı üçün sistem məlumatları var və sui-istifadənin qarşısını almaq üçün mühafizə olunmalıdır.',
 'editinginterface' => "'''Diqqət!''' Siz proqram təminatı interfeysinin mətn olan səhifəsini redaktə edirsiniz.
 Onun dəyişdirilməsi digər istifadəçilərin interfeysinin xarici görünüşünə təsir göstərir.
@@ -448,9 +473,23 @@ Tərcümə üçün daha yaxşı olar ki, MediaWiki-nin lokallaşması üçün ol
 'cascadeprotected' => 'Səhifə mühafizə olunub, çünki o kaskad mühafizə olunan {{PLURAL:$1|növbəti səhifəyə|növbəti səhifələrə}} qoşulub:
 $2',
 'namespaceprotected' => 'Sizin adlarında $1 olan məqalələrdə redaktə etməyə icazəniz yoxdur.',
+'customcssprotected' => 'Bu səhifəni redaktə etmə izniniz yoxdur, çünki bu səhifə başqa bir istifadəçinin fərdi parametrlərinə sahibdir.',
+'customjsprotected' => 'Bu Java Script səhifəsini redaktə etmə izniniz yoxdur, çünki bu səhifə başqa bir istifadəçinin fərdi parametrlərinə sahibdir.',
+'mycustomcssprotected' => 'Bu CSS ssəhifəsini redaktə etmə izniniz yoxdur.',
+'mycustomjsprotected' => 'Bu JavaScript səhifəsini redaktə etmə izniniz yoxdur.',
+'myprivateinfoprotected' => 'Sizin özəl məlumatlarınızı redaktə etmə izniniz yoxdur.',
+'mypreferencesprotected' => 'Seçimlərinizi redaktə etmək üçün izniniz yoxdur.',
 'ns-specialprotected' => 'Xüsusi səhifələr redaktə oluna bilməz.',
 'titleprotected' => 'Bu adda səhifənin yaradılması istifadəçi [[User:$1|$1]] tərəfindən qadağan edilmişdir.
 Göstərilən səbəb: "\'\'$2\'\'".',
+'filereadonlyerror' => '"$2" fayl deposundakı "$1" faylı ancaq oxunula bilən rejimdə olduğuna görə dəyişdirmək üçün açıla bimir.
+
+Rejimi qoyan nəzarətçinin izahı: "$3".',
+'invalidtitle-knownnamespace' => '"$2" sahə adı üçün "$3" mətni keçərsiz bir başlıq',
+'invalidtitle-unknownnamespace' => 'Naməlum $1 ad sahəsi miqdarı və keçərsiz "$2" başlıq',
+'exception-nologin' => 'Giriş edilməmişdir',
+'exception-nologin-text' => 'Bu səhifəyə daxi olmaq üçün [[Special:Userlogin|özünüzü təqdim]], edin.',
+'exception-nologin-text-manual' => ' bu səhifəyə və ya hərəkətə daxil olmaq üçün $1 lazımdır.',
 
 # Virus scanner
 'virus-badscanner' => "Düzgün olmayan konfiqurasiya: naməlum ''$1'' virus yoxlayanı",
@@ -465,9 +504,19 @@ Siz {{SITENAME}} saytını anonim olaraq istifadə etməyə davam edə bilər v
 'welcomecreation-msg' => 'Hesabınız yaradıldı.
 [[Special:Preferences|{{SITENAME}} nizamlamalarınızı]] dəyişdirməyi unutmayın.',
 'yourname' => 'İstifadəçi adı',
+'userlogin-yourname' => 'İstifadəçi adı',
+'userlogin-yourname-ph' => 'İstifadəçi adınızı daxil edin',
+'createacct-another-username-ph' => 'İstifadəçi adınızı daxil edin:',
 'yourpassword' => 'Parol:',
+'userlogin-yourpassword' => 'Parol',
+'userlogin-yourpassword-ph' => 'Parolunuzu daxil edin',
+'createacct-yourpassword-ph' => 'Parol daxil edin',
 'yourpasswordagain' => 'Parolu təkrar yazın:',
+'createacct-yourpasswordagain' => 'Parolu təsdiqlə',
+'createacct-yourpasswordagain-ph' => 'Parolu təkrar daxil edin',
 'remembermypassword' => 'Məni bu kompyuterdə xatırla (maksimum $1 {{PLURAL:$1|gün|gün}})',
+'userlogin-remembermypassword' => 'Sistemdə qal',
+'userlogin-signwithsecure' => 'Etibarlı bağlantıdan istifadə edin',
 'yourdomainname' => 'Sizin domain',
 'password-change-forbidden' => 'Bu vikidə parolunuzu dəyişdirə bilməzsiniz.',
 'externaldberror' => 'Verilənlər bazasının doğruluğunu yoxlamada xəta baş verib və yaxud sizin xarici istifadəçi qeydiyyatını yeniləmək hüququnuz yoxdur.',
@@ -479,18 +528,44 @@ Siz {{SITENAME}} saytını anonim olaraq istifadə etməyə davam edə bilər v
 'logout' => 'Çıxış',
 'userlogout' => 'Çıxış',
 'notloggedin' => 'Daxil olmamısınız',
+'userlogin-noaccount' => 'İstifadəçi hesabınız yoxdur?',
+'userlogin-joinproject' => '{{SITENAME}} qoşulun',
 'nologin' => "İstifadəçi hesabınız yoxdur? '''$1'''.",
 'nologinlink' => 'hesab açın',
 'createaccount' => 'Hesab aç',
 'gotaccount' => "Giriş hesabınız varsa '''$1'''.",
 'gotaccountlink' => 'Daxil olun',
 'userlogin-resetlink' => 'Daxilolma məlumatlarınızı unutmusunuz?',
-'createaccountmail' => 'e-məktub ilə',
+'userlogin-resetpassword-link' => 'Parolu unutdunuzmu?',
+'helplogin-url' => 'Help:Sistemə daxil ol',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|daxil olma haqqında yardım alın]]',
+'userlogin-loggedin' => 'Siz artıq {{GENDER:$1|$1}} kimi daxil olmusunuz.
+Aşağıdakı formadan istifadə edərək, bağqa bir istifadəçi kimi daxil ola bilərsiniz.',
+'userlogin-createanother' => 'Başqa bir istifadəçi hesabı yarat',
+'createacct-join' => 'Aşağıda məlumatlarınızı daxil edin.',
+'createacct-another-join' => 'Aşağıda yeni hesabınızın məlumatlarını daxil edin.',
+'createacct-emailrequired' => 'E-poçt ünvanı',
+'createacct-emailoptional' => 'E-poçt ünvanı (istəyə bağlı)',
+'createacct-email-ph' => 'E-poçt ünvanınızı daxil edin',
+'createacct-another-email-ph' => 'E-poçt ünvanını daxil edin',
+'createaccountmail' => 'Müvəqqəti təsadüfi bir paroldan istifadə edə bilər və bu parolu göstərilən e-poçt ünvanına göndərə bilərsiniz',
+'createacct-realname' => 'Gərçək adı (istəyə bağlı)',
 'createaccountreason' => 'Səbəb:',
+'createacct-reason' => 'Səbəb',
+'createacct-reason-ph' => 'Niyə başqa bir hesab yaradırsınız',
+'createacct-captcha' => 'Təhlükəsizlik nəzarəti',
+'createacct-imgcaptcha-ph' => 'Yuxarıda gördüyünüz mətni daxil edin',
+'createacct-submit' => 'İstifadəçi hesabı yarat',
+'createacct-another-submit' => 'Başqa bir istifadəçi hesabı yarat',
+'createacct-benefit-heading' => '{{SITENAME}} sizin kimi insanlar tərəfindən yaradılır.',
+'createacct-benefit-body1' => '$1 {{PLURAL:$1|redaktə}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|səhifə|səhifə}}',
+'createacct-benefit-body3' => 'ən son {{PLURAL:$1|iştirakçılar|iştirakçılar}}',
 'badretype' => 'Daxil etdiyiniz parol uyğun gəlmir.',
 'userexists' => 'Daxil edilmiş ad artıq istifadədədir.
 Lütfən başqa ad seçin.',
 'loginerror' => 'Daxil olma xətası',
+'createacct-error' => 'Hesab yaratma xətası',
 'createaccounterror' => 'Bu istifadəçi adını yaratmaq mümkün olmadı: $1',
 'nocookiesnew' => 'İstifadəçi qeydiyyatı yaradıldı, lakin daxil ola bilmədiniz.
 {{SITENAME}} iştirakçıların təqdim olunması üçün "cookie"lərdən istifadə edir.
@@ -517,11 +592,17 @@ Düzgün yazdığına əmin ol.',
 'password-login-forbidden' => 'Bu istifadəçi adından və paroldan istifadə qadağan olunub.',
 'mailmypassword' => 'E-mail ilə yeni parol göndər',
 'passwordremindertitle' => '{{SITENAME}} parol xatırladıcı',
+'passwordremindertext' => 'Birisi (yəqin ki siz, $1 IP ünvanından) {{SITENAME}} ($4) üçün yeni bir parol göndərilməsini istədi. "$2" istifadəçisinə müvəqqəti olaraq "$3" parolu yaradıldı. Əgər bu sizin istyinizdirsə, hesab açıb yeni bir parol yaratmağınız vacibdir. Müvəqqəti parolunuzun müddəti {{PLURAL:$5|1 gün|$5 gün}} içində dolacaqdır.
+
+Parol dəyişdirməni siz istəməmisinizsə və ya parolunuzu xatırladınızsa və artıq parolunuzu dəyişdirmək isteəmirsinizsə; bu mesaja əhəmiyyət vermədən əski parolunuzdan istifadə etməyə davam edə bilərsiniz.',
 'noemail' => '"$1" adlı istifadəçi e-poçt ünvanını qeyd etməmişdir.',
 'noemailcreate' => 'Düzgün e-poçt ünvanı qeyd etməlisiniz',
 'passwordsent' => 'Yeni parol "$1" üçün qeydiyyata alınan e-poçt ünvanına göndərilmişdir.
 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.',
@@ -531,19 +612,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ş',
@@ -563,11 +654,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ı:',
@@ -874,12 +969,8 @@ $1",
 # Search results
 'searchresults' => 'Axtarış nəticələri',
 'searchresults-title' => "''$1'' üçün axtarış nəticələri",
-'searchresulttext' => '{{SITENAME}}-nı axtarmaqla bağlı ətraflı məlumat üçün [[{{MediaWiki:Helppage}}|{{int:kömək}}]] səhifəsinə baş çək.',
-'searchsubtitle' => '"[[:$1]]" üçün axtarış ([[Special:Prefixindex/$1|"$1" ilə başlayan bütün səhifələr]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" səhifəsi ilə əlaqəli olan bütün səhifələr]])',
-'searchsubtitleinvalid' => 'Axtarılan: "$1"',
 'toomanymatches' => 'Üst-üstə düşən çoxlu hal tapılıb, lütfən yeni sorğu göndərin',
 'titlematches' => 'Səhifə adı eynidir',
-'notitlematches' => 'Uyğun gələn səhifə adı tapılmadı',
 'textmatches' => 'Mətn eynidir',
 'notextmatches' => 'Məqalələrdə uyğun məzmun tapılmadı',
 'prevn' => 'əvvəlki {{PLURAL:$1|$1}}',
@@ -888,10 +979,8 @@ $1",
 'nextn-title' => 'Əvvəlki bir $1 {{PLURAL:$1|nəticə|nəticə}}',
 'shown-title' => 'Səhifə üçün $1 {{PLURAL:$1|nəticə|nəticəyə}} bax',
 'viewprevnext' => 'Göstər ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Axtarış kriteriyaları',
 'searchmenu-exists' => "'''Bu vikidə \"[[:\$1]]\" adında səhifə mövcuddur'''",
 'searchmenu-new' => "'''Bu vikidə \"[[:\$1]]\" səhifəsini yarat!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu cür prefiksli səhifələri göstər]]',
 'searchprofile-articles' => 'Məqalələr',
 'searchprofile-project' => 'Kömək və Layihə səhifələri',
 'searchprofile-images' => 'Multimedia',
@@ -919,13 +1008,10 @@ $1",
 'showingresults' => "Aşağıda #'''$2''' ilə başlayan {{PLURAL:$1|'''$1'''-ə qədər}} nəticə göstərilib.",
 'showingresultsnum' => "Aşağıda #'''$2''' ilə başlayan {{PLURAL:$3|'''$3'''}} nəticə göstərilib.",
 'showingresultsheader' => "'''$4''' üçün {{PLURAL:$5|'''$3'''-dən '''$1''' nəticə|'''$3'''-dən '''$1 - $2''' nəticə}}",
-'nonefound' => "'''Qeyd''': Əksər uğursuz axtarışlara səbəb indeksləşdirilməyən, geniş işlənən \"var\", \"və\" tipli sözlər və ya axtarışa bir sözdən artıq ifadələrin verilməsidir. Çalışıb axtardığınız ifadənin qarşısında ''all:'' (bütün) yazın. Bu halda axtarışınız istifadəçi səhifələrini, şablonları və s. da əhatə edəcək.",
 'search-nonefound' => 'Sorğunuza uyğun nəticə tapılmadı.',
-'powersearch' => 'Axtar',
 'powersearch-legend' => 'Təkmil axtarış',
 'powersearch-ns' => 'Ad aralığında axtar:',
 'powersearch-redir' => 'Yönləndirmələri göstər',
-'powersearch-field' => 'Axtar:',
 'powersearch-togglelabel' => 'Yoxla:',
 'powersearch-toggleall' => 'Hamısı',
 'powersearch-togglenone' => 'Heç biri',
@@ -935,8 +1021,6 @@ $1",
 'preferences' => 'Nizamlamalar',
 'mypreferences' => 'Nizamlamalar',
 'prefs-edits' => 'Redaktələrin sayı:',
-'prefsnologin' => 'Daxil olmamısınız',
-'prefsnologintext' => 'Nizamlamaları dəyişmək üçün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} daxil olmaq]</span> zəruridir.',
 'changepassword' => 'Parolu dəyiş',
 'prefs-skin' => 'Cild',
 'skin-preview' => 'Sınaq görüntüsü',
@@ -959,7 +1043,6 @@ $1",
 'prefs-email' => 'E-mailin parametrləri',
 'prefs-rendering' => 'Görünüş',
 'saveprefs' => 'Qeyd et',
-'resetprefs' => 'Yarat',
 'restoreprefs' => 'Bütün nizamlamaları bərpa et (bütün bölmələrdə)',
 'prefs-editing' => 'Redaktə',
 'rows' => 'Sıralar:',
@@ -977,7 +1060,6 @@ $1",
 'localtime' => 'Yerli vaxt:',
 'timezoneuseserverdefault' => 'Susmaya görə serverdən istifadə ($1)',
 'timezoneuseoffset' => 'Digər (fərqi göstərmək)',
-'timezoneoffset' => 'Vaxt fərqi¹:',
 'servertime' => 'Server vaxtı:',
 'guesstimezone' => 'Brouzerdən götür',
 'timezoneregion-africa' => 'Afrika',
@@ -1195,6 +1277,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',
@@ -1455,8 +1538,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',
@@ -1533,7 +1620,6 @@ Hazırda [[$2]]-yə istiqamətlənib.',
 'protectedpages' => 'Mühafizəli səhifələr',
 'protectedpages-indef' => 'Yalnız müddətsiz mühafizələr',
 'protectedpages-cascade' => 'Yalnız kaskad mühafizələr',
-'protectedpagestext' => 'Aşağıdakı səhifələr ad dəyişiminə və redaktəyə bağlıdır',
 'protectedpagesempty' => 'Hal-hazırda bu parametrə uyğun heç bir mühafizəli səhifə yoxdur',
 'protectedtitles' => 'Mühafizəli başlıqlar',
 'listusers' => 'İstifadəçi siyahısı',
@@ -2734,10 +2820,6 @@ Variants for Chinese language
 'exif-urgency-high' => 'Yüksək ($1)',
 'exif-urgency-other' => 'İstifadəçi tərəfindən müəyyən olunmuş birincilik ($1)',
 
-# External editor support
-'edit-externally' => 'Bu faylı kənar proqram vasitəsilə redaktə et.',
-'edit-externally-help' => '(Daha ətraflı məlumat üçün [https://www.mediawiki.org/wiki/Manual:External_editors tətbiqetmə qaydalarına] baxa bilərsiniz)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hamısını',
 'namespacesall' => 'bütün',
@@ -2959,4 +3041,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 b5b0aa1..f5d3182 100644 (file)
@@ -238,7 +238,6 @@ $messages = array(
 'qbedit' => 'دَییشدیر',
 'qbpageoptions' => 'بو صحیفه‌‌',
 'qbmyoptions' => 'منیم صحیفه‌‌لریم',
-'qbspecialpages' => 'اؤزل صحیفه‌لر',
 'faq' => 'چوخ سوروشولان سواللار',
 'faqpage' => 'Project:چوخلو سوروشولان سورغولار',
 
@@ -355,8 +354,6 @@ $1',
 'ok' => 'اولدو',
 'retrievedfrom' => '«$1»-دن آلینمیشدیر',
 'youhavenewmessages' => 'سیزین $1 ($2) وارینیزدیر.',
-'newmessageslink' => 'یئنی مئساژلار',
-'newmessagesdifflink' => 'سون دَییشیکلیک',
 'youhavenewmessagesfromusers' => 'سیزین {{PLURAL:$3|بیر آیری ایستیفاده‌چی‌دن|$3 ایستیفاده‌چی‌دن}} $1 وارینیزدیر ($2).',
 'youhavenewmessagesmanyusers' => 'سیزین چوخلو ایشلدنلردن $1 وارینیزدیر ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|بیر یئنی مئساژ|یئنی مئساژلار}}',
@@ -451,9 +448,6 @@ $1',
 'perfcachedts' => 'بو بیلگی کَش اولوب‌دور، سون دفعه $1 واختیندا گونجلیب‌دیر. چوخو {{PLURAL:$4|بیر نتیجه|$4 نتیجه}} کَش‌ده‌دیر.',
 'querypage-no-updates' => 'بو یارپاق‌دا گونجل‌له‌مک ایندی باغلانیب‌دیر.
 بورداکی بیلگیلر یئنی‌لشمیه‌جکلر.',
-'wrong_wfQuery_params' => 'wfQuery() اوچون یانلیش پارامئترلر وئریلیب‌دیر<br />
-فونکسیا: $1<br />
-سورغو: $2',
 'viewsource' => 'قایناغا باخ',
 'viewsource-title' => '$1 اوچون قایناغا باخین',
 'actionthrottled' => 'سیزین چالیشمانیزین قاباغی آلیندی',
@@ -1109,12 +1103,8 @@ $1",
 # Search results
 'searchresults' => 'آختاریش سونوجلاری',
 'searchresults-title' => '«$1» اوچون آختاریش نتیجه‌لری',
-'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' => 'یازی عینی‌دیر',
 'notextmatches' => 'هئچ بیر بنزر صحیفه یازی‌سی تاپیلمادی',
 'prevn' => 'اؤنجه‌کی {{PLURAL:$1|$1}}',
@@ -1123,10 +1113,8 @@ $1",
 'nextn-title' => 'سونراکی {{PLURAL:$1|بیر|$1}} سونوج',
 'shown-title' => 'هر صحیفه‌ده {{PLURAL:$1|بیر|$1}} نتیجه گؤستر',
 'viewprevnext' => 'گؤستر ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'آختارماق تنظیملری',
 'searchmenu-exists' => "'''بو ویکی‌ده «[[:$1]]» آدلی صحیفه واردیر.'''",
 'searchmenu-new' => "'''بو ویکی‌ده «[[:$1]]» صحیفه‌‌سینی يارات!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بو اؤن‌اک ایله اولان صحیفه‌لری آختار]]',
 'searchprofile-articles' => 'مقاله‌لر',
 'searchprofile-project' => 'یاردیم و پروژه صحیفه‌لری',
 'searchprofile-images' => 'مولتی‌مئدیا',
@@ -1154,13 +1142,10 @@ $1",
 'showingresults' => "آشاغیدا نومره '''$2'''-دن باشلایان {{PLURAL:$1|'''بیر'''|'''$1'''}} سونوجا قدر گؤستریلیر.",
 'showingresultsnum' => "آشاغیدا نومره '''$2'''-دن باشلایان {{PLURAL:$3|'''بیر'''|'''$3'''}} سونوج گؤستریلیر.",
 'showingresultsheader' => "'''$4''' اوچون {{PLURAL:$5|'''$3'''-دن '''$1''' نتیجه|'''$3'''-دن '''$1-$2''' نتیجه}}",
-'nonefound' => "'''دیقت:''' یالنیز بعضی آدفضالاری آختاریلیر. سورغونوزو ''all:'' اؤن‌اکی‌نی آرتیرماقلا بوتون یئرلرده (او جومله‌دن دانیشیق صحیفه‌لری، شابلونلار و سونرا) آختارین، یوخسا ایسته‌دیگینیز آدفضاسینین آدینی اؤن‌اک کیمی آرتیرین و یالنیز اوردا آختارین.",
 'search-nonefound' => 'سیزین سورونوزا اویغون نتیجه تاپیلمادی.',
-'powersearch' => 'گلیشمیش آختاریش',
 'powersearch-legend' => 'گلیشمیش آختاریش',
 'powersearch-ns' => 'آدفضالاریندا آختار',
 'powersearch-redir' => 'یوللاندیرمالاری لیست ائت',
-'powersearch-field' => 'آختار:',
 'powersearch-togglelabel' => 'یوخلا:',
 'powersearch-toggleall' => 'بوتون',
 'powersearch-togglenone' => 'هئچ بیری',
@@ -1174,8 +1159,6 @@ $1",
 'preferences' => 'ترجیحلر',
 'mypreferences' => 'ترجیحلر',
 'prefs-edits' => 'دَییشمه‌لرین سایی:',
-'prefsnologin' => 'گیرمه‌میسینیز',
-'prefsnologintext' => 'ایستیفاده‌چی تنظیملرینی دَییشمک اوچون، <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} گیرمه‌لیسینیز]</span>.',
 'changepassword' => 'رمزی دَییشدیر',
 'prefs-skin' => 'قابیق',
 'skin-preview' => 'اؤن‌گؤستریش',
@@ -1199,7 +1182,6 @@ $1",
 'prefs-email' => 'ایمیل ترجیحلری',
 'prefs-rendering' => 'گؤرونوش',
 'saveprefs' => 'قئید ائت',
-'resetprefs' => 'قئید ائدیلمه‌میش ترجیحلری صیفیرله',
 'restoreprefs' => 'بوتون ایلک ترجیحلری قایتار',
 'prefs-editing' => 'دَییشدیرمک‌ده',
 'rows' => 'سطرلر:',
@@ -1217,7 +1199,6 @@ $1",
 'localtime' => 'یئرلی چاغ:',
 'timezoneuseserverdefault' => 'ویکی اؤن‌فرضینی ایشلد ($1)',
 'timezoneuseoffset' => 'باشقا (چاغ فرقینی بیلدیر)',
-'timezoneoffset' => 'واقت فرقی¹:',
 'servertime' => 'خیدمتچی چاغی:',
 'guesstimezone' => 'براوزِردن دولدور',
 'timezoneregion-africa' => 'آفریقا',
@@ -1958,10 +1939,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization صحیفه‌‌سین
 'protectedpages' => 'محافظه‌‌لی صحیفه‌‌لر',
 'protectedpages-indef' => 'يالنیز مدتسیز محافظه‌‌لر',
 'protectedpages-cascade' => 'یالنیز کاسکاد محافظه‌لر',
-'protectedpagestext' => 'آشاغی‌داکی صحیفه‌لر آد دییشیمینه و دَییشدیرمه‌یه باغلی‌دیر',
 'protectedpagesempty' => 'حال-حاضردا بو پارامئتره اویغون هئچ بیر محافظه‌لی صحیفه یوخ‌دور',
 'protectedtitles' => 'محافظه‌لی باش‌لیق‌لار',
-'protectedtitlestext' => 'آشاغی‌داکی باش‌لیق‌لار یارادیلماغا قارشی قوروما‌لی‌دیر',
 'protectedtitlesempty' => 'حال-حاضردا، بو پارامئترلری قورونان هئچ بیر موضوع یوخ‌دور.',
 'listusers' => 'ایستیفاده‌چی سیياهیسی',
 'listusers-editsonly' => 'يالنیز دَییشدیرمه ائدن ایستیفاده‌چیلری گؤستر',
@@ -3440,10 +3419,6 @@ $1',
 'exif-urgency-high' => 'چوخ($1)',
 'exif-urgency-other' => 'ایستیفاده‌چی طرفین‌دن مویین اولونموش بیرینجی‌لیک ($1)',
 
-# External editor support
-'edit-externally' => 'بو فایلی خاریجی یازیلیم‌لا دَییشدیر',
-'edit-externally-help' => '(آرتیق بیلگیلر اوچون [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] صحیفه‌سینه باخ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'بوتون',
 'namespacesall' => 'بوتون',
@@ -3665,8 +3640,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'اؤزل صحیفه‌لر',
-'specialpages-note' => '----
-* نورمال اؤزل صحیفه‌لر.
+'specialpages-note' => '* نورمال اؤزل صحیفه‌لر.
 * <span class="mw-specialpagerestricted">محدودلاشدیریلمیش اؤزل صحیفه‌لر.</span>',
 'specialpages-group-maintenance' => 'جاری مروزه‌لر',
 'specialpages-group-other' => 'دیگر خصوصی صحیفه‌لر',
index 3fd762c..7386b7a 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( 'Ҡатнашыусыға_хат' ),
@@ -306,7 +304,6 @@ $messages = array(
 'qbedit' => 'Үҙгәртергә',
 'qbpageoptions' => 'Был бит',
 'qbmyoptions' => 'Биттәрем',
-'qbspecialpages' => 'Махсус биттәр',
 'faq' => 'ЙБҺ',
 'faqpage' => 'Project:ЙБҺ',
 
@@ -423,8 +420,6 @@ $1',
 'pagetitle' => '{{SITENAME}} проектынан',
 'retrievedfrom' => 'Сығанағы — «$1»',
 'youhavenewmessages' => 'Яңы $1 бар ($2).',
-'newmessageslink' => 'яңы хәбәр',
-'newmessagesdifflink' => 'һуңғы үҙгәртеү',
 'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
 'youhavenewmessagesmanyusers' => 'Һеҙгә күп ҡатнашыусынан $1 бар ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|яңы хәбәр|яңы хәбәр}}',
@@ -527,9 +522,6 @@ $1',
 'perfcachedts' => 'Был мәғлүмәттәр кэштан алынған, ул һуңғы тапҡыр $1 яңыртылды.  Кэшта иң күбе  {{PLURAL:$4|язма}} һаҡлана',
 'querypage-no-updates' => 'Был битте яңыртыу хәҙер тыйылған.
 Бында күрһәтелгән мәғлүмәттәр яңыртылмаясаҡ.',
-'wrong_wfQuery_params' => 'wfQuery() функцияһы өсөн рөхсәт ителмәгән параметрҙар<br />
-Функция: $1<br />
-Һоратыу: $2',
 'viewsource' => 'Сығанаҡты ҡарау',
 'viewsource-title' => '$1 битенең сығанаҡ текстын ҡарарға',
 'actionthrottled' => 'Тиҙлек сикләнгән',
@@ -591,8 +583,8 @@ $2',
 'yourdomainname' => 'Һеҙҙең домен',
 'password-change-forbidden' => 'Был викила серһүҙегеҙҙе үҙгәртә алмайһығыҙ.',
 'externaldberror' => 'Тышҡы мәғлүмәт базаһы менән танылғанда хата барлыҡҡа килде йәки тышҡы үҙ көйләүҙәрегеҙҙе үҙгәртер өсөн хоҡуҡтарығыҙ етәрле түгел.',
-'login' => 'Танышыу йәки теркәлеү',
-'nav-login-createaccount' => 'Танышыу йәки теркәлеү',
+'login' => 'Танылыу',
+'nav-login-createaccount' => 'Танылыу йәки теркәлеү',
 'loginprompt' => '{{SITENAME}} проектына кереү өсөн «cookies» рөхсәт ителгән булырға тейеш.',
 'userlogin' => 'Танылыу йәки теркәлеү',
 'userloginnocreate' => 'Танылыу',
@@ -1204,12 +1196,8 @@ $1",
 # Search results
 'searchresults' => 'Эҙләү һөҙөмтәләре',
 'searchresults-title' => '«$1» өсөн эҙләү һөҙөмтәләре',
-'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' => 'Бит эстәлегендә тап килеүҙәр',
 'notextmatches' => 'Тап килгән бит табылманы',
 'prevn' => 'алдағы {{PLURAL:$1|$1}}',
@@ -1218,10 +1206,8 @@ $1",
 'nextn-title' => 'Тәүге $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}}',
 'shown-title' => 'Бер биттә $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}} күрһәт',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ҡарарға',
-'searchmenu-legend' => 'Эҙләү көйләүҙәре',
 'searchmenu-exists' => "'''Был вики-проектта «[[:$1]]» бите бар'''",
 'searchmenu-new' => "'''Был википроектта \"[[:\$1]]\" бите булдырырға.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Был префикслы биттәрҙе күрһәтергә]]',
 'searchprofile-articles' => 'Эстәлек биттәре',
 'searchprofile-project' => 'Ярҙамсы һәм проект биттәре',
 'searchprofile-images' => 'Мультимедиа',
@@ -1249,13 +1235,10 @@ $1",
 'showingresults' => 'Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$1</strong> {{PLURAL:$1|һөҙөмтә}} күрһәтелгән.',
 'showingresultsnum' => 'Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$3</strong> {{PLURAL:$3|һөҙөмтә}} күрһәтелгән.',
 'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|'''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
-'nonefound' => "'''Иҫкәрмә'''. Ғәҙәттә эҙләү бөтә исем арауыҡтарында үтәлмәй. Бөтә исем арауыҡтарында (фекер алышыу биттәре, ҡалыптар, һ.б.) эҙләү өсөн һүҙ башына ''all:'' өҫтәгеҙ йәки кәрәкле исем арауыҡтарын һайлағыҙ.",
 'search-nonefound' => 'Был һорауға яуап биреүсе һөҙөмтәләр табылманы.',
-'powersearch' => 'Киңәйтелгән эҙләү',
 'powersearch-legend' => 'Киңәйтелгән эҙләү',
 'powersearch-ns' => 'Исем аралыҡтарында эҙләү:',
 'powersearch-redir' => 'Йүнәлтеүҙәрҙе күрһәтергә',
-'powersearch-field' => 'Эҙлә:',
 'powersearch-togglelabel' => 'Һайла:',
 'powersearch-toggleall' => 'Барыһы',
 'powersearch-togglenone' => 'Һис бере',
@@ -1269,8 +1252,6 @@ $1",
 'preferences' => 'Көйләүҙәр',
 'mypreferences' => 'Көйләүҙәр',
 'prefs-edits' => 'Төҙәтеүҙәр һаны:',
-'prefsnologin' => 'Танылмағанһығыҙ',
-'prefsnologintext' => 'Ҡатнашыусы көйләүҙәрен үҙгәртеү өсөн, һеҙ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}танылырға]</span> тейешһегеҙ.',
 'changepassword' => 'Серһүҙҙе үҙгәртергә',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан байҡау',
@@ -1294,7 +1275,6 @@ $1",
 'prefs-email' => 'Электрон почта көйләүҙәре',
 'prefs-rendering' => 'Күренеш',
 'saveprefs' => 'Һаҡларға',
-'resetprefs' => 'Һаҡланмаған үҙгәрештерҙе таҙартырға',
 'restoreprefs' => 'Алдан ҡуйылған көйләүҙәрҙе тергеҙергә',
 'prefs-editing' => 'Мөхәррирләү',
 'rows' => 'Юлдар:',
@@ -1314,7 +1294,6 @@ $1",
 'localtime' => 'Урындағы ваҡыт:',
 'timezoneuseserverdefault' => 'Сервер көйләүҙәрен ҡулланырға $1',
 'timezoneuseoffset' => 'Башҡа (шылыуҙы керетегеҙ)',
-'timezoneoffset' => 'Шылыу:',
 'servertime' => 'Сервер ваҡыты',
 'guesstimezone' => 'Браузерҙан алырға',
 'timezoneregion-africa' => 'Африка',
@@ -1570,6 +1549,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 башлап яңы үҙгәртеүҙәрҙе күрһәт.',
@@ -2067,10 +2047,8 @@ $1',
 'protectedpages' => 'Һаҡланған биттәр',
 'protectedpages-indef' => 'Сикләнмәгән һаҡлауҙар ғына',
 'protectedpages-cascade' => 'Эҙмә-эҙлекле һаҡлауҙар ғына',
-'protectedpagestext' => 'Түбәндәге биттәр исемен үҙгәртеүҙән йәки мөхәррирләүҙән һаҡланған.',
 'protectedpagesempty' => 'Әлеге ваҡытта күрһәтелгән шарттар менән һаҡланған биттәр юҡ.',
 'protectedtitles' => 'Тыйылған исемдәр',
-'protectedtitlestext' => 'Түбәндәге исемдәрҙе ҡулланыу рөхсәт ителмәй.',
 'protectedtitlesempty' => 'Әлеге ваҡытта күрһәтелгән шарттар менән һаҡланған исемдәр юҡ.',
 'listusers' => 'Ҡатнашыусылар исемлеге',
 'listusers-editsonly' => 'Кәмендә бер үҙгәртеү индергән ҡатнашыусыларҙы ғына күрһәтергә',
@@ -3578,10 +3556,6 @@ $1',
 'exif-urgency-high' => 'Юғары ($1)',
 'exif-urgency-other' => 'Ҡулланыусы билдәләгән өҫтөнлөк ($1)',
 
-# External editor support
-'edit-externally' => 'Был файлды тышҡы программа ҡулланып мөхәррирләргә',
-'edit-externally-help' => '(Тулыраҡ мәғлүмәт өсөн металағы [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] (инглизсә) битен ҡарағыҙ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бөтә',
 'namespacesall' => 'бөтә',
@@ -3806,13 +3780,12 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 
 # Special:SpecialPages
 'specialpages' => 'Махсус биттәр',
-'specialpages-note' => '----
-* Ябай махсус биттәр.
+'specialpages-note' => '* Ябай махсус биттәр.
 * <span class="mw-specialpagerestricted">Сикле махсус биттәр.</span>
 * <span class="mw-specialpagecached">Кешланған махсус биттәр (иҫкергән булыуы мөмкин).</span>',
 'specialpages-group-maintenance' => 'Техник хеҙмәтләндереү хисапламалары',
 'specialpages-group-other' => 'Башҡа махсус биттәр',
-'specialpages-group-login' => 'Танышыу йәки теркәлеү',
+'specialpages-group-login' => 'Танылыу йәки теркәлеү',
 'specialpages-group-changes' => 'Һуңғы үҙгәртеүҙәр һәм журналдар',
 'specialpages-group-media' => 'Медиа хисапламалары һәм тейәүҙәр',
 'specialpages-group-users' => 'Ҡатнашыусылар һәм хоҡуҡтар',
@@ -4022,4 +3995,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 b19c37c..74d10b6 100644 (file)
@@ -202,7 +202,6 @@ $messages = array(
 'qbedit' => 'werkeln',
 'qbpageoptions' => 'Seitenopzionen',
 'qbmyoptions' => 'Meine Seiten',
-'qbspecialpages' => 'Speziaalseiten',
 'faq' => 'Oft gstejte Frong',
 'faqpage' => 'Project:FAQ',
 
@@ -317,8 +316,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',
@@ -405,9 +402,6 @@ Méglicherweis iss schoh vohram åndern gléschd worn.',
 'perfcached' => "Dé fóigernden Daaten staummern aus'm Cache und san méglicherweis nimmer aktuö. Maximoi {{PLURAL:$1|oah Ergebnis is|$1 Ergebniss san}} im Cache vafiagbor.",
 'perfcachedts' => "Dé Daaten staummern aus 'm Cache. Da Zeidbunkt voh da létzden Aktualisiarung: $1. Maximoi {{PLURAL:$4|oah Ergebnis is|$4 Ergebniss san}} im Cache vafiagbor.",
 'querypage-no-updates' => "'''Dé Aktualisiarungsfunkzión voh derer Seiten is derzeid deaktivird. Dé Daaten wern bis auf Weiders néd daneiert.'''",
-'wrong_wfQuery_params' => 'Foische Parameeter fyr wfQuery()<br />
-Funkzión: $1<br />
-Obfrog: $2',
 'viewsource' => 'Quejtext ozoagn',
 'viewsource-title' => 'Quöntext voh da Seiten $1 auhschauh',
 'actionthrottled' => 'Akziónszoi limitird',
@@ -679,10 +673,6 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Suachergebniss',
 'searchresults-title' => 'Suacheagebniss fia „$1“',
-'searchresulttext' => "Fia weidare Infos üwa's Suacha schau auf'd [[{{MediaWiki:Helppage}}|Hüifeseitn]].",
-'searchsubtitle' => 'Dei Suachãnfråg: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|ålle Seitn, de mid „$1“ ãnfãngan]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ålle Seitn, de wås nåch „$1“ valinkn]])',
-'searchsubtitleinvalid' => 'Dei Suachãnfråg: „$1“.',
-'notitlematches' => 'Koane Üwareinstimmungen mid de Seitntitl',
 'notextmatches' => 'Ka Üwareinstimmung mid dem Inhåit gfundn',
 'prevn' => '{{PLURAL:$1|vorheriga|vorherige $1}}',
 'nextn' => '{{PLURAL:$1|naxta|naxte $1}}',
@@ -713,13 +703,10 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 'searchrelated' => 'vawandt',
 'searchall' => 'olle',
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vo '''$3'''|Ergebniss '''$1–$2''' vo '''$3'''}} fia '''$4'''",
-'nonefound' => "'''Hiwais:''' Es wern standardmässig nur oanige Nåmensraim durchsuacht. Setz ''all:'' vur dain Suachbegrif, um olle Saiten (inkl. Dischkrirsaiten, Vurlong usw.) z' durchsuacha oder züid 'n Nåmen vom z' durchsuachanden Nåmensraum.",
 'search-nonefound' => 'Fia dei Suachofrog gibts koa Ergebnis',
-'powersearch' => 'Suach',
 'powersearch-legend' => 'Daweiterde Suach',
 'powersearch-ns' => 'Suach in Nåmensraim:',
 'powersearch-redir' => 'Weiderloattung åzoang',
-'powersearch-field' => 'Suach noch:',
 'search-external' => 'Externe Suach',
 
 # Preferences page
@@ -1565,10 +1552,6 @@ Weidane wean standardmassi ned ozoagt.
 
 'exif-componentsconfiguration-0' => 'Gibts néd',
 
-# External editor support
-'edit-externally' => 'De Datei mid am externa Programm beorbatn',
-'edit-externally-help' => '(Schaug unter [https://www.mediawiki.org/wiki/Manual:External_editors Installationsoweisunga] fia weidane Infos)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'olle',
 'namespacesall' => 'olle',
@@ -1667,8 +1650,7 @@ Bittscheh d' noraale Vurschau bnutzen.",
 
 # Special:SpecialPages
 'specialpages' => 'Spezialseitn',
-'specialpages-note' => '----
-* Reguläre Speziaalseiten
+'specialpages-note' => '* Reguläre Speziaalseiten
 * <span class="mw-specialpagerestricted">Zuagrifsbschränkde Speziaalseiten</span>
 * <span class="mw-specialpagecached">Cachegenerrirde Speziaalseiten (Da Inhoid is méglicherweis vaoiterd)</span>',
 'specialpages-group-maintenance' => 'Wartungslisten',
index 0aa48cb..a51eb32 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( 'درگیزگ' ),
@@ -274,7 +272,6 @@ $messages = array(
 'qbedit' => 'اصلاح',
 'qbpageoptions' => 'صفحه',
 'qbmyoptions' => 'منی صفحات',
-'qbspecialpages' => 'حاصین صفحات',
 'faq' => 'ب.ج.س',
 'faqpage' => 'Project:ب.ج.س',
 
@@ -382,8 +379,6 @@ $1',
 'ok' => 'هوبنت',
 'retrievedfrom' => 'درگیجگ بیت چه  "$1"',
 'youhavenewmessages' => 'شما هست  $1 ($2).',
-'newmessageslink' => 'نوکین کوله یان',
-'newmessagesdifflink' => 'اهری تغییر',
 'youhavenewmessagesmulti' => 'شما را نوکین کوله یان هست ته   $1',
 'editsection' => 'اصلاح',
 'editold' => 'اصلاح',
@@ -466,9 +461,6 @@ $1',
 'perfcached' => 'جهلیگین دیتا ذخیره بیتگنت و شاید نوک می بنت. 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' => 'په روچ بیگان په ای صفحه الان غیر فعالنت. دیتا ادان الان نوکین نهنت.',
-'wrong_wfQuery_params' => 'اشتباهین پارامتر به wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'به گند منبع آ',
 'actionthrottled' => 'کار گیر نت',
 'actionthrottledtext' => 'په خاطر یک معیار ضد اسپم شما چه انجام ای کار ته یک کمی زمان محدود بیتگیت، و شما چه ای محدودیت رد بیتگیت.
@@ -926,12 +918,8 @@ $1",
 # Search results
 'searchresults' => 'نتایج گردگ',
 'searchresults-title' => 'نتایج گردگ په "$1"',
-'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' => 'متن صفحه هم دپ بنت',
 'notextmatches' => 'هچ متن صفحه هم دپ نهنت',
 'prevn' => 'پیشگین {{PLURAL:$1|$1}}',
@@ -940,10 +928,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} دگه',
 'shown-title' => 'پیش دار $1 {{PLURAL:$1|نتیجه|نتیجه}} ته هر صفحه',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) دیدگ',
-'searchmenu-legend' => 'گزینه یان گردگ',
 'searchmenu-exists' => "'''صفحه گون نام \"[[\$1]]\" ته ای ویکی نیستن'''",
 'searchmenu-new' => "'''شر کن صفحه ای \"[[:\$1]]\" ته ای ویکی!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|بروز صفحات گون پیش وند]]',
 'searchprofile-articles' => 'صفحات محتوا',
 'searchprofile-project' => 'کمک و صفحات پروژه ای',
 'searchprofile-images' => 'ملتیمدیا',
@@ -970,13 +956,10 @@ $1",
 'showingresults' => "جهل پیش دارگنت تا  {{PLURAL:$1|'''1'''نتیجه|'''$1''' نتایج}} شروع بنت گون #'''$2'''.",
 'showingresultsnum' => "جهل پیش داریت  {{PLURAL:$3|'''1''' نتیجه|'''$3''' نتایج}} شروع بیت گون #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|نتیجه '''$1''' چه '''$3'''|نتایج '''$1 - $2''' چه '''$3'''}} په '''$4'''",
-'nonefound' => "'''توجه''':  فقط لهتی نام فضا په طور پیش فرض گردگ بیتت. سعی کنیت وتی جوستء هور کنیت گون ''all:'' په گردگ په کل محتوا (شامل صفحات گپ، تمپلتان ودگر)، یا استفاده کنیت لوٹیگن نام فضا په داب پیش وند.",
 'search-nonefound' => 'نتیجه هم دپ په درخواست نیست',
-'powersearch' => 'پیشرپتگی گردگ',
 'powersearch-legend' => 'گردگ پیشرفته',
 'powersearch-ns' => 'گردگ ته نام فضا آن',
 'powersearch-redir' => 'لیست عیرمستقیم آن',
-'powersearch-field' => 'گردگ په',
 'powersearch-togglelabel' => 'کنترل:',
 'powersearch-toggleall' => 'کل',
 'powersearch-togglenone' => 'هچ یک',
@@ -989,8 +972,6 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'منی ترجیحات',
 'prefs-edits' => 'تعداد اصلاحات:',
-'prefsnologin' => 'وارد نهیت',
-'prefsnologintext' => 'شما بایدن  <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} وارد بیت]</span> په تنظیم کتن ترجیحات.',
 'changepassword' => 'کلمه رمز عوض کن',
 'prefs-skin' => 'پوست',
 'skin-preview' => 'بازین',
@@ -1008,7 +989,6 @@ $1",
 'prefs-email' => 'گزینه یان ایمیل:',
 'prefs-rendering' => 'شکل صفحه',
 'saveprefs' => 'ذخیره',
-'resetprefs' => 'پاکن تغییرات ذخیره نه بوتگین',
 'restoreprefs' => 'کل پیش فرضین تنظیمات برگردین',
 'prefs-editing' => 'اصلاح',
 'rows' => 'ردیفآن«',
@@ -1025,7 +1005,6 @@ $1",
 'localtime' => 'ملکی وهد:',
 'timezoneuseserverdefault' => 'چه پیش فرضین سرور استفاده کن',
 'timezoneuseoffset' => 'دگر (اختلاف ءَ مشخص کنیت)',
-'timezoneoffset' => 'اختلاف¹:',
 'servertime' => 'وهد سرور:',
 'guesstimezone' => 'پرکن چه بروزر',
 'timezoneregion-africa' => 'افریکا',
@@ -1575,10 +1554,8 @@ PICT # misc.
 'protectedpages' => 'صفحات حفاظت بیتگین',
 'protectedpages-indef' => 'فقط محافظت نامحدود',
 'protectedpages-cascade' => 'محافظتان آبشاری فقط',
-'protectedpagestext' => 'جهلیگین صفحات محافظت بوتگین چه اصلاح و جاه په جاه بیگ',
 'protectedpagesempty' => 'هچ صفحه ای گون ای پارامترآن',
 'protectedtitles' => 'عناوین محافظتی',
-'protectedtitlestext' => 'جهلیگین عناوین چه شر بیگ محافظتن',
 'protectedtitlesempty' => 'هچ عنوانی هنو گو ای پارامتران محافظت نهنت.',
 'listusers' => 'لیست کاربر',
 'listusers-editsonly' => 'فقط کاربرانی که اصلاحاتش هست پیش بدار',
@@ -2787,10 +2764,6 @@ Variants for Chinese language
 'exif-gpsdirection-t' => 'جهت درست',
 'exif-gpsdirection-m' => 'مسیر آهن ربایی',
 
-# External editor support
-'edit-externally' => 'ای صفحه یا اصلاح کن گون یک درآین برنامه ای',
-'edit-externally-help' => '(په گیشترین اطلاعات بچار[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'کل',
 'namespacesall' => 'کل',
@@ -3006,8 +2979,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'حاصین صفحات',
-'specialpages-note' => '----
-* نرمال صفحات حاص.
+'specialpages-note' => '* نرمال صفحات حاص.
 *  <strong class="mw-specialpagerestricted">محدودین صفحات حاص.</strong>',
 'specialpages-group-maintenance' => 'گزارشات دارگ',
 'specialpages-group-other' => 'دگر حاصین صفحات',
@@ -3073,4 +3045,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 58dda28..2162b0c 100644 (file)
@@ -254,7 +254,6 @@ $messages = array(
 'qbedit' => 'Liwata',
 'qbpageoptions' => 'Ining pahina',
 'qbmyoptions' => 'Sakong mga pahina',
-'qbspecialpages' => 'Espesyal na mga pahina',
 'faq' => 'PPK (Pirmihang Pighahapot na mga kahaputan)',
 'faqpage' => 'Project:PPK (Pirmihang Pighahapot na mga Kahaputan)',
 
@@ -370,12 +369,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',
@@ -474,9 +471,6 @@ Ini gayod may laog nin o dakol na mga karakter na dae pinaggagamit sa mga titulo
 'perfcached' => 'An minasunod na datos pinagtago asin bakong gayo napapanahon. An maximum na {{PLURAL:$1|sarong resulta na|$1 mga resulta na}} yaon sana sa pinagtago.',
 'perfcachedts' => 'An minasunod na datos pinagtago, asin huring pinagdagdagan kan $1. An maximum na {{PLURAL:$4|sarong result na |$4 mga resulta na }} yaon sana sa pinagtago.',
 'querypage-no-updates' => 'Pigpopogol mùna an mga pagbabàgo sa pahinang ini. Dai mùna mababàgo an mga datos digdi.',
-'wrong_wfQuery_params' => 'Salâ na parámetro sa wfQuery()<br />
-Acción: $1<br />
-Hapót: $2',
 'viewsource' => 'Hilingón an ginikanan',
 'viewsource-title' => 'Hilnga an piggikanan para sa $1',
 'actionthrottled' => 'An aksyon pinagpugulan',
@@ -508,7 +502,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''",
@@ -1166,12 +1161,8 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 # Search results
 'searchresults' => 'Resulta kan paghahánap',
 'searchresults-title' => 'Resulta kan paghahanap para sa "$1"',
-'searchresulttext' => 'Para sa iba pang impormasyon manonongod sa paghanap sa {{SITENAME}}, hilingon tabî an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ika naghanap para sa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gabos na mga pahina na nagpopoon sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gabos na mga pahina na nakatakod sa "$1"]])',
-'searchsubtitleinvalid' => "Hinanap mo an '''$1'''",
 'toomanymatches' => 'Kadakol-dakol na angay an ipigbalik, probaran an ibang kahaputan',
 'titlematches' => 'Angay an título kan artíkulo',
-'notitlematches' => 'Mayong angay na título nin pahina',
 'textmatches' => 'Angay an teksto nin páhina',
 'notextmatches' => 'Mayong ángay na teksto nin páhina',
 'prevn' => 'an nakaagi{{PLURAL:$1|$1}}',
@@ -1180,10 +1171,8 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'nextn-title' => 'Sunod $1  {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Ipahiling $1  {{PLURAL:$1|resulta|mga resulta}} sa kada pahina',
 'viewprevnext' => 'Tanawon ($1{{int:pipe-separator}}$2)($3)',
-'searchmenu-legend' => 'Opsyon sa paghahanap',
 'searchmenu-exists' => "'''Igwa nin sarong pahina na pinagngaranan na \"[[:\$1]]\" sa wiking ini.'''",
 'searchmenu-new' => "'''Muknaon an pahina \"[[:\$1]]\" sa wiking ini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kilyawon an mga pahina sa paagi kainin enotang panigmit]]',
 'searchprofile-articles' => 'Mga pahina nin laog',
 'searchprofile-project' => 'Mga pahina nin Tabang asin Proyekto',
 'searchprofile-images' => 'Multimidya',
@@ -1211,14 +1200,10 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'showingresults' => "Pigpapahiling sa babâ sagkod sa {{PLURAL:$1|'''1''' resulta|'''$1''' mga resulta}} poon sa #'''$2'''.",
 'showingresultsnum' => "Pigpapahiling sa babâ {{PLURAL:$3|'''1''' resulta|'''$3''' mga resulta}} poon sa #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' kan '''$3'''|Mga Resulta '''$1 - $2''' kan '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Notang Antabay''': An ibang espasyong-ngaran sana an pirmihang pinaghahanap.
-Prubaran na panigmitan an saimong kahaputan nin ''all:'' sa paghanap kan gabos na laog (kabali an mga pahina nin olay, mga templato, etc), o gamiton an pinagmawot na espasyong ngaran bilang enotang panigmit.",
 'search-nonefound' => 'Mayo nin mga resulta na panampok sa kahaputan.',
-'powersearch' => 'Adbansiyadong paghahanap',
 'powersearch-legend' => 'Adbansiyadong paghahanap',
 'powersearch-ns' => 'Maghanap sa mga espasyong-ngaran:',
 'powersearch-redir' => 'Listahan kan mga panukdong otro',
-'powersearch-field' => 'Hanápon an',
 'powersearch-togglelabel' => 'Pamili:',
 'powersearch-toggleall' => 'Gabos',
 'powersearch-togglenone' => 'Wara',
@@ -1230,8 +1215,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',
-'prefsnologintext' => 'Ika dapat na magin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakalaog na]</span> tanganing tuytuyon an mga kabotan nin paragamit.',
+'prefsnologintext2' => 'Tabi man $1 tanganing maikaag an mga kamuyahan nin paragamit.',
 'changepassword' => 'Ribayan an sekretong panlaog',
 'prefs-skin' => "''Skin''",
 'skin-preview' => 'Tânawon',
@@ -1255,7 +1239,6 @@ Prubaran na panigmitan an saimong kahaputan nin ''all:'' sa paghanap kan gabos n
 'prefs-email' => 'E-surat na mga pagpipilian',
 'prefs-rendering' => 'Hitsurahon',
 'saveprefs' => 'Itagama',
-'resetprefs' => 'Linigan an dae naitagamang mga kaliwatan',
 'restoreprefs' => 'Balikon an gabos na panugmad na mga panuytoy (sa gabos na mga seksyon)',
 'prefs-editing' => 'Pighihira',
 'rows' => 'Mga hilera:',
@@ -1276,7 +1259,6 @@ An siisay man na makaaram kaini makakapagbasa kan saimong bantay-listahan, kaya
 'localtime' => 'Panlokal na oras:',
 'timezoneuseserverdefault' => 'Gamita an panugmad sa wiki ($1)',
 'timezoneuseoffset' => 'Iba pa (ihayag an pambawi)',
-'timezoneoffset' => 'Bawia¹:',
 'servertime' => 'Oras kan serbidor:',
 'guesstimezone' => "Bugtakan an ''browser''",
 'timezoneregion-africa' => 'Aprika',
@@ -1531,6 +1513,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',
@@ -2020,10 +2004,8 @@ Ini ngunyan minatukdo-liwat pasiring sa [[$2]].',
 'protectedpages' => 'Mga protektadong pahina',
 'protectedpages-indef' => 'Daeng sagkod na proteksyon sana',
 'protectedpages-cascade' => 'Mga pasurunod na proteksyon sana',
-'protectedpagestext' => 'An mga minasunod na pahina protektado na ibalyó o hirahón',
 'protectedpagesempty' => 'Mayong pang páhina an napoprotehiran kaining mga parametros.',
 'protectedtitles' => 'Protektadong mga titulo',
-'protectedtitlestext' => 'An minasunod na mga titulo pinagprotektaran magpoon na muknaon',
 'protectedtitlesempty' => 'Mayong mga titulo sa presente an protektado kaining mga parametro.',
 'listusers' => 'Lista nin paragamit',
 'listusers-editsonly' => 'Ipahiling sana an mga paragamit na igwang mga pinagliwat',
@@ -2249,20 +2231,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}}}}',
@@ -3066,7 +3044,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',
@@ -3533,10 +3511,6 @@ Sublokas kan siyudad na ipinahiling',
 'exif-urgency-high' => 'Halangkawon ($1)',
 'exif-urgency-other' => 'Prayoridad na pakahulugan nin paragamit ($1)',
 
-# External editor support
-'edit-externally' => 'Liwaton ining sagunson na pinaggagamit an panluwasan na aplikasyon',
-'edit-externally-help' => '(Hilngon an [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa kadagdagang impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'gabos',
 'namespacesall' => 'gabós',
@@ -3760,9 +3734,9 @@ 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.
-* <span class="mw-specialpagerestricted">Restriktadong espesyal na mga pahina.</span>',
+'specialpages-note-top' => 'Balaynan',
+'specialpages-note' => '* Normal sa 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',
 'specialpages-group-login' => 'Maglaog / magmukna nin panindog',
@@ -3975,4 +3949,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> sa resulta',
+'expand_templates_preview' => 'Patânaw',
+
 );
index e53174b..0a5452b 100644 (file)
@@ -247,7 +247,6 @@ $messages = array(
 'qbedit' => 'Правіць',
 'qbpageoptions' => 'Гэтая старонка',
 'qbmyoptions' => 'Свае старонкі',
-'qbspecialpages' => 'Адмысловыя старонкі',
 'faq' => 'ЧАПЫ',
 'faqpage' => 'Project:ЧАПЫ',
 
@@ -364,8 +363,6 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Узята з "$1"',
 'youhavenewmessages' => 'Вы маеце $1 ($2).',
-'newmessageslink' => 'новыя паведамленні',
-'newmessagesdifflink' => 'розн. з найноўшай версіяй',
 'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|$3 ўдзельніка|$3 удзельнікаў}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад мноства карыстальнікаў ($2).',
 'youhavenewmessagesmulti' => 'У вас ёсць новыя паведамленні на $1',
@@ -453,10 +450,6 @@ $1',
 'perfcached' => 'Гэта ўзятыя з кэшу звесткі, і яны могуць не быць актуальнымі. У кэшы захоўваецца не больш за {{PLURAL:$1|адзін вынік|$1 вынікі|$1 вынікаў}}.',
 'perfcachedts' => 'Наступныя звесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} не больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
 'querypage-no-updates' => 'Немагчыма абнавіць паказаныя звесткі, таму што зараз абнаўленні гэтай старонкі не дазволены.',
-'wrong_wfQuery_params' => 'Недапушчальныя параметры wfQuery()<br />
-
-Функцыя: $1<br />
-Зварот: $2',
 'viewsource' => 'Паказаць зыходны тэкст',
 'viewsource-title' => 'Прагляд зыходнага тэксту старонкі $1',
 'actionthrottled' => 'Дзеянне прыгашана',
@@ -1035,12 +1028,8 @@ $1",
 # Search results
 'searchresults' => 'Вынікі пошуку',
 'searchresults-title' => 'Вынікі пошуку «$1»',
-'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' => 'Знойдзена ў тэкстах',
 'notextmatches' => 'Нічога не знойдзена ў тэкстах старонак',
 'prevn' => 'папярэдн. {{PLURAL:$1|$1}}',
@@ -1049,10 +1038,8 @@ $1",
 'nextn-title' => 'Наступны{{PLURAL:$1| вынік|я $1 вынікі(аў)}}',
 'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі(аў)}} на старонку',
 'viewprevnext' => 'Гл. ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Настройкі пошуку',
 'searchmenu-exists' => "'''На вікі ёсць старонка \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Стварыць на гэтай вікі старонку \"[[:\$1]]\"'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Паказаць старонкі з гэтым прэфіксам]]',
 'searchprofile-articles' => 'Артыкулы',
 'searchprofile-project' => 'Старонкі даведкі і праекта',
 'searchprofile-images' => 'Мультымедыя',
@@ -1080,13 +1067,10 @@ $1",
 'showingresults' => "Ніжэй паказаны да {{PLURAL:$1|'''$1''' выніку|'''$1''' вынікаў}}, пачынаючы з нумару '''$2'''.",
 'showingresultsnum' => "Ніжэй паказаны{{PLURAL:$3| '''1''' вынік|я '''$3''' вынікаў}}, пачынаючы з нумару #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' из '''$3'''|Вынікі '''$1 — $2''' из '''$3'''}} для '''$4'''",
-'nonefound' => "'''Увага''': прадвызначана пошук вядзецца толькі ў некаторых прасторах назваў. Паспрабуйце прыпісаць да свайго звароту пачатковае ''all:'', каб шукаць ва ўсім змесце (у размовах, шаблонах і г.д.), або прыпішыце да звароту патрэбную прастору назваў.",
 'search-nonefound' => 'Нічога не было знойдзена.',
-'powersearch' => 'Знайсці',
 'powersearch-legend' => 'Падрабязны пошук',
 'powersearch-ns' => 'Шукаць у прасторах назваў:',
 'powersearch-redir' => 'Паказваць перасылкі (рэдырэкты)',
-'powersearch-field' => 'Што шукаць',
 'powersearch-togglelabel' => 'Праверце:',
 'powersearch-toggleall' => 'Усе',
 'powersearch-togglenone' => 'Няма',
@@ -1097,8 +1081,6 @@ $1",
 'preferences' => 'Настройкі',
 'mypreferences' => 'Настройкі',
 'prefs-edits' => 'Колькасць правак:',
-'prefsnologin' => 'Не ўвайшлі',
-'prefsnologintext' => 'Неабходна <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} увайсці ў сістэму]</span>, каб мяняць свае настройкі.',
 'changepassword' => 'Пароль',
 'prefs-skin' => 'Вокладка',
 'skin-preview' => 'перадпаказ',
@@ -1121,7 +1103,6 @@ $1",
 'prefs-email' => 'Эл.пошта',
 'prefs-rendering' => 'Від',
 'saveprefs' => 'Запісаць',
-'resetprefs' => 'Да пачатковых',
 'restoreprefs' => 'Аднавіць усе прадвызначэнні',
 'prefs-editing' => 'Праца',
 'rows' => 'Радкі:',
@@ -1139,7 +1120,6 @@ $1",
 'localtime' => 'Мясцовы час:',
 'timezoneuseserverdefault' => 'Карыстацца настаўленнямі серверу ($1)',
 'timezoneuseoffset' => 'Іншая розніца',
-'timezoneoffset' => 'Розніца¹:',
 'servertime' => 'Час на серверы:',
 'guesstimezone' => 'Як у браўзеры',
 'timezoneregion-africa' => 'Афрыка',
@@ -1368,6 +1348,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',
@@ -1805,10 +1786,8 @@ $1',
 'protectedpages' => 'Старонкі пад аховай',
 'protectedpages-indef' => 'Толькі бестэрміновыя аховы',
 'protectedpages-cascade' => 'Толькі каскадныя засцераганні',
-'protectedpagestext' => 'Гэтыя старонкі ахоўваюцца ад правак і пераносаў',
 'protectedpagesempty' => 'Ніякія старонкі такім чынам не ахоўваюцца.',
 'protectedtitles' => 'Назвы пад аховай',
-'protectedtitlestext' => 'Гэтыя назвы ахоўваюцца ад стварэння',
 'protectedtitlesempty' => 'Няма назваў, якія зараз бы ахоўваліся з такімі параметрамі.',
 'listusers' => 'Усе ўдзельнікі',
 'listusers-editsonly' => 'Толькі ўдзельнікі, якія маюць праўкі',
@@ -3206,10 +3185,6 @@ $1',
 'exif-urgency-high' => 'Высокая ($1)',
 'exif-urgency-other' => 'Вызначаны карыстальнікам прыярытэт ($1)',
 
-# External editor support
-'edit-externally' => 'Правіць файл у вонкавай праграме',
-'edit-externally-help' => '(Гл. падрабязней [https://www.mediawiki.org/wiki/Manual:External_editors пра настаўлянне старонніх праграм-рэдактараў])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'усе',
 'namespacesall' => 'усе',
@@ -3403,8 +3378,7 @@ MediaWiki распаўсюджваецца, спадзеючыся на прыд
 
 # Special:SpecialPages
 'specialpages' => 'Адмысловыя старонкі',
-'specialpages-note' => '----
-* Звычайныя адмысловыя старонкі.
+'specialpages-note' => '* Звычайныя адмысловыя старонкі.
 * <span class="mw-specialpagerestricted">Адмысловыя старонкі з абмежаваным доступам.</span>
 * <span class="mw-specialpagecached">Закэшаваныя адмысловыя старонкі (могуць быць састарэлымі).</span>',
 'specialpages-group-maintenance' => 'Звесткі аб працы',
index db35f2c..cbb1380 100644 (file)
@@ -65,7 +65,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Стварыць_рахунак' ),
        'Deadendpages'              => array( 'Тупіковыя_старонкі' ),
        'DeletedContributions'      => array( 'Выдалены_ўнёсак' ),
-       'Disambiguations'           => array( 'Неадназначнасьці' ),
        'DoubleRedirects'           => array( 'Двайныя_перанакіраваньні' ),
        'Emailuser'                 => array( 'Даслаць_ліст' ),
        'Export'                    => array( 'Экспарт' ),
@@ -420,7 +419,6 @@ $messages = array(
 'qbedit' => 'Рэдагаваць',
 'qbpageoptions' => 'Гэтая старонка',
 'qbmyoptions' => 'Мае старонкі',
-'qbspecialpages' => 'Спэцыяльныя старонкі',
 'faq' => 'Частыя пытаньні',
 'faqpage' => 'Project:Частыя пытаньні',
 
@@ -538,8 +536,6 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Атрымана з «$1»',
 'youhavenewmessages' => 'Вы атрымалі $1 ($2).',
-'newmessageslink' => 'новыя паведамленьні',
-'newmessagesdifflink' => 'апошняя зьмена',
 'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|іншага ўдзельніка|$3 удзельнікаў}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад некалькіх удзельнікаў ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|новае паведамленьне|новыя паведамленьні}}',
@@ -639,9 +635,6 @@ $1',
 'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
 'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
 'querypage-no-updates' => 'Абнаўленьні гэтай старонкі цяпер адключаныя. Зьвесткі ня будуць абнаўляцца.',
-'wrong_wfQuery_params' => 'Няслушныя парамэтры для wfQuery()<br />
-Функцыя: $1<br />
-Запыт: $2',
 'viewsource' => 'Паказаць крыніцу',
 'viewsource-title' => 'Прагляд крыніцы для $1',
 'actionthrottled' => 'Дзеяньне прытрыманае',
@@ -1324,12 +1317,8 @@ $1",
 # Search results
 'searchresults' => 'Вынікі пошуку',
 'searchresults-title' => 'Вынікі пошуку для «$1»',
-'searchresulttext' => 'Для атрыманьня больш падрабязнай інфармацыі пра пошук у {{GRAMMAR:месны|{{SITENAME}}}}, глядзіце [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Па запыце '''[[:$1]]''' ([[Special:Prefixindex/$1|усе старонкі, якія пачынаюцца з «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|усе старонкі, якія спасылаюцца на «$1»]])",
-'searchsubtitleinvalid' => "Па запыце '''$1'''",
 'toomanymatches' => 'Знойдзена зашмат супадзеньняў з запытам, калі ласка, паспрабуйце зьмяніць запыт',
 'titlematches' => 'Супадзеньні ў назвах старонак',
-'notitlematches' => 'Супадзеньні ў назвах старонак ня знойдзеныя',
 'textmatches' => 'Супадзеньні ў тэкстах старонак',
 'notextmatches' => 'Супадзеньні ў тэкстах старонак ня знойдзеныя',
 'prevn' => '{{PLURAL:$1|папярэдняя|папярэднія|папярэднія}} $1',
@@ -1338,10 +1327,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Наступны $1 вынік|Наступныя $1 вынікі|Наступныя $1 вынікаў}}',
 'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі|вынікаў}} на старонцы',
 'viewprevnext' => 'Паказаць ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Налады пошуку',
 'searchmenu-exists' => "* Старонка '''[[$1]]'''",
 'searchmenu-new' => "'''Стварыць старонку «[[:$1|$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Праглядзець старонкі з гэтым прэфіксам]]',
 'searchprofile-articles' => 'Старонкі са зьместам',
 'searchprofile-project' => 'Старонкі дапамогі і праекту',
 'searchprofile-images' => 'Мультымэдыя',
@@ -1369,13 +1356,10 @@ $1",
 'showingresults' => "Ніжэй {{PLURAL:$1|паданы|паданыя|паданыя}} да '''$1''' {{PLURAL:$1|выніку|вынікаў|вынікаў}}, пачынаючы з #<b>$2</b>.",
 'showingresultsnum' => "Ніжэй паказаны сьпіс з '''$3''' {{PLURAL:$3|выніка|вынікаў|вынікаў}}, пачынаючы ад № '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
-'nonefound' => "'''Увага''': Па змоўчваньні пошук вядзецца не ва ўсіх прасторах назваў. Трэба дапісаць да запыту ''усе:'' каб шукаць па ўсім зьмесьце (уключаючы абмеркаваньні, шаблёны і г.д.) альбо дадаць да запыту неабходную прастору назваў.",
 'search-nonefound' => 'Супадзеньняў па запыце ня знойдзена.',
-'powersearch' => 'Удасканалены пошук',
 'powersearch-legend' => 'Удасканалены пошук',
 'powersearch-ns' => 'Шукаць у прасторах назваў:',
 'powersearch-redir' => 'Паказваць перанакіраваньні',
-'powersearch-field' => 'Шукаць',
 'powersearch-togglelabel' => 'Пазначыць:',
 'powersearch-toggleall' => 'Усе',
 'powersearch-togglenone' => 'Нічога',
@@ -1388,8 +1372,6 @@ $1",
 'preferences' => 'Налады',
 'mypreferences' => 'Налады',
 'prefs-edits' => 'Колькасьць рэдагаваньняў:',
-'prefsnologin' => 'Вы не ўвайшлі ў сыстэму',
-'prefsnologintext' => 'Вам трэба <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ўвайсьці ў сыстэму]</span>, каб зьмяняць свае налады.',
 'changepassword' => 'Зьмяніць пароль',
 'prefs-skin' => 'Афармленьне',
 'skin-preview' => 'Папярэдні прагляд',
@@ -1413,7 +1395,6 @@ $1",
 'prefs-email' => 'Налады электроннай пошты',
 'prefs-rendering' => 'Выгляд',
 'saveprefs' => 'Захаваць',
-'resetprefs' => 'Скінуць',
 'restoreprefs' => 'Аднавіць усе стандартныя налады (ва ўсіх разьдзелах)',
 'prefs-editing' => 'Рэдагаваньне',
 'rows' => 'Радкоў:',
@@ -1434,7 +1415,6 @@ $1",
 'localtime' => 'Мясцовы час:',
 'timezoneuseserverdefault' => 'Выкарыстоўваць стандартныя налады {{GRAMMAR:родны|{{SITENAME}}}} ($1)',
 'timezoneuseoffset' => 'Іншы (пазначце розьніцу ў часе)',
-'timezoneoffset' => 'Розьніца¹:',
 'servertime' => 'Час на сэрвэры:',
 'guesstimezone' => 'Запоўніць з браўзэра',
 'timezoneregion-africa' => 'Афрыка',
@@ -1689,6 +1669,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',
@@ -2179,10 +2160,8 @@ $1',
 'protectedpages' => 'Абароненыя старонкі',
 'protectedpages-indef' => 'Толькі бестэрміновыя абароны',
 'protectedpages-cascade' => 'Толькі каскадныя абароны',
-'protectedpagestext' => 'Наступныя старонкі абароненыя ад пераносаў і рэдагаваньняў',
 'protectedpagesempty' => 'Цяпер няма абароненых старонак з пазначанымі парамэтрамі.',
 'protectedtitles' => 'Забароненыя старонкі',
-'protectedtitlestext' => 'Стварэньне наступных старонак забароненае',
 'protectedtitlesempty' => 'Цяпер няма абароненых назваў з пазначанымі парамэтрамі.',
 'listusers' => 'Сьпіс удзельнікаў і ўдзельніц',
 'listusers-editsonly' => 'Паказаць толькі ўдзельнікаў, якія маюць рэдагаваньні',
@@ -3693,10 +3672,6 @@ $1',
 'exif-urgency-high' => 'Высокая ($1)',
 'exif-urgency-other' => 'Прыярытэт вызначаны карыстальнікам ($1)',
 
-# External editor support
-'edit-externally' => 'Рэдагаваць гэты файл з выкарыстаньнем вонкавай праграмы',
-'edit-externally-help' => '(Глядзіце падрабязнасьці ў [https://www.mediawiki.org/wiki/Manual:External_editors інструкцыі па наладцы] (па-ангельску))',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'усё',
 'namespacesall' => 'усе',
@@ -3929,8 +3904,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 
 # Special:SpecialPages
 'specialpages' => 'Спэцыяльныя старонкі',
-'specialpages-note' => '----
-* Звычайныя спэцыяльныя старонкі.
+'specialpages-note' => '* Звычайныя спэцыяльныя старонкі.
 * <strong class="mw-specialpagerestricted">Спэцыяльныя старонкі з абмежаваным доступам.</strong>
 * <span class="mw-specialpagecached">Кэшаваныя спэцыяльныя старонкі (могуць быць састарэлымі).</span>',
 'specialpages-group-maintenance' => 'Тэхнічныя справаздачы',
@@ -4145,4 +4119,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 dfa161b..21ec5e3 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( 'Свързани_промени' ),
@@ -396,7 +396,6 @@ $messages = array(
 'qbedit' => 'Редактиране',
 'qbpageoptions' => 'Тази страница',
 'qbmyoptions' => 'Моите страници',
-'qbspecialpages' => 'Специални страници',
 'faq' => 'ЧЗВ',
 'faqpage' => 'Project:ЧЗВ',
 
@@ -513,12 +512,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' => 'редактиране',
@@ -612,9 +609,6 @@ $1',
 'perfcached' => 'Следните данни са извлечени от склада и затова може да не отговарят на текущото състояние. В складираното копие {{PLURAL:$1|е допустим най-много един резултат|са допустими най-много $1 резултата}}.',
 'perfcachedts' => 'Данните са складирани и обновени за последно на $1. Най-много {{PLURAL:$4|един резултат е допустим и наличен|$4 резултата са допустими и налични}} в складираното копие.',
 'querypage-no-updates' => 'Обновяването на тази страница в момента е изключено. Засега данните тук няма да бъдат обновявани.',
-'wrong_wfQuery_params' => 'Невалидни аргументи за wfQuery()<br />
-Функция: $1<br />
-Заявка: $2',
 'viewsource' => 'Преглед на кода',
 'viewsource-title' => 'Преглеждане на кода на $1',
 'actionthrottled' => 'Ограничение в скоростта',
@@ -1265,12 +1259,8 @@ $1",
 # Search results
 'searchresults' => 'Резултати от търсенето',
 'searchresults-title' => 'Резултати от търсенето за „$1“',
-'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' => 'Съответствия в текста на страници',
 'notextmatches' => 'Няма съответствия в текста на страници',
 'prevn' => 'предишни {{PLURAL:$1|$1}}',
@@ -1279,10 +1269,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|следващ резултат|следващи резултата}}',
 'shown-title' => 'Показване на $1 {{PLURAL:$1|резултат|резултата}} на страница',
 'viewprevnext' => 'Преглед ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Настройки на търсенето',
 'searchmenu-exists' => "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
 'searchmenu-new' => "'''Създаване на страницата „[[:$1]]“ в това уики!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Преглеждане на страниците с тази представка]]',
 'searchprofile-articles' => 'Съдържателни страници',
 'searchprofile-project' => 'Помощни и проектни страници',
 'searchprofile-images' => 'Мултимедия',
@@ -1310,14 +1298,10 @@ $1",
 'showingresults' => "Показване на до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}}, като се започва от номер '''$2'''.",
 'showingresultsnum' => "Показване на {{PLURAL:$3|'''1''' резултат|'''$3''' резултата}}, като се започва от номер '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' от '''$3'''|Резултати '''$1 - $2''' от '''$3'''}} за '''$4'''",
-'nonefound' => "'''Забележка''': Търсенето по подразбиране се свежда само до някои именни пространства.
-Опитайте пак, като отбележите в заявката си префикса ''all:'', за търсене из цялото съдържание на базата данни (включително дискусионни страници, шаблони и т.н.) или използвайте желаното именно пространство като префикс.",
 'search-nonefound' => 'Няма резултати, които да отговарят на заявката.',
-'powersearch' => 'Търсене',
 'powersearch-legend' => 'Разширено търсене',
 'powersearch-ns' => 'Търсене в именни пространства:',
 'powersearch-redir' => 'Списък на пренасочванията',
-'powersearch-field' => 'Търсене на',
 'powersearch-togglelabel' => 'Избор:',
 'powersearch-toggleall' => 'Всички',
 'powersearch-togglenone' => 'Никои',
@@ -1329,8 +1313,6 @@ $1",
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Брой редакции:',
-'prefsnologin' => 'Не сте влезли',
-'prefsnologintext' => 'Необходимо е <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} да влезете]</span>, за да може да променяте потребителските си настройки.',
 'changepassword' => 'Смяна на парола',
 'prefs-skin' => 'Облик',
 'skin-preview' => 'предварителен преглед',
@@ -1354,7 +1336,6 @@ $1",
 'prefs-email' => 'Настройки за електронната поща',
 'prefs-rendering' => 'Облик',
 'saveprefs' => 'Съхраняване',
-'resetprefs' => 'Отмяна на текущите промени',
 'restoreprefs' => 'Възстановяване на всички настройки по подразбиране (за всички раздели)',
 'prefs-editing' => 'Редактиране',
 'rows' => 'Редове:',
@@ -1372,7 +1353,6 @@ $1",
 'localtime' => 'Местно време:',
 'timezoneuseserverdefault' => 'По подразбиране от уикито ($1)',
 'timezoneuseoffset' => 'Друга (посочете отместване)',
-'timezoneoffset' => 'Отместване¹:',
 'servertime' => 'Време на сървъра:',
 'guesstimezone' => 'Попълване чрез браузъра',
 'timezoneregion-africa' => 'Африка',
@@ -1608,6 +1588,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.',
@@ -1838,8 +1819,7 @@ $1',
 'upload_source_file' => ' (файл на вашия компютър)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Тази специална страница показва всички качени файлове.
-При филтриране от потребителя се показват само файловете, за които потребителят е качил последната версия.',
+'listfiles-summary' => 'Тази специална страница показва всички качени файлове.',
 'listfiles_search_for' => 'Търсене по име на файла:',
 'imgfile' => 'файл',
 'listfiles' => 'Списък на файловете',
@@ -2037,10 +2017,8 @@ $1',
 'protectedpages' => 'Защитени страници',
 'protectedpages-indef' => 'Само безсрочни защити',
 'protectedpages-cascade' => 'Само каскадни защити',
-'protectedpagestext' => 'Следните страници са защитени против редактиране или преместване',
 'protectedpagesempty' => 'В момента няма защитени страници с тези параметри.',
 'protectedtitles' => 'Защитени заглавия',
-'protectedtitlestext' => 'Следните заглавия са защитени срещу създаване',
 'protectedtitlesempty' => 'В момента няма заглавия, защитени с тези параметри.',
 'listusers' => 'Списък на потребителите',
 'listusers-editsonly' => 'Показване само на потребители с редакции',
@@ -2142,7 +2120,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' => 'Права',
@@ -3448,10 +3427,6 @@ $1',
 'exif-urgency-high' => 'Висока ($1)',
 'exif-urgency-other' => 'Зададен от потребителя приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Редактиране на файла чрез външно приложение',
-'edit-externally-help' => '(За повече информация прегледайте [https://www.mediawiki.org/wiki/Manual:External_editors указанията за настройките]).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'всички',
 'namespacesall' => 'Всички',
@@ -3499,7 +3474,7 @@ $5
 
 Валидността на този код за потвърждение ще важи до $4.',
 'confirmemail_body_set' => 'Някой, вероятно вие, от IP адрес $1,
-е посочил този адрес за електронната поща, свързан с потребителска сметка "$2" в {{SITENAME}}.
+е посочил този адрес за електронната поща, свързан с потребителска сметка „$2“ в {{SITENAME}}.
 
 За потвърждаване, че тази потребителска сметка наистина ви принадлежи и за да активирате отново функциите, свързани с електронна поща в {{SITENAME}}, необходимо е да отворите във вашия браузър следната препратка:
 
@@ -3656,8 +3631,7 @@ MediaWiki се разпространява с надеждата, че ще б
 
 # Special:SpecialPages
 'specialpages' => 'Специални страници',
-'specialpages-note' => '----
-* Обикновени специални страници.
+'specialpages-note' => '* Обикновени специални страници.
 * <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>
 * <span class="mw-specialpagecached">Само складирани специални страници (възможно е да са остарели).</span>',
 'specialpages-group-maintenance' => 'Доклади по поддръжката',
@@ -3852,4 +3826,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..99cef29 100644 (file)
@@ -203,7 +203,6 @@ $messages = array(
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'ई पन्ना',
 'qbmyoptions' => 'हमार पन्ना',
-'qbspecialpages' => 'विशेष पन्ना',
 'faq' => 'साधारण सवाल',
 'faqpage' => 'Project:साधारण सवाल',
 
@@ -320,8 +319,6 @@ $1',
 'ok' => 'ठिक',
 'retrievedfrom' => '"$1" से लियल गईल',
 'youhavenewmessages' => 'रउआ लगे बा $1 ($2).',
-'newmessageslink' => 'नया सन्देश',
-'newmessagesdifflink' => 'अन्तिम परिवर्तन',
 'youhavenewmessagesfromusers' => 'रउआ खातिर {{PLURAL:$3|एगो अन्य सदस्य|$3 अन्य सदस्यन}} के $1 बा। ($2)',
 'youhavenewmessagesmanyusers' => 'रउआ खातिर कई सदस्यन द्वारा $1 बा। ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|एगो नया सन्देश बा|नया सन्देश बाड़न}}',
@@ -416,9 +413,6 @@ $1',
 'perfcached' => 'नीचे दिहल गइल डेटा कैशे मेमोरी से लिहल गइल बा, अतः हो सकता बा कि इ के पूर्ण अद्यतन ना भइल होखे। कैशे मेमोरी में अधिकतम {{PLURAL:$1|एक  नतीजा|$1 नतीजं}} उपलब्ध बाड़े।',
 'perfcachedts' => 'नीचे दिहल गइल डेटा कैशे मेमोरी से बा, आ एकर अंतिम अपडेट $1 के भइल रहल। कैश मेमोरी में अधिकतम {{PLURAL:$4|एक  नतीजा|$4 नतीजां}} उपलब्ध बा।',
 'querypage-no-updates' => 'इ पृष्ठ के अपडेट करल अयोग्य बा। अभी अहिजा के डाटा के ताज़ा नइखे करल जा सकत।',
-'wrong_wfQuery_params' => 'wfQuery() खातिर गलत मापदण्ड दिहले बानी<br />
-फ़ंक्शन: $1<br />
-क्वेरी: $2',
 'viewsource' => 'स्त्रोत देखीं',
 'viewsource-title' => '$1 के स्रोत देखीं',
 'actionthrottled' => 'कार्य समाप्त कर दिहल गइल बा',
@@ -850,11 +844,7 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 # Search results
 'searchresults' => 'खोज परिणाम',
 'searchresults-title' => '$1 खातिर खोज परिणाम',
-'searchresulttext' => '{{SITENAME}} के खोज करे के बारे में अधिक जानकारी खातिर, देखीं [[{{MediaWiki:Helppage}}| {{int:help}}]]।',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर राउर करल गईल खोज ([[Special:Prefixindex/$1| "$1" से शुरु होवे वाला सब पन्ना]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'searchsubtitleinvalid' => "रउआ '''$1''' खातिर खोज कईनी ह",
 'titlematches' => 'पन्ना के शिर्षक मिलत बा।',
-'notitlematches' => 'पन्ना के शिर्षक नईखे मिलत',
 'textmatches' => 'पन्ना के पाठ्य मिलत बा',
 'notextmatches' => 'पन्ना के पाठ्य नईखे मिलत',
 'prevn' => 'पिछला {{PLURAL:$1|$1}}',
@@ -863,10 +853,8 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'nextn-title' => 'अगला $1 {{PLURAL:$1|परिणाम}}',
 'shown-title' => 'दिखाईं $1 {{PLURAL:$1|परिणाम}}',
 'viewprevnext' => 'देखीं ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''इ विकि पर ''[[:$1]]'' नाम से एगो पन्ना उपलब्ध बा'''",
 'searchmenu-new' => "'''इ विकि पर ''[[:$1]]'' नाम से पन्ना बनाईं'''",
-'searchmenu-prefix' => '[[विशेष:उपसर्ग सूची/$1|इ उपसर्ग साथे पन्ना ब्राउज करीं]]',
 'searchprofile-articles' => 'सामग्री पन्ना',
 'searchprofile-project' => 'मदद आ परियोजना पन्ना',
 'searchprofile-images' => 'मल्टिमीडिया',
@@ -893,11 +881,9 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'showingresults' => "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
 'showingresultsnum' => "नीचे देखावल जा रहल बा {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
 'search-nonefound' => 'राउर खोज मे से मेल खात कउनो परिणाम नईखे बा',
-'powersearch' => 'उन्नत खोज',
 'powersearch-legend' => 'उन्नत खोज',
 'powersearch-ns' => 'सन्दर्भ में खोजीं',
 'powersearch-redir' => 'पुन:निर्देश सूची',
-'powersearch-field' => 'खातिर खोज',
 'powersearch-togglelabel' => 'जाँच:',
 'powersearch-toggleall' => 'सब',
 'powersearch-togglenone' => 'कउनो ना',
@@ -907,7 +893,6 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'preferences' => 'वरीयता',
 'mypreferences' => 'राउर पसन्द',
 'prefs-edits' => 'सम्पादन संख्या',
-'prefsnologin' => 'खाता में प्रवेश नईखीं कईले',
 'changepassword' => 'गुप्त शब्द बदलीं',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'पूर्वावलोकन',
index 9faf935..ff86612 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' ),
@@ -287,7 +287,6 @@ $messages = array(
 'qbedit' => 'Babak',
 'qbpageoptions' => 'Tungkaran ini',
 'qbmyoptions' => 'Tungkaran ulun',
-'qbspecialpages' => 'Tungkaran istimiwa',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -403,8 +402,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}}',
@@ -497,9 +494,6 @@ Nangini kawa baisi satu atawa labih hurup nang saharusnya kadada di judul.',
 'perfcached' => 'Data barikut adalah timbuluk wan pina kada mutakhir. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Data nang dudi ni adalah timbuluk, wan tauncit dihahanyari pada $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Pamugaan matan tungkaran ngini rahat dipajahkan. Data nang ada di sia wayahini kada akan dimuat ulang.',
-'wrong_wfQuery_params' => 'Kada bujur ukuran ka wfQuery ()<br />
-Pungsi: $1<br />
-Parmintaan: $2',
 'viewsource' => 'Tiringi asal mulanya',
 'viewsource-title' => 'Tiringi asalmula matan $1',
 'actionthrottled' => 'Kalakuan dikiripi',
@@ -1114,12 +1108,8 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 # Search results
 'searchresults' => 'Kulihan panggagaian',
 'searchresults-title' => 'Kulihan gagai gasan "$1"',
-'searchresulttext' => 'Gasan panjalasan labih lanjut pasal panggagaian pintangan {{SITENAME}}, lihati [[{{MediaWiki:Helppage}}|tungkaran patulung]].',
-'searchsubtitle' => 'Pian manggagai \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|samunyaan tungkaran bamula wan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|samunyaan tungkaran nang bataut ka "$1"]])',
-'searchsubtitleinvalid' => "Pian manggagai '''$1'''",
 'toomanymatches' => 'Kabanyakan nang cucuk kulihan, muhun cubai parmintaan lain',
 'titlematches' => 'Judul tungkaran pas',
-'notitlematches' => 'Kadada tungkaran bajudul pas',
 'textmatches' => 'Naskah tungkaran pas',
 'notextmatches' => 'Kadada tungkaran banaskah pas',
 'prevn' => '{{PLURAL:$1|$1}} tadahulu',
@@ -1128,10 +1118,8 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 'nextn-title' => 'Tadudi $1 {{PLURAL:$1|kulihan|kulihan-kulihan}}',
 'shown-title' => 'Tampaiakan $1 {{PLURAL:$1|kulihan|kukulihan}} par tungkatan',
 'viewprevnext' => 'Tiringi ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Papilihan manggagai',
 'searchmenu-exists' => "'''Ada tungkaran bangaran \"[[:\$1]]\" dalam wiki ini.'''",
 'searchmenu-new' => "'''Maulah tungkaran \"[[:\$1]]\" dalam wiki ngini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Janaki daptar tungkaran lawan awalan ngini]]',
 'searchprofile-articles' => 'Tungkaran isi',
 'searchprofile-project' => 'Tutungkaran Patulung wan Rangka gawian',
 'searchprofile-images' => 'Multimadia',
@@ -1159,14 +1147,10 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 'showingresults' => "Di bawah ngini ditampaiakan hingga {{PLURAL:$1|'''1''' kulihan|'''$1''' kukulihan}}, dimulai matan #'''$2'''.",
 'showingresultsnum' => "Di bawah ngini ditampaiakan hingga {{PLURAL:$3|'''1''' kulihan|'''$3''' kukulihan}}, dimulai matan #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Kulihan '''$1''' matan '''$3'''|Kukulihan '''$1 - $2''' matan '''$3'''}} gasan '''$4'''",
-'nonefound' => "'''Catatan''': babarapa ngaran kamar haja nang baku digagai.
-Tarai pamintaan Pian lawan ''all:'' gasan manggagai samunyaan isi (tamasuk tungkaran pamandiran, citakan, dll), atawa puruk ngaran kamar nang dihandaki sabagai awalan.",
 'search-nonefound' => 'Kadada kulihan nang pas awan parmintaan.',
-'powersearch' => 'Panggagaian mahir',
 'powersearch-legend' => 'Panggagaian mahir',
 'powersearch-ns' => 'Manggagai di ngaran kamar:',
 'powersearch-redir' => 'Daptar paugahan',
-'powersearch-field' => 'Manggagai',
 'powersearch-togglelabel' => 'Pilihi:',
 'powersearch-toggleall' => 'Samunyaan',
 'powersearch-togglenone' => 'Kadada',
@@ -1179,8 +1163,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',
-'prefsnologintext' => 'Pian harus <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} babuat log]</span> gasat mengeset kakatujuan Pian.',
 'changepassword' => 'Ubah katasunduk',
 'prefs-skin' => 'Kulimbit',
 'skin-preview' => 'Titilikan',
@@ -1203,7 +1185,6 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 'prefs-email' => 'Pipilihan suril',
 'prefs-rendering' => 'Pancungulan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Walangakan paubahan',
 'restoreprefs' => 'Bulikakan samunyaan sesetélan default',
 'prefs-editing' => 'Pambabakan',
 'rows' => 'Baris:',
@@ -1221,7 +1202,6 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 'localtime' => 'Waktu damintu:',
 'timezoneuseserverdefault' => "Guna'akan bawaan wiki ($1)",
 'timezoneuseoffset' => 'Nang lain (ajuakan nang luput setel)',
-'timezoneoffset' => 'Luput setel¹:',
 'servertime' => 'Waktu server:',
 'guesstimezone' => 'Isiakan matan panjalajah web',
 'timezoneregion-africa' => 'Aprika',
@@ -1453,6 +1433,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',
@@ -1917,10 +1898,8 @@ File-file berikut digunakan tapi tidak ada. File dari repositori asing dapat ter
 'protectedpages' => 'Tutungkaran nang dilindungi',
 'protectedpages-indef' => 'Wastu gasan palindungan lawan jangka waktu kada bawatas',
 'protectedpages-cascade' => 'Palindungan barénténg haja',
-'protectedpagestext' => 'Tutungkaran barikut dilindungi matan pamindahan atawa pambabakan',
 'protectedpagesempty' => 'Kadada tutungkaran nang masih dilindungi awan paramitir ngitu.',
 'protectedtitles' => 'Jujudul nang dilindungi',
-'protectedtitlestext' => 'Jujudul barikut dilindungi gasan diulah',
 'protectedtitlesempty' => 'Kadada jujudul nang masih dilindungi awan paramitir ngitu.',
 'listusers' => 'Daptar pamuruk',
 'listusers-editsonly' => 'Tiringi papamuruk awan babakan',
@@ -3367,10 +3346,6 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
 'exif-urgency-high' => 'Pancau ($1)',
 'exif-urgency-other' => 'Ganti-suai utamaan ($1)',
 
-# External editor support
-'edit-externally' => 'Babak barakas ngini puruk sabuah aplikasi luar',
-'edit-externally-help' => '(Lihati [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] untuk panjalasan labih)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'samunyaan',
 'namespacesall' => 'samunyaan',
@@ -3584,8 +3559,7 @@ Pian saharusnya [{{SERVER}}{{SCRIPTPATH}}/COPYING sabuting salinan Lisansi Publi
 
 # Special:SpecialPages
 'specialpages' => 'Tungkaran istimiwa',
-'specialpages-note' => '----
-* Tutungkaran istimiwa normal
+'specialpages-note' => '* Tutungkaran istimiwa normal
 * <span class="mw-specialpagerestricted">Tutungkaran istimiwa tabatas.</span>
 * <span class="mw-specialpagecached">Tutungkaran istimiwa timbuluk (pinanya bakulat).</span>',
 'specialpages-group-maintenance' => 'Lapuran pamaliharaan',
index 4166c2f..0dc1fe0 100644 (file)
@@ -228,7 +228,6 @@ $messages = array(
 'qbedit' => 'সম্পাদনা',
 'qbpageoptions' => 'এই পাতা',
 'qbmyoptions' => 'আমার পাতাসমূহ',
-'qbspecialpages' => 'বিশেষ পাতাসমূহ',
 'faq' => 'সম্ভাব্য প্রশ্নসমূহ',
 'faqpage' => 'Project:প্রাজিপ্র',
 
@@ -344,12 +343,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' => 'সম্পাদনা',
@@ -447,9 +444,6 @@ $1',
 'perfcached' => 'নিচের উপাত্তগুলো ক্যাশ থেকে নেয়া এবং সম্পূর্ণ হালনাগাদকৃত না-ও হতে পারে। সর্বোচ্চ {{PLURAL:$1|একটি ফলাফল|$1 টি ফলাফল}} ক্যাশে থাকতে পারে।',
 'perfcachedts' => 'নিচের উপাত্তগুলো ক্যাশ থেকে নেয়া এবং $1 তারিখে হালনাগাদ করা হয়েছে। সর্বোচ্চ {{PLURAL:$4|একটি ফলাফল|$4 টি ফলাফল}} ক্যাশে থাকতে পারে।',
 'querypage-no-updates' => 'এই পাতার জন্য হালনাগাদ নিষ্ক্রিয় করা হয়েছে। এখানে রাখা উপাত্ত এ মুহূর্তে রিফ্রেশ করা হবে না।',
-'wrong_wfQuery_params' => 'wfQuery()-তে ভুল প্যারামিটার দেয়া হয়েছে<br />
-ফাংশন: $1<br />
-কোয়েরি: $2',
 'viewsource' => 'উৎস দেখুন',
 'viewsource-title' => '$1 এর উৎস দেখুন',
 'actionthrottled' => 'কাজের গতি ধীরকরণ',
@@ -479,7 +473,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 +1017,10 @@ $3-এর দেয়া কারণ হল ''$2''",
 
 {{SITENAME}} এর অন্যান্য প্রশাসকগণ লুকানো এই বিষয়বস্তু দেখতে পাবেন এবং বাড়তি কোনো সীমাবদ্ধতা না থাকলে একই ইন্টারফেসের মাধ্যমে এটি পুনরুদ্ধার করতে পারবেন।",
 'revdelete-confirm' => 'অনুগ্রহ করে নিশ্চিত করুন যে আপনি এটি করতে চাচ্ছিলেন, আপনি এর ফলাফল সম্পর্কে অবগত আছেন, এবং [[{{MediaWiki:Policy-url}}|নীতিমালার]] উপর ভিত্তি করেই এই কাজটি করছেন।',
-'revdelete-suppress-text' => "'''কেবলমাত্র''' নিচের বিষয়গুলোর ক্ষেত্রেই চাপাচাপি করা যাবে:
+'revdelete-suppress-text' => "নিচের বিষয়গুলোর ক্ষেত্রেই '''কেবলমাত্র'''  চাপাচাপি করা যাবে:
 * সম্ভাব্য মানহানিকর তথ্য
 * ভুল ব্যক্তিগত তথ্য
-*:  ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
+*: ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
 'revdelete-legend' => 'দৃষ্টিপাত সীমাবদ্ধ করো',
 'revdelete-hide-text' => 'সংস্করণের লেখা',
 'revdelete-hide-image' => 'ফাইলের বিষয়বস্তু আড়াল করো',
@@ -1034,8 +1029,8 @@ $3-এর দেয়া কারণ হল ''$2''",
 'revdelete-hide-user' => 'সম্পাদকে ব্যবহারকারীর নাম/আইপি',
 'revdelete-hide-restricted' => 'প্রশাসকবৃন্দ এবং অন্যদের ক্ষেত্রে এই ডাটা রোধ করো',
 'revdelete-radio-same' => 'পরিবর্তন নয়',
-'revdelete-radio-set' => 'দà§\83শà§\8dযমান',
-'revdelete-radio-unset' => 'লà§\81à¦\95ানà§\8b',
+'revdelete-radio-set' => 'লà§\81à¦\95ানà§\8b',
+'revdelete-radio-unset' => 'দà§\83শà§\8dযমান',
 'revdelete-suppress' => 'সব প্রশাসক ও অন্যান্যদের কাছ থেকে উপাত্ত লুকিয়ে রাখা হোক।',
 'revdelete-unsuppress' => 'সংশোধন পুনঃস্থাপনের উপর সীমাবদ্ধতা দূর করো',
 'revdelete-log' => 'কারণ:',
@@ -1126,12 +1121,8 @@ $1",
 # Search results
 'searchresults' => 'অনুসন্ধানের ফলাফল',
 'searchresults-title' => '"$1" অনুসন্ধানের ফলাফল',
-'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' => 'পাতার লেখার সাথে মিলেছে',
 'notextmatches' => 'কোন পাতার লেখার সাথে মিলে নেই',
 'prevn' => 'পূর্ববর্তী {{PLURAL:$1|$1}}টি',
@@ -1140,10 +1131,8 @@ $1",
 'nextn-title' => 'পরবর্তী $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}}',
 'shown-title' => 'প্রতি পাতায় $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}} দেখাও',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) দেখানো হোক।',
-'searchmenu-legend' => 'অনুসন্ধান অপশন',
 'searchmenu-exists' => "'''এই উইকিতে \"[[:\$1]]\" নামে একটি পাতা রয়েছে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" পাতাটি এই উইকিতে তৈরি করুন!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই প্রিফিক্স রয়েছে এমন পাতা দেখুন]]',
 'searchprofile-articles' => 'বিষয়বস্তুর পাতা',
 'searchprofile-project' => 'সহায়িকা এবং প্রকল্প পাতা',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -1171,14 +1160,10 @@ $1",
 'showingresults' => "নিচে '''$2''' নং থেকে শুরু করে {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফলসমূহ}} দেখানো হল।",
 'showingresultsnum' => "নিম্নে {{PLURAL:$3|'''1''' ফলাফল|'''$3''' ফলাফলসমূহ}} দেখানো হয়েছে যা শুরু হয়েছে #'''$2''' দিয়ে।",
 'showingresultsheader' => "'''$4''' এর জন্য {{PLURAL:$5|ফলাফল '''$3''' এর '''$1'''|ফলাফলসমূহ '''$3''' এর মধ্যে '''$1 - $2'''}}",
-'nonefound' => "'''লক্ষ্য করুন''': শুরুতে শুধু মাত্র কিছু নামস্থানে অনুসন্ধান করা হয়।
-আপনার অনুসন্ধান ''all:'' ব্যবহার করে সকল কন্টেন্টে অনুসন্ধানের জন্য ঠিক করে নিন (আলাপের পাতা, টেম্পলেট, ইত্যাদি), কিংবা প্রিফিক্স হিসেবে আপনার কাঙ্খিত নামস্থান ব্যবহার করুন।",
 'search-nonefound' => 'খোঁজকৃত পাতার সাথে মিলে যায় এমন কোনো ফলাফল নেই।',
-'powersearch' => 'উন্নত অনুসন্ধান',
 'powersearch-legend' => 'উন্নত অনুসন্ধান',
 'powersearch-ns' => 'নামস্থানে অনুসন্ধান করো:',
 'powersearch-redir' => 'পুনঃনির্দেশনাসমূহের তালিকা',
-'powersearch-field' => 'অনুসন্ধান করো',
 'powersearch-togglelabel' => 'পরীক্ষা:',
 'powersearch-toggleall' => 'সকল',
 'powersearch-togglenone' => 'কিছু নয়',
@@ -1190,8 +1175,7 @@ $1",
 'preferences' => 'আমার পছন্দ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনা সংখ্যা:',
-'prefsnologin' => 'আপনি লগ-ইন করেননি',
-'prefsnologintext' => 'ব্যবহারকারীর পছন্দ ঠিক করতে হলে আপনাকে অবশ্যই <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} লগইন]</span> করা অবস্থায় থাকতে হবে।',
+'prefsnologintext2' => 'ব্যবহারকারী পছন্দসমূহ নির্ধারনের জন্য $1 করুন।',
 'changepassword' => 'শব্দচাবি পরিবর্তন',
 'prefs-skin' => 'আবরণ (Skin)',
 'skin-preview' => 'প্রাকদর্শন',
@@ -1215,7 +1199,6 @@ $1",
 'prefs-email' => 'ই-মেইল অপশন',
 'prefs-rendering' => 'অবয়ব',
 'saveprefs' => 'সংরক্ষণ',
-'resetprefs' => 'অসংরক্ষিত পরিবর্তনগুলো পরিস্কার করো',
 'restoreprefs' => 'সকল পূর্বনির্ধারিত সেটিং ফিরিয়ে আনো (সকল সেকশনে)',
 'prefs-editing' => 'সম্পাদনা',
 'rows' => 'সারি:',
@@ -1234,7 +1217,6 @@ $1",
 'localtime' => 'স্থানীয় সময়:',
 'timezoneuseserverdefault' => 'উইকির পূর্বনির্ধারিত সময় ব্যবহার করো ($1)',
 'timezoneuseoffset' => 'অন্য (অফসেট নির্দিষ্ট করুন)',
-'timezoneoffset' => 'সময়পার্থক্য¹:',
 'servertime' => 'সার্ভারের সময়:',
 'guesstimezone' => 'ব্রাউজার থেকে পূরণ করো',
 'timezoneregion-africa' => 'আফ্রিকা',
@@ -1488,6 +1470,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-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
@@ -1976,10 +1961,8 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'protectedpages' => 'সুরক্ষিত পাতাসমূহ',
 'protectedpages-indef' => 'শুধুমাত্র অসীম সুরক্ষা',
 'protectedpages-cascade' => 'শুধুমাত্র প্রপাতাকার সুরক্ষা',
-'protectedpagestext' => 'নিচের পাতাগুলিকে স্থানান্তর বা সম্পাদনা করা থেকে সুরক্ষিত করা হয়েছে।',
 'protectedpagesempty' => 'কোন পাতা বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
 'protectedtitles' => 'সুরক্ষিত শিরোনামগুলি',
-'protectedtitlestext' => 'নিচের শিরোনামগুলি দিয়ে পাতা সৃষ্টি করা যাবে না।',
 'protectedtitlesempty' => 'কোন শিরোনাম বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
 'listusers' => 'ব্যবহারকারীর তালিকা',
 'listusers-editsonly' => 'শুধুমাত্র এমন ব্যবহারকারীদের দেখাও যাদের অবদান আছে',
@@ -2204,7 +2187,7 @@ $PAGEINTRO $NEWPAGE
 ইমেইল: $PAGEEDITOR_EMAIL
 উইকি: $PAGEEDITOR_WIKI
 
-পাতাটির পরবর্তী পরিবর্তনগুলো জন্য আর কোন বিজ্ঞপ্তি পাঠানো হবে না, যতক্ষণ না আপনি এই পাতায় ব্রাউজ করবেন। এছাড়া আপনি আপনার নজরতালিকায় রাখা সবগুলি পাতা জন্য বিজ্ঞপ্তি ফ্ল্যাগ শুরুর অবস্থায় ফিরিয়ে নিতে পারেন।
+পাতাà¦\9fির à¦ªà¦°à¦¬à¦°à§\8dতà§\80 à¦ªà¦°à¦¿à¦¬à¦°à§\8dতনà¦\97à§\81লà§\8b à¦\9cনà§\8dয à¦\86র à¦\95à§\8bন à¦¬à¦¿à¦\9cà§\8dà¦\9eপà§\8dতি à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à¦¬à§\87 à¦¨à¦¾, à¦¯à¦¤à¦\95à§\8dষণ à¦¨à¦¾ à¦\86পনি à¦²à¦\97 à¦\87ন à¦\95রার à¦¸à¦®à¦¯à¦¼ à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ à¦¬à§\8dরাà¦\89à¦\9c à¦\95রবà§\87ন। à¦\8fà¦\9bাড়া à¦\86পনি à¦\86পনার à¦¨à¦\9cরতালিà¦\95ায় à¦°à¦¾à¦\96া à¦¸à¦¬à¦\97à§\81লি à¦ªà¦¾à¦¤à¦¾ à¦\9cনà§\8dয à¦¬à¦¿à¦\9cà§\8dà¦\9eপà§\8dতি à¦«à§\8dলà§\8dযাà¦\97 à¦¶à§\81রà§\81র à¦\85বসà§\8dথায় à¦«à¦¿à¦°à¦¿à¦¯à¦¼à§\87 à¦¨à¦¿à¦¤à§\87 à¦ªà¦¾à¦°à§\87ন।
 
 {{SITENAME}} নোটিফিকেশন
 
@@ -2400,7 +2383,7 @@ $1',
 
 # Namespace form on various pages
 'namespace' => 'নামস্থান:',
-'invert' => 'বà§\8dযà§\81তà§\8dক্রমে নির্বাচন',
+'invert' => 'বিপরà§\80তক্রমে নির্বাচন',
 'tooltip-invert' => 'যে সকল নামস্থানের পাতাগুলোর পরিবর্তনসমূহর দেখতে চাচ্ছেন না সেগুলোর নামের পাশে টিক দিন',
 'namespace_association' => 'সংশ্লিষ্ট নামস্থান',
 'tooltip-namespace_association' => 'এখানে টিক দেয়ার মাধ্যমে সংশ্লিষ্ট নামস্থান এবং আলাপপাতাসমূহ অন্তর্ভুক্ত করছেন',
@@ -2918,6 +2901,7 @@ $2',
 'pageinfo-length' => 'পাতার দৈর্ঘ্য (বাইটে)',
 'pageinfo-article-id' => 'পাতার আইডি',
 'pageinfo-language' => 'পাতার তথ্যের ভাষা',
+'pageinfo-content-model' => 'পাতার বিষয়বস্তুর মডেল',
 'pageinfo-robot-policy' => 'রোবটের মাধ্যমে ইন্ডেক্স করা হচ্ছে',
 'pageinfo-robot-index' => 'অনুমোদিত',
 'pageinfo-robot-noindex' => 'অনুনমোদিন',
@@ -3003,7 +2987,7 @@ $1',
 'svg-long-desc' => 'এসভিজি ফাইল, সাধারণত $1 × $2 পিক্সেল, ফাইলের আকার: $3',
 'svg-long-desc-animated' => 'এনিমেটেড এসভিজি ফাইল, সাধারণত $1 × $2 পিক্সেল, ফাইলের আকার: $3',
 'svg-long-error' => 'অবৈধ SVG ফাইল: $1',
-'show-big-image' => 'পà§\82রà§\8dণ à¦°à§\87à¦\9cà§\8bলিà¦\89শন',
+'show-big-image' => 'মà§\82ল à¦«à¦¾à¦\87ল',
 'show-big-image-preview' => 'এই প্রিভিউ-এর আকার: $1।',
 'show-big-image-other' => 'অন্যান্য {{PLURAL:$2|আকার|আকারসমূহ}}: $1।',
 'show-big-image-size' => '$1 × $2 পিক্সেল',
@@ -3468,10 +3452,6 @@ $1',
 'exif-urgency-high' => 'উচ্চ ($1)',
 'exif-urgency-other' => 'ব্যবহারকারী নির্ধারিত অগ্রাধিকার ক্রম ($1)',
 
-# External editor support
-'edit-externally' => 'ফাইলটি অন্য কোন সফটওয়্যার দিয়ে সম্পাদনা করুন',
-'edit-externally-help' => 'আরও তথ্যের জন্য [https://www.mediawiki.org/wiki/Manual:External_editors সেটআপ নির্দেশমালা] দেখুন।',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'সবগুলো',
 'namespacesall' => 'সমস্ত',
@@ -3734,8 +3714,8 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পাতাসমূহ',
-'specialpages-note' => '----
-* সাধারণ বিশেষ পাতাসমূহ।
+'specialpages-note-top' => 'লিজেন্ড',
+'specialpages-note' => '* সাধারণ বিশেষ পাতাসমূহ।
 * <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পাতা।</span>',
 'specialpages-group-maintenance' => 'রক্ষণাবেক্ষণের কার্যবিবরণীসমূহ',
 'specialpages-group-other' => 'অন্যান্য বিশেষ পাতাসমূহ',
@@ -3949,4 +3929,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..adfa7c8 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;དང་',
@@ -146,7 +148,6 @@ $messages = array(
 'qbedit' => 'རྩོམ་སྒྲིག',
 'qbpageoptions' => 'ཤོག་ངོས་འདི།',
 'qbmyoptions' => 'ངའི་ཤོག་ངོས།',
-'qbspecialpages' => 'དམིཊ་བསལ་གྱི་བཟོ་བཅོས།',
 'faq' => 'རྒྱུན་ལྡན་དྲི་བ།',
 'faqpage' => 'Project: རྒྱུན་ལྡན་དྲི་བ།',
 
@@ -202,7 +203,7 @@ $messages = array(
 'articlepage' => 'ནང་དོན་ཤོག་ངོས་ལ་ལྟ་བ།',
 'talk' => 'གྲོས་བསྡུར།',
 'views' => 'མཐོང་རིས།',
-'toolbox' => 'ལà½\82à¼\8bà½\86འིà¼\8bསà¾\92ྲོà½\98à¼\8d',
+'toolbox' => 'ལག་ཆའི་སྒམ།',
 'userpage' => 'སྤྱོད་མིའི་ཤོག་ངོས་ལ་ལྟ་བ།',
 'projectpage' => 'ལས་འཆར་ཤོག་ངོས་ལ་ལྟ་བ།',
 'imagepage' => 'ཡིག་ཆའི་ཤོག་ངོས་ལ་ལྟ་བ།',
@@ -244,8 +245,6 @@ $messages = array(
 'ok' => 'འགྲིག',
 'retrievedfrom' => '"$1"ལས་རྙེད་པ།',
 'youhavenewmessages' => 'ཁྱེད་ལ་འཕྲིན་གསར་$1($2)ཡོད།',
-'newmessageslink' => 'འཕྲིན་གསར།',
-'newmessagesdifflink' => 'བཟོ་བཅོས་མཐའ་མ།',
 'youhavenewmessagesmulti' => 'ཁྱེད་ལ་ $1 སྟེང་དུ་འཕྲིན་ཡིག་འདུག',
 'editsection' => 'རྩོམ་སྒྲིག',
 'editold' => 'རྩོམ་སྒྲིག',
@@ -389,7 +388,7 @@ $messages = array(
 'loginreqpagetext' => 'ཤོག་ངོས་གཞན་རྣམས་ལྟ་བར་ངེས་པར་དུ་$1བྱ་དགོས།',
 'accmailtitle' => 'ལམ་ཡིག་བཏང་ཟིན།',
 'newarticle' => '(གསར་བ)',
-'previewnote' => '༼འདི་ནི་སྔོན་ལྟ་ཙམ་ཡིན་པ་མ་བརྗེད།༽ ཁྱེད་ཀྱི་བཟོ་བཅོས་ད་དུང་ཉར་ཚགས་བྱས་མི་འདུག',
+'previewnote' => '"འདི་ནི་སྔོན་ལྟ་ཙམ་ཡིན་པ་ཡིད་ལ་འཇགས་རོགས། "ཁྱེད་ཀྱི་བཟོ་བཅོས་ད་དུང་ཉར་ཚགས་བྱས་མི་འདུག',
 'editing' => '$1རྩོམ་སྒྲིག་བྱེད་བཞིན་པ།',
 'editingsection' => ' $1 (སྡེ་ཚན) ལ་རྩོམ་སྒྲིག་བྱེད་བཞིན་པ།',
 'yourtext' => 'ཁྱོད་ཀྱི་ཡིག་འབྲུ།',
@@ -411,8 +410,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
@@ -440,15 +439,11 @@ $messages = array(
 # Search results
 'searchresults' => 'བཙལ་བའི་རྙེད་དོན།',
 'searchresults-title' => ' $1 བཙལ་བའི་འབྲས་བུ།',
-'searchresulttext' => '{{SITENAME}} སྐོར་ལ་རྒྱས་བར་[[{{MediaWiki:Helppage}}|{{int:help}}]]. ལ་ལྟ་རོགས།',
-'searchsubtitle' => 'ཁྱེད་ཀྱིས་\'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])བཙལ་འདུག',
-'searchsubtitleinvalid' => "ཁྱེད་ཀྱིས་'''$1'''བཙལ་འདུག",
-'notitlematches' => 'ཤོག་ངོས་འགོ་བརྗོད་མཚུངས་པ་མི་འདུག',
 '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]]བཟོས།',
 'searchprofile-project' => 'རོགས་རམ་དང་འཆར་གཞིའི་ཤོག་ངོས་',
 'searchprofile-everything' => 'ཚང་མ་',
@@ -467,18 +462,15 @@ $messages = array(
 'search-relatedarticle' => 'འབྲེལ་ཡོད།',
 'searchall' => 'ཚང་མ།',
 'search-nonefound' => 'ཁྱེད་ཀྱི་འདྲི་ཞིབ་དང་མཐུན་པའི་ལན་མི་འདུག་',
-'powersearch' => 'ཞིབ་ཏུ་འཚོལ་བ།',
 'powersearch-legend' => 'ཞིབ་ཏུ་འཚོལ་བ།',
 'powersearch-ns' => 'མིང་གནས་ནང་འཚོལ་བ།',
 'powersearch-redir' => 'ཁ་ཕྱོགས་གསར་བཟོ་སྟོན་པ།',
-'powersearch-field' => 'བཙལ་བྱ།',
 'powersearch-toggleall' => 'ཚང་མ།',
 '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 +559,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 +617,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 +677,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 +740,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 +753,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 +847,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..bfdac9a 100644 (file)
@@ -189,7 +189,6 @@ $messages = array(
 'qbedit' => 'পতানি',
 'qbpageoptions' => 'পাতা এহানর সারুক',
 'qbmyoptions' => 'মর পছন',
-'qbspecialpages' => 'বিশেষ পাতাহানি',
 'faq' => 'আঙলাক',
 'faqpage' => 'Project:আঙলাক',
 
@@ -303,8 +302,6 @@ $1',
 'ok' => 'চুমিসে',
 'retrievedfrom' => "'$1' -ত্ত আনানি অসে",
 'youhavenewmessages' => 'তরতা $1 ($2) আসে।',
-'newmessageslink' => 'নুৱা পৌ',
-'newmessagesdifflink' => 'গেলগা সিলপা',
 'youhavenewmessagesmulti' => 'তরতা নুৱা পৌ $1হান আহিসে',
 'editsection' => 'পতিক',
 'editold' => 'পতিক',
@@ -392,9 +389,6 @@ $1',
 'perfcachedts' => 'তলর পৌ অতা ক্যাশেত্ত দেহাদেরতা বারো $1 তারিখে হালনাগাদ করানি ইসে। A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'পাতা এহানর হালনাগাদ বন্ধ করানি অসে।
 এহানাত থুৱাসি পৌ এ খেন্তামে রিফ্রেশ করানি নাইব।',
-'wrong_wfQuery_params' => 'wfQuery()-ত দিয়াসি প্যারামিটার অতা লালুইসে<br />
-ফাংশন: $1<br />
-কোয়েরি: $2',
 'viewsource' => 'উৎসহান চা',
 'actionthrottled' => 'কামর গতিহান তাপকরানি',
 'actionthrottledtext' => 'স্প্যাম থেত করানির কা কাম এহান কম মিকুপে বপ করে পতানির সময়র সিমাহান লেপ করানি অসে। তি সীমা অহান লালুইলে। কৃপা করিয়া খানি থায়া হৎনা কর।',
@@ -809,12 +803,8 @@ $2',
 # Search results
 'searchresults' => 'বিসারলে অতার ফলাফল',
 'searchresults-title' => '"$1" বিসারলে অতার ফলাফল',
-'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' => 'পাতার ইকার লগে মান্না অসে',
 'notextmatches' => 'পাতাহার লেখার লগে মিল নেই',
 'prevn' => 'পিসেদে {{PLURAL:$1|$1}}',
@@ -823,10 +813,8 @@ $2',
 'nextn-title' => 'থাঙনার $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}}',
 'shown-title' => 'হারি পাতাত $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}} দেহাদে',
 'viewprevnext' => 'চা ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'বিসারানির অপশনহানি',
 'searchmenu-exists' => "'''উইকি এহাত \"[[:\$1]]\" নাঙে পাতা আহান আসে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" নাঙর পাতাহান এরে উইকিত হঙকর!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এরে prefix এতাল আসে পাতাহানি]]',
 'searchprofile-articles' => 'কন্টেন্টর পাতাহানি',
 'searchprofile-project' => 'পাঙলাক বারো প্রকল্পর পাতা',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -852,14 +840,10 @@ $2',
 'searchrelated' => 'সাকেই আসে',
 'searchall' => 'হাব্বি',
 'showingresultsheader' => "'''$4''' র কা {{PLURAL:$5|ফলহান '''$3''' র '''$1'''|ফলহানি '''$3''' র মা '''$1 - $2'''}}",
-'nonefound' => "'''নোট''': অকরাতই হুদ্দা কতহান নাঙরফাম বিসারানি অসিল।
-তর বিসারানিহান ''all:'' ব্যবহার করিয়া হারি কন্টেন্টর মা বিসারানিরকা লেপকর (য়্যারির পাতা, মডেল আদি), নাইলে প্রিফিক্স হিসেবে তর হাদাপাসত নাঙলাম ব্যবহার কর।",
 'search-nonefound' => 'তি বিসারার অহানর লগে মান্নাপাতা নাপারাঙ।',
-'powersearch' => 'এডভান্স বিসারানি',
 'powersearch-legend' => 'উন্নত বিসারানি',
 'powersearch-ns' => 'নেমস্পেসর মা বিসারা:',
 'powersearch-redir' => 'বারোআলথকর লাতঙগ',
-'powersearch-field' => 'কা বিসারা',
 'powersearch-togglelabel' => 'চেক কর:',
 'powersearch-toggleall' => 'হাব্বি',
 'powersearch-togglenone' => 'কিত্তাউ নেই',
@@ -1584,10 +1568,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-n' => 'গাথিগি',
 
-# External editor support
-'edit-externally' => 'এর ফাইল এগ পতানির কা বারেদের এপ্লিকেশন আতা',
-'edit-externally-help' => 'আরাকউ হারপানির কা [https://www.mediawiki.org/wiki/Manual:External_editors সেটাপর নির্দেশহানি] চা।',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'হাব্বি',
 'namespacesall' => 'হাব্বি',
index f56bb23..88e3f7b 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' ),
@@ -338,7 +337,6 @@ $messages = array(
 'qbedit' => 'Kemmañ',
 'qbpageoptions' => 'Pajenn an dibaboù',
 'qbmyoptions' => 'Ma dibaboù',
-'qbspecialpages' => 'Pajennoù dibar',
 'faq' => 'FAG',
 'faqpage' => 'Project:FAG',
 
@@ -428,7 +426,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 +452,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ñ',
@@ -556,9 +552,6 @@ Marteze ez eus ennañ arouezennoù n'haller ket degemer en titloù.",
 'perfcached' => "Krubuilhet eo ar roadennoù da-heul ha marteze n'int ket bet hizivaet. D'ar muiañ e c'haller kaout {{PLURAL:$1|un disoc'h|$1 disoc'h}} er grubuilh.",
 'perfcachedts' => "Krubuilhet eo ar roadennoù da-heul hag hizivaet int bet da ziwezhañ d'an $1. D'ar muiañ e c'haller kaout {{PLURAL:$4|un disoc'h|$4 disoc'h}} er grubuilh.",
 'querypage-no-updates' => 'Diweredekaet eo an hizivaat evit ar bajenn-mañ. Evit poent ne vo ket nevesaet ar roadennoù amañ.',
-'wrong_wfQuery_params' => "Arventennoù faziek war an urzhiad wfQuery()<br />
-Arc'hwel : $1<br />
-Goulenn : $2",
 'viewsource' => 'Sellet ouzh tarzh an destenn',
 'viewsource-title' => 'Gwelet an tarzh evit $1',
 'actionthrottled' => 'Ober daleet',
@@ -636,6 +629,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 +1129,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 :',
@@ -1225,12 +1219,8 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => "Disoc'hoù enklask",
 'searchresults-title' => 'Disoc\'hoù klask evit "$1"',
-'searchresulttext' => "Evit gouzout hiroc'h diwar-benn ar c'hlask e {{SITENAME}}, sellet ouzh [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Klasket hoc\'h eus \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|an holl bajennoù a grog gant "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|an holl bajennoù enno ul liamm war-du "$1"]])',
-'searchsubtitleinvalid' => "Klasket hoc'h eus '''$1'''",
 'toomanymatches' => 'Re a respontoù a glot gant ar goulenn, klaskit gant ur goulenn all',
 'titlematches' => 'Klotadurioù gant an titloù',
-'notitlematches' => "N'emañ ar ger(ioù) goulennet e titl pennad ebet",
 'textmatches' => 'Klotadurioù en testennoù',
 'notextmatches' => "N'emañ ar ger(ioù) goulennet e testenn pennad ebet",
 'prevn' => '{{PLURAL:$1|$1}} kent',
@@ -1239,10 +1229,8 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => "$1 {{PLURAL:$1|disoc'h|disoc'h}} war-lerc'h",
 'shown-title' => "Diskouez $1 {{PLURAL:$1|disoc'h|disoc'h}} dre bajenn",
 'viewprevnext' => 'Gwelet ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Dibarzhioù klask',
 'searchmenu-exists' => "'''Ur bajenn anvet\"[[:\$1]]\" zo war ar wiki-mañ'''",
 'searchmenu-new' => "'''Krouiñ ar bajenn \"[[:\$1]]\" war ar wiki-mañ !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Furchal er pajennoù a grog gant ar rakger-mañ]]',
 'searchprofile-articles' => 'Pajennoù gant boued',
 'searchprofile-project' => 'Pajennoù skoazell ha pajennoù ar raktres',
 'searchprofile-images' => 'Liesmedia',
@@ -1270,13 +1258,10 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'showingresults' => "Diskouez betek {{PLURAL:$1|'''1''' disoc'h|'''$1''' disoc'h}} o kregiñ gant #'''$2'''.",
 'showingresultsnum' => "Diskouez {{PLURAL:$3|'''1''' disoc'h|'''$3''' disoc'h}} o kregiñ gant #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Disoc'h '''$1''' diwar '''$3'''|Disoc'hoù '''$1 - $2''' diwar '''$3'''}} evit '''$4'''",
-'nonefound' => "'''Notenn''' : dre ziouer ne glasker nemet en esaouennoù anv zo. Klaskit spisaat ho koulenn gant '''all :''' evit klask e pep lec'h (e-barzh ar pajennoù-kaozeal, ar patromoù, hag all), pe dibabit an esaouenn anv a zere.",
 'search-nonefound' => "An enklask-mañ ne zisoc'h war netra.",
-'powersearch' => 'Klask araokaet',
 'powersearch-legend' => 'Klask araokaet',
 'powersearch-ns' => 'Klask en esaouennoù anv :',
 'powersearch-redir' => 'Roll an adkasoù',
-'powersearch-field' => 'Klask',
 'powersearch-togglelabel' => 'Dibab :',
 'powersearch-toggleall' => 'An holl',
 'powersearch-togglenone' => 'Hini ebet',
@@ -1288,8 +1273,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'preferences' => 'Penndibaboù',
 'mypreferences' => 'Penndibaboù',
 'prefs-edits' => 'Niver a zegasadennoù :',
-'prefsnologin' => 'Digevreet',
-'prefsnologintext' => 'Ret eo deoc\'h bezañ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kevreet]</span> a-benn gellout cheñch ho tibaboù implijer.',
 'changepassword' => 'Kemmañ ar ger-tremen',
 'prefs-skin' => 'Gwiskadur',
 'skin-preview' => 'Rakwelet',
@@ -1313,7 +1296,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'prefs-email' => 'Dibarzhioù postel',
 'prefs-rendering' => 'Neuz',
 'saveprefs' => 'Enrollañ ar penndibaboù',
-'resetprefs' => 'Adlakaat ar penndibaboù kent',
 'restoreprefs' => 'Adlakaat an holl arventennoù dre ziouer (en holl gevrennoù)',
 'prefs-editing' => 'Prenestr skridaozañ',
 'rows' => 'Linennoù :',
@@ -1331,7 +1313,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'localtime' => "Eur lec'hel :",
 'timezoneuseserverdefault' => 'Ober gant talvoudenn dre ziouer ar wiki ($1)',
 'timezoneuseoffset' => 'Arall (resisaat al linkadur)',
-'timezoneoffset' => 'Linkadur eur¹ :',
 'servertime' => 'Eur ar servijer :',
 'guesstimezone' => 'Ober gant talvoudenn ar merdeer',
 'timezoneregion-africa' => 'Afrika',
@@ -1582,6 +1563,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.",
@@ -2078,10 +2060,8 @@ $1 {{PLURAL:$1|rummad|rummad}}',
 'protectedpages' => 'Pajennoù gwarezet',
 'protectedpages-indef' => 'Gwarezoù da badout hepken',
 'protectedpages-cascade' => 'Gwarez dre skalierad hepken',
-'protectedpagestext' => "Gwarezet eo ar pajennoù da-heul; n'haller na kemmañ anezho nag o dilec'hiañ",
 'protectedpagesempty' => "N'eus pajenn gwarezet ebet gant an arventennoù-mañ evit poent.",
 'protectedtitles' => 'Titloù gwarezet',
-'protectedtitlestext' => "An titloù da-heul zo bet gwarezet p'int bet krouet",
 'protectedtitlesempty' => "N'eus bet gwarezet titl ebet dezhañ an arventennoù-se evit poent.",
 'listusers' => 'Roll an implijerien',
 'listusers-editsonly' => 'Na ziskouez nemet an implijerien o deus degaset un dra bennak',
@@ -3587,10 +3567,6 @@ Kuzhet e vo ar re all dre ziouer.
 'exif-urgency-high' => 'Uhel ($1)',
 'exif-urgency-other' => 'Priorelezh termenet gant an aozer ($1)',
 
-# External editor support
-'edit-externally' => 'Kemmañ ar restr-mañ dre un arload diavaez',
-'edit-externally-help' => "(Gwelet [https://www.mediawiki.org/wiki/Manual:External_editors erbedadennoù staliañ an aozer diavaez] a-benn gouzout hiroc'h).",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'pep tra',
 'namespacesall' => 'pep tra',
@@ -3831,8 +3807,8 @@ Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar
 
 # Special:SpecialPages
 'specialpages' => 'Pajennoù dibar',
-'specialpages-note' => '----
-* Pajennoù dibar boutin.
+'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>',
 'specialpages-group-maintenance' => "Rentaoù-kont trezalc'h",
@@ -4035,4 +4011,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 df2cc2d..cd11c01 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' ),
@@ -438,7 +438,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Opcije stranice',
 'qbmyoptions' => 'Moje opcije',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'ČPP',
 'faqpage' => 'Project:NPP',
 
@@ -554,8 +553,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}}',
@@ -653,9 +650,6 @@ Nije ponuđeno nikakvo objašnjenje.',
 'perfcachedts' => 'Slijedeći podaci se nalaze u memoriji i zadnji put su ažurirani $1. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je isključeno.
 Podaci koji se ovdje nalaze ne moraju biti aktuelni.',
-'wrong_wfQuery_params' => 'Netačni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Pretraga: $2',
 'viewsource' => 'Pogledaj izvor',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Akcija je usporena',
@@ -1335,12 +1329,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati pretrage za "$1"',
-'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, pogledajte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do "$1"]])',
-'searchsubtitleinvalid' => 'Tražili ste $1',
 'toomanymatches' => 'Pronađeno je previše rezultata, molimo pokušajte unijeti konkretniji izraz',
 'titlematches' => 'Naslov članka odgovara',
-'notitlematches' => 'Naslov članka ne odgovara.',
 'textmatches' => 'Tekst stranice odgovara',
 'notextmatches' => 'Tekst članka ne odgovara',
 'prevn' => '{{PLURAL:$1|prethodni $1|prethodnih $1}}',
@@ -1349,10 +1339,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
 'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcije pretrage',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
 'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
 'searchprofile-images' => 'Multimedija',
@@ -1380,14 +1368,10 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "Dolje {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
 'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Pažnja''': Po pretpostavljenim postavkama pretražuju se samo neki imenski prostori.
-Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sadržaj (uključujući stranice za razgovor, šablone i sl.) ili koristite željeni imenski prostor kao prefiks.",
 'search-nonefound' => 'Nisu pronađeni rezultati koji odgovaraju upitu.',
-'powersearch' => 'Napredna pretraga',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Pretraga u imenskim prostorima:',
 'powersearch-redir' => 'Spisak preusmjerenja',
-'powersearch-field' => 'Traži',
 'powersearch-togglelabel' => 'Označi:',
 'powersearch-toggleall' => 'Sve',
 'powersearch-togglenone' => 'Ništa',
@@ -1398,8 +1382,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',
-'prefsnologintext' => 'Da biste mogli podešavati korisničke postavke, morate <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} biti prijavljeni]</span>.',
 'changepassword' => 'Promijeni šifru',
 'prefs-skin' => 'Koža',
 'skin-preview' => 'Pregled',
@@ -1423,7 +1405,6 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'prefs-email' => 'E-mail opcije',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Sačuvaj',
-'resetprefs' => 'Vrati podešavanja',
 'restoreprefs' => 'Vrati sve pretpostavljene postavke',
 'prefs-editing' => 'Veličine tekstualnog polja',
 'rows' => 'Redova',
@@ -1441,7 +1422,6 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
 'servertime' => 'Vrijeme na serveru:',
 'guesstimezone' => 'Popuni iz preglednika',
 'timezoneregion-africa' => 'Afrika',
@@ -1691,6 +1671,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',
@@ -2176,10 +2157,8 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'Samo neograničena zaštićenja',
 'protectedpages-cascade' => 'Samo prenosive zaštite',
-'protectedpagestext' => 'Slijedeće stranice su zaštićene od izmjena i premještanja',
 'protectedpagesempty' => 'Trenutno nijedna stranica nije zaštićena s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Članci sa slijedećim naslovima su zaštićeni od kreiranja.',
 'protectedtitlesempty' => 'Nema naslova zaštićenih članaka sa ovim parametrima.',
 'listusers' => 'Spisak korisnika',
 'listusers-editsonly' => 'Pokaži samo korisnike koji su uređivali',
@@ -3697,10 +3676,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Korisnički određen prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Izmjeni ovu datoteku koristeći vanjski program',
-'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
@@ -3977,8 +3952,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 
 # Special:SpecialPages
 'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* Normalne posebne stranice.
+'specialpages-note' => '* Normalne posebne stranice.
 * <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
 'specialpages-group-maintenance' => 'Izvještaji za održavanje',
 'specialpages-group-other' => 'Ostale posebne stranice',
@@ -4179,4 +4153,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 7ec86fa..f1f9dc8 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' ),
@@ -361,7 +362,6 @@ $messages = array(
 'qbedit' => 'Modifica',
 'qbpageoptions' => 'Opcions de pàgina',
 'qbmyoptions' => 'Pàgines pròpies',
-'qbspecialpages' => 'Pàgines especials',
 'faq' => 'PMF',
 'faqpage' => 'Project:PMF',
 
@@ -434,7 +434,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 +477,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 +566,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ó.',
@@ -579,15 +577,12 @@ No ha donat cap explicació.',
 'perfcached' => "Les dades següents es troben a la memòria cau i podrien no estar al dia. Hi ha un màxim {{PLURAL:$1|d'un resultat|de $1 resultats}} disponibles a la memòria cau.",
 'perfcachedts' => "Les dades següents es troben a la memòria cau i es van actualitzar per darrera vegada el $1. Hi ha un màxim {{PLURAL:$4|d'un resultat|de $4 resultats}} disponibles a la memòria cau.",
 'querypage-no-updates' => "S'ha inhabilitat l'actualització d'aquesta pàgina. Les dades que hi contenen podrien no estar al dia.",
-'wrong_wfQuery_params' => 'Paràmetres incorrectes per a wfQuery()<br />
-Funció: $1<br />
-Consulta: $2',
 'viewsource' => 'Mostra el codi',
 'viewsource-title' => 'Mostra la font per a $1',
 '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 +604,8 @@ 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
 'virus-badscanner' => "Mala configuració: antivirus desconegut: ''$1''",
@@ -737,7 +733,7 @@ Introduïu una adreça amb un format adequat o bé buideu el camp.",
 'createaccount-text' => "Algú ha creat un compte d'usuari anomenat $2 al projecte {{SITENAME}}
 ($4) amb la vostra adreça de correu electrònic. La contrasenya per a l'usuari «$2» és «$3». Hauríeu d'accedir al compte i canviar-vos aquesta contrasenya quan abans millor.
 
-Si no hi teniu cap relació i aquest compte ha estat creat per error, simplement ignoreu el missatge.",
+Si no hi teniu cap relació i aquest compte s'ha creat per error, simplement ignoreu el missatge.",
 'usernamehasherror' => "El nom d'usuari no pot contenir caràcters hash",
 'login-throttled' => "Heu realitzat massa intents d'accés a la sessió.
 Espereu $1 abans de tornar-ho a provar.",
@@ -897,8 +893,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.",
@@ -918,10 +914,10 @@ Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines,
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear-la ara]</span>.',
 'noarticletext-nopermission' => 'Actualment no hi ha text en aquesta pàgina.
 Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>, però no teniu permisos per crear la pàgina.',
-'missing-revision' => 'La revisió # $1  de la pàgina anomenada "{{PAGENAME}}" no existeix.
+'missing-revision' => 'La revisió núm. $1 de la pàgina anomenada «{{PAGENAME}}» no existeix.
 
-Això és normalment provocat per després d\'un enllaç d\'història antiquat a una pàgina que s\'ha suprimit.
-Detalls es poden trobar en el [{{fullurl: {{# especial: registre}} / delete|page = {{FULLPAGENAMEE}}}} registre de supressió].',
+Normalment això ocorre quan seguiu un enllaç d’historial desactualitzat que apunta a una pàgina que s’ha suprimit.
+Podeu trobar detalls en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].',
 'userpage-userdoesnotexist' => "Atenció: El compte d'usuari «<nowiki>$1</nowiki>» no està registrat. En principi no hauríeu de crear ni editar aquesta pàgina.",
 'userpage-userdoesnotexist-view' => 'El compte d\'usuari "$1" no està registrat.',
 'blocked-notice-logextract' => "En aquests moments aquest compte d'usuari es troba blocat.
@@ -937,9 +933,9 @@ Per més detalls, la darrera entrada del registre es mostra a continuació:",
 '''Encara no s'ha desat!'''",
 'userjspreview' => "'''Recordeu que només estau provant/previsualitzant el vostre JavaScript, encara no ho heu desat!'''",
 'sitecsspreview' => "'''Adoneu-vos que esteu veient una vista prèvia d'aquest full d'estil CSS.'''
-'''No n'hi ha estat encara gravada!'''",
-'sitejspreview' => "'''Adoneu-vos que esteu veient una vista prèvia d'aquest codi Javascript.'''
-'''No n'hi ha estat encara gravat!'''",
+'''Encara no s'ha desat!'''",
+'sitejspreview' => "'''Tingueu present que esteu previsualitzant aquest codi Javascript.'''
+'''Encara no s'ha desat!'''",
 'userinvalidcssjstitle' => "'''Atenció:''' No existeix l'aparença «$1». Recordeu que les subpàgines personalitzades amb extensions .css i .js utilitzen el títol en minúscules, per exemple, {{ns:user}}:NOM/vector.css no és el mateix que {{ns:user}}:NOM/Vector.css.",
 'updated' => '(Actualitzat)',
 'note' => "'''Nota:'''",
@@ -1008,11 +1004,11 @@ Podeu modificar les planes ja existents o bé [[Special:UserLogin|entrar en un c
 'permissionserrors' => 'Error de permisos',
 'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
 'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-moveddeleted-warn' => "'''Avís: Esteu creant una pàgina que ha estat prèviament esborrada.'''
+'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que ha estat prèviament suprimida.'''
 
 Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
 A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
-'moveddeleted-notice' => "Aquesta pàgina ha estat esborrada.
+'moveddeleted-notice' => "S'ha suprimit aquesta pàgina.
 A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
 'log-fulllog' => 'Veure tot el registre',
 'edit-hook-aborted' => "Modificació avortada pel hook.
@@ -1020,8 +1016,8 @@ No s'ha donat cap explicació.",
 'edit-gone-missing' => "No s'ha pogut actualitzar la pàgina.
 Sembla haver estat esborrada.",
 'edit-conflict' => "Conflicte d'edició.",
-'edit-no-change' => 'La vostra modificació ha estat ignorada perquè no feia cap canvi al text.',
-'postedit-confirmation' => 'La modificació ha estat desada.',
+'edit-no-change' => "S'ha ignorat la vostra modificació perquè no feia cap canvi al text.",
+'postedit-confirmation' => "S'ha desat la modificació.",
 'edit-already-exists' => "No s'ha pogut crear una pàgina.
 Ja existeix.",
 'defaultmessagetext' => 'Missatge per defecte',
@@ -1062,7 +1058,7 @@ Se n'han omès els arguments.",
 # "Undo" feature
 'undo-success' => "Pot desfer-se la modificació. Si us plau, reviseu la comparació de sota per a assegurar-vos que és el que voleu fer; llavors deseu els canvis per a finalitzar la desfeta de l'edició.",
 'undo-failure' => 'No pot desfer-se la modificació perquè hi ha edicions entre mig que hi entren en conflicte.',
-'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o ha estat esborrada.",
+'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o s'ha suprimit.",
 'undo-summary' => 'Es desfà la revisió $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussió]])',
 'undo-summary-username-hidden' => "Desfés la revisió $1 d'un usuari ocult",
 
@@ -1100,9 +1096,9 @@ El motiu donat per $3 és ''$2''",
 'history-feed-title' => 'Historial de revisió',
 'history-feed-description' => 'Historial de revisió per a aquesta pàgina del wiki',
 'history-feed-item-nocomment' => '$1 a $2',
-'history-feed-empty' => 'La pàgina demanada no existeix.
-Potser ha estat esborrada o reanomenada.
-Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.',
+'history-feed-empty' => "La pàgina demanada no existeix.
+Potser s'ha suprimit o reanomenat.
+Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.",
 
 # Revision deletion
 'rev-deleted-comment' => "(resum d'edició eliminat)",
@@ -1111,26 +1107,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].",
@@ -1153,8 +1149,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',
@@ -1163,8 +1160,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:',
@@ -1184,8 +1181,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.
@@ -1249,18 +1246,14 @@ 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
 'searchresults' => 'Resultats de la cerca',
 'searchresults-title' => 'Resultats de la recerca de «$1»',
-'searchresulttext' => 'Per a més informació de les cerques del projecte {{SITENAME}}, aneu a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Heu cercat '''[[:$1]]'''  ([[Special:Prefixindex/$1|totes les pàgines que comencen amb «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pàgines que enllacen amb «$1»]])",
-'searchsubtitleinvalid' => "Heu cercat '''$1'''",
 'toomanymatches' => "S'han retornat masses coincidències. Proveu-ho amb una consulta diferent.",
 'titlematches' => 'Coincidències de títol de la pàgina',
-'notitlematches' => 'No hi ha cap coincidència de títol de pàgina',
 'textmatches' => 'Coincidències de text de pàgina',
 'notextmatches' => 'No hi ha cap coincidència de text de pàgina',
 'prevn' => 'anteriors {{PLURAL:$1|$1}}',
@@ -1269,10 +1262,8 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '$1 {{PLURAL:$1|resultat|resultats}} següents',
 'shown-title' => 'Mostra $1 {{PLURAL:$1|resultat|resultats}} per pàgina',
 'viewprevnext' => 'Vés a ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcions de cerca',
 'searchmenu-exists' => "'''Hi ha una pàgina anomenada «[[:$1]]» en aquest wiki'''",
 'searchmenu-new' => "'''Creeu la pàgina «[[:$1]]» en aquest wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mostra pàgines amb aquest prefix]]',
 'searchprofile-articles' => 'Pàgines de contingut',
 'searchprofile-project' => "Pàgines d'ajuda i de projecte",
 'searchprofile-images' => 'Multimèdia',
@@ -1300,13 +1291,10 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => 'Tot seguit es {{PLURAL:$1|mostra el resultat|mostren els <b>$1</b> resultats començant pel número <b>$2</b>}}.',
 'showingresultsnum' => 'Tot seguit es {{PLURAL:$3|llista el resultat|llisten els <b>$3</b> resultats començant pel número <b>$2</b>}}.',
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' de '''$3'''|Resultats '''$1 - $2''' de '''$3'''}} per '''$4'''",
-'nonefound' => "'''Nota''': Només se cerca en alguns espais de noms per defecte. Proveu d'afegir el prefix ''all:'' a la vostra consulta per a cercar a tot el contingut (incloent-hi les pàgines de discussió, les plantilles, etc.), o feu servir l'espai de noms on vulgueu cercar com a prefix.",
 'search-nonefound' => 'La cerca no ha donat cap resultat.',
-'powersearch' => 'Cerca avançada',
 'powersearch-legend' => 'Cerca avançada',
 'powersearch-ns' => 'Cerca als espais de noms:',
 'powersearch-redir' => 'Mostra redireccions',
-'powersearch-field' => 'Cerca',
 'powersearch-togglelabel' => 'Activar:',
 'powersearch-toggleall' => 'Tots',
 'powersearch-togglenone' => 'Cap',
@@ -1318,8 +1306,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ó',
-'prefsnologintext' => 'Heu d\'estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticats]</span> per a seleccionar les preferències d\'usuari.',
+'prefsnologintext2' => "Useu $1 per configurar preferències d'usuari.",
 'changepassword' => 'Canvia la contrasenya',
 'prefs-skin' => 'Aparença',
 'skin-preview' => 'prova',
@@ -1343,7 +1330,6 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'prefs-email' => 'Opcions de correu electrònic',
 'prefs-rendering' => 'Aparença',
 'saveprefs' => 'Desa les preferències',
-'resetprefs' => 'Esborra els canvis no guardats',
 'restoreprefs' => 'Restaura les preferències per defecte',
 'prefs-editing' => "Caixa d'edició",
 'rows' => 'Files',
@@ -1359,12 +1345,11 @@ 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)",
 'timezoneuseoffset' => 'Altres (especifiqueu la diferència)',
-'timezoneoffset' => 'Diferència¹:',
 'servertime' => 'Hora del servidor:',
 'guesstimezone' => 'Omple-ho des del navegador',
 'timezoneregion-africa' => 'Àfrica',
@@ -1615,7 +1600,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 +1691,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 +1822,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 +1883,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 +1934,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
@@ -2093,10 +2082,8 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'protectedpages' => 'Pàgines protegides',
 'protectedpages-indef' => 'Només proteccions indefinides',
 'protectedpages-cascade' => 'Només proteccions en cascada',
-'protectedpagestext' => 'Les pàgines següents estan protegides perquè no es puguin modificar o reanomenar',
 'protectedpagesempty' => 'No hi ha cap pàgina protegida per ara',
 'protectedtitles' => 'Títols protegits',
-'protectedtitlestext' => 'Els títols següents estan protegits de crear-se',
 'protectedtitlesempty' => 'No hi ha cap títol protegit actualment amb aquests paràmetres.',
 'listusers' => "Llista d'usuaris",
 'listusers-editsonly' => 'Mostra només usuaris amb edicions',
@@ -2251,7 +2238,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 +2264,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 +2307,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 +2342,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 +2372,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 +2599,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 +2613,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 +2648,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 +2676,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 +2766,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 +2878,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 +2992,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 +3082,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 +3124,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 +3351,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',
@@ -3603,10 +3591,6 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => "Prioritat definida per l'usuari ($1)",
 
-# External editor support
-'edit-externally' => 'Edita aquest fitxer fent servir una aplicació externa',
-'edit-externally-help' => '(Vegeu les [https://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuració] per a més informació)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totes',
 'namespacesall' => 'tots',
@@ -3707,6 +3691,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 +3723,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.',
@@ -3834,10 +3821,9 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 
 # Special:SpecialPages
 'specialpages' => 'Pàgines especials',
-'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>',
+'specialpages-note-top' => 'Llegenda',
+'specialpages-note' => '* Pàgines especials normals.
+* <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 +3864,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 +3983,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 +4036,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..819a332 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',
@@ -170,7 +290,6 @@ $messages = array(
 'qbedit' => '修改',
 'qbpageoptions' => '茲蜀頁',
 'qbmyoptions' => '我其頁面',
-'qbspecialpages' => '特殊頁',
 'faq' => '經稠碰著其問題',
 'faqpage' => 'Project:經稠碰著其問題',
 
@@ -287,8 +406,6 @@ $1',
 'ok' => '好',
 'retrievedfrom' => '趁「$1」退過來',
 'youhavenewmessages' => '汝有$1($2)。',
-'newmessageslink' => '新信息',
-'newmessagesdifflink' => '最後其改變',
 'youhavenewmessagesfromusers' => '汝有趁$3用戶($2)來其$1萆信息{{PLURAL:$3}}',
 'youhavenewmessagesmanyusers' => '汝有趁雅価用戶($2)其$1信息',
 'newmessageslinkplural' => '$1條新其信息{{PLURAL:$1}}',
@@ -369,9 +486,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'perfcachedts' => '下底其數據已經緩存過了,最後更新遘$1。{{PLURAL:$4|$4條結果}}會敆緩存臺中討著。',
 'querypage-no-updates' => '茲蜀頁其更新乞禁止了。
 數據嚽塊現刻時𣍐更新了。',
-'wrong_wfQuery_params' => '敆wfQuery()其鄭其參數<br />
-函數:$1<br />
-查詢:$2',
 'viewsource' => '看源代碼',
 'viewsource-title' => '覷蜀覷$1其源代碼',
 'actionthrottled' => '行動乞取消咯',
@@ -666,9 +780,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 # Search results
 'searchresults' => '討結果',
 'searchresults-title' => '尋討「$1」其結果',
-'searchresulttext' => '更更価關於討{{SITENAME}}其內容,覷蜀覷[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => "汝是討'''[[:$1]]'''([[Special:Prefixindex/$1|所有「$1」開始其頁面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有鏈遘「$1」其頁面]])",
-'searchsubtitleinvalid' => "汝討'''$1'''",
 'prevn' => '前{{PLURAL:$1}}$1萆',
 'nextn' => '後{{PLURAL:$1}}$1萆',
 'shown-title' => '每頁顯示$1{{PLURAL:$1|萆結果}}',
@@ -692,7 +803,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' => '無設定',
@@ -702,7 +812,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'prefs-watchlist' => '監視單',
 'prefs-misc' => '其它',
 'saveprefs' => '保存',
-'resetprefs' => '清除未保存其改變',
 'searchresultshead' => '尋討',
 'resultsperpage' => '每頁訪問量:',
 'recentchangescount' => '這般改變其條目:',
@@ -711,7 +820,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'localtime' => '當地時間:',
 'timezoneuseserverdefault' => '使維基默認($1)',
 'timezoneuseoffset' => '其它(點出時差)',
-'timezoneoffset' => '時差',
 'servertime' => '服務器時間:',
 'guesstimezone' => '填充敆瀏覽器𡅏',
 'timezoneregion-africa' => '非洲',
@@ -1255,10 +1363,6 @@ If a new page with the same name has been created since the deletion, the restor
 
 'exif-subjectdistancerange-0' => '𣍐八',
 
-# External editor support
-'edit-externally' => '使外程序來編輯茲文件',
-'edit-externally-help' => '(參考[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions]來瞭解更価信息)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '所有',
 'namespacesall' => '所有',
index 2fbd188..56558dd 100644 (file)
@@ -75,54 +75,53 @@ $specialPageAliases = array(
        'Activeusers'               => array( 'Жигара_декъашхой' ),
        'Allmessages'               => array( 'ГӀирса_хаамаш' ),
        'Allpages'                  => array( 'Массо_агӀонаш' ),
-       'Ancientpages'              => array( 'Яззамаш_оцу_терахьца_тяххьара_тадар_дина_долу' ),
+       'Ancientpages'              => array( 'Яззамаш_оцу_терахьца_тӀаьххьара_тадар_дина_долу' ),
        'Badtitle'                  => array( 'Хилийта_йиш_йоцу_цӀе' ),
        'Blankpage'                 => array( 'Еса_агӀо' ),
        'Block'                     => array( 'Блоктоха' ),
-       'Blockme'                   => array( 'Блоктоха_суна' ),
-       'Booksources'               => array( 'Жайнашан_хьосташ' ),
+       'Booksources'               => array( 'Жайнийн_хьосташ' ),
        'BrokenRedirects'           => array( 'ДIахаьдна_долу_дIасахьажораш' ),
        'Categories'                => array( 'Категореш' ),
        'ChangeEmail'               => array( 'Хийца_e-mail' ),
-       'ChangePassword'            => array( 'ХийÑ\86а_иÑ\88аÑ\80' ),
+       'ChangePassword'            => array( 'ХийÑ\86а_паÑ\80олÑ\8c' ),
        'ComparePages'              => array( 'АгӀонаш_юстар' ),
        'Confirmemail'              => array( 'Бакъе_e-mail' ),
        'Contributions'             => array( 'Къинхьегам' ),
-       'CreateAccount'             => array( 'Кхолла_декъашхон_дӀаяздар' ),
+       'CreateAccount'             => array( 'Кхолла_декъашхочун_дӀаяздар' ),
        'Deadendpages'              => array( 'Дика_йоцу_агӀонаш' ),
-       'DeletedContributions'      => array( 'ДӀабяхкина_къинхьегам' ),
-       'Disambiguations'           => array( 'Цхьатера_маьӀна_дерш' ),
-       'DoubleRedirects'           => array( 'ШалгӀа_дӀасахьажийнарш' ),
+       'DeletedContributions'      => array( 'ДӀабаьккхина_къинхьегам' ),
+       'DoubleRedirects'           => array( 'Шалха_дӀасахьажийнарш' ),
        'EditWatchlist'             => array( 'Табе_тергаме_могӀам' ),
        'Emailuser'                 => array( 'Декъашхочунга_кехат' ),
+       'ExpandTemplates'           => array( 'Кепаш_схьаястар' ),
        'Export'                    => array( 'Экспорт' ),
-       'Fewestrevisions'           => array( 'Наггахь_беш_болу_хицамаш' ),
+       'Fewestrevisions'           => array( 'Наггахь_беш_болу_хийцамаш' ),
        'FileDuplicateSearch'       => array( 'Цхьатера_файлаш_лахар' ),
        'Filepath'                  => array( 'Файл_йолче' ),
        'Import'                    => array( 'Импорт' ),
        'Invalidateemail'           => array( 'Адрес_бакъдар_юхадаккха' ),
        'JavaScriptTest'            => array( 'JavaScript_тестировать_ян' ),
        'BlockList'                 => array( 'Блоктоьхнарш' ),
-       'LinkSearch'                => array( 'Ð¥Ñ\8cажоÑ\80игаш_лахар' ),
-       'Listadmins'                => array( 'Куьгалхойн_могӀам' ),
+       'LinkSearch'                => array( 'Ð¥Ñ\8cажоÑ\80агаш_лахар' ),
+       'Listadmins'                => array( 'Ð\9aÑ\83Ñ\8cйгалÑ\85ойн_могÓ\80ам' ),
        'Listbots'                  => array( 'Шаболх_бечара_могӀам' ),
-       'Listfiles'                 => array( 'Файланши_могӀам' ),
-       'Listgrouprights'           => array( 'Декъашхошан_бакъонаш' ),
+       'Listfiles'                 => array( 'Файлаш' ),
+       'Listgrouprights'           => array( 'Декъашхойн_бакъонаш' ),
        'Listredirects'             => array( 'ДIасахьажоран_могIам' ),
        'Listusers'                 => array( 'Декъашхойн_могӀам' ),
        'Lockdb'                    => array( 'Хааман_базан_блоктохар' ),
        'Log'                       => array( 'Тептарш' ),
-       'Lonelypages'               => array( 'Байлахь_йисина_агIонаш' ),
+       'Lonelypages'               => array( 'Байлахь_йисина_агӀонаш' ),
        'Longpages'                 => array( 'Беха_яззамаш' ),
-       'MergeHistory'              => array( 'ЦÑ\85Ñ\8cаÑ\8cнаÑ\82оÑ\8cÑ\85на_каÑ\82егоÑ\80еÑ\88' ),
+       'MergeHistory'              => array( 'Ð\98Ñ\81Ñ\82оÑ\80и_Ñ\86Ñ\85Ñ\8cаÑ\8cнаÑ\82оÑ\85аÑ\80' ),
        'MIMEsearch'                => array( 'MIME_чухула_лахар' ),
        'Mostcategories'            => array( 'Дуккха_категореш_тӀе_тоьхна_йолу_агӀонаш' ),
        'Mostimages'                => array( 'Массарел_дуккха_лелайо_файлаш' ),
-       'Mostinterwikis'            => array( 'Ð\94Ñ\83кÑ\85а_Ñ\8eкÑ\8aаÑ\80вики_Ñ\85Ñ\8cажоÑ\80игаш' ),
-       'Mostlinked'                => array( 'Ð\94Ñ\83ккÑ\85а_Ñ\85Ñ\8cажоÑ\80игаÑ\88\82Iе_Ñ\82оÑ\8cÑ\85на_йолÑ\83_агIонаш' ),
+       'Mostinterwikis'            => array( 'Ð\94Ñ\83кÑ\85а_Ñ\8eкÑ\8aаÑ\80вики_Ñ\85Ñ\8cажоÑ\80агаш' ),
+       'Mostlinked'                => array( 'Ð\94Ñ\83ккÑ\85а_Ñ\85Ñ\8cажоÑ\80агаÑ\88\82Ó\80е_Ñ\82оÑ\8cÑ\85на_йолÑ\83_агÓ\80онаш' ),
        'Mostlinkedcategories'      => array( 'Дуккха_тӀе_хьажораш_йолу_категореш' ),
        'Mostlinkedtemplates'       => array( 'Массарел_дуккха_а_леладо_кепаш' ),
-       'Mostrevisions'             => array( 'Сих_сиха_нисйина_йолу_агIонаш' ),
+       'Mostrevisions'             => array( 'Сих_сиха_нисйина_йолу_агӀонаш' ),
        'Movepage'                  => array( 'АгӀона_цӀе_хийцар' ),
        'Mycontributions'           => array( 'Сан_къинхьегам' ),
        'Mypage'                    => array( 'Сан_агӀо' ),
@@ -130,26 +129,27 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'Сан_файлаш' ),
        'Newimages'                 => array( 'Керла_файлаш' ),
        'Newpages'                  => array( 'Керла_агӀонаш' ),
-       'PermanentLink'             => array( 'Гуттарлера_хьажориг' ),
-       'Popularpages'              => array( 'ГӀарялла_агӀонаш' ),
+       'PasswordReset'             => array( 'Пароль_кхоссар' ),
+       'PermanentLink'             => array( 'Гуттарлера_хьажораг' ),
+       'Popularpages'              => array( 'ГӀараяьлла_агӀонаш' ),
        'Preferences'               => array( 'ГӀирсаш' ),
-       'Prefixindex'               => array( 'Хьалха_агIонашан_цIераш_хIотто_йеза' ),
-       'Protectedpages'            => array( 'ГIаролла_дина_агIонаш' ),
-       'Protectedtitles'           => array( 'ГIаролла_дина_цIераш' ),
+       'Prefixindex'               => array( 'Хьалха_агӀонийн_цӀераш_хӀотто_еза' ),
+       'Protectedpages'            => array( 'ГӀаролла_дина_агӀонаш' ),
+       'Protectedtitles'           => array( 'ГӀаролла_дина_цӀераш' ),
        'Randompage'                => array( 'Цахууш_нисйелла_агIо' ),
        'Randomredirect'            => array( 'Цахууш_нисделла_дIасахьажор' ),
        'Recentchanges'             => array( 'Керла_нисдарш' ),
        'Recentchangeslinked'       => array( 'Кхуьнца_долу_нисдарш' ),
        'Revisiondelete'            => array( 'ДӀадяхна_нисдарш' ),
        'Search'                    => array( 'Лахар' ),
-       'Shortpages'                => array( 'Ð\91оÑ\86оа_Ñ\8fззамаÑ\88' ),
+       'Shortpages'                => array( 'Боца_яззамаш' ),
        'Specialpages'              => array( 'Леррина_агӀонаш' ),
        'Statistics'                => array( 'Бухехьдерг' ),
        'Tags'                      => array( 'Билгалонаш' ),
-       'Unblock'                   => array( 'БлокдӀаякхар' ),
+       'Unblock'                   => array( 'БлокдӀаяккхар' ),
        'Uncategorizedcategories'   => array( 'Категореш_йоцу_категореш' ),
        'Uncategorizedimages'       => array( 'Категореш_йоцу_файлаш' ),
-       'Uncategorizedpages'        => array( 'Категореш_йоцу_агIонаш' ),
+       'Uncategorizedpages'        => array( 'Категореш_йоцу_агӀонаш' ),
        'Uncategorizedtemplates'    => array( 'Категореш_йоцу_кепаш' ),
        'Undelete'                  => array( 'МеттахӀоттор' ),
        'Unlockdb'                  => array( 'БлокдӀаякхар_ХБ' ),
@@ -158,17 +158,17 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'Лелош_доцу_кепаш' ),
        'Upload'                    => array( 'Файл_чуяккхар' ),
        'UploadStash'               => array( 'ДӀахьулйина_файл_чуяккхар' ),
-       'Userlogin'                 => array( 'ЧÑ\83валаÑ\80\8fлар' ),
-       'Userlogout'                => array( 'Ð\90Ñ\80авалаÑ\80\8fлар' ),
+       'Userlogin'                 => array( 'ЧÑ\83далар' ),
+       'Userlogout'                => array( 'Ð\90Ñ\80адалар' ),
        'Userrights'                => array( 'Бакъона_урхалладар' ),
        'Version'                   => array( 'Верси' ),
        'Wantedcategories'          => array( 'Оьшуш_йолу_категореш' ),
        'Wantedfiles'               => array( 'Оьшуш_йолу_файлаш' ),
-       'Wantedpages'               => array( 'Оьшуш_йолу_агIонаш' ),
+       'Wantedpages'               => array( 'Оьшуш_йолу_агӀонаш' ),
        'Wantedtemplates'           => array( 'Оьшуш_йолу_кепаш' ),
        'Watchlist'                 => array( 'Тергаме_могӀам' ),
        'Whatlinkshere'             => array( 'Хьажоригаш_кхузе' ),
-       'Withoutinterwiki'          => array( 'Ð\9aÑ\85еÑ\87Ñ\83_меÑ\82Ñ\82анаÑ\88ан_Ñ\85Ñ\8cажоÑ\80иг_йоÑ\86Ñ\83_агIонаш' ),
+       'Withoutinterwiki'          => array( 'ЮкÑ\8aаÑ\80вики_Ñ\85Ñ\8cажоÑ\80агаÑ\88_йоÑ\86Ñ\83_агÓ\80онаш' ),
 );
 
 $magicWords = array(
@@ -202,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' ),
@@ -233,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' ),
@@ -285,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' ),
@@ -296,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' ),
@@ -477,7 +477,6 @@ $messages = array(
 'qbedit' => 'Нисйé',
 'qbpageoptions' => 'Агlо нисйар',
 'qbmyoptions' => 'Хьан нисдарш',
-'qbspecialpages' => 'Леррина агlонаш',
 'faq' => 'СиХХ',
 'faqpage' => 'Project:СиХХ',
 
@@ -595,8 +594,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|керла хаам}}',
@@ -688,9 +685,6 @@ $1',
 'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|дӀаяздар|дӀаяздарш}}.',
 'querypage-no-updates' => 'ХӀинца хӀара агӀо карлаякхар дӀадайина ду.
 Кхузахь гайтина болу хаамаш карла боккхур бац.',
-'wrong_wfQuery_params' => 'Хилийта йиш йоцу параметраш хӀокху функцин wfQuery()<br />
-Функци: $1<br />
-Жоп дехар: $2',
 'viewsource' => 'Хьажар',
 'viewsource-title' => 'Агӏона $1 дуьххьарлера йозане хьажар',
 'actionthrottled' => 'Сиххалин доза тохар',
@@ -714,9 +708,9 @@ $1',
 'virus-unknownscanner' => 'йозуш йоцу антивирус:',
 
 # Login and logout pages
-'logouttext' => "'''Ð¥Ñ\8cо Ð°Ñ\80авела/ела.'''
-Хьан йиш ю {{grammar:genitive|{{SITENAME}}}} чохь хьой ца вовзийташ/йовзийташ болх бан я <span class='plainlinks'>[$1 кхин чувала/яла ]</span> хьой чохь хила цӀарца я кхин цӀарца.
-Цхьа йолу агӀонаш чохь хьо хьай цӀарца болх беш сана хила тарло ишта ца хилийта керлаякха браузеран кэш.",
+'logouttext' => "'''Ð\90Ñ\85Ñ\8cа Ð±Ð¾Ð»Ñ\85 Ð´Ó\80абеÑ\80зийна.'''
+
+Цхьайолу агӀонаш чохь хьо хьай цӀарца болх беш сана хила тарло ишта ца хилийта керлаякха браузеран кэш.",
 'welcomeuser' => 'Марша ДогӀийла, $1!',
 'yourname' => 'Декъашхочун цӀе:',
 'userlogin-yourname' => 'Декъашхочун цӀе',
@@ -983,6 +977,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, цунна цӀе дӀахьулйина',
 
@@ -1070,10 +1065,6 @@ $1',
 # Search results
 'searchresults' => 'Лахарна хилам',
 'searchresults-title' => 'Лаха «$1»',
-'searchresulttext' => 'Хlокху кхолламан агlонаш чохь лахарх лаьцна кхетош хаам, хьажа. [[{{MediaWiki:Helppage}}|нисвохааман дакъанчу]].',
-'searchsubtitle' => 'Дехарца йолу «[[:$1]]» ([[Special:Prefixindex/$1|агlонаш, дlайуьлалуш йу хlо цlарца]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|тlетовжуш йу хlо цlарна]])',
-'searchsubtitleinvalid' => 'Кху дехарца «$1»',
-'notitlematches' => 'Агlонаши цlерашца цхьатера йогlуш яц',
 'notextmatches' => 'Агlонаш чура йозанашца цхьатера йогlуш яц',
 'prevn' => '{{PLURAL:$1|хьалхарниг $1|хьалхарнаш $1|хьалхарнаш $1}}',
 'nextn' => '{{PLURAL:$1|тlаьхьйогlург $1|тlаьхьйогlурш $1|тlаьхьйогlурш $1}}',
@@ -1081,10 +1072,8 @@ $1',
 'nextn-title' => '{{PLURAL:$1|ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
 'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|дӀаяздар|дӀаяздарш}} гайта',
 'viewprevnext' => 'Хьажа ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Лахарна гlирс нисба',
 'searchmenu-exists' => "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
 'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Гайта агlонаш ишта хlоттам болуш]]',
 'searchprofile-articles' => 'Къаьстина агlонаш',
 'searchprofile-project' => 'ГӀона а проектан а агӀонаш',
 'searchprofile-images' => 'Мультимедиа',
@@ -1109,13 +1098,10 @@ $1',
 'searchall' => 'массо',
 'showingresults' => 'Лахахьа {{PLURAL:$1|гойта|гойту|гойту}} <strong>$1</strong> {{PLURAL:$1|хилам|хиламаш|хиламаш}}, дlаболало кху № <strong>$2</strong>.',
 'showingresultsheader' => "{{PLURAL:$5|Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
-'nonefound' => "'''Билгалдаккхар.''' ХӀумма цадеш Ӏад йитича массо цӀеран энахь цалоху. Лела йе тӀехуттург ''all:'', лахийта массо цӀеран энахь (юкъадалош декъашхойн дийцарш а кепаш а кхин дерг.), йа хӀотта йе оьшуш йолу цӀеран эна.",
 'search-nonefound' => 'Дехаре терра цхьа хӀума ца карийна.',
-'powersearch' => 'Шуьйра лахар',
 'powersearch-legend' => 'Шуьро лахар',
 'powersearch-ns' => 'Цlераши анахь лахар:',
 'powersearch-redir' => 'Схьагайта дlасахьажийнарш',
-'powersearch-field' => 'Лаха',
 'powersearch-togglelabel' => 'Билгалдан:',
 'powersearch-toggleall' => 'Массо',
 'powersearch-togglenone' => 'Хlумма цаоьшу',
@@ -1130,7 +1116,7 @@ $1',
 'prefs-skin' => 'Кечяран тема',
 'skin-preview' => 'Хьалха муха ю хьажа',
 'datedefault' => 'Iад йитарца',
-'prefs-beta' => 'Ð\93lоле таронаш',
+'prefs-beta' => 'Ð\91еÑ\82а-таронаш',
 'prefs-datetime' => 'Терахь а хан а',
 'prefs-labs' => 'Муха ю хьажарна таронаш',
 'prefs-user-pages' => 'Декъашхочун агӀо',
@@ -1148,7 +1134,6 @@ $1',
 'prefs-email' => 'Электронан почтан параметраш',
 'prefs-rendering' => 'Арахьара хатl',
 'saveprefs' => 'lалашдан',
-'resetprefs' => 'Кхоссар',
 'restoreprefs' => 'МеттахӀоттабе гӀирс Iад битарца',
 'prefs-editing' => 'Тадар',
 'rows' => 'МогӀанаш:',
@@ -1292,7 +1277,7 @@ $1',
 'right-deleterevision' => 'агӀонийн билгала версеш дӀаяхар а меттахӀиттаяр а',
 'right-deletedhistory' => 'дӀаяхна агӀонийн исторега хьажар дӀадаьккхина йоза тӀекхочехь доцуш',
 'right-deletedtext' => 'дӀадаьккхина йозане а хийцамашка а хьажар агӀонийн дӀаяхна версин юккъахь',
-'right-browsearchive' => 'Ð\94Ӏаяхна агӀонаш лахар',
+'right-browsearchive' => 'дӀаяхна агӀонаш лахар',
 'right-undelete' => 'АгӀонаш меттахӀоттор',
 'right-suppressrevision' => 'куьйгалхойх хьулйина йолу агӀонийн версеш меттахӀиттаяр а хьажар а',
 'right-suppressionlog' => 'долара тептаршка хьажар',
@@ -1345,6 +1330,7 @@ $1',
 'action-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
 'action-delete' => 'дӀаяккха хӀара агӀо',
 'action-deletedhistory' => 'хӀокху агӀона дӀаяккхинцу исторега хьажар',
+'action-browsearchive' => 'ДӀаяхна агӀонаш лахар',
 'action-undelete' => 'хӀара агӀо меттахӀоттор',
 'action-patrol' => 'кхечера нисдарш хьаьжна сана билгалдар',
 'action-autopatrol' => 'шен нисдарш хьаьжна сана билгалдар',
@@ -1361,6 +1347,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.',
@@ -1836,7 +1823,7 @@ PICT # тайп тайпан
 'undelete' => 'ДIайайина йолу агIонашка хьажар',
 'undeletepage' => 'ДӀаяхина агӀонашка хьажар а меттахӀоттор а',
 'undeletepagetitle' => "'''Лахахь гайтина хӀокху [[:$1]] агӀона дӀаяхина версеш'''.",
-'viewdeletedpage' => 'ДIайайина йолу агIонашка хьажар',
+'viewdeletedpage' => 'ДӀаяхна йолу агӀонашка хьажар',
 'undelete-fieldset-title' => 'МеттахӀоттае версеш',
 'undeleteextrahelp' => "Ерриге агӀонан истори меттахӀоттая массо а билгалонаш еса а йити '''«{{int:undeletebtn}}»''' тӀетаӀае.
 ЦхӀайолу агӀонан версеш меттахӀоттая хьалха меттахӀоттош йолу версеш билгалъяьхна тӀетагӀе '''«{{int:undeletebtn}}»'''.",
@@ -1856,6 +1843,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аъ',
 
@@ -2194,6 +2184,8 @@ PICT # тайп тайпан
 'pageinfo-header-basic' => 'Коьрта хаам',
 'pageinfo-language' => 'АгӀона мотт',
 'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
+'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-category-info' => 'Категорех лаьцна хаам',
 
 # Skin names
 'skinname-cologneblue' => 'Кёльнин сингаттам',
@@ -2237,13 +2229,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
@@ -2340,10 +2335,6 @@ PICT # тайп тайпан
 
 'exif-dc-date' => 'Терахь(ш)',
 
-# External editor support
-'edit-externally' => 'Рéдаккха хlокху хlуман, арахьара диллагlарам лелош',
-'edit-externally-help' => '(мадарра хьажа. оцу [https://www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'массо',
 'namespacesall' => 'массо',
@@ -2435,8 +2426,7 @@ PICT # тайп тайпан
 
 # Special:SpecialPages
 'specialpages' => 'Леррина агlонаш',
-'specialpages-note' => '----
-* Гуттарлера белха агlонаш.
+'specialpages-note' => '* Гуттарлера белха агlонаш.
 * <strong class="mw-specialpagerestricted">Кlеззиг таронаш йолу леррина агlонаш.</strong>',
 'specialpages-group-maintenance' => 'Жамlаш гlирса хьашташ кхочушдар',
 'specialpages-group-other' => 'Кхин гlуллакхан агlонаш',
@@ -2494,6 +2484,8 @@ PICT # тайп тайпан
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаяьккхина}} агӀо $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|меттахӀоттайина|меттахӀоттайина}} агӀо $3',
+'revdelete-content-hid' => 'чулацам къайлабаьккхина',
+'revdelete-content-unhid' => 'чулацам гучубаьккхина',
 'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
 'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажийнарг цаюьтуш',
 'logentry-move-move_redir' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул',
@@ -2510,9 +2502,10 @@ PICT # тайп тайпан
 
 # Search suggestions
 'searchsuggest-search' => 'Лаха',
+'searchsuggest-containing' => 'чуьраниг…',
 
 # Durations
-'duration-hours' => '$1 {{PLURAL:$1|сахьат}}',
+'duration-hours' => '$1 {{PLURAL:$1|сахьт}}',
 'duration-days' => '$1 {{PLURAL:$1|де}}',
 
 # Limit report
@@ -2528,4 +2521,10 @@ PICT # тайп тайпан
 'limitreport-expansiondepth' => 'Шордаларан уггар йокха кӀоргалла',
 'limitreport-expensivefunctioncount' => 'АгӀона хӀоттам къасторан «еза» функцеш',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Кепаш схьаястар',
+'expand_templates_output' => 'Хилам',
+'expand_templates_remove_comments' => 'ДӀаяха комментареш',
+'expand_templates_preview' => 'Хьалха муха ю хьажа',
+
 );
index 2924f42..3764fa6 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' ),
@@ -206,7 +205,6 @@ $messages = array(
 'qbedit' => 'Usba',
 'qbpageoptions' => 'Kini nga panid',
 'qbmyoptions' => 'Akong mga panid',
-'qbspecialpages' => 'Mga espesyal nga panid',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -314,8 +312,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',
@@ -397,9 +393,6 @@ Basin aduna kini usa o daghan pang mga karakter nga dili magamit isip titulo.',
 'perfcachedts' => 'Ang mosunod nga data naka-cache, ug kataposang nabag-o sa $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Ang mga update alang sa kining panid naka-disable sa kasamtangan.
 Dili karon dayon ma-refresh ang data dinhi.',
-'wrong_wfQuery_params' => 'Sayop nga mga parametro sa wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Tan-awa ang ginikanan',
 'viewsource-title' => 'Tan-awa ang ginikanan para sa $1',
 'actionthrottled' => 'Na-throttle ang lihok',
@@ -687,10 +680,6 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
 # Search results
 'searchresults' => 'Mga resulta sa pagpangita',
 'searchresults-title' => 'Mga resulta sa pagpangita para sa "$1"',
-'searchresulttext' => 'Para sa dugang impormasyon mahitungod sa pagpangita sa {{SITENAME}}, tan-awa ang [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Gipangita nimo ang \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanang panid nga nagsugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanang panid nga misumpay sa "$1"]])',
-'searchsubtitleinvalid' => "Imong gipangita ang '''$1'''",
-'notitlematches' => 'Walay nag-match nga titulo sa panid',
 'notextmatches' => 'Walay misaktong teksto sa panid',
 'prevn' => 'miaging {{PLURAL:$1|$1}}',
 'nextn' => 'sunod {{PLURAL:$1|$1}}',
@@ -704,14 +693,10 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
 'search-interwiki-default' => '$1 ka mga resulta:',
 'search-interwiki-more' => '(dugang pa)',
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' sa '''$3'''|Mga resulta '''$1 - $2''' of '''$3'''}} sa '''$4'''",
-'nonefound' => "'''Bantayi''': Dili tanang ngalang espasyo (namespaces) ang gipangita by default.
-Sulayi'g prefix ang imong gipangita gamit ang ''all:'' alang mangita sa tanang sulod (apil ang mga panid sa hisgot, plantilya, ubp), o gamita ang gikinahanglang ngalang espasyo isip prefix.",
 'search-nonefound' => 'Walay mga resulta nga nag-match sa gipangita.',
-'powersearch' => 'Abansadong pagpangita',
 'powersearch-legend' => 'Abansadong pagpangita',
 'powersearch-ns' => 'Pangitaa sa mga ngalang espasyo:',
 'powersearch-redir' => 'Itala ang mga redirek',
-'powersearch-field' => 'Pangitaa ang',
 'powersearch-togglelabel' => 'I-tsek:',
 'powersearch-toggleall' => 'Tanan',
 'powersearch-togglenone' => 'Wala',
@@ -724,8 +709,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',
-'prefsnologintext' => 'Kinahanglan ikaw <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} naka-log-in]</span> aron ma-set ang imong mga preperensiya.',
 'changepassword' => 'Usba ang pasword',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Paunang tan-aw',
@@ -744,7 +727,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'prefs-email' => 'Mga opsyon sa e-mail',
 'prefs-rendering' => 'Appearance',
 'saveprefs' => 'Tipigi',
-'resetprefs' => 'Limpyohi ang wala matipigi nga mga kausaban',
 'restoreprefs' => 'Ibalik ang tanang default settings',
 'prefs-editing' => 'Nagausab',
 'rows' => 'Mga row:',
@@ -761,7 +743,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'localtime' => 'Oras sa lokal:',
 'timezoneuseserverdefault' => 'Gamita ang default sa server',
 'timezoneuseoffset' => 'Uban pa (i-specify ang offset)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Oras sa server:',
 'guesstimezone' => 'Ibutang gikan sa brawser',
 'timezoneregion-africa' => 'Aprika',
@@ -1201,10 +1182,6 @@ Ang uban default nga nakatago.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Usba kining payl gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa dugang nga impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tanan',
 'namespacesall' => 'tanan',
index e7f1fbc..b0cba3a 100644 (file)
@@ -147,7 +147,6 @@ $messages = array(
 'qbedit' => 'Tulaika',
 'qbpageoptions' => 'Este na pahina',
 'qbmyoptions' => 'Påhina-hu siha',
-'qbspecialpages' => 'Manespesiat na påhina',
 
 'errorpagetitle' => 'Linachi',
 'returnto' => 'Hånao tåtte para $1.',
@@ -232,8 +231,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',
@@ -619,12 +616,8 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
 # Search results
 'searchresults' => 'Humuyongña i inaligao',
 'searchresults-title' => 'Risutton i inaligao "$1"',
-'searchresulttext' => 'Para mas infotmasion nu manaliligao {{SITENAME}}, hånao para [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Un aligao '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Un aligao '''$1'''",
 'toomanymatches' => 'Mampos meggai na manaya ni humuyongña, pot fabot chagi difirente na inaligao',
 'titlematches' => 'Titulon påhina siha ni manaya',
-'notitlematches' => "Tåya' titulon påhina siha ni manaya",
 'textmatches' => "Tinige' påhina siha ni manaya",
 'notextmatches' => "Tåya' na tinige' påhina siha ni manaya",
 'prevn' => "{{PLURAL:$1|$1}} ni manmå'pos",
@@ -644,12 +637,9 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
 'searchall' => 'todu',
 'showingresults' => "A'annok gi sampapa' asta {{PLURAL:$1|'''1''' na humuyongña|'''$1''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
 'showingresultsnum' => "A'annok gi sampapa' {{PLURAL:$3|'''1''' na humuyongña|'''$3''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
-'nonefound' => "'''Apunta''': Solo ha' manmanaligao palu na sågan nå'an. Chagi fan muna'klå'an mo'na i inaligao-mu yan ''all:'' para un aligao todu i guinaha (kontodu påhinan kombesasion, plantiyas, etc), pat usa i sagan nå'an ni malago'-mu kumu klå'an mo'na.",
-'powersearch' => 'Finu na inaligao',
 'powersearch-legend' => 'Finu na inaligao',
 'powersearch-ns' => "Inaligao gi sagan nå'an:",
 'powersearch-redir' => "Na'lista i na'dirihi siha",
-'powersearch-field' => 'Aligao',
 'search-external' => 'Inaligao sanhiyong',
 'searchdisabled' => "Mana'påra i inaligao {{SITENAME}}.
 Siña hao manaligao gi Google gi entretanto.
@@ -659,8 +649,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",
-'prefsnologintext' => "Un nesisita [[Special:UserLogin|muna'log in]] para un tulaika i ga'ña-mu muna'sesetbi.",
 'changepassword' => 'Tulaika password',
 'prefs-skin' => 'Låssas',
 'skin-preview' => "Na'annok",
@@ -673,7 +661,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
 'prefs-watchlist-edits' => "I mas takhilo' na numirun tinilaika para u na'annok gi i mana'la'dangkolo i listan pinilan:",
 'prefs-misc' => 'Misc',
 'saveprefs' => 'Såtba',
-'resetprefs' => "Na'funas i tinilaika ti manma'såtba siha",
 'prefs-editing' => 'Tumulaika',
 'rows' => 'Fila siha:',
 'columns' => 'Kolumna siha:',
@@ -1085,10 +1072,6 @@ Ti mantattiyi i areklo ni sigienten ina'chetton siha gi mismo liña, i.e. i påh
 'metadata-expand' => "Na'annok todu i infotmasion-ña",
 'metadata-collapse' => "Na'atok patte i infotmasion-ña",
 
-# External editor support
-'edit-externally' => 'Tulaika i atkibu yan un aplikasion sanhiyong',
-'edit-externally-help' => 'Hånao para [https://www.mediawiki.org/wiki/Manual:External_editors i plantan chinachalani] para mas infotmasion.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todu',
 'namespacesall' => 'todu',
index 3a98888..aa76b1b 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 لاپەڕانە}}، لەم هاوپۆلەدان.',
@@ -307,7 +307,6 @@ $messages = array(
 'qbedit' => 'دەستکاری',
 'qbpageoptions' => 'ئەم پەڕەیە',
 'qbmyoptions' => 'پەڕەکانم',
-'qbspecialpages' => 'پەڕە تایبەتەکان',
 'faq' => 'پرسیار و وەڵام (FAQ)',
 'faqpage' => 'Project:پرسیار و وەڵام',
 
@@ -367,7 +366,7 @@ $messages = array(
 'articlepage' => 'پەڕەی ناوەرۆک ببینە',
 'talk' => 'وتووێژ',
 'views' => 'بینینەکان',
-'toolbox' => 'ئامرازدان',
+'toolbox' => 'ئامرازەکان',
 'userpage' => 'بینینی پەڕەی بەکارھێنەر',
 'projectpage' => 'په‌ڕه‌ی پرۆژه‌ نیشانبده‌',
 'imagepage' => 'پەڕەی پەڕگە نیشان بدە',
@@ -425,8 +424,6 @@ $1',
 'backlinksubtitle' => '→ $1',
 'retrievedfrom' => 'وەرگیراو لە «$1»',
 'youhavenewmessages' => '$1ت ھەیە ($2).',
-'newmessageslink' => 'پەیامی نوێ',
-'newmessagesdifflink' => 'دوایین گۆڕانکاری',
 'youhavenewmessagesfromusers' => 'لە {{PLURAL:$3|بەکارھێنەرێک|$3 بەکارھێنەران}} $1ت ھەیە ($2).',
 'youhavenewmessagesmanyusers' => '$1ت  لە ژمارەیەک بەکارھێنەر ھەیە ( $2 ).',
 'newmessageslinkplural' => '{{PLURAL:$1|پەیامێکی نوێ|پەیامی نوێ}}',
@@ -522,9 +519,6 @@ $1',
 'perfcachedts' => 'داتای خوارەوە cacheکراوە و دوایین جار لە $1 نوێ کراوەتەوە. لە cacheدا لانی زۆر {{PLURAL:$4|یەک ئەنجام|$4 ئەنجام}} لەبەردەستە.',
 'querypage-no-updates' => 'تازەکردنەوەکان بۆ ئەم پەڕە لە حاڵی ئێستادا ناچالاک کراوەتەوە.
 داتای ئێرە دەسبەجێ تازە ناکرێتەوە.',
-'wrong_wfQuery_params' => 'پارامێتری ھەڵە بۆ wfQuery()<br />
-کردار: $1<br />
-داواکاری: $2',
 'viewsource' => 'سەرچاوەکەی ببینە',
 'viewsource-title' => 'سەرچاوەی $1 ببینە',
 'actionthrottled' => 'چالاکی پێشی پێ گیرا',
@@ -872,8 +866,8 @@ $2
 ئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.",
 'editing' => 'دەستکاریکردنی $1',
 'creating' => 'دروستکردنی $1',
-'editingsection' => 'دەستکاریکردنی: $1 (بەش)',
-'editingcomment' => 'دەستکاریکردنی $1 (بەشی  نوێ)',
+'editingsection' => 'دەستکاریکردنی $1 (بەش)',
+'editingcomment' => 'دەستکاریکردنی $1 (بەشی نوێ)',
 'editconflict' => 'کێشەی دەستکاری: $1',
 'explainconflict' => "کەسێکی تر ئەم پەڕەیە گۆڕیوە لەو کاتەوە تۆ دەستکاریکردنیت دەستپێکردووە.
 بەشی سەرەوەی دەق، شێوازی ئێستای پەڕەکە لە خۆ ئەگرێت.
@@ -1151,12 +1145,8 @@ $1",
 # Search results
 'searchresults' => 'ئاکامەکانی گەڕان',
 'searchresults-title' => 'ئاکامەکانی گەڕان بۆ «$1»',
-'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' => 'هاوتاکانی دەقی لاپەڕە',
 'notextmatches' => 'لە دەقی نووسراوەکان دا نەبینرا',
 'prevn' => '{{PLURAL:$1|$1}}ی پێشوو',
@@ -1165,12 +1155,10 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|ئەنجامی|ئەنجامی}} دواتر',
 'shown-title' => 'لە هەر پەڕەیەک $1 {{PLURAL:$1|ئەنجام|ئەنجام}} نیشان‌ بدە',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ببینە',
-'searchmenu-legend' => 'ھەڵبژاردەکانی گەڕان',
 'searchmenu-exists' => "'''پەڕەیەک بە ناوی «[[:$1]]» لەم ویکییەدا ھەیە.'''",
 'searchmenu-new' => "'''لەم ویکییەدا پەڕەی « [[:$1]] » دروست بکە!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|گەڕیان لە پەڕەکانی بەم پێشگرەوە]]',
 'searchprofile-articles' => 'پەڕە بە ناوەڕۆکەکان',
-'searchprofile-project' => 'پەڕەکانی یارمەتی و پڕۆژە',
+'searchprofile-project' => 'پەڕەکانی یارمەتی و پرۆژە',
 'searchprofile-images' => 'ڕەنگاڵە',
 'searchprofile-everything' => 'ھەموو شتێک',
 'searchprofile-advanced' => 'پێشکەوتوو',
@@ -1195,16 +1183,12 @@ $1",
 'searchall' => 'ھەموو',
 'showingresults' => "لە خوارەوە {{PLURAL:$1|'''یەک''' ئەنجام|'''$1''' ئەنجام}} نیشان دراوە، بە دەست پێ کردن لە ژمارەی '''$2'''ەوە.",
 'showingresultsnum' => "لە خوارەوە {{PLURAL:$3|'''١''' ئەنجام|'''$3''' ئەنجام}} دەبینن کە لە ئەنجامی ژمارە '''$2'''ەوە دەست{{PLURAL:$3|پێدەکات|پێدەکەن}}",
-'showingresultsheader' => "{{PLURAL:$5|ئەنجامی '''$1''' لە '''$3'''|ئەنجامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
-'nonefound' => "'''تێبینی''': لە حاڵەتی بنچینەیی تەنھا لە ھەندێک لە بۆشایی‌ناوەکان گەڕان دەکرێت.
-وشەی ''all:'' بکە بە پێشگری پرسەکە بۆ گەڕان لە نێو ھەموو کەرستەکان (پەڕەکانی وتووێژ، داڕێژەکان و هتد)، یان بۆشایی‌ناوێکی دڵخواز وەک پێشگر بەکار بێنە.",
+'showingresultsheader' => "{{PLURAL:$5|ئاکامی '''$1''' لە '''$3'''|ئاکامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
 'search-nonefound' => 'ھیچ ئاکامێک کە بە داواکارییەکەت بخوا نەدۆزرایەوە.',
-'powersearch' => 'پێشکەوتوو بگەڕێ',
 'powersearch-legend' => 'گەڕانی پێشکەوتوو',
-'powersearch-ns' => 'گەڕان لە بۆشایی‌ناوەکانی:',
-'powersearch-redir' => 'ڕەوانەکراوەکان لیست بکرێن',
-'powersearch-field' => 'گەڕان بۆ',
-'powersearch-togglelabel' => 'پشکنینی:',
+'powersearch-ns' => 'گەڕان لە بۆشاییی ناوەکانی:',
+'powersearch-redir' => 'ڕەوانەکەرەکان پێرست بکە',
+'powersearch-togglelabel' => 'تاوتوێ بکە:',
 'powersearch-toggleall' => 'ھەموو',
 'powersearch-togglenone' => 'ھیچیان',
 'search-external' => 'گەڕانی دەرەکی',
@@ -1216,13 +1200,11 @@ $1",
 'preferences' => 'ھەڵبژاردەکان',
 'mypreferences' => 'ھەڵبژاردەکان',
 'prefs-edits' => 'ژمارەی گۆڕانکارییەکان:',
-'prefsnologin' => 'لەژوورەوە نیت',
-'prefsnologintext' => 'بۆ دانانی هەڵبژاردەکانی بەکارهێنەر دەبێ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} بچیتە ژوورەوە]</span>.',
 'changepassword' => 'تێپەڕوشە بگۆڕە',
 'prefs-skin' => 'پێستە',
 'skin-preview' => 'پێش بینین',
 'datedefault' => 'ھەڵنەبژێردراو',
-'prefs-beta' => 'کەرەسەکانی بیتا',
+'prefs-beta' => 'تایبەتمەندییەکانی بیتا',
 'prefs-datetime' => 'کات و ڕێکەوت',
 'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
 'prefs-user-pages' => 'پەڕە بەکارھێنەرییەکان',
@@ -1241,7 +1223,6 @@ $1",
 'prefs-email' => 'ھەڵبژاردەکانی ئیمەیل',
 'prefs-rendering' => 'ڕواڵەت',
 'saveprefs' => 'پاشەکەوت',
-'resetprefs' => 'گۆڕانکارییە پاشەکەوت نەکراوەکان پاک بکەرەوە',
 'restoreprefs' => 'ھەموو ڕێکخستنەکان ببەرەوە بۆ باری بنچینەیی',
 'prefs-editing' => 'دەستکاریکردن',
 'rows' => 'ڕیزەکان:',
@@ -1259,7 +1240,6 @@ $1",
 'localtime' => 'کاتی ناوچەیی:',
 'timezoneuseserverdefault' => 'دیفاڵتی ویکی بەکاربێنە ($1)',
 'timezoneuseoffset' => 'دیکە (ناتەواویەکان دیاری بکە)',
-'timezoneoffset' => 'جیاوازی¹:',
 'servertime' => 'کاتی ڕاژەکار:',
 'guesstimezone' => 'لە وێبگەڕەکە بیگرە',
 'timezoneregion-africa' => 'ئافریقا',
@@ -1498,6 +1478,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',
@@ -1893,10 +1874,8 @@ $1',
 'protectedpages' => 'پەڕە پارێزراوەکان',
 'protectedpages-indef' => 'تەنیا پاراستنە بێسنوورەکان',
 'protectedpages-cascade' => 'تەنیا پاراستنە زنجیرییەکان',
-'protectedpagestext' => 'ئەم لاپەڕانە لە گواستنەوە و دەستکاری‌کردن پارێزراون',
 'protectedpagesempty' => 'هیچ لاپەڕەیک ئێستا بەم دیاریکراوانە نەپارێزراوە.',
 'protectedtitles' => 'سەرناوە پارێزراوەکان',
-'protectedtitlestext' => 'ئەم سەردێڕانە لە درووست‌کردن پارێزراون',
 'protectedtitlesempty' => 'ھیچ سەرناوێک بەم سنوورانەوە ئێستا نەپارێزراوە.',
 'listusers' => 'پێرستی بەکارھێنەران',
 'listusers-editsonly' => 'تەنیا ئەو بەکارھێنەرانە نیشان بدە کە دەستکارییان کردووە',
@@ -2319,9 +2298,9 @@ $1',
 'month' => 'لە مانگی (و پێشترەوە):',
 'year' => 'لە ساڵی (و پێشترەوە):',
 
-'sp-contributions-newbies' => 'تەنھا بەشدارییەکانی بەکارھێنەرە تازەکان نیشان بدە',
-'sp-contributions-newbies-sub' => 'لە بەکارھێنەرە تازەکانەوە',
-'sp-contributions-newbies-title' => 'هاوبەشیەکانی بەکارهێنەر بۆ هەژمارە نوێکان',
+'sp-contributions-newbies' => 'تەنیا بەشدارییەکانی ھەژمارە نوێکان نیشان بدە',
+'sp-contributions-newbies-sub' => 'بۆ ھەژمارە نوێکان',
+'sp-contributions-newbies-title' => 'بەشدارییەکانی بەکارھێنەر بۆ ھەژمارە نوێکان',
 'sp-contributions-blocklog' => 'لۆگی بەربەستن',
 'sp-contributions-deleted' => 'بەشدارییە سڕاوەکان',
 'sp-contributions-uploads' => 'بارکردنەکان',
@@ -2530,7 +2509,7 @@ $1',
 'cant-move-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکانی بەکارهێنەر (جیاواز لە ژێرلاپەڕەکان).',
 'cant-move-to-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەیەک بۆ لاپەڕەی بەکارهێنەر (غەیری بۆ ژێرلاپەڕەی بەکارهێنەر).',
 'newtitle' => 'بۆ ناوی نوێی:',
-'move-watch' => 'ئەم پەڕەیە بخە ژێر چاودێری',
+'move-watch' => 'پەڕەی سەرچاوە و مەبەست بخە ژێر چاودێری',
 'movepagebtn' => 'ئەم پەڕەیە بگوازەوە',
 'pagemovedsub' => 'گواستنەوە بە سەرکەوتوویی جێبەجێ کرا',
 'movepage-moved' => "'''«$1» گوازرایەوە بۆ «$2»'''",
@@ -2810,6 +2789,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' => 'زانیاری',
@@ -3173,10 +3153,6 @@ $1',
 'exif-urgency-low' => 'کەم ($1)',
 'exif-urgency-high' => 'زۆر ($1)',
 
-# External editor support
-'edit-externally' => 'دەستکاریی ئەم پەڕەیە بکە بە بەکارھێنانی پڕۆگرامێکی دەرەکی',
-'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [https://www.mediawiki.org/wiki/Manual:External_editors  ڕێنماییەکانی دامەزراندن] بکە)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ھەموو',
 'namespacesall' => 'ھەموو',
@@ -3408,8 +3384,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'پەڕە تایبەتەکان',
-'specialpages-note' => '----
-* پەڕە تایبەتە ئاسایییەکان.
+'specialpages-note' => '* پەڕە تایبەتە ئاسایییەکان.
 * <span class="mw-specialpagerestricted">پەڕە تایبەتە بەرگری‌لێکراوەکان.</span>',
 'specialpages-group-maintenance' => 'ڕاپۆرتەکانی چاکسازی',
 'specialpages-group-other' => 'پەڕە تایبەتەکانی دیکە',
@@ -3448,6 +3423,8 @@ $5
 'tags-display-header' => 'دیمەن لەسەر لیستەکانی گۆڕان',
 'tags-description-header' => 'پێناسەی تەواوی مەبەست',
 'tags-hitcount-header' => 'گۆڕانکاریە تاگ‌کراوەکان',
+'tags-active-yes' => 'بەڵێ',
+'tags-active-no' => 'نا',
 'tags-edit' => 'دەستکاری',
 'tags-hitcount' => '$1 {{PLURAL:$1|گۆڕان|گۆڕانکاری}}',
 
@@ -3480,6 +3457,8 @@ $5
 'htmlform-submit' => 'ناردن',
 'htmlform-reset' => 'پووچەڵکردنەوەی دەستکارییەکان',
 'htmlform-selectorother-other' => 'دیکە',
+'htmlform-no' => 'نا',
+'htmlform-yes' => 'بەڵێ',
 
 # New logging system
 'logentry-delete-delete' => '$1 پەڕەی $3ی {{GENDER:$2|سڕییەوە}}',
@@ -3540,4 +3519,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|سەدە|سەدە}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ھەزارە|ھەزارە}}',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'باشە',
+
 );
index b86f919..fb442d9 100644 (file)
@@ -155,7 +155,6 @@ $messages = array(
 'qbedit' => 'Ilisan',
 'qbpageoptions' => 'Mini nga pahina',
 'qbmyoptions' => 'Akon mga pahina',
-'qbspecialpages' => 'Pinasahi nga mga pahina',
 'faq' => 'Mga perme napamangkot ("FAQ")',
 'faqpage' => "Project:Mga perme napamangkot (''FAQ'')",
 
@@ -270,8 +269,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',
@@ -361,9 +358,6 @@ Pwede nga naga-unod mini sang isa ukon madamo pa nga mga karakter nga indi pwede
 'perfcachedts' => 'Nakacache ang gasunod nga datos, kag nagligad nga ginsapanahon sang $1. {{PLURAL:$4|ang|$4 ang}} pinakamataas nga bakante nga cache.',
 'querypage-no-updates' => 'Ginbawalan yanda ang mga update sa mini nga pahina .
 Ang data diya wala napreskuhan sang aktwal.',
-'wrong_wfQuery_params' => 'Sala nga mga parametro sa wfQuery()<br />
-Pulos: $1<br />
-Pamangkot: $2',
 'viewsource' => 'Tan-awon ang ginhalinan',
 'viewsource-title' => 'Tan-awon ang ginhalinan para sa $1',
 'actionthrottled' => 'Ginpunggan ang ulubrahon',
@@ -541,10 +535,6 @@ Indi pag-ilakip ang pila ka mga suleras.',
 # Search results
 'searchresults' => 'Resulta sang pagpangita',
 'searchresults-title' => 'Resulta sang pagpangita para sa "$1"',
-'searchresulttext' => 'Para sa madamu pa nga impormasyon parti sa pagpangita {{SITENAME}}, lantawa ang [[{{MediaWiki:Helppage}}|{{int:bulig}}]].',
-'searchsubtitle' => 'Nagpangita ka para \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanan nga pahina gasugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanan nga pahina nga naga tabid kay "$1"]])',
-'searchsubtitleinvalid' => "Ginapangita mo ang '''$1'''",
-'notitlematches' => 'Wala sang pareho nga titulo sang pahina',
 'notextmatches' => 'Wala sang pahina sang teksto nga pareho',
 'prevn' => 'antes {{PLURAL:$1|$1}}',
 'nextn' => 'dason {{PLURAL:$1|$1}}',
@@ -572,14 +562,10 @@ Indi pag-ilakip ang pila ka mga suleras.',
 'search-interwiki-more' => '(mas damu pa)',
 'searchall' => 'tanan',
 'showingresultsheader' => "{{PLURAL:$5|Resulta nga '''$1''' sang '''$3'''|Mga resulta nga '''$1 - $2''' sang '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ang ginapangita depende sa gintakda.
-Tistingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang tanan nga unod (dala na dira ang pahina pag-istoryahanay, templeyts, etc), ukon gamita amg imo nanamian nga ngalan-espasyo bilang prefiks.",
 'search-nonefound' => 'Wala sang mga resulta nga nagatugma sa pamangkot/pagpamangkot.',
-'powersearch' => 'Abanse nga pagpangita',
 'powersearch-legend' => 'Abanse nga pagpangita',
 'powersearch-ns' => 'Magpangita sa mga espasyo sang pangalan:',
 'powersearch-redir' => 'Lista sang mga gindirekta liwat',
-'powersearch-field' => 'Pangita-on ang',
 
 # Preferences page
 'preferences' => 'Mga ginapalabi',
@@ -951,10 +937,6 @@ Ang iban ay pagataguon sang default.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Islan ang mini nga file gamit ang panluwas nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [https://www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tanan',
 'namespacesall' => 'tanan',
index b6ac4ee..ba91b35 100644 (file)
@@ -249,7 +249,6 @@ $messages = array(
 'qbedit' => 'Денъиштир',
 'qbpageoptions' => 'Бу саифе',
 'qbmyoptions' => 'Саифелерим',
-'qbspecialpages' => 'Махсус саифелер',
 'faq' => 'Сыкъ берильген суаллер',
 'faqpage' => 'Project:Сыкъ берильген суаллер',
 
@@ -361,8 +360,6 @@ $1',
 'ok' => 'Ок',
 'retrievedfrom' => 'Менба – "$1"',
 'youhavenewmessages' => 'Янъы $1 бар ($2).',
-'newmessageslink' => 'беянатынъыз',
-'newmessagesdifflink' => 'музакере саифенъизнинъ сонъки денъиштирильмеси',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
 'youhavenewmessagesmanyusers' => 'Бир къач къулланыджыдан $1 бар. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|янъы беянатынъыз|янъы беянатларынъыз}}',
@@ -455,9 +452,6 @@ $1',
 'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
 'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
 'querypage-no-updates' => 'Бу саифени денъиштирмеге шимди изин ёкъ. Бу малюмат аман янъартылмайджакъ.',
-'wrong_wfQuery_params' => 'wfQuery() функциясы ичюн изинсиз параметрлер<br />
-Функция: $1<br />
-Соратма: $2',
 'viewsource' => 'менба кодуны косьтер',
 'viewsource-title' => '$1 саифесининъ менба коду',
 'actionthrottled' => 'Арекет токъталды',
@@ -819,12 +813,8 @@ $3 мына бу себепни бильдирди: ''$2''",
 # Search results
 'searchresults' => 'Къыдырув нетиджелери',
 'searchresults-title' => '«$1» ичюн къыдырув нетиджелери',
-'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' => 'Саифе метни бир келе',
 'notextmatches' => 'Ич бир саифеде тапыламады',
 'prevn' => 'эвельки {{PLURAL:$1|$1}}',
@@ -833,10 +823,8 @@ $3 мына бу себепни бильдирди: ''$2''",
 'nextn-title' => 'Сонъраки $1 {{PLURAL:$1|нетидже|нетидже}}',
 'shown-title' => 'Саифе башына $1 {{PLURAL:$1|нетидже|нетидже}} косьтер',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Къыдырув сазламалары',
 'searchmenu-exists' => "'''Бу викиде \"[[:\$1]]\" адлы бир саифе бар'''",
 'searchmenu-new' => "'''Бу викиде \"[[:\$1]]\" саифесини ярат!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префиксли саифелерни косьтер]]',
 'searchprofile-articles' => 'Малюмат саифелери',
 'searchprofile-project' => 'Ярдым ве лейха саифелери',
 'searchprofile-images' => 'Мультимедиа',
@@ -862,13 +850,10 @@ $3 мына бу себепни бильдирди: ''$2''",
 'searchall' => 'эписи',
 'showingresults' => "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|'''1''' нетидже|'''$1''' нетидже}} булуна.",
 'showingresultsnum' => "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|'''1''' нетидже|'''$3''' нетидже}} булуна.",
-'nonefound' => "'''Ихтар.''' Адийджесине къыдырув бутюн исим фезаларында япылмай. Бутюн исим фезаларында (бу джумледен къулланыджылар субетлери, шаблонлар ве иляхре) къыдырмакъ ичюн ''all:'' языны къулланынъыз, муайен бир исим фезасында къыдырмакъ ичюн исе ''ад:'' форматында онынъ адыны язынъыз.",
 'search-nonefound' => 'Соратманен эшлешкен бир нетидже ёкъ.',
-'powersearch' => 'Къыдыр',
 'powersearch-legend' => 'Тафсилятлы къыдырув',
 'powersearch-ns' => 'Бу исим фезаларында къыдыр:',
 'powersearch-redir' => 'Ёллама саифелерини де косьтер',
-'powersearch-field' => 'Къыдыр:',
 'powersearch-togglelabel' => 'Сайла:',
 'powersearch-toggleall' => 'Эписи',
 'powersearch-togglenone' => 'Ич бири',
@@ -879,8 +864,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'preferences' => 'Сазламалар',
 'mypreferences' => 'Сазламалар',
 'prefs-edits' => 'Денъиштирмелер сайысы:',
-'prefsnologin' => 'Отурым ачмадынъыз',
-'prefsnologintext' => 'Шахсий сазламаларынъызны денъиштирмек ичюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} отурым ачмакъ]</span> керексинъиз.',
 'changepassword' => 'Пароль денъиштир',
 'prefs-skin' => 'Ресимлеме',
 'skin-preview' => 'Бакъып чыкъув',
@@ -899,7 +882,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'prefs-email' => 'E-mail сазламалары',
 'prefs-rendering' => 'Корюниш',
 'saveprefs' => 'Сакъла',
-'resetprefs' => 'Сакъланмагъан сазламаларны ильк алына кетир',
 'restoreprefs' => 'Бутюн ог бельгиленген сазламаларны къайтар',
 'prefs-editing' => 'Саифелерни денъиштирюв',
 'rows' => 'Сатыр',
@@ -915,7 +897,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'localtime' => 'Ерли вакъыт:',
 'timezoneuseserverdefault' => 'Сервернинъ сазламалары къулланылсын ($1)',
 'timezoneuseoffset' => 'Башкъа (фракъны кирсетинъиз)',
-'timezoneoffset' => 'Саат фаркъы¹:',
 'servertime' => 'Сервернинъ сааты:',
 'guesstimezone' => 'Браузеринъиз сизинъ еринъизге коре толдурсын',
 'timezoneregion-africa' => 'Африка',
@@ -1027,6 +1008,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 тарихындан берли япылгъан денъиштирмелерни косьтер',
@@ -1296,7 +1278,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'deadendpages' => 'Башкъа саифелерге багълантысы олмагъан саифелер',
 'deadendpagestext' => 'Бу {{SITENAME}} башкъа саифелерине багълантысы олмагъан саифелердир.',
 'protectedpages' => 'Къорчалангъан саифелер',
-'protectedpagestext' => 'Бу саифелернинъ денъиштирювге къаршы къорчалавы бар',
 'protectedtitles' => 'Ясакълангъан серлевалар',
 'listusers' => 'Къулланыджылар джедвели',
 'listusers-editsonly' => 'Тек энъ азындан бир денъиштирме япкъан къулланыджыларны косьтер',
@@ -1915,10 +1896,6 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 'exif-subjectdistancerange-0' => 'Билинмей',
 'exif-subjectdistancerange-1' => 'Макро',
 
-# External editor support
-'edit-externally' => 'Файл узеринде компьютеринъизде булунгъан программалар иле денъишикликлер япынъыз',
-'edit-externally-help' => '(Даа зияде малюмат ичюн [https://www.mediawiki.org/wiki/Manual:External_editors бу саифеге] (Инглиздже) бакъып оласынъыз.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'эписини',
 'namespacesall' => 'Эписи',
index 8d0f24d..399b289 100644 (file)
@@ -243,7 +243,6 @@ $messages = array(
 'qbedit' => 'Deñiştir',
 'qbpageoptions' => 'Bu saife',
 'qbmyoptions' => 'Saifelerim',
-'qbspecialpages' => 'Mahsus saifeler',
 'faq' => 'Sıq berilgen sualler',
 'faqpage' => 'Project:Sıq berilgen sualler',
 
@@ -356,8 +355,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}}',
@@ -450,9 +447,6 @@ Lütfen, URL yazıp bundan [[Special:ListUsers/sysop|idarecige]] haber beriñiz.
 'perfcached' => 'Aşağıdaki malümat keşten alındı ve eskirgen ola bilir! Keşte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.',
 'perfcachedts' => 'Aşağıdaki malümat keşten alındı, keşniñ soñki yañartılğan vaqtı: $1. Keşte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.',
 'querypage-no-updates' => 'Bu saifeni deñiştirmege şimdi izin yoq. Bu malümat aman yañartılmaycaq.',
-'wrong_wfQuery_params' => 'wrong_wfQuery_params - wfQuery() funktsiyası içün izinsiz parametrler<br />
-Funktsiya: $1<br />
-Soratma: $2',
 'viewsource' => 'menba kodunı köster',
 'viewsource-title' => '$1 saifesiniñ menba kodu',
 'actionthrottled' => 'Areket toqtaldı',
@@ -815,12 +809,8 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 # Search results
 'searchresults' => 'Qıdıruv neticeleri',
 'searchresults-title' => '"$1" içün qıdıruv neticeleri',
-'searchresulttext' => '{{SITENAME}} içinde qıdıruv yapmaq hususında malümat almaq içün [[{{MediaWiki:Helppage}}|{{int:help}}]] saifesine baqıp olasıñız.',
-'searchsubtitle' => 'Qıdırılğan: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" ile başlanğan bütün saifeler]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" saifesine bağlantı olğan bütün saifeler]])',
-'searchsubtitleinvalid' => "Siz bunı qıdırdıñız '''$1'''",
 'toomanymatches' => 'Pek çoq eşleşme çıqtı, lütfen, başqa bir soratma saylañız',
 'titlematches' => 'Saife adı bir kele',
-'notitlematches' => 'İç bir serlevada tapılamadı',
 'textmatches' => 'Saife metni bir kele',
 'notextmatches' => 'İç bir saifede tapılamadı',
 'prevn' => 'evelki {{PLURAL:$1|$1}}',
@@ -829,10 +819,8 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'nextn-title' => 'Soñraki $1 {{PLURAL:$1|netice|netice}}',
 'shown-title' => 'Saife başına $1 {{PLURAL:$1|netice|netice}} köster',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Qıdıruv sazlamaları',
 'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adlı bir saife bar'''",
 'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" saifesini yarat!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu prefiksli saifelerni köster]]',
 'searchprofile-articles' => 'Malümat saifeleri',
 'searchprofile-project' => 'Yardım ve leyha saifeleri',
 'searchprofile-images' => 'Multimedia',
@@ -858,13 +846,10 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'searchall' => 'episi',
 'showingresults' => "Aşağıda №&nbsp;<strong>$2</strong>den başlap {{PLURAL:$1|'''1''' netice|'''$1''' netice}} buluna.",
 'showingresultsnum' => "Aşağıda №&nbsp;'''$2'''den başlap {{PLURAL:$3|'''1''' netice|'''$3''' netice}} buluna.",
-'nonefound' => "'''İhtar.''' Adiycesine qıdıruv bütün isim fezalarında yapılmay. Bütün isim fezalarında (bu cümleden qullanıcılar subetleri, şablonlar ve ilâhre) qıdırmaq içün ''all:'' yazını qullanıñız, muayyen bir isim fezasında qıdırmaq içün ise ''ad:'' formatında onıñ adını yazıñız.",
 'search-nonefound' => 'Soratmanen eşleşken bir netice yoq.',
-'powersearch' => 'Qıdır',
 'powersearch-legend' => 'Tafsilâtlı qıdıruv',
 'powersearch-ns' => 'Bu isim fezalarında qıdır:',
 'powersearch-redir' => 'Yollama saifelerini de köster',
-'powersearch-field' => 'Qıdır:',
 'powersearch-togglelabel' => 'Sayla:',
 'powersearch-toggleall' => 'Episi',
 'powersearch-togglenone' => 'İç biri',
@@ -875,8 +860,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',
-'prefsnologintext' => 'Şahsiy sazlamalarıñıznı deñiştirmek içün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} oturım açmaq]</span> kereksiñiz.',
 'changepassword' => 'Parol deñiştir',
 'prefs-skin' => 'Resimleme',
 'skin-preview' => 'Baqıp çıquv',
@@ -895,7 +878,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'prefs-email' => 'E-mail sazlamaları',
 'prefs-rendering' => 'Körüniş',
 'saveprefs' => 'Saqla',
-'resetprefs' => 'Saqlanmağan sazlamalarnı ilk alına ketir',
 'restoreprefs' => 'Bütün ög belgilengen sazlamalarnı qaytar',
 'prefs-editing' => 'Saifelerni deñiştirüv',
 'rows' => 'Satır',
@@ -911,7 +893,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'localtime' => 'Yerli vaqıt:',
 'timezoneuseserverdefault' => 'Serverniñ sazlamaları qullanılsın ($1)',
 'timezoneuseoffset' => 'Başqa (farqnı kirsetiñiz)',
-'timezoneoffset' => 'Saat farqı¹:',
 'servertime' => 'Serverniñ saatı:',
 'guesstimezone' => 'Brauzeriñiz siziñ yeriñizge köre toldursın',
 'timezoneregion-africa' => 'Afrika',
@@ -1023,6 +1004,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',
@@ -1291,7 +1273,6 @@ Er satırda birinci ve ekinci yollamağa bağlantılar da, ekinci yollamanıñ m
 'deadendpages' => 'Başqa saifelerge bağlantısı olmağan saifeler',
 'deadendpagestext' => 'Bu {{SITENAME}} başqa saifelerine bağlantısı olmağan saifelerdir.',
 'protectedpages' => 'Qorçalanğan saifeler',
-'protectedpagestext' => 'Bu saifelerniñ deñiştirüvge qarşı qorçalavı bar',
 'protectedtitles' => 'Yasaqlanğan serlevalar',
 'listusers' => 'Qullanıcılar cedveli',
 'listusers-editsonly' => 'Tek eñ azından bir deñiştirme yapqan qullanıcılarnı köster',
@@ -1909,10 +1890,6 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
 'exif-subjectdistancerange-0' => 'Bilinmey',
 'exif-subjectdistancerange-1' => 'Makro',
 
-# External editor support
-'edit-externally' => 'Fayl üzerinde kompyuteriñizde bulunğan programmalar ile deñişiklikler yapıñız',
-'edit-externally-help' => '(Daa ziyade malümat içün [https://www.mediawiki.org/wiki/Manual:External_editors bu saifege] (İnglizce)  baqıp olasıñız.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'episini',
 'namespacesall' => 'Episi',
index 4757785..6b91b1f 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' ),
 );
 
 /**
@@ -520,7 +521,6 @@ $messages = array(
 'qbedit' => 'Editování',
 'qbpageoptions' => 'Tato stránka',
 'qbmyoptions' => 'Moje stránky',
-'qbspecialpages' => 'Speciální stránky',
 'faq' => 'Často kladené otázky',
 'faqpage' => 'Project:Často kladené otázky',
 
@@ -637,12 +637,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',
@@ -737,9 +735,6 @@ Možná už byl(a) smazán(a) někým jiným.',
 'perfcached' => 'Následující data jsou z cache a nemusí být plně aktuální. Cache může obsahovat maximálně {{PLURAL:$1|jeden výsledek|$1 výsledky|$1 výsledků}}.',
 'perfcachedts' => 'Následující data jsou z cache, která byla naposledy aktualizována $1. Cache může obsahovat maximálně {{PLURAL:$4|jeden výsledek|$4 výsledky|$4 výsledků}}.',
 'querypage-no-updates' => 'Aktualizace této stránky je vypnuta. Data nyní nebudou obnovována.',
-'wrong_wfQuery_params' => 'Nesprávné parametry do wfQuery()<br />
-Funkce: $1<br />
-Dotaz: $2',
 'viewsource' => 'Zobrazit zdroj',
 'viewsource-title' => 'Zobrazení zdroje stránky $1',
 'actionthrottled' => 'Akce byla pozastavena',
@@ -769,7 +764,8 @@ Správce serveru, který úložiště zamkl, poskytl toto zdůvodnění: „''$3
 'invalidtitle-knownnamespace' => 'Neplatný název se jmenným prostorem „$2“ a textem „$3“',
 'invalidtitle-unknownnamespace' => 'Neplatný název s neznámým číslem jmenného prostoru $1 a textem „$2“',
 'exception-nologin' => 'Nejste přihlášen(a)',
-'exception-nologin-text' => 'Tato stránka nebo akce vyžaduje, abyste byli na této wiki přihlášeni.',
+'exception-nologin-text' => 'Pro přístup na tuto stránku nebo k této akci se prosím [[Special:Userlogin|přihlaste]].',
+'exception-nologin-text-manual' => 'Pro přístup na tuto stránku nebo k této akci se musíte $1.',
 
 # Virus scanner
 'virus-badscanner' => "Špatná konfigurace: neznámý antivirový program: ''$1''",
@@ -1317,7 +1313,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',
@@ -1417,12 +1413,8 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => 'Výsledky hledání',
 'searchresults-title' => 'Výsledky hledání „$1“',
-'searchresulttext' => 'Pro více informací o tom, jak hledat na {{grammar:6sg|{{SITENAME}}}}, se podívejte do [[{{MediaWiki:Helppage}}|nápovědy]].',
-'searchsubtitle' => "Hledáno '''[[:$1]]''' ([[Special:Prefixindex/$1|seznam stránek začínajících „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|seznam stránek odkazujících na „$1“]])",
-'searchsubtitleinvalid' => 'Hledáno „$1“',
 'toomanymatches' => 'Požadavku odpovídá příliš mnoho záznamů, zkuste jiný dotaz.',
 'titlematches' => 'Stránky s odpovídajícím názvem',
-'notitlematches' => 'Žádné stránky názvem neodpovídají.',
 'textmatches' => 'Stránky s odpovídajícím textem',
 'notextmatches' => 'Žádné stránky textem neodpovídají.',
 'prevn' => '$1 {{PLURAL:$1|předchozí|předchozí|předchozích}}',
@@ -1431,10 +1423,8 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => '{{PLURAL:$1|Následující výsledek|Následující $1 výsledky|Následujících $1 výsledků}}',
 'shown-title' => 'Zobrazit $1 {{PLURAL:$1|výsledek|výsledky|výsledků}} na stránku',
 'viewprevnext' => 'Ukázat ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Možnosti hledání',
 'searchmenu-exists' => "'''Na této wiki existuje stránka nazvaná „[[:$1]]“.'''",
 'searchmenu-new' => "'''Vytvořte na této wiki stránku „[[:$1]]“!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zobrazit stránky, jejichž název začíná „$1“]]',
 'searchprofile-articles' => 'Články',
 'searchprofile-project' => 'Nápověda a projektové stránky',
 'searchprofile-images' => 'Multimédia',
@@ -1462,14 +1452,10 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'showingresults' => 'Zobrazuji <strong>$1</strong> {{PLURAL:$1|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.',
 'showingresultsnum' => 'Zobrazuji <strong>$3</strong> {{PLURAL:$3|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.',
 'showingresultsheader' => "{{PLURAL:$5|Výsledek '''$1''' z '''$3'''|Výsledky '''$1–$2''' z '''$3'''}} pro '''$4'''",
-'nonefound' => "'''Poznámka''': Standardně se hledá jen v některých jmenných prostorech.
-Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně diskusí, šablon atd.), případně místo toho napište název požadovaného jmenného prostoru.",
 'search-nonefound' => 'Na váš dotaz nebyly nalezeny žádné výsledky.',
-'powersearch' => 'Hledání',
 'powersearch-legend' => 'Rozšířené vyhledávání',
 'powersearch-ns' => 'Hledat ve jmenných prostorech:',
 'powersearch-redir' => 'Vypsat přesměrování',
-'powersearch-field' => 'Vyhledat',
 'powersearch-togglelabel' => 'Zaškrtnout:',
 'powersearch-toggleall' => 'Všechno',
 'powersearch-togglenone' => 'Nic',
@@ -1481,8 +1467,7 @@ 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)!',
-'prefsnologintext' => 'Pokud chcete měnit uživatelská nastavení, musíte se <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} přihlásit]</span>.',
+'prefsnologintext2' => 'Pro změnu uživatelských nastavení se musíte $1.',
 'changepassword' => 'Změna hesla',
 'prefs-skin' => 'Vzhled',
 'skin-preview' => 'Náhled',
@@ -1506,7 +1491,6 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'prefs-email' => 'Nastavení e-mailu',
 'prefs-rendering' => 'Vzhled',
 'saveprefs' => 'Uložit nastavení',
-'resetprefs' => 'Vrátit původní nastavení',
 'restoreprefs' => 'Obnovit všechna výchozí nastavení (ve všech sekcích)',
 'prefs-editing' => 'Editace',
 'rows' => 'Řádky',
@@ -1521,12 +1505,11 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'prefs-help-recentchangescount' => 'Týká se posledních změn, historie stránek a protokolovacích záznamů.',
 'prefs-help-watchlist-token2' => 'Toto je tajný klíč k webovému kanálu vašich sledovaných stránek. Kdokoli, kdo bude tento klíč znát, bude moci váš seznam sledovaných stránek číst, takže ho nešiřte.
 [[Special:ResetTokens|Kliknutím sem ho můžete reinicializovat.]]',
-'savedprefs' => 'Vaše nastavení bylo uloženo.',
+'savedprefs' => 'Nastavení byla uložena.',
 'timezonelegend' => 'Časové pásmo:',
 'localtime' => 'Místní čas:',
 'timezoneuseserverdefault' => 'Použít časové pásmo wiki ($1)',
 'timezoneuseoffset' => 'Jiné (zadejte posun)',
-'timezoneoffset' => 'Posun¹:',
 'servertime' => 'Čas na serveru:',
 'guesstimezone' => 'Načíst z prohlížeče',
 'timezoneregion-africa' => 'Afrika',
@@ -1781,6 +1764,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',
@@ -2275,10 +2261,8 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
 'protectedpages' => 'Zamčené stránky',
 'protectedpages-indef' => 'Pouze zámky na neurčito',
 'protectedpages-cascade' => 'Pouze kaskádové zámky',
-'protectedpagestext' => 'Následující stránky jsou zamčeny nebo polozamčeny pro editaci nebo přesun:',
 'protectedpagesempty' => 'Žádná stránka není zamčena s těmito parametry.',
 'protectedtitles' => 'Zamčené názvy stránek',
-'protectedtitlestext' => 'Následující názvy jsou zamčeny a nelze na nich zakládat stránky',
 'protectedtitlesempty' => 'S těmito parametry nejsou zamčeny žádné názvy.',
 'listusers' => 'Uživatelé',
 'listusers-editsonly' => 'Zobrazit pouze uživatele s editacemi',
@@ -2503,9 +2487,9 @@ Uživatele, který změnu provedl, můžete kontaktovat:
 e-mailem: $PAGEEDITOR_EMAIL
 na wiki: $PAGEEDITOR_WIKI
 
-Dokud stránku nenavštívíte, nebudou vám zasílána další oznámení o změnách této stránky. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
+Do doby, než stránku navštívíte jako přihlášený uživatel, vám další oznámení k této stránce nebudou zasílána. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
 
-       S pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}
+S pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}
 
 --
 Změnit nastavení e-mailových oznámení můžete na
@@ -3778,10 +3762,6 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
 'exif-urgency-high' => 'Vysoká ($1)',
 'exif-urgency-other' => 'Uživatelsky definovaná ($1)',
 
-# External editor support
-'edit-externally' => 'Editovat tento soubor v externím programu',
-'edit-externally-help' => '(Více informací najdete v [https://www.mediawiki.org/wiki/Manual:External_editors nápovědě pro nastavení].)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'všechny',
 'namespacesall' => 'všechny',
@@ -4070,8 +4050,8 @@ MediaWiki je distribuována v naději, že bude užitečná, avšak BEZ JAKÉKOL
 
 # Special:SpecialPages
 'specialpages' => 'Speciální stránky',
-'specialpages-note' => '----
-* Normální speciální stránky
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normální speciální stránky
 * <span class="mw-specialpagerestricted">Speciální stránky s&nbsp;vyhrazeným přístupem</span>',
 'specialpages-group-maintenance' => 'Údržba',
 'specialpages-group-other' => 'Ostatní',
@@ -4285,4 +4265,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..134624d 100644 (file)
@@ -175,7 +175,6 @@ $messages = array(
 'qbedit' => 'Edicëjô',
 'qbpageoptions' => 'Òptacëje starnë',
 'qbmyoptions' => 'Mòje òptacëje',
-'qbspecialpages' => 'Specjalné starnë',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -278,8 +277,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ô',
@@ -554,10 +551,6 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
 # Search results
 'searchresults' => 'Skùtczi szëkbë',
 'searchresults-title' => 'Skùtczi szëkbë za "$1"',
-'searchresulttext' => 'Dlô dobëcô wicy wëdowiédzë ò szëkbie na {{GRAMMAR:D.lp|{{SITENAME}}}}, zdrzë na [[{{MediaWiki:Helppage}}|starnë pòmòcë]].',
-'searchsubtitle' => 'Skùtczi szëkbë za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|starnë naczënającé sã òd "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|starnë, chtërné lënkùją do "$1"]])',
-'searchsubtitleinvalid' => "Dlô szëkbë za '''$1'''",
-'notitlematches' => 'Ni nalazłé w titlach',
 'notextmatches' => 'Felënk zamkłosë starnë',
 'prevn' => 'wczasniészé {{PLURAL:$1|$1}}',
 'nextn' => 'nôslédné {{PLURAL:$1|$1}}',
@@ -571,19 +564,14 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
 'search-interwiki-default' => 'Skùtczi dlô $1:',
 'search-interwiki-more' => '(wicy)',
 'searchall' => 'wszëtczé',
-'nonefound' => "'''Bôczënk''':Dlô szëkbë są domëslno przistãpné blós niejedné rumë mionów.
-Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów (zamëkający w se starnë diskùsëji, szablónë, ëtp), abò ùżëje przëdôwka wëbrónegò ruma mionów.",
-'powersearch' => 'Szëkba',
 'powersearch-legend' => 'Awansowónô szëkba',
 'powersearch-ns' => 'Szëkba w rumach mionów:',
 'powersearch-redir' => 'Lësta przeczerowaniów',
-'powersearch-field' => 'Szëkba za',
 
 # Preferences page
 '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',
@@ -596,7 +584,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
 'prefs-watchlist-edits' => 'Maksymalnô lëczba edicëjów do pòkazaniô w rozszérzoné lësce ùzérónëch artiklów:',
 'prefs-misc' => 'Jine',
 'saveprefs' => 'Zapiszë',
-'resetprefs' => 'Wëczëszczë niezapisóné zmianë',
 'prefs-editing' => 'Edicëjô',
 'rows' => 'Régów:',
 'columns' => 'Kòlumnów:',
@@ -610,7 +597,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
 'localtime' => 'Môlowi czas:',
 'timezoneuseserverdefault' => 'Ùżëjë domëslnégò czasu serwera',
 'timezoneuseoffset' => 'Jinô (specyfikùjë różnicã)',
-'timezoneoffset' => 'Różnica¹:',
 'servertime' => 'Czas serwera:',
 'guesstimezone' => 'Wezmi z przezérnika',
 'timezoneregion-africa' => 'Afrika',
@@ -1222,10 +1208,6 @@ Jinszé pòla bãdą domëslno zataconé.
 
 'exif-iimcategory-spo' => 'Szpòrt',
 
-# External editor support
-'edit-externally' => 'Editëjë nen lopk brëkùjąc bùtnowi aplikacëji',
-'edit-externally-help' => '(Zdrzë na [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] dlô dobëcô wicy wëdowiédzë).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wszëtczé',
 'namespacesall' => 'wszëtczé',
index c954f6c..d3a7bc1 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ)
+/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -194,7 +194,6 @@ $messages = array(
 'qbedit' => 'исправи',
 'qbpageoptions' => 'сꙗ страница',
 'qbmyoptions' => 'моꙗ страницѧ',
-'qbspecialpages' => 'нарочьнꙑ страницѧ',
 'faq' => 'чѧстꙑ въпроси',
 'faqpage' => 'Project:Чѧстꙑ въпроси',
 
@@ -269,10 +268,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 +428,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' => 'поничьжєна їсторїꙗ',
@@ -464,7 +461,6 @@ $messages = array(
 'search-interwiki-more' => '(вѧщє)',
 'searchall' => 'вьсꙗ',
 'search-nonefound' => 'исканиѥ сꙗ слова ничєсо жє нє авило ѥстъ',
-'powersearch' => 'вѧщєѥ исканиѥ',
 'powersearch-redir' => 'прѣнаправлѥниꙗ',
 
 # Preferences page
@@ -925,10 +921,6 @@ $messages = array(
 'exif-iimcategory-sci' => 'оучєниѥ и тєхнологїꙗ',
 'exif-iimcategory-spo' => 'аѳлитїка',
 
-# External editor support
-'edit-externally' => 'дѣла иꙁмѣнѥниѥ вънѣщьниимь орѫдиѥмь',
-'edit-externally-help' => '(ꙁьри [https://www.mediawiki.org/wiki/Manual:External_editors помощь] вѧщєи плирофорїѩ дѣлꙗ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вьсꙗ',
 'namespacesall' => 'вьсꙗ',
index 7a93e72..037556e 100644 (file)
@@ -171,7 +171,6 @@ $messages = array(
 'qbedit' => 'Тӳрлет',
 'qbpageoptions' => 'Страница ĕнерлевĕсем',
 'qbmyoptions' => 'Сирĕн ĕнĕрлевсем',
-'qbspecialpages' => 'Ятарлӑ страницӑсем',
 'faq' => 'ЫйХу',
 'faqpage' => 'Project:ЫйХу',
 
@@ -269,8 +268,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Çăлкуç — «$1»',
 'youhavenewmessages' => 'Сирĕн $1 пур ($2).',
-'newmessageslink' => 'çĕнĕ пĕлтерӳсем',
-'newmessagesdifflink' => 'юлашки улшăну',
 'youhavenewmessagesmulti' => '$1-та çĕнĕ пĕлтерӳсем пур.',
 'editsection' => 'тӳрлет',
 'editold' => 'тӳрлет',
@@ -344,9 +341,6 @@ $1',
 'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. 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' => 'Ку страницăна хальхи вăхăтра улăштарма чарнă. Ку даннăйсене хальхи вăхăтра çĕнетме май çук.',
-'wrong_wfQuery_params' => 'wfQuery() функцине тĕрĕс мар параметрсем панă<br />
-Функци: $1<br />
-Ыйту: $2',
 'viewsource' => 'Курăм',
 'actionthrottled' => 'Хăвăртлăха чакарнă',
 'actionthrottledtext' => 'Спампа кĕрешнине пула ку ĕçе пĕчĕк вăхăт хушшинче ытла нумай тума чарнă. Темиçе минутран тепре туса пăхма пултаратăр.',
@@ -561,21 +555,18 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 
 # Search results
 'searchresults' => 'Тупрăмăр',
-'notitlematches' => 'Статьясен ячĕсем пĕр пек мар',
 'textmatches' => 'Статьясенчи текст пĕрпеклĕхĕ',
 'prevn' => 'малтанхи {{PLURAL:$1|$1}}',
 'nextn' => 'малалли {{PLURAL:$1|$1}}',
 'search-result-size' => '$1 ({{PLURAL:$2|1 сăмах|$2 сăмах}})',
 'showingresults' => 'Аяларах эсир <b>#$2</b> пуçласа кăтартнă <b>$1</b> йĕркене куратăр.',
 'showingresultsheader' => "{{PLURAL:$5|Результат '''$1'''  '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}}  '''$4''' валли",
-'powersearch' => 'Анлă шырав',
 'powersearch-legend' => 'Анлă шырав',
 
 # Preferences page
 'preferences' => 'Ĕнерлевсем',
 'mypreferences' => 'Ман ĕнерлевсем',
 'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
-'prefsnologin' => 'Эсир сайта кĕмен',
 'changepassword' => 'Пароле улăштар',
 'prefs-skin' => 'Ерешленӳ',
 'skin-preview' => 'Малтанхи курăну',
@@ -646,6 +637,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',
@@ -1115,9 +1107,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-k' => 'км/сех',
 
-# External editor support
-'edit-externally' => 'Ку файла тулашри программăна усă курса тӳрлет',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'пурте',
 'namespacesall' => 'пурте',
index 7735496..1d7b532 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' ),
@@ -274,7 +274,6 @@ $messages = array(
 'qbedit' => 'Golygu',
 'qbpageoptions' => 'Y dudalen hon',
 'qbmyoptions' => 'Fy nhudalennau',
-'qbspecialpages' => 'Tudalennau arbennig',
 'faq' => 'Cwestiynau cyffredin',
 'faqpage' => 'Project:Cwestiynau cyffredin',
 
@@ -390,8 +389,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}}',
@@ -492,9 +489,6 @@ Ni roddodd eglurhad.',
 'perfcached' => "Mae'r wybodaeth ganlynol yn gopi cadw; mae'n bosib nad y fersiwn diweddaraf ydyw. Cedwir hyd at {{PLURAL:$1||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$1 chanlyniad|$1 canlyniad}} yn y copi cadw.",
 'perfcachedts' => 'Rhoddwyd y data canlynol ar gadw mewn celc a ddiweddarwyd ddiwethaf am $1. Cedwir hyd at {{PLURAL:$4||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$4 chanlyniad|$4 canlyniad}} yn y celc.',
 'querypage-no-updates' => "Ar hyn o bryd, nid yw'r meddalwedd wedi ei osod i ddiweddaru data'r dudalen hon.",
-'wrong_wfQuery_params' => 'Paramedrau anghywir i wfQuery()<br />
-Ffwythiant: $1<br />
-Gofyniad: $2',
 'viewsource' => 'Dangos côd y dudalen',
 'viewsource-title' => 'Gweld cod y dudalen $1',
 'actionthrottled' => 'Tagwyd y weithred',
@@ -523,7 +517,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''",
@@ -1059,6 +1054,7 @@ Serch hyn, gallwch eu cymharu o hyd; cewch weld y manylion ar y [{{fullurl:{{#Sp
 Fe fydd gweinyddwyr eraill {{SITENAME}} o hyd yn gallu gweld yr hyn a guddiwyd. Fe allant ei ddatguddio trwy ddefnyddio'r dudalen arbennig hon, cyhyd ag nad oes cyfyngiadau ychwanegol wedi eu gosod.",
 'revdelete-confirm' => "Byddwch gystal â chadarnhau eich bod yn bwriadu gwneud hyn, eich bod yn deall yr effaith a gaiff, a'ch bod yn ei wneud yn ôl y [[{{MediaWiki:Policy-url}}|y polisi]].",
 'revdelete-suppress-text' => "'''Dim ond''' yn yr achosion sy'n dilyn y dylech fentro cuddio gwybodaeth:
+* Gwybodaeth a all fod yn enllib
 * Gwybodaeth bersonol anaddas
 *: ''cyfeiriad cartref, rhif ffôn, rhif yswiriant cenedlaethol, ayb.''",
 'revdelete-legend' => 'Gosod cyfyngiadau ar y gallu i weld',
@@ -1161,12 +1157,8 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => "Canlyniadau'r chwiliad",
 'searchresults-title' => 'Canlyniadau chwilio am "$1"',
-'searchresulttext' => 'Am fwy o wybodaeth am chwilio {{SITENAME}}, gwelwch [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Chwiliwyd am \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pob tudalen yn dechrau gyda "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pob tudalen sy\'n cysylltu â "$1"]])',
-'searchsubtitleinvalid' => "Chwiliwyd am '''$1'''",
 'toomanymatches' => "Cafwyd hyd i ormod o enghreifftiau o'r term chwilio; ceisiwch chwilio am derm arall",
 'titlematches' => 'Teitlau erthygl yn cyfateb',
-'notitlematches' => 'Does dim teitl yn cyfateb',
 'textmatches' => 'Testun erthygl yn cyfateb',
 'notextmatches' => 'Does dim testun yn cyfateb',
 'prevn' => '{{PLURAL:$1||yr $1 cynt|y $1 gynt|y $1 chynt|y $1 chynt|y $1 cynt}}',
@@ -1175,10 +1167,8 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => 'Y $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} nesaf',
 'shown-title' => 'Dangos $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} y dudalen',
 'viewprevnext' => 'Dangos ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Dewisiadau chwilio',
 'searchmenu-exists' => "'''Mae tudalen o'r enw \"[[\$1]]\" ar y wici hwn'''",
 'searchmenu-new' => "'''Creu'r dudalen \"[[:\$1]]\" ar y wici hwn!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Chwilio drwy tudalennau gyda'r rhagddodiad hwn]]",
 'searchprofile-articles' => 'Tudalennau pwnc (erthyglau/ffeiliau)',
 'searchprofile-project' => 'Tudalennau Cymorth a Phrosiect',
 'searchprofile-images' => 'Ffeiliau amlgyfrwng',
@@ -1206,13 +1196,10 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'showingresults' => "Yn dangos $1 {{PLURAL:$1|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
 'showingresultsnum' => "Yn dangos $3 {{PLURAL:$3|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5||Canlyniad '''$1''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''}} ar gyfer '''$4'''",
-'nonefound' => "'''Sylwer''': Dim ond rhai parthau sy'n cael eu chwilio'n ddiofyn. Os ydych am chwilio'r holl barthau (gan gynnwys tudalennau sgwrs, nodiadau, ayb) teipiwch ''all:'' o flaen yr enw. Os am chwilio parth arbennig teipiwch ''enw'r parth:'' o flaen yr enw.",
 'search-nonefound' => "Ni chafwyd dim canlyniadau i'r ymholiad.",
-'powersearch' => 'Chwilio',
 'powersearch-legend' => 'Chwiliad uwch',
 'powersearch-ns' => 'Chwilio yn y parthau:',
 'powersearch-redir' => 'Rhestru ailgyfeiriadau',
-'powersearch-field' => 'Chwilier am',
 'powersearch-togglelabel' => 'Dewis:',
 'powersearch-toggleall' => 'Oll',
 'powersearch-togglenone' => 'Dim un',
@@ -1226,8 +1213,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',
-'prefsnologintext' => 'Rhaid i chi <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} fewngofnodi]</span> er mwyn gosod eich dewisiadau defnyddiwr.',
+'prefsnologintext2' => 'Mae angen $1 er mwyn gosod eich dewisiadau personol.',
 'changepassword' => 'Newid y cyfrinair',
 'prefs-skin' => 'Gwedd',
 'skin-preview' => 'Rhagolwg',
@@ -1251,7 +1237,6 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'prefs-email' => 'E-bostio',
 'prefs-rendering' => 'Ymddangosiad',
 'saveprefs' => 'Cadwer y dewisiadau',
-'resetprefs' => "Clirio'r darpar newidiadau",
 'restoreprefs' => 'Adfer yr holl osodiadau diofyn (ymhob adran)',
 'prefs-editing' => 'Golygu',
 'rows' => 'Rhesi:',
@@ -1272,7 +1257,6 @@ Bydd unrhyw un sy'n gwybod hwn yn gallu darllen eich rhestr wylio, felly peidiwc
 'localtime' => 'Amser lleol:',
 'timezoneuseserverdefault' => "Defnyddio'r amser yn ôl y wici ($1)",
 'timezoneuseoffset' => 'Arall (nodwch yr atred)',
-'timezoneoffset' => 'Atred¹:',
 'servertime' => 'Amser y gweinydd:',
 'guesstimezone' => 'Llenwi oddi wrth y porwr',
 'timezoneregion-africa' => 'Affrica',
@@ -1526,6 +1510,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',
@@ -2016,10 +2003,8 @@ Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
 'protectedpages' => 'Tudalennau wedi eu diogelu',
 'protectedpages-indef' => 'A ddiogelwyd yn ddi-derfyn yn unig',
 'protectedpages-cascade' => 'A sgydol-ddiogelwyd yn unig',
-'protectedpagestext' => "Mae'r tudalennau hyn wedi eu diogelu rhag cael eu symud na'u golygu",
 'protectedpagesempty' => "Does dim tudalennau wedi eu diogelu gyda'r paramedrau hyn.",
 'protectedtitles' => 'Teitlau wedi eu diogelu',
-'protectedtitlestext' => "Diogelwyd rhag creu tudalennau gyda'r teitlau hyn",
 'protectedtitlesempty' => "Ar hyn o bryd nid oes unrhyw deitlau wedi eu diogelu a'r paramedrau hyn.",
 'listusers' => 'Rhestr defnyddwyr',
 'listusers-editsonly' => 'Dangos y defnyddwyr hynny sydd wedi golygu rhywbeth yn unig',
@@ -2245,7 +2230,7 @@ Cysylltu â\'r golygydd:
 e-bost: $PAGEEDITOR_EMAIL
 wici: $PAGEEDITOR_WIKI
 
-Os bydd mwy o drin a thrafod ar y dudalen cyn i chi ymweld â hi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr wylio, ar gyfer y tudalennau rydych yn eu gwylio.
+Os bydd mwy o drin a thrafod ar y dudalen cyn i chi ymweld â hi tra eich bod wedi mewngofnodi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr wylio, ar gyfer y tudalennau rydych yn eu gwylio.
 
              Sustem hysbysu {{SITENAME}}
 
@@ -3524,10 +3509,6 @@ Cuddir y meysydd eraill trwy ragosodiad.
 'exif-urgency-high' => 'Uchel ($1)',
 'exif-urgency-other' => 'Blaenoriaeth yn ôl y defnyddiwr ($1)',
 
-# External editor support
-'edit-externally' => 'Golygwch y ffeil gyda rhaglen allanol',
-'edit-externally-help' => '(Gwelwch y [https://www.mediawiki.org/wiki/Manual:External_editors cyfarwyddiadau gosod] am fwy o wybodaeth)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'holl',
 'namespacesall' => 'pob un',
@@ -3744,10 +3725,9 @@ Defnydd:
 
 # Special:SpecialPages
 'specialpages' => 'Tudalennau arbennig',
-'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>',
+'specialpages-note-top' => 'Allwedd',
+'specialpages-note' => '* Tudalennau arbennig ar gael i bawb.
+* <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 +3939,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 dc35954..7d8d0d2 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' ),
@@ -353,7 +351,6 @@ $messages = array(
 'qbedit' => 'Redigér',
 'qbpageoptions' => 'Indstillinger for side',
 'qbmyoptions' => 'Mine indstillinger',
-'qbspecialpages' => 'Specielle sider',
 'faq' => 'OSS',
 'faqpage' => 'Project:OSS',
 
@@ -363,7 +360,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 +397,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 +466,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',
@@ -571,9 +566,6 @@ Den kan indeholde et eller flere tegn, som ikke kan anvendes i titler.',
 'perfcached' => 'Følgende data er gemt i cachen, der muligvis ikke er helt opdateret. Der gemmes højst {{PLURAL:$1|ét resultat|$1 resultater}} i cachen.',
 'perfcachedts' => 'Disse data stammer fra cachen, som senest blev opdateret $1. Der gemmes højst {{PLURAL:$4|ét resultat|$4 resultater}} i cachen.',
 'querypage-no-updates' => "'''Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.'''",
-'wrong_wfQuery_params' => 'Ugyldig parameter til wfQuery()<br />
-Funktion: $1<br />
-Forespørgsel: $2',
 'viewsource' => 'Vis kildetekst',
 'viewsource-title' => 'Se kildekoden til $1',
 'actionthrottled' => 'Begrænsning af handling',
@@ -582,7 +574,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 +594,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 +771,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 +894,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 +994,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 +1148,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 +1161,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',
@@ -1250,12 +1243,8 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Søgeresultater',
 'searchresults-title' => 'Søgeresultater for "$1"',
-'searchresulttext' => 'For mere information om søgning på {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Du søgte efter \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle sider som begynder med "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som henviser til "$1"]])',
-'searchsubtitleinvalid' => 'Til din søgning „$1“.',
 'toomanymatches' => 'Søgningen fandt for mange sider. Prøv venligst med en anden søgning.',
 'titlematches' => 'Artikeltitler der opfyldte forespørgslen',
-'notitlematches' => 'Ingen artikeltitler opfyldte forespørgslen',
 'textmatches' => 'Artikeltekster der opfyldte forespørgslen',
 'notextmatches' => 'Ingen artikeltekster opfyldte forespørgslen',
 'prevn' => 'forrige {{PLURAL:$1|$1}}',
@@ -1264,10 +1253,8 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Næste $1 {{PLURAL:$1|resultat|resultater}}',
 'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søgemuligheder',
 'searchmenu-exists' => "'''Der er en side med navnet \"[[:\$1]]\" på denne wiki'''",
 'searchmenu-new' => "'''Opret siden \"[[:\$1]]\" i denne wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynder med dette præfiks]]',
 'searchprofile-articles' => 'Indholdssider',
 'searchprofile-project' => 'Hjælpe- og projektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1295,14 +1282,10 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'showingresults' => 'Nedenfor vises <b>$1</b> {{PLURAL:$1|resultat|resultater}} startende med nummer <b>$2</b>.',
 'showingresultsnum' => 'Herunder vises <b>$3</b> {{PLURAL:$3|resultat|resultater}} startende med nummer <b>$2</b>.',
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' af '''$3'''|Resultat '''$1 - $2''' af '''$3'''}} for '''$4'''",
-'nonefound' => "'''Bemærk''': Som standard søges der kun i bestemte navnerum.
-Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. diskussionssider, skabeloner osv.), eller brug det ønskede navnerum som præfiks.",
 'search-nonefound' => 'Søgningen gav ingen resultater.',
-'powersearch' => 'Søg',
 'powersearch-legend' => 'Avanceret søgning',
 'powersearch-ns' => 'Søg i navnerummene:',
 'powersearch-redir' => 'Vis omdirigeringer',
-'powersearch-field' => 'Søg efter',
 'powersearch-togglelabel' => 'Marker:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Ingen',
@@ -1314,8 +1297,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å',
-'prefsnologintext' => 'Du skal være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget på]</span> for at ændre brugerindstillinger.',
+'prefsnologintext2' => 'Du skal $1 for at ændre brugerindstillinger.',
 'changepassword' => 'Skift adgangskode',
 'prefs-skin' => 'Udseende',
 'skin-preview' => 'Forhåndsvisning',
@@ -1339,7 +1321,6 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
 'prefs-email' => 'Indstillinger for e-mail',
 'prefs-rendering' => 'Udseende',
 'saveprefs' => 'Gem indstillinger',
-'resetprefs' => 'Gendan indstillinger',
 'restoreprefs' => 'Gendan alle standardindstillinger (i alle sektioner)',
 'prefs-editing' => 'Redigering',
 'rows' => 'Rækker',
@@ -1360,7 +1341,6 @@ Hvis andre kender den, man vil være i stand til at læse din overvågningsliste
 'localtime' => 'Lokaltid:',
 'timezoneuseserverdefault' => "Brug wiki'ens standardindstilling ($1)",
 'timezoneuseoffset' => 'Anden (angiv forskel)',
-'timezoneoffset' => 'Forskel¹:',
 'servertime' => 'Serverens tid:',
 'guesstimezone' => 'Hent tidszone fra browseren',
 'timezoneregion-africa' => 'Afrika',
@@ -1449,9 +1429,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',
@@ -1615,6 +1595,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',
@@ -1711,7 +1693,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.
@@ -2112,10 +2094,8 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
 'protectedpages' => 'Skrivebeskyttede sider',
 'protectedpages-indef' => 'Kun beskyttelser uden udløbadato',
 'protectedpages-cascade' => 'Kun nedarvende beskyttelser',
-'protectedpagestext' => 'De følgende sider er beskyttede mod redigering og flytning.',
 'protectedpagesempty' => 'I øjeblikket er ingen sider beskyttet på denne måde.',
 'protectedtitles' => 'Beskyttede sidenavne',
-'protectedtitlestext' => 'Disse sidenavne er beskyttet mod at blive oprettet',
 'protectedtitlesempty' => 'Der er ingen sidetitler der er beskyttet med disse parametre.',
 'listusers' => 'Brugerliste',
 'listusers-editsonly' => 'Vis kun brugere med redigeringer',
@@ -2468,7 +2448,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',
@@ -2628,7 +2608,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',
@@ -2666,7 +2646,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]]".
@@ -2694,7 +2674,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.',
@@ -3610,10 +3590,6 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
 'exif-urgency-high' => 'Høj ($1)',
 'exif-urgency-other' => 'Bruger-defineret prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Rediger denne fil med en ekstern editor',
-'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors setup instruktionerne] for mere information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
@@ -3686,10 +3662,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.',
@@ -3775,7 +3751,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',
@@ -3791,7 +3767,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]].',
@@ -3832,8 +3808,8 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 
 # Special:SpecialPages
 'specialpages' => 'Specialsider',
-'specialpages-note' => '----
-* Normale specialsider.
+'specialpages-note-top' => 'Forklaring',
+'specialpages-note' => '* Normale specialsider.
 * <span class="mw-specialpagerestricted">Specialsider med begrænset adgang.</span>',
 'specialpages-group-maintenance' => 'Vedligeholdelsesside',
 'specialpages-group-other' => 'Andre specialsider',
@@ -4044,4 +4020,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 10d14d2..c1b2270 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:' ),
@@ -576,7 +580,6 @@ $messages = array(
 'qbedit' => 'Bearbeiten',
 'qbpageoptions' => 'Seitenoptionen',
 'qbmyoptions' => 'Meine Seiten',
-'qbspecialpages' => 'Spezialseiten',
 'faq' => 'Häufig gestellte Fragen',
 'faqpage' => 'Project:FAQ',
 
@@ -694,12 +697,10 @@ 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|neue Nachrichten}}',
-'newmessagesdifflinkplural' => 'letzte {{PLURAL:$1|Änderung|Änderungen}}',
+'newmessageslinkplural' => '{{PLURAL:$1|eine neue Nachricht|999=neue Nachrichten}}',
+'newmessagesdifflinkplural' => 'letzte {{PLURAL:$1|Änderung|999=Änderungen}}',
 'youhavenewmessagesmulti' => 'Du hast neue Nachrichten: $1',
 'editsection' => 'Bearbeiten',
 'editold' => 'Bearbeiten',
@@ -796,9 +797,6 @@ Es ist hierzu keine Erklärung verfügbar.',
 'perfcachedts' => 'Diese Daten stammen aus dem Cache. Der Zeitpunkt der letzten Aktualisierung: $2, $3 Uhr. Maximal {{PLURAL:$4|ein Ergebnis ist|$4 Ergebnisse sind}} im Cache verfügbar.',
 'querypage-no-updates' => 'Die Aktualisierungsfunktion dieser Seite ist zurzeit deaktiviert.
 Die Daten werden bis auf Weiteres nicht erneuert.',
-'wrong_wfQuery_params' => 'Falsche Parameter für wfQuery()<br />
-Funktion: $1<br />
-Abfrage: $2',
 'viewsource' => 'Quelltext anzeigen',
 'viewsource-title' => 'Quelltext der Seite $1',
 'actionthrottled' => 'Aktionsanzahl limitiert',
@@ -830,7 +828,8 @@ Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: „$3
 'invalidtitle-knownnamespace' => 'Ungültiger Titel mit Namensraum „$2“ und Text „$3“',
 'invalidtitle-unknownnamespace' => 'Ungültiger Titel mit unbekannter Namensraumnummer $1 und Text „$2“',
 'exception-nologin' => 'Nicht angemeldet',
-'exception-nologin-text' => 'Diese Seite oder Aktion erfordert, dass du auf diesem Wiki angemeldet bist.',
+'exception-nologin-text' => 'Du musst dich [[Special:Userlogin|anmelden]], um auf diese Seite oder Aktion zugreifen zu können.',
+'exception-nologin-text-manual' => 'Du musst dich $1, um auf diese Seite oder Aktion zugreifen zu können.',
 
 # Virus scanner
 'virus-badscanner' => "Fehlerhafte Konfiguration: unbekannter Virenscanner: ''$1''",
@@ -925,7 +924,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.
 
@@ -998,7 +997,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.',
@@ -1478,12 +1477,8 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Suchergebnisse',
 'searchresults-title' => 'Suchergebnisse für „$1“',
-'searchresulttext' => 'Mehr Informationen zur Suche sind auf der [[{{MediaWiki:Helppage}}|Hilfeseite]] zu finden.',
-'searchsubtitle' => 'Du hast nach „[[:$1]]“ gesucht ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
-'searchsubtitleinvalid' => 'Deine Suchanfrage: „$1“.',
 'toomanymatches' => 'Die Anzahl der Suchergebnisse ist zu groß, bitte versuche eine andere Abfrage.',
 'titlematches' => 'Übereinstimmungen mit Seitentiteln',
-'notitlematches' => 'Keine Übereinstimmungen mit Seitentiteln',
 'textmatches' => 'Übereinstimmungen mit Inhalten',
 'notextmatches' => 'Keine Übereinstimmungen mit Inhalten',
 'prevn' => '{{PLURAL:$1|vorheriger|vorherige $1}}',
@@ -1492,10 +1487,8 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'nextn-title' => '{{PLURAL:$1|Folgendes Ergebnis|Folgende $1 Ergebnisse}}',
 'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Suchoptionen',
 'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen „[[:$1]]“ hat.'''",
 'searchmenu-new' => "'''Erstelle die Seite „[[:$1]]“ in diesem Wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alle Seiten, die mit dem Suchbegriff anfangen]]',
 'searchprofile-articles' => 'Inhaltsseiten',
 'searchprofile-project' => 'Hilfe- und Projektseiten',
 'searchprofile-images' => 'Multimedia',
@@ -1523,13 +1516,10 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'showingresults' => "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
 'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
-'nonefound' => "'''Hinweis:''' Es werden standardmäßig nur einige Namensräume durchsucht. Setze ''all:'' vor deinen Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
 'search-nonefound' => 'Zu deiner Suchanfrage wurden keine Ergebnisse gefunden.',
-'powersearch' => 'Erweiterte Suche',
 'powersearch-legend' => 'Erweiterte Suche',
 'powersearch-ns' => 'Suche in Namensräumen:',
 'powersearch-redir' => 'Weiterleitungen anzeigen',
-'powersearch-field' => 'Suche nach:',
 'powersearch-togglelabel' => 'Wähle aus:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Keine',
@@ -1541,8 +1531,7 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'preferences' => 'Einstellungen',
 'mypreferences' => 'Einstellungen',
 'prefs-edits' => 'Anzahl der Bearbeitungen:',
-'prefsnologin' => 'Nicht angemeldet',
-'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} angemeldet]</span> sein, um deine Einstellungen ändern zu können.',
+'prefsnologintext2' => 'Du musst dich $1, um Benutzereinstellungen festzulegen.',
 'changepassword' => 'Passwort ändern',
 'prefs-skin' => 'Benutzeroberfläche',
 'skin-preview' => 'Vorschau',
@@ -1566,7 +1555,6 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-email' => 'E-Mail-Optionen',
 'prefs-rendering' => 'Aussehen',
 'saveprefs' => 'Einstellungen speichern',
-'resetprefs' => 'Eingaben verwerfen',
 'restoreprefs' => 'Alle Standardeinstellungen wiederherstellen (in allen Abschnitten)',
 'prefs-editing' => 'Bearbeiten',
 'rows' => 'Zeilen:',
@@ -1587,7 +1575,6 @@ Jeder, der ihn kennt, kann deine Beobachtungsliste lesen. Teile ihn deshalb nich
 'localtime' => 'Ortszeit:',
 'timezoneuseserverdefault' => 'Standardzeit dieses Wikis nutzen ($1)',
 'timezoneuseoffset' => 'Andere (Unterschied angeben)',
-'timezoneoffset' => 'Unterschied¹:',
 'servertime' => 'Aktuelle Zeit auf dem Server:',
 'guesstimezone' => 'Vom Browser übernehmen',
 'timezoneregion-africa' => 'Afrika',
@@ -1843,6 +1830,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).",
@@ -2342,10 +2332,8 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'protectedpages' => 'Geschützte Seiten',
 'protectedpages-indef' => 'Nur unbeschränkt geschützte Seiten zeigen',
 'protectedpages-cascade' => 'Nur Seiten mit Kaskadenschutz',
-'protectedpagestext' => 'Diese Spezialseite zeigt alle vor dem Verschieben oder Bearbeiten geschützten Seiten.',
 'protectedpagesempty' => 'Aktuell sind keine Seiten mit diesen Parametern geschützt.',
 'protectedtitles' => 'Geschützte Seitennamen',
-'protectedtitlestext' => 'Die folgenden Titel wurden zur Neuerstellung gesperrt.',
 'protectedtitlesempty' => 'Zurzeit sind mit den angegebenen Parametern keine Seiten zur Neuerstellung gesperrt.',
 'listusers' => 'Benutzerverzeichnis',
 'listusers-editsonly' => 'Zeige nur Benutzer mit Beiträgen',
@@ -2568,7 +2556,7 @@ Kontakt zum Bearbeiter:
 E-Mail: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Bei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.
+Bei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder angemeldet besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.
 
 Dein freundliches {{SITENAME}}-Benachrichtigungssystem
 
@@ -3851,10 +3839,6 @@ Weitere werden standardmäßig nicht angezeigt.
 'exif-urgency-high' => 'Hoch ($1)',
 'exif-urgency-other' => 'Benutzerdefinierte Priorität ($1)',
 
-# External editor support
-'edit-externally' => 'Diese Datei mit einem externen Programm bearbeiten',
-'edit-externally-help' => '(weitere Informationen in den [https://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
@@ -4100,10 +4084,9 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 
 # Special:SpecialPages
 'specialpages' => 'Spezialseiten',
-'specialpages-note' => '----
-* Reguläre Spezialseiten
-* <span class="mw-specialpagerestricted">Zugriffsbeschränkte Spezialseiten</span>
-* <span class="mw-specialpagecached">Gecachte Spezialseiten (Deren Inhalt ist möglicherweise veraltet.)</span>',
+'specialpages-note-top' => 'Legende',
+'specialpages-note' => '* Normale Spezialseiten.
+* <span class="mw-specialpagerestricted">Spezialseiten mit beschränktem Zugang.</span>',
 'specialpages-group-maintenance' => 'Wartungslisten',
 'specialpages-group-other' => 'Andere Spezialseiten',
 'specialpages-group-login' => 'Benutzerkonto',
@@ -4304,7 +4287,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 +4304,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 1671ce6..f7f3e46 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',
@@ -436,7 +449,7 @@ $messages = array(
 'september-date' => 'Keşkelun $1',
 'october-date' => 'Cıtan $1',
 'november-date' => 'Qasım $1',
-'december-date' => 'Kanun $1',
+'december-date' => 'Gağand $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
@@ -475,23 +488,22 @@ $messages = array(
 'qbfind' => 'Bıvêne',
 'qbbrowse' => 'Rovete',
 'qbedit' => 'Timar ke',
-'qbpageoptions' => 'Ena pele',
+'qbpageoptions' => 'Na per',
 'qbmyoptions' => 'Peré mı',
-'qbspecialpages' => 'Pelê xısusiy',
 'faq' => 'PZP (Persê ke zehf persiyenê)',
 'faqpage' => 'Project: PZP',
 
 # 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 +522,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 +582,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 +609,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 +637,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 +649,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 +666,9 @@ 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-textcl' => 'Zu ğetaya erdamalumati persayışi ameya meydan.',
 'databaseerror-query' => 'Perskerdış:$1',
 'databaseerror-function' => 'Fonksiyon: $1',
 'databaseerror-error' => 'Xırab: $1',
@@ -696,9 +709,6 @@ Beno ke, tede yew ya zi zêdê işareti estê ke sernaman de nêxebetiyenê.',
 'perfcached' => 'Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de',
 'perfcachedts' => 'Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticey cı}} debyayo de',
 'querypage-no-updates' => 'Nıka newe kerdış nêbeno. no datayi ca de newe nêbeni .',
-'wrong_wfQuery_params' => 'wfQuery() parametreyo şaş<br />
-Fonksiyon: $1<br />
-Perse: $2',
 'viewsource' => 'Çımi bıvin',
 'viewsource-title' => "Cı geyrayışê $1'i bıvin",
 'actionthrottled' => 'Kerden peysnaya',
@@ -729,7 +739,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''",
@@ -772,15 +782,16 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
 'userlogin-joinproject' => 'Cıkewe {{SITENAME}}',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
-'createaccount' => 'Hesab vıraze',
+'createaccount' => 'Hesab vıraşten',
 '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',
@@ -828,7 +839,7 @@ Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe a
 'passwordtooshort' => 'Derganiya parola wa tewr tayn {{PLURAL:$1|1 karakter|$1 karakteran}} dı bo.',
 'password-name-match' => 'Parola u nameyê şıma gani zeypê (seypê) nêbo.',
 'password-login-forbidden' => 'No namey karberi u parola karkerdışê cı  kerdo xırab.',
-'mailmypassword' => 'E-mail sera parola newiye bırışe',
+'mailmypassword' => 'Parola reset ke',
 'passwordremindertitle' => "Qandê {{SITENAME}}'i idareten parolaya newiye",
 'passwordremindertext' => 'Yew ten (muhtemelen, şıma na aderesê IP ra $1 ) {{SITENAME}} ($4) newe yew parola waşt. "$2" no name ri emanet yew parola vıraziya "$3". Eke na şıma waşta, hesabê xo akere u newe yew parola bıvıraze. Muddetê parolayê şıma yo emanet {{PLURAL:$5|1 roc|$5 roci}}.
 
@@ -891,7 +902,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 # Special:PasswordReset
 'passwordreset' => 'Parola reset ke',
 'passwordreset-text-one' => 'Na form de parola reset kerdış temamiye',
-'passwordreset-text-many' => '{{PLURAL:$1|Qande parola reset kerdışi cayanra taynın pırkeri}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Qande parola yana e-posta reset kerdışi cayanra taynın pırkeri.}}',
 'passwordreset-legend' => 'Parola reset ke',
 'passwordreset-disabled' => 'Parola reset kerdış ena viki sera qefılneyayo.',
 'passwordreset-emaildisabled' => 'Na wikid hısusiyeté e-posta dewera vıcyayé',
@@ -937,6 +948,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',
 
@@ -963,7 +975,7 @@ Parola vêrdiye: $2',
 # Edit pages
 'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
 'subject' => 'Mewzu/sernuşte:',
-'minoredit' => "'''Eno vurnayışo de qıckeko'''",
+'minoredit' => 'Vırnayışa werkek',
 'watchthis' => "'''Ena pele seyr ke'''",
 'savearticle' => 'Pele qeyd ke',
 'preview' => 'Verqayt',
@@ -1021,14 +1033,14 @@ Heta ke werte de qısım çıniyo, ca çıniyo ke tı raştkerdışê xo qeyd b
 
 Qey na hesabê newe parola, cıkewtış dıma şıma eşkeni na qısım de ''[[Special:ChangePassword|parola bıvurn]]'' bıvurni.",
 'newarticle' => '(Newe)',
-'newarticletext' => "Ena pele, database ma de hona çiniyo.
-Eka tı wazene yew bıvırazi, bınê eno nuşte de yew quti esto u uca de bınuse (bıvinin [[{{MediaWiki:Helppage}}|help page]] qe informasyonê zafyeri).
-Eka tı ita semed yew heta ra amey, ser gocekê '''back'''i klik bıkin.",
+'newarticletext' => 'Ena per erdmaluamti miyan de çıniya.
+Şıma qayıle ena perer vırazese dora metini bıkarne. (yana  [[{{MediaWiki:Helppage}}|Pera destegi]] ra malumat bıgire).
+Nara ke şıma ğamğamde ameyé tiya se butonda peyseri bıploğne u şıré cado verén.',
 'anontalkpagetext' => "----''No pel, pel o karbero hesab a nêkerdeyan o, ya zi karbero hesab akerdeyan o labele pê hesabê xo nêkewto de. No sebeb ra ma IP adres şuxulneni û ney IP adresan herkes eşkeno bıvino. Eke şıma qayil niye ina bo xo ri [[Special:UserLogin/signup|yew hesab bıvıraze]] veyaxut [[Special:UserLogin|hesab akere]].''",
-'noarticletext' => 'Ena pele de hewna theba çıniyo.
-Tı şenay zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernamey ena pele cı geyre]],
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cıkewtışê aidi rê cı geyre],
-ya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele bıvurne]</span>.',
+'noarticletext' => 'Na per enewke venga.
+Tı şenay na perer, peran de [[Special:Search/{{PAGENAME}}|binan miyan de bıgeyrè]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}  qeyda miyande bıgeyre],
+ya na [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena perer vırazé]</span>.',
 'noarticletext-nopermission' => 'Na pela dı eno metin enewke vengo
 Na sernuşteya şıma [[Special:Search/{{PAGENAME}}|pelanê binan de şeni bıgeyri]]
 ya zi <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} itara şeni bıgeyri cı].</span> feqet şıma nişeni biizın teba bıkeri.',
@@ -1181,7 +1193,7 @@ Taye şabloni zerre pel de nêmociyayeni.',
 Sebebo ke terefê $3 ra diyao ''$2''",
 
 # History pages
-'viewpagelogs' => 'Heq dê ena perer qeydan bıvinên',
+'viewpagelogs' => 'Heqde na perer qeydan bıvin',
 'nohistory' => 'Verê vurnayışanê na pele çıniyo.',
 'currentrev' => 'Halo nıkayên',
 'currentrev-asof' => 'Revizyonanê peniyan, tarixê $1',
@@ -1195,9 +1207,8 @@ Sebebo ke terefê $3 ra diyao ''$2''",
 'last' => 'peyên',
 'page_first' => 'verên',
 'page_last' => 'peyên',
-'histlegend' => "'''Ferqê weçinayışi:''' Qutiya versiyonan mor ke u  ''enter''i bıpıloxne ya zi makera cêrêne bıpıloxne.<br /> 
-Lecant: '''({{int:cur}})''' = ferqê versiyonê peyêni,
-'''({{int:last}})''' = ferqê versiyonê verêni, '''{{int:minoreditletter}}''' = vurnayışo werdi.",
+'histlegend' => "Ferqê weçinayışi: Qutiya versiyonan mor ke u  ''enter''i bıpıloxne ya zi makera cêrêne bıpıloxne.<br /> 
+Lecant: '''({{int:cur}})''' = ferqê versiyonê peyêni, '''({{int:last}})''' = ferqê versiyonê verêni, '''{{int:minoreditletter}}''' = vurnayışo werdi.",
 'history-fieldset-title' => 'Bewni tarixer',
 'history-show-deleted' => 'Tenya esterıt',
 'histfirst' => 'Verênêr',
@@ -1364,12 +1375,8 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 # Search results
 'searchresults' => 'Neticeya geyrayışi',
 'searchresults-title' => 'Qandê "$1" neticeyê geyrayışi',
-'searchresulttext' => 'Zerrey {{SITENAME}} de heqa cıgeyrayışi de seba melumat gırewtışi, şenay qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
-'searchsubtitle' => 'Tı semedê \'\'\'[[:$1]]\'\'\' cıgeyra. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyaê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra gırê xo esto]])',
-'searchsubtitleinvalid' => "Tı cıgeyra qe '''$1'''",
 'toomanymatches' => 'Zêde teki (zewci) peyser çarnay, şıma rê zehmet, be persê do bin ra bıcerrebnên.',
 'titlematches' => 'Tekê (zewcê) sernameyê pele',
-'notitlematches' => 'Tekê (zewcê) sernameyê pele çıniyê.',
 'textmatches' => 'Tekê (zewcê) nuştey pele',
 'notextmatches' => 'tekê (zewcê) nuştey pele çıniyê',
 'prevn' => '{{PLURAL:$1|$1}} verên',
@@ -1378,16 +1385,14 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'nextn-title' => '$1o ke yeno {{PLURAL:$1|netice|neticey}}',
 'shown-title' => 'bimocne $1î  {{PLURAL:$1|netice|neticeyan}} ser her pel',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bıvênên',
-'searchmenu-legend' => 'bıgeyre tercihan (sae bıke)',
 'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
 'searchmenu-new' => "''Na Wiki de pelay \"[[:\$1]]\" vıraze!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|pê eno prefix ser pelan de bigêre]]',
 'searchprofile-articles' => 'Perré muhteway',
 'searchprofile-project' => 'Pera Destegi uw Procan',
 'searchprofile-images' => 'Multimedya',
 'searchprofile-everything' => 'Heme çi',
 'searchprofile-advanced' => 'Ravérden',
-'searchprofile-articles-tooltip' => '$1 de bigêre',
+'searchprofile-articles-tooltip' => '$1 de cı geyré',
 'searchprofile-project-tooltip' => '$1 de bigêre',
 'searchprofile-images-tooltip' => 'Dosya cı geyr',
 'searchprofile-everything-tooltip' => 'Tedeestey hemine cı geyre (pelanê mınaqeşey zi tey)',
@@ -1409,14 +1414,10 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'showingresults' => "#$2 netican ra {{PLURAL:$1|'''1''' netica|'''$1''' neticey}} cêr deyê.",
 'showingresultsnum' => "'''$2''' netican ra nata  {{PLURAL:$3|'''1''' netice|'''$3''' neticeyê}} cêrde liste biyê.",
 'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' hetê '''$3'''}} qe '''$4'''",
-'nonefound' => "'''Teme''': Teyna tay namecayan cıgeyro beno.
-Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mınaqeşe, templatenan, ucb.) ya zi cıgeyro ser namecay ki tı wazeni.",
 'search-nonefound' => 'Zey perskerdışê şıma netice nêvêniya.',
-'powersearch' => 'Cıgeyrayışo hera',
 'powersearch-legend' => 'Cıgeyrayışo hera',
 'powersearch-ns' => 'Cayanê nameyan de cıgeyrayış:',
 'powersearch-redir' => 'Listeya hetenayışan',
-'powersearch-field' => 'Seba cı seyr ke',
 'powersearch-togglelabel' => 'Qontrol ke:',
 'powersearch-toggleall' => 'Pêro',
 'powersearch-togglenone' => 'Çıniyo',
@@ -1427,8 +1428,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',
-'prefsnologintext' => 'Şıma gani be <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cikewte]</span> ke tercihanê karberi xo eyar bıkerê.',
+'prefsnologintext2' => 'Reca kem  sazé tercihané karberi $1.',
 'changepassword' => 'Parola bıvurne',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verasayış',
@@ -1438,7 +1438,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-labs' => 'Xacetê labs',
 'prefs-user-pages' => 'Pela Karberi',
 'prefs-personal' => 'Pela karberi',
-'prefs-rc' => 'Vurnayışê peyêni',
+'prefs-rc' => 'Vırnayışé bahdoyéni',
 'prefs-watchlist' => 'Lista seyrkerdışi',
 'prefs-watchlist-days' => 'Rocê ke lista seyrkerdışi de bêrê ramocnaene',
 'prefs-watchlist-days-max' => 'tewr vêşi $1 {{PLURAL:$1|roci|roci}}',
@@ -1452,25 +1452,26 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-email' => 'Tercihê e-maili',
 'prefs-rendering' => 'Asayış',
 'saveprefs' => 'Qeyd ke',
-'resetprefs' => 'Vurnayışê ke qeyd nêbiy, pak ke',
 'restoreprefs' => 'Sazanê hesıbyaya pêron newe ke',
 'prefs-editing' => 'Cay pela nustısi',
 'rows' => 'Xeti:',
 'columns' => 'Estûni:',
 'searchresultshead' => 'Cı geyre',
-'resultsperpage' => 'Serê pele  amarê cıkewtoğan:',
-'stub-threshold' => 'Baraj ke <a href="#" class="stub">stub link</a> ho şekil dano (bîtî):',
+'resultsperpage' => 'Neticeye ke perde bıase:',
+'stub-threshold' => 'Qandé <a href="#" class="stub">Taslağ  formati</a> sinor (bayti):',
 'stub-threshold-disabled' => 'Astengın',
 'recentchangesdays' => 'Rocê ke vurnayışanê peyênan de bıasê:',
 'recentchangesdays-max' => 'Tewr zaf $1 {{PLURAL:$1|roc|roci}}',
 'recentchangescount' => 'Amarê vurnayışê ke hesıbyaye deye bımocneyê:',
 'prefs-help-recentchangescount' => 'Ney de vurnayışê peyêni, tarixê pelan u cıkewteni asenê.',
+'prefs-help-watchlist-token2' => 'Na pawıtış nımnayi kılta listada şımaya.
+Oke kıliti zano şeno listeya tamaşann bıvino. Poğta coy ra kesiya me hesırne. 
+[[Special:ResetTokens|Na kıliti reset kerdışi re tiyay bıploğne]].',
 'savedprefs' => 'Tecihey şıma qeyd biyey.',
 'timezonelegend' => 'Warey saete:',
 'localtime' => 'saeta mehelliye:',
 'timezoneuseserverdefault' => 'Zey karkerdışê Wiki ($1)',
 'timezoneuseoffset' => 'Zewbina (offseti beli bıke)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Wextê serveri:',
 'guesstimezone' => 'Browser ra pırr ke',
 'timezoneregion-africa' => 'Afrika',
@@ -1640,7 +1641,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ê',
@@ -1712,29 +1718,32 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'nchanges' => '$1 {{PLURAL:$1|fın vurna|fıni vurna}}',
 'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ra yok wazino}}',
 'enhancedrc-history' => 'verenayış',
-'recentchanges' => 'Vurnayışê peyêni',
+'recentchanges' => 'Vırnayışé bahdoyéni',
 'recentchanges-legend' => 'Tercihê vurnayışanê peyênan',
 'recentchanges-summary' => 'Ena pele de wiki sero vurnayışanê peyênan teqib ke.',
 'recentchanges-noresult' => 'Zey kiterandé şıma vırnayış névineya',
 'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
 'recentchanges-label-newpage' => 'Enê vurnayışi pelaya newi vıraşt',
-'recentchanges-label-minor' => 'Eno yew vurnayışo qıckeko',
+'recentchanges-label-minor' => 'Ena vırnayışa werkeka',
 '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',
-'rcshowhideminor' => 'Vurnayışanê werdiyan $1',
+'rcshowhideminor' => 'Vırnayışané werkekean $1',
 'rcshowhidebots' => 'Botan $1',
-'rcshowhideliu' => 'Karberanê qeydınan $1',
-'rcshowhideanons' => 'Karberê bênamey $1',
+'rcshowhideliu' => 'Karberané qeydınan $1',
+'rcshowhideanons' => 'Karberané bénaman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
 'rcshowhidemine' => 'Vurnayışanê mı $1',
 'rclinks' => '$2 rocan peynira $1 vurnayışan bıasne <br />$3',
 'diff' => 'ferq',
 'hist' => 'verên',
 'hide' => 'Bınımne',
-'show' => 'Bımocne',
+'show' => 'Bıasne',
 'minoreditletter' => 'q',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -2118,6 +2127,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
@@ -2150,6 +2161,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.
@@ -2215,21 +2228,20 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'protectedpages' => 'Pelê pawıtiyey',
 'protectedpages-indef' => 'têna pawıteyê bêmuddeti',
 'protectedpages-cascade' => 'Kilit biyaye ke teyna cascadiye',
-'protectedpagestext' => 'pelê cêrınî pawiyenê',
 'protectedpagesempty' => 'pê ney parametreyan pelê pawiteyi çinî',
 'protectedtitles' => 'Sernameyê pawıtiyey',
-'protectedtitlestext' => 'sernameyê cêrıni pawıte yî',
 'protectedtitlesempty' => 'pê ney parametreyan sernuşteyê pawite çinê',
 '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.',
@@ -2397,7 +2409,7 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.',
 'removewatch' => 'Listedê mınê seyr kerdışi ra hewad',
 'removedwatchtext' => 'Ena pela "[[:$1]]" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].',
 'watch' => 'Temaşe ke',
-'watchthispage' => 'Na pele seyr ke',
+'watchthispage' => 'Na perer seyr ke',
 'unwatch' => 'Teqib mekerê',
 'unwatchthispage' => 'temaşa kerdışê peli vındarn.',
 'notanarticle' => 'mebhesê peli niyo',
@@ -2436,14 +2448,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.
@@ -2585,7 +2595,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',
 
@@ -2644,11 +2654,10 @@ 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:',
-'invert' => 'Weçinıtışo peyserki',
+'invert' => 'Weçinayan ğariç bıasné',
 'tooltip-invert' => 'nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan  zerrekan nımtışi re ena dore tesdiqi nışan kerê',
 'namespace_association' => 'Cayê nameyanê elaqedaran',
 'tooltip-namespace_association' => 'Herunda canemiya elekeyın nışan kerdışi sero qıse kerdışi yana zerre dekerdışi rê ena dora tesdiqi nışan kerê',
@@ -2683,7 +2692,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'sp-contributions-submit' => 'Cı geyre',
 
 # What links here
-'whatlinkshere' => 'Gıreyê pele',
+'whatlinkshere' => 'Gırey perer',
 'whatlinkshere-title' => 'Per da "$1" rê perê ke gre danê',
 'whatlinkshere-page' => 'Pele:',
 'linkshere' => "Ena peleyan grey biya '''[[:$1]]''':",
@@ -2778,7 +2787,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',
@@ -2913,11 +2922,11 @@ 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?',
-'delete_and_move_confirm' => 'Eya, na pele bestere',
+'delete_and_move_confirm' => 'E na perer bestern',
 'delete_and_move_reason' => '"[[$1]]" qande nami re ca akerdışi re besteriyaye',
 'selfmove' => 'name yo ke şıma wazeni bıbo, ın name û name yo ke ca ra esto eyni yê /zepê yê. vurnayiş mumkin niyo.',
 'immobile-source-namespace' => '"$1" pelê cayi de nameyi nêkırışyenî',
@@ -3064,76 +3073,76 @@ 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-preferences' => 'Tercihi',
 'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
-'tooltip-pt-mycontris' => 'Yew lista iştıraqanê şıma',
+'tooltip-pt-mycontris' => 'Listeya dekerdışan de şı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' => 'Sistem ra 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.',
-'tooltip-ca-addsection' => 'Yew qısımo newe ake',
+'tooltip-ca-edit' => 'Tı şenay na perer bıvurné.Verdé qeyd kerdışi ver gocega verqayti bıkarné.',
+'tooltip-ca-addsection' => 'Zu bınnusteya newi ak',
 'tooltip-ca-viewsource' => 'Ena pele kılit biya.
 Şıma şenê çımeyê aye bıvênê',
-'tooltip-ca-history' => 'Versiyonê verênê ena pele',
-'tooltip-ca-protect' => 'Ena pele kılit ke',
+'tooltip-ca-history' => 'Verén rewziyoné ena perer bıvin',
+'tooltip-ca-protect' => 'Na perer star fi',
 'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
-'tooltip-ca-delete' => 'Ena perer besternê',
+'tooltip-ca-delete' => 'Ena perer bestern',
 'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
-'tooltip-ca-move' => 'Ena pele bere',
+'tooltip-ca-move' => 'Na perer ber',
 'tooltip-ca-watch' => 'Ena pele lista xoya seyrkerdışi ke',
 'tooltip-ca-unwatch' => 'Ena pele listeya seyir-kerdışi xo ra bıvec',
-'tooltip-search' => 'Zerreyê {{SITENAME}} de cı geyre',
+'tooltip-search' => '{{SITENAME}} miyan de bıvin',
 '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-p-logo' => 'Şo pera 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',
 'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
-'tooltip-n-randompage' => 'Şırê pera ke raştameyê',
-'tooltip-n-help' => 'Cayê doskerdışi',
+'tooltip-n-randompage' => 'Perake raşt amé',
+'tooltip-n-help' => 'Cay desteg grotışi',
 'tooltip-t-whatlinkshere' => 'Lista pelanê wikiya pêroina ke tiya gırê bena',
 'tooltip-t-recentchangeslinked' => 'Vurnayışê peyênê pelanê ke ena pela ra gırê biyê',
 'tooltip-feed-rss' => 'RSS feed qe ena pele',
 'tooltip-feed-atom' => 'Qe ena pele atom feed',
-'tooltip-t-contributions' => 'İştirakanê ena karber bevin',
+'tooltip-t-contributions' => 'Listey dekerdışan de karberi bıvin',
 'tooltip-t-emailuser' => 'Ena karber ri yew email bışırav',
 'tooltip-t-upload' => 'Dosya bar ke',
 'tooltip-t-specialpages' => 'Yew lista pelanê xasanê pêroyinan',
-'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
+'tooltip-t-print' => 'Hewl versiyona ploğnayışa na perer',
 'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
-'tooltip-ca-nstab-main' => 'Pela zerreki bımocne',
-'tooltip-ca-nstab-user' => 'Pela karberi bıvin',
-'tooltip-ca-nstab-media' => 'Pele Mediya bivinên',
-'tooltip-ca-nstab-special' => 'Na yew pelê da xususiya, şıma nêşenê nae bıvurnê',
-'tooltip-ca-nstab-project' => 'Pela procey bıvêne',
-'tooltip-ca-nstab-image' => 'Pelay dosya bımocne',
-'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bivinên',
-'tooltip-ca-nstab-template' => 'Şabloni bıvinê',
-'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
-'tooltip-ca-nstab-category' => 'Pele kategoriyan bevinin',
-'tooltip-minoredit' => 'Eno vurnayışê qıçkeko',
-'tooltip-save' => 'Vurnayışanê xo qeyd ke',
-'tooltip-preview' => 'Vurnayışê xo bıvin. Verniyê qeyd kerdışi, vurnayışê xo ena pele dı control bık.',
+'tooltip-ca-nstab-main' => 'Perra muhtevay bıvin',
+'tooltip-ca-nstab-user' => 'Pera karberi bıvin',
+'tooltip-ca-nstab-media' => 'Pera medya bıvin',
+'tooltip-ca-nstab-special' => 'Na zu pera bağsi ya, şıma néşené sero vırnayış bıkeré',
+'tooltip-ca-nstab-project' => 'Pera proci bıvin',
+'tooltip-ca-nstab-image' => 'Pera dosyayer bıvin',
+'tooltip-ca-nstab-mediawiki' => 'Mesacané sistemi bıvin',
+'tooltip-ca-nstab-template' => 'Şabloni bıvin',
+'tooltip-ca-nstab-help' => 'Pera destegi bıvin',
+'tooltip-ca-nstab-category' => 'Pera kategori bıvin',
+'tooltip-minoredit' => 'Nay vırnayışa werdi nışan bıkeré',
+'tooltip-save' => 'Vurnayışa qeyd ke',
+'tooltip-preview' => 'Vurnayışané ğo çımra ravyarné. Verdé qeyd kerdışi eneri bıkarné!',
 'tooltip-diff' => 'Metni sero vurnayışan mocneno',
 'tooltip-compareselectedversions' => 'Ena per de ferqê rewziyonan de dı weçinaya bıvinê',
 'tooltip-watch' => 'Eno pele listey tıyo seyir-kerdişi ri dek',
 'tooltip-watchlistedit-normal-submit' => 'Sernuşteya hewad',
 'tooltip-watchlistedit-raw-submit' => 'Listeyê seyri newen ke',
 'tooltip-recreate' => 'pel hewn a bışiyo zi tepiya biya',
-'tooltip-upload' => 'Dest be barkerdışi ke',
+'tooltip-upload' => 'Sergen de bari be',
 'tooltip-rollback' => '"Peyser bia" be yew tık pela iştıraq(an)ê peyên|i(an) peyser ano.',
 'tooltip-undo' => '"Undo" ena vurnayışê newi iptal kena u vurnayışê verni a kena.
 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. */',
@@ -3223,7 +3232,7 @@ Ney '''Mefiyé de'''!",
 'markaspatrolledtext' => 'Ena pele nişan bike ke devriye biyo',
 'markedaspatrolled' => 'Nişan biyo ke verni de devriye biyo',
 'markedaspatrolledtext' => 'Versiyone weçinaye [[:$1]] nişan biyo ke devriye biyo',
-'rcpatroldisabled' => 'Devriyeyê vurnayışê peyêni nihebitiyeno',
+'rcpatroldisabled' => 'Dewriyaya vırnayışé bahdoyéni devrera vıciyayé',
 'rcpatroldisabledtext' => 'Devriyeyê vurnayışê peyêni inke kefilnaye biyo u nihebitiyeno',
 'markedaspatrollederror' => 'Nişan nibeno ke devriye biyo',
 'markedaspatrollederrortext' => 'Ti gani revizyon işaret bike ke Nişanê devriye biyo',
@@ -3254,7 +3263,7 @@ $1',
 # Media information
 'mediawarning' => "'''Teme''': Na dosya de belkia kodê xırabıni estê.
 Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
-'imagemaxsize' => "Limitê ebat ê resimi:<br />''(qe pela deskripsiyonê dosyayan)''",
+'imagemaxsize' => "Lımita ebata resimi:<br />''(qande akerdışa perande dosyayan)''",
 'thumbsize' => 'Ebadê Thumbnaili',
 'widthheight' => '$1 - $2',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|pele|peli}}',
@@ -3832,10 +3841,6 @@ $8',
 'exif-urgency-high' => '( $1 ) Vêşiyo',
 'exif-urgency-other' => 'Sıftê  şınasiya karberi ($1)',
 
-# External editor support
-'edit-externally' => 'Ena dosya bıvurne pe yew programê harici',
-'edit-externally-help' => '(Qe informasyonê zafyer ena bevinin [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'pêro',
 'namespacesall' => 'pêro',
@@ -3958,7 +3963,7 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'table_pager_prev' => 'Pela verêne',
 'table_pager_first' => 'Pela jûyıne',
 'table_pager_last' => 'Pela peyêne',
-'table_pager_limit' => 'Jû pele de $1 unsuran bımocne',
+'table_pager_limit' => 'her per de $1 unsuran bımocne',
 'table_pager_limit_label' => 'Her pele ra xacetan',
 'table_pager_limit_submit' => 'Şo',
 'table_pager_empty' => 'Netice çini yo',
@@ -3966,7 +3971,7 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 # Auto-summaries
 'autosumm-blank' => 'Pele de her çi wederna',
 'autosumm-replace' => "Maqale pê '$1' vuriya",
-'autoredircomment' => 'Pele [[$1]] rê redirek biyo',
+'autoredircomment' => 'heteneya [[$1]]',
 'autosumm-new' => "Pela vıraziyê, '$1' bıvinê",
 
 # Size units
@@ -4134,6 +4139,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:',
@@ -4155,10 +4161,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',
@@ -4370,4 +4375,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 c9c0123..a1f4a70 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',
@@ -305,7 +316,6 @@ $messages = array(
 'qbedit' => 'Pśeměniś',
 'qbpageoptions' => 'Toś ten bok',
 'qbmyoptions' => 'Móje boki',
-'qbspecialpages' => 'Specialne boki',
 'faq' => 'FAQ (pšašanja a wótegrona)',
 'faqpage' => 'Project:FAQ (pšašanja a wótegrona)',
 
@@ -348,6 +358,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 +375,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 +405,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 +431,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 +486,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,14 +524,12 @@ 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.',
 'perfcachedts' => 'Toś te daty póchadaju z pufrowaka a su se $1 slědny raz aktualizěrowali. Maksimalnje {{PLURAL:$4|jaden wuslědk stoj|$4 wuslědka stojtej|$4 wuslědki stoje|$4 wuslědkow stoj}} w pufrowaku k dispoziciji.',
 'querypage-no-updates' => 'Aktualizěrowanje toś togo boka jo se znjemóžniło. Daty how se nejžpjerwjej raz njeaktualizěruju.',
-'wrong_wfQuery_params' => 'Njedobre parametery za wfQuery()<br />
-Funkcija: $1<br />
-Wótpšašanje: $2',
 'viewsource' => 'Žrědło se wobglědaś',
 'viewsource-title' => 'Žrědłowy tekst za $1 se woglědaś',
 'actionthrottled' => 'Akcije limitowane',
@@ -532,6 +545,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 +557,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 +566,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 +604,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ś.',
@@ -613,7 +651,7 @@ Pśeglěduj pšawopis abo [[Special:UserLogin/signup|załož nowe konto]].',
 'passwordtooshort' => 'Gronidła deje nanejmjenjej {{PLURAL:$1|1 znamuško|$1 znamušce|$1 znamuška|$1 znamuškow}} měś.',
 'password-name-match' => 'Twójo gronidło musy se wót swójogo wužywarskego mjenja rozeznaś.',
 'password-login-forbidden' => 'Wužywanje toś togo wužywarskego mjenja a gronidła jo zakazane.',
-'mailmypassword' => 'Nowe gronidło pśipósłaś',
+'mailmypassword' => 'Gronidło slědk stajiś',
 'passwordremindertitle' => 'Nowe nachylne pótajmne słowo za {{SITENAME}}',
 'passwordremindertext' => 'Něchten z IP-adresu $1 (nejskerjej ty) jo se wupšosył nowe gronidło za {{SITENAME}} ($4).
 Nachylne gronidło za wužywarja "$2" jo se napórało a jo něnto "$3". Jolic jo to twój wótglěd było, musyš se něnto pśijawiś a wubraś nowe gronidło. Twójo nachylne gronidło pśepadnjo za {{PLURAL:$5|jadyn źeń|$5 dnja|$5 dny|$5 dnjow}}.
@@ -624,15 +662,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 +681,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 +702,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 +710,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|Wupołni jadne z pólow, aby nachylne gronidło pśez e-mail dostał.}}',
 '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 +741,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 +755,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 +844,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 +933,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 +955,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 +989,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 +1078,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 +1170,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}}.
@@ -1124,12 +1181,8 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Wuslědki pytanja',
 'searchresults-title' => 'Pytańske wuslědki za "$1"',
-'searchresulttext' => 'Za wěcej informacijow wó pśepytowanju {{GRAMMAR:genitiw|{{SITENAME}}}} glědaj [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Sy pytał za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|wše boki, kótarež zachopiju se z "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|wše wótkaze, kótarež wótkazuju do "$1"]])',
-'searchsubtitleinvalid' => 'Ty sy pytał „$1“.',
 'toomanymatches' => 'Pśewjele pytańskich wuslědkow, pšosym wopytaj druge wótpšašanje.',
 'titlematches' => 'boki z wótpowědujucym napismom',
-'notitlematches' => 'Boki z wótpowědujucym napismom njeeksistěruju.',
 'textmatches' => 'Boki z wótpowědujucym tekstom',
 'notextmatches' => 'Boki z wótpowědujucym tekstom njeeksistěruju.',
 'prevn' => '{{PLURAL:$1|zachadny $1|zachadnej $1|zachadne $1|zachadnych $1}}',
@@ -1138,10 +1191,8 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => '{{PLURAL:$1|Pśiducy wuslědk|Pśiducej $1 wuslědka|Pśiduce $1 wuslědki|Pśiducych $1 wuslědkow}}',
 'shown-title' => '$1 {{PLURAL:$1|wuslědk|wuslědka|wuslědki|wuslědkow}} na bok pokazaś',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) pokazaś',
-'searchmenu-legend' => 'Pytańske opcije',
 'searchmenu-exists' => "'''Jo bok z mjenim \"[[\$1]]\" na toś tom wikiju'''",
 'searchmenu-new' => "'''Napóraj bok \"[[:\$1|\$1]]\" na toś tom wikiju!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Boki z toś tym prefiksom pśepytaś]]',
 'searchprofile-articles' => 'Wopśimjeśowe boki',
 'searchprofile-project' => 'Pomoc a projektowe boki',
 'searchprofile-images' => 'Multimedia',
@@ -1169,25 +1220,22 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'showingresults' => "How {{PLURAL:|jo '''1''' wuslědk|stej '''$1''' wuslědka|su '''$1''' wuslědki}} wót cysła '''$2'''.",
 'showingresultsnum' => "How {{PLURAL:$3|jo '''1''' wuslědk|stej '''$3''' wuslědka|su '''$3''' wuslědki}} wót cysła '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
-'nonefound' => "'''Pokazka''': Jano někótare mjenjowe rumy se standarnje pytaju. Wopytaj za swóje wótpšašanje prefiks ''all:'' wužywać, aby cełe wopśimjeśe pytał (inkluziwnje diskusijnych bokow, pśedłogi atd.) abo wužyj póžedany mjenjowy rum ako prefiks.",
 'search-nonefound' => 'Njejsu se wuslědki namakali, kótarež wótpowěduju napšašowanjeju.',
-'powersearch' => 'Rozšyrjone pytanje',
 'powersearch-legend' => 'Rozšyrjone pytanje',
 'powersearch-ns' => 'W mjenjowych rumach pytaś:',
 'powersearch-redir' => 'Dalejpósrědnjenja nalistowaś',
-'powersearch-field' => 'Pytaś za:',
 'powersearch-togglelabel' => 'Kontrolěrowaś:',
 'powersearch-toggleall' => 'Wše',
 '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',
-'prefsnologintext' => 'Musyš se <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} pśizjawiś]</span>, aby mógał swóje nastajenja změniś.',
+'prefsnologintext2' => 'Musyš $1, aby wužywarske nastajenja póstajił.',
 'changepassword' => 'Šćitne gronidło změniś',
 'prefs-skin' => 'Šat',
 'skin-preview' => 'Pśeglěd',
@@ -1211,8 +1259,7 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-email' => 'E-mailowe opcije',
 '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:',
@@ -1224,12 +1271,14 @@ 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:',
 'timezoneuseserverdefault' => 'Wikistandard wužywaś ($1)',
 'timezoneuseoffset' => 'Drugi (pódaj wótchylenje)',
-'timezoneoffset' => 'Rozdźěl¹:',
 'servertime' => 'Cas serwera:',
 'guesstimezone' => 'Z browsera pśewześ',
 'timezoneregion-africa' => 'Afrika',
@@ -1267,11 +1316,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.',
@@ -1282,7 +1333,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',
@@ -1290,7 +1343,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',
@@ -1314,9 +1369,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:',
@@ -1360,7 +1417,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ś',
@@ -1380,13 +1437,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',
@@ -1438,8 +1503,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ś',
@@ -1448,17 +1513,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ś.',
@@ -1481,7 +1556,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"',
 
@@ -1740,8 +1815,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',
@@ -1752,6 +1826,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',
@@ -1844,6 +1922,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.',
@@ -1874,6 +1959,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.
@@ -1910,7 +1997,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',
@@ -1931,6 +2018,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',
@@ -1938,14 +2026,13 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'protectedpages' => 'Šćitane boki',
 'protectedpages-indef' => 'Jano boki pokazaś, kótarež su na njewěsty cas šćitane',
 'protectedpages-cascade' => 'Jano boki z kaskadowym šćitom',
-'protectedpagestext' => 'Slědujuce boki njamgu se mimo wósebnych pšawow wobźěłaś resp. pśesuwaś',
 'protectedpagesempty' => 'Z toś tymi parametrami njejsu tuchylu žedne boki šćitane.',
 'protectedtitles' => 'Šćitane titele',
-'protectedtitlestext' => 'Slědujuce titele su pśeśiwo twórjenjoju šćitane.',
 'protectedtitlesempty' => 'Tuchylu njejsu žedne boki z pódanych parametrami šćitane.',
 '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',
@@ -2048,7 +2135,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',
@@ -2120,7 +2208,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',
@@ -2153,7 +2241,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
 
@@ -2161,9 +2251,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}}}}
@@ -2200,10 +2291,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ś;
@@ -2222,7 +2315,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
@@ -2358,7 +2451,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):',
@@ -2670,6 +2763,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ś',
@@ -2751,7 +2846,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.',
@@ -2815,6 +2910,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. */',
@@ -2847,8 +2943,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"',
@@ -2862,13 +2958,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}})',
@@ -2947,7 +3044,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',
@@ -2976,11 +3073,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:
 
@@ -3192,7 +3303,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',
 
@@ -3398,10 +3509,6 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
 'exif-urgency-high' => 'Wusoka ($1)',
 'exif-urgency-other' => 'Swójska priorita ($1)',
 
-# External editor support
-'edit-externally' => 'Dataje z eksternym programom wobźěłaś',
-'edit-externally-help' => '(Za dalšne informacije glědaj [https://www.mediawiki.org/wiki/Manual:External_editors instalaciske instrukcije]).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wšykne',
 'namespacesall' => 'wšykne',
@@ -3488,6 +3595,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 →',
@@ -3586,6 +3696,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.
 
@@ -3599,6 +3710,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ś.',
@@ -3612,8 +3736,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',
@@ -3646,12 +3770,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}}',
 
@@ -3672,6 +3800,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ś.',
@@ -3687,6 +3816,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',
@@ -3804,4 +3936,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..8ac5f21 100644 (file)
@@ -157,7 +157,6 @@ $messages = array(
 'qbedit' => 'Idito',
 'qbpageoptions' => 'Bolikon diti',
 'qbmyoptions' => 'Bobolikonku ngawi',
-'qbspecialpages' => 'Bobolikon suaikowokon',
 'faq' => 'Ponguhatan Koinsoruan om Poninimbar',
 'faqpage' => 'Project:Ponguhatan Koinsoruan om Pininimbar',
 
@@ -273,8 +272,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}}',
@@ -370,9 +367,6 @@ Haro kaanto sokukuri do iso pimato it awu milo gunoon id pongkotuluhon.',
 'perfcachedts' => 'Data sumusuhut namadangkob, om nopinwoguan ontok $1. Sokiginumu {{PLURAL:$4|iso asil|$4 tangahasil nopo nga}} haro id dangkob diti.',
 'querypage-no-updates' => 'Pinisok ponginwoguan id bolikon diti.
 Awu nodi posikapon do popointalang iri data kawawagu.',
-'wrong_wfQuery_params' => 'Nokosilap tangaparamito mongoi wfQuery()<br />
-Kopomogunoon: $1<br />
-Pongimuhatan: $2',
 'viewsource' => 'Intaai wowonod',
 'viewsource-title' => 'Intaai wowonod montok do $1',
 'actionthrottled' => 'Momilos',
@@ -918,11 +912,7 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 # Search results
 'searchresults' => 'Kootuson nihuman',
 'searchresults-title' => 'Kootuson nihuman do "$1"',
-'searchresulttext' => 'Mongilo ko nopo do lobi ginumu kokomoi mogigihum {{SITENAME}}, intangai [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Minogihum ko do \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|oinsanan bolikon di kitimpuun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|oinsanan bolikon di kitoput "$1"]])',
-'searchsubtitleinvalid' => "Mogihum ko do '''$1'''",
 'titlematches' => 'Kopisangai tuluhon bolikon',
-'notitlematches' => 'Aiso bolikon di kopisangai',
 'textmatches' => 'Kopisangai tik bolikon',
 'notextmatches' => 'Aiso tik kopiontok id bolikon',
 'prevn' => 'poinguluon {{PLURAL:$1|$1}}',
@@ -931,7 +921,6 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 'nextn-title' => 'Sumusuhut $1 {{PLURAL:$1|kootuson|tongokootuson}}',
 'shown-title' => 'Pokitono $1 {{PLURAL:$1|kootuson|tongokootuson}} monikid bolikon',
 'viewprevnext' => 'Intaai ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilion ihum-ihumon',
 'searchmenu-exists' => "'''Haro no bolikon pinungaranan do \"[[:\$1]]\" hiti id wiki.'''",
 'searchmenu-new' => "'''Pomonsoi do bolikon \"[[:\$1]]\"hiti id wiki!'''",
 'searchprofile-articles' => 'Suang bobolikon',
@@ -957,14 +946,10 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 'searchrelated' => 'kompinaian',
 'searchall' => 'oinsanan',
 'showingresultsheader' => "{{PLURAL:$5|Kootuson '''$1''' of '''$3'''|Tongkootuson '''$1 - $2''' of '''$3'''}} montok '''$4'''",
-'nonefound' => "'''Panansarahan''': Haro pipiro no kinoiyonon ngaran it ihumon maya do poinsandad.
-Umbalai momogonop it ihumonnu miampai do ''all:'' mooi do oihum ot oinsanan suang (poinsuang bobolikon pogibabarasan, pomitanan wonsoi, om nunu nopo it kopiagal), toi momoguno kinoiyonon ngaran sobaagi do poninimpuun.",
 'search-nonefound' => 'Ingaa kootuson kaagal di kuiri.',
-'powersearch' => 'Pogigihum poimogot',
 'powersearch-legend' => 'Pogigihum poimogot',
 'powersearch-ns' => 'Pogihum momoguno ngaran:',
 'powersearch-redir' => 'Liniisan nopotilombus',
-'powersearch-field' => 'Ihumo ot',
 'powersearch-togglelabel' => 'Imuriai:',
 'powersearch-toggleall' => 'Oinsanan',
 'powersearch-togglenone' => 'Ingaa',
@@ -977,7 +962,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',
@@ -988,7 +972,6 @@ Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
 'prefs-changeemail' => 'Alanai porikatan surat-i',
 'prefs-rendering' => 'Kowoyowoyoon',
 'saveprefs' => 'Pogompio',
-'resetprefs' => 'Pugaso nalanan awu nogompi',
 'searchresultshead' => 'Ihumo',
 'servertime' => 'Timpu mamamalayan:',
 'guesstimezone' => 'Gunoo pinatantu do lalayagku',
@@ -1475,10 +1458,6 @@ Iri suai sinandad do poinlisok.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Idito pail diti momoguno do kangkaraja pongi-ngidit poinlabus',
-'edit-externally-help' => '(Intaai [https://www.mediawiki.org/wiki/Manual:External_editors karalan-ralanon papasang] do lobi gumu kointalangan)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'oinsanan',
 'namespacesall' => 'oinsanan',
index 87c5aeb..af33dfa 100644 (file)
@@ -185,7 +185,6 @@ $messages = array(
 'qbedit' => 'އުނިއިތުރުގެންނަވާ',
 'qbpageoptions' => 'މި ޞަފްޙާ',
 'qbmyoptions' => 'މަގޭ ސަފްހާ ތައް',
-'qbspecialpages' => 'ޚާއްޞަ ޞަފްޙާތައް',
 'faq' => 'އެފް.އޭ.ކިއު',
 'faqpage' => 'Project:އެފް.އޭ.ކިއު',
 
@@ -285,8 +284,6 @@ $1',
 'ok' => 'ރަނގަޅު',
 'retrievedfrom' => '$1 އިން',
 'youhavenewmessages' => 'ތިޔަބޭފުޅާއަށް $1 ($2)',
-'newmessageslink' => 'އައު މެސެޖުތައް',
-'newmessagesdifflink' => 'އެންމެ ފަހުގެ ބަދަލު',
 'youhavenewmessagesfromusers' => 'ތިބޭފުޅާއަށް {{PLURAL:$3|މެމްބަރެއް|$3 މެމްބަރުން}} $1 ފޮނުއްވާފައިވެއެވެ. ($2)',
 'youhavenewmessagesmanyusers' => 'ތިބޭފުޅާއަށް ގިނަ މެމްބަރުން $1 ފޮނުއްވާފައިވެއެވެ. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|އާ މެސެޖެއް|މެސެޖުތައް}}',
index a2ee1e2..9a68a53 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';
@@ -521,7 +528,6 @@ $messages = array(
 'qbedit' => 'Επεξεργασία',
 'qbpageoptions' => 'Αυτή η σελίδα',
 'qbmyoptions' => 'Οι σελίδες μου',
-'qbspecialpages' => 'Ειδικές σελίδες',
 'faq' => 'Συχνές ερωτήσεις',
 'faqpage' => 'Project:Συχνές ερωτήσεις',
 
@@ -637,8 +643,6 @@ $1',
 'ok' => 'Εντάξει',
 'retrievedfrom' => 'Ανακτήθηκε από «$1»',
 'youhavenewmessages' => 'Έχετε $1 ($2).',
-'newmessageslink' => 'νέα μηνύματα',
-'newmessagesdifflink' => 'τελευταία αλλαγή',
 'youhavenewmessagesfromusers' => 'Έχετε $1 από {{PLURAL:$3|έναν άλλο χρήστη|$3 χρήστες}} ($2).',
 'youhavenewmessagesmanyusers' => 'Έχετε $1 από πολλούς χρήστες ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ένα νέο μήνυμα|νέα μηνύματα}}',
@@ -733,9 +737,6 @@ $1',
 'perfcached' => 'Τα δεδομένα που ακολουθούν είναι cached και είναι πιθανόν να μην είναι επικαιροποιημένα. Ένα μέγιστο των  {{PLURAL:$1|one result is|$1 results are}} διαθέσιμο στην cache.',
 'perfcachedts' => 'Τα ακόλουθα δεδομένα είναι αποθηκευμένα στην προσωρινή μνήμη και ενημερώθηκαν τελευταία φορά στις $2 στις $3. Υπάρχει διαθέσιμο ένα μέγιστο {{PLURAL:$4|ενός αποτελέσματος|$4 αποτελεσμάτων}} στην προσωρινή μνήμη.',
 'querypage-no-updates' => 'Οι ενημερώσεις για αυτή τη σελίδα είναι απενεργοποιημένες. Τα δεδομένα εδώ δεν θα ανανεωθούν προς το παρόν.',
-'wrong_wfQuery_params' => 'Λανθασμένες παράμετροι στο wfQuery()<br />
-Λειτουργία: $1<br />
-Αίτημα: $2',
 'viewsource' => 'Προβολή κώδικα',
 'viewsource-title' => 'Προβολή πηγαίου κώδικα για τη σελίδα $1',
 'actionthrottled' => 'Περιορισμένη ενέργεια',
@@ -926,7 +927,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.",
@@ -1401,12 +1402,8 @@ $1",
 # Search results
 'searchresults' => 'Αποτελέσματα αναζήτησης',
 'searchresults-title' => 'Αποτελέσματα αναζήτησης για "$1"',
-'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' => 'Κείμενα σελίδων που ανταποκρίνονται:',
 'notextmatches' => 'Δεν υπάρχουν αντίστοιχα κείμενα σελίδων.',
 'prevn' => '{{PLURAL:$1|$1}} προηγουμένων',
@@ -1415,10 +1412,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Επόμενο $1 αποτέλεσμα|Επόμενα $1 αποτελέσματα}}',
 'shown-title' => 'Εμφάνιση $1 {{PLURAL:$1|αποτελέσματος|αποτελεσμάτων}} ανά σελίδα',
 'viewprevnext' => 'Εμφάνιση ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Επιλογές αναζήτησης',
 'searchmenu-exists' => "'''Υπάρχει μια σελίδα που ονομάζεται «[[:$1]]» σε αυτό το wiki.'''",
 'searchmenu-new' => "'''Δημιουργήστε τη σελίδα «[[:$1]]» σε αυτό το wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Πλοηγηθείτε σε σελίδες με αυτό το πρόθεμα]]',
 'searchprofile-articles' => 'Σελίδες περιεχομένου',
 'searchprofile-project' => 'Σελίδες Βοήθειας και Εγχειρήματος',
 'searchprofile-images' => 'Πολυμέσα',
@@ -1446,13 +1441,10 @@ $1",
 'showingresults' => "Δείτε παρακάτω μέχρι τα {{PLURAL:$1|'''1'''αποτέλεσμα|'''$1''' αποτελέσματα}} ξεκινώντας με #'''$2'''.",
 'showingresultsnum' => "Εμφάνιση {{PLURAL:$3|'''1''' αποτελέσματος|'''$3''' αποτελεσμάτων}} αρχίζοντας με #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Αποτέλεσμα '''$1''' από '''$3'''|Αποτελέσματα '''$1 - $2''' από '''$3'''}} για '''$4'''",
-'nonefound' => "'''Σημείωση''': Οι ανεπιτυχείς αναζητήσεις οφείλονται συνήθως στο ότι έχουμε συμπεριλάβει στα κριτήρια μόνο συγκεκριμένους ονοματοχώρους. Δοκιμάστε να προσθέσετε το πρόθεμα ''all:'' - ''όλα:'' στην αναζήτηση για να ψάξετε σε όλα τα περιεχόμενα (συμπεριλαμβανόμενων των σελίδων συζητήσεως, προτύπων κτλ.) ή χρησιμοποιήστε τον επιθυμητό ονοματοχώρο.",
 'search-nonefound' => 'Δεν υπάρχουν αποτελέσματα που να ικανοποιούν το ερώτημα.',
-'powersearch' => 'Αναλυτική αναζήτηση',
 'powersearch-legend' => 'Αναλυτική αναζήτηση',
 'powersearch-ns' => 'Αναζήτηση στις περιοχές ονομάτων:',
 'powersearch-redir' => 'Κατάλογος ανακατευθύνσεων',
-'powersearch-field' => 'Αναζήτηση για',
 'powersearch-togglelabel' => 'Έλεγχος:',
 'powersearch-toggleall' => 'Όλες',
 'powersearch-togglenone' => 'Καμία',
@@ -1464,8 +1456,6 @@ $1",
 'preferences' => 'Προτιμήσεις',
 'mypreferences' => 'Προτιμήσεις',
 'prefs-edits' => 'Αριθμός επεξεργασιών:',
-'prefsnologin' => 'Δεν έχετε συνδεθεί.',
-'prefsnologintext' => 'Πρέπει να έχετε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεθεί]</span> για να καθορίσετε τις προτιμήσεις χρήστη.',
 'changepassword' => 'Αλλαγή κωδικού',
 'prefs-skin' => 'Οπτική οργάνωση (skin)',
 'skin-preview' => 'Προεπισκόπηση',
@@ -1489,7 +1479,6 @@ $1",
 'prefs-email' => 'Επιλογές e-mail',
 'prefs-rendering' => 'Εμφάνιση',
 'saveprefs' => 'Αποθήκευση',
-'resetprefs' => 'Επαναφορά προτιμήσεων',
 'restoreprefs' => 'Επαναφορά όλων των προεπιλεγμένων ρυθμίσεων',
 'prefs-editing' => 'Επεξεργασία',
 'rows' => 'Σειρές',
@@ -1510,7 +1499,6 @@ $1",
 'localtime' => 'Εμφάνιση τοπικής ώρας:',
 'timezoneuseserverdefault' => 'Χρήση της προεπιλογής του wiki ($1)',
 'timezoneuseoffset' => 'Ἀλλη (καθορισμός της διαφοράς)',
-'timezoneoffset' => 'Διαφορά ωρών¹:',
 'servertime' => 'Η ώρα του διακομιστή:',
 'guesstimezone' => 'Συμπλήρωση μέσω του browser',
 'timezoneregion-africa' => 'Αφρική',
@@ -1759,6 +1747,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',
@@ -2242,10 +2231,8 @@ $1',
 'protectedpages' => 'Προστατευμένες σελίδες',
 'protectedpages-indef' => 'Προστασίες επαόριστον μόνο',
 'protectedpages-cascade' => 'Μόνο διαδοχικές προστασίες',
-'protectedpagestext' => 'Οι ακόλουθες σελίδες είναι προστατευμένες από μετακίνηση ή επεξεργασία',
 'protectedpagesempty' => 'Καμία σελίδα με αυτές τις παραμέτρους δεν είναι προς το παρόν προστατευμένη.',
 'protectedtitles' => 'Προστατευμένοι τίτλοι',
-'protectedtitlestext' => 'Οι επόμενοι τίτλοι είναι προστατευμένοι και δεν μπορούν να δημιουργηθούν',
 'protectedtitlesempty' => 'Δεν υπάρχουν προστατευμένοι τίτλοι με αυτές τις παραμέτρους.',
 'listusers' => 'Κατάλογος χρηστών',
 'listusers-editsonly' => 'Εμφάνιση μόνο των χρηστών με επεξεργασίες',
@@ -3745,10 +3732,6 @@ $1',
 'exif-urgency-high' => 'Υψηλή ($1)',
 'exif-urgency-other' => 'Προτεραιότητα που ορίστηκε από το χρήστη ($1)',
 
-# External editor support
-'edit-externally' => 'Επεξεργαστείτε αυτό το αρχείο χρησιμοποιώντας κάποια εξωτερική εφαρμογή',
-'edit-externally-help' => '(Βλ. [https://www.mediawiki.org/wiki/Manual:External_editors οδηγίες εγκατάστασης] για περισσότερες πληροφορίες)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'όλες',
 'namespacesall' => 'όλοι',
@@ -4181,4 +4164,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 b181726..f2b3b58 100644 (file)
@@ -406,6 +406,7 @@ $specialPageAliases = array(
        'DoubleRedirects'           => array( 'DoubleRedirects' ),
        'EditWatchlist'             => array( 'EditWatchlist' ),
        'Emailuser'                 => array( 'EmailUser' ),
+       'ExpandTemplates'           => array( 'ExpandTemplates', 'Expantemplates' ),
        'Export'                    => array( 'Export' ),
        'Fewestrevisions'           => array( 'FewestRevisions' ),
        'FileDuplicateSearch'       => array( 'FileDuplicateSearch' ),
@@ -814,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
@@ -939,12 +939,10 @@ See [[Special:Version|version page]].',
 'backlinksubtitle'             => '← $1', # only translate this message to other languages if you have to change it
 'retrievedfrom'                => 'Retrieved from "$1"',
 'youhavenewmessages'           => 'You have $1 ($2).',
-'newmessageslink'              => 'new messages',
-'newmessagesdifflink'          => 'last change',
 'youhavenewmessagesfromusers'  => 'You have $1 from {{PLURAL:$3|another user|$3 users}} ($2).',
 'youhavenewmessagesmanyusers'  => 'You have $1 from many users ($2).',
-'newmessageslinkplural'        => '{{PLURAL:$1|a new message|new messages}}',
-'newmessagesdifflinkplural'    => 'last {{PLURAL:$1|change|changes}}',
+'newmessageslinkplural'        => '{{PLURAL:$1|a new message|999=new messages}}',
+'newmessagesdifflinkplural'    => 'last {{PLURAL:$1|change|999=changes}}',
 'youhavenewmessagesmulti'      => 'You have new messages on $1',
 'newtalkseparator'             => ',&#32;', # do not translate or duplicate this message to other languages
 'editsection'                  => 'edit',
@@ -977,6 +975,7 @@ See [[Special:Version|version page]].',
 'sort-descending'              => 'Sort descending',
 'sort-ascending'               => 'Sort ascending',
 'interlanguage-link-title'     => '$1 – $2', # only translate this message to other languages if you have to change it
+'interlanguage-link-title-langonly' => '$1', # do not translate or duplicate this message to other languages
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main'      => 'Page',
@@ -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',
@@ -1099,7 +1095,7 @@ The administrator who locked it offered this explanation: "$3".',
 Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
 'welcomeuser'                     => 'Welcome, $1!',
 'welcomecreation-msg'             => 'Your account has been created.
-Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
+You can change your {{SITENAME}} [[Special:Preferences|preferences]] if you wish.',
 'yourname'                        => 'Username:',
 'userlogin-yourname'              => 'Username',
 'userlogin-yourname-ph'           => 'Enter your username',
@@ -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.',
@@ -1814,12 +1810,8 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-summary'                   => '', # do not translate or duplicate this message to other languages
 'searchresults'                    => 'Search results',
 'searchresults-title'              => 'Search results for "$1"',
-'searchresulttext'                 => 'For more information about searching {{SITENAME}}, see [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle'                   => 'You searched for \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'searchsubtitleinvalid'            => "You searched for '''$1'''",
 'toomanymatches'                   => 'Too many matches were returned, please try a different query',
 'titlematches'                     => 'Page title matches',
-'notitlematches'                   => 'No page title matches',
 'textmatches'                      => 'Page text matches',
 'notextmatches'                    => 'No page text matches',
 'prevn'                            => 'previous {{PLURAL:$1|$1}}',
@@ -1828,11 +1820,9 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title'                      => 'Next $1 {{PLURAL:$1|result|results}}',
 'shown-title'                      => 'Show $1 {{PLURAL:$1|result|results}} per page',
 'viewprevnext'                     => 'View ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend'                => 'Search options',
 'searchmenu-exists'                => "'''There is a page named \"[[:\$1]]\" on this wiki.'''",
 'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!'''",
 'searchmenu-new-nocreate'          => '', # do not translate or duplicate this message to other languages
-'searchmenu-prefix'                => '[[Special:PrefixIndex/$1|Browse pages with this prefix]]',
 'searchprofile-articles'           => 'Content pages',
 'searchprofile-project'            => 'Help and Project pages',
 'searchprofile-images'             => 'Multimedia',
@@ -1854,21 +1844,16 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-interwiki-custom'          => '', # do not translate or duplicate this message to other languages
 'search-interwiki-more'            => '(more)',
 'search-relatedarticle'            => 'Related',
-'mwsuggest-disable'                => 'Disable search suggestions',
 'searcheverything-enable'          => 'Search in all namespaces',
 'searchrelated'                    => 'related',
 'searchall'                        => 'all',
 'showingresults'                   => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
 'showingresultsnum'                => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
 'showingresultsheader'             => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
-'nonefound'                        => "'''Note:''' Only some namespaces are searched by default.
-Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc), or use the desired namespace as prefix.",
 'search-nonefound'                 => 'There were no results matching the query.',
-'powersearch'                      => 'Advanced search',
 'powersearch-legend'               => 'Advanced search',
 'powersearch-ns'                   => 'Search in namespaces:',
 'powersearch-redir'                => 'List redirects',
-'powersearch-field'                => 'Search for',
 'powersearch-togglelabel'          => 'Check:',
 'powersearch-toggleall'            => 'All',
 'powersearch-togglenone'           => 'None',
@@ -1899,7 +1884,6 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 'preferences-summary'           => '', # do not translate or duplicate this message to other languages
 'mypreferences'                 => 'Preferences',
 'prefs-edits'                   => 'Number of edits:',
-'prefsnologin'                  => 'Not logged in',
 'prefsnologintext2'             => 'Please $1 to set user preferences.',
 'changepassword'                => 'Change password',
 'changepassword-summary'        => '', # do not translate or duplicate this message to other languages
@@ -1925,7 +1909,6 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 'prefs-email'                   => 'Email options',
 'prefs-rendering'               => 'Appearance',
 'saveprefs'                     => 'Save',
-'resetprefs'                    => 'Clear unsaved changes',
 'restoreprefs'                  => 'Restore all default settings (in all sections)',
 'prefs-editing'                 => 'Editing',
 'rows'                          => 'Rows:',
@@ -1946,7 +1929,6 @@ Anyone who knows it will be able to read your watchlist, so do not share it.
 'localtime'                     => 'Local time:',
 'timezoneuseserverdefault'      => 'Use wiki default ($1)',
 'timezoneuseoffset'             => 'Other (specify offset)',
-'timezoneoffset'                => 'Offset¹:',
 'servertime'                    => 'Server time:',
 'guesstimezone'                 => 'Fill in from browser',
 'timezoneregion-africa'         => 'Africa',
@@ -2210,6 +2192,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',
@@ -2770,11 +2755,9 @@ It now redirects to [[$2]].',
 'protectedpages-indef'            => 'Indefinite protections only',
 'protectedpages-summary'          => '', # do not translate or duplicate this message to other languages
 'protectedpages-cascade'          => 'Cascading protections only',
-'protectedpagestext'              => 'The following pages are protected from moving or editing',
 'protectedpagesempty'             => 'No pages are currently protected with these parameters.',
 'protectedtitles'                 => 'Protected titles',
 'protectedtitles-summary'         => '', # do not translate or duplicate this message to other languages
-'protectedtitlestext'             => 'The following titles are protected from creation',
 'protectedtitlesempty'            => 'No titles are currently protected with these parameters.',
 'listusers'                       => 'User list',
 'listusers-summary'               => '', # do not translate or duplicate this message to other languages
@@ -3018,9 +3001,9 @@ Contact the editor:
 mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-There will be no other notifications in case of further activity unless you visit this page. You could also reset the notification flags for all your watched pages on your watchlist.
+There will be no other notifications in case of further activity unless you visit this page while logged in. You could also reset the notification flags for all your watched pages on your watchlist.
 
-                        Your friendly {{SITENAME}} notification system
+Your friendly {{SITENAME}} notification system
 
 --
 To change your email notification settings, visit
@@ -3223,7 +3206,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:',
@@ -4535,10 +4518,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',
@@ -4900,8 +4879,8 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 # Special:SpecialPages
 'specialpages'                   => 'Special pages',
 'specialpages-summary'           => '', # do not translate or duplicate this message to other languages
-'specialpages-note'              => '----
-* Normal special pages.
+'specialpages-note-top'          => 'Legend',
+'specialpages-note'              => '* Normal special pages.
 * <span class="mw-specialpagerestricted">Restricted special pages.</span>',
 'specialpages-group-maintenance' => 'Maintenance reports',
 'specialpages-group-other'       => 'Other special pages',
@@ -5146,4 +5125,20 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'limitreport-expensivefunctioncount'       => 'Expensive parser function count',
 'limitreport-expensivefunctioncount-value' => '$1/$2', # only translate this message to other languages if you have to change it
 
+# ExpandTemplates
+'expandtemplates'                  => 'Expand templates',
+'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>.
+In fact, it expands pretty much everything in double-braces.',
+'expand_templates_title'           => 'Context title, for {{FULLPAGENAME}}, etc.:',
+'expand_templates_input'           => 'Input text:',
+'expand_templates_output'          => 'Result',
+'expand_templates_xml_output'      => 'XML output',
+'expand_templates_ok'              => 'OK',
+'expand_templates_remove_comments' => 'Remove comments',
+'expand_templates_remove_nowiki'   => 'Suppress <nowiki> tags in result',
+'expand_templates_generate_xml'    => 'Show XML parse tree',
+'expand_templates_preview'         => 'Preview',
 );
index 93ea15e..33820f4 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' ),
@@ -481,7 +480,6 @@ $messages = array(
 'qbedit' => 'Redakti',
 'qbpageoptions' => 'Paĝagado',
 'qbmyoptions' => 'Personaĵoj',
-'qbspecialpages' => 'Specialaj paĝoj',
 'faq' => 'Oftaj demandoj',
 'faqpage' => 'Project:Oftaj demandoj',
 
@@ -581,7 +579,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 +595,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}}',
@@ -699,9 +695,6 @@ Eble ĝi estis jam forigita de iu alia.',
 'perfcachedts' => 'La jenaj datumoj estas el kaŝmemoro kaj estis laste ĝisdatigitaj $1. Maksimumo de {{PLURAL:$4|unu rezulto estas disponebla|$4 rezultoj estas disponeblaj}} en la kaŝmemoro.',
 'querypage-no-updates' => 'Ĝisdatigoj por ĉi paĝo estas nune neebligitaj.
 Datenoj ĉi tie ne estos nune refreŝigitaj.',
-'wrong_wfQuery_params' => 'Malĝustaj parametroj por wfQuery()<br />
-Funkcio: $1<br />
-Peto: $2',
 'viewsource' => 'Rigardi vikitekston',
 'viewsource-title' => 'Vidi fonton por $1',
 'actionthrottled' => 'Agado limigita',
@@ -1376,12 +1369,8 @@ 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}}]].',
-'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.',
 'titlematches' => 'Trovitaj laŭ titolo',
-'notitlematches' => 'Neniu trovita laŭ titolo',
 'textmatches' => 'Trovitaj laŭ enhavo',
 'notextmatches' => 'Neniu trovita laŭ enhavo',
 'prevn' => '{{PLURAL:$1|$1 antaŭa|$1 antaŭaj}}',
@@ -1390,10 +1379,8 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'nextn-title' => '{{PLURAL:$1|Posta $1 rezulto|Postaj $1 rezultoj}}',
 'shown-title' => 'Montri {{PLURAL:$1|$1 rezulton|$1 rezultojn}} en paĝo',
 'viewprevnext' => 'Montri ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Serĉaj opcioj',
 'searchmenu-exists' => "'''Estas paĝo nomita \"[[:\$1]]\" en ĉi tiu vikio'''",
 'searchmenu-new' => "'''Krei la paĝon \"[[:\$1]]\" en ĉi tiu vikio!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Traserĉi paĝojn kun ĉi tiu prefikso]]',
 'searchprofile-articles' => 'Enhavaj paĝoj',
 'searchprofile-project' => 'Paĝoj pri Helpo kaj Projektoj',
 'searchprofile-images' => 'Plurmedio',
@@ -1421,14 +1408,10 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'showingresults' => "Montras {{PLURAL:$1|'''1''' trovitan|'''$1''' trovitajn}} ekde la #'''$2'''-a.",
 'showingresultsnum' => "Montras {{PLURAL:$3|'''1''' trovitan|'''$3''' trovitajn}} ekde la #'''$2'''-a.",
 'showingresultsheader' => "{{PLURAL:$5|Rezulto '''$1''' el '''$3'''|Rezultoj '''$1 – $2''' el '''$3'''}} por '''$4'''",
-'nonefound' => "'''Notu''':  Nur kelkaj nomspacoj estas serĉitaj defaulte.
-Provu prefiksi vian mendon kun ''all:'' por serĉi ĉiun enhavon (inkluzivante diskuto-paĝojn, ŝablonojn, ktp), aŭ uzi la deziritan nomspacon kiel prefikson.",
 'search-nonefound' => 'La serĉomendo rezultis kun neniuj trafoj.',
-'powersearch' => 'Progresa trovilo',
 'powersearch-legend' => 'Progresa serĉo',
 'powersearch-ns' => 'Serĉi en nomspacoj:',
 'powersearch-redir' => 'Listigi alidirektilojn',
-'powersearch-field' => 'Serĉi',
 'powersearch-togglelabel' => 'Elekti:',
 'powersearch-toggleall' => 'Ĉion',
 'powersearch-togglenone' => 'Nenion',
@@ -1441,8 +1424,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!',
-'prefsnologintext' => 'Vi devas esti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ensalutita]</span> por fari viajn preferojn.',
 'changepassword' => 'Ŝanĝi pasvorton',
 'prefs-skin' => 'Etoso',
 'skin-preview' => 'Antaŭrigardo',
@@ -1466,7 +1447,6 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'prefs-email' => 'Retpoŝtaj opcioj',
 'prefs-rendering' => 'Aspekto',
 'saveprefs' => 'Konservi preferojn',
-'resetprefs' => 'Forviŝi nekonservitajn ŝanĝojn',
 'restoreprefs' => 'Restarigi ĉiujn defaŭltajn preferojn',
 'prefs-editing' => 'Redaktado',
 'rows' => 'Linioj:',
@@ -1484,7 +1464,6 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'localtime' => 'Loka tempo:',
 'timezoneuseserverdefault' => 'Uzi defaŭlton de servilo ($1)',
 'timezoneuseoffset' => 'Alia (Enigu diferencon)',
-'timezoneoffset' => 'Diferenco¹:',
 'servertime' => 'Servila tempo:',
 'guesstimezone' => 'Plenigita el la foliumilo',
 'timezoneregion-africa' => 'Afriko',
@@ -1731,6 +1710,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"',
@@ -2203,10 +2183,8 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
 'protectedpages' => 'Protektitaj paĝoj',
 'protectedpages-indef' => 'Nur ĉiamaj protektaĵoj',
 'protectedpages-cascade' => 'Nur kaskadaj protektoj',
-'protectedpagestext' => 'La sekvaj paĝoj estas protektitaj kontraŭ movigo aŭ redaktado',
 'protectedpagesempty' => 'Neniuj paĝoj estas momente protektitaj kun ĉi tiuj parametroj.',
 'protectedtitles' => 'Protektitaj titoloj',
-'protectedtitlestext' => 'La jenaj titoloj estas protektitaj kontraŭ kreado',
 'protectedtitlesempty' => 'Neniuj titoloj estas nune protektitaj kun ĉi parametroj.',
 'listusers' => 'Uzantaro',
 'listusers-editsonly' => 'Montri uzantojn kun redaktoj nur',
@@ -2953,9 +2931,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!',
@@ -3714,10 +3692,6 @@ Aliaj estos kaŝitaj defaŭlte.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioritato difinita de uzanto ($1)',
 
-# External editor support
-'edit-externally' => 'Ŝanĝi ĉi tiun dosieron per ekstera programaro',
-'edit-externally-help' => "(Vidu la [https://www.mediawiki.org/wiki/Manual:External_editors instalinstrukciojn] por pliaj informoj.) ''[angle]''.",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ĉiuj',
 'namespacesall' => 'ĉiuj',
@@ -3983,8 +3957,7 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 
 # Special:SpecialPages
 'specialpages' => 'Specialaj paĝoj',
-'specialpages-note' => '----
-* Normaj specialaj paĝoj.
+'specialpages-note' => '* Normaj specialaj paĝoj.
 * <strong class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</strong>
 * <span class="mw-specialpagecached">Memorkaŝitaj specialaj paĝoj (eble malaktualaj).</span>',
 'specialpages-group-maintenance' => 'Raportoj pri prizorgado',
@@ -4175,4 +4148,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 5ee3f91..ccc9d02 100644 (file)
@@ -49,6 +49,7 @@
  * @author Hazard-SJ
  * @author Hercule
  * @author Icvav
+ * @author Ihojose
  * @author Imre
  * @author Invadinado
  * @author Jatrobat
@@ -138,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' ),
@@ -155,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' ),
@@ -200,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' ),
@@ -221,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' ),
@@ -283,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' ),
@@ -383,10 +390,10 @@ $messages = array(
 'tog-extendwatchlist' => 'Expandir la lista de seguimiento a todos los cambios, no sólo a los más recientes',
 'tog-usenewrc' => 'Agrupar los cambios por página en los cambios recientes y en la lista de seguimiento (requiere JavaScript)',
 'tog-numberheadings' => 'Numerar automáticamente los encabezados',
-'tog-showtoolbar' => 'Mostrar la barra de edición (requiere JavaScript)',
-'tog-editondblclick' => 'Editar las páginas con doble clic (requiere JavaScript)',
-'tog-editsection' => 'Habilitar la edición de secciones mediante el enlace [editar]',
-'tog-editsectiononrightclick' => 'Habilitar la edición de secciones pulsando el botón derecho en los títulos de secciones (requiere JavaScript)',
+'tog-showtoolbar' => 'Mostrar la barra de edición',
+'tog-editondblclick' => 'Editar las páginas al pulsar dos veces en ellos con el ratón',
+'tog-editsection' => 'Activar la edición de secciones mediante el enlace [editar]',
+'tog-editsectiononrightclick' => 'Activar la edición de secciones pulsando el botón derecho en los títulos de secciones',
 'tog-showtoc' => 'Mostrar el índice (para páginas con más de 3 encabezados)',
 'tog-rememberpassword' => 'Recordar mi nombre de usuario y contraseña entre sesiones en este navegador (por un máximo de $1 {{PLURAL:$1|día|días}})',
 'tog-watchcreations' => 'Añadir las páginas que cree y los archivos que suba a mi lista de seguimento',
@@ -404,7 +411,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Mostrar el número de usuarios que la vigilan',
 'tog-oldsig' => 'Firma actual:',
 'tog-fancysig' => 'Tratar la firma como wikitexto (sin un enlace automático)',
-'tog-uselivepreview' => 'Usar previsualización en vivo (requiere JavaScript) (experimental)',
+'tog-uselivepreview' => 'Usar previsualización dinámica (experimental)',
 'tog-forceeditsummary' => 'Avisarme cuando grabe la página sin introducir un resumen de edición',
 'tog-watchlisthideown' => 'Ocultar mis ediciones en la lista de seguimiento',
 'tog-watchlisthidebots' => 'Ocultar las ediciones de bots en la lista de seguimiento',
@@ -427,7 +434,7 @@ $messages = array(
 # Font style option in Special:Preferences
 'editfont-style' => 'Estilo de tipografía del área de edición:',
 'editfont-default' => 'Predeterminado del navegador',
-'editfont-monospace' => 'Tipografía monoespaciada',
+'editfont-monospace' => 'Tipo de letra monoespaciado',
 'editfont-sansserif' => 'Tipo de letra de palo seco',
 'editfont-serif' => 'Tipo de letra con serifas',
 
@@ -442,7 +449,7 @@ $messages = array(
 'sun' => 'dom',
 'mon' => 'lun',
 'tue' => 'mar',
-'wed' => 'mie',
+'wed' => 'mié',
 'thu' => 'jue',
 'fri' => 'vie',
 'sat' => 'sab',
@@ -474,7 +481,7 @@ $messages = array(
 'feb' => 'feb',
 'mar' => 'mar',
 'apr' => 'abr',
-'may' => 'mayo',
+'may' => 'may',
 'jun' => 'jun',
 'jul' => 'jul',
 'aug' => 'ago',
@@ -497,10 +504,10 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categoría|Categorías}}',
-'category_header' => 'Artículos en la categoría «$1»',
+'category_header' => 'Páginas en la categoría «$1»',
 'subcategories' => 'Subcategorías',
 'category-media-header' => 'Archivos multimedia en la categoría «$1»',
-'category-empty' => "''La categoría no contiene actualmente ningún artículo o archivo multimedia.''",
+'category-empty' => "''La categoría no contiene ninguna página o archivo.''",
 'hidden-categories' => '{{PLURAL:$1|Categoría escondida|Categorías escondidas}}',
 'hidden-category-category' => 'Categorías ocultas',
 'category-subcat-count' => '{{PLURAL:$2|Esta categoría solo contiene la siguiente subcategoría.|Esta categoría contiene {{PLURAL:$1|la siguiente subcategoría|las siguientes $1 subcategorías}}, de un total de $2.}}',
@@ -510,8 +517,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Esta categoría contiene solamente el siguiente archivo.|{{PLURAL:$1|El siguiente archivo pertenece|Los siguientes $1 archivos pertenecen}} a esta categoría, de un total de $2.}}',
 'category-file-count-limited' => '{{PLURAL:$1|El siguiente fichero pertenece|Los siguientes $1 ficheros pertenecen}} a esta categoría.',
 'listingcontinuesabbrev' => 'cont.',
-'index-category' => 'Páginas indexadas',
-'noindex-category' => 'Páginas no indexadas',
+'index-category' => 'Páginas indizadas',
+'noindex-category' => 'Páginas no indizadas',
 'broken-file-category' => 'Páginas con enlaces rotos a archivos',
 
 'about' => 'Acerca de',
@@ -520,7 +527,7 @@ $messages = array(
 'cancel' => 'Cancelar',
 'moredotdotdot' => 'Más...',
 'morenotlisted' => 'Esta lista no está completa.',
-'mypage' => 'Mi página',
+'mypage' => 'Página',
 'mytalk' => 'Discusión',
 'anontalk' => 'Discusión para esta IP',
 'navigation' => 'Navegación',
@@ -532,9 +539,8 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Opciones de página',
 'qbmyoptions' => 'Mis páginas',
-'qbspecialpages' => 'Páginas especiales',
 'faq' => 'Preguntas más frecuentes',
-'faqpage' => 'Project:FAQ',
+'faqpage' => 'Project:P+F',
 
 # Vector skin
 'vector-action-addsection' => 'Nueva sección',
@@ -548,7 +554,7 @@ $messages = array(
 'vector-view-edit' => 'Editar',
 'vector-view-history' => 'Ver historial',
 'vector-view-view' => 'Leer',
-'vector-view-viewsource' => 'Ver fuente',
+'vector-view-viewsource' => 'Ver código',
 'actions' => 'Acciones',
 'namespaces' => 'Espacios de nombres',
 'variants' => 'Variantes',
@@ -588,7 +594,7 @@ $messages = array(
 'talkpagelinktext' => 'Discusión',
 'specialpage' => 'Página especial',
 'personaltools' => 'Herramientas personales',
-'postcomment' => 'Nueva sección',
+'postcomment' => 'Sección nueva',
 'articlepage' => 'Ver artículo',
 'talk' => 'Discusión',
 'views' => 'Vistas',
@@ -629,7 +635,7 @@ $1',
 'disclaimers' => 'Aviso legal',
 'disclaimerpage' => 'Project:Limitación general de responsabilidad',
 'edithelp' => 'Ayuda de edición',
-'helppage' => 'Help:Contenidos',
+'helppage' => 'Help:Contenido',
 'mainpage' => 'Página principal',
 'mainpage-description' => 'Página principal',
 'policy-url' => 'Project:Políticas',
@@ -648,32 +654,30 @@ $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',
-'viewsourceold' => 'ver código fuente',
+'viewsourceold' => 'ver código',
 'editlink' => 'modificar',
-'viewsourcelink' => 'ver fuente',
+'viewsourcelink' => 'ver código',
 'editsectionhint' => 'Editar sección: $1',
 'toc' => 'Contenido',
 'showtoc' => 'mostrar',
 'hidetoc' => 'ocultar',
-'collapsible-collapse' => 'Ocultar',
-'collapsible-expand' => 'Mostrar',
+'collapsible-collapse' => 'Contraer',
+'collapsible-expand' => 'Expandir',
 'thisisdeleted' => '¿Ver o restaurar $1?',
-'viewdeleted' => '¿Deseas ver $1?',
+'viewdeleted' => '¿Quieres ver $1?',
 'restorelink' => '{{PLURAL:$1|una edición borrada|$1 ediciones borradas}}',
-'feedlinks' => 'Sindicación:',
-'feed-invalid' => 'Tipo de subscripción a sindicación de noticias inválida.',
-'feed-unavailable' => 'Las fuentes web no están disponibles',
-'site-rss-feed' => '$1 Fuente RSS',
-'site-atom-feed' => 'Feed Atom de $1',
+'feedlinks' => 'Canal:',
+'feed-invalid' => 'El tipo de canal de suscripción no es válido.',
+'feed-unavailable' => 'Los canales de sindicación no están disponibles',
+'site-rss-feed' => 'Canal RSS de $1',
+'site-atom-feed' => 'Canal Atom de $1',
 'page-rss-feed' => 'Canal RSS «$1»',
 'page-atom-feed' => 'Canal Atom «$1»',
 'red-link-title' => '$1 (la página no existe)',
@@ -683,7 +687,7 @@ $1',
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Página',
 'nstab-user' => 'Página {{GENDER:{{ROOTPAGENAME}}|del usuario|de la usuaria}}',
-'nstab-media' => 'Media',
+'nstab-media' => 'Multimedia',
 'nstab-special' => 'Página especial',
 'nstab-project' => 'Página del proyecto',
 'nstab-image' => 'Archivo',
@@ -693,8 +697,8 @@ $1',
 'nstab-category' => 'Categoría',
 
 # Main script and global functions
-'nosuchaction' => 'No existe tal acción',
-'nosuchactiontext' => 'La acción especificada en la dirección es inválida.
+'nosuchaction' => 'No existe esa acción',
+'nosuchactiontext' => 'La acción especificada en la dirección no es válida.
 Es posible que hayas escrito mal la URL o que hayas seguido un enlace incorrecto. Esto también podría indicar un error en el software utilizado en {{SITENAME}}.',
 'nosuchspecialpage' => 'No existe esa página especial',
 'nospecialpagetext' => '<strong>Ha solicitado una página especial inexistente.</strong>
@@ -750,12 +754,9 @@ Puede que contenga uno o más caracteres que no se pueden usar en los títulos.'
 'perfcached' => 'Los siguientes datos provienen de la caché y pueden no estar actualizados. La caché puede contener {{PLURAL:$1|un resultado|$1 resultados}} como máximo.',
 'perfcachedts' => 'Los siguientes datos provienen de la caché y su última fecha y hora de actualización es: $1. La caché puede contener {{PLURAL:$4|un resultado|$4 resultados}} como máximo.',
 'querypage-no-updates' => 'Actualmente las actualizaciones de esta página están desactivadas. Estos datos no serán actualizados a corto plazo.',
-'wrong_wfQuery_params' => 'Parámetros incorrectos para wfQuery()<br />
-Función: $1<br />
-Consulta: $2',
-'viewsource' => 'Ver fuente',
-'viewsource-title' => 'Ver el código fuente de «$1»',
-'actionthrottled' => 'Acción bloqueada',
+'viewsource' => 'Ver código',
+'viewsource-title' => 'Ver el código de «$1»',
+'actionthrottled' => 'Acción limitada',
 'actionthrottledtext' => "Como medida contra el ''spam'', la acción que estás realizando está limitada a un número determinado de veces en un periodo corto de tiempo, y has excedido ese límite. Por favor inténtalo de nuevo en unos minutos.",
 'protectedpagetext' => 'Esta página ha sido protegida para evitar su edición u otras acciones.',
 'viewsourcetext' => 'Puedes ver y copiar el código fuente de esta página:',
@@ -782,7 +783,8 @@ El administrador que lo ha bloqueado ofrece esta explicación: "$3".',
 'invalidtitle-knownnamespace' => 'Título no válido con el espacio de nombres "$2" y el texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título no válido con número de espacio de nombres desconocido  $1  y el texto "$2"',
 'exception-nologin' => 'No has iniciado sesión',
-'exception-nologin-text' => 'Esta página o acción requiere que inicies sesión en este wiki.',
+'exception-nologin-text' => '[[Special:Userlogin|Inicia sesión]] para acceder a esta página o acción.',
+'exception-nologin-text-manual' => 'Necesitas $1 para acceder a esta página o acción.',
 
 # Virus scanner
 'virus-badscanner' => "Error de configuración: Antivirus desconocido: ''$1''",
@@ -826,7 +828,7 @@ No olvides personalizar tus [[Special:Preferences|preferencias de {{SITENAME}}]]
 'nologinlink' => 'Crear una cuenta',
 'createaccount' => 'Crear una cuenta',
 'gotaccount' => '¿Ya tienes una cuenta? $1.',
-'gotaccountlink' => 'Entrar',
+'gotaccountlink' => 'Iniciar sesión',
 'userlogin-resetlink' => '¿Olvidaste tus datos de acceso?',
 'userlogin-resetpassword-link' => '¿Has olvidado tu contraseña?',
 'helplogin-url' => 'Help:Inicio de sesión',
@@ -849,13 +851,13 @@ Usa el formulario de abajo para iniciar sesión como otro usuario.',
 'createacct-imgcaptcha-ph' => 'Escribe el texto de arriba',
 'createacct-submit' => 'Crea tu cuenta',
 'createacct-another-submit' => 'Crear otra cuenta',
-'createacct-benefit-heading' => '{{SITENAME}} lo construye gente como tú.',
+'createacct-benefit-heading' => '{{SITENAME}} es hecha por gente como tú.',
 'createacct-benefit-body1' => '{{PLURAL:$1|edición|ediciones}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|página|páginas}}',
 'createacct-benefit-body3' => '{{PLURAL:$1|colaborador reciente|colaboradores recientes}}',
 'badretype' => 'Las contraseñas no coinciden.',
 'userexists' => 'El nombre de usuario indicado ya está en uso.
-Por favor escoge un nombre diferente.',
+Elige un nombre diferente.',
 'loginerror' => 'Error de inicio de sesión',
 'createacct-error' => 'Error al crear la cuenta',
 'createaccounterror' => 'No se pudo crear la cuenta: $1',
@@ -876,13 +878,13 @@ Revisa la ortografía, o [[Special:UserLogin/signup|crea una cuenta nueva]].',
 'nouserspecified' => 'Debes especificar un nombre de usuario.',
 'login-userblocked' => 'Este usuario está bloqueado. Inicio de sesión no permitido.',
 'wrongpassword' => 'La contraseña indicada es incorrecta.
-Por favor, inténtalo de nuevo.',
+Inténtalo de nuevo.',
 'wrongpasswordempty' => 'No has escrito una contraseña.
-Por favor, inténtalo de nuevo.',
+Inténtalo de nuevo.',
 'passwordtooshort' => 'Las contraseñas deben tener al menos {{PLURAL:$1|1 caracter|$1 caracteres}}.',
 'password-name-match' => 'Tu contraseña debe ser diferente de tu nombre de usuario.',
 'password-login-forbidden' => 'El uso de este nombre de usuario y contraseña han sido prohibidos.',
-'mailmypassword' => 'Enviar una nueva contraseña por correo electrónico',
+'mailmypassword' => 'Restablecer la contraseña',
 'passwordremindertitle' => 'Recordatorio de contraseña de {{SITENAME}}',
 'passwordremindertext' => 'Alguien (probablemente tú, desde la dirección IP $1) solicitó que te enviáramos una nueva contraseña para tu cuenta en {{SITENAME}} ($4).
 Se ha creado la siguiente contraseña temporal para el usuario «$2»: «$3»
@@ -910,7 +912,7 @@ Hasta que lo hagas, las siguientes funciones no estarán disponibles.',
 Por favor, escribe una dirección en el formato adecuado o deja el campo en blanco.',
 'cannotchangeemail' => 'Las direcciones de la correo electrónico de las cuentas de usuario no puedes cambiarse en esta wiki.',
 'emaildisabled' => 'Este sitio no puede enviar mensajes de correo electrónico.',
-'accountcreated' => 'Cuenta creada',
+'accountcreated' => 'Se ha creado la cuenta',
 'accountcreatedtext' => 'La cuenta de usuario de [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) ha sido creada.',
 'createaccount-title' => 'Creación de cuenta para {{SITENAME}}',
 'createaccount-text' => 'Alguien creó en {{SITENAME}} ($4) una cuenta asociada a este correo electrónico con el nombre «$2».
@@ -953,7 +955,7 @@ Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
 # Special:PasswordReset
 'passwordreset' => 'Restablecimiento de contraseña',
 'passwordreset-text-one' => 'Completa este formulario para restablecer tu contraseña.',
-'passwordreset-text-many' => '{{PLURAL:$1|Completa uno de los campos para restablecer tu contraseña.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Rellena uno de los campos para restablecer la contraseña.}}',
 'passwordreset-legend' => 'Restablecer contraseña',
 'passwordreset-disabled' => 'Se ha desactivado el restablecimiento de contraseñas en este wiki.',
 'passwordreset-emaildisabled' => 'Las funciones de correo electrónico han sido desactivadas en esta wiki.',
@@ -1037,16 +1039,16 @@ Deberías hacerlo si accidentalmente la has compartido con alguien o si su cuent
 'subject' => 'Asunto/encabezado:',
 'minoredit' => 'Esta es una edición menor',
 'watchthis' => 'Vigilar esta página',
-'savearticle' => 'Grabar la página',
+'savearticle' => 'Guardar la página',
 'preview' => 'Previsualizar',
 'showpreview' => 'Mostrar previsualización',
-'showlivepreview' => 'Previsualización inmediata',
-'showdiff' => 'Mostrar cambios',
+'showlivepreview' => 'Previsualización dinámica',
+'showdiff' => 'Mostrar los cambios',
 'anoneditwarning' => "'''Aviso:''' No has iniciado sesión con una cuenta de usuario.
 Tu dirección IP se almacenará en el historial de ediciones de la página.",
 'anonpreviewwarning' => "''No has iniciado sesión con una cuenta de usuario. Al guardar los cambios se almacenará tu dirección IP en el historial de edición de la página.''",
 'missingsummary' => "'''Atención:''' No has escrito un resumen de edición. Si haces clic nuevamente en «{{int:savearticle}}» tu edición se grabará sin él.",
-'missingcommenttext' => 'Por favor, introduce un texto debajo.',
+'missingcommenttext' => 'Escribe un comentario a continuación.',
 'missingcommentheader' => "'''Recordatorio:''' No has escrito un título para este comentario. Si haces clic nuevamente en \"{{int:savearticle}}\" tu edición se grabará sin él.",
 'summary-preview' => 'Previsualización del resumen:',
 'subject-preview' => 'Previsualización del tema/título:',
@@ -1089,7 +1091,7 @@ Quizá ha sido movida o borrada mientras visitabas la página.',
 'loginreqtitle' => 'Es necesario iniciar sesión',
 'loginreqlink' => 'iniciar sesión',
 'loginreqpagetext' => 'Debes $1 para ver otras páginas.',
-'accmailtitle' => 'La contraseña ha sido enviada.',
+'accmailtitle' => 'Se ha enviado la contraseña',
 'accmailtext' => 'Se ha enviado a $2 una contraseña generada aleatoriamente para [[User talk:$1|$1]].
 
 La contraseña para esta nueva cuenta puede cambiarse en [[Special:ChangePassword|la página destinada para ello]] después de haber iniciado sesión.',
@@ -1104,10 +1106,10 @@ Puedes [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otra
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
 'noarticletext-nopermission' => 'Actualmente no hay texto en esta página.
 Puedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas, o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>, pero no tienes permiso para crear esta página.',
-'missing-revision' => 'La revisión #$1 de la página «{{PAGENAME}}» no existe.
+'missing-revision' => 'La revisión n.º $1 de la página llamada «{{PAGENAME}}» no existe.
 
-Esto suele deberse a seguir un enlace obsoleto hacia el historial de una página que ya ha sido borrada.
-Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrado].',
+Normalmente esto ocurre cuando se sigue un enlace de historial obsoleto que apunta a una página ya borrada.
+Puedes encontrar detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].',
 'userpage-userdoesnotexist' => 'La cuenta de usuario «<nowiki>$1</nowiki>» no está registrada. Por favor comprueba si quieres crear o editar esta página.',
 'userpage-userdoesnotexist-view' => 'La cuenta de usuario «$1» no está registrada.',
 'blocked-notice-logextract' => 'Este usuario está actualmente bloqueado.
@@ -1134,8 +1136,8 @@ La última entrada del registro de bloqueos se proporciona debajo para mayor ref
 ¡Tus cambios aún no se han guardado!",
 'continue-editing' => 'Ir al área de edición',
 'previewconflict' => 'Esta previsualización refleja el texto en el área de edición superior como aparecerá una vez guardados los cambios.',
-'session_fail_preview' => "'''Lo sentimos, no pudimos procesar la edición debido a una pérdida de los datos de sesión.'''
-Por favor, inténtalo de nuevo.
+'session_fail_preview' => "'''No se pudo procesar la edición debido a una pérdida de los datos de sesión.'''
+Inténtalo de nuevo.
 Si el problema persiste, [[Special:UserLogout|cierra la sesión]] y vuelve a identificarte.",
 'session_fail_preview_html' => "'''Lo sentimos, no hemos podido procesar tu cambio debido a una pérdida de datos de sesión.'''
 
@@ -1146,10 +1148,10 @@ Si el problema persiste, [[Special:UserLogout|cierra la sesión]] y vuelve a ide
 Se rechazó la edición para evitar que el texto de la página se corrompa.
 Esto sucede en ocasiones cuando se usa un servicio de proxy anónimo defectuoso.'''",
 'edit_form_incomplete' => "'''Algunas partes del formulario de edición no llegaron al servidor, comprueba que tus ediciones están intactas e inténtalo de nuevo'''.",
-'editing' => 'Editando $1',
-'creating' => 'Creando la página $1',
-'editingsection' => 'Editando $1 (sección)',
-'editingcomment' => 'Editando $1 (nueva sección)',
+'editing' => 'Editar $1',
+'creating' => 'Crear la página $1',
+'editingsection' => 'Editar $1 (sección)',
+'editingcomment' => 'Editar $1 (sección nueva)',
 'editconflict' => 'Conflicto de edición: $1',
 'explainconflict' => "Alguien más ha cambiado esta página desde que empezaste a editarla.
 El área de texto superior contiene el texto de la página como existe actualmente.
@@ -1278,8 +1280,8 @@ Leyenda: '''(act)''' = diferencias con la versión actual,
 '''(ant)''' = diferencias con la versión anterior, '''m''' = edición menor",
 'history-fieldset-title' => 'Buscar en el historial',
 'history-show-deleted' => 'Solo ediciones ocultadas',
-'histfirst' => 'Primeras',
-'histlast' => 'Ã\9altimas',
+'histfirst' => 'primeras',
+'histlast' => 'últimas',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vacío)',
 
@@ -1328,10 +1330,10 @@ Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:
 'revdelete-nooldid-text' => 'No se ha especificado una revisión o revisiones destino sobre las que realizar esta función.',
 'revdelete-nologtype-title' => 'ningún nombre dado',
 'revdelete-nologtype-text' => 'No has especificado ningún nombre para ejecutar esta acción.',
-'revdelete-nologid-title' => 'Entrada de registro inválida',
+'revdelete-nologid-title' => 'Entrada de registro no válida',
 'revdelete-nologid-text' => 'Tampoco has especificado un objetivo de eventos para ejecutar esta función o la entrada especificada no existe.',
-'revdelete-no-file' => 'El fichero especificado no existe.',
-'revdelete-show-file-confirm' => '¿Realmente deseas ver la revisión borrada del archivo "<nowiki>$1</nowiki>" del $2 a las $3?',
+'revdelete-no-file' => 'El archivo especificado no existe.',
+'revdelete-show-file-confirm' => '¿Quieres ver la revisión borrada del archivo «<nowiki>$1</nowiki>» del $2 a las $3?',
 'revdelete-show-file-submit' => 'Sí',
 'revdelete-selected' => "'''{{PLURAL:$2|Revisión seleccionada|Revisiones seleccionadas}} de [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Seleccionado un evento|Seleccionados eventos}}:'''",
@@ -1350,8 +1352,8 @@ Otros administradores de {{SITENAME}} aún podrán acceder al contenido oculto y
 'revdelete-hide-user' => 'Nombre/IP del editor',
 'revdelete-hide-restricted' => 'Suprimir datos a los administradores así como al resto',
 'revdelete-radio-same' => '(no cambiar)',
-'revdelete-radio-set' => 'Visible',
-'revdelete-radio-unset' => 'Oculto',
+'revdelete-radio-set' => 'Oculta',
+'revdelete-radio-unset' => 'Visible',
 'revdelete-suppress' => 'Suprimir datos a los administradores así como al resto',
 'revdelete-unsuppress' => 'Eliminar restricciones de revisiones restauradas',
 'revdelete-log' => 'Motivo:',
@@ -1382,9 +1384,9 @@ No tiene acceso a él.',
 ** Comentario o información personal inapropiados
 ** Nombre de usuario inapropiado
 ** Información potencialmente injuriosa o calumniante',
-'revdelete-otherreason' => 'Otra/adicional razón:',
-'revdelete-reasonotherlist' => 'Otra razón',
-'revdelete-edit-reasonlist' => 'Editar razones de borrado',
+'revdelete-otherreason' => 'Otro motivo:',
+'revdelete-reasonotherlist' => 'Otro motivo',
+'revdelete-edit-reasonlist' => 'Editar motivos de borrado',
 'revdelete-offender' => 'Autor de la revisión:',
 
 # Suppression log
@@ -1415,7 +1417,7 @@ Nota que usar los enlaces de navegación borrará las selecciones de esta column
 'mergehistory-autocomment' => 'Fusionando [[:$1]] en [[:$2]]',
 'mergehistory-comment' => 'Fusionando [[:$1]] en [[:$2]]: $3',
 'mergehistory-same-destination' => 'Las páginas de origen y destino no pueden ser la misma',
-'mergehistory-reason' => 'Razón:',
+'mergehistory-reason' => 'Motivo:',
 
 # Merge log
 'mergelog' => 'Registro de fusiones',
@@ -1443,12 +1445,8 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 # Search results
 'searchresults' => 'Resultados de la búsqueda',
 'searchresults-title' => 'Resultados de la búsqueda de «$1»',
-'searchresulttext' => 'Para más información acerca de las búsquedas en {{SITENAME}}, consulta la [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Has buscado \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas las páginas que empiezan por "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|todas las páginas que enlazan con «$1»]])',
-'searchsubtitleinvalid' => "Has buscado '''$1'''",
 'toomanymatches' => 'Se han obtenido muchos resultados; por favor intenta una consulta diferente',
 'titlematches' => 'Coincidencias de título de artículo',
-'notitlematches' => 'No hay coincidencias de título de artículo',
 'textmatches' => 'Coincidencias de texto de artículo',
 'notextmatches' => 'No hay coincidencias de texto de artículo',
 'prevn' => '{{PLURAL:$1|$1}} previas',
@@ -1457,10 +1455,8 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'nextn-title' => 'Próximos $1 {{PLURAL:$1|resultado|resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opciones de búsqueda',
 'searchmenu-exists' => "'''Hay una página llamada \"[[:\$1]]\" en esta wiki.'''",
 'searchmenu-new' => "'''¡Crea la página «[[:$1]]» en este wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Otras páginas con este prefijo]]',
 'searchprofile-articles' => 'Páginas de contenido',
 'searchprofile-project' => 'Páginas de ayuda y de proyecto',
 'searchprofile-images' => 'Multimedia',
@@ -1488,14 +1484,10 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'showingresults' => "Abajo se {{PLURAL:$1|muestra '''1''' resultado|muestran hasta '''$1''' resultados}} comenzando por el n.º '''$2'''.",
 'showingresultsnum' => "Abajo se {{PLURAL:$3|muestra '''1''' resultado|muestran los '''$3''' resultados}} comenzando por el n.º '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': De manera predeterminada solo se busca en algunos espacios de nombres.
-Prueba a usar el prefijo ''all:'' para buscar en todo el contenido (incluyendo páginas de discusión, plantillas, etc.) o usa el espacio de nombres que quieras como prefijo.",
 'search-nonefound' => 'No hay resultados que cumplan los criterios de búsqueda.',
-'powersearch' => 'Búsqueda avanzada',
 'powersearch-legend' => 'Búsqueda avanzada',
 'powersearch-ns' => 'Buscar en los espacios de nombres:',
 'powersearch-redir' => 'Listar redirecciones',
-'powersearch-field' => 'Buscar',
 'powersearch-togglelabel' => 'Seleccionar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Ninguno',
@@ -1508,13 +1500,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',
-'prefsnologintext' => 'Necesitas <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} iniciar sesión]</span> para establecer las preferencias del usuario.',
+'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',
@@ -1524,7 +1515,7 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'prefs-watchlist-days' => 'Número de días a mostrar en la lista de seguimiento:',
 'prefs-watchlist-days-max' => 'Máximo $1 {{PLURAL:$1|día|días}}',
 'prefs-watchlist-edits' => 'Número de ediciones a mostrar en la lista expandida:',
-'prefs-watchlist-edits-max' => 'Máximo: 1000',
+'prefs-watchlist-edits-max' => 'Cantidad máxima: 1000',
 'prefs-watchlist-token' => 'Ficha de lista de seguimiento:',
 'prefs-misc' => 'Miscelánea',
 'prefs-resetpass' => 'Cambiar contraseña',
@@ -1533,7 +1524,6 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'prefs-email' => 'Opciones de correo electrónico',
 'prefs-rendering' => 'Apariencia',
 'saveprefs' => 'Guardar',
-'resetprefs' => 'Limpiar cambios sin guardar',
 'restoreprefs' => 'Restaurar la configuración predeterminada',
 'prefs-editing' => 'Edición',
 'rows' => 'Filas:',
@@ -1550,16 +1540,15 @@ 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)',
-'timezoneoffset' => 'Diferencia¹:',
 'servertime' => 'Hora del servidor:',
 'guesstimezone' => 'Rellenar a partir de la hora del navegador',
 'timezoneregion-africa' => 'África',
 'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antártica',
+'timezoneregion-antarctica' => 'Antártida',
 'timezoneregion-arctic' => 'Ártico',
 'timezoneregion-asia' => 'Asia',
 'timezoneregion-atlantic' => 'Océano Atlántico',
@@ -1588,13 +1577,13 @@ Esto no se puede deshacer.',
 'yourlanguage' => 'Idioma:',
 'yourvariant' => 'Variante lingüística del contenido:',
 'prefs-help-variant' => 'Tu variante u ortografía preferida para mostrar las páginas de contenido de este wiki.',
-'yournick' => 'Nueva firma:',
+'yournick' => 'Firma nueva:',
 'prefs-help-signature' => 'Los comentarios en páginas de discusión deberían firmarse con «<nowiki>~~~~</nowiki>», que se convertirá en tu firma con fecha y hora.',
 'badsig' => 'El código de tu firma no es válido; comprueba las etiquetas HTML.',
 'badsiglength' => 'Tu firma es muy larga.
 Debe contener un máximo de {{PLURAL:$1|un carácter|$1 caracteres}}.',
-'yourgender' => '¿Cómo prefieres ser descrito/a?',
-'gender-unknown' => 'Prefiero no especificar',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'Prefiero no especificarlo',
 'gender-male' => 'Masculino',
 'gender-female' => 'Femenino',
 'prefs-help-gender' => 'Opcional: empleado para que sea usado correctamente el género por parte del software. Esta información será pública.',
@@ -1681,7 +1670,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'right-createpage' => 'Crear páginas que no sean páginas de discusión',
 'right-createtalk' => 'Crear páginas de discusión',
 'right-createaccount' => 'Crear cuentas de usuario nuevas',
-'right-minoredit' => 'Marcar ediciones como «menores»',
+'right-minoredit' => 'Marcar ediciones como menores',
 'right-move' => 'Trasladar páginas',
 'right-move-subpages' => 'Trasladar páginas con sus subpáginas',
 'right-move-rootuserpages' => 'Trasladar páginas de usuario raíz',
@@ -1807,6 +1796,8 @@ 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-label-plusminus' => 'El tamaño de la página cambió esta cantidad de bytes',
+'recentchanges-legend-newpage' => '(véase también la [[Special:NewPages|lista de páginas nuevas]])',
 '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',
@@ -2183,7 +2174,7 @@ Tal vez desee editar la descripción de su [$2 página de descripción del archi
 'filedelete-maintenance-title' => 'No se puede eliminar el archivo',
 
 # MIME search
-'mimesearch' => 'Búsqueda MIME',
+'mimesearch' => 'Búsqueda por MIME',
 'mimesearch-summary' => 'Esta página permite el filtrado de ficheros por su tipo MIME.
 Entrada: contenttype/subtype, p. ej. <code>image/jpeg</code>.',
 'mimetype' => 'Tipo MIME:',
@@ -2308,10 +2299,8 @@ Las entradas <del>tachadas</del> han sido resueltas.',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Sólo protecciones indefinidas',
 'protectedpages-cascade' => 'Sólo protecciones en cascada',
-'protectedpagestext' => 'Las siguientes páginas están protegidas para su edición o traslado',
 'protectedpagesempty' => 'Actualmente no hay ninguna página protegida con esos parámetros.',
 'protectedtitles' => 'Títulos protegidos',
-'protectedtitlestext' => 'Los siguientes títulos están protegidos, por lo que no se pueden crear',
 'protectedtitlesempty' => 'Actualmente no existen entradas protegidas con esos parámetros.',
 'listusers' => 'Lista de usuarios',
 'listusers-editsonly' => 'Muestra sólo usuarios con ediciones',
@@ -2511,11 +2500,11 @@ La dirección de correo electrónico que indicaste en [[Special:Preferences|tus
 'enotif_mailer' => 'Notificación por correo de {{SITENAME}}',
 'enotif_reset' => 'Marcar todas las páginas como visitadas',
 'enotif_impersonal_salutation' => 'usuario de {{SITENAME}}',
-'enotif_subject_deleted' => 'La página $1 de {{SITENAME}} ha sido eliminada por {{gender:$2|$2}}',
-'enotif_subject_created' => 'La página $1 de {{SITENAME}} ha sido creada por {{GENDER:$2|$2}}',
-'enotif_subject_moved' => 'La página $1 de {{SITENAME}} ha sido trasladada por {{GENDER:$2|$2}}',
-'enotif_subject_restored' => 'La página $1 de {{SITENAME}} ha sido restaurada por {{GENDER:$2|$2}}',
-'enotif_subject_changed' => 'La página $1 de {{SITENAME}} ha sido cambiada por {{GENDER:$2|$2}}',
+'enotif_subject_deleted' => '$2 ha borrado la página $1 de {{SITENAME}}',
+'enotif_subject_created' => '$2 ha creado la página $1 en {{SITENAME}}',
+'enotif_subject_moved' => '$2 ha trasladado la página $1 de {{SITENAME}}',
+'enotif_subject_restored' => '$2 ha restaurado la página $1 de {{SITENAME}}',
+'enotif_subject_changed' => '$2 ha modificado la página $1 de {{SITENAME}}',
 'enotif_body_intro_deleted' => 'La página $1 de {{SITENAME}} ha sido borrada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3.',
 'enotif_body_intro_created' => 'La página $1 de {{SITENAME}} ha sido creada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
 'enotif_body_intro_moved' => 'La página $1 de {{SITENAME}} ha sido trasladada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
@@ -2524,28 +2513,31 @@ La dirección de correo electrónico que indicaste en [[Special:Preferences|tus
 'enotif_lastvisited' => 'Consulta $1 para ver todos los cambios realizados desde tu última visita.',
 'enotif_lastdiff' => 'Consulta $1 para ver este cambio.',
 'enotif_anon_editor' => 'usuario anónimo $1',
-'enotif_body' => 'Estimado/a $WATCHINGUSERNAME,
+'enotif_body' => 'Hola, $WATCHINGUSERNAME:
 
 $PAGEINTRO $NEWPAGE
 
-Resumen de edición: $PAGESUMMARY $PAGEMINOREDIT
+Resumen del editor: $PAGESUMMARY $PAGEMINOREDIT
 
-Contacta con el editor:
-Correo electrónico: $PAGEEDITOR_EMAIL
-Wiki: $PAGEEDITOR_WIKI
+Contacta al editor:
+correo: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
 
-No habrá otras notificaciones en caso de cambios adicionales, a menos que visites esta página nuevamente. También puedes reestablecer las notificaciones de todas tus páginas que sigas en tu página de vigilancia.
+No enviaremos más notificaciones si ocurre más actividad, a menos que visites esta página con la sesión iniciada. También puedes restablecer los estados de notificación para todas las páginas en tu lista de seguimiento.
 
-El sistema de notificaciones de {{SITENAME}}.
+Atentamente, el sistema de notificaciones de {{SITENAME}}
 
 --
-Para cambiar las opciones de tu lista de seguimiento, visita:
+Para cambiar tus ajustes de notificación por correo, visita
+{{canonicalurl:{{#special:Preferences}}}}
+
+Para cambiar los ajustes de tu lista de seguimiento, visita
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Para borrar la página de tu lista de seguimiento visita:
+Para quitar la página de tu lista de seguimiento, visita
 $UNWATCHURL
 
-Comentarios y asistencia adicional:
+Para ayuda y comentarios:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'created' => 'creada',
 'changed' => 'modificada',
@@ -3210,6 +3202,7 @@ Puedes ver su código fuente',
 Permite añadir una razón al resumen de edición.',
 'tooltip-preferences-save' => 'Guardar las preferencias',
 'tooltip-summary' => 'Introduce un breve resumen',
+'interlanguage-link-title' => '$1 ($2)',
 
 # Stylesheets
 'common.css' => '/* El CSS colocado en esta página será aplicado a todas las apariencias */',
@@ -3274,6 +3267,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'pageinfo-length' => 'Longitud de la página (en bytes)',
 'pageinfo-article-id' => 'Identificador ID de la página',
 'pageinfo-language' => 'Idioma de la página',
+'pageinfo-content-model' => 'Modelo de contenido de la página',
 'pageinfo-robot-policy' => 'Indización por robots',
 'pageinfo-robot-index' => 'Permitido',
 'pageinfo-robot-noindex' => 'No permitido',
@@ -3362,7 +3356,7 @@ Ejecutarlo podría comprometer la seguridad de su equipo.",
 'svg-long-desc' => 'archivo SVG, nominalmente $1 × $2 píxeles, tamaño de archivo: $3',
 'svg-long-desc-animated' => 'Archivo SVG animado, nominalmente de $1 × $2 píxeles, tamaño del archivo: $3',
 'svg-long-error' => 'Archivo SVG no válido: $1',
-'show-big-image' => 'Resolución original',
+'show-big-image' => 'Archivo original',
 'show-big-image-preview' => 'Tamaño de esta previsualización: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Otra resolución|Otras resoluciones}}: $1.',
 'show-big-image-size' => '$1 × $2 píxeles',
@@ -3831,10 +3825,6 @@ Existen otros campos que se mantendrán ocultos por defecto.
 'exif-urgency-high' => 'Alto ($1)',
 'exif-urgency-other' => 'Prioridad definida por el usuario ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este archivo usando una aplicación externa',
-'edit-externally-help' => '(Lee las [https://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración] -en inglés- para más información)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todos',
 'namespacesall' => 'todos',
@@ -3926,6 +3916,7 @@ Confirma que realmente quieres volver a crear esta página.",
 
 # Separators for various lists, etc.
 'comma-separator' => ',&#32;',
+'quotation-marks' => '«$1»',
 
 # Multipage image navigation
 'imgmultipageprev' => '← página anterior',
@@ -4057,8 +4048,8 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiales',
-'specialpages-note' => '----
-* Páginas especiales normales
+'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>',
 'specialpages-group-maintenance' => 'Reportes de mantenimiento',
@@ -4101,6 +4092,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}}',
 
@@ -4273,4 +4265,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 e058d6e..f8bd3ad 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__' ),
@@ -451,7 +462,6 @@ $messages = array(
 'qbedit' => 'Redigeeri',
 'qbpageoptions' => 'Lehekülje suvandid',
 'qbmyoptions' => 'Minu leheküljed',
-'qbspecialpages' => 'Erileheküljed',
 'faq' => 'KKK',
 'faqpage' => 'Project:KKK',
 
@@ -477,7 +487,7 @@ $messages = array(
 'returnto' => 'Naase lehele $1',
 'tagline' => 'Allikas: {{SITENAME}}',
 'help' => 'Juhend',
-'search' => 'Otsimine',
+'search' => 'Otsing',
 'searchbutton' => 'Otsi',
 'go' => 'Mine',
 'searcharticle' => 'Mine',
@@ -567,19 +577,17 @@ 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',
 'viewsourceold' => 'vaata lähteteksti',
-'editlink' => 'redigeeri',
+'editlink' => 'muuda',
 'viewsourcelink' => 'vaata lähteteksti',
-'editsectionhint' => 'Redigeeri alaosa "$1"',
+'editsectionhint' => 'Muuda alaosa "$1"',
 'toc' => 'Sisukord',
 'showtoc' => 'näita',
 'hidetoc' => 'peida',
@@ -591,10 +599,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-toide',
-'page-rss-feed' => '"$1" RSS-toide',
-'page-atom-feed' => '"$1" Atom-toide',
+'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',
@@ -667,9 +675,6 @@ See võib sisaldada ühte või enamat märki, mida ei saa pealkirjades kasutada.
 'perfcached' => 'Järgnevad andmed on puhverdatud ja ei pruugi olla kõige värskemad. Puhvris on saadaval kuni {{PLURAL:$1|üks tulemus|$1 tulemust}}.',
 'perfcachedts' => 'Järgmised andmed on vahemälus. Viimane uuendamisaeg: $2, kell $3. Puhvris on saadaval kuni {{PLURAL:$4|üks tulemus|$4 tulemust}}.',
 'querypage-no-updates' => 'Lehekülje uuendamine ei ole hetkel lubatud ning andmeid ei värskendata.',
-'wrong_wfQuery_params' => 'Valed parameeterid funktsioonile wfQuery()<br />
-Funktsioon: $1<br />
-Päring: $2',
 'viewsource' => 'Vaata lähteteksti',
 'viewsource-title' => 'Lehekülje $1 lähteteksti vaatamine',
 'actionthrottled' => 'Toiming nurjus',
@@ -700,7 +705,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 +921,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',
 
@@ -931,7 +937,7 @@ Peaksid load lähtestama, kui jagasid neid kogemata või kui su konto on kellegi
 'headline_sample' => 'Pealkiri',
 'headline_tip' => '2. taseme pealkiri',
 'nowiki_sample' => 'Sisesta vormindamata tekst',
-'nowiki_tip' => 'Ignoreeri viki vormindust',
+'nowiki_tip' => 'Ignoreeri vikivormindust',
 'image_sample' => 'Näidis.jpg',
 'image_tip' => 'Pilt',
 'media_sample' => 'Näidis.ogg',
@@ -1120,6 +1126,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.
@@ -1134,9 +1141,8 @@ Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "Toimetamine" kee
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Hoiatus:''' See lehekülg kasutab liialt palju aeglustavaid laiendusfunktsioone. Neid võiks kasutada vähem kui {{PLURAL:$2|ühel|$2}} korral, praegu on kasutatud {{PLURAL:$1|ühel|$1}} korral.",
 'expensive-parserfunction-category' => 'Liiga palju aeglasi laiendusfunktsioone kasutavad leheküljed',
-'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Väljakutsutavate mallide hulk on liiga suur.
-Mistõttu osasid malle ei näidata.",
-'post-expand-template-inclusion-category' => 'Leheküljed, milledel on mallide väljakutsumise limiit ületatud',
+'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Väljakutsutavate mallide hulk on liiga suur, mõningaid malle ei näidata.",
+'post-expand-template-inclusion-category' => 'Leheküljed, kus mallide väljakutsumise limiit on ületatud',
 'post-expand-template-argument-warning' => "'''Hoiatus:''' See lehekülg sisaldab argumendina vähemalt üht malli, mille määratud maht on liiga suur.
 Need argumendid on välja jäetud.",
 'post-expand-template-argument-category' => 'Malli vahele jäetud argumente sisaldavad leheküljed',
@@ -1346,12 +1352,8 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 # Search results
 'searchresults' => 'Otsingu tulemused',
 'searchresults-title' => 'Otsingu "$1" tulemused',
-'searchresulttext' => 'Lisateavet otsimise kohta vaata [[{{MediaWiki:Helppage}}|juhendist]].',
-'searchsubtitle' => 'Otsisid fraasi "[[:$1]]" ([[Special:Prefixindex/$1|kõik sõnega "$1" algavad lehed]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõik lehed, mis sisaldavad linke artiklile "$1"]])',
-'searchsubtitleinvalid' => 'Päring "$1"',
 'toomanymatches' => 'Liiga palju tulemusi, ürita teistsugust päringut',
 'titlematches' => 'Vasted artikli pealkirjades',
-'notitlematches' => 'Artikli pealkirjades otsitavat ei leitud',
 'textmatches' => 'Vasted artikli tekstides',
 'notextmatches' => 'Artikli tekstides otsitavat ei leitud',
 'prevn' => '{{PLURAL:$1|eelmine|eelmised $1}}',
@@ -1360,10 +1362,8 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'nextn-title' => '{{PLURAL:$1|Järgmine tulemus|Järgmised $1 tulemust}}',
 'shown-title' => 'Näita lehekülje kohta $1 {{PLURAL:$1|tulemus|tulemust}}',
 'viewprevnext' => 'Näita ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Otsingu sätted',
 'searchmenu-exists' => "'''Lehekülg pealkirjaga \"[[:\$1]]\" on olemas.'''",
 'searchmenu-new' => "'''Loo lehekülg pealkirjaga \"[[:\$1]]\".'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sirvi selle eesliitega lehekülgi]]',
 'searchprofile-articles' => 'Sisuleheküljed',
 'searchprofile-project' => 'Abi- ja projektilehed',
 'searchprofile-images' => 'Multimeedia',
@@ -1391,15 +1391,10 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'showingresults' => "Allpool näidatakse '''{{PLURAL:$1|ühte|$1}}''' tulemust alates '''$2'''. tulemusest.",
 'showingresultsnum' => "Allpool näitame {{PLURAL:$3|'''ühte''' tulemit|'''$3''' tulemit}} alates tulemist #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st vastest|Vasted '''$1–$2''' '''$3'''-st}} päringule '''$4'''",
-'nonefound' => "'''Märkus''': Otsing hõlmab vaikimisi vaid osasid nimeruume.
-Kui soovid otsida ühekorraga kõigist nimeruumidest (kaasa arvatud arutelulehed, mallid, jne) kasuta
-päringu ees prefiksit ''all:''. Konkreetsest nimeruumist otsimiseks kasuta prefiksina sele nimeruumi nime.",
 'search-nonefound' => 'Päringule ei leitud vasteid.',
-'powersearch' => 'Otsi',
 'powersearch-legend' => 'Täpsem otsing',
 'powersearch-ns' => 'Otsing nimeruumidest:',
 'powersearch-redir' => 'Loetle ümbersuunamised',
-'powersearch-field' => 'Otsi fraasi',
 'powersearch-togglelabel' => 'Vali:',
 'powersearch-toggleall' => 'Kõik',
 'powersearch-togglenone' => 'Ei ühtegi',
@@ -1413,8 +1408,7 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'preferences' => 'Eelistused',
 'mypreferences' => 'Eelistused',
 'prefs-edits' => 'Redigeerimiste arv:',
-'prefsnologin' => 'Sisse logimata',
-'prefsnologintext' => 'Oma eelistuste määramiseks pead olema <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sisse logitud]</span>.',
+'prefsnologintext2' => 'Pead $1, et oma eelistusi muuta.',
 'changepassword' => 'Muuda parool',
 'prefs-skin' => 'Kujundus',
 'skin-preview' => 'eelvaade',
@@ -1438,7 +1432,6 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'prefs-email' => 'E-posti sätted',
 'prefs-rendering' => 'Ilme',
 'saveprefs' => 'Salvesta eelistused',
-'resetprefs' => 'Lähtesta eelistused',
 'restoreprefs' => 'Taasta kõik vaike-eelistused (kõigil kaartidel)',
 'prefs-editing' => 'Toimetamine',
 'rows' => 'Ridu:',
@@ -1451,7 +1444,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.',
@@ -1459,7 +1452,6 @@ Igaüks, kes seda teab, saab lugeda sinu jälgimisloendit. Seega ära jaga seda.
 'localtime' => 'Kohalik aeg:',
 'timezoneuseserverdefault' => 'Kasuta serveri vaikesätet ($1)',
 'timezoneuseoffset' => 'Muu (määra ajavahe)',
-'timezoneoffset' => 'Ajavahe¹:',
 'servertime' => 'Serveri aeg:',
 'guesstimezone' => 'Loe aeg brauserist',
 'timezoneregion-africa' => 'Aafrika',
@@ -1710,10 +1702,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 sooritas 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',
@@ -2190,10 +2184,8 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise 
 'protectedpages' => 'Kaitstud leheküljed',
 'protectedpages-indef' => 'Ainult määramata ajani kaitstud',
 'protectedpages-cascade' => 'Ainult kaskaadkaitsega',
-'protectedpagestext' => 'Järgnevad leheküljed on teisaldamise või redigeerimise eest kaitstud',
 'protectedpagesempty' => 'Selliste parameetritega ei ole praegu ühtegi lehekülge kaitstud.',
 'protectedtitles' => 'Kaitstud pealkirjad',
-'protectedtitlestext' => 'Järgnevad pealkirjad on lehekülje loomise eest kaitstud',
 'protectedtitlesempty' => 'Hetkel pole ükski pealkiri kaitstud.',
 'listusers' => 'Kasutajad',
 'listusers-editsonly' => 'Näita vaid kasutajaid, kes on teinud muudatusi',
@@ -2417,7 +2409,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
@@ -3039,13 +3031,13 @@ Palun ürita uuesti.',
 'tooltip-pt-mytalk' => 'Sinu arutelulehekülg',
 'tooltip-pt-anontalk' => 'Arutelu sellelt IP-aadressilt tehtud muudatuste kohta',
 'tooltip-pt-preferences' => 'Sinu eelistused',
-'tooltip-pt-watchlist' => 'Lehekülgede loend, mida jälgid muudatuste osas',
+'tooltip-pt-watchlist' => 'Lehekülgede loend, mille muudatusi jälgid',
 'tooltip-pt-mycontris' => 'Sinu kaastööde loend',
 'tooltip-pt-login' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
 'tooltip-pt-anonlogin' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
 'tooltip-pt-logout' => 'Logi välja',
 'tooltip-ca-talk' => 'Selle artikli arutelu',
-'tooltip-ca-edit' => 'Saad seda lehekülge redigeerida. Palun kasuta enne salvestamist eelvaadet.',
+'tooltip-ca-edit' => 'Sa saad seda lehekülge muuta. Palun kasuta enne salvestamist eelvaadet.',
 'tooltip-ca-addsection' => 'Lisa uus alaosa',
 'tooltip-ca-viewsource' => 'See lehekülg on kaitstud.
 Saad vaadata selle lähteteksti.',
@@ -3069,9 +3061,9 @@ Saad vaadata selle lähteteksti.',
 'tooltip-n-randompage' => 'Mine juhuslikule leheküljele',
 'tooltip-n-help' => 'Kuidas redigeerida',
 'tooltip-t-whatlinkshere' => 'Kõik viki leheküljed, mis siia viitavad',
-'tooltip-t-recentchangeslinked' => 'Viimased muudatused lehekülgedel, milledele on siit viidatud',
-'tooltip-feed-rss' => 'Selle lehekülje RSS-toide',
-'tooltip-feed-atom' => 'Selle lehekülje Atom-toide',
+'tooltip-t-recentchangeslinked' => 'Viimased muudatused lehekülgedel, millele on siit viidatud',
+'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',
@@ -3092,7 +3084,7 @@ Saad vaadata selle lähteteksti.',
 'tooltip-save' => 'Salvesta muudatused',
 'tooltip-preview' => 'Näita tehtavaid muudatusi. Palun kasutage seda enne salvestamist!',
 'tooltip-diff' => 'Näita tehtavaid muudatusi.',
-'tooltip-compareselectedversions' => 'Näita erinevusi kahe selle lehe valitud versiooni vahel.',
+'tooltip-compareselectedversions' => 'Näita erinevusi selle lehe kahe valitud versiooni vahel.',
 'tooltip-watch' => 'Lisa see lehekülg oma jälgimisloendisse',
 'tooltip-watchlistedit-normal-submit' => 'Eemalda leheküljed',
 'tooltip-watchlistedit-raw-submit' => 'Uuenda jälgimisloendit',
@@ -3327,6 +3319,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-orientation' => 'Orientatsioon',
 'exif-samplesperpixel' => 'Komponentide arv',
 'exif-planarconfiguration' => 'Andmejärjestus',
+'exif-ycbcrsubsampling' => 'Y-i ja C diskreetimissuhe',
 'exif-ycbcrpositioning' => 'Y- ja C-positsioonimine',
 'exif-xresolution' => 'Horisontaalne eraldus',
 'exif-yresolution' => 'Vertikaalne eraldus',
@@ -3370,13 +3363,18 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-aperturevalue' => 'APEX-avaarv',
 'exif-brightnessvalue' => 'APEX-heledus',
 'exif-exposurebiasvalue' => 'Särituse mõju',
-'exif-subjectdistance' => 'Subjekti kaugus',
+'exif-maxaperturevalue' => 'Vähim ava',
+'exif-subjectdistance' => 'Põhimotiivi kaugus',
 'exif-meteringmode' => 'Mõõtmisviis',
 'exif-lightsource' => 'Valgusallikas',
 'exif-flash' => 'Välk',
 'exif-focallength' => 'Fookuskaugus',
+'exif-subjectarea' => 'Põhimotiivi ala',
 'exif-flashenergy' => 'Välgu võimsus',
-'exif-subjectlocation' => 'Subjekti asukoht',
+'exif-focalplanexresolution' => 'Fokaaltasandi laius',
+'exif-focalplaneyresolution' => 'Fokaaltasandi kõrgus',
+'exif-focalplaneresolutionunit' => 'Fokaaltasandi eraldusühik',
+'exif-subjectlocation' => 'Põhimotiivi asukoht',
 'exif-exposureindex' => 'Särituse number',
 'exif-sensingmethod' => 'Tundlikustamismeetod',
 'exif-filesource' => 'Faili päritolu',
@@ -3392,6 +3390,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-saturation' => 'Küllastus',
 'exif-sharpness' => 'Teravus',
 'exif-devicesettingdescription' => 'Seadme seadistuste kirjeldus',
+'exif-subjectdistancerange' => 'Põhimotiivi kaugusvahemik',
 'exif-imageuniqueid' => 'Pildi ainuline identifikaator',
 'exif-gpsversionid' => 'GPS-tähise versioon',
 'exif-gpslatituderef' => 'Põhja- või lõunalaius',
@@ -3407,12 +3406,19 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-gpsdop' => 'Mõõtmise täpsus',
 'exif-gpsspeedref' => 'Kiirusühik',
 'exif-gpsspeed' => 'GPS-vastuvõtja kiirus',
-'exif-gpstrack' => 'Liikumise suund',
+'exif-gpstrackref' => 'Liikumissuuna tüüp',
+'exif-gpstrack' => 'Liikumissuund',
+'exif-gpsimgdirectionref' => 'Pildi suuna tüüp',
 'exif-gpsimgdirection' => 'Pildi suund',
 'exif-gpsmapdatum' => 'Geodeetiline alus',
+'exif-gpsdestlatituderef' => 'Poolkera (laius)',
 'exif-gpsdestlatitude' => 'Kujutatud koha laius',
+'exif-gpsdestlongituderef' => 'Poolkera (pikkus)',
 'exif-gpsdestlongitude' => 'Kujutatud koha pikkus',
-'exif-gpsdestdistance' => 'Sihtmärgi kaugus',
+'exif-gpsdestbearingref' => 'Sihtpunkti suuna tüüp',
+'exif-gpsdestbearing' => 'Sihtpunkti suund',
+'exif-gpsdestdistanceref' => 'Sihtpunkti kauguse ühik',
+'exif-gpsdestdistance' => 'Sihtpunkti kaugus',
 'exif-gpsprocessingmethod' => 'GPS-töötlusmeetodi nimi',
 'exif-gpsareainformation' => 'GPS-ala nimi',
 'exif-gpsdatestamp' => 'GPS kuupäev',
@@ -3434,8 +3440,11 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-objectname' => 'Lühipealkiri',
 'exif-specialinstructions' => 'Erijuhised',
 'exif-headline' => 'Pealkiri',
+'exif-credit' => 'Päritolu/Annetaja',
 'exif-source' => 'Allikas',
+'exif-editstatus' => 'Pildi toimetusolek',
 'exif-urgency' => 'Pakilisus',
+'exif-fixtureidentifier' => 'Tugiandmete nimi',
 'exif-locationdest' => 'Kujutatud asukoht',
 'exif-locationdestcode' => 'Kujutatud asukoha kood',
 'exif-objectcycle' => 'Päeva osa, milleks meediafail on ette nähtud',
@@ -3447,6 +3456,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-iimsupplementalcategory' => 'Lisakategooriad',
 'exif-datetimeexpires' => 'Mitte kasutada hiljem kui',
 'exif-datetimereleased' => 'Avaldamiskuupäev',
+'exif-originaltransmissionref' => 'Algse edastuskoha kood',
 'exif-identifier' => 'Identifikaator',
 'exif-lens' => 'Kasutatud objektiiv',
 'exif-serialnumber' => 'Kaamera seerianumber',
@@ -3480,6 +3490,9 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 
 # Exif attributes
 'exif-compression-1' => 'Pakkimata',
+'exif-compression-2' => 'CCITT G3 ühemõõtmeline muudetud Hoffmani sarikodeerimine',
+'exif-compression-3' => 'CCITT G3 faksikodeerimine',
+'exif-compression-4' => 'CCITT G4 faksikodeerimine',
 
 'exif-copyrighted-true' => 'Kaitstud',
 'exif-copyrighted-false' => 'Autoriõiguslik seisund määramata',
@@ -3495,7 +3508,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-orientation-7' => 'Pööratud 90° päripäeva ja püstselt ümberpööratud',
 'exif-orientation-8' => 'Pööratud 90° päripäeva',
 
-'exif-planarconfiguration-2' => 'tasapinnaline vorm',
+'exif-planarconfiguration-1' => 'järjestikvorming',
+'exif-planarconfiguration-2' => 'kihiline vorming',
 
 'exif-colorspace-65535' => 'Kalibreerimata',
 
@@ -3506,6 +3520,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-exposureprogram-2' => 'Tavaprogramm',
 'exif-exposureprogram-3' => 'Ava prioriteet',
 'exif-exposureprogram-4' => 'Katiku prioriteet',
+'exif-exposureprogram-5' => 'Loovprogramm (ülekaalus väljasügavus)',
+'exif-exposureprogram-6' => 'Aktiivprogramm (ülekaalus lühike säriaeg)',
 'exif-exposureprogram-7' => 'Portree töörežiim (lähifotode jaoks, taust fookusest väljas)',
 'exif-exposureprogram-8' => 'Maastiku töörežiim (maastikupiltide jaoks, taust on teravdatud)',
 
@@ -3553,13 +3569,17 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-focalplaneresolutionunit-2' => 'toll',
 
 'exif-sensingmethod-1' => 'Määramata',
-'exif-sensingmethod-2' => 'Ühe-kiibiga värvisensor',
-'exif-sensingmethod-3' => 'Kahe-kiibiga värvisensor',
-'exif-sensingmethod-4' => 'Kolme-kiibiga värvisensor',
-'exif-sensingmethod-7' => 'Kolmerealine sensor',
+'exif-sensingmethod-2' => 'Ühe kiibiga värviandur',
+'exif-sensingmethod-3' => 'Kahe kiibiga värviandur',
+'exif-sensingmethod-4' => 'Kolme kiibiga värviandur',
+'exif-sensingmethod-5' => 'Jadavärviandur',
+'exif-sensingmethod-7' => 'Trilineaarne andur',
+'exif-sensingmethod-8' => 'Lineaarne jadavärviandur',
 
 'exif-filesource-3' => 'Digitaalne fotokaamera',
 
+'exif-scenetype-1' => 'Pildistatud otse',
+
 'exif-customrendered-0' => 'Tavatöötlus',
 'exif-customrendered-1' => 'Kohandatud töötlus',
 
@@ -3611,6 +3631,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',
@@ -3678,10 +3699,6 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-urgency-high' => 'Kõrge ($1)',
 'exif-urgency-other' => 'Kasutaja määratud tähtsus ($1)',
 
-# External editor support
-'edit-externally' => 'Töötle faili välise programmiga',
-'edit-externally-help' => '(Vaata väliste redaktorite [https://www.mediawiki.org/wiki/Manual:External_editors kasutusjuhendit])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Näita kõiki',
 'namespacesall' => 'kõik',
@@ -3894,10 +3911,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',
@@ -4110,4 +4125,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 481348c..afa991c 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' ),
@@ -282,7 +280,6 @@ $messages = array(
 'qbedit' => 'Aldatu',
 'qbpageoptions' => 'Orrialde hau',
 'qbmyoptions' => 'Nire orrialdeak',
-'qbspecialpages' => 'Aparteko orrialdeak',
 'faq' => 'Maiz egindako galderak',
 'faqpage' => 'Project:Maiz egindako galderak',
 
@@ -398,8 +395,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}}',
@@ -498,9 +493,6 @@ Ez du arrazoirik eman.',
 'perfcached' => 'Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.',
 'perfcachedts' => 'Hurrengo datuak katxean daude, $1 eguneratu zen azkenekoz. {{PLURAL:$4|emaitza 1 dago|$4 emaitza daude}} eskuragarri katxean.',
 'querypage-no-updates' => 'Orrialde honen berritzeak ez dira baimentzen. Hemen dagoen data ez da zuzenean berrituko.',
-'wrong_wfQuery_params' => 'Baliogabeko parametroak eman zaizkio wfQuery() funtzioari<br />
-Funtzioa: $1<br />
-Kontsulta: $2',
 'viewsource' => 'Kodea ikusi',
 'viewsource-title' => '$1-en iturria ikusi',
 'actionthrottled' => 'Ekintzaren gainetik pasa da',
@@ -1156,12 +1148,8 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 # Search results
 'searchresults' => 'Bilaketaren emaitzak',
 'searchresults-title' => '"$1(e)rako" emaitzak bilatu',
-'searchresulttext' => '{{SITENAME}}(e)n bilaketak egiteko informazio gehiagorako, ikus [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' bilatu duzu ([[Special:Prefixindex/$1|"$1" hasten diren orri guztiak]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" orrirako lotura duten orri guztiak]])',
-'searchsubtitleinvalid' => "'''$1''' bilatu duzu",
 'toomanymatches' => 'Aukera gehiegi aurkitu dira, saia zaitez beste eskaera ezberdin batekin',
 'titlematches' => 'Emaitzak artikuluen izenburuetan',
-'notitlematches' => 'Ez dago bat datorren orrialde izenbururik',
 'textmatches' => 'Emaitza orrialde testuetan',
 'notextmatches' => 'Ez dago bat datorren orrialde testurik',
 'prevn' => 'aurreko {{PLURAL:$1|$1}}ak',
@@ -1170,10 +1158,8 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'nextn-title' => 'Hurrengo $1 {{PLURAL:$1|emaitza|emaitzak}}',
 'shown-title' => 'Erakutsi {{PLURAL:$1|emaitza $1|$1 emaitza}} orrialdeko',
 'viewprevnext' => 'Ikusi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Bilaketa aukerak',
 'searchmenu-exists' => "'''\"[[:\$1]]\" izena duen orrialde bat badago wiki honetan'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" orrialde sortu wiki honetan!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Aurrizki hau duten orrialdeetatik nabigatu]]',
 'searchprofile-articles' => 'Eduki-orriak',
 'searchprofile-project' => 'Laguntza eta Proiektu-orriak',
 'searchprofile-images' => 'Multimedia',
@@ -1201,14 +1187,10 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'showingresults' => "Jarraian {{PLURAL:$1|emaitza '''1''' ikus daiteke|'''$1''' emaitza ikus daitezke}}, #'''$2'''.etik hasita.",
 'showingresultsnum' => "Hasieran #'''$2''' duten {{PLURAL:$3|emaitza '''1'''|'''$3''' emaitza}} erakusten dira jarraian.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1'''(e)tik '''$3''' emaitza|'''$1 - $2'''(e)tik '''$3''' emaitza}} '''$4'''(r)entzat",
-'nonefound' => "'''Oharra''': Bakarrik izen-tarte batzuetan egiten da berez bilaketa.
-Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatzeko (eztabaida orrialdea, txantiloiak, etab. sartuz) edo bestela erabil ezazu nahi duzun izen-tartea aurrizki gisa.",
 'search-nonefound' => 'Ez dago eskaerarekin bat egiten duten emaitzarik.',
-'powersearch' => 'Bilatu',
 'powersearch-legend' => 'Bilaketa aurreratua',
 'powersearch-ns' => 'Bilatu honako izen-tartetan:',
 'powersearch-redir' => 'Birzuzenketen zerrenda',
-'powersearch-field' => 'Bilatu',
 'powersearch-togglelabel' => 'Egiaztatu:',
 'powersearch-toggleall' => 'Guztiak',
 'powersearch-togglenone' => 'Bat ere ez',
@@ -1219,8 +1201,6 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'preferences' => 'Hobespenak',
 'mypreferences' => 'Hobespenak',
 'prefs-edits' => 'Aldaketa kopurua:',
-'prefsnologin' => 'Saioa hasi gabe',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Izena eman]</span> behar duzu zure hobespenak ezartzeko.',
 'changepassword' => 'Pasahitza aldatu',
 'prefs-skin' => 'Itxura',
 'skin-preview' => 'Aurrebista',
@@ -1244,7 +1224,6 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'prefs-email' => 'E-posta aukerak',
 'prefs-rendering' => 'Itxura',
 'saveprefs' => 'Gorde',
-'resetprefs' => 'Hasieratu',
 'restoreprefs' => 'Konfigurazio lehenetsi guztiak berrezarri (sekzio guztietan)',
 'prefs-editing' => 'Aldatzen',
 'rows' => 'Lerroak:',
@@ -1262,7 +1241,6 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'localtime' => 'Ordu lokala:',
 'timezoneuseserverdefault' => 'Erabili lehenetsitako wikia ($1)',
 'timezoneuseoffset' => 'Beste bat (diferentzia ezarri)',
-'timezoneoffset' => 'Ezberdintasuna¹:',
 'servertime' => 'Zerbitzariko ordua:',
 'guesstimezone' => 'Nabigatzailetik jaso',
 'timezoneregion-africa' => 'Afrika',
@@ -1502,6 +1480,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',
@@ -1926,10 +1905,8 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'protectedpages' => 'Babestutako orrialdeak',
 'protectedpages-indef' => 'Babes mugagabeak bakarrik',
 'protectedpages-cascade' => 'Kaskada moduko babesak bakarrik',
-'protectedpagestext' => 'Jarraian azaltzen diren orrialdeak mugitu edo aldatzeko babestuta daude',
 'protectedpagesempty' => 'Ez dago parametro horiek dituen babesturiko orrialderik oraintxe.',
 'protectedtitles' => 'Babestutako tituluak',
-'protectedtitlestext' => 'Hurrengo tituluen sorrera babestua dago',
 'protectedtitlesempty' => 'Ez dago parametro horiek dituen babesturiko izenbururik oraintxe.',
 'listusers' => 'Erabiltzaileen zerrenda',
 'listusers-editsonly' => 'Aldaketak egin dituzten erabiltzaileak soilik erakutsi',
@@ -3386,10 +3363,6 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
 'exif-urgency-high' => 'Altua ($1)',
 'exif-urgency-other' => 'Definitutako lehentasuna ($1)',
 
-# External editor support
-'edit-externally' => 'Fitxategi hau editatu kanpo-aplikazio bat erabiliz',
-'edit-externally-help' => '(Ikus [https://www.mediawiki.org/wiki/Manual:External_editors konfiguraziorako argibideak] informazio gehiagorako)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'guztiak',
 'namespacesall' => 'guztiak',
@@ -3565,8 +3538,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 
 # Special:SpecialPages
 'specialpages' => 'Orri bereziak',
-'specialpages-note' => '----
-* Orri berezi arruntak.
+'specialpages-note' => '* Orri berezi arruntak.
 * <strong class="mw-specialpagerestricted">Mugatutako orri bereziak.</strong>',
 'specialpages-group-maintenance' => 'Mantentze-oharrak',
 'specialpages-group-other' => 'Beste orri berezi batzuk',
@@ -3729,4 +3701,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 197a590..a4c3e58 100644 (file)
@@ -151,7 +151,6 @@ $messages = array(
 'qbedit' => 'Eital',
 'qbpageoptions' => 'Esta páhina',
 'qbmyoptions' => 'Las mis páhinas',
-'qbspecialpages' => 'Páhinas especialis',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -254,8 +253,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',
@@ -337,7 +334,6 @@ Pol favol, contauta con un [[Special:ListUsers/sysop|çajoril]], mentandu la URL
 'perfcached' => "Los siguientis datus s'alcuentran nel caché i es posibri que nu estén atualizaus. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => 'Estus datus están emburacaus. La su úrtima atualización hue el $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "Las atualiçacionis desta páhina s'alcuentran atualmenti desativás. Los datus nu sedrán atualizaus a cortu praçu.",
-'wrong_wfQuery_params' => 'Parametrus a wfQuery()<br /> Hunción: $1<br /> Pregunta: $2 encorretus',
 'viewsource' => 'Vel coigu huenti',
 'actionthrottled' => 'Ación ilimitá',
 'actionthrottledtext' => 'Cumu miia pa prevenil el spam, solu pueis hazel esta ación un limitau númeru e vezis nun cortu praçu e tiempu, i as pasau esti límiti. Pol favol, enténtalu otra vezi endrentu angunus minutus.',
@@ -737,11 +733,7 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 # Search results
 'searchresults' => 'Landeal resurtaus',
 'searchresults-title' => 'Landeal resurtaus pa "$1"',
-'searchresulttext' => 'Pa mas enhormación al tentu landeal en {{SITENAME}}, vaiti a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'As landeau \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tolos artículus que prencipian pol "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tolos artículus que atihan a "$1"]])',
-'searchsubtitleinvalid' => "Landeasti '''$1'''",
 'titlematches' => 'Conciéncias con el entítulu el artículu',
-'notitlematches' => 'Nu ai artículus llamaus asina',
 'textmatches' => 'Conciéncias con el testu el artículu',
 'notextmatches' => 'Nu desistin conciéncias con el testu el artículu',
 'prevn' => '{{PLURAL:$1|$1 anterioris}}',
@@ -750,7 +742,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'nextn-title' => 'Siguientis $1 {{PLURAL:$1|resurtau|resurtaus}}',
 'shown-title' => 'Muestral $1 {{PLURAL:$1|resurtau|resurtaus}} pol página',
 'viewprevnext' => 'Vel ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Ocionis de landeu',
 'searchmenu-new' => "'''Crial el artículu \"[[:\$1]]\"'''",
 'searchprofile-images' => 'Murtimeya',
 'searchprofile-everything' => 'Tó',
@@ -771,12 +762,9 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'searchall' => 'tó',
 'showingresults' => "Embahu se {{PLURAL:$1|muestra '''1''' resurtau qu'esmiença|muestran hata '''$1''' resurtaus qu'esmiençan}} pol #'''$2'''.",
 'showingresultsnum' => "Embahu se {{PLURAL:$3|muestra '''1''' resurtau qu'esmiença|muestran'''$3''' resurtaus qu'esmiençan}} pol #'''$2'''.",
-'nonefound' => "'''Nota''': Solu se busca en angunus espacius de nombris pol defetu. Preba a escrebil el prefihu ''all:'' nel tu landeu pa landeal tol conteniu (encruyendu carabas, prantillas...), u gasta el espaciu de nombri deseau cumu prefihu.",
-'powersearch' => 'Landeal',
 'powersearch-legend' => 'Landeu avançau',
 'powersearch-ns' => 'Landeal en espaciu e nombris:',
 'powersearch-redir' => 'Listal redirecionis',
-'powersearch-field' => 'Landeal',
 'search-external' => 'Landeu estelnu',
 'searchdisabled' => 'Los landeus en {{SITENAME}} están temporalmenti desativaus. Mentris tantu, pueis landeal meyanti landerus esternus, inque ten en cuenta que los sus éndicis concernientis a {{SITENAME}} puein nu estal atualizaus.',
 
@@ -784,8 +772,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",
-'prefsnologintext' => 'Ebis estal [[Special:UserLogin|rustriu]] pa chambal las tus preferéncias.',
 'changepassword' => 'Chambal consínia',
 'prefs-skin' => 'Aparéncia',
 'skin-preview' => 'Previsoreal',
@@ -800,7 +786,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'prefs-misc' => 'Bandallu (una mihina e tó)',
 'prefs-resetpass' => 'Escambial consínia',
 'saveprefs' => 'Emburacal',
-'resetprefs' => 'Esborral los chambus nu emburacaus',
 'prefs-editing' => 'Eitandu',
 'rows' => 'Filas:',
 'columns' => 'Colunas:',
@@ -813,7 +798,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'savedprefs' => 'S´an emburacau las tus preferéncias.',
 'timezonelegend' => 'Zona orária',
 'localtime' => 'Ora local',
-'timezoneoffset' => 'Deferéncia oraria¹:',
 'servertime' => 'Ora del sirviol:',
 'guesstimezone' => 'Estrael la ora el escrucaol',
 'timezoneregion-africa' => 'África',
@@ -1238,10 +1222,8 @@ Pursa nel entítulu la coluna pa chambal el ordin.',
 'deadendpages' => 'Callehonis',
 'deadendpagestext' => 'Las siguientis páhinas nu atihan a otras páhinas desti güiqui.',
 'protectedpages' => 'Páhinas protehias',
-'protectedpagestext' => 'Las siguientis páhinas nu se puein ni movel ni eital (están protehias)',
 'protectedpagesempty' => 'Nu desisti denguna páhina protehia con estus parámetrus.',
 'protectedtitles' => 'Entítulus protehius',
-'protectedtitlestext' => "Los siguientis entítulus s'alcuentran atarugaus",
 'protectedtitlesempty' => 'Ogañu nu desistin entítulus protehius con estus parámetrus.',
 'listusers' => 'Lista d´usuárius',
 'usercreated' => 'Criá el $1 a las $2',
@@ -2178,10 +2160,6 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
 'exif-gpsdirection-t' => 'Direción verdaera',
 'exif-gpsdirection-m' => 'Direción manética',
 
-# External editor support
-'edit-externally' => 'Eital esti archivu gastandu una apricación esterna',
-'edit-externally-help' => 'Pa mas enholmación, lei las [https://www.mediawiki.org/wiki/Manual:External_editors istrucionis de configuración] (en ingrés).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tó',
 'namespacesall' => 'tó',
@@ -2363,4 +2341,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 8323ac8..a9c7a40 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(
@@ -595,7 +608,6 @@ $messages = array(
 'qbedit' => 'ویرایش',
 'qbpageoptions' => 'این صفحه',
 'qbmyoptions' => 'صفحه‌های من',
-'qbspecialpages' => 'صفحه‌های ویژه',
 'faq' => 'پرسش‌های متداول',
 'faqpage' => 'Project:پرسش‌های متداول',
 
@@ -713,12 +725,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' => 'ویرایش',
@@ -819,9 +829,6 @@ $1',
 'perfcachedts' => 'داده‌های زیر از حافظهٔ نهانی فراخوانی شده‌اند و آخرین بار در $1 به‌روزرسانی شدند. حداکثر {{PLURAL:$4|یک نتیجه|$4 نتیجه}} در حافظهٔ نهانی قابل دسترس است.',
 'querypage-no-updates' => 'امکان به‌روزرسانی این صفحه فعلاً غیرفعال شده‌است.
 اطلاعات این صفحه ممکن است به‌روز نباشد.',
-'wrong_wfQuery_params' => 'پارامترهای wfQuery()‎ نادرست است<br />
-تابع: $1<br />
-پرس‌وجو: $2',
 'viewsource' => 'نمایش مبدأ',
 'viewsource-title' => 'نمایش مبدأ برای $1',
 'actionthrottled' => 'جلوی عمل شما گرفته شد',
@@ -853,7 +860,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 +871,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''اکنون شما ثبت خروج کرده‌اید.'''
 توجه داشته باشید که تا حافظهٔ نهان مرورگرتان را پاک نکنید، بعضی از صفحات ممکن است همچنان به گونه‌ای نمایش یابند که انگار وارد شده‌اید.",
-'welcomeuser' => 'خوشامدید، $1!',
+'welcomeuser' => 'خوشامدید $1!',
 'welcomecreation-msg' => 'حساب کاربری شما ایجاد شده است.
 فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] خود را تغییر دهید.',
 'yourname' => 'نام کاربری:',
@@ -923,7 +931,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' => 'نام کاربری‌ای که وارد کردید قبلاً استفاده شده‌است.
 لطفاً یک نام دیگر انتخاب کنید.',
@@ -956,7 +964,7 @@ $2',
 'passwordtooshort' => 'گذرواژه باید دست‌کم {{PLURAL:$1|۱ حرف|$1 حرف}} داشته باشد.',
 'password-name-match' => 'گذرواژهٔ شما باید با نام کاربری شما تفاوت داشته باشد.',
 'password-login-forbidden' => 'استفاده از این نام کاربری و گذرواژه ممنوع است.',
-'mailmypassword' => 'گذرواژهٔ جدید با رایانامه فرستاده شود',
+'mailmypassword' => 'بازنشانی گذرواژه',
 'passwordremindertitle' => 'یادآور گذرواژهٔ {{SITENAME}}',
 'passwordremindertext' => 'یک نفر (احتمالاً خود شما، با نشانی آی‌پی $1) گذرواژهٔ جدیدی برای حساب کاربری شما در {{SITENAME}} درخواست کرده‌است ($4). 
 یک گذرواژهٔ موقت برای کاربر «$2» ساخته شده و برابر با «$3» قرار داده شده‌است.
@@ -1029,7 +1037,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 +1427,7 @@ $2
 'revdelete-suppress-text' => "فرونشانی باید '''تنها''' برای موارد زیر استفاده شود:
 * اطلاعات به طور بالقوه افتراآمیز
 * اطلاعات نامناسب شخصی
-*: ''نشانی منزل، شماره تلفن، شماره تامین اجتماعی و غیره.''",
+*: ''نشانی منزل، شماره تلفن، کد ملی و غیره.''",
 'revdelete-legend' => 'تنظیم محدودیت‌های پیدایی',
 'revdelete-hide-text' => 'متن نسخه',
 'revdelete-hide-image' => 'نهفتن محتویات پرونده',
@@ -1428,8 +1436,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' => 'دلیل:',
@@ -1519,12 +1527,8 @@ $1",
 # Search results
 'searchresults' => 'نتایج جستجو',
 'searchresults-title' => 'نتایج جستجو برای «$1»',
-'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' => 'تطبیق متن مقاله',
 'notextmatches' => 'متن هیچ مقاله‌ای مطابقت ندارد',
 'prevn' => '{{PLURAL:$1|$1}}تای قبلی',
@@ -1533,10 +1537,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} بعدی',
 'shown-title' => 'نمایش $1 {{PLURAL:$1|نتیجه|نتیجه}} در هر صفحه',
 'viewprevnext' => 'نمایش ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'گزینه‌های جستجو',
 'searchmenu-exists' => "'''صفحه‌ای با عنوان «[[:$1]]» در این ویکی وجود دارد.'''",
 'searchmenu-new' => "'''صفحهٔ «[[:$1]]» را در این ویکی بسازید!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|مرور صفحه‌های با این پیشوند]]',
 'searchprofile-articles' => 'صفحه‌های محتوایی',
 'searchprofile-project' => 'صفحه‌های راهنما و پروژه',
 'searchprofile-images' => 'چندرسانه‌ای',
@@ -1564,14 +1566,10 @@ $1",
 'showingresults' => "نمایش حداکثر {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} در پایین، آغاز از شماره '''$2'''.",
 'showingresultsnum' => "نمایش حداکثر '''$3''' {{PLURAL:$3|نتیجه|نتیجه}} در پایین، آغاز از شماره '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|نتیجهٔ '''$1''' از '''$3'''|نتایج '''$1 تا $2''' از '''$3'''}} برای '''$4'''",
-'nonefound' => "'''نکته''': تنها بعضی از فضاهای نام به طور پیش‌فرض جستجو می‌شوند.
-برای جستجوی تمام فضاهای نام (شامل صفحه‌های بحث، الگوها و غیره) به عبارت جستجوی خود پیشوند ''all:‎'' را بیفزایید، یا نام فضای نام دلخواه را به عنوان پیشوند استفاده کنید.",
 'search-nonefound' => 'نتیجه‌ای منطبق با درخواست پیدا نشد.',
-'powersearch' => 'جستجوی پیشرفته',
 'powersearch-legend' => 'جستجوی پیشرفته',
 'powersearch-ns' => 'جستجو در فضاهای نام:',
 'powersearch-redir' => 'فهرست‌کردن تغییرمسیرها',
-'powersearch-field' => 'جستجو برای',
 'powersearch-togglelabel' => 'بررسی:',
 'powersearch-toggleall' => 'همه',
 'powersearch-togglenone' => 'هیچ‌کدام',
@@ -1585,8 +1583,7 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'ترجیحات',
 'prefs-edits' => 'تعداد ویرایش‌ها:',
-'prefsnologin' => 'به سامانه وارد نشده‌اید',
-'prefsnologintext' => 'برای تنظیم ترجیحات کاربر باید <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} به سامانه وارد شوید]</span>.',
+'prefsnologintext2' => 'لطفاً  $1  برای تنظیم ترجیحات کاربر.',
 'changepassword' => 'تغییر گذرواژه',
 'prefs-skin' => 'پوسته',
 'skin-preview' => 'پیش‌نمایش',
@@ -1610,7 +1607,6 @@ $1",
 'prefs-email' => 'گزینه‌های رایانامه',
 'prefs-rendering' => 'نمایش صفحه',
 'saveprefs' => 'ذخیره',
-'resetprefs' => 'صفرکردن ترجیحات',
 'restoreprefs' => 'برگرداندن تمام تنظیمات پیش‌فرض (در تمامی قسمت‌ها)',
 'prefs-editing' => 'ویرایش',
 'rows' => 'تعداد سطرها:',
@@ -1630,7 +1626,6 @@ $1",
 'localtime' => 'زمان محلی:',
 'timezoneuseserverdefault' => 'استفاده از پیش‌فرض ویکی ($1)',
 'timezoneuseoffset' => 'دیگر (اختلاف را مشخص کنید)',
-'timezoneoffset' => 'اختلاف¹:',
 'servertime' => 'زمان سرور:',
 'guesstimezone' => 'از مرورگر گرفته شود',
 'timezoneregion-africa' => 'آفریقا',
@@ -1761,7 +1756,7 @@ $1",
 'right-createpage' => 'ایجاد صفحه (در مورد صفحه‌های غیر بحث)',
 'right-createtalk' => 'ایجاد صفحه‌های بحث',
 'right-createaccount' => 'ایجاد حساب‌های کاربری',
-'right-minoredit' => 'علامت‌زدن ویرایش‌ها به عنوان جزئی',
+'right-minoredit' => 'علامت‌زدن ویرایش‌ها بهعنوان جزئی',
 'right-move' => 'انتقال صفحه',
 'right-move-subpages' => 'انتقال صفحه‌ها به همراه زیر‌صفحه‌هایشان',
 'right-move-rootuserpages' => 'انتقال صفحه‌های کاربری سرشاخه',
@@ -1887,6 +1882,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',
@@ -2389,10 +2387,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'protectedpages' => 'صفحه‌های محافظت‌شده',
 'protectedpages-indef' => 'فقط محافظت‌های بی‌پایان',
 'protectedpages-cascade' => 'فقط محافظت‌های آبشاری',
-'protectedpagestext' => 'صفحه‌های زیر در برابر ویرایش یا انتقال محافظت شده‌اند:',
 'protectedpagesempty' => 'در حال حاضر هیچ‌صفحه‌ای محافظت نشده‌است.',
 'protectedtitles' => 'عنوان‌های محافظت‌شده',
-'protectedtitlestext' => 'عنوان‌های زیر از ایجاد محافظت شده‌اند',
 'protectedtitlesempty' => 'در حال حاضر هیچ عنوانی با این پارامترها محافظت نشده‌است.',
 'listusers' => 'فهرست کاربران',
 'listusers-editsonly' => 'فقط کاربرانی که ویرایش دارند را نشان بده',
@@ -2617,7 +2613,7 @@ $PAGEINTRO $NEWPAGE
 نامه: $PAGEEDITOR_EMAIL
 ویکی: $PAGEEDITOR_WIKI
 
-تا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ تغییراتِ بیشتر، اعلانیه‌ای برای شما فرستاده نخواهد شد.
+تا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ فعالیت بیشتر، تا زمانی که در با کاربریتان در سیستم هستید، اعلانیه‌ای برای شما فرستاده نخواهد شد.
 شما همچنین می‌توانید در صفحهٔ پی‌گیری‌های خود پرچم‌های مربوط به آگاهی‌رسانی را صفر کنید همچنین می‌توانید پرچم‌های آگاهی‌سازی را بازنشانی کنید.
 
 دوستدار شما، سامانهٔ آگاهی‌رسانی {{SITENAME}}
@@ -2834,7 +2830,7 @@ $1',
 'mycontris' => 'مشارکت‌ها',
 'contribsub2' => 'برای {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'هیچ تغییری با این مشخصات یافت نشد.',
-'uctop' => '(بالا)',
+'uctop' => '(نسخه کنونی)',
 'month' => 'در این ماه (و پیش از آن):',
 'year' => 'در این سال (و پیش از آن):',
 
@@ -3150,7 +3146,7 @@ $1',
 'allmessagescurrent' => 'متن کنونی پیغام',
 'allmessagestext' => 'این فهرستی از پیغام‌های سامانه‌ای موجود در فضای نام مدیاویکی است.
 چنانچه مایل به مشارکت در محلی‌سازی مدیاویکی هستید لطفاً [https://www.mediawiki.org/wiki/Localisation محلی‌سازی مدیاویکی] و [//translatewiki.net translatewiki.net] را ببینید.',
-'allmessagesnotsupportedDB' => "نمی‌توان از '''{{ns:special}}:همهٔ پیغام‌ها''' استفاده کرد چود '''&lrm;\$wgUseDatabaseMessages''' خاموش شده است.",
+'allmessagesnotsupportedDB' => "این صفحه نمی‌تواند استفاده شود به این دلیل که <bdi>'''\$wgUseDatabaseMessages'''</bdi> غیرفعال شده‌است.",
 'allmessages-filter-legend' => 'پالایه',
 'allmessages-filter' => 'پالودن بر اساس وضعیت شخصی‌سازی:',
 'allmessages-filter-unmodified' => 'تغییر نیافته',
@@ -3314,6 +3310,7 @@ $2',
 'tooltip-undo' => '«خنثی‌سازی» این ویرایش را خنثی می‌کند و جعبهٔ ویرایش را در حالت پیش‌نمایش باز می‌کند تا افزودن دلیل در خلاصهٔ ویرایش ممکن شود.',
 'tooltip-preferences-save' => 'ذخیره کردن ترجیحات',
 'tooltip-summary' => 'خلاصه‌ای وارد کنید',
+'interlanguage-link-title' => '$1–$2',
 
 # Stylesheets
 'common.css' => '/* دستورات این بخش همهٔ کاربران را تحت تاثیر قرار می‌دهند. */',
@@ -3358,6 +3355,7 @@ $2',
 'pageinfo-length' => 'حجم صفحه  (بایت)',
 'pageinfo-article-id' => 'شناسهٔ صفحه',
 'pageinfo-language' => 'زبان محتوای صفحه',
+'pageinfo-content-model' => 'ساختار محتوای صفحه',
 'pageinfo-robot-policy' => '‌فهرست‌کردن توسط ربات‌ها',
 'pageinfo-robot-index' => 'مجاز',
 'pageinfo-robot-noindex' => 'نامجاز',
@@ -3445,7 +3443,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> پیکسل',
@@ -3917,10 +3915,6 @@ $1',
 'exif-urgency-high' => 'زیاد ($1)',
 'exif-urgency-other' => 'اولویت تعریف شده توسط کاربر ($1)',
 
-# External editor support
-'edit-externally' => 'ویرایش این پرونده با یک ویرایشگر بیرونی',
-'edit-externally-help' => '(برای اطلاعات بیشتر [https://www.mediawiki.org/wiki/Manual:External_editors دستورالعمل تنظیم] را ببینید)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'همه',
 'namespacesall' => 'همه',
@@ -4016,6 +4010,7 @@ $5
 'semicolon-separator' => '؛&#32;',
 'comma-separator' => '،&#32;',
 'percent' => '$1٪',
+'quotation-marks' => '$1',
 
 # Multipage image navigation
 'imgmultipageprev' => '&rarr; صفحهٔ پیشین',
@@ -4209,9 +4204,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'صفحه‌های ویژه',
-'specialpages-note' => '----
-* صفحه‌های ویژهٔ عادی.
-* <strong class="mw-specialpagerestricted">صفحه‌های ویژهٔ محدودشده.</strong>',
+'specialpages-note-top' => 'شرح علائم',
+'specialpages-note' => '* صفحه‌های ویژهٔ عادی.
+* <span class="mw-specialpagerestricted">صفحه‌های ویژهٔ محدودشده.</span>',
 'specialpages-group-maintenance' => 'گزارش‌های نگهداری',
 'specialpages-group-other' => 'سایر صفحه‌های ویژه',
 'specialpages-group-login' => 'ورود / ثبت نام',
@@ -4423,4 +4418,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 c5a8760..45eef39 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' ),
@@ -475,7 +475,6 @@ $messages = array(
 'qbedit' => 'Muokkaa',
 'qbpageoptions' => 'Sivuasetukset',
 'qbmyoptions' => 'Omat sivut',
-'qbspecialpages' => 'Toimintosivut',
 'faq' => 'Usein kysytyt kysymykset',
 'faqpage' => 'Project:Usein kysytyt kysymykset',
 
@@ -592,12 +591,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',
@@ -694,7 +691,6 @@ Siinä saattaa olla yksi tai useampi sellainen merkki, jota ei voi käyttää si
 'perfcached' => 'Nämä tiedot ovat välimuistista eivätkä välttämättä ole ajan tasalla. Välimuistissa on saatavilla enintään {{PLURAL:$1|yksi tulos|$1 tulosta}}.',
 'perfcachedts' => 'Nämä tiedot ovat välimuistista, ja ne on päivitetty viimeksi $1. Välimuistissa on saatavilla enintään {{PLURAL:$4|yksi tulos|$4 tulosta}}.',
 'querypage-no-updates' => 'Tämän sivun tietoja ei toistaiseksi päivitetä.',
-'wrong_wfQuery_params' => 'Virheelliset parametrit wfQuery()<br />Funktio: $1<br />Tiedustelu: $2',
 'viewsource' => 'Näytä wikiteksti',
 'viewsource-title' => 'Lähdekoodi sivulle $1',
 'actionthrottled' => 'Toiminto nopeusrajoitettu',
@@ -725,7 +721,8 @@ Lukituksen asettanut ylläpitäjä on antanut seuraavan syyn toimenpiteelle: $3.
 'invalidtitle-knownnamespace' => 'Virheellinen sivunimi, nimiavaruus "$2" ja teksti "$3"',
 'invalidtitle-unknownnamespace' => 'Virheellinen sivunimi, tuntematon nimiavaruus numero $1 ja teksti "$2"',
 'exception-nologin' => 'Et ole kirjautunut sisään',
-'exception-nologin-text' => 'Tämä sivu tai toiminto edellyttää sisäänkirjautumista tähän wikiin.',
+'exception-nologin-text' => 'Ole hyvä ja [[Special:Userlogin|kirjaudu sisään]], niin pääset tälle sivulle tai tähän toimintoon.',
+'exception-nologin-text-manual' => 'Sinun pitää $1 jotta pääset tälle sivulle tai toimintoon.',
 
 # Virus scanner
 'virus-badscanner' => "Virheellinen asetus: Tuntematon virustutka: ''$1''",
@@ -936,9 +933,9 @@ Väliaikainen salasana: $2',
 
 # Special:ResetTokens
 'resettokens' => 'Uudista avaimet',
-'resettokens-text' => 'Tällä sivulla voit uudistaa avaimesi, jotka mahdollistavat pääsyn käyttäjätunnukseesi liittyviin tiettyihin yksityisiin tietoihin.
+'resettokens-text' => "Tällä sivulla voit uudistaa avaimesi (''eng.'' reset tokens), jotka mahdollistavat pääsyn käyttäjätunnukseesi liittyviin tiettyihin yksityisiin tietoihin.
 
-Sinun pitäisi tehdä tämä, jos olet vahingossa jakanut avaimet jonkun kanssa tai jos käyttäjätunnuksesi on vaarannettu.',
+Sinun pitäisi tehdä tämä, jos olet vahingossa jakanut avaimet jonkun kanssa tai jos käyttäjätunnuksesi on vaarannettu.",
 'resettokens-no-tokens' => 'Avaimia ei ole uudistettavaksi.',
 'resettokens-legend' => 'Uudista avaimet',
 'resettokens-tokens' => 'Avaimet:',
@@ -1360,12 +1357,8 @@ Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Hakutulokset',
 'searchresults-title' => 'Haun tulokset hakusanalle ”$1”',
-'searchresulttext' => 'Lisätietoa {{GRAMMAR:genitive|{{SITENAME}}}} hakutoiminnoista on [[{{MediaWiki:Helppage}}|ohjesivulla]].',
-'searchsubtitle' => "Etsit termillä '''[[:$1]]''' ([[Special:Prefixindex/$1|kaikki sivut alkaen termillä ”$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|viittaukset sivuun ”$1”]])",
-'searchsubtitleinvalid' => 'Haku termeillä $1',
 'toomanymatches' => 'Liian monta osumaa. Kokeile erilaista kyselyä.',
 'titlematches' => 'Osumat sivujen otsikoissa',
-'notitlematches' => 'Hakusanaa ei löytynyt minkään sivun otsikosta',
 'textmatches' => 'Osumat sivujen teksteissä',
 'notextmatches' => 'Hakusanaa ei löytynyt sivujen teksteistä',
 'prevn' => '← {{PLURAL:$1|edellinen|$1 edellistä}}',
@@ -1376,10 +1369,8 @@ Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'viewprevnext' => 'Näytä [$3] kerralla.
 
 $1 {{int:pipe-separator}} $2',
-'searchmenu-legend' => 'Hakuasetukset',
 'searchmenu-exists' => "'''Tässä wikissä on sivu nimellä [[:$1]].'''",
 'searchmenu-new' => "'''Luo sivu ''[[:$1]]'' tähän wikiin.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Selaa sivuja tällä etuliitteellä]]',
 'searchprofile-articles' => 'Sisältösivut',
 'searchprofile-project' => 'Ohje- ja projektisivut',
 'searchprofile-images' => 'Kuvat ja tiedostot',
@@ -1407,14 +1398,10 @@ $1 {{int:pipe-separator}} $2',
 'showingresults' => "{{PLURAL:$1|'''Yksi''' tulos|'''$1''' tulosta}} tuloksesta '''$2''' alkaen.",
 'showingresultsnum' => "Alla on {{PLURAL:$3|'''Yksi''' hakutulos|'''$3''' hakutulosta}} alkaen '''$2.''' tuloksesta.",
 'showingresultsheader' => "{{PLURAL:$5|Tulokset '''$1'''–'''$3'''|Tulokset '''$1'''–'''$2''' kaikkiaan '''$3''' osuman joukosta}} haulle '''$4'''",
-'nonefound' => "'''Huomautus''': Haku kohdistuu oletuksena vain tiettyihin nimiavaruuksiin.
-Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön (mukaan lukien keskustelut, mallineet jne.) tai kohdista haku haluttuun nimiavaruuteen.",
 'search-nonefound' => 'Hakusi ei tuottanut tulosta.',
-'powersearch' => 'Etsi',
 'powersearch-legend' => 'Laajennettu haku',
 'powersearch-ns' => 'Hae nimiavaruuksista:',
 'powersearch-redir' => 'Luettele ohjaukset',
-'powersearch-field' => 'Etsi',
 'powersearch-togglelabel' => 'Muuta valintaa',
 'powersearch-toggleall' => 'Valitse kaikki',
 'powersearch-togglenone' => 'Ei mitään',
@@ -1426,8 +1413,7 @@ 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.',
-'prefsnologintext' => 'Sinun täytyy <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjautua sisään]</span>, jotta voisit muuttaa asetuksiasi.',
+'prefsnologintext2' => 'Sinun pitää $1 ennen kuin voit muuttaa käyttäjän asetuksia.',
 'changepassword' => 'Salasanan vaihto',
 'prefs-skin' => 'Ulkoasu',
 'skin-preview' => 'esikatselu',
@@ -1451,7 +1437,6 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'prefs-email' => 'Sähköpostiasetukset',
 'prefs-rendering' => 'Ulkoasu',
 'saveprefs' => 'Tallenna asetukset',
-'resetprefs' => 'Tyhjennä tallentamattomat muutokset',
 'restoreprefs' => 'Palauta kaikki oletusasetuksiin (kaikissa osioissa)',
 'prefs-editing' => 'Muokkaus',
 'rows' => 'Rivejä',
@@ -1472,7 +1457,6 @@ Kuka tahansa, joka tietää sen voi lukea tarkkailulistaasi, joten älä paljast
 'localtime' => 'Paikallinen aika',
 'timezoneuseserverdefault' => 'Käytä oletusta ($1)',
 'timezoneuseoffset' => 'Muu (määritä aikaero)',
-'timezoneoffset' => 'Aikaero',
 'servertime' => 'Palvelimen aika',
 'guesstimezone' => 'Utele selaimelta',
 'timezoneregion-africa' => 'Afrikka',
@@ -1724,6 +1708,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',
@@ -1765,7 +1751,7 @@ Tämä tieto on julkinen.',
 'reuploaddesc' => 'Peruuta tallennus ja palaa tallennuslomakkeelle.',
 'upload-tryagain' => 'Lähetä muutettu tiedostokuvaus',
 'uploadnologin' => 'Et ole kirjautunut sisään',
-'uploadnologintext' => 'Sinun pitää $1 tallentaaksesi tiedostoja.',
+'uploadnologintext' => 'Sinun pitää $1, jotta voit tallentaa tiedostoja.',
 'upload_directory_missing' => 'Tallennushakemisto $1 puuttuu, eikä palvelin pysty luomaan sitä.',
 'upload_directory_read_only' => 'Palvelimella ei ole kirjoitusoikeuksia tallennushakemistoon $1.',
 'uploaderror' => 'Tallennusvirhe',
@@ -2209,10 +2195,8 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'protectedpages' => 'Suojatut sivut',
 'protectedpages-indef' => 'Vain ikuisesti suojatut',
 'protectedpages-cascade' => 'Vain tarttuvasti suojatut',
-'protectedpagestext' => 'Seuraavat sivut on suojattu siirrolta tai muokkauksilta',
 'protectedpagesempty' => 'Mitään sivuja ei ole tällä hetkellä suojattu näillä asetuksilla.',
 'protectedtitles' => 'Suojatut sivunimet',
-'protectedtitlestext' => 'Seuraavien sivujen luonti on estetty suojauksella.',
 'protectedtitlesempty' => 'Ei suojattuja sivunimiä näillä hakuehdoilla.',
 'listusers' => 'Käyttäjälista',
 'listusers-editsonly' => 'Näytä vain käyttäjät, joilla on muokkauksia',
@@ -2964,14 +2948,16 @@ $2',
 
 # Special:Import
 'import' => 'Tuo sivuja',
-'importinterwiki' => 'Tuo sivuja muista wikeistä',
-'import-interwiki-text' => 'Valitse wiki ja sivun nimi. Versioiden päivämäärät ja muokkaajat säilytetään. Kaikki wikienväliset tuonnit kirjataan [[Special:Log/import|tuontilokiin]].',
+'importinterwiki' => 'Tuo sivuja muista wikeistä (transwiki import)',
+'import-interwiki-text' => 'Valitse wiki ja sivun nimi tuontia varten.
+Versioiden päivämäärät ja muokkaajien nimet säilyvät ennallaan. 
+Kaikki wikienväliset tuontitapahtumat kirjataan [[Special:Log/import|tuontilokiin]].',
 'import-interwiki-source' => 'Lähdewiki/sivu:',
-'import-interwiki-history' => 'Kopioi sivun koko historia',
-'import-interwiki-templates' => 'Liitä kaikki mallineet',
+'import-interwiki-history' => 'Kopioi sivun koko historia ja kaikki versiot',
+'import-interwiki-templates' => 'Ota mukaan kaikki mallineet',
 'import-interwiki-submit' => 'Tuo',
 'import-interwiki-namespace' => 'Kohdenimiavaruus:',
-'import-interwiki-rootpage' => 'Tuo annetun sivun alasivuiksi (valinnainen):',
+'import-interwiki-rootpage' => 'Kohteessa oleva perussivu (valinnainen):',
 'import-upload-filename' => 'Tiedostonimi:',
 'import-comment' => 'Kommentti:',
 'importtext' => 'Vie sivuja lähdewikistä käyttäen [[Special:Export|vientityökalua]].
@@ -2993,7 +2979,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'importuploaderrorpartial' => 'Tuontitiedoston tallennus epäonnistui. Tiedostosta oli lähetetty vain osa.',
 'importuploaderrortemp' => 'Tuontitiedoston tallennus epäonnistui. Väliaikaistiedostojen kansio puuttuu.',
 'import-parse-failure' => 'XML-tuonti epäonnistui jäsennysvirheen takia.',
-'import-noarticle' => 'Ei tuotavaa sivua.',
+'import-noarticle' => 'Ei sivua tuotavaksi!',
 'import-nonewrevisions' => 'Kaikki versiot on tuotu aiemmin.',
 'xml-error-string' => '$1 rivillä $2, sarakkeessa $3 (tavu $4): $5',
 'import-upload' => 'Tallenna XML-tiedosto',
@@ -3006,16 +2992,16 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'import-error-invalid' => 'Sivua $1 ei tuotu, koska sen nimi ei kelpaa.',
 'import-error-unserialize' => 'Versiota $2 sivusta $1 ei voida jakaa osiin. Version ilmoitettiin käyttävän sisältömallia $3 ja sarjoitusmuotoilua $4.',
 'import-options-wrong' => '{{PLURAL:$2|Väärä asetus|Väärät asetukset}}: <nowiki>$1</nowiki>',
-'import-rootpage-invalid' => 'Annettu sivun nimi ei kelpaa.',
-'import-rootpage-nosubpage' => 'Annetun sivun nimiavaruus $1 ei salli alasivuja.',
+'import-rootpage-invalid' => 'Annettu perussivun nimi ei kelpaa.',
+'import-rootpage-nosubpage' => 'Annetun perussivun nimiavaruus "$1" ei salli alasivuja.',
 
 # Import log
 'importlogpage' => 'Tuontiloki',
-'importlogpagetext' => 'Loki toisista wikeistä tuoduista sivuista.',
-'import-logentry-upload' => 'toi tiedoston [[$1]] tallentamalla sen',
+'importlogpagetext' => 'Loki ylläpitäjien toisista wikeistä tuomista sivuista, joissa on muokkaushistoriaa.',
+'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' => '{{PLURAL:$1|yksi versio|$1 versiota}} wikistä $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|versio|versiota}} tuotiin wikistä $2',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptin testaus',
@@ -3711,10 +3697,6 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
 'exif-urgency-high' => 'Korkea ($1)',
 'exif-urgency-other' => 'Käyttäjän määrittelemä prioriteetti ($1)',
 
-# External editor support
-'edit-externally' => 'Muokkaa tätä tiedostoa ulkoisessa sovelluksessa',
-'edit-externally-help' => '(Katso [https://www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lisätietoja.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'koko historia',
 'namespacesall' => 'kaikki',
@@ -3936,8 +3918,8 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
 
 # Special:SpecialPages
 'specialpages' => 'Toimintosivut',
-'specialpages-note' => '----
-* Normaalit toimintosivut.
+'specialpages-note-top' => 'Merkkien selitys',
+'specialpages-note' => '* Normaalit toimintosivut.
 * <span class="mw-specialpagerestricted">Rajoitetut toimintosivut.</span>',
 'specialpages-group-maintenance' => 'Sivujen huoltaminen',
 'specialpages-group-other' => 'Muut',
@@ -3972,7 +3954,7 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
 'tag-filter-submit' => 'Suodata',
 'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Merkintä|Merkinnät}}]]: $2)',
 'tags-title' => 'Merkinnät',
-'tags-intro' => 'Tämä sivu luetteloi merkinnät, joilla ohjelmisto voi merkitä muokkauksia, ja niiden tarkoitukset.',
+'tags-intro' => "Tämä sivu luetteloi ne merkinnät (''eng.'' tags), joilla ohjelmisto voi merkitä muokkauksia, ja niiden tarkoitukset.",
 'tags-tag' => 'Merkintänimi',
 'tags-display-header' => 'Näkyvyys muutosluetteloissa',
 'tags-description-header' => 'Täysi kuvaus tarkoituksesta',
@@ -4145,6 +4127,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 f7249bf..e35cc81 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' ),
@@ -269,7 +268,6 @@ $messages = array(
 'qbedit' => 'Rætta',
 'qbpageoptions' => 'Henda síðan',
 'qbmyoptions' => 'Mínar síður',
-'qbspecialpages' => 'Serstakar síður',
 'faq' => 'OSS',
 'faqpage' => 'Project:OSS',
 
@@ -386,12 +384,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 +439,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',
@@ -484,9 +482,6 @@ Ongin frágreiðing varð givin.',
 'perfcachedts' => 'Fylgjandi dáta er "fangað" (cached), og var seinast dagført $1. Í mesta lagi {{PLURAL:$4|eitt úrslit er|$4 úrslit eru}} tøk í cache.',
 'querypage-no-updates' => 'Tað ber í løtuni ikki til at dagføra hesa síðuna.
 Dáta higani verður í løtuni ikki endurnýggjað.',
-'wrong_wfQuery_params' => '↓ Skeiv parametir til wfQuery()<br />
-Funktión: $1<br />
-Fyrispurningur: $2',
 'viewsource' => 'Vís keldu',
 'viewsource-title' => 'Sí keldu fyri $1',
 'actionthrottled' => 'Hendingin kvaldist',
@@ -519,7 +514,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 +1072,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:',
@@ -1160,12 +1156,8 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 # Search results
 'searchresults' => 'Leitúrslit',
 'searchresults-title' => 'Leiti úrslit fyri "$1"',
-'searchresulttext' => 'Ynskir tú fleiri upplýsingar um leiting á {{SITENAME}}, kanst tú skoða [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tú leitaði eftur \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|allar síður sum byrja við "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|allar síður sum leinkja til "$1"]])',
-'searchsubtitleinvalid' => "Tú leitaði eftur '''$1'''",
 'toomanymatches' => 'Alt ov nógvar úrslit vóru funnin, vinarliga royn aftur við nýggjum fyrispurningi',
 'titlematches' => 'Síðu heiti samsvarar',
-'notitlematches' => 'Onki síðuheiti samsvarar',
 'textmatches' => 'Teksturin á síðuni samsvarar',
 'notextmatches' => 'Ongin síðutekstur samsvarar',
 'prevn' => 'undanfarnu {{PLURAL:$1|$1}}',
@@ -1174,10 +1166,8 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 'nextn-title' => 'Næstu $1 {{PLURAL:$1|úrslit|úrslit}}',
 'shown-title' => 'Vís $1 {{PLURAL:$1|úrslit|úrslit}} á hvørjari síðu',
 'viewprevnext' => 'Vís ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Leiti møguleikar',
 'searchmenu-exists' => "'''Tað er longu ein síða sum eitur \"[[:\$1]]\" á hesi wiki.'''",
 'searchmenu-new' => "'''Stovna síðuna \"[[:\$1]]\" á hesi wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita í síðum við hesum prefiksinum (byrjan av orðinum)]]',
 'searchprofile-articles' => 'Innihaldssíður',
 'searchprofile-project' => 'Hjálpar og verkætlanar síður',
 'searchprofile-images' => 'Fjølmiðlar - multimedia',
@@ -1205,14 +1195,10 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 'showingresults' => "Niðanfyri standa upp til {{PLURAL:$1|'''$1''' úrslit, sum byrjar|'''$1''' úrslit, sum byrja}} við #<b>$2</b>.",
 'showingresultsnum' => "Niðanfyri standa {{PLURAL:$3|'''1''' úrslit, sum byrjar|'''$3''' úrslit, sum byrja}} við #<b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Úrslit '''$1''' av '''$3'''|Úrslit '''$1 - $2''' av '''$3'''}} fyri '''$4'''",
-'nonefound' => "'''Legg til merkis''': Sum standard verður bert leita í summum navnaøkum.
-Tú kanst royna at brúka ''all:'' sum fyrsta stavilsi fyri at søkja í øllum innihaldi (eisini kjak síður, fyrimyndir, osfr.), ella brúka tað ynskta navnaøkið sum prefiks (forstavilsi).",
 'search-nonefound' => 'Leitingin gav onki úrslit.',
-'powersearch' => 'Leita',
 'powersearch-legend' => 'Víðkað leitan',
 'powersearch-ns' => 'Leita í navnaøkinum:',
 'powersearch-redir' => 'Vís umvegir',
-'powersearch-field' => 'Leita eftir',
 'powersearch-togglelabel' => 'Kanna eftir:',
 'powersearch-toggleall' => 'Alt',
 'powersearch-togglenone' => 'Ongi',
@@ -1226,8 +1212,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',
-'prefsnologintext' => 'Tú mást vera <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} innritað/ur]</span> fyri at broyta brúkarainnstillingar.',
 'changepassword' => 'Broyt loyniorð',
 'prefs-skin' => 'Hamur',
 'skin-preview' => 'Forskoðan',
@@ -1251,7 +1235,6 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'prefs-email' => 'T-post møguleikar',
 'prefs-rendering' => 'Útsjónd',
 'saveprefs' => 'Goym innstillingar',
-'resetprefs' => 'Reinsa ikki goymdar broytingar',
 'restoreprefs' => 'Nullstilla alt til standard innstillingar (í øllum teigum)',
 'prefs-editing' => 'Broyting av greinum',
 'rows' => 'Røð:',
@@ -1269,7 +1252,6 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'localtime' => 'Lokal tíð:',
 'timezoneuseserverdefault' => 'Nýt wiki standard: ($1)',
 'timezoneuseoffset' => 'Annað (skrivað munin)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Servara tíð:',
 'guesstimezone' => 'Fyll út við kagara',
 'timezoneregion-africa' => 'Afrika',
@@ -1506,6 +1488,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',
@@ -1516,6 +1499,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',
@@ -1774,6 +1758,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',
 
@@ -1971,14 +1956,13 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'protectedpages' => 'Friðaðar síður',
 'protectedpages-indef' => 'Bert verjur sum vara óendaligt',
 'protectedpages-cascade' => 'Bert niðurarvaðar verjur',
-'protectedpagestext' => 'Hesar síður eru vardar móti flyting ella rætting',
 'protectedpagesempty' => 'Ongar síður eru í løtuni vardar á henda hátt.',
 'protectedtitles' => 'Vard heiti',
-'protectedtitlestext' => 'Hesi heiti er vard móti upprættan',
 'protectedtitlesempty' => 'Ongi heiti eru í løtuni vard á henda hátt.',
 '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',
@@ -2334,6 +2318,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
@@ -2739,7 +2724,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',
@@ -2882,7 +2867,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}}',
@@ -3056,10 +3041,6 @@ Onnur metadáta verða fjald sum standard.
 
 'exif-urgency-normal' => 'Vanligt ($1)',
 
-# External editor support
-'edit-externally' => 'Rætta hesa fílu við eksternari applikatión',
-'edit-externally-help' => '(Sí [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] fyri meira kunning)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alt',
 'namespacesall' => 'alt',
@@ -3233,4 +3214,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 952c95c..506a63b 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(
@@ -550,7 +565,6 @@ $messages = array(
 'qbedit' => 'Modifier',
 'qbpageoptions' => 'Cette page',
 'qbmyoptions' => 'Mes pages',
-'qbspecialpages' => 'Pages spéciales',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -666,11 +680,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,11 +777,8 @@ 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 />
-Requête : $2',
 'viewsource' => 'Voir le texte source',
 'viewsource-title' => 'Voir la source de $1',
 'actionthrottled' => 'Action limitée',
@@ -800,7 +809,8 @@ L'administrateur qui l'a verrouillé a fourni ce motif : « $3 ».",
 'invalidtitle-knownnamespace' => "Titre invalide avec l'espace de noms « $2 » et l'intitulé « $3 »",
 'invalidtitle-unknownnamespace' => "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
 'exception-nologin' => 'Non connecté(e)',
-'exception-nologin-text' => "Cette page ou cette action nécessite d'être connecté sur ce wiki.",
+'exception-nologin-text' => 'Veuillez [[Special:Userlogin|vous connecter]] pour pouvoir accéder à cette page ou cette action.',
+'exception-nologin-text-manual' => 'Veuillez $1 pour pouvoir accéder à cette page ou cette action.',
 
 # Virus scanner
 'virus-badscanner' => "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
@@ -896,7 +906,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
@@ -968,7 +978,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.',
@@ -1443,12 +1453,8 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 # Search results
 'searchresults' => 'Résultats de la recherche',
 'searchresults-title' => 'Résultats de recherche pour « $1 »',
-'searchresulttext' => "Pour plus d'informations sur la recherche dans {{SITENAME}}, voir [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => "Vous avez recherché « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes les pages commençant par « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes les pages qui ont un lien vers « $1 »]])",
-'searchsubtitleinvalid' => "Vous avez recherché « '''$1''' »",
 'toomanymatches' => "Un trop grand nombre d'occurrences a été renvoyé, veuillez soumettre une requête différente.",
 'titlematches' => 'Correspondances dans les titres des pages',
-'notitlematches' => 'Aucun titre de page ne correspond à la recherche.',
 'textmatches' => 'Correspondances dans le texte des pages',
 'notextmatches' => 'Aucun texte de page ne correspond à la recherche.',
 'prevn' => '{{PLURAL:$1|précédente|$1 précédentes}}',
@@ -1457,10 +1463,8 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'nextn-title' => '$1 {{PLURAL:$1|résultat suivant|résultats suivants}}',
 'shown-title' => 'Afficher $1 résultat{{PLURAL:$1||s}} par page',
 'viewprevnext' => 'Voir ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Options de recherche',
 'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki'''",
 'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rechercher les pages commençant par ce préfixe]]',
 'searchprofile-articles' => 'Pages de contenu',
 'searchprofile-project' => "Pages d'aide et de projet",
 'searchprofile-images' => 'Multimédia',
@@ -1488,14 +1492,10 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'showingresults' => 'Affichage de <b>$1</b> résultat{{PLURAL:$1||s}} à partir du n°<b>$2</b>.',
 'showingresultsnum' => 'Affichage de <b>$3</b> résultat{{PLURAL:$3||s}} à partir du n°<b>$2</b>.',
 'showingresultsheader' => "{{PLURAL:$5|Résultat '''$1'''|Résultats '''$1–$2'''}} de '''$3''' pour '''$4'''",
-'nonefound' => "'''Note''' : par défaut, seuls certains espaces de noms sont utilisés pour la recherche.
-Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (y compris les pages de discussion, les modèles, etc.) ou bien utilisez l'espace de noms souhaité comme préfixe.",
 'search-nonefound' => "Il n'y a aucun résultat correspondant à la requête.",
-'powersearch' => 'Rechercher',
 'powersearch-legend' => 'Recherche avancée',
 'powersearch-ns' => 'Rechercher dans les espaces de noms :',
 'powersearch-redir' => 'Afficher les redirections',
-'powersearch-field' => 'Rechercher',
 'powersearch-togglelabel' => 'Cocher :',
 'powersearch-toggleall' => 'Tout',
 'powersearch-togglenone' => 'Aucune',
@@ -1507,8 +1507,7 @@ 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é',
-'prefsnologintext' => 'Vous devez être <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} connecté]</span> pour modifier vos préférences d\'utilisateur.',
+'prefsnologintext2' => 'Veuillez $1 pour définir les préférences utilisateur.',
 'changepassword' => 'Changer de mot de passe',
 'prefs-skin' => 'Habillage',
 'skin-preview' => 'Prévisualiser',
@@ -1532,7 +1531,6 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
 'prefs-email' => 'Options des courriels',
 'prefs-rendering' => 'Apparence',
 'saveprefs' => 'Enregistrer les préférences',
-'resetprefs' => 'Rétablir les préférences',
 'restoreprefs' => 'Restaurer tous les paramètres par défaut (dans toutes les sections)',
 'prefs-editing' => 'Modification',
 'rows' => 'Rangées :',
@@ -1553,7 +1551,6 @@ Toute personne la connaissant pourra lire votre liste de suivi, ne la communique
 'localtime' => 'Heure locale :',
 'timezoneuseserverdefault' => 'Utiliser la valeur par défaut du wiki ($1)',
 'timezoneuseoffset' => 'Autre (spécifier le décalage)',
-'timezoneoffset' => 'Décalage horaire¹ :',
 'servertime' => 'Heure du serveur :',
 'guesstimezone' => 'Utiliser la valeur du navigateur',
 'timezoneregion-africa' => 'Afrique',
@@ -1807,6 +1804,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.',
@@ -2311,10 +2311,8 @@ Les entrées <del>barrées</del> ont été résolues.',
 'protectedpages' => 'Pages protégées',
 'protectedpages-indef' => 'Uniquement les protections permanentes',
 'protectedpages-cascade' => 'Uniquement les protections en cascade',
-'protectedpagestext' => 'Les pages suivantes sont protégées contre les modifications ou le déplacement.',
 'protectedpagesempty' => "Aucune page n'est protégée de cette façon.",
 'protectedtitles' => 'Titres protégés',
-'protectedtitlestext' => 'Les titres suivants sont protégés à la création',
 'protectedtitlesempty' => "Aucun titre n'est actuellement protégé avec ces paramètres.",
 'listusers' => 'Liste des utilisateurs',
 'listusers-editsonly' => 'Ne montrer que les utilisateurs ayant au moins une contribution',
@@ -2539,9 +2537,9 @@ Contactez ce contributeur :
 courriel : $PAGEEDITOR_EMAIL
 wiki : $PAGEEDITOR_WIKI
 
-Il n\'y aura pas d\'autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.
+Il n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page une fois connecté. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.
 
-             Votre système de notification de {{SITENAME}}
+Votre système de notification de {{SITENAME}}
 
 --
 Pour modifier les paramètres de notification par courriel, visitez
@@ -3845,10 +3843,6 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-urgency-high' => 'Haute ($1)',
 'exif-urgency-other' => "Urgence définie par l'utilisateur ($1)",
 
-# External editor support
-'edit-externally' => 'Modifier ce fichier en utilisant une application externe',
-'edit-externally-help' => "(Consulter [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d'installation] pour plus d'informations)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tout',
 'namespacesall' => 'Tous',
@@ -4153,10 +4147,9 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
 
 # Special:SpecialPages
 'specialpages' => 'Pages spéciales',
-'specialpages-note' => '----
-* Pages spéciales normales.
-* <span class="mw-specialpagerestricted">Pages spéciales restreintes.</span>
-* <span class="mw-specialpagecached">Pages spéciales seulement en cache (pourraient être désuètes).</span>',
+'specialpages-note-top' => 'Légende',
+'specialpages-note' => '* Pages spéciales normales.
+* <span class="mw-specialpagerestricted">Pages spéciales restreintes.</span>',
 'specialpages-group-maintenance' => 'Rapports de maintenance',
 'specialpages-group-other' => 'Autres pages spéciales',
 'specialpages-group-login' => "S'identifier / s'inscrire",
@@ -4369,4 +4362,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 695e28a..e598413 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' ),
@@ -465,7 +465,6 @@ $messages = array(
 'qbedit' => 'Changiér',
 'qbpageoptions' => 'Ceta pâge',
 'qbmyoptions' => 'Mes pâges',
-'qbspecialpages' => 'Pâges spèciâles',
 'faq' => 'Quèstions sovent posâyes',
 'faqpage' => 'Project:Quèstions sovent posâyes',
 
@@ -582,8 +581,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}}',
@@ -679,9 +676,6 @@ Contint de sûr yon ou ben un mouél de caractèros que pôvont pas étre empley
 'perfcachedts' => 'Cetes balyês sont en cacho et sont étâyes betâyes a jorn por lo dèrriér côp a $1. Por lo més {{PLURAL:$1|un rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
 'querypage-no-updates' => 'Ora les mêses a jorn por ceta pâge sont dèsactivâyes.
 Les balyês ique seront pas betâyes a jorn.',
-'wrong_wfQuery_params' => 'Paramètros fôx dessus wfQuery()<br />
-Fonccion : $1<br />
-Demanda : $2',
 'viewsource' => 'Vêre lo tèxto sôrsa',
 'viewsource-title' => 'Vêre lo tèxto sôrsa de $1',
 'actionthrottled' => 'Accion limitâye',
@@ -1382,12 +1376,8 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 # Search results
 'searchresults' => 'Rèsultats de la rechèrche',
 'searchresults-title' => 'Rèsultats de la rechèrche por « $1 »',
-'searchresulttext' => 'Por més d’enformacions sur la rechèrche dedens {{SITENAME}}, vêde [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Vos éd rechèrchiê « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totes les pâges que començont per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pâges qu’ant un lim de vers « $1 »]])",
-'searchsubtitleinvalid' => "Vos éd rechèrchiê « '''$1''' »",
 'toomanymatches' => 'Un mouél de corrèspondances est étâ retornâ, se vos plét èprovâd na rechèrche difèrenta',
 'titlematches' => 'Corrèspondances dedens los titros de les pâges',
-'notitlematches' => 'Niona corrèspondance dedens los titros de les pâges',
 'textmatches' => 'Corrèspondances dedens lo tèxto de les pâges',
 'notextmatches' => 'Niona corrèspondance dedens lo tèxto de les pâges',
 'prevn' => '{{PLURAL:$1|$1}} devant',
@@ -1396,10 +1386,8 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 'nextn-title' => '$1 rèsultat{{PLURAL:$1||s}} aprés',
 'shown-title' => 'Montrar $1 rèsultat{{PLURAL:$1||s}} per pâge',
 'viewprevnext' => 'Vêre ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Chouèx de rechèrche',
 'searchmenu-exists' => "'''Y at na pâge apelâye « [[:$1]] » sur ceti vouiqui.'''",
 'searchmenu-new' => "'''Fâre la pâge « [[:$1|$1]] » sur ceti vouiqui !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Fâre dèfelar les pâges que començont per ceti prèfixo]]',
 'searchprofile-articles' => 'Pâges de contegnu',
 'searchprofile-project' => 'Pâges d’éde et pâges projèt',
 'searchprofile-images' => 'Multimèdia',
@@ -1427,14 +1415,10 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 'showingresults' => "Vua de '''$1''' rèsultat{{PLURAL:$1||s}} dês lo numerô '''$2'''.",
 'showingresultsnum' => "Vua de '''$3''' rèsultat{{PLURAL:$3||s}} dês lo numerô '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rèsultat '''$1'''|Rèsultats '''$1 - $2'''}} de '''$3''' por '''$4'''",
-'nonefound' => "'''Nota :''' solament quârques èspâços de noms sont rechèrchiês per dèfôt.
-Èprovâd en empleyent lo prèfixo ''all:'' por rechèrchiér dedens tot lo contegnu (les pâges de discussion, los modèlos, et tot cen que vat avouéc) ou ben empleyéd l’èspâço de noms volu coment prèfixo.",
 'search-nonefound' => 'Y at gins de rèsultat que corrèspond a la rechèrche.',
-'powersearch' => 'Rechèrche avanciêe',
 'powersearch-legend' => 'Rechèrche avanciêe',
 'powersearch-ns' => 'Rechèrchiér dedens los èspâços de noms :',
 'powersearch-redir' => 'Listar les redirèccions',
-'powersearch-field' => 'Rechèrchiér',
 'powersearch-togglelabel' => 'Chouèsir :',
 'powersearch-toggleall' => 'Tôs',
 'powersearch-togglenone' => 'Pas yon',
@@ -1448,8 +1432,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ê',
-'prefsnologintext' => 'Vos dête étre <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} branchiê]</span> por dèfenir les prèferences utilisator.',
 'changepassword' => 'Changiér lo contresegno',
 'prefs-skin' => 'Habelyâjo',
 'skin-preview' => 'Prèvêre',
@@ -1473,7 +1455,6 @@ Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'prefs-email' => 'Chouèx de mèssageria èlèctronica',
 'prefs-rendering' => 'Aparence',
 'saveprefs' => 'Encartar',
-'resetprefs' => 'Èfaciér los changements pas encartâs',
 'restoreprefs' => 'Rètablir tota la configuracion per dèfôt',
 'prefs-editing' => 'Changement',
 'rows' => 'Renches :',
@@ -1491,7 +1472,6 @@ Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'localtime' => 'Hora locâla :',
 'timezoneuseserverdefault' => 'Empleyér la valor du vouiqui per dèfôt ($1)',
 'timezoneuseoffset' => 'Ôtro (spècifiar lo dècalâjo)',
-'timezoneoffset' => 'Dècalâjo horèro¹ :',
 'servertime' => 'Hora du sèrvior :',
 'guesstimezone' => 'Empleyér la valor du navigator',
 'timezoneregion-africa' => 'Africa',
@@ -1725,6 +1705,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',
@@ -2229,10 +2210,8 @@ Ora redirige vers [[$2]].',
 'protectedpages' => 'Pâges protègiêes',
 'protectedpages-indef' => 'Ren que les protèccions sen fin',
 'protectedpages-cascade' => 'Ren que les protèccions en cascâda',
-'protectedpagestext' => 'Cetes pâges sont protègiêes contre los dèplacements los changements',
 'protectedpagesempty' => 'Ora niona pâge est protègiêe avouéc celos paramètros.',
 'protectedtitles' => 'Titros protègiês',
-'protectedtitlestext' => 'Cetos titros sont protègiês a la crèacion',
 'protectedtitlesempty' => 'Ora nion titro est protègiê avouéc celos paramètros.',
 'listusers' => 'Lista des utilisators',
 'listusers-editsonly' => 'Montrar ren que los utilisators avouéc des contribucions',
@@ -3735,10 +3714,6 @@ Los ôtros champs seront cachiês per dèfôt.
 'exif-urgency-high' => 'Hôta ($1)',
 'exif-urgency-other' => 'Prioritât dèfenia per l’usanciér ($1)',
 
-# External editor support
-'edit-externally' => 'Changiér ceti fichiér en utilisent una aplicacion de defôr',
-'edit-externally-help' => '(Vêde les [https://www.mediawiki.org/wiki/Manual:External_editors enstruccions d’enstalacion] por més d’enformacions)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tot',
 'namespacesall' => 'tôs',
@@ -4026,8 +4001,7 @@ Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la
 
 # Special:SpecialPages
 'specialpages' => 'Pâges spèciâles',
-'specialpages-note' => '----
-* Pâges spèciâles normales.
+'specialpages-note' => '* Pâges spèciâles normales.
 * <span class="mw-specialpagerestricted">Pâges spèciâles rètrentes.</span>
 * <span class="mw-specialpagecached">Pâges spèciâles solament en cache (porriant étre dèpassâs).</span>',
 'specialpages-group-maintenance' => 'Rapôrts de mantegnence',
@@ -4212,4 +4186,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 80b8b93..1c10d46 100644 (file)
@@ -177,7 +177,6 @@ $messages = array(
 'qbedit' => 'Bewerke',
 'qbpageoptions' => 'Detdiar sidj',
 'qbmyoptions' => 'Min sidjen',
-'qbspecialpages' => 'Spezial-sidjen',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -297,12 +296,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',
@@ -399,9 +396,6 @@ Det as ferlicht al faan hoker ööders stregen wurden.',
 'perfcached' => 'Jodiar dooten kem faan a cache an san ferlicht ei muar aktuel. Ei muar üs {{PLURAL:$1|ian resultoot as|$1 resultooten san}} uun a cache.',
 'perfcachedts' => 'Jodiar dooten kem faan a cache, leetst tooch nei: $1. Ei muar üs {{PLURAL:$4|ian resultoot as|$4 resultooten san}} uun a cache.',
 'querypage-no-updates' => 'Dü könst detdiar sidj uun uugenblak ei aktualisiare. A dooten wurd iarst ans ei iinsteld.',
-'wrong_wfQuery_params' => 'Ferkiard dooten för wfQuery()<br />
-Funktjuun: $1<br />
-Uffraag: $2',
 'viewsource' => 'Kweltekst uunluke',
 'viewsource-title' => 'Code faan sidj $1 uunluke',
 'actionthrottled' => 'Taal faan aktjuunen limitiaret',
@@ -432,7 +426,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 +980,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:',
@@ -1076,12 +1071,8 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Fünjen sidjen',
 'searchresults-title' => 'Fünjen sidjen för „$1“',
-'searchresulttext' => "Wan dü muar auer't schüken uun {{SITENAME}} wed wel, luke efter bi [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Din uunfraag: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|sidjen, diar mä „$1“ began]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sidjen, diar efter „$1“ ferwise]])',
-'searchsubtitleinvalid' => 'Din uunfraag: "$1".',
 'toomanymatches' => 'Diar kaam tuföl resultaaten üüb din uunfraag. Ferschük det ööders.',
 'titlematches' => 'Auerianstemangen mä sidjennöömer',
-'notitlematches' => 'Nian auerianstemangen mä sidjennöömer',
 'textmatches' => 'Auerianstemangen mä teksten',
 'notextmatches' => 'Nian auerianstemangen mä teksten',
 'prevn' => '{{PLURAL:$1|leetst|leetst $1}}',
@@ -1090,10 +1081,8 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'nextn-title' => 'Naist $1 {{PLURAL:$1|resultaat|resultaaten}}',
 'shown-title' => 'Wise $1 {{PLURAL:$1|resultaat|resultaaten}} per sidj',
 'viewprevnext' => 'Wise ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Säkmöölikhäide',
 'searchmenu-exists' => "'''Deer as en sid nååmd \"[[:\$1]]\" önj jüdeer Wiki'''",
 'searchmenu-new' => "'''Maage det sidj „[[:$1]]“ uun detheer wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wise aal jo sidjen, diar so began]]',
 'searchprofile-articles' => 'Artiikler',
 'searchprofile-project' => 'Halep- an Projektsidjen',
 'searchprofile-images' => 'Multimedia',
@@ -1121,13 +1110,10 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'showingresults' => "Heer {{PLURAL:$1|as '''1''' resultaat|san '''$1''' resultaaten}}, jo began mä numer '''$2.'''",
 'showingresultsnum' => "Heer {{PLURAL:$3|as '''1''' resultaat|san '''$3''' resultaaten}}, jo began mä numer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|resultaat '''$1''' faan '''$3'''|resultaaten '''$1-$2''' faan '''$3'''}}, för '''$4.'''",
-'nonefound' => "'''Paase üüb:''' Diar wurd man enkelt nöömrümer trochsoocht. Wan dü ''all:'' föör din wurd skraft, do woort uk uun aal a nöömrümer (datein, kategoriin, föörlaagen asw.) soocht. Dü könst uk en wasen nöömrüm föörwechstel.",
 'search-nonefound' => 'För din uunfraag san nian resultaaten fünjen wurden.',
-'powersearch' => 'Ütjwidjet schüken',
 'powersearch-legend' => 'Ütjwidjet schüken',
 'powersearch-ns' => 'Schük uun nöömrümer:',
 'powersearch-redir' => 'Widjerfeerangen uunwise',
-'powersearch-field' => 'Schük efter:',
 'powersearch-togglelabel' => 'Schük uun:',
 'powersearch-toggleall' => 'Aaltumaal',
 'powersearch-togglenone' => 'Nianen',
@@ -1139,8 +1125,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',
-'prefsnologintext' => 'Dü skel <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} uunmeldet]</span> wees, am din iinstelangen tu feranrin.',
+'prefsnologintext2' => 'Wees so gud an $1 , am din brüker-iinstelangen fäästtuleien.',
 'changepassword' => 'Paaswurd feranre',
 'prefs-skin' => 'Skak',
 'skin-preview' => 'Föörskau',
@@ -1164,7 +1149,6 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-email' => 'E-Mail iinstelangen',
 'prefs-rendering' => 'Skak',
 'saveprefs' => 'Iinstelangen seekre',
-'resetprefs' => 'Wech diarmä',
 'restoreprefs' => 'Normool iinstelangen weder haale (uun arke kirew)',
 'prefs-editing' => 'Bewerke',
 'rows' => 'Räen:',
@@ -1185,7 +1169,6 @@ Mä didiar kai koon arken jodiar sidjen beluke, diaram skulst dü ham ei widjerd
 'localtime' => 'Lokaal tidj:',
 'timezoneuseserverdefault' => 'Wiki standard tidj brük ($1)',
 'timezoneuseoffset' => 'Öödern (ferskeel uundu)',
-'timezoneoffset' => 'Ferskeel¹:',
 'servertime' => 'Server klooktidj:',
 'guesstimezone' => 'Faan a browser auernem',
 'timezoneregion-africa' => 'Afrikaa',
@@ -1438,6 +1421,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.',
@@ -1916,10 +1902,8 @@ Uun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det s
 'protectedpages' => 'Seekert sidjen',
 'protectedpages-indef' => 'Bluas permanent seekert sidjen uunwise',
 'protectedpages-cascade' => 'Bluas sidjen mä kaskaaden-seekerhaid',
-'protectedpagestext' => 'Jodiar spezial-sidjen san jin feranrin an fersküüwen seekert.',
 'protectedpagesempty' => 'Uun uugenblak san sok sidjen ei seekert.',
 'protectedtitles' => 'Seekert sidjennöömer',
-'protectedtitlestext' => 'Jodiar sidjennöömer kön ei brükt wurd.',
 'protectedtitlesempty' => 'Uun uugenblak san sok sidjen ei speret.',
 'listusers' => 'Brükerfertiaknis',
 'listusers-editsonly' => 'Wise bluas aktiif brükern',
@@ -2140,7 +2124,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
 
@@ -2921,7 +2905,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',
@@ -3385,10 +3369,6 @@ Ferwisangen uun det salew rä wurd üs ütjnoomen uunsen, huar det datei dach uu
 'exif-urgency-high' => 'Huuch ($1)',
 'exif-urgency-other' => 'Faan a brüker fäästlaanj prioriteet ($1)',
 
-# External editor support
-'edit-externally' => 'Detdiar datei mä en ekstern program bewerke',
-'edit-externally-help' => "(Luk efter uun't [https://www.mediawiki.org/wiki/Manual:External_editors hoonbuk] am muar diartu)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aaltumaal',
 'namespacesall' => 'aaltumaal',
@@ -3608,10 +3588,9 @@ An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special
 
 # Special:SpecialPages
 'specialpages' => 'Spezial-sidjen',
-'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>',
+'specialpages-note-top' => 'Legend',
+'specialpages-note' => '* Normool spezial-sidjen
+* <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',
@@ -3825,4 +3804,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 e63a5e1..c374eda 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' ),
@@ -239,7 +238,6 @@ $messages = array(
 'qbedit' => 'Cambie',
 'qbpageoptions' => 'Cheste pagjine',
 'qbmyoptions' => 'Mês pagjinis',
-'qbspecialpages' => 'Pagjinis speciâls',
 'faq' => 'Domandis plui frecuentis',
 
 # Vector skin
@@ -340,8 +338,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',
@@ -649,12 +645,8 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 # Search results
 'searchresults' => 'Risultâts de ricercje',
 'searchresults-title' => 'Risultâts de ricercje di "$1"',
-'searchresulttext' => 'Par plui informazions su lis ricercjis in {{SITENAME}}, cjale [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ricercje di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dutis lis pagjinis che a scomencin par "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dutis lis pagjinis che a pontin a "$1"]])',
-'searchsubtitleinvalid' => 'Pal test "$1"',
 'toomanymatches' => 'Masse risultâts, prove par plasê une ricercje divierse.',
 'titlematches' => 'Corispondencis tai titui des pagjinis',
-'notitlematches' => 'Nissune corispondence tai titui des pagjinis',
 'textmatches' => 'Corispondencis tal test des pagjinis',
 'notextmatches' => 'Nissune corispondence tal test des pagjinis',
 'prevn' => 'precedents {{PLURAL:$1|$1}}',
@@ -663,7 +655,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'nextn-title' => '$1 {{PLURAL:$1|risultât sucessîf|risultâts sucessîfs}}',
 'shown-title' => 'Mostre $1 {{PLURAL:$1|risultât|risultâts}} par pagjine',
 'viewprevnext' => 'Cjale ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzions de ricercje',
 'searchmenu-exists' => "'''E je une pagjine di non \"[[:\$1]]\" su cheste wiki'''",
 'searchmenu-new' => "'''Cree la pagjine \"[[:\$1]]\" su cheste wiki!'''",
 'searchprofile-articles' => 'Pagjinis di contignûts',
@@ -691,13 +682,10 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'showingresults' => "Ca sot {{PLURAL:$1|al è fin a '''1''' risultât|a son fin a '''$1''' risultâts}} scomençant dal numar '''$2'''.",
 'showingresultsnum' => "Ca sot {{PLURAL:$3|al è '''1''' risultât|a son '''$3''' risultâts}} scomençant dal numar '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultât '''$1''' su '''$3'''|Risultâts '''$1 - $2''' su '''$3'''}} par '''$4'''",
-'nonefound' => "'''Note''': la ricercje e ven fate normalmentri dome in cualchi spazi dai nons. Prove a scrivi ''all:'' prime dal test di cjatâ par cirî in ducj i nons dai spazis (includint lis pagjinis di discussion, i modei e v.i.) o se no dopre il non dal spazi desiderât come prefìs.",
 'search-nonefound' => 'Nissun risultât par cheste ricercje.',
-'powersearch' => 'Cîr',
 'powersearch-legend' => 'Ricercje avanzade',
 'powersearch-ns' => 'Cîr tai spazis dai nons:',
 'powersearch-redir' => 'Elenc re-indreçaments',
-'powersearch-field' => 'Cîr',
 'search-external' => 'Ricercje esterne',
 'searchdisabled' => 'La ricercje in {{SITENAME}} no je ative. Tu puedis doprâ Google intant. Sta atent che lis lôr tabelis sul contignût di {{SITENAME}} a puedin jessi pôc inzornadis.',
 
@@ -705,7 +693,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',
@@ -721,7 +708,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'prefs-misc' => 'Variis',
 'prefs-resetpass' => 'Cambie la peraule clâf',
 'saveprefs' => 'Salve lis preferencis',
-'resetprefs' => 'Predeterminât',
 'restoreprefs' => 'Torne a lis impostazions predeterminadis',
 'prefs-editing' => 'Cambiament',
 'rows' => 'Riis',
@@ -737,7 +723,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'localtime' => 'Ore locâl:',
 'timezoneuseserverdefault' => 'Dopre la ore dal servidôr ($1)',
 'timezoneuseoffset' => 'Altri (inserìs la difarence)',
-'timezoneoffset' => 'Difarence¹:',
 'servertime' => 'Ore dal servidôr:',
 'guesstimezone' => 'Cjape impostazions dal sgarfadôr',
 'timezoneregion-africa' => 'Afriche',
@@ -1541,10 +1526,6 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
 
 'exif-orientation-1' => 'Normâl',
 
-# External editor support
-'edit-externally' => 'Modifiche chest file cuntune aplicazion esterne',
-'edit-externally-help' => '(Cjale lis [https://www.mediawiki.org/wiki/Manual:External_editors istruzions] par vê altris informazions)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'dutis',
 'namespacesall' => 'ducj',
@@ -1625,8 +1606,7 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
 
 # Special:SpecialPages
 'specialpages' => 'Pagjinis speciâls',
-'specialpages-note' => '----
-* Pagjinis speciâls no riservadis.
+'specialpages-note' => '* Pagjinis speciâls no riservadis.
 * <strong class="mw-specialpagerestricted">Pagjinis speciâls a ciertis categoriis di utents.</strong>',
 'specialpages-group-maintenance' => 'Rapuarts di manutenzion',
 'specialpages-group-other' => 'Altris pagjinis speciâls',
@@ -1677,4 +1657,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 b531a43..9d6fd05 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' ),
@@ -281,7 +280,6 @@ $messages = array(
 'qbedit' => 'Bewurkje',
 'qbpageoptions' => 'Side-opsjes',
 'qbmyoptions' => 'Myn Opsjes',
-'qbspecialpages' => 'Bysûndere siden',
 'faq' => 'FAQ (faak stelde fragen)',
 'faqpage' => 'Project:Faak stelde fragen',
 
@@ -387,8 +385,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',
@@ -466,9 +462,6 @@ Meitsje dêr melding fan by in [[Special:ListUsers/sysop|systeembehearder]] fan
 'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Dizze side kin net bywurke wurde. Dizze gegevens wurde net ferfarske.',
-'wrong_wfQuery_params' => 'Ferkearde parameters foar wfQuery()<br />
-Funksje: $1<br />
-Query: $2',
 'viewsource' => 'Besjoch de boarne',
 'actionthrottled' => 'Hanneling opkeard',
 'actionthrottledtext' => 'As maatregel tsjin spam is it tal kearen per tiidsienheid beheind dat jo dizze hanneling ferrjochtsje kinne. Jo binne oer de limyt. Besykje it in tal minuten letter wer.',
@@ -888,13 +881,9 @@ Tink derom it brûken fan de navigaasjeferwizings dy kolom op'e nij ynstelt.",
 # Search results
 'searchresults' => 'Sykresultaat',
 'searchresults-title' => 'Sykresultaten foar "$1"',
-'searchresulttext' => 'Lês foar mear ynformaasje oer it sykjen yn de {{SITENAME}} de [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Foar fraach "[[:$1]]"',
-'searchsubtitleinvalid' => 'Foar fraach "$1"',
 'toomanymatches' => 'Der wiene tefolle resultaten.
 Prebearje in oare sykopdracht.',
 'titlematches' => 'Titels',
-'notitlematches' => 'Gjin titels',
 'textmatches' => 'Siden',
 'notextmatches' => 'Gjin siden',
 'prevn' => 'foarige {{PLURAL:$1|$1}}',
@@ -902,10 +891,8 @@ Prebearje in oare sykopdracht.',
 'prevn-title' => '{{PLURAL:$1|Foarich risseltaat|Foarige $1 risseltaten}}',
 'nextn-title' => '{{PLURAL:$1|Folgjend risseltaat|Folgjende $1 risseltaat}}',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) besjen.',
-'searchmenu-legend' => 'Sykopsjes',
 'searchmenu-exists' => "'''Der is in side mei namme \"[[:\$1]]\" yn dizze wiki'''",
 'searchmenu-new' => "'''Meitsje de side \"[[:\$1]]\" yn dizze wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sidenammen mei dit foarheaksel werjaan]]',
 'searchprofile-articles' => 'Ynhâldlike siden',
 'searchprofile-project' => 'Projektsiden',
 'searchprofile-images' => 'Triemmen',
@@ -931,15 +918,10 @@ Prebearje in oare sykopdracht.',
 'searchall' => 'alle',
 'showingresults' => "{{PLURAL:$1|'''1''' resultaat|'''$1''' resultaten}} fan #'''$2''' ôf.",
 'showingresultsnum' => "{{PLURAL:$3|'''1''' resultaat|'''$3''' resultaten}} fan #'''$2''' ôf.",
-'nonefound' => "'''Opmerking''': standert wurde net alle nammerûmten trochsocht.
-As Jo yn Jo sykopdracht as foarheaksel \"''all:''\" brûke, wurde alle siden trochsocht (ynklusyf oerlissiden, sjabloanen ens.).
-Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'search-nonefound' => 'Der binne gjin resultaten foar Jo sykopdracht.',
-'powersearch' => 'Sykje',
 'powersearch-legend' => 'Sykje',
 'powersearch-ns' => 'Sykje op nammeromten:',
 'powersearch-redir' => 'Trochferwizings werjaan',
-'powersearch-field' => 'Sykje op',
 'powersearch-togglelabel' => 'Oantikje:',
 'powersearch-toggleall' => 'Allegear',
 'powersearch-togglenone' => 'Gjin',
@@ -950,8 +932,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'preferences' => 'Ynstellings',
 'mypreferences' => 'Myn foarkarynstellings',
 'prefs-edits' => 'Tal bewurkings:',
-'prefsnologin' => 'Net oanmeld',
-'prefsnologintext' => 'Jo moatte <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} oanmeld]</span> wêze om jo foarkar-ynstellings te feroarje te kinnen.',
 'changepassword' => 'Wachtwurd feroarje',
 'prefs-skin' => 'Side-oansjen',
 'skin-preview' => 'Proefbyld',
@@ -967,7 +947,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'prefs-misc' => 'Ferskaat',
 'prefs-resetpass' => 'Wachtwurd feroarje',
 'saveprefs' => 'Ynstellings fêstlizze',
-'resetprefs' => 'Ynstellings werom sette',
 'restoreprefs' => 'Tebek nei de standertynstellings',
 'prefs-editing' => 'Siden bewurkje',
 'rows' => 'Rigen',
@@ -983,7 +962,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'localtime' => 'Pleatslike tiid:',
 'timezoneuseserverdefault' => 'Servertiid brûke',
 'timezoneuseoffset' => 'Oars (tiidferskil oanjaan)',
-'timezoneoffset' => 'Tiidsferskil¹:',
 'servertime' => 'Servertiid:',
 'guesstimezone' => 'Freegje de blêder',
 'timezoneregion-africa' => 'Afrika',
@@ -1183,6 +1161,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',
@@ -1521,10 +1500,8 @@ De siden binne ek net as sjabloan opnommen.',
 'protectedpages' => 'Skoattele siden',
 'protectedpages-indef' => 'Allinne blokkades sûnder ferrindatum',
 'protectedpages-cascade' => 'Allinne befeiligje mei de kaskade-opsje',
-'protectedpagestext' => 'De neikommende siden binne skoattele foar werneamen of wizigjen',
 'protectedpagesempty' => "Op it stuit binne der gjin siden befeilige, dy't oan dizze betingsten foldogge.",
 'protectedtitles' => 'Skoattele titels',
-'protectedtitlestext' => 'De folgjende sidenammen binne befeilige en kinne net oanmakke wurde',
 'protectedtitlesempty' => "Der binne op it stuit gjin sidenammen befeilige, dy't oan dizze betingsten foldogge.",
 'listusers' => 'Meidoggerlist',
 'listusers-editsonly' => 'Allinne brûkers mei bewurkings werjaan',
@@ -2192,10 +2169,6 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
 'exif-subjectdistancerange-0' => 'Unbekend',
 'exif-subjectdistancerange-2' => 'Tichtby',
 
-# External editor support
-'edit-externally' => 'Wizigje dizze triem mei in ekstern programma',
-'edit-externally-help' => 'Sjoch de [https://www.mediawiki.org/wiki/Manual:External_editors ynstel-hantlieding] foar mear ynformaasje.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alles',
@@ -2291,8 +2264,7 @@ Wolle jo de side wier op 'e nij skriuwe?",
 
 # Special:SpecialPages
 'specialpages' => 'Bysûndere siden',
-'specialpages-note' => '----
-* Normale bysûndere siden.
+'specialpages-note' => '* Normale bysûndere siden.
 * <strong class="mw-specialpagerestricted">Beheinde bysûndere siden.</strong>',
 'specialpages-group-maintenance' => 'Underhâld siden',
 'specialpages-group-other' => 'Oare bysûndere siden',
index 1e5ade2..bb96611 100644 (file)
@@ -235,7 +235,6 @@ $messages = array(
 'qbedit' => 'Cuir in eagar',
 'qbpageoptions' => 'An leathanach seo',
 'qbmyoptions' => 'Mo chuid leathanaigh',
-'qbspecialpages' => 'Leathanaigh speisialta',
 'faq' => 'Ceisteanna Coiteanta',
 'faqpage' => 'Project:Ceisteanna_Coiteanta',
 
@@ -344,8 +343,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',
@@ -435,9 +432,6 @@ B\'fhéidir gur scrios duine eile é cheana féin.',
 teideal idirtheangach nó idirvicí nasctha go mícheart.",
 'perfcached' => 'Fuarthas na sonraí a leanas as taisce, agus is dócha go bhfuil siad as dáta. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Tá na sonraí seo a leanas sa taisce, nuashonraithe $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
-'wrong_wfQuery_params' => 'Paraiméadair mhíchearta don wfQuery()<br />
-Feidhm: $1<br />
-Iarratas: $2',
 'viewsource' => 'Féach ar fhoinse',
 'actionthrottled' => 'Gníomh scóigthe',
 'actionthrottledtext' => 'Mar theicníc frithurscair, ní féidir lear an gníomh seo a dhéanamh barraíocht taobh istigh de thréimhse ghairid ama, agus tá an méid sáraithe agat.
@@ -770,18 +764,13 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
 # Search results
 'searchresults' => 'Torthaí an chuardaigh',
 'searchresults-title' => 'Torthaí an chuardaigh do "$1"',
-'searchresulttext' => 'Féach ar [[{{MediaWiki:Helppage}}|{{int:help}}]] chun a thuilleadh eolais a fháil maidir le cuardaigh {{GRAMMAR:genitive|{{SITENAME}}}}.',
-'searchsubtitle' => 'Cuardaigh le \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gach leathanaigh ag tosú le "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gach leathanaigh naiscthe le "$1"]])',
-'searchsubtitleinvalid' => 'Don iarratas "$1"',
 'titlematches' => 'Fuarthas leathanaigh faoin teideal seo',
-'notitlematches' => 'Ní bhfuarthas leathanach faoin teideal seo',
 'textmatches' => 'Fuarthas an téacs ar leathanaigh',
 'notextmatches' => 'Ní bhfuarthas an téacs ar leathanach ar bith',
 'prevn' => 'na {{PLURAL:$1|$1}} cinn roimhe seo',
 'nextn' => 'an {{PLURAL:$1|$1}} i ndiadh',
 'shown-title' => 'Taispeáin $1 {{PLURAL:$1|thoradh|torthaí}} an leathanach',
 'viewprevnext' => 'Taispeáin ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Sainroghanna cuardaithe',
 'searchmenu-new' => "'''Cruthaigh an leathanach \"[[:\$1]]\" ar an vicí seo!'''",
 'searchprofile-articles' => 'Leathanaigh ábhair',
 'searchprofile-project' => 'Leathanaigh thionscadail agus cabhair',
@@ -806,14 +795,10 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
 'searchall' => 'an t-iomlán',
 'showingresults' => "Ag taispeáint thíos {{PLURAL:$1|'''toradh amháin'''|'''$1''' torthaí}}, ag tosú le #'''$2'''.",
 'showingresultsnum' => "Ag taispeáint thíos {{PLURAL:$3|'''toradh amháin'''|'''$3''' torthaí}}, ag tosú le #'''$2'''.",
-'nonefound' => "<strong>Tabhair faoi deara:</strong> Ní chuardaítear ach ainmspásanna áirithe de réir réamhshocraithe.
-Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leathanaigh phlé, teimpléid, srl. san áireamh) a chuardach, nó cuir isteach réimír an ainmspáis.",
 'search-nonefound' => 'Ní bhfuarthas toradh ar bith ar an iarratas.',
-'powersearch' => 'Cuardaigh',
 'powersearch-legend' => 'Cuardach casta',
 'powersearch-ns' => 'Cuardaigh in ainmspásanna:',
 'powersearch-redir' => 'Liosta athsheoltaí',
-'powersearch-field' => 'Cuardaigh le',
 'powersearch-toggleall' => 'Uile',
 'powersearch-togglenone' => 'Tada',
 'searchdisabled' => "Tá brón orainn! Mhíchumasaíodh an cuardach téacs iomlán go sealadach chun luas an tsuímh a chosaint. Idir an dá linn, is féidir leat an cuardach Google anseo thíos a úsáid - b'fhéidir go bhfuil sé as dáta.",
@@ -821,8 +806,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',
-'prefsnologintext' => 'Ní mór duit <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logáil isteach]</span> chun do chuid sainroghanna phearsanta a shocrú.',
 'changepassword' => "Athraigh d'fhocal faire",
 'prefs-skin' => 'Craiceann',
 'skin-preview' => 'Réamhamharc',
@@ -838,7 +821,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
 'prefs-misc' => 'Éagsúla',
 'prefs-resetpass' => 'Athraigh focal faire',
 'saveprefs' => 'Sábháil',
-'resetprefs' => 'Athshocraigh sainroghanna',
 'restoreprefs' => 'Cuir ar ais gach sainrogha réamhshocraithe',
 'prefs-editing' => 'Eagarthóireacht',
 'rows' => 'Sraitheanna',
@@ -854,7 +836,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
 'localtime' => 'An t-am áitiúil:',
 'timezoneuseserverdefault' => 'Úsáid am réamhshocraithe an fhreastalaí',
 'timezoneuseoffset' => 'Eile (cuir isteach an difear)',
-'timezoneoffset' => 'Difear¹:',
 'servertime' => 'Am an fhreastalaí:',
 'guesstimezone' => 'Líon ón mbrabhsálaí',
 'timezoneregion-africa' => 'An Afraic',
@@ -960,6 +941,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.',
@@ -2088,10 +2070,6 @@ cúlra i bhfócas)',
 'exif-gpsdirection-t' => 'Fíorthreo',
 'exif-gpsdirection-m' => 'Treo maighnéadach',
 
-# External editor support
-'edit-externally' => 'Athraigh an comhad seo le feidhmchlár seachtrach',
-'edit-externally-help' => '(Féach ar na [https://www.mediawiki.org/wiki/Manual:External_editors treoracha cumraíochta] as Béarla le tuilleadh eolais)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'an t-iomlán',
 'namespacesall' => 'iad uile',
@@ -2216,4 +2194,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..69af237 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ı' ),
@@ -216,7 +215,6 @@ $messages = array(
 'qbedit' => 'Diiştir',
 'qbpageoptions' => 'Bu sayfa',
 'qbmyoptions' => 'Sayfalarım',
-'qbspecialpages' => 'Maasus sayfalar',
 'faq' => 'SSS',
 'faqpage' => 'Project:SSS',
 
@@ -306,8 +304,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',
@@ -564,10 +560,6 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
 # Search results
 'searchresults' => 'Aaramak rezultatları',
 'searchresults-title' => '"$1" için aaramak rezultatları',
-'searchresulttext' => '{{SITENAME}} içindä aaramaa deyni bilgi almaa için var nicä bakmaa [[{{MediaWiki:Helppage}}|{{int:help}}]] sayfasına.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' için aaradınız. ([[Special:Prefixindex/$1|hepsi sayfalar angıları başlêêr "$1"]], [[Special:WhatLinksHere/$1|hepsi sayfalar angıları baalı "$1"]])',
-'searchsubtitleinvalid' => 'Aranêr: "$1"',
-'notitlematches' => 'Hiç bir başlıkta yok nicä bulunsun',
 'notextmatches' => ' Hiç bir başlıkta yok nicä bulunsun',
 'prevn' => 'ilerki {{PLURAL:$1|$1}}',
 'nextn' => 'geeriki {{PLURAL:$1|$1}}',
@@ -579,13 +571,9 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
 'search-interwiki-caption' => 'Kardaş proyektlär',
 'search-interwiki-default' => '$1 rezultatlar:',
 'search-interwiki-more' => '(taa çok)',
-'nonefound' => "'''Bennemäk''': Sadä kimi ad erleri sessizcä aaranêr.
-Aaramaanızın önünä ''all:'' prefiksini koyun da deneyin hepsi içlii aaramaa deyni (sözleşmäk sayfaları, şablonlar h.b.pay alarak), yaki kullanınız beenilän prefiksi sansın er adı.",
-'powersearch' => 'Gelişmiş arama',
 'powersearch-legend' => 'Gelişmiş arama',
 'powersearch-ns' => 'Ad erlerindä aara:',
 'powersearch-redir' => 'Yönnendirmäkler listası',
-'powersearch-field' => 'Aara',
 
 # Preferences page
 'preferences' => 'Seçimner',
@@ -1059,10 +1047,6 @@ Herliim fayl diiştirildi yaratılıştan sora, bir takım parametrlär var nic
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Kompyuterinizdäki uygulamaklarlan faylı düz',
-'edit-externally-help' => 'Taa çok bilgi için var nicä bakmaa metadaki [https://www.mediawiki.org/wiki/Manual:External_editors dış uygulama instrumentläri] (angliyça) sayfasına.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Hepsini göster',
 'namespacesall' => 'Hepsi',
index f5d2e4b..0daf84c 100644 (file)
@@ -174,7 +174,6 @@ $messages = array(
 'qbedit' => '编写',
 'qbpageoptions' => '个页',
 'qbmyoptions' => '偶𠮶选项',
-'qbspecialpages' => '特殊页',
 'faq' => 'FAQ',
 'faqpage' => 'Project:问得蛮多𠮶问题',
 
@@ -284,8 +283,6 @@ $1',
 'ok' => '做得',
 'retrievedfrom' => '版本页 "$1"',
 'youhavenewmessages' => '倷有 $1 ($2).',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '最晏𠮶改动',
 'youhavenewmessagesmulti' => '$1 上有倷𠮶新消息',
 'editsection' => '编写',
 'editold' => '编写',
@@ -363,9 +360,6 @@ $1',
 'perfcached' => '底下系缓存资料,可能伓系最新𠮶。 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' => '个页目前改伓正,佢𠮶资料伓能仰上更新。',
-'wrong_wfQuery_params' => '参数错误斢到嘞 wfQuery()<br />
-函数: $1<br />
-查询: $2',
 'viewsource' => '源代码',
 'protectedpagetext' => '个页锁到嘞,改伓正。',
 'viewsourcetext' => '倷可以眵吖或复制个页𠮶源代码:',
@@ -711,12 +705,8 @@ $2',
 # Search results
 'searchresults' => '寻到𠮶结果',
 'searchresults-title' => '对"$1"寻到𠮶结果',
-'searchresulttext' => '有关𠮶{{SITENAME}}𠮶更多资料,请参看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => "用'''[[:$1]]'''",
-'searchsubtitleinvalid' => "用'''$1'''寻",
 'toomanymatches' => '返回多伤喽𠮶结果,请试吖用别𠮶词语寻过',
 'titlematches' => '文章标题符合',
-'notitlematches' => '冇页面同文章标题符合',
 'textmatches' => '页面内容符合',
 'notextmatches' => '冇页面内容符合',
 'prevn' => '前{{PLURAL:$1|$1}}只',
@@ -750,21 +740,16 @@ $2',
 'showingresults' => '底下从第<b>$2</b>条显示起先𠮶<b>$1</b>条结果:',
 'showingresultsnum' => '底下从第<b>$2</b>条显示起先𠮶<b>$3</b>条结果:',
 'showingresultsheader' => "'''$4'''𠮶{{PLURAL:$5|第'''$1'''到第'''$3'''只结果|第'''$1 - $2'''只,拢共'''$3'''只结果}}",
-'nonefound' => '<strong>注意:</strong>寻伓到往往系因为搜索夹到像“𠮶”或“同”之类𠮶常用字扤得。',
 'search-nonefound' => '冇合到𠮶查询结果。',
-'powersearch' => '高级寻',
 'powersearch-legend' => '高级搜寻',
 'powersearch-ns' => '到名子空间里头寻:',
 'powersearch-redir' => '重定向𠮶表单',
-'powersearch-field' => '寻',
 'searchdisabled' => '{{SITENAME}}𠮶搜索功能已经关闭。倷可以用Google寻吖。但系佢𠮶索引可能系早先𠮶。',
 
 # Preferences page
 'preferences' => '参数设置',
 'mypreferences' => '偶𠮶参数设置',
 'prefs-edits' => '编辑数:',
-'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '汝要<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>后才设得正个人参数。',
 'changepassword' => '改过密码',
 'prefs-skin' => '皮',
 'skin-preview' => '(预览)',
@@ -777,7 +762,6 @@ $2',
 'prefs-watchlist-edits' => '加强版𠮶监视列表显示最多更改数目:',
 'prefs-misc' => '杂项',
 'saveprefs' => '存到参数',
-'resetprefs' => '设过参数',
 'prefs-editing' => '编写',
 'rows' => '横:',
 'columns' => '竖:',
@@ -789,7 +773,6 @@ $2',
 'savedprefs' => '倷𠮶个人参数设置保存正嘞。',
 'timezonelegend' => '时区:',
 'localtime' => '当地时区',
-'timezoneoffset' => '时差¹',
 'servertime' => '服务器时间',
 'guesstimezone' => '到浏览器上填',
 'allowemail' => '接受别𠮶用户𠮶邮件',
@@ -1134,7 +1117,6 @@ $2',
 'deadendpages' => '脱接页面',
 'deadendpagestext' => '下底个页面冇连到{{SITENAME}}𠮶别只页面:',
 'protectedpages' => '受保护页面',
-'protectedpagestext' => '底下页面已经受保护以防止乱动',
 'protectedpagesempty' => '个兮参数下冇页面拖保护到。',
 'protectedtitles' => '保护题目',
 'listusers' => '用户列表',
@@ -2068,10 +2050,6 @@ $1',
 'exif-gpsdirection-t' => '真实方位',
 'exif-gpsdirection-m' => '地磁方位',
 
-# External editor support
-'edit-externally' => '用外部程式来编辑个只档案',
-'edit-externally-help' => '请参看[https://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解别𠮶内容。',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
index a65fd5b..1c022a5 100644 (file)
@@ -32,7 +32,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( '老早嗰頁面' ),
        'BrokenRedirects'           => array( '壞吥嗰重定向頁' ),
        'CreateAccount'             => array( '新建隻帳戶' ),
-       'Disambiguations'           => array( '多義項' ),
        'Fewestrevisions'           => array( '最少改動嗰頁面' ),
        'Longpages'                 => array( '莽文章' ),
        'Mostcategories'            => array( '最多分類嗰頁面' ),
@@ -196,7 +195,6 @@ $messages = array(
 'qbedit' => '編寫',
 'qbpageoptions' => '箇頁',
 'qbmyoptions' => '我嗰頁面',
-'qbspecialpages' => '特殊頁',
 'faq' => 'FAQ',
 'faqpage' => 'Project:問得蠻多嗰問題',
 
@@ -306,8 +304,6 @@ $1',
 'ok' => '做得',
 'retrievedfrom' => '版本頁「$1」',
 'youhavenewmessages' => '汝有 $1 ($2).',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '頂晏嗰改動',
 'youhavenewmessagesmulti' => '$1 上有倷嗰新消息',
 'editsection' => '編寫',
 'editold' => '編寫',
@@ -385,9 +381,6 @@ $1',
 'perfcached' => '底下係緩存資料,可能伓係最新嗰。 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' => '箇頁目前改伓正,佢嗰資料伓能仰上更新。',
-'wrong_wfQuery_params' => '參數錯誤斢到嘞 wfQuery()<br />
-函數: $1<br />
-查詢: $2',
 'viewsource' => '原始碼',
 'protectedpagetext' => '箇頁鎖到嘞,改伓正。',
 'viewsourcetext' => '倷可以眵吖或複製箇頁嗰原始碼:',
@@ -733,12 +726,8 @@ $2',
 # Search results
 'searchresults' => '尋到嗰結果',
 'searchresults-title' => '對「$1」尋到嗰結果',
-'searchresulttext' => '有關嗰{{SITENAME}}嗰更多資料,請參看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => "用'''[[:$1]]'''",
-'searchsubtitleinvalid' => "用'''$1'''尋",
 'toomanymatches' => '返回多傷哩嗰結果,請較下用別嗰詞語尋過',
 'titlematches' => '文章標題符合',
-'notitlematches' => '冇頁面同文章標題符合',
 'textmatches' => '頁面內容符合',
 'notextmatches' => '冇頁面內容符合',
 'prevn' => '前{{PLURAL:$1|$1}}隻',
@@ -772,21 +761,16 @@ $2',
 'showingresults' => '底下從第<b>$2</b>條顯示起先嗰<b>$1</b>條結果:',
 'showingresultsnum' => '底下從第<b>$2</b>條顯示起先嗰<b>$3</b>條結果:',
 'showingresultsheader' => "'''$4'''嗰{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,攏共'''$3'''隻結果}}",
-'nonefound' => '<strong>注意:</strong>尋伓到往往係因為搜索夾到像“嗰”或“同”之類嗰常用字扤得。',
 'search-nonefound' => '冇合到嗰查詢結果。',
-'powersearch' => '高級尋',
 'powersearch-legend' => '高級搜尋',
 'powersearch-ns' => '到名子空間裡頭尋:',
 'powersearch-redir' => '重定向嗰表單',
-'powersearch-field' => '尋',
 'searchdisabled' => '{{SITENAME}}嗰搜索功能已經關閉。倷可以用Google尋吖。但係佢嗰索引可能係早先嗰。',
 
 # Preferences page
 'preferences' => '參數設置',
 'mypreferences' => '我嗰參數設置',
 'prefs-edits' => '編輯數:',
-'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '汝要<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>後才設得正個人參數。',
 'changepassword' => '改過密碼',
 'prefs-skin' => '皮',
 'skin-preview' => '(預覽)',
@@ -799,7 +783,6 @@ $2',
 'prefs-watchlist-edits' => '加強版嗰監視列表顯示頂多更改數目:',
 'prefs-misc' => '雜項',
 'saveprefs' => '存到參數',
-'resetprefs' => '設過參數',
 'prefs-editing' => '編寫',
 'rows' => '橫:',
 'columns' => '豎:',
@@ -811,7 +794,6 @@ $2',
 'savedprefs' => '倷嗰個人參數設置保存正哩。',
 'timezonelegend' => '時區:',
 'localtime' => '當地時區',
-'timezoneoffset' => '時差¹',
 'servertime' => '服務器時間',
 'guesstimezone' => '到瀏覽器上填',
 'allowemail' => '接受別嗰用戶嗰郵件',
@@ -1156,7 +1138,6 @@ $2',
 'deadendpages' => '脫接頁面',
 'deadendpagestext' => '下底箇頁面冇連到{{SITENAME}}嗰別隻頁面:',
 'protectedpages' => '受保護頁面',
-'protectedpagestext' => '底下頁面已經受保護以防止亂動',
 'protectedpagesempty' => '箇兮參數下冇頁面拕保護到。',
 'protectedtitles' => '保護題目',
 'listusers' => '用戶列表',
@@ -2090,10 +2071,6 @@ $1',
 'exif-gpsdirection-t' => '真實方位',
 'exif-gpsdirection-m' => '地磁方位',
 
-# External editor support
-'edit-externally' => '用外部程式來編輯箇隻檔案',
-'edit-externally-help' => '請參看[https://www.mediawiki.org/wiki/Manual:External_editors 設置步驟]瞭解別嗰內容。',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
index 360f335..f94c4ea 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'qbedit' => 'Deasaich',
 'qbpageoptions' => 'An duilleag seo',
 'qbmyoptions' => 'Na duilleagan agam',
-'qbspecialpages' => 'Duilleagan sònraichte',
 'faq' => 'CÀBHA',
 'faqpage' => 'Project:CÀBHA',
 
@@ -309,8 +308,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}}',
@@ -413,9 +410,6 @@ Faodaidh gu bheil aon no barrachd charactairean ann nach urrainn dhut a chleachd
 'perfcachedts' => "Chaidh an dàta a leanas a thasgadh agus chaidh ùrachadh $1 turas mu dheireadh. Tha {{PLURAL:$4|$4 toradh|$4 thoradh|$4 toraidhean|$4 toradh}} ri fhaighinn san tasgadan air a' char as motha.",
 'querypage-no-updates' => 'Tha ùrachadh air a chur à comas air an duilleag seo an-dràsta.
 Cha dèid an dàta an-seo ùrachadh aig an àm seo.',
-'wrong_wfQuery_params' => 'Paramatairean mì-cheart airson wfQuery()<br />
-Foincsean: $1<br />
-Iarrtas: $2',
 'viewsource' => 'Seall an tùs',
 'viewsource-title' => 'Seall an tùs aig $1',
 'actionthrottled' => 'Gnìomh air a mhùchadh',
@@ -1109,12 +1103,8 @@ Thoir an aire gun dèid an colbh seo ath-shuidheachadh ma chleachdas tu ceanglai
 # Search results
 'searchresults' => 'Toraidhean rannsachaidh',
 'searchresults-title' => 'Lorg "$1" am broinn nan toraidhean',
-'searchresulttext' => 'Airson barrachd fiosrachaidh mu rannsachadh {{SITENAME}}, cuir sùil air [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Lorg thu \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gach duilleag a tha a\' tòiseachadh le "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gach duilleag a tha a\' ceangal ri "$1"]])',
-'searchsubtitleinvalid' => "Lorg thu airson '''$1'''",
 'toomanymatches' => 'Fhuaras cus thoraidhean, feuch ceist eile',
 'titlematches' => "Tiotalan dhuilleagan a tha a' maidseadh",
-'notitlematches' => "Chan eil tiotal de dhuilleag sam bith a' freagairt ris",
 'notextmatches' => "Chan eil tiotal de dhuilleag sam bith a' freagairt ris",
 'prevn' => 'an {{PLURAL:$1|$1}} roimhe',
 'nextn' => 'an ath {{PLURAL:$1|$1}}',
@@ -1122,10 +1112,8 @@ Thoir an aire gun dèid an colbh seo ath-shuidheachadh ma chleachdas tu ceanglai
 'nextn-title' => 'An ath $1 {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}}',
 'shown-title' => 'Seall $1 {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}} air gach duilleag',
 'viewprevnext' => 'Seall ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Roghainnean luirg',
 'searchmenu-exists' => "'''Tha duilleag air a bheil \"[[:\$1]]\" air an uicipeid seo.'''",
 'searchmenu-new' => "'''Cruthaich an duilleag \"[[:\$1]]\" air an uicipeid seo!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rùraich duilleagan aig a bheil an ro-leasachan seo]]',
 'searchprofile-articles' => 'Duilleagan susbainte',
 'searchprofile-project' => "Duilleagan nan cobharach 's nam pròiseactan",
 'searchprofile-images' => 'Ioma-mheadhanan',
@@ -1153,14 +1141,10 @@ Thoir an aire gun dèid an colbh seo ath-shuidheachadh ma chleachdas tu ceanglai
 'showingresults' => "A' nochdadh suas gu $1 {{PLURAL:$1|$1 toradh|$1 thoradh|$1 toraidhean|$1 toradh}} gu h-ìosal a' tòiseachadh le #'''$2'''.",
 'showingresultsnum' => "A' nochdadh '''$3''' {{PLURAL:$3|$3 toradh|$3 thoradh|$3 toraidhean|$3 toradh}} gu h-ìosal a' tòiseachadh le #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Toradh '''$1''' à '''$3'''|Toraidhean '''$1 - $2''' of '''$3'''}} airson '''$4'''",
-'nonefound' => "'''Aire''': Chan dèid ach cuid dhe na namespaces a lorg a ghnàth.
-Feuch ri ''all:'' a chuir air beulaibh an iarrtais agad gus rannsachadh a dhèanamh am broinn na susbainte gu lèir (a' gabhail a-steach nan duilleagan conaltraidh, teamplaidean is msaa), no cleachd an namespace a bha thu ag iarraidh mar ro-leasachan.",
 'search-nonefound' => "Cha do fhreagair toradh sam bith ri d' iarrtas.",
-'powersearch' => 'Rannsachadh adhartach',
 'powersearch-legend' => 'Rannsachadh adhartach',
 'powersearch-ns' => 'Lorg ann an namespaces:',
 'powersearch-redir' => 'Seall ath-sheòlaidhean',
-'powersearch-field' => 'Lorg',
 'powersearch-togglelabel' => 'Sgrùd:',
 'powersearch-toggleall' => 'Na h-uile',
 'powersearch-togglenone' => 'Chan eil gin',
@@ -1173,8 +1157,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',
-'prefsnologintext' => 'Feumaidh tu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} clàradh a-steach]</span> mus urrainn dhut roghainnean cleachdaiche a chur air gleus.',
 'changepassword' => 'Atharraich facal-faire',
 'prefs-skin' => 'Bian',
 'skin-preview' => 'Ro-shealladh',
@@ -1197,7 +1179,6 @@ Faodaidh gum bi inneacsan susbaint {{SITENAME}} tuilleadh 's sean ge-tà.",
 'prefs-email' => "Roghainnean a' phuist-d",
 'prefs-rendering' => 'Coltas',
 'saveprefs' => 'Sàbhail',
-'resetprefs' => 'Falamhaich atharrachaidhean nach deach a shàbhaladh fhathast',
 'restoreprefs' => 'Aisig na roghainnean bunaiteach uile (anns gach earrann)',
 'prefs-editing' => "A' deasachadh",
 'rows' => 'Sreathan',
@@ -1833,10 +1814,6 @@ Bidh an fheadhainn eile falaichte a ghnàth.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Deasaich am faidhle le prògram on taobh a-muigh',
-'edit-externally-help' => '(Seall air [https://www.mediawiki.org/wiki/Manual:External_editors mìneachadh an t-suidheachaidh] airson barrachd fiosrachaidh)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'a h-uile',
 'namespacesall' => 'uile',
index 895e4c8..fae7597 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' ),
@@ -411,7 +442,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta páxina',
 'qbmyoptions' => 'As miñas páxinas',
-'qbspecialpages' => 'Páxinas especiais',
 'faq' => 'Preguntas máis frecuentes',
 'faqpage' => 'Project:FAQ',
 
@@ -527,12 +557,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',
@@ -630,9 +658,6 @@ Poida que conteña un ou máis caracteres dos que non se poden empregar nos tít
 'perfcached' => 'Esta información é da memoria caché e pode ser que non estea completamente actualizada. Hai un máximo de {{PLURAL:$1|$1 resultado dispoñible|$1 resultados dispoñibles}} na caché.',
 'perfcachedts' => 'Esta información é da memoria caché. Última actualización: $2 ás $3. Hai un máximo de {{PLURAL:$4|$4 resultado dispoñible|$4 resultados dispoñibles}} na caché.',
 'querypage-no-updates' => 'Neste momento están desactivadas as actualizacións nesta páxina. O seu contido non se modificará.',
-'wrong_wfQuery_params' => 'Parámetros incorrectos para wfQuery()<br />
-Función: $1<br />
-Pescuda: $2',
 'viewsource' => 'Ver o código fonte',
 'viewsource-title' => 'Ver o código fonte de "$1"',
 'actionthrottled' => 'Acción limitada',
@@ -664,7 +689,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 +794,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 +869,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.',
@@ -1338,12 +1364,8 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 # Search results
 'searchresults' => 'Resultados da procura',
 'searchresults-title' => 'Resultados da procura de "$1"',
-'searchresulttext' => 'Para máis información sobre como realizar procuras en {{SITENAME}}, vexa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'A súa busca de "\'\'\'[[:$1]]\'\'\'" ([[Special:Prefixindex/$1|todas as páxinas que comezan por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as páxinas que ligan con "$1"]])',
-'searchsubtitleinvalid' => "A súa busca de \"'''\$1'''\"",
 'toomanymatches' => 'Devolvéronse demasiadas coincidencias; inténteo cunha consulta diferente',
 'titlematches' => 'O título da páxina coincide',
-'notitlematches' => 'Non coincide ningún título de páxina',
 'textmatches' => 'O texto da páxina coincide',
 'notextmatches' => 'Non se atopou o texto en ningunha páxina',
 'prevn' => '{{PLURAL:$1|$1}} previas',
@@ -1352,10 +1374,8 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'nextn-title' => '{{PLURAL:$1|O seguinte resultado|Os seguintes $1 resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por páxina',
 'viewprevnext' => 'Ver as ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcións de busca',
 'searchmenu-exists' => "* Páxina \"'''[[\$1]]'''\"",
 'searchmenu-new' => "'''Crear a páxina \"[[:\$1]]\" neste wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue polas páxinas que comezan coas mesmas iniciais]]',
 'searchprofile-articles' => 'Páxinas de contido',
 'searchprofile-project' => 'Páxinas do proxecto e de axuda',
 'searchprofile-images' => 'Multimedia',
@@ -1383,14 +1403,10 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'showingresults' => "{{PLURAL:$1|Móstrase '''1''' resultado|Móstranse '''$1''' resultados}}, comezando polo número '''$2'''.",
 'showingresultsnum' => "A continuación {{PLURAL:$3|móstrase '''1''' resultado|móstranse '''$3''' resultados}}, comezando polo número '''$2'''.",
 'showingresultsheader' => "{{PLURAL:\$5|Resultado '''\$1''' de '''\$3'''|Resultados do '''\$1''' ao '''\$2''', dun total de '''\$3''',}} para \"'''\$4'''\"",
-'nonefound' => "'''Nota:''' Por defecto, só algúns espazos de nomes se utilizan para as procuras.
-Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (incluíndo páxinas de conversa, modelos etc.) ou use como prefixo o espazo de nomes desexado.",
 'search-nonefound' => 'Non se atopou ningún resultado que coincidise coa procura.',
-'powersearch' => 'Procurar',
 'powersearch-legend' => 'Busca avanzada',
 'powersearch-ns' => 'Procurar nos espazos de nomes:',
 'powersearch-redir' => 'Listar as redireccións',
-'powersearch-field' => 'Procurar por',
 'powersearch-togglelabel' => 'Seleccionar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Ningún',
@@ -1404,9 +1420,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',
-'prefsnologintext' => 'Debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} acceder ao sistema]</span> para modificar as preferencias de usuario.',
-'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',
@@ -1429,7 +1444,6 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'prefs-email' => 'Opcións de correo electrónico',
 'prefs-rendering' => 'Aparencia',
 'saveprefs' => 'Gardar',
-'resetprefs' => 'Eliminar os cambios non gardados',
 'restoreprefs' => 'Restaurar todas as preferencias por defecto (en todas as seccións)',
 'prefs-editing' => 'Edición',
 'rows' => 'Filas:',
@@ -1446,11 +1460,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)',
-'timezoneoffset' => 'Desprazamento¹:',
+'timezoneuseoffset' => 'Outro (especifique o desprazamento)',
 'servertime' => 'Hora do servidor:',
 'guesstimezone' => 'Encher desde o navegador',
 'timezoneregion-africa' => 'África',
@@ -1705,6 +1718,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',
@@ -2036,7 +2052,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.',
@@ -2216,10 +2232,8 @@ As entradas <del>riscadas</del> xa foron resoltas.',
 'protectedpages' => 'Páxinas protexidas',
 'protectedpages-indef' => 'Só as proteccións indefinidas',
 'protectedpages-cascade' => 'Só as proteccións en serie',
-'protectedpagestext' => 'As seguintes páxinas están protexidas fronte á edición ou traslado',
 'protectedpagesempty' => 'Actualmente non hai ningunha páxina protexida con eses parámetros.',
 'protectedtitles' => 'Títulos protexidos',
-'protectedtitlestext' => 'Os seguintes títulos están protexidos fronte á creación',
 'protectedtitlesempty' => 'Actualmente non hai ningún título protexido con eses parámetros.',
 'listusers' => 'Lista de usuarios',
 'listusers-editsonly' => 'Mostrar só os usuarios con edicións',
@@ -2388,7 +2402,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',
@@ -2444,9 +2458,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
@@ -2562,8 +2576,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',
@@ -2726,7 +2740,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:',
@@ -3747,10 +3761,6 @@ Os demais agocharanse por omisión.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridade definida polo usuario ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este ficheiro cunha aplicación externa',
-'edit-externally-help' => '(Consulte as seguintes [https://www.mediawiki.org/wiki/Manual:External_editors instrucións] para obter máis información)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todo',
 'namespacesall' => 'todos',
@@ -3775,7 +3785,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.',
@@ -3852,6 +3862,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',
@@ -3984,8 +3995,8 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 
 # Special:SpecialPages
 'specialpages' => 'Páxinas especiais',
-'specialpages-note' => '----
-* Páxinas especiais normais.
+'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',
 'specialpages-group-other' => 'Outras páxinas especiais',
@@ -4008,7 +4019,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
 
@@ -4199,4 +4210,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 6b20bea..632f3d5 100644 (file)
@@ -103,7 +103,6 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Sod',
 'qbedit' => 'Bodol',
-'qbspecialpages' => 'Khaxelim panam',
 'faq' => 'Choddxe vicharlole prosn',
 
 # Vector skin
@@ -164,7 +163,7 @@ $messages = array(
 'jumptosearch' => 'sod',
 
 # 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' => '(Thollachea) babtint',
+'aboutsite' => '{{SITENAME}} babtint',
 'aboutpage' => 'Project:Vixoiavixim',
 'copyrightpage' => '{{ns:project}}:Prat-hokk',
 'currentevents' => 'Chalu ghoddnneo',
@@ -190,8 +189,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',
@@ -382,7 +379,6 @@ Vivron: '''({{int:cur}})''' = halinchi uzollnie borobor forok, '''({{int:last}})
 'searchall' => 'soglle',
 'showingresultsheader' => "{{PLURAL:$5|'''$3''' hantlem '''$1''' porinam|'''$3''' hantlim '''$1 - $2''' porinam}}, '''$4''' haka",
 'search-nonefound' => 'Tujea sodak mell khata toslem kai porinam nan.',
-'powersearch-field' => 'Hachea khatir sodha',
 
 # Preferences page
 'preferences' => 'Posondeo',
@@ -527,7 +523,8 @@ Hachem [$2 failichem vivron panan] asleli vivron khala dilea:',
 'watch' => 'Sadur rav',
 'watchthispage' => 'Hea panar dixtt dovor',
 'unwatch' => 'Nodor kadd',
-'watchlist-details' => '{{PLURAL:$1|$1 pan tujea sadurvollerint asa|$1 panam tujea sadurvollerint asat}} , ulovpachim panam meznastanam.',
+'watchlist-details' => 'Tujea sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}}, ulovpachim panam mezonastanam.',
+'wlheader-showupdated' => "Tujea fatle bhette san bodol'lean tim panam '''datt''' dakhoileant.",
 'wlshowlast' => 'Xevottchim $1 voram $2 dis $3 dakhoi',
 'watchlist-options' => 'Sadurvollericheo poryay',
 
@@ -681,6 +678,9 @@ Tujean tachem mull pollonv ieta',
 'tooltip-undo' => '"Rodd\' kor" sudharop portita ani sudharopak Zholok ritin ukodta. Tem saran karon zoddunk dita.',
 'tooltip-summary' => 'Mottvo sar ghal',
 
+# Info page
+'pageinfo-toolboxlink' => 'Panachi mahiti',
+
 # Browsing diffs
 'previousdiff' => '←  Adlo sudar',
 'nextdiff' => 'Fuddlem bodlop →',
@@ -689,7 +689,7 @@ Tujean tachem mull pollonv ieta',
 'file-info-size' => '$1 × $2 pixelam, failicho akar: $3, MIME prokar: $4',
 'file-nohires' => 'Odhik bariksai na.',
 'svg-long-desc' => 'SVG fail, nanvak $1 × $2 pixeli, failcho akar: $3',
-'show-big-image' => 'Akhi bariksai',
+'show-big-image' => 'Mull fail',
 
 # Bad image list
 'bad_image_list' => 'Akar oso asa:
@@ -716,10 +716,6 @@ Zori tor hi failik bodol'lam zalear kai mahiti bodololem failik sarkem mell khai
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Hea failik bhaili program uzar korun bodol.',
-'edit-externally-help' => '(Odhik mahite khatir [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] polloi)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'soglle',
 'namespacesall' => 'sogllem',
@@ -749,4 +745,7 @@ Zori tor hi failik bodol'lam zalear kai mahiti bodololem failik sarkem mell khai
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Dospi]] challni:',
 
+# Search suggestions
+'searchsuggest-search' => 'Sod',
+
 );
index 7722ab4..ad02d96 100644 (file)
@@ -178,7 +178,6 @@ $messages = array(
 'qbedit' => 'Μεταγράφειν',
 'qbpageoptions' => 'Ἥδε ἡ δέλτος',
 'qbmyoptions' => 'Οἱ δέλτοι μου',
-'qbspecialpages' => 'Εἰδικαὶ δέλτοι',
 'faq' => 'Τὰ πολλάκις αἰτηθέντα',
 'faqpage' => 'Project:Πολλάκις αἰτηθέντα',
 
@@ -290,8 +289,6 @@ $1',
 'ok' => 'εἶεν',
 'retrievedfrom' => 'Ἀνακτηθεῖσα ὑπὸ "$1"',
 'youhavenewmessages' => 'Ἔχεις $1 ($2).',
-'newmessageslink' => 'νέας ἀγγελίας',
-'newmessagesdifflink' => 'ἐσχάτη μεταβολή',
 'youhavenewmessagesmulti' => 'Νέας εἰσί σοι ἀγγελίας ἐν $1',
 'editsection' => 'μεταγράφειν',
 'editold' => 'μεταγράφειν',
@@ -373,9 +370,6 @@ $1',
 'perfcachedts' => 'Τὸ ἀκόλουθα δεδομένα εἰσὶ λανθάνοντα καὶ ὑστάτως ἐνημερωμένα ἐν $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Αἱ ἐνημερώσεις τῆσδε τῆς δέλτου ἀπενεργοποιηθεῖσαι εἰσίν.
 Τὰ δεδομένα ἐνταῦθα μὴ ἀνανεώσιμα ἔσονται ἐπὶ τοῦ παρόντος.',
-'wrong_wfQuery_params' => 'Ἐσφαλμέναι παράμετροι εἰς τὸ wfQuery()<br />
-Ἐνέργεια: $1<br />
-Πεῦσις: $2',
 'viewsource' => 'Πηγὴν ἐπισκοπεῖν',
 'actionthrottled' => 'Δρᾶσις ἠγχθεῖσα',
 'protectedpagetext' => 'Ἥδε ἡ δέλτος ἀποκεκλῃμένη ἐστὶν εἰς ἀποτροπὴν τοῦ μεταγράφειν.',
@@ -765,12 +759,8 @@ $1",
 # Search results
 'searchresults' => 'Ἀποτελέσματα ἀναζητήσεως',
 'searchresults-title' => 'Ἀποτελέσματα ζητήσεως διὰ "$1"',
-'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' => 'Τὸ κείμενον τῆς δέλτου ἀντιστοιχεῖ',
 'notextmatches' => 'Οὐδὲν κείμενον τῆς δέλτου ἀντιστοιχεῖ',
 'prevn' => 'πρότεραι {{PLURAL:$1|$1}}',
@@ -779,10 +769,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|ἑπόμενον ἀποτέλεσμα|ἑπόμενα ἀποτελέσματα}}',
 'shown-title' => 'Δεικνύναι $1 {{PLURAL:$1|ἀποτέλεσμα|ἀποτελέσματα}} ἀνὰ δέλτον',
 'viewprevnext' => 'Ἐπισκοπεῖν ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ἐπιλογαὶ ζητήσεως',
 'searchmenu-exists' => "'''Ὑπάρχει δέλτος τις ὀνόματι \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
 'searchmenu-new' => "'''Ποιεῖν τὴν δέλτον \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ζήτησις δέλτων ἐχουσῶν τόδε τὸ πρόθεμα]]',
 'searchprofile-articles' => 'Δέλτοι περιεχομένων',
 'searchprofile-project' => 'Βοήθεια  καὶ δέλτοι ἐγχειρήματος',
 'searchprofile-images' => 'Πολυμέσα',
@@ -809,14 +797,10 @@ $1",
 'showingresults' => "Δεικνύναι κατωτέρω μέχρι {{PLURAL:$1|'''1''' ἀποτέλεσμα|'''$1''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
 'showingresultsnum' => "Δεικνύναι {{PLURAL:$3|'''1''' ἀποτέλεσμα|'''$3''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Ἀποτέλεσμα'''$1''' ἀπὸ '''$3'''|Ἀποτελέσματα '''$1 - $2''' ἀπὸ '''$3'''}} περὶ '''$4'''",
-'nonefound' => "'''Ἐπισημείωμα''': Μόνοι οἵτινες ὀνοματικοὶ χῶροι ἀναζητοῦνται κατὰ προεπιλογήν.
-Πείρασον τὸ προθεματίσειν τὴν πεῦσιν σου μετὰ τοῦ ''all:'' - ''ἅπασαι:'' ἀναζητεῖν ἐν παντὶ τῷ περιεχομένῳ (δέλτων διαλόγου, προτύπων, κ.λ., περιλαμβανομένων), ἢ χρῆσον τῷ ἐπιθυμητῷ ὀνοματικῷ χώρῳ ὡς προθέματι.",
 'search-nonefound' => 'Οὐδὲν ἀποτέλεσμα ἀντίστοιχον τῆς πεύσεως.',
-'powersearch' => 'Ζητεῖν ἀναλυτικῶς',
 'powersearch-legend' => 'Ἀνωτέρα ἀναζήτησις',
 'powersearch-ns' => 'Ζήτησις ἐν τοῖς ὀνοματείοις:',
 'powersearch-redir' => 'Ἀναδιευθύνσεων καταλόγος',
-'powersearch-field' => 'Ζήτησις περί',
 'powersearch-togglelabel' => 'Ἐλέγχειν:',
 'powersearch-toggleall' => 'Ἅπαντες',
 'powersearch-togglenone' => 'Οὐδέν',
@@ -826,8 +810,6 @@ $1",
 'preferences' => 'Προαιρέσεις',
 'mypreferences' => 'Αἱ προαιρέσεις μου',
 'prefs-edits' => 'Τοσοῦται αἱ μεταβολαί:',
-'prefsnologin' => 'Μὴ συνδεδεμένος',
-'prefsnologintext' => 'Δεῖ σε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεδεμένος εἶναι]</span> πρὸ τοῦ καθορίσειν τὰς ἐσοῦ προαιρέσεις χρωμένου.',
 'changepassword' => 'Ἀλλάττειν σύνθημα',
 'prefs-skin' => 'Ἐμφάνισις',
 'skin-preview' => 'Προεπισκοπεῖν',
@@ -848,7 +830,6 @@ $1",
 'prefs-email' => 'Ἐπιλογαὶ ἠλ-ταχυδρομείου',
 'prefs-rendering' => 'Ἐμφάνισις',
 'saveprefs' => 'Γράφειν',
-'resetprefs' => 'Ἐκκαθαίρειν ἀσώτους ἀλλαγάς',
 'restoreprefs' => 'Ἐπανιστάναι ἁπάσας τὰς προκαθωρισμένας ῥυθμίσεις',
 'prefs-editing' => 'Τὸ μεταγράφειν',
 'rows' => 'Σειραί:',
@@ -866,7 +847,6 @@ $1",
 'localtime' => 'Τοπικὴ ὥρα:',
 'timezoneuseserverdefault' => 'Χρῆσθαι τῷ προκαθωρισμένῳ τοῦ βίκι ($1)',
 'timezoneuseoffset' => 'Ἄλλον (καθορίζειν τὸ ἐκτόπισμα)',
-'timezoneoffset' => 'Ἐκτόπισμα¹:',
 'servertime' => 'Ὥρα ὑπολογιστικῆς ἐξυπηρετητικῆς μηχανῆς:',
 'guesstimezone' => 'Συμπλήρωσις μέσῳ τοῦ πλοηγητηρίου',
 'timezoneregion-africa' => 'Λιβύη',
@@ -1071,6 +1051,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',
@@ -1371,7 +1352,6 @@ $1",
 'protectedpages-cascade' => 'Διαδοχικαὶ φυλάξεις μόνον',
 'protectedpagesempty' => 'Οὐδεμία δέλτος φυλάττεταιἐπὶ τοῦ παρόντος μετὰ τῶνδε τῶν παραμέτρων.',
 'protectedtitles' => 'Πεφυλαγμέναι ἐπιγραφαί',
-'protectedtitlestext' => 'Ἡ ποίησις τῶν κάτωθι ἐπιγραφῶν πεφύλακται',
 'protectedtitlesempty' => 'Οὐδεμία ἐπιγραφὴ μετὰ τῶνδε τῶν παραμέτρων φυλάττεται ἐπὶ τοῦ παρόντος',
 'listusers' => 'Κατάλογος πάντων τῶν χρωμένων',
 'listusers-editsonly' => 'Δεικνύναι μόνον μεταγράψαντας χρωμένους',
@@ -2441,10 +2421,6 @@ $1',
 'exif-iimcategory-pol' => 'Πολιτική',
 'exif-iimcategory-spo' => 'Άθλοπαιδιαί',
 
-# External editor support
-'edit-externally' => 'Μεταγράφειν τόδε τὸ ἀρχεῖον χρώμενος ἐξώτερήν τινα ἐφαρμογήν.',
-'edit-externally-help' => 'Εἰ πλείοντα βούλει μαθεῖν, [https://www.mediawiki.org/wiki/Manual:External_editors τὰς περὶ τοῦ σχῆματος διδασκαλίας] ἴδε.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ἅπασαι',
 'namespacesall' => 'ἅπασαι',
@@ -2590,8 +2566,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Εἰδικαὶ δέλτοι',
-'specialpages-note' => '----
-* Κανονικαὶ εἰδικαὶ δέλτοι.
+'specialpages-note' => '* Κανονικαὶ εἰδικαὶ δέλτοι.
 * <strong class="mw-specialpagerestricted">Περιωρισμέναι εἰδικαὶ δἐλτοι.</strong>
 * <span class="mw-specialpagecached">Μόναι δέλτοι ἀποτεταμιευμέναι.</span>',
 'specialpages-group-maintenance' => 'Ἀναφοραὶ συντηρήσεως',
@@ -2669,4 +2644,10 @@ $5
 'searchsuggest-search' => 'Ζητεῖν',
 'searchsuggest-containing' => 'περιέχον...',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Ἐπεκτείνειν τὰ πρότυπα',
+'expand_templates_output' => 'Ἀποτέλεσμα',
+'expand_templates_ok' => 'εἶεν',
+'expand_templates_preview' => 'Προθεώρησις',
+
 );
index 4d7063f..5888239 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' ),
@@ -242,9 +242,15 @@ $messages = array(
 'nov' => 'Nov.',
 'dec' => 'Dez.',
 'january-date' => '$1. Jänner',
+'february-date' => '$1. Februar',
 'march-date' => '$1. Merz',
+'april-date' => '$1. April',
+'may-date' => '$1. Mai',
+'june-date' => '$1. Juni',
+'july-date' => '$1. Juli',
 'august-date' => '$1. Augschte',
 'september-date' => '$1. Septämber',
+'october-date' => '$1. Oktober',
 'november-date' => '$1. Novämber',
 'december-date' => '$1. Dezämber',
 
@@ -285,7 +291,6 @@ $messages = array(
 'qbedit' => 'Ändere',
 'qbpageoptions' => 'Sytenoptione',
 'qbmyoptions' => 'Ystellige',
-'qbspecialpages' => 'Spezialsytene',
 'faq' => 'Froge, wo vilmol gstellt wäre',
 'faqpage' => 'Project:FAQ',
 
@@ -306,6 +311,7 @@ $messages = array(
 'namespaces' => 'Namensryym',
 'variants' => 'Variante',
 
+'navigation-heading' => 'Navigationsmenü',
 'errorpagetitle' => 'Fähler',
 'returnto' => 'Zruck zur Syte $1.',
 'tagline' => 'Us {{SITENAME}}',
@@ -401,12 +407,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',
@@ -462,6 +466,7 @@ Alli verfiegbare Spezialsyte sin in dr [[Special:SpecialPages|Lischt vu Spezials
 Des chennt e Fähler in dr Software aazeige.',
 'databaseerror-textcl' => 'S het e Datebankabfrogfähler gee.',
 'databaseerror-query' => 'Abfrog: $1',
+'databaseerror-function' => 'Funktion: $1',
 'databaseerror-error' => 'Fähler: $1',
 'laggedslavemode' => 'Warnig: di letschte Änderige wäre u. U. nonig aazeigt!',
 'readonly' => 'Datebank isch gsperrt',
@@ -499,9 +504,6 @@ Wänn s des nit isch, hesch villicht e Fähler in dr Software gfunde. Bitte mäl
 'perfcached' => 'Die Informatione chemme us em Zwischespycher un sin derwyl villicht nit aktuäll. Maximal {{PLURAL:$1|ei Ergebnis isch|$1 Ergebnis sin}} im Cache verfiegbar.',
 'perfcachedts' => 'Die Date stamme us em Zwischespycher un sin am $1 s letscht Mol aktualisiert wore. Maximal {{PLURAL:$4|ei Ergebnis isch|$4 Ergebnis sin}} im Zwischespycher verfiegbar.',
 'querypage-no-updates' => "'''D Aktualisierigsfunktion fir die Syte isch im Momänt deaktiviert. D Date wäre vorerscht nit ernejert.'''",
-'wrong_wfQuery_params' => 'Falschi Parameter fir wfQuery()<br />
-Funktion: $1<br />
-Abfrog: $2',
 'viewsource' => 'Quelltext aaluege',
 'viewsource-title' => 'Quälltext vu $1 aaluege',
 'actionthrottled' => 'Aktionsaazahl limitiert',
@@ -529,7 +531,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''",
@@ -544,8 +547,12 @@ Obacht: s cha syy, ass bstimmti Syte eso aazeigt wäre, wie wänn Du allno aagm
 'welcomecreation-msg' => 'Dyy Benutzerkonto isch aagleit wore.
 Vergiss nit, Dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] z ändere.',
 'yourname' => 'Dyy Benutzername',
+'userlogin-yourname' => 'Benutzername',
 'userlogin-yourname-ph' => 'Gib Dyy Benutzernamen yy',
+'createacct-another-username-ph' => 'Gib Dyy Benutzernamen yy',
 'yourpassword' => 'Passwort:',
+'userlogin-yourpassword' => 'Passwort',
+'userlogin-yourpassword-ph' => 'Gib Dyy Passwort yy',
 'createacct-yourpassword-ph' => 'Passwort yygee',
 'yourpasswordagain' => 'Passwort no mol yygee:',
 'createacct-yourpasswordagain' => 'Passwort bstetige',
@@ -581,12 +588,27 @@ Bruuch s Formular unte go Di unter eme andere Benutzername aamälde.',
 'createacct-join' => 'Gib unte Dyni Informationen yy.',
 'createacct-another-join' => 'Gib unte d Informatione vum neie Benutzerkonto yy.',
 'createacct-emailrequired' => 'E-Mail-Adräss',
-'createaccountmail' => 'iber E-Mail',
+'createacct-emailoptional' => 'E-Mail-Adräss (optional)',
+'createacct-email-ph' => 'Gib Dyy E-Mail-Adräss yy',
+'createacct-another-email-ph' => 'Gib Dyy E-Mail-Adräss yy',
+'createaccountmail' => 'E temporär Zuefallspasswort bruuchen un an di aagee E-Mail-Adräss schicke',
+'createacct-realname' => 'Richtige Name (optional)',
 'createaccountreason' => 'Grund:',
+'createacct-reason' => 'Grund',
+'createacct-reason-ph' => 'Wurum Du ne ander Benutzerkonto aaleisch',
+'createacct-captcha' => 'Sicherheitspriefig',
+'createacct-imgcaptcha-ph' => 'Gib dr Tekscht yy, wu Du obe siisch',
+'createacct-submit' => 'Dyy Benutzerkonto aalege',
+'createacct-another-submit' => 'En ander Benutzerkonto aalege',
+'createacct-benefit-heading' => '{{SITENAME}} wird vu Mänsche wie Dir gschaffe.',
+'createacct-benefit-body1' => '{{PLURAL:$1|Bearbeitig|Bearbeitige}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|Syte|Syte}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|aktive Autor|aktivi Autore}}',
 'badretype' => 'Di beidi Passwörter stimme nid zämme.',
 'userexists' => 'Dä Benutzername git s scho.
 Bitte nimm e andere.',
 'loginerror' => 'Fähler bir Aamäldig',
+'createacct-error' => 'Fähler bim Aalege vum Benutzerkonto',
 'createaccounterror' => 'Het s Benutzerkonto nit chenne aalege: $1',
 'nocookiesnew' => 'Dr Benutzerzuegang isch aaglait wore, aber Du bisch nid yygloggt. {{SITENAME}} brucht fir die Funktion Cookies, bitte tue die aktiviere un logg Di derno mit Dyynem neje Benutzername un em Passwort, wu drzue ghert, yy.',
 'nocookieslogin' => '{{SITENAME}} brucht Cookies fir e Aamäldig. Du hesch d Cookies deaktiviert. Aktivier si bitte un versuech s no mol.',
@@ -631,7 +653,7 @@ Voreb ass no mee Mails iber d {{SITENAME}}-Mailfunktion an die Adräss gschickt
 'acct_creation_throttle_hit' => 'Bsuecher vu däm Wiki, wu Dyyni IP-Adräss bruuche, hän innerhalb vum letschte Tag {{PLURAL:$1|1 Benutzerkonto|$1 Benutzerkonte}} aagleit. Des isch di maximal Aazahl, wu in däm Zytruum erlaubt isch.
 
 Bsuecher, wu die IP-Adräss bruuche, chenne im Momänt kei Benutzerkonte meh aalege.',
-'emailauthenticated' => 'Di E-Mail-Adräss isch am $2 um $3 Uhr bschtätigt worde.',
+'emailauthenticated' => 'Dyy E-Mail-Adräss isch am $2 am $3 Uhr bstetigt wore.',
 'emailnotauthenticated' => 'Dyni E-Mail-Adräss isch nonig bstätigt. Wäg däm gehn di erwyterete E-Mail-Funktione nonig.
 Fir d Bstätigung muesch em Link nogoh, wu Dir gschickt woren isch. Du chasch au e neie sonig Link aafordere:',
 'noemailprefs' => 'Du hesch kei E-Mail-Adrässen aaggä, drum sy di folgende Funktione nid müglech.',
@@ -641,20 +663,23 @@ Bitte gib ä neiji Adress in nem gültige Format ii, odr tue s Feld leere.',
 'cannotchangeemail' => 'E-Mail-Adrässe chönne in däm Wiki nit gänderet werde.',
 'emaildisabled' => 'Iber die Websyte chenne kei E-Mail verschickt wäre.',
 'accountcreated' => 'S Benutzerkonto isch aagleit wore.',
-'accountcreatedtext' => 'S Benutzerkonto $1 isch aagleit wore.',
+'accountcreatedtext' => 'S Benutzerkonto fir [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|Diskussion]]) isch aagleit wore.',
 'createaccount-title' => 'Aalege vum e Benutzerkonto fir {{SITENAME}}',
 'createaccount-text' => 'Fir Dii isch e Benutzerkonto "$2" uf {{SITENAME}} ($4) aaglait wore. S Passwort fir "$2" , wu automatisch generiert woren isch, isch "$3". Du sottsch Di jetz aamälde un s Passwort ändere.
 
 Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignoriere.',
 'usernamehasherror' => 'In Benutzernäme derf s kei Rautezeiche din haa',
-'login-throttled' => 'Du hesch z vilmol vergebli versuecht, Di aazmälde. Bitte wart, voreb Du s non emol versuechsch.',
+'login-throttled' => 'Du hesch z vilmol umesuscht versuecht, Di aazmälde. Bitte wart $1, voreb Du s non emol versuechsch.',
 'login-abort-generic' => 'Dyy Aamäldig isch nit erfolgryych gsii – Abbroche',
 'loginlanguagelabel' => 'Sproch: $1',
 'suspicious-userlogout' => 'Dyy Versuech di abzmälde isch abbroche wore, wel s uusgsäh het, wie wänn s vun eme bschedigte Browser oder eme Cacheproxy uus gsändet woren isch.',
+'createacct-another-realname-tip' => 'Dr richtig Name isch optional.
+Wänn Du ne aagiisch, wird er bruucht fir d Zueornig vu dr Byytreg.',
 
 # Email sending
 'php-mail-error-unknown' => 'Nit bekannte Fähler mit dr Funktion mail() vu PHP',
 'user-mail-no-addy' => 'Es isch versuecht worde e E-Mail ohni Angab vunere E-Mail-Adräss z verschigge.',
+'user-mail-no-body' => 'S isch versuecht wore, ne E-Mail mit eme lääre oder z churze Tekscht z verschicke.',
 
 # Change password dialog
 'resetpass' => 'Passwort fir s Benutzerkonto ändere oder zrucksetze',
@@ -665,7 +690,7 @@ Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignori
 'newpassword' => 'Nöis Passwort',
 'retypenew' => 'Nöis Passwort (es zwöits Mal)',
 'resetpass_submit' => 'Passwort ibermittle un aamälde',
-'changepassword-success' => 'Dyy Passwort isch erfolgryych gänderet wore. Jetz chunnt d Aamäldig …',
+'changepassword-success' => 'Dyy Passwort isch erfolgryych gänderet wore.',
 'resetpass_forbidden' => 'S Passwort cha nid gänderet wäre.',
 'resetpass-no-info' => 'Du muesch Di aamälde zum uf die Syte diräkt zuegryfe z chenne.',
 'resetpass-submit-loggedin' => 'Passwort ändere',
@@ -673,34 +698,42 @@ Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignori
 'resetpass-wrong-oldpass' => 'S temporär oder aktuäll Passwort isch nimi giltig.
 Villicht hesch Dyy Passwort scho gänderet oder e nej temporär Passwort aagforderet.',
 'resetpass-temp-password' => 'Temporär Passwort:',
+'resetpass-abort-generic' => 'D Passwortänderig isch dur e Erwyterig abbroche wore.',
 
 # Special:PasswordReset
 'passwordreset' => 'Passwort zruggsetze',
+'passwordreset-text-one' => 'Fill des Formular uus go Dy Passwort zrucksetze.',
+'passwordreset-text-many' => '{{PLURAL:$1|Fill eis vu dr Fälder uus go Dy Passwort zrucksetze.}}',
 'passwordreset-legend' => 'Passwort zrucksetze',
 'passwordreset-disabled' => 'S Zrucksetze vu Passwerter isch in däm Wiki deaktiviert wore.',
+'passwordreset-emaildisabled' => 'D E-Mail-Funktione sin uf däm Wiki deaktiviert wore.',
 'passwordreset-username' => 'Benutzername:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Die E-Mail aaluege?',
 'passwordreset-capture-help' => 'Wänn du des Chäschtli aachrüüzesch, no wird die E-Mail (mit em temporäre Passwort) dir aazeigt, un au em Benutzer zuegschiggt.',
 'passwordreset-email' => 'E-Mail-Adräss:',
 'passwordreset-emailtitle' => 'Benutzerkontoinformationen uf {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Eber mit dr IP-Adresse $1, wahrschyns Du sälber, het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). {{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
+'passwordreset-emailtext-ip' => 'Eber mit dr IP-Adresse $1, wahrschyns Du sälber, het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). 
 
-$2
+{{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft: 
+
+$2 
 
 {{PLURAL:$3|Des temporär Passwort lauft|Die temporäre Passwerter laufe}} in {{PLURAL:$5|eim Tag|$5 Täg}} ab.
 Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gstellt het oder Du di wider an Dyy alt Passwort chasch erinnere un s nimi wettsch ändere, chasch die Nochricht ignorieren un alsfurt Dyy alt Passwort bruche.',
-'passwordreset-emailtext-user' => 'Benutzer $1 uf {{SITENAME}} het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). {{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
+'passwordreset-emailtext-user' => 'Dr Benutzer $1 bi {{SITENAME}} het e Zrucksetzig vu Dym Passwort bi {{SITENAME}} aagforderet ($4). 
+
+{{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft: 
 
-$2
+$2 
 
 {{PLURAL:$3|Des temporär Passwort lauft|Die temporäre Passwerter laufe}} in {{PLURAL:$5|eim Tag|$5 Täg}} ab.
 Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gstellt het oder Du di wider an Dyy alt Passwort chasch erinnere un s nimi wettsch ändere, chasch die Nochricht ignorieren un alsfurt Dyy alt Passwort bruche.',
 'passwordreset-emailelement' => 'Benutzername: $1
 Temporär Passwort: $2',
-'passwordreset-emailsent' => 'E Erinnerig isch per E-Mail verschickt wore.',
-'passwordreset-emailsent-capture' => 'E Erinnerigsmail isch abgschiggt 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-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 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',
@@ -710,9 +743,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',
@@ -870,7 +917,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",
@@ -908,13 +955,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',
@@ -947,6 +995,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.',
@@ -1133,12 +1182,8 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Suech-Ergäbnis',
 'searchresults-title' => 'Suechergebniss fir „$1“',
-'searchresulttext' => 'Für wiiteri Informatione zuem Sueche uff {{SITENAME}} chönne Si mol uff [[{{MediaWiki:Helppage}}|{{int:help}}]] luege.',
-'searchsubtitle' => 'Dyyni Suechaafrog: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|alli Syte, wu mit „$1“ aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alli Syte, wu uf „$1“ verwyyse]])',
-'searchsubtitleinvalid' => 'Für d Suechaafrag «$1»',
 'toomanymatches' => 'D Aazahl vu dr Suechergebniss isch z gross, bitte versuech e anderi Abfrog.',
 'titlematches' => 'Iberyystimmige mit Sytentitel',
-'notitlematches' => 'Kei Iberyystimmige mit Sytetitel',
 'textmatches' => 'Iberyystimmige mit Inhalte',
 'notextmatches' => 'Kei Iberyystimmige mit Inhalte',
 'prevn' => '{{PLURAL:$1|vorige|vorigi $1}}',
@@ -1147,10 +1192,8 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => '{{PLURAL:$1|Negscht Ergebnis|Negschti $1 Ergebnis}}',
 'shown-title' => 'Zeig $1 {{PLURAL:$1|Ergebnis|Ergebnis}} pro Syte',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) aazeige; ($3) uf ds Mal',
-'searchmenu-legend' => 'Suechoptione',
 'searchmenu-exists' => "* Syte '''[[$1]]'''",
 'searchmenu-new' => "'''[[:$1|Leg d Syte ''$1'' in dem Wiki aa!]]'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alli Syte, wu mit dem Suechbegriff aafange]]',
 'searchprofile-articles' => 'Inhaltssyte',
 'searchprofile-project' => 'Hilf- un Projäktsyte',
 'searchprofile-images' => 'Multimedia',
@@ -1178,13 +1221,10 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'showingresults' => "Do {{PLURAL:$1|isch '''1''' Ergebnis|sin '''$1''' Ergebniss}}, s fangt aa mit dr Nummerer '''$2.'''",
 'showingresultsnum' => "Do {{PLURAL:$3|isch '''1''' Ergebnis|sin '''$3''' Ergebniss}}, s fangt aa mit dr Nummere '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnis '''$1 - $2''' vu '''$3'''}} fir '''$4'''",
-'nonefound' => "'''Hiiwyys:''' S wäre standardmässig nume e Teil Namensryym dursuecht. Setz ''all:'' vor Dyy Suechbegriff go alli Syte (mit Diskussionssyte, Vorlage usw.) dursueche oder diräkt dr Name vum Namensruum, wu sett dursuecht wäre.",
 'search-nonefound' => 'Fir Dyyni Suechaafrog sin keini Ergebniss gfunde wore.',
-'powersearch' => 'Erwytereti Suechi',
 'powersearch-legend' => 'Erwytereti Suech',
 'powersearch-ns' => 'Suech in Namensryym:',
 'powersearch-redir' => 'Wyterleitige aazeige',
-'powersearch-field' => 'Suech no:',
 'powersearch-togglelabel' => 'Wehl uus:',
 'powersearch-toggleall' => 'Alli',
 'powersearch-togglenone' => 'Keini',
@@ -1195,8 +1235,6 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'preferences' => 'Yystellige',
 'mypreferences' => 'Yystellige',
 'prefs-edits' => 'Aazahl vu dr Bearbeitige:',
-'prefsnologin' => 'Nid aagmäldet',
-'prefsnologintext' => 'Du muesch <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aagmäldet]</span> sy, für Benutzerystellige chönne z ändere',
 'changepassword' => 'Passwort ändere',
 'prefs-skin' => 'Benutzeroberflechi',
 'skin-preview' => 'Vorschou',
@@ -1220,7 +1258,6 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-email' => 'E-Mail-Optione',
 'prefs-rendering' => 'Sytedarstellig',
 'saveprefs' => 'Änderige spychere',
-'resetprefs' => 'Änderige doch nid spychere',
 'restoreprefs' => 'Alli Standardyystellige widerhärstelle',
 'prefs-editing' => 'Tekscht-Ygab',
 'rows' => 'Zylene',
@@ -1238,7 +1275,6 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'localtime' => 'Ortszyt:',
 'timezoneuseserverdefault' => 'Standardzyt vum Server bruche ($1)',
 'timezoneuseoffset' => 'Anderi (Unterschiid aagee)',
-'timezoneoffset' => 'Unterschiid¹',
 'servertime' => 'Aktuälli Serverzyt:',
 'guesstimezone' => 'Vom Browser la ysetze',
 'timezoneregion-africa' => 'Afrika',
@@ -1467,6 +1503,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>',
@@ -1931,10 +1968,8 @@ In jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu
 'protectedpages' => 'Gschützti Sytene',
 'protectedpages-indef' => 'Nume uubschränkt gschitzti Syte zeige',
 'protectedpages-cascade' => 'Nume Syte mit Kaskadeschutz',
-'protectedpagestext' => 'Die Spezialsyte zeigt alli vor em Verschiebe oder Bearbeite gschitzti Syte.',
 'protectedpagesempty' => 'Aktuäll sin kei Syte mit däne Parameter gschitzt.',
 'protectedtitles' => 'Gsperrti Titel',
-'protectedtitlestext' => 'Die Titel sin gsperrt fir s Neijaalege',
 'protectedtitlesempty' => 'Im Momänt sin kei Syte fir s Nejaalege gsperrt mit däne Parameter.',
 'listusers' => 'Lischte vo Benutzer',
 'listusers-editsonly' => 'Zeig nume Benutzer mit Byytreg',
@@ -3349,10 +3384,6 @@ Andri wäre standardmäßig nit aazeigt.
 'exif-urgency-high' => 'Hoch ($1)',
 'exif-urgency-other' => 'Benutzerdefinierti Prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Die Datei mit emnen externe Programm bearbeite',
-'edit-externally-help' => '(Lueg d [https://www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fir witeri Informatione)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alli',
 'namespacesall' => 'alli',
@@ -3746,4 +3777,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 9956a5f..f92055a 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( 'ફાઇલપ્રતિકૃતિ_શોધ' ),
@@ -309,7 +309,6 @@ $messages = array(
 'qbedit' => 'ફેરફાર કરો',
 'qbpageoptions' => 'આ પાનું',
 'qbmyoptions' => 'મારાં પાનાં',
-'qbspecialpages' => 'ખાસ પાનાં',
 'faq' => 'FAQ
 વારંવાર પુછાતા પ્રશ્નો',
 'faqpage' => 'Project:વારંવાર પુછાતા પ્રશ્નો',
@@ -430,12 +429,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' => 'ફેરફાર કરો',
@@ -533,9 +530,6 @@ $1',
 'perfcachedts' => 'નીચેની વિગતો જૂના સંગ્રહમાથી છે અને તે છેલ્લે $1એ તાજી કરવામાં આવી હતી. વધુમાં વધુ {{PLURAL:$4|એક પરિણામ|$4 પરિણામો}} આ સંગ્રહમાં ઉપલબ્ધ છે.',
 'querypage-no-updates' => 'આ પાનાની નવી આવૃત્તિઓ હાલમાં અક્રિય છે.
 અહીંની વિગતો હાલમાં રિફ્રેશ કરવામાં નહી આવે.',
-'wrong_wfQuery_params' => 'wfQuery() માટે અયોગ્ય વિકલ્પો<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'સ્રોત જુઓ',
 'viewsource-title' => '$1 માટે સ્રોત જુઓ',
 'actionthrottled' => 'અકાળે અટાકાવી દીધેલી ક્રિયા',
@@ -563,7 +557,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''",
@@ -610,7 +605,7 @@ $2',
 'gotaccount' => "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
 'gotaccountlink' => 'પ્રવેશ કરો',
 'userlogin-resetlink' => 'પોતાની પ્રવેશ માહિતી ભૂલી ગયા છો?',
-'userlogin-resetpassword-link' => 'તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¬àª¦àª²à«\8b',
+'userlogin-resetpassword-link' => 'તમારà«\8b àªªàª¾àª¸àªµàª°à«\8dડ àª­à«\82લà«\80 àª\97યા àª\9bà«\8b?',
 'helplogin-url' => 'Help:પ્રવેશ માટે',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|પ્રવેશવા માટેની મદદ]]',
 'userlogin-loggedin' => 'તમે પહેલેથી {{GENDER:$1|$1}} તરીકે પ્રવેશ કરેલો જ છે.
@@ -680,7 +675,7 @@ $2',
 'passwordsent' => '"$1" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.
 કૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.',
 'blocked-mailpassword' => 'ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે, તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા ફરી મેળવવાની છૂટ નથી.',
-'eauthentsent' => 'પà«\81ષà«\8dàª\9fિ àª\95રવા àª®àª¾àª\9fà«\87 àª¤àª®à«\87 àª\86પેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.
+'eauthentsent' => 'પà«\81ષà«\8dàª\9fિ àª\95રવા àª®àª¾àª\9fà«\87 àª¨àª¿àª¶à«\8dàª\9aિત àª¥àª¯ેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.
 એ જ સરનામે બીજો ઇમેલ થતાં પહેલાં તમારે ઇમેલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.',
 'throttled-mailpassword' => 'ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} મોકલેલી છે.
 દૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.',
@@ -716,6 +711,7 @@ $2',
 # Email sending
 'php-mail-error-unknown' => 'PHPની મેલ() કામગીરીમાં અજ્ઞાત ત્રુટિ',
 'user-mail-no-addy' => 'ઈ મેલ એડ્રસ વગર ઈ મેલ મોકલવા પ્રયત્ન કરેલ.',
+'user-mail-no-body' => 'કોરો કે નાનકડો ઈમેઇલ મોકલવાનો પ્રયાસ કરાયો.',
 
 # Change password dialog
 'resetpass' => 'ગુપ્તસંજ્ઞા બદલો',
@@ -740,6 +736,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'ગુપ્ત સંજ્ઞા ફરી ગોઠવો',
 'passwordreset-text-one' => 'તમારો પાસવર્ડ બદલવા માટે આ ફોર્મ પૂરુ કરો.',
+'passwordreset-text-many' => '{{PLURAL:$1|તમારો પાસવર્ડ બદલવા માટે કોઈ એક ખાનું ભરો.}}',
 'passwordreset-legend' => 'ગુપ્ત સંજ્ઞા ફરી ગોઠવો',
 'passwordreset-disabled' => 'આ વિકી પર ગુપ્ત સંજ્ઞા ફરી ગોઠવવા પર પ્રતિબંધ છે.',
 'passwordreset-emaildisabled' => 'આ વિકિ પર ઇમેઇલ સગવડ બંધ છે.',
@@ -953,10 +950,10 @@ $2
 તમે તમારું લખાણ કોઇ ટેક્સ્ટ ફાઇલ માં સેવ કરી મૂકી દો અને માહિતીસંચ ખુલતા વિકિ પર સાચવી શકશો. 
 
 જે પ્રબંધકે માહિતીસંચ બંધ કર્યો છે તેણે આ કારણ આપ્યું છે: $1",
-'protectedpagewarning' => "'''ચેતવણી : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
-તમારા àª¸àª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦àª¿ આપી છે:",
-'semiprotectedpagewarning' => "'''નોંધ : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
-તમારા àª¸àª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦àª¿ આપી છે:",
+'protectedpagewarning' => "'''ચેતવણી:''' આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે છે.
+સàª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦à«\80 àª¨à«\80àª\9aà«\87 આપી છે:",
+'semiprotectedpagewarning' => "'''નોંધ :''' આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર નોંધાયેલાં સભ્યો જ આમાં ફેરફાર કરી શકે છે.
+સàª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦à«\80 àª¨à«\80àª\9aà«\87 આપી છે:",
 'cascadeprotectedwarning' => "'''ચેતવણી:''' આ પાનું સંરક્ષિત છે. પ્રબંધન અધિકાર ધરાવતા સભ્યો જ આમાં ફેરફાર કરી શકે છે. આ પાનું નીચેના પગથિયામય સંરક્ષણ{{PLURAL:$1|પાના|પાનાઓ}} દ્વારા સુરક્ષિત છે.",
 'titleprotectedwarning' => "'''ચેતવણી: આ પાનું સંરક્ષિત છે આથી આની રચના માટે [[Special:ListGroupRights|વિશેષ અધિકારો]]ની જરૂર છે.'''
 તે સંબંધી તાજેતરની ફેરફાર યાદી તમારા સંદર્ભ માટે આપેલી છે:",
@@ -1110,20 +1107,20 @@ $3 દ્વારા અપાયેલ કારણ છે ''$2''",
 'revdelete-text' => "''' રદ્દ કરાયેલ ફેરફારો અને ઘટનાઓ પાનાના ઈતિહાસ અને લોગમાં દેખાશે , પણ તેની અંદરની માહિતી જન સમુદાયથી અદ્રશ્ય રહેશે. '''
 {{SITENAME}} પરના અન્ય પ્રબંધકો આ અદ્રશ્ય માહિતે જોઇ શકશે અને તેને પુનઃ જીવિત કરી શકશે સિવાય કે તેના પર વધારાની પાબંદી ન મુકાઇ હોય.",
 'revdelete-confirm' => 'કૃપયા પુષ્ટિ કરો કે તમે શું કરી રહ્યા છો તેની અને તેના પરિણામોની તમને જાણ છે અને તમે આ બધું  [[{{MediaWiki:Policy-url}}|the policy]] અ6તર્ગત કરી રહ્યાં છો.',
-'revdelete-suppress-text' => "બળ પૂર્વક છુપાવવું માત્ર આજ સંજોગોમાં કરી શકાશે:
+'revdelete-suppress-text' => "બળ પૂર્વક છુપાવવું \"માત્ર\" આજ સંજોગોમાં કરી શકાશે:
 * સંભવતઃ ભયાજનક માહિતી 
 * અયોગ્ય નિજી માહિતી 
-*: ''àª\98રનà«\81àª\82 àª¸àª°àª¨àª¾àª®à«\81àª\82 àª\85નà«\87 àª\9fà«\87લિફà«\8bન àª¨àª\82બર, àª¸àª¾àª®àª¾àª\9cિàª\95 àª¸à«\81રàª\95à«\8dષા àª\95à«\8dરà«\8dમ àª\88.''",
+*: ''àª\98રનà«\81àª\82 àª¸àª°àª¨àª¾àª®à«\81àª\82 àª\85નà«\87 àª\9fà«\87લિફà«\8bન àª¨àª\82બર, àª°àª¾àª·à«\8dàª\9fà«\8dરà«\80ય àª\93ળàª\96 àª\95à«\8dરમાàª\82àª\95à«\8b àªµàª\97à«\87રà«\87.''",
 'revdelete-legend' => 'દ્રશ્યતા સંબંધી પ્રતિબંધોને ગોઠવો',
-'revdelete-hide-text' => 'પà«\81નરાવરà«\8dતન àª\9bà«\81પાવà«\8b',
+'revdelete-hide-text' => 'પà«\81નરાવરà«\8dતન àª²àª\96ાણ',
 'revdelete-hide-image' => 'ફાઇલની માહિતી છુપાવો',
 'revdelete-hide-name' => 'ક્રિયા અને લક્ષ્ય સંતાડો',
-'revdelete-hide-comment' => 'ફેરફાર સારાંશ છુપાવો',
-'revdelete-hide-user' => 'સંપાદકનું નામ /આઈ પી એડ્રેસ સંતાડો',
+'revdelete-hide-comment' => 'ફેરફાર સારાંશ',
+'revdelete-hide-user' => 'સંપાદકનું નામ /આઈ પી એડ્રેસ',
 'revdelete-hide-restricted' => 'પ્રબંધક કે અન્યો સૌની માહિતી છુપાવો',
 'revdelete-radio-same' => '(બદલશો નહીઁ)',
-'revdelete-radio-set' => 'હા',
-'revdelete-radio-unset' => 'ના',
+'revdelete-radio-set' => 'àª\9bà«\81પાયà«\87લ',
+'revdelete-radio-unset' => 'દà«\8dશà«\8dયમાન',
 'revdelete-suppress' => 'પ્રબંધક કે અન્યો સૌની માહિતી છુપાવો',
 'revdelete-unsuppress' => 'સમા કરાયેલા પુનરાવર્તનો પરના પ્રતિબંધ હટાવો',
 'revdelete-log' => 'કારણ:',
@@ -1212,12 +1209,8 @@ $1",
 # Search results
 'searchresults' => 'પરિણામોમાં શોધો',
 'searchresults-title' => 'પરિણામોમાં "$1" શોધો',
-'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' => 'પાનાના શબ્દો મળતાં આવે છે',
 'notextmatches' => 'આ શબ્દ કોઈ પાનામાં મળ્યો નથી',
 'prevn' => 'પહેલાનાં {{PLURAL:$1|$1}}',
@@ -1226,10 +1219,8 @@ $1",
 'nextn-title' => 'આગલા  $1 {{PLURAL:$1|પરિણામ|પરિણામો}}',
 'shown-title' => 'પ્રતિ પાને $1 {{PLURAL:$1|પરિણામ|પરિણામો}} બતાવો',
 'viewprevnext' => 'જુઓ: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'શોધ વિકલ્પો',
 'searchmenu-exists' => "''' આ વિકિ પર  \"[[:\$1]]\" નામે પાનું પહેલેથી અસ્તિત્વમાં છે.'''",
 'searchmenu-new' => "'''આ વિકિ પર \"[[:\$1]]\" નામે પાનું બનાવો!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|આ પૂર્વાક્ષર વાળા પાનાં જુઓ]]',
 'searchprofile-articles' => 'લેખનું પાનું',
 'searchprofile-project' => 'મદદ અને યોજના પાનું',
 'searchprofile-images' => 'દ્રશ્ય શ્રાવ્ય માધ્યમ',
@@ -1257,14 +1248,10 @@ $1",
 'showingresults' => " {{PLURAL:$1|'''1''' પરિણામ|'''$1''' પરિણામો}} સુધી #'''$2''' થી શરૂ  કરી",
 'showingresultsnum' => "#'''$2''' થી શરૂ કરી {{PLURAL:$3|'''1''' પરિણામresult|'''$3''' પરિણામો}} અહીં બતાવ્યાં છે",
 'showingresultsheader' => "'''$4''' માટે {{PLURAL:$5|પરિણામ  '''$1''' of '''$3'''|પરિણામો '''$1 - $2''' of '''$3'''}}",
-'nonefound' => "'''નોંધ''':ફક્ત અમુકજ નામસ્થળોમાં આપોઆપ શોધાશે.
-તમારા શબ્દને ''બધા:'' ઉમેરી શોધવાનો પ્રયત્ન કરો, જેથી બધી માહિતિમાં (જેમકે ચર્ચાના પાના, ઢાંચા, વિગેરે)માં શોધ થઈ શકે, અથવાતો ઇચ્છિત નામસ્થળ પસંદ કરી શોધો બટન દબાવો.",
 'search-nonefound' => 'તમે આપેલી માહિતી ને મળતાં આવતાં કોઈ પરિણામો નથી',
-'powersearch' => 'શોધો (વધુ પર્યાય સાથે)',
 'powersearch-legend' => 'વધુ પર્યાયો સાથે શોધો',
 'powersearch-ns' => 'નામસ્થળોમાં શોધો:',
 'powersearch-redir' => 'અન્યત્ર વાળેલાં પાનાંની યાદી',
-'powersearch-field' => 'નાં માટે શોધો',
 'powersearch-togglelabel' => 'ચકાસો:',
 'powersearch-toggleall' => 'બધા',
 'powersearch-togglenone' => 'એકે નહિ',
@@ -1278,8 +1265,7 @@ $1",
 'preferences' => 'પસંદ',
 'mypreferences' => 'પસંદગીઓ',
 'prefs-edits' => 'સંપાદનોની સંખ્યા',
-'prefsnologin' => 'પ્રવેશ કરેલ નથી',
-'prefsnologintext' => 'સભ્યના અધિકારો બદલવા તમે <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> પ્રવેશ કરેલો હોવો જોઈએ',
+'prefsnologintext2' => 'તમારી પસંદગીઓ પસંદ કરવા માટે કૃપયા $1.',
 'changepassword' => 'ગુપ્તસંજ્ઞા બદલો',
 'prefs-skin' => 'ફલક',
 'skin-preview' => 'ફેરફાર બતાવો',
@@ -1303,7 +1289,6 @@ $1",
 'prefs-email' => 'ઈ-મેલ સંબંધી વિકલ્પો',
 'prefs-rendering' => 'દેખાવ',
 'saveprefs' => 'સાચવો',
-'resetprefs' => 'બીન સાચવેલ ફેરફારો સાફ કરો',
 'restoreprefs' => 'મૂળ વિકલ્પો ફરી ગોઠવો (બધાં વિભાગોમાં)',
 'prefs-editing' => 'સંપાદન',
 'rows' => 'પંક્તિઓ',
@@ -1321,7 +1306,6 @@ $1",
 'localtime' => 'સ્થાનીક સમય:',
 'timezoneuseserverdefault' => 'વીકીના મૂળ વિકલ્પો ગોઠવો ($1)',
 'timezoneuseoffset' => 'અન્ય ( સમય ખંડ બતાવો)',
-'timezoneoffset' => 'સમય ખંડ',
 'servertime' => 'સર્વર સમય:',
 'guesstimezone' => 'બ્રાઉઝરમાંથી દાખલ કરો',
 'timezoneregion-africa' => 'આફ્રિકા',
@@ -2053,10 +2037,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'protectedpages' => 'સંરક્ષિત પાનાઓ',
 'protectedpages-indef' => 'ફક્ત અનિશ્ચિત સુરક્ષા ધરાવતા પાના',
 'protectedpages-cascade' => 'માત્ર પગથિયામય સુરક્ષા વાળા પગ',
-'protectedpagestext' => 'નીચેના પાના કોઈ ફેરફાર કે હટાવવા થી સુરકક્ષીત કરાયા છે',
 'protectedpagesempty' => 'આ વિકલ્પો દ્વારા કોઈ પાના સુરક્ષિત કરાયા નથી.',
 'protectedtitles' => 'સંરક્ષિત શીર્ષકો',
-'protectedtitlestext' => 'આ શીર્ષકો રચના માટે આરક્ષીત છે',
 'protectedtitlesempty' => 'આ પરિબળો દ્વારા કોઇ પણ શીર્ષકો સચવાયા નથી.',
 'listusers' => 'સભ્યોની યાદી',
 'listusers-editsonly' => 'માત્ર સંપાદન કરનારા સભ્યો બતાવો',
@@ -2279,13 +2261,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}}}}
 
 તમારી ધ્યાનસૂચિના  વિક્લ્પ ગોઠવણ માટે મુલાકાત લો
@@ -2778,10 +2761,10 @@ $1',
 'imageinvalidfilename' => 'લક્ષ્ય ફાઈલ અવૈધ છે',
 'fix-double-redirects' => 'મૂળ શીર્ષક તરફ  નિર્દેશન કરતા  દિશા નિર્દેશકો અધ્યતન કરો',
 'move-leave-redirect' => 'પાછળ દિશા સૂચન છોડો',
-'protectedpagemovewarning' => "'''નà«\8bàª\82ધ : àª\86 àªªàª¾àª¨àª¾ àªªàª° àª¸àª\82રàª\95à«\8dષણ àªµàª¿àª\95લà«\8dપ àª¸àª\95à«\8dરà«\80ય àª\9bà«\87 àª\85નà«\87 àª®àª¾àª¤à«\8dર àªªà«\8dરબàª\82ધàª\95à«\8b àª\9c àª\86માàª\82 àª«à«\87રફાર àª\95રà«\80 àª¶àª\95à«\87.'''
-તમારા àª¸àª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦àª¿ આપી છે:",
-'semiprotectedpagemovewarning' => "'''નોંધ : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
-તમારા àª¸àª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦àª¿ આપી છે:",
+'protectedpagemovewarning' => "'''àª\9aà«\87તવણà«\80:''' àª\86 àªªàª¾àª¨àª¾ àªªàª° àª¸àª\82રàª\95à«\8dષણ àªµàª¿àª\95લà«\8dપ àª¸àª\95à«\8dરà«\80ય àª\9bà«\87 àª\85નà«\87 àª®àª¾àª¤à«\8dર àªªà«\8dરબàª\82ધàª\95à«\8b àª\9c àª\86નà«\87 àª\96સà«\87ડà«\80 àª¶àª\95à«\87 àª\9bà«\87.
+સàª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦à«\80 àª¨à«\80àª\9aà«\87 આપી છે:",
+'semiprotectedpagemovewarning' => "'''નોંધ :''' આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર નોંધાયેલાં સભ્યો જ આને ખસેડી શકે છે.
+સàª\82દરà«\8dભ àª®àª¾àª\9fà«\87 àª¤àª¾àª\9cà«\87તરનà«\80 àª²à«\8bàª\97 àª¯àª¾àª¦à«\80 àª¨à«\80àª\9aà«\87 આપી છે:",
 'move-over-sharedrepo' => '== ફાઇલ અસ્તિત્વ ધારાવે છે ==
 સર્વસામાન્ય ફાઇલ સંગ્રહમાં [[:$1]] પહેલેથી મોજૂદ છે.  આ સ્થળે કોઇ અન્ય ફાઇલ હટાવતા વિહરમાન ફાઇલની માહિતી પર આ ફાઇલ લખાશે.',
 'file-exists-sharedrepo' => 'પસંદ કરેલ ફાઇલ ના નામે અન્ય ફાઇલ પહેલેથી સર્વ સામાન્ય ફાઇલ સંગ્રહમાં મોજૂદ છે/
@@ -3084,7 +3067,7 @@ $2',
 'file-nohires' => 'આથી વધુ આવર્તન ઉપલબ્ધ નથી.',
 'svg-long-desc' => 'SVG ફાઇલ, માત્ર $1 × $2 પીક્સલ, ફાઇલનું કદ: $3',
 'svg-long-error' => 'અયોગ્ય SVG ફાઇલ: $1',
-'show-big-image' => 'મહતà«\8dતમ àª\86વરà«\8dતન',
+'show-big-image' => 'મà«\82ળભà«\81ત àª«àª¾àª\87લ',
 'show-big-image-preview' => 'આ મહાવરા દ્રશ્યનું માપ: $1.',
 'show-big-image-other' => 'અન્ય {{PLURAL:$2|આવર્તન|આવર્તનો}}: $1.',
 'show-big-image-size' => '$1 × $2 પીક્સલ',
@@ -3548,10 +3531,6 @@ $2',
 'exif-urgency-high' => 'ઉચ્ચ ($1)',
 'exif-urgency-other' => 'વપરાશકર્તા-વ્યાખ્યાયિત અગ્રતા ($1)',
 
-# External editor support
-'edit-externally' => 'બાહ્ય સોફ્ટવેર વાપરીને આ ફાઇલમાં ફેરફાર કરો',
-'edit-externally-help' => '(વધુ માહિતી માટે [https://www.mediawiki.org/wiki/Manual:External_editors સેટ-અપ સૂચનાઓ] જુઓ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'બધા',
 'namespacesall' => 'બધા',
@@ -3666,7 +3645,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' => 'લવાઇ રહ્યું છે...',
@@ -3768,9 +3747,8 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'ખાસ પાનાં',
-'specialpages-note' => '----
-* નિયમિત ખાસ પાનાં.
-* <span class="mw-specialpagerestricted">ખાસ પાનાં પ્રતિબંધિત.</span>',
+'specialpages-note' => '* નિયમિત ખાસ પાનાં.
+* <span class="mw-specialpagerestricted">પ્રતિબંધિત ખાસ પાનાં.</span>',
 'specialpages-group-maintenance' => 'સમારકામ અહેવાલ',
 'specialpages-group-other' => 'અન્ય ખાસ પાનાઓ',
 'specialpages-group-login' => 'પ્રવેશ / ખાતુ બનાવો',
@@ -3876,7 +3854,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|વાળ્યું}} પણ પાછળ દિશાનિર્દેશન છોડ્યું નહી',
@@ -3971,4 +3949,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..69dae7a 100644 (file)
@@ -165,7 +165,6 @@ $messages = array(
 'qbedit' => 'Reagh',
 'qbpageoptions' => 'Yn duillag shoh',
 'qbmyoptions' => 'My ghuillagyn',
-'qbspecialpages' => 'Duillagyn er lheh',
 'faq' => 'FC',
 'faqpage' => 'Project:FC',
 
@@ -266,8 +265,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',
@@ -567,10 +564,6 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
 # Search results
 'searchresults' => 'Eiyrtyssyn y ronsee',
 'searchresults-title' => 'Eiyrtyssyn y ronsee son "$1"',
-'searchresulttext' => 'Son ny smoo oayllys mychione ronsaghtyn er {{SITENAME}}, jeeagh er [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ren oo ronsaghey er \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dagh duillag ta toshiaghey lesh "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dagh duillag ta kianglt rish "$1"]])',
-'searchsubtitleinvalid' => "Ren oo ronsaghey er '''$1'''",
-'notitlematches' => 'Cha nel shen ennym ghuillag erbee',
 'notextmatches' => 'Cha nel shen ry-lhaih er duillag erbee',
 'prevn' => '{{PLURAL:$1|$1}} roish shoh',
 'nextn' => 'nah {{PLURAL:$1|$1}}',
@@ -596,20 +589,15 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
 'mwsuggest-disable' => 'Lhiettal coyrle AJAX',
 'searchrelated' => 'bentyn rish',
 'searchall' => 'yn clane',
-'nonefound' => "'''Notey''':Cha nel eh ronsaghey dagh reamys gyn reih.
-My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney, clowanyn, a.r.e.), cur ''all:'' ec y toshiaght, ny ennym y reamys reih ayd myr roie-ockle (m.s., ''Clowan:'').",
-'powersearch' => 'Ard-ronsaghey',
 'powersearch-legend' => 'Ard-ronsaghey',
 'powersearch-ns' => 'Ronsee ayns boayl-enmyn:',
 'powersearch-redir' => 'Cur aa-enmyssyn er y rolley',
-'powersearch-field' => 'Ronsee er son',
 'search-external' => 'Ronsaghey mooie',
 
 # Preferences page
 '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',
@@ -630,7 +618,6 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
 'savedprefs' => 'Ta dty hosheeaghtyn sauailt.',
 'timezonelegend' => 'Cryss hraa:',
 'localtime' => 'Traa ynnydagh:',
-'timezoneoffset' => 'Ashchlou¹:',
 'timezoneregion-africa' => 'Yn Affrick',
 'timezoneregion-america' => 'America',
 'timezoneregion-antarctica' => 'Yn Antarctagh',
@@ -1408,10 +1395,6 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
 'exif-gpsspeed-k' => "Kilometeryn 'syn oor",
 'exif-gpsspeed-m' => "Meeillaghyn 'syn oor",
 
-# External editor support
-'edit-externally' => 'Reagh yn coadan shoh lesh sheeyntagh mooie',
-'edit-externally-help' => 'Jeeagh er [https://www.mediawiki.org/wiki/Manual:External_editors saraghyn soiaghey seose] son tooilley oayllys.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'yn clane',
 'namespacesall' => 'yn clane',
@@ -1478,4 +1461,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 45f83cd..de34d57 100644 (file)
@@ -16,6 +16,8 @@
  * @author Xiaomingyan
  */
 
+$fallback = 'zh-hant';
+
 $messages = array(
 # User preference toggles
 'tog-underline' => '鏈接加底線:',
@@ -174,7 +176,6 @@ $messages = array(
 'qbedit' => '編寫',
 'qbpageoptions' => '頁面選項',
 'qbmyoptions' => '𠊎嘅頁面',
-'qbspecialpages' => '特殊頁面',
 'faq' => '常見問題解答',
 'faqpage' => 'Project:常見問題解答',
 
@@ -289,8 +290,6 @@ $1',
 'ok' => '做得',
 'retrievedfrom' => '來自"$1"',
 'youhavenewmessages' => '汝有$1($2)。',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '上擺更改',
 'youhavenewmessagesfromusers' => '汝有來自{{PLURAL:$3|另一位用戶|$3位用戶}}嘅$1($2)。',
 'youhavenewmessagesmanyusers' => '汝有來自多位用戶嘅$1( $2 )。',
 'newmessageslinkplural' => '{{PLURAL:$1|一條新信息|新信息}}',
@@ -387,9 +386,6 @@ $1',
 'perfcachedts' => '下列係緩存數據,其最後更新時間係$1。單淨有{{PLURAL:$4|一嘅結果|$4嘅結果}}會畀顯示。',
 'querypage-no-updates' => '當前禁止對邇頁面進行更新。
 邇位嘅數據將做毋得分立即重新整理。',
-'wrong_wfQuery_params' => '有錯嘅參數分傳遞到wfQuery()<br />
-函數:$1<br />
-查詢:$2',
 'viewsource' => '查看源碼',
 'viewsource-title' => '查看$1嘅源代碼',
 'actionthrottled' => '動作已經壓制',
@@ -846,11 +842,7 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 # Search results
 'searchresults' => '搜尋結果',
 'searchresults-title' => '搜尋"$1"嘅結果',
-'searchresulttext' => '有關搜尋{{SITENAME}}嘅又較多詳情,參詳[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => 'Chhà-sûn $1 (só-yû yî "$1" khôi-thèu ke ya̍p • só-yû lièn-chiap to "$1" ke ya̍p)',
-'searchsubtitleinvalid' => "搜尋'''$1'''",
 'titlematches' => '頁面標題相符',
-'notitlematches' => '找毋到配得上嘅頁面題目',
 'textmatches' => '頁面內容配得上',
 'notextmatches' => '無頁面內容配上',
 'prevn' => '前頭$1隻',
@@ -884,21 +876,16 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'showingresults' => "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$1'''-thiàu kiet-kó:",
 'showingresultsnum' => "下背展示從第'''$2'''條開始嘅'''{{PLURAL:$3|1|$3}}'''條結果。",
 'showingresultsheader' => "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,共'''$3'''隻結果}}",
-'nonefound' => '<strong>Chu-yi:</strong> Sṳt-phai ke sêu-chhà vông-vông he chhut-yì chhṳ-thù sêu-chhà chû-yì "ke" fe̍t-chá "lâu" chṳ̂-lui ke sòng-kien-sṳ só yîn-hí.',
 'search-nonefound' => '在查詢肚無結果相符。',
-'powersearch' => '高級搜尋',
 'powersearch-legend' => '高級搜尋',
 'powersearch-ns' => '在下背嘅名字空間肚搜尋:',
 'powersearch-redir' => '重定向清單',
-'powersearch-field' => '搜尋',
 'powersearch-togglelabel' => '監查:',
 'searchdisabled' => '{{SITENAME}}由於性能方面嘅原因,全文搜已分暫時停用。汝做得暫時通過Google搜尋。請留意佢兜嘅索引可能會過時。',
 
 # Preferences page
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
-'prefsnologin' => '還吂登入',
-'prefsnologintext' => 'Ngì pit-sî chhai-siên [[Special:UserLogin|tên-ngi̍p]] chhòi-nèn sat-chṳ ke-ngìn chhâm-su.',
 'changepassword' => '更改密碼',
 'prefs-skin' => '外皮',
 'skin-preview' => '預覽',
@@ -911,7 +898,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'prefs-watchlist-edits' => '擴展監視列表肚顯示更改次數上限:',
 'prefs-misc' => '雜項',
 'saveprefs' => '保存',
-'resetprefs' => 'Sat-thin',
 'restoreprefs' => '恢復所有默認設定',
 'prefs-editing' => '編寫緊',
 'rows' => '行:',
@@ -924,7 +910,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'savedprefs' => '汝嘅個人偏好設定已經保存。',
 'timezonelegend' => 'Sṳ̀-khî',
 'localtime' => 'Tông-thi sṳ̀-kiên',
-'timezoneoffset' => 'Sṳ̀-chhâ¹',
 'servertime' => 'Fu̍k-vu hi-khí sṳ̀-kiên',
 'guesstimezone' => '從瀏覽器填寫',
 'allowemail' => '接受來自其他用戶嘅郵件',
@@ -1211,7 +1196,6 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'deadendpages' => '斷鏈頁面',
 'deadendpagestext' => 'Yî-ha vùn-chông mò-yû pûn lièn-kiet to liá-ke wiki chûng ke khì-thâ vùn-chông:',
 'protectedpages' => '受保護頁面',
-'protectedpagestext' => '以下頁面已經受保護以防止移動或編寫',
 'protectedpagesempty' => '在邇兜參數下無頁面保護緊。',
 'listusers' => '用戶列表',
 'usercreated' => '$1 $2{{GENDER:$3|建立}}',
@@ -1851,10 +1835,6 @@ Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => '用外部應用程序編寫本文件',
-'edit-externally-help' => '(請參詳[https://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
index 02a781d..fc936e3 100644 (file)
@@ -193,7 +193,6 @@ $messages = array(
 'qbedit' => 'E ho‘ololi',
 'qbpageoptions' => 'Kēia ‘ao‘ao',
 'qbmyoptions' => 'Ka‘u mau ‘ao‘ao',
-'qbspecialpages' => 'Nā ‘ao‘ao kūikawā',
 
 # Vector skin
 'vector-action-delete' => 'E holoi',
@@ -276,8 +275,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',
@@ -456,10 +453,6 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 # Search results
 'searchresults' => 'Nā hualoaʻa',
 'searchresults-title' => 'Nā hualoaʻa no "$1"',
-'searchresulttext' => 'No kekahi ʻike hou aku e pili ana i ka huli ʻana iā {{SITENAME}}, kele i [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ua huli ʻoe no \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|nā ʻaoʻao a pau i hoʻomaka me "$1"]]{{int:pipe-separator}} [[Special:WhatLinksHere/$1|nā ʻaoʻao a pau e loulou ai i "$1"]])',
-'searchsubtitleinvalid' => "Ua huli ʻoe iā '''$1'''",
-'notitlematches' => 'ʻAʻohe inoa ʻaoʻao e like me ka huli ʻana',
 'prevn' => '{{PLURAL:$1|$1}} ma mua',
 'nextn' => '{{PLURAL:$1|$1}} ma hope',
 'viewprevnext' => 'Nānā i nā ($1 {{int:pipe-separator}} $2) ($3)',
@@ -468,10 +461,8 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 'search-suggest' => 'ʻO kēia paha kou manaʻo: $1',
 'search-interwiki-caption' => 'Nā pāhana ʻē aʻe',
 'searchall' => 'apau',
-'powersearch' => 'Hulina kūlana kiʻekiʻe',
 'powersearch-legend' => 'Hulina kūlana kiʻekiʻe',
 'powersearch-ns' => 'Huli i loko o nā wahi inoa:',
-'powersearch-field' => 'Huli no',
 
 # Preferences page
 'preferences' => 'Kaʻu makemake',
@@ -815,9 +806,6 @@ Hiki iā ʻoe ke ʻikena i kāna molekumu.',
 # Special:NewFiles
 'ilsubmit' => 'Huli',
 
-# External editor support
-'edit-externally-help' => '(E ʻike i nā [https://www.mediawiki.org/wiki/Manual:External_editors aʻo palapala no ka hoʻokuene ʻana])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'apau',
 'namespacesall' => 'apau',
@@ -857,4 +845,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 c077337..97a8558 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( 'גרסה', 'גרסת_התוכנה' ),
@@ -519,7 +522,6 @@ $messages = array(
 'qbedit' => 'עריכה',
 'qbpageoptions' => 'אפשרויות דף',
 'qbmyoptions' => 'האפשרויות שלי',
-'qbspecialpages' => 'דפים מיוחדים',
 'faq' => 'שאלות ותשובות',
 'faqpage' => 'Project:שאלות ותשובות',
 
@@ -637,12 +639,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' => 'עריכה',
@@ -740,9 +740,6 @@ $1',
 'perfcached' => 'המידע הבא הוא עותק שמור בזיכרון המטמון של המידע, ועשוי שלא להיות מעודכן. לכל היותר {{PLURAL:$1|תוצאה אחת נשמרת|$1 תוצאות נשמרות}} בזיכרון המטמון.',
 'perfcachedts' => 'המידע הבא הוא עותק שמור בזיכרון המטמון של המידע, שעודכן לאחרונה ב־$1. לכל היותר {{PLURAL:$4|תוצאה אחת נשמרת|$4 תוצאות נשמרות}} בזיכרון המטמון.',
 'querypage-no-updates' => 'העדכונים לדף זה כרגע מופסקים, והמידע לא יעודכן באופן שוטף.',
-'wrong_wfQuery_params' => 'הפרמטרים שהוזנו ל־wfQuery()‎ אינם נכונים:<br />
-פונקציה: $1<br />
-שאילתה: $2',
 'viewsource' => 'הצגת מקור',
 'viewsource-title' => 'הצגת המקור של $1',
 'actionthrottled' => 'הפעולה הוגבלה',
@@ -773,7 +770,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''",
@@ -786,7 +784,7 @@ $2',
 שימו לב כי ייתכן שדפים אחדים ימשיכו להיות מוצגים כאילו אתם עדיין מחוברים לחשבון עד שתנקו את המטמון של הדפדפן שלכם.",
 'welcomeuser' => 'ברוך בואך, $1!',
 'welcomecreation-msg' => 'חשבונך נוצר.
 ×\90 ×\9c×\90 ×\9cש×\9b×\95×\97 ×\9c×\94ת×\90×\99×\9d ×\90ת [[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.',
\91×\90פשר×\95ת×\9a ×\9c×\94ת×\90×\99×\9d ×\90ת [[Special:Preferences|×\94×\94×¢×\93פ×\95ת]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.',
 'yourname' => 'שם משתמש:',
 'userlogin-yourname' => 'שם משתמש',
 'userlogin-yourname-ph' => 'יש להקליד את שם המשתמש',
@@ -876,7 +874,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",
@@ -891,7 +889,7 @@ $2',
 אנא היכנסו חזרה לאתר אחרי שתקבלו אותה.',
 'blocked-mailpassword' => 'כתובת ה־IP שלכם חסומה מעריכה, ולפיכך אינכם מורשים להשתמש באפשרות שחזור הסיסמה כדי למנוע ניצול לרעה של התכונה.',
 'eauthentsent' => 'דוא"ל אימות נשלח לכתובת הדוא"ל שצוינה.
\9cפנ×\99 ×©×\93×\91ר×\99 ×\93×\95×\90\9c ×\90×\97ר×\99×\9d ×\99×\99ש×\9c×\97×\95 ×\9c×\97ש×\91×\95×\9f ×\94×\96×\94, ×\99×\94×\99×\94 ×¢×\9c×\99×\9a ×\9cפע×\95×\9c ×\9cפ×\99 ×\94×\94×\95ר×\90×\95ת ×\91×\93×\95×\90\9c, ×\9b×\93×\99 ×\9c×\90שר ×©×\94×\97ש×\91×\95×\9f ×\90×\9b×\9f ×©×\99×\99×\9a ×\9c×\9a.',
\9cפנ×\99 ×©×\93×\91ר×\99 ×\93×\95×\90\9c ×\90×\97ר×\99×\9d ×\99×\99ש×\9c×\97×\95 ×\9c×\97ש×\91×\95×\9f ×\94×\96×\94, ×\99×\94×\99×\94 ×¢×\9c×\99×\9b×\9d ×\9cפע×\95×\9c ×\9cפ×\99 ×\94×\94×\95ר×\90×\95ת ×\91×\93×\95×\90\9c, ×\9b×\93×\99 ×\9c×\90שר ×©×\94×\97ש×\91×\95×\9f ×\90×\9b×\9f ×©×\99×\99×\9a ×\9c×\9b×\9d.',
 'throttled-mailpassword' => 'כבר נשלח דוא"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.
 כדי למנוע ניצול לרעה, יכול להישלח רק דוא"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.',
 'mailerror' => 'שגיאה בשליחת דואר: $1',
@@ -948,8 +946,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' => 'שירותי הדוא"ל בוטלו באתר ויקי זה.',
@@ -1435,12 +1433,8 @@ $1",
 # Search results
 'searchresults' => 'תוצאות החיפוש',
 'searchresults-title' => 'תוצאות החיפוש "$1"',
-'searchresulttext' => 'למידע נוסף על חיפוש ב{{grammar:תחילית|{{SITENAME}}}}, עיינו ב[[Project:עזרה|דפי העזרה]].',
-'searchsubtitle' => 'לחיפוש המונח \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|לכל הדפים המתחילים ב"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|לכל הדפים המקשרים ל"$1"]])',
-'searchsubtitleinvalid' => "חיפשת '''$1'''",
 'toomanymatches' => 'יותר מדי תוצאות נמצאו, נא לנסות מילות חיפוש אחרות',
 'titlematches' => 'כותרות דפים תואמות',
-'notitlematches' => 'אין כותרות דפים תואמות',
 'textmatches' => 'דפים עם תוכן תואם',
 'notextmatches' => 'אין דפים עם תוכן תואם',
 'prevn' => '{{PLURAL:$1|הקודם|$1 הקודמים}}',
@@ -1449,10 +1443,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|התוצאה הבאה|$1 התוצאות הבאות}}',
 'shown-title' => 'הצגת {{PLURAL:$1|תוצאה אחת|$1 תוצאות}} בדף',
 'viewprevnext' => 'צפייה ב: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'אפשרויות חיפוש',
 'searchmenu-exists' => "'''קיים דף בשם \"[[:\$1]]\" באתר זה.'''",
 'searchmenu-new' => "'''יצירת הדף \"[[:\$1]]\" באתר זה.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|מציאת דפים עם קידומת זו]]',
 'searchprofile-articles' => 'דפי תוכן',
 'searchprofile-project' => 'עזרה ודפי המיזם',
 'searchprofile-images' => 'מולטימדיה',
@@ -1480,13 +1472,10 @@ $1",
 'showingresults' => "{{PLURAL:$1|מוצגת תוצאה '''אחת'''|מוצגות עד '''$1''' תוצאות}} החל ממספר '''$2''':",
 'showingresultsnum' => "{{PLURAL:$3|מוצגת תוצאה '''אחת'''|מוצגות '''$3''' תוצאות}} החל ממספר '''$2''':",
 'showingresultsheader' => "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
-'nonefound' => "'''הערה:''' כברירת מחדל, החיפוש מבוצע במספר מרחבי שם בלבד. באפשרותכם לכתוב '''all:''' לפני מונח החיפוש כדי לחפש בכל הדפים (כולל דפי שיחה, תבניות, ועוד), או לכתוב לפני מונח החיפוש את מרחב השם שאתם מעוניינים בו.",
 'search-nonefound' => 'לא נמצאו תוצאות המתאימות לחיפוש.',
-'powersearch' => 'חיפוש מתקדם',
 'powersearch-legend' => 'חיפוש מתקדם',
 'powersearch-ns' => 'חיפוש על פי מרחבי שם:',
 'powersearch-redir' => 'הצגת דפי הפניה',
-'powersearch-field' => 'חיפוש',
 'powersearch-togglelabel' => 'בחירה:',
 'powersearch-toggleall' => 'הכול',
 'powersearch-togglenone' => 'אף אחד',
@@ -1500,8 +1489,7 @@ $1",
 'preferences' => 'העדפות',
 'mypreferences' => 'העדפות',
 'prefs-edits' => 'מספר עריכות:',
-'prefsnologin' => 'לא נכנסת לחשבון',
-'prefsnologintext' => 'עליכם <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} להיכנס לחשבון]</span> כדי לשנות העדפות משתמש.',
+'prefsnologintext2' => 'אנא $1 כדי לשנות העדפות משתמש.',
 'changepassword' => 'שינוי סיסמה',
 'prefs-skin' => 'עיצוב',
 'skin-preview' => 'תצוגה מקדימה',
@@ -1525,7 +1513,6 @@ $1",
 'prefs-email' => 'אפשרויות דוא"ל',
 'prefs-rendering' => 'מראה',
 'saveprefs' => 'שמירת העדפות',
-'resetprefs' => 'מחיקת שינויים שלא נשמרו',
 'restoreprefs' => 'שחזור ההגדרות ההתחלתיות (בכל הלשוניות)',
 'prefs-editing' => 'עריכה',
 'rows' => 'שורות:',
@@ -1546,7 +1533,6 @@ $1",
 'localtime' => 'זמן מקומי:',
 'timezoneuseserverdefault' => 'ברירת המחדל של האתר ($1)',
 'timezoneuseoffset' => 'אחר (נא ציינו את ההפרש)',
-'timezoneoffset' => 'הפרש¹:',
 'servertime' => 'השעה הנוכחית בשרת:',
 'guesstimezone' => 'קבלה מהדפדפן',
 'timezoneregion-africa' => 'אפריקה',
@@ -1620,8 +1606,8 @@ $1",
 'prefs-help-prefershttps' => 'העדפה זו תיכנס לתוקף בכניסה הבאה לחשבון.',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'כתובת הדואר האלקטרוני נראית תקינה',
-'email-address-validity-invalid' => 'יש להקליד כתובת דואר אלקטרוני תקינה',
+'email-address-validity-valid' => 'כתובת הדוא נראית תקינה',
+'email-address-validity-invalid' => 'יש להקליד כתובת דוא תקינה',
 
 # User rights
 'userrights' => 'ניהול הרשאות משתמש',
@@ -1803,6 +1789,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',
@@ -2309,10 +2298,8 @@ $1',
 'protectedpages' => 'דפים מוגנים',
 'protectedpages-indef' => 'הגנות לזמן בלתי מוגבל בלבד',
 'protectedpages-cascade' => 'הגנות מדורגות בלבד',
-'protectedpagestext' => 'הדפים הבאים מוגנים מפני עריכה או העברה:',
 'protectedpagesempty' => 'אין כרגע דפים מוגנים עם הפרמטרים הללו.',
 'protectedtitles' => 'כותרות מוגנות',
-'protectedtitlestext' => 'הכותרות הבאות מוגנות מפני יצירה:',
 'protectedtitlesempty' => 'אין כרגע כותרות מוגנות עם הפרמטרים האלה.',
 'listusers' => 'רשימת משתמשים',
 'listusers-editsonly' => 'הצגת משתמשים עם עריכות בלבד',
@@ -2331,7 +2318,7 @@ $1',
 'notargettitle' => 'אין דף מטרה',
 'notargettext' => 'לא ציינתם דף מטרה או משתמש לגביו תבוצע פעולה זו.',
 'nopagetitle' => 'אין דף מטרה כזה',
-'nopagetext' => 'דף המטרה שציינתם אינו קיים.',
+'nopagetext' => 'דף המטרה שציינת אינו קיים.',
 'pager-newer-n' => '{{PLURAL:$1|הבאה|$1 הבאות}}',
 'pager-older-n' => '{{PLURAL:$1|הקודמת|$1 הקודמות}}',
 'suppress' => 'הסתרה',
@@ -2538,9 +2525,9 @@ $PAGEINTRO $NEWPAGE
 בדואר האלקטרוני: $PAGEEDITOR_EMAIL
 באתר: $PAGEEDITOR_WIKI
 
-לא תהיינה הודעות על פעולות נוספות עד שתבקרו בדף. באפשרותכם גם לאפס את דגלי ההודעות בכל הדפים שברשימת המעקב.
+לא תהיינה הודעות על פעולות נוספות עד שתבקרו בדף כשאתם מחוברים לחשבון. באפשרותכם גם לאפס את דגלי ההודעות בכל הדפים שברשימת המעקב.
 
-             מערכת ההודעות של {{SITENAME}}
+מערכת ההודעות של {{SITENAME}}
 
 --
 כדי לשנות את ההגדרות של הודעות הדוא"ל הנשלחות אליכם, בקרו בדף
@@ -2561,7 +2548,7 @@ $UNWATCHURL
 'deletepage' => 'מחיקה',
 'confirm' => 'אישור',
 'excontent' => 'התוכן היה: "$1"',
-'excontentauthor' => 'התוכן היה: "$1" ({{gender:$2|והתורם היחיד היה|והתורמת היחידה הייתה}} "[[Special:Contributions/$2|$2]]")',
+'excontentauthor' => 'התוכן היה: "$1" (וה{{gender:$2|תורם היחיד היה|תורמת היחידה הייתה}} "[[Special:Contributions/$2|$2]]")',
 'exbeforeblank' => 'התוכן לפני שרוקן היה: "$1"',
 'exblank' => 'הדף היה ריק',
 'delete-confirm' => 'מחיקת $1',
@@ -2742,7 +2729,7 @@ $1',
 
 # Contributions
 'contributions' => 'תרומות {{GENDER:$1|המשתמש|המשתמשת}}',
-'contributions-title' => 'תרומות של המשתמש $1',
+'contributions-title' => 'תרומות של ה{{GENDER:$1|משתמש|משתמשת}} $1',
 'mycontris' => 'תרומות',
 'contribsub2' => 'עבור {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'לא נמצאו שינויים המתאימים לקריטריונים אלו.',
@@ -2968,7 +2955,7 @@ $1',
 במקרים אלו, תצטרכו להעביר או לשלב את הדפים באופן ידני, אם תרצו.',
 'movearticle' => 'העברת דף:',
 'moveuserpage-warning' => "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
-'movenologin' => 'לא נכנסתם לחשבון',
+'movenologin' => 'לא נכנסת לחשבון',
 'movenologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.',
 'movenotallowed' => 'אינכם מורשים להעביר דפים.',
 'movenotallowedfile' => 'אינכם מורשים להעביר קבצים.',
@@ -3152,13 +3139,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' => 'יציאה מהחשבון',
@@ -3207,7 +3194,7 @@ $2',
 'tooltip-ca-nstab-help' => 'צפייה בדף העזרה',
 'tooltip-ca-nstab-category' => 'צפייה בדף הקטגוריה',
 'tooltip-minoredit' => 'סימון עריכה זו כמשנית',
-'tooltip-save' => 'שמירת השינויים שביצעתם',
+'tooltip-save' => 'שמירת השינויים שביצעת',
 'tooltip-preview' => 'תצוגה מקדימה, אנא השתמשו באפשרות זו לפני השמירה!',
 'tooltip-diff' => 'צפייה בשינויים שערכתם בטקסט',
 'tooltip-compareselectedversions' => 'צפייה בהשוואת שתי גרסאות של דף זה',
@@ -3511,7 +3498,7 @@ $1',
 'exif-lightsource' => 'מקור אור',
 'exif-flash' => 'מַבזק',
 'exif-focallength' => 'אורך מוקדי העדשות',
-'exif-focallength-format' => '$1 מ"מ',
+'exif-focallength-format' => '{{PLURAL:$1|מילימטר אחד|$1 מילימטרים}}',
 'exif-subjectarea' => 'נושא האזור',
 'exif-flashenergy' => 'אנרגיית המַבזק',
 'exif-focalplanexresolution' => 'משטח הפוקוס ברזולוציה האופקית',
@@ -3636,6 +3623,10 @@ $1',
 'exif-compression-2' => 'קידוד הופמן מואתם חד-מימדי לאורך ריצה CCITT קבוצה 3',
 'exif-compression-3' => 'קידוד פקס CCITT קבוצה 3',
 'exif-compression-4' => 'קידוד פקס CCITT קבוצה 4',
+'exif-compression-6' => 'JPEG (ישן)',
+'exif-compression-8' => 'Deflate (של Adobe)',
+'exif-compression-32773' => 'PackBits (של Macintosh RLE)',
+'exif-compression-32946' => 'Deflate (של PKZIP)',
 
 'exif-copyrighted-true' => 'מוגן בזכויות יוצרים',
 'exif-copyrighted-false' => 'מצב זכויות היוצרים לא הוגדר',
@@ -3819,6 +3810,8 @@ $1',
 
 'exif-isospeedratings-overflow' => 'מעל 65535',
 
+'exif-maxaperturevalue-value' => '$1 APEX (יחידות: f/$2)',
+
 'exif-iimcategory-ace' => 'אמנויות, תרבות ובידור',
 'exif-iimcategory-clj' => 'פשע ומשפט',
 'exif-iimcategory-dis' => 'אסונות ותאונות',
@@ -3842,10 +3835,6 @@ $1',
 'exif-urgency-high' => 'גבוהה ($1)',
 'exif-urgency-other' => 'מותאמת אישית ($1)',
 
-# External editor support
-'edit-externally' => 'עריכת קובץ זה באמצעות יישום חיצוני',
-'edit-externally-help' => '(ראו את [https://www.mediawiki.org/wiki/Manual:External_editors הוראות ההתקנה] למידע נוסף)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'הכול',
 'namespacesall' => 'הכול',
@@ -3854,7 +3843,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' => 'לשלוח קוד אימות',
@@ -3866,9 +3855,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),
@@ -4131,8 +4120,8 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'דפים מיוחדים',
-'specialpages-note' => '----
-* דפים מיוחדים רגילים.
+'specialpages-note-top' => 'מקרא',
+'specialpages-note' => '* דפים מיוחדים רגילים.
 * <span class="mw-specialpagerestricted">דפים מיוחדים מוגבלים.</span>',
 'specialpages-group-maintenance' => 'דיווחי תחזוקה',
 'specialpages-group-other' => 'דפים מיוחדים אחרים',
@@ -4186,9 +4175,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' => 'בעיה בוויקי',
@@ -4346,4 +4335,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 3e9137c..b33eee0 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( 'फ़ाइल_प्रति_खोज', 'फाइल_प्रति_खोज', 'संचिका_प्रति_खोज' ),
@@ -345,7 +344,6 @@ $messages = array(
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'यह पृष्ठ',
 'qbmyoptions' => 'मेरे पृष्ठ',
-'qbspecialpages' => 'विशेष पृष्ठ',
 'faq' => 'बहुधा पूछे प्रश्न',
 'faqpage' => 'Project:अक्सर पूछे जाने वाले सवाल',
 
@@ -462,8 +460,6 @@ $1',
 'ok' => 'ठीक है',
 'retrievedfrom' => '"$1" से लिया गया',
 'youhavenewmessages' => 'आपके लिए $1 हैं। ($2)',
-'newmessageslink' => 'नए सन्देश',
-'newmessagesdifflink' => 'पिछला बदलाव',
 'youhavenewmessagesfromusers' => 'आपके लिये {{PLURAL:$3|एक अन्य सदस्य|$3 अन्य सदस्यों}} के $1 हैं। ($2)',
 'youhavenewmessagesmanyusers' => 'आपके लिये $1 हैं। ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|एक नया सन्देश|नये सन्देश}}',
@@ -566,9 +562,6 @@ $1',
 'perfcached' => 'नीचे दिया हुआ डेटा कैशे मेमोरी से लिया हुआ है, अतः हो सकता है कि इसका पूर्ण अद्यतन न हुआ हो। कैशे मेमोरी में अधिकतम {{PLURAL:$1|एक  नतीजा|$1 नतीजे}} उपलब्ध हैं।',
 'perfcachedts' => 'नीचे दिया हुआ डेटा कैशे मेमोरी से है, और इसका अंतिम अद्यतन $1 को हुआ था। कैशे मेमोरी में अधिकतम {{PLURAL:$4|एक  नतीजा|$4 नतीजे}} उपलब्ध हैं।',
 'querypage-no-updates' => 'इस पृष्ठ का नवीनीकरण करना मना है। अभी यहाँ के डाटा को ताज़ा नहीं कर सकते।',
-'wrong_wfQuery_params' => 'wfQuery() के लिये गलत मापदण्ड दिये हैं<br />
-फ़ंक्शन: $1<br />
-पृच्छा: $2',
 'viewsource' => 'स्रोत देखें',
 'viewsource-title' => '$1 का स्रोत देखें',
 'actionthrottled' => 'कार्य समाप्त कर दिया गया है',
@@ -1266,12 +1259,8 @@ $1",
 # Search results
 'searchresults' => 'खोज परिणाम',
 'searchresults-title' => '"$1" के लिए खोज परिणाम',
-'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' => 'पृष्ठ पाठ मिलान',
 'notextmatches' => 'किसी भी पृष्ठ में यह सामग्री नहीं मिली',
 'prevn' => 'पिछले {{PLURAL:$1|$1}}',
@@ -1280,10 +1269,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|अगला|अगले}} $1 परिणाम',
 'shown-title' => 'हर पृष्ठ पर $1 {{PLURAL:$1|परिणाम}} दिखाएँ',
 'viewprevnext' => 'देखें ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''इस विकि पर \"[[:\$1]]\" नाम का एक पृष्ठ है'''",
 'searchmenu-new' => "'''इस विकि पर \"[[:\$1]]\" नाम का पृष्ठ बनाएँ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|इस उपसर्ग वाले पृष्ठ देखें]]',
 'searchprofile-articles' => 'सामग्री पृष्ठ',
 'searchprofile-project' => 'सहायता और परियोजना पृष्ठ',
 'searchprofile-images' => 'मल्टीमीडिया',
@@ -1311,13 +1298,10 @@ $1",
 'showingresults' => "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$1''' परिणाम {{PLURAL:$1|दिखाया गया है|दिखाए गए हैं}}।",
 'showingresultsnum' => "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$3''' परिणाम {{PLURAL:$3|दिखाया गया है|दिखाए गए हैं}}।",
 'showingresultsheader' => "'''$4''' के खोज परिणाम {{PLURAL:$5|कुल '''$3''' में से #'''$1'''|कुल '''$3''' में से क्रं. '''$1 - $2'''}}",
-'nonefound' => "'''सूचना''': मूलतः कुछ ही नामस्थानों में खोजा जाता हैं। अगर आपको सभी नामस्थानों में खोजना हैं तो खोजशब्दोंके पहले ''all:'' लगाकर खोजने की कोशिश करें या फिर उपसर्ग के तौर पे किसी नामस्थान का नाम लिखें।",
 'search-nonefound' => 'आपकी खोज से मेल खाते कोई परिणाम नहीं मिले।',
-'powersearch' => 'उन्नत खोज करें',
 'powersearch-legend' => 'उन्नत खोज',
 'powersearch-ns' => 'नामस्थानों में खोजें:',
 'powersearch-redir' => 'पुनार्निर्देश दर्शाएँ',
-'powersearch-field' => 'के लिये खोजें',
 'powersearch-togglelabel' => 'चुनें:',
 'powersearch-toggleall' => 'सभी',
 'powersearch-togglenone' => 'कोई भी नहीं',
@@ -1331,8 +1315,6 @@ $1",
 'preferences' => 'मेरी वरीयताएँ',
 'mypreferences' => 'पसंद',
 'prefs-edits' => 'संपादन संख्या:',
-'prefsnologin' => 'लॉग इन नहीं किया है',
-'prefsnologintext' => 'वरीयताएँ बदलने के लिए आपको <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} सत्रारंभ]</span> करना होगा।',
 'changepassword' => 'कूटशब्द बदलें',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
@@ -1356,7 +1338,6 @@ $1",
 'prefs-email' => 'ई-मेल वरीयताएँ',
 'prefs-rendering' => 'शक्लोसूरत',
 'saveprefs' => 'संजोएँ',
-'resetprefs' => 'ना संजोये गये बदलाव रद्द करें',
 'restoreprefs' => 'वापिस मूल जमावों पर आ जाएँ (सभी भागों में)',
 'prefs-editing' => 'संपादन',
 'rows' => 'कतारें:',
@@ -1377,7 +1358,6 @@ $1",
 'localtime' => 'स्थानीय समय:',
 'timezoneuseserverdefault' => 'विकी डिफ़ॉल्ट का उपयोग करें ($1)',
 'timezoneuseoffset' => 'अन्य (समयांतर निर्दिष्ट करें)',
-'timezoneoffset' => 'समयांतर¹:',
 'servertime' => 'सर्वर का समय:',
 'guesstimezone' => 'ब्राउज़र से भरें',
 'timezoneregion-africa' => 'अफ़्रीका',
@@ -1633,6 +1613,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 से नये बदलाव दिखाएँ',
@@ -2135,10 +2116,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'protectedpages' => 'सुरक्षित पृष्ठ',
 'protectedpages-indef' => 'केवल अनिश्चितकालीन सुरक्षाएँ',
 'protectedpages-cascade' => 'केवल सोपानी सुरक्षा',
-'protectedpagestext' => 'नीचे दिये हुए पृष्ठ नाम बदलने या संपादित करने से सुरक्षित हैं',
 'protectedpagesempty' => 'इस समय इन नियमों द्वारा कोई पृष्ठ सुरक्षित नहीं हैं।',
 'protectedtitles' => 'सुरक्षित शीर्षक',
-'protectedtitlestext' => 'निम्नलिखित शीर्षकों पर पृष्ठ नहीं बनाए जा सकते।',
 'protectedtitlesempty' => 'इन नियमों द्वारा कोई भी शीर्षक सुरक्षित नहीं हैं।',
 'listusers' => 'सदस्यसूची',
 'listusers-editsonly' => 'केवल संपादन कर चुके सदस्य दिखाएँ',
@@ -3640,10 +3619,6 @@ $1',
 'exif-urgency-high' => 'उच्चतम ($1)',
 'exif-urgency-other' => 'यूज़र-डिफ़ाइंड प्राथमिकता ( $1 )',
 
-# External editor support
-'edit-externally' => 'बाहरी प्रणाली का उपयोग करते हुए इस सञ्चिका को सम्पादित करें ।',
-'edit-externally-help' => '(और जानकारी के लिए [https://www.mediawiki.org/wiki/Manual:External_editors जमाव निर्देश] देखें)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सभी',
 'namespacesall' => 'सभी',
@@ -3904,8 +3879,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'विशेष पृष्ठ',
-'specialpages-note' => '----
-* साधारण विशेष पृष्ठ।
+'specialpages-note' => '* साधारण विशेष पृष्ठ।
 * <span class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठ।</span>',
 'specialpages-group-maintenance' => 'अनुरक्षण रिपोर्ट',
 'specialpages-group-other' => 'अन्य विशेष पृष्ठ',
@@ -4096,4 +4070,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 0119c38..3c99a9b 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'qbedit' => 'Badlo',
 'qbpageoptions' => 'Ii panna',
 'qbmyoptions' => 'Hamar panna',
-'qbspecialpages' => 'Khaas panna',
 'faq' => 'Sab time puchhe waala sawal',
 'faqpage' => 'Project:Sab time puchhe waala sawal',
 
@@ -308,8 +307,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}}',
@@ -409,9 +406,6 @@ Uu koi kaaran nai dis hae.',
 'perfcached' => 'Niche likha data ke cache karaa gais hai aur sait purana hoi. Jaada se jaada {{PLURAL:$1|ek result |$1 results}} cache me hae.',
 'perfcachedts' => 'Niche likha data ke cache kar dewa gais rahaa, aur pichhle time $1 ke badlaa gais rahaa. Jaada se jaada {{PLURAL:$4|ek result |$4 results}} cache me hae.',
 'querypage-no-updates' => 'Ii panna me badlao abhi band hai. Data ke abhi nawaa nai karaa jaai.',
-'wrong_wfQuery_params' => 'Galat parameters to wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Source dekho',
 'viewsource-title' => '"$1" ke source dekho',
 'actionthrottled' => 'Kaam ke band kar dewa gais hai',
@@ -1103,12 +1097,8 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 # Search results
 'searchresults' => 'Khoj ke natija',
 'searchresults-title' => '"$1" ke natija ke khojo',
-'searchresulttext' => '{{SITENAME}} me khoje khatir aur jaankari khatir, dekho [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Aap khoja rahaa  \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sab panna jon ki "$1" se suruu hoe hai]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sab panna jon ki "$1" se jurre hai]])',
-'searchsubtitleinvalid' => "Aap '''$1''' ke khoja hai",
 'toomanymatches' => 'Bahut dher match mila, duusra query se kosis karo',
 'titlematches' => 'Panna ke jon naam mile hai',
-'notitlematches' => 'Koi bhi panna ke naam nai mile hae',
 'textmatches' => 'Panna ke jon text mile hai',
 'notextmatches' => 'Koi panna see text nai mile hae',
 'prevn' => 'pahile waala {{PLURAL:$1|$1}}',
@@ -1117,10 +1107,8 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 'nextn-title' => 'Aage waala $1 {{PLURAL:$1|result|results}}',
 'shown-title' => 'Ek panna me $1 {{PLURAL:$1|result|results}} dekhao',
 'viewprevnext' => 'Dekho ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Khoje ke option',
 'searchmenu-exists' => "'''Ii wiki me \"[[\$1]]\" naam ke panna hai'''",
 'searchmenu-new' => "'''Ii wiki me \"[[:\$1]]\" panna ke banao!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ii prefix ke panna ke browse karo]]',
 'searchprofile-articles' => 'Content panna',
 'searchprofile-project' => 'Madat aur Project panna',
 'searchprofile-images' => 'Multimedia',
@@ -1148,14 +1136,10 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 'showingresults' => "Niche dekhae hai {{PLURAL:$1|'''1''' result|'''$1''' results}} #'''$2''' se suruu hoe ke.",
 'showingresultsnum' => "Niche dekhawa jae hai {{PLURAL:$3|'''1''' result|'''$3''' results}}, #'''$2''' se suruu hoe ke.",
 'showingresultsheader' => "{{PLURAL:$5|Natija '''$1''' of '''$3'''|Natija '''$1 - $2''' of '''$3'''}} '''$4''' khatir",
-'nonefound' => "'''Yaad rakhna''': apne se khaali thora namespaces me khoja jaae hai.
-Aapan query ke ''all:'' se suruu kar ke visay suchi me khojo (including talk pages, templates, etc), nai to jon namespace aap mangtaa hai usse query suruu karo.",
 'search-nonefound' => 'Ii sawaal ke koi jawab nai hae.',
-'powersearch' => 'Visesh khoj',
 'powersearch-legend' => 'Gahira khoj',
 'powersearch-ns' => 'Namespaces me khojo:',
 'powersearch-redir' => 'Redirects ke suchi do',
-'powersearch-field' => 'Iske khojo',
 'powersearch-togglelabel' => 'Check karo:',
 'powersearch-toggleall' => 'Sab',
 'powersearch-togglenone' => 'Koi bhi nai',
@@ -1169,8 +1153,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',
-'prefsnologintext' => 'Aaap ke <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> chaahi rahe ke user preferences ke badle ke khatir.',
 'changepassword' => 'Pasword ke badlo',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Jhalak',
@@ -1194,7 +1176,6 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
 'prefs-email' => 'E-mail ke option',
 'prefs-rendering' => 'Dekhe me kaise lage hai',
 'saveprefs' => 'Save karo',
-'resetprefs' => 'Binaa bachawa gias badlao ke mitao',
 'restoreprefs' => 'Sab default settings ke pahile jaise karo (sab vibhag me)',
 'prefs-editing' => 'Badaltaa hai',
 'rows' => 'Line:',
@@ -1215,7 +1196,6 @@ Aur koi agar iske bare me jaane hae aap ke dhyan suchi ke parrhae sake hae, tab
 'localtime' => 'Sthaniye samay:',
 'timezoneuseserverdefault' => 'Wiki default ke kaam me laao ($1)',
 'timezoneuseoffset' => 'Aur koi (offset ke specify karo)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Server ke time:',
 'guesstimezone' => 'Browser se bharo',
 'timezoneregion-africa' => 'CSS ke aapan khatir badlo',
@@ -1465,6 +1445,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',
@@ -1949,10 +1930,8 @@ Sab row me pahila aur duusra redirect ke jorr hae, aur isme duusra redirect ke n
 'protectedpages' => 'Surakchhit panna',
 'protectedpages-indef' => 'Khaali indefinite bachao',
 'protectedpages-cascade' => 'Khaali cascading bachao',
-'protectedpagestext' => 'Niche ke panna ke naam badle aur badle se rok lagawa gais hai',
 'protectedpagesempty' => 'Ii parameters se koi bhi panna ke nai bachawa gais hai.',
 'protectedtitles' => 'Bachawa gais titles',
-'protectedtitlestext' => 'Niche ke title ke nai banawa jaae sake hai',
 'protectedtitlesempty' => 'Ii parameters se koi bhi title ke nai bacawa gais hai.',
 'listusers' => 'Sadasya ke suchi',
 'listusers-editsonly' => 'Khaali uu sadasya ke dekhao jon ki koi badlao karis hai',
@@ -3462,10 +3441,6 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
 'exif-urgency-high' => 'Jaada ($1)',
 'exif-urgency-other' => 'Sadasya-defined priority ($1)',
 
-# External editor support
-'edit-externally' => 'Ii file ke bahaari program me kaam me laae ke badlo',
-'edit-externally-help' => '(Aur jaankari khatir [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ke dekho)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sab',
 'namespacesall' => 'sab',
index 064b746..f09adda 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'qbedit' => 'Ilisan',
 'qbpageoptions' => 'Ining panid',
 'qbmyoptions' => 'Akon mga panid',
-'qbspecialpages' => 'Pinasahi nga mga panid',
 'faq' => 'Mga masami pamangkoton',
 'faqpage' => 'Project:MMP',
 
@@ -277,8 +276,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}}',
@@ -374,9 +371,6 @@ Siguro may-ara ini sang isa ukon madamo nga karakter nga indi ginabaton kag gina
 'perfcachedts' => 'Ang masunod nga datos nakatago lamang, kag pinaka-ulihe nga ginbag-o sang $1. May maksimum nga {{PLURAL:$4|isa ka resulta nga|$4 mga resulta nga}} ara sa nakatago nga datos.',
 'querypage-no-updates' => 'Ang mga pagbag-o sa sini nga panid karon ginpa-untat.
 Ang datos nga yari diri indi pagliwaton.',
-'wrong_wfQuery_params' => 'Indi insakto nga mga parametro sa wfQuery()<br />
-Kapuslanan: $1<br />
-Pagpamangkot: $2',
 'viewsource' => 'Lantawon ang ginhalinan',
 'viewsource-title' => 'Lantawon ang ginhalinan sang $1',
 'actionthrottled' => 'Ang paghulag ginpunggan',
@@ -1029,12 +1023,8 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Resulta sang Pagpangita',
 'searchresults-title' => 'Resulta sang Pagpangita para "$1"',
-'searchresulttext' => 'Para sa madamu pa nga impormasyon parti sa pagpangita {{SITENAME}}, lantawa [[{{MediaWiki:Helppage}}|{{int:bulig}}]].',
-'searchsubtitle' => 'Nagpangita ka para \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanan nga pahina gasugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanan nga pahina nga naga tabid kay "$1"]])',
-'searchsubtitleinvalid' => "Nangita ka para '''$1'''",
 'toomanymatches' => 'Tuman ka madamo nga pareho ang nagbalik, palihog tilaw sang lain nga pagpangita',
 'titlematches' => 'Mga pareho nga titulo sang panid',
-'notitlematches' => 'Wala sang parehas nga titulo ka pahina',
 'textmatches' => 'Mga pareho nga teksto sang panid',
 'notextmatches' => 'Wala sang pahina nga parehas teksto',
 'prevn' => 'antes {{PLURAL:$1|$1}}',
@@ -1043,10 +1033,8 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => 'Madason nga $1 {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Magpakita sang $1 ka {{PLURAL:$1|resulta|mga resulta}} kada panid',
 'viewprevnext' => 'Tan-awon ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Mga pililian sa pagpangita',
 'searchmenu-exists' => "'''May yara sang panid nga ginhingalanan nga \"[[:\$1]]\" sa sini nga wiki.'''",
 'searchmenu-new' => "'''Gintuga ang panid nga \"[[:\$1]]\" sa sini nga wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Magbasa-basa sang mga panid gamit ang ini nga unpali]]',
 'searchprofile-articles' => 'Mga panid sang unod',
 'searchprofile-project' => 'Mga panid sang Bulig kag Proyekto',
 'searchprofile-images' => 'Multimedia',
@@ -1074,14 +1062,10 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "Ginapakita sa dalom pakadto sa {{PLURAL:$1|'''1''' ka resulta|'''$1''' ka mga resulta}} umpisa ang #'''$2'''.",
 'showingresultsnum' => "Ginapakita sa dalom ang {{PLURAL:$3|'''1''' ka resulta|'''$3''' ka mga resulta}} umpisa ang #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resulta nga '''$1''' sang '''$3'''|Mga resulta nga '''$1 - $2''' sang '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ay ginapangita nga daan.
-Testingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang tanan nga unod (dala na dira ang pahina paghisayranay, templeyts, etc), o gamita amg imo nanamian nga ngalan-espasyo bilang prefiks.",
 'search-nonefound' => 'Wala sang mga resulta nga nagsanto sa imo nga ginapangita.',
-'powersearch' => 'Abanse nga pagpangita',
 'powersearch-legend' => 'Abanse nga pagpangita',
 'powersearch-ns' => 'Pangita sa mga ngalan-espasyo:',
 'powersearch-redir' => 'Lista sang mga gin direkta liwat',
-'powersearch-field' => 'Pangita-on si',
 'powersearch-togglelabel' => 'Tsekan:',
 'powersearch-toggleall' => 'Tanan',
 'powersearch-togglenone' => 'Wala',
@@ -1094,8 +1078,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',
-'prefsnologintext' => 'Kinahanglan nga ikaw <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakasulod]</span> agod nga mabuhat ang pag-ilis sang mga ginapalabi.',
 'changepassword' => 'Ilisan ang pasword',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Ipakita subong',
@@ -1119,7 +1101,6 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
 'prefs-email' => 'Mga pililian sang e-mail',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Itipunon',
-'resetprefs' => 'Panason ang mga wala matipon nga mga pagbag-o',
 'restoreprefs' => 'Ibalik ang tanan nga default settings',
 'prefs-editing' => 'Pag-ilis',
 'rows' => 'Mga linya:',
@@ -1137,7 +1118,6 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
 'localtime' => 'Lokal nga oras:',
 'timezoneuseserverdefault' => 'Gamiton ang ginagamit sang wiki ($1)',
 'timezoneuseoffset' => 'Iban pa (ibutang ang offset)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Oras sang server:',
 'guesstimezone' => 'Butangan halin sa brawser',
 'timezoneregion-africa' => 'Africa',
@@ -1882,10 +1862,6 @@ Ang iban ay pagataguon sang default.
 'exif-focallengthin35mmfilm' => 'Laba sang pokus sang film nga 35 mm',
 'exif-scenecapturetype' => 'Tipo sang pag-kuha sang litrato',
 
-# External editor support
-'edit-externally' => 'Islan ini nga file gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Lantawa ang [https://www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tanan',
 'namespacesall' => 'tanan',
@@ -1932,4 +1908,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 0470ffc..72c9fa6 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' ),
@@ -474,7 +472,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Postavke stranice',
 'qbmyoptions' => 'Moje stranice',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'Najčešća pitanja',
 'faqpage' => 'Project:FAQ',
 
@@ -590,8 +587,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}}',
@@ -685,9 +680,6 @@ Nema obrazloženja ili poruke o pogrješci.',
 'perfcached' => 'Sljedeći podaci su iz međuspremnika i možda nisu najsvježiji. Međuspremnik sadrži $1 {{PLURAL:$1|rezultat|rezultata}} pretraživanja.',
 'perfcachedts' => 'Sljedeći podaci su iz međuspremnika i zadnji puta su ažurirani u $1. Međuspremnik sadrži $4 {{PLURAL:$4|rezultat|rezultata}} pretraživanja.',
 'querypage-no-updates' => 'Osvježavanje ove stranice je trenutačno onemogućeno. Nove promjene neće biti vidljive.',
-'wrong_wfQuery_params' => 'Neispravni parametri poslani u wfQuery()<br />
-Funkcija: $1<br />
-Upit: $2',
 'viewsource' => 'Vidi izvornik',
 'viewsource-title' => 'Vidi kôd stranice $1',
 'actionthrottled' => 'Uređivanje je usporeno',
@@ -1348,12 +1340,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati traženja za "$1"',
-'searchresulttext' => 'Za više obavijesti o pretraživanju projekta {{SITENAME}} vidi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje povezuju na "$1"]])',
-'searchsubtitleinvalid' => 'Za upit "$1"',
 'toomanymatches' => 'Preveliki broj rezultata, molimo probajte drukčiji upit',
 'titlematches' => 'Pronađene stranice prema naslovu',
-'notitlematches' => 'Nema pronađenih stranica prema naslovu',
 'textmatches' => 'Pronađene stranice prema tekstu članka',
 'notextmatches' => 'Nema pronađenih stranica prema tekstu članka',
 'prevn' => 'prethodnih {{PLURAL:$1|$1}}',
@@ -1362,10 +1350,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '$1 {{PLURAL:$1|sljedeći rezultat|sljedeća rezultata|sljedećih rezultata}}',
 'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici',
 'viewprevnext' => 'Vidi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Mogućnosti pretraživanja',
 'searchmenu-exists' => "* Stranica '''[[$1]]'''",
 'searchmenu-new' => "'''Stvori stranicu \"[[:\$1]]\" na ovoj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pretraži stranice s ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sa sadržajem',
 'searchprofile-project' => 'Pomoć i stranice projekta',
 'searchprofile-images' => 'Multimedija',
@@ -1393,13 +1379,10 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, počevši od '''$2'''.",
 'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''$3''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}}, počevši s brojem '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Napomena''': Glavne postavke pretražuju samo određene imenske prostore. Ako želite pretraživati sve, dodajte prefiks '''all:''' ispred traženog sadržaja (ovo uključuje stranice za razgovor, predloške i sl.), ili koristite prefiks željenog imenskog prostora.",
 'search-nonefound' => 'Ne postoje rezultati koji se podudaraju s upitom.',
-'powersearch' => 'Traženje',
 'powersearch-legend' => 'Napredno pretraživanje',
 'powersearch-ns' => 'Traži u imenskom prostoru:',
 'powersearch-redir' => 'Prikaži preusmjerenja',
-'powersearch-field' => 'Traži za',
 'powersearch-togglelabel' => 'Uključi:',
 'powersearch-toggleall' => 'Sve',
 'powersearch-togglenone' => 'Ništa',
@@ -1410,8 +1393,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',
-'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span> za podešavanje suradničkih postavki.',
 'changepassword' => 'Promjena lozinke',
 'prefs-skin' => 'Izgled',
 'skin-preview' => 'Pregled',
@@ -1435,7 +1416,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'prefs-email' => 'Mogućnosti e-maila',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Spremi',
-'resetprefs' => 'Vrati na prvotne postavke',
 'restoreprefs' => 'Vrati sve postavke na prvotno zadane',
 'prefs-editing' => 'Širina okvira za uređivanje',
 'rows' => 'Redova',
@@ -1454,7 +1434,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Drugo (odredite razliku)',
-'timezoneoffset' => 'Razlika¹:',
 'servertime' => 'Vrijeme na poslužitelju:',
 'guesstimezone' => 'Vrijeme dobiveno od preglednika',
 'timezoneregion-africa' => 'Afrika',
@@ -1696,6 +1675,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',
@@ -2165,10 +2145,8 @@ koja obično ukazuje na "pravu" odredišnu stranicu, na koju bi trebalo pokaziva
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'Samo neograničene zaštite',
 'protectedpages-cascade' => 'Samo prenosiva zaštita',
-'protectedpagestext' => 'Slijedeće stranice su zaštićene od premještanja ili uređivanja',
 'protectedpagesempty' => 'Nema zaštićenih stranica koje ispunjavaju uvjete koje ste postavili.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Sljedeći naslovi su zaštićeni od kreiranja',
 'protectedtitlesempty' => 'Nijedan naslov nije trenutačno zaštićen s tim parametrima.',
 'listusers' => 'Popis suradnika',
 'listusers-editsonly' => 'Pokaži samo suradnike s uređivanjem',
@@ -3653,10 +3631,6 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Suradnički definiran prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Uredi koristeći se vanjskom aplikacijom',
-'edit-externally-help' => '(Vidi [https://www.mediawiki.org/wiki/Manual:External_editors setup upute] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
@@ -3929,8 +3903,7 @@ Trebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne lic
 
 # Special:SpecialPages
 'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* Normalne posebne stranice
+'specialpages-note' => '* Normalne posebne stranice
 * <span class="mw-specialpagerestricted">Posebne stranice s ograničenim pristupom.</span>',
 'specialpages-group-maintenance' => 'Izvještaji za održavanje',
 'specialpages-group-other' => 'Ostale posebne stranice',
@@ -4128,4 +4101,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 5f8f897..3e741e2 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' ),
@@ -162,12 +160,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Dohladawane změny w aktualnych změnach schować',
 'tog-newpageshidepatrolled' => 'Dohladowane strony z lisćiny nowych stronow schować',
 'tog-extendwatchlist' => 'Lisćinu wobkedźbowankow wočinić, zo by wšě změny widźał, nic jenož najnowše',
-'tog-usenewrc' => 'Skupinske změny po stronje w aktualnych změnach a wobkedźbowankach (trjeba JavaScript)',
+'tog-usenewrc' => 'Změny po stronje w aktualnych změnach a wobkedźbowankach zeskupjeć',
 'tog-numberheadings' => 'Nadpisma awtomatisce čisłować',
-'tog-showtoolbar' => 'Gratowu lajstu pokazać (wužaduje sej JavaScript)',
-'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować (wužaduje sej JavaScript)',
+'tog-showtoolbar' => 'Wobdźěłowansku lajstu pokazać',
+'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować',
 'tog-editsection' => 'Wobdźěłowanje jednotliwych wotrězkow přez wotkazy [wobdźěłać] zmóžnić',
-'tog-editsectiononrightclick' => 'Wobdźěłowanje jednotliwych wotrězkow přez kliknjenje z prawej tastu na nadpisma wotrězkow zmóžnić (wužaduje sej JavaScript)',
+'tog-editsectiononrightclick' => 'Wobdźěłowanje wotrězkow přez kliknjenje z prawej tastu na nadpisma wotrězkow zmóžnić',
 'tog-showtoc' => 'Zapis wobsaha pokazać (za strony z wjace hač 3 nadpismami)',
 'tog-rememberpassword' => 'Přizjewjenje na tutym wobhladowaku sej spomjatkować (za maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
 'tog-watchcreations' => 'Strony, kotrež wutworjam a dataje, kotrež nahrawam, swojim wobkedźbowankam přidać',
@@ -185,7 +183,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Ličbu wobkedźbowacych wužiwarjow pokazać',
 'tog-oldsig' => 'Eksistowaca signatura:',
 'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadźeć  (bjez awtomatiskeho wotkaza)',
-'tog-uselivepreview' => 'Live-přehlad wužiwać (wužaduje sej JavaScript) (eksperimentalny)',
+'tog-uselivepreview' => 'Live-přehlad wužiwać (eksperimentalny)',
 'tog-forceeditsummary' => 'Mje skedźbnić, jeli zabudu zjeće',
 'tog-watchlisthideown' => 'Moje změny we wobkedźbowankach schować',
 'tog-watchlisthidebots' => 'Změny awtomatiskich programow (botow) we wobkedźbowankach schować',
@@ -198,6 +196,7 @@ $messages = array(
 'tog-showhiddencats' => 'Schowane kategorije pokazać',
 'tog-norollbackdiff' => 'Rozdźěl po wróćostajenju zanjechać',
 'tog-useeditwarning' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
+'tog-prefershttps' => 'Po přizjewjenju přeco wěsty zwisk wužiwać',
 
 'underline-always' => 'Přeco',
 'underline-never' => 'Ženje',
@@ -298,7 +297,7 @@ $messages = array(
 'newwindow' => '(wočinja so w nowym woknje)',
 'cancel' => 'Přetorhnyć',
 'moredotdotdot' => 'Wjace…',
-'morenotlisted' => 'Dalše njepodate...',
+'morenotlisted' => 'Tuta lisćina dospołna njeje.',
 'mypage' => 'Strona',
 'mytalk' => 'Diskusija',
 'anontalk' => 'Diskusijna strona tuteje IP.adresy',
@@ -311,7 +310,6 @@ $messages = array(
 'qbedit' => 'Wobdźěłać',
 'qbpageoptions' => 'Tuta strona',
 'qbmyoptions' => 'Moje strony',
-'qbspecialpages' => 'Specialne strony',
 'faq' => 'Husto stajene prašenja (FAQ)',
 'faqpage' => 'Project:Husto stajene prašenja (FAQ)',
 
@@ -401,7 +399,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' => 'Wo {{GRAMMAR:lokatiw|{{SITENAME}}}}',
 'aboutpage' => 'Project:Wo',
-'copyright' => 'Wobsah steji pod $1.',
+'copyright' => 'Wobsah pod $1 k dispoziciji steji, jeli njeje so hinak podało.',
 'copyrightpage' => '{{ns:project}}:Awtorske prawa',
 'currentevents' => 'Aktualne podawki',
 'currentevents-url' => 'Project:Aktualne podawki',
@@ -427,12 +425,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ć',
@@ -484,6 +480,12 @@ 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',
 'laggedslavemode' => "'''Kedźbu:''' Je móžno, zo strona žane zaktualizowanja njewobsahuje.",
 'readonly' => 'Datowa banka je zawrjena',
 'enterlockreason' => 'Zapodaj přičinu za zawrjenje a přibližny čas, hdy budźe zawrjenje zběhnjene',
@@ -517,14 +519,12 @@ 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}}.',
 'perfcachedts' => 'Slědowace daty su z pufrowaka a buchu $1 posledni raz zaktualizowane. Maksimalnje {{PLURAL:$4|jedyn wuslědk|$4 wuslědkaj|$4 wuslědki|$4 wuslědkow}} w pufrowaku k dispoziciji {{PLURAL:$4|steji|stejitej|steja|steji}}.',
 'querypage-no-updates' => 'Aktualizacije za tutu stronu su tuchwilu znjemóžnjene. Daty so hač na dalše njewobnowja.',
-'wrong_wfQuery_params' => 'Njeprawe parametry za wfQuery()<br />
-Funkcija: $1<br />
-Wotprašenje: $2',
 'viewsource' => 'žórło wobhladać',
 'viewsource-title' => 'Žórłowy tekst za $1 sej wobhladać',
 'actionthrottled' => 'Akcije wobmjezowane',
@@ -553,7 +553,8 @@ Administrator, kiž je jón zawrěł, je tule přičinu podał: "$3".',
 'invalidtitle-knownnamespace' => 'Njepłaćiwy titul z mjenowym rumom "$2" a tekstom "$3"',
 'invalidtitle-unknownnamespace' => 'Njepłaćiwy titul z njeznatym mjenowym rumom $1 a tekstom "$2"',
 'exception-nologin' => 'Njejsy přizjewjeny',
-'exception-nologin-text' => 'Tuta strona abo akcija sej wužaduje, zo sy na tutym wikiju přizjewjeny.',
+'exception-nologin-text' => 'Prošu [[Special:Userlogin|přizjew so]], zo by přistup na tutu stronu abo akciju měł.',
+'exception-nologin-text-manual' => 'Zo by přistup na tutu stronu abo akciju měł, dyrbiš so $1.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: Njeznaty wirusowy skener: ''$1''",
@@ -563,14 +564,14 @@ Administrator, kiž je jón zawrěł, je tule přičinu podał: "$3".',
 # Login and logout pages
 'logouttext' => "'''{{GENDER:|Sy|Sy}} nětko {{GENDER:|wotzjewjeny|wotzjewjena}}.'''
 
-Móžeš {{GRAMMAR:akuzatiw|{{SITENAME}}}} nětko anonymnje dale wužiwać abo so ze samsnym abo druhim wužiwarskim mjenom <span class='plainlinks'>[$1 zaso přizjewić]</span>.
-Wobkedźbuj, zo so někotre strony dale jewja, kaž by hišće přizjewjeny był, doniž pufrowak swojeho wobhladowaka njewuprózdnješ.",
+Kedźbu: Je móžno, zo někotre strony so snano takle pokazuja, kaž by ty hišće přizjewjeny był, doniž pufrowak twojeho wobhladowaka njewuprózdniš.",
 'welcomeuser' => 'Witaj $1',
 'welcomecreation-msg' => 'Twoje konto bu wutworjene.
 Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENAME}}}}]] změnić.',
 'yourname' => 'Wužiwarske mjeno:',
 'userlogin-yourname' => 'Wužiwarske mjeno',
 'userlogin-yourname-ph' => 'Zapodaj swoje wužiwarske mjeno',
+'createacct-another-username-ph' => 'Wužiwarske mjeno zapodać',
 'yourpassword' => 'Hesło:',
 'userlogin-yourpassword' => 'Hesło',
 'userlogin-yourpassword-ph' => 'Zapodaj swoje hesło',
@@ -600,14 +601,18 @@ Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENA
 'gotaccount' => 'Maš hižo wužiwarske konto? $1.',
 'gotaccountlink' => 'Přizjewić',
 'userlogin-resetlink' => 'Přizjewjenske daty zabył?',
-'userlogin-resetpassword-link' => 'Hesło anulować',
+'userlogin-resetpassword-link' => 'Sy swoje hesło zabył?',
 'helplogin-url' => 'Help:Přizjewić',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc za přizjewjenje]]',
+'userlogin-loggedin' => 'Sy hižo jako {{GENDER:$1|$1 přizjewjeny|$1 přizjewjena}}. Wužij slědowacy formular, zo by so jako druhi wužiwar přizjewił.',
+'userlogin-createanother' => 'Dalše konto załožić',
 'createacct-join' => 'Zapodaj deleka swoje informacije.',
+'createacct-another-join' => 'Zapodaj deleka informacije noweho konta.',
 'createacct-emailrequired' => 'E-mejlowa adresa',
 'createacct-emailoptional' => 'E-mejlowa adresa (opcionalny)',
 'createacct-email-ph' => 'Zapodaj swoju e-mejlowu adresu',
-'createaccountmail' => 'Nachwilne přidatne hesło wužiwać a jo na slědowacu e-mejlowu adresu pósłać',
+'createacct-another-email-ph' => 'E-mejlowu adresu zapodać',
+'createaccountmail' => 'Nachwilne připadne hesło wužiwać a jo na slědowacu e-mejlowu adresu pósłać',
 'createacct-realname' => 'Woprawdźite mjeno (opcionalny)',
 'createaccountreason' => 'Přičina:',
 'createacct-reason' => 'Přičina',
@@ -615,6 +620,7 @@ Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENA
 'createacct-captcha' => 'Wěstotna kontrola',
 'createacct-imgcaptcha-ph' => 'Zapodaj tekst, kotryž deleka widźiš',
 'createacct-submit' => 'Twoje konto załožić',
+'createacct-another-submit' => 'Dalše konto załožić',
 'createacct-benefit-heading' => '{{SITENAME}} je so wot ludźi kaž ty wutworił.',
 'createacct-benefit-body1' => '{{PLURAL:$1|změna|změnje|změny|změnow}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|strona|stronje|strony|stronow}}',
@@ -645,7 +651,7 @@ Přepruwuj swój prawopis abo [[Special:UserLogin/signup|wutwor nowe konto]].',
 'passwordtooshort' => 'Hesła dyrbja znajmjeńša {{PLURAL:$1|1 znamješko|$1 znamješce|$1 znamješka|$1 znamješkow}} měć.',
 'password-name-match' => 'Twoje hesło dyrbi so wot twojeho wužiwarskeho mjena rozeznać.',
 'password-login-forbidden' => 'Wužiwanje tutoho wužiwarskeho mjena a heska je zakazane.',
-'mailmypassword' => 'Nowe hesło e-mejlować',
+'mailmypassword' => 'Hesło wróćo stajić',
 'passwordremindertitle' => 'Nowe nachwilne hesło za {{GRAMMAR:akuzatiw|{{SITENAME}}}}',
 'passwordremindertext' => 'Něchtó z IP-adresu $1 (najskerje ty) je wo nowe hesło za přizjewjenje za {{GRAMMAR:akuzatiw|{{SITENAME}}}} ($4) prosył. Nachwilne hesło za wužiwarja "$2" je so wutworiło a je nětko "$3". Jeli je to twój wotpohlad było dyrbiš so nětko přizjewić a nowe hesło wubrać. Twoje nachwilne hesło spadnje za {{PLURAL:$5|jeden dźeń|$5 dnjej|$5 dny|$5 dnjow}}.
 
@@ -655,12 +661,12 @@ Jeli něchtó druhi wo nowe hesło prosył abo ty sy so zaso na swoje hesło dop
 'passwordsent' => 'Nowe hesło bu na e-mejlowu adresu zregistrowanu za wužiwarja „$1” pósłane.
 Prošu přizjew so znowa, po tym zo sy je přijał.',
 'blocked-mailpassword' => 'Twoja IP-adresa je přećiwo wobdźěłowanju zablokowana, a tohodla njeje dowolene, funkciju za wobnowjenje hesłow wužiwać, zo by znjewužiwanju zadźěwało.',
-'eauthentsent' => 'Wobkrućenska e-mejlka bu na naspomnjenu e-mejlowu adresu pósłana.
-Prjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w e-mejlce měć, zo by wobkrućił, zo konto je woprawdźe twoje.',
+'eauthentsent' => 'Wobkrućenska e-mejlka je so na podatu e-mejlowu adresu pósłała.
+Prjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w e-mejlce měć, zo by wobkrućił, zo konto woprawdźe tebi słuša.',
 'throttled-mailpassword' => 'E-mejl za anulowanje hesło je so za {{PLURAL:$1|poslednju hodźinu|poslednjej $1 hodźinje|poslednje $1 hodźiny|poslednich $1 hodźin}} pósłała. Zo by znjewužiwanju zadźěwało, so jenož jedna e-mejl za anulowanje hesła na {{PLURAL:$1|hodźinu|$1 hodźinje|$1 hodźiny|$1 hodźin}} pósćele.',
 'mailerror' => 'Zmylk při słanju e-mejlki: $1',
 'acct_creation_throttle_hit' => 'Wopytowarjo tutoho wikija, kotřiž twoju IP-adresu wužiwaja, su {{PLURAL:$1|1 konto|$1 kontaj|$1 konty|$1 kontow}} posledni dźeń wutworił, štož je maksimalna ličba za tutu periodu. Wopytowarjo, kotřiž tutu IP-adresu wužiwaja, njemóža tuchwilu dalše konta wutworić.',
-'emailauthenticated' => 'Twoja e-mejlowa adresa bu $2 $3 hodź. wobkrućena.',
+'emailauthenticated' => 'Twoja e-mejlowa adresa je so $2 $3 hodź. wobkrućiła.',
 'emailnotauthenticated' => 'Twoja e-mejlowa adresa hišće wobkrućena njeje. Žana e-mejlka budźe so za slědowace funkcije słać.',
 'noemailprefs' => 'Podaj e-mejlowu adresu w swojich nastajenjach, zo bychu tute funkcije k dispoziciji stali.',
 'emailconfirmlink' => 'Swoju e-mejlowu wobkrućić',
@@ -674,10 +680,12 @@ Prjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w
 
 Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutworiło.',
 'usernamehasherror' => 'Wužiwarske mjeno njesmě hašowe znamješka wpbsahować',
-'login-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu, prjedy hač znowa spytaš.',
+'login-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.',
 '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()',
@@ -693,7 +701,7 @@ Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutwori
 'newpassword' => 'Nowe hesło:',
 'retypenew' => 'Nowe hesło wospjetować:',
 'resetpass_submit' => 'Hesło posrědkować a so přizjewić',
-'changepassword-success' => 'Twoje hesło bu wuspěšnje změnjene! Nětko přizjewjenje běži...',
+'changepassword-success' => 'Twoje hesło je so wuspěšnje změniło!',
 'resetpass_forbidden' => 'Hesła njedadźa so změnić.',
 'resetpass-no-info' => 'Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.',
 'resetpass-submit-loggedin' => 'Hesło změnić',
@@ -706,7 +714,7 @@ Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło poža
 # Special:PasswordReset
 'passwordreset' => 'Hesło wróćo stajić',
 'passwordreset-text-one' => 'Wupjelń tutón formular, zo by swoje hesło anulował.',
-'passwordreset-text-many' => '{{PLURAL:$1|Zapodaj jedyn z datow, zo by swoje hesło anulował.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Wupjelń jedne z polow, zo by nachwilne hesło přez e-mejl dóstał.}}',
 'passwordreset-legend' => 'Hesło wróćo stajić',
 'passwordreset-disabled' => 'Wróćostajenje hesłow je so na  tutym wikiju znjemóžniło.',
 'passwordreset-emaildisabled' => 'E-mejlowe funkcije su so na tutym wikiju znjemóžnili.',
@@ -746,6 +754,19 @@ Nachwilne hesło: $2',
 'changeemail-submit' => 'E-mejlowu adresu změnić',
 'changeemail-cancel' => 'Přetorhnyć',
 
+# 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',
 'bold_tip' => 'Tučny tekst',
@@ -821,9 +842,7 @@ Móžno, zo je so přesunył abo zhašał, mjeztym zo sej wobhladuješ stronu.',
 'loginreqlink' => 'přizjewić',
 'loginreqpagetext' => 'Dyrbiš so $1, zo by strony čitać móhł.',
 'accmailtitle' => 'Hesło bu pósłane.',
-'accmailtext' => "Připadnje spłodźene hesło za [[User talk:$1|$1]] bu do $2 pósłane.
-
-Hesło za tute nowe konto da so na stronje ''[[Special:ChangePassword|hesło změnić]]'' při přizjewjenju změnić.",
+'accmailtext' => "Připadnje spłodźene hesło za [[User talk:$1|$1]] bu na $2 pósłane. Daj so na stronje ''[[Special:ChangePassword|hesło změnić]]'' při přizjewjenju změnić.",
 'newarticle' => '(Nowy)',
 'newarticletext' => 'Sy wotkaz k stronje slědował, kotraž hišće njeeksistuje. Zo by stronu wutworił, wupjelń slědowace tekstowe polo (hlej [[{{MediaWiki:Helppage}}|stronu pomocy]] za dalše informacije). Jeli sy zmylnje tu, klikń prosće na tłóčatko <b>Wróćo</b> we swojim wobhladowaku.',
 'anontalkpagetext' => "---- ''To je diskusijna strona za anonymneho wužiwarja, kiž hišće konto wutworił njeje abo je njewužiwa. Dyrbimy tohodla numerisku IP-adresu wužiwać, zo bychmy jeho/ju identifikowali. Tajka IP-adresa hodźi so wot wjacorych wužiwarjow zhromadnje wužiwać. Jeli sy anonymny wužiwar a měniš, zo buchu irelewantne komentary k tebi pósłane, [[Special:UserLogin/signup|wutwor prošu konto]] abo [[Special:UserLogin|přizjew so]], zo by přichodnu šmjatańcu z anonymnymi wužiwarjemi wobešoł.''",
@@ -1059,18 +1078,19 @@ 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 tuteje wersije schować',
+'revdelete-hide-text' => 'Tekst wersije',
 'revdelete-hide-image' => 'Wobsah wobraza schować',
 'revdelete-hide-name' => 'Akciju a cil schować',
-'revdelete-hide-comment' => 'Zjeće schować',
-'revdelete-hide-user' => 'Wužiwarske mjeno/IP-adresu schować',
+'revdelete-hide-comment' => 'Zjeće změnow',
+'revdelete-hide-user' => 'Mjeno/IP-adresa wobdźěłarja',
 'revdelete-hide-restricted' => 'Daty wot administratorow kaž tež te druhich wužiwarjow potłóčić',
 'revdelete-radio-same' => '(njezměnić)',
-'revdelete-radio-set' => 'Haj',
-'revdelete-radio-unset' => '',
+'revdelete-radio-set' => 'Schowany',
+'revdelete-radio-unset' => 'Widźomny',
 'revdelete-suppress' => 'Přičinu wušmórnjenja tež za administratorow schować',
 'revdelete-unsuppress' => 'Wobmjezowanja za wobnowjene wersije zběhnyć',
 'revdelete-log' => 'Přičina:',
@@ -1150,6 +1170,7 @@ Zawěsć, zo tuta změna stawiznisku kontinuitu strony wobchowuje.',
 'compareselectedversions' => 'Wubranej wersiji přirunać',
 'showhideselectedversions' => 'Wubrane wersije pokazać/schować',
 'editundo' => 'cofnyć',
+'diff-empty' => '(Žadyn rozdźěl)',
 'diff-multi' => '({{PLURAL:$1|Jedna mjezywersija|$1 mjezywersiji|$1 mjezywersije|$1 mjezywersijow}} wot {{PLURAL:$2|jednoho wužiwarja|$2 wužiwarjow|$2 wužiwarjow|$2 wužiwarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Jedna mjezywersija|$1 mjezywersiji|$1 mjezywersije|$1 mjezywersijow}} wot wjace hač {{PLURAL:$2|jednoho wužiwarja|$2 wužiwarjow|$2 wužiwarjow|$2 wužiwarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
 'difference-missing-revision' => '{{PLURAL:$2|Jedna wersija|$2 wersiji|$2 wersije|$2 wersijow}} tutoho rozdźěla ($1) {{PLURAL:$2|njeje so namakała|njejstej so namakałoj|njejsu namakali|njeje so namakało}}.
@@ -1160,12 +1181,8 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 # Search results
 'searchresults' => 'Pytanske wuslědki',
 'searchresults-title' => 'Pytanske wuslědki za "$1"',
-'searchresulttext' => 'Za dalše informacije wo pytanju {{GRAMMAR:genitiw|{{SITENAME}}}}, hlej [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Sy za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|wšěmi stronami, kotrež započinaja so z "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|wšěmi stronami, kotrež na "$1" wotkazuja]]) pytal.',
-'searchsubtitleinvalid' => 'Sy naprašowanje za „$1“ stajił.',
 'toomanymatches' => 'Přewjele pytanskich wuslědkow, prošu spytaj druhe wotprašenje.',
 'titlematches' => 'Strony z wotpowědowacym titulom',
-'notitlematches' => 'Žane strony z wotpowědowacym titulom',
 'textmatches' => 'Strony z wotpowědowacym tekstom',
 'notextmatches' => 'Žane strony z wotpowědowacym tekstom',
 'prevn' => '{{PLURAL:$1|předchadny $1|předchadnej $1|předchadne $1|předchadnych $1}}',
@@ -1174,10 +1191,8 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'nextn-title' => '{{PLURAL:$1|Přichodny wuslědk|Přichodnej $1 wuslědkaj|Přichodne $1 wuslědki|Přichodnych $1 wuslědkow}}',
 'shown-title' => '$1 {{PLURAL:$1|wuslědk|wuslědkaj|wuslědki|wuslědkow}} na stronu pokazać',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) pokazać',
-'searchmenu-legend' => 'Pytanske opcije',
 'searchmenu-exists' => "'''Je strona z mjenom \"[[\$1]]\" na tutym wikiju'''",
 'searchmenu-new' => "'''Wutwor stronu \"[[:\$1|\$1]]\" na tutym wikiju!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Strony z tutym prefiksom přepytać]]',
 'searchprofile-articles' => 'Wobsahowe strony',
 'searchprofile-project' => 'Pomoc a projektowe strony',
 'searchprofile-images' => 'Multimedia',
@@ -1205,14 +1220,10 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'showingresults' => "Deleka so hač {{PLURAL:$1|'''1''' wuslědk pokazuje|'''$1''' wuslědkaj pokazujetej|'''$1''' wuslědki pokazuja|'''$1''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
 'showingresultsnum' => "Deleka so {{PLURAL:$3|'''1''' wuslědk pokazuje|'''$3''' wuslědkaj pokazujetej|'''$3''' wuslědki pokazuja|'''$3''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
-'nonefound' => "'''Kedźbu''': Jenož někotre mjenowe rumy pytaja so po standardźe.
-Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (inkluziwnje diskusijne strony, předłohi atd.) pytał abu wužij požadany mjenowy rum jako prefiks.",
 'search-nonefound' => 'Njebuchu wuslědki namakane, kotrež naprašowanju wotpowěduja.',
-'powersearch' => 'Pytać',
 'powersearch-legend' => 'Rozšěrjene pytanje',
 'powersearch-ns' => 'W mjenowych rumach pytać:',
 'powersearch-redir' => 'Daleposrědkowanja nalistować',
-'powersearch-field' => 'Pytać za:',
 'powersearch-togglelabel' => 'Kontrolować:',
 'powersearch-toggleall' => 'Wšě',
 'powersearch-togglenone' => 'Žadyn',
@@ -1224,8 +1235,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',
-'prefsnologintext' => 'Dyrbiš <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} přizjewjeny]</span>  być, zo by móhł nastajenja postajić.',
+'prefsnologintext2' => 'Dyrbiš so $1, zo by wužiwarske nastajenja postajił.',
 'changepassword' => 'Hesło změnić',
 'prefs-skin' => 'Drasta',
 'skin-preview' => 'Přehlad',
@@ -1249,8 +1259,7 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'prefs-email' => 'E-mejlowe opcije',
 'prefs-rendering' => 'Napohlad',
 'saveprefs' => 'Składować',
-'resetprefs' => 'Njeskładowane změny zaćisnyć',
-'restoreprefs' => 'Wšě standardne nastajenja wobnowić',
+'restoreprefs' => 'Wšě standardne nastajenja wobnowić (w druhich wotrězkach)',
 'prefs-editing' => 'Wobdźěłowanje',
 'rows' => 'Rjadki:',
 'columns' => 'Stołpiki:',
@@ -1262,12 +1271,14 @@ 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:',
 'timezoneuseserverdefault' => 'Wikijowy standard serwera wužiwać ($1)',
 'timezoneuseoffset' => 'Druhe (pódaj wotchilenje)',
-'timezoneoffset' => 'Rozdźěl¹:',
 'servertime' => 'Čas serwera:',
 'guesstimezone' => 'Z wobhladowaka přewzać',
 'timezoneregion-africa' => 'Afrika',
@@ -1306,11 +1317,13 @@ Móžeš tutu stronu wužiwać, zo by swoje nastajenja na standardne hódnoty sy
 'badsig' => 'Njepłaćiwa signatura, prošu HTML přepruwować.',
 'badsiglength' => 'Twoja signatura je předołha.
 Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} dołha być.',
-'yourgender' => 'Splah:',
-'gender-unknown' => 'Njepodaty',
-'gender-male' => 'Muski',
-'gender-female' => 'Žónski',
-'prefs-help-gender' => 'Opcionalny: wužiwa so za po splahu specifiske narěčenje přez softwaru. Tuta informacija budźe zjawna.',
+'yourgender' => 'Što chceš podać?',
+'gender-unknown' => 'Nochcu ničo wo tym podać',
+'gender-male' => 'Wón wobdźěłuje wikistrony',
+'gender-female' => 'Wona wobdźěłuje wikistrony',
+'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ł.',
@@ -1321,7 +1334,7 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'prefs-signature' => 'Podpis',
 'prefs-dateformat' => 'Datumowy format',
 'prefs-timeoffset' => 'Časowe wotchilenje',
-'prefs-advancedediting' => 'Powšitkowny',
+'prefs-advancedediting' => 'Powšitkowne nastajenja',
 'prefs-editor' => 'Editor',
 'prefs-preview' => 'Přehlad',
 'prefs-advancedrc' => 'Rozšěrjene opcije',
@@ -1331,7 +1344,9 @@ 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.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Zda so, zo e-mejlowa adresa je płaćiwa',
@@ -1355,10 +1370,10 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'userrights-no-interwiki' => 'Nimaš prawo wužiwarske prawa w druhich wikijach změnić.',
 'userrights-nodatabase' => 'Datowa banka $1 njeeksistuje abo lokalna njeje.',
 'userrights-nologin' => 'Dyrbiš so z admininstratorowym kontom [[Special:UserLogin|přizjewić]], zo by wužiwarske prawa změnił.',
-'userrights-notallowed' => 'Twoje konto nima trěbne prawa, zo by wužiwarske prawa přidźěliło abo zebrało.',
+'userrights-notallowed' => 'Nimaš trěbne prawa, zo by wužiwarske prawa přidźěliło abo zebrało.',
 'userrights-changeable-col' => 'Skupiny, kotrež móžeš změnić',
 'userrights-unchangeable-col' => 'Skupiny, kotrež njemóžeš změnić',
-'userrights-conflict' => 'Konflikt wužiwarskich prawow! Prošu čiń swoje změny hišće raz.',
+'userrights-conflict' => 'Konflikt změnow wužiwarskich prawow! Prošu přepruwuj a wobkruć swoje změny.',
 'userrights-removed-self' => 'Sy swoje prawa wuspěšnje wotstronił. Tohodla nimaš hižo přistup na tutu stronu měć.',
 
 # Groups
@@ -1403,7 +1418,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ć',
@@ -1424,7 +1439,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ć',
@@ -1489,8 +1504,8 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'action-block' => 'Wobdźěłanju přez wužiwarja zadźěwać',
 'action-protect' => 'škitowe runiny za tutu stronu změnić',
 'action-rollback' => 'Změny poslednjeho wužiwarja, kiž je wěstu stronu wobdźěłał, spěšnje wróćo stajić',
-'action-import' => 'Tutu stronu z druheho wikija importować',
-'action-importupload' => 'Tutu stronu z datajoweho nahraća importować',
+'action-import' => 'Strony z druheho wikija importować',
+'action-importupload' => 'Strony z datajoweho nahraća importować',
 'action-patrol' => 'Změny druhich wužiwarjiw jako dohladowane markować',
 'action-autopatrol' => 'twoju změnu jako dohladowanu markować dać',
 'action-unwatchedpages' => 'lisćinu njewobkedźbowanych stronow zwobraznić',
@@ -1506,6 +1521,8 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|wot poslednjeho wopyta}}',
+'enhancedrc-history' => 'historija',
 'recentchanges' => 'Aktualne změny',
 'recentchanges-legend' => 'Opcije aktualnych změnow',
 'recentchanges-summary' => 'Na tutej stronje móžeš najaktualniše změny w {{GRAMMAR:lokatiw|{{SITENAME}}}} wobkedźbować.',
@@ -1515,6 +1532,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',
@@ -1538,7 +1558,7 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'rc-change-size' => '$1 {{PLURAL:$1|bajt|bajtaj|bajty|bajtow}}',
 'rc-change-size-new' => '$1 {{PLURAL:$1|bajt|bajtaj|bajty|bajtow}} po změnje',
 'newsectionsummary' => 'Nowy wotrězk: /* $1 */',
-'rc-enhanced-expand' => 'Podrobnosće pokazać (wužaduje sej JavaScript)',
+'rc-enhanced-expand' => 'Podrobnosće pokazać',
 'rc-enhanced-hide' => 'Podrobnosće schować',
 'rc-old-title' => 'prěnjotnje wutworjeny jako "$1"',
 
@@ -1799,8 +1819,7 @@ Za optimalnu wěstotu je img_auth.php znjemóžnjeny.',
 'upload_source_file' => ' (dataja na twojim ličaku)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Tuta specialna strona pokazuje wšě nahrate dataje.
-Jeli so po wužiwarju filtruje, pokazuja so jenož dataje, při kotrychž tón wužiwar je najnowšu wersiju nahrał.',
+'listfiles-summary' => 'Tuta specialna strona pokazuje wšě nahrate dataje.',
 'listfiles_search_for' => 'Za mjenom wobraza pytać:',
 'imgfile' => 'dataja',
 'listfiles' => 'Lisćina datajow',
@@ -1811,6 +1830,10 @@ Jeli so po wužiwarju filtruje, pokazuja so jenož dataje, při kotrychž tón w
 'listfiles_size' => 'wulkosć (byte)',
 'listfiles_description' => 'wopisanje',
 'listfiles_count' => 'Wersije',
+'listfiles-show-all' => 'Stare wersije wobrazow zapřijeć',
+'listfiles-latestversion' => 'Aktualna wersija',
+'listfiles-latestversion-yes' => 'Haj',
+'listfiles-latestversion-no' => 'Ně',
 
 # File description page
 'file-anchor-link' => 'Dataja',
@@ -1903,6 +1926,13 @@ Snano chceš wopisanje na jeje [$2 stronje datajoweho wopisanja] wobdźěłać.'
 'randompage' => 'Připadny nastawk',
 'randompage-nopages' => 'W {{PLURAL:$2|slědowacym mjenowym rumje|slědowacymaj mjenowymaj rumomaj|slědowacych mjenowych rumach|slědowacych mjenowych rumach}} žane strony njejsu: $1',
 
+# Random page in category
+'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
 'randomredirect' => 'Připadne daleposrědkowanje',
 'randomredirect-nopages' => 'Žane daleposrědkowanja w mjenowym rumje "$1".',
@@ -1933,6 +1963,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.
@@ -1989,6 +2021,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',
@@ -1996,14 +2029,13 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
 'protectedpages' => 'Škitane strony',
 'protectedpages-indef' => 'Jenož strony z njewobmjezowanym škitom',
 'protectedpages-cascade' => 'Jenož strony z kaskadowym škitom',
-'protectedpagestext' => 'Tuta specialna strona naliči wšě strony, kotrež su přećiwo přesunjenju abo wobdźěłowanju škitane.',
 'protectedpagesempty' => 'Tuchwilu žane.',
 'protectedtitles' => 'Škitane titule',
-'protectedtitlestext' => 'Slědowace titule su přećiwo wutworjenju škitane',
 'protectedtitlesempty' => 'Žane titule njejsu tuchwilu z tutymi parametrami škitane.',
 'listusers' => 'Lisćina wužiwarjow',
 'listusers-editsonly' => 'Jenož wužiwarjow ze změnami pokazać',
 'listusers-creationsort' => 'Po datumje wutworjenja sortěrować',
+'listusers-desc' => 'Po spadowacym porjedźe sortěrować',
 'usereditcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
 'usercreated' => 'je so $1 $2 hodź. {{GENDER:$3|wutworił|wutworiła}}',
 'newpages' => 'Nowe strony',
@@ -2106,7 +2138,8 @@ Znajmjeńša hłowna domena je trěbna, na přikład "*.org".<br />
 # Special:ListGroupRights
 'listgrouprights' => 'Prawa wužiwarskeje skupiny',
 'listgrouprights-summary' => 'Slěduje lisćina wužiwarskich skupinow na tutej wikiju z jich wotpowědnymi přistupnymi prawami. Tu móžeš [[{{MediaWiki:Listgrouprights-helppage}}|dalše informacije]] wo jednotliwych prawach namakać.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Garantowane prawo</span>
+'listgrouprights-key' => 'Legenda:
+* <span class="listgrouprights-granted">Garantowane prawo</span>
 * <span class="listgrouprights-revoked">Wotwołane prawo</span>',
 'listgrouprights-group' => 'Skupina',
 'listgrouprights-rights' => 'Prawa',
@@ -2220,7 +2253,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}}}}
@@ -2263,10 +2296,12 @@ Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wo
 'deletecomment' => 'Přičina:',
 'deleteotherreason' => 'Druha/přidatna přičina:',
 'deletereasonotherlist' => 'Druha přičina',
-'deletereason-dropdown' => '*Zwučene přičiny za wušmórnjenje
+'deletereason-dropdown' => '* Zwučene přičiny za wušmórnjenje
+** Spam
+** Wandalizm
+** Přeńdźenje awtorskeho prawa
 ** Požadanje awtora
-** Zranjenje copyrighta
-** Wandalizm',
+** Defektne dalesposrědkowanje',
 'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
 'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
 'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
@@ -2284,7 +2319,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
@@ -2418,7 +2453,7 @@ $1',
 'contributions' => 'Přinoški {{GENDER:$1|wužiwarja|wužiwarki}}',
 'contributions-title' => 'Wužiwarske přinoški wot „$1“',
 'mycontris' => 'Přinoški',
-'contribsub2' => 'za wužiwarja $1 ($2)',
+'contribsub2' => 'Za {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Žane změny, kotrež podatym kriterijam wotpowěduja.',
 'uctop' => '(aktualny)',
 'month' => 'wot měsaca (a do toho):',
@@ -2869,6 +2904,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ć. */',
@@ -2902,7 +2938,7 @@ $2',
 'spam_blanking' => 'Wšě wersije z wotkazami do $1 so porjedźeja',
 'spam_deleting' => 'Wšě wersije z wotkazami do $1 so zhašeja',
 'simpleantispam-label' => "Kontrola přećiwo spamej.
-Tu '''ničo''' njezapisać!",
+Tu '''NIČO''' njezapisać!",
 
 # Info page
 'pageinfo-title' => 'Informacije za stronu "$1"',
@@ -2916,13 +2952,14 @@ Tu '''ničo''' njezapisać!",
 'pageinfo-length' => 'Dołhosć strony (w bajtach)',
 'pageinfo-article-id' => 'ID strony',
 'pageinfo-language' => 'Rěč wobsaha strony',
-'pageinfo-robot-policy' => 'Status pytawy',
-'pageinfo-robot-index' => 'Indeksujomny',
-'pageinfo-robot-noindex' => 'Njeindeksujomny',
+'pageinfo-content-model' => 'Model wobsaha strony',
+'pageinfo-robot-policy' => 'Indicěrowanje přez roboty',
+'pageinfo-robot-index' => 'Dowoleny',
+'pageinfo-robot-noindex' => 'Zakazany',
 'pageinfo-views' => 'Ličba zwobraznjenjow',
 'pageinfo-watchers' => 'Ličba wobkedźbowarjow strony',
 'pageinfo-few-watchers' => 'Mjenje hač $1 {{PLURAL:$1|wobkedźbowar|wobkedźbowarjej|wobkedźbowarje|wobkedźbowarjow}}',
-'pageinfo-redirects-name' => 'Dalesposrědkowanja k tutej stronje',
+'pageinfo-redirects-name' => 'Ličba dalesposrědkowanjow k tutej stronje',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Podstrony tuteje strony',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|dalesposrědkowanje|dalesposrědkowani|dalesposrědkowanja|dalesposrědkowanjow}}; $3 {{PLURAL:$3|njedalesposrědkowanje|njedalesposrědkowani|njedalesposrědkowanja|njedalesposrědkowanjow}})',
@@ -3002,7 +3039,7 @@ $1',
 'svg-long-desc' => 'SVG-dataja, zakładna wulkosć: $1 × $2 pikselow, datajowa wulkosć: $3',
 'svg-long-desc-animated' => 'Animěrowana SVG-dataja, zakładnej wotměraj $1 × $2 pikselow, datajowa wulkosć: $3',
 'svg-long-error' => 'Njepłaćiwa SVG-dataja: $1',
-'show-big-image' => 'Wersija z wyšim rozeznaćom',
+'show-big-image' => 'Originalna dataja',
 'show-big-image-preview' => 'Wulkosć tutoho přehlada: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Druhe rozeznaće|Druhej rozeznaći|Druhe rozeznaća|Druhe rozeznaća}}: $1.',
 'show-big-image-size' => '$1 × $2 pikselow',
@@ -3261,7 +3298,7 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
 'exif-compression-4' => 'CCITT skupina 4 faksowe kodowanje',
 
 'exif-copyrighted-true' => 'Přez awtorske prawo škitany',
-'exif-copyrighted-false' => 'Zjawnosći přistupny',
+'exif-copyrighted-false' => 'Status awtorskeho prawa njepostajeny',
 
 'exif-unknowndate' => 'Njeznaty datum',
 
@@ -3465,10 +3502,6 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
 'exif-urgency-high' => 'Wysoka ($1)',
 'exif-urgency-other' => 'Swójska priorita ($1)',
 
-# External editor support
-'edit-externally' => 'Dataju z eksternym programom wobdźěłać',
-'edit-externally-help' => '(Hlej [https://www.mediawiki.org/wiki/Manual:External_editors pokiwy za instalaciju] za dalše informacije)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wšě',
 'namespacesall' => 'wšě',
@@ -3517,7 +3550,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
 
@@ -3555,6 +3588,9 @@ Prošu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
 'confirm-unwatch-button' => 'W porjadku',
 'confirm-unwatch-top' => 'Tutu stronu z wobkedźbowankow wotstronić?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← předchadna strona',
 'imgmultipagenext' => 'přichodna strona →',
@@ -3648,6 +3684,7 @@ Móžeš tež [[Special:EditWatchlist|standardnu wobdźěłowansku stronu]] wuž
 'version-license' => 'Licenca',
 'version-poweredby-credits' => "Tutón wiki so wot  '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
 'version-poweredby-others' => 'druzy',
+'version-poweredby-translators' => 'Přełožowarjo na translatewiki.net',
 'version-credits-summary' => 'Dźakujemy so slědowacym wosobam za jich přinoški k [[Special:Version|MediaWiki]]',
 'version-license-info' => 'MediaWiki je swobodna softwara: móžeš ju pod wuměnjenjemi licency GNU General Public License, wozjewjeneje wot załožby Free Software Foundation, rozdźělić a/abo změnić: pak pod wersiju 2 licency pak pod někajkej pozdźišej wersiju.
 
@@ -3664,7 +3701,8 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 # Special:Redirect
 'redirect' => 'Po datajowym mjenje, wužiwarju abo wersijowym ID dale sposrědkować',
 'redirect-legend' => 'Do dataje abo strony dale sposrědkować',
-'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje.',
+'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
+[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Pytać:',
 'redirect-value' => 'Hódnota:',
@@ -3686,10 +3724,9 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 
 # Special:SpecialPages
 'specialpages' => 'Specialne strony',
-'specialpages-note' => '----
-* Normalne specialne strony.
-* <span class="mw-specialpagerestricted">Specialne strony z wobmjezowanym přistupom.</span>
-* <span class="mw-specialpagecached">Specialne strony z pufrowaka (móža zestarjene być).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normalne specialne strony.
+* <span class="mw-specialpagerestricted">Specialne strony z wobmjezowanym přistupom.</span>',
 'specialpages-group-maintenance' => 'Hladanske lisćiny',
 'specialpages-group-other' => 'Druhe specialne strony',
 'specialpages-group-login' => 'Přizjewić/Konto załožić',
@@ -3721,12 +3758,16 @@ 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)',
 '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',
 'tags-display-header' => 'Napohlad na lisćinach změnow',
 'tags-description-header' => 'Dospołne wopisanje woznama',
+'tags-active-header' => 'Aktiwny?',
 'tags-hitcount-header' => 'Změny z tafličkami',
+'tags-active-yes' => 'Haj',
+'tags-active-no' => 'Ně',
 'tags-edit' => 'změnić',
 'tags-hitcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
 
@@ -3747,6 +3788,7 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'dberr-problems' => 'Wodaj! Tute sydło ma techniske ćežkosće.',
 'dberr-again' => 'Počakń někotre mjeńšiny a zaktualizuj stronu.',
 'dberr-info' => '(Njeje móžno ze serwerom datoweje banki zwjazać: $1)',
+'dberr-info-hidden' => '(Kontakt z datobankowym serwerom móžno njeje)',
 'dberr-usegoogle' => 'Mjeztym móžeš z pomocu Google pytać.',
 'dberr-outofdate' => 'Wobkedźbuj, zo jich indeksy našeho wobsaha móhli zestarjene być.',
 'dberr-cachederror' => 'Slědowaca je pufrowana kopija požadaneje strony a móhła zestarjena być.',
@@ -3882,4 +3924,32 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 # Image rotation
 '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',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekundźe|sekundy|sekundow}}',
+'limitreport-ppvisitednodes' => 'Ličba wopytanych sukow preprocesora',
+'limitreport-ppgeneratednodes' => 'Spłodźena ličba sukow preprocesora',
+'limitreport-postexpandincludesize' => 'Wulkosć zapřijimanja po ekspandowanju',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'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..f096fc3 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' ),
@@ -282,7 +282,6 @@ $messages = array(
 'qbedit' => 'Modifye',
 'qbpageoptions' => 'Paj sa a',
 'qbmyoptions' => 'Paj mwen yo',
-'qbspecialpages' => 'Paj espesyal',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -396,8 +395,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',
@@ -482,9 +479,6 @@ Yon lòt moun te gendwa efase l anvan ou.',
 'perfcached' => 'Sa se yon vèsyon ki sòti nan kach sistèm nou an. Li gendwa pa a jou. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Done sa yo sòti nan sistèm kach la, yo gendwa pa a jou. Dènye fwa nou mete yo a jou se te $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Nou pa kapab mete paj sa yo a jou paske fonksyon mizajou dezaktive. Done w ap jwenn pi ba pap rafrechi.',
-'wrong_wfQuery_params' => 'Paramèt sa yo pa bon sou wfQuery()<br />
-Fonksyon : $1<br />
-Demann : $2',
 'viewsource' => 'Wè kòd paj la',
 'actionthrottled' => 'Aksyon sa limite',
 'actionthrottledtext' => 'Nan batay kont pouryèl, aksyon sa ou tapral fè limite nan kantite itilizasyon l pandan yon tan ki kout. Li sanble ou depase kantite sa. Eseye ankò nan kèk minit.',
@@ -865,10 +859,6 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 # Search results
 'searchresults' => 'Rezilta yo pou rechèch la',
 'searchresults-title' => 'Rezilta rechèch yo pou « $1 »',
-'searchresulttext' => 'Pou ou kapab konenn plis sou rechèch nan {{SITENAME}}, gade [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Ou chache « '''[[:$1]]''' » ([[Special:Prefixindex/$1|tout paj yo ki komanse pa« $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tout paj yo ki genyen lyen vè « $1 »]])",
-'searchsubtitleinvalid' => "Ou chache « '''$1''' »",
-'notitlematches' => 'Pa gen paj nan sistèm ki genyen tit ou bay nan rechèch ou an.',
 'notextmatches' => 'Pa genyen pyès tèks nan paj yo ki ap koresponn ak rechèch ou fè a',
 'prevn' => '{{PLURAL:$1|$1}} anvan yo',
 'nextn' => '{{PLURAL:$1|$1}} swivan yo',
@@ -881,13 +871,9 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 'search-interwiki-caption' => 'Pwojè frè, ki ansanm oubyen ki ap deplwaye ansanm',
 'search-interwiki-default' => 'Rezilta yo pou $1 :',
 'search-interwiki-more' => '(plis)',
-'nonefound' => "'''Remak''' : sèl kèk espas non chache nan sityasyon nòmal.
-Eseye mete prefiks ''all:'' devan tèm rechèche ou an pou chache nan tout kontni a (sa conprann paj diskisyon yo, modèl yo, etc.) oubyen itilize espas non ou ta renmen pou prefiks.",
-'powersearch' => 'Fouye fon',
 'powersearch-legend' => 'Fouye fon',
 'powersearch-ns' => 'Chache nan espas non sa yo:',
 'powersearch-redir' => 'Montre redireksyon yo',
-'powersearch-field' => 'Chache',
 
 # Preferences page
 'preferences' => 'Preferans yo',
@@ -1338,10 +1324,6 @@ Nenpòt lòt lyen nan menm liy nan konsidere kòm yon eksèpsyon, i.e. paj kote
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Modifye fichye sa a nan aplikasyon pa ou (ki pa nan sistèm an, sou machin ou pa egzanp).',
-'edit-externally-help' => '(Gade [https://www.mediawiki.org/wiki/Manual:External_editors komand ak enstriksyon yo] pou plis enfòmasyon oubyen pou konnen plis)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tout',
 'namespacesall' => 'Tout',
index f2e50cd..e23e532 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' ),
@@ -472,7 +471,6 @@ $messages = array(
 'qbedit' => 'Szerkesztés',
 'qbpageoptions' => 'Lapbeállítások',
 'qbmyoptions' => 'Lapjaim',
-'qbspecialpages' => 'Speciális lapok',
 'faq' => 'GyIK',
 'faqpage' => 'Project:GyIK',
 
@@ -588,8 +586,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',
@@ -690,9 +686,6 @@ Nem lett magyarázat csatolva.',
 'perfcached' => "Az alábbi adatok gyorsítótárból (''cache''-ből) származnak, és ezért lehetséges, hogy nem a legfrissebb változatot mutatják. Legfeljebb {{PLURAL:$1|egy|$1 }} eredmény áll rendelkezésre a gyorsítótárban.",
 'perfcachedts' => "Az alábbi adatok gyorsítótárból (''cache''-ből) származnak, legutóbbi frissítésük ideje $1. Legfeljebb {{PLURAL:$4|egy|$4}} eredmény áll rendelkezésre a gyorsítótárban.",
 'querypage-no-updates' => 'Az oldal frissítése jelenleg le van tiltva. Az itt szereplő adatok nem frissülnek azonnal.',
-'wrong_wfQuery_params' => 'A wfQuery() függvény paraméterei hibásak<br />
-Függvény: $1<br />
-Lekérdezés: $2',
 'viewsource' => 'Lapforrás',
 'viewsource-title' => '$1 forrásának megtekintése',
 'actionthrottled' => 'Művelet megszakítva',
@@ -1342,12 +1335,8 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 # Search results
 'searchresults' => 'A keresés eredménye',
 'searchresults-title' => 'Keresési eredmények: „$1”',
-'searchresulttext' => 'A keresésről a [[{{MediaWiki:Helppage}}|{{int:help}}]] lapon találhatsz további információkat.',
-'searchsubtitle' => 'A keresett kifejezés: „[[:$1]]” ([[Special:Prefixindex/$1|minden, „$1” előtaggal kezdődő lap]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|a(z) „$1” lapra hivatkozó lapok]])',
-'searchsubtitleinvalid' => "A keresett kulcsszó: „'''$1'''”",
 'toomanymatches' => 'Túl sok találat van, próbálkozz egy másik lekérdezéssel',
 'titlematches' => 'Címbeli egyezések',
-'notitlematches' => 'Nincs megegyező cím',
 'textmatches' => 'Szövegbeli egyezések',
 'notextmatches' => 'Nincsenek szövegbeli egyezések',
 'prevn' => 'előző {{PLURAL:$1|egy|$1}}',
@@ -1356,10 +1345,8 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'nextn-title' => 'Következő {{PLURAL:$1|egy|$1}} találat',
 'shown-title' => '{{PLURAL:$1|Egy|$1}} találat laponként',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Keresési beállítások',
 'searchmenu-exists' => "'''A wikin már van „[[:$1]]” nevű lap'''",
 'searchmenu-new' => "'''Hozd létre a(z) „[[:$1]]” nevű lapot ezen a wikin!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ilyen előtagú lapok listázása]]',
 'searchprofile-articles' => 'Tartalmi oldalak',
 'searchprofile-project' => 'Segítség- és projektlapok',
 'searchprofile-images' => 'Médiafájlok',
@@ -1387,13 +1374,10 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'showingresults' => "Lent '''{{PLURAL:$1|egy|$1}}''' találat látható, az eleje '''$2'''.",
 'showingresultsnum' => "Lent '''{{PLURAL:$3|egy|$3}}''' találat látható, az eleje '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1'''|'''$1 - $2'''}}. találat a(z) '''$4''' kifejezésre (összesen: '''$3''')",
-'nonefound' => "'''Megjegyzés''': Alapértelmezésben a keresés nem terjed ki minden névtérre. Ha az összes névtérben keresni akarsz, írd az ''all:'' karaktersorozatot a keresett kifejezés elé.",
 'search-nonefound' => 'Nincs egyezés a megadott szöveggel.',
-'powersearch' => 'Részletes keresés',
 'powersearch-legend' => 'Részletes keresés',
 'powersearch-ns' => 'Névterek:',
 'powersearch-redir' => 'Átirányítások megjelenítése',
-'powersearch-field' => 'Keresett szöveg:',
 'powersearch-togglelabel' => 'Megjelölés:',
 'powersearch-toggleall' => 'Mind',
 'powersearch-togglenone' => 'Egyik sem',
@@ -1405,8 +1389,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',
-'prefsnologintext' => 'Saját beállításaid elmentéséhez <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} be kell jelentkezned.] </span>',
 'changepassword' => 'Jelszócsere',
 'prefs-skin' => 'Felület',
 'skin-preview' => 'előnézet',
@@ -1430,7 +1412,6 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'prefs-email' => 'Levelezés',
 'prefs-rendering' => 'Lapok megjelenítése',
 'saveprefs' => 'Mentés',
-'resetprefs' => 'Alaphelyzet',
 'restoreprefs' => 'A beállítások alaphelyzetbe állítása',
 'prefs-editing' => 'Szerkesztés',
 'rows' => 'Sor',
@@ -1451,7 +1432,6 @@ Aki ismeri, meg tudja nézni, milyen lapokat figyelsz, úgyhogy ne oszdd meg má
 'localtime' => 'Helyi idő:',
 'timezoneuseserverdefault' => 'Az alapértelmezett beállítás használata ($1)',
 'timezoneuseoffset' => 'Egyéb (eltérés megadása)',
-'timezoneoffset' => 'Eltérés¹:',
 'servertime' => 'A kiszolgáló ideje:',
 'guesstimezone' => 'Töltse ki a böngésző',
 'timezoneregion-africa' => 'Afrika',
@@ -1687,6 +1667,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',
@@ -2162,10 +2143,8 @@ Az <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.',
 'protectedpages' => 'Védett lapok',
 'protectedpages-indef' => 'Csak a meghatározatlan idejű védelmek',
 'protectedpages-cascade' => 'Csak a kaszkádvédelmek',
-'protectedpagestext' => 'A következő lapok átnevezés vagy szerkesztés ellen védettek',
 'protectedpagesempty' => 'Jelenleg nincsenek ilyen paraméterekkel védett lapok.',
 'protectedtitles' => 'Létrehozás ellen védett lapok',
-'protectedtitlestext' => 'A következő lapok védve vannak a létrehozás ellen',
 'protectedtitlesempty' => 'Jelenleg nincsenek ilyen típusú védett lapok.',
 'listusers' => 'Szerkesztők',
 'listusers-editsonly' => 'Csak a szerkesztéssel rendelkező szerkesztők mutatása',
@@ -2297,7 +2276,7 @@ Az egyes csoportokról további információt [[{{MediaWiki:Listgrouprights-help
 'emailuser-title-target' => 'E-mail küldése ennek a felhasználónak: $1',
 'emailuser-title-notarget' => 'E-mail küldése a felhasználónak',
 'emailpage' => 'E-mail küldése',
-'emailpagetext' => '{{GENDER:$1|user}} nevű szerkesztő e-mail-címére ezen űrlap kitöltésével üzenetet tudsz küldeni.
+'emailpagetext' => '{{GENDER:$1|felhasználó}}nevű szerkesztő e-mail-címére ezen űrlap kitöltésével üzenetet tudsz küldeni.
 Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címed fog szerepelni, így a címzett közvetlenül tud majd válaszolni neked.',
 'usermailererror' => 'A levélküldő objektum hibával tért vissza:',
 'defemailsubject' => '{{SITENAME}} e-mail a következő felhasználótól: „$1”',
@@ -2317,10 +2296,10 @@ Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címe
 'emailsubject' => 'Tárgy:',
 'emailmessage' => 'Üzenet:',
 'emailsend' => 'Küldés',
-'emailccme' => 'Az üzenet másolatát küldje el nekem is e-mailben.',
+'emailccme' => 'Az üzenet másolatát küldje el nekem is e-mailben',
 'emailccsubject' => '$1 szerkesztőnek küldött $2 tárgyú üzenet másolata',
 'emailsent' => 'E-mail elküldve',
-'emailsenttext' => 'Az e-mail üzenetedet elküldtem.',
+'emailsenttext' => 'E-mail üzenetedet elküldtük.',
 'emailuserfooter' => 'Ezt az e-mailt $1 küldte $2 számára, az „E-mail küldése ezen szerkesztőnek” funkció használatával a(z) {{SITENAME}} wikin.',
 
 # User Messenger
@@ -3663,10 +3642,6 @@ míg a többi elem a táblázat összecsukása után alapértelmezett esetben re
 'exif-urgency-high' => 'Magas ($1)',
 'exif-urgency-other' => 'Egyedi prioritás ($1)',
 
-# External editor support
-'edit-externally' => 'A fájl szerkesztése külső alkalmazással',
-'edit-externally-help' => '(Lásd a [https://www.mediawiki.org/wiki/Manual:External_editors használati utasítást] (angolul) a beállításához.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'bármikor',
 'namespacesall' => 'Összes',
@@ -3877,8 +3852,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 
 # Special:SpecialPages
 'specialpages' => 'Speciális lapok',
-'specialpages-note' => '----
-* Mindenki számára elérhető speciális lapok.
+'specialpages-note' => '* Mindenki számára elérhető speciális lapok.
 * <span class="mw-specialpagerestricted">Korlátozott hozzáférésű speciális lapok.</span>',
 'specialpages-group-maintenance' => 'Állapotjelentések',
 'specialpages-group-other' => 'További speciális lapok',
@@ -4070,4 +4044,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 b4c8d97..1e3abdc 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-հասցեի համար',
@@ -430,7 +430,6 @@ $messages = array(
 'qbedit' => 'Խմբագրել',
 'qbpageoptions' => 'Այս էջը',
 'qbmyoptions' => 'Իմ էջերը',
-'qbspecialpages' => 'Սպասարկող էջեր',
 'faq' => 'ՀՏՀ',
 'faqpage' => 'Project:ՀՏՀ',
 
@@ -473,6 +472,7 @@ $messages = array(
 'create-this-page' => 'Ստեղծել այս էջը',
 'delete' => 'Ջնջել',
 'deletethispage' => 'Ջնջել այս էջը',
+'undeletethispage' => 'Վերականգնել այս էջը',
 'undelete_short' => 'Վերականգնել {{PLURAL:$1|մեկ խմբագրում|$1 խմբագրում}}',
 'viewdeleted_short' => 'Դիտել {{PLURAL:$1|ջնջված խմբագրում}}',
 'protect' => 'Պաշտպանել',
@@ -544,14 +544,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 +599,12 @@ $1',
 # General errors
 'error' => 'Սխալ',
 'databaseerror' => 'Տվյալների բազայի սխալ',
+'databaseerror-text' => 'Տվյալների բազայի հարցման սխալ է առաջացել։
+Սա կարող է ծրագրային բագի պատճառով լինել։',
+'databaseerror-textcl' => 'Տվյալների բազայի հարցման սխալ է առաջացել։',
+'databaseerror-query' => 'Հարցում՝ $1',
+'databaseerror-function' => 'Ֆունկցիա՝ $1',
+'databaseerror-error' => 'Սխալ՝ $1',
 'laggedslavemode' => 'Զգուշացում. էջը կարող է չպարունակել վերջին փոփոխությունները։',
 'readonly' => 'Տվյալների բազան կողպված է',
 'enterlockreason' => 'Նշեք կողպման պատճառը և մոտավոր ժամկետը',
@@ -636,10 +641,7 @@ $1',
 'perfcached' => 'Հետևյալ տվյալները վերցված են քեշից և հնարավոր է չարտացոլեն վերջին փոփոխությունները։ Առավելագույն {{PLURAL:$1|արդյունք|$1 արդյունք}} է հասանելի քեշում։',
 'perfcachedts' => 'Հետևյալ տվյալները վերցված են քեշից և վերջին անգամ թարմացվել են $1։ A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Այս էջի փոփոխությունները ներկայումս արգելված են։ Այստեղի տվյալները այժմ չեն թարմացվի։',
-'wrong_wfQuery_params' => 'Անթույլատրելի պարամետրեր wfQuery() ֆունկցիայի համար<br />
-Ֆունկցիա՝ $1<br />
-Հայցում՝ $2',
-'viewsource' => 'Դիտել վիքիկոդերը',
+'viewsource' => 'Դիտել վիքիկոդը',
 'viewsource-title' => 'Դիտել $1 էջի աղբյուրը',
 'actionthrottled' => 'Գործողությունը արգելափակվեց',
 'actionthrottledtext' => 'Որպես հակա-սպամային միջոց, այս գործողության չափից շատ կատարումը կարճ ժամանակահատվածի ընթացքում սահմանափակված է։ Խնդրում ենք փորձել կրկին մի քանի րոպե անց։',
@@ -656,11 +658,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 +682,7 @@ $2',
 'yourname' => 'Մասնակցի անուն՝',
 'userlogin-yourname' => 'Մասնակցային անուն',
 'userlogin-yourname-ph' => 'Մուտքագրեք ձեր մասնակցային անունը',
+'createacct-another-username-ph' => 'Մուտքագրեք մասնակցի անունը',
 'yourpassword' => 'Գաղտնաբառ՝',
 'userlogin-yourpassword' => 'Գաղտնաբառ',
 'userlogin-yourpassword-ph' => 'Մուտքագրեք ձեր գաղտնաբառը',
@@ -706,11 +712,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' => 'Պատճառը՝',
@@ -1159,20 +1167,14 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 # Search results
 'searchresults' => 'Որոնման արդյունքներ',
 'searchresults-title' => '«$1»-ի որոնման արդյունքներ',
-'searchresulttext' => '{{SITENAME}} կայքում որոնման մասին տեղեկությունների համար այցելեք [[{{MediaWiki:Helppage}}|{{int:help}}]] էջը։',
-'searchsubtitle' => "Դուք որոնել եք «'''[[:$1]]'''» ([[Special:Prefixindex/$1|այս անվանմամբ սկսվող էջերը]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|այս անվանվանը հղվող էջերը]])",
-'searchsubtitleinvalid' => 'Դուք որոնել եք «$1»',
 'titlematches' => 'Համընկած հոդվածների անվանումներ',
-'notitlematches' => 'Չկան համընկած հոդվածների անվանումներ',
 'textmatches' => 'Համընկած տեքստերով էջեր',
 'notextmatches' => 'Չկան համընկած տեքստերով էջեր',
 'prevn' => 'նախորդ {{PLURAL:$1|$1}}',
 'nextn' => 'հաջորդ {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Դիտել ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Որոնման ընտրանքներ',
 'searchmenu-exists' => "'''Այս վիքիում, գոյություն ունի \"[[:\$1]]\" անվանումով էջը։'''",
 'searchmenu-new' => "'''Ստեղծե՛լ \"[[:\$1]]\" էջը այս վիքիում'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ցուցադրել այս նախածանցով սկսվող էջերը]]',
 'searchprofile-articles' => 'Հիմնական էջեր',
 'searchprofile-project' => 'Օգնության և նախագծերի էջեր',
 'searchprofile-images' => 'Մուլտիմեդիա',
@@ -1200,13 +1202,10 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'showingresults' => "Ստորև բերված է մինչև {{PLURAL:$1|'''1''' արդյունք|'''$1''' արդյունք}}՝ սկսած №&nbsp;<strong>$2</strong>-ից։",
 'showingresultsnum' => "Ստորև բերված է {{PLURAL:$3|'''1''' արդյունք|'''$3''' արդյունք}}` սկսած №&nbsp;<strong>$2</strong>-ից։",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' արդյունք '''$3'''-ից|'''$1 - $2''' արդյունքներ '''$3'''-ից}}  '''$4'''-ի համար",
-'nonefound' => "'''Ծանուցում'''։ Լռությամբ որոնումը կատարվում է ոչ բոլոր անվանատարածքներում։ Բոլոր անվանատարածքներում որոնելու համար (ներառյալ քննարկման էջերը, կաղապարները և այլն) օգտագործեք ''all:'' նախածանցը կամ նշեք ցանկացած անվանատարածքի անվանումը որպես նախածանց։",
 'search-nonefound' => 'Որոնմանը համապատասխանող արդյունքներ չեն գտնվել։',
-'powersearch' => 'Ընդլայնված որոնում',
 'powersearch-legend' => 'Ընդլայնված որոնում',
 'powersearch-ns' => 'Որոնել անվանատարածքում.',
 'powersearch-redir' => 'Ցույց տալ վերահղումները',
-'powersearch-field' => 'Որոնել',
 'powersearch-togglelabel' => 'Նշել․',
 'powersearch-toggleall' => 'Բոլորը',
 'powersearch-togglenone' => 'Ոչ մեկը',
@@ -1217,12 +1216,12 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'preferences' => 'Նախընտրություններ',
 'mypreferences' => 'Նախընտրություններ',
 'prefs-edits' => 'Խմբագրումների քանակը.',
-'prefsnologin' => 'Դուք չեք մտել համակարգ',
-'prefsnologintext' => 'Մասնակցային նախընտրությունները փոփոխելու համար անհրաժեշտ է <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} մտնել համակարգ]</span>։',
+'prefsnologintext2' => 'Նախընտրությունները փոփոխելու համար անհրաժեշտ է $1։',
 'changepassword' => 'Փոխել գաղտնաբառը',
 'prefs-skin' => 'Տեսք',
 'skin-preview' => 'նախադիտել',
 'datedefault' => 'Առանց նախընտրության',
+'prefs-beta' => 'Փորձնական հնարավորություններ',
 'prefs-datetime' => 'Օր ու ժամ',
 'prefs-personal' => 'Անձնական',
 'prefs-rc' => 'Վերջին փոփոխություններ',
@@ -1239,7 +1238,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'prefs-email' => 'Էլ-հասցեի ընտրանքներ',
 'prefs-rendering' => 'Արտաքին տեսք',
 'saveprefs' => 'Հիշել',
-'resetprefs' => 'Անտեսել փոփոխությունները',
 'restoreprefs' => 'Զրոյացնել, բերելով իլռելայն նախընտրանքներին',
 'prefs-editing' => 'Խմբագրում',
 'rows' => 'Տողեր`',
@@ -1256,7 +1254,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'localtime' => 'Տեղական ժամանակ.',
 'timezoneuseserverdefault' => 'Օգտագործել սերվերի ժամանակը',
 'timezoneuseoffset' => 'Այլ (նշեք տարբերությունը)',
-'timezoneoffset' => 'Տարբերություն¹.',
 'servertime' => 'Սերվերի ժամանակ.',
 'guesstimezone' => 'Լրացնել բրաուզերից',
 'timezoneregion-africa' => 'Աֆրիկա',
@@ -1403,6 +1400,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',
@@ -1693,7 +1691,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'deadendpages' => 'Հղումներ չպարունակող էջեր',
 'deadendpagestext' => 'Հետևյալ էջերը չունեն հղումներ վիքիի այլ էջերին։',
 'protectedpages' => 'Պաշտպանված էջեր',
-'protectedpagestext' => 'Հետևյալ էջերը պաշտպանված են վերանվանումից կամ տեղափոխումից։',
 'protectedpagesempty' => 'Ներկայումս չկան պաշտպանված էջեր նշված պարամետրերով։',
 'protectedtitles' => 'Պաշտպանված անվանումներ',
 'listusers' => 'Մասնակիցների ցանկ',
@@ -2564,10 +2561,6 @@ $1',
 'exif-urgency-low' => 'Թույլ ($1)',
 'exif-urgency-high' => 'Ուժեղ ($1)',
 
-# External editor support
-'edit-externally' => 'Խմբագրել այս նիշքը արտաքին խմբագրիչով',
-'edit-externally-help' => '(Մանրամասնությունների համար տես [https://www.mediawiki.org/wiki/Manual:External_editors տեղակայման հրահանգները])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'բոլոր',
 'namespacesall' => 'բոլոր',
@@ -2692,6 +2685,7 @@ $3
 
 # Special:Version
 'version' => 'ՄեդիաՎիքի տարբերակը',
+'version-poweredby-credits' => "Այս վիքին աշխատում է '''[https://www.mediawiki.org/ MediaWiki]'''֊ով, copyright © 2001-$1 $2։",
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Փնտրել կրկնօրինակ պատկերներ',
@@ -2706,9 +2700,8 @@ $3
 
 # Special:SpecialPages
 'specialpages' => 'Սպասարկող էջեր',
-'specialpages-note' => '----
-* Հասարակ հատուկ էջեր։
-* <strong class="mw-specialpagerestricted">Սահմանափակված հատուկ էջեր։</strong>',
+'specialpages-note' => '* Հասարակ հատուկ էջեր։
+* <span class="mw-specialpagerestricted">Սահմանափակված հատուկ էջեր։</span>',
 'specialpages-group-maintenance' => 'Տեխնիկական սպասարկման տեղեկատուներ',
 'specialpages-group-other' => 'Այլ հատուկ էջեր',
 'specialpages-group-login' => 'Մտնել / Գրանցվել',
@@ -2793,4 +2786,7 @@ $3
 'duration-centuries' => '$1 {{PLURAL:$1|դար}}',
 'duration-millennia' => '$1 {{PLURAL:$1|հազարամյակ}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Կաղապարների ընդարձակում',
+
 );
index 9a9fc83..839bf3e 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' ),
@@ -303,7 +303,6 @@ $messages = array(
 'qbedit' => 'Modificar',
 'qbpageoptions' => 'Iste pagina',
 'qbmyoptions' => 'Mi paginas',
-'qbspecialpages' => 'Paginas special',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -419,12 +418,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',
@@ -523,9 +520,6 @@ Es possibile que illo contine un o plure characteres que non pote esser usate in
 'perfcached' => 'Le sequente datos esseva recuperate del cache e possibilemente non es actual. Un maximo de {{PLURAL:$1|un resultato|$1 resultatos}} es disponibile in le cache.',
 'perfcachedts' => 'Le sequente datos esseva recuperate del cache e ha essite actualisate le $3 a $4. Un maximo de {{PLURAL:$4|un resultato|$4 resultatos}} es disponibile in le cache.',
 'querypage-no-updates' => 'Le actualisationes pro iste pagina es disactivate. Pro le momento, le datos hic non se cambiara.',
-'wrong_wfQuery_params' => 'Parametros incorrecte a wfQuery()<br />
-Function: $1<br />
-Consulta: $2',
 'viewsource' => 'Vider codice-fonte',
 'viewsource-title' => 'Le texto fonte de $1',
 'actionthrottled' => 'Action limitate',
@@ -556,7 +550,8 @@ Le administrator qui lo blocava offereva iste explication: "$3".',
 'invalidtitle-knownnamespace' => 'Titulo invalide con spatio de nomines "$2" e texto "$3"',
 'invalidtitle-unknownnamespace' => 'Titulo invalide con spatio de nomines incognite $1 e texto "$2"',
 'exception-nologin' => 'Non identificate',
-'exception-nologin-text' => 'Iste pagina o action necessita que tu aperi session in iste wiki.',
+'exception-nologin-text' => '[[Special:Userlogin|Aperi session]] pro poter acceder a iste pagina o action.',
+'exception-nologin-text-manual' => 'Es necessari $1 pro poter acceder a iste pagina o action.',
 
 # Virus scanner
 'virus-badscanner' => "Configuration incorrecte: programma antivirus non cognoscite: ''$1''",
@@ -875,7 +870,7 @@ Per favor entra e valida tu adresse de e-mail per medio de tu [[Special:Preferen
 'nosuchsectiontext' => 'Tu ha tentate modificar un section que non existe.
 Illo pote haber essite displaciate o delite durante que tu legeva le pagina.',
 'loginreqtitle' => 'Identification necessari',
-'loginreqlink' => 'aperir un session',
+'loginreqlink' => 'aperir session',
 'loginreqpagetext' => 'Tu debe $1 pro poter vider altere paginas.',
 'accmailtitle' => 'Contrasigno inviate.',
 'accmailtext' => "Un contrasigno generate aleatorimente pro [[User talk:$1|$1]] ha essite inviate a $2. Illo pote esser cambiate in le pagina ''[[Special:ChangePassword|Cambiar contrasigno]]'' post que tu ha aperite un session.",
@@ -989,7 +984,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:",
@@ -1242,12 +1237,8 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 # Search results
 'searchresults' => 'Resultatos del recerca',
 'searchresults-title' => 'Resultatos del recerca de "$1"',
-'searchresulttext' => 'Pro plus informationes super le recerca in {{SITENAME}}, vide [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tu cercava \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tote le paginas que comencia con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tote le paginas con ligamines a "$1"]])',
-'searchsubtitleinvalid' => "Tu cercava '''$1'''",
 'toomanymatches' => 'Se retornava troppo de resultatos. Per favor prova un altere consulta.',
 'titlematches' => 'Correspondentias in le titulos de paginas',
-'notitlematches' => 'Nulle correspondentias in le titulos de paginas',
 'textmatches' => 'Resultatos in le texto de paginas',
 'notextmatches' => 'Nulle resultato in le texto de paginas',
 'prevn' => '$1 {{PLURAL:$1|precedente|precedentes}}',
@@ -1256,10 +1247,8 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'nextn-title' => '$1 {{PLURAL:$1|resultato|resultatos}} sequente',
 'shown-title' => 'Monstrar $1 {{PLURAL:$1|resultato|resultatos}} per pagina',
 'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Optiones de recerca',
 'searchmenu-exists' => "'''Existe un pagina nominate \"[[\$1]]\" in iste wiki'''",
 'searchmenu-new' => "'''Crea le pagina \"[[:\$1]]\" in iste wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navigar per le paginas con iste prefixo]]',
 'searchprofile-articles' => 'Paginas de contento',
 'searchprofile-project' => 'Paginas de adjuta e del projecto',
 'searchprofile-images' => 'Multimedia',
@@ -1287,14 +1276,10 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'showingresults' => "Infra se monstra non plus de {{PLURAL:$1|'''1''' resultato|'''$1''' resultatos}} a partir del numero '''$2'''.",
 'showingresultsnum' => "Infra se monstra {{PLURAL:$3|'''1''' resultato|'''$3''' resultatos}} a partir del numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultato '''$1'''|Resultatos '''$1 - $2'''}} de '''$3''' pro '''$4'''",
-'nonefound' => "'''Nota:''' Normalmente, es cercate solmente in alcun spatios de nomines.
-Tenta prefixar tu consulta con ''all:'' pro cercar in tote le contento (includente paginas de discussion, patronos, etc.), o usa le spatio de nomines desirate como prefixo.",
 'search-nonefound' => 'Le recerca non ha producite resultatos.',
-'powersearch' => 'Recerca avantiate',
 'powersearch-legend' => 'Recerca avantiate',
 'powersearch-ns' => 'Cercar in spatios de nomines:',
 'powersearch-redir' => 'Listar redirectiones',
-'powersearch-field' => 'Cercar',
 'powersearch-togglelabel' => 'Seliger:',
 'powersearch-toggleall' => 'Totes',
 'powersearch-togglenone' => 'Nihil',
@@ -1308,8 +1293,7 @@ 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',
-'prefsnologintext' => 'Tu debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aperir session]</span> pro configurar preferentias de usator.',
+'prefsnologintext2' => 'Es necessari $1 pro definir le preferentias de usator.',
 'changepassword' => 'Cambiar contrasigno',
 'prefs-skin' => 'Apparentia',
 'skin-preview' => 'Previsualisation',
@@ -1333,7 +1317,6 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 'prefs-email' => 'Optiones de e-mail',
 'prefs-rendering' => 'Apparentia',
 'saveprefs' => 'Confirmar',
-'resetprefs' => 'Reverter cambios',
 'restoreprefs' => 'Restaurar tote le preselectiones (in tote le sectiones)',
 'prefs-editing' => 'Modification',
 'rows' => 'Lineas:',
@@ -1354,7 +1337,6 @@ Omne persona qui lo cognosce pote leger tu observatorio, dunque, non divide lo.
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar le valor predefinite del wiki ($1)',
 'timezoneuseoffset' => 'Altere (specifica le differentia)',
-'timezoneoffset' => 'Differentia¹:',
 'servertime' => 'Hora del servitor:',
 'guesstimezone' => 'Obtener del navigator',
 'timezoneregion-africa' => 'Africa',
@@ -1609,6 +1591,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',
@@ -2119,10 +2103,8 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 'protectedpages' => 'Paginas protegite',
 'protectedpages-indef' => 'Solmente protectiones infinite',
 'protectedpages-cascade' => 'Protectiones in cascada solmente',
-'protectedpagestext' => 'Le sequente paginas es protegite de esser renominate o modificate',
 'protectedpagesempty' => 'Nulle paginas es actualmente protegite con iste parametros.',
 'protectedtitles' => 'Titulos protegite',
-'protectedtitlestext' => 'Le sequente titulos es protegite de esser create',
 'protectedtitlesempty' => 'Nulle titulos es actualmente protegite con iste parametros.',
 'listusers' => 'Lista de usatores',
 'listusers-editsonly' => 'Monstrar solmente usatores con modificationes',
@@ -2351,7 +2333,7 @@ Pro contactar le redactor:
 mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Tu non recipera altere notificationes de activitate si tu non visita iste pagina. Tu pote anque reinitialisar le optiones de notification pro tote le paginas in tu observatorio.
+Tu non recipera altere notificationes de activitate si tu non visita iste pagina con session aperte. Tu pote anque reinitialisar le optiones de notification pro tote le paginas in tu observatorio.
 
 Le systema de notification de {{SITENAME}}, a tu servicio
 
@@ -3660,10 +3642,6 @@ Le alteres essera initialmente celate.
 'exif-urgency-high' => 'Alte ($1)',
 'exif-urgency-other' => 'Prioritate definite per usator ($1)',
 
-# External editor support
-'edit-externally' => 'Modificar iste file con un programma externe',
-'edit-externally-help' => '(Vide le [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de configuration] pro ulterior informationes)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totes',
 'namespacesall' => 'totes',
@@ -3896,10 +3874,9 @@ Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Lic
 
 # Special:SpecialPages
 'specialpages' => 'Paginas special',
-'specialpages-note' => '----
-* Paginas special normal.
-* <span class="mw-specialpagerestricted">Paginas special restringite.</span>
-* <span class="mw-specialpagecached">Paginas special del cache (poterea esser obsolete).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Paginas special normal.
+* <span class="mw-specialpagerestricted">Paginas special restringite.</span>',
 'specialpages-group-maintenance' => 'Reportos de mantenentia',
 'specialpages-group-other' => 'Altere paginas special',
 'specialpages-group-login' => 'Aperir session / crear conto',
@@ -4112,4 +4089,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 5795993..df6a960 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' ),
@@ -499,7 +503,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Halaman ini',
 'qbmyoptions' => 'Halaman saya',
-'qbspecialpages' => 'Halaman istimewa',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -618,8 +621,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}}',
@@ -718,7 +719,6 @@ Tidak ada keterangan.',
 'perfcached' => 'Data berikut ini diambil dari singgahan dan mungkin bukan data mutakhir. {{PLURAL:$1||}}$1 hasil maksimal tersedia di tembolok.',
 'perfcachedts' => 'Data berikut ini diambil dari singgahan dan terakhir diperbarui pada $1. {{PLURAL:$1||}}$1 hasil maksimal tersedia di tembolok.',
 'querypage-no-updates' => 'Pemutakhiran dari halaman ini sedang dimatikan. Data yang ada di sini saat ini tidak akan dimuat ulang.',
-'wrong_wfQuery_params' => 'Parameter salah ke wfQuery()<br />Fungsi: $1<br />Permintaan: $2',
 'viewsource' => 'Lihat sumber',
 'viewsource-title' => 'Lihat sumber untuk $1',
 'actionthrottled' => 'Tindakan dibatasi',
@@ -1398,12 +1398,8 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 # Search results
 'searchresults' => 'Hasil pencarian',
 'searchresults-title' => 'Hasil pencarian untuk "$1"',
-'searchresulttext' => 'Untuk informasi lebih lanjut tentang pencarian di {{SITENAME}}, lihat [[{{MediaWiki:Helppage}}|halaman bantuan]].',
-'searchsubtitle' => 'Anda mencari \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|semua halaman yang dimulai dengan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|semua halaman yang terpaut ke "$1"]])',
-'searchsubtitleinvalid' => "Anda mencari '''$1'''",
 'toomanymatches' => 'Pencarian menghasilkan terlalu banyak hasil, silakan masukkan kueri lain',
 'titlematches' => 'Judul halaman yang sama',
-'notitlematches' => 'Tidak ada judul halaman yang cocok',
 'textmatches' => 'Teks halaman yang cocok',
 'notextmatches' => 'Tidak ada teks halaman yang cocok',
 'prevn' => '{{PLURAL:$1|$1}} sebelumnya',
@@ -1412,10 +1408,8 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'nextn-title' => '$1 {{PLURAL:$1|hasil|hasil}} selanjutnya',
 'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil|hasil}} per halaman',
 'viewprevnext' => 'Lihat ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opsi pencarian',
 'searchmenu-exists' => "* Halaman '''[[$1]]'''",
 'searchmenu-new' => "'''Buat halaman \"[[:\$1]]\" di wiki ini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Lihat daftar halaman dengan awalan ini]]',
 'searchprofile-articles' => 'Halaman isi',
 'searchprofile-project' => 'Halaman Bantuan dan Proyek',
 'searchprofile-images' => 'Berkas Multimedia',
@@ -1443,13 +1437,10 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'showingresults' => "Di bawah ini ditampilkan hingga {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimulai dari #'''$2'''.",
 'showingresultsnum' => "Di bawah ini ditampilkan {{PLURAL:$3|'''1'''|'''$3'''}} hasil, dimulai dari #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuk '''$4'''",
-'nonefound' => "'''Catatan''': Hanya beberapa ruang nama yang secara baku dimasukkan dalam pencarian. Coba awali permintaan Anda dengan ''all:'' untuk mencari semua isi (termasuk halaman pembicaraan, templat, dll), atau gunakan ruang nama yang diinginkan sebagai awalan.",
 'search-nonefound' => 'Tidak ada hasil yang sesuai dengan kriteria.',
-'powersearch' => 'Pencarian lanjut',
 'powersearch-legend' => 'Pencarian lanjut',
 'powersearch-ns' => 'Mencari di ruang nama:',
 'powersearch-redir' => 'Daftar pengalihan',
-'powersearch-field' => 'Mencari',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Semua',
 'powersearch-togglenone' => 'Tidak ada',
@@ -1463,8 +1454,6 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
 'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Belum masuk log',
-'prefsnologintext' => 'Anda harus <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuk log]</span> untuk mengeset preferensi Anda.',
 'changepassword' => 'Ganti kata sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratayang',
@@ -1488,7 +1477,6 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 'prefs-email' => 'Opsi surel',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Batalkan perubahan',
 'restoreprefs' => 'Kembalikan semua setelan bawaan',
 'prefs-editing' => 'Penyuntingan',
 'rows' => 'Baris:',
@@ -1509,7 +1497,6 @@ Siapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagi
 'localtime' => 'Waktu setempat:',
 'timezoneuseserverdefault' => 'Gunakan bawaan wiki ($1)',
 'timezoneuseoffset' => 'Lainnya (tentukan perbedaannya)',
-'timezoneoffset' => 'Perbedaan¹:',
 'servertime' => 'Waktu server:',
 'guesstimezone' => 'Isikan dari penjelajah web',
 'timezoneregion-africa' => 'Afrika',
@@ -1768,6 +1755,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',
@@ -2267,10 +2255,8 @@ Nama yang telah <del>dicoret</del> berarti telah dibetulkan.',
 'protectedpages' => 'Halaman yang dilindungi',
 'protectedpages-indef' => 'Hanya untuk pelindungan dengan jangka waktu tak terbatas',
 'protectedpages-cascade' => 'Hanya pelindungan runtun',
-'protectedpagestext' => 'Halaman-halaman berikut dilindungi dari pemindahan atau penyuntingan.',
 'protectedpagesempty' => 'Saat ini tidak ada halaman yang sedang dilindungi dengan parameter-parameter tersebut.',
 'protectedtitles' => 'Judul yang dilindungi',
-'protectedtitlestext' => 'Judul berikut ini dilindungi dari pembuatan',
 'protectedtitlesempty' => 'Tidak ada judul yang dilindungi.',
 'listusers' => 'Daftar pengguna',
 'listusers-editsonly' => 'Tampilkan hanya pengguna yang memiliki kontribusi',
@@ -2684,7 +2670,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:',
@@ -3319,7 +3304,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',
@@ -3861,10 +3846,6 @@ $8',
 'exif-urgency-high' => 'Tinggi ($1)',
 'exif-urgency-other' => 'Prioritas ubahsuaian ($1)',
 
-# External editor support
-'edit-externally' => 'Sunting berkas ini dengan aplikasi luar',
-'edit-externally-help' => '(Lihat [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuk informasi lebih lanjut)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'semua',
 'namespacesall' => 'semua',
@@ -4143,8 +4124,7 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 
 # Special:SpecialPages
 'specialpages' => 'Halaman istimewa',
-'specialpages-note' => '----
-* Halaman istimewa normal.
+'specialpages-note' => '* Halaman istimewa normal.
 * <span class="mw-specialpagerestricted">Halaman istimewa terlarang.</span>
 * <span class="mw-specialpagecached">Halaman istimewa tersinggah (mungkin usang).</span>',
 'specialpages-group-maintenance' => 'Laporan pemeliharaan',
@@ -4352,4 +4332,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..4e5e75b 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,29 +138,31 @@ $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-extendwatchlist' => 'Expander li liste de vigilantie a omni changes, ne solmen li max nov',
+'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-watchdeletion' => 'Adjunter págines que yo deleter 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 e dossieres, queles yo ha deleet a mi liste de vigilantie',
 'tog-minordefault' => 'Marcar omni li redactiones minori per contumacie',
 'tog-previewontop' => 'Monstrar prevision ante de buxe de redaction',
 'tog-previewonfirst' => 'Monstrar prevision in prim redaction',
 'tog-nocache' => 'Desvalidar caching de págine',
-'tog-enotifwatchlistpages' => 'Inviar me e-mail quande un págine de mi liste de págines vigilat es changeat',
+'tog-enotifwatchlistpages' => 'Inviar me un e-mail quande un págine o dossiere de mi liste de págines vigilantie es changeat',
 'tog-enotifusertalkpages' => 'Inviar me e-mail quande mi págine de discussion es changeat',
+'tog-enotifminoredits' => 'Inviar me un e-mail anc por minor redactiones de págines a dossieres',
 '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 +175,24 @@ $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-useeditwarning' => 'Averti me, si yo abandona un págine con ínconservat changes',
+'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 +208,7 @@ $messages = array(
 'february' => 'februar',
 'march' => 'marte',
 'april' => 'april',
-'may_long' => 'may',
+'may_long' => 'mai',
 'june' => 'junio',
 'july' => 'julí',
 'august' => 'august',
@@ -210,9 +220,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 +232,7 @@ $messages = array(
 'feb' => 'feb',
 'mar' => 'mar',
 'apr' => 'apr',
-'may' => 'may',
+'may' => 'mai',
 'jun' => 'jun',
 'jul' => 'jul',
 'aug' => 'aug',
@@ -230,6 +240,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,30 +259,37 @@ $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',
-'qbspecialpages' => 'Págines special',
 'faq' => 'FAQ',
 
 # Vector skin
@@ -270,16 +299,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 +319,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:',
@@ -334,53 +371,73 @@ Anc mult usatores es provant vider ti págine.
 Pleser atende un témpor quelc ante que vu prova accesser ti págine denov.
 
 $1',
+'pool-timeout' => 'Temporal límite attiņit, attendente li clusion.',
+'pool-queuefull' => 'Range de petitiones es plen.',
+'pool-errorunknown' => 'Ínconosset erra',
 
 # 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',
+'policy-url' => 'Project:Regulariumes',
+'portal' => 'Portale del communité',
+'portal-url' => 'Project:Portale del communité',
 'privacy' => 'Politica de privatie',
 'privacypage' => 'Project:Politica de privatie',
 
+'badaccess' => 'Tu ne have sufficent jures',
+'badaccess-group0' => 'Tu ne have li necessi jures por ti action',
+'badaccess-groups' => 'Ti action es limitat a usatores in {{PLURAL:$2|li gruppe|un del secuent gruppes:}} $1',
+
 'versionrequired' => 'Version $1 de MediaWiki exiget',
 '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',
+'youhavenewmessagesfromusers' => 'Tu have $1 de {{PLURAL:$3|un altri usator|$3 usatores}} ($2).',
+'youhavenewmessagesmanyusers' => 'Tu have $1 de mult usatores ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|un nov missagie|999=nov missagies}}',
+'newmessagesdifflinkplural' => 'ultim {{PLURAL:$1|change|999=changes}}',
 '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',
+'collapsible-collapse' => 'Celar',
+'collapsible-expand' => 'Monstrar',
 'thisisdeleted' => 'Vider o restaurar $1?',
 'viewdeleted' => 'Vider $1?',
+'restorelink' => '{{PLURAL:$1|un deleet version|$1 deleet versiones}}',
+'feed-invalid' => 'Ínvalid typ de feed-abonnament.',
+'feed-unavailable' => 'Null feeds es attiņibil',
+'site-rss-feed' => 'RSS-feed por «$1»',
 'site-atom-feed' => '$1 Atom feed',
+'page-rss-feed' => 'RSS-feed por «$1»',
 'page-atom-feed' => '"$1" Atom feed',
 'red-link-title' => '$1 (págine ne existe)',
+'sort-descending' => 'Descendent ordination',
+'sort-ascending' => 'Ascendent ordination',
 
 # 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-media' => 'Págine de medies',
+'nstab-special' => 'Special págine',
 'nstab-project' => 'Págine de projecte',
 'nstab-image' => 'Figura',
 'nstab-mediawiki' => 'Missage',
@@ -388,22 +445,31 @@ Vider [[Special:Version|págine de version]].',
 'nstab-help' => 'Auxilie',
 'nstab-category' => 'Categorie',
 
+# Main script and global functions
+'nosuchaction' => 'Null tal action existe',
+'nosuchactiontext' => 'Li action indicat in li URL es ínvalid.
+Forsan tu ha mistypat li URL o secuet un íncorrect ligament.
+Forsan it indica un erra in li programma usat de {{SITENAME}}.',
+'nosuchspecialpage' => 'Null tal special págine',
+'nospecialpagetext' => '<strong>Tu ha petit un ínvalid special págine.</strong>
+
+Omni existent special págines trova se in li [[Special:Specialpages|{{int:specialpagines}}]].',
+
 # 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.
+'databaseerror' => 'Erra del data-base',
+'missing-article' => 'Li textu de «$1» $2 ne ha esset trovat in li data-base.
 
-Ti es usualmen causat per sequent un diferentie ne modernisat o catenun de historie por un págine que ha esset deletet.
+It es possibil, que ti págine ha esset deleet o movet.
 
-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',
 'badtitletext' => 'Li titul de págine solicitat esset ínvalid, vacui, o íncorectmen ligat inter-lingue o un titul inter-wiki.
 It posse contene un o plu carácteres quel ne posse esser usat in titules.',
-'wrong_wfQuery_params' => 'Normes íncorect por wfQuery()<br />
-Function: $1<br />
-Question: $2',
 'viewsource' => 'Vider fonte',
 'viewsourcetext' => 'Vu posse vider e copiar li contenete de ti págine:',
 'titleprotected' => 'Ti titul ha esset gardat de creation per [[User:$1|$1]]. 
@@ -415,9 +481,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 +495,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',
@@ -448,7 +514,7 @@ Pleser opta por un nómine diferent.',
 Pleser prova denov.',
 'wrongpasswordempty' => 'Parol-clave inscrit esset nud.
 Pleser prova denov.',
-'mailmypassword' => 'Nov parol-clave per e-mail',
+'mailmypassword' => 'Re-initialisar li passaparol',
 'throttled-mailpassword' => 'Un parol-clave amemora ha ja esset inviat, intra li ultim {{PLURAL:$1|hor|$1 hores}}.
 Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL:$1|hor|$1 hores}}.',
 'acct_creation_throttle_hit' => 'Vu ja ha creat $1 contos. Vu ne posse crear pli mult quam to.',
@@ -465,27 +531,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 +569,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 +602,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 +614,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 +629,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 +644,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 +672,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 +692,22 @@ 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.',
-'powersearch' => 'Serchar avansat',
+'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.',
 
 # Preferences page
 'preferences' => 'Preferenties',
-'mypreferences' => 'Mi preferenties',
-'prefsnologin' => 'Vu ne ha intrat',
+'mypreferences' => 'Preferenties',
 'changepassword' => 'Modificar passa-parol',
 'skin-preview' => 'Prevision',
 'saveprefs' => 'Conservar',
@@ -655,7 +716,6 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'timezonelegend' => 'Zone de témpor:',
 'timezoneuseserverdefault' => 'Usar wiki de contumacie ($1)',
 'timezoneuseoffset' => 'Altri (specificar compensation)',
-'timezoneoffset' => 'Compensation¹:',
 'timezoneregion-africa' => 'Africa',
 'timezoneregion-america' => 'America',
 'timezoneregion-antarctica' => 'Antarctica',
@@ -738,21 +798,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 +886,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 +922,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 +1002,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 +1033,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 +1141,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 +1161,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 +1230,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 +1310,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 +1320,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',
@@ -1285,10 +1345,6 @@ Altri va esser ocultat per contumacie.
 * longitúdine
 * altitudine',
 
-# 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)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omni',
 'namespacesall' => 'omni',
@@ -1360,7 +1416,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..d5b269d 100644 (file)
@@ -216,7 +216,6 @@ $messages = array(
 'qbedit' => 'Mèzi',
 'qbpageoptions' => 'Ihü nka',
 'qbmyoptions' => 'Ihüm',
-'qbspecialpages' => 'Ihü mkpà',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -331,8 +330,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',
@@ -411,9 +408,6 @@ Biko chi ihe á na áká [[Special:ListUsers/sysop|onye íshí]], dètú URL.',
 'badtitletext' => 'Íshí ihü Í chọrọ à díghị ézíbóté, efù, mà ȯ dị jikodo di jikodo nke ojö na nke íshí asụsụ-mmékotárí ma wiki-mmékotárí.
 O nwèríkí nwé édé ótù ma nke ozor nke ékwéghị na íshí ihü.',
 'perfcached' => 'Ómárí á kachẹrẹ na o nwẹrẹ ki a kugwaghị ya na ogẹ di nso. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'wrong_wfQuery_params' => 'Okè nke défiere gá Ájújúwf()<br />
-Orürü: $1<br />
-Ájújú: $2',
 'viewsource' => 'Zi mkpurụ',
 'actionthrottled' => 'Mmèmé a puziélé',
 'protectedpagetext' => 'Ihüá cedolụ maka orürü ạ gáa bá.',
@@ -695,11 +689,7 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 # Search results
 'searchresults' => 'Ndọfùtà nchọwa',
 'searchresults-title' => "Ihe futárá nchowá màkà ''$1''",
-'searchresulttext' => 'Màkà okwu nke ozor básárá í tu {{SITENAME}}, lé [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Í tụrụ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ihü nílé bidóró "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|ihü nílé na gá "$1"]])',
-'searchsubtitleinvalid' => "Í tùrù '''$1'''",
 'titlematches' => 'Íshí ihü dàbànyèrè',
-'notitlematches' => 'Ọ díghì íshí ihü dí kà nke á hù',
 'textmatches' => 'Mkpụrụ édémédé nwèrè ihü ȯ dị na',
 'notextmatches' => 'Mkpụrụ édémédé enwéghị ihü ȯ dị na',
 'prevn' => '{{PLURAL:$1|$1}} nke àzú',
@@ -708,7 +698,6 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'nextn-title' => '{{PLURAL:$1|Ihe fútárá|Ihe fútárá}} nke sò nke $1',
 'shown-title' => 'Zí $1 {{PLURAL:$1|ihe fútárá|ihe fútárá}} na ótù ihü',
 'viewprevnext' => 'Lé ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Màkà nchöwa',
 'searchmenu-new' => "'''Ké ihü \"[[:\$1]]\" na wiki nke á!'''",
 'searchprofile-articles' => 'Ihü ihe dị',
 'searchprofile-project' => 'Ihü Nkwádo na Orürü',
@@ -732,13 +721,9 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'searcheverything-enable' => 'Chọwa na ébé nílé',
 'searchrelated' => 'nke kọlu',
 'searchall' => 'nke níle',
-'nonefound' => "'''Mà kwá''': Náni áhàama ótù dìkàrì Í tuó ya na áká onwe.
-Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé (bu kwá ihü okwu, àtụ, échétá ma échetàghị), ma Í gi ji áhàama Í chọrọ màkà ótù okwu íshí.",
-'powersearch' => 'Nchöwá nkè íshí',
 'powersearch-legend' => 'Nchöwá nkè íshí',
 'powersearch-ns' => 'Tuo na ímé:',
 'powersearch-redir' => 'Dètú nkúfù',
-'powersearch-field' => 'Chọwa màkà',
 'powersearch-togglelabel' => 'Lechányá:',
 'powersearch-toggleall' => 'Haníle',
 'powersearch-togglenone' => 'Efù',
@@ -746,7 +731,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 +849,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',
@@ -1605,10 +1590,6 @@ Nke ozor gí zonari na áká onwe ha.
 'exif-urgency-low' => 'Nàlà ($1)',
 'exif-urgency-high' => 'Nélú ($1)',
 
-# External editor support
-'edit-externally' => 'Rüo na élú usòrò nke na ngwa ọrụ nsónùsòrò nke ọzȯ',
-'edit-externally-help' => '(Lé nà [https://www.mediawiki.org/wiki/Manual:External_editors nkụzí mbídó] màkà nkúzí ozor)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'nke níle',
 'namespacesall' => 'nke níle',
@@ -1738,4 +1719,7 @@ Nke ozor gí zonari na áká onwe ha.
 # Search suggestions
 'searchsuggest-search' => 'Chọwa',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Ngwanu',
+
 );
index 269d0d2..05a8b89 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'qbedit' => 'Urnosen',
 'qbpageoptions' => 'Daytoy a panid',
 'qbmyoptions' => 'Pampanidko',
-'qbspecialpages' => 'Espesial a pampanid',
 'faq' => 'MAS',
 'faqpage' => 'Project:MAS',
 
@@ -309,8 +308,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}}',
@@ -414,9 +411,6 @@ Mabalin nga aglaon ti a maysa wenno ad-adu a karakter a saan a mausar kadagiti t
 'perfcachedts' => 'Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan |dagiti $4 nagbanagan}} ket magun-od idiay pagidulinan.',
 'querypage-no-updates' => 'Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. 
 Saan a mipasaradiwa ita dagiti datos ditoy.',
-'wrong_wfQuery_params' => 'Kamali a parametro iti wfQuery()<br />
-Pamay-an: $1<br />
-Panagsapul: $2',
 'viewsource' => 'Kitaen ti taudan',
 'viewsource-title' => 'Kitaen ti taudan para iti $1',
 'actionthrottled' => 'Napabuntog ti aramid',
@@ -1130,12 +1124,8 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 # Search results
 'searchresults' => 'Dagiti nagbanagan ti panagbiruk',
 'searchresults-title' => 'Dagiti nabirukan a nagbanagan para iti "$1"',
-'searchresulttext' => 'Para iti adu pay a pakaammo a maipanggep ti panagbiruk {{SITENAME}}, kitaem ti [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Nagbirukka  para iti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|amin a panid a mangrugi iti "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|amin a panid nga agsilpo iti "$1"]])',
-'searchsubtitleinvalid' => "Nagbirukka para  iti '''$1'''",
 'toomanymatches' => 'Adu unay ti napasubli nga agpapada, pangngaasi a padasem ti sabali a panagsapul',
 'titlematches' => 'Dagiti kapadpada a titulo ti panid',
-'notitlematches' => 'Awan dagiti kapadpada a titulo ti panid',
 'textmatches' => 'Dagiti agpapada a testo ti panid',
 'notextmatches' => 'Awan dagiti kapadpada a testo ti panid',
 'prevn' => 'napalabas {{PLURAL:$1|$1}}',
@@ -1144,10 +1134,8 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 'nextn-title' => 'Sumaruno a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}',
 'shown-title' => 'Ipakita ti $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}  ti tunggal maysa a panid',
 'viewprevnext' => 'Kitaen ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pagpilian ti panagbiruk',
 'searchmenu-exists' => "'''Adda panid a nanaganan ti \"[[:\$1]]\" iti daytoy a wiki.'''",
 'searchmenu-new' => "'''Partuaten ti panid ti \"[[:\$1]]\" iti daytoy a wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kitaem dagiti panid nga adda kastoy a naipasaruno]]',
 'searchprofile-articles' => 'Dagiti naglaon a panid',
 'searchprofile-project' => 'Tulong ken Gandat a pampanid',
 'searchprofile-images' => 'Sabsabali a midia',
@@ -1175,14 +1163,10 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 'showingresults' => "Maiparang dita baba agingga {{PLURAL:$1|iti '''1''' a nagbanagan|dagiti '''$1''' a nagbanagan}} a mangrugi iti #'''$2'''.",
 'showingresultsnum' => "Maipakpakita dita baba  {{PLURAL:$3|iti '''1''' a nagbanagan|dagiti '''$3''' a nagbanagan}} a mangrugi iti #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Nagbanagan a '''$1''' iti '''$3'''|Dagiti Nagbanagan a '''$1 - $2''' iti '''$3'''}} para iti '''$4'''",
-'nonefound' => "'''Palagip'': Adda laeng bassit dagita nagan ti espasio a masigud a biruken.
-Padasem a  pasarunuan ti panagbiruk mo ti ''all:'' tapno birukem amin a nagyan (mairaman ti kapatangan a pampanid, dagiti plantilia, ken dadduma pay), wenno usarem nga ipasaruno ti kayatmo a nagan ti espasio.",
 'search-nonefound' => 'Awan ti nagbanagan a kapadpada ti sinapul.',
-'powersearch' => 'Napasayat a panagbiruk',
 'powersearch-legend' => 'Napasayat a panagbiruk',
 'powersearch-ns' => 'Agbirukka kadagiti nagan ti espasio:',
 'powersearch-redir' => 'Ilista dagiti baw-ing',
-'powersearch-field' => 'Biruken iti',
 'powersearch-togglelabel' => 'Markaan:',
 'powersearch-toggleall' => 'Amin',
 'powersearch-togglenone' => 'Awan',
@@ -1196,8 +1180,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',
-'prefsnologintext' => 'Masapul a <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakastrekka]</span> tapno makapili kadagiti kakaykayatam.',
 'changepassword' => 'Baliwan ti kontrasenias',
 'prefs-skin' => 'Kudil',
 'skin-preview' => 'Ipadas',
@@ -1221,7 +1203,6 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'prefs-email' => 'Pagpilian ti esurat',
 'prefs-rendering' => 'Tabas',
 'saveprefs' => 'Idulin',
-'resetprefs' => 'Dalusan dagiti saan a naidulin a sinuksukatan',
 'restoreprefs' => 'Isubli amin dagiti kasisigud a pannakaiyasentar (kadagiti amin a paset)',
 'prefs-editing' => 'Ur-urnosen',
 'rows' => 'Ar-aray:',
@@ -1242,7 +1223,6 @@ Ti sinoman a makaammo daytoy ket mabalinda a basaen ti listaan ti banbantayam, i
 'localtime' => 'Lokal nga oras:',
 'timezoneuseserverdefault' => 'Usaren ti wiki a kasisigud ($1)',
 'timezoneuseoffset' => 'Sabsabali (inaganan ti tangdan)',
-'timezoneoffset' => 'Tangda¹:',
 'servertime' => 'Oras ti server:',
 'guesstimezone' => 'Agikabil manipud idiay pabasabasam',
 'timezoneregion-africa' => 'Aprika',
@@ -1999,10 +1979,8 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'protectedpages' => 'Dagiti nasalakniban a panid',
 'protectedpages-indef' => 'Inggat ingana a salakniban laeng',
 'protectedpages-cascade' => 'Dagiti sariap a salaknib laeng',
-'protectedpagestext' => 'Dagiti sumaganad a panid ket nasalakniban manipud ti pannaka-iyalis wenno panag-urnos',
 'protectedpagesempty' => 'Awan ti pampanid nga agdama a nasalakniban babaen kadagitoy a parametro.',
 'protectedtitles' => 'Dagiti nasalakniban a titulo',
-'protectedtitlestext' => 'Dagiti sumaganad a titulo ket nasalakniban manipud ti pannakapartuat',
 'protectedtitlesempty' => 'Awan dagiti titulo nga agdama a nasalakniban iti dagitoy a parametro.',
 'listusers' => 'Listaan dagiti agar-aramat',
 'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnosda',
@@ -3506,10 +3484,6 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-urgency-high' => 'Nangato ($1)',
 'exif-urgency-other' => 'Inpalawag ti agar-aramat a prioridad ($1)',
 
-# External editor support
-'edit-externally' => 'Baliwan daytoy a papeles babaen ti akinruar nga aplikasion',
-'edit-externally-help' => '(Kitaen ti [https://www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay a pakaammo).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'amin',
 'namespacesall' => 'amin',
@@ -3741,8 +3715,7 @@ Naka-awatka koman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a
 
 # Special:SpecialPages
 'specialpages' => 'Espesial a pampanid',
-'specialpages-note' => '----
-* Kadawyan nga espesial a pampanid.
+'specialpages-note' => '* Kadawyan nga espesial a pampanid.
 * <span class="mw-specialpagerestricted">Nagawidan nga espesial a pampanid.</span>',
 'specialpages-group-maintenance' => 'Dagiti padamag ti panagtaripato',
 'specialpages-group-other' => 'Sabsabali pay nga espesial a pampanid',
@@ -3956,4 +3929,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..9db5bfa 100644 (file)
@@ -155,7 +155,6 @@ $messages = array(
 'qbedit' => 'Хувца',
 'qbpageoptions' => 'ОагӀува оттамаш',
 'qbmyoptions' => 'Са оттамаш',
-'qbspecialpages' => 'ГӀулакхий оагӀувнаш',
 'faq' => 'Каст-каста хаттараш',
 'faqpage' => 'Project:Каст-каста хаттараш',
 
@@ -213,7 +212,7 @@ $messages = array(
 'articlepage' => 'Йоазув тӀа бӀаргтасса',
 'talk' => 'Дувцам',
 'views' => 'БӀаргтассамаш',
-'toolbox' => 'Ð\93Ó\80орсаш',
+'toolbox' => 'Ð\93Ó\80ирсаш',
 'userpage' => 'Дакъалаьцачунна оагӀуве бӀаргтасса',
 'projectpage' => 'Хьахьоадайтама оагӀуве бӀаргтасса',
 'imagepage' => 'Паьла оагӀув тӀа бӀаргтасса',
@@ -264,8 +263,6 @@ $messages = array(
 'ok' => 'ХӀаа',
 'retrievedfrom' => '"$1" ГӀувам',
 'youhavenewmessages' => 'Оаш $1 ($2) дӀайийцад',
-'newmessageslink' => 'керда хоамаш',
-'newmessagesdifflink' => 'тӀехьара хувцамаш',
 'youhavenewmessagesmulti' => 'Оаш $1чу керда хоамаш дӀайийцад',
 'editsection' => 'хувца',
 'editold' => 'хувца',
@@ -464,7 +461,7 @@ $messages = array(
 'history-fieldset-title' => 'Искара бӀаргтасса',
 'history-show-deleted' => 'ДӀадаьккхараш мара',
 'histfirst' => 'къаьнараш',
-'histlast' => 'ха яннараш',
+'histlast' => 'кердараш',
 'historyempty' => '(даьсса)',
 
 # Revision feed
@@ -506,10 +503,6 @@ $messages = array(
 # Search results
 'searchresults' => 'Тохкама гIулакхахилар',
 'searchresults-title' => '"$1" тохка',
-'searchresulttext' => 'Хьахьоадайтама оагIувнаш тIа тохкамах лаьца лоаца маIандар эца [[{{MediaWiki:Helppage}}|новкъостала декъамага]] хьажа.',
-'searchsubtitle' => 'Хоаттамах лаьца «[[:$1]]» ([[Special:Prefixindex/$1|цу цIерах ювалу оагIувнаш]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|цу цIерах Iинкаш еш йола]])',
-'searchsubtitleinvalid' => "'''$1''' хаттара",
-'notitlematches' => 'ОагIувни цIераш вIашагIа кхеташ яц',
 'notextmatches' => 'ОагIувнаша яздамий вIашагIакхетараш дац',
 'prevn' => '{{PLURAL:$1|хьалхйоаг|ар $1|хьалхйоаг|араш $1|хьалхйоаг|араш $1}}',
 'nextn' => '{{PLURAL:$1|тlехьайоагlар $1|тlехьайоагlараш $1|тlехьайоагlараш $1}}',
@@ -541,21 +534,16 @@ $messages = array(
 'searchrelated' => 'гаргара',
 'searchall' => 'деррига',
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
-'nonefound' => "'''Зем лаца.''' Цхьа дола цIера аренаш мара лахалац.
-''all:'' яха тIаоттарга пайдабе, массадола цIеран аренашкахь (дакъалаьцархой дуцамаш а, куцкепаш а, кхы дара а чулоацаш), е деза цIера аренаш Iочуязаде.",
 'search-nonefound' => 'ДIахаттама нийсамаш корадаьдац.',
-'powersearch' => ' Доккха тахкар',
 'powersearch-legend' => ' Доккха тахкар',
 'powersearch-ns' => ' ЦIерий аренашкахь лахар',
 'powersearch-redir' => 'ДIа-хьа оагIувнаш гойта',
-'powersearch-field' => 'Лахар',
 'powersearch-toggleall' => 'Деррига',
 'powersearch-togglenone' => 'Цхьаккха',
 
 # Preferences page
 'preferences' => 'Оттамаш',
 'mypreferences' => 'Оттамаш',
-'prefsnologin' => 'Шо чудаьнна дац',
 'changepassword' => 'КъайладIоaгIа дIахувцар',
 'prefs-skin' => 'БIагала куц',
 'skin-preview' => 'Хьажа',
@@ -864,8 +852,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 +1015,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аргагуш дац.',
@@ -1086,10 +1074,6 @@ $messages = array(
 'exif-iimcategory-war' => 'ТIемаш, кховсамаши латтараши',
 'exif-iimcategory-wea' => 'Хаоттам',
 
-# External editor support
-'edit-externally' => 'Йола болхоагIувца паьла гIалатах мукъаяьккха',
-'edit-externally-help' => '(ма даррачунга хьажа [https://www.mediawiki.org/wiki/Manual:External_editors хьаоттама кулгалхо])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'деррига',
 'namespacesall' => 'деррига',
index 0c01f9a..1b7ce68 100644 (file)
@@ -235,7 +235,6 @@ $messages = array(
 'qbedit' => 'Redaktar',
 'qbpageoptions' => 'Ica pagino',
 'qbmyoptions' => 'Mea pagini',
-'qbspecialpages' => 'Specala pagini',
 
 # Vector skin
 'vector-action-addsection' => 'Adjuntar topiko',
@@ -337,8 +336,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',
@@ -643,11 +640,7 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 # Search results
 'searchresults' => 'Rezultaji dil sercho',
 'searchresults-title' => 'Sercho-rezultaji por "$1"',
-'searchresulttext' => 'Por plusa informo pri quale serchar en {{SITENAME}}, videz [[{{MediaWiki:Helppage}}|help]].',
-'searchsubtitle' => 'Vu serchis \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|omna pagini komencanta kun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|omna pagini liganta ad "$1"]])',
-'searchsubtitleinvalid' => "Vu serchis '''$1'''",
 'titlematches' => 'Koincidi de titulo di artiklo',
-'notitlematches' => 'No esas koincidi en la tituli dil artikli',
 'textmatches' => 'Koincidi de texto di artiklo',
 'notextmatches' => 'Nula paginala texto fitas',
 'prevn' => 'antea {{PLURAL:$1|$1}}',
@@ -675,13 +668,9 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 'showingresults' => "Montrante infre {{PLURAL:$1|'''1''' rezulto|'''$1''' rezulti}}, qui komencas kun numero #'''$2'''.",
 'showingresultsnum' => "Montrante infre {{PLURAL:$3|'''1''' rezulto|'''$3''' rezulti}}, qui komencas kun numero #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultajo '''$1''' ek '''$3'''|Rezultaji '''$1 - $2''' ek '''$3'''}} di '''$4'''",
-'nonefound' => "'''Atencez''': Nespecigite, nur ula nomari esas serchata.
-Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzanta debato-pagini, shabloni, edc.), od uzar la dezirata nomaro kom prefixo.",
-'powersearch' => 'Avancita sercho',
 'powersearch-legend' => 'Avancita sercho',
 'powersearch-ns' => 'Serchez en nomari:',
 'powersearch-redir' => 'Listar ridirekti',
-'powersearch-field' => 'Serchar',
 'powersearch-toggleall' => 'Omna',
 'powersearch-togglenone' => 'Nula',
 'search-external' => 'Extera sercho',
@@ -691,8 +680,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',
-'prefsnologintext' => 'Vu mustas <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} enirir]</span> por establisar la preferaji.',
 'changepassword' => 'Chanjar pasovorto',
 'prefs-skin' => 'Pelo',
 'skin-preview' => 'Pre-videz',
@@ -708,7 +695,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 'prefs-resetpass' => 'Chanjar pasovorto',
 'prefs-rendering' => 'Aspekto',
 'saveprefs' => 'Registragar',
-'resetprefs' => 'Riestablisar preferaji',
 'prefs-editing' => 'Grandeso dil areo por texto',
 'rows' => 'Linei:',
 'columns' => 'Kolumni:',
@@ -721,7 +707,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 'savedprefs' => 'Vua preferaji registragesis.',
 'timezonelegend' => 'Tempala zono:',
 'localtime' => 'Lokala tempo:',
-'timezoneoffset' => 'Difero¹:',
 'servertime' => 'Kloko en la servanto:',
 'guesstimezone' => 'Obtenar la kloko dil "browser"',
 'timezoneregion-africa' => 'Afrika',
@@ -811,6 +796,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',
@@ -1452,9 +1438,6 @@ Vu darfos adjuntar kauso en la rezumo.',
 'exif-gpsspeed-k' => 'Kilometri per horo',
 'exif-gpsspeed-m' => 'Milii per horo',
 
-# External editor support
-'edit-externally' => 'Chanjez ta arkivo per externa programo',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omna',
 'namespacesall' => 'omna',
@@ -1553,4 +1536,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 b8d340d..6f91633 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' ),
@@ -390,7 +388,6 @@ $messages = array(
 'qbedit' => 'Breyta',
 'qbpageoptions' => 'Þessi síða',
 'qbmyoptions' => 'Mínar síður',
-'qbspecialpages' => 'Kerfissíður',
 'faq' => 'Algengar spurningar',
 'faqpage' => 'Project:Algengar spurningar',
 
@@ -507,8 +504,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ð',
@@ -602,9 +597,6 @@ Engin skýring gefin.',
 'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að {{PLURAL:$1|ein niðurstaða er aðgengileg|$1 niðurstöður eru aðgengilegar}} í skyndiminninu.',
 'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að {{PLURAL:$4|ein niðurstaða er aðgengileg|$4 niðurstöður eru aðgengilegar}} í skyndiminninu.',
 'querypage-no-updates' => 'Lokað er fyrir uppfærslur af þessari síðu. Gögn sett hér munu ekki vistast.',
-'wrong_wfQuery_params' => 'Röng færibreyta fyrir wfQuery()<br />
-Virkni: $1<br />
-Spurn: $2',
 'viewsource' => 'Skoða efni',
 'viewsource-title' => 'Skoða efni $1',
 'actionthrottled' => 'Aðgerðin kafnaði',
@@ -1291,12 +1283,8 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 # Search results
 'searchresults' => 'Leitarniðurstöður',
 'searchresults-title' => 'Leitarniðurstöður fyrir „$1“',
-'searchresulttext' => 'Fyrir frekari upplýsingar um leit á {{SITENAME}} farið á [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Þú leitaðir að '''[[:$1]]''' ([[Special:Prefixindex/$1|öllum síðum sem hefjast á „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|öllum síðum sem tengja í „$1“]])",
-'searchsubtitleinvalid' => "Þú leitaðir að '''$1'''",
 'toomanymatches' => 'Of mörgum niðurstöðum var skilað, gjörðu svo vel og reyndu aðra fyrirspurn',
 'titlematches' => 'Titlar greina sem pössuðu við fyrirspurnina',
-'notitlematches' => 'Engir greinartitlar pössuðu við fyrirspurnina',
 'textmatches' => 'Leitarorð fannst/fundust í innihaldi eftirfarandi greina',
 'notextmatches' => 'Engar samsvaranir á texta í síðum',
 'prevn' => 'síðustu {{PLURAL:$1|$1}}',
@@ -1305,10 +1293,8 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title' => '{{PLURAL:$1|Næsta|Næstu}} $1 {{PLURAL:$1|niðurstaða|niðurstöður}}',
 'shown-title' => 'Sýna $1 {{PLURAL:$1|niðurstöðu|niðurstöður}} á hverri síðu',
 'viewprevnext' => 'Skoða ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Leitarvalmöguleikar',
 'searchmenu-exists' => "'''Það er síða að nafni „[[:$1]]“ á þessum wiki'''",
 'searchmenu-new' => "'''Skapaðu síðuna \"[[:\$1]]\" á þessum wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita að síðum með þessu forskeyti]]',
 'searchprofile-articles' => 'Efnissíður',
 'searchprofile-project' => 'Hjálpar- og verkefnasíður',
 'searchprofile-images' => 'Margmiðlanir',
@@ -1336,13 +1322,10 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'showingresults' => "Sýni {{PLURAL:$1|'''1''' niðurstöðu|'''$1''' niðurstöður}} frá og með #'''$2'''.",
 'showingresultsnum' => "Sýni {{PLURAL:$3|'''$3''' niðurstöðu|'''$3''' niðurstöður}} frá og með #<b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Niðurstaða '''$1''' af '''$3'''|Niðurstöður'''$1 - $2''' af '''$3'''}} fyrir '''$4'''",
-'nonefound' => "'''Athugaðu''': Það er aðeins leitað í sumum nafnrýmum sjálfkrafa. Prófaðu að setja forskeytið ''all:'' í fyrirspurnina til að leita í öllu efni (þar á meðal notandaspjallsíðum, sniðum, o.s.frv.), eða notaðu tileigandi nafnrými sem forskeyti.",
 'search-nonefound' => 'Engar niðurstöður pössuðu við fyrirspurnina.',
-'powersearch' => 'Ítarleg leit',
 'powersearch-legend' => 'Ítarlegri leit',
 'powersearch-ns' => 'Leita í nafnrýmum:',
 'powersearch-redir' => 'Lista tilvísanir',
-'powersearch-field' => 'Leita að',
 'powersearch-togglelabel' => 'Athuga:',
 'powersearch-toggleall' => 'Allt',
 'powersearch-togglenone' => 'Ekkert',
@@ -1356,8 +1339,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',
-'prefsnologintext' => 'Þú verður að vera <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} skráð(ur) inn]</span> til að breyta notandastillingum.',
 'changepassword' => 'Breyta lykilorði',
 'prefs-skin' => 'Þema',
 'skin-preview' => 'Forskoða',
@@ -1381,7 +1362,6 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 'prefs-email' => 'Tölvupóststillingar',
 'prefs-rendering' => 'Útlit',
 'saveprefs' => 'Vista',
-'resetprefs' => 'Endurstilla valmöguleika',
 'restoreprefs' => 'Endurstilla allar sjálfgefnar stillingar (í öllum hlutum)',
 'prefs-editing' => 'Breytingarflipinn',
 'rows' => 'Raðir',
@@ -1399,7 +1379,6 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 'localtime' => 'Staðartími:',
 'timezoneuseserverdefault' => 'Nota sjálfgefið tímabelti ($1)',
 'timezoneuseoffset' => 'Annað (tilgreinið tímamismun)',
-'timezoneoffset' => 'Hliðrun¹:',
 'servertime' => 'Tími netþjóns:',
 'guesstimezone' => 'Fylla inn frá vafranum',
 'timezoneregion-africa' => 'Afríka',
@@ -1653,6 +1632,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',
@@ -2148,10 +2128,8 @@ Hún er tilvísun á [[$2]].',
 'protectedpages' => 'Verndaðar síður',
 'protectedpages-indef' => 'Aðeins óendanlegar verndanir',
 'protectedpages-cascade' => 'Keðjuverndun eingöngu',
-'protectedpagestext' => 'Eftirfarandi síður hafa verið verndaðar svo ekki sé hægt að breyta þeim eða færa þær',
 'protectedpagesempty' => 'Engar síður eru verndaðar með þessum stikum.',
 'protectedtitles' => 'Verndaðir titlar',
-'protectedtitlestext' => 'Eftirfarandi titlar eru verndaðir gegn því að vera skapaðir',
 'protectedtitlesempty' => 'Engir titlar eru verndaðir með þessum stikum.',
 'listusers' => 'Notendalisti',
 'listusers-editsonly' => 'Sýna eingöngu notendur með breytingar',
@@ -3621,10 +3599,6 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
 'exif-urgency-high' => 'Hátt ($1)',
 'exif-urgency-other' => 'Mikilvægi ákveðið af notanda ($1)',
 
-# External editor support
-'edit-externally' => 'Breyta þessari skrá með utanaðkomandi hugbúnaði',
-'edit-externally-help' => '(Sjá [https://www.mediawiki.org/wiki/Manual:External_editors leiðbeiningar] fyrir meiri upplýsingar)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'allt',
 'namespacesall' => 'öll',
@@ -3712,6 +3686,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 →',
@@ -3823,8 +3800,7 @@ MediaWiki er útgefin í þeirri von að hann sé gagnlegur, en ÁN ALLRAR ÁBYR
 
 # Special:SpecialPages
 'specialpages' => 'Kerfissíður',
-'specialpages-note' => '----
-* Venjulegar kerfisíður.
+'specialpages-note' => '* Venjulegar kerfisíður.
 * <span class="mw-specialpagerestricted">Kerfisíður með takmörkuðum aðgangi.</span>',
 'specialpages-group-maintenance' => 'Viðhaldsskýrslur',
 'specialpages-group-other' => 'Aðrar kerfissíður',
@@ -4026,4 +4002,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 2870a74..6c27820 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' ),
@@ -448,7 +449,6 @@ $messages = array(
 'qbedit' => 'Modifica',
 'qbpageoptions' => 'Opzioni pagina',
 'qbmyoptions' => 'Le mie pagine',
-'qbspecialpages' => 'Pagine speciali',
 'faq' => 'Domande frequenti',
 'faqpage' => 'Project:Domande frequenti',
 
@@ -564,12 +564,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',
@@ -667,9 +665,6 @@ Potrebbe inoltre contenere uno o più caratteri il cui uso non è ammesso nei ti
 'perfcached' => "I dati che seguono sono estratti da una copia ''cache'' del database, e potrebbero non essere aggiornati. Un massimo di {{PLURAL:$1|un risultato è disponibile|$1 risultati sono disponibili}} in cache.",
 'perfcachedts' => "I dati che seguono sono estratti da una copia ''cache'' del database, il cui ultimo aggiornamento risale al $1. Un massimo di {{PLURAL:$4|un risultato è disponibile|$4 risultati sono disponibili}} in cache.",
 'querypage-no-updates' => 'Gli aggiornamenti della pagina sono temporaneamente sospesi. I dati in essa contenuti non verranno aggiornati.',
-'wrong_wfQuery_params' => 'Errore nei parametri inviati alla funzione wfQuery()<br />
-Funzione: $1<br />
-Query: $2',
 'viewsource' => 'Visualizza sorgente',
 'viewsource-title' => 'Visualizza sorgente di $1',
 'actionthrottled' => 'Azione ritardata',
@@ -699,7 +694,8 @@ L\'amministratore che lo ha bloccato ha fornito questa motivazione: "$3".',
 'invalidtitle-knownnamespace' => 'Titolo non valido con namespace "$2" e testo "$3"',
 'invalidtitle-unknownnamespace' => 'Titolo non valido con namespace sconosciuto "$1" e testo "$2"',
 'exception-nologin' => 'Accesso non effettuato',
-'exception-nologin-text' => "Questa pagina o azione richiede che tu abbia effettuato l'accesso su questa wiki.",
+'exception-nologin-text' => "Si prega di [[Special:Userlogin|eseguire l'accesso]] per poter accedere a questa pagina o azione.",
+'exception-nologin-text-manual' => 'Si prega di $1 per poter accedere a questa pagina o azione.',
 
 # Virus scanner
 'virus-badscanner' => "Errore di configurazione: antivirus sconosciuto: ''$1''",
@@ -793,7 +789,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".
@@ -862,7 +858,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.',
@@ -1333,12 +1329,8 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 # Search results
 'searchresults' => 'Risultati della ricerca',
 'searchresults-title' => 'Risultati della ricerca di "$1"',
-'searchresulttext' => 'Per maggiori informazioni sulla ricerca interna di {{SITENAME}}, vedi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ricerca di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutte le pagine che iniziano per "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tutte le pagine che puntano a "$1"]])',
-'searchsubtitleinvalid' => "Ricerca di '''$1'''",
 'toomanymatches' => 'Troppe corrispondenze. Modificare la richiesta.',
 'titlematches' => 'Corrispondenze nel titolo delle pagine',
-'notitlematches' => 'Nessuna corrispondenza nei titoli delle pagine',
 'textmatches' => 'Corrispondenze nel testo delle pagine',
 'notextmatches' => 'Nessuna corrispondenza nel testo delle pagine',
 'prevn' => '{{PLURAL:$1|precedente|precedenti $1}}',
@@ -1347,10 +1339,8 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'nextn-title' => '{{PLURAL:$1|Risultato successivo|$1 risultati successivi}}',
 'shown-title' => 'Mostra {{PLURAL:$1|un risultato|$1 risultati}} per pagina',
 'viewprevnext' => 'Vedi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzioni di ricerca',
 'searchmenu-exists' => "'''Sul sito esiste una pagina il cui nome è \"[[:\$1]]\"'''",
 'searchmenu-new' => 'Crea la pagina "[[:$1]]" su questo sito',
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza le pagine con questo prefisso]]',
 'searchprofile-articles' => 'Pagine di contenuti',
 'searchprofile-project' => 'Pagine di aiuto e relative al progetto',
 'searchprofile-images' => 'Multimedia',
@@ -1378,13 +1368,10 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'showingresults' => "Di seguito {{PLURAL:$1|viene presentato al massimo '''1''' risultato|vengono presentati al massimo '''$1''' risultati}} a partire dal numero '''$2'''.",
 'showingresultsnum' => "Di seguito {{PLURAL:$3|viene presentato '''1''' risultato|vengono presentati '''$3''' risultati}} a partire dal numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultato '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} per '''$4'''",
-'nonefound' => "'''Nota''': la ricerca è effettuata per default solo in alcuni namespace. Prova a premettere ''all:'' al testo della ricerca per cercare in tutti i namespace (compresi pagine di discussione, template, ecc) oppure usa il namespace desiderato come prefisso.",
 'search-nonefound' => 'La ricerca non ha prodotto risultati.',
-'powersearch' => 'Ricerca',
 'powersearch-legend' => 'Ricerca avanzata',
 'powersearch-ns' => 'Cerca nei namespace:',
 'powersearch-redir' => 'Elenca redirect',
-'powersearch-field' => 'Cerca',
 'powersearch-togglelabel' => 'Seleziona:',
 'powersearch-toggleall' => 'Tutti',
 'powersearch-togglenone' => 'Nessuno',
@@ -1396,8 +1383,7 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'preferences' => 'Preferenze',
 'mypreferences' => 'preferenze',
 'prefs-edits' => 'Modifiche effettuate:',
-'prefsnologin' => 'Accesso non effettuato',
-'prefsnologintext' => 'Per poter personalizzare le preferenze è necessario effettuare l\'<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} accesso]</span>.',
+'prefsnologintext2' => "Si prega di $1 per impostare le preferenze dell'utente.",
 'changepassword' => 'Cambia password',
 'prefs-skin' => 'Aspetto grafico (skin)',
 'skin-preview' => 'Anteprima',
@@ -1421,7 +1407,6 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'prefs-email' => 'Opzioni email',
 'prefs-rendering' => 'Aspetto',
 'saveprefs' => 'Salva le preferenze',
-'resetprefs' => 'Reimposta le preferenze',
 'restoreprefs' => 'Ripristina le impostazioni predefinite (in tutte le sezioni)',
 'prefs-editing' => 'Casella di modifica',
 'rows' => 'Righe:',
@@ -1441,7 +1426,6 @@ Chiunque la conosce sarà in grado di leggere i tuoi osservati speciali, per cui
 'localtime' => 'Ora locale:',
 'timezoneuseserverdefault' => 'Usa ora predefinita del wiki ($1)',
 'timezoneuseoffset' => 'Altro (specificare differenza)',
-'timezoneoffset' => 'Differenza¹:',
 'servertime' => 'Ora del server:',
 'guesstimezone' => "Usa l'ora del browser",
 'timezoneregion-africa' => 'Africa',
@@ -1695,6 +1679,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',
@@ -2183,10 +2170,8 @@ I redirect <del>cancellati</del> sono stati corretti.',
 'protectedpages' => 'Pagine protette',
 'protectedpages-indef' => 'Solo protezioni infinite',
 'protectedpages-cascade' => 'Solo protezioni ricorsive',
-'protectedpagestext' => 'Di seguito sono elencate le pagine protette, di cui è impedita la modifica o lo spostamento',
 'protectedpagesempty' => 'Al momento non vi sono pagine protette',
 'protectedtitles' => 'Titoli protetti',
-'protectedtitlestext' => 'Non è possibile creare pagine con i titoli elencati di seguito',
 'protectedtitlesempty' => 'Al momento non esistono titoli protetti con i parametri specificati.',
 'listusers' => 'Elenco degli utenti',
 'listusers-editsonly' => 'Mostra solo utenti con dei contributi',
@@ -2317,9 +2302,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"',
@@ -2343,7 +2328,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',
@@ -2411,9 +2396,9 @@ Contatta l\'autore:
 via posta elettronica: $PAGEEDITOR_EMAIL
 sul sito: $PAGEEDITOR_WIKI
 
-Non verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.
+Non verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina dopo aver effettuato l\'accesso. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.
 
-             Il sistema di notifica di {{SITENAME}}, al tuo servizio
+Il sistema di notifica di {{SITENAME}}, al tuo servizio
 
 --
 Per modificare le impostazioni delle notifiche via posta elettronica, visita 
@@ -2677,7 +2662,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:',
@@ -3039,7 +3024,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',
@@ -3686,10 +3671,6 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => "Priorità definite dal'utente ($1)",
 
-# External editor support
-'edit-externally' => 'Modifica questo file usando un programma esterno',
-'edit-externally-help' => '(Per maggiori informazioni consultare le [https://www.mediawiki.org/wiki/Manual:External_editors istruzioni])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutte',
 'namespacesall' => 'tutti',
@@ -3703,7 +3684,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,
@@ -3926,10 +3907,9 @@ Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revi
 
 # Special:SpecialPages
 'specialpages' => 'Pagine speciali',
-'specialpages-note' => '----
-* Pagine speciali non riservate.
-* <span class="mw-specialpagerestricted">Pagine speciali riservate ad alcune categorie di utenti.</span>
-* <span class="mw-specialpagecached">Pagine speciali disponibili in versione cache (potrebbero essere obsolete).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Pagine speciali non riservate.
+* <span class="mw-specialpagerestricted">Pagine speciali riservate ad alcune categorie di utenti.</span>',
 'specialpages-group-maintenance' => 'Resoconti di manutenzione',
 'specialpages-group-other' => 'Altre pagine speciali',
 'specialpages-group-login' => 'Accesso / creazione utenze',
@@ -4141,4 +4121,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 d1c5047..6f2f3c6 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( '短いページ' ),
@@ -525,7 +526,6 @@ $messages = array(
 'qbedit' => '編集',
 'qbpageoptions' => 'このページについて',
 'qbmyoptions' => '自分のページ',
-'qbspecialpages' => '特別ページ',
 'faq' => 'よくある質問と回答',
 'faqpage' => 'Project:よくある質問と回答',
 
@@ -642,12 +642,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' => '編集',
@@ -748,9 +746,6 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'perfcachedts' => '以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。',
 'querypage-no-updates' => 'ページの更新は無効になっています。
 以下のデータの更新は現在行われていません。',
-'wrong_wfQuery_params' => 'wfQuery() のパラメーターが無効です<br />
-関数: $1<br />
-クエリ: $2',
 'viewsource' => 'ソースを表示',
 'viewsource-title' => '$1のソースを表示',
 'actionthrottled' => '操作が速度規制されました',
@@ -782,7 +777,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''",
@@ -795,7 +791,7 @@ $2',
 ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
 'welcomeuser' => 'ようこそ、$1さん!',
 'welcomecreation-msg' => 'アカウントが作成されました。
-[[Special:Preferences|{{SITENAME}}の個人設定]]の変更も忘れないようにしてください。',
+お好みで[[Special:Preferences|{{SITENAME}}の個人設定]]を変更できます。',
 'yourname' => '利用者名:',
 'userlogin-yourname' => '利用者名',
 'userlogin-yourname-ph' => '利用者名を入力',
@@ -864,9 +860,9 @@ $2',
 {{SITENAME}}では利用者のログインに Cookie を使用します。
 ご使用のブラウザーでは Cookie が無効になっています。
 Cookie を有効にしてから、新しい利用者名とパスワードでログインしてください。',
-'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
-Cookieを無効にしているようです。
-Cookieを有効にしてから、もう一度試してください。',
+'nocookieslogin' => '{{SITENAME}}ではログインに Cookie を使用します。
+Cookie を無効にしているようです。
+Cookie を有効にしてから、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
 Cookieを有効にしていることを確認して、このページを再読込してもう一度試してください。',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
@@ -887,7 +883,7 @@ Cookieを有効にしていることを確認して、このページを再読
 'passwordtooshort' => 'パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。',
 'password-name-match' => 'パスワードは利用者名とは異なる必要があります。',
 'password-login-forbidden' => 'この利用者名とパスワードの使用は禁止されています。',
-'mailmypassword' => '新しいパスワードをメールで送信',
+'mailmypassword' => 'パスワードを再設定',
 'passwordremindertitle' => '{{SITENAME}}の仮パスワード通知',
 'passwordremindertext' => '誰か (おそらくあなた) が IP アドレス $1 から{{SITENAME}} ($4) のログイン用パスワードの再発行を申請しました。
 利用者「$2」の仮パスワードが作成され「$3」に設定されました。
@@ -961,8 +957,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' => 'メール機能は、このウィキでは無効化されています。',
@@ -1468,12 +1464,8 @@ $1",
 # Search results
 'searchresults' => '検索結果',
 'searchresults-title' => '「$1」の検索結果',
-'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' => 'ページ本文と一致',
 'notextmatches' => 'どのページ本文とも一致しませんでした',
 'prevn' => '前の$1件',
@@ -1482,10 +1474,8 @@ $1",
 'nextn-title' => '次の{{PLURAL:$1|$1件}}',
 'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
 'viewprevnext' => '($1{{int:pipe-separator}}$2) ($3 件) を表示',
-'searchmenu-legend' => '検索オプション',
 'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
 'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
 'searchprofile-articles' => '本文ページ',
 'searchprofile-project' => 'ヘルプとプロジェクトページ',
 'searchprofile-images' => 'マルチメディア',
@@ -1513,14 +1503,10 @@ $1",
 'showingresults' => "'''$2''' 件目以降の最大 {{PLURAL:$1|'''$1''' 件の結果}}を表示しています。",
 'showingresultsnum' => "'''$2''' 件目以降の {{PLURAL:$3|'''$3''' 件の結果}}を表示しています。",
 'showingresultsheader' => "「'''$4'''」の検索結果 {{PLURAL:$5|'''$3''' 件中の '''$1''' 件目|'''$3''' 件中の '''$1''' 件目から '''$2''' 件目}}",
-'nonefound' => "'''注意:''' 既定では一部の名前空間のみを検索します。
-''all:''を前に付けると、すべて (トークページやテンプレートなどを含む) を対象にできます。検索する名前空間を前に付けることもできます。",
 'search-nonefound' => '問い合わせに合致する検索結果はありませんでした。',
-'powersearch' => '高度な検索',
 'powersearch-legend' => '高度な検索',
 'powersearch-ns' => '名前空間を指定して検索:',
 'powersearch-redir' => '転送ページを含める',
-'powersearch-field' => '検索対象',
 'powersearch-togglelabel' => 'チェックを入れる:',
 'powersearch-toggleall' => 'すべて',
 'powersearch-togglenone' => 'すべて外す',
@@ -1534,8 +1520,7 @@ $1",
 'preferences' => '個人設定',
 'mypreferences' => '個人設定',
 'prefs-edits' => '編集回数:',
-'prefsnologin' => 'ログインしていません',
-'prefsnologintext' => '個人設定を変更するためには<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ログイン]</span>する必要があります。',
+'prefsnologintext2' => '個人設定を変更するには$1してください。',
 'changepassword' => 'パスワードの変更',
 'prefs-skin' => '外装',
 'skin-preview' => 'プレビュー',
@@ -1559,7 +1544,6 @@ $1",
 'prefs-email' => 'メールの設定',
 'prefs-rendering' => '表示',
 'saveprefs' => '保存',
-'resetprefs' => '保存していない変更を破棄',
 'restoreprefs' => 'すべて初期設定に戻す (すべての節について)',
 'prefs-editing' => '編集',
 'rows' => '行数:',
@@ -1580,7 +1564,6 @@ $1",
 'localtime' => 'ローカルの時刻:',
 'timezoneuseserverdefault' => 'ウィキの既定を使用 ($1)',
 'timezoneuseoffset' => 'その他 (時差を指定)',
-'timezoneoffset' => '時差¹:',
 'servertime' => 'サーバーの時刻:',
 'guesstimezone' => 'ブラウザーの設定から入力',
 'timezoneregion-africa' => 'アフリカ',
@@ -1841,6 +1824,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以降の更新を表示する',
@@ -2362,10 +2348,8 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'protectedpages' => '保護されているページ',
 'protectedpages-indef' => '無期限保護のみ',
 'protectedpages-cascade' => 'カスケード保護のみ',
-'protectedpagestext' => '以下のページは移動や編集が禁止されています',
 'protectedpagesempty' => '指定した条件で保護中のページは現在ありません。',
 'protectedtitles' => '作成保護されているページ名',
-'protectedtitlestext' => '以下のページは新規作成が禁止されています',
 'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
 'listusers' => '利用者一覧',
 'listusers-editsonly' => '投稿記録のある利用者のみを表示',
@@ -2593,9 +2577,9 @@ $PAGEINTRO $NEWPAGE
 メール: $PAGEEDITOR_EMAIL
 ウィキ: $PAGEEDITOR_WIKI
 
-このページを訪れない限り、これ以上の活動に対する通知は送信されません。ウォッチリスト内のすべてのページについて、通知を再設定することもできます。
\83­ã\82°ã\82¤ã\83³ã\81\97ã\81\9fç\8a¶æ\85\8bã\81§ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92訪ã\82\8cã\81ªã\81\84é\99\90ã\82\8aã\80\81ã\81\93ã\82\8c以ä¸\8aã\81®æ´»å\8b\95ã\81«å¯¾ã\81\99ã\82\8bé\80\9aç\9f¥ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¾ã\81\9bã\82\93ã\80\82ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88å\86\85ã\81®ã\81\99ã\81¹ã\81¦ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¤ã\81\84ã\81¦ã\80\81é\80\9aç\9f¥ã\82\92å\86\8d設å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\82\82ã\81§ã\81\8dã\81¾ã\81\99ã\80\82
 
-                         {{SITENAME}}通知システム
+{{SITENAME}}通知システム
 
 --
 メール通知の設定は、以下のページで変更してください:
@@ -3974,10 +3958,6 @@ Variants for Chinese language
 'exif-urgency-high' => '高 ($1)',
 'exif-urgency-other' => '利用者定義の優先度 ($1)',
 
-# External editor support
-'edit-externally' => '外部アプリケーションを使用してこのファイルを編集',
-'edit-externally-help' => '(詳しくは[https://www.mediawiki.org/wiki/Manual:External_editors 設定手順]をご覧ください)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'すべて',
 'namespacesall' => 'すべて',
@@ -4086,6 +4066,7 @@ $5
 'pipe-separator' => '&#32;|&#32;',
 'word-separator' => '&#32;',
 'parentheses' => '($1)',
+'quotation-marks' => '「$1」',
 
 # Multipage image navigation
 'imgmultipageprev' => '&larr;前ページ',
@@ -4286,8 +4267,8 @@ MediaWikiは、有用であることを期待して配布されていますが
 
 # Special:SpecialPages
 'specialpages' => '特別ページ',
-'specialpages-note' => '----
-* 通常の特別ページ
+'specialpages-note-top' => '凡例',
+'specialpages-note' => '* 通常の特別ページ
 * <span class="mw-specialpagerestricted">制限されている特別ページ</span>',
 'specialpages-group-maintenance' => 'メンテナンス報告',
 'specialpages-group-other' => 'その他の特別ページ',
@@ -4501,4 +4482,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..a38376c 100644 (file)
@@ -155,7 +155,6 @@ Lef aaf dif afta pofaamin ruolbak',
 'qbedit' => 'Edit',
 'qbpageoptions' => 'Dis piej',
 'qbmyoptions' => 'Mi piejdem',
-'qbspecialpages' => 'Peshal piejdem',
 'faq' => 'FAK',
 'faqpage' => 'Project:FAK',
 
@@ -270,8 +269,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',
@@ -359,9 +356,6 @@ Imaita aredi diliit bai smadi els.',
 'perfcachedts' => 'Di falarin dieta kiash, ahn laas opdiet $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Opdiet fi dis piej korantli disiebl.
 Dieta ya no go rifresh fi nou.',
-'wrong_wfQuery_params' => 'Inkarek paramita tu wfQuery()<br />
-Fongshan: $1<br />
-Kwieri: $2',
 'viewsource' => 'Vyuu Suos',
 'actionthrottled' => 'Akshan chratl',
 'actionthrottledtext' => 'Az anti-spam meja, yu limit frahn pofaam dis akshan tomoch taim ina shaat spies a taim, ahn yu exiid di limit.
@@ -688,10 +682,6 @@ Lejen: '''({{int:cur}})''' = difrans wid lietis rivijan, '''({{int:last}})''' =
 # Search results
 'searchresults' => 'Saach rizolt',
 'searchresults-title' => 'Saach rizolt fi "$1"',
-'searchresulttext' => 'Fi muo infamieshan bout saachin {{SITENAME}}, si [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Yu saach fi \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|aal piej taat wid "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal piej wa lingk tu "$1"]])',
-'searchsubtitleinvalid' => "Yu saach fi '''$1'''",
-'notitlematches' => 'No piej taikl mach',
 'notextmatches' => 'No piej tex mach',
 'prevn' => 'priivos {{PLURAL:$1|$1}}',
 'nextn' => 'nex {{PLURAL:$1|$1}}',
@@ -703,13 +693,9 @@ Lejen: '''({{int:cur}})''' = difrans wid lietis rivijan, '''({{int:last}})''' =
 'search-interwiki-caption' => 'Sista prajek',
 'search-interwiki-default' => '$1 rizoltdem:',
 'search-interwiki-more' => '(muo)',
-'nonefound' => "'''Nuot''': Onggl som niemspies saach bai difaalt.
-Chrai priifix yu kwieri wid ''all:'' fi saach aal kantent (inkluudn taak piej, templit, esechra), ar yuuz di dizaya niemspies fi priifix.",
-'powersearch' => 'Advans saach',
 'powersearch-legend' => 'Advans saach',
 'powersearch-ns' => 'Saach ina niemspies:',
 'powersearch-redir' => 'Lis riidirek',
-'powersearch-field' => 'Saach fi',
 
 # Preferences page
 'preferences' => 'Prefrens',
@@ -1065,10 +1051,6 @@ Ada wandem wi aid bai difaalt.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Yuuz extoernal aplikieshan fi edit dis fail',
-'edit-externally-help' => '(Si di [https://www.mediawiki.org/wiki/Manual:External_editors setop inschrokshan] fi muo infamieshan)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aal',
 'namespacesall' => 'aal',
index 4fce946..4ba87d6 100644 (file)
@@ -199,7 +199,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Kaca iki',
 'qbmyoptions' => 'Opsiku',
-'qbspecialpages' => 'Kaca-kaca astaméwa',
 'faq' => 'FAQ (Pitakonan sing kerep diajokaké)',
 'faqpage' => 'Project:FAQ',
 
@@ -315,8 +314,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}}',
@@ -403,7 +400,6 @@ Ora ana alesané.",
 'perfcached' => 'Data iki mung dijupuk saka papan singgahan lan mungkin ora kaanyaran. Maksimum {{PLURAL:$1|sak asil|$1 asil}} sumadhiya nèng papan singgahan.',
 'perfcachedts' => 'Data iki mung dijupuk saka papan singgahan lan mungkin dianyari pungkasan $1. Maksimum {{PLURAL:$4|sak asil|$4 asil}} sumadhiya nèng papan singgahan.',
 'querypage-no-updates' => 'Update saka kaca iki lagi dipatèni. Data sing ana ing kéné saiki ora bisa bakal dibalèni unggah manèh.',
-'wrong_wfQuery_params' => 'Parameter salah menyang wfQuery()<br />Fungsi: $1<br />Panyuwunan: $2',
 'viewsource' => 'Tuduhna sumber',
 'viewsource-title' => 'Delok sumberé $1',
 'actionthrottled' => 'Tindakan diwatesi',
@@ -1002,12 +998,8 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => 'Kasil panggolèkan',
 'searchresults-title' => 'Kasil panggolèkan saka "$1"',
-'searchresulttext' => 'Kanggo informasi sabanjuré ngenani panggolèkan ing {{SITENAME}}, mangga mirsani [[{{MediaWiki:Helppage}}|kaca pitulung]].',
-'searchsubtitle' => 'Panjenengan nggolèki \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kabèh kaca sing diwiwiti kanthi "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kabèh kaca sing kagandhèng karo/menyang "$1"]])',
-'searchsubtitleinvalid' => "Panjenengan nggolèki '''$1'''",
 'toomanymatches' => "Olèhé panjenengan golèk ngasilaké kakèhan pituwas, mangga nglebokaké ''query'' liyané",
 'titlematches' => 'Irah-irahan artikel sing cocog',
-'notitlematches' => 'Ora ana irah-irahan artikel sing cocog',
 'textmatches' => 'Tèks artikel sing cocog',
 'notextmatches' => 'Ora ana tèks kaca sing cocog',
 'prevn' => '{{PLURAL:$1|$1}} sadurungé',
@@ -1016,10 +1008,8 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => '$1 {{PLURAL:$1|asil|asil}} sabanjuré',
 'shown-title' => 'Tampilaké $1 {{PLURAL:$1|asil|asil}} saben kaca',
 'viewprevnext' => 'Deleng ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilihan panggolèkan',
 'searchmenu-exists' => "'''Ana kaca kanthi jeneng \"[[\$1]]\" ing wiki iki'''",
 'searchmenu-new' => "'''Gawé kaca \"[[:\$1]]\" ing wiki iki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tlusuri kaca-kaca kanthi tembung-wiwitan iki]]',
 'searchprofile-articles' => 'Kaca isi',
 'searchprofile-project' => 'Kaca pitulung lan proyèk',
 'searchprofile-images' => 'Multimedia',
@@ -1047,13 +1037,10 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'showingresults' => "Ing ngisor iki dituduhaké {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, wiwitané saking #<strong>$2</strong>.",
 'showingresultsnum' => "Ing ngisor iki dituduhaké {{PLURAL:$3|'''1''' kasil|'''$3''' kasil}}, wiwitané saka #<strong>$2</strong>.",
 'showingresultsheader' => "{{PLURAL:$5|Asil '''$1''' saka '''$3'''|Asil '''$1 - $2''' saka '''$3'''}} kanggo '''$4'''",
-'nonefound' => "'''Cathetan''': Namung sawetara bilik nama sing digolèki sacara baku. Coba seselana mawa awalan ''all:'' kanggo golèk kabèh isi (kalebu kaca dhiskusi, cithakan lsp.), utawa nganggo bilik nama sing dipèngèni minangka préfiks.",
 'search-nonefound' => "Ora ana kasil sing cocog karo pitakonan (''query'').",
-'powersearch' => 'Golèk (ing tataran sing luwih dhuwur/maju)',
 'powersearch-legend' => "Panggolèkan sabanjuré (''advance search'')",
 'powersearch-ns' => 'Panggolèkan ing ruang jeneng:',
 'powersearch-redir' => 'Pratélan pangalihan',
-'powersearch-field' => 'Nggolèki',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Kabèh',
 'powersearch-togglenone' => 'Ora ana',
@@ -1064,8 +1051,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',
-'prefsnologintext' => 'Panjenengan kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}| mlebu log]</span> kanggo ngowahin préferènsi njenengan.',
 'changepassword' => 'Ganti tembung sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratilik',
@@ -1089,7 +1074,6 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'prefs-email' => 'Opsi layang-e',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpen',
-'resetprefs' => 'Resikana owah-owahan sing ora disimpen',
 'restoreprefs' => 'Balèkna kabèh setèlan baku',
 'prefs-editing' => 'Panyuntingan',
 'rows' => 'Larikan:',
@@ -1107,7 +1091,6 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'localtime' => 'Wektu saenggon:',
 'timezoneuseserverdefault' => 'Anggo gawan wiki ($1)',
 'timezoneuseoffset' => 'Liya (jelasna prabédan)',
-'timezoneoffset' => 'Prabédan¹:',
 'servertime' => 'Wektu server:',
 'guesstimezone' => 'Isinen saka panjlajah wèb',
 'timezoneregion-africa' => 'Afrika',
@@ -1340,6 +1323,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',
@@ -1811,10 +1795,8 @@ Jeneng sing wis <del>dicorèk</del> tegesé wis rampung didandani.',
 'protectedpages' => 'Kaca sing direksa',
 'protectedpages-indef' => 'Namung pangreksan ora langgeng waé',
 'protectedpages-cascade' => 'Amung kaca rineksan kang runtut',
-'protectedpagestext' => 'Kaca-kaca sing kapacak iki direksa déning pangalihan utawa panyuntingan.',
 'protectedpagesempty' => 'Saat ini tidak ada halaman yang sedang dilindungi.',
 'protectedtitles' => 'Irah-irahan sing direksa',
-'protectedtitlestext' => 'Irah-irahan sing kapacak ing ngisor iki direksa lan ora bisa digawé',
 'protectedtitlesempty' => 'Ora ana irah-irahan utawa judhul sing direksa karo paramèter-paramèter iki.',
 'listusers' => 'Daftar panganggo',
 'listusers-editsonly' => 'Tampilaké mung panganggo sing nduwèni kontribusi',
@@ -3272,10 +3254,6 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
 'exif-urgency-high' => 'Dhuwur ($1)',
 'exif-urgency-other' => 'Prioritas sing ditetepaké panganggo ($1)',
 
-# External editor support
-'edit-externally' => 'Sunting berkas iki mawa aplikasi jaba',
-'edit-externally-help' => '(Deleng [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kabèh',
 'namespacesall' => 'kabèh',
@@ -3473,8 +3451,7 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 
 # Special:SpecialPages
 'specialpages' => 'Kaca istiméwa',
-'specialpages-note' => '----
-* Kaca astamiwa biasa.
+'specialpages-note' => '* Kaca astamiwa biasa.
 * <span class="mw-specialpagerestricted">Kaca astamiwa kawatesan.</span>',
 'specialpages-group-maintenance' => 'Lapuran pangopènan',
 'specialpages-group-other' => 'Kaca-kaca astaméwa liyané',
@@ -3664,4 +3641,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 16a1f90..25341f2 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( 'მიწერა_მომხმარებელს' ),
@@ -328,7 +326,6 @@ $messages = array(
 'qbedit' => 'რედაქტირება',
 'qbpageoptions' => 'ეს გვერდი',
 'qbmyoptions' => 'ჩემი გვერდები',
-'qbspecialpages' => 'სპეციალური გვერდები',
 'faq' => 'ხშირი შეკითხვები',
 'faqpage' => 'Project:ხშირი შეკითხვები',
 
@@ -447,8 +444,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'მოძიებულია „$1“-დან',
 'youhavenewmessages' => 'თქვენ გაქვთ $1 ($2).',
-'newmessageslink' => 'ახალი შეტყობინებები',
-'newmessagesdifflink' => 'განსხვავება წინა ვერსიასთან',
 'youhavenewmessagesfromusers' => 'თქვენ გაქვთ $1 {{PLURAL:$3|სხვა მომხმარებლისგან|$3 მომხმარებლებისგან}} ($2).',
 'youhavenewmessagesmanyusers' => 'თქვენ გაქვთ $1 ბევრი მომხმარებლისგან ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|ახალი შეტყობინება}}',
@@ -548,9 +543,6 @@ $1',
 'perfcachedts' => 'შემდეგი მონაცემები აღებულია ქეშიდან, უკანასკნელად ის განახლდა $1. ქეშში ინახება მაქსიმუმ $4 {{PLURAL:$4|ჩანაწერი}}.',
 'querypage-no-updates' => 'ამ გვერდის განახლება გათიშულია.
 წარმოდგენილი მონაცემები არ განახლდება.',
-'wrong_wfQuery_params' => 'არასწორი პარამეტრები ფუნქციისათვის wfQuery()<br />
-ფუნქცია: $1<br />
-მოთხოვნა: $2',
 'viewsource' => 'იხილე წყარო',
 'viewsource-title' => 'იხილეთ წყარო გვერდისთვის $1',
 'actionthrottled' => 'სიჩქარის შეზღუდვა.',
@@ -1163,7 +1155,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) ადმინისტრატორისგან მანამ, სანამ არ აირჩევთ დამალვის სხვა პარამეტრებს.',
@@ -1231,12 +1223,8 @@ $1",
 # Search results
 'searchresults' => 'ძიების შედეგები',
 'searchresults-title' => 'ძიების შედეგები "$1"',
-'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' => 'გვერდის ტექსტი შესაბამისია',
 'notextmatches' => 'არ შეესაბამება არცერთი გვერდის ტექსტი',
 'prevn' => 'წინა {{PLURAL:$1|$1}}',
@@ -1245,10 +1233,8 @@ $1",
 'nextn-title' => 'შემდეგი $1 {{PLURAL:$1|რეზულტატი|რეზულტატები}}',
 'shown-title' => 'აჩვენეთ $1 {{PLURAL:$1|რეზულტატი|რეზულტატი}} გვერდზე',
 'viewprevnext' => 'იხილე  ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'ძიების დაწყობა:',
 'searchmenu-exists' => "'''ამ ვიკიპროექტში არის გვერდი „[[:$1]]“'''",
 'searchmenu-new' => "'''შექმენით გვერდი „[[:$1]]“ ამ ვიკიში!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|აჩვენეთ გვერდები ამ პრეფიქსით]]',
 'searchprofile-articles' => 'ძირითადი გვერდები',
 'searchprofile-project' => 'დახმარების და პროექტის გვერდები',
 'searchprofile-images' => 'მულტიმედია',
@@ -1276,14 +1262,10 @@ $1",
 'showingresults' => 'ქვემოთ იხილეთ <b>$1</b>-მდე შედეგი დაწყებული #<b>$2</b>-იდან.',
 'showingresultsnum' => 'ქვემოთ იხილეთ <b>$3</b> შედეგი დაწყებული #<b>$2</b>-იდან.',
 'showingresultsheader' => "{{PLURAL:$5|რეზულტატი '''$1'''  '''$3'''-დან|რეზულტატები '''$1 — $2''' -დან '''$3'''}}  '''$4'''-თვის",
-'nonefound' => "'''შენიშვნა''': სტანდარტული ძიება ყველა სახელთა სივრცეში არ ხორციელდება.
-მოსაძიებელ სიტყვას ან სიტყვათა ჯგუფს წინ წაუმძღვარეთ ''all:'' იმისათვის, რათა ძიება ყველგან განხორციელდეს (განხილვის გვერდების, თარგების და ა.შ. ჩათვლით) ან მიუთითეთ თქვენთვის სასურველი სახელთა სივრცე.",
 'search-nonefound' => 'მოთხოვნის შესაბამისობა არ არის ნაპოვნი.',
-'powersearch' => 'ძიება',
 'powersearch-legend' => 'გაფართოებული ძიება',
 'powersearch-ns' => 'ძიება სახელთა სივრცეებში:',
 'powersearch-redir' => 'გადამისამართებების სიის ჩვენება',
-'powersearch-field' => 'მოძებნე',
 'powersearch-togglelabel' => 'მონიშვნა:',
 'powersearch-toggleall' => 'ყველა',
 'powersearch-togglenone' => 'არაფერი',
@@ -1295,8 +1277,6 @@ $1",
 'preferences' => 'კონფიგურაცია',
 'mypreferences' => 'კონფიგურაცია',
 'prefs-edits' => 'რედაქციების რაოდენობა:',
-'prefsnologin' => 'შესული არ ხართ',
-'prefsnologintext' => 'თქვენ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} რეგისტრირებული უნდა იყოთ]</span> მომხმარებლის კონფიგურაციის შესაცვლელად.',
 'changepassword' => 'პაროლის შეცვლა',
 'prefs-skin' => 'გარეკანი',
 'skin-preview' => 'წინასწარი გადახედვა',
@@ -1320,7 +1300,6 @@ $1",
 'prefs-email' => 'ელ-ფოსტის პარამეტრები',
 'prefs-rendering' => 'იერსახე',
 'saveprefs' => 'შენახვა',
-'resetprefs' => 'გადატვირთვა',
 'restoreprefs' => 'ყველა საწყისი პარამეტრის აღდგენა (ყველა სექციაში)',
 'prefs-editing' => 'რედაქტირება',
 'rows' => 'რიგები:',
@@ -1338,7 +1317,6 @@ $1",
 'localtime' => 'ადგილობრივი დრო:',
 'timezoneuseserverdefault' => 'გამოიყენე ნაგულისხმევი პარამეტრები ($1)',
 'timezoneuseoffset' => 'სხვა (მისათითებელი)',
-'timezoneoffset' => 'განსხვავება¹:',
 'servertime' => 'სერვერის დრო:',
 'guesstimezone' => 'ბრაუზერიდან შევსება',
 'timezoneregion-africa' => 'აფრიკა',
@@ -1589,6 +1567,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-დან',
@@ -1995,7 +1974,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' => 'სათვალავში არ მიიღება არარსებული და სამუშაო გვერდების გადახედვა',
@@ -2075,10 +2054,8 @@ $1',
 'protectedpages' => 'დაცული გვერდები',
 'protectedpages-indef' => 'მხოლოდ უვადო დაცვები',
 'protectedpages-cascade' => 'მხოლოდ კასკადური დაცვა',
-'protectedpagestext' => 'შემდეგი გვერდები დაცულია გადატანისა თუ ცვლილებებისგან.',
 'protectedpagesempty' => 'ამ დროისთვის არ არსებობს დაცული გვერდები მოთხოვნილი პარამეტრებით.',
 'protectedtitles' => 'დაცული სათაურები',
-'protectedtitlestext' => 'შემდეგი სახელების გამოყენება არ შეიძლება',
 'protectedtitlesempty' => 'ამ დროისთვის არ არსებობს მოთხოვნილი გვერდები მოცემული პარამეტრებით.',
 'listusers' => 'მომხმარებლების სია',
 'listusers-editsonly' => 'აჩვენთ მხოლოდ ის მომხმარებლები, რომლებსაც ერთი შესწორება აქვს გაკეთებული.',
@@ -2503,7 +2480,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' => 'სახელთა სივრცე:',
@@ -3632,10 +3608,6 @@ $8',
 'exif-urgency-high' => 'მაღალი ($1)',
 'exif-urgency-other' => 'მომხმარებლის მიერ განსაზღვრული პრიორიტეტი ($1)',
 
-# External editor support
-'edit-externally' => 'ამ ფაილის რედაქტირებისას გამოიყენეთ გარე პროგრამა',
-'edit-externally-help' => '(დაწვრილებითი ინფორმაციისთვის იხილეთ [https://www.mediawiki.org/wiki/Manual:External_editors ჩადგმის ინსტრუქციები])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ყველა',
 'namespacesall' => 'ყველა',
@@ -3900,8 +3872,7 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 
 # Special:SpecialPages
 'specialpages' => 'სპეციალური გვერდები',
-'specialpages-note' => '----
-* ჩვეულებრივი სპეცგვერდები.
+'specialpages-note' => '* ჩვეულებრივი სპეცგვერდები.
 * <span class="mw-specialpagerestricted">სპეცგვერდები შეზღუდული მისაწვდომობით.</span>',
 'specialpages-group-maintenance' => 'ტექნიკური მომსახურების ანგარიშები',
 'specialpages-group-other' => 'სხვა სპეციალური გვერდები',
@@ -4104,4 +4075,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 dc1d76a..1b5ac9c 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' ),
@@ -282,7 +281,6 @@ $messages = array(
 'qbedit' => "O'zgertiw",
 'qbpageoptions' => 'Usı bet',
 'qbmyoptions' => "Menin' betlerim",
-'qbspecialpages' => 'Arnawlı betler',
 'faq' => 'KBS',
 'faqpage' => 'Project:KBS',
 
@@ -385,8 +383,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",
@@ -469,9 +465,6 @@ Bunı basqa birew aldınlaw o\'shigen bolıwı mu\'mkin.',
 'perfcachedts' => "To'mendegi mag'lıwmat keshlengen, aqırg'ı keshlengen waqtı: $1. Keshte en' ko'bi menen {{PLURAL:$4|juwap|$4 juwap}} saqalanadı.",
 'querypage-no-updates' => "Bul bettin' jan'alanıwı ha'zirshe o'shirilgen.
 Bul jerde keltirilgen mag'lıwmatlar o'zgertilmeydi.",
-'wrong_wfQuery_params' => 'wfQuery() funktsiyası ushın natuwrı parametrler berilgen<br />
-Funktsiya: $1<br />
-Soraw: $2',
 'viewsource' => "Deregin ko'riw",
 'actionthrottled' => "Ha'reket toqtatıldı",
 'actionthrottledtext' => "Spamg'a qarsı gu'res esabında, bunday ha'reketti qısqa waqıtta dım ko'p ma'rte bejeriwin'iz sheklenedi, ha'mde siz usı limitten o'tip ketkensiz.
@@ -796,21 +789,15 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
 # Search results
 'searchresults' => "İzlew na'tiyjeleri",
 'searchresults-title' => '"$1" sorawnaması boyınsha tabılg\'an na\'tiyjeler',
-'searchresulttext' => "{{SITENAME}} saytında izlew haqqında ko'birek mag'lıwmat alg'ın'ız kelse, [[{{MediaWiki:Helppage}}|{{int:help}} betine]] o'tip qarap ko'rin'.",
-'searchsubtitle' => 'İzlegenin\'iz: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" baslanıwshı barlıq betler]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" siltewshi barlıq betler]])',
-'searchsubtitleinvalid' => "'''$1''' ushın izlegenin'iz",
 'toomanymatches' => "Dım ko'p sa'ykeslikler qaytarıldı, basqa sorawdı isletip ko'rin'",
 'titlematches' => "Bet ataması sa'ykes keledi",
-'notitlematches' => 'Hesh qanday bet ataması tuwra kelmedi',
 'textmatches' => "Bet tekstinin' tuwra kelgenleri",
 'notextmatches' => 'Hesh qanday bet teksti tuwra kelmedi',
 'prevn' => "aldıng'ı {{PLURAL:$1|$1}}",
 'nextn' => 'keyingi {{PLURAL:$1|$1}}',
 'viewprevnext' => "Ko'riw: ($1 {{int:pipe-separator}} $2) ($3)",
-'searchmenu-legend' => 'İzlew sazlawları',
 'searchmenu-exists' => "'''Bul wikide \"[[:\$1]]\" atamalı bet bar'''",
 'searchmenu-new' => "'''Bul wikide \"[[:\$1]]\" betin jaratıw!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Usı prefiks penen baslanıwshı betlerdi ko'rset]]",
 'searchprofile-articles' => "Mag'lıwmat betleri",
 'searchprofile-project' => "Ja'rdem ha'm Proekt betleri",
 'searchprofile-images' => 'Multimediya',
@@ -835,22 +822,16 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
 'searchall' => 'barlıq',
 'showingresults' => "To'mende '''$2''' ornınan baslap {{PLURAL:$1|'''1''' na'tiyje|'''$1''' shekemgi na'tiyjeler}} ko'rsetilgen.",
 'showingresultsnum' => "To'mende '''$2''' ornınan baslap {{PLURAL:$3|'''1''' na'tiyje|'''$3''' na'tiyje}} ko'rsetilgen.",
-'nonefound' => "'''Esletpe''': Defolt boyınsha tek g'ana sheklengen isimler ko'pliginen izlenedi.
-Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.b.) izlew ushın izlewin'izdi ''all:'' prefiksi menen baslan', yamasa qa'legen isimler ko'pligin prefiks esabında qollanın'.",
 'search-nonefound' => "Sorawg'a sa'ykes na'tiyje tabılmadı.",
-'powersearch' => "Ken'eytilgen izlew",
 'powersearch-legend' => "Ken'eytilgen izlew",
 'powersearch-ns' => "Usı isimler ko'pliginen izlew:",
 'powersearch-redir' => "Qayta bag'ıtlawshı betlerdi ko'rset",
-'powersearch-field' => "İzlenetug'ın so'z (yamasa so'z dizbegi):",
 'search-external' => 'Sırtqı izlewshi',
 
 # Preferences page
 'preferences' => 'Sazlawlar',
 'mypreferences' => "Menin' sazlawlarım",
 'prefs-edits' => "O'zgertiwler sanı:",
-'prefsnologin' => 'Kirilmegen',
-'prefsnologintext' => 'Sazlawların\'ızdı ornatıw ushın <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kiriwin\'iz]</span> sha\'rt.',
 'changepassword' => "Paroldi o'zgertiw",
 'prefs-skin' => "Sırtqı ko'rinis",
 'skin-preview' => 'Korip al',
@@ -866,7 +847,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'prefs-misc' => 'Basqa',
 'prefs-resetpass' => "Paroldi o'zgertiw",
 'saveprefs' => 'Saqla',
-'resetprefs' => "Saqlanbag'an o'zgerislerdi o'shir",
 'prefs-editing' => "O'zgertiw",
 'rows' => 'Qatarlar:',
 'columns' => "Bag'analar:",
@@ -879,7 +859,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'localtime' => 'Jergilikli waqıt:',
 'timezoneuseserverdefault' => "Serverdin' baslang'ısh sazlawların qollanıw: ($1)",
 'timezoneuseoffset' => "Basqa (o'zgeristi ko'rsetin')",
-'timezoneoffset' => "Saat o'zgerisi¹:",
 'servertime' => 'Server waqtı:',
 'guesstimezone' => 'Brauzerden alıp toltırıw',
 'allowemail' => 'Basqalardan xat qabıllawdı qos',
@@ -1038,6 +1017,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",
@@ -1268,10 +1248,8 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'protectedpages' => "Qorg'alg'an betler",
 'protectedpages-indef' => "Tek belgisiz qorg'awlar",
 'protectedpages-cascade' => "Tek kaskadlı qorg'awlar",
-'protectedpagestext' => "To'mendegi betler ko'shiriw ha'm o'zgertiwden qorg'alg'an",
 'protectedpagesempty' => "Usı parametrler menen ha'zir hesh bet qorg'almag'an",
 'protectedtitles' => "Qorg'alg'an atamalar",
-'protectedtitlestext' => "To'mendegi atamalar jaratılıwdan qorg'alg'an",
 'listusers' => 'Paydalanıwshı dizimi',
 'listusers-editsonly' => "Tek o'zgeris kiritken paydalanıwshılardı ko'rset",
 'usereditcount' => "$1 {{PLURAL:$1|o'zgeris|o'zgeris}}",
@@ -1802,10 +1780,6 @@ Eger fayl jaratılg'anınan keyin o'zgertilgen bolsa, geybir parametrleri o'zger
 'exif-imagedescription' => "Su'wret ataması",
 'exif-artist' => 'Avtor',
 
-# External editor support
-'edit-externally' => "Bul fayldı sırtqı bag'darlama arqalı o'zgertiw",
-'edit-externally-help' => "(Ko'birek mag'lıwmat ushın [https://www.mediawiki.org/wiki/Manual:External_editors ornatıw jolların] qaran')",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => "ha'mmesin",
 'namespacesall' => "ha'mmesi",
index c04f0f2..cefd07b 100644 (file)
@@ -186,7 +186,6 @@ $messages = array(
 'qbedit' => 'Beddel',
 'qbpageoptions' => 'Asebter-agi',
 'qbmyoptions' => 'isebtar inu',
-'qbspecialpages' => 'isebtar usligen',
 'faq' => 'Isteqsiyen',
 'faqpage' => 'Project:Isteqsiyen',
 
@@ -300,8 +299,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}}',
@@ -391,9 +388,6 @@ Ulac asefru ɣef wagi.',
 'perfcached' => 'Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Talɣut deg ukessar seg lkac, tasiwelt taneggarut n wass $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Ibeddlen n usebter-agi ur ttbanen ara tura. Tilɣa ines qrib a d-banen.',
-'wrong_wfQuery_params' => 'Imsektayen mačči ṣaḥiḥ deg wfQuery()<br />
-Tawuri: $1<br />
-Query: $2',
 'viewsource' => 'Ẓer aɣbalu',
 'viewsource-title' => 'Ẓeṛ aɣbalu n $1',
 'actionthrottled' => 'Tigawt tesɛa talast',
@@ -982,12 +976,8 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 # Search results
 'searchresults' => 'Igmad n unadi',
 'searchresults-title' => 'Igmad n unadi i "$1"',
-'searchresulttext' => 'Akken ad tessneḍ amek ara tnadiḍ deg {{SITENAME}}, ẓer [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Tnudaḍ « '''[[:$1]]''' » ([[Special:Prefixindex/$1|akkw isebtar i zwiren s « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Akkw isebtar yesɛan azday ɣer « $1 »]])",
-'searchsubtitleinvalid' => "Tnadiḍ ɣef '''$1'''",
 'toomanymatches' => 'Teceggeɛeḍ amḍan ameqqṛan n igemmaḍ, ilaq ad ceggeɛeḍ tuttra nniḍen.',
 'titlematches' => 'Ayen yecban azwel n umegrad',
-'notitlematches' => 'Ulac ayen yecban azwel n umegrad',
 'textmatches' => 'Ayen yecban azwel n usebter',
 'notextmatches' => 'ulac ayen yecban azwel n usebter',
 'prevn' => '{{PLURAL:$1|$1}} ssabeq',
@@ -996,10 +986,8 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'nextn-title' => '$1 {{PLURAL:$1|agmud n sakin|igmad n sakin}}',
 'shown-title' => 'Beqqeḍ $1 {{PLURAL:$1|agmud|igmad}} s usebter',
 'viewprevnext' => 'Ẓer ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tixtiṛiyin n unadi',
 'searchmenu-exists' => "'''Yella asebter s isem \"[[:\$1]]\" deg wiki agi.'''",
 'searchmenu-new' => "'''Snulfud asebter « [[:$1|$1]] » deg wiki agi !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Nadi isebtar i zwaren s adat agi]]',
 'searchprofile-articles' => 'Isebtar n ugbur',
 'searchprofile-project' => 'Isebtaren n tallat dɣa n usenfa',
 'searchprofile-images' => 'Agetmedia',
@@ -1027,14 +1015,10 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'showingresults' => "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg  #'''$2'''.",
 'showingresultsnum' => "Tamuli n {{PLURAL:$3|'''Yiwen''' wegmud|'''$3''' n yigmad}} seg  #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Agmud '''$1'''|Igmad '''$1–$2'''}} n '''$3''' i '''$4'''",
-'nonefound' => "'''Tamawt''' : S lexṣas, ala kra n tallunin n isemawen t-seqdacen i unadi.
-Ɛreḍ s udat ''all:'' i unadi deg akkw ugbur (ula d-isebtar n umeslay, talɣiwin, ...) naɣ seqdec tallunt n isemawen i tebɣiḍ am adat.",
 'search-nonefound' => 'Ulac igmad i usuter agi.',
-'powersearch' => 'Anadi amahlan',
 'powersearch-legend' => 'Anadi amahlan',
 'powersearch-ns' => 'Nadi deg tallunin n isemawen',
 'powersearch-redir' => 'Beqqeḍ isemmimḍen',
-'powersearch-field' => 'Nadi',
 'powersearch-togglelabel' => 'Ɛellem :',
 'powersearch-toggleall' => 'Akkw',
 'powersearch-togglenone' => 'Ulac',
@@ -1045,8 +1029,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',
-'prefsnologintext' => 'Ilaq ad iliḍ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qqeneḍ]</span> iwakken ad beddeleḍ iɣewwaren ik/im n useqdac.',
 'changepassword' => 'Beddel awal n tbaḍnit',
 'prefs-skin' => 'Aglim',
 'skin-preview' => 'Pre-timeẓriwt',
@@ -1070,7 +1052,6 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'prefs-email' => 'Tixtiṛiyin n tira',
 'prefs-rendering' => 'Tummant',
 'saveprefs' => 'Smekti',
-'resetprefs' => 'Asfeḍ n ibeddilen ur ḥrezen ara',
 'restoreprefs' => 'Err akkw azalen s lexṣas',
 'prefs-editing' => 'Abedddil',
 'rows' => 'Ijerriḍen:',
@@ -1088,7 +1069,6 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'localtime' => 'Asrag adigan :',
 'timezoneuseserverdefault' => 'Seqdec azal s lexṣas n wiki ($1)',
 'timezoneuseoffset' => 'Nniḍen (ssefru asekḥer)',
-'timezoneoffset' => 'Asekḥer n usrag¹ :',
 'servertime' => 'Asrag n uqeddac :',
 'guesstimezone' => 'Sseqdec azal n browser/explorateur',
 'timezoneregion-africa' => 'Tafriqt',
@@ -1782,10 +1762,8 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'protectedpages' => 'isebtar yettwaḥerzen',
 'protectedpages-indef' => 'Imestenen imeɣlalen kan',
 'protectedpages-cascade' => 'Imestenen s uceṛcuṛ kan',
-'protectedpagestext' => 'isebtar-agi yettwaḥerzen seg ubeddel neɣ asemmimeḍ',
 'protectedpagesempty' => 'isebtar-agi ttwaḥerzen s imsektayen -agi.',
 'protectedtitles' => 'Izwal ugdilen',
-'protectedtitlestext' => 'Izwal agi ugdilen deg usnulfu nsen',
 'protectedtitlesempty' => 'Ulac azwel yesɛan asegdel s iɣewwaren agi.',
 'listusers' => 'Umuɣ n yimseqdacen',
 'listusers-editsonly' => 'Sekned kan iseqdacen yesɛan asekcem naɣ ugar',
@@ -2809,10 +2787,6 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-urgency-low' => 'Anammum ($1)',
 'exif-urgency-high' => 'Afella ($1)',
 
-# External editor support
-'edit-externally' => 'Beddel afaylu-yagi s usnas aberrani.',
-'edit-externally-help' => 'Ẓer [https://www.mediawiki.org/wiki/Manual:External_editors taknut] iwakken ad tessneḍ kter.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'akk',
 'namespacesall' => 'akk',
index a22498a..0fbff46 100644 (file)
@@ -196,7 +196,6 @@ $messages = array(
 'qbedit' => 'Гъэтэрэзын',
 'qbpageoptions' => 'НапэкӀуэцӀым и зэгъэзэхуэгъуэр',
 'qbmyoptions' => 'Уи зэгъэзэхуэгъуэхэр',
-'qbspecialpages' => 'Специал напэкӀуэцӀхэр',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -310,8 +309,6 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Къыздырахар: "$1"',
 'youhavenewmessages' => 'КъыпхуэкӀуауэ уиӀэ $1 ($2).',
-'newmessageslink' => 'тхыгъэщIэхэр',
-'newmessagesdifflink' => 'иужьрей зэхъуэкІыныгъэр',
 'youhavenewmessagesmulti' => 'КъыпхуэкӀуауэ уиӀэ тхыгъэщӀэхэр $1 идеж',
 'editsection' => 'гъэтэрэзын',
 'editold' => 'гъэтэрэзын',
@@ -398,9 +395,6 @@ $1',
 'perfcachedts' => 'Мы Ӏохугъуэхэр кэшым къыхахэ, яужыреуэ къыщыгъэщӀэрэщӀыжар $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Мы напэкӀуэцӀым и къэгъэщӀэрэщӀыныр джыпсту теубыдауэ щытщ.
 Ӏохугъуэ мыде хэтхэр актуализациэ хъунукъым.',
-'wrong_wfQuery_params' => 'Параметыр емыкӀу wfQuery-м()<br /> 
-Функциэ: $1<br />
-ЩӀэлъэуэгъуэ: $2',
 'viewsource' => 'Хэплъэн',
 'viewsource-title' => 'НапэкӀуэцӀ $1 и япэрей тхыгъэ щытыкӀэм ухуоплъэщ',
 'actionthrottled' => 'ЩӀэхыгъэм убыдыгъэ иӀэ',
@@ -937,10 +931,6 @@ $1",
 # Search results
 'searchresults' => 'Лъыхъуэным къыхэкӀахэр',
 'searchresults-title' => 'Ммыбы "$1" и лъыхъуэным къыхэкӀахэр',
-'searchresulttext' => 'Информациэ нэхъыбэ ухуэныкъуэмэ проэктым дежь напэкӀуэцӀ лъыхъуэнымкӀэ, еплъ [[{{MediaWiki:Helppage}}|щӀэупщӀэгъуэ лъэныкъуэм]].',
-'searchsubtitle' => 'Лъыхъуэгъуэ «[[:$1]]» ([[Special:Prefixindex/$1|напэкӀуэцӀу хъуар, апхуэдэцӀэкӀэ къэжьу]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|апхуэдэцӀэм техьэхэр]])',
-'searchsubtitleinvalid' => "ЩӀэупщӀэгъуэ '''$1'''",
-'notitlematches' => 'Зэтехуэ хэткъым напэкIуэцIхэм я цIэм',
 'notextmatches' => 'Зэтехуэ хэткъым напэкIуэцIхэм кІуэцІылъхэм',
 'prevn' => 'япэ итар {{PLURAL:$1|$1}}',
 'nextn' => 'яуж кӀуэр {{PLURAL:$1|$1}}',
@@ -954,13 +944,10 @@ $1",
 'search-interwiki-caption' => 'Проэкт къыдэщӀхэр',
 'search-interwiki-default' => '$1 къыхэкӀар:',
 'search-interwiki-more' => '(иджыри)',
-'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, щапхъэхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
 'search-nonefound' => 'Узлъыхъуэм техуэу щыӀэкъым.',
-'powersearch' => 'Убгъуауэ лъыхъу',
 'powersearch-legend' => 'Убгъуауэ лъыхъу',
 'powersearch-ns' => 'ЦIэзэхэтыгъуэм щылъыхъуэн',
 'powersearch-redir' => 'ЕгъэзэкӀахэри гъэлъэгъуэн',
-'powersearch-field' => 'Лъыхъуэн',
 'powersearch-togglelabel' => 'Къыхэхын:',
 'powersearch-toggleall' => 'Псори',
 'powersearch-togglenone' => 'Зыри/пари',
@@ -970,8 +957,6 @@ $1",
 'preferences' => 'Зэгъэзэхуэпхъэхэр',
 'mypreferences' => 'Си зэгъэзэхуэгъуэхэр',
 'prefs-edits' => 'Гъэтэрэзыгъуэхэм я бжыгъэр:',
-'prefsnologin' => 'Системэм зыкъебгъэцӀыхуакъым',
-'prefsnologintext' => 'ЦӀыхухэтым и зэгъэзэхуэгъуэхэм уелэжьын щхьэкӀэ системэм <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} зыкъебгъэцӀыхун хуэй]</span>',
 'prefs-skin' => 'ЗэфӀэгъувэным и теухуапхъэ',
 'prefs-datetime' => 'Махуэмрэ зэманымрэ',
 'prefs-personal' => 'Ныбжыгъуэ къэӀохугъуэ',
@@ -1336,10 +1321,6 @@ $1",
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Файлыр гъэтэрэзын, нэгъуэщӀ программэ и сэбэпкӀэ',
-'edit-externally-help' => '(нэхъыбу еплъ [https://www.mediawiki.org/wiki/Manual:External_editors илъхьэным и тепсэлъыхьыгъуэ])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'псори',
 'namespacesall' => 'псори',
index 8277cb3..207abc0 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' => 'ربطو خط کشیدگی',
@@ -156,7 +164,6 @@ $messages = array(
 'qbedit' => 'ترمیم',
 'qbpageoptions' => 'ھیہ صفحہ',
 'qbmyoptions' => 'مہ صفحات',
-'qbspecialpages' => 'خاص صفحات',
 'faq' => 'عام معلومات',
 'faqpage' => 'Project:معلوماتِ عامہ',
 
@@ -269,8 +276,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '‘‘$1’’ نقل کاردو',
 'youhavenewmessages' => 'تہ بچے ای $1 شیر۔ ($2)',
-'newmessageslink' => 'نوغ پیغامات',
-'newmessagesdifflink' => 'تـجـدیـد مـاقـبل آخـراری فـرق',
 'youhavenewmessagesmulti' => 'ء$1 تہ بچے نوغ نوغ پیغامات شینی',
 'editsection' => 'ترمیم',
 'editold' => 'ترمیم',
@@ -609,11 +614,6 @@ $1 (صفحہ موجود نیکی)',
 # Search results
 'searchresults' => 'تلاشو نتیجہ',
 'searchresults-title' => 'نتائجِ تلاش برائے "$1"',
-'searchresulttext' => 'ویکیپیڈیا تلاشو باریا مزید معلوماتو بچے، ویکیپیڈیا تلاشو صفحہو لوڑے۔{{SITENAME}}, [[{{MediaWiki:Helppage}}|{{int:help}}]].
-{{SITENAME}}, [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'تہ تلاش برائے \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" شروع باک تمام صفحات]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" مربوط تمام صفحات]])',
-'searchsubtitleinvalid' => "تہ تلاش براۓ '''$1'''",
-'notitlematches' => 'کیہ دی مماثل عنوان صفحہ ملاو نو ھوی',
 'notextmatches' => 'ھیہ عنوانو سورا کیہ دی صفحہ موجود نیکی',
 'prevn' => 'آچھو{{PLURAL:$1|$1}}',
 'nextn' => 'پروشٹیو{{PLURAL:$1|$1}}',
@@ -644,14 +644,10 @@ $1 (صفحہ موجود نیکی)',
 'searchrelated' => 'متعلقہ',
 'searchall' => 'کھل',
 'showingresultsheader' => "{{PLURAL:$5|نتیجہ'''$1''' of '''$3'''|نتیجہ'''$1 - $2''' of '''$3'''}} بچے'''$4'''",
-'nonefound' => "'''یاددہانی''': عموماً صرف ای کما نامان تلاش کورونو بونیان۔
-تمام مواد (بشمول تبادلۂ خیال صفحات، سانچہ جات وغیران) تلاش کوریکو بچے تان استفساراری پروشٹی ''all:'' لیگاوے، یا تان پسندو نامو بطور سابقہ استعمال کورے",
 'search-nonefound' => 'استفسارو مطابقا نتائج ملاو نو ھونی.',
-'powersearch' => 'ایڈوانس تلاش',
 'powersearch-legend' => 'ایڈوانس سرچ',
 'powersearch-ns' => 'جائے ناما تلاش:',
 'powersearch-redir' => 'فہرستِ رجوع مکرر',
-'powersearch-field' => 'تلاش برائے',
 'powersearch-toggleall' => 'سف',
 
 # Preferences page
@@ -1072,11 +1068,6 @@ HTML tags لوڑے.',",
 
 'exif-dc-date' => 'تاریخ',
 
-# External editor support
-'edit-externally' => 'ھیہ مسلو ایڈیٹ کورے',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)
-(مزید معلوماتو بچے ھیہ لنکہ بوغے [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] )',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'سف',
 'namespacesall' => 'تھمامو',
index 9f16402..864e058 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Erdemaslancan
  * @author Gorizon
+ * @author Marmase
  * @author Mirzali
  */
 
@@ -193,9 +194,8 @@ $messages = array(
 'qbfind' => 'Bıvêne',
 'qbbrowse' => 'Çım ra viarne',
 'qbedit' => 'Bıvurne',
-'qbpageoptions' => 'Na pele',
+'qbpageoptions' => 'Na per',
 'qbmyoptions' => 'Pelê mı',
-'qbspecialpages' => 'Pelê xısusiy',
 'faq' => 'PZP (Persê ke zaf perşinê)',
 'faqpage' => 'Project:PZP',
 
@@ -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',
@@ -400,9 +398,6 @@ Beno ke, tede jü ya ki jêdê isareti estê ke sernameu de nêgurinê.",
 'perfcachedts' => 'Ni daey nımıteyê, u tewr peyên $1 de biyê rocaniy. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Rocane-biyaena na pele nıka cadaiyê.
 Daey ita nıka newe nêbenê.',
-'wrong_wfQuery_params' => 'Parametreo ğelet serba wfPers()<br />
-Fonksiyon: $1<br />
-Pers: $2',
 'viewsource' => 'Çımey bıvêne',
 'actionthrottled' => 'Faeliyet xenekıt',
 'actionthrottledtext' => "Berqestiya tedbirê ''anti-spam''i ra vırastena ni faeliyeti rê sıma zafê rey zemano senık de  sindor viarna ra.
@@ -710,10 +705,6 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 # Search results
 'searchresults' => 'Neticê cıfeteliyaene',
 'searchresults-title' => '"$1" rê neticê cıfeteliyaene',
-'searchresulttext' => 'Zerrê {{SITENAME}} de heqa cıfeteliyaene de serba melumat guretene, şikina qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
-'searchsubtitle' => 'Tı serba \'\'\'[[:$1]]\'\'\' cıfeteliya. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra girê ho esto]])',
-'searchsubtitleinvalid' => "Serbacıfeteliyae: '''$1'''",
-'notitlematches' => 'Qet zu serrêze de nêvêniya',
 'notextmatches' => 'Qet zu pele de nêvêniya',
 'prevn' => '{{PLURAL:$1|$1}} verên',
 'nextn' => '{{PLURAL:$1|$1}} peyên',
@@ -745,14 +736,10 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'searchrelated' => 'alaqedar',
 'searchall' => 'pêro',
 'showingresultsheader' => "'''$4''' rê {{PLURAL:$5|'''$3''' netice ra '''$1'''i|'''$1 - $2''' miyan de '''$3''' netice}}",
-'nonefound' => "'''Not''': Teyna taê namê cau jê saybiyau cı fetelino.
-Verê cıfeteliyaene de be ilawekerdena verbendê '''all:'''i ra (ebe pelunê hurênaişi, şablonu uêb.) bıcerebnê ya ki namê cayo ke wajino jê verbendi bıgurênê.",
 'search-nonefound' => 'Neticeo ke ebe perşi zubini cêno çino.',
-'powersearch' => 'Cıcêraiso hira',
 'powersearch-legend' => 'Cıcêraiso hira',
 'powersearch-ns' => 'Caunê namun de cıcêre:',
 'powersearch-redir' => 'Girêun lista ke',
-'powersearch-field' => 'Serba cı qayt ke',
 'powersearch-togglelabel' => 'Weçine:',
 'powersearch-toggleall' => 'Pêro',
 'powersearch-togglenone' => 'Qet',
@@ -765,8 +752,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'preferences' => 'Tercihi',
 'mypreferences' => 'Tercihê mı',
 'prefs-edits' => 'Numra vurnaisun:',
-'prefsnologin' => 'Cı nêkota',
-'prefsnologintext' => 'Sıma gunê <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cı kuyê]</span> ke dıma tercihunê karberi bınusnê.',
 'changepassword' => 'Parola bıvurne',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verqayt',
@@ -781,7 +766,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'prefs-resetpass' => 'Parola bıvurne',
 'prefs-rendering' => 'Asais',
 'saveprefs' => 'Qeyd ke',
-'resetprefs' => 'Vurnaisunê qeydnêkerdun pak ke',
 'prefs-editing' => 'Vurnais',
 'rows' => 'Rêji:',
 'columns' => 'Ustıni:',
@@ -794,7 +778,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'savedprefs' => 'Tercihê sıma qeydi biy.',
 'timezonelegend' => 'Warê saete:',
 'localtime' => 'Waxto mehelın:',
-'timezoneoffset' => 'Ware¹:',
 'servertime' => "Waxtê ''server''i:",
 'guesstimezone' => "''Browser''i ra pırr ke",
 'timezoneregion-africa' => 'Afrika',
@@ -905,6 +888,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',
@@ -1500,10 +1484,6 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
 
 'exif-meteringmode-255' => 'Bin',
 
-# External editor support
-'edit-externally' => 'Na dosya be mırecaetê de teberi bıvurne',
-'edit-externally-help' => '(Serba daêna melumati qaytê pelga [https://www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'pêro',
 'namespacesall' => 'pêro',
@@ -1529,8 +1509,7 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
 
 # Special:SpecialPages
 'specialpages' => 'Pelê xaşi',
-'specialpages-note' => '----
-* Pelê xususiyê normali.
+'specialpages-note' => '* Pelê xususiyê normali.
 * <span class="mw-specialpagerestricted">Pelê xususiyê mehcuri.</span>',
 'specialpages-group-maintenance' => 'Tebliğê baxımi',
 'specialpages-group-other' => 'Pelê xususiyê bini',
index 5546a2a..70ce137 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( 'سىرتقا_بەرۋ' ),
@@ -518,7 +516,6 @@ $messages = array(
 'qbedit' => 'وڭدەۋ',
 'qbpageoptions' => 'بۇل بەت',
 'qbmyoptions' => 'بەتتەرىم',
-'qbspecialpages' => 'ارنايى بەتتەر',
 'faq' => 'ٴجىيى قويىلعان ساۋالدار',
 'faqpage' => 'Project:ٴجىيى قويىلعان ساۋالدار',
 
@@ -606,8 +603,6 @@ $messages = array(
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => '«$1» بەتىنەن الىنعان',
 'youhavenewmessages' => 'سىزگە $1 بار ($2).',
-'newmessageslink' => 'جاڭا حابارلار',
-'newmessagesdifflink' => 'سوڭعى وزگەرىسىنە',
 'youhavenewmessagesmulti' => '$1 دەگەندە جاڭا حابارلار بار',
 'editsection' => 'وڭدەۋ',
 'editold' => 'وڭدەۋ',
@@ -685,9 +680,6 @@ $messages = array(
 'perfcached' => 'كەلەسى دەرەك بۇركەمەلەنگەن, سوندىقتان تولىقتاي جاڭالانماعان بولۋى مۇمكىن. 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' => 'بۇل بەتتىڭ جاڭارتىلۋى اعىمدا وشىرىلگەن. دەرەكتەرى قازىر وزگەرتىلمەيدى.',
-'wrong_wfQuery_params' => 'wfQuery() فۋنكتسىيياسى ٴۇشىن بۇرىس باپتالىمدارى بار<br />
-جەتە: $1<br />
-سۇرانىم: $2',
 'viewsource' => 'قاينار كوزىن قاراۋ',
 'actionthrottled' => 'ارەكەت باسەڭدەتىلدى',
 'actionthrottledtext' => 'سپامعا قارسى كۇرەس ەسەبىندە, وسى ارەكەتتى قىسقا ۋاقىتتا تىم كوپ رەت ورىنداۋىڭىز شەكتەلىندى, جانە بۇل شەكتەۋ شاماسىنان اسىپ كەتكەنسىز.
@@ -1087,12 +1079,8 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 
 # Search results
 'searchresults' => 'ىزدەۋ ناتىيجەلەرى',
-'searchresulttext' => '{{SITENAME}} جوباسىندا ىزدەۋ تۋرالى كوبىرەك اقپارات ٴۇشىن, [[{{MediaWiki:Helppage}}|{{int:help}} بەتىن]] قاراڭىز.',
-'searchsubtitle' => "ىزدەگەنىڭىز: '''[[:$1]]'''",
-'searchsubtitleinvalid' => "ىزدەگەنىڭىز: '''$1'''",
 'toomanymatches' => 'تىم كوپ سايكەس قايتارىلدى, وزگە سۇرانىمدى بايقاپ كورىڭىز',
 'titlematches' => 'بەت تاقىرىبىن اتى سايكەس كەلەدى',
-'notitlematches' => 'ەش بەت تاقىرىبىن اتى سايكەس ەمەس',
 'textmatches' => 'بەت ٴماتىنى سايكەس كەلەدى',
 'notextmatches' => 'ەش بەت ٴماتىنى سايكەس ەمەس',
 'prevn' => 'الدىڭعى {{PLURAL:$1|$1}}',
@@ -1112,12 +1100,9 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'searchall' => 'بارلىق',
 'showingresults' => "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ بارىنشا '''$1''' ناتىيجە كورسەتىلەدى.",
 'showingresultsnum' => "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ '''$3''' ناتىيجە كورسەتىلەدى.",
-'nonefound' => "'''اڭعارتپا''': ادەپكىدەن تەك كەيبىر ەسىم ايالاردان ىزدەلىنەدى. بارلىق ماعلۇمات ٴتۇرىن (سونىڭ ىشىندە تالقىلاۋ بەتتەردى, ۇلگىلەردى ت.ب.) ىزدەۋ ٴۇشىن سۇرانىمىڭىزدى ''بارلىق:'' دەپ باستاڭىز, نەمەسە قالاعان ەسىم اياسىن باستاۋىش ەسەبىندە قولدانىڭىز.",
-'powersearch' => 'كەڭەيتىلگەن ىزدەۋ',
 'powersearch-legend' => 'كەڭەيتىلگەن ىزدەۋ',
 'powersearch-ns' => 'مىنا ەسىم ايالاردا ىزدەۋ:',
 'powersearch-redir' => 'ايداتۋلاردى تىزىمدەۋ',
-'powersearch-field' => 'مىنانى ىزدەمەك:',
 'search-external' => 'شەتتىك ىزدەگىش',
 'searchdisabled' => '{{SITENAME}} ىزدەۋ قىزمەتى وشىرىلگەن.
 ازىرشە Google ارقىلى ىزدەۋگە بولادى.
@@ -1127,8 +1112,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'preferences' => 'باپتالىمدار',
 'mypreferences' => 'باپتالىمدارىم',
 'prefs-edits' => 'وڭدەمە سانى:',
-'prefsnologin' => 'كىرمەگەنسىز',
-'prefsnologintext' => 'باپتاۋىڭىزدى قويۋ ٴۇشىن [[Special:UserLogin|كىرۋىڭىز]] ٴتىيىستى.',
 'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
 'prefs-skin' => 'مانەرلەر',
 'skin-preview' => 'قاراپ شىعۋ',
@@ -1141,7 +1124,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'prefs-watchlist-edits' => 'كەڭەيتىلگەن باقىلاۋلارداعى وزگەرىستەردىڭ بارىنشا كورسەتپەك سانى:',
 'prefs-misc' => 'ارقىيلى',
 'saveprefs' => 'ساقتا',
-'resetprefs' => 'ساقتالماعان وزگەرىستەردى تازارت',
 'prefs-editing' => 'وڭدەۋ',
 'rows' => 'جولدار:',
 'columns' => 'باعاندار:',
@@ -1153,7 +1135,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'savedprefs' => 'باپتالىمدارىڭىز ساقتالدى.',
 'timezonelegend' => 'ۋاقىت بەلدەۋى',
 'localtime' => 'جەرگىلىكتى ۋاقىت',
-'timezoneoffset' => 'ساعات ىعىسۋى¹',
 'servertime' => 'سەرۆەر ۋاقىتى',
 'guesstimezone' => 'شولعىشتان الىپ تولتىرۋ',
 'allowemail' => 'باسقادان حات قابىلداۋىن قوس',
@@ -1571,10 +1552,8 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
 'deadendpagestext' => 'كەلەسى بەتتەر {{SITENAME}} جوباسىنداعى باسقا بەتتەرگە سىلتەمەيدى.',
 'protectedpages' => 'قورعالعان بەتتەر',
 'protectedpages-indef' => 'تەك بەلگىسىز قورعاۋلار',
-'protectedpagestext' => 'كەلەسى بەتتەر وڭدەۋدەن نەمەسە جىلجىتۋدان قورعالعان',
 'protectedpagesempty' => 'اعىمدا مىناداي باپتالىمدارىمەن ەشبىر بەت قورعالماعان',
 'protectedtitles' => 'قورعالعان تاقىرىپ اتتارى',
-'protectedtitlestext' => 'كەلەسى تاقىرىپ اتتارىن باستاۋعا رۇقسات بەرىلمەگەن',
 'protectedtitlesempty' => 'بۇل باپتالىمدارمەن اعىمدا ەش تاقىرىپ اتتارى قورعالماعان.',
 'listusers' => 'قاتىسۋشى ٴتىزىمى',
 'newpages' => 'ەڭ جاڭا بەتتەر',
@@ -2604,10 +2583,6 @@ $1',
 'exif-gpsdirection-t' => 'شىن باعىت',
 'exif-gpsdirection-m' => 'ماگنىيتتى باعىت',
 
-# External editor support
-'edit-externally' => 'بۇل فايلدى شەتتىك قوندىرما ارقىلى وڭدەۋ',
-'edit-externally-help' => 'كوبىرەك اقپارات ٴۇشىن [https://www.mediawiki.org/wiki/Manual:External_editors ورناتۋ نۇسقامالارىن] قاراڭىز.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'بارلىق',
 'namespacesall' => 'بارلىعى',
@@ -2818,8 +2793,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'ارنايى بەتتەر',
-'specialpages-note' => '----
-* كادىمگى ارنايى بەتتەر.
+'specialpages-note' => '* كادىمگى ارنايى بەتتەر.
 * <strong class="mw-specialpagerestricted">شەكتەلگەن ارنايى بەتتەر.</strong>',
 'specialpages-group-maintenance' => 'باپتاۋ باياناتتارى',
 'specialpages-group-other' => 'تاعى باسقا ارنايى بەتتەر',
@@ -2839,4 +2813,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 2949e7a..6f739e8 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( 'Сыртқа_беру' ),
@@ -518,7 +516,6 @@ $messages = array(
 'qbedit' => 'Өңдеу',
 'qbpageoptions' => 'Бұл бет',
 'qbmyoptions' => 'Беттерім',
-'qbspecialpages' => 'Арнайы беттер',
 'faq' => 'Жиі қойылатын сұрақтар',
 'faqpage' => 'Project:Жиі қойылатын сұрақтар',
 
@@ -635,12 +632,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' => 'өңдеу',
@@ -733,9 +728,6 @@ $1',
 'perfcached' => 'Келесі дерек бүркемеленген, сондықтан толықтай жаңаланбаған болуы мүмкін. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Келесі дерек бүркемеленген, соңғы жаңаланған кезі: $1. Кэште {{PLURAL:$4|жазбалардан}} артық сақталмайды..',
 'querypage-no-updates' => 'Бұл беттің жаңартылуы ағымда өшірілген. Деректері қазір өзгертілмейді.',
-'wrong_wfQuery_params' => 'wfQuery() функциясы үшін бұрыс бапталымдары бар<br />
-Жете: $1<br />
-Сұраным: $2',
 'viewsource' => 'Қайнарын қарау',
 'viewsource-title' => '$1 бетінің бастапқы мәтінін қарау',
 'actionthrottled' => 'Әрекет бәсеңдетілді',
@@ -766,7 +758,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 +806,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 +1241,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' => 'Себебі:',
@@ -1319,12 +1312,8 @@ $1",
 # Search results
 'searchresults' => 'Іздеу нәтижелері',
 'searchresults-title' => '"$1" сұранымына табылған нәтижелер',
-'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' => 'Бет мәтіні сәйкес келеді',
 'notextmatches' => 'Еш бет мәтіні сәйкес емес',
 'prevn' => 'алдыңғы {{PLURAL:$1|$1}}',
@@ -1333,7 +1322,6 @@ $1",
 'nextn-title' => 'Келесі $1 {{PLURAL:$1|жазба|жазбалар}}',
 'shown-title' => 'Осы бетте {{PLURAL:$1|жазба}} көрсету.',
 'viewprevnext' => 'Көрсетілуі: ($1 {{int:pipe-separator}} $2) ($3) жазба',
-'searchmenu-legend' => 'Іздеу бапталымдары',
 'searchmenu-exists' => "'''Бұл жобада «[[:$1]]» деген бет бар.'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" осындай атпен бетті бастау'''",
 'searchprofile-articles' => 'Негізгі беттер',
@@ -1363,13 +1351,10 @@ $1",
 'showingresults' => "Төменде нөмір '''$2''' орнынан бастап барынша '''$1''' нәтиже көрсетіледі.",
 'showingresultsnum' => "Төменде нөмір '''$2''' орнынан бастап '''$3''' нәтиже көрсетіледі.",
 'showingresultsheader' => "«'''$4'''» үшін {{PLURAL:$5|тек '''$1''' нәтиже табылды|табылған '''$3''' нәтиженің '''$1—$2''' аралығы көрсетілген}}",
-'nonefound' => "'''Аңғартпа''': Әдепкіден тек кейбір есім аялардан ізделінеді. Барлық мағлұмат түрін (соның ішінде талқылау беттерді, үлгілерді т.б.) іздеу үшін сұранымыңызды ''барлық:'' деп бастаңыз, немесе қалаған есім аясын бастауыш есебінде қолданыңыз.",
 'search-nonefound' => 'Сұрауға сәйкес нәтижелер табылмады.',
-'powersearch' => 'Кеңейтілген іздеу',
 'powersearch-legend' => 'Кеңейтілген іздеу',
 'powersearch-ns' => 'Мына есім аяларда іздеу:',
 'powersearch-redir' => 'Айдатуларды тізімдеу',
-'powersearch-field' => 'Іздеу',
 'powersearch-togglelabel' => 'Белгілеу:',
 'powersearch-toggleall' => 'Барлығы',
 'powersearch-togglenone' => 'Ешқандай',
@@ -1382,8 +1367,6 @@ $1",
 'preferences' => 'Баптаулар',
 'mypreferences' => 'Баптаулар',
 'prefs-edits' => 'Өңдеме саны:',
-'prefsnologin' => 'Кірмегенсіз',
-'prefsnologintext' => 'Қатысушы бапталымдарыңызды жөндеу үшін <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} кіруіңіз]</span> жөн.',
 'changepassword' => 'Құпия сөзді өзгерту',
 'prefs-skin' => 'Мәнерлер',
 'skin-preview' => 'Қарап шығу',
@@ -1407,7 +1390,6 @@ $1",
 'prefs-email' => 'Е-пошта баптаулары',
 'prefs-rendering' => 'Сырт көрініс',
 'saveprefs' => 'Сақтау',
-'resetprefs' => 'Сақталмаған өзгерістерді тазарту',
 'restoreprefs' => 'Барлығын бастапқы баптауларға қайтару',
 'prefs-editing' => 'Өңдеу',
 'rows' => 'Жолдар:',
@@ -1425,7 +1407,6 @@ $1",
 'localtime' => 'Жергілікті уақыт:',
 'timezoneuseserverdefault' => 'Уикидің баптауларын қолдану ($1)',
 'timezoneuseoffset' => 'Басқа (жылжытуды көрсетіңіз)',
-'timezoneoffset' => 'Сағат ығысуы¹:',
 'servertime' => 'Сервер уақыты:',
 'guesstimezone' => 'Шолғыштан алып толтыру',
 'timezoneregion-africa' => 'Африка',
@@ -1667,6 +1648,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 кезінен бергі жаңа өзгерістерді көрсет.',
@@ -2047,10 +2029,8 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'protectedpages' => 'Қорғалған беттер',
 'protectedpages-indef' => 'Тек белгісіз қорғаулар',
 'protectedpages-cascade' => 'Тек баулы қорғаулар',
-'protectedpagestext' => 'Келесі беттер өңдеуден немесе жылжытудан қорғалған',
 'protectedpagesempty' => 'Ағымда мынадай параметрлермен ешбір бет қорғалмаған.',
 'protectedtitles' => 'Қорғалған тақырып аттары',
-'protectedtitlestext' => 'Келесі тақырып аттарын бастауға рұқсат берілмеген',
 'protectedtitlesempty' => 'Бұл бапталымдармен ағымда еш тақырып аттары қорғалмаған.',
 'listusers' => 'Қатысушы тізімі',
 'listusers-editsonly' => 'Тек қатысушы өңдемелерін көрсету',
@@ -2470,7 +2450,7 @@ $1',
 # Contributions
 'contributions' => '{{GENDER:$1|Қатысушы}} үлестері',
 'contributions-title' => '$1 есімді қатысушының үлесі',
-'mycontris' => 'ҮлеÑ\81Ñ\82еÑ\80',
+'mycontris' => 'ҮлеÑ\81Ñ\96м',
 'contribsub2' => '$1 ($2) үлесі',
 'nocontribs' => 'Осы іздеу шартына сәйкес өзгерістер табылған жоқ.',
 'uctop' => '(ағымдағы)',
@@ -3401,10 +3381,6 @@ $1',
 'exif-urgency-low' => 'Төмен ($1)',
 'exif-urgency-high' => 'Жоғары ($1)',
 
-# External editor support
-'edit-externally' => 'Бұл файлды шеттік қондырма арқылы өңдеу',
-'edit-externally-help' => '(көбірек ақпарат үшін [https://www.mediawiki.org/wiki/Manual:External_editors орнату нұсқауларын] қараңыз)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'барлық',
 'namespacesall' => 'барлығы',
@@ -3641,8 +3617,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Арнайы беттер',
-'specialpages-note' => '----
-* Кәдімгі арнайы беттер.
+'specialpages-note' => '* Кәдімгі арнайы беттер.
 * <span class=="mw-specialpagerestricted">Шектелген арнайы беттер.</span>',
 'specialpages-group-maintenance' => 'Техникалық талқылау есептері',
 'specialpages-group-other' => 'Тағы басқа арнайы беттер',
@@ -3751,4 +3726,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 cf4bae8..1a3f6fb 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' ),
@@ -481,7 +479,6 @@ $messages = array(
 'qbedit' => 'Öñdew',
 'qbpageoptions' => 'Bul bet',
 'qbmyoptions' => 'Betterim',
-'qbspecialpages' => 'Arnaýı better',
 'faq' => 'Jïi qoýılğan sawaldar',
 'faqpage' => 'Project:Jïi qoýılğan sawaldar',
 
@@ -569,8 +566,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',
@@ -648,9 +643,6 @@ Mında taqırıp atında qoldalmaýtın birqatar tañbalar bolwı mümkin.',
 'perfcached' => 'Kelesi derek bürkemelengen, sondıqtan tolıqtaý jañalanmağan bolwı mümkin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Kelesi derek bürkemelengen, soñğı jañalanlğan kezi: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Bul bettiñ jañartılwı ağımda öşirilgen. Derekteri qazir özgertilmeýdi.',
-'wrong_wfQuery_params' => 'wfQuery() fwnkcïyası üşin burıs baptalımdarı bar<br />
-Jete: $1<br />
-Suranım: $2',
 'viewsource' => 'Qaýnar közin qaraw',
 'actionthrottled' => 'Äreket bäseñdetildi',
 'actionthrottledtext' => 'Spamğa qarsı küres esebinde, osı äreketti qısqa waqıtta tım köp ret orındawıñız şektelindi, jäne bul şektew şamasınan asıp ketkensiz.
@@ -1050,12 +1042,8 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
 
 # Search results
 'searchresults' => 'İzdew nätïjeleri',
-'searchresulttext' => "{{SITENAME}} saytında izlew haqqında ko'birek mag'lıwmat alg'ın'ız kelse, [[{{Mediawiki:helppage}}|{{int:help}} betine]] o'tip qarap ko'rin'.",
-'searchsubtitle' => "İzdegeniñiz: '''[[:$1]]'''",
-'searchsubtitleinvalid' => "İzdegeniñiz: '''$1'''",
 'toomanymatches' => 'Tım köp säýkes qaýtarıldı, özge suranımdı baýqap köriñiz',
 'titlematches' => 'Bet taqırıbın atı säýkes keledi',
-'notitlematches' => 'Eş bet taqırıbın atı säýkes emes',
 'textmatches' => 'Bet mätini säýkes keledi',
 'notextmatches' => 'Eş bet mätini säýkes emes',
 'prevn' => 'aldıñğı {{PLURAL:$1|$1}}',
@@ -1075,12 +1063,9 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
 'searchall' => 'barlıq',
 'showingresults' => "Tömende nömir '''$2''' ornınan bastap barınşa '''$1''' nätïje körsetiledi.",
 'showingresultsnum' => "Tömende nömir '''$2''' ornınan bastap '''$3''' nätïje körsetiledi.",
-'nonefound' => "'''Esletpe''': Defolt boyınsha tek g'ana sheklengen isimler ko'pliginen izlenedi. Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.b.) izlew ushın izlewin'izdi ''barlıq:'' prefiksi menen baslan', yamasa qa'legen isimler ko'pligin prefiks esabında qollanın'.",
-'powersearch' => 'Keñeýtilgen izdew',
 'powersearch-legend' => 'Keñeýtilgen izdew',
 'powersearch-ns' => "Usı isimler ko'pliginen izlew:",
 'powersearch-redir' => "Qayta bag'ıtlawshı betlerdi ko'rset",
-'powersearch-field' => "İzlenetug'ın so'z (yamasa so'z dizbegi):",
 'search-external' => 'Şettik izdegiş',
 'searchdisabled' => '{{SITENAME}} izdew qızmeti öşirilgen.
 Äzirşe Google arqılı izdewge boladı.
@@ -1090,8 +1075,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',
-'prefsnologintext' => 'Baptawıñızdı qoyw üşin [[Special:UserLogin|kirwiñiz]] tïisti.',
 'changepassword' => 'Qupïya sözdi özgertw',
 'prefs-skin' => 'Mänerler',
 'skin-preview' => 'Qarap şığw',
@@ -1104,7 +1087,6 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
 'prefs-watchlist-edits' => 'Keñeýtilgen baqılawlardağı özgeristerdiñ barınşa körsetpek sanı:',
 'prefs-misc' => 'Ärqïlı',
 'saveprefs' => 'Saqta',
-'resetprefs' => 'Saqtalmağan özgeristerdi tazart',
 'prefs-editing' => 'Öñdew',
 'rows' => 'Joldar:',
 'columns' => 'Bağandar:',
@@ -1116,7 +1098,6 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
 'savedprefs' => 'Baptalımdarıñız saqtaldı.',
 'timezonelegend' => 'Waqıt beldewi',
 'localtime' => 'Jergilikti waqıt',
-'timezoneoffset' => 'Sağat ığıswı¹',
 'servertime' => 'Server waqıtı',
 'guesstimezone' => 'Şolğıştan alıp toltırw',
 'allowemail' => 'Basqadan xat qabıldawın qos',
@@ -1534,10 +1515,8 @@ Kirisi: mağlumat_türi/tür_tarawı, mısalı <code>image/jpeg</code>.',
 'deadendpagestext' => 'Kelesi better {{SITENAME}} jobasındağı basqa betterge siltemeýdi.',
 'protectedpages' => 'Qorğalğan better',
 'protectedpages-indef' => 'Tek belgisiz qorğawlar',
-'protectedpagestext' => 'Kelesi better öñdewden nemese jıljıtwdan qorğalğan',
 'protectedpagesempty' => 'Ağımda mınadaý baptalımdarımen eşbir bet qorğalmağan',
 'protectedtitles' => 'Qorğalğan taqırıp attarı',
-'protectedtitlestext' => 'Kelesi taqırıp attarın bastawğa ruqsat berilmegen',
 'protectedtitlesempty' => 'Bul baptalımdarmen ağımda eş taqırıp attarı qorğalmağan.',
 'listusers' => 'Qatıswşı tizimi',
 'newpages' => 'Eñ jaña better',
@@ -2567,10 +2546,6 @@ Basqaları ädepkiden jasırıladı.
 'exif-gpsdirection-t' => 'Şın bağıt',
 'exif-gpsdirection-m' => 'Magnïttı bağıt',
 
-# External editor support
-'edit-externally' => 'Bul faýldı şettik qondırma arqılı öñdew',
-'edit-externally-help' => 'Köbirek aqparat üşin [https://www.mediawiki.org/wiki/Manual:External_editors ornatw nusqamaların] qarañız.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'barlıq',
 'namespacesall' => 'barlığı',
@@ -2777,8 +2752,7 @@ Tağı da [[Special:EditWatchlist|qalıpalğan öñdewişti paýdalana]] alasız
 
 # Special:SpecialPages
 'specialpages' => 'Arnaýı better',
-'specialpages-note' => '----
-* Kädimgi arnaýı better.
+'specialpages-note' => '* Kädimgi arnaýı better.
 * <strong class="mw-specialpagerestricted">Şektelgen arnaýı better.</strong>',
 'specialpages-group-maintenance' => 'Baptaw bayanattarı',
 'specialpages-group-other' => 'Tağı basqa arnaýı better',
@@ -2798,4 +2772,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 d918602..8b012e0 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( 'នាំចេញ' ),
@@ -420,7 +418,6 @@ $messages = array(
 'qbedit' => 'កែប្រែ',
 'qbpageoptions' => 'ទំព័រនេះ',
 'qbmyoptions' => 'ទំព័ររបស់ខ្ញុំ',
-'qbspecialpages' => 'ទំព័រពិសេសៗ',
 'faq' => 'សំណួរដែលសួរញឹកញាប់',
 'faqpage' => 'Project:សំណួរដែលសួរញឹកញាប់',
 
@@ -510,7 +507,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' => 'á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\99á\9f\89á\9e¶á\9e\84á\9e\8aá\9f\84á\9e\99$1។',
+'copyright' => 'á\9e\81á\9f\92á\9e\9bá\9e¹á\9e\98á\9e\9fá\9e¶á\9e\9aá\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\94á\9e¶á\9e\93á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9e\8eá\9f\92á\9e\8c$1 á\9e\9bá\9e¾á\9e\80á\9e\9bá\9f\82á\9e\84á\9e\8fá\9f\82á\9e\98á\9e¶á\9e\93á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\96á\9e¸á\9e\93á\9f\84á\9f\87។',
 'copyrightpage' => '{{ns:project}}:រក្សាសិទ្ធិ​',
 'currentevents' => 'ព្រឹត្តិការណ៍​ថ្មីៗ',
 'currentevents-url' => 'Project:ព្រឹត្តិការណ៍​ថ្មីៗ',
@@ -541,8 +538,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'បានពី "$1"',
 'youhavenewmessages' => 'អ្នកមាន $1 ($2)។',
-'newmessageslink' => 'សារថ្មីៗ',
-'newmessagesdifflink' => 'បន្លាស់ប្ដូរចុងក្រោយ',
 'youhavenewmessagesfromusers' => 'អ្នកមាន $1 ទទួលបានពី {{PLURAL:$3|អ្នកប្រើប្រាស់ម្នាក់|អុ្នកប្រើប្រាស់ចំនួន $3 នាក់}} ($2)។',
 'youhavenewmessagesmanyusers' => 'អ្នកមាន $1 ទទួលបានពីអ្នកប្រើប្រាស់ជាច្រើន ($2)។',
 'newmessageslinkplural' => '{{PLURAL:$1|សារថ្មីមួយ|សារថ្មី}}',
@@ -639,9 +634,6 @@ $1',
 'querypage-no-updates' => 'ការបន្ទាន់សម័យសម្រាប់ទំព័រនេះគឺមិនអាចធ្វើទៅរួចទេនាពេលឥឡូវទេ។
 
 ទិន្នន័យនៅទីនេះនឹងមិនត្រូវផ្លាស់ប្ដូរថ្មីនាពេលបច្ចុប្បន្នទេ។',
-'wrong_wfQuery_params' => 'ប៉ារ៉ា​មែត្រ​មិន​ត្រឹម​ត្រូវ​ចំពោះ​ wfQuery()<br />
-មុខងារ​៖ $1<br />
-អង្កេត​៖ $2',
 'viewsource' => 'មើល​កូដ',
 'viewsource-title' => 'មើលកូដរបស់ $1',
 'actionthrottled' => 'សកម្មភាពត្រូវបានកម្រិត',
@@ -672,7 +664,7 @@ $2',
 'invalidtitle-knownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះ "$2" និងអត្ថបទ "$3"',
 'invalidtitle-unknownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះមិនស្គាល់លេខ $1 និងអត្ថបទ "$2"',
 'exception-nologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'exception-nologin-text' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¬á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\93á\9f\81á\9f\87á\9e\8fá\9e\98á\9f\92á\9e\9aá\9e¼á\9e\9cá\9e¢á\9f\84á\9e\99á\9e¢á\9f\92á\9e\93á\9e\80á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\91á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9cá\9e·á\9e\82á\9e¸នេះ។',
+'exception-nologin-text' => 'á\9e\9fá\9e¼á\9e\98[[Special:Userlogin|lá\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9b]]á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\85á\9e¼á\9e\9bá\9e¢á\9e¶á\9e\93á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e¬á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96នេះ។',
 
 # Virus scanner
 'virus-badscanner' => "ការ​កំណត់​រចនា​សម្ព័ន្ធ​មិន​ល្អ​៖ កម្មវិធី​ស្កេន​មេរោគមិន​ស្គាល់​៖ ''$1''",
@@ -720,7 +712,7 @@ $2',
 'gotaccount' => "បើលោកអ្នកមានគណនីសម្រាប់ប្រើហើយ  សូម'''$1'''។",
 'gotaccountlink' => 'កត់ឈ្មោះចូល',
 'userlogin-resetlink' => 'តើអ្នកភ្លេចព័ត៌មានលម្អិតសម្រាប់កត់ឈ្មោះចូលហើយ?',
-'userlogin-resetpassword-link' => 'á\9e\9fá\9f\92á\9e\8aá\9e¶á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80',
+'userlogin-resetpassword-link' => 'á\9e¢á\9f\92á\9e\93á\9e\80á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e á\9e¾á\9e\99?',
 'helplogin-url' => 'Help:ការកត់ឈ្មោះចូល',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ជំនួយក្នុងការកត់ឈ្មោះចូល]]',
 'userlogin-createanother' => 'បង្កើតគណនីមួយទៀត',
@@ -795,7 +787,7 @@ $2',
 
 សូម​កត់ឈ្មោះចូល​ម្តងទៀត​បន្ទាប់ពី​អ្នក​បាន​ទទួល​ពាក្យសម្ងាត់ថ្មីនោះ។',
 'blocked-mailpassword' => 'អាសយដ្ឋានIPត្រូវបានហាមឃាត់មិនអោយធ្វើការកែប្រែ និងមិនអនុញ្ញាតឱ្យប្រើប្រាស់មុខងារសង្គ្រោះពាក្យសម្ងាត់ដើម្បីបង្ការការបំពានទេ។',
-'eauthentsent' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\95á\9f\92á\9e\91á\9f\80á\9e\84á\9e\95á\9f\92á\9e\91á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\89á\9e¾á\9e\91á\9f\85â\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\85á\9e»á\9f\87á\9e\8fá\9f\92á\9e\9aá\9eហើយ។
+'eauthentsent' => 'á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\95á\9f\92á\9e\91á\9f\80á\9e\84á\9e\95á\9f\92á\9e\91á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\89á\9e¾á\9e\91á\9f\85â\80\8bá\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bâ\80\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\87á\9e¼á\9e\93ហើយ។
 
 មុននឹងមាន​អ៊ីមែលផ្សេងមួយទៀត​ត្រូវផ្ញើទៅ​គណនីនេះ អ្នកត្រូវតែ​ធ្វើតាមសេចក្តីណែនាំ​ក្នុងអ៊ីមែល​នោះ ដើម្បីបញ្ជាក់ថា​គណនីបច្ចុប្បន្ន​ពិតជា​របស់អ្នកពិតប្រាកដមែន។',
 'throttled-mailpassword' => 'អ៊ីមែលប្ដូរពាក្យសម្ងាត់ត្រូវបានផ្ញើទៅឱ្យអ្នកតាំងពី{{PLURAL:$1|មួយម៉ោង|$1ម៉ោង}}មុននេះហើយ។
@@ -1236,15 +1228,15 @@ $2
 * ព័ត៌មាន​ផ្ទាល់​ខ្លួន​ ឯកជន​មិន​សមរម្យ​
 *: ''អាសយដ្ឋាននៃ​គេហដ្ឋាន​​ ​លេខ​ទូរស័ព្ទ និងលេខ​សន្តិសុខ​សង្គម​ជាដើម​''",
 'revdelete-legend' => 'ដាក់កំហិតគំហើញ',
-'revdelete-hide-text' => 'á\9e\94á\9e·á\9e\91á\9e\94á\9e¶á\9f\86á\9e\84á\9e\83á\9f\92á\9e\9bá\9e¶á\9e\93á\9f\83កំណែប្រែ',
+'revdelete-hide-text' => 'á\9e\94á\9e·á\9e\91á\9e\94á\9e¶á\9f\86á\9e\84á\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91កំណែប្រែ',
 'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
 'revdelete-hide-name' => 'បិទបាំងសកម្មភាពនិងគោលដៅ',
-'revdelete-hide-comment' => 'á\9e\94á\9e·á\9e\91á\9e\94á\9e¶á\9f\86á\9e\84á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\9cá\9e·á\9e\85á\9e¶á\9e\9a',
-'revdelete-hide-user' => 'á\9e\94á\9e·á\9e\91á\9e\94á\9e¶á\9f\86á\9e\84á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98â\80\8bá\9e¬á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IP របស់អ្នកកែប្រែ',
+'revdelete-hide-comment' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\9aá\9e\96á\9e\93á\9f\92á\9e\99á\9e\9bá\9f\8b',
+'revdelete-hide-user' => 'á\9e¢á\9e\8fá\9f\92á\9e\8fá\9e\93á\9e¶á\9e\98â\80\8bá\9e¬á\9e¢á\9e¶á\9e\9fá\9e\99á\9e\8aá\9f\92á\9e\8bá\9e¶á\9e\93IPរបស់អ្នកកែប្រែ',
 'revdelete-hide-restricted' => 'ដាក់កំហិត​ទិន្នន័យ​ពី​អ្នកអភិបាល ក៏​ដូចជា​អ្នក​ដទៃ​ទៀត',
 'revdelete-radio-same' => '(មិនផ្លាស់ប្ដូរ)',
-'revdelete-radio-set' => 'á\9e\94á\9e¶á\9e\91\9e\85á\9e¶á\9e\9f',
-'revdelete-radio-unset' => 'á\9e\91á\9f\81',
+'revdelete-radio-set' => 'á\9e\9bá\9e¶á\9e\80á\9f\8b',
+'revdelete-radio-unset' => 'á\9e\98á\9e¾á\9e\9bá\9e\83á\9e¾á\9e\89',
 'revdelete-suppress' => 'លាក់ទិន្នន័យពីអ្នកថែទាំប្រព័ន្ធ ព្រមទាំងពីសមាជិកដទៃទៀតផងដែរ',
 'revdelete-unsuppress' => 'ដកចេញការដាក់កំហិតលើកំណែដែលបានស្តារឡើងវិញ',
 'revdelete-log' => 'មូលហេតុ៖',
@@ -1333,12 +1325,8 @@ $1",
 # Search results
 'searchresults' => 'លទ្ធផលស្វែងរក',
 'searchresults-title' => 'លទ្ធផល​ស្វែងរក​សម្រាប់ "$1"',
-'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' => 'ទំព័រអត្ថបទផ្គូរផ្គងគ្នា',
 'notextmatches' => 'គ្មានអត្ថបទទំព័រណាមួយដែលមានខ្លឹមសារផ្គូផ្គងនឹងឃ្លាឬពាក្យនេះទេ',
 'prevn' => 'មុន {{PLURAL:$1|$1}}',
@@ -1347,10 +1335,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|លទ្ឋផល|លទ្ឋផល}}​បន្ទាប់​',
 'shown-title' => 'បង្ហាញ $1 {{PLURAL:$1|លទ្ធផល|លទ្ធផល}}ក្នុងមួយទំព័រ',
 'viewprevnext' => 'មើល ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ជម្រើសនានាក្នុងការស្វែងរក',
 'searchmenu-exists' => "* ទំព័រ '''[[$1]]'''",
 'searchmenu-new' => "'''បង្កើតទំព័រ \"[[:\$1]]\" នៅ​លើ​វិគី​នេះ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|រុក​រក​ក្នុង​ទំព័រ​នានា​ជាមួយ​បុព្វបទ​នេះ​]]',
 'searchprofile-articles' => 'ទំព័រ​មាតិកា',
 'searchprofile-project' => 'ជំនួយ និង​ទំព័រ​គម្រោង',
 'searchprofile-images' => 'ពហុ​ព័ត៌មាន',
@@ -1378,14 +1364,10 @@ $1",
 'showingresults' => "ខាងក្រោមកំពុងបង្ហាញរហូតដល់ {{PLURAL:$1|'''១''' លទ្ឋផល|'''$1''' លទ្ឋផល}} ចាប់ផ្ដើមពីលេខ #'''$2'''។",
 'showingresultsnum' => "កំពុងបង្ហាញ {{PLURAL:$3|'''1''' result|'''$3''' លទ្ឋផល}}ខាងក្រោម ចាប់ផ្ដើមដោយ #'''$2''' ។",
 'showingresultsheader' => "{{PLURAL:$5|លទ្ឋផល '''$1''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''|លទ្ឋផល '''$1 - $2''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''}} សម្រាប់ '''$4'''",
-'nonefound' => "'''កំណត់​ចំណាំ​'''៖ តាម​លំនាំ​ដើម មាន​តែ​លំហ​ឈ្មោះ​ខ្លះៗ​ប៉ុណ្ណោះ​ដែល​ត្រូវបាន​ស្វែងរក​។​​
-សូម​សាកប្រើ​បុព្វបទ ''all:''ក្នុង​សំណើ​របស់អ្នក ដើម្បី​ស្វែងរក​មាតិកាទាំងអស់ (រួមបញ្ចូល​ទាំង​ទំព័រ​ពិភាក្សានិងទំព័រគំរូជាដើម) ឬ​ក៏ប្រើ​លំហឈ្មោះដែលចង់រក​​ ជាបុព្វបទ​ក៏បាន​។​",
 'search-nonefound' => 'មិនមានលទ្ធផលណាមួយ​ត្រូវគ្នានឹងសំណើសុំនេះទេ',
-'powersearch' => 'ស្វែងរកថ្នាក់ខ្ពស់',
 'powersearch-legend' => 'ស្វែងរកថ្នាក់ខ្ពស់',
 'powersearch-ns' => 'ស្វែងរកក្នុងលំហឈ្មោះ៖',
 'powersearch-redir' => 'បញ្ជីការបញ្ជូនបន្ត',
-'powersearch-field' => 'ស្វែងរក',
 'powersearch-togglelabel' => 'គូសធីក៖',
 'powersearch-toggleall' => 'ទាំងអស់',
 'powersearch-togglenone' => 'ទទេ',
@@ -1399,8 +1381,6 @@ $1",
 'preferences' => 'ចំណង់ចំណូលចិត្ត',
 'mypreferences' => 'ចំណង់ចំណូលចិត្ត​',
 'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
-'prefsnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'prefsnologintext' => 'អ្នកចាំបាច់ត្រូវតែ<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} កត់ឈ្មោះចូល]</span> ដើម្បីកំណត់ចំណង់ចំណូលចិត្តរបស់អ្នក។',
 'changepassword' => 'ប្តូរពាក្យសម្ងាត់',
 'prefs-skin' => 'សំបក',
 'skin-preview' => 'មើលជាមុន',
@@ -1425,7 +1405,6 @@ $1",
 ជំរើសទាក់ទិននឹងអ៊ីមែល',
 'prefs-rendering' => 'ការរចនា',
 'saveprefs' => 'រក្សាទុក',
-'resetprefs' => 'លុបចោលបន្លាស់ប្ដូរមិនបានរក្សាទុក',
 'restoreprefs' => 'ស្ដារ​ការកំណត់​ទាំងអស់​ទៅ​លំនាំដើម (គ្រប់ផ្នែកទាំងអស់)',
 'prefs-editing' => 'កំណែប្រែ',
 'rows' => 'ជួរដេក៖',
@@ -1446,7 +1425,6 @@ $1",
 'localtime' => 'ម៉ោងក្នុងស្រុក​៖',
 'timezoneuseserverdefault' => 'តាមការកំនត់ដើមរបស់វិគី ($1)',
 'timezoneuseoffset' => 'ផ្សេងទៀត (បញ្ចូលម៉ោងដោយខ្លួនឯង)',
-'timezoneoffset' => 'ទូទាត់¹​៖',
 'servertime' => 'ម៉ោងម៉ាស៊ីនបម្រើ​៖',
 'guesstimezone' => 'បំពេញពីកម្មវិធីរាវរក',
 'timezoneregion-africa' => 'អាហ្វ្រិក',
@@ -1667,8 +1645,8 @@ $1",
 'action-block' => 'ហាមឃាត់អ្នកប្រើប្រាស់នេះមិនឱ្យធ្វើការកែប្រែ',
 'action-protect' => 'ប្ដូរកម្រិតការពារសម្រាប់ទំព័រនេះ',
 'action-rollback' => 'ត្រឡប់យ៉ាងរហ័សនូវកំណែប្រែទំព័រវិសេសណាមួយ​ដែលធ្វើឡើងដោយ​អ្នកប្រើប្រាស់ចុងក្រោយគេ។',
-'action-import' => 'á\9e\93á\9e¶á\9f\86á\9e\85á\9e¼á\9e\9bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\96á\9e¸á\9e\9cá\9e·á\9e\82á\9e¸á\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\98á\9e½á\9e\99á\9e\91á\9f\80á\9e\8f',
-'action-importupload' => 'á\9e\93á\9e¶á\9f\86á\9e\85á\9e¼á\9e\9bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\96á\9e¸á\9e¯á\9e\80á\9e\9fá\9e¶á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\95á\9f\92á\9e\91á\9e»á\9e\80á\9e¡á\9e¾á\9e\84',
+'action-import' => 'នាំចូលទំព័រពីវិគីផ្សេងមួយទៀត',
+'action-importupload' => 'នាំចូលទំព័រពីឯកសារដែលបានផ្ទុកឡើង',
 'action-patrol' => 'ចំណាំកំណែប្រែរបស់អ្នកដទៃថាបានល្បាត',
 'action-autopatrol' => 'ផ្ដល់សិទ្ធិឱ្យគេចំណាំកំណែរបស់អ្នកថាបានល្បាត',
 'action-unwatchedpages' => 'មើលបញ្ជីនៃទំព័រមិនតាមដាន',
@@ -1694,6 +1672,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',
@@ -2153,14 +2132,13 @@ $1',
 'protectedpages' => 'ទំព័រដែលត្រូវបានការពារ',
 'protectedpages-indef' => 'សំរាប់តែការការពារដែលមិនកំណត់ប៉ុណ្ណោះ',
 'protectedpages-cascade' => 'សំរាប់ការការពារជាថ្នាក់ប៉ុណ្ណោះ​',
-'protectedpagestext' => 'ទំព័រដូចតទៅនេះត្រូវបានការពារមិនឱ្យប្ដូរទីតាំងឬកែប្រែ',
 'protectedpagesempty' => '​មិន​មាន​ទំព័រ​ណា​ដែល​ត្រូវបាន​ការពារ ជាមួយប៉ារ៉ាម៉ែត​ទាំងនេះទេ។',
 'protectedtitles' => 'ចំណងជើងត្រូវបានការពារ',
-'protectedtitlestext' => 'ចំណងជើងទំព័រត្រូវបានការពារមិនឱ្យបង្កើត',
 'protectedtitlesempty' => 'មិន​មាន​ចំណងជើង​ណា​ដែល​ត្រូវ​បាន​ការពារ​ជាមួយនឹង​ប៉ារ៉ាម៉ែត​ទាំងនេះ​ទេ​នាពេលថ្មីៗនេះ។',
 'listusers' => 'បញ្ជីអ្នកប្រើប្រាស់',
 'listusers-editsonly' => 'បង្ហាញតែអ្នកប្រើប្រាស់ដែលបានកែប្រែអត្ថបទប៉ុណ្ណោះ',
 'listusers-creationsort' => 'តម្រៀបតាមលំដាប់កាលបរិច្ឆេទបង្កើត',
+'listusers-desc' => 'តម្រៀបជាលំដាប់ពីលើចុះក្រោម',
 'usereditcount' => '$1 {{PLURAL:$1|កំណែប្រែ|កំណែប្រែ}}',
 'usercreated' => '{{GENDER:$3|បានបង្កើត}}នៅ$1  $2',
 'newpages' => 'ទំព័រថ្មីៗ',
@@ -2590,7 +2568,7 @@ $1',
 'contributions' => 'ការរួមចំណែក​របស់{{GENDER:$1|អ្នកប្រើប្រាស់}}',
 'contributions-title' => 'ការរួមចំណែករបស់អ្នកប្រើប្រាស់ $1',
 'mycontris' => 'ការរួមចំណែក',
-'contribsub2' => 'សម្រាប់ $1 ($2)',
+'contribsub2' => 'សម្រាប់{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'គ្មានការផ្លាស់ប្តូរត្រូវបានឃើញដូចនឹងលក្ខណៈវិនិច្ឆ័យទាំងនេះ។',
 'uctop' => '(បច្ចុប្បន្ន)',
 'month' => 'ខែ៖',
@@ -3114,7 +3092,7 @@ $1',
 'svg-long-desc' => 'ឯកសារប្រភេទSVG  $1 × $2 ភីកសែល ទំហំឯកសារ៖ $3',
 'svg-long-desc-animated' => 'ឯកសារជីវចល SVG, ជាធម្មតា $1 × $2 ភិចសែល, ទំហំឯកសារ: $3',
 'svg-long-error' => 'ឯកសារ SVG គ្មានសុពលភាព៖ $1',
-'show-big-image' => 'á\9e\9aá\9e¼á\9e\94á\9e\97á\9e¶á\9e\96á\9e\96á\9f\81á\9e\89',
+'show-big-image' => 'á\9e\9aá\9e¼á\9e\94á\9e\97á\9e¶á\9e\96á\9e\8aá\9e¾á\9e\98',
 'show-big-image-preview' => 'ទំហំរបស់ការមើលមុននេះ: $1។',
 'show-big-image-other' => '{{PLURAL:$2|ភាពម៉ត់|ភាពម៉ត់}}ផ្សេងទៀត៖ $1។',
 'show-big-image-size' => '$1 × $2 ភីកសែ',
@@ -3444,10 +3422,6 @@ $1',
 'exif-urgency-high' => 'ខ្ពស់ ($1)',
 'exif-urgency-other' => 'តាមការកំណត់របស់អ្នកប្រើប្រាស់ ($1)',
 
-# External editor support
-'edit-externally' => 'កែប្រែ​ឯកសារ​នេះដោយប្រើប្រាស់​កម្មវិធី​ខាងក្រៅ',
-'edit-externally-help' => '(សូមមើល[https://www.mediawiki.org/wiki/Manual:External_editors ការណែនាំ​អំពី​ការ​ប្រើប្រាស់​]សម្រាប់​​ព័ត៌មាន​បន្ថែម)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ទាំងអស់',
 'namespacesall' => 'ទាំងអស់',
@@ -3802,4 +3776,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 914a663..fa33cd1 100644 (file)
@@ -220,7 +220,6 @@ $messages = array(
 'qbedit' => 'ಸಂಪಾದಿಸು',
 'qbpageoptions' => 'ಈ ಪುಟ',
 'qbmyoptions' => 'ನನ್ನ ಪುಟಗಳು',
-'qbspecialpages' => 'ವಿಶೇಷ ಪುಟಗಳು',
 'faq' => 'ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
 'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
 
@@ -332,8 +331,6 @@ $messages = array(
 'ok' => 'ಸರಿ',
 'retrievedfrom' => '"$1" ಇಂದ ಪಡೆಯಲ್ಪಟ್ಟಿದೆ',
 'youhavenewmessages' => 'ನಿಮಗೆ $1 ಇವೆ ($2).',
-'newmessageslink' => 'ಹೊಸ ಸಂದೇಶಗಳು',
-'newmessagesdifflink' => 'ಕೊನೆಯ ಬದಲಾವಣೆ',
 'newmessagesdifflinkplural' => 'ಕಡೆಯ {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}',
 'youhavenewmessagesmulti' => '$1 ಅಲ್ಲಿ ನಿಮಗೆ ಹೊಸ ಸಂದೇಶಗಳಿವೆ',
 'editsection' => 'ಬದಲಾಯಿಸಿ',
@@ -858,12 +855,8 @@ $2',
 # Search results
 'searchresults' => 'ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳು',
 'searchresults-title' => '"$1" ಅನ್ನು ಹುಡುಕಿದ ಫಲಿತಾಂಶಗಳು',
-'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' => 'ಪುಟದ ಪಠ್ಯದಲ್ಲಿನ ಹೋಲಿಕೆಗಳು',
 'notextmatches' => 'ಯಾವ ಪುಟದ ಪಠ್ಯದಲ್ಲೂ ಹೋಲಿಕೆಗಳಿಲ್ಲ',
 'prevn' => 'ಹಿಂದಿನ {{PLURAL:$1|$1}}',
@@ -899,14 +892,10 @@ $2',
 'showingresults' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾದ {{PLURAL:$1|'''೧''' ಫಲಿತಾಂಶದ|'''$1''' ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
 'showingresultsnum' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾಗಿ {{PLURAL:$3|'''೧''' ಫಲಿತಾಂಶವನ್ನು|'''$3''' ಫಲಿತಾಂಶಗಳನ್ನು}} ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
 'showingresultsheader' => "'''$4''' ಗೆ {{PLURAL:$5|'''$3''' ರಲ್ಲಿ '''$1'''  ಫಲಿತಾಂಶ|'''$3''' ರಲ್ಲಿ '''$1 - $2'''  ಫಲಿತಾಂಶಗಳು}}",
-'nonefound' => "'''ಸೂಚನೆ''': ಕೆಲವೊಂದು ನೇಮ್ ಸ್ಪೇಸ್ ಗಳನ್ನು ಮಾತ್ರ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಹುಡುಕಲಾಗುತ್ತದೆ.
-ನಿಮ್ಮ ಹುಡುಕುಪದದ ಹಿಂದೆ ''all:'' ಬಳಸಿ, ವಿಷಯವನ್ನು ಹುಡುಕಿ (ಚರ್ಚೆ, ಟೆಂಪ್ಲೇಟು, ಇತ್ಯಾದಿ ಪುಟಗಳನ್ನೊಳಗೊಂಡು), ಅಥವಾ ನಿಮಗೆ ಇಷ್ಟ ಬಂದ ನೇಮ್ ಸ್ಪೇಸ್ ಅನ್ನು ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನಾಗಿ ಬಳಸಿ.",
 'search-nonefound' => 'ನಿಮ್ಮ ವಿಚಾರಣೆಗೆ ತಕ್ಕ ಫಲಿತಾಂಶಗಳಿಲ್ಲ.',
-'powersearch' => 'ಹುಡುಕಿ',
 'powersearch-legend' => 'ಮುಂದುವರೆದ ಹುಡುಕಾಟ',
 'powersearch-ns' => 'ಈ ಪುಟ ಪ್ರಬೇಧಗಳಲ್ಲಿ ಹುಡುಕು:',
 'powersearch-redir' => 'ಪುನರ್ನಿರ್ದೇಶನಗಳ ಪಟ್ಟಿ',
-'powersearch-field' => 'ಇದನ್ನು ಹುಡುಕು',
 'powersearch-toggleall' => 'ಎಲ್ಲಾ',
 'powersearch-togglenone' => 'ಯಾವುದೂ ಇಲ್ಲ',
 'search-external' => 'ಬಾಹ್ಯ ಹುಡುಕಾಟ',
@@ -918,8 +907,6 @@ $2',
 'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'mypreferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
-'prefsnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
-'prefsnologintext' => 'ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ನೀವು <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ಲಾಗ್ ಇನ್]</span> ಆಗಿರಬೇಕು.',
 'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
 'prefs-skin' => 'ಚರ್ಮ',
 'skin-preview' => 'ಮುನ್ನೋಟ',
@@ -936,7 +923,6 @@ $2',
 'prefs-resetpass' => 'ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ',
 'prefs-email' => 'ಇ-ಅಂಚೆ ಇಚ್ಛೆಗಳು',
 'saveprefs' => 'ಉಳಿಸಿ',
-'resetprefs' => 'ಉಳಿಸಿಲ್ಲದ ಬದಲಾವಣೆಗಳನ್ನು ಅಳಿಸು',
 'prefs-editing' => 'ಸಂಪಾದನೆ',
 'rows' => 'ಸಾಲುಗಳು:',
 'searchresultshead' => 'ಹುಡುಕು',
@@ -946,7 +932,6 @@ $2',
 'savedprefs' => 'ನಿಮ್ಮ ಇಚ್ಛೆಗಳನ್ನು ಉಳಿಸಲಾಯಿತು.',
 'timezonelegend' => 'ಸಮಯ ವಲಯ:',
 'localtime' => 'ಸ್ಥಳೀಯ ಸಮಯ:',
-'timezoneoffset' => 'ವ್ಯತ್ಯಾಸ¹',
 'servertime' => 'ಸರ್ವರ್ ಕಾಲ',
 'guesstimezone' => 'ಬ್ರೌಸರ್ ಇಂದ ತುಂಬು',
 'timezoneregion-africa' => 'ಆಫ್ರಿಕ',
@@ -1382,10 +1367,8 @@ $2',
 'deadendpagestext' => 'ಈ ಕೆಳಗಿನ ಪುಟಗಳು {{SITENAME}} ಅಲ್ಲಿ ಇರುವ ಇತರ ಪುಟಗಳಿಗೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿಲ್ಲ.',
 'protectedpages' => 'ಸಂರಕ್ಷಿತ ಪುಟಗಳು',
 'protectedpages-indef' => 'ಅನಿಯಮಿತ ಸಂರಕ್ಷಣೆಗಳು ಮಾತ್ರ',
-'protectedpagestext' => 'ಈ ಕೆಳಗಿನ ಪುಟಗಳು ಸ್ಥಳಾಂತರಿಕೆ ಅಥವ ಸಂಪಾದನೆ ಸಂರಕ್ಷಣೆಯನ್ನು ಹೊಂದಿವೆ',
 'protectedpagesempty' => 'ಈ ನಿಯಮಾವಳಿಗಳಲ್ಲಿ ಯಾವ ಪುಟವೂ ಸಂರಕ್ಷಿತವಾಗಿಲ್ಲ.',
 'protectedtitles' => 'ಸಂರಕ್ಷಿತ ಶೀರ್ಷಿಕೆಗಳು',
-'protectedtitlestext' => 'ಈ ಕೆಳಗಿನ ಶೀರ್ಷಿಕೆಗಳನ್ನು ಸೃಷ್ಟಿಸಲಾಗದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ',
 'listusers' => 'ಸದಸ್ಯರ ಪಟ್ಟಿ',
 'usercreated' => '$1 ರಂದು $2 ಸಮಯಕ್ಕೆ {{GENDER:$3|ಸೃಷ್ಟಿಸಿದರು}}',
 'newpages' => 'ಹೊಸ ಪುಟಗಳು',
@@ -2040,10 +2023,6 @@ $1',
 'exif-gpsdirection-t' => 'ನಿಜ ದಿಕ್ಕು',
 'exif-gpsdirection-m' => 'ಆಯಸ್ಕಾಂತೀಯ ದಿಕ್ಕು',
 
-# External editor support
-'edit-externally' => 'ಬಾಹ್ಯ ತಂತ್ರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ ಇದನ್ನು ಸಂಪಾದಿಸಿ',
-'edit-externally-help' => '(ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ [https://www.mediawiki.org/wiki/Manual:External_editors ಸ್ಥಾಪನೆಯ ನಿರ್ದೇಶಗಳನ್ನು] ನೋಡಿ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ಎಲ್ಲಾ',
 'namespacesall' => 'ಎಲ್ಲಾ',
@@ -2210,4 +2189,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|ಶತಮಾನ|ಶತಮಾನಗಳು}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ಸಹಸ್ರಮಾನ|ಸಹಸ್ರಮಾನಗಳು}}',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'ಮುನ್ನೋಟ',
+
 );
index 092a8d8..a7f1f72 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:' ),
@@ -505,11 +510,10 @@ $messages = array(
 
 # Cologne Blue skin
 'qbfind' => '찾기',
-'qbbrowse' => '탐색',
+'qbbrowse' => '찾아보기',
 'qbedit' => '편집',
 'qbpageoptions' => '문서 기능',
 'qbmyoptions' => '내 사용자 문서',
-'qbspecialpages' => '특수 문서',
 'faq' => '자주 묻는 질문',
 'faqpage' => 'Project:FAQ',
 
@@ -536,7 +540,7 @@ $messages = array(
 'tagline' => '{{SITENAME}}',
 'help' => '도움말',
 'search' => '검색',
-'searchbutton' => '찾기',
+'searchbutton' => '검색',
 'go' => '보기',
 'searcharticle' => '보기',
 'history' => '문서 역사',
@@ -625,14 +629,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' => '원본 보기',
@@ -697,9 +699,10 @@ URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니
 관리자가 데이터베이스를 잠글 때 남긴 메시지는 다음과 같습니다: $1',
 'missing-article' => '데이터베이스에서 "$1" 문서의 $2 텍스트를 찾지 못했습니다.
 
\82­ì \9cë\90\9c ë¬¸ì\84\9cì\9d\98 ì\97­ì\82¬/ë¹\84êµ\90 ë¬¸ì\84\9c를 보려고 시도할 때 이러한 문제가 발생할 수 있습니다.
\82­ì \9cë\90\9c ë¬¸ì\84\9cì\9d\98 ì\98¤ë\9e\98ë\90\9c ì°¨ì\9d´ë\82\98 ì\97­ì\82¬ ë§\81í\81¬를 보려고 시도할 때 이러한 문제가 발생할 수 있습니다.
 
-또는, 프로그램 버그가 발생했을 수도 있습니다. [[Special:ListUsers/sysop|관리자]]에게 오류가 나는 URL을 알려주세요.',
+그렇지 않다면, 소프트웨어에 버그가 발생했을 수도 있습니다.
+[[Special:ListUsers/sysop|관리자]]에게 URL을 참조하여 알려주세요.',
 'missingarticle-rev' => '(판번호: $1)',
 'missingarticle-diff' => '(차이: $1, $2)',
 'readonly_lag' => '슬레이브 데이터베이스가 마스터 서버의 자료를 새로 고치는 중입니다. 데이터베이스가 자동으로 잠겨 있습니다.',
@@ -729,9 +732,6 @@ URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니
 'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 새로 고쳐졌습니다.  캐시에 최대 {{PLURAL:$4|결과 $4개}}가 있습니다.',
 'querypage-no-updates' => '이 문서의 새로 고침이 현재 비활성화되어 있습니다.
 자료가 잠시 새로 고치지 않을 것입니다.',
-'wrong_wfQuery_params' => 'wfQuery()에서 잘못된 매개변수 발생<br />
-함수: $1<br />
-쿼리: $2',
 'viewsource' => '원본 보기',
 'viewsource-title' => '$1 문서 원본 보기',
 'actionthrottled' => '동작 중지',
@@ -763,7 +763,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'''",
@@ -866,7 +867,7 @@ $2',
 'passwordtooshort' => '비밀번호는 {{PLURAL:$1|$1 글자}} 이상이어야 합니다.',
 'password-name-match' => '비밀번호는 사용자 이름과 반드시 달라야 합니다.',
 'password-login-forbidden' => '이 사용자 이름과 비밀번호는 사용할 수 없습니다.',
-'mailmypassword' => '새 비밀번호를 이메일로 보내기',
+'mailmypassword' => '비밀번호 재설정',
 'passwordremindertitle' => '{{SITENAME}}의 새 임시 비밀번호',
 'passwordremindertext' => '$1 IP 주소에서 누군가가 아마 자신이 {{SITENAME}} ($4)의 새 비밀번호를 요청했습니다.
 "$2" 사용자의 임시 비밀번호는 "$3"로 설정되었습니다. 이것이 자신이 의도한 바라면
@@ -940,7 +941,7 @@ $1 기다렸다가 다시 시도하세요.',
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
 'passwordreset-text-one' => '비밀번호를 재설정하려면 이 양식을 작성해주세요.',
-'passwordreset-text-many' => '{{PLURAL:$1|비밀번호를 재설정하려면 필드 중 하나를 채우세요.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|이메일로 임시 비밀번호를 발급받으려면 필드 중 하나를 채우세요.}}',
 'passwordreset-legend' => '비밀번호 재설정',
 'passwordreset-disabled' => '이 위키에서는 비밀번호를 재설정할 수 없습니다.',
 'passwordreset-emaildisabled' => '이 위키에서 이메일 기능이 비활성화되어 있습니다.',
@@ -1079,9 +1080,9 @@ $1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대
 'accmailtitle' => '비밀번호를 보냈습니다',
 'accmailtext' => '[[User talk:$1|$1]] 사용자의 비밀번호가 임의로 만들어져 $2(으)로 보냈습니다. 로그인하고 나서 [[Special:ChangePassword|비밀번호를 바꿀]] 수 있습니다.',
 'newarticle' => '(새 문서)',
-'newarticletext' => "ì\9d´ ë¬¸ì\84\9cë\8a\94 ì\95\84ì§\81 ë§\8cë\93¤ì\96´ì§\80ì§\80 ì\95\8aì\95\98습니다.
-새 문서를 만들려면 아래의 상자에 문서 내용을 입력하면 됩니다(자세한 내용은 [[{{MediaWiki:Helppage}}|도움말]]을 읽어 주세요).
-ë§\8cì\95½ ì\9e\98못 ì°¾ì\95\84ì\98¨ ë¬¸ì\84\9cë\9d¼ë©´ ì\9b¹ 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
+'newarticletext' => "ì\95\84ì§\81 ì\97\86ë\8a\94 ë¬¸ì\84\9cì\9d\98 ë§\81í\81¬ë¥¼ ë\94°ë\9d¼ì\99\94습니다.
+새 문서를 만들려면 아래 상자에 내용을 입력하면 됩니다. (자세한 내용은 [[{{MediaWiki:Helppage}}|도움말 문서]]를 참고하세요)
+ë§\8cì\95½ ì\9e\98못 ì°¾ì\95\84ì\99\94ë\8b¤ë©´, 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
 'anontalkpagetext' => '----
 여기는 계정을 만들지 않았거나 사용하고 있지 않은 익명 사용자를 위한 토론 문서입니다.
 익명 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다.
@@ -1439,13 +1440,9 @@ $1",
 
 # Search results
 'searchresults' => '검색 결과',
-'searchresults-title' => '"$1"에 대한 찾기 결과',
-'searchresulttext' => '{{SITENAME}}의 검색에 대한 자세한 정보는 [[{{MediaWiki:Helppage}}|{{int:help}}]] 문서를 참고하세요.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' 문서를 검색하고 있습니다. ([[Special:Prefixindex/$1|이름이 "$1" 접두어로 시작하는 문서 목록]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" 문서를 가리키는 문서 목록]])',
-'searchsubtitleinvalid' => "'''$1''' 검색어로 검색했습니다",
+'searchresults-title' => '"$1"에 대한 검색 결과',
 'toomanymatches' => '일치하는 결과가 너무 많습니다. 다른 검색어를 입력해주세요.',
 'titlematches' => '문서 제목 일치',
-'notitlematches' => '해당하는 제목 없음',
 'textmatches' => '문서 내용 일치',
 'notextmatches' => '해당하는 문서 없음',
 'prevn' => '이전 {{PLURAL:$1|$1개}}',
@@ -1454,19 +1451,17 @@ $1",
 'nextn-title' => '다음 {{PLURAL:$1|결과}} $1개',
 'shown-title' => '쪽마다 {{PLURAL:$1|결과}} $1개씩 보기',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) 보기',
-'searchmenu-legend' => '검색 설정',
 'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
 'searchmenu-new' => "'''이 위키에 \"[[:\$1]]\" 문서를 만드세요!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾기]]',
 'searchprofile-articles' => '본문',
 'searchprofile-project' => '도움말 및 프로젝트 문서',
 'searchprofile-images' => '멀티미디어',
-'searchprofile-everything' => '모든 문서 찾기',
+'searchprofile-everything' => '모든 문서',
 'searchprofile-advanced' => '고급',
 'searchprofile-articles-tooltip' => '$1에서 검색',
-'searchprofile-project-tooltip' => '$1에서 찾기',
+'searchprofile-project-tooltip' => '$1에서 검색',
 'searchprofile-images-tooltip' => '파일 검색',
-'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 찾기',
+'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 검색',
 'searchprofile-advanced-tooltip' => '다음 설정한 이름공간에서 검색',
 'search-result-size' => '$1 ({{PLURAL:$2|1 단어|$2 단어}})',
 'search-result-category-size' => '{{PLURAL:$1|문서 1개|문서 $1개}}, {{PLURAL:$2|하위 분류 1개|하위 분류 $2개}}, {{PLURAL:$3|파일 1개|파일 $3개}}',
@@ -1479,19 +1474,16 @@ $1",
 'search-interwiki-more' => '(더 보기)',
 'search-relatedarticle' => '관련',
 'mwsuggest-disable' => '검색 제안 비활성화',
-'searcheverything-enable' => '모든 이름공간에서 찾기',
+'searcheverything-enable' => '모든 이름공간에서 검색',
 'searchrelated' => '관련',
 'searchall' => '모두',
 'showingresults' => "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
 'showingresultsnum' => "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}} 입니다.",
 'showingresultsheader' => "'''$4''' 검색어에 대하여 {{PLURAL:$5|결과 '''$3'''개 중 '''$1'''개|결과 '''$3'''개 중 '''$1 - $2'''번째}}를 보여 주고 있습니다",
-'nonefound' => "'''참고''': 몇개의 이름공간만 기본으로 검색하는 범위입니다. 토론이나 틀 등의 모든 자료를 검색하려면 접두어로 '''all:''' 어떤 이름공간을 위해서는 접두어로 그 이름공간을 쓸 수 있습니다.",
-'search-nonefound' => '찾기 결과가 없습니다.',
-'powersearch' => '고급 검색',
-'powersearch-legend' => '고급 찾기',
+'search-nonefound' => '검색어와 일치하는 결과가 없습니다.',
+'powersearch-legend' => '고급 검색',
 'powersearch-ns' => '다음 이름공간에서 검색:',
 'powersearch-redir' => '넘겨주기 목록',
-'powersearch-field' => '검색',
 'powersearch-togglelabel' => '확인:',
 'powersearch-toggleall' => '모두',
 'powersearch-togglenone' => '모두 제외',
@@ -1499,14 +1491,13 @@ $1",
 'searchdisabled' => '{{SITENAME}} 검색이 비활성화되어 있습니다.
 검색이 작동하지 않는 동안에는 Google(구글)을 통해 검색할 수 있습니다.
 검색 엔진의 내용은 최신이 아닐 수 있다는 점을 참고하세요.',
-'search-error' => '는 동안 오류가 발생했습니다: $1',
+'search-error' => '검색하는 동안 오류가 발생했습니다: $1',
 
 # Preferences page
 'preferences' => '사용자 환경 설정',
 'mypreferences' => '환경 설정',
 'prefs-edits' => '편집 횟수:',
-'prefsnologin' => '로그인하지 않음',
-'prefsnologintext' => '사용자 환경 설정을 바꾸려면 먼저 <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 로그인]</span>해야 합니다.',
+'prefsnologintext2' => '사용자 환경 설정을 설정하려면 $1하십시오.',
 'changepassword' => '비밀번호 바꾸기',
 'prefs-skin' => '스킨',
 'skin-preview' => '미리 보기',
@@ -1530,7 +1521,6 @@ $1",
 'prefs-email' => '이메일 설정',
 'prefs-rendering' => '문서 보이기 설정',
 'saveprefs' => '저장',
-'resetprefs' => '저장하지 않은 설정 되돌리기',
 'restoreprefs' => '(모든 부분에서) 모두 기본 설정으로 되돌리기',
 'prefs-editing' => '편집 상자',
 'rows' => '줄 수:',
@@ -1551,7 +1541,6 @@ $1",
 'localtime' => '현지 시각:',
 'timezoneuseserverdefault' => '위키 기본값($1)을 사용',
 'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
-'timezoneoffset' => '시차¹:',
 'servertime' => '서버 시각:',
 'guesstimezone' => '웹 브라우저 설정에서 가져오기',
 'timezoneregion-africa' => '아프리카',
@@ -1808,6 +1797,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 이래로 새로 바뀐 문서 보기',
@@ -2138,7 +2129,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist-dimensions' => '크기',
 'filehist-filesize' => '파일 크기',
 'filehist-comment' => '덧글',
-'filehist-missing' => 'í\8c\8cì\9d¼ì\9d\84 ì°¾ì\9d\84 ì\88\98 없음',
+'filehist-missing' => 'í\8c\8cì\9d¼ì\9d´ 없음',
 'imagelinks' => '이 파일을 사용하는 문서',
 'linkstoimage' => '다음 {{PLURAL:$1|문서 $1개}}가 이 파일을 가리키고 있습니다:',
 'linkstoimage-more' => '$1개 이상의 {{PLURAL:$1|문서}}가 이 파일을 가리키고 있습니다.
@@ -2198,7 +2189,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 
 # MIME search
 'mimesearch' => 'MIME 검색',
-'mimesearch-summary' => 'MIME 타입에 해당하는 파일을 찾습니다.
+'mimesearch-summary' => 'MIME 유형에 해당하는 파일을 검색합니다.
 다음 형태로 입력해주세요: 내용종류/하위종류, 예를 들어 <code>image/jpeg</code>',
 'mimetype' => 'MIME 종류:',
 'download' => '다운로드',
@@ -2324,10 +2315,8 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'protectedpages' => '보호된 문서 목록',
 'protectedpages-indef' => '오른쪽 조건에 맞는 보호만 보기',
 'protectedpages-cascade' => '연쇄적 보호만 보기',
-'protectedpagestext' => '다음 문서는 이동이나 편집이 불가능하도록 보호되어 있습니다.',
 'protectedpagesempty' => '보호되어 있는 문서가 없습니다.',
 'protectedtitles' => '만들기 보호된 표제어 목록',
-'protectedtitlestext' => '다음 표제어는 만들기가 금지되어 있습니다.',
 'protectedtitlesempty' => '해당 조건에 맞는 만들기 금지 표제어가 없습니다.',
 'listusers' => '사용자 목록',
 'listusers-editsonly' => '기여가 있는 사용자만 보기',
@@ -2346,7 +2335,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'notargettitle' => '해당하는 문서 없음',
 'notargettext' => '기능을 수행할 대상 문서나 사용자를 지정하지 않았습니다.',
 'nopagetitle' => '해당하는 문서 없음',
-'nopagetext' => 'ì°¾ë\8a\94 문서가 존재하지 않습니다.',
+'nopagetext' => 'ì§\80ì \95í\95\9c ë\8c\80ì\83\81 문서가 존재하지 않습니다.',
 'pager-newer-n' => '{{PLURAL:$1|다음 1개|다음 $1개}}',
 'pager-older-n' => '{{PLURAL:$1|이전 1개|이전 $1개}}',
 'suppress' => '오버사이트',
@@ -2356,7 +2345,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'booksources' => '책 찾기',
 'booksources-search-legend' => '책 원본 검색',
 'booksources-isbn' => 'ISBN:',
-'booksources-go' => '찾기',
+'booksources-go' => '검색',
 'booksources-text' => '아래의 목록은 새 책이나 중고 책을 판매하는 바깥 사이트로, 원하는 책의 정보를 얻을 수 있습니다.',
 'booksources-invalid-isbn' => '입력한 ISBN이 잘못된 것으로 보입니다. 원본과 대조해 보세요.',
 
@@ -2411,7 +2400,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 
 # Special:LinkSearch
 'linksearch' => '바깥 링크 검색',
-'linksearch-pat' => '찾기 패턴:',
+'linksearch-pat' => '검색 패턴:',
 'linksearch-ns' => '이름공간:',
 'linksearch-ok' => '검색',
 'linksearch-text' => '"*.wikipedia.org"와 같이 와일드 카드를 사용할 수 있습니다.
@@ -2554,7 +2543,7 @@ $PAGEINTRO $NEWPAGE
 이메일: $PAGEEDITOR_EMAIL
 위키: $PAGEEDITOR_WIKI
 
-이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
+로그인한 상태에서 이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
 
 {{SITENAME}} 알림 시스템
 
@@ -2740,10 +2729,10 @@ $1',
 [[Special:Log/delete|삭제 기록]]에서 최근의 삭제와 되살리기 기록을 볼 수 있습니다.",
 'undelete-header' => '최근에 삭제한 문서에 대한 기록은 [[Special:Log/delete|여기]]에서 볼 수 있습니다.',
 'undelete-search-title' => '삭제된 문서 검색',
-'undelete-search-box' => '삭제된 문서 찾기',
+'undelete-search-box' => '삭제된 문서 검색',
 'undelete-search-prefix' => '다음으로 시작하는 문서 보기:',
 'undelete-search-submit' => '검색',
-'undelete-no-results' => 'ì\82­ì \9cë\90\9c ë¬¸ì\84\9c ë³´ì¡´ì\97\90ì\84\9c ì\9d¼ì§\80하는 문서를 찾을 수 없습니다.',
+'undelete-no-results' => 'ì\82­ì \9cë\90\9c ë¬¸ì\84\9c ë³´ì¡´ì\97\90ì\84\9c ì\9d¼ì¹\98하는 문서를 찾을 수 없습니다.',
 'undelete-filename-mismatch' => '타임스탬프가 $1인 파일의 버전을 되살릴 수 없습니다: 파일 이름이 일치하지 않습니다.',
 'undelete-bad-store-key' => '타임스탬프가 $1인 파일의 버전을 되살릴 수 없습니다: 파일이 삭제되기 전에 사라졌습니다.',
 'undelete-cleanup-error' => '사용되지 않는 보존된 파일 "$1"을 삭제하는 데 오류가 발생했습니다.',
@@ -2868,7 +2857,7 @@ $1',
 'unblocked-id' => '$1 차단이 해제되었습니다.',
 'blocklist' => '차단된 사용자 목록',
 'ipblocklist' => '차단된 사용자',
-'ipblocklist-legend' => '차단 중인 사용자 찾기',
+'ipblocklist-legend' => '차단 사용자 찾기',
 'blocklist-userblocks' => '계정에 대한 차단 숨기기',
 'blocklist-tempblocks' => '기한이 정해진 차단을 숨기기',
 'blocklist-addressblocks' => '단일 IP 차단을 숨기기',
@@ -3098,7 +3087,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 
 # Thumbnails
 'thumbnail-more' => '실제 크기로',
-'filemissing' => '파일 사라짐',
+'filemissing' => '파일이 없음',
 'thumbnail_error' => '섬네일을 만드는 중 오류 발생: $1',
 'thumbnail_error_remote' => '$1에서 반환한 오류 메시지:
 $2',
@@ -3108,7 +3097,7 @@ $2',
 'thumbnail-dest-create' => '대상 경로에 섬네일을 저장할 수 없습니다.',
 'thumbnail_invalid_params' => '섬네일 매개변수가 잘못되었습니다.',
 'thumbnail_dest_directory' => '새 목적 디렉터리를 만들 수 없습니다.',
-'thumbnail_image-type' => 'í\95´ë\8b¹ í\8c\8cì\9d¼ í\98\95ì\8b\9dì\9d\80 ì§\80ì\9b\90í\95\98ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤',
+'thumbnail_image-type' => '그림 í\98\95ì\8b\9dì\9d´ ì§\80ì\9b\90ë\90\98ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤',
 'thumbnail_gd-library' => 'GD 라이브러리 설정이 잘못되었습니다: $1 함수를 찾을 수 없습니다.',
 'thumbnail_image-missing' => '파일을 찾을 수 없습니다: $1',
 
@@ -3298,7 +3287,7 @@ $2',
 'spamprotectiontext' => '스팸 필터가 문서 저장을 막았습니다.
 바깥 사이트로 연결하는 링크 중에 블랙리스트에 포함된 사이트가 있을 것입니다.',
 'spamprotectionmatch' => '문제가 되는 부분은 다음과 같습니다: $1',
-'spambot_username' => 'MediaWiki 스팸 제거',
+'spambot_username' => '미디어위키 스팸 정리',
 'spam_reverting' => '$1(을)를 포함하지 않는 최신 버전으로 되돌림',
 'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 차단함',
 'spam_deleting' => '모든 버전에 $1 링크를 포함하고 있어 삭제함',
@@ -3405,7 +3394,7 @@ $1',
 'svg-long-desc' => 'SVG 파일, 실제 크기 $1 × $2 픽셀, 파일 크기: $3',
 'svg-long-desc-animated' => '애니메이션 SVG 파일, 실제 크기 $1 × $2 픽셀, 파일 크기: $3',
 'svg-long-error' => '잘못된 SVG 파일: $1',
-'show-big-image' => 'ìµ\9cë\8c\80 í\95´ì\83\81ë\8f\84',
+'show-big-image' => 'ì\9b\90본 í\8c\8cì\9d¼',
 'show-big-image-preview' => '미리 보기 크기: $1',
 'show-big-image-other' => '다른 {{PLURAL:$2|해상도}}: $1',
 'show-big-image-size' => '$1 × $2 픽셀',
@@ -3434,7 +3423,7 @@ $1',
 'minutes' => '$1분',
 'hours' => '$1시간',
 'days' => '$1일',
-'weeks' => '{{PLURAL:$1|$1주}}',
+'weeks' => '$1주',
 'months' => '$1달',
 'years' => '$1년',
 'ago' => '$1 전',
@@ -3469,8 +3458,8 @@ Variants for Chinese language
 
 # Metadata
 'metadata' => '메타데이터',
-'metadata-help' => '이 파일은 카메라나 스캐너에서 기록한 부가 정보를 가지고 있습니다.
-프로그램에서 파일을 편집할 경우, 새로 저장한 그림 파일에 일부 부가 정보가 빠질 수 있습니다.',
+'metadata-help' => '이 파일은 그 파일을 만들거나 디지털화하는 데 사용되는 카메라나 스캐너에서 기록한 부가 정보를 가지고 있습니다.
+프로그램에서 파일을 편집할 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
 'metadata-expand' => '자세한 정보 보이기',
 'metadata-collapse' => '자세한 정보 숨기기',
 'metadata-fields' => '파일 메타데이터 표가 접혀 있을 때, 이 메시지에 올라와 있는 다음 속성값만이 기본적으로 보이게 됩니다.
@@ -3656,7 +3645,7 @@ Variants for Chinese language
 'exif-preferredattributionname' => '이 저작물을 이용할 때 보일 저작자 이름',
 'exif-pngfilecomment' => 'PNG 파일 주석',
 'exif-disclaimer' => '면책 조항',
-'exif-contentwarning' => '콘텐츠 경고',
+'exif-contentwarning' => '내용 경고',
 'exif-giffilecomment' => 'GIF 파일 주석',
 'exif-intellectualgenre' => '항목 종류',
 'exif-subjectnewscode' => '주제 코드',
@@ -3882,10 +3871,6 @@ Variants for Chinese language
 'exif-urgency-high' => '높음 ($1)',
 'exif-urgency-other' => '사용자 정의 ($1)',
 
-# External editor support
-'edit-externally' => '이 파일을 바깥 프로그램을 사용해서 편집하기',
-'edit-externally-help' => '(자세한 정보는 [https://www.mediawiki.org/wiki/Manual:External_editors 설치 방법]을 참고하세요)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '모두',
 'namespacesall' => '모두',
@@ -3904,7 +3889,7 @@ Variants for Chinese language
 'confirmemail_send' => '인증 코드를 메일로 보내기',
 'confirmemail_sent' => '인증 이메일을 보냈습니다.',
 'confirmemail_oncreate' => '확인 이메일을 보냈습니다.
-이 확인 과정은 로그인하는 데에 필요하지는 않지만, 위키 프로그램에서 제공하는 이메일 기능을 사용하기 위해서 필요합니다.',
+이 확인 과정은 로그인하는 데에 필요하지는 않지만, 위키에서 제공하는 이메일 기능을 사용하기 위해서 필요합니다.',
 'confirmemail_sendfailed' => '{{SITENAME}}에서 인증 이메일을 보낼 수 없습니다.
 이메일 주소를 잘못 입력했는지 확인해주세요.
 
@@ -3987,6 +3972,9 @@ $5
 'confirm-unwatch-button' => '확인',
 'confirm-unwatch-top' => '이 문서를 주시문서 목록에서 뺄까요?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '“$1”',
+
 # Multipage image navigation
 'imgmultipageprev' => '← 이전 페이지',
 'imgmultipagenext' => '다음 페이지 →',
@@ -4074,16 +4062,16 @@ $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|미디어위키]]에 기여한 다음 사람í\95\9cí\85\8c ê°\90ì\82¬ë\93\9c립ë\8b\88ë\8b¤.',
+'version-credits-summary' => '[[Special:Version|미디어위키]]에 기여한 다음 사람ì\97\90ê²\8c ê°\90ì\82¬ë\93\9c립ë\8b\88ë\8b¤.',
 'version-license-info' => "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.
 
 미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참고하십시오.
 
 당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
-'version-software' => '설치된 프로그램',
+'version-software' => '설치된 소프트웨어',
 'version-software-product' => '제품',
 'version-software-version' => '버전',
 'version-entrypoints' => 'URL 진입점',
@@ -4096,7 +4084,7 @@ $5
 'redirect' => '파일, 사용자나 판 ID별 넘겨주기',
 'redirect-legend' => '파일이나 문서로 넘겨주기',
 'redirect-summary' => '이 특수 문서는 파일(파일 이름을 지정), 문서(판 ID를 지정)나 사용자 문서(사용자 ID를 정수로 지정)로 넘겨줍니다. 사용법: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], 혹은 [[{{#Special:Redirect}}/user/101]].',
-'redirect-submit' => '기',
+'redirect-submit' => '기',
 'redirect-lookup' => '찾을 종류:',
 'redirect-value' => '값:',
 'redirect-user' => '사용자 ID',
@@ -4106,7 +4094,7 @@ $5
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => '중복된 파일 검색',
-'fileduplicatesearch-summary' => '파일 해시값을 이용해 중복 파일을 찾습니다.',
+'fileduplicatesearch-summary' => '파일 해시값을 이용해 중복 파일을 검색합니다.',
 'fileduplicatesearch-legend' => '중복 검색',
 'fileduplicatesearch-filename' => '파일 이름:',
 'fileduplicatesearch-submit' => '검색',
@@ -4117,8 +4105,8 @@ $5
 
 # Special:SpecialPages
 'specialpages' => '특수 문서 목록',
-'specialpages-note' => '----
-* 일반 특수 문서입니다.
+'specialpages-note-top' => '범례',
+'specialpages-note' => '* 일반 특수 문서입니다.
 * <span class="mw-specialpagerestricted">제한된 특수 문서입니다.</span>',
 'specialpages-group-maintenance' => '관리용 목록',
 'specialpages-group-other' => '다른 특수 문서',
@@ -4203,7 +4191,7 @@ $5
 
 # SQLite database support
 'sqlite-has-fts' => '$1 (본문 전체 검색 지원)',
-'sqlite-no-fts' => '$1 (본문은 찾기에서 제외)',
+'sqlite-no-fts' => '$1 (본문 전체 검색 지원 제외)',
 
 # New logging system
 'logentry-delete-delete' => '$1 사용자가 $3 문서를 {{GENDER:$2|삭제했습니다}}',
@@ -4332,4 +4320,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..fe542c8 100644 (file)
@@ -99,7 +99,6 @@ $messages = array(
 'qbedit' => 'Мöдкодьсьöтны',
 'qbpageoptions' => 'Этiя листбок',
 'qbmyoptions' => 'Листбоккезö',
-'qbspecialpages' => 'Тодильнöй листбоккез',
 'faq' => 'Отир сё юасьö',
 'faqpage' => 'Project:отир сё юасьö',
 
@@ -165,8 +164,6 @@ $messages = array(
 
 'retrievedfrom' => 'Öшмöс "$1"',
 'youhavenewmessages' => 'Тэныт локтiс $1 ($2).',
-'newmessageslink' => 'виль юöррез',
-'newmessagesdifflink' => 'медбöрьяись вильмöтöм',
 'youhavenewmessagesmulti' => '$1 юкöтын тэ понда мыйкö эм',
 'editsection' => 'мöдкодьсьöтны',
 'editold' => 'мöдкодьсьöтны',
@@ -324,10 +321,6 @@ $messages = array(
 # Search results
 'searchresults' => 'Адззöм то мый:',
 'searchresults-title' => '"$1" сьöртi адззöм то мый:',
-'searchresulttext' => 'Унажык информация {{SITENAME}} кошшикö, видзöт [[{{MediaWiki:Helppage}}|{{int:help}}]] вылö.',
-'searchsubtitle' => 'Тэ кошшан \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|быдöс листбоккез, кöдна пондöтчöны "$1"-öн]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|быдöс листбоккез, кöдна ыстiсьöны "$1" вылö]])',
-'searchsubtitleinvalid' => '«$1» кошшикö',
-'notitlematches' => 'Листбоккез ниммезын абу öткодь торрез',
 'notextmatches' => 'Листбоккез тексттэзын абу öткодь торрез',
 'prevn' => '{{PLURAL:$1|одзжыкся $1}}',
 'nextn' => '{{PLURAL:$1|одзланься $1}}',
@@ -343,12 +336,9 @@ $messages = array(
 'search-interwiki-default' => '$1 результат:',
 'search-interwiki-more' => '(унажык)',
 'searchall' => 'быдöс',
-'nonefound' => "'''Пасйöт.''' Он кö нагладь шуан,  кытiсь кошшыны,  шедасö не быдöс тексттэз, кытöн пантасьö колан кылыс. Мед кошшыны быдöс тексттэзiсь (уджкериссез листбоккезiсь,  шаболоннэзiсь дмд.), гиж ''all:'',  нето утлянно мыччав,  кытiсь кошшыны.",
-'powersearch' => 'Паськытжыка кошшан',
 'powersearch-legend' => 'Паськытжыка кошшан',
 'powersearch-ns' => 'Ним чукöррезiсь кошшан:',
 'powersearch-redir' => 'Мöдлаö иньдöтöммез ним сьöртi',
-'powersearch-field' => 'Кошшан',
 'powersearch-toggleall' => 'Быдöс',
 'powersearch-togglenone' => 'Нем',
 
@@ -740,10 +730,6 @@ $messages = array(
 'exif-imagewidth' => 'Пасьта',
 'exif-imagelength' => 'Вылына',
 
-# External editor support
-'edit-externally' => 'Редактируйтны этiйö файлсö мöд программа пыр',
-'edit-externally-help' => '(унажык видзöт: [https://www.mediawiki.org/wiki/Manual:External_editors удж кежö лöсьöтны туйдöтан])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'быдöс',
 'namespacesall' => 'быдöс',
index 55362a7..411a4ad 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( 'Къошулуучугъа_джазма', 'Джазма_ий' ),
@@ -268,7 +266,6 @@ $messages = array(
 'qbedit' => 'Тюрлендир',
 'qbpageoptions' => 'Бу бет',
 'qbmyoptions' => 'Бетлерим',
-'qbspecialpages' => 'Къуллукъчу бетле',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -383,8 +380,6 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Чыкъгъаны — «$1»',
 'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
-'newmessageslink' => 'джангы билдириуле',
-'newmessagesdifflink' => 'сюзюу бетигизни ахыр тюрлениую',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
 'youhavenewmessagesmanyusers' => 'Талай къошулуучудан $1 барды. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириу|джангы билдириуле}}',
@@ -478,9 +473,6 @@ $1',
 'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла  {{PLURAL:$4|джазыу|джазыу}} сакъланады.',
 'querypage-no-updates' => 'Бу бетни бусагъатда джангыртыргъа болмайды.
 Мында келтирилген информация къабыл этилинник тюйюлдю.',
-'wrong_wfQuery_params' => 'wfQuery()<br /> функциягъа джарамагъан параметрле<br />
-Функция: $1<br />
-Соруу: $2',
 'viewsource' => 'Къарау',
 'viewsource-title' => '$1 бетни чыкъгъан текстине къарау',
 'actionthrottled' => 'Терклик чекленнгенди',
@@ -1104,12 +1096,8 @@ $1",
 # Search results
 'searchresults' => 'Излеуню эсеби',
 'searchresults-title' => '«$1» ючюн излеуню эсеблери',
-'searchresulttext' => 'Проектни бетлеринде излеуню юсюндет толу информация табарча [[{{MediaWiki:Helppage}}|{{int:help}}]] бетге киригиз.',
-'searchsubtitle' => 'Изленнген «[[:$1]]» ([[Special:Prefixindex/$1|бу ат бла башланнган бетле]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|бу атха джибериу берген бетле]])',
-'searchsubtitleinvalid' => '«$1» сордугъуз',
 'toomanymatches' => 'Асыры кёб бирчалыкъ барды, джангыдан соруу джиберирге кюрешигиз',
 'titlematches' => 'Бетлени атында бирчалыкъ барды',
-'notitlematches' => 'Бетлени атларында бирчалыкълары джокъду',
 'textmatches' => 'Бетлени текстлеринде бирчалыкъла барды',
 'notextmatches' => 'Бетлени текстлеринде бирчалыкъ джокъду',
 'prevn' => 'алдагъы {{PLURAL:$1|$1}}',
@@ -1118,10 +1106,8 @@ $1",
 'nextn-title' => 'Артдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
 'shown-title' => 'Бетде $1 {{PLURAL:$1|джазыуну}} кёргюз',
 'viewprevnext' => 'Къара: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Излеуню джарашдырыулары',
 'searchmenu-exists' => "'''Бу викиде «[[:$1]]» бет барды'''",
 'searchmenu-new' => "'''Бу вики-проектде «[[:$1]]» бетни къура!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикс бла бетни кёргюз]]',
 'searchprofile-articles' => 'Баш бетле',
 'searchprofile-project' => 'Болушлукъ эм проект бетле',
 'searchprofile-images' => 'Мультимедия',
@@ -1149,13 +1135,10 @@ $1",
 'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|эсеб|эсебле}} {{PLURAL:$1|кёргюзюлгенди|кёргюзюлгендиле}}.',
 'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|эсеб|эсебле}} {{PLURAL:$3|кёргюзюлгенди|кёргюзюлгендиле}}.',
 'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|'''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
-'nonefound' => "'''Эсгериу:''' тынгылау бла излеу бютеу атланы аламында бардырылмайды. Бютеу атланы аламында (къошулуучуланы сюзюулери, шаблонла эмда башхала) излер ючюн аллындан ''all:'' префиксни хайырландырыгъыз неда керекли атланы аламын белгилегиз.",
 'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
-'powersearch' => 'Кенг излеу',
 'powersearch-legend' => 'Кенг излеу',
 'powersearch-ns' => 'Атла аламда излеу:',
 'powersearch-redir' => 'Джибериулени кёргюз',
-'powersearch-field' => 'Излеу:',
 'powersearch-togglelabel' => 'Белгиле:',
 'powersearch-toggleall' => 'Барысы да',
 'powersearch-togglenone' => 'Бири да',
@@ -1167,8 +1150,6 @@ $1",
 'preferences' => 'Джарашдырыула',
 'mypreferences' => 'Джарашдырыула',
 'prefs-edits' => 'Тюрлендириулени саны:',
-'prefsnologin' => 'Системагъа кесигизни танытмагъансыз',
-'prefsnologintext' => 'Къошулуучуну джарашдырыуларын тюрлендирир ючюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} системагъа кесигизни танытыргъа]</span> керексиз.',
 'changepassword' => 'Паролну ауушдур',
 'prefs-skin' => 'Джасауу',
 'skin-preview' => 'Ал къарау',
@@ -1192,7 +1173,6 @@ $1",
 'prefs-email' => 'Электрон почтаны параметрлери',
 'prefs-rendering' => 'Кёрюнюую',
 'saveprefs' => 'Сакъла',
-'resetprefs' => 'Тюрлениулени ызына къайтар',
 'restoreprefs' => 'Тынгылау бла джарашдырыуланы ызына къайтар',
 'prefs-editing' => 'Тюрлендириу',
 'rows' => 'Тизгинле:',
@@ -1210,7 +1190,6 @@ $1",
 'localtime' => 'Джерли заман:',
 'timezoneuseserverdefault' => 'Серверни джарашдырыуларын хайырландыр ($1)',
 'timezoneuseoffset' => 'Башха (тебиндириуню беригиз)',
-'timezoneoffset' => 'Тебиндириу¹:',
 'servertime' => 'Сервер заман:',
 'guesstimezone' => 'Браузерден толтур',
 'timezoneregion-africa' => 'Африка',
@@ -1448,6 +1427,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 башлаб джангы тюрлениулени кёргюз',
@@ -1886,10 +1866,8 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'protectedpages' => 'Къоруугъа алыннган бетле',
 'protectedpages-indef' => 'Къуру болджалсыз къоруу',
 'protectedpages-cascade' => 'Джангыз секиртме къоруу',
-'protectedpagestext' => 'Эндиги бетле атын ауушдуруу бла тюрлендириуден джакъланыбдыла.',
 'protectedpagesempty' => 'Бусагъатда бу параметрле бла джакъланнган бет джекъду.',
 'protectedtitles' => 'Джакъланнган башлыкъла',
-'protectedtitlestext' => 'Бу атланы хайырланыргъа эркинлик джокъду',
 'protectedtitlesempty' => 'Бусагъатда, бу параметрле бла джакъланнган башлыкъ джокъду.',
 'listusers' => 'Къошулуучуланы тизмеси',
 'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
@@ -3277,10 +3255,6 @@ $1',
 'exif-urgency-high' => 'Мийик ($1)',
 'exif-urgency-other' => 'Къошулуучу салгъан приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Бу файлны тыш программа бла тюрлендиригиз',
-'edit-externally-help' => '(толу информациягъа мында къарагъыз: [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бютеу',
 'namespacesall' => 'бютеу',
@@ -3533,8 +3507,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 
 # Special:SpecialPages
 'specialpages' => 'Къуллукъчу бетле',
-'specialpages-note' => '----
-* Тюз къуллукъчу бетле.
+'specialpages-note' => '* Тюз къуллукъчу бетле.
 * <span class="mw-specialpagerestricted">Кирирге эркинлик чекленнген къуллукъчу бетле.</span>
 * <span class="mw-specialpagecached">Кэш этилген къуллукъчу бетле (эски болургъа боллукъдула).</span>',
 'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
@@ -3687,4 +3660,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'duration-centuries' => '$1 {{PLURAL:$1|ёмюр}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мингджыллыкъ}}',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Шаблонланы ачыу',
+
 );
index 81cddc3..b5bfd71 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' ),
@@ -371,7 +369,6 @@ $messages = array(
 'qbedit' => 'Ändere',
 'qbpageoptions' => 'Sigge Enstellunge',
 'qbmyoptions' => 'Ming Sigge',
-'qbspecialpages' => 'Spezial Sigge',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -488,8 +485,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}}',
@@ -592,9 +587,6 @@ Muss De repareere.',
 'perfcachedts' => 'De Daate heenoh kumme usem Zweschespeicher (<i lang="en">cache</i>) un woodte aam $2 öm $3 opjenumme. Se künnte nit janz de allerneuste sin.
 {{PLURAL:$4|Bloß ein Antwoot es|Nit mieh wi $4 Antwoote sind|Kein Antwoot es}} doh ze han.',
 'querypage-no-updates' => "'''Heh die Sigg weed nit mieh op ene neue Stand jebraat.'''",
-'wrong_wfQuery_params' => 'Verkihrte Parameter för: <strong><code>wfQuery()</code></strong><br />
-De Funktion es: „<code>$1</code>“<br />
-De Aanfroch es: „<code>$2</code>“<br />',
 'viewsource' => 'Wikitex aanluure',
 'viewsource-title' => 'Der Wikitäx vun dä Sigg „$1“ belooere.',
 'actionthrottled' => "Dat ka'mer nit esu öff maache",
@@ -1370,12 +1362,8 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 # Search results
 'searchresults' => 'Wat beim Söke eruskom',
 'searchresults-title' => 'Noh „$1“ jesoht.',
-'searchresulttext' => 'Luur en de [[{{MediaWiki:Helppage}}|{{int:help}}]]-Sigge noh, wann de mieh drüvver wesse wells, wie mer {{GRAMMAR:em|{{SITENAME}}}} jet fingk.',
-'searchsubtitle' => 'För Ding Froch noh „[[:$1|$1]]“ — ([[Special:Prefixindex/$1|Sigge, di met „$1“ annfange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Sigge, di Links noh „$1“ han]])',
-'searchsubtitleinvalid' => 'För Ding Froch noh „$1“',
 'toomanymatches' => 'Dat wore zo vill Treffer, beß esu joot, un donn en annder Ußwahl probeere!',
 'titlematches' => 'Zopass Üvverschrefte',
-'notitlematches' => 'Kein zopass Üvverschrefte',
 'textmatches' => 'Sigge met däm Täx',
 'notextmatches' => 'Kein Sigg met däm Tex',
 'prevn' => 'de {{PLURAL:$1|ein|$1|0}} doför zeije',
@@ -1384,10 +1372,8 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'nextn-title' => '{{PLURAL:$1|Et näähßte|De nähßte $1|Kütt nix mieh}}',
 'shown-title' => 'Zeisch {{PLURAL:$1|ein|$1|nix}} pro Sigg',
 'viewprevnext' => 'Bläddere: ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Enschtällonge för et Söhke',
 'searchmenu-exists' => "*Sigg '''[[$1]]'''",
 'searchmenu-new' => "'''Donn de Sigg „[[:$1|$1]]“ hee em Wiki aanlääje'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeich all Sigge, di met däm Tex aanfange]]',
 'searchprofile-articles' => 'Sigge vum Enhalt',
 'searchprofile-project' => 'Hülp- ov Projäk-Sigge',
 'searchprofile-images' => 'Dateie met Medije',
@@ -1415,17 +1401,10 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'showingresults' => 'Onge {{PLURAL:$1|weed <strong>eine</strong>|wääde bes <strong>$1</strong>|weed <strong>keine</strong>}} vun de jefonge Endrähsch jezeisch, vun de Nommer <strong>$2</strong> av.',
 'showingresultsnum' => 'Onge {{PLURAL:$3|es ein|sin <strong>$3</strong>|sin <strong>kein</strong>}} vun de jefonge Endrähsch opjeleß, vun de Nommer <strong>$2</strong> av.',
 'showingresultsheader' => "Jefonge un aanjezeisch: {{PLURAL:$5|'''$1''' vun '''$3'''|'''$1''' beß '''$2''' vun '''$3'''|nix}} för '''$4'''",
-'nonefound' => '<strong>Opjepass:</strong>
-Standatmääßesch don mer nur en bestemmpte Appachtemangs söke.
-Donn „<code>all:</code>“ för Ding Wööt saze, wan de en alle Appachtemangs
-söke wells, och Klaafsigge, Schabloone, un esu, udder nemm dä zopaß
-Appachtemangs-Name.',
 'search-nonefound' => 'Mer han nix zopaß jefonge för Ding Aanfrohch.',
-'powersearch' => 'Lohß jonn!',
 'powersearch-legend' => 'Extra Söhke',
 'powersearch-ns' => 'Söök en de Apachtemangs:',
 'powersearch-redir' => 'Ömleidunge aanzeije',
-'powersearch-field' => 'Söhk noh',
 'powersearch-togglelabel' => '&nbsp;',
 'powersearch-toggleall' => 'Övverall Höhksche draan maache',
 'powersearch-togglenone' => 'All Höhksche fott nämme',
@@ -1445,8 +1424,6 @@ dat dänne ehr Daate topaktoell sin,
 'preferences' => 'ming Enstellunge',
 'mypreferences' => 'Enstellunge',
 'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
-'prefsnologin' => 'Nit enjelogg',
-'prefsnologintext' => 'Do mööts ald <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} enjelogg]</span> sin, öm Ding Enstellunge ze ändere.',
 'changepassword' => 'Passwood *',
 'prefs-skin' => 'Et Ussinn',
 'skin-preview' => 'Vör-Ansich',
@@ -1470,7 +1447,6 @@ dat dänne ehr Daate topaktoell sin,
 'prefs-email' => '<i lang="en">e-mail</i>',
 'prefs-rendering' => 'Et Sigge-Aanzeije',
 'saveprefs' => 'Faßhalde',
-'resetprefs' => 'Zeröck setze',
 'restoreprefs' => 'Donn en alle Afschnedde alles op der Schtandatt retuur schtälle',
 'prefs-editing' => 'Beim Bearbeide',
 'rows' => 'Reihe:',
@@ -1488,7 +1464,6 @@ dat dänne ehr Daate topaktoell sin,
 'localtime' => 'De Zigg op Dingem Kompjuter:',
 'timezoneuseserverdefault' => 'Nemm däm Server sing Zigg ($1)',
 'timezoneuseoffset' => 'Söns jet, jiff dä Ungerscheid aan',
-'timezoneoffset' => 'Dä Ungerscheid¹ es:',
 'servertime' => 'De Uhrzigg om ẞööver es jetz:',
 'guesstimezone' => 'Vum Brauser övvernämme',
 'timezoneregion-africa' => 'Affrikka',
@@ -1732,6 +1707,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',
@@ -2268,10 +2244,8 @@ Di sin dann <del>dorschjeschtresche</del>.',
 'protectedpages' => 'Jeschötzte Sigge',
 'protectedpages-indef' => 'Nor de Sigge zeije, woh alleins de Wiki-Köbesse draan dörrve',
 'protectedpages-cascade' => 'Nur Sigge en ener Schotz-Kaskad',
-'protectedpagestext' => '<!-- -->',
 'protectedpagesempty' => 'Op di Aat sin jrad kein Sigge jeschötz.',
 'protectedtitles' => 'Verbodde Titele för Sigge',
-'protectedtitlestext' => 'Sigge met hee dä Tittele lohße mer nit zo, un di künne dröm nit aanjelääsch wäde:',
 'protectedtitlesempty' => 'Op di Aat sin jrad kein Sigge jäje et neu Aanlääje jeschötz.',
 'listusers' => 'De Metmaacherleß',
 'listusers-editsonly' => 'Donn nor Metmaacher zeije, di och ens jät jeschrevve han.',
@@ -3845,10 +3819,6 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-urgency-high' => 'Huh ($1)',
 'exif-urgency-other' => 'Selfs faßjelaat ($1)',
 
-# External editor support
-'edit-externally' => 'Dun de Datei met enem externe Projramm bei Dr om Rechner bearbeide',
-'edit-externally-help' => '(Luur en de [https://www.mediawiki.org/wiki/Manual:External_editors Aanleidong för de Enschtallazjuhn] noh mieh Henwiese)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
@@ -4142,8 +4112,7 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 
 # Special:SpecialPages
 'specialpages' => '{{int:nstab-special}}e',
-'specialpages-note' => '----
-* {{int:nstab-special}}e för jede Metmaacher.
+'specialpages-note' => '* {{int:nstab-special}}e för jede Metmaacher.
 * <span class="mw-specialpagerestricted">{{int:nstab-special}}e för Metmaacher met besönder Räächde.</span>
 * <span class="mw-specialpagecached">Em Zwescheshpeisher jehallde {{int:nstab-special}}e. Di künnte ovverhollt sind.</span>',
 'specialpages-group-maintenance' => 'Waadungsleste',
@@ -4366,4 +4335,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 85b773f..502c566 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(
@@ -244,7 +246,6 @@ $messages = array(
 'qbedit' => 'Biguherîne',
 'qbpageoptions' => 'Ev rûpel',
 'qbmyoptions' => 'Rûpelên min',
-'qbspecialpages' => 'Rûpelên taybet',
 'faq' => 'PGP',
 'faqpage' => 'Project:PGP',
 
@@ -350,8 +351,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î}}',
@@ -430,9 +429,6 @@ Dibe ku di sernavê de karakterên nayên bikaranîn hatibin nivîsandin.',
 'perfcached' => 'Ev dane hatine veşartin û belkî ne rojane bin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Ev dane hatiye veşartin û cara paşîn $1 hatiye rojanekirin. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Fonksiyona rojanekirinê ya vê rûpelê hatiye sekinandin. Daneyên vir nayên rojanekirin.',
-'wrong_wfQuery_params' => 'Parametreyên şaş ji bo wfQuery()<br />
-Fonksiyon: $1<br />
-Pirs: $2',
 'viewsource' => 'Çavkaniyê bibîne',
 'actionthrottled' => 'Hejmara guherandinên hatine hesibandin',
 'actionthrottledtext' => 'Te ev tişt di demeke gelekî kin de kir. Ji kerema xwe çend xulekan bisekine û carekî din biceribîne.',
@@ -823,11 +819,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 # Search results
 'searchresults' => 'Encamên lêgerînê',
 'searchresults-title' => 'Encamên lêgerrînê bo "$1"',
-'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Te daxwaza "[[:$1]]" kir. ([[Special:Prefixindex/$1|hemî rûpelên bi "$1" dest pê dikin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hemî rûpelên ku bi "$1" ve hatine girêdan]])',
-'searchsubtitleinvalid' => "Tu li '''$1''' geriyayî",
 'titlematches' => 'Dîtinên di sernivîsên gotaran de',
-'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
 'textmatches' => 'Dîtinên di nivîsara rûpelan de',
 'notextmatches' => 'Di nav sernivîsan de nehat dîtin.',
 'prevn' => '{{PLURAL:$1|$1}} paş',
@@ -836,7 +828,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'nextn-title' => '$1 {{PLURAL:$1|encama|encamên}} pêştir',
 'shown-title' => 'Li her rûpelê $1 {{PLURAL:$1|encam|encaman}} nîşan bide',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Vebijartinên lêgerrînê',
 'searchmenu-exists' => "'''Rûpeleke bi navê \"[[:\$1]]\" li ser vê wîkiyê heye.'''",
 'searchmenu-new' => 'Rûpela "[[:$1]]" çêke!',
 'searchprofile-articles' => 'Rûpelên naverokê',
@@ -862,11 +853,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'showingresultsnum' => "{{PLURAL:$3|'''1'''|'''$3'''}} encam, bi #<b>$2</b> dest pê dike.",
 'showingresultsheader' => "{{PLURAL:$5|Encam '''$1''' ên '''$3'''|Encam '''$1 - $2''' ên '''$3'''}} ji bo '''$4'''",
 'search-nonefound' => 'Ti rûpelên wek ya daxwazkirî nînin.',
-'powersearch' => 'Lê bigere',
 'powersearch-legend' => 'Lê bigere',
 'powersearch-ns' => 'Di valahiya navan de lêbigere:',
 'powersearch-redir' => 'Lîsteya beralîkirinan',
-'powersearch-field' => 'Bigere li',
 'powersearch-togglelabel' => 'Kontrol bike:',
 'powersearch-toggleall' => 'Hemû',
 'powersearch-togglenone' => 'Tune',
@@ -878,8 +867,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'preferences' => 'Tercîhên min',
 'mypreferences' => 'Tercihên min',
 'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe tomar nekir',
-'prefsnologintext' => 'Tu gireke xwe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qeydbikê]</span> ji bo guherandina tercihên bikarhêneran.',
 'changepassword' => 'Şîfreyê biguherîne',
 'prefs-skin' => 'Pêste',
 'skin-preview' => 'Pêşdîtin',
@@ -899,7 +886,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-email' => 'Vebijarkên E-nameyê',
 'prefs-rendering' => 'Rû',
 'saveprefs' => 'Tercîhan tomar bike',
-'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
 'restoreprefs' => 'Hemû eyarên berê ji nû ve ava bike',
 'prefs-editing' => 'Guherandin',
 'rows' => 'Rêz',
@@ -909,7 +895,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'savedprefs' => 'Tercîhên te qeyd kirî ne.',
 'timezonelegend' => 'Herêma demê:',
 'localtime' => 'Dema herêmî',
-'timezoneoffset' => 'Cudahî¹:',
 'servertime' => "Dema server'ê:",
 'guesstimezone' => 'Ji lêgerokê tevlî bike',
 'timezoneregion-africa' => 'Afrîka',
@@ -1056,6 +1041,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',
@@ -2024,9 +2010,6 @@ Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'exif-iimcategory-war' => 'Şer, pevçûn û alozî',
 'exif-iimcategory-wea' => 'Hewa',
 
-# External editor support
-'edit-externally-help' => '(Ji bo agahîyên zav [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] li vir binêre)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hemû',
 'namespacesall' => 'hemû',
@@ -2124,8 +2107,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 
 # Special:SpecialPages
 'specialpages' => 'Rûpelên taybet',
-'specialpages-note' => '----
-* Rûpelên taybetî ji her kesan ra
+'specialpages-note' => '* Rûpelên taybetî ji her kesan ra
 * <strong class="mw-specialpagerestricted">Rûpelên taybetî ji bikarhêneran bi mafên zêdetir ra</strong>',
 'specialpages-group-other' => 'Rûpelên taybetî yên din',
 'specialpages-group-login' => 'Têkeve',
@@ -2184,4 +2166,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..979a7da 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' ),
 );
@@ -345,7 +344,6 @@ $messages = array(
 'qbedit' => 'Chanjya',
 'qbpageoptions' => 'An folen-ma',
 'qbmyoptions' => 'Ow folennow',
-'qbspecialpages' => 'Folennow arbennek',
 'faq' => 'FAQ',
 
 # Vector skin
@@ -451,8 +449,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}}',
@@ -794,10 +790,6 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 # Search results
 'searchresults' => 'Sewyansow an hwilans',
 'searchresults-title' => 'Sewyansow an hwilans rag "$1"',
-'searchresulttext' => 'Rag moy kedhlow a-dro dhe hwilas yn {{SITENAME}}, gwelewgh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Hwi a hwilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|keniver folen ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|keniver folen ow kevrenna dhe "$1"]])',
-'searchsubtitleinvalid' => "Hwi a hwilas '''$1'''",
-'notitlematches' => 'Nyns eus titel folen vyth owth omdhesedha',
 'notextmatches' => 'Nyns eus tekst folen vyth owth omdhesedha',
 'prevn' => '{{PLURAL:$1|$1}} kyns',
 'nextn' => 'nessa {{PLURAL:$1|$1}}',
@@ -805,7 +797,6 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 'nextn-title' => '$1 {{PLURAL:$1|sewyans}} nessa',
 'shown-title' => 'Diskwedhes $1 {{PLURAL:$1|sewyans}} yn folen',
 'viewprevnext' => 'Gweles ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Etholyow hwilas',
 'searchmenu-exists' => "''Yma folen henwys \"[[:\$1]]\" war an wiki-ma'''",
 'searchmenu-new' => "'''Gwruthyl an folen \"[[:\$1]]\" war an wiki-ma!'''",
 'searchprofile-articles' => 'Folennow dalgh',
@@ -832,14 +823,10 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 'searchrelated' => 'kelmys',
 'searchall' => 'oll',
 'showingresultsheader' => "{{PLURAL:$5|Sewyans '''$1''' a '''$3'''|Sewyansow '''$1 - $2''' a '''$3'''}} rag '''$4'''",
-'nonefound' => "'''Noten''': Ny hwilir marnas yn rann a'n spasys-hanow dre dhefowt.
-Assayewgh rag-gorra agas govyn gans ''all:'' rag hwilas yn pub tyller (ynna an folennow keskows, skantlyns, etc), po devnydhyewgh an spas-hanow hwensys avel rag-gorrans.",
 'search-nonefound' => 'Nyns esa sewyans vyth owth omdhesedha orth an govyn.',
-'powersearch' => 'Hwilans avonsys',
 'powersearch-legend' => 'Hwilans avonsys',
 'powersearch-ns' => 'Hwilas yn spasys-hanow:',
 'powersearch-redir' => 'Rolya daskedyansow',
-'powersearch-field' => 'Hwilas',
 'powersearch-togglelabel' => 'Dewis:',
 'powersearch-toggleall' => 'Oll',
 'powersearch-togglenone' => 'Nagonan',
@@ -863,7 +850,6 @@ Assayewgh rag-gorra agas govyn gans ''all:'' rag hwilas yn pub tyller (ynna an f
 'prefs-setemail' => 'Settya trigva ebost',
 'prefs-email' => 'Etholyow ebostya',
 'saveprefs' => 'Gwitha',
-'resetprefs' => 'Klerhe chanjyow nag yw gwithys',
 'restoreprefs' => 'Restorya pub settyans defowt',
 'prefs-editing' => 'Chanjya',
 'rows' => 'Rewyow:',
@@ -971,6 +957,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',
@@ -1442,9 +1429,6 @@ Hwi a yll gweles hy fennfenten.',
 
 'exif-subjectdistancerange-0' => 'Ankoth',
 
-# External editor support
-'edit-externally' => 'Chanjya an restren-ma dre dowlen a-ves',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'puptra',
 'namespacesall' => 'oll',
index 0926c66..5932bb6 100644 (file)
@@ -182,7 +182,6 @@ $messages = array(
 'qbedit' => 'Оңдоо',
 'qbpageoptions' => 'Бул барак',
 'qbmyoptions' => 'Барактарым',
-'qbspecialpages' => 'Кызматтык барактар',
 'faq' => 'КБС',
 'faqpage' => 'Project:КБС',
 
@@ -297,8 +296,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '"$1" булагынан алынды',
 'youhavenewmessages' => 'Сизге $1 ($2) бар.',
-'newmessageslink' => 'жаңы билдирүүлөр',
-'newmessagesdifflink' => 'соңку өзгөрүү',
 'youhavenewmessagesfromusers' => 'Сиз {{PLURAL:$3|колдонуучудан|$3 колдонуучу}} $1 алдыңыз ($2).',
 'youhavenewmessagesmanyusers' => 'Көп колдонуучулардан сиз $1 алдыңыз ($2).',
 'newmessageslinkplural' => 'жаңы {{PLURAL:$1|билдирүү| билдирүүлөр}}',
@@ -373,9 +370,6 @@ $1',
 'badtitle' => 'Туура эмес аталыш',
 'badtitletext' => 'Талап кылынган барактын аталышы туура эмес, бош, же тилдер-аралык же уики-аралык аталышы туура эмес шилтемеленген.
 Балким аталышта колдонулбай турган бир же андан көп белги камтылган.',
-'wrong_wfQuery_params' => 'wfQuery() функциясы үчүн жарабай турган параметрлер<br />
-Функция: $1<br />
-Суроо: $2',
 'viewsource' => 'Кайнарын кароо',
 'viewsource-title' => '$1 барагынын баштапкы кодун көрүү',
 'actionthrottled' => 'Аралык боюнча чектөө',
@@ -741,7 +735,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'nextn-title' => 'Кийинки $1 {{PLURAL:$1|жыйынтык}}',
 'shown-title' => 'Барактан $1 {{PLURAL:$1|жыйынтыкты}} көрсөтүү',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) кароо',
-'searchmenu-legend' => 'Издөө опциялары',
 'searchmenu-exists' => "'''Бул Уикиде \"[[:\$1]]\" деп аталган барак бар.'''",
 'searchmenu-new' => "'''Бул Уикиде \"[[:\$1]]\" барагын түз!'''",
 'searchprofile-articles' => 'Негизги барактар',
@@ -770,11 +763,9 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchall' => 'баары',
 'showingresultsheader' => "'''$4''' үчүн {{PLURAL:$5|'''$3''' жыйынтыктан '''$1'''-и|'''$1 - $2''' -дан '''$3''' жыйынтык}}",
 'search-nonefound' => 'Талапка төп маалымат табылган жок.',
-'powersearch' => 'Кеңейтилген издөө',
 'powersearch-legend' => 'Кеңейтилген издөө',
 'powersearch-ns' => 'Аталыш мейкиндиктеринен издөө:',
 'powersearch-redir' => 'Багыттамаларды чыгаруу',
-'powersearch-field' => 'Издөө',
 'powersearch-togglelabel' => 'Белги салуу:',
 'powersearch-toggleall' => 'Баары',
 'powersearch-togglenone' => 'Эчнерсе',
@@ -784,7 +775,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'preferences' => 'Ырастоолор',
 'mypreferences' => 'Ырастоолор',
 'prefs-edits' => 'Өзгөртүүлөрдүн саны',
-'prefsnologin' => 'Системге кирген жоксуз',
 'changepassword' => 'Сырсөздү өзгөртүү',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Алдын ала көрүү',
@@ -805,7 +795,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'prefs-email' => 'Электрондук почта параметрлери',
 'prefs-rendering' => 'Сырткы көрүнүш',
 'saveprefs' => 'Сактоо',
-'resetprefs' => 'Сакталбаган өзгөртүүлөрдү тазалоо',
 'restoreprefs' => 'Жарыяланбасча ырастоолорду калыбына келтирүү',
 'prefs-editing' => 'Оңдоп-түзөө',
 'rows' => 'Сап:',
@@ -816,7 +805,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'timezonelegend' => 'Сааттык алкак:',
 'localtime' => 'Жергиликтүү убакыт:',
 'timezoneuseoffset' => 'Башка (жылышты көрсөтүңүз)',
-'timezoneoffset' => 'Жылыш¹:',
 'servertime' => 'Сервер убактысы:',
 'timezoneregion-africa' => 'Африка',
 'timezoneregion-america' => 'Америка',
@@ -1674,10 +1662,6 @@ To include a file in a page, use a link in one of the following forms:
 'exif-iimcategory-spo' => 'Спорт',
 'exif-iimcategory-wea' => 'Аба-ырайы',
 
-# External editor support
-'edit-externally' => 'Бул файлды сырткы программа колдонуу аркылуу оңдоо',
-'edit-externally-help' => '(Толук маалымат алуу үчүн [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] барагына кайрылсаңыз болот)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'баары',
 'namespacesall' => 'баары',
index ac5d7bb..3733562 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' ),
@@ -310,7 +309,6 @@ $messages = array(
 'qbedit' => 'Recensere',
 'qbpageoptions' => 'Optiones paginae',
 'qbmyoptions' => 'Paginae meae',
-'qbspecialpages' => 'Paginae speciales',
 'faq' => 'Quaestiones frequentes',
 'faqpage' => 'Project:Quaestiones frequentes',
 
@@ -417,12 +415,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',
@@ -487,9 +483,6 @@ Fortasse usor alius iam deleverat.',
 'cannotdelete-title' => 'Paginam "$1" delere non contigit',
 'badtitle' => 'Titulus malus',
 'badtitletext' => 'Nomen paginae quaestae fuit invalidum, vacuum, aut praeverbium interlingualem vel intervicialem habuit. Fortasse insunt una aut plus litterarum quae in titulis non possunt inscribier.',
-'wrong_wfQuery_params' => 'Parametri incorrectae pro wfQuery()<br />
-Functio: $1<br />
-Inquisitio: $2',
 'viewsource' => 'Fontem inspicere',
 'viewsource-title' => 'Fontem paginae $1 inspicere',
 'actionthrottled' => 'Actio strangulata',
@@ -874,11 +867,7 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 # Search results
 'searchresults' => 'Eventum investigationis',
 'searchresults-title' => 'Responsa de "$1"',
-'searchresulttext' => 'Pro plurimis nuntiis de investigatione in {{grammar:ablative|{{SITENAME}}}}, vide [[{{MediaWiki:Helppage}}|{{MediaWiki:Help}}]].',
-'searchsubtitle' => 'Quaesitum est \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|omnes paginae quarum titulus incipit litteris "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|omnes paginae quae ad "$1" nectunt]])',
-'searchsubtitleinvalid' => 'Pro investigatione "$1"',
 'titlematches' => 'Exaequata indicibus rerum',
-'notitlematches' => 'Nulla exaequata',
 'textmatches' => 'Textus paginarum adaequat',
 'notextmatches' => 'Nihil verbis quaesitis congruit',
 'prevn' => '{{PLURAL:$1|$1}} superiores',
@@ -887,7 +876,6 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'nextn-title' => '{{PLURAL:$1|Eventus proximus|Eventus proximi}} $1',
 'shown-title' => 'Monstrare $1 {{PLURAL:$1|eventum|eventus}} per paginam',
 'viewprevnext' => 'Videre ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Optiones',
 'searchmenu-exists' => "'''Iam est pagina \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Creare paginam \"[[:\$1]]\"'''",
 'searchprofile-articles' => 'Paginae contentorum',
@@ -915,14 +903,10 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'searchall' => 'omnia',
 'showingresults' => "Subter monstrans {{PLURAL:$1|'''1''' eventu|'''$1''' eventibus}} tenus incipiens ab #'''$2'''.",
 'showingresultsnum' => "Subter monstrans {{PLURAL:$3|'''1''' eventum|'''$3''' eventus}} incipiens ab #'''$2'''.",
-'nonefound' => "'''Adnotatio''': Solum aliquae spatia nominalia quaesita sunt semper.
-Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (paginas, formulas et cetera) vel utere spatio nominali desiderato quasi praefixo.",
 'search-nonefound' => 'Nullae paginae quaesitionem tuam adaequant.',
-'powersearch' => 'Quaerere callidissime',
 'powersearch-legend' => 'Quaerere callidissime',
 'powersearch-ns' => 'Quaerere in spatiis nominalibus:',
 'powersearch-redir' => 'Monstrare redirectiones',
-'powersearch-field' => 'Quaerere',
 'powersearch-togglelabel' => 'Selegere:',
 'powersearch-toggleall' => 'Omnia',
 'powersearch-togglenone' => 'Nullum',
@@ -934,8 +918,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',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Conventum aperire]</span> debes ad praeferentias tuas modificandum.',
 'changepassword' => 'Tesseram mutare',
 'prefs-skin' => 'Aspectum',
 'skin-preview' => 'Praevisum',
@@ -955,7 +937,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
 'prefs-email' => 'Optiones inscriptionis electronicae',
 'prefs-rendering' => 'Conspectus',
 'saveprefs' => 'Servare praeferentias',
-'resetprefs' => 'Reddere praeferentias',
 'prefs-editing' => 'Mensura capsae verbi',
 'rows' => 'Lineae:',
 'columns' => 'Columnae:',
@@ -967,7 +948,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
 'timezonelegend' => 'Zona temporis:',
 'localtime' => 'Hora indigena:',
 'timezoneuseoffset' => 'Alia (da dissimilitudinem cinguli horae)',
-'timezoneoffset' => 'Dissimilitudo cinguli horae¹:',
 'servertime' => 'Hora moderatri:',
 'guesstimezone' => 'Hora ex navigatro scribere',
 'timezoneregion-africa' => 'Africa',
@@ -1148,6 +1128,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',
@@ -1404,9 +1385,7 @@ Fortasse [$2 paginam descriptionis fasciculi] ibi sitam recensere vis.',
 'protectedpages' => 'Paginae protectae',
 'protectedpages-indef' => 'Solum protectiones infinitas',
 'protectedpages-cascade' => 'Solum protectiones defluentes quasi cataracta',
-'protectedpagestext' => 'Paginae sequentes protectae sunt a movendo ac recensendo',
 'protectedtitles' => 'Tituli protecti',
-'protectedtitlestext' => 'Hi tituli protecti sunt ne creentur paginae',
 'listusers' => 'Usores',
 'listusers-editsonly' => 'Monstrare solum usores qui recensuerunt',
 'listusers-creationsort' => 'Ordinare secundum diem creationis rationis',
@@ -2292,10 +2271,6 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
 'exif-gpsdirection-t' => 'Directio vera',
 'exif-gpsdirection-m' => 'Directio magnetica',
 
-# External editor support
-'edit-externally' => 'Hunc fasciculum in programmate externali recensere',
-'edit-externally-help' => '(Vide et [https://www.mediawiki.org/wiki/Manual:External_editors paginas adiutorias] programmatis externalis)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omnes',
 'namespacesall' => 'omnia',
@@ -2468,6 +2443,7 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
 
 # Search suggestions
 'searchsuggest-search' => 'Quaerere',
+'searchsuggest-containing' => 'continens...',
 
 # API errors
 'api-error-empty-file' => 'Fasciculus inmissus vacuus est.',
@@ -2478,4 +2454,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..0842038 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' ),
@@ -323,7 +322,6 @@ $messages = array(
 'qbedit' => 'Trocar',
 'qbpageoptions' => 'Esta hoja',
 'qbmyoptions' => 'Mis hojas',
-'qbspecialpages' => 'Hojas especiales',
 'faq' => 'DAD',
 'faqpage' => 'Project:DDS',
 
@@ -423,8 +421,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',
@@ -655,10 +651,6 @@ Leyenda: (act) = diferencias con la versión actual,
 # Search results
 'searchresults' => 'Resultados de la búsquida',
 'searchresults-title' => 'Resultados de la búsquida de «$1»',
-'searchresulttext' => 'Para saber más encima de buscar en {{SITENAME}}, mira la [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Buscates \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas las hojas que empeçan con "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|todas las hojas que dan link a «$1»]])',
-'searchsubtitleinvalid' => "Buscates '''$1'''",
-'notitlematches' => 'No se pudo topar en dingún título.',
 'notextmatches' => 'No se pudo topar en dinguna hoja.',
 'prevn' => '{{PLURAL:$1|$1}} de antes',
 'nextn' => '{{PLURAL:$1|$1}} venideras',
@@ -689,16 +681,10 @@ Leyenda: (act) = diferencias con la versión actual,
 'searchrelated' => 'lisionado',
 'searchall' => 'todos',
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': Por defecto sólo se busca en algunos espacios de nombre.
-Proba a usar el prefixo ''all:'' para buscar en todo el contenido (incluyendo las hojas de diskussión, xabblones, etc.) o usa el espacio de nombre que queres como prefixo. También puedes usar el formulario de búsqueda adelantada que aparece abaxo.
-
-Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de», que no están en el índice, o por especificar más de una palabra a buscar (sólo las hojas que contienen todos los términos de búsqueda van aparecer en el resultado).",
 'search-nonefound' => 'No ay resultados que acumplan los criterios de la búsqueda.',
-'powersearch' => 'Búsqueda adelantada',
 'powersearch-legend' => 'Búsqueda adelantada',
 'powersearch-ns' => 'Busca en los espacios de nombres:',
 'powersearch-redir' => 'Mostra las redirecciones',
-'powersearch-field' => 'Busca por',
 'powersearch-toggleall' => 'Todos',
 'search-external' => 'Búsqueda eksterna',
 
@@ -1175,10 +1161,6 @@ Los otros campos se van a guardar por defecto.
 'exif-iimcategory-hth' => 'Salud',
 'exif-iimcategory-lab' => 'Lavoro',
 
-# External editor support
-'edit-externally' => 'Trocar esto arxivo usando una aplicación eksterna',
-'edit-externally-help' => '(Melda las [https://www.mediawiki.org/wiki/Manual:External_editors enstruksiones de configuración] -en inglés- para saber más)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todos',
 'namespacesall' => 'todos',
index d035b77..c5b253d 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' ),
@@ -343,7 +343,6 @@ $messages = array(
 'qbedit' => 'Änneren',
 'qbpageoptions' => 'Säitenoptiounen',
 'qbmyoptions' => 'Meng Säiten',
-'qbspecialpages' => 'Spezialsäiten',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -403,7 +402,7 @@ $messages = array(
 'articlepage' => 'Säit',
 'talk' => 'Diskussioun',
 'views' => 'Affichagen',
-'toolbox' => 'Geschir (Tools)',
+'toolbox' => 'Geschirkëscht',
 'userpage' => 'Benotzersäit',
 'projectpage' => 'Meta-Text',
 'imagepage' => 'Billersäit kucken',
@@ -460,12 +459,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',
@@ -561,9 +558,6 @@ Eng Erklärung gouf net ginn.",
 'perfcached' => 'Dës Date kommen aus dem Tëschespäicher a si méiglecherweis net aktuell. Maximal {{PLURAL:$1|ee Resultat ass|$1 Resultater sinn}} am Tësche späicher disponibel.',
 'perfcachedts' => "Dës Donnéeë kommen aus dem Tëschespäicher, a goufe fir d'lescht den $1 aktualiséiert. Maximal {{PLURAL:$4|ee Resultat ass|$4 Resultater sinn}} am Tëschespäicher disponibel.",
 'querypage-no-updates' => "D'Aktualiséierung vun dëser Säit ass zur Zäit ausgeschalt. D'Date gi bis op weideres net aktualiséiert.'''",
-'wrong_wfQuery_params' => 'Falsche Parameter fir wfQuery()<br />
-Funktioun: $1<br />
-Ufro: $2',
 'viewsource' => 'Quelltext kucken',
 'viewsource-title' => 'Quelltext vun der Säit $1 weisen',
 'actionthrottled' => 'Dës Aktioun gouf gebremst',
@@ -594,7 +588,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''",
@@ -697,7 +692,7 @@ Probéiert w.e.g. nach eng Kéier.",
 'passwordtooshort' => 'Passwierder musse mindestens {{PLURAL:$1|1 Zeeche|$1 Zeeche}} laang sinn.',
 'password-name-match' => 'Äert Passwuert muss verschidde vun Ärem Benotzernumm sinn.',
 'password-login-forbidden' => "D'Benotze vun dësem Benotzernumm a Passwuert gouf verbueden.",
-'mailmypassword' => 'Neit Passwuert per E-Mail kréien',
+'mailmypassword' => 'Passwuert zrécksetzen',
 'passwordremindertitle' => 'Neit Passwuert fir ee {{SITENAME}}-Benotzerkont',
 'passwordremindertext' => 'Iergendeen (waarscheinlech Dir, mat der IP-Adress $1) huet en neit Passwuert fir {{SITENAME}} ($4) gefrot. Een temporäert Passwuert fir de Benotzer $2 gouf ugeluecht an et ass: $3. Wann et dat ass, wat Dir wollt, da sollt Dir Iech elo aloggen an en neit Passwuert eraussichen. Äert temporäert Passwuert leeft a(n) {{PLURAL:$5|engem Dag| $5 Deeg}} of.
 
@@ -769,7 +764,7 @@ Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwu
 # Special:PasswordReset
 'passwordreset' => 'Passwuert zrécksetzen',
 'passwordreset-text-one' => 'Fëllt dëse Formulaire aus fir Äert Passwuert zréckzesetzen.',
-'passwordreset-text-many' => '{{PLURAL:$1|Fëllt eent vun de Felder aus fir Äert Passwuert zeréckzesetzen.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Fëllt eent vun de Felder aus fir en temporäert Passwuert per E-Mail ze kréien.}}',
 'passwordreset-legend' => 'Passwuert zrécksetzen',
 'passwordreset-disabled' => "D'Zerécksetze vum Passwuert ass op dëser Wiki ausgeschalt.",
 'passwordreset-emaildisabled' => "D'E-Mail-Funktioune goufen op dëser Wiki ausgeschalt.",
@@ -1138,8 +1133,8 @@ Dir kënnt dësen Ënnerscheed gesinn; Detailer fannt Dir am [{{fullurl:{{#Speci
 'revdelete-show-file-submit' => 'Jo',
 'revdelete-selected' => "'''{{PLURAL:$2|Gewielt Versioun|Gewielt Versioune}} vu(n) [[:$1]] :'''",
 'logdelete-selected' => "'''Ausgewielten {{PLURAL:$1|Evenement|Evenementer}} aus dem Logbuch:'''",
-'revdelete-text' => "'''Geläschte Versiounen oder aner geläschte Bestanddeeler sinn net méi ëffentlech zougänglech, si stinn awer weiderhin an der Versiounsgeschicht vun der Säit.'''
-Aner {{SITENAME}}-Administrateure kënnen de geläschten Inhalt oder aner geläschte Bestanddeeler weiderhi gesinn a restauréieren, et sief, et gouf festgeluecht, datt déi Limitatioune vum Accès och fir Administrateure gëllen.",
+'revdelete-text' => "'''Geläscht Versiounen oder aner geläscht Bestanddeeler sinn net méi ëffentlech zougänglech, si stinn awer weiderhin an der Versiounsgeschicht vun der Säit.'''
+Aner {{SITENAME}}-Administrateure kënnen de geläschten Inhalt oder aner geläscht Bestanddeeler weiderhi gesinn a restauréieren, et sief, et gouf festgeluecht, datt déi Limitatioune vum Accès och fir Administrateure gëllen.",
 'revdelete-confirm' => "Confirméiert w.e.g. datt Dir dat maache wëllt, datt Dir d'Konsequenze verstitt an datt Dir dëst an Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
 'revdelete-suppress-text' => "Ënnerdréckung sollt '''nëmmen''' an dëse Fäll benotzt ginn:
 * Informatiounen déi beleidege kéinten
@@ -1193,7 +1188,7 @@ Kuckt w.e.g. an de Logbicher no.",
 
 # Suppression log
 'suppressionlog' => 'Lëscht vun de verstoppten a geläschte Säiten',
-'suppressionlogtext' => 'Ënnendrënner ass eng Lëscht vun de geläschte Säiten a Spären a vun den Administrateuren verstopptem Inhalt.
+'suppressionlogtext' => 'Ënnendrënner ass eng Lëscht vun de geläschte Säiten a Spären an Inhalt dee vun den Administrateure verstoppt gouf.
 Kuckt [[Special:BlockList|Lëscht vun Späre]] fir déi aktuell Spären.',
 
 # History merging
@@ -1249,12 +1244,8 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Resultat vum Sichen',
 'searchresults-title' => 'Resultater vum Sichen no "$1"',
-'searchresulttext' => "Fir méi Informatiounen iwwer d'Sichfunktiounen op {{SITENAME}}, kuckt w.e.g op [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Dir hutt no "[[:$1]]" gesicht ([[Special:Prefixindex/$1|all Säiten déi mat "$1" ufänken]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all Säiten déi op "$1" linken]])',
-'searchsubtitleinvalid' => 'Dir hutt no "$1" gesicht.',
 'toomanymatches' => 'Zevill Resultater goufe fonnt, versicht w.e.g. eng aner Ufro',
 'titlematches' => 'Iwwereneestëmmungen am Säitentitel',
-'notitlematches' => 'Keng Iwwereneestëmmunge mat Säitentitelen',
 'textmatches' => 'Iwwereneestëmmungen am Säitentext',
 'notextmatches' => 'Keng Iwwereneestëmmungen',
 'prevn' => 'vireg {{PLURAL:$1|$1}}',
@@ -1263,10 +1254,8 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Nächst $1 {{PLURAL:$1|Resultat|Resultater}}',
 'shown-title' => '$1 {{PLURAL:$1|Resultat|Resultater}} pro Säit weisen',
 'viewprevnext' => 'Weis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Sichoptiounen',
 'searchmenu-exists' => "* Säit '''[[$1]]'''",
 'searchmenu-new' => "'''Opmaache vun der Säit ''[[:$1|$1]]'' op dëser Wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|All Säite weisen, déi mat dem Begrëff ufänken nodeem Dir sicht]]',
 'searchprofile-articles' => 'Säite mat Inhalt',
 'searchprofile-project' => 'Hëllef a Projetssäiten',
 'searchprofile-images' => 'Multimedia',
@@ -1294,13 +1283,10 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'showingresults' => "Hei gesitt der  {{PLURAL:$1| '''1''' Resultat|'''$1''' Resultater}}, ugefaange mat #'''$2'''.",
 'showingresultsnum' => "Hei gesitt der  {{PLURAL:$3|'''1''' Resultat|'''$3''' Resultater}}, ugefaange mat #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' vu(n) '''$3'''|Resultater '''$1 - $2''' vu(n) '''$3'''}} fir '''$4'''",
-'nonefound' => "'''Opgepasst''': Nëmmen e puer Nummraim gi ''par default'' duerchsicht. Versicht an ärer Ufro ''all:'' anzestellen fir de gesamten Inhalt (inklusiv Diskussiounssäiten, Schablonen, ...), oder benotzt déi gwënschten Nummraim als Virastellung.",
 'search-nonefound' => 'Fir Är Ufro gouf näischt fonnt.',
-'powersearch' => 'Erweidert Sich',
 'powersearch-legend' => 'Erweidert Sich',
 'powersearch-ns' => 'Sichen an den Nummraim:',
 'powersearch-redir' => 'Viruleedunge weisen',
-'powersearch-field' => 'Sichen no:',
 'powersearch-togglelabel' => 'Markéieren:',
 'powersearch-toggleall' => 'All',
 'powersearch-togglenone' => 'Keen',
@@ -1312,8 +1298,7 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'preferences' => 'Astellungen',
 'mypreferences' => 'Astellungen',
 'prefs-edits' => 'Zuel vun den Ännerungen:',
-'prefsnologin' => 'Net ageloggt',
-'prefsnologintext' => 'Dir musst <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}ageloggt]</span> sinn, fir Är Astellungen änneren ze kënnen.',
+'prefsnologintext2' => 'Dir musst Iech $1 fir Är Benotzerastellunge festzeleeën',
 'changepassword' => 'Passwuert änneren',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Kucken',
@@ -1337,7 +1322,6 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-email' => 'E-Mail-Optiounen',
 'prefs-rendering' => 'Ausgesinn',
 'saveprefs' => 'Späicheren',
-'resetprefs' => 'Net gespäichert Ännerungen zrécksetzen',
 'restoreprefs' => 'All Standardastellungen zrécksetzen (an allen Abschnitter)',
 'prefs-editing' => 'Änneren',
 'rows' => 'Zeilen',
@@ -1356,7 +1340,6 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'localtime' => 'Lokalzäit:',
 'timezoneuseserverdefault' => 'De Standardwäert vun der Wiki ($1) benotzen',
 'timezoneuseoffset' => 'Aner (Differenz uginn)',
-'timezoneoffset' => 'Zäit-Differenz¹:',
 'servertime' => 'Serverzäit:',
 'guesstimezone' => 'Vum Browser iwwerhuelen',
 'timezoneregion-africa' => 'Afrika',
@@ -1423,6 +1406,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.',
 
@@ -1610,6 +1594,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',
@@ -1661,9 +1647,9 @@ Säite vun [[Special:Watchlist|Ärer Iwwerwaachungslëscht]] si '''fett''' gesch
 
 Hei fannt Dir en Extrait aus dem Läsch- a Réckel-Logbuch fir dëse Fichier.",
 'uploadtext' => "Benotzt dëse Formulaire, fir nei Fichieren eropzelueden.
-Gitt op d'[[Special:FileList|Lëscht vun den eropgeluedene Fichieren]], fir no Fichieren ze sichen déi virdrun eropgeluede goufen, Eropluedunge fannt dir an der [[Special:Log/upload|Lëscht vun den eropgeluedene Fichieren]], geläschte Fichieren am [[Special:Log/delete|Läschlog]].
+Gitt op d'[[Special:FileList|Lëscht vun den eropgeluedene Fichieren]], fir no Fichieren ze sichen déi virdrun eropgeluede goufen, Eropluedunge fannt dir an der [[Special:Log/upload|Lëscht vun den eropgeluedene Fichieren]], geläscht Fichiere stinn am [[Special:Log/delete|Läschlog]].
 
-Fir e '''Bild''' op enger Säit zu benotzen, schreift amplaz vum Bild eng vun dëse Formelen:
+Fir e '''Bild''' op enger Säit ze benotzen, schreift amplaz vum Bild eng vun dëse Formelen:
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fichier.jpg]]</nowiki></code>''' fir déi ganz Versioun vum Fichier ze benotzen
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fichier.png|200px|thumb|left|alt text]]</nowiki></code>''' fir eng 200 Pixel breet Versioun an enger Këscht am lénke Rand mat 'alt text' als Beschreiwung
 * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fichier.ogg]]</nowiki></code>''' fir e Fichier direkt ze verlinken ouni de Fichier ze weisen",
@@ -2094,10 +2080,8 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'protectedpages' => 'Gespaart Säiten',
 'protectedpages-indef' => 'Nëmme onbegrenzt-gespaarte Säite weisen',
 'protectedpages-cascade' => 'Nëmme Säiten déi duerch Kaskade gespaart sinn',
-'protectedpagestext' => 'Dës Säite si gespaart sou datt si weder geännert nach geréckelt kënne ginn',
 'protectedpagesempty' => 'Elo si keng Säite mat dëse Parameteren gespaart.',
 'protectedtitles' => 'Gespaarten Titel',
-'protectedtitlestext' => 'Dës Titele si gespaart an et ka keng Säit mat deenen Titelen ugeluecht ginn',
 'protectedtitlesempty' => 'Zur Zäit si mat de Parameteren déi Dir uginn hutt keng Säite fir neit Uleeë gespaart.',
 'listusers' => 'Benotzerlëscht',
 'listusers-editsonly' => 'Nëmme Benotzer mat Ännerunge weisen',
@@ -2319,7 +2303,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.
 
 
@@ -2331,7 +2315,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:
@@ -2482,10 +2466,10 @@ Fir nëmmen eng bestëmmte Versioun vun der Säit ze restauréieren, markéiert
 'undeleterevisions' => '{{PLURAL:$1|1 Versioun|$1 Versiounen}} archivéiert',
 'undeletehistory' => 'Wann Dir dës Säit restauréiert, ginn och all déi al Versioune restauréiert.
 Wann zanter dem Läschen eng nei Säit mat dem selwechten Numm ugeluecht gouf, ginn déi restauréiert Versioune chronologesch an den Historique agedroen.',
-'undeleterevdel' => "D'Restauratioun gëtt net gemaach wann dëst dozou féiert datt déi aktuell Versioun vun der Säit oder vum Fichier deelweis geläscht gëtt.
-A sou Fäll däerf déi neiste Versioun net markéiert ginn oder déi neiste geläschte Versioun muss nees ugewise ginn.",
+'undeleterevdel' => "D'Restauratioun gëtt net gemaach wann dat dozou féiert datt déi aktuell Versioun vun der Säit oder vum Fichier deelweis geläscht gëtt.
+A sou Fäll däerf déi neist Versioun net markéiert ginn oder déi neist geläscht Versioun muss nees ugewise ginn.",
 'undeletehistorynoadmin' => "Dës Säit gouf geläscht. De Grond fir d'Läsche gesitt der ënnen, zesumme mat der Iwwersiicht vun den eenzele Versioune vun der Säit an hiren Auteuren. Déi verschidden Textversioune kënnen awer just vun Administrateure gekuckt a restauréiert ginn.",
-'undelete-revision' => 'Geläschte Versioun vu(n) $1 (Versioun vum $4 um $5 Auer) vum $3:',
+'undelete-revision' => 'Geläscht Versioun vu(n) $1 (Versioun vum $4 um $5 Auer) vum $3:',
 'undeleterevision-missing' => "Ongëlteg oder Versioun déi feelt. Entweder ass de Link falsch oder d'Versioun gouf aus dem Archiv restauréiert oder geläscht.",
 'undelete-nodiff' => 'Et si keng méi al Versiounen do.',
 'undeletebtn' => 'Restauréieren',
@@ -2517,7 +2501,7 @@ Am [[Special:Log/delete|Läsch-Logbuch]] fannt Dir déi geläscht a restauréier
 'undelete-error-long' => 'Beim Restauréiere vun engem Fichier goufe Feeler fonnt:
 
 $1',
-'undelete-show-file-confirm' => '!Sidd Dir sécher, datt dir eng geläschte Versioun vum Fichier „<nowiki>$1</nowiki>“ vum $2 ëm $3 Auer gesi wëllt?',
+'undelete-show-file-confirm' => 'Sidd Dir sécher, datt dir eng geläscht Versioun vum Fichier „<nowiki>$1</nowiki>“ vum $2 um $3 Auer gesi wëllt?',
 'undelete-show-file-submit' => 'Jo',
 
 # Namespace form on various pages
@@ -3112,7 +3096,7 @@ Fëllt dëst '''NET''' aus!",
 'log-show-hide-patrol' => 'Kontroll-Logbuch $1',
 
 # Image deletion
-'deletedrevision' => 'Al, geläschte Versioun $1',
+'deletedrevision' => 'Al, geläscht Versioun vu(n) $1',
 'filedeleteerror-short' => 'Feeler beim Läsche vum Fichier: $1',
 'filedeleteerror-long' => 'Bäim Läsche vum Fichier si Feeler festgestallt ginn:
 
@@ -3596,10 +3580,6 @@ Déi aner sinn am Standard verstoppt.
 'exif-urgency-high' => 'Héich ($1)',
 'exif-urgency-other' => 'Benotzerdefinéiert Prioritéit ($1)',
 
-# External editor support
-'edit-externally' => 'Dëse Fichier mat engem externe Programm änneren',
-'edit-externally-help' => "(Fir gewuer ze gi wéi dat genee geet liest d'[https://www.mediawiki.org/wiki/Manual:External_editors Installatiounsinstruktiounen].)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
@@ -3815,10 +3795,9 @@ Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/re
 
 # Special:SpecialPages
 'specialpages' => 'Spezialsäiten',
-'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>',
+'specialpages-note-top' => 'Erklärung',
+'specialpages-note' => '* Normal Spezialsäiten.
+* <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',
@@ -4024,4 +4003,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..51794c3 100644 (file)
@@ -184,7 +184,6 @@ $messages = array(
 'qbedit' => 'Дегишарун',
 'qbpageoptions' => 'Ччинин низамарунар',
 'qbmyoptions' => 'Зи ччинар',
-'qbspecialpages' => 'КьетӀен хъувун',
 'faq' => 'Фад-фад гузвай жузунар (ФГЖ)',
 'faqpage' => 'Project:ФГС',
 
@@ -286,8 +285,6 @@ $messages = array(
 'ok' => 'ОК',
 'retrievedfrom' => 'Чешне "$1" я',
 'youhavenewmessages' => 'Квез $1 ($2) атанва.',
-'newmessageslink' => 'цӀийи чарар',
-'newmessagesdifflink' => 'Эхиримжи масакӀавилер',
 'youhavenewmessagesmulti' => '"$1"-да квез цӀийи чарар атанва.',
 'editsection' => 'Дуьзар хъувун',
 'editold' => 'Дуьзар хъувун',
@@ -567,11 +564,7 @@ $messages = array(
 # Search results
 'searchresults' => 'Къекъуьнрин нетижаяр',
 'searchresults-title' => '"$1" жугъура',
-'searchresulttext' => '{{SITENAME}} къекъуьнихъай гегьенш малумат патал  [[{{MediaWiki:Helppage}}|{{int:малумат гудай пай}}]]диз килига.',
-'searchsubtitle' => '[[Special:WhatLinksHere/$1|И тIварциз элячIзавай]]) [[:$1]] жугъуруниз талукь тир ([[Special:Prefixindex/$1| тIварцихъ галаз эгечIзавай ччинар]]',
-'searchsubtitleinvalid' => "Жугъурзавай: '''$1'''",
 'titlematches' => 'Ччинрин тIварарин  ацалтунар',
-'notitlematches' => 'Ччинрин тIварара ацалтунар авач',
 'textmatches' => 'Ччинрин текстрин ацалтунар',
 'notextmatches' => 'Авач чарчин кьил матчар',
 'prevn' => 'Вилик фейи  {{PLURAL:$1|$1}}',
@@ -580,7 +573,6 @@ $messages = array(
 'nextn-title' => 'КЪведай $1 {{PLURAL:$1|нетижа|нетижаяр}}',
 'shown-title' => 'Ччина $1 {{PLURAL:$1|нетижа|нетижа}} къалурун',
 'viewprevnext' => 'Килигун ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Жагъурунин низамарунар',
 'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
 'searchmenu-new' => "'''И вики-проектда \"[[:\$1]]\" ччин туькlуьрун !'''",
 'searchprofile-articles' => 'Асул ччинар',
@@ -605,14 +597,10 @@ $messages = array(
 'searchrelated' => 'Галкlанавай',
 'searchall' => 'вири',
 'showingresultsheader' => "'''$4'''  патал {{PLURAL:$5|'''$3''' - кай  '''$1''' нетижа|'''$3''' - кай  '''$1 - $2''' нетижаяр}}",
-'nonefound' => "'''Асулзава''': Са шумуд тlарар жагъурзава хвенайвал.
-Клига префикс \"вири\" жагъурун паталди кхьинар (ихтилат ва рахунин чарар, шаблонар ва масабу), ва ишлемишна кlанзавай тlарар префикс патала.",
 'search-nonefound' => 'Тlалабдив кьадай са нетижани жагъанвач.',
-'powersearch' => 'Гегьенш жугъурун',
 'powersearch-legend' => 'Гегьенш жугъурун',
 'powersearch-ns' => 'Жугъурун тlварарин генгвилера:',
 'powersearch-redir' => 'Рахкъурунар къалура',
-'powersearch-field' => 'Идаз жагъурун',
 'powersearch-togglelabel' => 'Акун',
 'powersearch-toggleall' => 'Вири',
 'powersearch-togglenone' => 'Садни',
@@ -621,7 +609,6 @@ $messages = array(
 'preferences' => 'Туькlуьрун',
 'mypreferences' => 'Зи низамарунар',
 'prefs-edits' => 'Дьузар хъувунрин кьадар',
-'prefsnologin' => 'Куьне гьахьнавач',
 'changepassword' => 'Парол дегишарун',
 'prefs-skin' => 'Къайдадиз ттунин тема',
 'skin-preview' => 'Сифтедин килигун',
@@ -641,7 +628,6 @@ $messages = array(
 'prefs-email' => 'E-mail туькlуьрунин кьадарар',
 'prefs-rendering' => 'Къецепатан акунар',
 'saveprefs' => 'Хуьн',
-'resetprefs' => 'Хуьн тавунвай дегишвилер алудун',
 'restoreprefs' => 'Авайл хьиз кьунвай низамарунар туькIуьр хъувун',
 'prefs-editing' => 'Дуьзар хъувун',
 'rows' => 'ЦIарар',
@@ -651,7 +637,6 @@ $messages = array(
 'stub-threshold-disabled' => 'Галуднава',
 'timezonelegend' => 'Вахтунин минзил',
 'localtime' => 'Чкадин вахт',
-'timezoneoffset' => 'Вахтунин тафават',
 'servertime' => 'Сервердир вахт:',
 'timezoneregion-africa' => 'Африка',
 'timezoneregion-america' => 'Америка',
@@ -1264,10 +1249,6 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 
 'exif-sharpness-1' => 'Жими',
 
-# External editor support
-'edit-externally' => 'И файл патан программа куьмекдалди дуьзар хъувун',
-'edit-externally-help' => '(Алава малумат патал [https://www.mediawiki.org/wiki/Manual:External_editors эцигунин регьбервилиз] килига)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вири',
 'namespacesall' => 'вири',
index bf8f3fc..77a61f5 100644 (file)
@@ -152,7 +152,6 @@ $messages = array(
 'qbedit' => 'Edita',
 'qbpageoptions' => 'Esta paje',
 'qbmyoptions' => 'Me pajes',
-'qbspecialpages' => 'Pajes spesial',
 
 'errorpagetitle' => 'Era',
 'returnto' => 'Restora a $1.',
@@ -228,8 +227,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',
@@ -440,7 +437,6 @@ La arcivo de sutraes per esta paje es asi per conveni:",
 'search-interwiki-default' => 'Resultas de $1:',
 'search-interwiki-more' => '(plu)',
 'searchall' => 'tota',
-'powersearch' => 'Xerca avansada',
 
 # Preferences page
 'preferences' => 'Preferis',
@@ -928,10 +924,6 @@ Si la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en
 # Exif tags
 'exif-exposuretime-format' => '$1 sec. ($2)',
 
-# External editor support
-'edit-externally' => 'Edita esta fix con un programa esterna',
-'edit-externally-help' => '(Vide la [https://www.mediawiki.org/wiki/Manual:External_editors instruis per comensa] per plu instruis)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tota',
 'namespacesall' => 'tota',
@@ -955,4 +947,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..9d10933 100644 (file)
@@ -152,7 +152,6 @@ $messages = array(
 'qbbrowse' => 'Lambula',
 'qbedit' => 'Kyusa',
 'qbmyoptions' => 'Empapula zange',
-'qbspecialpages' => 'Empapula enjawule',
 'faq' => 'Ebitera okubuuzibwa',
 'faqpage' => 'Project:Ebitera okubuuzibwa ku',
 
@@ -266,8 +265,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',
@@ -355,9 +352,6 @@ Erinnya eryo liyinza ate okubaamu ennukuta oba obubonero ebitakkirizibwa mu mann
 'perfcachedts' => "Data eddako wano eva mu ggwanika zzibizi, yasemba okutuukanizibwa n'ey'ennono ku saawa $3, nga $2. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Ku ssaawa eno olupapula luno terukkiriza kukyusibwamu.<br />
 Data eruliko ejjakugira nga tekyuka.',
-'wrong_wfQuery_params' => 'wfQuery() kirimu paramita ensobu zino<br />
-Mukolo: $1<br />
-Ekiragiro ekinoonyeza mu ggwanika lya data: $2',
 'viewsource' => "Kebera obulambike obw'ennono obw'olupapula luno",
 'actionthrottled' => 'Ekikolwa kigaanidwa',
 'actionthrottledtext' => "Okulwanyisa abasindika obubaka kiyaaye, twateekawo ekkomo ery'emirundi omuntu gy'ayinza okukola ekikolwa ekyo.<br />
@@ -790,13 +784,8 @@ oba ku gano agali ku lupapula luno.<br />
 # Search results
 'searchresults' => 'Noonyeza mu bizuulidwa',
 'searchresults-title' => 'Ebizuulidwa ku "$1"',
-'searchresulttext' => "Okumanya ebisingawo ku konoonya bintu ku {{SITENAME}}, kebera ku '[[{{MediaWiki:Helppage}}|{{int:help}}]]'.",
-'searchsubtitle' => 'Onoonyezza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|empapula zonna ezitandika ne "$1"]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|empapula zonna ezikuggusa ku "$1"]])',
-'searchsubtitleinvalid' => "Onoonyezza '''$1'''",
 'toomanymatches' => "Ebikwataganya by'onoonyezesazza biyitiridde obungi. Ky'onoonyezesa kikyusemu",
 'titlematches' => 'Empapula ezirina emitwe egyefaananyiriza guno',
-'notitlematches' => 'Tewali mpapula zirina mutwe guno',
 'textmatches' => "Empapula eziriko ebigambo by'onoonyezesezza",
 'notextmatches' => 'Tewali mpapula ziriko bigambo bino',
 'prevn' => '{{PLURAL:$1|$1}} ezikulembedde zino',
@@ -805,10 +794,8 @@ oba ku gano agali ku lupapula luno.<br />
 'nextn-title' => '{{PLURAL:$1|Ekizuulidwa $1 ekiddako|Ebizuulidwa $1 ebiddako}}',
 'shown-title' => 'Ndaga {{PLURAL:$1|ekizuulidwa|ebizuulidwa}} $1 ku buli lupapula',
 'viewprevnext' => 'Laga ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Kyusamu ennoonya',
 'searchmenu-exists' => "'''Olupapula \"[[:\$1]]\" gyeruli ku wiki eno.'''",
 'searchmenu-new' => "'''Oba oyagala, olupapula \"[[:\$1]]\" gwe osobola okulukolawo ku wiki eno.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kebera mu mpapula eziriko akatandikwa kano]]',
 'searchprofile-articles' => "Empapula ez'ensonga",
 'searchprofile-project' => "Empapula eziriko obuyambi n'eza Kawefube",
 'searchprofile-images' => "Mediya ey'ekintabuli - Bifaananyi, Vidiyo n'ebiWulirizibwa",
@@ -824,13 +811,9 @@ oba ku gano agali ku lupapula luno.<br />
 'search-interwiki-default' => 'ebizuulidwa ku $1:',
 'search-interwiki-more' => '(ebikyaliyo)',
 'searchall' => '',
-'nonefound' => "'''Wekkaanye''': Okunoonya kuno kukoma mu makuŋaanyizo amalondemu okugyako nga okulagidde okweyonera awalala.
-W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipediya yonna. Bw'obanga olina ekkuŋaanyizo limu lyokka lyoyagala okunoonyezamu, soosawo erinnya lyalyo w'owandikira by'onoonya.",
-'powersearch' => 'Noonya mu ngeri esunsula',
 'powersearch-legend' => 'Noonya mu ngeri esunsula',
 'powersearch-ns' => 'Noonyeza mu makuŋaaniro gano:',
 'powersearch-redir' => "Laga n'empapula ezikutwalabutwazi ku zinnaazo",
-'powersearch-field' => 'Nnoonyeza',
 'powersearch-togglelabel' => 'Londa:',
 'powersearch-toggleall' => 'Gonna',
 
@@ -843,7 +826,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'prefs-email' => 'Enteekateeka eza E-mail',
 'prefs-rendering' => 'Endabika',
 'saveprefs' => 'Bino bikaze',
-'resetprefs' => 'Gyawo enkyukakyuka ze sinnakaza',
 'restoreprefs' => 'Zawo enteekateeka zi nansangwawo',
 'prefs-editing' => 'Kukyusa',
 'searchresultshead' => 'Noonya',
@@ -852,7 +834,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'localtime' => "Ssaawa za w'oli:",
 'timezoneuseserverdefault' => "Kozesa ssaawa wiki eno z'ekozesa ($1)",
 'timezoneuseoffset' => 'Ndala (tegeka enjawulo mu budde)',
-'timezoneoffset' => 'Njawulo mu budde¹:',
 'servertime' => 'Ssaawa ya sisitemu:',
 'guesstimezone' => 'Kalambulanetti etegeke obudde',
 'timezoneregion-africa' => 'Afirika',
@@ -1307,10 +1288,6 @@ Ebirala biyinza butalabika okujjako ng'okiragidde.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Fayiro eno gikolereko mu pulogulamu endala',
-'edit-externally-help' => '[https://www.mediawiki.org/wiki/Manual:External_editors Nyiga wano] okuyiga ebisingawo ku kukozesa pulogulamu endala okukola enkyukakyuka.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Zonna',
 'namespacesall' => 'Gonna',
index 4613789..6dab500 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' ),
@@ -300,7 +298,6 @@ $messages = array(
 'qbedit' => 'Bewirke',
 'qbpageoptions' => 'Pagina-opties',
 'qbmyoptions' => 'mien opties',
-'qbspecialpages' => "Speciaal pagina's",
 'faq' => 'FAQ (väölgesjtèlde vraoge)',
 'faqpage' => 'Project:Väölgestjèlde vraoge',
 
@@ -414,8 +411,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',
@@ -506,9 +501,6 @@ D'r is gein toelichting besjikbaar.",
 'perfcached' => "De gegaeves koume oet 'n cache en zeen mäögelik neet actueel. 't Geuf {{PLURAL:$1|maximaal ei rizzeltaot|maximaal $1 rizzeltaote}} inne cache.",
 'perfcachedts' => "De getuunde gegaeves komme oet 'n cache en zeen veur 't letst biejgewèrk op $1. Maximaal guuef 't {{PLURAL:$4|ei rizzeltaot|$4 rizzeltaote}} inne cache.",
 'querypage-no-updates' => "Deze pagina kin op 't memènt neet biegewirk waere. Deze gegaeves waere neet verfrisj.",
-'wrong_wfQuery_params' => 'Verkeerde paramaeters veur wfQuery()<br />
-Funksie: $1<br />
-Query: $2',
 'viewsource' => 'Bekiek brónteks',
 'viewsource-title' => 'Bekiek brón van $1',
 'actionthrottled' => 'Hanjeling taengegehauwe',
@@ -1088,12 +1080,8 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 # Search results
 'searchresults' => 'Zeukresultate',
 'searchresults-title' => 'Zeukresultate veur "$1"',
-'searchresulttext' => 'Veur mier informatie euver zeuke op {{SITENAME}}, zuug [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Doe zeukdes veur \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginne mit "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwieze nao "$1"]])',
-'searchsubtitleinvalid' => 'Voor zoekopdracht "$1"',
 'toomanymatches' => "d'r Wore te väöl resultate. Probeer estebleef  'n anger zeukopdrach.",
 'titlematches' => 'Overeinkoms mèt volgende titels',
-'notitlematches' => 'Geine inkele paginatitel gevónje mit de opgegaeve zeukterm',
 'textmatches' => 'Euvereinkoms mèt artikelinhoud',
 'notextmatches' => 'Geen artikel gevonden met opgegeven zoekterm',
 'prevn' => 'veurige {{PLURAL:$1|$1}}',
@@ -1102,10 +1090,8 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
 'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per pagina weergaeve',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekieke.',
-'searchmenu-legend' => 'Zeukopties',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmake op deze wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanaome mit dit veurveugsel weergaeve]]',
 'searchprofile-articles' => "Inhaudelike pagina's",
 'searchprofile-project' => "Help- en projekpagina's",
 'searchprofile-images' => 'Bestenj',
@@ -1133,15 +1119,10 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'showingresults' => 'Hieonger staon de <b>$1</b> {{PLURAL:$1|resultaat|resultaat}}, vanaaf #<b>$2</b>.',
 'showingresultsnum' => "Hieonger {{PLURAL:$3|steit '''1''' resultaat|staon '''$3''' resultate}} vanaaf #<b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} veur '''$4'''",
-'nonefound' => "'''Lèt op:''' sjtandaard waere neet alle naamruumdes naogezeuk.
-Wens doe in dien zeukopdrach es veurvoegsel \"''all:''\" gebroeks waere alle pagina's naogezeuk (inclusief euverlèkpagina's, sjablone, enzoewiejer).
-Doe kans ouch 'n naamruumde es veurvoegsel gebroeke.",
 'search-nonefound' => "D'r zien gein resultate veur diene zeukopdrach.",
-'powersearch' => 'Zeuke',
 'powersearch-legend' => 'Oetgebreid zeuke',
 'powersearch-ns' => 'Zeuke in naamruumdes:',
 'powersearch-redir' => 'Doorverwiezinge waergaeve',
-'powersearch-field' => 'Zeuk nao',
 'powersearch-togglelabel' => 'Conterleer:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Gein',
@@ -1154,8 +1135,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',
-'prefsnologintext' => 'De mós zeen <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aagemeld]</span> óm dien veurkäöre te kónne insjtèlle.',
 'changepassword' => 'Wachwaord verangere',
 'prefs-skin' => '{{SITENAME}}-uterlik',
 'skin-preview' => 'Veurbesjouwing',
@@ -1179,7 +1158,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'prefs-email' => 'E-mailopsjes',
 'prefs-rendering' => 'Oeterlik',
 'saveprefs' => 'Veurkäöre opsjlaon',
-'resetprefs' => 'Sjtandaardveurkäöre hersjtèlle',
 'restoreprefs' => 'Terug nao standaardinstellinge',
 'prefs-editing' => 'Aafmeitinge tèksveld',
 'rows' => 'Regels',
@@ -1197,7 +1175,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'localtime' => 'Plaatselike tied',
 'timezoneuseserverdefault' => 'Gebroek wikistanderd ($1)',
 'timezoneuseoffset' => 'Angers (gaef tiedversjil)',
-'timezoneoffset' => 'Tiedsversjil¹:',
 'servertime' => 'Server tied:',
 'guesstimezone' => 'Invulle van browser',
 'timezoneregion-africa' => 'Afrika',
@@ -1430,6 +1407,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',
@@ -1889,10 +1867,8 @@ De pafina's zeen ouk neet as sjabloon opgenome.",
 'protectedpages' => "Besjörmde pagina's",
 'protectedpages-indef' => 'Allein blokkades zonger verloupdatum',
 'protectedpages-cascade' => 'Allein beveiliginge mit de cascade-optie',
-'protectedpagestext' => "De volgende pagina's zeen beveilig en kinne neet bewerk en/of hernömp waere",
 'protectedpagesempty' => "d'r Zeen noe gein pagina's besjörmp die aan deze paramaetere voldaon.",
 'protectedtitles' => "Beveiligde pazjena's",
-'protectedtitlestext' => 'De volgende titels zeen beveilig en kinne neet aangemaak waere',
 'protectedtitlesempty' => "d'r Zeen momenteel gein titels beveilig die aan deze paramaeters voldaon.",
 'listusers' => 'Lies van gebroekers',
 'listusers-editsonly' => 'Allein gebroekers mit bewèrkinge weergaeve',
@@ -3276,10 +3252,6 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
 'exif-urgency-high' => 'Hoeg ($1)',
 'exif-urgency-other' => 'Door gebroeker gedefinieerde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => "Bewirk dit bestand mit 'n extern toepassing",
-'edit-externally-help' => '(zuug de [https://www.mediawiki.org/wiki/Manual:External_editors setupinsjtructies] veur mie informatie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'al',
 'namespacesall' => 'alle',
@@ -3485,8 +3457,7 @@ Same mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van d
 
 # Special:SpecialPages
 'specialpages' => "Speciaal pagina's",
-'specialpages-note' => '----
-* Normaal speciaal pagina\'s
+'specialpages-note' => '* Normaal speciaal pagina\'s
 * <strong class="mw-specialpagerestricted">Beperk toegankelike speciaal pagina\'s</strong>
 * <span class="mw-specialpagecached">Speciaal pagina\'s mit allein gegaeves oete cache (meugelik verajerd)</span>',
 'specialpages-group-maintenance' => 'Óngerhajingsrapporter',
@@ -3670,4 +3641,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..b8acb83 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' ),
@@ -273,7 +272,6 @@ $messages = array(
 'qbedit' => 'Cangia',
 'qbpageoptions' => "Opsioîn de 'sta paggina",
 'qbmyoptions' => 'E mæ paggine',
-'qbspecialpages' => 'Pagine speçiä',
 'faq' => 'Domande frequenti',
 'faqpage' => 'Project:Domande frequente',
 
@@ -384,8 +382,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}}',
@@ -746,8 +742,6 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 # Search results
 'searchresults' => 'Resultati da reçerca',
 'searchresults-title' => 'Rezoltati da riçerca de "$1"',
-'searchsubtitle' => "Ti t'è çercoö '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Ti t'è çercoö '''$1'''",
 'prevn' => 'Precedenti {{PLURAL:$1|$1}}',
 'nextn' => 'Proscima {{PLURAL:$1|$1}}',
 'prevn-title' => '{{PLURAL:$1|rezoltato precedénte|rezoltati precedénti}}',
@@ -775,7 +769,6 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 'searchall' => 'tùtti',
 'showingresultsheader' => "{{PLURAL:$5|Rizoltato '''$1''' di '''$3'''|Rizoltati '''$1 - $2''' de '''$3'''}} pe '''$4'''",
 'search-nonefound' => "Mi n'ho atrovòu ninte",
-'powersearch' => 'Çerca',
 
 # Preferences page
 'preferences' => 'Preferençe',
@@ -1387,10 +1380,6 @@ I inganci sucescivi, in scia mæxima riga, van conscideræ comme eceçioìn (pag
 'exif-filesource' => 'Reixe do papê',
 'exif-languagecode' => 'Lengua',
 
-# External editor support
-'edit-externally' => 'Càngia sto file co-in programma esterno',
-'edit-externally-help' => 'Pe avéi ciù informaçioìn amia e [https://www.mediawiki.org/wiki/Manual:External_editors istruçioìn] (in ingléize)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Tùtti',
 'namespacesall' => 'Tùtti',
index 5418d93..4332322 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õ',
@@ -316,11 +314,6 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 # Search results
 'searchresults' => 'Vȯtšimiz rezultātõd',
 'searchresults-title' => 'Vȯtšimiz "$1" rezultātõd',
-'searchresulttext' => 'Mūdõ tieutõkst iļ {{SITENAME}} vȯtšimiz pierāst vaņtligid  [[{{MediaWiki:Helppage}}| opātõksõst]]',
-'searchsubtitle' => "Vȯtšīztõ frāzõ '''[[:$1]]''' ( [[Special:Prefixindex/$1|amād sõnādõks ''$1'' irgõbõd lēḑõd]]{{int:pipe-separator}} 
-[[Special:WhatLinksHere/$1|amād lēḑõd, mis sizzõl um siḑīmḑi kēratõks ''$1'' jūrõ]])",
-'searchsubtitleinvalid' => "Tēg vȯtšīztõ frāzõ  '''$1'''",
-'notitlematches' => 'Kēratõks pēļikēris vȯtštõd sõņḑi äb ūo lieudtõd',
 'notextmatches' => 'Kēratõks sizzõl vȯtštõd tekstõ äb lieudtõd',
 'prevn' => '{{PLURAL:$1|jedmõli|jedmõlizt $1}}',
 'nextn' => '{{PLURAL:$1|pierrõ-tulbi|pierrõ-tulbizt $1}}',
@@ -351,13 +344,10 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 'searchrelated' => 'sidtõd',
 'searchall' => 'tikkiž',
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st rezultātõst|Rezultātõd '''$1–$2''' '''$3'''-st}} kizzimizõn '''$4'''",
-'nonefound' => "'''Pangid tǟdõl''': Vȯtšõbõd set mingizt nim-rūimõd sizāld. Až tēg tōgid vȯtšõ amšti nim-rūimšti (ka nõvpidāmiz lēḑõd, mallõd, jnj sizāld) kȭlbatõgid kizzimiz jedsõ prefiksõ ''all:''",
 'search-nonefound' => 'Vȯtšimizõn vȯtšimi äb lieudtõd vastūkst.',
-'powersearch' => 'Juo akurāt vȯtšimi',
 'powersearch-legend' => ' Juo akurāt vȯtšimi',
 'powersearch-ns' => 'Vȯtšimi nim-rūimšti:',
 'powersearch-redir' => 'Jeddõpēḑõn sōtimizt nimkēra',
-'powersearch-field' => 'Vȯtšõgid frāzõ',
 
 # Preferences page
 'preferences' => 'Mīeldõbõd ulzõ-vēļimizt',
@@ -730,10 +720,6 @@ Až sugīz nei, sōd līed tōdõs kädūdõks jeddõpēḑõn sōtõ agā jūr
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Protseššõgid failõ ulīz programmatūraks',
-'edit-externally-help' => '(Vaņ uļļizt redaktōrd adresõs [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] kȭlbatõmiz opātõkst)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tikkiž',
 'namespacesall' => 'tikkiž',
index bf2409b..be319f1 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' ),
@@ -235,7 +234,6 @@ süi titul dai sezziún (JavaScript)',
 'qbedit' => 'Mudifega',
 'qbpageoptions' => 'Opzión de la pagina',
 'qbmyoptions' => 'I mè paginn',
-'qbspecialpages' => 'Paginn special',
 'faq' => 'FAQ',
 'faqpage' => 'Project:Dumand frequent',
 
@@ -344,8 +342,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',
@@ -594,17 +590,12 @@ Per infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 # Search results
 'searchresults' => 'Risültaa de la recerca.',
 'searchresults-title' => 'Resültaa de la ricerca de "$1"',
-'searchresulttext' => 'Per vegh püssee infurmazión in de la ricerca interna de {{SITENAME}}, varda [[{{MediaWiki:Helppage}}|Ricerca in {{SITENAME}}]].',
-'searchsubtitle' => 'Tì t\'hee cercaa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tüt i paginn che scumincen per "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tüt i paginn che porten a "$1"]])',
-'searchsubtitleinvalid' => 'T\'hee cercaa "$1"',
 'toomanymatches' => "Gh'è tropi curispundens. Mudifichè la richiesta.",
-'notitlematches' => "La vus che t'hee ciamaa la se tröa minga intra i tituj di articuj",
 'textmatches' => "Truvaa int 'l test di paginn",
 'notextmatches' => "La vus che t'hee ciamaa la gh'ha minga una curispundenza in del test di paginn.",
 'prevn' => 'precedent {{PLURAL:$1|$1}}',
 'nextn' => 'pròssim {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Vidé ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Upzión de ricerca',
 'searchmenu-new' => "'''Trà in pee la pagina \"[[:\$1]]\" ins quel sit chì!'''",
 'searchprofile-articles' => 'Paginn de cuntegnüü',
 'searchprofile-project' => 'Paginn de jüt e de pruget',
@@ -622,13 +613,9 @@ Per infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'search-interwiki-caption' => 'Pruget fredej',
 'search-interwiki-default' => '$1 resültaa',
 'search-interwiki-more' => '(püssee)',
-'nonefound' => "''''Tenzión''': la ricerca la vegn fada in utumategh dumà per un quaj namespace.
-Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespace (cumpres i discüssión, i mudel, etc...) o dupra el namespace vursüü 'me prefiss.",
-'powersearch' => 'Truvá',
 'powersearch-legend' => 'Recerca avanzada',
 'powersearch-ns' => 'Cerca in di namespace:',
 'powersearch-redir' => 'Lista i redirezión',
-'powersearch-field' => 'Cerca',
 
 # Preferences page
 'preferences' => 'Preferenz',
@@ -646,7 +633,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'prefs-misc' => 'Ólter',
 'prefs-rendering' => 'Aparenza',
 'saveprefs' => 'Tegn i mudifech',
-'resetprefs' => 'Trá via i mudifech',
 'restoreprefs' => 'Ristabiliss i impustazión de default',
 'prefs-editing' => 'Mudifich',
 'rows' => 'Riich:',
@@ -657,7 +643,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'savedprefs' => 'I preferenz hinn stai salvaa.',
 'timezonelegend' => 'Lucalitaa',
 'localtime' => 'Urari lucaal',
-'timezoneoffset' => 'Diferenza¹',
 'servertime' => 'Urari dal sèrver',
 'guesstimezone' => 'Catá l urari dal sèrver',
 'allowemail' => 'Permètt ai altar üteent də cuntatamm par email',
@@ -739,6 +724,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',
@@ -1323,10 +1309,6 @@ I ligam che i vegnen dopu, in sü l'istessa riga, i vegnen cónsideraa di ecezi
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Redatá chest archivi cunt un prugramari da fö',
-'edit-externally-help' => 'Varda [https://www.mediawiki.org/wiki/Manual:External_editors i istrüzión] per avègh püssee infurmazión (in ingles).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tücc',
 'namespacesall' => 'tücc',
index 8d95c64..54cdd05 100644 (file)
@@ -42,7 +42,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'ການປະກອບສ່ວນ' ),
        'CreateAccount'             => array( 'ສ້າງບັນຊີ' ),
        'Deadendpages'              => array( 'ໜ້າທີ່ບໍ່ມີໜ້າໃດໂຍງມາ' ),
-       'Disambiguations'           => array( 'ແກ້ຄວາມກຳກວມ' ),
        'DoubleRedirects'           => array( 'ໂອນຊ້ອນ' ),
        'Listadmins'                => array( 'ລາຍຊື່ຜູ້ບໍລິຫານລະບົບ' ),
        'Listbots'                  => array( 'ລາຍຊື່ບອຕ' ),
@@ -217,7 +216,6 @@ $messages = array(
 'qbedit' => 'ດັດແກ້',
 'qbpageoptions' => 'ໜ້ານີ້',
 'qbmyoptions' => 'ໝ້າຂ້ອຍ',
-'qbspecialpages' => 'ໜ້າພິເສດ',
 
 'errorpagetitle' => 'ຜິດພາດ',
 'returnto' => 'ກັບໄປ  $1.',
@@ -294,8 +292,6 @@ $messages = array(
 'ok' => 'ຕົກລົງ',
 'retrievedfrom' => 'ຖອນມາຈາກ "$1"',
 'youhavenewmessages' => 'ທ່ານ ມີ $1 ($2).',
-'newmessageslink' => 'ຂໍ້ຄວາມໃໝ່',
-'newmessagesdifflink' => 'ການປ່ຽນແປງຫຼ້າສຸດ',
 'youhavenewmessagesmulti' => 'ທ່ານມີຂໍ້ຄວາມໃໝ່ ຢູ່ $1',
 'editsection' => 'ດັດແກ້',
 'editold' => 'ດັດແກ້',
@@ -468,8 +464,6 @@ $messages = array(
 'editundo' => 'ກັບຄືນ',
 
 # Search results
-'searchresulttext' => 'ສຳຫຼັບ ຂໍ້ມູນເພີ່ມເຕີມ ກ່ຽວກັບ ການຊອກຫາ ຢູ່ {{SITENAME}}, ກະລຸນາເບິ່ງ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "ທ່ານ ຊອກຫາ '''[[:$1]]'''",
 'prevn' => '{{PLURAL:$1|$1}} ກ່ອນໜ້າ',
 'nextn' => '{{PLURAL:$1|$1}} ຕໍ່ໄປ',
 'viewprevnext' => 'ເບິ່ງ ($1 {{int:pipe-separator}} $2) ($3).',
@@ -482,9 +476,6 @@ $messages = array(
 'searchall' => 'ທັງໜົດ',
 'showingresults' => "ສະແດງທາງລຸ່ມ ຮອດ {{PLURAL:$1|'''1''' ຜົນ|'''$1''' ຜົນ}} ເລີ່ມຈາກ  #'''$2'''.",
 'showingresultsnum' => "ສະແດງທາງລຸ່ມ  {{PLURAL:$3|'''1''' ຜົນ|'''$3''' ຜົນ}} ເລີ່ມຈາກ #'''$2'''.",
-'nonefound' => "'''ໜາຍເຫດ''': ຈະຄົ້ນຫາແຕ່ໃນ ບາງຂອບເຂດຊື່ ຖ້າບໍ່ມີການຕັ້ງຄ່າ.
-ທົດລອງ ໃຊ້ຄຳນຳໝ້າ ''all:'' ໃນຂໍ້ຄວາມຊອກຫາ ຂອງ ທ່ານ ເພື່ອ ຄົ້ນຫາ ທຸກໆເນື້ອໃນ (ລວມທັງໝ້າສົນທະນາ, ແມ່ແບບ ແລະອື່ນໆ), ຫຼື ໃຊ້ ຂອບເຂດຊື່ໃດໝຶ່ງເປັນ ຄຳນຳໝ້າເລີຍ.",
-'powersearch' => 'ຊອກຫາ',
 
 # Preferences page
 'preferences' => 'ການຕັ້ງຄ່າ',
@@ -502,7 +493,6 @@ $messages = array(
 'prefs-watchlist-edits' => 'ຈຳນວນການດັດແກ້ ສະແດງ ໃນ ລາຍການຕິດຕາມທີ່ຂະຫຍາຍອອກ:',
 'prefs-misc' => 'ແລະອື່ນໆ',
 'saveprefs' => 'ບັນທຶກ',
-'resetprefs' => 'ເລີ່ມຄືນໃໝ່',
 'prefs-editing' => 'ການດັດແກ້',
 'rows' => 'ແຖວ:',
 'columns' => 'ຖັນ:',
@@ -513,7 +503,6 @@ $messages = array(
 'savedprefs' => 'ການຕັ້ງຄ່າຂອງທ່ານໄດ້ຖືກບັນທຶກແລ້ວ.',
 'timezonelegend' => 'ເຂດເວລາ',
 'localtime' => 'ເວລາທ້ອງຖິ່ນ',
-'timezoneoffset' => 'ຫ່າງກັນ¹',
 'servertime' => 'ເວລາເຊີເວີ',
 'guesstimezone' => 'ເອົາເວລາຈາກໂປຣແກຣມທ່ອງເວັບ',
 'allowemail' => 'ອະນຸຍາດ ໃຫ້ຜູ້ໃຊ້ອື່ນ ສົ່ງອີເມລຫາຂ້ອຍ',
@@ -897,10 +886,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'exif-artist' => 'ຜູ້ຂຽນ',
 'exif-copyright' => 'ເຈົ້າຂອງລິຂະສິດ',
 
-# External editor support
-'edit-externally' => 'ດັດແກ້ໄຟລ໌ນີ້ໂດຍໂປແກຣມພາຍນອກ',
-'edit-externally-help' => 'ເບິ່ງ ຂໍ້ມູນເພີ່ມຕື່ມ ຢູ່ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions]',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ທັງໝົດ',
 'namespacesall' => 'ທັງໝົດ',
@@ -954,4 +939,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:SpecialPages
 'specialpages' => 'ໜ້າພິເສດ',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'ຂະຫຍາຍແມ່ແບບ',
+
 );
index ae71cc6..3d898df 100644 (file)
@@ -122,7 +122,6 @@ $messages = array(
 'qbedit' => "Hloli ye ng'i",
 'qbpageoptions' => 'Bye petulo',
 'qbmyoptions' => 'Zwa petulona',
-'qbspecialpages' => 'Petulo zwenti',
 'faq' => 'Alabile',
 'faqpage' => 'Project:Alabile',
 
@@ -207,8 +206,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",
@@ -258,9 +255,6 @@ $messages = array(
 'formerror' => 'Bufosi: ni bulukezi form',
 'badtitle' => 'Sebu sa bani',
 'badtitletext' => "Bufosi di petulo sigirikisize, kusize, interling'ki. A sa selt di bufosi.",
-'wrong_wfQuery_params' => "Inkorrekt parameteri di wfQuery()<br />
-Fung'ksyun: $1<br />
-Query: $2",
 'viewsource' => "Kamukile ng'i",
 'viewsourcetext' => 'A sa kamukile wiki-selt di bye petulo:',
 
@@ -441,10 +435,7 @@ Informasi: (bye) = petuho a nca selt,
 
 # Search results
 'searchresults' => 'Fatukile kamukile',
-'searchsubtitle' => "A fatukile di '''[[:$1]]'''",
-'searchsubtitleinvalid' => "A fatukile di '''$1'''",
 'titlematches' => 'Sebu di petulo ekali',
-'notitlematches' => 'Ni sebu di petulo ekali',
 'textmatches' => 'Selt di petulo ekali',
 'notextmatches' => 'Ni selt di petulo ekali',
 'prevn' => 'kona {{PLURAL:$1|$1}}',
@@ -453,13 +444,11 @@ Informasi: (bye) = petuho a nca selt,
 'searchall' => 'xete',
 'showingresults' => "Kamukile opi {{PLURAL:$1|'''1''' ekali|'''$1''' ekalina}} di #'''$2'''.",
 'showingresultsnum' => "Kamukile {{PLURAL:$3|'''1''' ekali|'''$3''' ekalina}} di #'''$2'''.",
-'powersearch' => 'Fatukile',
 
 # Preferences page
 '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',
@@ -467,13 +456,11 @@ Informasi: (bye) = petuho a nca selt,
 'prefs-rc' => 'Petuho nca',
 'prefs-watchlist' => 'Mukoloko di kentezi',
 'saveprefs' => 'Bulukezi',
-'resetprefs' => 'Lisetize',
 'prefs-editing' => "Hloli ye ng'i",
 'rows' => 'Roo:',
 'columns' => 'Kalom:',
 'searchresultshead' => 'Fatukile',
 'resultsperpage' => 'Hit di petulo:',
-'timezoneoffset' => 'Ufiseti¹',
 'default' => 'auto',
 'prefs-files' => 'Imegini',
 'youremail' => 'Imeli:',
@@ -1009,10 +996,6 @@ Xete ling'ki kwa lina sa konsidisize desepo. Petulo dimedi inlinenikusize.",
 # Exif tags
 'exif-imagedescription' => 'Sebu di imegi',
 
-# External editor support
-'edit-externally' => 'Kenki imegi sebilize pagini lakusi',
-'edit-externally-help' => 'Boniselelize [https://www.mediawiki.org/wiki/Manual:External_editors instruksi setup] kwa informasi.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'xeti',
 'namespacesall' => 'xeti',
diff --git a/languages/messages/MessagesLrc.php b/languages/messages/MessagesLrc.php
new file mode 100644 (file)
index 0000000..70e3b6b
--- /dev/null
@@ -0,0 +1,1088 @@
+<?php
+/** لوری (لوری)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Mogoeilor
+ */
+
+$rtl = true;
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'هوم پیوند زیرخط دار:',
+'tog-justify' => 'فاصله نيائن سی پاراگرافيا',
+'tog-hideminor' => 'قام كردن ويرايشتيا كؤچك مئن آلشتيا تازه',
+'tog-hidepatrolled' => 'قام كردن ويرايشتيا تیه دیار کرده مئن آلشتيا تازه',
+'tog-newpageshidepatrolled' => 'بلگیا تیه دیار کرده نه مئن نوم گه بلگیا تازه قام کو',
+'tog-extendwatchlist' => 'سیل برگه نه سی نشو دئن تمام آلشتیا واکو نه فقط سی بیشتر تازه باوا.',
+'tog-usenewrc' => 'دسه بنی آلشتیا وا بلگه د آلشتیا تازه و سیل برگ',
+'tog-numberheadings' => 'سربلگه خود شماره گر',
+'tog-showtoolbar' => 'نوار اوزار ويرايشت نشون بيه',
+'tog-editondblclick' => 'بلگيا نه وا دوبار پورنين ويرايشت بكيد',
+'tog-editsection' => 'ممكن بيئن ويرايشت بشخيا وا [ويرايشت]',
+'tog-editsectiononrightclick' => 'بهر ویرایشت نه وا راس کلیک کردن د بهر عنوانیا فعال کو',
+'tog-showtoc' => 'چیا مئن جدول نشو بیه',
+'tog-rememberpassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
+'tog-watchcreations' => 'بلگیایی که مه راس کمه و فایلیایی که مه سوار کمه اضاف کو د سیل برگه مه',
+'tog-watchdefault' => 'بلگیا و فایلایی که مه ویرایشت کمه اضاف کو د سیل برگم',
+'tog-watchmoves' => 'بلگیاو فایلیایی که مه جاوه جا کمه د سیل برگم اضاف کو',
+'tog-watchdeletion' => 'بلگیا و فایلایی که مه پاک کمه اضاف کو د سیل برگم',
+'tog-minordefault' => 'همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.',
+'tog-previewontop' => 'پیش سیل نه دما جعوه ویرایشت نشو بیئه',
+'tog-previewonfirst' => 'پیش سیل نه د اولین ویرایشت نشو بیئه',
+'tog-enotifusertalkpages' => 'وختی که بلگه گپسن کارور آلشت پیدا کرد منه وا ایمیل خور کو',
+'tog-shownumberswatching' => 'انازه کاروریایی که د حالت دیئنن نشو بیه',
+'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' => 'فونت سريف',
+
+# Dates
+'sunday' => 'يه شمه',
+'monday' => 'دوشمه',
+'tuesday' => 'سه شمه',
+'wednesday' => 'چارشمه',
+'thursday' => 'پن شمه',
+'friday' => 'جمه',
+'saturday' => 'شمه',
+'sun' => 'يه شمه',
+'mon' => 'دوشمه',
+'tue' => 'سه شمه',
+'wed' => 'چارشمه',
+'thu' => 'پن شمه',
+'fri' => 'جمه',
+'sat' => 'شمه',
+'january' => 'جانويه',
+'february' => 'فبريه',
+'march' => 'مارش',
+'april' => 'آبريل',
+'may_long' => 'ما',
+'june' => 'جوئن',
+'july' => 'جولای',
+'august' => 'اگوست',
+'september' => 'سپتامر',
+'october' => 'اكتور',
+'november' => 'نوامر',
+'december' => 'دسامر',
+'january-gen' => 'جانويه',
+'february-gen' => 'فوريه',
+'march-gen' => 'مارش',
+'april-gen' => 'آوريل',
+'may-gen' => 'ما',
+'june-gen' => 'جوئن',
+'july-gen' => 'جولای',
+'august-gen' => 'اگوست',
+'september-gen' => 'سپتامر',
+'october-gen' => 'اكتور',
+'november-gen' => 'نوامر',
+'december-gen' => 'دسامر',
+'jan' => 'ژانويه',
+'feb' => 'فبريه',
+'mar' => 'مارش',
+'apr' => 'آبريل',
+'may' => 'ما',
+'jun' => 'جوئن',
+'jul' => 'جولا',
+'aug' => 'اوگوست',
+'sep' => 'سپتامر',
+'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|دسه|دسه يا}}',
+'category_header' => 'بلگيا مئن دسه "$1"',
+'subcategories' => 'زيردسه يا',
+'category-media-header' => 'رسانه د دسه "$1"',
+'category-empty' => 'ای دسه واقعن شومل هیژ بلگه ای یا رسانه ای نی',
+'hidden-categories' => '{{PLURAL:$1|دسته قام بيه|دسته يا قام بيه}}',
+'hidden-category-category' => 'دسه یا قام بیه',
+'category-subcat-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای زیردسه, خارج د $2 کل.}}',
+'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
+'listingcontinuesabbrev' => 'دماله',
+'index-category' => 'بلگيا سيائه دار',
+'noindex-category' => 'بلگيا بی سيائه',
+'broken-file-category' => 'بلگیایی که هوم پیوند فایلیا اشکسه دارن',
+
+'about' => 'دباره',
+'article' => 'محتوا بلگه',
+'newwindow' => '(نيمدری  تازه وا کو)',
+'cancel' => 'رد كردن',
+'moredotdotdot' => 'بيشتر',
+'morenotlisted' => 'ای ليست كامل نبيه',
+'mypage' => 'بلگه',
+'mytalk' => 'چك چنه',
+'anontalk' => 'دباره نشونی ای آی پی قصه بكيد',
+'navigation' => 'ناوگشتن',
+'and' => '&#32;و',
+
+# Cologne Blue skin
+'qbfind' => 'فهمسن،جسن',
+'qbbrowse' => 'قرض گرتن',
+'qbedit' => 'ويرايشت',
+'qbpageoptions' => 'ای بلگه',
+'qbmyoptions' => 'بلگيا مه',
+'faq' => 'اف ای كيو',
+'faqpage' => 'پروجه:اف اي كيو',
+
+# Vector skin
+'vector-action-addsection' => 'موضوع اضاف بكيد',
+'vector-action-delete' => 'حذف بكيد',
+'vector-action-move' => 'جاوه جا بوئيت',
+'vector-action-protect' => 'حمايت بكيد',
+'vector-action-undelete' => 'حذف نبيئني',
+'vector-action-unprotect' => 'حمايت آلشت بكيد',
+'vector-view-create' => 'راس كردن',
+'vector-view-edit' => 'ويرايشت',
+'vector-view-history' => 'ديئن ويرگار',
+'vector-view-view' => 'حنن',
+'vector-view-viewsource' => 'سرچشمه نه بوينيت',
+'actions' => 'جمشت',
+'namespaces' => 'نوم جا',
+'variants' => 'آلشت ونی يا',
+
+'navigation-heading' => 'منو ناوگشتن',
+'errorpagetitle' => 'غلط',
+'returnto' => 'ورگشت وه $1.',
+'tagline' => 'د {{SITENAME}}',
+'help' => 'هومياری',
+'search' => 'پی چوری',
+'searchbutton' => 'پی جوری',
+'go' => 'رو',
+'searcharticle' => 'رو',
+'history' => 'ويرگار بلگه',
+'history_short' => 'ويرگار',
+'updatedmarker' => 'د آخرین دیئن مه روزآمد کو',
+'printableversion' => 'نسقه چاپ بيئنی',
+'permalink' => 'چسب ون هميشئی',
+'print' => 'چاپ كردن',
+'view' => 'ديئن',
+'edit' => 'ويرايشت',
+'create' => 'راس كردن',
+'editthispage' => 'ويرايشت ای بلگه',
+'create-this-page' => 'راس كردن ای بلگه',
+'delete' => 'حذف كردن',
+'deletethispage' => 'ای بلگه نه حذف بكيد',
+'undeletethispage' => 'ای بلگه نه حذف نكيد',
+'undelete_short' => 'پاک نکو {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
+'protect' => 'حمايت بكيد',
+'protect_change' => 'آلشت بكيد',
+'protectthispage' => 'ای بلگه نه حفاظت بكيد',
+'unprotect' => 'حمايت آلشت بكيد',
+'unprotectthispage' => 'حفاظت دی بلگه نه آلشت بكيد',
+'newpage' => 'بلگه نو',
+'talkpage' => 'دباره ای بلگه قصه بكيد',
+'talkpagelinktext' => 'وت و واچ',
+'specialpage' => 'بلگه ويجه',
+'personaltools' => 'اوزاريا شصقی',
+'postcomment' => 'بشه تازه',
+'articlepage' => 'ديئن محتوا بلگه',
+'talk' => 'گپ',
+'views' => 'ديئنيا',
+'toolbox' => 'اوزاريا',
+'userpage' => 'ديئن بلگه كارور',
+'projectpage' => 'ديئن بلگه پروجه',
+'imagepage' => 'ديئن بلگه فايل',
+'mediawikipage' => 'ديئن بلگه پيغوم',
+'templatepage' => 'ديئن بلگه قالو',
+'viewhelppage' => 'ديئن بلگه هومياری',
+'categorypage' => 'ديئن بلگه دسه بنی',
+'viewtalkpage' => 'ديئن چك چنه يا',
+'otherlanguages' => 'د زونيا هنی',
+'redirectedfrom' => '(ورگشتن د$1)',
+'redirectpagesub' => 'بلگه دوباره ورگشتن',
+'lastmodifiedat' => 'ای بلگه تازه ايا وضع آلشت بيه د $1, د $2.',
+'viewcount' => 'ای بلگه قاول دسترسی بيه {{PLURAL:$1|once|$1 times}}.',
+'protectedpage' => 'بلگه حفاظت بيه',
+'jumpto' => 'پئرستن د',
+'jumptonavigation' => 'ناوگشتن',
+'jumptosearch' => 'پی جوری',
+'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' => 'پروجه:دباره',
+'copyrightpage' => '{{ns:پروجه}}:کپی رایت',
+'currentevents' => 'پيشومدل تازه باو',
+'currentevents-url' => 'پروجه:پيشومدل تازه باو',
+'disclaimers' => 'منكرون',
+'disclaimerpage' => 'پروجه:منكر بيئن كاروريا',
+'edithelp' => 'هومياری سی ويرايشت',
+'helppage' => 'هومياری:محتوا',
+'mainpage' => 'سرآسونه',
+'mainpage-description' => 'سرآسونه',
+'policy-url' => 'پروجه:خط و مش',
+'portal' => 'تلگه جمی',
+'portal-url' => 'پروجه:تلگه جمی',
+'privacy' => 'رهبرد رازداری',
+'privacypage' => 'پروجه: خط مشی راز واداشتن',
+
+'badaccess' => 'خطا :اجازه بئیر',
+'badaccess-group0' => 'شما اجازه انجوم کاری که حاستیت نارین',
+
+'versionrequired' => 'یه نسقه د نیازمنیا ویکی رسانه
+$1',
+
+'ok' => 'خوئه',
+'retrievedfrom' => 'بازيافته د"$1"',
+'youhavenewmessages' => 'شما داريت $1($2)',
+'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
+'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
+'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
+'editsection' => 'ويرايشت',
+'editold' => 'ويرايشت',
+'viewsourceold' => 'سرچشمه نه بوينيت',
+'editlink' => 'ويرايشت',
+'viewsourcelink' => 'سرچشمه نه بوينيت',
+'editsectionhint' => 'ويرايشت يه بشق:$1',
+'toc' => 'محتوايا',
+'showtoc' => 'نشو دائن',
+'hidetoc' => 'قام كردن',
+'collapsible-collapse' => 'جم كردن',
+'collapsible-expand' => 'وا كردن',
+'thisisdeleted' => 'دیئن یا ورگنين $1?',
+'viewdeleted' => 'دیئن$1?',
+'feedlinks' => 'غذا دهنه:',
+'feed-invalid' => 'نوع مشترک بین خورحو نامعتور',
+'site-rss-feed' => 'خورخو RSS سی $1',
+'site-atom-feed' => 'خور حون Atom سی $1',
+'page-rss-feed' => 'خورخو RSS سی «$1»',
+'page-atom-feed' => 'خور حون Atom سی $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' => 'بلگه',
+'nstab-user' => 'بلگه كارور',
+'nstab-media' => 'بلگه رسانه',
+'nstab-special' => 'بلگيا ويجه',
+'nstab-project' => 'بلگه پروجه',
+'nstab-image' => 'فاين',
+'nstab-mediawiki' => 'پيغوم',
+'nstab-template' => 'قالو',
+'nstab-help' => 'بلگه هومياری',
+'nstab-category' => 'دسه',
+
+# Main script and global functions
+'nosuchaction' => 'چنو كاری وجود ناره',
+'nosuchspecialpage' => 'چنو بلگه خاصی وجود ناره',
+
+# General errors
+'error' => 'خطا',
+'databaseerror' => 'خطا د جاگه دونسمنيا',
+'databaseerror-text' => 'یه خطا جست کردن د پایگا داده پیش اوما.یه ممکنه یه در کار ونن د نرم اوزار پیش بیاره',
+'databaseerror-textcl' => 'خطاجست گرتن پايگاه دونسمنيا پيشومد كرده',
+'databaseerror-query' => 'نوم گشتن: $1',
+'databaseerror-function' => 'تابع:$1',
+'databaseerror-error' => 'خطا: $1',
+'laggedslavemode' => 'زنهار:بلگه شايت شومل روزامديا تازه باو نبوئه',
+'readonly' => 'جاگه دونسمنيا بسه بيه',
+'missing-article' => 'پاگا داده نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
+معمولند یه سی یه که فرخ ویرگار رئته دش بیه پاک بیه.',
+'missingarticle-rev' => '(دوواره ديئن#: $1)',
+'missingarticle-diff' => '(فرخ: $1، $2)',
+'internalerror' => 'خطا داخلی',
+'internalerror_info' => 'خطا داخلی:$1',
+'filecopyerror' => 'نبوئه فایل $1 د $2 کپی بوئه',
+'filerenameerror' => 'نبوئه فایل $1 د $2 نوم آلشت بوئه',
+'filedeleteerror' => 'نبوئه فایل $1 پاک بوئه',
+'filenotfound' => 'نتونیت فایل $1 پیدا بکید',
+'formerror' => 'خطا:نبوئه فرم وه مو بئيت',
+'cannotdelete-title' => 'نبوئه بلگه $1 حذف بو',
+'badtitle' => 'موضو گن',
+'badtitletext' => 'عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.
+یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن',
+'viewsource' => 'سرچشمه نه بوينيت',
+'viewsource-title' => 'سرچشمه $1 بوينيت',
+'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
+'mycustomjsprotected' => 'شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید',
+'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
+'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
+'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
+'exception-nologin' => 'نبوئه وارد بوئيد',
+
+# Virus scanner
+'virus-scanfailed' => 'زل گشتن شکست حرد',
+'virus-unknownscanner' => 'ويروس كش ناآشگار',
+
+# Login and logout pages
+'welcomeuser' => 'خوش اومايت،$1!',
+'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|day|days}})',
+'userlogin-remembermypassword' => 'منه مئن سيستم وادار',
+'userlogin-signwithsecure' => 'د وصل بيئن امن استفاده كو',
+'yourdomainname' => 'پوشگیر شما:',
+'password-change-forbidden' => 'شما نتونید پاسوردیانه د ای ویکی آلشت بکید',
+'login' => 'اومائن',
+'nav-login-createaccount' => ' اومائن د سيستم/راس كردن حساو',
+'loginprompt' => 'شما وا کوکیانه سی اومائن د {{SITENAME}} کوکیانه فعال بکید.',
+'userlogin' => ' اومائن د سيستم/راس كردن حساو',
+'userloginnocreate' => 'اومائن',
+'logout' => 'رئتن',
+'userlogout' => 'د سيستم دراومائن',
+'notloggedin' => 'نبوئه وارد بوئيد',
+'userlogin-noaccount' => 'یه گل حساو ناریت؟',
+'userlogin-joinproject' => 'وصل بوييت {{SITENAME}}',
+'nologin' => 'حساو كاروری ناريت؟$1',
+'nologinlink' => 'يه گل حساو راست بكيد',
+'createaccount' => 'حساو راست بكيد',
+'gotaccount' => 'ایسنی حساو کاروری داریتو؟$1',
+'gotaccountlink' => 'اومائن',
+'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
+'userlogin-resetpassword-link' => 'هنی رمز وارد بكيد',
+'helplogin-url' => 'هومياری:د حالت اومائن د سيستم',
+'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
+'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
+'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
+'createacct-emailrequired' => 'نشونی ايميل',
+'createacct-emailoptional' => 'نشونی ايميل',
+'createacct-email-ph' => 'نوم نشون ايميلتونه وارد بكيت',
+'createacct-another-email-ph' => 'يه گل ايميل وارد بكيت',
+'createacct-realname' => 'نوم راستكی(مژبوری نيئ)',
+'createaccountreason' => 'دليل',
+'createacct-reason' => 'دليل',
+'createacct-reason-ph' => 'سی چی شما داريتو يه گل حساو هنی راس می كيد',
+'createacct-captcha' => 'وارسی امنيت دار بين',
+'createacct-imgcaptcha-ph' => 'متنی نه كه د وارو ميئنيت وارد بكيد',
+'createacct-submit' => 'حساو خوتونه راس بكيد',
+'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' => 'شما باید یه نوم کارور اختصاص بئیتو',
+'login-userblocked' => 'کارور قلف بیه.وامین اومائن اجازه نی ئن',
+'wrongpassword' => 'پاسورد غلط وارد بیه.
+هنی تلاش بکید',
+'wrongpasswordempty' => 'پاسوردی که دئیت حالیه.د نؤ تلاش بکیت',
+'passwordtooshort' => 'پاسورد با حداقل  {{PLURAL:$1|1 character|$1 characters}}          با',
+'password-name-match' => 'پاسوردتو با د نوم کاروریتو فرخ داشتوه',
+'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
+'resetpass' => 'پاسورد نه آلشت بكيت',
+'resetpass_header' => 'پاسورد حساوتونه آلشت بکید',
+'oldpassword' => 'پاسورد قدیمی:',
+'newpassword' => 'پاسورد تازه:',
+'retypenew' => 'رمز تازه نه دوواره بنیسید:',
+'resetpass_submit' => 'پاسور بنیت و وامین بیایت',
+'changepassword-success' => 'پاسورد شما وا موفقیت آلشت بی',
+'resetpass_forbidden' => 'پاسوردیا نتونن آلشت بوئن',
+'resetpass-submit-loggedin' => 'پاسورد نه آلشت بكيت',
+'resetpass-submit-cancel' => 'رد كردن',
+'resetpass-temp-password' => 'رمز موقت:',
+
+# Special:PasswordReset
+'passwordreset' => 'د نۈ وارد كردن رمز',
+'passwordreset-legend' => 'د نۈ وارد كردن رمز',
+'passwordreset-username' => 'نوم كاروری:',
+'passwordreset-domain' => 'پوشگیر',
+'passwordreset-capture' => 'ایمیل نتیجه نه بوینیتو؟',
+'passwordreset-email' => 'نشونی ايميل',
+'passwordreset-emailsent' => 'پاسورد هنی سی ایمیل کل بیه.',
+
+# Special:ChangeEmail
+'changeemail' => 'ایمیل تو نه آلشت بکید',
+'changeemail-header' => 'ایمیل حساوتونه آلشت بکید',
+'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
+'changeemail-newemail' => 'نشونی ایمیل تازه',
+'changeemail-none' => '(هيش كوم)',
+'changeemail-password' => 'شما {{SITENAME}} پاسورد:',
+'changeemail-submit' => 'آلشت کردن ایمیل',
+'changeemail-cancel' => 'رد كردن',
+
+# Edit page toolbar
+'bold_sample' => 'متن توپر بيه',
+'bold_tip' => 'متن توپر بيه',
+'italic_sample' => 'نوشته كج كوله',
+'italic_tip' => 'نوشته كج كوله',
+'link_sample' => 'عنوان لينك',
+'link_tip' => 'لینک مئن ون',
+'extlink_sample' => 'http://www.example.com نوم ديس ون',
+'extlink_tip' => 'هوم پیوند خارجی(د ویر داشتو)',
+'headline_sample' => 'سرخط نوشته',
+'headline_tip' => 'قدم 2 خط سر ون',
+'nowiki_sample' => 'د ایچه یه گل متن بی شلک وارد بکید',
+'nowiki_tip' => 'شلک ویکی نه ندید بگر',
+'image_tip' => 'فایل محاط بيه',
+'media_tip' => 'فایل هوم پیوند',
+'sig_tip' => 'امضا شما و برچسو وخت',
+'hr_tip' => 'خط افق ونه(سوا سوا دش استفاده کو)',
+
+# Edit pages
+'summary' => 'چكسته',
+'minoredit' => 'يه ويرايشت كؤچكيه',
+'watchthis' => 'ديئن ای بلگه',
+'savearticle' => 'بلگه ضبط بوئه',
+'preview' => 'پيش سيل',
+'showpreview' => 'پيش نمائش نشون بيئه',
+'showlivepreview' => 'پیش سیل زنه',
+'showdiff' => 'آلشتيانه نشون بيئه',
+'anoneditwarning' => 'زنهار شما وامین نیومایته.
+نشونی آی پی تو د ویرگار ویرایشت ای بلگه ضفط بوئه',
+'missingcommenttext' => 'لطفن د ایچه نظر بیئتو',
+'summary-preview' => 'چکسته پیش سیل:',
+'blockedtitle' => 'كارور قلف بيه',
+'blockednoreason' => 'هیژ دلیلی دئه نبیه',
+'whitelistedittext' => 'شما باید $1 سی ویرایشت بلگیا',
+'nosuchsectiontitle' => 'نبوئه بشخ پیدا بوئه',
+'loginreqtitle' => 'وامین اومائن لازمه',
+'loginreqlink' => 'اومائن',
+'accmailtitle' => 'پاسورد کل بی',
+'newarticle' => 'تازه',
+'newarticletext' => 'شما وادما هوم پیوندی هئیت که وجود ناره.
+سی راس کردن بلگه.شرو د نیسنن مئن جعوه هاری بکید(سیل[[{{MediaWiki:Helppage}}|]] سی دونسمنی بیشتر بکید).
+ار شما سی اشتوا کردن هایئن ایچه، دگمه وادما رئتن مرورگر تونه بپورنیت.',
+'noarticletext' => 'د تازه یا د ای بلگه متن نی.
+شما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}   د هنی پی جوری بوئه  logs]</span>   
+   [{{fullurl:{{FULLPAGENAME}}|action=edit}} یای ای بلگه نه ویرایشت بکیدpage]</span>.',
+'noarticletext-nopermission' => 'د تازه یا د ای بلگه متن نی.
+شما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}   د هنی پی جوری بوئه  logs]</span>      اما شما حق ناریتو ای بلگه نه راس بکیت',
+'updated' => '(تازه بيه)',
+'note' => "'''نيسنن:'''",
+'previewnote' => 'فقط ای پیش سیل د ویرتو با.
+آلشتیاتو هنی ذخیره نبیه.',
+'continue-editing' => 'رو د راساگه ویرایشت',
+'editing' => 'د حالت ويرايشت$1',
+'creating' => 'راس كردن $1',
+'editingsection' => 'د حال ویرایشت$1(بشخ)',
+'editingcomment' => 'د حال ویرایشت$1(بشخ تازه)',
+'yourtext' => 'متن شما',
+'yourdiff' => 'فرخيا',
+'templatesused' => '{{جمی:$1|قالو|قالویا}}د ای بلگه استفاده بیه:',
+'template-protected' => '(حمايت بيه)',
+'template-semiprotected' => '(نيم-حفاظت بيه)',
+'hiddencategories' => 'ای بلگه يه اندوم د{{PLURAL:$1|1 hidden category|$1 hidden categories}}: هئ',
+'permissionserrors' => 'خطا اجازه دئین',
+'permissionserrorstext-withaction' => 'شما سی $2 اجازه ناریت
+سی دمال کردن{{PLURAL:$1|reason|reasons}}:',
+'recreate-moveddeleted-warn' => "'''زنهار شما بلگه ای که وادما پاک بیه هنی راس کردیته'''
+شما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.
+پاک بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
+'moveddeleted-notice' => 'ای بلگه پاک بیه.
+پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
+'edit-conflict' => 'مخالفت نه ویرایشت بکید',
+'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
+'defaultmessagetext' => 'متن پیغوم پیش فرض',
+
+# Content models
+'content-model-wikitext' => 'ويكی متن',
+'content-model-text' => 'متن ساده',
+'content-model-javascript' => 'جاوا اسكريپت',
+'content-model-css' => 'سی اس اس',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => 'زنئار قالو شومل انازه ای یه که فره گپه.پاره ای د قالویا نه د بر نگره',
+'post-expand-template-inclusion-category' => 'بلگیا شومل قالوی ین که انازش د حد اومائه وه در',
+'post-expand-template-argument-warning' => 'زنهار ای بلگه شومل حداقل یه قالو سی چک چنه یه که انازه فره گپه.
+گپسنیا پاک بینه.',
+'post-expand-template-argument-category' => 'بلگه شومل قالو چک چنیا د بین رئته',
+
+# History pages
+'viewpagelogs' => 'سی ای بلگه بوینتو.',
+'currentrev' => 'آخرین دوواره دیئن',
+'currentrev-asof' => 'آخرين دووار ديئن چی $1',
+'revisionasof' => 'دوواره ديئن $1',
+'revision-info' => 'دوواره سیل بیه چی $1 وا $2',
+'previousrevision' => 'اصلاح دمايی',
+'nextrevision' => 'تازه ترن دوبار دیئن',
+'currentrevisionlink' => 'آخرین دوواره دیئن',
+'cur' => 'تازه باو',
+'next' => 'نيایی',
+'last' => 'دمايی',
+'page_first' => 'اولی',
+'page_last' => 'آخر',
+'history-fieldset-title' => 'ویرگار مرور ون',
+'history-show-deleted' => 'فقط پاك بيه',
+'histfirst' => 'قديمي تري',
+'histlast' => 'تازه تري',
+'historyempty' => '(حالی)',
+
+# Revision feed
+'history-feed-title' => 'ویرگار دوواره دیئن',
+'history-feed-item-nocomment' => '$1 د
+$2',
+
+# Revision deletion
+'rev-delundel' => 'آلشت وضئيت ديئن',
+'rev-showdeleted' => 'نشو دائن',
+'revdelete-show-file-submit' => 'هری',
+'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' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+
+# History merging
+'mergehistory-from' => 'بلگه سرچشمه:',
+'mergehistory-into' => 'بلگه مقصد:',
+'mergehistory-reason' => 'دليل:',
+
+# Merge log
+'revertmerge' => 'بی لوئه',
+
+# Diffs
+'history-title' => 'دوواره دیئن ویرگار$1',
+'lineno' => 'خط $1:',
+'compareselectedversions' => 'دوبار دیئنیایی که انتخاو بینه مقایسه بکیتو',
+'editundo' => 'رد كردن',
+'diff-empty' => '(بی فرق)',
+'diff-multi' => '({{جمی:$1|یه گل دوواره دیئن مینجایی|$1مینجا دوواره دیئنیا}} وا {{جمی:$2|یه کارور|$2 کاروریا}} نشو دئه نی)',
+
+# Search results
+'searchresults' => 'نتيجه يا پی جوری',
+'searchresults-title' => 'نتيجه يا پی جوری سی "$1"',
+'titlematches' => 'عنوان بلگه مطاوقت داره',
+'prevn' => 'وادما {{PLURAL:$1|$1}}',
+'nextn' => 'نيايی {{PLURAL:$1|$1}}',
+'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
+'nextn-title' => 'نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
+'shown-title' => 'نشون دائن $1 {{PLURAL:$1|نتيجه|نتيجه}} سی همه بلگه',
+'viewprevnext' => 'ديئن ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''ایچه بلگه ای هئ وه نوم\"[[:\$1]]\" که ها د ای ویکی'''",
+'searchmenu-new' => "'''ای بلگه نه راس كو \"[[:\$1]]\" د ای  ويكي!'''",
+'searchprofile-articles' => 'بلگيا محتوا',
+'searchprofile-project' => 'بلگيا هومياری پروجه',
+'searchprofile-images' => 'رسانيا جمی',
+'searchprofile-everything' => 'همه چی',
+'searchprofile-advanced' => 'پيشرفته',
+'searchprofile-articles-tooltip' => 'بگرد مئن $1',
+'searchprofile-project-tooltip' => 'بگرد مئن $1',
+'searchprofile-images-tooltip' => 'بگرد سی فايليا',
+'searchprofile-everything-tooltip' => 'همه محتوا نه پی جوری كو (شاملا بلگيا چك چنه)',
+'searchprofile-advanced-tooltip' => 'نوم جايا نوم ديار بگرد',
+'search-result-size' => '$1 ({{PLURAL:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
+'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 فایل|$3 فایلیا}})',
+'search-redirect' => '(ورگشتن $1)',
+'search-section' => '(بشق $1)',
+'search-suggest' => 'منظورت يه بی:$1',
+'search-interwiki-more' => '(بیشتر)',
+'search-relatedarticle' => 'مرتوط',
+'searchrelated' => 'مرتوط',
+'searchall' => 'همه',
+'showingresultsheader' => "{{PLURAL:$5|نتيجه '''$1''' د'''$3'''|نتيجه يا '''$1 - $2''' د'''$3'''}} سيli'''$4'''",
+'search-nonefound' => 'هیژ نتیجه یی سی پی جست تو مطاوقت نکرده',
+'powersearch-legend' => 'پی جوری پیشبرده',
+'powersearch-togglelabel' => 'چك كردن:',
+'powersearch-toggleall' => 'همه',
+'powersearch-togglenone' => 'هيش كوم',
+'search-external' => 'پی جوری د در',
+
+# Preferences page
+'preferences' => 'خصوصيات هنی',
+'mypreferences' => 'خصوصيات هنی',
+'prefs-edits' => 'شماره ویرایشتا:',
+'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' => 'وخت راساگه',
+'servertime' => 'وخت سرور:',
+'timezoneregion-africa' => 'افرقا',
+'timezoneregion-america' => 'امركا',
+'timezoneregion-antarctica' => 'قطو هار ونه',
+'timezoneregion-arctic' => 'قطو شمال',
+'timezoneregion-asia' => 'آسيا',
+'timezoneregion-atlantic' => 'جهون آو آتلانتیک',
+'timezoneregion-australia' => 'استراليا',
+'timezoneregion-europe' => 'اوروپا',
+'timezoneregion-indian' => 'جهوناو هند',
+'timezoneregion-pacific' => 'جهوناو آروم',
+'prefs-searchoptions' => 'پی جوری',
+'prefs-namespaces' => 'نوم جایا',
+'default' => 'پيش فرض',
+'prefs-files' => 'فايلا',
+'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' => 'دو بیشتر آلشتیا تازباو نه د ویکی که ها د هوال حون پیگری کو.',
+'recentchanges-label-newpage' => 'ای ويرايشت يه بلگه تازه راس كرده',
+'recentchanges-label-minor' => 'يه ويرايشت كؤچكيه',
+'recentchanges-label-bot' => 'ای ويرايشت نه يه بوت انجوم ديئه',
+'recentchanges-label-unpatrolled' => 'ای ويرايشت هنی تيه واداشت نبيه',
+'rcnote' => "د هار{{جمی:$1|هئ'''1''' آلشت|آخری هئ ن '''$1'''آلشتیا}}د آخر{{جمی:$2|رو|'''$2''' روزیا}}, چی $5, $4.",
+'rcnotefrom' => 'د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)',
+'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
+'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
+'rcshowhidebots' => '$1 رواتيا یا بوتيا',
+'rcshowhideliu' => '$1 کارورياداخل بيه',
+'rcshowhideanons' => '$1 کاروريا ناشناس',
+'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
+'rcshowhidemine' => 'ويرايشتيا مه$1',
+'rclinks' => 'آخرین آلشتیا $1 نشو بیه د اخرین روزیا $2',
+'diff' => 'فرخ',
+'hist' => 'ويرگار',
+'hide' => 'قام كردن',
+'show' => 'نشون دائن',
+'minoreditletter' => 'م',
+'newpageletter' => 'ن',
+'boteditletter' => 'ب',
+'rc_categories_any' => 'هرکوم',
+'rc-enhanced-expand' => 'جزيات نشون بيئه',
+'rc-enhanced-hide' => 'جزياته قام كو',
+
+# Recent changes linked
+'recentchangeslinked' => 'تغيريا مرتبط',
+'recentchangeslinked-toolbox' => 'تغيريا مرتبط',
+'recentchangeslinked-title' => 'آلشتيا مرتوط وا $1',
+'recentchangeslinked-summary' => 'ای نوم گه تازه د بلگیایی که وا بلگیا ویجه هوم پیوند بینه آلشت بیه(یا سی اندومیا دسه بنی بیه)
+بلگیا یی که هان [[Special:Watchlist|your watchlist]]و گپ بینه',
+'recentchangeslinked-page' => 'نوم بلگه:',
+'recentchangeslinked-to' => 'آلشتیایی که د بلگه یا هوم پیوند بینه وه جا بلگه دئیه بیه نشو بیه',
+
+# 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' => 'ويرگار/وخت',
+'filehist-thumb' => 'عسگ كؤچك بيه',
+'filehist-thumbtext' => 'كؤچك كردن سی  نسقه چی $1',
+'filehist-user' => 'كارور',
+'filehist-dimensions' => 'بعديا',
+'filehist-filesize' => 'انازه فایل',
+'filehist-comment' => 'نظر',
+'imagelinks' => 'استفاده د فايل',
+'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
+'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
+'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|كلی|بايت|بايت}}',
+'nmembers' => '$1 {{PLURAL:$1|اندوم|اندوميا}}',
+'prefixindex' => 'همه بلگيا وا پيشون',
+'usercreated' => '{{جنسیت:$3|راس بیه}}د $1 at $2',
+'newpages' => 'بلگيا نو',
+'move' => 'جاوه جا بوئيت',
+'pager-newer-n' => '{{جمی:$1|وانها تر 1وانها تر $1}}',
+'pager-older-n' => '{{جمی:$1|گپسالتر 1|گپسالتر $1}}',
+
+# Book sources
+'booksources' => 'سرچشمه يل كتاو',
+'booksources-search-legend' => 'پی جوری سی سرچشمه یا کتاو',
+'booksources-go' => 'رو',
+
+# Special:AllPages
+'allpages' => 'همه بلگيا',
+'alphaindexline' => '$1 د
+$2',
+'allarticles' => 'همه بلگيا',
+'allpagessubmit' => 'رو',
+
+# Special:Categories
+'categories' => 'دسه يا',
+
+# Special:LinkSearch
+'linksearch-line' => '$1 داره د $2 هوم پیوند بوئه',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(نوم گه اندومیا)',
+
+# Email user
+'emailuser' => 'ای كارور نه ايميل كو',
+
+# Watchlist
+'watchlist' => 'سیل برگ',
+'mywatchlist' => 'سیل برگ',
+'watchlistfor2' => 'سي $1 $2',
+'watch' => 'سيل كردن',
+'unwatch' => 'ديه نبيه',
+'watchlist-details' => '{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .',
+'wlshowlast' => 'آخرین$1 ساعتیا $2و روزیا $3 نشو بیئه',
+'watchlist-options' => 'گزینیا سیل برگ',
+
+# Delete
+'actioncomplete' => 'عملكرد كامل بيه',
+'actionfailed' => 'عملكرد شكست حرده',
+'dellogpage' => 'لاگ پاك كردن',
+
+# Rollback
+'rollbacklink' => 'ورگشتن',
+
+# Protect
+'protectlogpage' => 'حفاظت کردن',
+'protectedarticle' => 'حفاظت بيه [[$1]]',
+
+# Undelete
+'undeletelink' => 'بوين/دوواره آماده با',
+'undeleteviewlink' => 'ديئن',
+
+# Namespace form on various pages
+'namespace' => 'نوم جا:',
+'invert' => 'انتخاو برعسك بوئه',
+'blanknamespace' => 'اصلی',
+
+# Contributions
+'contributions' => '{{جنس:$1|کارور}} هومیاریا',
+'contributions-title' => 'هومياري كارور سي $1',
+'mycontris' => 'هومياری',
+'contribsub2' => 'سي {{جنسيت:$3|$1}} ($2)',
+'uctop' => '(تازه باو)',
+'month' => 'د ما(یا زیتر)',
+'year' => 'د سال',
+
+'sp-contributions-newbies' => 'فقط هومیاری یایی که د حساو تازه بیه نشون بئه',
+'sp-contributions-blocklog' => 'قلف',
+'sp-contributions-uploads' => 'سواركرديا',
+'sp-contributions-talk' => 'چك چنه',
+'sp-contributions-search' => 'سی هومیاریا پی جور با',
+'sp-contributions-username' => 'نوم نشون آی پی يا نوم كاروری:',
+'sp-contributions-toponly' => 'فقط ویرایشتیایی که جزئه آخرین دوواره دیئن هئین نشو بیه',
+'sp-contributions-submit' => 'پی جوری',
+
+# What links here
+'whatlinkshere' => 'كؤم ديس ونيا هان ايچه',
+'whatlinkshere-title' => 'بلگه ای که د $1 هوم پیوند بیه',
+'whatlinkshere-page' => 'بلگه',
+'linkshere' => "بلگیا نهایی د '''[[:$1]]''' هوم پیوند بیه",
+'nolinkshere' => "هیژ بگله ای د  '''[[:$1]]''' هوم پیوند نبیه",
+'isredirect' => 'بلگه دوباره ورگشتن',
+'istemplate' => 'نشونی دئن',
+'isimage' => 'فایل هوم پیوند',
+'whatlinkshere-prev' => '{{جمی:$1|دمایی|دمایی $1}}',
+'whatlinkshere-next' => '{{جمی:$1|نهایی|نهایی $1}}',
+'whatlinkshere-links' => 'هوم پیوندیا',
+'whatlinkshere-hideredirs' => '$1 دوواره د نشونی ورگشتن',
+'whatlinkshere-hidetrans' => '$ا چن نتیجه ای',
+'whatlinkshere-hidelinks' => 'هوم پیوندیا $1',
+'whatlinkshere-hideimages' => 'فایل هوم پیوندیا $1',
+'whatlinkshere-filters' => 'فيلتريا',
+
+# Block/unblock
+'ipboptions' => '2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,حد ناره:حد ناره',
+'ipblocklist' => 'كاروريا منع بيه',
+'blocklink' => 'بسته بوئه',
+'unblocklink' => 'بی قطی',
+'change-blocklink' => 'اجازه نديئن سی  آلشت',
+'contribslink' => 'هومكاری',
+'blocklogpage' => 'قلف',
+'blocklogentry' => ' [[$1]] وا یه گل وخت تموم بیئن $2 و $3  قلف بیه',
+'block-log-flags-nocreate' => 'حساو راس کردن عاجز بیه.',
+
+# Move page
+'movelogpage' => 'جاوه جا کردن',
+'revertmove' => 'لرستن',
+
+# Export
+'export' => 'وه صحرا ديئن بلگيا',
+
+# Namespace 8 related
+'allmessagesname' => 'نوم',
+'allmessagesdefault' => 'سفارشت متنی پيش فرض',
+
+# Thumbnails
+'thumbnail-more' => 'گپ كردن',
+'thumbnail_error' => 'خطا د راس بیئن بن کلئکی:$1',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'بلگه كارورتو',
+'tooltip-pt-mytalk' => 'بلگه قسه كردن شما',
+'tooltip-pt-preferences' => 'اولويتيا شما',
+'tooltip-pt-watchlist' => 'نوم نوشت د بلگه يايی كه شما آلشتاشونه پيگئری  ميكيد',
+'tooltip-pt-mycontris' => 'يه گل د هومياريا شما',
+'tooltip-pt-login' => 'توصيه بو كه وارد بوئين، اما مجبوری ني',
+'tooltip-pt-logout' => 'د سيستم دراومائن',
+'tooltip-ca-talk' => 'قسه دباره محتوا بلگه',
+'tooltip-ca-edit' => 'شما تونيد ای  بلگه نه ويرايشت بكيد. لطف بكيد د دگمه پيش ديئن پيش د ذخيره كردن استفاده بكيد',
+'tooltip-ca-addsection' => 'بشخ تازه نه شرو كو',
+'tooltip-ca-viewsource' => 'ای بلگه حفاظت بيه.
+شما تونيت سرچمه ش بئوينيت',
+'tooltip-ca-history' => 'دوواره ديئن ای بلگه',
+'tooltip-ca-protect' => 'ای بلگه نه حفاظت بكيد',
+'tooltip-ca-delete' => 'ای بلگه نه حذف بكيد',
+'tooltip-ca-move' => 'ای بگله نه جا وه جا كو',
+'tooltip-ca-watch' => 'اضاف کردن ای بلگه وه نوم نوشت پیگئریاتو',
+'tooltip-ca-unwatch' => 'ورداشتن ای بلگه وه نوم نوشت پیگئریاتو',
+'tooltip-search' => 'پی جوری {{SITENAME}}',
+'tooltip-search-go' => 'رؤ د بلگه ای که یه نوم راستکی ها مینش الوت ار دش بوئه',
+'tooltip-search-fulltext' => 'بلگيانه سی چنو متنی بگرد',
+'tooltip-p-logo' => 'سرآسونه نه بونيت',
+'tooltip-n-mainpage' => 'سرآسونه نه بونيت',
+'tooltip-n-mainpage-description' => 'ديئن سرآسونه',
+'tooltip-n-portal' => 'دباره پروجه،ايسا ترين(تونيت) چی بكيد، كجه چيانه بجورين',
+'tooltip-n-currentevents' => 'ساوند دونسمنديايی كه هان د پيشومدل تازه باو پيدا كو',
+'tooltip-n-recentchanges' => 'يه نوم جاوند سی تغيرا تازه مئن ويكی',
+'tooltip-n-randompage' => 'سوار كرد بلگه بختكی',
+'tooltip-n-help' => 'جاگه سی فهمسن',
+'tooltip-t-whatlinkshere' => 'سيائه تمؤم بلگيایی كه ايچه چسب ون دارن',
+'tooltip-t-recentchangeslinked' => 'تغيريا تازه باو مئن بلگيايي كه د ای بلگه چسب وند بيئنه',
+'tooltip-feed-atom' => 'تغذيه كؤچك سی ای بلگه',
+'tooltip-t-contributions' => 'یه نوم گه د هومیاریا ای کارور',
+'tooltip-t-emailuser' => 'سی ای كارور ايميل كل كو',
+'tooltip-t-upload' => 'بلم گير كردن فايلا',
+'tooltip-t-specialpages' => 'سيائه تمؤم بلگيا خاص',
+'tooltip-t-print' => 'نسقه چاپ بيئنی سی ای بلگه',
+'tooltip-t-permalink' => 'چسب ون هميشئی د دوواره بينی ای بلگه',
+'tooltip-ca-nstab-main' => 'ديئن محتوا بلگه',
+'tooltip-ca-nstab-user' => 'ديئن بلگه كارور',
+'tooltip-ca-nstab-special' => 'اي بلگه ويجه يه، شما نتونيت خود اي بلگه نه ويرايشت بكيد',
+'tooltip-ca-nstab-project' => 'ديئن بلگه پروجه',
+'tooltip-ca-nstab-image' => 'ديئن بلگه فايل',
+'tooltip-ca-nstab-template' => 'ديئن قالو',
+'tooltip-ca-nstab-category' => 'ديئن بلگه دسه بنی',
+'tooltip-minoredit' => 'یه نه د عنوان حیرده ویرایشت ثوت کو',
+'tooltip-save' => 'آلشتياتونه ذخيره بكيد',
+'tooltip-preview' => 'پیش سیل آلشتیاتو،لطفن پیش د ذخیره دش استفاده بکیتو',
+'tooltip-diff' => 'آلشتیا نه که شما د ای متن راس کردیته نشو بیئه',
+'tooltip-compareselectedversions' => 'فرخیا مینجا دو تا د دو بار دیئن ای بلگه نه بوینیت',
+'tooltip-watch' => 'ای بلگه نه د سیل برگتو اضاف بکید',
+'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول  سی ای بلگه  که سی  يه كه هومياری  نيايی اصلاح بيه وا يه پورنسن',
+'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
+'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
+
+# Browsing diffs
+'previousdiff' => '← ويرايشت كۈهنه تر',
+'nextdiff' => 'ويرايشت تازه تر',
+
+# Media information
+'file-info-size' => '$1 × $2 پیکسل, انازه فایل: $3, MIME نوع: $4',
+'file-nohires' => 'عسك ون بالاتري دش ني',
+'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
+'show-big-image' => 'تموم رخ ون',
+
+# Bad image list
+'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
+
+فقط سرخط يایی که وا * شرو بوئن د وير گرته بوئن. اولی چسب ون مئن هر سرخط، باید چسب ونی وه یک عسگ گن با.
+چسب ونيا نيایی د همو سرخط، وه عنوان چيا استثنادار د وير گرته بوئن',
+
+# Metadata
+'metadata' => 'داديا  فره گپ',
+'metadata-help' => 'ای فایل شومل دونسمنیا هنی یه.شایت د دیربین رقم ون یا اسکنری که سی راس کردنشو استفاده بیه،وه ایچه اضاف بیه',
+'metadata-fields' => 'رشته یا گپ دونسمنیا که د ای پیغوم نوم ون بینه شومل بلگه عسگ ن که وختی که جدول گپ دونسمنیا وا بوئه نشون دئیه بوئن.
+چی یا هنی سی یه که پیش فرضن قام بوئن.
+*راست کو
+*مدل
+*دم وخت اصل
+*وخت آشگار
+*اف ان شماره
+*ایزو نرخ من سرعت
+*فوکالنس
+*هنرمن
+*کپی رایت
+*حالت جی پی اس 
+*جی پی اس گپ حالت
+*جی پی اس همه حالت',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'همه شو',
+'namespacesall' => 'همه شو',
+'monthsall' => 'همه',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'آلشتیا مرتوط نه بوینیت',
+'watchlisttools-edit' => 'سیل برگ بوینیتو و ویرایشت بکید',
+'watchlisttools-raw' => 'سیل برگ نه ردیفی ویرایشت کو',
+
+# Core parser functions
+'duplicate-defaultsort' => 'زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.',
+
+# Special:SpecialPages
+'specialpages' => 'بلگيا ويجه',
+
+# External image whitelist
+'external_image_whitelist' => 'یه خط نه ول بکید چی وه<pre>',
+
+# Special:Tags
+'tag-filter' => 'فيلتر [[Special:Tags|Tag]]:',
+
+);
index 1b75b37..2dcff3c 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' ),
@@ -342,7 +340,6 @@ $messages = array(
 'qbedit' => 'Taisyti',
 'qbpageoptions' => 'Šis puslapis',
 'qbmyoptions' => 'Mano puslapiai',
-'qbspecialpages' => 'Specialieji puslapiai',
 'faq' => 'DUK',
 'faqpage' => 'Project:DUK',
 
@@ -458,8 +455,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ų}}',
@@ -555,9 +550,6 @@ Nebuvo duotas joks paaiškinimas.',
 'perfcached' => 'Rodoma išsaugota duomenų kopija, todėl duomenys gali būti ne patys naujausi. Maksimaliai $1 {{PLURAL:$1|rezultatas|rezultatai|rezultatų}} yra saugoma.',
 'perfcachedts' => 'Rodoma išsaugota duomenų kopija, kuri buvo atnaujinta $2 $3. Maksimaliai $4 {{PLURAL:$4|rezultatas|rezultatai|rezultatų}} yra saugoma.',
 'querypage-no-updates' => 'Atnaujinimai šiam puslapiui dabar yra išjungti. Duomenys čia dabar nebus atnaujinti.',
-'wrong_wfQuery_params' => 'Neteisingi parametrai į funkciją wfQuery()<br />
-Funkcija: $1<br />
-Užklausa: $2',
 'viewsource' => 'Žiūrėti kodą',
 'viewsource-title' => 'Peržiūrėti šaltinį $1',
 'actionthrottled' => 'Veiksmas apribotas',
@@ -1202,12 +1194,8 @@ Prašome patikrinti sąrašus.',
 # Search results
 'searchresults' => 'Paieškos rezultatai',
 'searchresults-title' => 'Paieškos rezultatai „$1“',
-'searchresulttext' => 'Daugiau informacijos apie paiešką projekte {{SITENAME}} rasite [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Jūs ieškote '''[[:$1]]''' ([[Special:Prefixindex/$1|visi puslapiai, prasidedantys „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|visi puslapiai, rodantys į „$1“]])",
-'searchsubtitleinvalid' => "Ieškoma '''$1'''",
 'toomanymatches' => 'Perdaug atitikmenų buvo grąžinta. Prašome pabandyti kitokią užklausą',
 'titlematches' => 'Puslapių pavadinimų atitikmenys',
-'notitlematches' => 'Jokių pavadinimo atitikmenų',
 'textmatches' => 'Puslapio turinio atitikmenys',
 'notextmatches' => 'Jokių puslapių teksto atitikmenų',
 'prevn' => '{{PLURAL:$1|atgal|ankstesnius $1}}',
@@ -1216,10 +1204,8 @@ Prašome patikrinti sąrašus.',
 'nextn-title' => '{{PLURAL:$1|Kitas $1 rezultatas|Kiti $1 rezultatai|Kiti $1 rezultatų}}',
 'shown-title' => 'Rodyti $1 {{PLURAL:$1|rezultatą|rezultatus|rezultatus}} puslapyje',
 'viewprevnext' => 'Žiūrėti ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Paieškos nustatymai',
 'searchmenu-exists' => "'''Puslapis pavadinimu „[[$1]]“ šioje wiki'''",
 'searchmenu-new' => "'''Sukurti puslapį „[[:$1]]“ šioje wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ieškoti puslapių su šiuo priešdėliu]]',
 'searchprofile-articles' => 'Turinio puslapiai',
 'searchprofile-project' => 'Pagalbos ir projekto puslapiai',
 'searchprofile-images' => 'Daugialypės terpės failai',
@@ -1247,13 +1233,10 @@ Prašome patikrinti sąrašus.',
 'showingresults' => "Žemiau rodoma iki '''$1''' {{PLURAL:$1|rezultato|rezultatų|rezultatų}} pradedant #'''$2'''.",
 'showingresultsnum' => "Žemiau rodoma '''$3''' {{PLURAL:$3|rezultato|rezultatų|rezultatų}}rezultatų pradedant #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultatas '''$1''' iš '''$3'''|Rezultatai '''$1 - $2''' iš '''$3'''}} pagal užklausą '''$4'''",
-'nonefound' => "'''Pastaba''': Pagal nutylėjimą ieškoma tik kai kuriose vardų srityse. Pamėginkite prirašyti priešdėlį ''all:'', jei norite ieškoti viso turinio (įskaitant aptarimo puslapius, šablonus ir t. t.), arba naudokite norimą vardų sritį kaip priešdėlį.",
 'search-nonefound' => 'Nėra rezultatų, atitinkančių užklausą.',
-'powersearch' => 'Išplėstinė paieška',
 'powersearch-legend' => 'Išplėstinė paieška',
 'powersearch-ns' => 'Ieškoti vardų srityse:',
 'powersearch-redir' => 'Įtraukti peradresavimus',
-'powersearch-field' => 'Ieškoti',
 'powersearch-togglelabel' => 'Pažymėti:',
 'powersearch-toggleall' => 'Viską',
 'powersearch-togglenone' => 'Nieko',
@@ -1264,8 +1247,6 @@ Prašome patikrinti sąrašus.',
 'preferences' => 'Nustatymai',
 'mypreferences' => 'Nustatymai',
 'prefs-edits' => 'Keitimų skaičius:',
-'prefsnologin' => 'Neprisijungęs',
-'prefsnologintext' => 'Jums reikia būti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisijungusiam]</span>, kad galėtumėte keisti savo nustatymus.',
 'changepassword' => 'Pakeisti slaptažodį',
 'prefs-skin' => 'Išvaizda',
 'skin-preview' => 'Peržiūra',
@@ -1289,7 +1270,6 @@ Prašome patikrinti sąrašus.',
 'prefs-email' => 'El. pašto nustatymai',
 'prefs-rendering' => 'Išvaizda',
 'saveprefs' => 'Išsaugoti',
-'resetprefs' => 'Išvalyti neišsaugotus pakeitimus',
 'restoreprefs' => 'Grąžinti visus numatytuosius nustatymus',
 'prefs-editing' => 'Redagavimas',
 'rows' => 'Eilutės:',
@@ -1307,7 +1287,6 @@ Prašome patikrinti sąrašus.',
 'localtime' => 'Vietinis laikas:',
 'timezoneuseserverdefault' => 'Naudoti wiki pradinį ($1)',
 'timezoneuseoffset' => 'Kita (patikslinti skirtumą)',
-'timezoneoffset' => 'Skirtumas¹:',
 'servertime' => 'Serverio laikas:',
 'guesstimezone' => 'Paimti iš naršyklės',
 'timezoneregion-africa' => 'Afrika',
@@ -1552,6 +1531,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',
@@ -2009,10 +1989,8 @@ Kiekvienoje eilutėje yra nuorodos į pirmąjį ir antrąjį peradresavimą, tai
 'protectedpages' => 'Užrakinti puslapiai',
 'protectedpages-indef' => 'Tik neapibrėžtos apsaugos',
 'protectedpages-cascade' => 'Tik pakopinė apsauga',
-'protectedpagestext' => 'Šie puslapiai yra apsaugoti nuo perkėlimo ar redagavimo',
 'protectedpagesempty' => 'Šiuo metu nėra apsaugotas joks failas su šiais parametrais.',
 'protectedtitles' => 'Apsaugoti pavadinimai',
-'protectedtitlestext' => 'Šie pavadinimai yra apsaugoti nuo sukūrimo',
 'protectedtitlesempty' => 'Šiuo metu nėra jokių pavadinimų apsaugotų šiais parametrais.',
 'listusers' => 'Naudotojų sąrašas',
 'listusers-editsonly' => 'Rodyti tik keitimus atlikusius naudotojus',
@@ -3520,10 +3498,6 @@ Visos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. pusl
 'exif-urgency-high' => 'Aukštas ( $1 )',
 'exif-urgency-other' => 'Vartotojo nustatyta pirmenybė ($1)',
 
-# External editor support
-'edit-externally' => 'Atverti išoriniame redaktoriuje',
-'edit-externally-help' => '(Norėdami gauti daugiau informacijos, žiūrėkite [https://www.mediawiki.org/wiki/Manual:External_editors diegimo instrukcijas])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'visus',
 'namespacesall' => 'visos',
@@ -3749,8 +3723,7 @@ Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public Licens
 
 # Special:SpecialPages
 'specialpages' => 'Specialieji puslapiai',
-'specialpages-note' => '----
- * įprastą specialius puslapius.
+'specialpages-note' => ' * įprastą specialius puslapius.
  * <span class="mw-specialpagerestricted">tik specialius puslapius.</span>
  * <span class="mw-specialpagecached">Talpyklinių specialius puslapius (gali būti pasenusius).</span>',
 'specialpages-group-maintenance' => 'Sistemos palaikymo pranešimai',
@@ -3942,4 +3915,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..86ffbbe 100644 (file)
@@ -120,7 +120,6 @@ $messages = array(
 'qbedit' => 'Pataiseit',
 'qbpageoptions' => 'Ita puslopa',
 'qbmyoptions' => 'Munys puslopys',
-'qbspecialpages' => 'Specialuos puslopys',
 'faq' => 'BUV',
 'faqpage' => 'Project:BUV',
 
@@ -205,8 +204,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',
@@ -374,10 +371,6 @@ n = nasvareigs lobuojums.',
 # Search results
 'searchresults' => 'Mekliešonys rezultati',
 'searchresults-title' => 'Mekliešonys rezultati "$1"',
-'searchresulttext' => 'Lai dabuotu vaira informacejis par mekliešuonu {{grammar:akuzativs|{{SITENAME}}}}, vērtīs [[{{MediaWiki:Helppage}}|{{grammar:genitivs|{{SITENAME}}}} meklēšana]].',
-'searchsubtitle' => 'Pīprasejums: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|vysys lopys, kas suoknās ar "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vysys lopys, kuramuos ir saite iz "$1"]])',
-'searchsubtitleinvalid' => 'Pīprasejums: $1',
-'notitlematches' => 'Nav rezuļtata meklejūt lopys viersrokstā',
 'notextmatches' => 'Nav rezuļtatu meklejūt lopys tekstā',
 'prevn' => 'īprīškejuos {{PLURAL:$1|$1}}',
 'nextn' => 'nuokamuos {{PLURAL:$1|$1}}',
@@ -391,12 +384,9 @@ n = nasvareigs lobuojums.',
 'search-interwiki-default' => 'Rezuļtati nu $1',
 'search-interwiki-more' => '(vaira)',
 'searchall' => 'vysi',
-'nonefound' => "'''Pīzeime:''' bīži vin mekliešona ir naveiksmeiga, meklejūt plaši izplateitus vuordus, pīvadumam, \"kai\" voi \"ir\", deļ tam ka tī nateik īkļauti mekliešonys datu bazā, voi ari meklejūt vairuok par vīnu vuordu (deļ tam ka rezuļtatūs pasaruodeis tikai lopys, kuramuos ir visi meklietī vuordi). Vēļ, piec nūklusiejuma, puormeklej tikai dažys ''namespaces''. Lai meklētu vysuos, mekliešonys pīprasejumam prīškā juolīkn ''all:'', voi ari analogā veidā juonūruoda puormekliejamuo ''namespace''.",
-'powersearch' => 'Smolkuo mekliešona',
 'powersearch-legend' => 'Smolkuo mekliešona',
 'powersearch-ns' => 'Meklēt itamuos lopu grupuos:',
 'powersearch-redir' => 'Ruodeit puoradresacejis',
-'powersearch-field' => 'Meklēt',
 'powersearch-toggleall' => 'Vysi',
 'powersearch-togglenone' => 'Nikas',
 
@@ -863,10 +853,6 @@ Puorejī lauki, piec nūklusiejuma, byus nūglobuoti.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Izmaineit itū failu ar uoreju programu',
-'edit-externally-help' => '(Verīs [https://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'vysys',
 'namespacesall' => 'vysys',
index a330310..c63757d 100644 (file)
@@ -156,7 +156,6 @@ $messages = array(
 'qbedit' => 'Siamṭhatna',
 'qbpageoptions' => 'He phêk hi',
 'qbmyoptions' => 'Ka phêkte',
-'qbspecialpages' => 'Phêk vohbîkte',
 'faq' => 'Zawhzin',
 'faqpage' => 'Project: Zawhzin',
 
@@ -272,8 +271,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}}',
@@ -361,9 +358,6 @@ Tu emawin a nuaibo tawh a ni ang.',
 Phêk hminga hman theih loh hawrawp pahnih-khat a awm a ni mai thei bawk.',
 'querypage-no-updates' => 'He phêk tihdanglamna hi khàr hrih a ni.
 Heta châk (hmanrua) reng reng thlâk thar a ni hrih mai lo vang.',
-'wrong_wfQuery_params' => 'wfQuery()<br />-ah châkkhai dik lo a awm.
-Hnathawh: $1<br />
-Thil zawn: $2',
 'viewsource' => 'A hnar enna',
 'viewsource-title' => '$1 hnar en rawh',
 'actionthrottled' => 'Thiltih upbeh a ni.',
@@ -723,10 +717,8 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'nextn-title' => 'Zawnchhuah dawt leh $1 {{PLURAL:$1||}}',
 'shown-title' => 'Phek khatah zawnchhuah $1 {{PLURAL:$1||}} zel tilang rawh',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) en rawh',
-'searchmenu-legend' => 'Zawn duhthlanna',
 'searchmenu-exists' => "'''He wiki-ah hian \"[[:\$1]]\" tia koh phêk a awm.'''",
 'searchmenu-new' => "'''[[:$1]] phek hi he wiki-ah hian siam rawh le!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|He thuhmabet nei phêkte hi zawng rawh]]',
 'searchprofile-articles' => 'A chhunga thu awm',
 'searchprofile-project' => 'Ţanpuina leh hna-hmachhawp phekte',
 'searchprofile-images' => 'Maltimedia',
@@ -753,11 +745,9 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'searchall' => 'a vaiin',
 'showingresultsheader' => "'''$4'''  tana {{PLURAL:$5|chhuak   '''$3'''  zinga  '''$1'''|chhuak  '''$3'''  zinga   '''$1 - $2'''  }}",
 'search-nonefound' => 'I zawn mil a awm lo',
-'powersearch' => 'Zawnna chi sang',
 'powersearch-legend' => 'Zawnna chi sang',
 'powersearch-ns' => 'Hemi hminghmun chhungah hian zawng rawh:',
 'powersearch-redir' => 'Thawnkual ngaiho',
-'powersearch-field' => 'Hei hi zawng rawh:',
 'powersearch-togglelabel' => 'Thai rawh:',
 'powersearch-toggleall' => 'A vaiin',
 'powersearch-togglenone' => 'Pakhat mah',
@@ -770,8 +760,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',
-'prefsnologintext' => 'Hmangtu duhdàn siam tùrin i <span class="plainlinks"> [{{fullurl:{{#Special:UserLogin}}|returnto=$1}} inziah luh] </span> a ngai.',
 'changepassword' => 'Thurûk thlâkna',
 'prefs-skin' => 'Vun',
 'skin-preview' => 'Enchhinna',
@@ -795,7 +783,6 @@ Google hmangin i lo zawng hrih thei ang.
 'prefs-email' => 'E-chenhmuh duhdàn',
 'prefs-rendering' => 'Landàn',
 'saveprefs' => 'Dahţhatna',
-'resetprefs' => 'Tihdanglamna dahţhat loh tifai rawh',
 'restoreprefs' => 'A awmdàn siamsaah dah lêt vek rawh',
 'prefs-editing' => 'Siamţhat',
 'rows' => 'Tlar:',
@@ -812,7 +799,6 @@ Google hmangin i lo zawng hrih thei ang.
 'localtime' => 'Tualchhung hun:',
 'timezoneuseserverdefault' => 'Wiki ($1) hi hmang rawh',
 'timezoneuseoffset' => 'A dang (sawi chiang la)',
-'timezoneoffset' => 'Darkar inthlauhna:',
 'servertime' => 'Server hun:',
 'guesstimezone' => 'Rangpuifanna aţang dahkhat rawh',
 'timezoneregion-africa' => 'Afrika',
@@ -1276,7 +1262,6 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 'deadendpagestext' => 'A hnuaia phêkte hian {{SITENAME}}-a phêk dang pakhat mah zawmpui an nei lo.',
 'protectedpages' => 'Phêk vènhimte',
 'protectedpages-indef' => 'Phêk vènhim kumhlunho chauh',
-'protectedpagestext' => 'A hnuaia phêkte hi sawn emaw siam danglam theih loh tùra vènhim an ni',
 'protectedtitles' => 'Hming vènhimte',
 'listusers' => 'Hmangtu tlarna',
 'listusers-editsonly' => 'Siam danglam nei hmangtu chauh pholang rawh',
@@ -1856,10 +1841,6 @@ A bak zawng chu thuhrûk sa vek a ni ang.
 'exif-iimversion' => 'IIM chhuah',
 'exif-iimcategory' => 'Pawl',
 
-# External editor support
-'edit-externally' => 'Pawnlam hmanraw hmanga tihdanglamna',
-'edit-externally-help' => '(Hriat chian lehzualnan [https://www.mediawiki.org/wiki/Manual:External_editors bundàn kaihhruaina phek] hi en rawh)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'a vaiin',
 'namespacesall' => 'a vaiin',
index 61382cb..9c0ba7d 100644 (file)
@@ -210,7 +210,6 @@ $messages = array(
 'qbedit' => 'Izmainīšana',
 'qbpageoptions' => 'Šī lapa',
 'qbmyoptions' => 'Manas lapas',
-'qbspecialpages' => 'Īpašās lapas',
 'faq' => 'BUJ',
 'faqpage' => 'Project:BUJ',
 
@@ -324,8 +323,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',
@@ -415,9 +412,6 @@ Par to varat ziņot [[Special:ListUsers/sysop|kādam administratoram]], norādot
 'perfcached' => 'Šie dati ir no servera kešatmiņas un var būt novecojuši. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => "Šie dati ir no servera kešatmiņas (''cache''), kas pēdējo reizi bija atjaunota $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Šīs lapas atjaunošana pagaidām ir atslēgta. Te esošie dati tuvākajā laikā netiks atjaunoti.',
-'wrong_wfQuery_params' => 'Nekorekti wfQuery() parametri<br />
-Funkcija: $1<br />
-Vaicājums: $2',
 'viewsource' => 'Aplūkot kodu',
 'viewsource-title' => 'Apskatīt $1 izejas kodu',
 'actionthrottled' => 'Darbība netika atļauta',
@@ -963,12 +957,8 @@ $1",
 # Search results
 'searchresults' => 'Meklēšanas rezultāti',
 'searchresults-title' => 'Meklēšanas rezultāti "$1"',
-'searchresulttext' => 'Lai iegūtu vairāk informācijas par meklēšanu {{grammar:akuzatīvs|{{SITENAME}}}}, skat. [[{{MediaWiki:Helppage}}|{{grammar:ģenitīvs|{{SITENAME}}}} meklēšana]].',
-'searchsubtitle' => 'Pieprasījums: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|visas lapas, kas sākas ar "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|visas lapas, kurās ir saite uz "$1"]])',
-'searchsubtitleinvalid' => 'Pieprasījums: $1',
 'toomanymatches' => 'Tika atgriezti poārāk daudzi rezultāti, lūdzu pamēģini citādāku pieprasījumu',
 'titlematches' => 'Rezultāti virsrakstos',
-'notitlematches' => 'Neviena rezultāta, meklējot lapas virsrakstā',
 'textmatches' => 'Rezultāti lapu tekstos',
 'notextmatches' => 'Neviena rezultāta, meklējot lapas tekstā',
 'prevn' => 'iepriekšējās {{PLURAL:$1|$1}}',
@@ -977,7 +967,6 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Nākošais|INākošie}} $1 {{PLURAL:$1|rezultāts|rezultāti}}',
 'shown-title' => 'Parādīt $1 {{PLURAL:$1|rezultātu|rezultātus}} vienā lapā',
 'viewprevnext' => 'Skatīt ($1 {{int:pipe-separator}} $2) ($3 vienā lapā).',
-'searchmenu-legend' => 'Meklēšanas iespējas',
 'searchmenu-exists' => "'''Šajā projektā ir raksts ar nosaukumu \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Izveido rakstu \"[[:\$1]]\" šajā projektā!'''",
 'searchprofile-articles' => 'Rakstos',
@@ -1007,13 +996,10 @@ $1",
 'showingresults' => "Šobrīd ir {{PLURAL:$1|redzama|redzamas}} '''$1''' {{PLURAL:$1|lapa|lapas}}, sākot ar #'''$2'''.",
 'showingresultsnum' => "Šobrīd ir {{PLURAL:$3|redzama|redzamas}} '''$3''' {{PLURAL:$3|lapa|lapas}}, sākot ar #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Šobrīd ir redzama '''$1''' lapa no '''$3'''|Šobrīd ir redzamas '''$1 — $2''' lapas no '''$3'''}}, kas satur '''$4'''",
-'nonefound' => "'''Piezīme:''' bieži vien meklēšana ir neveiksmīga, meklējot plaši izplatītus vārdus, piemēram, \"un\" vai \"ir\", jo tie netiek iekļauti meklēšanas datubāzē, vai arī meklējot vairāk par vienu vārdu (jo rezultātos parādīsies tikai lapas, kurās ir visi meklētie vārdi). Vēl, pēc noklusējuma, pārmeklē tikai dažas ''namespaces''. Lai meklētu visās, meklēšanas pieprasījumam priekšā jāieliek ''all:'', vai arī analogā veidā jānorāda pārmeklējamo ''namespaci''.",
 'search-nonefound' => 'Nav atrasti pieprasījumam atbilstoši rezultāti.',
-'powersearch' => 'Izvērstā meklēšana',
 'powersearch-legend' => 'Izvērstā meklēšana',
 'powersearch-ns' => 'Meklēt šajās lapu grupās:',
 'powersearch-redir' => 'Parādīt pāradresācijas',
-'powersearch-field' => 'Meklēt',
 'powersearch-togglelabel' => 'Pārbaudīt:',
 'powersearch-toggleall' => 'Viss',
 'powersearch-togglenone' => 'Neviena',
@@ -1026,8 +1012,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',
-'prefsnologintext' => 'Tev jābūt <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} iegājušam]</span>, lai mainītu lietotāja izvēles.',
 'changepassword' => 'Mainīt paroli',
 'prefs-skin' => 'Apdare',
 'skin-preview' => 'Priekšskats',
@@ -1051,7 +1035,6 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
 'prefs-email' => 'E-pasta uzstādījumi',
 'prefs-rendering' => 'Izskats',
 'saveprefs' => 'Saglabāt',
-'resetprefs' => 'Atcelt nesaglabātās izmaiņas',
 'restoreprefs' => 'Atjaunot noklusētos uzstādījumus',
 'prefs-editing' => 'Rediģēšana',
 'rows' => 'Rindiņu skaits:',
@@ -1072,7 +1055,6 @@ Ikvienam, kas to zinās, būs iespēja apskatīt tavu uzraugāmo lapu sarakstu,
 'localtime' => 'Vietējais laiks:',
 'timezoneuseserverdefault' => 'Lietot viki noklusēto ($1)',
 'timezoneuseoffset' => 'Cita (norādi starpību)',
-'timezoneoffset' => 'Starpība¹:',
 'servertime' => 'Servera laiks šobrīd:',
 'guesstimezone' => 'Izmantot datora sistēmas laiku',
 'timezoneregion-africa' => 'Āfrika',
@@ -1296,6 +1278,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',
@@ -1711,7 +1694,6 @@ Katrā rindiņā ir saites uz pirmo un otro pāradresācijas lapu, kā arī pirm
 'protectedpages-indef' => 'Tikai bezgalīgas aizsardzības',
 'protectedpages-cascade' => 'Tikai kaskādes aizsardzības',
 'protectedtitles' => 'Aizsargātie nosaukumi',
-'protectedtitlestext' => 'Lapas ar šādiem nosaukumiem ir aizsargātas pret lapas izveidošanu',
 'protectedtitlesempty' => 'Pagaidām nevienas lapas nosaukums nav aizsargāts ar šiem paraametriem.',
 'listusers' => 'Lietotāju uzskaitījums',
 'listusers-editsonly' => 'Rādīt tikai lietotājus, kas ir izdarījuši kādas izmaiņas',
@@ -2934,10 +2916,6 @@ Pārējie lauki, pēc noklusējuma, būs paslēpti.
 'exif-urgency-high' => 'Augsta ($1)',
 'exif-urgency-other' => 'Lietotāja definēta prioritāte ($1)',
 
-# External editor support
-'edit-externally' => 'Izmainīt šo failu ar ārēju programmu',
-'edit-externally-help' => '(Skat. [https://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, lai iegūtu vairāk informācijas).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'visas',
 'namespacesall' => 'visas',
@@ -3106,8 +3084,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Special:SpecialPages
 'specialpages' => 'Īpašās lapas',
-'specialpages-note' => '----
-* Normālas īpašās lapas.
+'specialpages-note' => '* Normālas īpašās lapas.
 * <span class="mw-specialpagerestricted">Ierobežotas pieejas īpašās lapas.</span>
 * <span class="mw-specialpagecached">Iekešotās īpašās lapas.</span>',
 'specialpages-group-maintenance' => 'Uzturēšanas atskaites',
@@ -3245,4 +3222,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 086b5c5..a611a50 100644 (file)
@@ -34,7 +34,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '增簿' ),
        'Deadendpages'              => array( '此無路也' ),
        'DeletedContributions'      => array( '已刪之積' ),
-       'Disambiguations'           => array( '釋義' ),
        'DoubleRedirects'           => array( '窮渡' ),
        'EditWatchlist'             => array( '治哨站' ),
        'Emailuser'                 => array( '遺書' ),
@@ -307,7 +306,6 @@ $messages = array(
 'qbedit' => '纂',
 'qbpageoptions' => '此頁',
 'qbmyoptions' => '吾好',
-'qbspecialpages' => '非凡',
 'faq' => '頻答問',
 'faqpage' => 'Project:頻答問',
 
@@ -423,8 +421,6 @@ $1',
 'ok' => '可',
 'retrievedfrom' => '取自"$1"',
 'youhavenewmessages' => '有$1書至子書房也。($2)',
-'newmessageslink' => '新訊',
-'newmessagesdifflink' => '變更',
 'youhavenewmessagesfromusers' => '子有 $1 自 {{PLURAL:$3|一簿戶也|$3 簿戶也}} ($2)。',
 'youhavenewmessagesmanyusers' => '子有 $1 自多簿戶 ( $2 )',
 'newmessageslinkplural' => '{{PLURAL:$1|一新訊息|新訊息}}',
@@ -507,9 +503,6 @@ $1',
 'badtitletext' => '或別、或缺、或違、或他山謬鏈,此題不存也。',
 'perfcached' => '下為謄本,恐不新也。 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.',
-'wrong_wfQuery_params' => 'wfQuery()參數謬然<br />
-函式: $1<br />
-問語: $2',
 'viewsource' => '覽源',
 'viewsource-title' => '查$1之案',
 'actionthrottled' => '無為',
@@ -1032,12 +1025,8 @@ $1",
 # Search results
 'searchresults' => '得尋',
 'searchresults-title' => '"$1"得尋',
-'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' => '合文',
 'notextmatches' => '無文合',
 'prevn' => '前{{PLURAL:$1|$1}}',
@@ -1046,10 +1035,8 @@ $1",
 'nextn-title' => '後$1之尋',
 'shown-title' => '每頁示 $1',
 'viewprevnext' => '見($1 {{int:pipe-separator}} $2)($3)',
-'searchmenu-legend' => '尋選',
 'searchmenu-exists' => "'''在此wiki中有頁為\"[[:\$1]]\"。'''",
 'searchmenu-new' => "'''在此wiki上建頁\"[[:\$1]]\"!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|查此首之頁]]',
 'searchprofile-articles' => '容',
 'searchprofile-project' => '助題',
 'searchprofile-images' => '媒',
@@ -1077,13 +1064,10 @@ $1",
 'showingresults' => "見'''$1'''尋,自'''$2'''始:",
 'showingresultsnum' => "見'''$3'''尋,自'''$2'''始:",
 'showingresultsheader' => "見'''$4''',{{PLURAL:$5|'''$1''''''$3'''之尋|'''$1 - $2''',共'''$3'''之尋}}",
-'nonefound' => "'''注''':部名冊預尋也。。試''all:''尋全名刪之頁(含議模等),或可用要之名冊為前綴也。",
 'search-nonefound' => '詢中無結。',
-'powersearch' => '尋',
 'powersearch-legend' => '尋',
 'powersearch-ns' => '尋名集:',
 'powersearch-redir' => '轉表',
-'powersearch-field' => '尋',
 'powersearch-togglelabel' => '核:',
 'powersearch-toggleall' => '全',
 'powersearch-togglenone' => '無',
@@ -1094,8 +1078,6 @@ $1",
 'preferences' => '簿註',
 'mypreferences' => '簿註',
 'prefs-edits' => '數計:',
-'prefsnologin' => '未登簿',
-'prefsnologintext' => '註記須<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登簿]</span>。',
 'changepassword' => '易符節',
 'prefs-skin' => '面版',
 'skin-preview' => '草覽',
@@ -1114,7 +1096,6 @@ $1",
 'prefs-email' => '傳書',
 'prefs-rendering' => '觀',
 'saveprefs' => '儲',
-'resetprefs' => '棄',
 'restoreprefs' => '重修',
 'prefs-editing' => '在修',
 'rows' => '行:',
@@ -1132,7 +1113,6 @@ $1",
 'localtime' => '本地時:',
 'timezoneuseserverdefault' => '用伺服器之預定',
 'timezoneuseoffset' => '它(定偏)',
-'timezoneoffset' => '偏¹:',
 'servertime' => '伺服器時:',
 'guesstimezone' => '瀏覽器填之',
 'timezoneregion-africa' => '非洲',
@@ -1360,6 +1340,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起之易也',
@@ -2635,10 +2616,6 @@ $1',
 'exif-gpsdestdistance-m' => '哩',
 'exif-gpsdestdistance-n' => '浬',
 
-# External editor support
-'edit-externally' => '以外部程式修此文',
-'edit-externally-help' => '(請閱[https://www.mediawiki.org/wiki/Manual:External_editors 安裝指引]以知詳情)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全',
 'namespacesall' => '全',
@@ -2812,8 +2789,7 @@ MediaWiki乃為用之發,無擔之責也;亦無售目之默擔也。參GNU
 
 # Special:SpecialPages
 'specialpages' => '特查',
-'specialpages-note' => '----
-* 準特查。
+'specialpages-note' => '* 準特查。
 * <strong class="mw-specialpagerestricted">限特查。</strong>',
 'specialpages-group-maintenance' => '護報',
 'specialpages-group-other' => '它之奇頁',
index ebdea94..dac78a6 100644 (file)
@@ -170,7 +170,6 @@ $messages = array(
 'qbedit' => 'सम्पादन करू',
 'qbpageoptions' => 'ई पन्ना',
 'qbmyoptions' => 'हमर पन्ना सभ',
-'qbspecialpages' => 'विशेष पन्ना सभ',
 'faq' => 'त्वरित प्रश्नोत्तरी',
 'faqpage' => 'Project: त्वरित प्रश्नोत्तरी',
 
@@ -286,8 +285,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'प्राप्ति स्थल "$1"',
 'youhavenewmessages' => 'अहाँ लग अछि $1 ($2).',
-'newmessageslink' => 'नव संदेश सभ',
-'newmessagesdifflink' => 'अन्तिम परिवर्तन',
 'youhavenewmessagesmulti' => '$1 पर अहाँ लेल नव सन्देश अछि',
 'editsection' => 'संपादन करू',
 'editold' => 'सम्पादित करू',
@@ -374,9 +371,6 @@ $1',
 'perfcachedts' => 'ई दत्तांश उपस्मृतिमे अछि, आ एकर अन्तिम परिवर्धन भेल अछि $1 केँ। A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'ऐ पन्नाक नवीनीकरण अखन बन्न अछि।
 एतुक्का दत्तांश अखन नवीकरण नै कएल जाएत।',
-'wrong_wfQuery_params' => 'अमान्य परिमिति ऐ लेल wfQuery()<br />
-क्रिया : $1<br />
-अभ्यर्थना: $2',
 'viewsource' => 'जड़ि देखू',
 'viewsource-title' => '"$1" लेल जड़ि देखू',
 'actionthrottled' => 'क्रियाकेँ मोकल गेल',
@@ -957,12 +951,8 @@ $3 द्वारा देल कारण अछि ''$2''",
 # Search results
 'searchresults' => 'तकबाक फलाफल',
 'searchresults-title' => 'तकबाक फलाफल "$1" लेल',
-'searchresulttext' => 'तकबा लेल विशेष सूचना {{अन्तर्जालक नाम}}, देखू [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'अहाँ तकलौं ऐ लेल \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" सँ शुरू होइबला सभा पृष्ठ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|सभ लिंक जकर लागि अछि "$1" सँ ]])',
-'searchsubtitleinvalid' => "अहाँ तकलहुँ '''$1''' लेल",
 'toomanymatches' => 'कतेको प्रयास आपस भेल, कृपा कऽ दोसर अभ्यर्थनासँ प्रयास करू।',
 'titlematches' => 'पन्ना शीर्ष मेल',
-'notitlematches' => 'कोनो पन्नाक शीर्ष मेल नै खाइए',
 'textmatches' => 'पन्ना पाठ मेल',
 'notextmatches' => 'पन्नाक पाठक किछु मेल नै खाइए',
 'prevn' => 'पछिला {{PLURAL:$1|$1}}',
@@ -971,10 +961,8 @@ $3 द्वारा देल कारण अछि ''$2''",
 'nextn-title' => 'आगाँ $1 {{PLURAL:$1|परिणाम|परिणाम सभ}}',
 'shown-title' => 'प्रति पन्ना $1 {{PLURAL:$1|परिणाम|परिणाम सभ}} देखाउ',
 'viewprevnext' => 'देखू  ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''ऐ विकीपर एकटा पन्ना अछि \"[[:\$1]]\" नामसँ।'''",
 'searchmenu-new' => "''' पन्ना निर्माण \"[[:\$1]]\" ऐ विकीपर !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ऐ उपसर्गक पन्ना सभकेँ देखू]]',
 'searchprofile-articles' => 'अनुक्रम पन्ना सभ',
 'searchprofile-project' => 'सहायता आ परियोजना पन्ना सभ',
 'searchprofile-images' => 'दृश्य-श्रव्य',
@@ -1002,14 +990,10 @@ $3 द्वारा देल कारण अछि ''$2''",
 'showingresults' => "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}}  #'''$2''' सँ प्रारम्भ भऽ कऽ।",
 'showingresultsnum' => "नीचाँ देखबै छी {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम सभ}}  #'''$2'''सँ प्रारम्भ भऽ कऽ।",
 'showingresultsheader' => "{{PLURAL:$5|परिणाम '''$1''' एकर '''$3'''|परिणाम सभ '''$1 - $2''' एकर '''$3'''}} ऐ लेल '''$4'''",
-'nonefound' => "'''टिप्पणी''': मातर किछुए निर्धारक मूलभूत रूपेँ ताकल जाइए।
-सभ सामिग्रीमे (माने मंतव्य पन्ना, नमूना, इत्यादि) तकबाले अपन उत्कंठामे उपसर्ग ''all:'' लगाउ , नै तँ इच्छित निर्धारककेँ उपसर्ग सन प्रयुक्त करू।",
 'search-nonefound' => 'अभ्यर्थनासँ मेल खाइत कोनो परिणाम नै भेटल।',
-'powersearch' => 'त्वरित खोज',
 'powersearch-legend' => 'विशेष खोज',
 'powersearch-ns' => 'निर्धारकमे खोज',
 'powersearch-redir' => 'रस्ता बदलेनक सूची',
-'powersearch-field' => 'ऐ लेल ताकू',
 'powersearch-togglelabel' => 'जाँचू:',
 'powersearch-toggleall' => 'सभटा',
 'powersearch-togglenone' => 'कोनो नै',
@@ -1022,8 +1006,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'preferences' => 'विकल्प',
 'mypreferences' => 'खासमखास',
 'prefs-edits' => 'सम्पादनक संख्या',
-'prefsnologin' => 'सम्प्रवेशित नै',
-'prefsnologintext' => 'अहाँ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> प्रयोक्ता विकल्प निर्धारण लेल प्रयोग करू।',
 'changepassword' => 'कूटशब्द बदलू',
 'prefs-skin' => 'रूप',
 'skin-preview' => 'पूर्वावलोकन',
@@ -1046,7 +1028,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'prefs-email' => 'ई-पत्र चुनाव',
 'prefs-rendering' => 'मुँहकान',
 'saveprefs' => 'सुरक्षित करू',
-'resetprefs' => 'बिन सुरक्षितकेँ हटाउ',
 'restoreprefs' => 'सभटा पूर्वनिर्धारित चयनकेँ फेरसँ आनू',
 'prefs-editing' => 'सम्पादन कऽ रहल छी',
 'rows' => 'पाँती सभ',
@@ -1064,7 +1045,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'localtime' => 'स्थानीय समए:',
 'timezoneuseserverdefault' => 'पूर्वनिर्धारित वितरक प्रयुक्त करू ($1)',
 'timezoneuseoffset' => 'आन (संतुलन केनिहारक निर्देश करू)',
-'timezoneoffset' => 'संतुलन घटक¹:',
 'servertime' => 'वितरक समए:',
 'guesstimezone' => 'गवेषकक प्रयोग कऽ भरू',
 'timezoneregion-africa' => 'अफ्रीका',
@@ -1726,10 +1706,8 @@ $1',
 'protectedpages' => 'संरक्षित पन्ना सभ',
 'protectedpages-indef' => 'अनन्तकालिक सुरक्षा मात्र',
 'protectedpages-cascade' => 'तराउपड़ी सुरक्षा मात्र',
-'protectedpagestext' => 'ई पन्ना सभ घसकएबा वा सम्पादन लेल प्रतिबन्धित अछि।',
 'protectedpagesempty' => 'कोनो पन्ना ऐ सभ परिमिति लेल सुरक्षित नै राखल गेल अछि।',
 'protectedtitles' => 'संरक्षित शीर्षक सभ',
-'protectedtitlestext' => 'ई शीर्षक सभ बनबासँ प्रतिबन्धित अछि',
 'protectedtitlesempty' => 'कोनो पन्ना ऐ सभ परिमिति लेल सुरक्षित नै राखल गेल अछि।',
 'listusers' => 'प्रयोक्ता सूची',
 'listusers-editsonly' => 'सम्पादन करैबला प्रयोक्ताकेँ मात्र देखाउ',
@@ -3145,10 +3123,6 @@ Variants for Chinese language
 'exif-urgency-high' => 'बेशी ($1)',
 'exif-urgency-other' => 'प्रयोक्ता परिभाषित प्राथमिकता ($1)',
 
-# External editor support
-'edit-externally' => 'ऐ फाइलकेँ बाहरी अनुप्रयोगसँ हटाउ',
-'edit-externally-help' => '(देखू [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] विषेष जानकारी लेल)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सभ',
 'namespacesall' => 'सभटा',
@@ -3357,8 +3331,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'विशेष पन्ना',
-'specialpages-note' => '----
-* सामान्य विशिष्ट पन्ना।
+'specialpages-note' => '* सामान्य विशिष्ट पन्ना।
 * <span class="mw-specialpagerestricted">प्रतिबंधित विशिष्ट पन्ना।</span>
 * <span class="mw-specialpagecached">उपस्मृतिक विशिष्ट पन्ना (पुरान भऽ सकैए)।</span>',
 'specialpages-group-maintenance' => 'सुस्थापन प्रतिवेदन',
index 3456f0a..e89df15 100644 (file)
@@ -172,7 +172,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Kaca kiye',
 'qbmyoptions' => 'Kaca-ne inyong',
-'qbspecialpages' => 'Kaca-kaca astamiwa',
 'faq' => 'FAQ (Pitakonan sing sering ditakokna)',
 'faqpage' => 'Project:FAQ',
 
@@ -289,8 +288,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}}',
@@ -389,9 +386,6 @@ Kiya ndeyane ana siji utawa lewih karakter sing ora teyeng digunakna nang judul.
 'perfcachedts' => "Data kiye dijikot sekang singgahan (''cache''), lan dianyarna keri dhewek dong $1. Paling akeh ana  {{PLURAL:$4|siji asil|$4 asil}} disediakna nang papan singgahan.",
 'querypage-no-updates' => 'Update nggo kaca kiye lagi dipateni.
 Data sing ana nang kene sekiye ora teyeng dibaleni unggah maning.',
-'wrong_wfQuery_params' => 'Parameter salah maring wfQuery()<br />
-Fungsi: $1<br />
-Panyuwunan: $2',
 'viewsource' => 'Deleng sumbere',
 'viewsource-title' => 'Deleng sumbere nggo $1',
 'actionthrottled' => 'Tindakan diwatesi',
@@ -913,12 +907,8 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 # Search results
 'searchresults' => 'Hasile penggoletan',
 'searchresults-title' => 'Hasile penggoletan sekang "$1"',
-'searchresulttext' => 'Kanggo informasi sabanjuré ngenani panggolètan nang {{SITENAME}}, monggo ndeleng [[{{MediaWiki:Helppage}}|kaca pitulung]].',
-'searchsubtitle' => 'Rika nggoleti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kabeh kaca sing dimolai nganggo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kabeh kaca sing nggandeng maring "$1"]])',
-'searchsubtitleinvalid' => "Rika nggoleti '''$1'''",
 'toomanymatches' => "Pengoletane Rika ngasilna kakehan pituwas, monggo lebokna ''query'' liyane",
 'titlematches' => 'Judul kaca sing cocog',
-'notitlematches' => 'Ora ana judul kaca sing cocog',
 'textmatches' => 'Teks kaca sing cocog',
 'notextmatches' => 'Ora ana teks kaca sing cocog',
 'prevn' => '{{PLURAL:$1|$1}} sadurungé',
@@ -927,10 +917,8 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 'nextn-title' => '$1 {{PLURAL:$1|asil|asil}} sabanjuré',
 'shown-title' => 'Tidokna $1 {{PLURAL:$1|asil|asil}} saben kaca',
 'viewprevnext' => 'Deleng ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilihan panggoletan',
 'searchmenu-exists' => "''' Ana kaca nganggo jeneng \"[[:\$1]]\" nang wiki kiye.'''",
 'searchmenu-new' => "'''Gawe kaca \"[[:\$1]]\" nang wiki kiye!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Deleng daftar kaca sing nganggo tembung-wiwitan kiye]]',
 'searchprofile-articles' => 'Isine kaca',
 'searchprofile-project' => 'Kaca pitulung lan proyèk',
 'searchprofile-images' => 'Multimedia',
@@ -958,14 +946,10 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 'showingresults' => "Nang ngisor kiye ditidokna ana {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, dimulai sekang #'''$2'''.",
 'showingresultsnum' => "Nang ngisor kiye ditidokna ana {{PLURAL:$3'''1''' kasil|'''$3''' kasil}}, dimulai sekang #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Asil '''$1''' sekang '''$3'''|Asil '''$1 - $2''' sekang '''$3'''}} kanggo '''$4'''",
-'nonefound' => "'''Cathetan''': Mung sawetara bilik jeneng sing digolèti sacara baku. 
-Jajal aweh awalan ''all:'' kanggo nggolèti kabèh isi (kalebu kaca dhiskusi, cithakan lsp.), utawa nganggo bilik jeneng sing dipèngèni minangka préfiks.",
 'search-nonefound' => "Ora ana kasil sing cocog karo pitakonan (''query'').",
-'powersearch' => 'Panggoletan lanjut',
 'powersearch-legend' => 'Panggoletan lanjut',
 'powersearch-ns' => 'Goleti nang bilik jeneng:',
 'powersearch-redir' => 'Daftar pangalihan',
-'powersearch-field' => 'Sing digoleti',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Kabeh',
 'powersearch-togglenone' => 'Ora ana',
@@ -978,8 +962,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',
-'prefsnologintext' => 'Rika kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}| mlebu log disit]</span> kanggo ngowahi préferènsine Rika.',
 'changepassword' => 'Ganti tembung sandhi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratayang',
@@ -1002,7 +984,6 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'prefs-email' => 'Opsi imel',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpen',
-'resetprefs' => 'Bersihna owah-owahan sing ora disimpen',
 'restoreprefs' => 'Balekna kabeh setelan gawane',
 'prefs-editing' => 'Panyuntingan',
 'rows' => 'Baris:',
@@ -1019,7 +1000,6 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'localtime' => 'Wektu lokal:',
 'timezoneuseserverdefault' => 'Gunakna standar gawane wiki ($1)',
 'timezoneuseoffset' => 'Liyane (tentukna bedane)',
-'timezoneoffset' => 'Prabédan¹:',
 'servertime' => 'Wektu server:',
 'guesstimezone' => 'Isikna sekang panjlajah web',
 'timezoneregion-africa' => 'Afrika',
@@ -1431,10 +1411,8 @@ Kiye sekiye dialihna maring [[$2]].',
 'protectedpages' => 'Kaca sing direksa',
 'protectedpages-indef' => 'Mung kanggo pangreksan sing wektune ora dibatesi',
 'protectedpages-cascade' => 'Mung pangreksan runtun thok',
-'protectedpagestext' => 'Kaca-kaca nang ngisor kiye wis direksa ben ora teyeng dipindah utawa disunting',
 'protectedpagesempty' => 'Sekiye ora ana kaca sing lagi direksa nganggo parameter kuwe.',
 'protectedtitles' => 'Judul sing direksa',
-'protectedtitlestext' => 'Judul-judul kiye wis direksa lan ora teyeng digawe maning',
 'protectedtitlesempty' => 'Sekiye ora ana judul sing lagi direksa nganggo parameter kuwe.',
 'listusers' => 'Daftar panganggo',
 'listusers-editsonly' => 'Tidokna mung panganggo sing duwe kontribusi',
@@ -1819,10 +1797,6 @@ Sing liyane bakal diumpetna sacara ''default''.
 'exif-lightsource-18' => 'Cahya standar B',
 'exif-lightsource-19' => 'Cahya standar C',
 
-# External editor support
-'edit-externally' => 'Sunting berkas kiye nganggo aplikasi jaba',
-'edit-externally-help' => '(Deleng [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kabèh',
 'namespacesall' => 'kabèh',
index 562ac85..f1bec1b 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( 'Вимс' ),
@@ -285,7 +283,6 @@ $messages = array(
 'qbedit' => 'Петнема',
 'qbpageoptions' => 'Тя лопась',
 'qbmyoptions' => 'Монь лопане',
-'qbspecialpages' => 'Башка тевонь лопат',
 'faq' => 'Сидеста Кеподеви Кизефксне',
 'faqpage' => 'Project:Сидеста Кеподеви Кизефксне',
 
@@ -398,8 +395,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '"$1"ста сявф',
 'youhavenewmessages' => 'Тонь ули $1 ($2).',
-'newmessageslink' => 'Од сёрмат',
-'newmessagesdifflink' => 'мекольце полафтома',
 'youhavenewmessagesfromusers' => 'Тонь $1 {{PLURAL:$3|тага фкя тиить эзда|$3 тиихнень эзда}} ($2).',
 'youhavenewmessagesmanyusers' => 'Тонь $1 лама тиихнень эзда ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|од сёрма|од сёрмат}}',
@@ -493,9 +488,6 @@ $1',
 'perfcached' => 'Вешф програмонь информациесь сёрматфоль эслек ванфневи файлхнень эса ди, улема, сирелгодсь. Сяда {{PLURAL:$1|фкя муфкс|$1 муфкст}} эслек ванфневи файлань кярьксса.',
 'perfcachedts' => 'Тя програмонь информациесь сёрматфоль эслек ванфневи файлхнень эса ди мекольцеда одонзаф $1. Сяда {{PLURAL:$4|фкя муфкс|$4 муфкст}} эслек ванфневи файлонь кярьксса.',
 'querypage-no-updates' => 'Тя лопать одонзапне тяни аф тиевихть. Информациесь тяса тяни аф одонзави.',
-'wrong_wfQuery_params' => 'Аф кондясти параметратне функцияса wfQuery()<br />
-Функцие: $1<br />
-Вешфкс: $2',
 'viewsource' => 'Ваномс лисьмоть',
 'viewsource-title' => 'Ванк $1 лисьмаста',
 'actionthrottled' => 'Куроксшись кирьфтаф',
@@ -965,12 +957,8 @@ $3 макссь туфталсь - ''$2''",
 # Search results
 'searchresults' => 'Мезе мувсь',
 'searchresults-title' => 'Мезе мувсь "$1" лемс',
-'searchresulttext' => '{{SITENAME}}-са вешендемань колга лама содаманкса ватт [[{{MediaWiki:Helppage}}|кизефтемань пялькссь]].',
-'searchsubtitle' => 'Тон вешить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|сембе лопат "$1"ста ушедомс]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|сембе лопат сюлмафт "$1" мархта]])',
-'searchsubtitleinvalid' => "Тон вешить '''$1'''",
 'toomanymatches' => 'Пяк лама вешфонди малады муфкст, эняльттяма вешентть тага весть',
 'titlematches' => 'Лопать коняксоц мувсь',
-'notitlematches' => 'Лопать коняксоц изь мув',
 'textmatches' => 'Лопаса сёрматфсь мувсь',
 'notextmatches' => 'Лопаса сёрматфсь изь мув',
 'prevn' => 'сядынголень {{PLURAL:$1|$1}}',
@@ -979,10 +967,8 @@ $3 макссь туфталсь - ''$2''",
 'nextn-title' => 'Сядомелень $1 {{PLURAL:$1|сафкс|сафкст}}',
 'shown-title' => 'Няфтемс лопасонза $1 {{PLURAL:$1|сафкс|сафкст}}',
 'viewprevnext' => 'Ваномс ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Вешендема арафнематне',
 'searchmenu-exists' => "'''Тя Викиса ули лопась \"[[:\$1]]\" лем мархта'''",
 'searchmenu-new' => "'''Ушедомс лопась \"[[:\$1]]\" тя Викиса!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Мумс лопат тя валынголькссь мархта]]',
 'searchprofile-articles' => 'Потмонь лопат',
 'searchprofile-project' => 'Лезкс эди проектонь лопат',
 'searchprofile-images' => 'Мультимедиа',
@@ -1009,13 +995,10 @@ $3 макссь туфталсь - ''$2''",
 'showingresults' => "Ала няфтеви {{PLURAL:$1|мувсь '''1'''|мувсть '''$1'''}} '''$2'''-ста ушедомс.",
 'showingresultsnum' => "Ала няфтеви {{PLURAL:$3|мувсь '''1'''|мувсть '''$3'''}} '''$2'''-ста ушедомс.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' сафкс '''$3'''-ста|'''$1 - $2''' сафкст '''$3'''-ста}} '''$4'''нди",
-'nonefound' => "'''Шарфтк мяльце''': Аньцек мъзярошка лемботмат вешендевихть инголе апак полафтт. Тяряфтт вешендема валда инголе путомс ''all:'' сембе потмонь вешендеманди (корхнема лопат ди шаблотт сявомок, ди с. т) эли кундак эрявикс лемботмос кода валынгольксс.",
 'search-nonefound' => 'Аш вешфксонди малады муфкст.',
-'powersearch' => 'Сядонга вешендемс',
 'powersearch-legend' => 'Анцяйняньбес вешендема',
 'powersearch-ns' => 'Вешендемс лемботмоса:',
 'powersearch-redir' => 'Шашфтфкснень лувомась',
-'powersearch-field' => 'Вешендемс',
 'powersearch-togglelabel' => 'Варжак:',
 'powersearch-toggleall' => 'Сембе',
 'powersearch-togglenone' => 'Фкявок аш',
@@ -1026,8 +1009,6 @@ $3 макссь туфталсь - ''$2''",
 'preferences' => 'Арафнематне',
 'mypreferences' => 'Монь латцемане',
 'prefs-edits' => 'Петнематнень лувсна:',
-'prefsnologin' => 'Апак сувак',
-'prefsnologintext' => 'Тондейть эряви <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} сувамс]</span> тонь арафнематнень латцеманкса.',
 'changepassword' => 'Сувама валть полафтомс',
 'prefs-skin' => 'Ванфонь латцема',
 'skin-preview' => 'Васень няфтема',
@@ -1043,7 +1024,6 @@ $3 макссь туфталсь - ''$2''",
 'prefs-misc' => 'Калмоча',
 'prefs-resetpass' => 'Полафтомс сувама валцень',
 'saveprefs' => 'Ванфтомс',
-'resetprefs' => 'Валхтомс апак ванфтт полафнематнень',
 'restoreprefs' => 'Мърдафтомс васень латцематне',
 'prefs-editing' => 'Петнема',
 'rows' => 'Луфт (строкат):',
@@ -1059,7 +1039,6 @@ $3 макссь туфталсь - ''$2''",
 'localtime' => 'Тястоконь пинге:',
 'timezoneuseserverdefault' => 'Нолдак апак полафтт серверть тевс',
 'timezoneuseoffset' => 'Иля (путт явомась)',
-'timezoneoffset' => 'Явома¹:',
 'servertime' => 'Серверонь пинге:',
 'guesstimezone' => 'Сёрмадомс интернет полатксста',
 'timezoneregion-africa' => 'Африк',
@@ -1551,10 +1530,8 @@ $3 макссь туфталсь - ''$2''",
 'protectedpages' => 'Аралаф лопат',
 'protectedpages-indef' => 'Аньцек апак кемокстак араламат',
 'protectedpages-cascade' => 'Аньцек каскад араламась',
-'protectedpagestext' => 'Ся лопатне шашфтомада эли петнемада аралафт',
 'protectedpagesempty' => 'Тя пингста аралаф лопат ся арафнематнень мархта ашет.',
 'protectedtitles' => 'Аралаф коняксне',
-'protectedtitlestext' => 'Ся лопа коняксне тиемада аралафт',
 'protectedtitlesempty' => 'Тя пингста аралаф лопа конякст ся арафнематнень мархта ашет.',
 'listusers' => 'Тиихне',
 'listusers-editsonly' => 'Няфтемс аньцек петнематнень мархта тиихнень',
@@ -2645,10 +2622,6 @@ $1',
 'exif-gpsdirection-t' => 'Виде ён',
 'exif-gpsdirection-m' => 'Магнитонь ён',
 
-# External editor support
-'edit-externally' => 'Петнемс тя файлть ушеширень програмонь вельде',
-'edit-externally-help' => '(Ванк [https://www.mediawiki.org/wiki/Manual:External_editors арафнемань вятемовалсь] сяда лама содаманкса)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'сембе',
 'namespacesall' => 'сембе',
@@ -2805,8 +2778,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Башка лопат',
-'specialpages-note' => '----
-* Кърдань башка лопат.
+'specialpages-note' => '* Кърдань башка лопат.
 * <strong class="mw-specialpagerestricted">Кардаф башка лопат.</strong>',
 'specialpages-group-maintenance' => 'Латцема лувоматне',
 'specialpages-group-other' => 'Иля башка тевонь лопатне',
index 0b2db54..329a466 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' ),
@@ -374,7 +372,6 @@ $messages = array(
 'qbedit' => 'Hanova',
 'qbpageoptions' => 'Ity pejy ity',
 'qbmyoptions' => 'Ny pejiko',
-'qbspecialpages' => 'Pejy manokana',
 'faq' => 'FMM',
 'faqpage' => 'Project:FMM',
 
@@ -492,8 +489,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}}',
@@ -593,9 +588,6 @@ Tsy nanome fanazavana.",
 'perfcachedts' => "Ao amin'ny voatakona (cache) ny data aseho, ary tamin'ny $1 izy no navaozina farany. $4{{PLURAL:}} no isan'ny valim-pikarohana ao amin'ilay voatakona.",
 'querypage-no-updates' => "Tsy nalefa ny ''mise à jour'' (update) hoan'ity pejy ity.
 Mety tsy misy fifandraisana amin'ny zavamisy ankehitriny ny zavamisy ao anatin'ity pejy ity..",
-'wrong_wfQuery_params' => "Misy tsy fetezana amin'ny wfQuery()<br />
-Asa : $1<br />
-fangatahana : $2",
 'viewsource' => 'Hijery fango',
 'viewsource-title' => "Hijery ny fangon'i $1",
 'actionthrottled' => 'Tao voafetra',
@@ -1277,12 +1269,8 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 # Search results
 'searchresults' => 'Valim-pikarohana',
 'searchresults-title' => "Valim-pikarohana ho an'ny « $1 »",
-'searchresulttext' => "Jereo ny [[{{MediaWiki:Helppage}}|fanazavana fanampiny momba ny fikarohana eto amin'ny {{SITENAME}}]].",
-'searchsubtitle' => "nitady lohatsoratra « '''[[:$1]]''' » ianao ([[Special:Prefixindex/$1|ny pejy rehetra manomboka amin'ny « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ny pejy rehetra manana rohy amin'ny « $1 »]])",
-'searchsubtitleinvalid' => "Nitady « '''$1''' » ianao",
 'toomanymatches' => "Betsaka loatra ny isan'ny mitovy naverina, mametraha fangatahana hafa.",
 'titlematches' => "Mifanitsy amin'ny lohatenin'ny lahatsoratra",
-'notitlematches' => 'Tsy nahitana lohateny mifanaraka',
 'textmatches' => "Mifanitsy amin'ny votoatin'ny pejy",
 'notextmatches' => 'Tsy nahitana votoatim-pejy mifanaraka',
 'prevn' => '{{PLURAL:$1|$1}} taloha',
@@ -1291,10 +1279,8 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 'nextn-title' => 'Valim-pikarohana manaraka $1{{PLURAL:}}',
 'shown-title' => 'Aseho valiny $1 isaky ny pejy iray{{PLURAL:}}',
 'viewprevnext' => 'Hijery ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Safidy mikasika ny fitadiavana',
 'searchmenu-exists' => "'''Misy pejy mitondra anarana « [[:$1]] » eto amin'ity wiki ity'''",
 'searchmenu-new' => "'''Hanamboatra ny pejy « [[:$1|$1]] » eto amin'ity wiki ity !'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Hitady pejy manomboka amin'io tovona io]]",
 'searchprofile-articles' => 'Pejy misy votoatiny',
 'searchprofile-project' => 'Pejy fanampiana sy pejy tetikasa',
 'searchprofile-images' => 'Multimedia',
@@ -1322,16 +1308,10 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 'showingresults' => "Omeo ny valiny{{PLURAL:$1||}} miisa hatramin'ny <b>$1</b> manomboka ny #<b>$2</b>.",
 'showingresultsnum' => 'Omeo ny valiny miisa <b>$3</b> manomboka ny #<b>$2</b>.{{PLURAL:||}}',
 'showingresultsheader' => "{{PLURAL:$5}}Valim-pikaronhana '''$1x–$2''' an'i '''$3''' ho an'i '''$4'''",
-'nonefound' => "'''Fanamarihana''': ny mahatonga ny fikarohana tsy hahita vokany matetika dia ny
-fampiasanao teny miasa matetika toy ny \"izay\" sy ny \"tsy\",
-na ny fanomezanao teny mihoatra ny iray (ny pejy ahitana ny teny rehetra hokarohina
-ihany no miseho amin'ny vokatry ny karoka).",
 'search-nonefound' => 'Tsy nahitana valiny ilay fanontaniana.',
-'powersearch' => 'Fitadiavana',
 'powersearch-legend' => 'Fikarohana havanana',
 'powersearch-ns' => "Hitady anatin'ny anaran-tsehatra :",
 'powersearch-redir' => 'Ampiseho ny redirect',
-'powersearch-field' => 'Hitady',
 'powersearch-togglelabel' => 'Marihana:',
 'powersearch-toggleall' => 'Rehetra',
 'powersearch-togglenone' => 'Tsy misy',
@@ -1343,8 +1323,6 @@ ihany no miseho amin'ny vokatry ny karoka).",
 'preferences' => 'Ny momba anao',
 'mypreferences' => 'Safidy',
 'prefs-edits' => 'isa ny fanovàna :',
-'prefsnologin' => 'Tsy tafiditra',
-'prefsnologintext' => 'Mila <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} misoratra ary tafiditra]</span> amin\'ny kaontinao ianao vao afaka manova ny safidinao.',
 'changepassword' => 'Hanova tenimiafina',
 'prefs-skin' => 'Endrika',
 'skin-preview' => 'Tsipalotra',
@@ -1368,7 +1346,6 @@ ihany no miseho amin'ny vokatry ny karoka).",
 'prefs-email' => 'Safidy mikasika ny imailaka',
 'prefs-rendering' => 'Fampisehoana',
 'saveprefs' => 'Tehirizo',
-'resetprefs' => 'Avereno',
 'restoreprefs' => "Hamerina ny safidy taloha (amin'ny fizarana rehetra)",
 'prefs-editing' => 'Fanovana',
 'rows' => 'Filaharana :',
@@ -1386,7 +1363,6 @@ ihany no miseho amin'ny vokatry ny karoka).",
 'localtime' => 'Ora an-toerana',
 'timezoneuseserverdefault' => 'Sanda tsipalotry ny wiki ($1)',
 'timezoneuseoffset' => 'Hafa (safidio ny faritra)',
-'timezoneoffset' => "Fahasamihafan'ny ora<sup>1</sup>:",
 'servertime' => "Oran'ny lohamilina",
 'guesstimezone' => "
 Fenoy araka ny datin'ny solosainan'ny mpitsidika",
@@ -1639,6 +1615,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',
@@ -2105,10 +2082,8 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
 'protectedpages' => 'Pejy voaaro',
 'protectedpages-indef' => 'Ny fiarovana maharitra ihany',
 'protectedpages-cascade' => 'Ny fanovana an-driana ihany',
-'protectedpagestext' => "Ny pejy manaraka dia voaaro amin'ny fanovana sy ny famindrana.",
 'protectedpagesempty' => 'Tsy misy pejy voaaro ankehitriny.',
 'protectedtitles' => 'Lohateny voaaro',
-'protectedtitlestext' => "Ny lohateny manaraka dia voaaro amin'ny famoronana",
 'protectedtitlesempty' => "Tsy misy lohateny voaaro miaraka amin'ireo mpihazaka ireo.",
 'listusers' => 'Lisitry ny mpikambana',
 'listusers-editsonly' => "Ny mpikambana manam-pandraisan'anjara ihany no aseho",
@@ -3368,10 +3343,6 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-m' => "Avaratra arak'andriamby",
 
-# External editor support
-'edit-externally' => "Ovao amin'ny alalan'ny fampiasana fitaovana ivelan'ity Wiki ity io rakitra io",
-'edit-externally-help' => "jereo any amin'[https://www.mediawiki.org/wiki/Manual:External_editors ny torolalana] ny fanazavana fanampiny,.",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'rehetra',
 'namespacesall' => 'rehetra',
index aa005f6..dfeeb7a 100644 (file)
@@ -208,7 +208,6 @@ $messages = array(
 'qbedit' => 'Тӧрлаташ',
 'qbpageoptions' => 'Тиде лаштык',
 'qbmyoptions' => 'Мыйын лаштык-влак',
-'qbspecialpages' => 'Лӱмын ыштыме лаштык-влак',
 'faq' => 'ЧӱВаЙо (Чӱчкыдын вашлиялтше йодыш-влак)',
 
 # Vector skin
@@ -230,7 +229,7 @@ $messages = array(
 'errorpagetitle' => 'Йоҥылыш',
 'returnto' => '$1 деке пӧртылаш.',
 'tagline' => '{{SITENAME}} гыч',
-'help' => 'Ð\9fолÑ\88Ñ\8bÑ\88',
+'help' => 'Полыш',
 'search' => 'Кычалмаш',
 'searchbutton' => 'Кычалаш',
 'go' => 'Куснаш',
@@ -298,8 +297,6 @@ $messages = array(
 'ok' => 'Йӧра',
 'retrievedfrom' => 'Налме вер — "$1"',
 'youhavenewmessages' => 'Тендан $1 уло ($2).',
-'newmessageslink' => 'У серыш',
-'newmessagesdifflink' => 'пытартыш тӧрлатымаш',
 'editsection' => 'тӧрлаташ',
 'editold' => 'тӧрлаташ',
 'viewsourceold' => 'тӱҥалтыш текстым ончалаш',
@@ -526,10 +523,6 @@ $messages = array(
 # Search results
 'searchresults' => 'Кычалын мумо',
 'searchresults-title' => '«$1»лан кычалын мумо',
-'searchresulttext' => "{{SITENAME}}'ыште кычалмаш нерген шукырак палнеда гын, [[{{MediaWiki:Helppage}}|полышым]] ончыза.",
-'searchsubtitle' => 'Тый кычалынат: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|чыла лаштык-влакым, кудыжо тӱҥалыт: "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|чыла лаштык-влакым, "$1" дене кылым палемдат]])',
-'searchsubtitleinvalid' => "Тый кычалыч '''$1'''",
-'notitlematches' => 'Лаштык-влакын лӱмыштышт икгайлык уке',
 'notextmatches' => 'Лаштык-влакыште икгайлык возымо уке',
 'prevn' => 'кодшо {{PLURAL:$1|$1}}',
 'nextn' => 'весе {{PLURAL:$1|$1}}',
@@ -559,13 +552,10 @@ $messages = array(
 'searchrelated' => 'кылдалтше',
 'searchall' => 'чыла',
 'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|'''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
-'nonefound' => "'''Ешартыш''':  Посна палемдыме огыл гын, кычалмаш южо лӱм-влак коклаште гына эрта. Чыла лаштык-влак коклаште кычалашлан (каҥашымаш, ямдылык-влак да т.м.) шке йодмашыштет ''all:'' префиксым кучылт, але кӱлешан лӱм-влакым палемде.",
 'search-nonefound' => 'Тыйын йодышет почеш нимо муалтын огыл',
-'powersearch' => 'Сайынрак кычал',
 'powersearch-legend' => 'Сайынрак кычалаш',
 'powersearch-ns' => 'Кычалаш тиде лӱм-влакын кумдыкышт-влакыште:',
 'powersearch-redir' => 'Вес вере колтымо лаштык-влакым ончыкташ',
-'powersearch-field' => 'Кычалаш',
 'powersearch-togglelabel' => 'Сайлаш:',
 'powersearch-toggleall' => 'Чыла',
 'powersearch-togglenone' => 'Нимо',
@@ -588,7 +578,6 @@ $messages = array(
 'prefs-email' => 'Электрон почто келыштарымаш',
 'prefs-rendering' => 'Тӱжвал сын',
 'saveprefs' => 'Аралаш',
-'resetprefs' => 'Тӧрлатымым шотыш налаш огыл',
 'restoreprefs' => 'Тӱҥалтыш келыштарымашым пӧртылташ',
 'prefs-editing' => 'Тöрлатымаш',
 'searchresultshead' => 'Кычалме',
@@ -654,6 +643,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 гыч тӱҥалын у вашталтымашым ончыкташ',
@@ -1099,10 +1089,6 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Файлым ӧрдыж программыште тӧрлаташ',
-'edit-externally-help' => '(Сайрак палашлан ончал [https://www.mediawiki.org/wiki/Manual:External_editors шындымаш нерген туныктымашым])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'чыла',
 'namespacesall' => 'чыла',
@@ -1158,4 +1144,8 @@ $messages = array(
 
 #Размещайте фрагменты регулярных выражений над этой строчкой. Оставьте эту строчку такой, как она есть.</pre>',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Йӧра',
+'expand_templates_preview' => 'Ончылгоч ончымаш',
+
 );
index 14004dc..5931f34 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(
@@ -268,7 +319,6 @@ $messages = array(
 'qbedit' => 'Suntiang',
 'qbpageoptions' => 'Laman ko',
 'qbmyoptions' => 'Laman denai',
-'qbspecialpages' => 'Laman istimewa',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -386,8 +436,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}}',
@@ -477,7 +525,6 @@ Indak ado keterangan.',
 'perfcached' => 'Data barikuik ko diambiak dari singgahan dan mungkin indak data nan baru. Nan tabanyak dari {{PLURAL:$1|$1 hasilnyo}} ado di singgahan.',
 'perfcachedts' => 'Data barikuik ko singgahan, dan tarakhia dipabarui tanggal $1. Nan tabanyak dari tanggal {{PLURAL:$1|$1}}, hasilnyo ado di singgahan.',
 'querypage-no-updates' => 'Pamutakhiran dari laman ko sadang dimatian. Data nan ado di siko kini ko indak akan dimuaik ulang.',
-'wrong_wfQuery_params' => 'Parameter salah ka wfQuery()<br />Fungsi: $1<br />Pamintaan: $2',
 'viewsource' => 'Caliak sumber',
 'viewsource-title' => 'Caliak sumber untuak $1',
 'actionthrottled' => 'Tindakan tabateh',
@@ -1093,11 +1140,7 @@ $1",
 # Search results
 'searchresults' => 'Hasil pancarian',
 'searchresults-title' => 'Hasil pancarian untuak "$1"',
-'searchresulttext' => 'Untuak informasi labiah lanjuik tantang pancarian {{SITENAME}}, caliak [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Sanak mancari \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sado laman nan dimulai jo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sado laman nan tapauik ka "$1"]])',
-'searchsubtitleinvalid' => "Sanak mancari '''$1'''",
 'titlematches' => 'Judul laman pas',
-'notitlematches' => 'Indak ado judul nan pas',
 'textmatches' => 'Teks laman pas',
 'notextmatches' => 'Indak ado judul nan pas',
 'prevn' => '{{PLURAL:$1|$1}} sabalunnyo',
@@ -1106,10 +1149,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|hasil}} barikuiknyo',
 'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil}} per laman',
 'viewprevnext' => 'Caliak ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Atua pancarian',
 'searchmenu-exists' => "'''Ado laman nan banamo \"[[:\$1]]\" pado wiki ko.'''",
 'searchmenu-new' => "'''Buek laman \"[[:\$1]]\" di wiki ko!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Cari laman jo awalan ko]]',
 'searchprofile-articles' => 'Laman isi',
 'searchprofile-project' => 'Laman Bantuan jo Proyek',
 'searchprofile-images' => 'Multimedia',
@@ -1137,14 +1178,10 @@ $1",
 'showingresults' => "Di bawah ko dikaluaan sampai {{PLURAL:$1|'''$1''' hasil}}, dimulai dari #'''$2'''.",
 'showingresultsnum' => "Di bawah ko dikaluaan {{PLURAL:$3|'''$3'''}} hasil mulai dari #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
-'nonefound' => "'''Catatan''': hanyo babarapo ruangnamo nan dicari sacaro default.
-Cubo awali pamintaan Sanak tu jo ''sadonyo:'' untuak mancari kasado kandungan (tamasuak laman rundiang, templat, dll), atau gunoan ruangnamo nan diinginkan sabagai awalan.",
 'search-nonefound' => 'Indak ado hasil nan cocok sasuai jo parmintaan',
-'powersearch' => 'Pencarian lanjut',
 'powersearch-legend' => 'Pencarian lanjut',
 'powersearch-ns' => 'Mancari di ruangnamo:',
 'powersearch-redir' => 'Daftar pangaliahan',
-'powersearch-field' => 'Mancari',
 'powersearch-togglelabel' => 'Piliah:',
 'powersearch-toggleall' => 'Sadonyo',
 'powersearch-togglenone' => 'Dak ado',
@@ -1157,8 +1194,6 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'preferences' => 'Pangaturan',
 'mypreferences' => 'Pangaturan',
 'prefs-edits' => 'Jumlah suntiangan:',
-'prefsnologin' => 'Alun masuak log',
-'prefsnologintext' => 'Sanak musti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuak log]</span> untuak mengeset pangaturan.',
 'changepassword' => 'Tuka kato sandi',
 'prefs-skin' => 'Kulik',
 'skin-preview' => 'Caliak',
@@ -1182,7 +1217,6 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'prefs-email' => 'Piliahan surel',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Batalan parubahan',
 'restoreprefs' => 'Baliakan ka setelan awal',
 'prefs-editing' => 'Panyuntiangan',
 'rows' => 'Barih:',
@@ -1200,7 +1234,6 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'localtime' => 'Wakatu satampaik:',
 'timezoneuseserverdefault' => 'Gunokan nan dari wiki ($1)',
 'timezoneuseoffset' => 'Lainnyo (tantuan pabedoannyo)',
-'timezoneoffset' => 'Pabedoan¹:',
 'servertime' => 'Wakatu server:',
 'guesstimezone' => 'Isian dari paramban web',
 'timezoneregion-africa' => 'Afrika',
@@ -2468,10 +2501,6 @@ Nan lainnyo akan tasuruak sacaro baku.
 'exif-usercomment' => 'Komen pangguno',
 'exif-relatedsoundfile' => 'Berkas audio nan bahubuangan',
 
-# External editor support
-'edit-externally' => 'Suntiang berkas ko jo aplikasi lua',
-'edit-externally-help' => '(Caliak [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] untuak informasi lanjuiknyo)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kasadonyo',
 'namespacesall' => 'sadonyo',
@@ -2551,8 +2580,7 @@ Sanak mustilah alah manarimo [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi P
 
 # Special:SpecialPages
 'specialpages' => 'Laman istimewa',
-'specialpages-note' => '----
-* Laman istimewa normal.
+'specialpages-note' => '* Laman istimewa normal.
 * <span class="mw-specialpagerestricted">Laman istimewa talarang.</span>
 * <span class="mw-specialpagecached">Laman istimewa tasinggah (mungkin usang).</span>',
 'specialpages-group-maintenance' => 'Laporan pamaliharoan',
@@ -2650,4 +2678,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 db21975..84eca7f 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:' ),
@@ -507,7 +511,6 @@ $messages = array(
 'qbedit' => 'Уреди',
 'qbpageoptions' => 'Оваа страница',
 'qbmyoptions' => 'Мои страници',
-'qbspecialpages' => 'Специјални страници',
 'faq' => 'ЧПП',
 'faqpage' => 'Project:ЧПП',
 
@@ -626,12 +629,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' => 'уреди',
@@ -730,9 +731,6 @@ $1',
 'perfcachedts' => 'Следните податоци се кеширани, последен пат подновени на $1. Во кешот {{PLURAL:$4|е достапен највеќе еден резултат|се достапни највеќе $4 резултати}}.',
 'querypage-no-updates' => 'Подновите на оваа страница моментално се оневозможени.
 Податоците овде во моментов нема да се подновуваат.',
-'wrong_wfQuery_params' => 'Грешни параметри до wfQuery()<br />
-Функција: $1<br />
-Барање: $2',
 'viewsource' => 'Преглед',
 'viewsource-title' => 'Преглед на кодот на $1',
 'actionthrottled' => 'Дејството е успорено',
@@ -764,7 +762,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''",
@@ -867,7 +866,7 @@ $2',
 'passwordtooshort' => 'Лозинката мора да има најмалку {{PLURAL:$1|1 знак|$1 знаци}}.',
 'password-name-match' => 'Лозинката мора да се разликува од корисничкото име.',
 'password-login-forbidden' => 'Употребата на ова корисничко име и лозинка е забранета.',
-'mailmypassword' => 'Ð\98Ñ\81пÑ\80аÑ\82и Ð½ова лозинка',
+'mailmypassword' => 'Ð\9dова лозинка',
 'passwordremindertitle' => 'Нова привремена лозинка за {{SITENAME}}',
 'passwordremindertext' => 'Некој (најверојатно вие, од IP-адреса $1) побара нова лозинка за {{SITENAME}} ($4).
 Создадена е привремена лозинка „$3“ за корисничката сметка „$2“.
@@ -940,7 +939,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Менување на лозинка',
 'passwordreset-text-one' => 'Пополнете го образецов за да ја измените лозинката.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ð\9fополнеÑ\82е ÐµÐ´Ð½Ð¾ Ð¾Ð´ Ð¿Ð¾Ð»Ð¸Ñ\9aаÑ\82а Ð·Ð° Ð´Ð° Ñ\98а Ñ\81мениÑ\82е Ð»Ð¾Ð·Ð¸Ð½ÐºÐ°та.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ð\9fополнеÑ\82е ÐµÐ´Ð½Ð¾ Ð¾Ð´ Ð¿Ð¾Ð»Ð¸Ñ\9aаÑ\82а Ð·Ð° Ð´Ð¾Ð±Ð¸ÐµÑ\82е Ð¿Ñ\80ивÑ\80емена Ð»Ð¾Ð·Ð¸Ð½ÐºÐ° Ð¿Ð¾ Ðµ-поÑ\88та.}}',
 'passwordreset-legend' => 'Нова лозинка',
 'passwordreset-disabled' => 'На ова вики е оневозможено задавање на нова лозинка.',
 'passwordreset-emaildisabled' => 'Можностите за е-пошта се исклучени на ова вики',
@@ -1436,12 +1435,8 @@ $1",
 # Search results
 'searchresults' => 'Резултати од пребарувањето',
 'searchresults-title' => 'Резултати од пребарувањето на „$1“',
-'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' => 'Совпаднат текст во страниците',
 'notextmatches' => 'Ниеден текст во статиите не одговара',
 'prevn' => '{{PLURAL:$1|претходна $1| претходни $1}}',
@@ -1450,10 +1445,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Следен|Следни}} $1 {{PLURAL:$1|резултат|резултати}}',
 'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултати}} на страница',
 'viewprevnext' => 'Погледајте ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Нагодувања на пребарувањето',
 'searchmenu-exists' => "'''На ова вики има страница со наслов „[[:$1]]“'''",
 'searchmenu-new' => "Создајте ја страницата „[[:$1]]“ на ова вики!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прелистување на страници со оваа претставка]]',
 'searchprofile-articles' => 'Статии',
 'searchprofile-project' => 'Помош и проектни страници',
 'searchprofile-images' => 'Податотеки',
@@ -1481,14 +1474,10 @@ $1",
 'showingresults' => "Подолу {{PLURAL:$1|е прикажан '''1''' резултат|се прикажани '''$1''' резултати}} почнувајќи од бр. '''$2'''.",
 'showingresultsnum' => "Подолу {{PLURAL:$3|е прикажан '''1''' резултат|се прикажани '''$3''' резултати}} почнувајќи од '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултати '''$1 - $2''' од '''$3'''}} за '''$4'''",
-'nonefound' => "'''Напомена''': Само некои именски простори се пребаруваат по основно.
-Обидете се со додавање на претставката ''all:'' за да пребарувате низ сите содржини (вклучувајќи страници за разговор, шаблони, итн) или користете го бараниот именски простор како претставка.",
 'search-nonefound' => 'Нема резултати што одговараат на бараното.',
-'powersearch' => 'Напредно пребарување',
 'powersearch-legend' => 'Напредно пребарување',
 'powersearch-ns' => 'Пребарај во следниве именски простори:',
 'powersearch-redir' => 'Дај и пренасочувања',
-'powersearch-field' => 'Пребарување на',
 'powersearch-togglelabel' => 'Одбери:',
 'powersearch-toggleall' => 'Сè',
 'powersearch-togglenone' => 'Ништо',
@@ -1502,8 +1491,7 @@ $1",
 'preferences' => 'Нагодувања',
 'mypreferences' => 'нагодувања',
 'prefs-edits' => 'Број на уредувања:',
-'prefsnologin' => 'Не сте најавени',
-'prefsnologintext' => 'Мора да бидете <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} најавени]</span> за да ги менувате вашите кориснички нагодувања.',
+'prefsnologintext2' => 'Треба да сте $1 за да можете да ги поставувате корисничките нагодувања.',
 'changepassword' => 'Смени лозинка',
 'prefs-skin' => 'Руво',
 'skin-preview' => 'Преглед',
@@ -1527,7 +1515,6 @@ $1",
 'prefs-email' => 'Нагодувања за е-пошта',
 'prefs-rendering' => 'Изглед',
 'saveprefs' => 'Зачувај',
-'resetprefs' => 'Избриши незачувани измени',
 'restoreprefs' => 'Врати сè по основно (во сите делови)',
 'prefs-editing' => 'Уредување',
 'rows' => 'Редови:',
@@ -1548,7 +1535,6 @@ $1",
 'localtime' => 'Локално време:',
 'timezoneuseserverdefault' => 'Од викито ($1)',
 'timezoneuseoffset' => 'Друго (посочете отстапување)',
-'timezoneoffset' => 'Отстапување¹:',
 'servertime' => 'Време на опслужувачот:',
 'guesstimezone' => 'Пополни од прелистувачот',
 'timezoneregion-africa' => 'Африка',
@@ -1804,6 +1790,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',
@@ -2317,10 +2306,8 @@ $1',
 'protectedpages' => 'Заштитени страници',
 'protectedpages-indef' => 'Само бесконечни заштити',
 'protectedpages-cascade' => 'Само каскадни заштити',
-'protectedpagestext' => 'Следните страници се заштитени во поглед на преместување и уредување',
 'protectedpagesempty' => 'Во моментов нема заштитени страници со параметрите кои ги зададовте.',
 'protectedtitles' => 'Заштитени наслови',
-'protectedtitlestext' => 'Следните наслови се забранети за создавање',
 'protectedtitlesempty' => 'Во овој момент нема заштитени наслови кои ги задоволуваат наведените критериуми.',
 'listusers' => 'Список на корисници',
 'listusers-editsonly' => 'Прикажи само корисници кои уредувале',
@@ -2548,7 +2535,7 @@ $NEWPAGE
 е-пошта: $PAGEEDITOR_EMAIL
 вики: $PAGEEDITOR_WIKI
 
\9fовеÑ\9cе Ð½ÐµÐ¼Ð° Ð´Ð° Ð´Ð¾Ð±Ð¸Ð²Ð°Ñ\82е Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aа Ð²Ð¾ Ñ\81лÑ\83Ñ\87аÑ\98 Ð½Ð° Ð´Ñ\80Ñ\83ги Ð¿Ð¾Ð½Ð°Ñ\82амоÑ\88ни Ð¿Ñ\80омени, Ð¾Ñ\81вен Ð°ÐºÐ¾ Ð½Ðµ Ñ\98а Ð¿Ð¾Ñ\81еÑ\82иÑ\82е Ð¾Ð²Ð°Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а.
\9fовеÑ\9cе Ð½ÐµÐ¼Ð° Ð´Ð° Ð´Ð¾Ð±Ð¸Ð²Ð°Ñ\82е Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aа Ð²Ð¾ Ñ\81лÑ\83Ñ\87аÑ\98 Ð½Ð° Ð´Ñ\80Ñ\83ги Ð¿Ð¾Ð½Ð°Ñ\82амоÑ\88ни Ð°ÐºÑ\82ивноÑ\81Ñ\82и, Ð¾Ñ\81вен Ð°ÐºÐ¾ Ð½Ðµ Ñ\98а Ð¿Ð¾Ñ\81еÑ\82иÑ\82е Ð¾Ð²Ð°Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а Ð´Ð¾Ð´ÐµÐºÐ° Ñ\81Ñ\82е Ð½Ð°Ñ\98авени.
 Можете и да ги поништите ознаките за известување за сите набљудувани страници на вашиот список на набљудувања.
 
 Известителниот систем на {{SITENAME}}
@@ -3929,10 +3916,6 @@ Variants for Chinese language
 'exif-urgency-high' => 'Голема ($1)',
 'exif-urgency-other' => 'Кориснички-зададен приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Уреди ја податотеката со надворешен програм',
-'edit-externally-help' => '(Видете [https://www.mediawiki.org/wiki/Manual:External_editors повеќе напатствија] за нагодувањето).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'сите',
 'namespacesall' => 'сите',
@@ -4251,10 +4234,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Специјални страници',
-'specialpages-note' => '----
-* Нормални специјални страници.
-* <span class="mw-specialpagerestricted">Ограничени специјални страници.</span>
-* <span class="mw-specialpagecached">Кеширани специјални страници (може да се застарени).</span>',
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Нормални специјални страници.
+* <span class="mw-specialpagerestricted">Ограничени специјални страници.</span>',
 'specialpages-group-maintenance' => 'Извештаи за одржување',
 'specialpages-group-other' => 'Други специјални страници',
 'specialpages-group-login' => 'Најава / регистрација',
@@ -4466,4 +4448,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 e54fe36..e149703 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' ),
@@ -499,7 +511,6 @@ $messages = array(
 'qbedit' => 'തിരുത്തുക',
 'qbpageoptions' => 'ഈ താൾ',
 'qbmyoptions' => 'എന്റെ താളുകൾ',
-'qbspecialpages' => 'പ്രത്യേക താളുകൾ',
 'faq' => 'പതിവുചോദ്യങ്ങൾ',
 'faqpage' => 'Project:പതിവുചോദ്യങ്ങൾ',
 
@@ -522,7 +533,7 @@ $messages = array(
 
 'navigation-heading' => 'ഗമന വഴികാട്ടി',
 'errorpagetitle' => 'പിഴവ്',
-'returnto' => '$1 à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³à´¿à´²àµ\87à´\95àµ\8dà´\95àµ\8d à´¤à´¿à´°à´¿à´\9aàµ\8dà´\9aàµ\81à´ªàµ\8bà´µുക.',
+'returnto' => '$1 à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³à´¿à´²àµ\87à´\95àµ\8dà´\95àµ\8d à´®à´\9fà´\99àµ\8dà´\99ുക.',
 'tagline' => '{{SITENAME}} സംരംഭത്തിൽ നിന്ന്',
 'help' => 'സഹായം',
 'search' => 'തിരയൂ',
@@ -615,12 +626,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' => 'തിരുത്തുക',
@@ -718,9 +727,6 @@ $1',
 'perfcached' => 'താഴെ കൊടുത്തിരിക്കുന്ന വിവരം ശേഖരിച്ചു വെച്ചിരിക്കുന്നതാണ്, അതുകൊണ്ട് ചിലപ്പോൾ പുതിയതായിരിക്കണമെന്നില്ല. പരമാവധി {{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}} ശേഖരിച്ചുവെച്ചിരിക്കുന്നവയിൽ ഉണ്ട്.',
 'perfcachedts' => 'താഴെയുള്ള വിവരങ്ങൾ ശേഖരിച്ച് വെച്ചവയിൽ പെടുന്നു, അവസാനം പുതുക്കിയത് $1-നു ആണ്‌. പരമാവധി {{PLURAL:$4|ഒരു ഫലം|$4 ഫലങ്ങൾ}} ശേഖരിച്ചുവെച്ചിരിക്കുന്നവയിൽ ഉണ്ട്.',
 'querypage-no-updates' => 'ഈ താളിന്റെ പുതുക്കൽ തൽക്കാലം നടക്കുന്നില്ല. ഇവിടുള്ള വിവരങ്ങൾ ഏറ്റവും പുതിയതാവണമെന്നില്ല.',
-'wrong_wfQuery_params' => 'wfQuery()എന്നതിലേക്ക് തെറ്റായ ചരങ്ങൾ<br />
-നിർദ്ദേശം: $1<br />
-അന്വേഷണം: $2',
 'viewsource' => 'മൂലരൂപം കാണുക',
 'viewsource-title' => '$1 എന്ന താളിന്റെ മൂലരൂപം കാണുക',
 'actionthrottled' => 'പ്രവൃത്തി നടത്തിയിരിക്കുന്നു',
@@ -750,7 +756,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''",
@@ -760,7 +767,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}} ക്രമീകരണങ്ങളിൽ]] മാറ്റം വരുത്താൻ മറക്കരുത്.',
@@ -847,7 +854,7 @@ $2',
 'passwordtooshort' => 'രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.',
 'password-name-match' => 'താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.',
 'password-login-forbidden' => 'ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.',
-'mailmypassword' => 'à´ªàµ\81തിയ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\87à´®àµ\86യിൽ à´\9aàµ\86à´¯àµ\8dà´¯ുക',
+'mailmypassword' => 'രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´ªàµ\81à´¨à´\83à´\95àµ\8dà´°à´®àµ\80à´\95à´°à´¿à´\95àµ\8dà´\95ുക',
 'passwordremindertitle' => '{{SITENAME}} സംരംഭത്തിൽ ഉപയോഗിക്കാനുള്ള താത്കാലിക രഹസ്യവാക്ക്',
 'passwordremindertext' => 'ആരോ ഒരാൾ ($1 എന്ന ഐ.പി. വിലാസത്തിൽനിന്ന് ഒരാൾ, ഒരു പക്ഷേ താങ്കളായിരിക്കാം) {{SITENAME}} ($4) സംരംഭത്തിലേക്ക് പുതിയ രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിരിക്കുന്നു. "$2" എന്ന ഉപയോക്താവിന്റെ താത്കാലിക രഹസ്യവാക്കായി "$3" സജ്ജീകരിച്ചിരിക്കുന്നു. താങ്കൾക്ക് ആവശ്യമെങ്കിൽ, താങ്കൾ പ്രവേശിച്ചശേഷം പുതിയ രഹസ്യവാക്ക് സജ്ജീകരിക്കേണ്ടതാണ്. താങ്കളുടെ താത്കാലിക രഹസ്യവാക്കിന്റെ കാലാവധി {{PLURAL:$5|ഒരു ദിവസമാകുന്നു|$5 ദിവങ്ങളാകുന്നു}}.
 
@@ -912,7 +919,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക',
 'passwordreset-text-one' => 'രഹസ്യവാക്ക് പുനർസജ്ജീകരിക്കാനായി ഈ ഫോം പൂരിപ്പിക്കുക.',
-'passwordreset-text-many' => '{{PLURAL:$1|താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´ªàµ\81നസà´\9càµ\8dà´\9càµ\80à´\95à´°à´¿à´\95àµ\8dà´\95ാൻ à´\92à´°àµ\81 à´«àµ\8bà´\82 പൂരിപ്പിച്ചു നൽകുക.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à´\87à´®àµ\86യിൽ à´µà´´à´¿ à´¤à´¾à´¤àµ\8dà´\95ാലിà´\95 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´²à´­à´¿à´\95àµ\8dà´\95ാനായി à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dനവയിൽ à´\8fà´¤àµ\86à´\99àµ\8dà´\95à´¿à´²àµ\81à´®àµ\8aà´¨àµ\8dà´¨àµ\8d പൂരിപ്പിച്ചു നൽകുക.}}',
 'passwordreset-legend' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക',
 'passwordreset-disabled' => 'ഈ വിക്കിയിൽ രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കലുകൾ പ്രവർത്തരഹിതമാക്കിയിരിക്കുകയാണ്.',
 'passwordreset-emaildisabled' => 'ഈ വിക്കിയിൽ ഇമെയിൽ സൗകര്യങ്ങൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.',
@@ -1385,12 +1392,8 @@ $1",
 # Search results
 'searchresults' => 'തിരച്ചിലിന്റെ ഫലം',
 'searchresults-title' => '"$1" എന്നു തിരഞ്ഞതിനു ലഭ്യമായ ഫലങ്ങൾ',
-'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' => 'താങ്കൾ തിരഞ്ഞ വാക്കുകൾ ഉള്ള താളുകൾ',
 'notextmatches' => 'താളുകളുടെ ഉള്ളടക്കത്തിൽ താങ്കൾ തിരഞ്ഞ വാക്കുമായി യോജിക്കുന്ന ഫലങ്ങൾ ഒന്നും തന്നെയില്ല',
 'prevn' => 'മുമ്പത്തെ {{PLURAL:$1|$1}}',
@@ -1399,10 +1402,8 @@ $1",
 'nextn-title' => 'അടുത്ത {{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}}',
 'shown-title' => '{{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}} വീതം താളിൽ കാണിക്കുക',
 'viewprevnext' => '$1 {{int:pipe-separator}} $2 എണ്ണം കാണുക ($3)',
-'searchmenu-legend' => 'തിരച്ചിൽ ഉപാധികൾ',
 'searchmenu-exists' => "'''\"[[:\$1]]\" എന്ന തലക്കെട്ടിൽ ഒരു താൾ ഈ വിക്കിയിൽ നിലവിലുണ്ട്'''",
 'searchmenu-new' => "'''ഈ വിക്കിയിൽ \"[[:\$1]]\" താൾ നിർമ്മിക്കുക!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ഈ പൂർവ്വപദങ്ങളുള്ള താളുകൾ ബ്രൗസ് ചെയ്യുക]]',
 'searchprofile-articles' => 'ലേഖനങ്ങളിൽ',
 'searchprofile-project' => 'സഹായം, പദ്ധതി താളുകളിൽ',
 'searchprofile-images' => 'പ്രമാണങ്ങളിൽ',
@@ -1430,13 +1431,10 @@ $1",
 'showingresults' => "'''$2''' മുതലുള്ള {{PLURAL:$1|'''ഒരു''' ഫലം|'''$1''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
 'showingresultsnum' => "'''$2''' മുതലുള്ള {{PLURAL:$3|'''ഒരു''' ഫലം|'''$3''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
 'showingresultsheader' => "'''$4''' എന്ന പദത്തിനു ആകെ ലഭിച്ച {{PLURAL:$5| '''$3''' ഫലത്തിൽ '''$1''' എണ്ണം|'''$3''' ഫലത്തിൽ '''$1 മുതൽ $2''' വരെയുള്ളവ}}",
-'nonefound' => "'''ശ്രദ്ധിക്കുക''': ചില നാമമേഖലകൾ മാത്രമേ സ്വതേ തിരയാറുള്ളൂ. എല്ലാ വിവരങ്ങളിലും തിരയാൻ '''തിരയേണ്ട നാമമേഖലകൾ''' ''എല്ലാം'' എന്നതോ ആവശ്യമായ നാമമേഖലമാത്രം തിരയുവാൻ (സംവാദം, ഫലകം, തുടങ്ങിയവ) അതു മാത്രമായോ ടിക്ക് ചെയ്യേണ്ടതാണ്.",
 'search-nonefound' => 'താങ്കൾ തിരഞ്ഞ പദത്തിനു യോജിച്ച ഫലങ്ങളൊന്നും ലഭിച്ചില്ല.',
-'powersearch' => 'തിരയൂ',
 'powersearch-legend' => 'വിപുലീകൃത തിരച്ചിൽ',
 'powersearch-ns' => 'തിരയേണ്ട നാമമേഖലകൾ',
 'powersearch-redir' => 'തിരിച്ചുവിടലുകൾ കാണിക്കുക',
-'powersearch-field' => 'ഇതിനു വേണ്ടി തിരയുക',
 'powersearch-togglelabel' => 'അടയാളപ്പെടുത്തുക:',
 'powersearch-toggleall' => 'എല്ലാം',
 'powersearch-togglenone' => 'ഒന്നുംവേണ്ട',
@@ -1448,8 +1446,7 @@ $1",
 'preferences' => 'ക്രമീകരണങ്ങൾ',
 'mypreferences' => 'ക്രമീകരണങ്ങൾ',
 'prefs-edits' => 'ആകെ തിരുത്തുകൾ:',
-'prefsnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
-'prefsnologintext' => 'ഉപയോക്തൃക്രമീകരണങ്ങൾ മാറ്റാൻ താങ്കൾ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ലോഗിൻ]</span> ചെയ്തിരിക്കണം.',
+'prefsnologintext2' => 'താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി $1.',
 'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
 'prefs-skin' => 'ദൃശ്യരൂപം',
 'skin-preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
@@ -1473,7 +1470,6 @@ $1",
 'prefs-email' => 'ഇമെയിൽ ക്രമീകരണങ്ങൾ',
 'prefs-rendering' => 'ദൃശ്യരൂപം',
 'saveprefs' => 'സേവ് ചെയ്യുക',
-'resetprefs' => 'സേവ് ചെയ്തിട്ടില്ലാത്ത മാറ്റങ്ങൾ പുനഃക്രമീകരിക്കുക',
 'restoreprefs' => 'സ്വതേയുള്ള ക്രമീകരണങ്ങൾ പുനഃസ്ഥാപിക്കുക (എല്ലാ ഭാഗങ്ങളിലേയും)',
 'prefs-editing' => 'തിരുത്തൽ',
 'rows' => 'വരി:',
@@ -1494,7 +1490,6 @@ $1",
 'localtime' => 'പ്രാദേശിക സമയം:',
 'timezoneuseserverdefault' => 'വിക്കിയിൽ സ്വതേയുള്ളത് ഉപയോഗിക്കുക ($1)',
 'timezoneuseoffset' => 'മറ്റുള്ളത് (എന്താണെന്നു നൽകുക)',
-'timezoneoffset' => 'വ്യത്യാസം¹:',
 'servertime' => 'സെർവർ സമയം:',
 'guesstimezone' => 'സമയവ്യത്യാസം ബ്രൗസറിൽ നിന്നും ശേഖരിക്കൂ',
 'timezoneregion-africa' => 'ആഫ്രിക്ക',
@@ -1508,7 +1503,7 @@ $1",
 'timezoneregion-indian' => 'ഇന്ത്യൻ മഹാസമുദ്രം',
 'timezoneregion-pacific' => 'ശാന്തസമുദ്രം',
 'allowemail' => 'എനിക്ക് എഴുത്തയക്കാൻ മറ്റുള്ളവരെ അനുവദിക്കുക',
-'prefs-searchoptions' => 'തിരയàµ\81à´\95',
+'prefs-searchoptions' => 'തിരà´\9aàµ\8dà´\9aിൽ',
 'prefs-namespaces' => 'നാമമേഖലകൾ',
 'defaultns' => 'അല്ലെങ്കിൽ ഈ നാമമേഖലകളിൽ തിരയുക:',
 'default' => 'സ്വതേ',
@@ -1747,8 +1742,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 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
@@ -2237,10 +2234,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'protectedpages' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന താളുകൾ',
 'protectedpages-indef' => 'അനന്തകാലത്തേയ്ക്ക് സംരക്ഷിക്കപ്പെട്ടവ മാത്രം',
 'protectedpages-cascade' => 'നിർഝരിത സംരക്ഷണങ്ങൾ മാത്രം',
-'protectedpagestext' => 'താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്ന താളുകൾ തലക്കെട്ട് മാറ്റുന്നതിൽ നിന്നും തിരുത്തൽ വരുത്തുന്നതിൽ നിന്നും സം‌രക്ഷിച്ചിരിക്കുന്നു',
 'protectedpagesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു താളുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
 'protectedtitles' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന തലക്കെട്ടുകൾ',
-'protectedtitlestext' => 'താഴെക്കാണുന്ന തലക്കെട്ടുകൾ സൃഷ്ടിക്കുന്നത് നിരോധിച്ചിരിക്കുന്നു',
 'protectedtitlesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു തലക്കെട്ടുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
 'listusers' => 'ഉപയോക്താക്കളുടെ പട്ടിക',
 'listusers-editsonly' => 'തിരുത്തലുകൾ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കളെ മാത്രം കാണിക്കുക',
@@ -2468,8 +2463,9 @@ $NEWPAGE
 മെയിൽ: $PAGEEDITOR_EMAIL
 വിക്കി: $PAGEEDITOR_WIKI
 
-താങ്കൾ ഈ താൾ സന്ദർശിക്കുന്നില്ലങ്കിൽ മറ്റ് അറിയിപ്പുകൾ ഒന്നുമുണ്ടാകുന്നതല്ല. ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക സന്ദർശിച്ചും ഉൾപ്പെട്ട താളുകളിലെ അറിയിപ്പ് മുദ്രകൾ താങ്കൾക്ക് പുനഃക്രമീകരിക്കാവുന്നതാണ്‌.
-             താങ്കളുടെ {{SITENAME}} സുഹൃദ് അറിയിപ്പ് സജ്ജീകരണം
+താങ്കൾ ലോഗിൻ ചെയ്ത് ഈ താൾ സന്ദർശിക്കുന്നില്ലങ്കിൽ മറ്റ് അറിയിപ്പുകൾ ഒന്നുമുണ്ടാകുന്നതല്ല. ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക സന്ദർശിച്ചും ഉൾപ്പെട്ട താളുകളിലെ അറിയിപ്പ് മുദ്രകൾ താങ്കൾക്ക് പുനഃക്രമീകരിക്കാവുന്നതാണ്‌.
+
+താങ്കളുടെ {{SITENAME}} സുഹൃദ് അറിയിപ്പ് സജ്ജീകരണം
 
 --
 ഇമെയിൽ അറിയിപ്പ് സജ്ജീകരണങ്ങളിൽ മാറ്റംവരുത്താൻ, സന്ദർശിക്കുക
@@ -3755,10 +3751,6 @@ $1',
 'exif-urgency-high' => 'ഉന്നതം ($1)',
 'exif-urgency-other' => 'ഉപയോക്തൃ-നിർവചിത മുൻഗണന ($1)',
 
-# External editor support
-'edit-externally' => 'ഈ പ്രമാണം ഒരു ബാഹ്യ ആപ്ലിക്കേഷൻ ഉപയോഗിച്ച് തിരുത്തുക',
-'edit-externally-help' => '(കൂടുതൽ വിവരത്തിനു [https://www.mediawiki.org/wiki/Manual:External_editors സജ്ജമാക്കൽ നിർദ്ദേശങ്ങൾ] കാണുക)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'എല്ലാം',
 'namespacesall' => 'എല്ലാം',
@@ -3766,7 +3758,7 @@ $1',
 'limitall' => 'എല്ലാം',
 
 # Email address confirmation
-'confirmemail' => 'ഇ-മെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
+'confirmemail' => 'ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
 'confirmemail_noemail' => '[[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളുടെ കൂടെ]] സാധുവായൊരു ഇ-മെയിൽ വിലാസം സജ്ജീകരിച്ചിട്ടില്ല.',
 'confirmemail_text' => '{{SITENAME}} സം‌രംഭത്തിൽ ഇ-മെയിൽ സൗകര്യം ഉപയോഗിക്കണമെങ്കിൽ താങ്കൾ താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിന്റെ സാധുത തെളിയിച്ചിരിക്കണം. താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് സ്ഥിരീകരണ മെയിൽ അയക്കുവാൻ താഴെയുള്ള ബട്ടൺ അമർത്തുക. താങ്കൾക്ക് അയക്കുന്ന ഇ-മെയിലിൽ ഒരു സ്ഥിരീകരണ കോഡ് ഉണ്ട്. ആ കോഡിൽ അമർത്തിയാൽ താങ്കളുടെ വിലാസത്തിന്റെ സാധുത തെളിയിക്കപ്പെടും.',
 'confirmemail_pending' => 'താങ്കളുടെ അംഗത്വം ഈ അടുത്ത് ഉണ്ടാക്കിയതാണെങ്കിൽ,  ഒരു സ്ഥിരീകരണ കോഡ് താങ്കൾക്ക് ഇ-മെയിൽ ചെയ്തിട്ടുണ്ട്.  പുതിയ സ്ഥിരീകരണ കോഡ് ആവശ്യപ്പെടാൻ ശ്രമിക്കുന്നതിനു മുൻപ് ആദ്യത്തെ സ്ഥിരീകരണ കോഡിനായി കുറച്ച് സമയം കാത്തിരിക്കൂ.',
@@ -3989,10 +3981,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'പ്രത്യേക താളുകൾ',
-'specialpages-note' => '----
-* പൊതുവേ ഉപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.
-* <strong class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രത്യേക താളുകൾ.</strong>
-* <span class="mw-specialpagecached">പ്രാദേശികമായി സംഭരിച്ചുപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.</span>',
+'specialpages-note-top' => 'സൂചന',
+'specialpages-note' => '* പൊതുവേ ഉപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.
+* <span class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രത്യേക താളുകൾ.</span>',
 'specialpages-group-maintenance' => 'പരിചരണം ആവശ്യമായവ',
 'specialpages-group-other' => 'മറ്റു പ്രത്യേക താളുകൾ',
 'specialpages-group-login' => 'പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക',
@@ -4205,4 +4196,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 9e55b71..9782420 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-н яриа',
@@ -184,7 +199,6 @@ $messages = array(
 'qbedit' => 'Засварлах',
 'qbpageoptions' => 'Энэ хуудас',
 'qbmyoptions' => 'Миний хуудсууд',
-'qbspecialpages' => 'Тусгай хуудсууд',
 'faq' => 'Тогтмол тавигддаг асуултууд',
 'faqpage' => 'Project:Тогтмол тавигддаг асуултууд',
 
@@ -273,7 +287,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 +314,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 +355,7 @@ $1',
 'nstab-mediawiki' => 'Мэдэгдэл',
 'nstab-template' => 'Загвар',
 'nstab-help' => 'Тусламж',
-'nstab-category' => 'Ангилал',
+'nstab-category' => 'Анги',
 
 # Main script and global functions
 'nosuchaction' => 'Тийм үйлдэл байхгүй байна',
@@ -396,9 +408,6 @@ $1',
 'perfcached' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
 'perfcachedts' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
 'querypage-no-updates' => 'Одоогийн байдлаар энэ хуудсанд шинэчлэлүүд хаагдсан байна. Энд байгаа тоо баримт одоохондоо сэргээгдэхгүй.',
-'wrong_wfQuery_params' => 'wfQuery()-д буруу параметр оруулсан байна<br />
-Функц: $1<br />
-Асуудал: $2',
 'viewsource' => 'Кодыг харах',
 'viewsource-title' => '$1 хуудсын эх сурвалжийг харах',
 'actionthrottled' => 'Үйлдэл хязгаарлагдлаа',
@@ -424,7 +433,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 +449,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 +471,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 +523,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"-д олгов.
 Хэрэв та ингэхийг хүссэн бол нэвтэрч ороод шинэ нууц үгээ сонгоно уу.
@@ -1016,12 +1048,8 @@ $1",
 # Search results
 'searchresults' => 'Хайлтын үр дүн',
 'searchresults-title' => '"$1" гэх хайлтын үр дүн',
-'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' => 'Хуудасны тексттэй таарсан хуудсууд',
 'notextmatches' => 'Хуудасны тексттэй таарсан хуудсууд байхгүй байна',
 'prevn' => 'өмнөх {{PLURAL:$1|$1}}',
@@ -1030,10 +1058,8 @@ $1",
 'nextn-title' => 'Дараагийн $1 {{PLURAL:$1|үр дүн|үр дүн}}',
 'shown-title' => 'Хуудас бүрд $1 {{PLURAL:$1|үр дүн}} гаргах',
 'viewprevnext' => 'Үзэх: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Хайх сонголтууд',
 'searchmenu-exists' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудас байна'''",
 'searchmenu-new' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудсыг үүсгэх!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Энэ угтвартай хуудсуудыг гүйлгэж харах]]',
 'searchprofile-articles' => 'Агуулгын хуудсууд',
 'searchprofile-project' => 'Тусламжийн болон төслийн хуудсууд',
 'searchprofile-images' => 'Мультмедиа',
@@ -1061,14 +1087,10 @@ $1",
 'showingresults' => "Доор #'''$2'''-с эхлэсэн '''$1''' илэрцийг үзүүлж байна.",
 'showingresultsnum' => "Доор #'''$2'''-с эхлэсэн '''$3''' илэрцийг үзүүлж байна.",
 'showingresultsheader' => "'''$4''' хайлтын {{PLURAL:$5|'''$3'''-н '''$1''' үр дүн|'''$3'''-н '''$1 - $2''' үр дүн}}",
-'nonefound' => "'''Анхаар''': Зарим нэрний зайнуудыг л автоматаар хайна.
-Хайлтынхаа өмнө 'all:'' гэж бичвэл бүх агуулга дотроос хайх (үүнд ярианы хуудас, загвар гэх мэт) ба хэрэгтэй нэрний зайг үүний байдлаар бичвэл үүн дотроос хайна.",
 'search-nonefound' => 'Хайлтад таарсан үр дүн илэрсэнгүй.',
-'powersearch' => 'Сонгож хайх',
 'powersearch-legend' => 'Сонгосон хайлт',
 'powersearch-ns' => 'Дараах нэрний зайнуудад хайх:',
 'powersearch-redir' => 'Чиглүүлэгч хуудсуудыг оролцуулах',
-'powersearch-field' => 'Дараахыг хайх:',
 'powersearch-togglelabel' => 'Сонгох:',
 'powersearch-toggleall' => 'Бүгдийг',
 'powersearch-togglenone' => 'Байхгүй',
@@ -1081,8 +1103,6 @@ $1",
 'preferences' => 'Хэрэглэгчийн тохиргоо',
 'mypreferences' => 'Миний тохиргоо',
 'prefs-edits' => 'Засваруудын тоо:',
-'prefsnologin' => 'Нэвтрээгүй байна',
-'prefsnologintext' => 'Та хэрэглэгчийн тохиргоогоо тохируулахын тулд <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} нэвтэрсэн байх]</span> ёстой.',
 'changepassword' => 'Нууц үгээ солих',
 'prefs-skin' => 'Арьс',
 'skin-preview' => 'Урьдчилж харах',
@@ -1106,7 +1126,6 @@ $1",
 'prefs-email' => 'И-мэйлийн сонгох тохиргоо',
 'prefs-rendering' => 'Харагдац',
 'saveprefs' => 'Хадгалах',
-'resetprefs' => 'Хадгалаагүй өөрчлөлтүүдийг арилгах',
 'restoreprefs' => 'Бүх тохиргоог анхны байдалд оруулах',
 'prefs-editing' => 'Засварлах',
 'rows' => 'Мөр:',
@@ -1124,7 +1143,6 @@ $1",
 'localtime' => 'Орон нутгийн цаг:',
 'timezoneuseserverdefault' => 'Серверийн ердийн тохиргоо ($1)-г хэрэглэх \\',
 'timezoneuseoffset' => 'Бусад (зөрөөг заах)',
-'timezoneoffset' => 'Зөрөө¹:',
 'servertime' => 'Серверийн цаг:',
 'guesstimezone' => 'Броузераас бөглөх',
 'timezoneregion-africa' => 'Африк',
@@ -1356,6 +1374,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-с хойших шинэ засваруудыг үзүүлэх',
@@ -1790,7 +1809,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 
 # Miscellaneous special pages
 'nbytes' => '$1 байт',
-'ncategories' => '$1 ангилал',
+'ncategories' => '$1 анги',
 'nlinks' => '$1 линк',
 'nmembers' => '$1 гишүүн',
 'nrevisions' => '$1 засвар',
@@ -1798,12 +1817,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' => 'Хэрэгцээт ангиллууд',
@@ -1825,10 +1844,8 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'protectedpages' => 'Хамгаалагдсан хуудсууд',
 'protectedpages-indef' => 'Зөвхөн хугацаагүй хамгаалалтууд',
 'protectedpages-cascade' => 'Зөвхөн давхар хамгаалалтууд',
-'protectedpagestext' => 'Дараах хуудсууд нь зөөх ба засварлах явдлаас хамгаалагдсан байна',
 'protectedpagesempty' => 'Эдгээр параметрээр хамгаалагдсан хуудас байхгүй байна.',
 'protectedtitles' => 'Хамгаалагдсан гарчигууд',
-'protectedtitlestext' => 'Дараах гарчигуудтай хуудсуудыг үүсгэхээс хамгаалсан байна',
 'protectedtitlesempty' => 'Эдгээр параметрээр хамгаалагдсан гарчиг байхгүй байна.',
 'listusers' => 'Хэрэглэгчдийн жагсаалт',
 'listusers-editsonly' => 'Засвар хийсэн хэрэглэгчдийг л үзүүлэх',
@@ -1890,11 +1907,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' => 'үсгийн дарааллаар ялгах',
 
@@ -2782,7 +2799,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 пиксел',
@@ -2975,7 +2992,7 @@ $1',
 'exif-writer' => 'Бичсэн',
 'exif-languagecode' => 'Хэл',
 'exif-iimversion' => 'IIM хувилбар',
-'exif-iimcategory' => 'Ангилал',
+'exif-iimcategory' => 'Анги',
 'exif-datetimeexpires' => 'түүний дараа бүү хэрэглэ',
 'exif-datetimereleased' => 'Гарсан өдөр',
 'exif-originaltransmissionref' => '',
@@ -3157,10 +3174,6 @@ $1',
 'exif-iimcategory-war' => 'Дайн, мөргөлдөөн ба үймээн самуун',
 'exif-iimcategory-wea' => 'Цаг агаар',
 
-# External editor support
-'edit-externally' => 'Гадны программыг ашиглан энэ файлыг засварлах',
-'edit-externally-help' => '(Нэмэлт мэдээллийг [https://www.mediawiki.org/wiki/Manual:External_editors тохируулгын зааврын] хуудаснаас харна уу)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бүгдийг',
 'namespacesall' => 'бүгдийг',
@@ -3346,8 +3359,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Тусгай хуудсууд',
-'specialpages-note' => '----
-* Ердийн тусгай хуудсууд.
+'specialpages-note' => '* Ердийн тусгай хуудсууд.
 * <strong class="mw-specialpagerestricted">Хориотой тусгай хуудсууд.</strong>',
 'specialpages-group-maintenance' => 'Засвар үйлчилгээний тайлангууд',
 'specialpages-group-other' => 'Бусад тусгай хуудсууд',
@@ -3457,4 +3469,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 1f61c7f..0d1eafc 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(
@@ -481,7 +486,6 @@ $messages = array(
 'qbedit' => 'संपादन',
 'qbpageoptions' => 'हे पान',
 'qbmyoptions' => 'माझी पाने',
-'qbspecialpages' => 'विशेष पाने',
 'faq' => 'नेहमी विचारण्यात येणारे प्रश्न',
 'faqpage' => 'Project:प्रश्नावली',
 
@@ -594,8 +598,6 @@ $1',
 'ok' => 'ठीक',
 'retrievedfrom' => '"$1" पासून हुडकले',
 'youhavenewmessages' => 'तुमच्यासाठी $1 आहे. ($2)',
-'newmessageslink' => 'नवीन संदेश',
-'newmessagesdifflink' => 'ताजा बदल',
 'youhavenewmessagesfromusers' => 'तुमच्यासाठी {{PLURAL:$3|इतर सदस्याकडून|$3 सदस्यांकडून}} $1 आहेत. ($2)',
 'youhavenewmessagesmanyusers' => 'तुमच्यासाठी बऱ्याच सदस्यांकडून $1 आहेत. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|नवीन संदेश|नवीन संदेश}}',
@@ -698,9 +700,6 @@ $1',
 'perfcached' => 'खालील माहिती सयीमधील (कॅशे) असल्यामुळे ती अद्ययावत् नाही.जास्तीतजास्त {{PLURAL:$1|एक प्रतिफळ |$1 प्रतिफळे }} सयीमध्ये असतात.',
 'perfcachedts' => 'खालील माहिती सयीमधील (कॅशे) आहे व ती  $1 पर्यंत अद्ययावत् आहे. जास्तीतजास्त {{PLURAL:$4|एक प्रतिफळ |$4 प्रतिफळे}} सयीमध्ये असतात.',
 'querypage-no-updates' => 'सध्या या पानाकरिता नवी अद्यतने अनुपलब्ध केली आहेत.आत्ताच येथील विदा तरोताजा होणार नाही.',
-'wrong_wfQuery_params' => 'wfQuery()साठी चुकिची प्राचले दिलेली आहेत<br />
-(कार्य) function: $1<br />
-(पृच्छा)Query: $2',
 'viewsource' => 'स्रोत पहा',
 'viewsource-title' => '$1 चा उगम बघा',
 'actionthrottled' => 'कृती नियामक(थ्रॉटल) केली',
@@ -823,7 +822,7 @@ $2',
 'passwordtooshort' => 'तुमच्या परवलीच्या शब्दात किमान {{PLURAL:$1|१ अक्षर |$1 अक्षरे}} हवीत.',
 'password-name-match' => 'आपला परवलीचा शब्द हा आपल्या सदस्यनावापेक्षा वेगळा हवा.',
 'password-login-forbidden' => 'या सदस्यनामाचा व परवलीच्या शब्दाचा वापर निषिद्ध आहे.',
-'mailmypassword' => 'नवà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤µà¤¿à¤ªà¤¤à¥\8dर (à¤\88-मà¥\87ल) à¤ªà¤¤à¥\8dतà¥\8dयावर à¤ªà¤¾à¤ à¤µा',
+'mailmypassword' => 'नवà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नरà¥\8dसà¥\8dथापित(रिसà¥\87à¤\9f) à¤\95रा',
 'passwordremindertitle' => '{{SITENAME}}करिता नवा तात्पुरता परवलीचा शब्दांक.',
 'passwordremindertext' => 'कुणीतरी (कदाचित तुम्ही, अंकपत्ता $1 कडून) {{SITENAME}} करिता ’नवा परवलीचा शब्दांक पाठवावा’ अशी विनंती केली आहे ($4).
 "$2" सदस्याकरिता तात्पुरता परवलीचा शब्दांक "$3" झाला आहे.
@@ -890,7 +889,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'परवलीचा शब्द पूर्ववत करा',
 'passwordreset-text-one' => 'आपला परवलीचा शब्द बदलण्यास हे आवेदन भरा.',
-'passwordreset-text-many' => '{{PLURAL:$1|à¤\86पला à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\8dयास à¤\95à¥\8bणताहà¥\80 à¤\8fà¤\95 à¤¤à¥\81à¤\95डा à¤µà¤¾à¤ªरा.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¤\86पला à¤¤à¤¾à¤¤à¥\8dपà¥\81रता à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤µà¤¿à¤ªà¤¤à¥\8dरामारà¥\8dफत à¤ªà¥\8dरापà¥\8dत à¤\95रणà¥\8dयास à¤\96ालà¥\80ल à¤\95à¥\8dषà¥\87तà¥\8dरातà¥\80ल à¤\8fà¤\96ादà¥\87 à¤­रा.}}',
 'passwordreset-legend' => 'परवलीचा शब्द पूर्ववत करा',
 'passwordreset-disabled' => 'या विकिवर परवलीचा शब्द पुनर्स्थापित करता येत नाही.',
 'passwordreset-emaildisabled' => "या विकिवर विपत्र पाठविणे 'अशक्य' करण्यात आलेले आहे.",
@@ -1278,15 +1277,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' => '* वगळण्याची सामान्य कारणे
 ** प्रताधिकार उल्लंघन
 ** अयोग्य टिप्पणी किंवा व्यक्तिगत माहिती
@@ -1348,12 +1347,8 @@ $1",
 # Search results
 'searchresults' => 'शोध निकाल',
 'searchresults-title' => '"$1" साठीचे शोध निकाल',
-'searchresulttext' => '{{SITENAME}} वरील माहिती कशी शोधावी, याच्या माहितीकरता पहा - [[{{MediaWiki:Helppage}}|{{SITENAME}} वर शोध कसा घ्यावा]].',
-'searchsubtitle' => 'तुम्ही \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" ने सुरू होणारी सर्व पाने]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ला जोडणारी सर्व पाने]]) याचा शोध घेत आहात.',
-'searchsubtitleinvalid' => "तुम्ही '''$1''' या शब्दाचा शोध घेत आहात.",
 'toomanymatches' => 'खूप एकसारखी उत्तरे मिळाली, कृपया पृच्छा वेगळ्या तऱ्हेने करून पहा',
 'titlematches' => 'पानाचे शीर्षक जुळते',
-'notitlematches' => 'कोणत्याही पानाचे शीर्षक जुळत नाही',
 'textmatches' => 'पानातील मजकूर जुळतो',
 'notextmatches' => 'कोणत्याही पानातील मजकुराशी जुळत नाही',
 'prevn' => 'मागील {{PLURAL:$1|$1}}',
@@ -1362,13 +1357,11 @@ $1",
 'nextn-title' => 'पुढील $1 {{PLURAL:$1|निकाल}}',
 'shown-title' => '$1 {{PLURAL:$1|निकाल}} प्रतिपान पहा',
 'viewprevnext' => 'पहा ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'विकल्प शोधा',
 'searchmenu-exists' => "'''या विकिवर \"[[:\$1]]\" या नावाचे पान आहे.'''",
 'searchmenu-new' => "'''या विकिवर \"[[:\$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 +1371,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' => 'जवळील',
@@ -1393,13 +1386,10 @@ $1",
 'showingresults' => "#'''$2'''पासून {{PLURAL:$1|'''1'''पर्यंतचा निकाल|'''$1'''पर्यंतचे निकाल}} खाली दाखवले आहे.",
 'showingresultsnum' => "खाली दिलेले #'''$2'''पासून सुरू होणारे  {{PLURAL:$3|'''1''' निकाल|'''$3''' निकाल}}.",
 'showingresultsheader' => "'''$4''' साठी {{PLURAL:$5|'''$3'''पैकी '''$1''' निकाल|'''$3''' पैकी '''$1 - $2''' निकाल}}",
-'nonefound' => "'''सूचना''':अविचलरित्या काही नामविश्वेच नेहमी शोधली जातात. सर्व नामविश्वे शोधण्याकरिता (चर्चा पाने, साचे, इ. सकट) कॄपया शोधशब्दांच्या आधी ''all:'' लावून पहा किंवा पाहिजे असलेले नामविश्व लिहा.",
 'search-nonefound' => 'दिलेल्या पृच्छेशी जुळणारे निकाल नाहीत.',
-'powersearch' => 'प्रगत शोध',
 'powersearch-legend' => 'प्रगत शोध',
 'powersearch-ns' => 'नामविश्वांमध्ये शोधा:',
 'powersearch-redir' => 'पुनर्निर्देशनांची यादी करा',
-'powersearch-field' => 'साठी शोधा',
 'powersearch-togglelabel' => 'तपासा:',
 'powersearch-toggleall' => 'सर्व',
 'powersearch-togglenone' => 'काहीही नाही',
@@ -1408,11 +1398,9 @@ $1",
 'search-error' => 'शोध घेतांना घडलेली त्रूटी:$1',
 
 # Preferences page
-'preferences' => 'माà¤\9dà¥\8dया à¤ªà¤¸à¤\82तà¥\80',
+'preferences' => 'पसà¤\82तà¥\80à¤\95à¥\8dरम',
 'mypreferences' => 'पसंतीक्रम',
 'prefs-edits' => 'संपादनांची संख्या:',
-'prefsnologin' => 'प्रवेश केलेला नाही',
-'prefsnologintext' => 'तुम्हाला सदस्य पसंती बदलण्यासाठी <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} प्रवेश]</span> करावा लागेल.',
 'changepassword' => 'परवलीचा शब्द बदला',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
@@ -1423,20 +1411,19 @@ $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' => 'तुमचा ई-मेल पत्ता लिहा.',
 'prefs-email' => 'विपत्र पर्याय',
 'prefs-rendering' => 'देखावा',
 'saveprefs' => 'जतन करा',
-'resetprefs' => 'न जतन केलेले बदल रद्द करा',
 'restoreprefs' => 'सर्व डिफॉल्ट मांडणी पूर्ववत करा (सर्व विभागात)',
 'prefs-editing' => 'संपादन',
 'rows' => 'ओळी:',
@@ -1446,16 +1433,15 @@ $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' => 'वेळक्षेत्र',
 'localtime' => 'स्थानिक वेळ:',
 'timezoneuseserverdefault' => 'सर्व्हर मूलस्थिती वापरा ($1)',
 'timezoneuseoffset' => 'इतर (वेळेतील अंतर लिहा)',
-'timezoneoffset' => 'समासफरक¹:',
 'servertime' => 'विदागारदात्याची वेळ',
 'guesstimezone' => 'विचरकातून भरा',
 'timezoneregion-africa' => 'आफ्रिका',
@@ -1477,7 +1463,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|सदस्यनाम}}:',
@@ -1506,7 +1492,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' => 'संपादक',
@@ -1593,7 +1579,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' => 'लेखन एपीआय चा उपयोग',
@@ -1616,7 +1602,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 संचिका संपादित करा',
@@ -1706,6 +1692,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 नंतर केले गेलेले बदल दाखवा.',
@@ -2179,10 +2166,8 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'protectedpages' => 'सुरक्षित पाने',
 'protectedpages-indef' => 'फक्त अनंत काळासाठी सुरक्षित केलेले',
 'protectedpages-cascade' => 'केवळ एकामेकांवर अवलंबून कास्केडींग सुरक्षा (सुरक्षा शिडी)',
-'protectedpagestext' => 'खालील पाने स्थानांतरण किंवा संपादन यांपासून सुरक्षित आहेत',
 'protectedpagesempty' => 'सध्या या नियमावलीने कोणतीही पाने सुरक्षित केलेली नाहीत.',
 'protectedtitles' => 'सुरक्षीत शीर्षके',
-'protectedtitlestext' => 'पुढील शीर्षके बदल घडवण्यापासून सुरक्षित आहेत.',
 'protectedtitlesempty' => 'या नियमावलीने सध्या कोणतीही शीर्षके सुरक्षित केलेली नाहीत.',
 'listusers' => 'सदस्यांची यादी',
 'listusers-editsonly' => 'फक्त संपादनांसहित सदस्य दाखवा',
@@ -3668,10 +3653,6 @@ $1',
 'exif-urgency-high' => 'उच्चतम ($1)',
 'exif-urgency-other' => '($1) उपयोगकर्ता-निश्चित  प्राधान्य',
 
-# External editor support
-'edit-externally' => 'बाहेरील संगणक प्रणाली वापरून ही संचिका संपादित करा.',
-'edit-externally-help' => 'अधिक माहितीसाठी  [https://www.mediawiki.org/wiki/Manual:External_editors स्थापन करण्याच्या सूचना] येथे पहा.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सर्व',
 'namespacesall' => 'सर्व',
@@ -4090,4 +4071,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 8bd16fc..35a26ee 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' ),
@@ -356,7 +355,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Laman ini',
 'qbmyoptions' => 'Laman-laman saya',
-'qbspecialpages' => 'Laman khas',
 'faq' => 'Soalan Lazim',
 'faqpage' => 'Project:Soalan Lazim',
 
@@ -474,8 +472,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',
@@ -578,9 +574,6 @@ Tiada sebab diberikan.',
 'perfcachedts' => 'Data yang berikut disimpan dalam cache dan kali terakhir dikemaskinikan pada $1. Semaksimum {{PLURAL:$4|satu hasil|$4 hasil}} terdapat dalam cache.',
 'querypage-no-updates' => 'Buat masa ini, pengkemaskinian laman ini telah dilumpuhkan.
 Data yang ada di sini tidak akan disegarkan semula sekarang.',
-'wrong_wfQuery_params' => 'Parameter salah bagi wfQuery()<br />
-Fungsi: $1<br />
-Pertanyaan: $2',
 'viewsource' => 'Lihat sumber',
 'viewsource-title' => 'Lihat sumber bagi $1',
 'actionthrottled' => 'Tindakan didikitkan',
@@ -1250,12 +1243,8 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 # Search results
 'searchresults' => 'Hasil carian',
 'searchresults-title' => 'Hasil carian "$1"',
-'searchresulttext' => 'Untuk maklumat lanjut tentang carian dalam {{SITENAME}}, sila lihat [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Anda mencari \'\'\'[[$1]]\'\'\' ([[Special:Prefixindex/$1|semua laman dengan awalan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|semua laman yang mengandungi pautan ke "$1"]])',
-'searchsubtitleinvalid' => 'Untuk pertanyaan "$1"',
 'toomanymatches' => 'Terlalu banyak padanan dipulangkan, sila cuba pertanyaan lain',
 'titlematches' => 'Padanan tajuk laman',
-'notitlematches' => 'Tiada tajuk laman yang sepadan',
 'textmatches' => 'Padanan teks laman',
 'notextmatches' => 'Tiada teks laman yang sepadan',
 'prevn' => '{{PLURAL:$1|$1 sebelumnya}}',
@@ -1264,10 +1253,8 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'nextn-title' => '$1 hasil berikutnya',
 'shown-title' => 'Papar $1 hasil setiap laman',
 'viewprevnext' => 'Lihat ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilihan carian',
 'searchmenu-exists' => "* Laman '''[[$1]]'''",
 'searchmenu-new' => "'''Cipta laman \"[[:\$1]]\" di wiki ini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Senarai laman dengan awalan ini]]',
 'searchprofile-articles' => 'Laman kandungan',
 'searchprofile-project' => 'Laman bantuan dan projek',
 'searchprofile-images' => 'Multimedia',
@@ -1295,14 +1282,10 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'showingresults' => "Yang berikut ialah '''$1''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
 'showingresultsnum' => "Yang berikut ialah '''$3''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
 'showingresultsheader' => "{{PLURAL:$5|Keputusan '''$1''' daripada '''$3'''|Keputusan '''$1 - $2''' daripada '''$3'''}} untuk '''$4'''",
-'nonefound' => "'''Catatan''': Hanya sesetengah ruang nama dicari secara asali.
-Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbincangan, templat, dan lain-lain), atau gunakan ruang nama yang dikehendaki sebagai awalan.",
 'search-nonefound' => 'Tiada hasil yang sepadan dengan pertanyaan.',
-'powersearch' => 'Carian lanjutan',
 'powersearch-legend' => 'Carian lanjutan',
 'powersearch-ns' => 'Cari dalam ruang nama:',
 'powersearch-redir' => 'Termasuk lencongan',
-'powersearch-field' => 'Cari',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Semua',
 'powersearch-togglenone' => 'Tiada',
@@ -1314,8 +1297,6 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'preferences' => 'Keutamaan',
 'mypreferences' => 'Keutamaan',
 'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Belum log masuk',
-'prefsnologintext' => 'Anda hendaklah <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} log masuk]</span> terlebih dahulu untuk menetapkan keutamaan.',
 'changepassword' => 'Tukar kata laluan',
 'prefs-skin' => 'Rupa',
 'skin-preview' => 'Pralihat',
@@ -1339,7 +1320,6 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'prefs-email' => 'Pilihan e-mel',
 'prefs-rendering' => 'Penampilan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Set semula',
 'restoreprefs' => 'Pulihkan semua tetapan asali (dalam semua bahagian)',
 'prefs-editing' => 'Menyunting',
 'rows' => 'Baris:',
@@ -1360,7 +1340,6 @@ Sesiapa yang mengetahuinya akan boleh membaca senarai pantau anda, jadi jangan k
 'localtime' => 'Waktu tempatan:',
 'timezoneuseserverdefault' => 'Gunakan tetapan sediaan wiki ($1)',
 'timezoneuseoffset' => 'Lain-lain (nyatakan imbangan)',
-'timezoneoffset' => 'Imbangan¹:',
 'servertime' => 'Waktu pelayan:',
 'guesstimezone' => 'Gunakan tetapan pelayar saya',
 'timezoneregion-africa' => 'Afrika',
@@ -1613,6 +1592,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',
@@ -2106,10 +2086,8 @@ Masukan yang <del>dipotong</del> telah diselesaikan.',
 'protectedpages' => 'Laman dilindungi',
 'protectedpages-indef' => 'Perlindungan tanpa had sahaja',
 'protectedpages-cascade' => 'Perlindungan separa sahaja',
-'protectedpagestext' => 'Laman-laman berikut dilindungi daripada pemindahan dan penyuntingan',
 'protectedpagesempty' => 'Tiada laman yang dilindungi dengan kriteria ini.',
 'protectedtitles' => 'Tajuk dilindungi',
-'protectedtitlestext' => 'Tajuk-tajuk berikut dilindungi daripada dicipta',
 'protectedtitlesempty' => 'Tiada tajuk yang dilindungi yang sepadan dengan kriteria yang diberikan.',
 'listusers' => 'Senarai pengguna',
 'listusers-editsonly' => 'Hanya papar pengguna yang telah membuat suntingan',
@@ -3616,10 +3594,6 @@ Ruangan-ruangan yang lain pula akan disembunyikan pada asali.
 'exif-urgency-high' => 'Tinggi ($1)',
 'exif-urgency-other' => 'Keutamaan tentuan pengguna ($1)',
 
-# External editor support
-'edit-externally' => 'Sunting fail ini menggunakan perisian luar',
-'edit-externally-help' => '(Lihat [https://www.mediawiki.org/wiki/Manual:External_editors arahan pemasangan] untuk maklumat lanjut)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'semua',
 'namespacesall' => 'semua',
@@ -3852,8 +3826,7 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 
 # Special:SpecialPages
 'specialpages' => 'Laman khas',
-'specialpages-note' => '----
-* Laman khas biasa.
+'specialpages-note' => '* Laman khas biasa.
 * <span class="mw-specialpagerestricted">Laman khas terhad.</span>
 * <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
 'specialpages-group-maintenance' => 'Laporan penyenggaraan',
@@ -4065,4 +4038,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 2b71c52..e690946 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' ),
@@ -431,7 +430,6 @@ $messages = array(
 'qbedit' => 'Immodifika',
 'qbpageoptions' => 'Din il-paġna',
 'qbmyoptions' => 'Il-paġni tiegħi',
-'qbspecialpages' => 'Paġni speċjali',
 'faq' => 'Mistoqsijiet komuni',
 'faqpage' => 'Project:FAQ',
 
@@ -546,8 +544,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}}',
@@ -637,9 +633,6 @@ Jista\' jkun li diġà ġie mħassar minn xi ħaddieħor.',
 'perfcached' => "L-informazzjoni li jmiss huwa kopja ''cache'' u jista' ma jkunx aġġornat. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => "Id-dati segwenti huma estratt ta' kopja cache tad-database. L-aħħar aġġornament: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Aġġornamenti għal din il-paġna huma temporalment sospesi. L-Informazzjoni hawnhekk preżentament mhux qiegħed jiġi aġġornat.',
-'wrong_wfQuery_params' => 'Parametri skoretti għal wfQuery()<br />
-Funżjoni: $1<br />
-Rikjesta: $2',
 'viewsource' => 'Ara s-sors',
 'viewsource-title' => "Ara s-sors ta' $1",
 'actionthrottled' => 'Azzjoni miżmuma',
@@ -1253,12 +1246,8 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 # Search results
 'searchresults' => 'Riżultat tat-tfittxija',
 'searchresults-title' => 'Riżultati tat-tfittxija għal "$1"',
-'searchresulttext' => "Aktar informazzjoni dwar ir-riċerka ta' {{SITENAME}}, ara [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Int fittixt għal \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|il-paġni kollha li jibdew b\'"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|il-paġni kollha li jwasslu għal "$1"]])',
-'searchsubtitleinvalid' => "Int fittixt għal '''$1'''",
 'toomanymatches' => 'Ħafna tqabbil ġew ritornati, jekk jogħġbok prova inkjesta differenti',
 'titlematches' => 'Titlu tal-paġna taqbel',
-'notitlematches' => "L-ebda titlu ta' paġna ma jaqbel",
 'textmatches' => 'It-test tal-paġni, jaqbel',
 'notextmatches' => "L-ebda test ta' paġna ma jaqbel",
 'prevn' => "{{PLURAL:$1|$1}} ta' qabel",
@@ -1267,10 +1256,8 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 'nextn-title' => '{{PLURAL:$1|Riżultat suċċessiv|$1 riżultati suċċessivi}}',
 'shown-title' => 'Uri {{PLURAL:$1|riżultat|$1 riżultati}} kull paġna',
 'viewprevnext' => 'Ara ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Preferenzi għat-tfittxija',
 'searchmenu-exists' => "'''Hemm paġna bl-isem ta' \"[[:\$1]]\" fuq din il-wiki'''",
 'searchmenu-new' => "'''Oħloq il-paġna \"[[:\$1]]\" fuq din il-wiki!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Uri l-paġni b'dan il-prefiss]]",
 'searchprofile-articles' => "Paġni ta' kontenut",
 'searchprofile-project' => "Paġni ta' għajnuna u ta' proġett",
 'searchprofile-images' => 'Multimedja',
@@ -1298,14 +1285,10 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 'showingresults' => "Hawn taħt ġie inkluż massimu ta' {{PLURAL:$1|riżultat '''1''' li jibda|'''$1''' riżultat li jibdew}} bin-numru '''$2'''.",
 'showingresultsnum' => "Hawn taħt {{PLURAL:$3|jinsab riżultat '''1''' li jibda|jinsabu '''$3''' riżultati li jibdew}} bin-numru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Riżultat '''$1''' minn '''$3'''|Riżultati '''$1 - $2''' minn '''$3'''}} għal '''$4'''",
-'nonefound' => "'''Nota''': Awtomatikament, huma ftit spazji tal-isem imfittxija.
-Ipprova għamel prefiss għall-inkjesta tiegħek ma' ''all:'' sabiex tfittex il-kontenut kollu (inkluż paġni ta' diskussjoni, mudelli, etċ), jew uża l-ispazju tal-isem mixtieq bħala prefiss.",
 'search-nonefound' => 'It-tfittxija ma tat l-ebda riżultat.',
-'powersearch' => 'Tfittxija avvanzata',
 'powersearch-legend' => 'Tfittxija avvanzata',
 'powersearch-ns' => 'Fittex fl-ispazju tal-isem:',
 'powersearch-redir' => 'Uri r-rindirizzi',
-'powersearch-field' => 'Fittex',
 'powersearch-togglelabel' => 'Agħżel:',
 'powersearch-toggleall' => 'Kollha',
 'powersearch-togglenone' => 'Ebda',
@@ -1318,8 +1301,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',
-'prefsnologintext' => 'Sabiex tkun tista\' tippersonalizza l-preferenzi huwa neċessarju li tidħol fil-<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kont]</span>.',
 'changepassword' => 'Ibdel il-password',
 'prefs-skin' => 'Aspett grafiku (skin)',
 'skin-preview' => 'dehra proviżorja',
@@ -1342,7 +1323,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'prefs-email' => 'Opzjonijiet għall-posta elettronika',
 'prefs-rendering' => 'Dehra',
 'saveprefs' => 'Salva l-preferenzi',
-'resetprefs' => 'Neħħi modifiki mhux salvati',
 'restoreprefs' => 'Irkupra l-impostazzjonijiet awtomatiċi',
 'prefs-editing' => 'Modifiki',
 'rows' => 'Fillieri:',
@@ -1360,7 +1340,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'localtime' => 'Ħin lokali:',
 'timezoneuseserverdefault' => 'Uża l-ħin użat mill-wiki ($1)',
 'timezoneuseoffset' => 'Ieħor (speċifika d-differenza)',
-'timezoneoffset' => 'Differenza¹:',
 'servertime' => 'Ħin tas-server:',
 'guesstimezone' => "Uża l-ħin tal-''browser'' tiegħek",
 'timezoneregion-africa' => 'Afrika',
@@ -1591,6 +1570,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',
@@ -2035,10 +2015,8 @@ Daħliet <del>maqtugħa</del> saritilhom it-tiswija.',
 'protectedpages' => 'Paġni protetti',
 'protectedpages-indef' => 'Protezzjoni indefinit biss',
 'protectedpages-cascade' => 'Protezzjonijiet rikorsivi biss',
-'protectedpagestext' => 'Il-Paġni segwenti huma protetti minn modifiki u ċaqlieq',
 'protectedpagesempty' => "M'hawnx paġni protetti bħalissa b'dawn il-parametri.",
 'protectedtitles' => 'Titli protetti',
-'protectedtitlestext' => 'It-Titli segwenti huma protetti mill-ħolqien',
 'protectedtitlesempty' => "L-Ebda titli bħalissa huma protetti b'dawn il-parametri.",
 'listusers' => 'Lista tal-utenti',
 'listusers-editsonly' => 'Uri biss utenti li għamlu xi modifika',
@@ -3464,10 +3442,6 @@ Oħrajn jiġu moħbija kif inhu definit oriġinarjament.
 'exif-urgency-high' => 'Għoli ($1)',
 'exif-urgency-other' => 'Prijorità definita mill-utent ($1)',
 
-# External editor support
-'edit-externally' => "Immodifika dan il-fajl b'użu ta' applikazzjoni esterna",
-'edit-externally-help' => '(Għal aktar informazzjoni ara l-[https://www.mediawiki.org/wiki/Manual:External_editors istruzzjonijiet])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kollha',
 'namespacesall' => 'kollha',
@@ -3842,4 +3816,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..da4a718 100644 (file)
@@ -209,7 +209,6 @@ $messages = array(
 'qbedit' => 'Eiditar',
 'qbpageoptions' => 'Esta páigina',
 'qbmyoptions' => 'Mies páiginas',
-'qbspecialpages' => 'Páiginas speciales',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -288,8 +287,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',
@@ -543,10 +540,6 @@ Legenda: (atu) = defrénças de la berson atual,
 # Search results
 'searchresults' => 'Resultados de la percura',
 'searchresults-title' => 'Resultados de la percura por "$1"',
-'searchresulttext' => 'Pa mais anformaçones subre cumo percurar an {{SITENAME}}, bei [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tu percureste por \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páiginas ampeçadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páiginas que apuntan pa "$1"]])',
-'searchsubtitleinvalid' => 'Tu percureste por "$1"',
-'notitlematches' => 'Nanhun títalo de páigina bate cierto cula percura',
 'notextmatches' => 'Nun fui possible achar, ne l cuntenido de las páiginas, la palabra percurada',
 'prevn' => 'anteriores {{PLURAL:$1|$1}}',
 'nextn' => 'próssimos {{PLURAL:$1|$1}}',
@@ -562,12 +555,9 @@ Legenda: (atu) = defrénças de la berson atual,
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(mais)',
 'searchall' => 'todos',
-'nonefound' => "'''Abiso''': solo alguns spácios nominales son percurados por oumisson. Spurmenta outelizar l perfixo ''all:'' na percura, pa percurar por todos ls cuntenidos desta Biqui (até páiginas de çcusson, modelos etc), ó mesmo, outelizando l spácio nominal que queiras cumo perfixo.",
-'powersearch' => 'Percura Abançada',
 'powersearch-legend' => 'Percura abançada',
 'powersearch-ns' => 'Percurar ne ls spácios nominales:',
 'powersearch-redir' => 'Listar ancaminamientos',
-'powersearch-field' => 'Percurar',
 
 # Preferences page
 'preferences' => 'Perfréncias',
@@ -653,6 +643,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',
@@ -1151,10 +1142,6 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
 
 'exif-subjectdistancerange-0' => 'Çcoincido',
 
-# External editor support
-'edit-externally' => 'Eiditar este fexeiro outelizando ua aplicaçon sterna',
-'edit-externally-help' => '(Bei las [https://www.mediawiki.org/wiki/Manual:External_editors anstruçones de anstalaçon] pa mais anformaçon).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todas',
 'namespacesall' => 'todas',
index df5b28e..4eaf130 100644 (file)
@@ -214,7 +214,6 @@ $messages = array(
 'qbedit' => 'ပြင်​ဆင်​ရန်​',
 'qbpageoptions' => 'ဤစာမျက်နှာ',
 'qbmyoptions' => 'ကျွန်ုပ် စာမျက်နှာများ',
-'qbspecialpages' => 'အ​ထူး​စာ​မျက်​နှာ​',
 'faq' => 'မေးလေ့ရှိကြသည်များ',
 'faqpage' => 'Project:မေးလေ့ရှိကြသည်များ',
 
@@ -325,8 +324,6 @@ $1',
 'ok' => 'အိုကေ',
 'retrievedfrom' => '"$1" မှ ရယူရန်',
 'youhavenewmessages' => 'သင့်တွင် $1 ($2) ရှိသည်။',
-'newmessageslink' => 'မက်ဆေ့ အသစ်',
-'newmessagesdifflink' => 'နောက်ဆုံးအပြောင်းအလဲ',
 'youhavenewmessagesmulti' => '$1 မှာ မက်ဆေ့အသစ်များ ရှိသည်',
 'editsection' => 'ပြင်​ဆင်​ရန်​',
 'editold' => 'ပြင်​ဆင်​ရန်​',
@@ -672,12 +669,8 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 # Search results
 'searchresults' => 'ရှာဖွေမှု ရလဒ်များ',
 'searchresults-title' => '"$1" အတွက် ရှာတွေ့သည့် ရလဒ်များ',
-'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' => 'စာမျက်နှာစာသားကိုက်ညီသည်',
 'notextmatches' => 'ဤခေါင်းစဉ်နှင့် ကိုက်ညီသောစာမျက်နှာမရှိပါ',
 'prevn' => 'နောက်သို့ {{PLURAL:$1|$1}}',
@@ -686,7 +679,6 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'nextn-title' => 'နောက်ထပ်ရလဒ် $1 {{PLURAL:$1|ခု|ခု}}',
 'shown-title' => 'စာမျက်နှာတစ်ခုလျှင် ရလဒ် $1 {{PLURAL:$1|ခု|ခု}} ပြရန်',
 'viewprevnext' => '($1 {{int:မှ}} $2) အထိကြား ရလဒ် ($3) ခုကို ကြည့်ရန်',
-'searchmenu-legend' => 'ရှာဖွေရန် ရွေးချယ်မှု',
 'searchmenu-exists' => "'''ဤဝီကီတွင် \"[[:\$1]]\" အမည်နှင့် စာမျက်နှာတစ်ခုရှိသည်။'''",
 'searchmenu-new' => "'''ဤဝီကီတွင် \"[[:\$1]]\" အမည်နှင့် စာမျက်နှာကို ဖန်တီးပါ။'''",
 'searchprofile-articles' => 'မာတိကာစာမျက်နှာများ',
@@ -716,16 +708,10 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'showingresults' => "'''$2''' နှင့်စသော ရလဒ် {{PLURAL:$1|'''1''' ခု|'''$1''' ခု}}ထိကို အောက်တွင် ပြထားသည်။",
 'showingresultsnum' => "'''$2''' နှင့်စသော ရလဒ် {{PLURAL:$3|'''1''' ခု|'''$3''' ခု}} ကို အောက်တွင် ပြထားသည်။",
 'showingresultsheader' => "'''$4''' အတွက် {{PLURAL:$5|ရလဒ် '''$3''' ခု အနက်မှ '''$1'''|ရလဒ် '''$3'''ခု အနက်မှ '''$1 - $2'''}}",
-'nonefound' => "'''Note''': Only some namespaces are searched by default.
-ပုံမှန်အားဖြင့် အမည်ညွှန်းအချို့ကိုသာ ရှာပေးမည်ဖြစ်သည်။
-Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc), or use the desired namespace as prefix.
-ရှာရာတွင် ''all:''ကို ရှေ့ဆုံးမှ prefix ထည့်ပြီး ရှာဖွေခြင်းဖြင့် ရှိရှိသမျှ စာမျက်နှာများတွင် (ဆွေးနွေးချက်များ၊ တမ်းပလိတ်များ စသည်) ရှာနိုင်သည်။ သို့မဟုတ် သင်အလိုရှိရာ အမည်ညွှန်းကို prefix ထည့်ပြီး ရှာပါ။",
 'search-nonefound' => 'စုံစမ်းမှုနှင့်ကိုက်ညီသော ရလဒ်မရှိပါ။',
-'powersearch' => 'အထူးပြု ရှာ​ဖွေ​ရန်​',
 'powersearch-legend' => 'အထူးပြု ရှာဖွေရန်',
 'powersearch-ns' => 'အမည်ညွှန်းတို့တွင် ရှာရန် -',
 'powersearch-redir' => 'ပြန်ညွှန်းသည့် လင့်များကို စာရင်းပြုစုရန်',
-'powersearch-field' => 'ဤအကြောင်းအရာအတွက် ရှာဖွေရန်',
 'powersearch-togglelabel' => 'စစ်ဆေးရန် -',
 'powersearch-toggleall' => 'အားလုံး',
 'powersearch-togglenone' => 'အမည်ညွှန်းမရှိ',
@@ -735,7 +721,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' => 'နမူနာ',
@@ -754,7 +739,6 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
 'prefs-email' => 'အီးမေးအတွက် ရွေးချယ်စရာ',
 'prefs-rendering' => 'ပုံပန်းသွင်ပြင်',
 'saveprefs' => 'သိမ်းရန်',
-'resetprefs' => 'မသိမ်းရသေးသော အပြောင်းအလဲများကို ရှင်းလင်းရန်',
 'restoreprefs' => 'မူလဆက်တင်များသို့ အားလုံး ပြန်ပြောင်းရန်',
 'prefs-editing' => 'တည်းဖြတ်ခြင်း',
 'rows' => 'အလျားလိုက်တန်း -',
@@ -1201,7 +1185,6 @@ Your e-mail address is not revealed when other users contact you.
 'deadendpages' => 'လမ်းပိတ်နေသော (လင့်မရှိသော) စာမျက်နှာများ',
 'protectedpages' => 'ကာကွယ်ထားသော စာမျက်နှာများ',
 'protectedtitles' => 'ကာကွယ်ထားသော ခေါင်းစဉ်များ',
-'protectedtitlestext' => 'အောက်ပါခေါင်းစဉ်များကို ဖန်တီးမရအောင် ကာကွယ်ထားသည်',
 'listusers' => 'အသုံးပြုသူစာရင်း',
 'listusers-editsonly' => 'တည်းဖြတ်ထားဖူးသော အသုံးပြုသူများကိုသာ ဖော်ပြရန်',
 'listusers-creationsort' => 'စတင်ရေးသားသည့်ရက်စွဲအလိုက် စီရန်',
@@ -1781,10 +1764,6 @@ Your e-mail address is not revealed when other users contact you.
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-m' => 'တစ်နာရီလျှင် ရှိသည့် မိုင်နှုန်း',
 
-# External editor support
-'edit-externally' => 'ပြင်ပ application တစ်ခုခုကိုသုံး၍ ဤဖိုင်ကို ပြင်ရန်',
-'edit-externally-help' => '(နောက်ထပ်သတင်းအချက်အလက်များအတွက်[https://www.mediawiki.org/wiki/Manual:External_editors တပ်ဆင်မှု လမ်းညွှန်များ] ကို ကြည့်ရန်)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'အားလုံး',
 'namespacesall' => 'အားလုံး',
index 4965feb..049d17f 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-нть марто',
@@ -327,7 +340,6 @@ $messages = array(
 'qbedit' => 'Витнеме-петнеме',
 'qbpageoptions' => 'Те лопась',
 'qbmyoptions' => 'Монь лопан',
-'qbspecialpages' => 'Башка тевень лопат',
 'faq' => 'Сеедьстэ кепедень кевкстемат',
 'faqpage' => 'Project:Сеедьстэ кепедень кевкстемат',
 
@@ -368,7 +380,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 +397,7 @@ $messages = array(
 'articlepage' => 'Ваномс потмокслопанть',
 'talk' => 'Кортнеме',
 'views' => 'Ваномкат',
-'toolbox' => 'Кедьёнкс парго',
+'toolbox' => 'Кедьёнкст',
 'userpage' => 'Ваномонзо кирдицянть лопанзо',
 'projectpage' => 'Ваномонзо проектенть лопанть',
 'imagepage' => 'Ваномс файлань лопанть',
@@ -400,13 +414,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 +433,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 +452,6 @@ $messages = array(
 'ok' => 'Маштови',
 'retrievedfrom' => 'Лисмапрясь "$1"-сто',
 'youhavenewmessages' => 'Тонеть сась $1 ($2).',
-'newmessageslink' => 'Од пачтямнэть',
-'newmessagesdifflink' => 'меельсе полавтома',
 'youhavenewmessagesmulti' => 'Од сёрминеть учить эйсэть $1-со',
 'editsection' => 'витнеме-петнеме',
 'editold' => 'витнеме-петнеме',
@@ -478,6 +496,7 @@ $messages = array(
 # General errors
 'error' => 'Ильведькс',
 'databaseerror' => 'Датабазань ильведькс',
+'databaseerror-error' => 'Ильведькс: $1',
 'laggedslavemode' => 'Ванок: Кизды, лопасонть материалось таштомсь.',
 'readonly' => 'Датабазась панжома экшсэ',
 'enterlockreason' => 'Сёрмадт мейс сёлгамс эряви, ды ёвтак, зярдо таго арьсят панжови',
@@ -523,9 +542,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 +564,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 +616,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 +637,7 @@ $messages = array(
 'newpassword' => 'Од совамо валот:',
 'retypenew' => 'Сёрмадык омбоцеде совамо валот:',
 'resetpass_submit' => 'Тештик совамо валот ды совак',
-'changepassword-success' => 'Совамо валот полавтовсь теть! Совавтыть эйсэть системас...',
+'changepassword-success' => 'Совамовалот полавтовсь!',
 'resetpass_forbidden' => 'Совамо валтнэ а полавтовить',
 'resetpass-submit-loggedin' => 'Полавтомс совамо валот',
 'resetpass-submit-cancel' => 'Саемс мекев',
@@ -678,9 +715,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 +799,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' => '(чаво)',
 
@@ -833,11 +870,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 # Search results
 'searchresults' => 'Мезе муевсь',
 'searchresults-title' => 'Мезе муевсь "$1" вешнемасо',
-'searchresulttext' => '{{SITENAME}} сайтсэ вешнэмадо седе ламо содамга вант [[{{MediaWiki:Helppage}}|кевкстемань пельксэнть]].',
-'searchsubtitle' => 'Вешнить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|весе лопатне "$1" лопасто саезь]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" лопа марто сюлмазь весе лопатне]])',
-'searchsubtitleinvalid' => "Вешнить '''$1'''",
 'titlematches' => 'Лопанть коняксонзо марто вейтьс прась',
-'notitlematches' => 'Лопанть коняксонзо марто вейтьс прамот арасть',
 'textmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот',
 'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
 'prevn' => 'седе икелень {{PLURAL:$1|$1}}',
@@ -846,7 +879,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|савкс|савкст}}',
 'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|савкс|савкст}}',
 'viewprevnext' => 'Ванномс ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Вешнемань аравтомкат',
 'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
 'searchmenu-new' => "'''Шкик \"[[:\$1]]\" лопанть те викисэнть!'''",
 'searchprofile-articles' => 'Потмокс лопат',
@@ -868,19 +900,15 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'search-interwiki-default' => '$1 савкс:',
 'search-interwiki-more' => '(седе ламо)',
 'search-relatedarticle' => 'Малавикс',
-'mwsuggest-disable' => 'Лоткавтомс "AJAX" превспутыенть',
+'mwsuggest-disable' => 'Лоткавтомс вешнемань превспутыенть',
 'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
 'searchrelated' => 'малавикс',
 'searchall' => 'весе',
 'showingresultsheader' => "{{PLURAL:$5|муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
-'nonefound' => "'''Ванта''': Башка лем потмонь апак аравто ансяк кона-кона лем потмот понгить вешнэма таркакс.
-Аравтта вешнэма икельксэкс ''all:'', зярдо мель саят вешнэмс эрьва кодамо таркасто (сайсынек: кортнема лопатнень, лопа парцунтнэнь, ды седе тов), лиякс аравтыка эрявикс лем потмонть вешнэма икельксэкс.",
 'search-nonefound' => 'Те вешнема лангс мезеяк эзь муеве.',
-'powersearch' => 'Седеяк вешнемс',
 'powersearch-legend' => 'Седе келейстэ вешнема',
 'powersearch-ns' => 'Вешнемс не лемпотмотнестэ:',
 'powersearch-redir' => 'Лия таркав ютавтоматнень сёрмалема',
-'powersearch-field' => 'Вешнемс',
 'powersearch-toggleall' => 'Весе',
 'powersearch-togglenone' => 'Арась мезе невтемс',
 'search-external' => 'Ушо йондонь вешнема',
@@ -889,8 +917,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'preferences' => 'Аравтомат',
 'mypreferences' => 'Аравтомат',
 'prefs-edits' => 'Зяроксть витнезь-петнезь:',
-'prefsnologin' => 'Эзить сова',
-'prefsnologintext' => 'Эряви <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} совамс]</span> аравтоматнень ладсемга.',
 'changepassword' => 'Салавань валонь полавтома',
 'prefs-skin' => 'Неемань ладсема',
 'skin-preview' => 'Васнянь неевтезэ',
@@ -911,7 +937,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'prefs-email' => 'Е-сёрмат-мезть',
 'prefs-rendering' => 'Тюсозо-лангозо',
 'saveprefs' => 'Ванстомс',
-'resetprefs' => 'Нардамс апак вансто полавтнемат',
 'restoreprefs' => 'Велявтомс мекев весе ушодкс ладсематнень',
 'prefs-editing' => 'Витнема-петнема',
 'rows' => 'Валчилькстнэ (строкатне):',
@@ -925,7 +950,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'timezonelegend' => 'Шкань зонась:',
 'localtime' => 'Теицянь шкась:',
 'timezoneuseserverdefault' => 'Нолдамс тевс викинь ($1) аравтнематнень',
-'timezoneoffset' => 'Офсет¹:',
 'servertime' => 'Серверэнь шкась:',
 'guesstimezone' => 'Пештемс интернет икельксстэть',
 'timezoneregion-africa' => 'Африка',
@@ -951,9 +975,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' => 'Е-сёрмапаргот а эряви тешкстамс. Сон карми эрявомо ансяк салававалонь одов пачтямсто ёмавтындерясак неень салавань валот.',
@@ -1055,8 +1079,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' => 'витнемс-петнемс лия викитнесэ теицянь видечитнень',
@@ -1072,6 +1096,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-нть эйстэ саезь.',
@@ -1091,7 +1116,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'boteditletter' => 'б',
 'rc_categories_any' => 'Кодамо илязо уле',
 'newsectionsummary' => '/* $1 */ од пелькс',
-'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга (JavaScript эряви)',
+'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга',
 'rc-enhanced-hide' => 'Кекшемс келейстэ ёвтазенть',
 'rc-old-title' => 'васня сёрмадозель «$1» лем марто',
 
@@ -1322,7 +1347,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'deadendpages' => 'Поладкстомо-лисемавтомо лопат',
 'deadendpagestext' => 'Не вана лопатне апак сюлмаво {{SITENAME}} сайтсэ лия лопа марто.',
 'protectedpages' => 'Ванстонь лопат',
-'protectedpagestext' => 'Не вана лопатне ванстозь, иляст понго печтевтемс эли витнемс-петнемс',
 'protectedtitles' => 'Ванстонь конякст',
 'listusers' => 'Теицят-кить',
 'listusers-editsonly' => 'Невтемс ансяк витнема-петнема марто совийтнень-лисийтнень',
@@ -1425,7 +1449,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'emailsenttext' => 'Е-сёрмасо пачтямнэть кучовсь.',
 
 # Watchlist
-'watchlist' => 'Ð\9cезе Ð¼ÐµÐ»Ñ\8cга Ð¼Ð¾Ð½ Ð²Ð°Ð½Ñ\81Ñ\82нÑ\8fн',
+'watchlist' => 'Ð\92анома Ð»ÐµÐ¼Ñ\80иÑ\81Ñ\8cме',
 'mywatchlist' => 'Мезе мельга мон ванстнян',
 'watchlistfor2' => '$1-нь туртов $2',
 'nowatchlist' => 'Ванома керьксэзэть мезеяк апак путо.',
@@ -1859,7 +1883,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' => 'кирьксэс аравтозь',
 
@@ -2079,10 +2103,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'exif-urgency-low' => 'Аламо ($1)',
 'exif-urgency-high' => 'Ламо ($1)',
 
-# External editor support
-'edit-externally' => 'Витнемс-петнемс те файланть, тевс нолдазь ушо ёнксонь программанть',
-'edit-externally-help' => '(Вант [https://www.mediawiki.org/wiki/Manual:External_editors аравтома инструкциятнень] седе ламо информациянть кис.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'весе',
 'namespacesall' => 'весе',
@@ -2175,7 +2195,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' => 'Шукш пачтнематнеде кедьёнкст',
 
@@ -2231,4 +2251,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'duration-centuries' => '$1 {{PLURAL:$1|пинге|пингеть}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тёжтьие|тёжтьиеть}}',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Васнянь неевтезэ',
+
 );
index c903256..4e66ed0 100644 (file)
@@ -268,7 +268,6 @@ $messages = array(
 'qbedit' => 'دچی‌ین',
 'qbpageoptions' => 'این صفحه',
 'qbmyoptions' => 'مه صفحه‌ئون',
-'qbspecialpages' => 'شا صفحه‌ئون',
 'faq' => 'معمولی سوالا',
 'faqpage' => 'Project:FAQ',
 
@@ -378,8 +377,6 @@ $2، $1',
 'ok' => 'خا',
 'retrievedfrom' => '"$1" جه بیته بیّه',
 'youhavenewmessages' => 'شما اتا $1 دانّی ($2).',
-'newmessageslink' => 'ترنه پیغوم‌ئون',
-'newmessagesdifflink' => 'پایانی دچی‌یه',
 'youhavenewmessagesfromusers' => 'شِما {{PLURAL:$3| کارور دیگه| $3  کارور}} $1 دارنی ($2).',
 'youhavenewmessagesmanyusers' => 'شما ات‌سری کارور جه $1 دارنی ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ترنه پیغوم|ترنه پیغوم}}',
@@ -474,9 +471,6 @@ $2، $1',
 'perfcached' => 'این چیون ثبت بَیی حافظه جه انّه و ممکنه آپدیت نَوائن. حداکثر {{PLURAL:$1|اتا نتیجه|$1تا نتیجه}} قدیمی حافظه دله دره.',
 'querypage-no-updates' => 'این صفحه فعلاً نَونه آپدیت بَواشه.
 همینسه ونه دله بنویشته‌ئون شاید قدیمی بائن.',
-'wrong_wfQuery_params' => 'پارامترون wfQuery()‎ غلطه<br />
-تابع: $1<br />
-پرس‌وجو: $2',
 'viewsource' => 'منبع ره بدی‌ین',
 'viewsource-title' => '$1 مبدأ ره سِراق هدائِن',
 'actionthrottled' => 'شمه پیش ره بیتنه',
@@ -647,8 +641,6 @@ $2، $1',
 
 # Search results
 'searchresults' => 'بچرخستن ِجوابون',
-'searchsubtitle' => "شما '''[[:$1]]''' دمبال بگردستنی ([[Special:Prefixindex/$1|صفحه‌ئونی که با «$1» شروع وانّه]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|صفحه‌ئونی که به «$1» لینک هدانه]])",
-'notitlematches' => 'هیچ صفحه‌یی شمه گپ واری نیّه',
 'prevn' => 'پـیـشـیـن {{PLURAL:$1|$1}}',
 'nextn' => 'تا پَس‌تر {{PLURAL:$1|$1}}',
 'viewprevnext' => 'هارشائن ($1 {{int:pipe-separator}} $2) ($3)',
@@ -659,16 +651,13 @@ $2، $1',
 'search-suggest' => 'شما اینتا ره نخاسنی: $1',
 'search-interwiki-caption' => 'خاخر پروژه‌ئون',
 'search-interwiki-more' => '(ویشتر)',
-'powersearch' => 'ململ بَیی دور هایتن',
 'powersearch-legend' => 'ململ بَیی دور هایتن',
 'powersearch-ns' => 'بچرخستن اینان دله:',
 'powersearch-redir' => '',
-'powersearch-field' => 'دور هایتن اینتا وسه:',
 
 # Preferences page
 'mypreferences' => 'مه خاستنی‌ئون',
 'prefs-edits' => 'تعداد دچی‌یه‌ئون:',
-'prefsnologin' => 'سیستم دله نمویی',
 'prefs-rc' => 'تازه دگاردسته‌ئون',
 'youremail' => 'شه مه Email:',
 'username' => 'کاروری نوم:',
@@ -1025,9 +1014,6 @@ $2، $1',
 'exif-orientation-3' => '180 درجه چرخ بزوئن',
 'exif-orientation-4' => 'عمودی په‌شت ئو روبئی',
 
-# External editor support
-'edit-externally' => 'ای فـایـل ره، أتـا دأیـا بـه‌رنـومـه هـه‌مـرا، دأچـیـه‌نـیـن',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'همه',
 'namespacesall' => 'همه',
index a9224e7..8834177 100644 (file)
@@ -205,7 +205,6 @@ $messages = array(
 'qbedit' => 'Ticpatlāz',
 'qbpageoptions' => 'Inīn zāzanilli',
 'qbmyoptions' => 'Nozāzanil',
-'qbspecialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
 'faq' => 'Zan īc tētlatlanīliztli',
 'faqpage' => 'Project:FAQ',
 
@@ -302,8 +301,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',
@@ -591,8 +588,6 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 # Search results
 'searchresults' => 'Tlatēmoliztli',
 'searchresults-title' => '«$1» tlatēmōliztli īmochīhualiz',
-'searchsubtitle' => 'Ōtictēmōz \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|mochīntīn zāzaniltin mopēhua īca "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|mochīntīn zāzaniltin tzonhuilia "$1" īhuīc]])',
-'searchsubtitleinvalid' => "Ōtictēmo '''$1'''",
 'prevn' => '{{PLURAL:$1|$1}} achtopa',
 'nextn' => 'niman {{PLURAL:$1|$1}}',
 'shown-title' => 'Quinēxiltīz $1 {{PLURAL:$1|mochīhualiztli}} cece āmac',
@@ -617,11 +612,9 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'search-relatedarticle' => 'Ītechcopa',
 'searchrelated' => 'ītechcopa',
 'searchall' => 'mochīntīn',
-'powersearch' => 'Chicāhuac tlatēmoliztli',
 'powersearch-legend' => 'Chicāhuac tlatēmoliztli',
 'powersearch-ns' => 'Tlatēmōz tōcātzimpan:',
 'powersearch-redir' => 'Quimpiya tlacuepaliztli',
-'powersearch-field' => 'Tlatēmōz',
 'powersearch-toggleall' => 'Mochi',
 'powersearch-togglenone' => 'Ahtlein',
 'search-external' => 'Tlatēmotiliztli calāmpa',
@@ -630,7 +623,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',
@@ -940,9 +932,7 @@ Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.',
 'deadendpages' => 'Ahtlaquīzaliztli zāzaniltin',
 'protectedpages' => 'Zāzaniltin ōmoquīxti',
 'protectedpages-indef' => 'Zan ahcāhuitl tlaquīxtiliztli',
-'protectedpagestext' => 'Inīn zāzaniltin ōmoquīxtih, auh ahmo mohuelītih mozacah nozo mopatlah',
 'protectedtitles' => 'Tōcāitl ōmoquīxtih',
-'protectedtitlestext' => 'Inīn tōcāitl ōmoquīxtih, auh ahmo mohuelītih mochīhuah',
 'listusers' => 'Tlatequitiltilīlli',
 'newpages' => 'Yancuīc zāzaniltin',
 'newpages-username' => 'Tlatequitiltilīltōcāitl:',
@@ -1471,8 +1461,7 @@ Niman tihuelīti [[Special:UserLogin|timocalaqui]] auh ticpactiāz huiquitica.',
 
 # Special:SpecialPages
 'specialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
-'specialpages-note' => '----
-* Yeliztli nōncuahquīzqui āmatl.
+'specialpages-note' => '* Yeliztli nōncuahquīzqui āmatl.
 * <span class="mw-specialpagerestricted">Tlaquīxtīlli nōncuahquīzqui āmatl.</span>
 * <span class="mw-specialpagecached">Tlatlātīlli nōncuahquīzqui āmatl (aocmo monemitīa).</span>',
 'specialpages-group-other' => 'Oksẻki nònkuâkìskàtlaìxtlapaltìn',
@@ -1508,4 +1497,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..9153ae4 100644 (file)
@@ -12,6 +12,8 @@
  * @author Kaihsu
  */
 
+$fallback = 'cdo, zh-hant';
+
 $datePreferences = array(
        'default',
        'ISO 8601',
@@ -166,7 +168,6 @@ $messages = array(
 'qbedit' => 'Siu-kái',
 'qbpageoptions' => 'Chit ia̍h',
 'qbmyoptions' => 'Goá ê ia̍h',
-'qbspecialpages' => 'Te̍k-sû-ia̍h',
 'faq' => 'Būn-tah',
 'faqpage' => 'Project:Būn-tah',
 
@@ -281,8 +282,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',
@@ -362,9 +361,6 @@ Nā m̄-sī hit chióng chêng-hêng, lí khó-lêng tú tio̍h nńg-thé ê chh
 'perfcachedts' => 'Ē-kha ê chu-liāu tùi lâi--ê, tī $1 keng-sin--koè. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Chit-má bē-sái kái chit ia̍h.
 Chia ê chu-liāu bē-tàng sui tiông-sin chéng-lí.',
-'wrong_wfQuery_params' => 'Chhò-ngō͘ ê chham-sò͘ chhoân hō͘ wfQuery()<br />
-Hâm-sò͘: $1<br />
-Cha-sûn: $2',
 'viewsource' => 'Khoàⁿ goân-sú lōe-iông',
 'actionthrottled' => 'Tōng-chok hông tóng leh.',
 'actionthrottledtext' => 'Ūi-tio̍h thê-hông lah-sap ê chhú-tì,  lí ū hông hān-chè tī té sî-kan lāi chò siuⁿ chē pái chit ê tōng-chok,  taⁿ lí í-keng chhiau-koè hān-chè.
@@ -574,9 +570,7 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 # Search results
 'searchresults' => 'Kiám-sek kiat-kó',
 'searchresults-title' => 'Chhoé "$1" ê kiat-kó',
-'searchresulttext' => 'Koan-hē kiám-sek {{SITENAME}} ê siông-sè pō·-sò·, chhiáⁿ chham-khó [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'titlematches' => 'Phiau-tê ū-tùi ê bûn-chiuⁿ',
-'notitlematches' => 'Bô sio-tùi ê ia̍h-piau-tê',
 'textmatches' => 'Lōe-iông ū-tùi ê bûn-chiuⁿ',
 'notextmatches' => 'Bô sio-tùi ê bûn-chiuⁿ lōe-iông',
 'prevn' => 'chêng {{PLURAL:$1|$1}} hāng',
@@ -594,14 +588,11 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'searchall' => 'choân-pō·',
 'showingresults' => 'Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$1</b> hāng kiat-kó.',
 'showingresultsnum' => 'Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$3</b> hāng kiat-kó.',
-'powersearch' => 'Kiám-sek',
 'powersearch-legend' => 'Kiám-sek',
 
 # 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àⁿ',
@@ -614,7 +605,6 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'prefs-watchlist-edits' => 'Khok-chhiong ê kàm-sī-toaⁿ tio̍h hián-sī kúi hāng pian-chi̍p:',
 'prefs-misc' => 'Kî-thaⁿ ê siat-tēng',
 'saveprefs' => 'Pó-chûn siat-tēng',
-'resetprefs' => 'Têng siat-tēng',
 'prefs-editing' => 'Pian-chi̍p',
 'rows' => 'Chōa:',
 'columns' => 'Nôa',
@@ -626,7 +616,6 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'savedprefs' => 'Lí ê iōng-chiá siat-tēng í-keng pó-chûn khí lâi ah.',
 'timezonelegend' => 'Sî-khu',
 'localtime' => 'Chāi-tē sî-kan sī',
-'timezoneoffset' => 'Sî-chha¹',
 'servertime' => 'Server sî-kan hiān-chāi sī',
 'guesstimezone' => 'Tùi liû-lám-khì chhau--lâi',
 'allowemail' => 'Ún-chún pa̍t-ê iōng-chiá kià email kòe-lâi',
@@ -783,7 +772,6 @@ Tī pat-lâng liân-lo̍k lí ê sî-chūn bē kā e-mail tsū-tsí siá chhut--
 'deadendpages' => 'Khu̍t-thâu-ia̍h',
 'deadendpagestext' => 'Ē-kha ê ia̍h bô liân kàu wiki lāi-té ê kî-thaⁿ ia̍h.',
 'protectedpages' => 'Siū pó-hō͘ ê ia̍h',
-'protectedpagestext' => 'Ē-kha ê ia̍h siū pó-hō͘, bē-tit soá-ūi ia̍h pian-chi̍p',
 'listusers' => 'Iōng-chiá lia̍t-toaⁿ',
 'newpages' => 'Sin ia̍h',
 'newpages-username' => 'Iōng-chiá miâ-chheng:',
@@ -1085,10 +1073,6 @@ Lí ē-sái khoàⁿ i ê goân-sú-bé.',
 'metadata-expand' => 'Hián-sī iù-chiat',
 'metadata-collapse' => 'Am iù-chiat',
 
-# External editor support
-'edit-externally' => 'Iōng gōa-pō· èng-iōng nńg-thé pian-chi̍p chit-ê tóng-àn',
-'edit-externally-help' => 'Chham-khó [http://www.mediawiki.org/wiki/Manual:External_editors Help:External_editors] ê soat-bêng.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'choân-pō͘',
 'namespacesall' => 'choân-pō·',
@@ -1169,4 +1153,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 32cdeec..6cec7e7 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' ),
@@ -474,7 +474,6 @@ $messages = array(
 'qbedit' => 'Rediger',
 'qbpageoptions' => 'Sideinnstillinger',
 'qbmyoptions' => 'Egne innstillinger',
-'qbspecialpages' => 'Spesialsider',
 'faq' => 'Ofte stilte spørsmål',
 'faqpage' => 'Project:Ofte stilte spørsmål',
 
@@ -590,8 +589,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}}',
@@ -687,9 +684,6 @@ Den inneholder kanskje ett eller flere tegn som ikke kan brukes i titler.',
 'perfcached' => 'Følgende data er en tidligere kopi og ikke nødvendigvis den siste versjonen i databasen. Maksimalt {{PLURAL:$1|ett resultat|$1 resultater}} er {{PLURAL:$1|tilgjengelig|tilgjengelige}} som tidligere kopier.',
 'perfcachedts' => 'Følgende data er en tidligere kopi, og ble sist oppdatert $1. Maksimalt {{PLURAL:$4|ett resultat|$4 resultater}} er {{PLURAL:$4|tilgjengelig|tilgjengelige}} som tidligere kopier.',
 'querypage-no-updates' => 'Oppdateringer for denne siden er slått av. Data her blir ikke gjenoppfrisket.',
-'wrong_wfQuery_params' => 'Gale paramtere til wfQuery()<br />
-Funksjon: $1<br />
-Spørring: $2',
 'viewsource' => 'Vis kilde',
 'viewsource-title' => 'Vis kilden til $1',
 'actionthrottled' => 'Handlingsgrense overskredet',
@@ -881,7 +875,7 @@ Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.'
 'resetpass-abort-generic' => 'Endring av passord har blitt avbrutt av en utvidelse.',
 
 # Special:PasswordReset
-'passwordreset' => 'Passordresetting',
+'passwordreset' => 'Tilbakestilling av passord',
 'passwordreset-text-one' => 'Fyll ut skjemaet for å tilbakestille passordet',
 'passwordreset-text-many' => '{{PLURAL:$1|Fyll inn et av datafeltene for å tilbakestille passordet ditt.}}',
 'passwordreset-legend' => 'Nullstill passord',
@@ -1372,12 +1366,8 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Søkeresultater',
 'searchresults-title' => 'Søkeresultater for «$1»',
-'searchresulttext' => 'For mer informasjon om søking i {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som begynner med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenker til «$1»]])",
-'searchsubtitleinvalid' => "Du søkte etter '''$1'''",
 'toomanymatches' => 'For mange mulige svar, prøv med en annen spørring',
 'titlematches' => 'Artikkeltitler med treff på forespørselen',
-'notitlematches' => 'Ingen sidetitler samsvarte med søket',
 'textmatches' => 'Artikkeltekster med treff på forespørselen',
 'notextmatches' => 'Inden sidetekst samsvarte med søket',
 'prevn' => 'forrige {{PLURAL:$1|$1}}',
@@ -1386,10 +1376,8 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultater}}',
 'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søkeinnstillinger',
 'searchmenu-exists' => "* Siden '''[[$1]]'''",
 'searchmenu-new' => "'''Opprett siden ''[[:$1]]'' på denne wikien.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynner med dette]]',
 'searchprofile-articles' => 'Innholdssider',
 'searchprofile-project' => 'Hjelp- og prosjektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1417,14 +1405,10 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'showingresults' => "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
 'showingresultsnum' => "Nedenfor vises {{PLURAL:$3|'''ett''' resultat|'''$3''' resultater}} fra og med nummer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
-'nonefound' => "'''Merk''': Som standard søkes det kun i enkelte navnerom.
-For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler, osv), eller bruk det ønskede navnerommet som prefiks.",
 'search-nonefound' => 'Ingen resultater passet til søket.',
-'powersearch' => 'Avansert søk',
 'powersearch-legend' => 'Avansert søk',
 'powersearch-ns' => 'Søk i navnerom:',
 'powersearch-redir' => 'Vis omdirigeringer',
-'powersearch-field' => 'Søk etter',
 'powersearch-togglelabel' => 'Merk:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Ingen',
@@ -1436,8 +1420,6 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
 'preferences' => 'Innstillinger',
 'mypreferences' => 'Innstillinger',
 'prefs-edits' => 'Antall redigeringer:',
-'prefsnologin' => 'Ikke logget inn',
-'prefsnologintext' => 'Du må være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget inn]</span> for å endre brukerinnstillingene.',
 'changepassword' => 'Endre passord',
 'prefs-skin' => 'Utseende',
 'skin-preview' => 'Forhåndsvisning',
@@ -1461,7 +1443,6 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
 'prefs-email' => 'Alternativer for e-post',
 'prefs-rendering' => 'Utseende',
 'saveprefs' => 'Lagre',
-'resetprefs' => 'Tilbakestill ulagrede endringer',
 'restoreprefs' => 'Tilbakestill alt til standardinnstillinger',
 'prefs-editing' => 'Redigering',
 'rows' => 'Rader:',
@@ -1482,7 +1463,6 @@ Enhver som kjenner nøkkelen vil kunne lese din overvåkningsliste, så ikke vis
 'localtime' => 'Lokaltid:',
 'timezoneuseserverdefault' => 'Bruk wikistandard ($1)',
 'timezoneuseoffset' => 'Annet (spesifiser forskjell)',
-'timezoneoffset' => 'Forskjell¹:',
 'servertime' => 'Serverens tid er nå:',
 'guesstimezone' => 'Hent tidssone fra nettleseren',
 'timezoneregion-africa' => 'Afrika',
@@ -1736,6 +1716,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',
@@ -1743,7 +1724,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',
@@ -2232,10 +2213,8 @@ Hver rad inneholder lenker til første og andre omdirigering, samt målet for de
 'protectedpages' => 'Låste sider',
 'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
 'protectedpages-cascade' => 'Kun dypbeskyttelse',
-'protectedpagestext' => 'Følgende sider er låst for flytting eller redigering',
 'protectedpagesempty' => 'Ingen sider er for øyeblikket låst med disse paramterne.',
 'protectedtitles' => 'Beskyttede titler',
-'protectedtitlestext' => 'Følgende titler er beskyttet fra opprettelse',
 'protectedtitlesempty' => 'Ingen titler beskyttes med disse parameterne for øyeblikket.',
 'listusers' => 'Brukerliste',
 'listusers-editsonly' => 'Vis bare brukere med redigeringer',
@@ -3221,20 +3200,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',
 
@@ -3735,10 +3714,6 @@ Rotert 90° mot klokka og vridd vertikalt',
 'exif-urgency-high' => 'Høy ($1)',
 'exif-urgency-other' => 'Brukerdefinert prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Rediger denne filen med et eksternt program',
-'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonene] for mer informasjon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
@@ -3981,8 +3956,7 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 
 # Special:SpecialPages
 'specialpages' => 'Spesialsider',
-'specialpages-note' => '----
-* Normale spesialsider.
+'specialpages-note' => '* Normale spesialsider.
 * <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>
 * <span class="mw-specialpagecached">Spesialsider som oppdateres periodisk (kan være foreldede).</span>',
 'specialpages-group-maintenance' => 'Vedlikeholdsrapporter',
@@ -4192,4 +4166,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 e608014..95038e7 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' ),
@@ -358,7 +356,6 @@ $messages = array(
 'qbedit' => 'Ännern',
 'qbpageoptions' => 'Disse Sied',
 'qbmyoptions' => 'Instellen',
-'qbspecialpages' => 'Spezialsieten',
 'faq' => 'Faken stellte Fragen',
 'faqpage' => 'Project:Faken stellte Fragen',
 
@@ -473,8 +470,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',
@@ -560,9 +555,6 @@ Wenn dat nich de Fall is, denn hest du villicht en Fehler in de Software funnen.
 'perfcached' => "Disse Daten kamen ut den Cache un sünd mööglicherwies nich aktuell. Op't Höögst {{PLURAL:$1|en Resultat is|$1 Resultaten sünd}} in'n Cache verföögbor.",
 'perfcachedts' => "Disse Daten sünd ut’n Cache, tolest aktuell maakt worrn sünd se $1. Op't Höögst {{PLURAL:$4|en Resultat is|$4 Resultaten sünd}} in'n Cache verföögbor.",
 'querypage-no-updates' => "'''Dat aktuell Maken vun disse Siet is opstunns utstellt. De Daten warrt för’t Eerste veröllert blieven.'''",
-'wrong_wfQuery_params' => 'Falschen Parameter för wfQuery()<br />
-Funktschoon: $1<br />
-Query: $2',
 'viewsource' => 'Dokmentborn ankieken',
 'viewsource-title' => 'De Born vun $1 wiesen.',
 'actionthrottled' => 'Akschoon in de Tall begrenzt',
@@ -1054,12 +1046,8 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 # Search results
 'searchresults' => 'Söökresultaten',
 'searchresults-title' => 'Söökresultaten för „$1“',
-'searchresulttext' => 'För mehr Informatschonen över {{SITENAME}}, kiek [[{{MediaWiki:Helppage}}|{{SITENAME}} dörsöken]].',
-'searchsubtitle' => 'Du hest na „[[:$1]]“ söcht ([[Special:Prefixindex/$1|all Sieden, de mit „$1“ anfangt]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all Sieden, de na „$1“ wiest]])',
-'searchsubtitleinvalid' => 'För de Söökanfraag „$1“',
 'toomanymatches' => 'To veel Sieden funnen för de Söök, versöök en annere Affraag.',
 'titlematches' => 'Övereenstimmen mit Överschriften',
-'notitlematches' => 'Kene Övereenstimmen',
 'textmatches' => 'Övereenstimmen mit Texten',
 'notextmatches' => 'Kene Övereenstimmen',
 'prevn' => 'vörige {{PLURAL:$1|$1}}',
@@ -1068,10 +1056,8 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'nextn-title' => 'Tokamen {{PLURAL:$1|Resultat|$1 Resultaten}}',
 'shown-title' => 'Wies $1 {{PLURAL:$1|Resultat|Resultaten}} per Sied',
 'viewprevnext' => 'Wies ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Söökoptionen',
 'searchmenu-exists' => "* Sied '''[[$1]]'''",
 'searchmenu-new' => "'''Stell de Sied „[[:$1]]“ in dit Wiki nee op!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies Sieden, de mit disse Bookstaven anfangt]]',
 'searchprofile-articles' => 'Inholdsieden',
 'searchprofile-project' => 'Hülp- un Projektsieden',
 'searchprofile-images' => 'Datein',
@@ -1099,14 +1085,10 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'showingresults' => "Hier {{PLURAL:$1|is een Resultat|sünd '''$1''' Resultaten}}, anfungen mit #'''$2'''.",
 'showingresultsnum' => "Hier {{PLURAL:$3|is een Resultat|sünd '''$3''' Resultaten}}, anfungen mit #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' vun '''$3'''|Resultaten '''$1 - $2''' vun '''$3'''}} för '''$4'''",
-'nonefound' => "'''Henwies''': Na de Standardinstellung warrt blot en poor Naamrüüm dörsöcht.
-Du kannst dat Woord ''all:'' vör dien Söökwoord setten, dat all Naamrüüm (ok Diskuschoonssieden, Vörlagen usw.) dörsöcht warrt. Dat sülve geit mit de Naams vun de enkelten Naamrüüm.",
 'search-nonefound' => 'För de Söökanfraag geev dat keen Resultaten.',
-'powersearch' => 'Betere Söök',
 'powersearch-legend' => 'Betere Söök',
 'powersearch-ns' => 'Söök in Naamrüüm:',
 'powersearch-redir' => 'Redirects wiesen',
-'powersearch-field' => 'Söök na:',
 'powersearch-togglelabel' => 'Utwählen:',
 'powersearch-toggleall' => 'All',
 'powersearch-togglenone' => 'Keen',
@@ -1118,8 +1100,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',
-'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anmellt]</span> wesen, dat du dien Instellen ännern kannst.',
 'changepassword' => 'Passwoort ännern',
 'prefs-skin' => 'Utsehn vun de Steed',
 'skin-preview' => 'Vörschau',
@@ -1138,7 +1118,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 'prefs-email' => 'E-Mail-Instellungen',
 'prefs-rendering' => 'Utsehn vun de Sied',
 'saveprefs' => 'Spiekern',
-'resetprefs' => 'Trüchsetten',
 'restoreprefs' => 'All Standardinstellungen wedderhalen',
 'prefs-editing' => 'Grött vun’t Textfeld',
 'rows' => 'Regen',
@@ -1156,7 +1135,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 'localtime' => 'Oortstied:',
 'timezoneuseserverdefault' => 'Tied op’n Server bruken',
 'timezoneuseoffset' => 'Anners (Ünnerscheed angeven)',
-'timezoneoffset' => 'Ünnerscheed¹:',
 'servertime' => 'Tied op den Server:',
 'guesstimezone' => 'Ut den Browser övernehmen',
 'timezoneregion-africa' => 'Afrika',
@@ -1691,10 +1669,8 @@ to den vun den tweeten Wiederleiden wiest warrt, un to den de eerste Wiederleide
 'protectedpages' => 'Schuulte Sieden',
 'protectedpages-indef' => 'Blot unbeschränkt schuulte Sieden wiesen',
 'protectedpages-cascade' => 'Blot Sieden mit Kaskadenschutz',
-'protectedpagestext' => 'Disse Sieden sünd vör dat Schuven oder Ännern schuult',
 'protectedpagesempty' => 'Opstunns sünd kene Sieden schuult',
 'protectedtitles' => 'Sparrte Sieden',
-'protectedtitlestext' => 'Disse Sieden sünd för dat nee Opstellen sperrt',
 'protectedtitlesempty' => 'Opstunns sünd mit disse Parameters kene Sieden sperrt.',
 'listusers' => 'Brukerlist',
 'listusers-editsonly' => 'Blot Brukers mit Bidrääg wiesen',
@@ -2857,10 +2833,6 @@ Wiedere warrt standardmatig nich anwiest:
 'exif-iimcategory-spo' => 'Sport',
 'exif-iimcategory-wea' => 'Wedder',
 
-# External editor support
-'edit-externally' => 'Änner disse Datei mit en extern Programm',
-'edit-externally-help' => '(Lees de [https://www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
@@ -3022,8 +2994,7 @@ Du kannst ok de [[Special:EditWatchlist|normale Sied to’n Ännern]] bruken.',
 
 # Special:SpecialPages
 'specialpages' => 'Sünnerliche Sieden',
-'specialpages-note' => '----
-* Normale Spezialsieden
+'specialpages-note' => '* Normale Spezialsieden
 * <strong class="mw-specialpagerestricted">Spezialsieden för Brukers mit mehr Rechten</strong>',
 'specialpages-group-maintenance' => 'Pleeglisten',
 'specialpages-group-other' => 'Annere Spezialsieden',
@@ -3105,4 +3076,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 75bf97a..5652027 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' ),
 );
 
@@ -465,7 +481,6 @@ $messages = array(
 'qbedit' => 'Bewark',
 'qbpageoptions' => 'Disse zied',
 'qbmyoptions' => 'Veurkeuren',
-'qbspecialpages' => 'Spesiale ziejen',
 'faq' => 'Vragen die vake esteld wörden',
 'faqpage' => 'Project:Vragen die vake esteld wörden',
 
@@ -581,8 +596,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}}',
@@ -681,9 +694,6 @@ Der is gien veerdere informasie beschikbaor.',
 'perfcached' => 'Disse gegevens koemen uut t tussengeheugen en bin misschien niet aktueel. Der {{PLURAL:$1|is hooguut een resultaot|bin hooguut $1 resultaoten}} beschikbaor in t tussengeheugen.',
 'perfcachedts' => 'Disse gegevens koemen uut t tussengeheugen die veur t lest bie-ewörken is op $2 um $3. Der {{PLURAL:$4|is hooguut een resultaot|bin hooguut $4 resultaoten}} beschikbaor in t tussengeheugen.',
 'querypage-no-updates' => "'''Disse zied wörden niet meer bie-ewörken.'''",
-'wrong_wfQuery_params' => 'Parameters veur wfQuery() waren verkeerd<br />
-Funksie: $1<br />
-Zeukopdrachte: $2',
 'viewsource' => 'Brontekste bekieken',
 'viewsource-title' => 'Bron bekieken van $1',
 'actionthrottled' => 'Haandeling tegenehöllen',
@@ -1360,12 +1370,8 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 # Search results
 'searchresults' => 'Zeukresultaoten',
 'searchresults-title' => 'Zeukresultaoten veur "$1"',
-'searchresulttext' => 'Veur meer informasie over zeuken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Je zöchten naor \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle ziejen die beginnen mit "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle ziejen die verwiezen naor "$1"]])',
-'searchsubtitleinvalid' => 'Veur zeukopdrachte "$1"',
 'toomanymatches' => 'Der waren te veule resultaoten. Probeer n aandere zeukopdrachte.',
 'titlematches' => 'Overeenkomst mit t onderwarp',
-'notitlematches' => 'Gien overeenstemming',
 'textmatches' => 'Overeenkomst mit teksten',
 'notextmatches' => 'Gien overeenstemming',
 'prevn' => 'veurige {{PLURAL:$1|$1}}',
@@ -1374,10 +1380,8 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'nextn-title' => '{{PLURAL:$1|Volgend resultaot|Volgende $1 resultaoten}}',
 'shown-title' => 'Laot $1 {{PLURAL:$1|resultaot|resultaoten}} per zied zien',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Zeukopsies',
 'searchmenu-exists' => "'''Der is n zied mit de naam \"[[:\$1]]\" op disse wiki.'''",
 'searchmenu-new' => "'''De zied \"[[:\$1]]\" op disse wiki anmaken!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ziednamen mit dit veurvoegsel laoten zien]]',
 'searchprofile-articles' => 'Artikels',
 'searchprofile-project' => 'Hulp- en projektziejen',
 'searchprofile-images' => 'Multimedia',
@@ -1405,13 +1409,10 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'showingresults' => "Hieronder {{PLURAL:$1|steet '''1''' resultaot|staon '''$1''' resultaoten}}  <b>$1</b> vanaof nummer <b>$2</b>.",
 'showingresultsnum' => "Hieronder {{PLURAL:$3|steet '''1''' resultaot|staon '''$3''' resultaoten}} vanaof nummer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaot '''$1''' van '''$3'''|Resultaoten '''$1 - $2''' van '''$3'''}} veur '''$4'''",
-'nonefound' => "<strong>Let wel:</strong> standard wörden niet alle naamruumtes deurzöcht. A'j in zeukopdrachte as veurvoegsel \"''all:'' gebruken wörden alle ziejen deurzöcht (oek overlegziejen, mallen en gao zo mer deur). Je kunnen oek n naamruumte as veurvoegsel gebruken.",
 'search-nonefound' => 'Der bin gien resultaoten veur de zeukopdrachte.',
-'powersearch' => 'Zeuk',
 'powersearch-legend' => 'Uutebreid zeuken',
 'powersearch-ns' => 'Zeuken in naamruumten:',
 'powersearch-redir' => 'Deurverwiezingen bekieken',
-'powersearch-field' => 'Zeuken naor',
 'powersearch-togglelabel' => 'Selekteren:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Gien',
@@ -1423,8 +1424,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',
-'prefsnologintext' => 'Je mutten <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} an-emeld]</span> ween um joew veurkeuren in te kunnen stellen.',
 'changepassword' => 'Wachtwoord wiezigen',
 'prefs-skin' => '{{SITENAME}}-uterlik',
 'skin-preview' => 'bekieken',
@@ -1448,7 +1447,6 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'prefs-email' => 'Instellingen veur netpost',
 'prefs-rendering' => 'Ziedweergave',
 'saveprefs' => 'Veurkeuren opslaon',
-'resetprefs' => 'Standardveurkeuren herstellen',
 'restoreprefs' => 'Alle standardinstellingen weerummezetten (veur alle seksies)',
 'prefs-editing' => 'Bewarkingsveld',
 'rows' => 'Regels',
@@ -1469,7 +1467,6 @@ Je kunnen de [[Special:ResetTokens|tokens opniej instellen]] a'j dat willen.",
 'localtime' => 'Plaotselike tied:',
 'timezoneuseserverdefault' => 'Wikistandard gebruken ($1)',
 'timezoneuseoffset' => 'Aanders (tiedverschil angeven)',
-'timezoneoffset' => 'Tiedverschil¹:',
 'servertime' => 'Tied op de server:',
 'guesstimezone' => 'Vanuut webkieker overnemen',
 'timezoneregion-africa' => 'Afrika',
@@ -1724,6 +1721,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',
@@ -2210,10 +2208,8 @@ Meestentieds is leste zied de gewunste doelzied, waor oek de eerste zied heer zo
 'protectedpages' => 'Ziejen die beveiligd bin',
 'protectedpages-indef' => 'Allinnig blokkeringen zonder verloopdaotum',
 'protectedpages-cascade' => 'Allinnig beveiligingen mit de kaskadeopsie',
-'protectedpagestext' => 'De volgende ziejen bin beveiligd en kunnen niet herneumd of bewarkt wörden.',
 'protectedpagesempty' => 'Der bin op t moment gien beveiligden ziejen',
 'protectedtitles' => 'Ziednamen die beveiligd bin',
-'protectedtitlestext' => 'De volgende ziejen bin beveiligd, zodat ze niet opniej an-emaakt kunnen wörden',
 'protectedtitlesempty' => 'Der bin noen gien titels beveiligd die an disse veurweerden voldoon.',
 'listusers' => 'Gebrukerslieste',
 'listusers-editsonly' => 'Allinnig gebrukers mit bewarkingen laoten zien',
@@ -3711,10 +3707,6 @@ Aandere velden wörden verbörgen.
 'exif-urgency-high' => 'Hoog ($1)',
 'exif-urgency-other' => 'Deur gebruker in-estelde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => 'Wiezig dit bestaand mit n extern programma',
-'edit-externally-help' => '(Zie de [https://www.mediawiki.org/wiki/Manual:External_editors installasie-instruksies] veur meer informasie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alles',
@@ -3937,8 +3929,7 @@ Samen mit dit programma heur je n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de
 
 # Special:SpecialPages
 'specialpages' => 'Spesiale ziejen',
-'specialpages-note' => '----
-* Normale spesiale ziejen.
+'specialpages-note' => '* Normale spesiale ziejen.
 * <strong class="mw-specialpagerestricted">Beparkt toegankelike spesiale ziejen.</strong>
 * <span class="mw-specialpagecached">Spesiale ziejen mit allinnig gegevens uut t tussengeheugen (kunnen verouwerd ween).</span>',
 'specialpages-group-maintenance' => 'Onderhoudsliesten',
@@ -4153,4 +4144,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 1696d05..0ed17e9 100644 (file)
@@ -211,7 +211,6 @@ $messages = array(
 'qbedit' => 'सम्पादन गर्ने',
 'qbpageoptions' => 'यो पेज',
 'qbmyoptions' => 'मेरो पेज',
-'qbspecialpages' => 'विशेष पृष्ठहरु',
 'faq' => 'धैरै सोधिएका प्रश्नहरु',
 'faqpage' => 'Project:FAQ',
 
@@ -331,8 +330,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => ' "$1" बाट निकालिएको',
 'youhavenewmessages' => 'तपाईंको लागि ($2) मा  $1 छ ।',
-'newmessageslink' => 'नयाँ सन्देशहरू',
-'newmessagesdifflink' => 'आखिरी परिवर्तन',
 'youhavenewmessagesfromusers' => 'तपाईंको लागि  {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
 'youhavenewmessagesmanyusers' => 'तपाईँलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।',
 'newmessageslinkplural' => '{{PLURAL:$1|नयाँ सन्देश|नयाँ सन्देशहरू}}',
@@ -434,9 +431,6 @@ $1',
 'perfcachedts' => 'निम्न आँकडा क्याच हो र $1 पहिला अद्यतन गरिएको थियो।  यस क्याचमा उपलब्ध {{PLURAL:$4|एउटा कारण हो|$4 कारणहरु हुन्}}।',
 'querypage-no-updates' => 'यो पृष्ठको अद्यतन कार्य निस्क्रिय गरिएको छ।
 यहाँको डेटा हालमा ताजा पारिने  छैन।',
-'wrong_wfQuery_params' => ' wfQuery()को लागि गलत प्यारामेटर<br />
-कार्य: $1<br />
-खोज: $2',
 'viewsource' => 'स्रोत हेर्नुहोस',
 'viewsource-title' => ' $1 को स्रोत हेर्नुहोस',
 'actionthrottled' => 'कार्य रोकियो',
@@ -1046,12 +1040,8 @@ $1",
 # Search results
 'searchresults' => 'खोज नतिजाहरू',
 'searchresults-title' => ' "$1"को लागि खोज नतिजाहरु',
-'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' => 'पृष्ठ पाठ मिल्छ',
 'notextmatches' => 'अक्षरस् पेज भेटिएन',
 'prevn' => 'पहिलेको {{PLURAL:$1|$1}}',
@@ -1060,10 +1050,8 @@ $1",
 'nextn-title' => 'यस पछिको $1 {{PLURAL:$1|नतिजा |नतिजाहरु}}',
 'shown-title' => 'देखाउने $1 {{PLURAL:$1|नतिजा|नतिजाहरु}} प्रति पृष्ठ',
 'viewprevnext' => 'हेर्नुहोस् ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "''' \"[[:\$1]]\" नाम गरेको पृष्ठ  यो विकीमा रहेको छ'''",
 'searchmenu-new' => "'''यस विकिमा  \"[[:\$1]]\" शीर्षक भएको पृष्ठ बनाउनुहोस् !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|पृष्ठहरु प्रिफिक्सले हेर्नुहोस् ]]',
 'searchprofile-articles' => 'सामग्री पृष्ठहरु',
 'searchprofile-project' => 'सहायता र आयोजना पृष्ठहरु',
 'searchprofile-images' => 'मल्टिमिडिया(श्रव्य दृश्य)',
@@ -1091,14 +1079,10 @@ $1",
 'showingresults' => "देखाउदै  {{PLURAL:$1|'''१''' नतिजा|'''$1''' नतिजाहरु }} , #'''$2''' बाट सुरुहुने ।",
 'showingresultsnum' => "तल देखाउदै  {{PLURAL:$3|'''१''' नतिजा|'''$3''' नतिजाहरु }}, #'''$2''' बाट सुरुहुने ।",
 'showingresultsheader' => "{{PLURAL:$5|नतिजा '''$1''' को '''$3'''|नतिजाहरु '''$1 - $2''' को'''$3'''}}  ,'''$4''' को लागि",
-'nonefound' => "'''द्रष्टव्य''': पूर्वनिर्धारित रुपमा केहीमात्र नेमस्पेसेजहरू खोजिन्छ ।
-तपाईँको खोजलाई  ''all:'' राखी सवै(वार्तालाप , ढाँचा सहित, इत्यादि) सामग्री खोज्ने गरी मिलाउनुहोस् , ‍नत्र चाहेको नेमस्पेसलाई अगाडि जोड्नुहोस् ।",
 'search-nonefound' => 'तपाईँको क्वेरीसँग मेल खाने नतिजाहरू भेटिएनन्',
-'powersearch' => 'उन्नत खोज',
 'powersearch-legend' => 'उन्नत खोज',
 'powersearch-ns' => 'नेमस्पेसेजहरुमा खोज्ने :',
 'powersearch-redir' => 'अनुप्रेषित सूचीकृत गर्ने',
-'powersearch-field' => 'को लागि खोज्ने',
 'powersearch-togglelabel' => 'जाँच्ने :',
 'powersearch-toggleall' => 'सबै',
 'powersearch-togglenone' => 'कुनै पनि होइन',
@@ -1111,8 +1095,6 @@ $1",
 'preferences' => 'रोजाईहरू',
 'mypreferences' => 'प्राथमिकताहरु',
 'prefs-edits' => 'सम्पादन संख्या:',
-'prefsnologin' => 'प्रवेश (लग ईन) नगरिएको',
-'prefsnologintext' => 'प्रयोगकर्ता अभिरूचि निर्धारण गर्न <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ]</span>तपाईंले प्रवेश गरेको हुनुपर्छ।',
 'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
 'prefs-skin' => 'काँचुली',
 'skin-preview' => 'पूर्वावलोकन',
@@ -1136,7 +1118,6 @@ $1",
 'prefs-email' => 'इमेल  विकल्पहरु',
 'prefs-rendering' => 'स्वरुप',
 'saveprefs' => 'संग्रह',
-'resetprefs' => 'संग्रह नगरिएका परिवर्तनहरु सफागर्ने',
 'restoreprefs' => 'सबै पूर्वनिर्धारित स्थिती कायम गर्ने(सबै खण्डहरूमा)',
 'prefs-editing' => 'सम्पादन',
 'rows' => 'हरफहरु :',
@@ -1154,7 +1135,6 @@ $1",
 'localtime' => 'स्थानिय समय:',
 'timezoneuseserverdefault' => 'विकि मूल  ($1) रुपमा प्रयोग गर्ने',
 'timezoneuseoffset' => 'अरु नै(अफसेट खुलाउनुहोस्)',
-'timezoneoffset' => 'अफसेट¹:',
 'servertime' => 'सर्भर समय:',
 'guesstimezone' => 'ब्राउजरबाट भराउनुहोस्',
 'timezoneregion-africa' => 'अफ्रिका',
@@ -1390,6 +1370,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 देखिका नयाँ परिवर्तनहरू देखाउनु',
@@ -1751,10 +1732,8 @@ $1',
 'protectedpages' => 'संरक्षित पृष्ठहरु',
 'protectedpages-indef' => 'नखुलेको सुरक्षा मात्र',
 'protectedpages-cascade' => 'लामबद्ध सुरक्षाहरु मात्रा',
-'protectedpagestext' => 'निम्न पृष्ठहरु सम्पादितनहुन र सारिनबाट  जोगाइएका छन्',
 'protectedpagesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका पृष्ठहरु छैनन् ।',
 'protectedtitles' => 'सुरक्षा गरिएका शिर्षकहरु',
-'protectedtitlestext' => 'निम्न शिर्षकहरु शृजनाहुनबाट सुरक्षित गरिएको छ',
 'protectedtitlesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका शीर्षकहरु छैनन् ।',
 'listusers' => 'प्रयोगकर्ता सूची',
 'listusers-editsonly' => 'सम्पादन गरेका प्रयोगकर्तामात्र देखाउने',
@@ -3075,10 +3054,6 @@ $8',
 'exif-urgency-high' => 'उच्च ($1)',
 'exif-urgency-other' => 'प्रयोगकर्ताले निर्धारण गरेको प्राथमिकता ($1)',
 
-# External editor support
-'edit-externally' => 'यो फाइललाई बाह्य अनुप्रयोग प्रयोग गरेर सम्पादन गर्ने',
-'edit-externally-help' => '(थप जानकारीको लागि [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] मा हेर्नुहोस् )',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सबै',
 'namespacesall' => 'सबै',
@@ -3347,8 +3322,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'विशेष पृष्ठ',
-'specialpages-note' => '----
-* साधारण विशेष पृष्ठहरु।
+'specialpages-note' => '* साधारण विशेष पृष्ठहरु।
 * <span class="mw-specialpagerestricted">निषेधित विशेष पृष्ठहरु।</span>
 * <span class="mw-specialpagecached">क्याश गरिएका विशेष पृष्ठहरु (अध्यावधिक नहुन सक्छ)।</span>',
 'specialpages-group-maintenance' => 'मर्मत प्रतिवेदनहरु',
index a21e0f1..10eb6b9 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' ),
@@ -529,7 +534,6 @@ $messages = array(
 'qbedit' => 'Bewerken',
 'qbpageoptions' => 'Deze pagina',
 'qbmyoptions' => "Mijn pagina's",
-'qbspecialpages' => 'Speciale pagina’s',
 'faq' => 'Veel gestelde vragen',
 'faqpage' => 'Project:Veelgestelde vragen',
 
@@ -646,12 +650,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',
@@ -750,9 +752,6 @@ Wellicht bevat de paginanaam niet toegestane tekens.',
 'perfcachedts' => 'Deze gegevens komen uit een cache die voor het laatst is bijgewerkt op $2 om $3. Er {{PLURAL:$4|is maximaal één resultaat|zijn maximaal $4 resultaten}} beschikbaar in de cache.',
 'querypage-no-updates' => 'Deze pagina wordt niet bijgewerkt.
 Gegevens op deze pagina worden niet ververst.',
-'wrong_wfQuery_params' => 'Verkeerde parameters voor wfQuery()<br />
-Functie: $1<br />
-Zoekopdracht: $2',
 'viewsource' => 'Brontekst bekijken',
 'viewsource-title' => 'Brontekst bekijken van $1',
 'actionthrottled' => 'Handeling tegengehouden',
@@ -785,7 +784,8 @@ 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 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
 'virus-badscanner' => "Onjuiste configuratie: onbekende virusscanner: ''$1''.",
@@ -824,7 +824,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',
@@ -832,7 +832,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}}.
@@ -1360,15 +1360,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',
@@ -1465,13 +1466,9 @@ Meer gegevens zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|
 # Search results
 'searchresults' => 'Zoekresultaten',
 'searchresults-title' => 'Zoekresultaten voor "$1"',
-'searchresulttext' => 'Voor meer informatie over zoeken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'U hebt gezocht naar \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginnen met "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwijzen naar "$1"]])',
-'searchsubtitleinvalid' => "U hebt gezocht naar '''$1'''",
 'toomanymatches' => 'Er waren te veel resultaten.
 Probeer een andere zoekopdracht.',
 'titlematches' => 'Overeenkomst met onderwerp',
-'notitlematches' => 'Geen resultaten gevonden',
 'textmatches' => 'Overeenkomst met inhoud',
 'notextmatches' => "Geen pagina's gevonden",
 'prevn' => 'vorige {{PLURAL:$1|$1}}',
@@ -1480,10 +1477,8 @@ Probeer een andere zoekopdracht.',
 'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultaten}}',
 'shown-title' => '$1 {{PLURAL:$1|resultaat|resultaten}} per pagina weergeven',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekijken.',
-'searchmenu-legend' => 'Zoekopties',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmaken op deze wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanamen met dit voorvoegsel weergeven]]',
 'searchprofile-articles' => "Inhoudelijke pagina's",
 'searchprofile-project' => "Hulp- en projectpagina's",
 'searchprofile-images' => 'Multimedia',
@@ -1511,15 +1506,10 @@ Probeer een andere zoekopdracht.',
 'showingresults' => "Hieronder {{PLURAL:$1|staat '''1''' resultaat|staan '''$1''' resultaten}} vanaf #'''$2'''.",
 'showingresultsnum' => "Hieronder {{PLURAL:$3|staat '''1''' resultaat|staan '''$3''' resultaten}} vanaf #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultaten '''$1 - $2''' van '''$3'''}} voor '''$4'''",
-'nonefound' => "'''Let op''': standaard worden niet alle naamruimten doorzocht.
-Als u in uw zoekopdracht als voorvoegsel \"''all:''\" gebruikt, worden alle pagina's doorzocht (inclusief overlegpagina's, sjablonen, enzovoort).
-U kunt ook een naamruimte als voorvoegsel gebruiken.",
 'search-nonefound' => 'Er zijn geen resultaten voor uw zoekopdracht.',
-'powersearch' => 'Uitgebreid zoeken',
 'powersearch-legend' => 'Uitgebreid zoeken',
 'powersearch-ns' => 'Zoeken in naamruimten:',
 'powersearch-redir' => 'Doorverwijzingen weergeven',
-'powersearch-field' => 'Zoeken naar',
 'powersearch-togglelabel' => 'Selecteren:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Geen',
@@ -1533,8 +1523,7 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 'preferences' => 'Voorkeuren',
 'mypreferences' => 'Voorkeuren',
 'prefs-edits' => 'Aantal bewerkingen:',
-'prefsnologin' => 'Niet aangemeld',
-'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aangemeld]</span> zijn om uw voorkeuren te kunnen instellen.',
+'prefsnologintext2' => 'U moet $1 om voorkeuren in te stellen.',
 'changepassword' => 'Wachtwoord wijzigen',
 'prefs-skin' => 'Vormgeving',
 'skin-preview' => 'Voorvertoning',
@@ -1558,7 +1547,6 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 'prefs-email' => 'E-mail',
 'prefs-rendering' => 'Uiterlijk',
 'saveprefs' => 'Opslaan',
-'resetprefs' => 'Niet opgeslagen wijzigingen herstellen',
 'restoreprefs' => 'Voorkeuren herstellen (voor alle instellingen)',
 'prefs-editing' => 'Bewerken',
 'rows' => 'Regels:',
@@ -1579,7 +1567,6 @@ U kunt de [[Special:ResetTokens|tokens opnieuw instellen]] als u dat wilt.',
 'localtime' => 'Plaatselijke tijd:',
 'timezoneuseserverdefault' => 'Wikistandaard gebruiken ($1)',
 'timezoneuseoffset' => 'Anders (tijdverschil opgeven)',
-'timezoneoffset' => 'Tijdsverschil¹:',
 'servertime' => 'Servertijd:',
 'guesstimezone' => 'Vanuit de browser toevoegen',
 'timezoneregion-africa' => 'Afrika',
@@ -1833,10 +1820,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',
@@ -2358,10 +2348,8 @@ De pagina's zijn ook niet als sjabloon opgenomen.",
 'protectedpages' => "Beveiligde pagina's",
 'protectedpages-indef' => 'Alleen blokkades zonder vervaldatum',
 'protectedpages-cascade' => 'Alleen beveiligingen met de cascade-optie',
-'protectedpagestext' => "De volgende pagina's zijn beveiligd en kunnen niet bewerkt of hernoemd worden",
 'protectedpagesempty' => "Er zijn momenteel geen pagina's beveiligd die aan deze voorwaarden voldoen.",
 'protectedtitles' => 'Beveiligde paginanamen',
-'protectedtitlestext' => 'De volgende paginanamen zijn beveiligd en kunnen niet aangemaakt worden',
 'protectedtitlesempty' => 'Er zijn geen paginanamen beveiligd die aan deze voorwaarden voldoen.',
 'listusers' => 'Gebruikerslijst',
 'listusers-editsonly' => 'Alleen gebruikers met bewerkingen weergeven',
@@ -2589,7 +2577,7 @@ Contactgegevens van de auteur:
 E-mailadres: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Tenzij u deze pagina bezoekt, komen er geen verdere berichten. Op uw volglijst kunt u voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
+Tenzij u deze pagina bezoekt, komen er geen verdere berichten. Als u bent aangemeld, kunt u op uw volglijst voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
 
 Groet van uw {{SITENAME}}-waarschuwingssysteem.
 
@@ -3352,6 +3340,7 @@ Vul dit veld '''NIET''' in!",
 'pageinfo-length' => 'Paginalengte (in bytes)',
 'pageinfo-article-id' => 'Paginanummer',
 'pageinfo-language' => 'Taal voor de pagina',
+'pageinfo-content-model' => 'Paginainhoudmodel',
 'pageinfo-robot-policy' => 'Indexering door robots',
 'pageinfo-robot-index' => 'Toegestaan',
 'pageinfo-robot-noindex' => 'Niet toegestaan',
@@ -3472,7 +3461,7 @@ $1',
 'months' => '{{PLURAL:$1|één maand|$1 maanden}}',
 'years' => '{{PLURAL:$1|één jaar|$1 jaar}}',
 'ago' => '$1 geleden',
-'just-now' => 'Daarnet',
+'just-now' => 'Zojuist',
 
 # Human-readable timestamps
 'hours-ago' => '$1 {{PLURAL:$1|uur}} geleden',
@@ -3905,10 +3894,6 @@ Andere velden worden verborgen.
 'exif-urgency-high' => 'Hoog ($1)',
 'exif-urgency-other' => 'Door gebruiker gedefinieerde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => 'Dit bestand in een extern programma bewerken',
-'edit-externally-help' => '(zie de [https://www.mediawiki.org/wiki/Manual:External_editors handleiding voor instellingen] voor meer informatie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alle',
@@ -4005,6 +3990,9 @@ Bevestig dat u de pagina opnieuw wilt aanmaken.',
 'confirm-unwatch-button' => 'OK',
 'confirm-unwatch-top' => 'Deze pagina verwijderen uit uw volglijst?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← vorige pagina',
 'imgmultipagenext' => 'volgende pagina →',
@@ -4131,7 +4119,7 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 # Special:Redirect
 'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer of versienummer',
 'redirect-legend' => 'Doorverwijzen naar een bestand of pagina',
-'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven).',
+'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'OK',
 'redirect-lookup' => 'Opzoeken:',
 'redirect-value' => 'Waarde:',
@@ -4153,10 +4141,9 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 
 # Special:SpecialPages
 'specialpages' => "Speciale pagina's",
-'specialpages-note' => '----
-* Normale speciale pagina\'s
-* <strong class="mw-specialpagerestricted">Beperkt toegankelijke speciale pagina\'s</strong>
-* <span class="mw-specialpagecached">Speciale pagina\'s met alleen gegevens uit de cache (mogelijk verouderd)</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normale speciale pagina\'s
+* <span class="mw-specialpagerestricted">Beperkt toegankelijke speciale pagina\'s</span>',
 'specialpages-group-maintenance' => 'Onderhoudsrapporten',
 'specialpages-group-other' => "Overige speciale pagina's",
 'specialpages-group-login' => 'Aanmelden / registreren',
@@ -4369,4 +4356,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 bcdf6ac..b5d1718 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' ),
@@ -475,7 +477,6 @@ $messages = array(
 'qbedit' => 'Endre',
 'qbpageoptions' => 'Denne sida',
 'qbmyoptions' => 'Sidene mine',
-'qbspecialpages' => 'Spesialsider',
 'faq' => 'OSS',
 'faqpage' => 'Project:OSS',
 
@@ -591,8 +592,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}}',
@@ -684,7 +683,6 @@ Funksjonen oppgav inga årsak.',
 'perfcached' => 'Dei følgjande dataa er frå mellomlageret åt tenaren og er ikkje utan vidare oppdatert. Høgst {{PLURAL:$1|eitt resultat er tilgjengeleg|$1 resultat er tilgjengelege}} i mellomlageret.',
 'perfcachedts' => 'Desse dataa er mellomlagra, og vart sist oppdaterte $1. Høgst {{PLURAL:$4|eitt resultat er tilgjengeleg|$4 resultat er tilgjengelege}} i mellomlageret.',
 'querypage-no-updates' => 'Oppdatering av denne sida er slått av, og data her vil ikkje verte fornya.',
-'wrong_wfQuery_params' => 'Feil parameter gjevne til wfQuery()<br />Funksjon: $1<br />Førespurnad: $2',
 'viewsource' => 'Sjå kjelda',
 'viewsource-title' => 'Sjå kjelda til $1',
 'actionthrottled' => 'Handlinga vart stoppa',
@@ -1012,9 +1010,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.'''
@@ -1033,7 +1031,7 @@ Endringane dine er ikkje lagra enno!",
 
 '''Dersom dette er eit heilt vanleg forsøk på endring, prøv ein gong til. Dersom det framleis ikkje går, prøv å logge deg ut og inn att.'''",
 'token_suffix_mismatch' => "'''Endringa di vart avvist fordi klienten/nettlesaren din lagar teiknfeil i teksten. Dette vart gjort for å hindre øydelegging av teksten på sida. Slikt kan av og til hende når ein brukar feilprogrammerte og vevbaserte anonyme proxytenester.'''",
-'edit_form_incomplete' => 'Delar av redigeringsskjemaet nådde ikkje fram til tenaren; dobbelsjekk at redigeringa er korrekt, og prøv om att.',
+'edit_form_incomplete' => 'Delar av endringsskjemaet nådde ikkje fram til tenaren; dobbelsjekk at endringa er korrekt og prøv om att.',
 'editing' => 'Endrar $1',
 'creating' => 'Opprettar $1',
 'editingsection' => 'Endrar $1 (bolk)',
@@ -1095,7 +1093,7 @@ Sletteloggen for sida finn du her:",
 'edit-gone-missing' => 'Kunne ikkje oppdatere sida.
 Det ser ut til at ho er sletta.',
 'edit-conflict' => 'Endringskonflikt.',
-'edit-no-change' => 'Redigeringa di vart ignorert fordi det ikkje vart gjort endringar i teksten.',
+'edit-no-change' => 'Endringa di vart ignorert fordi det ikkje vart gjort endringar i teksten.',
 'postedit-confirmation' => 'Endringa di vart lagra.',
 'edit-already-exists' => 'Kunne ikkje opprette ny side fordi ho alt eksisterer.',
 'defaultmessagetext' => 'Standard meldingstekst',
@@ -1234,8 +1232,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:',
@@ -1301,7 +1299,7 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
 'mergehistory-reason' => 'Årsak:',
 
 # Merge log
-'mergelog' => 'Flettingslogg',
+'mergelog' => 'Flettelogg',
 'pagemerge-logentry' => 'fletta [[$1]] til [[$2]] (versjonar fram til $3)',
 'revertmerge' => 'Fjern fletting',
 'mergelogpagetext' => 'Nedanfor finn du ei liste over dei siste flettingane av ein sidehistorikk til ein annan.',
@@ -1326,12 +1324,8 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 # Search results
 'searchresults' => 'Søkjeresultat',
 'searchresults-title' => 'Søkjeresultat for «$1»',
-'searchresulttext' => 'For meir info om søkjefunksjonen i {{SITENAME}}, sjå [[{{MediaWiki:Helppage}}|Hjelp]].',
-'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som byrjar med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenkjer til «$1»]])",
-'searchsubtitleinvalid' => 'Du søkte etter «$1»',
 'toomanymatches' => 'Søket gav for mange treff, prøv ei anna spørjing',
 'titlematches' => 'Sidetitlar med treff på førespurnaden',
-'notitlematches' => 'Ingen sidetitlar hadde treff på førespurnaden',
 'textmatches' => 'Sider med treff på førespurnaden',
 'notextmatches' => 'Ingen sider hadde treff på førespurnaden',
 'prevn' => 'førre {{PLURAL:$1|$1}}',
@@ -1340,10 +1334,8 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultat}}',
 'shown-title' => 'Syn $1 {{PLURAL:$1|resultat|resultat}} for kvar side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søkjeval',
 'searchmenu-exists' => "* Sida '''[[$1]]'''",
 'searchmenu-new' => "'''Opprett sida «[[:$1|$1]]» på denne wikien.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sjå gjennom alle sider med denne forstavinga]]',
 'searchprofile-articles' => 'Innhaldssider',
 'searchprofile-project' => 'Hjelp- og prosjektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1371,14 +1363,10 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'showingresults' => "Nedanfor er opp til {{PLURAL:$1|'''eitt'''|'''$1'''}} resultat som byrjar med nummer '''$2''' vist{{PLURAL:$1||e}}.",
 'showingresultsnum' => "Nedanfor er {{PLURAL:$3|'''eitt'''|'''$3'''}} resultat som byrjar med nummer '''$2''' {{PLURAL:$3|vist|viste}}.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
-'nonefound' => "'''Merk:''' Som standard blir det berre søkt i enkelte namnerom.
-For å søkja i alle, bruk prefikset ''all:'' (det inkluderer diskusjonssider, malar etc.), eller bruk det ønskte namnerommet som prefiks.",
 'search-nonefound' => 'Ingen resultat svarte til førespurnaden.',
-'powersearch' => 'Søk',
 'powersearch-legend' => 'Avansert søk',
 'powersearch-ns' => 'Søk i namnerom:',
 'powersearch-redir' => 'Vis omdirigeringar',
-'powersearch-field' => 'Søk etter',
 'powersearch-togglelabel' => 'Hak av:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Ingen',
@@ -1392,8 +1380,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
 'prefs-edits' => 'Tal på endringar:',
-'prefsnologin' => 'Ikkje innlogga',
-'prefsnologintext' => 'Du må vere <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logga inn]</span> for å endre brukarinnstillingane.',
 'changepassword' => 'Skift passord',
 'prefs-skin' => 'Drakt',
 'skin-preview' => 'førehandsvis',
@@ -1417,7 +1403,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'prefs-email' => 'Val for e-post',
 'prefs-rendering' => 'Utsjånad',
 'saveprefs' => 'Lagre',
-'resetprefs' => 'Rull attende',
 'restoreprefs' => 'Hent attende alle standardinnstillingane (i alle bolkane)',
 'prefs-editing' => 'Endring',
 'rows' => 'Rekkjer',
@@ -1435,7 +1420,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'localtime' => 'Lokaltid:',
 'timezoneuseserverdefault' => '↓Nytt standardinnstillinga til wikien ($1)',
 'timezoneuseoffset' => 'Anna (oppgje skilnad)',
-'timezoneoffset' => 'Skilnad¹:',
 'servertime' => 'Tenartid:',
 'guesstimezone' => 'Hent tidssone frå nettlesaren',
 'timezoneregion-africa' => 'Afrika',
@@ -1676,6 +1660,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',
@@ -2152,10 +2137,8 @@ Du vil kan henda endra skildringa på [$2 filskildringssida] hennar der.',
 'protectedpages' => 'Verna sider',
 'protectedpages-indef' => 'Berre vern på uavgrensa tid',
 'protectedpages-cascade' => 'Berre djupvern',
-'protectedpagestext' => 'Desse sidene er verna mot flytting og endring',
 'protectedpagesempty' => 'Ingen sider er verna på den valde måten akkurat no.',
 'protectedtitles' => 'Verna sidenamn',
-'protectedtitlestext' => 'Desse sidene er verna mot oppretting',
 'protectedtitlesempty' => 'Ingen sider er verna på den valde måten akkurat no.',
 'listusers' => 'Brukarliste',
 'listusers-editsonly' => 'Vis berre brukarar med endringar',
@@ -3124,7 +3107,7 @@ Vitja [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [/
 'markedaspatrollederror' => 'Kan ikkje merke sida som patruljert',
 'markedaspatrollederrortext' => 'Du må markere ein versjon for å kunne godkjenne.',
 'markedaspatrollederror-noautopatrol' => 'Ein har ikkje høve til å merkje sine eigne endringar som godkjende.',
-'markedaspatrollednotify' => 'Denne endringa på $1 vart merkt som patruljert.',
+'markedaspatrollednotify' => 'Endringa på $1 vart merkt som patruljert.',
 'markedaspatrollederrornotify' => 'Det gjekk ikkje å merkja endringa som patruljert.',
 
 # Patrol log
@@ -3159,7 +3142,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',
@@ -3625,10 +3608,6 @@ Andre er gøymde som standard.
 'exif-urgency-high' => 'Høg ($1)',
 'exif-urgency-other' => 'Brukardefinert prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Endre denne fila med eit eksternt program',
-'edit-externally-help' => '(Sjå [https://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonane] for meir informasjon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
@@ -3848,8 +3827,7 @@ Du skal ha motteke [{{SERVER}}{{SCRIPTPATH}}/COPYING ein kopi av GNU General Pub
 
 # Special:SpecialPages
 'specialpages' => 'Spesialsider',
-'specialpages-note' => '----
-* Vanlege spesialsider.
+'specialpages-note' => '* Vanlege spesialsider.
 * <span class="mw-specialpagerestricted">Spesialsider med avgrensa tilgang.</span>',
 'specialpages-group-maintenance' => 'Vedlikehaldsrapportar',
 'specialpages-group-other' => 'Andre spesialsider',
@@ -4059,4 +4037,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..0aadd79 100644 (file)
@@ -155,7 +155,6 @@ $messages = array(
 'qbedit' => 'Fetola',
 'qbpageoptions' => 'Letlakala le',
 'qbmyoptions' => 'Matlakala a ka',
-'qbspecialpages' => 'Matlakala a kgethegilego',
 'faq' => '"FAQ"',
 
 # Vector skin
@@ -253,8 +252,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',
@@ -548,10 +545,6 @@ fetola tshenolo',
 # Search results
 'searchresults' => 'Sephetho sa go fetleka',
 'searchresults-title' => 'Diphetho tša go fetleka "$1"',
-'searchresulttext' => 'Go hwetša sedi ka go fetleka {{SITENAME}}, lebelela [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'O fetleka o nyaka \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|matlaka ka moka ago thoma ka "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|matlakala ka moka a go hlamaganya go  "$1"]])',
-'searchsubtitleinvalid' => "O fetlekile o nyaka  '''$1'''",
-'notitlematches' => 'Gago letlakala la thaetlele yago swana',
 'notextmatches' => 'Gago mangwalo letlakaleng a go swana',
 'prevn' => 'gofeta {{PLURAL:$1|$1}}',
 'nextn' => 'latela {{PLURAL:$1|$1}}',
@@ -582,21 +575,15 @@ fetola tshenolo',
 'searchrelated' => 'tswalana',
 'searchall' => 'tšohle',
 'showingresultsheader' => "{{PLURAL:$5|Sepheto '''$1''' tša '''$3'''|Dipheto '''$1 - $2''' tša '''$3'''}} tša '''$4'''",
-'nonefound' => "'''Hloko''': Ke di \"namespace\" tše dingwe tšeo di  fetlekwago go \"default.\"
-
-Leka go fetleka ka go ngwala ''all:'' go fetleka mateng ka moka, goba o šumiše \"namespace\" yeo o nyakago go e fetleka.",
 'search-nonefound' => 'Gago dipheto tšago sepelelana le "query".',
-'powersearch' => 'Fetleka ka tlhoko',
 'powersearch-legend' => 'Fetleka ya tšwetše',
 'powersearch-ns' => 'Fetleka go di "namespace"',
 'powersearch-redir' => 'Lenano la di "redirect"',
-'powersearch-field' => 'Fetleka',
 
 # Preferences page
 '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',
@@ -1212,10 +1199,6 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
 
 'exif-meteringmode-1' => 'Palogare',
 
-# External editor support
-'edit-externally' => 'Fetola faele ye o šumiša thulusi ya ka ntle',
-'edit-externally-help' => '(Lebelela [https://www.mediawiki.org/wiki/Manual:External_editors Taelo ya go thoma] go humana sedi)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ka moka',
 'namespacesall' => 'ka moka',
@@ -1272,4 +1255,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 1f9fb7c..4e118e5 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' ),
@@ -450,7 +448,6 @@ $messages = array(
 'qbedit' => 'Modificar',
 'qbpageoptions' => 'Opcions de la pagina',
 'qbmyoptions' => 'Mas opcions',
-'qbspecialpages' => 'Paginas especialas',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -566,8 +563,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}}',
@@ -667,9 +662,6 @@ Cap d'explicacion es pas estada provesida.",
 'perfcached' => "Las donadas seguendas son en escondedor e benlèu, son pas a jorn. Un maximum de {{PLURAL:$1|un resultat|$1 resultats}} es disponible dins l'escondedor.",
 'perfcachedts' => "Las donadas seguendas son en escondedor e benlèu, son pas a jorn. Un maximum de {{PLURAL:$1|un resultat|$1 resultats}} es disponible dins l'escondedor.",
 'querypage-no-updates' => 'Las mesas a jorn per aquesta pagina son actualamnt desactivadas. Las donadas çaijós son pas mesas a jorn.',
-'wrong_wfQuery_params' => 'Paramètres incorrèctes sus wfQuery()<br />
-Foncion : $1<br />
-Requèsta : $2',
 'viewsource' => 'Vejatz lo tèxte font',
 'viewsource-title' => 'Veire la font de $1',
 'actionthrottled' => 'Accion limitada',
@@ -698,7 +690,8 @@ L'administrator que l'a varrolhat a provesit aqueste motiu : « $3 ».",
 'invalidtitle-knownnamespace' => "Títol invalid amb l'espaci de noms « $2 » e l'intitulat « $3 »",
 'invalidtitle-unknownnamespace' => "Títol invalid amb lo numèro d'espaci de noms $1 e l'intitulat « $2 » desconeguts",
 'exception-nologin' => 'Pas connectat',
-'exception-nologin-text' => "Aquesta pagina o aquesta accion necessita d'èsser connectada sus aqueste wiki.",
+'exception-nologin-text' => '[[Special:Userlogin|Connectatz-vos]] per poder accedir a aquesta pagina o aquesta accion.',
+'exception-nologin-text-manual' => '$1 per poder accedir a aquesta pagina o aquesta accion.',
 
 # Virus scanner
 'virus-badscanner' => "Marrida configuracion : escaner de virús desconegut : ''$1''",
@@ -1334,12 +1327,8 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 # Search results
 'searchresults' => 'Resultats de la recèrca',
 'searchresults-title' => 'Resultats de la recèrca per « $1 »',
-'searchresulttext' => "Per mai d'informacions sus la recèrca dins {{SITENAME}}, vejatz [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => "Avètz recercat « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totas las paginas que començan per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totas las paginas qu'an un ligam cap a « $1 »]])",
-'searchsubtitleinvalid' => 'Avètz recercat « $1 »',
 'toomanymatches' => 'Tròp d’ocuréncias son estadas trobadas, sètz pregat de sometre una requèsta diferenta.',
 'titlematches' => "Correspondéncias dins los títols d'articles",
-'notitlematches' => "Cap de títol d'article correspond pas a la recèrca.",
 'textmatches' => "Correspondéncias dins los tèxtes d'articles",
 'notextmatches' => "Cap de tèxte d'article correspond pas a la recèrca",
 'prevn' => '{{PLURAL:$1|precedenta|$1 precedentas}}',
@@ -1348,10 +1337,8 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'nextn-title' => '$1 {{PLURAL:$1|resultat seguent|resultats seguents}}',
 'shown-title' => 'Afichar $1 {{PLURAL:$1|resultat|resultats}} per pagina',
 'viewprevnext' => 'Veire ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcions de recèrca',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''Crear la pagina ''[[:$1|$1]]'' sus aqueste wiki !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Recercar las paginas amb aqueste prefix]]',
 'searchprofile-articles' => 'Paginas de contengut',
 'searchprofile-project' => "Paginas d'ajuda e del projècte",
 'searchprofile-images' => 'Multimèdia',
@@ -1379,14 +1366,10 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'showingresults' => "Afichatge {{PLURAL:$1|d''''1''' resultat|de '''$1''' resultats}} a partir del #'''$2'''.",
 'showingresultsnum' => "Afichatge {{PLURAL:$3|d''''1''' resultat|de '''$3''' resultats}} a partir del #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1'''|Resultats '''$1 - $2'''}} de '''$3''' per '''$4'''",
-'nonefound' => "<strong>Nòta</strong>: Sonque qualques espacis de noms son recercats per defaut
-Ensajatz en utilizant lo prefix ''all:'' per recercar tot lo contengut (tot incluent las paginas de discussion, los modèls, etc), o utilizatz l'espaci de nom coma prefix.",
 'search-nonefound' => 'I a pas cap de resultat correspondent a la requèsta.',
-'powersearch' => 'Recèrca avançada',
 'powersearch-legend' => 'Recèrca avançada',
 'powersearch-ns' => 'Recercar dins los espacis de nom :',
 'powersearch-redir' => 'Lista de las redireccions',
-'powersearch-field' => 'Recercar',
 'powersearch-togglelabel' => 'Marcar :',
 'powersearch-toggleall' => 'Tot',
 'powersearch-togglenone' => 'Pas cap',
@@ -1400,8 +1383,7 @@ 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)',
-'prefsnologintext' => 'Vos cal èsser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} connectat(ada)]</span> per modificar vòstras preferéncias d’utilizaire.',
+'prefsnologintext2' => "$1 per definir las preferéncias d'utilizaire.",
 'changepassword' => 'Modificacion del senhal',
 'prefs-skin' => 'Aparéncia',
 'skin-preview' => 'Previsualizar',
@@ -1425,7 +1407,6 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
 'prefs-email' => 'Opcions del corrièr electronic',
 'prefs-rendering' => 'Aparéncia',
 'saveprefs' => 'Enregistrar las preferéncias',
-'resetprefs' => 'Restablir las preferéncias',
 'restoreprefs' => 'Restablir totes los paramètres per defaut (dins totas las seccions)',
 'prefs-editing' => 'Fenèstra de modificacion',
 'rows' => 'Rengadas :',
@@ -1446,7 +1427,6 @@ Tota persona que la coneis poirà legir vòstra lista de seguiment, doncas, la c
 'localtime' => 'Ora locala :',
 'timezoneuseserverdefault' => 'Utilizar la valor del servidor ($1)',
 'timezoneuseoffset' => 'Autre (especificar lo descalatge)',
-'timezoneoffset' => 'Decalatge orari¹ :',
 'servertime' => 'Ora del servidor :',
 'guesstimezone' => 'Utilizar la valor del navigador',
 'timezoneregion-africa' => 'Africa',
@@ -1700,6 +1680,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.',
@@ -2183,10 +2164,8 @@ Las entradas <del>barradas</del> son estadas resolgudas.',
 'protectedpages' => 'Paginas protegidas',
 'protectedpages-indef' => 'Unicament las proteccions permanentas',
 'protectedpages-cascade' => 'Unicament las proteccions en cascada',
-'protectedpagestext' => 'Las paginas seguentas son protegidas contra las modificacions e/o lo cambiament de nom :',
 'protectedpagesempty' => 'Cap de pagina es pas protegida actualament.',
 'protectedtitles' => 'Títols protegits',
-'protectedtitlestext' => 'Los títols seguents son protegits a la creacion',
 'protectedtitlesempty' => 'Cap de títol es pas actualament protegit amb aquestes paramètres.',
 'listusers' => 'Lista dels participants',
 'listusers-editsonly' => "Far veire sonque los utilizaires qu'an al mens una contribucion",
@@ -2383,6 +2362,7 @@ per modificar vòstra lista de seguiment.',
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Seguit...',
 'unwatching' => 'Fin del seguit...',
+'watcherrortext' => "Una error s'es producha al moment de la modificacion dels paramètres de vòstra lista de seguiment per « $1 ».",
 
 'enotif_mailer' => 'Sistèma d’expedicion de notificacion de {{SITENAME}}',
 'enotif_reset' => 'Marcar totas las paginas coma visitadas',
@@ -2679,6 +2659,7 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
 ** Temptativa d’intimidacion o agarriment
 ** Abús d’utilizacion de comptes multiples
 ** Nom d’utilizaire inacceptable, injuriós o difamant',
+'ipb-hardblock' => 'Empachar los utilizaires connectats de modificar en utilizant aquesta adreça IP',
 'ipbcreateaccount' => 'Empachar la creacion de compte',
 'ipbemailban' => 'Empachar l’utilizaire de mandar de corrièrs electronics',
 'ipbenableautoblock' => 'Blocar automaticament las adreças IP utilizadas per aqueste utilizaire',
@@ -2689,6 +2670,7 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
 'ipbotherreason' => 'Motiu diferent o suplementari',
 'ipbhidename' => 'Amagar lo nom d’utilizaire de las modificacions e de las listas',
 'ipbwatchuser' => "Seguir las paginas d'utilizaire e de discussion d'aqueste utilizaire",
+'ipb-disableusertalk' => "Empachar l'utilizaire de modificar sa pagina de discussion pendent lo blocatge",
 'ipb-change-block' => 'Tornar blocar aqueste utilizaire amb aquestes paramètres',
 'ipb-confirm' => 'Confirmar lo blocatge',
 'badipaddress' => "L'adreça IP es incorrècta",
@@ -2970,6 +2952,7 @@ Salvatz-lo sus vòstre disc dur puèi importatz-lo aicí.",
 'import-invalid-interwiki' => "Impossible d'importar dempuèi lo wiki especificat.",
 'import-error-edit' => 'La pagina « $1 » es pas estada importada perque sètz pas autorizat a la modificar.',
 'import-error-create' => 'La pagina « $1 » es pas estada importada perque sètz pas autorizat a la crear.',
+'import-error-invalid' => 'Pagina « $1 » es pas importada perque son nom es pas valid.',
 'import-options-wrong' => '{{PLURAL:$2|Marrida opcion|Marridas opcions}} : <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'La pagina raiç provesida es un títol invalid.',
 
@@ -3666,10 +3649,6 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
 'exif-urgency-high' => 'Nauta ($1)',
 'exif-urgency-other' => "Urgéncia definida per l'utilizaire ($1)",
 
-# External editor support
-'edit-externally' => 'Modificar aqueste fichièr en utilizant una aplicacion extèrna',
-'edit-externally-help' => "(Consultatz [https://www.mediawiki.org/wiki/Manual:External_editors/oc las instruccions d'installacion] per mai d’entresenhas)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tot',
 'namespacesall' => 'Totes',
@@ -3888,8 +3867,7 @@ Ensajatz la previsualizacion normala.',
 
 # Special:SpecialPages
 'specialpages' => 'Paginas especialas',
-'specialpages-note' => '----
-* Paginas especialas normalas.
+'specialpages-note' => '* Paginas especialas normalas.
 * <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>
 * <span class="mw-specialpagecached">Paginas especialas solament en escondedor (poirián èsser obsolètas).</span>',
 'specialpages-group-maintenance' => 'Rapòrts de mantenença',
@@ -4101,4 +4079,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 b7bf46d..1a06769 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( 'ସଭ୍ୟଙ୍କୁମେଲକରିବେ' ),
@@ -415,7 +413,6 @@ $messages = array(
 'qbedit' => 'ସମ୍ପାଦନା (Edit)',
 'qbpageoptions' => 'ଏହି ପୃଷ୍ଠାଟି',
 'qbmyoptions' => 'ମୋ ପୃଷ୍ଠାଗୁଡ଼ିକ',
-'qbspecialpages' => 'ବିଶେଷ ପୃଷ୍ଠା',
 'faq' => 'ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ',
 'faqpage' => 'Project:ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ',
 
@@ -530,8 +527,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|ଏକ ନୂଆ ସନ୍ଦେଶ|ନୂଆ ସନ୍ଦେଶ}}',
@@ -626,9 +621,6 @@ $1',
 'perfcachedts' => 'ତଳଲିଖିତ ତଥ୍ୟଗୁଡିକୁ ଅସ୍ଥାୟୀ ଭାବେ ରଖାଗଲା ଏବଂ  $1ରେ ଶେଷଥର ଅପଡେଟ ହୋଇଥିଲା । ଅତିବେଶିରେ {{PLURAL:$1|ଫଳ|$1ଫଳଗୁଡିକ }} ଅସ୍ଥାୟୀ ରୂପେ ରହି ପାରିବ ।',
 'querypage-no-updates' => 'ଏହି ପୃଷ୍ଠାଟି ପାଇଁ ଅପଡେଟସବୁ ଏବେ ଅଚଳ କରାଯାଇଅଛି ।
 ଏଠାରେ ଥିବା ତଥ୍ୟ ସବୁ ଏବେ ସତେଜ ହୋଇପାରିବ ନାହିଁ ।',
-'wrong_wfQuery_params' => 'wfQuery() ପାଇଁ ଭୁଲ ପାରାମିଟର<br />
-କାମ: $1<br />
-ଖୋଜା ପ୍ରଶ୍ନ: $2',
 'viewsource' => 'ମୂଳାଧାର ଦେଖିବେ',
 'viewsource-title' => '$1 ନିମନ୍ତେ ଆଧାର ଦେଖିବେ',
 'actionthrottled' => 'କାମଟି ବନ୍ଦ କରିଦିଆଗଲା',
@@ -1307,12 +1299,8 @@ $1",
 # Search results
 'searchresults' => 'ଖୋଜା ଫଳାଫଳ',
 'searchresults-title' => '"$1" ପାଇଁ ଖୋଜିବାରୁ ମିଳିଲା',
-'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' => 'ପୃଷ୍ଠାଟିର ଲେଖା ମିଶୁଅଛି',
 'notextmatches' => 'ପୃଷ୍ଠାଟିର ନାମ ମିଶୁନାହିଁ',
 'prevn' => '{{PLURAL:$1|$1}}ର ଆଗରୁ',
@@ -1321,10 +1309,8 @@ $1",
 'nextn-title' => 'ଆଗର $1ଟି  {{PLURAL:$1|result|ଫଳସବୁ}}',
 'shown-title' => '$1 ପ୍ରତି ପୃଷ୍ଠାର {{PLURAL:$1|ଫଳାଫଳ|ଫଳାଫଳ}} ଦେଖାଇବେ ।',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ଟି ଦେଖିବେ',
-'searchmenu-legend' => 'ଖୋଜିବା ବିକଳ୍ପ',
 'searchmenu-exists' => "'''ଏହି ଉଇକିରେ \"[[:\$1]]\" ନାଆଁରେ ପୃଷ୍ଠାଟିଏ ଅଛି ।'''",
 'searchmenu-new' => "'''ଏହି ପ୍ରସଙ୍ଗଟି ଆଗରୁ ନାହିଁ, ତେଣୁ ''[[:$1]]'' ନାମରେ ପ୍ରସଙ୍ଗଟିଏ ଏଠାରେ ଗଢ଼ନ୍ତୁ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ଏହି ନାମ ଆଗରୁ ଥିବା ପୃଷ୍ଠାସବୁ ଖୋଜିବେ]]',
 'searchprofile-articles' => 'ସୂଚୀ ପୃଷ୍ଠା',
 'searchprofile-project' => 'ସାହାଯ୍ୟ ଓ ପ୍ରକଳ୍ପ ପୃଷ୍ଠା',
 'searchprofile-images' => 'ମଲ୍ଟିମିଡ଼ିଆ',
@@ -1352,14 +1338,10 @@ $1",
 'showingresults' => "ତଳେ {{PLURAL:$1|'''ଗୋଟିଏ'''  ଫଳାଫଳ|'''$1'''ଟି ଫଳାଫଳ}} ଦେଖାଉଛୁ ଯାହା #'''$2'''ରେ ଆରମ୍ଭ ହୋଇଅଛି ।",
 'showingresultsnum' => "ତଳେ {{PLURAL:$3|ଗୋଟିଏ ଫଳାଫଳ|'''$3'''ଟି ଫଳାଫଳ}} ଦେଖାଉଛୁ ଯାହା #'''$2'''ରେ ଆରମ୍ଭ ହୋଇଅଛି ।",
 'showingresultsheader' => "'''$4''' ପାଇଁ {{PLURAL:$5|'''$3'''ର '''$1''' ଫଳ |'''$3'''ର '''$1 - $2''' ଫଳ }}",
-'nonefound' => "'''ଜାଣି ରଖନ୍ତୁ''': ଆପଣ ଖାଲି କିଛି ନେମସ୍ପେସକୁ ଆପେ ଆପେ ଖୋଜିପାରିବେ ।
-ସବୁ ପ୍ରକାରର ଲେଖା (ଆଲୋଚନା ପୃଷ୍ଠା, ଛାଞ୍ଚ ଆଦି) ଖୋଜିବା ପାଇଁ ନିଜ ପ୍ରଶ୍ନ ଆଗରେ ''all:'' ଯୋଡ଼ି ଖୋଜନ୍ତୁ, ନହେଲେ ଦରକାରି ନେମସ୍ପେସକୁ ଲେଖାର ନାମ ଆଗରେ ଯୋଡ଼ି ବ୍ୟବହାର କରନ୍ତୁ ।",
 'search-nonefound' => 'ଆପଣ ଖୋଜିଥିବା ପ୍ରଶ୍ନ ପାଇଁ କିଛି ଫଳ ମିଳିଲା ନାହିଁ ।',
-'powersearch' => 'ଗହିର ଖୋଜା',
 'powersearch-legend' => 'ଗହିର ଖୋଜା',
 'powersearch-ns' => 'ନେମସ୍ପେସରେ ଖୋଜିବେ',
 'powersearch-redir' => 'ପୁନପ୍ରେରଣ ପୃଷ୍ଠାସମୂହର ତାଲିକା ତିଆରିବେ',
-'powersearch-field' => 'ଖୋଜିବେ',
 'powersearch-togglelabel' => 'ଯାଞ୍ଚ କରିବା:',
 'powersearch-toggleall' => 'ସବୁ',
 'powersearch-togglenone' => 'କିଛି ନାହିଁ',
@@ -1372,8 +1354,6 @@ $1",
 'preferences' => 'ପସନ୍ଦ',
 'mypreferences' => 'ପସନ୍ଦ',
 'prefs-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା:',
-'prefsnologin' => 'ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି',
-'prefsnologintext' => 'ବ୍ୟବହାରକାରୀଙ୍କ ପସନ୍ଦସବୁ ବଦଳାଇବା ପାଇଁ ଆପଣଙ୍କୁ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ଲଗ ଇନ]</span> କରିବାକୁ ପଡ଼ିବ ।',
 'changepassword' => 'ପାସୱର୍ଡ଼ ବଦଳାନ୍ତୁ',
 'prefs-skin' => 'ବହିରାବରଣ',
 'skin-preview' => 'ସାଇତା ଆଗରୁ ଦେଖଣା',
@@ -1397,7 +1377,6 @@ $1",
 'prefs-email' => 'ଇ-ମେଲ ବିକଳ୍ପମାନ',
 'prefs-rendering' => 'ଦେଖଣା',
 'saveprefs' => 'ସାଇତିବେ [Save]',
-'resetprefs' => 'ସାଇତା ହୋଇନଥିବା ବଦଳ ଲିଭାଇଦେବେ',
 'restoreprefs' => 'ଆପେଆପେ ଥିବା ମୂଳ ସଜାଣିକୁ ଫେରିଯିବେ',
 'prefs-editing' => 'ସମ୍ପାଦନା',
 'rows' => 'ଧାଡ଼ି:',
@@ -1415,7 +1394,6 @@ $1",
 'localtime' => 'ସ୍ଥାନୀୟ ସମୟ:',
 'timezoneuseserverdefault' => 'ଉଇକିର ଆପେଆପେ ଆସୁଥିବା ($1) ବ୍ୟବହାର କରିବେ',
 'timezoneuseoffset' => 'ବାକି (ଅଫସେଟ ସ୍ଥିର କରନ୍ତୁ)',
-'timezoneoffset' => 'ଅଫସେଟ¹:',
 'servertime' => 'ସର୍ଭର ସମୟ:',
 'guesstimezone' => 'ବ୍ରାଉଜରରୁ ଭରିଦିଅନ୍ତୁ',
 'timezoneregion-africa' => 'ଆଫ୍ରିକା',
@@ -2138,10 +2116,8 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'protectedpages' => 'କିଳାଯାଇଥିବା ପୃଷ୍ଠାମାନ',
 'protectedpages-indef' => 'କେବଳ ଆସିମୀତ କାଳ ପାଇଁ କିଳିବା',
 'protectedpages-cascade' => 'କିଲାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ଏକାଠି ସଜାଇ ରଖୁଅଛୁଁ',
-'protectedpagestext' => 'ଏହି ତଳଲିଖିତ ପୃଷ୍ଠାମାନ ଘୁଞ୍ଚାଇବାରୁ ବା ସମ୍ପାଦନାରୁ କିଳାଯାଇଅଛି',
 'protectedpagesempty' => 'ଏହି ସବୁ ସଜାଣି ସହ ଗୋଟିଏ ବି ପୃଷ୍ଠା ଏବେ କିଳାଯାଇ ନାହିଁ ।',
 'protectedtitles' => 'କିଳାଯାଇଥିବା ଶିରୋନାମାମାନ',
-'protectedtitlestext' => 'ତଳଲିଖିତ ଶିରୋନାମା ସବୁ ତିଆରି କରିବାରୁ କିଳାଯାଇଅଛି ।',
 'protectedtitlesempty' => 'ଏହି ସବୁ ସଜାଣି ସହ ଗୋଟିଏ ବି ପୃଷ୍ଠା ଏବେ କିଳାଯାଇ ନାହିଁ ।',
 'listusers' => 'ବ୍ୟବହାରକାରୀଙ୍କ ତାଲିକା',
 'listusers-editsonly' => 'କେବଳ କିଛି ସମ୍ପାଦନା କରିଥିବା ସଭ୍ୟମାନଙ୍କୁ ଦେଖାଇବେ',
@@ -3631,10 +3607,6 @@ $1',
 'exif-urgency-high' => 'ଅଧିକ ($1)',
 'exif-urgency-other' => 'ବ୍ୟବହାରକାରୀ ଦେଇ ଦିଆହୋଇଥିବା ଗୁରୁତ୍ଵ ($1)',
 
-# External editor support
-'edit-externally' => 'ଏକ ବାହାର ଆପ୍ଲିକେସନ ବ୍ୟବହାର କରି ଏହି ଫାଇଲଟିକୁ ବଦଳାଇବା',
-'edit-externally-help' => '(ଆହୁରି ବି [https://www.mediawiki.org/wiki/Manual:External_editors ସଜାଡିବା ନିର୍ଦେଶ] ଦେଖନ୍ତୁ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ସବୁ',
 'namespacesall' => 'ସବୁ',
@@ -3845,8 +3817,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 
 # Special:SpecialPages
 'specialpages' => 'ବିଶେଷ ପୃଷ୍ଠା',
-'specialpages-note' => '----
-* ସାଧାରଣ ବିଶେଷ ପୃଷ୍ଠାମାନ ।
+'specialpages-note' => '* ସାଧାରଣ ବିଶେଷ ପୃଷ୍ଠାମାନ ।
 * <span class="mw-specialpagerestricted">କିଳାଯାଇଥିବା ବିଶେଷ ପୃଷ୍ଠାମାନ ।</span>',
 'specialpages-group-maintenance' => 'ରକ୍ଷଣାବେକ୍ଷଣା ବିବରଣୀ',
 'specialpages-group-other' => 'ବାକି ବିଶେଷ ପୃଷ୍ଠା',
@@ -4037,4 +4008,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..68c72d2 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' ),
@@ -330,7 +328,6 @@ $messages = array(
 'qbedit' => 'Ивын',
 'qbpageoptions' => 'Ацы фарс',
 'qbmyoptions' => 'Мæ фæрстæ',
-'qbspecialpages' => 'Сæрмагонд фæрстæ',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -447,8 +444,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|ног фыстæг|ног фыстæджытæ}}',
@@ -544,9 +539,6 @@ $1',
 'perfcachedts' => 'Бындæр цы рардтæ ис, уыдон сты кешгонд æмæ фæстаг хатт нæуæггонд æрцыдысты $1. Кешы гæнæн ис уа æппæты фылдæр {{PLURAL:$4|иу фæстиуæг|$4 фæстиуæджы}}.',
 'querypage-no-updates' => 'Ацы фарсы нæуæгкæнын ныртæккæ хицæн у.
 Цы рардтæ дзы ис, уыдон нæуæг нæ кæндзысты.',
-'wrong_wfQuery_params' => 'Рæдыд параметртæ wfQuery() функцийæн<br />
-Функци: $1<br />
-Домæн: $2',
 'viewsource' => 'Код кæсын',
 'viewsource-title' => 'Фенын {{grammar:genitive|$1}} равзæрæн текст',
 'actionthrottled' => 'Архайд урæд æрцыд',
@@ -1030,7 +1022,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'searchresults' => 'Агуырды фæстиуджытæ',
 'searchresults-title' => 'Агуырды фæстиуæг: «$1»',
 'titlematches' => 'Уацы ном æмбæлы',
-'notitlematches' => 'Никæцы фарсы ном æмбæлы',
 'textmatches' => 'Уацты æмцаутæ',
 'prevn' => 'рæздæры {{PLURAL:$1|$1}}',
 'nextn' => 'иннæ {{PLURAL:$1|$1}}',
@@ -1063,17 +1054,14 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'searchall' => 'иууылдæр',
 'showingresultsheader' => "{{PLURAL:$5|Фæстиуæг '''$1''' '''$3'''-йæ|Фæстиуджытæ '''$1 - $2''' '''$3'''-йæ}} '''{{grammar:dative|$4}}'''",
 'search-nonefound' => 'Ницы разындис домæнæн',
-'powersearch' => 'Сæрмагонд агуырд',
 'powersearch-legend' => 'Сæрмагонд агуырд',
 'powersearch-redir' => 'Рарвыстытæ æвдисын',
-'powersearch-field' => 'Агуырд',
 'powersearch-toggleall' => 'Иууылдæр',
 
 # Preferences page
 'preferences' => 'Уагæвæрдтæ',
 'mypreferences' => 'Уагæвæрдтæ',
 'prefs-edits' => 'Ивдтыты нымæц:',
-'prefsnologin' => 'Системæйы нæ дæ',
 'changepassword' => 'Пароль ивæн',
 'prefs-skin' => 'Цъар',
 'skin-preview' => 'Разæркаст',
@@ -1095,7 +1083,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'localtime' => 'Бынæттон рæстæг:',
 'timezoneuseserverdefault' => 'Архайын серверы æвæрдæй ($1)',
 'timezoneuseoffset' => 'Æндæр (бацамон гæпп)',
-'timezoneoffset' => 'Гæпп¹:',
 'servertime' => 'Серверы рæстæг:',
 'guesstimezone' => 'Райсын браузерæй',
 'timezoneregion-africa' => 'Африкæ',
@@ -1722,10 +1709,6 @@ $3',
 
 'exif-gaincontrol-0' => 'Нæй',
 
-# External editor support
-'edit-externally' => 'Ивын ацы файл æддаг программæйæ',
-'edit-externally-help' => '(Кæс [https://www.mediawiki.org/wiki/Manual:External_editors сывæрыны уагæвæрдтæ] фылдæр базонынæн)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'иууылдæр',
 'namespacesall' => 'иууылдæр',
@@ -1868,4 +1851,8 @@ $3',
 'duration-centuries' => '$1 {{PLURAL:$1|æнус|æнусы}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мин аз|мин азы}}',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Афтæ уæд!',
+'expand_templates_preview' => 'Разæркаст',
+
 );
index 0273a49..24a6327 100644 (file)
@@ -14,6 +14,7 @@
  * @author Babanwalia
  * @author Gman124
  * @author Guglani
+ * @author Jimidar
  * @author Kaganer
  * @author Raj Singh
  * @author Saurabh123
@@ -30,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        => 'ਤਸਵੀਰ_ਗੱਲ-ਬਾਤ',
@@ -50,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,
@@ -63,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( 'ਵਰਤੋਂਕਾਰ_ਨੂੰ_ਈ-ਮੇਲ_ਕਰੋ' ),
@@ -91,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( 'ਵਰਤੋਂਕਾਰ_ਲਾਗਆਊਟ' ),
@@ -154,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( 'ਬਿਨਾਂ_ਇੰਟਰਵਿਕੀਆਂ_ਵਾਲੇ' ),
 );
 
@@ -344,7 +345,6 @@ $messages = array(
 'qbedit' => 'ਸੋਧ',
 'qbpageoptions' => 'ਇਹ ਸਫ਼ਾ',
 'qbmyoptions' => 'ਮੇਰੇ ਸਫ਼ੇ',
-'qbspecialpages' => 'ਖ਼ਾਸ ਸਫ਼ੇ',
 'faq' => 'ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸੁਆਲ',
 'faqpage' => 'Project:ਸਵਾਲ-ਜਵਾਬ',
 
@@ -460,8 +460,6 @@ $1',
 'ok' => 'ਠੀਕ ਹੈ',
 'retrievedfrom' => '"$1" ਤੋਂ ਲਿਆ',
 'youhavenewmessages' => 'ਤੁਹਾਡੇ ਲਈ $1। ($2)',
-'newmessageslink' => 'ਨਵੇਂ ਸੁਨੇਹੇ',
-'newmessagesdifflink' => 'ਆਖ਼ਰੀ ਤਬਦੀਲੀ',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|ਇੱਕ ਵਰਤੋਂਕਾਰ|$3 ਵਰਤੋਂਕਾਰਾਂ}} ਵੱਲੋਂ ਤੁਹਾਨੂੰ $1 ($2)।',
 'youhavenewmessagesmanyusers' => 'ਕਈ ਯੂਜ਼ਰ ਵੱਲੋਂ ਤੁਹਾਨੂੰ $1 ($2)।',
 'newmessageslinkplural' => '{{PLURAL:$1|ਇੱਕ ਨਵਾਂ ਸੁਨੇਹਾ|ਨਵੇਂ ਸੁਨੇਹੇ}} {{PLURAL:$1|ਹੈ|ਹਨ}}',
@@ -516,6 +514,7 @@ $1',
 # General errors
 'error' => 'ਗ਼ਲਤੀ',
 'databaseerror' => 'ਡਾਟਾਬੇਸ ਗਲਤੀ',
+'databaseerror-error' => 'ਦੋਸ਼: $1',
 'laggedslavemode' => "'''ਖ਼ਬਰਦਾਰ:''' ਹੋ ਸਕਦਾ ਹੈ ਸਫ਼ੇ ਵਿਚ ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਸ਼ਾਮਲ ਨਾ ਹੋਣ।",
 'readonly' => 'ਡਾਟਾਬੇਸ ਨੂੰ ਤਾਲ਼ਾ ਲੱਗਿਆ ਹੋਇਆ ਹੈ',
 'enterlockreason' => 'ਤਾਲਾ-ਬੰਦੀ ਲਈ ਕਾਰਨ ਦਾਖ਼ਲ ਕਰੋ, ਨਾਲ਼ ਹੀ ਤਾਲਾ-ਬੰਦੀ ਦੇ ਰਿਲੀਜ਼ ਹੋਣ ਦਾ ਅੰਦਾਜ਼ਨ ਵਕਤ',
@@ -551,9 +550,6 @@ $1',
 'perfcachedts' => 'ਹੇਠ ਦਿੱਤੀ ਸਮੱਗਰੀ ਕੈਸ਼ ਵਿਚ ਹੈ ਅਤੇ ਆਖ਼ਰੀ ਵਾਰ ਅੱਪਡੇਟ $1 ਨੂੰ ਕੀਤੀ ਗਈ ਸੀ। ਕੈਸ਼ ਵਿਚ ਵੱਧ ਤੋਂ ਵੱਧ {{PLURAL:$4|ਇੱਕ ਨਤੀਜੇ|$4 ਨਤੀਜਿਆਂ}} ਦੀ ਉਪਲਬਧੀ ਹੈ।',
 'querypage-no-updates' => 'ਇਸ ਪੇਜ  ਦਾ ਆਧੁਨੀਕਰਣ ਵਰਜਿਤ ਹੈ।
 ਆਂਕੜੇ ਹੱਲੇ ਤਾਜ਼ੇ ਨਹੀ ਹੋ ਸਕਦੇ ।',
-'wrong_wfQuery_params' => ' wfQuery()<br /> ਨੂ ਲਤ ਰਾਸ਼ੀ ਮਿਲੇ ਹੋਯੇ ਨੇ
- ਫੁਨ੍ਕ੍ਤਿਓਂ:$1<br />
- ਪ੍ਰਸ਼ਨ: $2',
 'viewsource' => 'ਸਰੋਤ ਵੇਖੋ',
 'viewsource-title' => '$1 ਲਈ ਸਰੋਤ ਵੇਖੋ',
 'actionthrottled' => 'ਕਾਰਵਾਈ ਬੰਦ ਕੀਤੀ ਗਈ।',
@@ -630,9 +626,10 @@ $2',
 'gotaccount' => 'ਖਾਤਾ ਪਹਿਲਾਂ ਹੀ ਹੈ? $1',
 'gotaccountlink' => 'ਲਾਗਇਨ',
 'userlogin-resetlink' => 'ਆਪਣੀ ਲਾਗਇਨ ਜਾਣਕਾਰੀ ਭੁੱਲ ਗਏ ਹੋ?',
-'userlogin-resetpassword-link' => 'à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨«à©\87ਰ à¨¬à¨£à¨¾à¨\93',
+'userlogin-resetpassword-link' => 'à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨­à©\81ੱਲ à¨\97à¨\8f à¨¹à©\8b?',
 'helplogin-url' => 'Help: ਲਾਗਇਨ ਕਰਨਾ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ਲਾਗਇਨ ਹੋਣ ਲਈ ਮੱਦਦ]]',
+'userlogin-createanother' => 'ਹੋਰ ਖਾਤਾ ਬਣਾਓ',
 'createacct-join' => 'ਆਪਣੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-another-join' => 'ਆਪਣੇ ਅਕਾਊਂਟ ਦੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-emailrequired' => 'ਈਮੇਲ ਪਤਾ',
@@ -695,7 +692,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' => 'ਈਮੇਲ ਪਤਾ ਕਬੂਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਅੰਦਾਜ਼ ਵਿਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।
@@ -711,10 +708,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 ਦੇ ਮੇਲ() ਕਰਜ ਵਿੱਚ ਅਣਜਾਣ ਦੋਸ਼',
@@ -779,6 +778,9 @@ $2
 
 # Special:ResetTokens
 'resettokens' => 'ਟੋਕਨ ਮੁੜ-ਸੈੱਟ ਕਰੋ',
+'resettokens-tokens' => 'ਟੋਕਨ:',
+'resettokens-token-label' => '$1 (ਚਾਲੂ ਮੁੱਲ: $2)',
+'resettokens-resetbutton' => 'ਚੁਣੇ ਹੋਏ ਟੋਕਨ ਮੁੜ ਸੈੱਟ ਕਰੋ',
 
 # Edit page toolbar
 'bold_sample' => 'ਗੂੜੀ ਲਿਖਤ',
@@ -1026,19 +1028,22 @@ 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' => 'ਹਾਂ',
-'revdelete-radio-unset' => 'ਨਹà©\80à¨\82',
+'revdelete-radio-set' => 'ਲà©\81à¨\95ਵਾਂ',
+'revdelete-radio-unset' => 'ਪਰà¨\97à¨\9f',
 'revdelete-suppress' => 'ਪ੍ਰਸ਼ਾਸਕਾਂ ਅਤੇ ਹੋਰਾਂ ਦੀ ਸਮੱਗਰੀ ਲੁਕਾਓ',
 'revdelete-unsuppress' => 'ਮੁੜ ਬਹਾਲ ਕੀਤੀਆਂ ਰੀਵਿਜ਼ਨਾਂ ਤੋਂ ਰੋਕਾਂ ਹਟਾਓ',
 'revdelete-log' => 'ਕਾਰਨ:',
 'revdelete-submit' => 'ਚੁਣੇ ਹੋਏ {{PLURAL:$1|ਸੁਧਾਰ|ਸੁਧਾਰਾਂ}} ਉੱਤੇ ਲਾਗੂ ਕਰੋ',
+'revdelete-success' => "'''ਦੁਹਰਾਈ ਦੀ ਪ੍ਰਤੱਖਤਾ ਅੱਪਡੇਟ ਕਰਨੀ ਸਫ਼ਲ ਹੋਈ।'''",
+'revdelete-failure' => "'''ਦੁਹਰਾਈ ਦੀ ਪ੍ਰਤੱਖਤਾ ਅੱਪਡੇਟ ਨਾ ਹੋ ਸਕੀ:'''
+$1",
 'logdelete-success' => "'''ਚਿੱਠੇ ਦੀ ਦਿੱਖ ਕਾਮਯਾਬੀ ਨਾਲ਼ ਸੈੱਟ ਕੀਤੀ।'''",
 'logdelete-failure' => "'''ਚਿੱਠੇ ਦੀ ਦਿੱਖ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ:''' $1",
 'revdel-restore' => 'ਦਿੱਖ ਬਦਲੋ',
@@ -1046,7 +1051,7 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'revdel-restore-visible' => 'ਦਿਸਣਯੋਗ ਰੀਵੀਜਨ',
 'pagehist' => 'ਸਫ਼ਾ ਅਤੀਤ',
 'deletedhist' => 'ਹਟਾਇਆ ਗਿਆ ਅਤੀਤ',
-'revdelete-hide-current' => 'ਤਾਰੀਖ &2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਰੀਵਿਜ਼ਨ ਹੈ।
+'revdelete-hide-current' => 'ਤਾਰੀਖ $2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗ਼ਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਦੁਹਰਾਈ ਹੈ।
 ਇਹ ਲੁਕਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ।',
 'revdelete-otherreason' => 'ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:',
 'revdelete-reasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
@@ -1089,16 +1094,14 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'compareselectedversions' => 'ਚੁਣੇ ਵਰਜਨਾਂ ਦੀ ਤੁਲਨਾ',
 'showhideselectedversions' => 'ਚੁਣੇ ਰੀਵਿਜ਼ਨ ਵਖਾਓ/ਲੁਕਾਓ',
 'editundo' => 'ਰੱਦ ਕਰੋ',
+'diff-empty' => '(ਕੋਈ ਫ਼ਰਕ ਨਹੀਂ)',
 'diff-multi' => '({{PLURAL:$2|ਵਰਤੋਂਕਾਰ ਦੀ|$2 ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ}} {{PLURAL:$1|ਵਿਚਕਾਰਲੀ ਰੀਵਿਜਨ ਨਹੀਂ ਦਿਖਾਈ ਜਾ ਰਹੀ|ਵਿਚਕਾਰਲੀਆਂ $1 ਰੀਵਿਜਨਾਂ ਨਹੀਂ ਦਿਖਾਈਆਂ ਜਾ ਰਹੀਆਂ}})',
 
 # Search results
 'searchresults' => 'ਖੋਜ ਨਤੀਜੇ',
 'searchresults-title' => '"$1" ਲਈ ਖੋਜ ਨਤੀਜੇ',
-'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' => 'ਸਫ਼ੇ ਦੀ ਲਿਖਤ ਮੇਲ ਖਾਂਦੀ ਹੈ',
 'notextmatches' => 'ਕਿਸੇ ਸਫ਼ੇ ਦੀ ਲਿਖਤ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ',
 'prevn' => 'ਪਿੱਛੇ {{PLURAL:$1|$1}}',
@@ -1107,10 +1110,8 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'nextn-title' => '{{PLURAL:$1|ਅਗਲਾ|ਅਗਲੇ}} $1 {{PLURAL:$1|ਨਤੀਜਾ|ਨਤੀਜੇ}}',
 'shown-title' => 'ਪ੍ਰਤੀ ਸਫ਼ਾ $1 {{PLURAL:$1|ਨਤੀਜਾ|ਨਤੀਜੇ}} ਵਿਖਾਓ',
 'viewprevnext' => 'ਵੇਖੋ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ਖੋਜ-ਸਬੰਧੀ ਚੋਣਾਂ',
 'searchmenu-exists' => "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:\$1]]\" ਨਾਮ ਦਾ ਸਫਾ ਹੈ।'''",
 'searchmenu-new' => "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:\$1]]\" ਸਫ਼ਾ ਬਣਾਓ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ਇਸ ਅਗੇਤਰ ਵਾਲ਼ੇ ਸਫ਼ੇ ਵੇਖੋ]]',
 'searchprofile-articles' => 'ਸਮੱਗਰੀ ਸਫ਼ੇ',
 'searchprofile-project' => 'ਮਦਦ ਤੇ ਪਰੋਜੈਕਟ ਸਫ਼ੇ',
 'searchprofile-images' => 'ਮਲਟੀਮੀਡੀਆ',
@@ -1141,11 +1142,9 @@ $1|'''1''' ਨਤੀਜਾ|'''$1''' ਤੱਕ ਨਤੀਜੇ}} ਵਖਾਓ।"
 $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'showingresultsheader' => "'''$4''' ਵਾਸਤੇ {{PLURAL:$5|'''$3''' ਵਿੱਚੋਂ '''$1''' ਨਤੀਜੇ|'''$3''' ਵਿੱਚੋਂ '''$1 - $2''' ਨਤੀਜੇ}}",
 'search-nonefound' => 'ਤੁਹਾਡੀ ਖੋਜ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ।',
-'powersearch' => 'ਤਕਨੀਕੀ ਖੋਜ',
 'powersearch-legend' => 'ਤਕਨੀਕੀ ਖੋਜ',
 'powersearch-ns' => 'ਨੇਮ-ਸਪੇਸ ਵਿੱਚ ਖੋਜ:',
 'powersearch-redir' => 'ਰੀ-ਡਿਰੈਕਟ ਸੂਚੀਬੱਧ ਕਰੋ',
-'powersearch-field' => 'ਇਸ ਲਈ ਖੋਜ',
 'powersearch-togglelabel' => 'ਜਾਂਚੋ:',
 'powersearch-toggleall' => 'ਸਭ',
 'powersearch-togglenone' => 'ਕੋਈ ਨਹੀਂ',
@@ -1156,8 +1155,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'preferences' => 'ਪਸੰਦਾਂ',
 'mypreferences' => 'ਪਸੰਦਾਂ',
 'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
-'prefsnologin' => 'ਦਾਖ਼ਲ ਨਹੀਂ ਹੋ',
-'prefsnologintext' => 'ਵਰਤੋਂਕਾਰ ਪਸੰਦਾਂ ਸੈੱਟ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ਲਾਗਇਨ]</span> ਕਰਨਾ ਪਵੇਗਾ।',
 'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
 'prefs-skin' => 'ਸਕਿਨ',
 'skin-preview' => 'ਝਲਕ',
@@ -1181,7 +1178,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'prefs-email' => 'ਈਮੇਲ ਚੋਣਾਂ',
 'prefs-rendering' => 'ਦਿੱਖ',
 'saveprefs' => 'ਸੰਭਾਲੋ',
-'resetprefs' => 'ਅਣ-ਸਾਂਭੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਫ਼ ਕਰੋ',
 'restoreprefs' => 'ਸਭ ਮੂਲ ਸੈਟਿੰਗਾਂ ਮੋੜ ਲਿਆਓ',
 'prefs-editing' => 'ਸੋਧ ਜਾਰੀ',
 'rows' => 'ਕਤਾਰਾਂ:',
@@ -1198,7 +1194,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'localtime' => 'ਸਥਾਨਕ ਸਮਾਂ:',
 'timezoneuseserverdefault' => 'ਵਿਕੀ ਮੂਲ ($1) ਵਰਤੋ',
 'timezoneuseoffset' => 'ਹੋਰ (ਆਫ਼ਸੈੱਟ ਦੱਸੋ)',
-'timezoneoffset' => 'ਆਫ਼ਸੈੱਟ¹:',
 'servertime' => 'ਸਰਵਰ ਦਾ ਟਾਈਮ:',
 'guesstimezone' => 'ਬਰਾਊਜ਼ਰ ਤੋਂ ਭਰੋ',
 'timezoneregion-africa' => 'ਅਫ਼ਰੀਕਾ',
@@ -1234,7 +1229,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 +1254,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 +1293,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 +1384,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ਆਖ਼ਰੀ ਫੇਰੀ ਤੋਂ ਲੈ ਕੇ}}',
+'enhancedrc-history' => 'ਅਤੀਤ',
 'recentchanges' => 'ਹਾਲ ’ਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ',
 'recentchanges-legend' => 'ਹਾਲ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਸਬੰਧੀ ਚੋਣਾਂ',
 'recentchanges-summary' => 'ਇਸ ਵਿਕੀ ’ਤੇ ਹੋਈਆਂ ਸਭ ਤੋਂ ਨਵੀਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਸਫ਼ੇ ’ਤੇ ਵੇਖੋ।',
@@ -1394,6 +1394,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 +1515,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 +1541,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'listfiles_size' => 'ਆਕਾਰ',
 'listfiles_description' => 'ਵੇਰਵਾ',
 'listfiles_count' => 'ਵਰਜਨ',
+'listfiles-latestversion-yes' => 'ਹਾਂ',
+'listfiles-latestversion-no' => 'ਨਹੀਂ',
 
 # File description page
 'file-anchor-link' => 'ਫ਼ਾਈਲ',
@@ -1616,6 +1621,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' => 'ਰਲ਼ਵਾਂ ਰੀਡਿਰੈਕਟ',
 
@@ -1682,7 +1693,6 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'longpages' => 'ਲੰਮੇ ਸਫ਼ੇ',
 'protectedpages' => 'ਸੁਰੱਖਿਅਤ ਸਫ਼ੇ',
 'protectedtitles' => 'ਸੁਰੱਖਿਅਤ ਸਿਰਲੇਖ',
-'protectedtitlestext' => 'ਹੇਠ ਲਿਖੇ ਸਿਰਲੇਖਾਂ ਨੂੰ ਬਣਾਉਣ ਤੋਂ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਹੋਇਆ ਹੈ।',
 'listusers' => 'ਯੂਜ਼ਰ ਲਿਸਟ',
 'listusers-editsonly' => 'ਸਿਰਫ਼ ਸੋਧਾਂ ਵਾਲੇ ਵਰਤੋਂਕਾਰ ਵਿਖਾਓ',
 'listusers-creationsort' => 'ਬਣਾਉਣ ਦੀ ਮਿਤੀ ਮੁਤਾਬਕ ਤਰਤੀਬ ਵਿਚ ਕਰੋ',
@@ -2290,7 +2300,7 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'file-info-size' => '$1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਅਕਾਰ: $3, MIME ਕਿਸਮ: $4',
 'file-nohires' => 'ਇਸ ਤੋਂ ਵੱਡੀ ਤਸਵੀਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।',
 'svg-long-desc' => 'SVG ਫ਼ਾਈਲ, ਆਮ ਤੌਰ ’ਤੇ $1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਦਾ ਅਕਾਰ: $3',
-'show-big-image' => 'ਪà©\82ਰਾ à¨°à©\88à¨\9cà©\8bਲà©\87ਸ਼ਨ',
+'show-big-image' => 'à¨\85ਸਲ à¨«à¨¾à¨\88ਲ',
 
 # Special:NewFiles
 'newimages' => 'ਨਵੀਆਂ ਫ਼ਾਈਲਾਂ ਦੀ ਗੈਲਰੀ',
@@ -2545,10 +2555,6 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'exif-urgency-low' => 'ਨੀਵਾਂ ($1)',
 'exif-urgency-high' => 'ਉੱਚਾ ($1)',
 
-# External editor support
-'edit-externally' => 'ਬਾਹਰੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤ ਕੇ ਇਸ ਫ਼ਾਈਲ ਨੂੰ ਸੋਧੋ',
-'edit-externally-help' => '(ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ਵੇਖੋ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ਸਭ',
 'namespacesall' => 'ਸਭ',
@@ -2808,4 +2814,7 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 # Image rotation
 'rotate-comment' => 'ਤਸਵੀਰ ਨੂੰ ਘੜੀ ਦੇ ਰੁਖ ਵਿਚ $1 {{PLURAL:$1|ਡਿਗਰੀ|ਡਿਗਰੀਆਂ}} ਨਾਲ਼ ਘੁਮਾਇਆ ਗਿਆ',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'ਝਲਕ',
+
 );
index 6bbeaae..ff1ca9e 100644 (file)
@@ -146,7 +146,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'qbedit' => 'Mag-edit',
 'qbpageoptions' => 'Ining bulung',
 'qbmyoptions' => 'Deng kakung bulung',
-'qbspecialpages' => 'Bulung a makabukud',
 'faq' => 'Maralas a Kukutang (MAK)',
 'faqpage' => 'Project:MAK',
 
@@ -250,8 +249,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',
@@ -330,9 +327,6 @@ Pakisabi ya iti king metung a  [[Special:ListUsers/sysop|administrator]], at pak
 'perfcachedts' => 'Makasimpan (cached) ya ing makatuking data, at tauli yang mibayu kanitang $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.
 Kasalungsungan yang makapatda ing pamagbayu (update) king bulung a ini. E la miyalilan ketang pekatauli (refreshed) deng makabiling data keti.',
-'wrong_wfQuery_params' => 'E la ustu deng sukad (parameter) king wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Lon ya ing pikuanan',
 'actionthrottled' => 'Mepigil ing pamangimut',
 'actionthrottledtext' => 'Metung ya kareng paralan ba yang sabatan ing spam ing pamaglimita king pamanulit king kimut (action) a iti kilub ning makuyad a panaun, at alagpusan mu ne itang angganan.
@@ -732,12 +726,8 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
 # Search results
 'searchresults' => 'Ding linual (resulta) king pamanintun',
 'searchresults-title' => 'Resulta ning pamanintun king "$1"',
-'searchresulttext' => 'Nung bisa kang karagdagang impormasiun tungkul king pamanintun king {{SITENAME}}, lon me ing [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Penintun me ing \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|deng anggang bulung a magumpisa king "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Deng anggang bulung a makasuglung king "$1"]])',
-'searchsubtitleinvalid' => "Penintunan me ing '''$1'''",
 'toomanymatches' => 'Masiadu lang dakal deng tinud (matches); subukan meng alilan ing kekang kutang (query)',
 'titlematches' => 'Deng tinud/mipareu kareng bansag bulung (page title matches)',
-'notitlematches' => 'Ala yang kapareu kareng bansag da ring bulung (page title)',
 'textmatches' => 'Deng kapareu na king kasulatan (text) da reng bulung',
 'notextmatches' => 'Alang tinud/pareu kareng bansag bulung (no page title matches)',
 'prevn' => 'minunang {{PLURAL:$1|$1}}',
@@ -770,12 +760,9 @@ Tutuking $1 {{PLURAL:$1|result|results}}',
 'searchall' => 'eganagana',
 'showingresults' => "Ing/ding {{PLURAL:$1|'''1''' a resulta|'''$1''' resulta}} manibatan king #'''$2'''.",
 'showingresultsnum' => "Ing/ding {{PLURAL:$3|'''1''' a resulta|'''$3''' resulta}} manibatan king #'''$2'''.",
-'nonefound' => "'''Kapabaluan''': Den mung aliwang pirinan lagiu (namespace) ing tambing a masisiasat o masusuri. Subukan meng umpisan king  ''eganagana:'' (''all:'') ing kekang kutang ba kang makapanintun king sablang laman (kayabe no reng pamisabi-sabi o talk pages, modelu o template, atlwp.), o gamitan me ing pirinan lagiung buri mu antimong mumunang paniapi (prefix) o mumunang/magumpisang lagiu.",
-'powersearch' => 'Espesial a pamanintun',
 'powersearch-legend' => 'Espesial a pamanintun',
 'powersearch-ns' => 'Maintun ka kareng namespace:',
 'powersearch-redir' => 'Ilista la reng redirect (pamanaliling direccion).',
-'powersearch-field' => 'Paintunan ya ing',
 'search-external' => 'Pamanintun king kilual',
 'searchdisabled' => 'Makapatda/e gagana ing pamanintun king {{SITENAME}}.
 Samantala, maliari kang maintun kapamilatan ning Google.
@@ -785,8 +772,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',
-'prefsnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba mong apagana deng pinili ning talagamit (user preferences).',
 'changepassword' => 'Alilan ya ing password',
 'prefs-skin' => 'Balat',
 'skin-preview' => 'I-preview',
@@ -799,7 +784,6 @@ Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ni
 'prefs-watchlist-edits' => 'Pekamaragul a bilang da reng miyalilan a lunto king miragdagan a tala da reng babanten (expanded watchlist):',
 'prefs-misc' => 'Alwp',
 'saveprefs' => 'I-save',
-'resetprefs' => 'Buran la retang miyalilan a e me-save',
 'prefs-editing' => 'Mag-edit',
 'rows' => 'Dane (rows):',
 'columns' => 'Ding asias:',
@@ -1219,10 +1203,8 @@ Isulat (input): contenttype/subtype, alimbawa <code>image/jpeg</code>.',
 'deadendpagestext' => 'E la makatuglung kareng aliwang bulung king wiking iti deng bulung a makatuki.',
 'protectedpages' => 'Bulung a protektadu',
 'protectedpages-indef' => 'Den mung proteksiung ali eksaktu (indefinite)',
-'protectedpagestext' => 'Protektadu/makakambil la reng makatuking bulung manibat king pamanalis o pamanalili',
 'protectedpagesempty' => 'Alang bulung a protektadu/makakambil kareng sukad (parameter) a deti king salukuyan.',
 'protectedtitles' => 'Bansag a protektadu/makakambil',
-'protectedtitlestext' => 'Protektadu/makakambil la king pamaglalang deng makatuking bansag (title)',
 'protectedtitlesempty' => 'Alang bansag a protektadu/makakambil king salukuyan a maki sukad (parameter) anti kareti.',
 'listusers' => 'Tala da reng talagamit',
 'newpages' => 'Deng bayung bulung',
@@ -2173,10 +2155,6 @@ Detang aliwa tambing (by default) lang makasalikut.
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Tutung direksiun',
 
-# External editor support
-'edit-externally' => 'I-edit me ing simpan a ini kapamilatan ning aplikasiun o program a ibat king kilual.',
-'edit-externally-help' => '(Lon me ing [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para king karagdagang informacion)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'eganagana',
 'namespacesall' => 'ila ngan',
index ff2e396..0713687 100644 (file)
@@ -141,7 +141,6 @@ $messages = array(
 'qbedit' => 'Editer',
 'qbpageoptions' => 'Chol pache-lo',
 'qbmyoptions' => 'Mes paches',
-'qbspecialpages' => 'Espéciales paches',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -242,8 +241,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',
@@ -471,10 +468,6 @@ Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-ch
 # Search results
 'searchresults' => 'Tracher chés résultats',
 'searchresults-title' => 'Tracher chés résultats pou "$1"',
-'searchresulttext' => "Pou pus d'informachons quant qu'vos trachez {{SITENAME}}, vir [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => "Vos trachez  « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes chés paches aroutant pèr « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes chés paches qu'ont un loïen dsus « $1 »]])",
-'searchsubtitleinvalid' => "vos trachez apreu '''$1'''",
-'notitlematches' => "Éj déniche mie d'pache aveuc ch'tite-lo",
 'textmatches' => 'Teske del pache déniché',
 'notextmatches' => "I n'y o poin d'pache aveuc ch'teske-lo",
 'prevn' => 'dvant {{PLURAL:$1|$1}}',
@@ -506,13 +499,10 @@ Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-ch
 'searchrelated' => 'relaté',
 'searchall' => 'tout',
 'showingresultsheader' => "{{PLURAL:$5|Résultat '''$1'''|Résultats '''$1–$2'''}} éd '''$3''' pour '''$4'''",
-'nonefound' => "'''Note''': il y o tasseulemint quéques éspaces éd noms éq sont trachés pèr défeut. <br /> Pou tracher din tous chés contnus (paches éd pérlache, modéles, etc... comprins) insséyer in imploéyant ch'préfixe ''all:'' o bin imploéyer echl éspace éd noms édmindé conme préfixe.",
 'search-nonefound' => 'Y a autchun résultat pour chol dmanne.',
-'powersearch' => 'Érvue avanchée',
 'powersearch-legend' => 'Érvue avanchée',
 'powersearch-ns' => 'Tracher din chés éspaches éd chés noms:',
 'powersearch-redir' => "Lisse d'chés érdirécchons",
-'powersearch-field' => 'Tracher pou',
 
 # Preferences page
 'preferences' => 'Préférinches',
@@ -1024,10 +1014,6 @@ Chés eutes cans is s'ront muchés pèr défeut.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => "Éditer ch'fichié-lo aveuc eune éstérne aplicachon",
-'edit-externally-help' => '(Vir [https://www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tertous',
 'namespacesall' => 'tous',
@@ -1057,8 +1043,7 @@ Chés eutes cans is s'ront muchés pèr défeut.
 
 # Special:SpecialPages
 'specialpages' => 'Paches éspéchiales',
-'specialpages-note' => '----
-* Paches éspéchiales conformes.
+'specialpages-note' => '* Paches éspéchiales conformes.
 * <span class="mw-specialpagerestricted">Paches éspéchiales réstrintes.</span>
 * <span class="mw-specialpagecached">Paches éspéchiales seulemint in muche (pétète des viuseries).</span>',
 'specialpages-group-maintenance' => "Rapports d'maintenanche",
index 8d65c50..c2b0334 100644 (file)
@@ -149,7 +149,6 @@ $messages = array(
 'qbedit' => 'Ennere',
 'qbpageoptions' => 'Des Blatt',
 'qbmyoptions' => 'Mei Bledder',
-'qbspecialpages' => 'Besunnere Bledder',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -233,8 +232,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',
@@ -394,7 +391,6 @@ Paesswatt fer nau: $2',
 # Search results
 'searchresults' => 'Results vum Uffgucke',
 'searchresults-title' => 'Results vum Uffgucke fer „$1“',
-'searchsubtitle' => 'Du hoscht nooch \'\'\'[[:$1]]\'\'\' gsucht ([[Special:Prefixindex/$1|alle Bledder wu mit "$1" aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Bledder wu uff "$1" zeige]])',
 'prevn' => '{{PLURAL:$1|letscht|letscht $1}}',
 'nextn' => 'neegschte {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
@@ -411,10 +407,8 @@ Paesswatt fer nau: $2',
 'search-interwiki-default' => '$1 Results:',
 'search-interwiki-more' => '(weidere)',
 'searchall' => 'all',
-'powersearch' => 'Guck uff',
 'powersearch-ns' => 'Guck uff in Blatznaame:',
 'powersearch-redir' => 'Lischt vun Weiterleidinge',
-'powersearch-field' => 'Such fer',
 'powersearch-toggleall' => 'All',
 'powersearch-togglenone' => 'Ken',
 'search-external' => 'Guck im Gewebb',
@@ -429,7 +423,6 @@ Paesswatt fer nau: $2',
 'prefs-watchlist-days' => 'Daage in de Watsch-Lischt:',
 'prefs-resetpass' => 'Paesswatt ennere',
 'saveprefs' => 'Uffstellinge beilege',
-'resetprefs' => 'Ausduh',
 'prefs-editing' => 'Ennere',
 'columns' => 'Kallems:',
 'searchresultshead' => 'Guck uff',
@@ -499,6 +492,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 +1003,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..1bfb099 100644 (file)
@@ -165,7 +165,6 @@ $messages = array(
 'qbedit' => 'Beawaide',
 'qbpageoptions' => 'Die Said',
 'qbmyoptions' => 'Moi Saide',
-'qbspecialpages' => 'Schbezialsaide',
 'faq' => 'Ofd gschdeldi Froche',
 
 # Vector skin
@@ -267,8 +266,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',
@@ -552,10 +549,6 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 # Search results
 'searchresults' => 'Eagewnis nochgugge',
 'searchresults-title' => 'Eagewnis gugge fa "$1"',
-'searchresulttext' => 'Fa mea Ogawe iwwas Nochgugge uff {{SITENAME}}, guggmol uff [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Du hoschd noch \'\'\'[[:$1]]\'\'\' geguggd ([[Special:Prefixindex/$1|alle Saide, wu mid "$1" aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Saide, wu uff "$1" valinggd sinn]])',
-'searchsubtitleinvalid' => "Du hoschd '''$1''' gsuchd",
-'notitlematches' => 'Kän Saidedidl gfunne',
 'notextmatches' => 'Kä Iwwaoinschdimmunge midm Tegschd',
 'prevn' => 'ledschda {{PLURAL:$1|$1}}',
 'nextn' => 'negschd {{PLURAL:$1|$1}}',
@@ -590,13 +583,10 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'searchrelated' => 'vawond',
 'searchall' => 'alle',
 'showingresultsheader' => "{{PLURAL:$5|Eagewnis '''$1''' vun '''$3'''|Eagewnis '''$1–$2''' vun '''$3'''}} fa '''$4'''",
-'nonefound' => "'''Hiiwais:''' S werre standardmäßich numme e Dail Namensraim durchsucht. Setz ''all:'' vor Dai Suchbegriff zum alle Saide (mit Dischbediersaide, Voalaache usw.) durchsuche odder direkt de Name vum Namensraum, wu durchsucht werre sell.",
 'search-nonefound' => 'Kä Eagewnis vunde Õfroch.',
-'powersearch' => 'Erwaiterte Such',
 'powersearch-legend' => 'Erwaiterte Such',
 'powersearch-ns' => 'In de Namensraim suche:',
 'powersearch-redir' => 'Waiderlaidunge aazaische',
-'powersearch-field' => 'Suche noch',
 'powersearch-togglelabel' => 'Wehl:',
 'powersearch-toggleall' => 'Alli',
 'powersearch-togglenone' => 'Kään',
@@ -610,7 +600,6 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'prefs-misc' => 'Schunschdisches',
 'prefs-rendering' => 'Uffdridd',
 'saveprefs' => 'Oischdellunge schbaischere',
-'resetprefs' => 'Oischdellunge vawerfe',
 'prefs-editing' => 'Schaffe',
 'rows' => 'Zaile',
 'columns' => 'Schbalde',
@@ -1179,10 +1168,6 @@ Wonn die Dadai vaännad worre isch, donn konns soi, daß zusedzlischi Õgawe fa
 
 'exif-gaincontrol-0' => 'Kään',
 
-# External editor support
-'edit-externally' => 'Die Dadai midm õnnare Weagzaisch beawaide',
-'edit-externally-help' => '(Gugg uff [https://www.mediawiki.org/wiki/Manual:External_editors Inschdallazionsõwaisunge] fa mea Auskinfd)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
index f7240f0..2abd628 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' ),
@@ -467,7 +471,6 @@ $messages = array(
 'qbedit' => 'Edycja',
 'qbpageoptions' => 'Ta strona',
 'qbmyoptions' => 'Moje strony',
-'qbspecialpages' => 'strony specjalne',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -584,12 +587,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',
@@ -686,9 +687,6 @@ Przyczyna nieokreślona.',
 'perfcached' => 'Poniższe dane są kopią z pamięci podręcznej i mogą być nieaktualne. Maksymalnie {{PLURAL:$1|jeden wynik jest|$1 wyniki są|$1 wyników jest}} w pamięci podręcznej.',
 'perfcachedts' => 'Poniższe dane są kopią z pamięci podręcznej. Ostatnia aktualizacja odbyła się $1. Maksymalnie {{PLURAL:$4|jeden wynik jest|$4 wyniki są|$4 wyników jest}} w pamięci podręcznej.',
 'querypage-no-updates' => 'Uaktualnienia dla tej strony są obecnie wyłączone. Znajdujące się tutaj dane nie zostaną odświeżone.',
-'wrong_wfQuery_params' => 'Nieprawidłowe parametry przekazane do wfQuery()<br />
-Funkcja: $1<br />
-Zapytanie: $2',
 'viewsource' => 'Tekst źródłowy',
 'viewsource-title' => 'Tekst źródłowy strony $1',
 'actionthrottled' => 'Akcja wstrzymana',
@@ -719,7 +717,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''",
@@ -821,7 +820,7 @@ Sprawdź poprawność pisowni.',
 'passwordtooshort' => 'Hasło musi mieć co najmniej $1 {{PLURAL:$1|znak|znaki|znaków}}.',
 'password-name-match' => 'Hasło musi być inne niż nazwa użytkownika.',
 'password-login-forbidden' => 'Wykorzystanie tej nazwy użytkownika lub hasła zostało zabronione.',
-'mailmypassword' => 'Wyślij mi nowe hasło poprzez e‐mail',
+'mailmypassword' => 'Zresetuj hasło',
 'passwordremindertitle' => 'Nowe tymczasowe hasło do {{GRAMMAR:D.lp|{{SITENAME}}}}',
 'passwordremindertext' => 'Ktoś (prawdopodobnie Ty, spod adresu IP $1)
 poprosił o przesłanie nowego hasła do {{GRAMMAR:D.lp|{{SITENAME}}}} ($4).
@@ -895,7 +894,7 @@ Być może właśnie zmienił{{GENDER:|eś|aś|eś(‐aś)}} swoje hasło lub po
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
 'passwordreset-text-one' => 'Wypełnij ten formularz, aby zresetować hasło.',
-'passwordreset-text-many' => '{{PLURAL:$1|Wypełnij jedno z poniższych pól, aby zresetować hasło.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Wypełnij jedno z poniższych pól, aby otrzymać tymczasowe hasło przez e-mail.}}',
 'passwordreset-legend' => 'Zresetuj hasło',
 'passwordreset-disabled' => 'Na tej wiki wyłączono możliwość resetowania haseł.',
 'passwordreset-emaildisabled' => 'Wysyłanie emaili zostało wyłączone na tej wiki',
@@ -1283,6 +1282,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 +1293,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',
@@ -1383,12 +1383,8 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 # Search results
 'searchresults' => 'Wyniki wyszukiwania',
 'searchresults-title' => 'Wyniki wyszukiwania „$1”',
-'searchresulttext' => 'Więcej informacji o przeszukiwaniu {{GRAMMAR:D.lp|{{SITENAME}}}} odnajdziesz na [[{{MediaWiki:Helppage}}|stronach pomocy]].',
-'searchsubtitle' => "Wyniki dla zapytania '''[[:$1]]''' ([[Special:Prefixindex/$1|strony zaczynające się od „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|strony, które linkują do „$1”]])",
-'searchsubtitleinvalid' => "Dla zapytania '''$1'''",
 'toomanymatches' => 'Zbyt wiele elementów pasujących do wzorca, spróbuj innego zapytania',
 'titlematches' => 'Znaleziono w tytułach',
-'notitlematches' => 'Nie znaleziono w tytułach',
 'textmatches' => 'Znaleziono w treści stron',
 'notextmatches' => 'Nie znaleziono w treści stron',
 'prevn' => '{{PLURAL:$1|poprzedni|poprzednie $1}}',
@@ -1397,10 +1393,8 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'nextn-title' => '{{PLURAL:$1|Następny|Następne}} $1 {{PLURAL:$1|wynik|wyniki|wyników}}',
 'shown-title' => 'Pokaż po $1 {{PLURAL:$1|wyniku|wyniki|wyników}} na stronę',
 'viewprevnext' => 'Zobacz ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcje wyszukiwania',
 'searchmenu-exists' => "* Strona '''[[$1]]'''",
 'searchmenu-new' => "'''Utwórz stronę „[[:$1|$1]]” na tej wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglądaj strony zaczynające się od tego przedrostka]]',
 'searchprofile-articles' => 'Strony',
 'searchprofile-project' => 'Strony pomocy i projektu',
 'searchprofile-images' => 'Multimedia',
@@ -1428,13 +1422,10 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'showingresults' => "Poniżej znajduje się lista {{PLURAL:$1|z '''1''' wynikiem|'''$1''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
 'showingresultsnum' => "Poniżej znajduje się lista {{PLURAL:$3|z '''1''' wynikiem|'''$3''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wynik '''$1''' z '''$3'''|Wyniki '''$1 – $2''' z '''$3'''}} dla '''$4'''",
-'nonefound' => "'''Uwaga''': Domyślnie przeszukiwane są wyłącznie niektóre przestrzenie nazw. Spróbuj poprzedzić wyszukiwaną frazę przedrostkiem ''all:'', co spowoduje przeszukanie całej zawartości {{GRAMMAR:D.lp|{{SITENAME}}}} (włącznie ze stronami dyskusji, szablonami itp) lub spróbuj użyć jako przedrostka wybranej, jednej przestrzeni nazw.",
 'search-nonefound' => 'Brak wyników spełniających kryteria podane w zapytaniu.',
-'powersearch' => 'Szukaj',
 'powersearch-legend' => 'Wyszukiwanie zaawansowane',
 'powersearch-ns' => 'Przeszukaj przestrzenie nazw:',
 'powersearch-redir' => 'Pokaż przekierowania',
-'powersearch-field' => 'Szukaj',
 'powersearch-togglelabel' => 'Zaznacz',
 'powersearch-toggleall' => 'wszystko',
 'powersearch-togglenone' => 'nic',
@@ -1448,8 +1439,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',
-'prefsnologintext' => 'Musisz się <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalogować]</span> przed zmianą swoich preferencji.',
+'prefsnologintext2' => 'Musisz $1 aby ustawić preferencje.',
 'changepassword' => 'Zmiana hasła',
 'prefs-skin' => 'Skórka',
 'skin-preview' => 'podgląd',
@@ -1473,7 +1463,6 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
 'prefs-email' => 'E‐mail',
 'prefs-rendering' => 'Wygląd',
 'saveprefs' => 'Zapisz',
-'resetprefs' => 'Cofnij niezapisane zmiany',
 'restoreprefs' => 'Przywróć wszystkie domyślne preferencje (we wszystkich sekcjach)',
 'prefs-editing' => 'Edycja',
 'rows' => 'Wiersze',
@@ -1494,7 +1483,6 @@ Każdy, kto go zna, będzie mógł je zobaczyć, więc zachowaj go dla siebie.
 'localtime' => 'Czas lokalny',
 'timezoneuseserverdefault' => 'Użyj domyślnej dla tej wiki ($1)',
 'timezoneuseoffset' => 'Inna (określ różnicę czasu)',
-'timezoneoffset' => 'Różnica¹',
 'servertime' => 'Czas serwera',
 'guesstimezone' => 'Pobierz z przeglądarki',
 'timezoneregion-africa' => 'Afryka',
@@ -1747,6 +1735,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',
@@ -2255,10 +2245,8 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 'protectedpages' => 'Strony zabezpieczone',
 'protectedpages-indef' => 'Tylko strony zabezpieczone na zawsze',
 'protectedpages-cascade' => 'Tylko strony zabezpieczone rekursywnie',
-'protectedpagestext' => 'Poniższe strony zostały zabezpieczone przed przenoszeniem lub edytowaniem.',
 'protectedpagesempty' => 'Żadna strona nie jest obecnie zabezpieczona z podanymi parametrami.',
 'protectedtitles' => 'Zabezpieczone nazwy stron',
-'protectedtitlestext' => 'Utworzenie stron o następujących nazwach jest zablokowane',
 'protectedtitlesempty' => 'Dla tych ustawień dopuszczalne jest utworzenie stron o dowolnej nazwie.',
 'listusers' => 'Lista użytkowników',
 'listusers-editsonly' => 'Pokaż tylko użytkowników z edycjami',
@@ -2482,9 +2470,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ź
@@ -3167,6 +3155,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 */',
@@ -3314,7 +3303,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',
@@ -3788,10 +3777,6 @@ Pozostałe pola zostaną domyślnie ukryte.
 'exif-urgency-high' => 'Wysoki ($1)',
 'exif-urgency-other' => 'Priorytet zdefiniowany przez użytkownika ($1)',
 
-# External editor support
-'edit-externally' => 'Edytuj plik, używając zewnętrznej aplikacji',
-'edit-externally-help' => '(Więcej informacji o używaniu [https://www.mediawiki.org/wiki/Manual:External_editors zewnętrznych edytorów]).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wszystkie',
 'namespacesall' => 'wszystkie',
@@ -4067,8 +4052,8 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 
 # Special:SpecialPages
 'specialpages' => 'Strony specjalne',
-'specialpages-note' => '----
-* Normalne 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',
 'specialpages-group-other' => 'Inne strony specjalne',
@@ -4282,4 +4267,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 7971f98..e610c85 100644 (file)
@@ -200,7 +200,6 @@ $messages = array(
 'qbedit' => 'Modifiché',
 'qbpageoptions' => 'Costa pàgina',
 'qbmyoptions' => 'Mie pàgine',
-'qbspecialpages' => 'Pàgine speciaj',
 'faq' => 'Chestion frequente',
 'faqpage' => 'Project:Soèns An Ciamo',
 
@@ -316,12 +315,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é',
@@ -417,9 +414,6 @@ A l'ha smonù gnun-e spiegassion.",
 'perfcached' => "Ij dat sì-dapress a sòn ëstàit memorisà an local e a peulo esse nen agiornà. Al pi {{PLURAL:$1|n'arzultà a l'é disponìbil|$1 arzultà a son disponìbij}} ant la memòria local.",
 'perfcachedts' => "Ij dat sì-dapress a son ëstàit memorisà an local, e a son ëstàit agiornà l'ùltima vira ël $1. Al pi {{PLURAL:$4|n'arzultà a l'é disponìbil|$4 arzultà a son disponìbij}} ant la memòria local.",
 'querypage-no-updates' => "J'agiornament për sta pàgina-sì për adess a marcio nen. Ij dat ambelessì a saran nen agiornà.",
-'wrong_wfQuery_params' => 'Paràmetro nen giust për wfQuery()<br />
-Funsion: $1<br />
-Arcesta: $2',
 'viewsource' => 'Vardé la sorgiss',
 'viewsource-title' => 'Vëdde la sorgiss ëd $1',
 'actionthrottled' => 'Assion limità',
@@ -449,7 +443,8 @@ L'aministrator ch'a l'ha blocalo a l'ha lassà sta spiegassion: «$3».",
 'invalidtitle-knownnamespace' => "Tìtol ch'a va nen bin con lë spassi nominal «$2» e ël test «$3»",
 'invalidtitle-unknownnamespace' => 'Tìtol pa bon con nùmer dë spassi nominal $1 e test «$2» sconossù',
 'exception-nologin' => 'Nen rintrà ant ël sistema',
-'exception-nologin-text' => "Costa pàgina o assion a l'ha damanca ch'a sia rintrà an costa wiki.",
+'exception-nologin-text' => "Për piasì, [[Special:Userlogin|ch'a rintra ant ël sistema]] për podèj acede a costa pàgina o a costa assion.",
+'exception-nologin-text-manual' => "Për piasì, ch'a $1 për podèj acede a costa pàgina o costa assion.",
 
 # Virus scanner
 'virus-badscanner' => "Configurassion falà: antivìrus nen conossù: ''$1''",
@@ -548,7 +543,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).
@@ -620,7 +615,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.',
@@ -1103,12 +1098,8 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 # Search results
 'searchresults' => "Arzultà dl'arserca",
 'searchresults-title' => "Arzultà dl'arserca për «$1»",
-'searchresulttext' => "Për avèj pì d'anformassion ant sl'arserca interna ëd {{SITENAME}}, che a varda [[{{MediaWiki:Helppage}}|Arserca ant la {{SITENAME}}]].",
-'searchsubtitle' => 'A l\'ha sërcà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tute le pàgine che a ancamin-o con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tute le pàgine che a men-o a "$1"]])',
-'searchsubtitleinvalid' => 'Domanda "$1"',
 'toomanymatches' => "Parèj a-i ven fòra tròpa ròba, për piasì, ch'a preuva n'arserca diferenta.",
 'titlematches' => "Ant ij tìtoj dj'artìcoj",
-'notitlematches' => "La vos che a l'ha ciamà a l'é pa trovasse antrames aj tìtoj dj'articoj",
 'textmatches' => "Ant ël test ëd j'artìcoj",
 'notextmatches' => "La vos che a l'ha ciamà a l'é pa trovasse antrames aj test dj'artìcoj",
 'prevn' => 'ij {{PLURAL:$1|$1}} prima',
@@ -1117,10 +1108,8 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'nextn-title' => '$1 {{PLURAL:$1|arzultà|arzultà}} apress',
 'shown-title' => 'Smon-e $1 {{PLURAL:$1|arzultà|arzultà}} për pàgina',
 'viewprevnext' => 'Che a varda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => "Opsion d'arserca",
 'searchmenu-exists' => "'''A-i é na pàgina ciamà \"[[:\$1]]\" dzora a costa wiki'''",
 'searchmenu-new' => "'''Creé la pàgina «[[:$1]]» ansima a sta wiki-sì!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualisé le pàgine con sto prefiss-sì]]',
 'searchprofile-articles' => 'Pàgine ëd contnù',
 'searchprofile-project' => "Pàgine d'agiut e ëd proget",
 'searchprofile-images' => 'Multimedia',
@@ -1148,14 +1137,10 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'showingresults' => "Ambelessì-sota a treuva fin a {{PLURAL:$1|'''1'''|'''$1'''}} arzultà, a parte dal nùmer #'''$2'''.",
 'showingresultsnum' => "Ambelessì-sota a treuva {{PLURAL:$3|'''1'''|'''$3'''}} arzultà a parte da #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Arzultà '''$1''' ëd '''$3'''|Arzultà '''$1 - $2''' ëd '''$3'''}} për '''$4'''",
-'nonefound' => "'''Nòta''': për stàndard a s'arserca mach an chèich ëspassi nominal.
-Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an tùit jë spassi nominaj (comprèis le discussion, jë stamp, e via fòrt), o ch'a deuvra lë spassi nominal vorsù com prefiss.",
 'search-nonefound' => "A-i é gnun arzultà për l'arserca.",
-'powersearch' => 'Arserca avansà',
 'powersearch-legend' => 'Arserca avansà',
 'powersearch-ns' => 'Sërché ant jë spassi nominaj:',
 'powersearch-redir' => 'Smon-e le ridiression',
-'powersearch-field' => 'Sërché',
 'powersearch-togglelabel' => 'Buté na marca:',
 'powersearch-toggleall' => 'Tùit',
 'powersearch-togglenone' => 'Gnun',
@@ -1167,8 +1152,7 @@ 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",
-'prefsnologintext' => 'A deuv esse <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} intrà ant ël sistema]</span> për amposté ij sò gust.',
+'prefsnologintext2' => "Për piasì, ch'a $1 për definì ij gust d'utent.",
 'changepassword' => 'Cangé la ciav',
 'prefs-skin' => 'Facia',
 'skin-preview' => 'Preuva',
@@ -1192,7 +1176,6 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
 'prefs-email' => 'Opsion ëd pòsta eletrònica',
 'prefs-rendering' => 'Sembiansa',
 'saveprefs' => 'Salvé ij sò gust',
-'resetprefs' => 'Buté torna ij "mè gust" coma a-i ero al prinsipi',
 'restoreprefs' => "Buté torna j'ampostassion dë stàndard (an tute le session)",
 'prefs-editing' => 'Quàder ëd modìfica dël test',
 'rows' => 'Righe:',
@@ -1213,7 +1196,6 @@ Qualsëssìa përson-a ch'a la conòssa a podrà lese la lista ëd lòn che chie
 'localtime' => 'Ora local:',
 'timezoneuseserverdefault' => 'Dovré lë stàndard ëd la wiki ($1)',
 'timezoneuseoffset' => 'Àutr (spessifiché la diferensa)',
-'timezoneoffset' => 'Diferensa oraria¹:',
 'servertime' => 'Ora dël servent:',
 'guesstimezone' => "Ciapa sù l'ora da 'nt ël mè programa ëd navigassion (browser)",
 'timezoneregion-africa' => 'Àfrica',
@@ -1470,6 +1452,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',
@@ -1975,10 +1960,8 @@ Adess a l'é na ridiression a [[$2]].",
 'protectedpages' => 'Pàgine sota protession',
 'protectedpages-indef' => 'Mach protession anfinìe',
 'protectedpages-cascade' => 'Mach protession a cascà',
-'protectedpagestext' => "Ambelessì-sota a-i é na lista ëd pàgine ch'a son protegiùe përchè as peulo nen modifichesse ò pura tramudesse",
 'protectedpagesempty' => 'Për adess a-i é pa gnun-a pàgina protegiùa',
 'protectedtitles' => 'Tìtoj protegiù',
-'protectedtitlestext' => 'Ij tìtoj ambelessì-sota as peulo pa creesse',
 'protectedtitlesempty' => "A-i é pa gnun tìtol protegiù ch'a-i intra coi criteri ch'a l'ha butà.",
 'listusers' => "Lista dj'utent",
 'listusers-editsonly' => "Mostré mach j'utent ch'a l'han fàit dle modìfiche",
@@ -2204,7 +2187,7 @@ Për contaté l\'editor:
 pòsta eletrònica: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-A-i sarà pì gnun-a notìfica ëd modìfiche se chiel a vìsita nen costa pàgina. Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba ch\'as ten sot-euj.
+A-i sarà pì gnun-a notìfica an cas d\'àutre atività se chiel a vìsita nen costa pàgina da colegà. Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba ch\'as ten sot-euj.
 
 Comunicassion dël sistema ëd notìfica da {{SITENAME}}
 
@@ -3491,10 +3474,6 @@ J'àutri a saran stërmà coma stàndard.
 'exif-urgency-high' => 'Àuta ($1)',
 'exif-urgency-other' => "Priorità definìa da l'utent ($1)",
 
-# External editor support
-'edit-externally' => "Modifiché st'archivi con un programa estern",
-'edit-externally-help' => "(Lese [https://www.mediawiki.org/wiki/Manual:External_editors j'anstrussion d'anstalassion] për avèj pì d'anformassion)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tute',
 'namespacesall' => 'tùit',
@@ -3744,10 +3723,9 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 
 # Special:SpecialPages
 'specialpages' => 'Pàgine Speciaj',
-'specialpages-note' => '----
-* Pàgine speciaj normaj.
-* <span class="mw-specialpagerestricted">Pàgine speciaj riservà.</span>
-* <span class="mw-specialpagecached">Pàgine speciaj mach an memòria local (a peulo esse veje).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Pàgine speciaj normaj.
+* <span class="mw-specialpagerestricted">Pàgine speciaj riservà.</span>',
 'specialpages-group-maintenance' => 'Rapòrt ëd manutension',
 'specialpages-group-other' => 'Àutre pàgine speciaj',
 'specialpages-group-login' => 'Intré ant ël sistema / creé un cont',
@@ -3960,4 +3938,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 894c432..e0ad7bf 100644 (file)
@@ -164,7 +164,6 @@ $messages = array(
 'qbedit' => 'لکھو',
 'qbpageoptions' => 'اے صفہ',
 'qbmyoptions' => 'میرے صفے',
-'qbspecialpages' => 'خاص صفے',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -276,8 +275,6 @@ $messages = array(
 'ok' => 'ٹھیک اے',
 'retrievedfrom' => '"$1" توں لیا',
 'youhavenewmessages' => 'تواڈے لئی $1 ($2).',
-'newmessageslink' => 'نواں سنیآ',
-'newmessagesdifflink' => 'آخری تبدیلی',
 'youhavenewmessagesmulti' => 'تھاڈے ل‏ی $1 تے نوں سنیعہ اے۔',
 'editsection' => 'لکھو',
 'editold' => 'لکھو',
@@ -364,9 +361,6 @@ $messages = array(
 'perfcachedts' => 'تھلے دتا گیا ڈیٹا کاشیڈ اے تے  $1 نوں نواں کیتا گیا۔ زیادہ توں زیادہ {{PLURAL:$4|اک نتیجہ ہووے|$4 نتیجے ہوون}} نتیجے کاشے چ ہیگے نیں .',
 'querypage-no-updates' => 'اس صفحے نوں اپڈیٹ فلحال نئیں کیتا جا سکدا۔
 ایدا مال ہلے نواں نئیں کیتا جاۓ گا۔',
-'wrong_wfQuery_params' => 'غلط پیرامیٹرز وفکویریدے()<br />
-فنکشن: $1<br />
-کویری: $2',
 'viewsource' => 'ویکھو',
 'viewsource-title' => '$1 لئی سورس ویکھو',
 'actionthrottled' => 'اے کم کئی واری کیتا گیا اے',
@@ -942,12 +936,8 @@ $1",
 # Search results
 'searchresults' => 'کھوج دا نتارا',
 'searchresults-title' => '"$1" دے کھوج نتارے',
-'searchresulttext' => 'وکیپیڈیا چ کھوجن دے بارے چ ہور معلومات آستے کھوجن دا صفحہ ویکھو',
-'searchsubtitle' => "تواڈی لفظ '''[[:$1]] آستے کھوج",
-'searchsubtitleinvalid' => "'''$1''' آستے کھوج کیتی",
 'toomanymatches' => 'چوکھے سارے رلدے جوڑے سامنے آے نیں، اک ہور کھوج دی کوشش کرو۔',
 'titlematches' => 'صفے دا سرناواں رلدا اے',
-'notitlematches' => 'اے لفظ کسی صفحے دے ناں چ نئیں اے۔',
 'textmatches' => 'صفہ لکھت رلدا',
 'notextmatches' => 'کوئی صفح نئیں لبیا',
 'prevn' => 'پہلا {{PLURAL:$1|$1}}',
@@ -956,10 +946,8 @@ $1",
 'nextn-title' => 'اگلے $1 {{PLURAL:$1|نتیجے}}',
 'shown-title' => 'وکھاؤ $1 {{PLURAL:$1|نتیجے}}',
 'viewprevnext' => 'ویکھو ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'چنوتیاں کھوجو',
 'searchmenu-exists' => "'''ایس وکی تے \"[[:\$1]]\" ناں دا صفہ ہے۔.'''",
 'searchmenu-new' => "'''ایس وکی تے \"[[:\$1]]\" بناؤ'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ایس پریفکس نال صفے کھوجو]]',
 'searchprofile-articles' => 'لسٹ صفے',
 'searchprofile-project' => 'مدد تے ویونت صفے',
 'searchprofile-images' => 'ملٹیمیڈیا',
@@ -987,14 +975,10 @@ $1",
 'showingresults' => "تھلیوں دسے گۓ  {{PLURAL:$1|'''1''' نتیجہ|'''$1''' نتیجے}}  شروع #'''$2'''.",
 'showingresultsnum' => "تھلے دسدا اے {{PLURAL:$3|'''1''' نتیجہ|'''$3''' نتیجے}} #'''$2''' توں ٹرن والے۔",
 'showingresultsheader' => "{{PLURAL:$5|نتیجہ '''$1''' دا '''$3'''|نتیجے '''$1 - $2''' دے '''$3'''}} لئی '''$4'''",
-'nonefound' => "'''صفحیاں دے ناں ڈیفالٹ تے کھوجے جاندے نیں'''
-اپنے لفظ توں پہلاں ''all:'' لا کے کھوجو۔ اس نال گلاں باتاں آلے صفحے، سچے وغیرہ سب چ تواڈا لفظ کھوجیا جاۓ گل۔",
 'search-nonefound' => 'سوال نال رلدے کوئی نتارے نئیں سن۔',
-'powersearch' => 'ودیا کھوج',
 'powersearch-legend' => 'ہور کھوج',
 'powersearch-ns' => 'ناں الیاں جگہاں چ لبو:',
 'powersearch-redir' => 'ریڈائریکٹس دی لسٹ وکھاؤ',
-'powersearch-field' => 'لئی کھوج',
 'powersearch-togglelabel' => 'ویکھو:',
 'powersearch-toggleall' => 'سارے',
 'powersearch-togglenone' => 'کوئی نئیں',
@@ -1007,8 +991,6 @@ $1",
 'preferences' => 'تانگاں',
 'mypreferences' => 'میریاں تانگاں',
 'prefs-edits' => 'تبدیلیاں دی گنتی:',
-'prefsnologin' => 'لاگ ان نئیں او',
-'prefsnologintext' => 'تسیں لازمی <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} لاگ ان]</span> ورتن تانگاں سیٹ کرنا.',
 'changepassword' => 'کنجی بدلو',
 'prefs-skin' => 'چھاڑ',
 'skin-preview' => 'کچا کم',
@@ -1031,7 +1013,6 @@ $1",
 'prefs-email' => 'ای-میل چنوتیاں',
 'prefs-rendering' => 'وکھالہ',
 'saveprefs' => 'بچاؤ',
-'resetprefs' => 'ناں بچائیاں ہویاں تبدیلیاں مکاؤ',
 'restoreprefs' => 'ڈیفالٹ سیٹنگز دوبارہ لیاؤ',
 'prefs-editing' => 'لکھائی',
 'rows' => 'قطار:',
@@ -1049,7 +1030,6 @@ $1",
 'localtime' => 'مقامی ویلا:',
 'timezoneuseserverdefault' => 'وکی ڈیفالٹ ($1) ورتو۔',
 'timezoneuseoffset' => 'دوجے (آفسٹ دسو)',
-'timezoneoffset' => 'آفسیٹ:',
 'servertime' => 'سرور دا ویلا:',
 'guesstimezone' => 'براؤزر توں پعرو۔',
 'timezoneregion-africa' => 'افریقہ',
@@ -1749,10 +1729,8 @@ $1",
 'protectedpages' => 'بچاۓ گۓ صفے',
 'protectedpages-indef' => 'صرف انڈیفینٹ بچاؤ',
 'protectedpages-cascade' => 'کیسکیڈنگ بچاؤ صرف',
-'protectedpagestext' => 'تھلے دتے کے صفے ہٹان یا تبدیلی تون بچاۓ گے نیں۔',
 'protectedpagesempty' => 'ایناں ولگناں نال کوئی صفے نئیں بچاۓ گۓ۔',
 'protectedtitles' => 'بچاۓ ہوۓ صفحے',
-'protectedtitlestext' => 'تھلے دتے گۓ سرناویں بنان توں بچاۓ گۓ نیں۔',
 'protectedtitlesempty' => 'ایناں ولگناں نال کوئی سرناویں نئیں بچاۓ گۓ۔',
 'listusers' => 'ورتن والیاں دے ناں',
 'listusers-editsonly' => 'تبدیلیاں کرن والے ورتن والے ای دسو۔',
@@ -3160,10 +3138,6 @@ $1',
 'exif-urgency-high' => 'اچا ($1)',
 'exif-urgency-other' => '($1)  ورتن ڈیفائینڈ پراورٹی',
 
-# External editor support
-'edit-externally' => 'بارلا سافٹ ویئر استعال کردے ہوۓ اے فائل لکھو',
-'edit-externally-help' => 'زیادہ معلومات آسطے اے [https://www.mediawiki.org/wiki/Manual:External_editors] ویکھو۔',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'سارے',
 'namespacesall' => 'سارے',
@@ -3370,8 +3344,7 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
 # Special:SpecialPages
 'specialpages' => 'خاص صفے',
-'specialpages-note' => '----
-* نارمل خاص صفے.
+'specialpages-note' => '* نارمل خاص صفے.
 * <span class="mw-specialpagerestricted">روکے گۓ خاص صفے.</span>
 * <span class="mw-specialpagecached">کاشے خاص صفے (پرانے ہوگۓ ہون).</span>',
 'specialpages-group-maintenance' => 'مرمت رپورٹ',
index 36e3486..a7c66bb 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'qbedit' => 'Άλλαξον',
 'qbpageoptions' => 'Ατή η σελίδαν',
 'qbmyoptions' => "Τ' εμά τα σελίδας",
-'qbspecialpages' => 'Ειδικά σελίδας',
 'faq' => 'Πολλά ερωτήσεις (FAQ)',
 'faqpage' => 'Project:Πολλά ερωτήσεις (FAQ)',
 
@@ -260,8 +259,6 @@ $messages = array(
 'ok' => 'Εγέντον',
 'retrievedfrom' => 'Ασο "$1"',
 'youhavenewmessages' => 'Έχετε $1 ($2).',
-'newmessageslink' => 'καινούρεα μενέματα',
-'newmessagesdifflink' => 'υστερνόν αλλαγήν',
 'youhavenewmessagesmulti' => 'Έχετε καινούρεα μενέματα σο $1',
 'editsection' => 'άλλαξον',
 'editold' => 'άλλαξον',
@@ -584,10 +581,6 @@ $messages = array(
 # Search results
 'searchresults' => 'Εύρον αποτελέσματα',
 'searchresults-title' => 'Εύρον αποτελέσματα για "$1"',
-'searchresulttext' => "Κι άλλο πολλά πληροφορίας για τ'αράεμαν σο {{SITENAME}} ευρίσκουνταν σο [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Αραέβετε \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ούλα τα σελίδας ντ\'αρχίζνε με "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ούλα τα σελίδας ντο δεκνίζνε σο "$1"]])',
-'searchsubtitleinvalid' => "Αράεψες το '''$1'''",
-'notitlematches' => "Κανέναν όνομαν σελίδας 'κ ταιριάζ",
 'notextmatches' => "Κανέναν γράψιμον 'κ ταιριάζ",
 'prevn' => '{{PLURAL:$1|$1}} προηγουμένων',
 'nextn' => '{{PLURAL:$1|$1}} επομένων',
@@ -602,12 +595,9 @@ $messages = array(
 'search-interwiki-default' => '$1 αποτελέσματα:',
 'search-interwiki-more' => '(πλέα)',
 'searchall' => 'ούλαι',
-'nonefound' => "'''Σημείωση:''' Κανονικά ολίγα περιοχάς ονοματίων αραεύκουνταν μαναχόν. Βαλέστεν ''all:'' ασην λέξην εμπροστά για ίνεται το αράεμαν σ'όλεα τα σελίδας (και σελίδας καλατσεματί, πρότυπα κλπ.) ή βαλέστεν ους πρόθεμαν την περιοχήν ονοματίων π'θέλετε για να αραεύετε εκαικά.",
-'powersearch' => 'Αναλυτικόν αράεμαν',
 'powersearch-legend' => 'Αναλυτικόν αράεμαν',
 'powersearch-ns' => "Αράεμαν σα τόπε τ' ονοματίων:",
 'powersearch-redir' => 'Κατάλογον με διπλά συνδέσμ',
-'powersearch-field' => 'Αράεμαν τη',
 'powersearch-toggleall' => 'Όλια',
 'powersearch-togglenone' => 'Τιδέν',
 'search-external' => 'Εύρον σα εξ μερέαν',
@@ -626,7 +616,6 @@ $messages = array(
 'searchresultshead' => 'Εύρον',
 'timezonelegend' => 'Χρονικόν ζώνην:',
 'localtime' => 'Τοπικόν χρόνον:',
-'timezoneoffset' => 'Διαφοράν ωρίων¹:',
 'timezoneregion-africa' => 'Αφρικήν',
 'timezoneregion-america' => 'Αμερικήν',
 'timezoneregion-antarctica' => 'Ανταρκτικήν',
@@ -1346,10 +1335,6 @@ $messages = array(
 'exif-gpsspeed-m' => 'Μίλιαν την ώραν',
 'exif-gpsspeed-n' => 'Κορδίλαι',
 
-# External editor support
-'edit-externally' => "Αλλαγήν τ' αρχείου με προγράμματα ασα εξ μερέα",
-'edit-externally-help' => '(Τερέστεν τα [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] και θα ευρίετε κι άλλα πληροφορίας)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ούλαι',
 'namespacesall' => 'ούλαι',
index bcec2af..5f41298 100644 (file)
@@ -150,7 +150,6 @@ Pāusai en kategōrijai "$1"',
 'qbedit' => 'Redigīs',
 'qbpageoptions' => 'Šin pāusan',
 'qbmyoptions' => 'Majāi pāusai',
-'qbspecialpages' => 'Speciālai pāusai',
 'faq' => 'Ukadeznai prasīsenei',
 'faqpage' => 'Project:Ukadeznai prasīsenei',
 
@@ -251,8 +250,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',
@@ -332,9 +329,6 @@ Mazīngi, kāi pastāi jāu āupausintan pra ainuntan kittan.',
 'perfcached' => 'Šin dātan ast rānkas minīsnas kōpija be mazzi būtwei niaktuālin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Šin dātan ast rānkas minīsnas kōpija. Panzdaums ernaunīnsenis bēi en $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Šisse pāusan etnaunīnsna tēntiskai ast izklāutan. Sēnti stwi dātan ni wīrst pastāwun etnaunīntan.',
-'wrong_wfQuery_params' => 'Nitikrōmiskai parāmeterei perlaīstan wfQuery()<br />
-Funkciōni: $1<br />
-Prasīsenis: $2',
 'viewsource' => 'Wīdais appun',
 'actionthrottled' => 'Dīlasenis stalīntan',
 'protectedpagetext' => 'Redigīsnas mazīngisku per šin pāusan pastāi izklāutan.',
@@ -767,12 +761,8 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 # Search results
 'searchresults' => 'Laukīsnas rezultātai',
 'searchresults-title' => 'Laukīsnas rezultātai per "$1"',
-'searchresulttext' => 'Tūls infōrmaciōnis ezze laukīsnan en {{SITENAME}} tū mazzi aupaltun en [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Rezultātai per prasīsenin '''[[:$1]]''' ([[Special:Prefixindex/$1|pāusai, kawīdai pagaūne si sen „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pāusai, kawīdai autenginna prei „$1”]])",
-'searchsubtitleinvalid' => "Per prasīsenin '''$1'''",
 'toomanymatches' => 'Per tūlin etrāsenei gaūtan, bandais kittan prasīsenin',
 'titlematches' => 'Aupalā di en tītelamans',
-'notitlematches' => 'Ni aupalā di en tītelamans',
 'textmatches' => 'Aupalā di en pāusan ēnturu',
 'notextmatches' => 'Ni aupalā di en pāusan ēnturu',
 'prevn' => '{{PLURAL:$1|pirzdaums|pirzdaumai $1}}',
@@ -781,10 +771,8 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 'nextn-title' => '{{PLURAL:$1|Ripīntin $1 rezultātan|Ripīntei $1 rezultātai}}',
 'shown-title' => 'Waidinnais $1 {{PLURAL:$1|rezultātan|rezultātai}} en pāusu',
 'viewprevnext' => 'Wīdais ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Laukīsnas mazīngiskwas',
 'searchmenu-exists' => "'''Ast pāusan \"[[:\$1]]\" en šissei wikkin''",
 'searchmenu-new' => "'''Teīkeis pāusan \"[[:\$1|\$1]]\" en šissei wikki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pradirēis pāusans sen šin prefiksan]]',
 'searchprofile-project' => 'Pagalbas be prōjaktas pāusai',
 'searchprofile-everything' => 'Wiss',
 'searchprofile-advanced' => 'Ēmpirsin treppun',
@@ -808,14 +796,10 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 'searchall' => 'wisāi',
 'showingresults' => "Zemmais ast listi {{PLURAL:$1|sen '''1''' rezultātan|stēisan '''$1''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
 'showingresultsnum' => "Zemmais ast listi {{PLURAL:$3|sen '''1''' rezultātan|stēisan '''$3''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
-'nonefound' => "'''Nōda''': Auprestaminai pralaukītan ast tēr ainuntas tītelin plattibis.
-Bandais pagaūtun laukītan frāzin sen prefiksan \"all:\", kāi pralaukīlai pastippan ēnturan stesse {{SITENAME}} (ēmpiri sen diskusiōnis pāusans, šablōnins, be t.t.), anga tērpaus palaipsītan tītelin plattibin kāigi prefiksan.",
 'search-nonefound' => 'Nisatausnā stēisan rezultātan izpilnintan prasīsenes kritērijans.',
-'powersearch' => 'Paplatintā laukīsna',
 'powersearch-legend' => 'Paplatintā laukīsna',
 'powersearch-ns' => 'Laukīs en tītelin plattibimans:',
 'powersearch-redir' => 'Waidinnais prawessenins',
-'powersearch-field' => 'Laukīs',
 'powersearch-toggleall' => 'Wisāi',
 'powersearch-togglenone' => 'Nika',
 'search-external' => 'Izwinaīna laukisnā',
@@ -827,7 +811,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',
@@ -845,7 +828,6 @@ Pamēnais, kāi tenēisan indicai mazzi ni būtwei aktuālin.',
 'prefs-email' => 'E-mailas mazīngiskwas',
 'prefs-rendering' => 'Prusna',
 'saveprefs' => 'Enpeisāis',
-'resetprefs' => 'Ausadinnais nienpeisātans kitawīdinsnans',
 'restoreprefs' => 'Etwārtai wartinnais wissans auprestaminans pirminiskwans',
 'rows' => 'Rīndas:',
 'columns' => 'Kōlunis:',
@@ -860,7 +842,6 @@ Pamēnais, kāi tenēisan indicai mazzi ni būtwei aktuālin.',
 'localtime' => 'Lōkala kerdā:',
 'timezoneuseserverdefault' => 'Tērpaus auprestaminan sērwerin kērdan',
 'timezoneuseoffset' => 'Kitā (patikrinais šlaitīntan)',
-'timezoneoffset' => 'Šlaitīntan:',
 'servertime' => 'Sērweres kerdā:',
 'guesstimezone' => 'Paimmais iz lasātlin',
 'timezoneregion-africa' => 'Afrika',
@@ -1065,6 +1046,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',
@@ -1398,10 +1380,8 @@ Teinū tennan prawedda prei [[$2]].',
 'protectedpages' => 'Pakūnstai pāusai',
 'protectedpages-indef' => 'Tēr pāusai pakūnstai per wisaddan',
 'protectedpages-cascade' => 'Tēr pāusai sen weldītan pakūnsenin.',
-'protectedpagestext' => 'Šāi pāusai ast pakūnstan prīki praskajjinsnan anga redigīsnan.',
 'protectedpagesempty' => 'Ni ast tēnti pāusai pakūnstan sen padātans parāmeterins.',
 'protectedtitles' => 'Pakūstai pāusan tītelai',
-'protectedtitlestext' => 'Ripīntei pāusan tītelai ast pakūnstan prīki teīksnan',
 'protectedtitlesempty' => 'Niaīnai tītelai ast tēntiskai pakūnstan sen šins parāmeterins.',
 'listusers' => 'Tērpautajan listi',
 'listusers-editsonly' => 'Waidinnais tēr tērpautajans sen redigīsenins',
@@ -2449,10 +2429,6 @@ Kitāi wīrst būwusis kliptan auprestaminai.
 'exif-gpsdirection-t' => 'Arwis līnkis',
 'exif-gpsdirection-m' => 'Magnetiskas līnkis',
 
-# External editor support
-'edit-externally' => 'Redigīs šin pāusan tērpawintei izwinaīnan prōgraman',
-'edit-externally-help' => '(Skaitāis [https://www.mediawiki.org/wiki/Manual:External_editors instrukciōnins], kāi gaūlai tūls infōrmaciōnins).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wisāi',
 'namespacesall' => 'wisāi',
@@ -2595,8 +2571,7 @@ Tu mazzi dīgi [[Special:EditWatchlist|tērpautun stāndardiskan editōran]].',
 
 # Special:SpecialPages
 'specialpages' => 'Speciālai pāusai',
-'specialpages-note' => '----
-* Nōrmalai speciālai pāusai.
+'specialpages-note' => '* Nōrmalai speciālai pāusai.
 * <strong class="mw-specialpagerestricted">Speciālai pāusai sen arāikintan preiēisenin.</strong>',
 'specialpages-group-maintenance' => 'Kōnserwaciōnis repōrtai',
 'specialpages-group-other' => 'Kitāi speciālai pāusai',
index 5acaf75..50486ab 100644 (file)
@@ -315,7 +315,6 @@ $messages = array(
 'qbedit' => 'سمول',
 'qbpageoptions' => 'همدا مخ',
 'qbmyoptions' => 'زما پاڼې',
-'qbspecialpages' => 'ځانگړي مخونه',
 'faq' => 'ډ-ځ-پ',
 'faqpage' => 'Project:ډ-ځ-پ',
 
@@ -375,7 +374,7 @@ $messages = array(
 'articlepage' => 'د مخ مېنځپانگه ښکاره کول',
 'talk' => 'خبرې اترې',
 'views' => 'کتنې',
-'toolbox' => 'اوزاربکس',
+'toolbox' => 'اوزارونه',
 'userpage' => 'د کارن پاڼه کتل',
 'projectpage' => 'د پروژې مخ کتل',
 'imagepage' => 'د دوتنې مخ کتل',
@@ -393,7 +392,7 @@ $messages = array(
 'jumpto' => 'ورټوپ کړه:',
 'jumptonavigation' => 'گرځښت',
 'jumptosearch' => 'پلټل',
-'view-pool-error' => 'اÙ\88بخÚ\9aÛ\8dØ\8c Ø¯Ù\85 Ú«ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
+'view-pool-error' => 'اÙ\88بخÚ\9aÛ\8dØ\8c Ø¯Ù\85 Ú¯ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
 ډېر زيات کارنان د همدې مخ د کتلو په هڅه کې دي.
 لطفاً د دې مخ د کتلو د بيا هڅې نه دمخه يو څو شېبې صبر وکړۍ.
 
@@ -431,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|يو نوی پيغام|999=نوي پيغامونه}}',
+'newmessagesdifflinkplural' => 'تېر {{PLURAL:$1|بدلون|999=بدلونونه}}',
 'youhavenewmessagesmulti' => 'تاسې په $1 کې نوي پېغامونه لرۍ',
 'editsection' => 'سمول',
 'editold' => 'سمول',
@@ -593,7 +590,7 @@ $1',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
 'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
 'createacct-another-email-ph' => 'برېښليک پته مو ورکړۍ',
-'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او په لاندې ورکړل شوې برېښليک پته کې ورلېږل',
+'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او ځانگړې شوې برېښليک پتې ته ورلېږل',
 'createacct-realname' => 'آر نوم (اختياري)',
 'createaccountreason' => 'سبب:',
 'createacct-reason' => 'سبب',
@@ -652,8 +649,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 +666,7 @@ $1',
 که چېرته دا کړنه په تېروتنه کې شوی وي نو تاسې کولای شی چې دا پيغام بابېزه وگڼۍ.',
 'usernamehasherror' => 'کارن-نوم نشي کېدلای چې کرښکې لوښې ولري',
 'login-throttled' => 'تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.
-لطفاً د بيا هڅې نه مخکې يو څو شېبې تم شۍ.',
+لطفاً د بيا هڅې نه مخکې $1 شېبې تم شۍ.',
 'login-abort-generic' => 'غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو',
 'loginlanguagelabel' => 'ژبه: $1',
 
@@ -683,8 +680,7 @@ $1',
 'newpassword' => 'نوی پټنوم:',
 'retypenew' => 'نوی پټنوم بيا وليکه:',
 'resetpass_submit' => 'پټنوم مو وټاکۍ او بيا غونډال ته ورننوځۍ',
-'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!
-اوس غونډال کې د ورننوتلو په حال کې يو ...',
+'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!',
 'resetpass_forbidden' => 'پټنومونه مو نه شي بدلېدلای',
 'resetpass-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'resetpass-submit-loggedin' => 'پټنوم بدلول',
@@ -709,6 +705,7 @@ $1',
 # Special:ChangeEmail
 'changeemail' => 'برېښليک پته بدلول',
 'changeemail-header' => 'د گڼون برېښليک پته بدلول',
+'changeemail-text' => 'د برېښليک پتې بدلولو لپاره مو همدا فورمه ډکه کړۍ. د دې بدلون د تاييد لپاره بايد پټنوم مو ورکړۍ.',
 'changeemail-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'changeemail-oldemail' => 'اوسنۍ برېښليک پته:',
 'changeemail-newemail' => 'نوې برېښليک پته:',
@@ -932,14 +929,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' => 'ړنګې شوې بڼې',
@@ -983,11 +980,7 @@ $1',
 # Search results
 'searchresults' => 'د پلټنې پايلې',
 'searchresults-title' => 'د "$1" د پلټنې پايلې',
-'searchresulttext' => 'په {{SITENAME}} کې د لټون د نورو مالوماتو لپاره، [[{{MediaWiki:Helppage}}|{{int:لارښود}}]] وگورۍ.',
-'searchsubtitle' => 'تاسې د \'\'\'[[:$1]]\'\'\' لپاره پلټنه کړې ([[Special:Prefixindex/$1|ټول هغه مخونه چې په "$1" پېلېږي]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ټول هغه مخونه چې "$1" سره تړنې لري]])',
-'searchsubtitleinvalid' => "تاسې د '''$1''' لټون کړی",
 'titlematches' => 'د مخ سرليک ورسره ورته دی',
-'notitlematches' => 'د هېڅ يوه مخ سرليک ورسره ورته نه دی',
 'textmatches' => 'د مخ متن ورسره ورته دی',
 'notextmatches' => 'د هېڅ کوم مخ متن ورسره سمون نه خوري',
 'prevn' => 'تېر {{PLURAL:$1|$1}}',
@@ -996,7 +989,6 @@ $1',
 'nextn-title' => 'راتلونکې $1 {{PLURAL:$1|پايله|پايلې}}',
 'shown-title' => 'په هر مخ $1 {{PLURAL:$1|پايله|پايلې}} ښکاره کول',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) کتل',
-'searchmenu-legend' => 'د پلټلو خوښنې',
 'searchmenu-exists' => "'''په دې ويکي يو مخ د \"[[:\$1]]\" په نامه دی'''",
 'searchmenu-new' => "'''په دې ويکي د \"[[:\$1]]\" مخ جوړول!'''",
 'searchprofile-articles' => 'مېنځپانگيز مخونه',
@@ -1025,14 +1017,10 @@ $1',
 'searchall' => 'ټول',
 'showingresults' => "دلته لاندې تر {{PLURAL:$1|'''1''' پايله|'''$1''' پايلې}} ښکاره شوي پيل له #'''$2''' شوی.",
 'showingresultsheader' => "د «'''$4'''» لپاره {{PLURAL:$5|له '''$1''' نه تر '''$3''' پايله|له '''$1 نه تر $2''' پايلې، ټولې پايلې '''$3''' }}",
-'nonefound' => "'''يادښت''': يوازې يو څو نوم-تشيالونو په تلواليزه توگه پلټل کېږي.
-د ''ټول:'' مختاړي په کارولو سره به ستاسې د پلټنې لپاره، په ټوله مېنځپانگه کې پلټنه وشي (د خبرواترو، کينډۍ او نورو مخونو په گډون), او يا هم د خپلې خوښې نوم-تشيال د مختاړي په توگه وکاروۍ.",
 'search-nonefound' => 'ستاسې دغوښتنې اړونده پايلې و نه موندل شوې.',
-'powersearch' => 'ژوره پلټنه',
 'powersearch-legend' => 'ژوره پلټنه',
 'powersearch-ns' => 'په نوم-تشيالونو کې پلټنه:',
 'powersearch-redir' => 'مخ گرځونې په لړليک کې اوډل',
-'powersearch-field' => 'پلټنه د',
 'powersearch-togglelabel' => 'نښه کول:',
 'powersearch-toggleall' => 'ټول',
 'powersearch-togglenone' => 'هېڅ',
@@ -1042,8 +1030,6 @@ $1',
 'preferences' => 'غوره توبونه',
 'mypreferences' => 'غوره توبونه',
 'prefs-edits' => 'د سمونو شمېر:',
-'prefsnologin' => 'غونډال کې نه ياست ننوتي',
-'prefsnologintext' => 'د دې لپاره چې خپل غوره توبونه مو وټاکی، نو پکار ده چې لومړی تاسو غونډال کې <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ننوځی]</span>.',
 'changepassword' => 'پټنوم بدلول',
 'prefs-skin' => 'پوښۍ',
 'skin-preview' => 'مخکتنه',
@@ -1065,8 +1051,7 @@ $1',
 'prefs-email' => 'د برېښليک خوښنې',
 'prefs-rendering' => 'ښکارېدنه',
 'saveprefs' => 'خوندي کول',
-'resetprefs' => 'بيا سمول',
-'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول',
+'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول (په ټولو برخو کې)',
 'prefs-editing' => 'سمېدنې کې دی',
 'rows' => 'ليکې:',
 'columns' => 'ستنې:',
@@ -1082,7 +1067,6 @@ $1',
 'localtime' => 'سيمه ايز وخت:',
 'timezoneuseserverdefault' => 'د ويکي تلواليزه بڼه کارول ($1)',
 'timezoneuseoffset' => 'بل (توپير ځانگړی کړی)',
-'timezoneoffset' => 'توپير¹:',
 'servertime' => 'د پالنگر وخت:',
 'guesstimezone' => 'له کتنمل نه ډکول',
 'timezoneregion-africa' => 'افريقا',
@@ -1115,7 +1099,7 @@ $1',
 'yournick' => 'کورنی نوم:',
 'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
 بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
-'yourgender' => 'جنس:',
+'yourgender' => 'څنگه غواړۍ ځان څرگند کړۍ؟',
 'gender-unknown' => 'ناڅرگنده',
 'gender-male' => 'نارينه',
 'gender-female' => 'ښځينه',
@@ -1151,9 +1135,11 @@ $1',
 'userrights-lookup-user' => 'کارن ډلې سمبالول',
 'userrights-user-editname' => 'يو کارن نوم وليکۍ:',
 'editusergroup' => 'کارن ډلې سمول',
+'editinguser' => "د '''[[کارن:$1|$1]]''' کارن رښتې بدلول $2",
 'userrights-editusergroup' => 'کارن ډلې سمول',
 'saveusergroups' => 'کارن ډلې خوندي کول',
 'userrights-groupsmember' => 'غړی د:',
+'userrights-groupsmember-auto' => 'ضمني غړی د:',
 'userrights-groups-help' => 'تاسې هغه ډلې چې همدا کارن يې غړی دی بدلولی شی:
 * يو په نښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب لري.
 * يو نانښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب نلري.
@@ -1263,6 +1249,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 +1390,7 @@ $1',
 'upload_source_file' => '(ستاسو په کمپيوټر کې يوه دوتنه)',
 
 # Special:ListFiles
+'listfiles-summary' => 'همدا ځانگړی مخ ټولې پورته شوې دوتنې ښکاره کوي.',
 'listfiles_search_for' => 'د انځور د نوم لټون:',
 'imgfile' => 'دوتنه',
 'listfiles' => 'د دوتنو لړليک',
@@ -1413,6 +1401,8 @@ $1',
 'listfiles_size' => 'کچه (بايټونه)',
 'listfiles_description' => 'څرگندونه',
 'listfiles_count' => 'بڼې',
+'listfiles-latestversion-yes' => 'هو',
+'listfiles-latestversion-no' => 'نه',
 
 # File description page
 'file-anchor-link' => 'دوتنه',
@@ -1485,6 +1475,7 @@ $1',
 
 # Random page in category
 'randomincategory-selectcategory' => 'يو ناټاکلی مخ له وېشنيزې موندل: $1 $2.',
+'randomincategory-selectcategory-submit' => 'ورځه',
 
 # Random redirect
 'randomredirect' => 'ناټاکلی ورگرځېدنه',
@@ -1566,6 +1557,7 @@ $1',
 'listusers' => 'کارن لړليک',
 'listusers-editsonly' => 'يوازې هغه کارنان چې سمونونه يې کړي ښکاره کول',
 'listusers-creationsort' => 'د جوړېدو د نېټې له مخې اوډل',
+'listusers-desc' => 'مخښکته اوډل',
 'usereditcount' => '{{PLURAL:$1|سمون|سمونونه}}',
 'usercreated' => 'په $1 نېټه په $2 بجو {{GENDER:$3|جوړ شو}}',
 'newpages' => 'نوي مخونه',
@@ -1690,7 +1682,7 @@ $1',
 'emailccme' => 'زما د پيغام يوه بېلگه دې ماته هم برېښليک شي.',
 'emailccsubject' => '$1 ته ستاسو د پيغام لمېسه: $2',
 'emailsent' => 'برېښليک مو ولېږل شو',
-'emailsenttext' => 'ستاسو برېښليکي پيغام ولېږل شو.',
+'emailsenttext' => 'ستاسې برېښليکي پيغام ولېږل شو.',
 'emailuserfooter' => 'دا برېښليک د $1 لخوا $2 ته د {{SITENAME}} په وېبځي کې د "کارن ته برېښليک لېږل" د کړنې په مرسته لېږل شوی.',
 
 # User Messenger
@@ -1716,7 +1708,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 +2322,7 @@ $1',
 'exif-copyright' => 'د رښتو خاوند',
 'exif-colorspace' => 'رنگ تشيال',
 'exif-pixelydimension' => 'د انځور سور',
-'exif-pixelxdimension' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¬Ú«والی',
+'exif-pixelxdimension' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¬Ú¯والی',
 'exif-usercomment' => 'د کارن تبصرې',
 'exif-relatedsoundfile' => 'اړونده غږيزه دوتنه',
 'exif-datetimedigitized' => 'د گڼياليز کېدنې وخت او نېټه',
@@ -2485,10 +2477,6 @@ $1',
 'exif-urgency-low' => 'لږ ($1)',
 'exif-urgency-high' => 'ډېر ($1)',
 
-# External editor support
-'edit-externally' => 'د باندنيو پروګرامونو په کارولو سره دا دوتنه سمول',
-'edit-externally-help' => 'د نورو مالوماتو لپاره [https://www.mediawiki.org/wiki/Manual:External_editors د امستنو لارښوونې] وگورۍ.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ټول',
 'namespacesall' => 'ټول',
@@ -2668,8 +2656,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'ځانگړي مخونه',
-'specialpages-note' => '----
-* نورماله ځانگړي مخونه.
+'specialpages-note' => '* نورماله ځانگړي مخونه.
 * <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>
 * <span class="mw-specialpagecached">رانيولي ځانگړي مخونه (کېدای شي منسوخ شوی وي).</span>',
 'specialpages-group-maintenance' => 'د څارنې راپورونه',
@@ -2783,4 +2770,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 68fd495..8fbd16b 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' ),
@@ -477,7 +477,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta página',
 'qbmyoptions' => 'As minhas páginas',
-'qbspecialpages' => 'Páginas especiais',
 'faq' => 'Perguntas frequentes',
 'faqpage' => 'Project:FAQ',
 
@@ -530,7 +529,7 @@ $messages = array(
 'unprotectthispage' => 'Alterar a proteção desta página',
 'newpage' => 'Página nova',
 'talkpage' => 'Discutir esta página',
-'talkpagelinktext' => 'discussão',
+'talkpagelinktext' => 'Discussão',
 'specialpage' => 'Página especial',
 'personaltools' => 'Ferramentas pessoais',
 'postcomment' => 'Seção nova',
@@ -594,12 +593,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',
@@ -698,9 +695,6 @@ Talvez contenha um ou mais caracteres que não podem ser usados em títulos.',
 'perfcachedts' => "Os seguintes dados encontram-se armazenados na ''cache'' e foram atualizados pela última vez a $1. No máximo {{PLURAL:$4|um resultado está disponível|$4 resultados estão disponíveis}} na ''cache''.",
 'querypage-no-updates' => 'As atualizações estão presentemente desativadas para esta página.
 Por enquanto, os dados aqui presentes não poderão ser atualizados.',
-'wrong_wfQuery_params' => 'Parâmetros incorretos para wfQuery()<br />
-Função: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver código-fonte',
 'viewsource-title' => 'Mostrar código-fonte de $1',
 'actionthrottled' => 'Operação limitada',
@@ -728,7 +722,8 @@ 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
 'virus-badscanner' => "Má configuração: antivírus desconhecido: ''$1''",
@@ -775,7 +770,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.
@@ -849,9 +844,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.
@@ -1300,7 +1295,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',
@@ -1309,8 +1304,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:',
@@ -1403,12 +1398,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Resultados da pesquisa',
 'searchresults-title' => 'Resultados da pesquisa de "$1"',
-'searchresulttext' => 'Para mais informações sobre pesquisas na {{SITENAME}}, consulte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Pesquisou \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páginas iniciadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páginas que apontam para "$1"]])',
-'searchsubtitleinvalid' => 'Pesquisou "$1"',
 'toomanymatches' => 'Foram devolvidos demasiados resultados; tente outro termo de pesquisa, por favor',
 'titlematches' => 'Resultados no título das páginas',
-'notitlematches' => 'Nenhum título de página coincide com o termo pesquisado',
 'textmatches' => 'Resultados no conteúdo das páginas',
 'notextmatches' => 'Não foi possível localizar, no conteúdo das páginas, o termo pesquisado',
 'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -1417,10 +1408,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|próximo|próximos}} $1 {{PLURAL:$1|resultado|resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opções de pesquisa',
 'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''Crie a página \"[[:\$1]]\" nesta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegar as páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
 'searchprofile-project' => 'Páginas de ajuda e de projeto',
 'searchprofile-images' => 'Multimédia',
@@ -1448,14 +1437,10 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "{{PLURAL:$1|É apresentado '''um''' resultado|São apresentados até '''$1''' resultados}} abaixo{{PLURAL:$1||, começando pelo '''$2'''º}}.",
 'showingresultsnum' => "{{PLURAL:$3|É apresentado '''um''' resultado|São apresentados '''$3''' resultados}} abaixo{{PLURAL:$3||, começando pelo '''$2'''º}}.",
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1–$2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': Por omissão, só alguns dos espaços nominais são pesquisados.
-Tente usar o prefixo ''all:'' para pesquisar todo o conteúdo (incluindo páginas de discussão, predefinições, etc.), ou use como prefixo o espaço nominal desejado.",
 'search-nonefound' => 'A pesquisa não produziu resultados.',
-'powersearch' => 'Pesquisa avançada',
 'powersearch-legend' => 'Pesquisa avançada',
 'powersearch-ns' => 'Pesquisar nos espaços nominais:',
 'powersearch-redir' => 'Listar redirecionamentos',
-'powersearch-field' => 'Pesquisar',
 'powersearch-togglelabel' => 'Marcar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Nenhum',
@@ -1469,8 +1454,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',
-'prefsnologintext' => 'Precisa de estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticado]</span> para definir as suas preferências.',
+'prefsnologintext2' => 'Por favor, precisa de $1 para definir as suas preferências.',
 'changepassword' => 'Alterar palavra-chave',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Antever tema',
@@ -1494,7 +1478,6 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
 'prefs-email' => 'Opções do correio electrónico',
 'prefs-rendering' => 'Aparência',
 'saveprefs' => 'Gravar',
-'resetprefs' => 'Eliminar as alterações que não foram gravadas',
 'restoreprefs' => 'Repor todas as configurações padrão (em todas as secções)',
 'prefs-editing' => 'Edição',
 'rows' => 'Linhas:',
@@ -1515,7 +1498,6 @@ Qualquer pessoa que conheça a chave será capaz de ler a sua lista de páginas
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar padrão da wiki ($1)',
 'timezoneuseoffset' => 'Outro (especificar diferença)',
-'timezoneoffset' => 'Diferença horária¹:',
 'servertime' => 'Hora do servidor:',
 'guesstimezone' => 'Preencher a partir do browser',
 'timezoneregion-africa' => 'África',
@@ -1771,6 +1753,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',
@@ -2278,10 +2261,8 @@ Agora redirecciona para [[$2]].',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Apenas proteções indefinidas',
 'protectedpages-cascade' => 'Apenas proteções em cascata',
-'protectedpagestext' => 'As seguintes páginas estão protegidas contra edição ou movimentação',
 'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
 'protectedtitles' => 'Títulos protegidos',
-'protectedtitlestext' => 'Os títulos a seguir encontram-se protegidos contra criação',
 'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
 'listusers' => 'Utilizadores',
 'listusers-editsonly' => 'Mostrar apenas utilizadores com edições',
@@ -2503,16 +2484,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 +3316,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',
@@ -3800,10 +3781,6 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridade definida pelo utilizador ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este ficheiro utilizando uma aplicação externa',
-'edit-externally-help' => '(Consulte as [https://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para mais informações)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todas',
 'namespacesall' => 'todos',
@@ -4035,8 +4012,8 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiais',
-'specialpages-note' => '----
-* Páginas especiais normais.
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Páginas especiais normais.
 * <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
 'specialpages-group-maintenance' => 'Relatórios de manutenção',
 'specialpages-group-other' => 'Outras páginas especiais',
@@ -4243,4 +4220,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 a7a93fa..057b098 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)',
@@ -485,7 +483,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta página',
 'qbmyoptions' => 'Minhas páginas',
-'qbspecialpages' => 'Páginas especiais',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -602,8 +599,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}}',
@@ -705,9 +700,6 @@ Talvez contenha um ou mais caracteres que não podem ser usados em títulos.',
 'perfcached' => "Os seguintes dados encontram-se armazenados na ''cache'' e podem não estar atualizados. No máximo {{PLURAL:$1|um resultado está disponível|$1 resultados estão disponíveis}} na ''cache''.",
 'perfcachedts' => "Os seguintes dados encontram-se armazenados no ''cache'' e foram atualizados as $1. No máximo {{PLURAL:$4|um resultado está disponível|$4 resultados estão disponíveis}} no ''cache''.",
 'querypage-no-updates' => 'Momentaneamente as atualizações para esta página estão desativadas. Por enquanto, os dados aqui presentes não poderão ser atualizados.',
-'wrong_wfQuery_params' => 'Parâmetros incorretos para wfQuery()<br />
-Função: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver código-fonte',
 'viewsource-title' => 'Exibir código-fonte para $1',
 'actionthrottled' => 'Ação controlada',
@@ -787,7 +779,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 +1292,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:',
@@ -1396,12 +1388,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Resultados da pesquisa',
 'searchresults-title' => 'Resultados da pesquisa por "$1"',
-'searchresulttext' => 'Para mais informações de como pesquisar na {{SITENAME}}, consulte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Você pesquisou por \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páginas iniciadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páginas que apontam para "$1"]])',
-'searchsubtitleinvalid' => 'Você pesquisou por "$1"',
 'toomanymatches' => 'Foram retornados muitos resultados. Por favor, tente um filtro de pesquisa diferente',
 'titlematches' => 'Resultados nos títulos das páginas',
-'notitlematches' => 'Nenhum título de página coincide',
 'textmatches' => 'Resultados nos textos das páginas',
 'notextmatches' => 'Não foi possível localizar, no conteúdo das páginas, o termo pesquisado',
 'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -1410,10 +1398,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|próximo|próximos}} $1 {{PLURAL:$1|resultado|resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opções de pesquisa',
 'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''Criar a página \"[[:\$1|\$1]]\" nesta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue pelas páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
 'searchprofile-project' => 'Ajuda e páginas de projeto',
 'searchprofile-images' => 'Multimídia',
@@ -1441,14 +1427,10 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "A seguir {{PLURAL:$1|é mostrado '''um''' resultado|são mostrados até '''$1''' resultados}}, iniciando no '''$2'''º.",
 'showingresultsnum' => "A seguir {{PLURAL:$3|é mostrado '''um''' resultado|são mostrados '''$3''' resultados}}, iniciando com o '''$2'''º.",
 'showingresultsheader' => "{{PLURAL:$5|Resulado '''$1''' de '''$3'''|Resultados '''$1 - $2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': apenas alguns espaços nominais são pesquisados por padrão.
-Tente utilizar o prefixo ''all:'' em sua busca, para pesquisar por todos os conteúdos deste wiki (inclusive páginas de discussão, predefinições etc), ou mesmo, utilizando o espaço nominal desejado como prefixo.",
 'search-nonefound' => 'Não há resultados que correspondam à consulta.',
-'powersearch' => 'Pesquisa avançada',
 'powersearch-legend' => 'Pesquisa avançada',
 'powersearch-ns' => 'Pesquisar nos espaços nominais:',
 'powersearch-redir' => 'Listar redirecionamentos',
-'powersearch-field' => 'Pesquisar',
 'powersearch-togglelabel' => 'Selecionar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Nenhum',
@@ -1462,8 +1444,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',
-'prefsnologintext' => 'É necessário estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticado]</span> para definir as suas preferências.',
 'changepassword' => 'Alterar senha',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Pré-visualização',
@@ -1487,7 +1467,6 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'prefs-email' => 'Opções de email',
 'prefs-rendering' => 'Aparência',
 'saveprefs' => 'Salvar',
-'resetprefs' => 'Eliminar as alterações não-salvas',
 'restoreprefs' => 'Restaurar todas as configurações padrão (em todas as seções)',
 'prefs-editing' => 'Opções de edição',
 'rows' => 'Linhas:',
@@ -1508,7 +1487,6 @@ Qualquer pessoa que descobrir esta senha será capaz de ler sua lista, então n
 'localtime' => 'Horário local:',
 'timezoneuseserverdefault' => 'Utilizar padrão do wiki ($1)',
 'timezoneuseoffset' => 'Outro (especifique diferença horária)',
-'timezoneoffset' => 'Diferença horária¹',
 'servertime' => 'Horário do servidor:',
 'guesstimezone' => 'Preencher a partir do navegador',
 'timezoneregion-africa' => 'África',
@@ -1762,6 +1740,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',
@@ -2272,10 +2251,8 @@ Entradas <del>riscadas</del> foram resolvidas.',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Proteções infinitas apenas',
 'protectedpages-cascade' => 'Apenas proteções progressivas',
-'protectedpagestext' => 'As seguintes páginas encontram-se protegidas contra edições ou movimentações',
 'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
 'protectedtitles' => 'Títulos protegidos',
-'protectedtitlestext' => 'Os títulos a seguir encontram-se protegidos contra criação',
 'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
 'listusers' => 'Lista de usuários',
 'listusers-editsonly' => 'Mostrar apenas usuários com edições',
@@ -3779,10 +3756,6 @@ Por padrão, outros campos estarão ocultos.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridade definida pelo usuário ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este arquivo a partir de um programa externo',
-'edit-externally-help' => '(Consulte as [https://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para maiores informações)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todas',
 'namespacesall' => 'todos',
@@ -4011,8 +3984,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiais',
-'specialpages-note' => '----
-* Páginas especiais normais.
+'specialpages-note' => '* Páginas especiais normais.
 * <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
 'specialpages-group-maintenance' => 'Relatórios de manutenção',
 'specialpages-group-other' => 'Outras páginas especiais',
@@ -4226,4 +4198,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 f24a02b..dd6f7b4 100644 (file)
  * @author SPQRobin
  * @author Sanbec
  * @author Sborsody
+ * @author Scimonster
  * @author Se4598
  * @author Seb35
  * @author Sherbrooke
@@ -482,7 +483,6 @@ This can also appear in the credits page if the credits feature is enabled,for e
 {{Identical|This page}}',
 'qbmyoptions' => 'Heading in the Cologne Blue skin user menu containing links to user (talk) page, preferences, watchlist, etc.
 {{Identical|My pages}}',
-'qbspecialpages' => '{{Identical|Special page}}',
 'faq' => "FAQ is short for ''frequently asked questions''.
 {{Identical|FAQ}}",
 'faqpage' => '{{doc-important|Do not translate <code>Project:</code> part.}}
@@ -813,32 +813,21 @@ 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:
 * $1 - a link back to the current page: {{FULLURL:{{FULLPAGENAME}}}}',
 'youhavenewmessages' => 'The yellow message appearing when someone edited your user talk page.
 
-The format is: "{{int:youhavenewmessages| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]] |[[MediaWiki:Newmessagesdifflink/{{SUBPAGENAME}}|{{int:newmessagesdifflink}}]]}}"
+The format is: "{{int:youhavenewmessages| [[MediaWiki:Newmessageslinkplural/{{SUBPAGENAME}}|{{int:newmessageslinkplural}}]] |[[MediaWiki:Newmessagesdifflinkplural/{{SUBPAGENAME}}|{{int:newmessagesdifflinkplural}}]]}}"
 
 Parameters:
-* $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslink}}
-* $2 - a link points to new messages diff. Its text is {{msg-mw|Newmessagesdifflink}}
+* $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslinkplural}}
+* $2 - a link points to new messages diff. Its text is {{msg-mw|Newmessagesdifflinkplural}}
 See also:
 * {{msg-mw|Youhavenewmessagesmanyusers}}',
-'newmessageslink' => 'This is the first link displayed in an orange rectangle when a user gets a message on their talk page.
-
-Used as <code>$1</code> in message {{msg-mw|Youhavenewmessages}}.
-{{Identical|New messages}}',
-'newmessagesdifflink' => 'This is the second link displayed in an orange rectangle when a user gets a message on his talk page.
-
-Used as <code>$2</code> in message {{msg-mw|Youhavenewmessages}}.
-
-See also:
-* {{msg-mw|Newmessagesdifflinkplural}}
-{{Identical|Last change}}',
 'youhavenewmessagesfromusers' => 'New talk indicator message: the message appearing when someone edited your user talk page. Parameters:
 * $1 - defined as {{msg-mw|newmessageslinkplural}}
 * $2 - defined as {{msg-mw|newmessagesdifflinkplural}}
@@ -852,28 +841,30 @@ Parameters:
 * $2 - {{msg-mw|newmessagesdifflinkplural}}
 See also:
 * {{msg-mw|Youhavenewmessages}}',
-'newmessageslinkplural' => "Like {{msg-mw|Newmessageslink}} but supporting pluralization.
+'newmessageslinkplural' => "This is the first link displayed in an orange rectangle when a user gets a message on their talk page.
 
-Used as <code>$1</code> in {{msg-mw|Youhavenewmessagesfromusers}}.
+Used as <code>$1</code> in messages {{msg-mw|youhavenewmessagesfromusers}}, {{msg-mw|youhavenewmessagesmanyusers}}, {{msg-mw|youhavenewmessages}}.
 
 Parameters:
-* $1 - 1 or 2:
+* $1 - 1 or 999:
 ** 1 - if there was '''one''' new edit since the last time the user has seen their talk page
-** 2 - if there was '''more than one''' new edit since the last time the user has seen their talk page
+** 999 - if there was '''more than one''' new edit since the last time the user has seen their talk page
 {{Identical|New messages}}",
-'newmessagesdifflinkplural' => 'Parameters:
-* $1 - the number of new edits since the last time the user has seen their talk page: it should be used only for correct [[plural]] as in the source text, as the exact number is not relevant.
+'newmessagesdifflinkplural' => "This is the second link displayed in an orange rectangle when a user gets a message on his talk page.
 
-Like {{msg-mw|Newmessagesdifflink}} but supporting pluralization.
+Used as <code>$2</code> in messages {{msg-mw|youhavenewmessagesfromusers}}, {{msg-mw|youhavenewmessagesmanyusers}}, {{msg-mw|youhavenewmessages}}.
 
-Used as <code>$2</code> in message {{msg-mw|Youhavenewmessagesfromusers}}.
-{{Identical|Last change}}',
+Parameters:
+* $1 - 1 or 999:
+** 1 - if there was '''one''' new edit since the last time the user has seen their talk page
+** 999 - if there was '''more than one''' new edit since the last time the user has seen their talk page
+{{Identical|Last change}}",
 'youhavenewmessagesmulti' => 'The alternative of {{msg-mw|youhavenewmessages}} as used on wikis with a special setup so they can receive the "new message" notice on other wikis as well. Used on [http://www.wikia.com/ Wikia].
 
-The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]]}}"
+The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslinkplural/{{SUBPAGENAME}}|{{int:newmessageslinkplural}}]]}}"
 
 Parameters:
-* $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslink}}',
+* $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslinkplural}}',
 'editsection' => 'Display name of link to edit a section on a content page. Example: [{{MediaWiki:Editsection}}].
 
 {{Identical|Edit}}',
@@ -1162,9 +1153,6 @@ Parameters:
 * $3 - a time (optional)
 * $4 - the cut off limit for cached results ($wgQueryCacheLimit). If there are more then this many results for the query, only the first $4 of those will be listed on the page. Usually $4 is about 1000.',
 'querypage-no-updates' => 'Text on some special pages, e.g. [[Special:FewestRevisions]].',
-'wrong_wfQuery_params' => 'Used as error message. Parameters:
-* $1 - function name
-* $2 - query',
 'viewsource' => 'The text displayed in place of the {{msg-mw|Edit}} tab when the user has no permission to edit the page.
 
 See also:
@@ -1447,7 +1435,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.",
@@ -1491,7 +1479,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.
 
@@ -1850,7 +1839,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}}
@@ -1906,8 +1895,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.',
@@ -2053,7 +2044,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:
@@ -2148,8 +2141,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:
@@ -2264,10 +2259,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.
@@ -2514,30 +2513,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]]
@@ -2751,8 +2757,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.
@@ -2762,25 +2769,10 @@ Example: [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with inv
 
 Parameters:
 * $1 - the search term',
-'searchresulttext' => '{{doc-important|Do not translate <code><nowiki>[[{{MediaWiki:Helppage}}|{{int:help}}]]</nowiki></code>.}}
-See also:
-* {{msg-mw|Helppage}}
-* {{msg-mw|Help}}',
-'searchsubtitle' => 'Refers to {{msg-mw|Pipe-separator}}.
-
-Parameters:
-* $1 - search term
-See also:
-* {{msg-mw|Searchsubtitleinvalid}}',
-'searchsubtitleinvalid' => 'Parameters:
-* $1 - search term
-See also:
-* {{msg-mw|Searchsubtitle}}',
 'toomanymatches' => 'Used as section header in [[Special:Search]], when there are too many hits.',
 'titlematches' => 'Used as section header in [[Special:Search]].
 
 This message is followed by search results.',
-'notitlematches' => 'Header of results page after a search for a title for which no page exists',
 'textmatches' => 'When displaying search results',
 'notextmatches' => 'Error message when there are no results',
 'prevn' => "This is part of the navigation message on the top and bottom of Special pages (lists of things in alphabetical order, i.e. the '[[Special:Categories]]' page), where it is used as the first argument of {{msg-mw|Viewprevnext}}.
@@ -2817,7 +2809,6 @@ For Special pages, the navigation bar is prefixed by "({{msg-mw|Page first}} | {
 Viewprevnext is sometimes preceded by the {{msg-mw|Showingresults}} or {{msg-mw|Showingresultsnum}} message (for Special pages) or by the {{msg-mw|Linkshere}} message (for Whatlinkshere pages).
 
 Refers to {{msg-mw|Pipe-separator}}.',
-'searchmenu-legend' => '{{Identical|Search options}}',
 'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).
 
 Parameters:
@@ -2826,9 +2817,6 @@ Parameters:
 
 Parameters:
 * $1 - page title',
-'searchmenu-prefix' => '{{doc-important|Do not translate "Special:PrefixIndex"}}
-Parameters:
-* $1 - prefix string',
 'searchprofile-articles' => "A quick link in the advanced search box on [[Special:Search]]. Clicking on this link starts a search in the content pages of the wiki.
 
 A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].
@@ -2930,18 +2918,12 @@ See also:
 * $3 - total number of results
 * $4 - the search term
 * $5 - number of results',
-'nonefound' => 'This message appears on the search results page if no results are found.
-{{doc-important|Do not translate "all:".}}',
 'search-nonefound' => 'Message shown when a search returned no results (when using the default MediaWiki search engine).',
-'powersearch' => 'Verb. Text of search button at the bottom of [[Special:Search]], for searching in selected namespaces.
-
-{{Identical|Advanced search}}',
 'powersearch-legend' => 'Advanced search
 
 {{Identical|Advanced search}}',
 'powersearch-ns' => 'Used in the extended search form at [[Special:Search]]',
 'powersearch-redir' => 'Used in the extended search form at [[Special:Search]]',
-'powersearch-field' => 'Used in the extended search form at [[Special:Search]]',
 'powersearch-togglelabel' => 'Used in [{{canonicalurl:Special:Search|advanced=1}} Advanced search]. Synonym: "Select" as verb.
 {{Identical|Check}}',
 'powersearch-toggleall' => '"All" refers to namespaces. It is used in Advanced search: {{canonicalurl:Special:Search|advanced=1}}
@@ -2953,8 +2935,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.
@@ -2967,7 +2949,6 @@ See also:
 * {{msg-mw|Tooltip-pt-preferences}}
 {{Identical|Preferences}}',
 'prefs-edits' => 'In user preferences.',
-'prefsnologin' => '{{Identical|Not logged in}}',
 'prefsnologintext2' => 'Parameters:
 * $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
 'changepassword' => "Section heading on [[Special:Preferences]], tab 'User profile'.
@@ -3028,7 +3009,6 @@ See also:
 * {{msg-mw|Accesskey-preferences-save}}
 * {{msg-mw|Tooltip-preferences-save}}
 {{Identical|Save}}',
-'resetprefs' => 'Button for resetting changes in the preferences page.',
 'restoreprefs' => 'Used as link text in [[Special:Preferences]]. The link points to [[Special:Preferences/reset]] which shows the "Restore all default settings" form.
 
 Also used as label for the Submit button in [[Special:Preferences/reset]].',
@@ -3039,7 +3019,7 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
 {{Identical|Row}}',
 'columns' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset.
 {{Identical|Column}}',
-'searchresultshead' => 'This is the label of the tab in [[Special:Preferences|my preferences]] which contains options for searching the wiki.
+'searchresultshead' => 'Replaced by {{msg-mw|prefs-searchoptions}}, though may still be used in some extensions. DEPRECATED.
 
 {{Identical|Search}}',
 'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
@@ -3064,7 +3044,6 @@ This option lets your time zone setting use the one that is used on the wiki (of
 Parameters:
 * $1 - timezone name, or timezone offset (in "%+03d:%02d" format)',
 'timezoneuseoffset' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.',
-'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
 'servertime' => 'Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].',
 'guesstimezone' => 'Option to fill in the timezone from the browser setting',
 'timezoneregion-africa' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
@@ -3120,8 +3099,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:
@@ -3273,8 +3252,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
@@ -3595,10 +3574,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]].
@@ -3631,22 +3618,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''\".
@@ -3837,8 +3824,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:
@@ -4164,11 +4151,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}}
@@ -4207,22 +4193,22 @@ See also:
 
 # File backend
 'backend-fail-stream' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-backup' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-notexists' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-hashes' => 'Definition of "[[w:en:Hash_function|hashes]]".',
 'backend-fail-notsame' => 'Parametreler:
 * $1 bir dosya ismi.',
 'backend-fail-invalidpath' => 'Parameters:
-* $1 is a storage path.',
+* $1 - a storage path',
 'backend-fail-delete' => 'Parameters:
-* $1 is a file path.',
+* $1 - a file path',
 'backend-fail-describe' => 'Parameters:
-* $1 is a file path.',
+* $1 - a file path',
 'backend-fail-alreadyexists' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-store' => 'Parameters:
 * $1 - a filename
 * $2 - a storage path',
@@ -4242,7 +4228,7 @@ See also:
 * $1 - filename
 {{Related|Backend-fail}}',
 'backend-fail-create' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-maxsize' => 'Parameters:
 * $1 - destination storage path
 * $2 - max file size (in bytes)',
@@ -4274,7 +4260,7 @@ Parameters:
 
 A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
 'backend-fail-usable' => 'Parameters:
-* $1 is the file name, including the path, formatted for the storage backend used',
+* $1 - the file name, including the path, formatted for the storage backend used',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Parameters:
@@ -4940,10 +4926,8 @@ See the following search results:
 'protectedpages' => '{{doc-special|ProtectedPages}}',
 'protectedpages-indef' => 'Option in [[Special:ProtectedPages]]',
 'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
-'protectedpagestext' => 'Shown on top of [[Special:ProtectedPages]]',
 'protectedpagesempty' => 'Used in [[Special:ProtectedPages]], when there are no protected pages with the specified parameters.',
 'protectedtitles' => '{{doc-special|ProtectedTitles}}',
-'protectedtitlestext' => 'Shown on top of list of titles on [[Special:ProtectedTitles]]. If the list is empty the message [[MediaWiki:Protectedtitlesempty]] appears instead of this. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
 'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
 'listusers' => '{{doc-special|ListUsers}}',
 'listusers-editsonly' => 'Option in [[Special:ListUsers]].',
@@ -5998,15 +5982,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]].
@@ -6530,7 +6516,8 @@ See also:
 * {{msg-mw|sp-contributions-logs}}
 * {{msg-mw|sp-contributions-deleted}}
 * {{msg-mw|sp-contributions-userrights}}',
-'contribslink' => 'Short for "contributions". Used as display name for a link to user contributions on history pages, [[Special:RecentChanges]], [[Special:Watchlist]], etc.',
+'contribslink' => 'Short for "contributions". Used as display name for a link to user contributions on history pages, [[Special:RecentChanges]], [[Special:Watchlist]], etc.
+{{Identical|Contribution}}',
 'emaillink' => 'Used as display name for a link to send an e-mail to a user in the user tool links. Example: "(Talk | contribs | block | send e-mail)".
 
 {{Identical|E-mail}}',
@@ -9427,11 +9414,6 @@ Parameters:
 * $1 - numeric priority. Most specs define 0 and 9 to either be reserved or not allowed. However the exiftool documentation defines 0 to be reserved and 9 to be user-defined priority.
 {{Related|Exif-urgency}}',
 
-# External editor support
-'edit-externally' => 'Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
-'edit-externally-help' => '{{doc-important|Please leave the link "<code>https://www.mediawiki.org/wiki/Manual:External_editors</code>" exactly as it is.}}
-Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Appears on [[Special:Watchlist]].
 
@@ -10025,6 +10007,8 @@ See also:
 * {{msg-mw|Accesskey-t-specialpages}}
 * {{msg-mw|Tooltip-t-specialpages}}
 {{Identical|Special page}}',
+'specialpages-note-top' => 'Heading for {{msg-mw|specialpages-note}}.
+{{Identical|Legend}}',
 'specialpages-note' => 'Footer note for the [[Special:SpecialPages]] page',
 'specialpages-group-maintenance' => '{{doc-special-group|like=[[Special:DoubleRedirects]], [[Special:LonelyPages]] and [[Special:WantedPages]]}}',
 'specialpages-group-other' => '{{doc-special-group|like=[[Special:AdminLinks]] and [[Special:BookSources]]}}',
@@ -10531,4 +10515,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 08ebf75..52bf526 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' ),
@@ -423,7 +421,6 @@ $messages = array(
 'qbedit' => "Llamk'apuy",
 'qbpageoptions' => "P'anqap akllanankuna",
 'qbmyoptions' => 'Akllanaykuna',
-'qbspecialpages' => "Sapaq p'anqakuna",
 'faq' => 'Pasaq tapuykuna',
 'faqpage' => 'Project:Pasaq tapuykuna',
 
@@ -539,8 +536,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}}',
@@ -640,9 +635,6 @@ Manam nirqanchu imarayku.",
 'perfcached' => "Kay qatiq willakunaqa ''cache'' nisqa pakasqa hallch'apim kachkan, chayrayku manañachá musuqchasqachu. {{PLURAL:$1|Huklla|$1-lla}} taripasqam pakasqa hallch'api aypalla kachkan, manam aswanchu.",
 'perfcachedts' => "Kay willakunaqa hallch'asqam. Qhipaq musuqchasqaqa $1 karqan. {{PLURAL:$4|Huklla|$4-lla}} taripasqam pakasqa hallch'api aypalla kachkan, manam aswanchu.",
 'querypage-no-updates' => "Kay p'anqata musuqchayqa manam atichkanchu. Kunanqa kaypi willakuna manam musuqchasqachu kanqa.",
-'wrong_wfQuery_params' => 'Kaypa pantasqa kuskanachina tupunkuna: wfQuery()<br />
-Ruray paqtachi: $1<br />
-Tapuna: $2',
 'viewsource' => 'Pukyu qillqata qhaway',
 'viewsource-title' => "$1 sutiyuq p'anqap pukyu qillqanta qhaway",
 'actionthrottled' => "Rurayniykiqa hark'asqam",
@@ -1298,12 +1290,8 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 # Search results
 'searchresults' => 'Maskaymanta tarisqakuna',
 'searchresults-title' => '"$1" nisqapaq maskaspa taripasqakuna',
-'searchresulttext' => '{{SITENAME}}pi maskaymanta astawan ñawirinaykipaqqa, [[{{MediaWiki:Helppage}}|{{int:help}}]] nisqapi qhaway.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' nisqatam maskanki ([[Special:Prefixindex/$1|tukuy "$1" nisqawan qallariq p\'anqakuna]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tukuy "$1" nisqaman t\'inkimuq p\'anqakuna]])',
-'searchsubtitleinvalid' => '"$1" nisqatam maskanki',
 'toomanymatches' => 'Nisyu taripasqakunam kutisqa, ama hina kaspa, huk taripanawan ruraykachay',
 'titlematches' => "P'anqakunap sutinkunapi tarisqa",
-'notitlematches' => "Manam ima p'anqakunap sutinkunapipas tarisqachu",
 'textmatches' => "P'anqakunap qillqankunapi tarisqa",
 'notextmatches' => "Manam ima p'anqakunap qillqankunapipas tarisqachu",
 'prevn' => '{{PLURAL:$1|$1}} ñawpaq',
@@ -1312,10 +1300,8 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'nextn-title' => 'Qatiq $1 {{PLURAL:$1|taripasqa|taripasqakuna}}',
 'shown-title' => "Huk p'anqapi $1 {{PLURAL:$1|taripasqata|taripasqakunata}} rikuchiy",
 'viewprevnext' => 'Qhaway ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Maskaypaq akllanakuna',
 'searchmenu-exists' => "'''Kay wikipiqa «[[$1]]» sutiyuq p'anqam kachkan'''",
 'searchmenu-new' => "'''Kay wikipi \"[[:\$1]]\" sutiyuq p'anqata kamariy!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Kay ñawpa k'askaqchayuq huk p'anqakunata maskay]]",
 'searchprofile-articles' => "Samiq p'anqakuna",
 'searchprofile-project' => "Yanapanapaq ruraykamaypaqpas p'anqakuna",
 'searchprofile-images' => 'Multimidya',
@@ -1343,13 +1329,10 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'showingresults' => "Qhipanpiqa rikuchkanki {{PLURAL:$1|'''1''' tarisqatam|'''$1'''-kama tarisqakunatam}}, '''$2''' huchhawan qallarispa.",
 'showingresultsnum' => "Qhipanpiqa rikuchkanki {{PLURAL:$3|'''1''' tarisqatam|'''$3''' tarisqakunatam}}, '''$2''' yupaywan qallarispa.",
 'showingresultsheader' => "{{PLURAL:$5|Taripasqa: '''$1''', '''$3'''-manta|Taripasqa: '''$1 - $2''', '''$3'''-manta}}, '''$4'''-paq",
-'nonefound' => "'''Musyay''': Kikinmantaqa huk suti k'itikunallapim maskanki, manataqmi tukuykunapichu. Ñawpaqninpi ''all:'' nisqata qillqaspaykiqa, tukuy suti k'itikunapim maskanki (rimachinakunapipas, plantillakunapipas). Huk sapaq suti k'itipi maskayta munaspaykiqa, chay k'itip sutinta k'askaq hina ñawpaqninpi qillqamuy.",
 'search-nonefound' => 'Maskaypaq kay hina kachun nisqakamaqa manam kanchu taripasqakuna.',
-'powersearch' => 'Maskay',
 'powersearch-legend' => 'Ñawparikusqa maskay',
 'powersearch-ns' => "Kay suti k'itikunapi maskay:",
 'powersearch-redir' => 'Pusapunakunata rikuchiy',
-'powersearch-field' => 'Kayta maskay:',
 'powersearch-togglelabel' => 'Llanchiy:',
 'powersearch-toggleall' => 'Tukuy',
 'powersearch-togglenone' => 'Mana imapas',
@@ -1361,8 +1344,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'preferences' => 'Allinkachinakuna',
 'mypreferences' => 'Allinkachinaykuna',
 'prefs-edits' => 'Hukchasqakunap yupaynin:',
-'prefsnologin' => 'Manam yaykurqankichu',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Yaykunaykim]</span> tiyan allinkachinaykikunata hukchanaykipaq.',
 'changepassword' => 'Yaykuna rimata hukchay',
 'prefs-skin' => 'Qara',
 'skin-preview' => 'Ñawpaqta qhaway',
@@ -1386,7 +1367,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'prefs-email' => 'E-chaskipaq akllanakuna',
 'prefs-rendering' => "Rikch'akuynin",
 'saveprefs' => 'Allinkachinakunata waqaychay',
-'resetprefs' => 'Mana waqaychasqa hukchasqakunaman ama niy',
 'restoreprefs' => 'Tukuy kikinmanta allinkachinakunata kutichimuy (tukuy rakirikunapi)',
 'prefs-editing' => "Llamk'apusqa",
 'rows' => 'Sinrukuna:',
@@ -1404,7 +1384,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'localtime' => 'Tiyaylla pacha:',
 'timezoneuseserverdefault' => "Wikip kikinmanta pachanta llamk'achiy ($1)",
 'timezoneuseoffset' => 'Huk pacha (pachap wakin kayninta willay)',
-'timezoneoffset' => 'Huk kay¹:',
 'servertime' => 'Sirwiqpa pachan:',
 'guesstimezone' => 'Pacha suyuta chaskimuy',
 'timezoneregion-africa' => 'Aphrika',
@@ -1654,6 +1633,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',
@@ -2123,10 +2103,8 @@ Ama hina kaspa, [$2 willañiqi ch'uyanchana p'anqata] qhaway astawan willachikun
 'protectedpages' => "Amachasqa p'anqakuna",
 'protectedpages-indef' => 'Wiñaypaq amachasqakuna chaylla',
 'protectedpages-cascade' => 'Phaqchallallapi amachay',
-'protectedpagestext' => "Kay p'anqakunaqa llamk'apuymanta icha astaymanta amachasqam",
 'protectedpagesempty' => "Kay kuskanachina tupukunawan amachasqa p'anqakunaqa manam kachkanchu.",
 'protectedtitles' => "Amachasqa p'anqa sutikuna",
-'protectedtitlestext' => "Kay sutikunayuq p'anqakunaqa kamarinamanta hark'asqam",
 'protectedtitlesempty' => "Manam kachkanchu kay kuskanachina tupukunawan amachasqa p'anqakuna.",
 'listusers' => 'Tukuy ruraqkuna',
 'listusers-editsonly' => "Llamk'apusqayuq ruraqkunallata rikuchiy",
@@ -3594,10 +3572,6 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
 'exif-urgency-high' => 'Hatun ($1)',
 'exif-urgency-other' => 'Ruraqpa churasqan ñawpaqchay ($1)',
 
-# External editor support
-'edit-externally' => "Kay willañiqita hawa rurana wakichiwan llamk'apuy",
-'edit-externally-help' => 'Astawan willasunaykipaqqa [https://www.mediawiki.org/wiki/Manual:External_editors tiyachina yanapata] (inlish simipi) ñawiriy.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'lliw',
 'namespacesall' => 'tukuy',
@@ -3806,8 +3780,7 @@ MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIY
 
 # Special:SpecialPages
 'specialpages' => "Sapaq p'anqakuna",
-'specialpages-note' => '----
-* Sapsipaq sapaq p\'anqakuna.
+'specialpages-note' => '* Sapsipaq sapaq p\'anqakuna.
 * <span class="mw-specialpagerestricted">Sapaqkunallapaq sapaq p\'anqakuna.</span>',
 'specialpages-group-maintenance' => 'Hatalliy willaykuna',
 'specialpages-group-other' => "Huk sapaq p'anqakuna",
@@ -4010,4 +3983,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..ffd8d84 100644 (file)
@@ -163,7 +163,6 @@ $messages = array(
 'qbedit' => 'Killkana',
 'qbpageoptions' => 'Pankapak akllanakuna',
 'qbmyoptions' => 'Ñukapak pankakuna',
-'qbspecialpages' => 'mans shukkunashina pankakuna',
 'faq' => 'Ashtawan tapushkaka tapunakuna',
 'faqpage' => 'Project:ashta ministishka tapuykuna',
 
@@ -277,8 +276,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',
@@ -467,10 +464,6 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 # Search results
 'searchresults' => 'Maskaymanta pankakuna',
 'searchresults-title' => '"$1" maskaymanta pankakuna',
-'searchresulttext' => '{{SITENAME}}pi maskaymanta ashtawan yachaykunata rikunkapa, [[{{MediaWiki:Helppage}}|{{int:help}}]] rikuripay',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' pankata maskashkanki ([[Special:Prefixindex/$1|tukuy "$1" killkaywan kallarik pankakuna]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tukuy "$1" killkaywan kallarik pankakuna]])',
-'searchsubtitleinvalid' => '"$1"-ta maskashkapanki',
-'notitlematches' => 'Mana shina pankata tiyanchu',
 'notextmatches' => 'Mana pankaka kay rimaykunata charin',
 'prevn' => '{{PLURAL:$1|$1}} ñawpak',
 'nextn' => '{{PLURAL:$1|$1}} katik',
@@ -501,14 +494,10 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 'searchrelated' => 'tinkishka',
 'searchall' => 'tukuy',
 'showingresultsheader' => "{{PLURAL:$5|Maskashka panka: '''$1''', '''$3'''-manta|Maskashka pankakuna: '''$1 - $2''', '''$3'''-manta}}, '''$4''' maskashpaka",
-'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki. 
-Icha ''all:'' rimaywan (icha shuk shutisuyupa rimaywan) kikinpa killkata kallarikpika taripankimi.",
 'search-nonefound' => 'Kikinka maskashka rimaykunaka mana tiyanchu.',
-'powersearch' => 'Ashtawan alli maskana',
 'powersearch-legend' => 'Ashtawan alli maskana',
 'powersearch-ns' => 'Chay shutipak kitikunapi maskana :',
 'powersearch-redir' => 'Kutinpushaykunata rikuchiy',
-'powersearch-field' => 'Kayta maskana :',
 
 # Preferences page
 'preferences' => 'Akllaykuna',
@@ -865,10 +854,6 @@ Shuk aspipi, shukniki tinkika ima tinkita wichkashkami kanka nin, kay aspipi shu
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Kay archiwuta shuk hawa antanawan llankana',
-'edit-externally-help' => 'Ashtawan yachakunkakak [https://www.mediawiki.org/wiki/Manual:External_editors kay yanapata] (inlish shimipi) killkakatipay',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tukuy',
 'namespacesall' => 'tukuy',
index efcc823..da08c5a 100644 (file)
@@ -185,7 +185,6 @@ $messages = array(
 'qbedit' => 'Modifitgar',
 'qbpageoptions' => 'Questa pagina',
 'qbmyoptions' => 'Mia pagina',
-'qbspecialpages' => 'paginas spezialas',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -300,8 +299,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}}',
@@ -399,9 +396,6 @@ El po cuntegnair in u plirs segns che na pon betg vegnir utilisads en titels.',
 'perfcachedts' => 'Las suandantas datas derivan dal cache, ultima actualisaziun ils $2 las $3. Maximalmain {{PLURAL:$4|in resultat è disponibel|$4 resultats èn disponibels}} en il cache.',
 'querypage-no-updates' => 'Las actualisaziuns da questa pagina èn deactivadas. 
 Las datas qua vegnan da preschent betg actualisadas.',
-'wrong_wfQuery_params' => 'Parameters fauss per wfQuery()<br />
-Funcziun: $1<br />
-Query: $2',
 'viewsource' => 'Mussar il code da fontauna',
 'viewsource-title' => 'Vesair il code da funtauna da $1',
 'actionthrottled' => 'Acziun limitada',
@@ -1033,12 +1027,8 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 # Search results
 'searchresults' => 'Resultats da tschertga',
 'searchresults-title' => 'Resultats da tschertga per "$1"',
-'searchresulttext' => "Per dapli infurmaziuns davart il tschertgar sin {{SITENAME}}, guarda l'[[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Ti has tschertgà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tut las paginas che entschevan cun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|colliaziuns a "$1"]])',
-'searchsubtitleinvalid' => "Ti has tschertgà '''$1'''",
 'toomanymatches' => 'Il dumber dals resultats è memia grond. Tschertga per plaschair auters terms.',
 'titlematches' => 'Titels da paginas che correspundan',
-'notitlematches' => 'Nagin titel correspunda',
 'textmatches' => 'Texts da paginas che correspundan',
 'notextmatches' => 'Nagin text correspunda',
 'prevn' => 'davos {{PLURAL:$1|$1}}',
@@ -1047,10 +1037,8 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'nextn-title' => '{{PLURAL:$1|Proxim resultat|Proxims resultats}}',
 'shown-title' => 'Mussar $1 {{PLURAL:$1|resultat|resultats}} per pagina',
 'viewprevnext' => 'Mussar ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opziuns da tschertgar',
 'searchmenu-exists' => "'''Igl exista ina pagina cun il num \"[[:\$1]] sin questa vichi\"'''",
 'searchmenu-new' => "'''Crear la pagina \"[[:\$1]]\" sin questa vichi!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mussar tut las paginas cun quest prefix]]',
 'searchprofile-articles' => 'Paginas da cuntegn',
 'searchprofile-project' => 'Agid e paginas dal project',
 'searchprofile-images' => 'Multimedia',
@@ -1078,14 +1066,10 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'showingresults' => "Sutvart èn enfin {{PLURAL:$1|'''in''' resultat|'''$1''' resultats}} cumenzond cun il numer '''$2'''.",
 'showingresultsnum' => "Qua èn {{PLURAL:$3|'''1''' resultat|'''$3''' resultats}}, cumenzond cun il number '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' da '''$3'''|Resultats '''$1-$2''' da '''$3'''}} per '''$4'''",
-'nonefound' => "'''Remartga''': Sco standard vegn be tschertga en tscherts tips da pagina.
-Scriva il prefix ''all:'' avant il term che ti vuls tschertgar, per tschertgar en tut las paginas (incl. discussiuns, models etc.) u scriva directamain il prefix dal spazi da num en il qual ti vuls tschertgar.",
 'search-nonefound' => 'Per il term tschertgà èn nagins resultats vegnids chattads.',
-'powersearch' => 'retschertgar',
 'powersearch-legend' => 'Tschertga extendida',
 'powersearch-ns' => 'Tschertgar en tips da pagina:',
 'powersearch-redir' => 'Mussar renviaments',
-'powersearch-field' => 'Tschertgar',
 'powersearch-togglelabel' => 'Tscherna:',
 'powersearch-toggleall' => 'Tuts',
 'powersearch-togglenone' => 'Nagins',
@@ -1098,8 +1082,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à",
-'prefsnologintext' => 'Ti stos esser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} t\'annunzià]</span> per midar tias preferenzas.',
 'changepassword' => 'Midar pled-clav',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Prevista',
@@ -1123,7 +1105,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'prefs-email' => 'Opziuns dad e-mail',
 'prefs-rendering' => 'Cumparsa',
 'saveprefs' => 'memorisar',
-'resetprefs' => 'remetter las preferenzas (reset)',
 'restoreprefs' => 'Restituir tut las preferenzas da standard',
 'prefs-editing' => 'Modifitgar',
 'rows' => 'Lingias:',
@@ -1141,7 +1122,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'localtime' => 'Temp local:',
 'timezoneuseserverdefault' => 'Utilisar il standard dal wiki ($1)',
 'timezoneuseoffset' => 'Auter (inditgar la differenza)',
-'timezoneoffset' => 'Differenza¹:',
 'servertime' => 'Temp dal server:',
 'guesstimezone' => 'Surprender dal navigatur',
 'timezoneregion-africa' => 'Africa',
@@ -1375,6 +1355,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',
@@ -1854,10 +1835,8 @@ I renviescha uss a [[$2]].',
 'protectedpages' => 'Paginas protegidas',
 'protectedpages-indef' => 'Be mussar paginas protegidas illimitadamain',
 'protectedpages-cascade' => 'Be mussar protecziuns ertadas',
-'protectedpagestext' => 'Suandantas paginas èn protegidas encunter spustar u modifitgar.',
 'protectedpagesempty' => 'Naginas paginas èn actualmain protegidas cun quests parameters.',
 'protectedtitles' => 'Titels bloccads',
-'protectedtitlestext' => 'Suandants titels èn bloccads per vegnir creads.',
 'protectedtitlesempty' => 'Cun ils parameters inditgads èn naginas titels actualmain bloccads per vegnir creads.',
 'listusers' => 'Glista dals utilisaders',
 'listusers-editsonly' => 'Be mussar utilisaders cun modificaziuns',
@@ -3342,10 +3321,6 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
 'exif-urgency-high' => 'Aut ($1)',
 'exif-urgency-other' => "Prioritad definida da l'utilisader ($1)",
 
-# External editor support
-'edit-externally' => 'Modifitgar questa datoteca cun in program extern',
-'edit-externally-help' => "(Legia [https://www.mediawiki.org/wiki/Manual:External_editors instrucziuns d'installaziun] per ulteriuras infurmaziuns)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tut',
 'namespacesall' => 'tuts',
@@ -3559,8 +3534,7 @@ Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GN
 
 # Special:SpecialPages
 'specialpages' => 'Paginas spezialas',
-'specialpages-note' => '----
-* Paginas spezialas normalas.
+'specialpages-note' => '* Paginas spezialas normalas.
 * <span class="mw-specialpagerestricted">Paginas spezialas restrenschidas.</span>
 * <span class="mw-specialpagecached">Paginas spezialas en il cache (pon esser antiquadas).</span>',
 'specialpages-group-maintenance' => 'Rapports da mantegnamant',
index eec115d..3f42b02 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ă' ),
@@ -456,7 +454,6 @@ $messages = array(
 'qbedit' => 'Modificare',
 'qbpageoptions' => 'Opțiuni ale paginii',
 'qbmyoptions' => 'Paginile mele',
-'qbspecialpages' => 'Pagini speciale',
 'faq' => 'Întrebări frecvente',
 'faqpage' => 'Project:Întrebări frecvente',
 
@@ -572,12 +569,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',
@@ -675,9 +670,6 @@ Poate conține unul sau mai multe caractere ce nu pot fi folosite în titluri.',
 'perfcached' => 'Datele următoare au fost păstrate în cache și s-ar putea să nu fie actualizate. Un maxim de {{PLURAL:$1|un rezultat este disponibil|$1 rezultate sunt disponibile}} în cache.',
 'perfcachedts' => 'Informațiile de mai jos provin din cache, ultima actualizare efectuându-se la $1. Un maxim de {{PLURAL:$4|un rezultat este disponibil|$4 rezultate sunt disponibile}} în cache.',
 'querypage-no-updates' => 'Actualizările acestei pagini sunt momentan dezactivate. Informațiile de aici nu sunt împrospătate.',
-'wrong_wfQuery_params' => 'Număr incorect de parametri pentru wfQuery()<br />
-Funcția: $1<br />
-Interogarea: $2',
 'viewsource' => 'Sursă pagină',
 'viewsource-title' => 'Vizualizare sursă pentru $1',
 'actionthrottled' => 'Acțiune limitată',
@@ -709,7 +701,8 @@ Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
 'invalidtitle-knownnamespace' => 'Titlu invalid cu spațiul de nume „$2” și textul „$3”',
 'invalidtitle-unknownnamespace' => 'Titlu invalid cu numărul spațiului de nume $1 necunoscut și textul „$2”',
 'exception-nologin' => 'Neautentificat{{GENDER:||ă}}.',
-'exception-nologin-text' => 'Această pagină sau acțiune necesită ca dumneavoastră să fiți autentificat{{GENDER:||ă}} pe acest wiki.',
+'exception-nologin-text' => 'Vă rugăm să vă [[Special:Userlogin|autentificați]] pentru a accesa această pagină sau acțiune.',
+'exception-nologin-text-manual' => 'Vă rugăm să vă $1 pentru a accesa această pagină sau acțiune.',
 
 # Virus scanner
 'virus-badscanner' => "Configurație greșită: scaner de virus necunoscut: ''$1''",
@@ -806,7 +799,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).
@@ -876,7 +869,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.',
@@ -1366,12 +1359,8 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 # Search results
 'searchresults' => 'Rezultatele căutării',
 'searchresults-title' => 'Rezultatele căutării pentru „$1”',
-'searchresulttext' => 'Pentru mai multe detalii despre căutarea în {{SITENAME}}, vezi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ai căutat \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toate paginile care încep cu "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toate paginile care se leagă de "$1"]])',
-'searchsubtitleinvalid' => 'Pentru căutarea "$1"',
 'toomanymatches' => 'Prea multe rezultate au fost întoarse, încercă o căutare diferită',
 'titlematches' => 'Rezultate din titlurile paginilor',
-'notitlematches' => 'Nici un rezultat în titlurile articolelor',
 'textmatches' => 'Rezultate din conținutul paginilor',
 'notextmatches' => 'Nici un rezultat în textele articolelor',
 'prevn' => 'anterioarele {{PLURAL:$1|$1}}',
@@ -1380,10 +1369,8 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'nextn-title' => '{{PLURAL:$1|următorul|următoarele}} $1 {{PLURAL:$1|rezultat|rezultate}}',
 'shown-title' => 'Arată $1 {{PLURAL:$1|rezultat|rezultate}} pe pagină',
 'viewprevnext' => 'Vezi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opțiuni căutare',
 'searchmenu-exists' => "'''Există o pagină cu titlul „[[:$1]]'” pe acest site.'''",
 'searchmenu-new' => "'''Creați pagina „[[:$1]]” pe acest wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Răsfoiește paginile cu acest prefix]]',
 'searchprofile-articles' => 'Pagini cu conținut',
 'searchprofile-project' => 'Pagini din spațiile Proiect și Ajutor',
 'searchprofile-images' => 'Multimedia',
@@ -1411,14 +1398,10 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'showingresults' => "Mai jos {{PLURAL:$1|apare '''1''' rezultat|apar '''$1''' rezultate|apar '''$1''' de rezultate}} începând cu nr. <b>$2</b>.",
 'showingresultsnum' => "Mai jos {{PLURAL:$3|apare '''1''' rezultat|apar '''$3''' rezultate|apar '''$3''' de rezultate}} cu nr. <b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultatul '''$1''' din '''$3'''|Rezultatele '''$1 - $2''' din '''$3'''}} pentru '''$4'''",
-'nonefound' => "'''Notă''': Numai unele spații de nume sunt căutate implicit.
-Încercați să puneți ca și prefix al căutării ''all:'' pentru a căuta în tot conținutul (incluzând și paginile de discuții, formate, etc), sau folosiți spațiul de nume dorit ca și prefix.",
 'search-nonefound' => 'Nu sunt rezultate conforme interogării.',
-'powersearch' => 'Căutare avansată',
 'powersearch-legend' => 'Căutare avansată',
 'powersearch-ns' => 'Căutare în spațiile de nume:',
 'powersearch-redir' => 'Afișează redirecționările',
-'powersearch-field' => 'Caută după',
 'powersearch-togglelabel' => 'Selectare:',
 'powersearch-toggleall' => 'Tot',
 'powersearch-togglenone' => 'Nimic',
@@ -1430,8 +1413,7 @@ 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',
-'prefsnologintext' => 'Trebuie să fiți <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autentificat]</span> pentru a vă putea salva preferințele.',
+'prefsnologintext2' => 'Vă rugăm să vă $1 pentru a vă seta preferințele de utilizator.',
 'changepassword' => 'Schimbare parolă',
 'prefs-skin' => 'Aspect',
 'skin-preview' => 'Previzualizare',
@@ -1455,7 +1437,6 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'prefs-email' => 'Opțiuni e-mail',
 'prefs-rendering' => 'Aspect',
 'saveprefs' => 'Salvează preferințele',
-'resetprefs' => 'Resetează preferințele',
 'restoreprefs' => 'Restaurează toate valorile implicite (în toate secțiunile)',
 'prefs-editing' => 'Modificare',
 'rows' => 'Rânduri:',
@@ -1476,7 +1457,6 @@ Oricine o cunoaște vă va putea citi lista de pagini urmărite, așa că n-o pa
 'localtime' => 'Ora locală:',
 'timezoneuseserverdefault' => 'Folosește ora implicită a wikiului ($1)',
 'timezoneuseoffset' => 'Altul (specifică diferența)',
-'timezoneoffset' => 'Diferența¹:',
 'servertime' => 'Ora serverului:',
 'guesstimezone' => 'Încearcă determinarea automată a diferenței',
 'timezoneregion-africa' => 'Africa',
@@ -1731,6 +1711,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',
@@ -2234,10 +2217,8 @@ Intrările <del>tăiate</del> au fost rezolvate.',
 'protectedpages' => 'Pagini protejate',
 'protectedpages-indef' => 'Doar protecțiile pe termen nelimitat',
 'protectedpages-cascade' => 'Doar protejări în cascadă',
-'protectedpagestext' => 'Următoarele pagini sunt protejate la mutare sau editare',
 'protectedpagesempty' => 'Nu există pagini protejate',
 'protectedtitles' => 'Titluri protejate',
-'protectedtitlestext' => 'Următoarele titluri sunt protejate la creare',
 'protectedtitlesempty' => 'Nu există titluri protejate cu acești parametri.',
 'listusers' => 'Listă utilizatori',
 'listusers-editsonly' => 'Arată doar utilizatorii cu modificări',
@@ -2460,9 +2441,9 @@ Puteți contacta utilizatorul:
 e-mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Nu veți mai primi notificări în cazul unor viitoare modificări până când nu veți vizitați pagina. Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.
+Nu veți mai primi notificări în cazul unei viitoare activități până când nu veți vizitați pagina ca utilizator autentificat. Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.
 
-             Al dumneavoastră amic, sistemul de notificare de la {{SITENAME}}
+Al dumneavoastră amic, sistemul de notificare de la {{SITENAME}}
 
 --
 Pentru a modifica setările notificării prin e-mail, vizitați
@@ -3753,10 +3734,6 @@ Altele vor fi ascunse implicit.
 'exif-urgency-high' => 'Ridicat ($1)',
 'exif-urgency-other' => 'Prioritate definită de utilizator ($1)',
 
-# External editor support
-'edit-externally' => 'Editează acest fișier folosind o aplicație externă.',
-'edit-externally-help' => '(Vedeți [https://www.mediawiki.org/wiki/Manual:External_editors instrucțiuni de instalare] pentru mai multe informații)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'toate',
 'namespacesall' => 'toate',
@@ -3975,10 +3952,9 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 
 # Special:SpecialPages
 'specialpages' => 'Pagini speciale',
-'specialpages-note' => '----
-* Pagini speciale normale.
-* <span class="mw-specialpagerestricted">Pagini speciale restricționate.</span>
-* <span class="mw-specialpagecached">Pagini speciale aflate doar în memoria cache (pot fi neactualizate).</span>',
+'specialpages-note-top' => 'Legendă',
+'specialpages-note' => '* Pagini speciale normale.
+* <span class="mw-specialpagerestricted">Pagini speciale restricționate.</span>',
 'specialpages-group-maintenance' => 'Întreținere',
 'specialpages-group-other' => 'Alte pagini speciale',
 'specialpages-group-login' => 'Autentificare / creare cont',
@@ -4191,4 +4167,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 150332c..41da746 100644 (file)
@@ -183,7 +183,6 @@ $messages = array(
 'qbedit' => 'Cange',
 'qbpageoptions' => 'Pàgene currende',
 'qbmyoptions' => 'Pàggene mije',
-'qbspecialpages' => 'Pàggene speciale',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -303,8 +302,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}}",
@@ -409,9 +406,6 @@ Pò essere ca tène une o cchiù carattere ca non ge ponne essere ausete jndr'à
 'perfcachedts' => "'U date seguende stè jndr'à cache e, l'urteme aggiornamende ha state $1. 'Nu massime de {{PLURAL:$4|'nu resultate ste|$4 resultate stonne}} disponibbile jndr'à cache.",
 'querypage-no-updates' => "L'aggiornaminde pe sta pàgene sonde, pe mò, disabbilitete.
 Le date ca stonne aqquà jndre non ge sonde aggiornete.",
-'wrong_wfQuery_params' => "Parametre incorrette sus 'a wfQuery()<br />
-Function: $1<br />
-Query: $2",
 'viewsource' => "Vide 'u sorgende",
 'viewsource-title' => "Vide 'a sorgende pe $1",
 'actionthrottled' => 'Azione inderrotte',
@@ -1121,12 +1115,8 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 # Search results
 'searchresults' => "Resultete d'a ricerche",
 'searchresults-title' => 'Resultete d\'a ricerche pe "$1"',
-'searchresulttext' => "Pe cchiù 'mbormaziune sus 'a recerche de {{SITENAME}}, vide [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Tu è cerchete pe \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutte le pàggene ca accumenzene cu "$1"]]{{int:pipe-separator}} [[Special:WhatLinksHere/$1|tutte le pàggene ca appondene a "$1"]])',
-'searchsubtitleinvalid' => "Tu è cerchete pe '''$1'''",
 'toomanymatches' => "Troppe combronde sciute bbuene onne state returnete, pe piacere prueve cu 'n'otra inderrogazione",
 'titlematches' => "'U titele d'a pàgene se iacchje",
-'notitlematches' => "Nisciune titele de pàgene s'accocchie cu 'a recerche",
 'textmatches' => "'U teste d'a pàgene combacie",
 'notextmatches' => "Nisciune teste de pàgene s'accocchie cu 'a recerche",
 'prevn' => 'rrede {{PLURAL:$1|$1}}',
@@ -1135,10 +1125,8 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 'nextn-title' => 'Successive $1 {{PLURAL:$1|resultete|resultete}}',
 'shown-title' => 'Fà vedè le $1 {{PLURAL:$1|resultete|resultete}} pe pàgene',
 'viewprevnext' => 'Vide ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opzione de ricerche',
 'searchmenu-exists' => "'''Stè 'na pàgene nnumenete \"[[\$1]]\" sus 'a sta Uicchipèdie'''",
 'searchmenu-new' => "'''[[:\$1|Ccreje]] 'a pàgene \"[[:\$1|\$1]]\" sus 'a sta Uicchipèdie!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sfogghije le pàggene cu stu prefisse]]',
 'searchprofile-articles' => 'Vôsce',
 'searchprofile-project' => 'Pàggene de ajiute e de pruggette',
 'searchprofile-images' => 'Multimedia',
@@ -1166,14 +1154,10 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 'showingresults' => "Stoche a fazze vedè aqquà sotte {{PLURAL:$1|'''1''' resultete|'''$1''' resultete}} ca accumenzene cu #'''$2'''.",
 'showingresultsnum' => "Stoche a fazze vedè {{PLURAL:$3|'''1''' resultete|'''$3''' resultete}} ca accumenzene cu #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultate '''$1 - $2''' de '''$3'''}} pe '''$4'''",
-'nonefound' => "'''Vide bbuene''': Sulamende sus a certe namespace avène fatte 'a ricerche pe default.
-Prueve mettènne nnande a l'inderrogaziona toje 'u prefisse '''all:''' pe cercà jndr'à tutte le namespace (ingludenne le pàggene de le 'ngazzaminde, le template, etc), o ause 'u namespace addò vuliva fa 'a ricerche cumme prefisse.",
 'search-nonefound' => "Non ge stonne resultete ca soddisfecene l'inderrogazione.",
-'powersearch' => 'Ricerche avanzete',
 'powersearch-legend' => 'Ricerche avanzete',
 'powersearch-ns' => "Cirche jndr'à le namespace:",
 'powersearch-redir' => 'Liste de le ridirezionaminde',
-'powersearch-field' => 'Cirche pe',
 'powersearch-togglelabel' => 'Verifiche:',
 'powersearch-toggleall' => 'Tutte',
 'powersearch-togglenone' => 'Ninde',
@@ -1187,8 +1171,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',
-'prefsnologintext' => 'Tu a essere <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} colleghete]</span> pe \'mbostà le preferenze de l\'utinde.',
 'changepassword' => "Cange 'a password",
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Andeprime',
@@ -1212,7 +1194,6 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
 'prefs-email' => "Opziune de l'e-mail",
 'prefs-rendering' => 'Aspette',
 'saveprefs' => 'Reggistre',
-'resetprefs' => "Pulizze le cangiaminde ca non g'è reggistrete",
 'restoreprefs' => "Repristine tutte le 'mbostaziune origgenale",
 'prefs-editing' => 'Stoche a cange',
 'rows' => 'Righe:',
@@ -1233,7 +1214,6 @@ Cengate vò ccu canosce ce pò leggere l'elenghe de le pàggene condrollate tune
 'localtime' => 'Orarie lochele:',
 'timezoneuseserverdefault' => "Ause 'u valore de default de uicchi ($1)",
 'timezoneuseoffset' => "Otre (specifiche 'a distanze)",
-'timezoneoffset' => 'Distanze¹:',
 'servertime' => "Orarie d'u server:",
 'guesstimezone' => "Jnghie da 'u browser",
 'timezoneregion-africa' => 'Africa',
@@ -1490,6 +1470,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',
@@ -2007,10 +1988,8 @@ Mò s'avène redirette a [[$2]].",
 'protectedpages' => 'Pàggene prutette',
 'protectedpages-indef' => 'Sulamende protezziune indefinite',
 'protectedpages-cascade' => 'Sulamende prutezzione a cascata',
-'protectedpagestext' => 'Le pàggene ca seguene sonde prutette da spustaminde e cangiaminde',
 'protectedpagesempty' => 'Nisciuna pàgene jè prutette pe mò cu ste parametre.',
 'protectedtitles' => 'Titele prutette',
-'protectedtitlestext' => "Le titele ca seguene sonde prutette da 'a ccreazione",
 'protectedtitlesempty' => 'Nisciune titele jè pe mò prutette cu ste parametre.',
 'listusers' => "Liste de l'utende",
 'listusers-editsonly' => "Fà vedè sulamende l'utinde cu cangiaminde fatte",
@@ -2440,7 +2419,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:',
@@ -3659,10 +3637,6 @@ $8',
 'exif-urgency-high' => 'Ierte ($1)',
 'exif-urgency-other' => "Priorità definite da l'utende ($1)",
 
-# External editor support
-'edit-externally' => "Cange stu fail usanne n'applicazione esterne",
-'edit-externally-help' => "(Vide le [https://www.mediawiki.org/wiki/Manual:External_editors 'struzione de configurazione] pe avèje cchiù dettaglie)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutte',
 'namespacesall' => 'tutte',
@@ -3981,8 +3955,7 @@ Avisse avè ricevute [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na copie d'a GNU (Licenz
 
 # Special:SpecialPages
 'specialpages' => 'Pàggene speciele',
-'specialpages-note' => '----
-* Pàggene speciale normale.
+'specialpages-note' => '* Pàggene speciale normale.
 * <span class="mw-specialpagerestricted">Pàggene speciale cu le restriziune.</span>
 * <span class="mw-specialpagecached">Pàggene speciale in memorie cache (ponne essere vecchie).</span>',
 'specialpages-group-maintenance' => "Report d'a manutenzione",
@@ -4194,4 +4167,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 856963f..018b8f2 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( 'Поиск_дубликатов_файлов' ),
@@ -597,7 +597,6 @@ $messages = array(
 'qbedit' => 'Править',
 'qbpageoptions' => 'Настройки страницы',
 'qbmyoptions' => 'Ваши настройки',
-'qbspecialpages' => 'Специальные страницы',
 'faq' => 'ЧаВО',
 'faqpage' => 'Project:ЧаВО',
 
@@ -714,12 +713,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' => 'править',
@@ -816,9 +813,6 @@ $1',
 'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей|записей}}.',
 'querypage-no-updates' => 'Обновление этой страницы сейчас отключено.
 Представленные здесь данные не будут обновляться.',
-'wrong_wfQuery_params' => 'Недопустимые параметры для функции wfQuery()<br />
-Функция: $1<br />
-Запрос: $2',
 'viewsource' => 'Просмотр',
 'viewsource-title' => 'Просмотр исходного текста страницы $1',
 'actionthrottled' => 'Ограничение по скорости',
@@ -849,7 +843,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''",
@@ -945,7 +940,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
@@ -1022,7 +1017,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' => 'Функции электронной почты отключены в этой вики.',
@@ -1516,12 +1511,8 @@ $1",
 # Search results
 'searchresults' => 'Результаты поиска',
 'searchresults-title' => 'Поиск «$1»',
-'searchresulttext' => 'Для получения более подробной информации о поиске на страницах проекта, см. [[{{MediaWiki:Helppage}}|справочный раздел]].',
-'searchsubtitle' => 'По запросу «[[:$1]]» ([[Special:Prefixindex/$1|страницы, начинающиеся с этого названия]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ссылающиеся на это название]])',
-'searchsubtitleinvalid' => 'По запросу «$1»',
 'toomanymatches' => 'Найдено слишком много соответствий; пожалуйста, попробуйте сформулировать запрос иначе',
 'titlematches' => 'Совпадения в названиях страниц',
-'notitlematches' => 'Нет совпадений в названиях страниц',
 'textmatches' => 'Совпадения в текстах страниц',
 'notextmatches' => 'Нет совпадений в текстах страниц',
 'prevn' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
@@ -1530,10 +1521,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Следующая $1 запись|Следующие $1 записи|Следующие $1 записей}}',
 'shown-title' => 'Показывать $1 {{PLURAL:$1|запись|записи|записей}} на странице',
 'viewprevnext' => 'Просмотреть ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Настройки поиска',
 'searchmenu-exists' => "'''В этой вики есть страница «[[:$1]]»'''",
 'searchmenu-new' => "'''Создать страницу «[[:$1]]» в этом вики-проекте!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показать страницы с этим префиксом]]',
 'searchprofile-articles' => 'Основные страницы',
 'searchprofile-project' => 'Страницы справки и проекта',
 'searchprofile-images' => 'Мультимедиа',
@@ -1561,13 +1550,10 @@ $1",
 'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с №'''$2'''.",
 'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с №'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
-'nonefound' => "'''Замечание:''' по умолчанию поиск производится не во всех пространствах имён. Используйте приставку ''all:'', чтобы искать во всех пространствах имён (включая обсуждения участников, шаблоны и пр.), или укажите требуемое пространство имён.",
 'search-nonefound' => 'Соответствий запросу не найдено.',
-'powersearch' => 'Расширенный поиск',
 'powersearch-legend' => 'Расширенный поиск',
 'powersearch-ns' => 'Поиск в пространствах имён:',
 'powersearch-redir' => 'Выводить перенаправления',
-'powersearch-field' => 'Поиск',
 'powersearch-togglelabel' => 'Отметить:',
 'powersearch-toggleall' => 'Все',
 'powersearch-togglenone' => 'Ничего',
@@ -1579,8 +1565,7 @@ $1",
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Количество правок:',
-'prefsnologin' => 'Вы не представились системе',
-'prefsnologintext' => 'Вы должны <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} представиться системе]</span>, чтобы изменять настройки участника.',
+'prefsnologintext2' => 'Необходимо $1, чтобы изменять настройки.',
 'changepassword' => 'Изменение пароля',
 'prefs-skin' => 'Тема оформления',
 'skin-preview' => 'Предпросмотр',
@@ -1604,7 +1589,6 @@ $1",
 'prefs-email' => 'Параметры электронной почты',
 'prefs-rendering' => 'Внешний вид',
 'saveprefs' => 'Сохранить',
-'resetprefs' => 'Сбросить',
 'restoreprefs' => 'Восстановить настройки по умолчанию',
 'prefs-editing' => 'Редактирование',
 'rows' => 'Строк:',
@@ -1624,7 +1608,6 @@ $1",
 'localtime' => 'Местное время:',
 'timezoneuseserverdefault' => 'Использовать настройки сервера ($1)',
 'timezoneuseoffset' => 'Иное (укажите смещение)',
-'timezoneoffset' => 'Смещение¹:',
 'servertime' => 'Время сервера:',
 'guesstimezone' => 'Заполнить из браузера',
 'timezoneregion-africa' => 'Африка',
@@ -1879,6 +1862,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.',
@@ -2378,10 +2364,8 @@ $1',
 'protectedpages' => 'Защищённые страницы',
 'protectedpages-indef' => 'Только бессрочные защиты',
 'protectedpages-cascade' => 'Только каскадная защита',
-'protectedpagestext' => 'Следующие страницы защищены от переименования или изменения.',
 'protectedpagesempty' => 'В настоящий момент нет защищённых страниц с указанными параметрами',
 'protectedtitles' => 'Защищённые названия',
-'protectedtitlestext' => 'Следующие названия не разрешается использовать',
 'protectedtitlesempty' => 'В настоящий момент нет запрещённых названий с указанными параметрами.',
 'listusers' => 'Список участников',
 'listusers-editsonly' => 'Показать только тех участников, кто сделал хотя бы одну правку',
@@ -2608,9 +2592,9 @@ $PAGEINTRO $NEWPAGE
 эл. почта: $PAGEEDITOR_EMAIL
 вики: $PAGEEDITOR_WIKI
 
\95Ñ\81ли Ð²Ñ\8b Ð½Ðµ Ð¿Ð¾Ñ\81еÑ\82иÑ\82е Ñ\8dÑ\82Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ñ\82о в случае её дальнейших изменений уведомлений больше не будет. Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
\95Ñ\81ли Ð²Ñ\8b Ð½Ðµ Ð·Ð°Ð¹Ð´Ñ\91Ñ\82е Ð½Ð° Ñ\8dÑ\82Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð¿Ð¾Ð´ Ñ\81воей Ñ\83Ñ\87Ñ\91Ñ\82ной Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8cÑ\8e, в случае её дальнейших изменений уведомлений больше не будет. Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
 
-             Система оповещения {{grammar:genitive|{{SITENAME}}}}
+Система оповещения {{grammar:genitive|{{SITENAME}}}}
 
 --
 Изменение настройки уведомлений
@@ -3914,10 +3898,6 @@ $1',
 'exif-urgency-high' => 'Высокая ($1)',
 'exif-urgency-other' => 'Определённый пользователем приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Редактировать этот файл, используя внешнюю программу',
-'edit-externally-help' => '(подробнее см. в [https://www.mediawiki.org/wiki/Manual:External_editors руководстве по установке])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'все',
 'namespacesall' => 'все',
@@ -4227,10 +4207,9 @@ MediaWiki распространяется в надежде, что она бу
 
 # Special:SpecialPages
 'specialpages' => 'Спецстраницы',
-'specialpages-note' => '----
-* Обычные служебные страницы.
-* <span class="mw-specialpagerestricted">Служебные страницы с ограниченным доступом.</span>
-* <span class="mw-specialpagecached">Закэшированные служебные страницы (могут быть устаревшими).</span>',
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Обычные служебные страницы.
+* <span class="mw-specialpagerestricted">Служебные страницы с ограниченным доступом.</span>',
 'specialpages-group-maintenance' => 'Отчёты технического обслуживания',
 'specialpages-group-other' => 'Другие служебные страницы',
 'specialpages-group-login' => 'Представиться / Зарегистрироваться',
@@ -4443,4 +4422,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 96276ab..bcf00b2 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( 'Писмо_хоснователёви' ),
@@ -275,7 +273,6 @@ $messages = array(
 'qbedit' => 'Едітовати',
 'qbpageoptions' => 'Тота сторінка',
 'qbmyoptions' => 'Мої сторінкы',
-'qbspecialpages' => 'Шпеціалны сторінкы',
 'faq' => 'Часты звідованя',
 'faqpage' => 'Project:Часты звідованя',
 
@@ -391,8 +388,6 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Обтримане з "$1"',
 'youhavenewmessages' => 'Маєте $1 ($2).',
-'newmessageslink' => 'новы повідомлїня',
-'newmessagesdifflink' => 'послїдня зміна',
 'youhavenewmessagesfromusers' => 'Мате $1 од {{PLURAL:$3|іншого хоснователя|$3 іншых хоснователїв}} ($2).',
 'youhavenewmessagesmanyusers' => 'Мате $1 од много далшых хоснователїв ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлїня|новы повідомлїня}}',
@@ -493,9 +488,6 @@ $1',
 'perfcached' => 'Слїдуючі дата суть взяты з кешу і не мусять быти актуалны. Кеш може обсяговати не веце як {{PLURAL:$1|єден резултат|$1 резултаты|$1 резултатів}}.',
 'perfcachedts' => 'Слїдуючі дата суть взяты з кешу, яка была остатнїй раз актуалізована $1. Кеш може обсяговати не веце як {{PLURAL:$4|єден резултат|$4 резултаты|$4 резултатів}}.',
 'querypage-no-updates' => 'Зміны той сторінкы заборонены. Дата нынї не можуть быти обновлены.',
-'wrong_wfQuery_params' => 'Неправилны параметры функцій wfQuery()<br />
-Функція: $1<br />
-Запрос: $2',
 'viewsource' => 'Видїти код',
 'viewsource-title' => 'Видїти жрідло сторінкы $1',
 'actionthrottled' => 'Акція была придушена',
@@ -1162,12 +1154,8 @@ $1",
 # Search results
 'searchresults' => 'Резултаты гляданя',
 'searchresults-title' => 'Резултаты гляданя "$1"',
-'searchresulttext' => 'Про детайлнїшы інформації про гляданя у проєктї, смоть [[{{MediaWiki:Helppage}}|сторінка помочі]]',
-'searchsubtitle' => 'Глядали сьте «[[:$1]]» ([[Special:Prefixindex/$1|вшыткы сторінкы, што ся зачінають на «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|вшыткы сторінкы, што мають одказ на «$1»]])',
-'searchsubtitleinvalid' => "Глядали сте '''$1'''",
 'toomanymatches' => 'Пожадавцї одповідать дуже много згод, спробуйте іншый запыт.',
 'titlematches' => 'Сторінкы з одповідаючов назвов',
-'notitlematches' => 'Нїт згоды в назвах сторінок',
 'textmatches' => 'Сторінкы з одповідаючім текстом',
 'notextmatches' => 'Немає згоду в текстах сторінок',
 'prevn' => '{{PLURAL:$1|попередня $1|попереднї $1|попереднїх $1}}',
@@ -1176,10 +1164,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Далшый резултат|Далшы $1 резултаты|Далшых $1 резултатів}}',
 'shown-title' => 'Вказати $1 {{PLURAL:$1|резултат|резултаты|резултатів}} на сторінку',
 'viewprevnext' => 'Перегляднути ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Параметры гляданя',
 'searchmenu-exists' => "'''У тій вікі є сторінка з назвов «[[:$1]]»'''",
 'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у тій вікі!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Вказати сторінкы з тым префіксом]]',
 'searchprofile-articles' => 'Статї',
 'searchprofile-project' => 'Сторінкы помочі і проєкту',
 'searchprofile-images' => 'Мултімедія',
@@ -1207,14 +1193,10 @@ $1",
 'showingresults' => "Ниже {{PLURAL:$1|вказане|вказаны|вказаных}} '''$1''' {{PLURAL:$1|резултат|резултаты|резултатів}}, почінаючіх з №&nbsp;'''$2'''",
 'showingresultsnum' => 'Ниже вказано <strong>$3</strong> {{PLURAL:$3|резултат|резултаты|резултатів}}, почінаючі з №&nbsp;<strong>$2</strong>.',
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' з '''$3'''|Резултаты '''$1 — $2''' з '''$3'''}}  про '''$4'''",
-'nonefound' => "'''Позначка:''' Штандартно ся глядать лем в дакотрых просторах назв.
-Хоснуйте префікс ''all:'', жебы глядати у вшыткых просторах назв (рахувчі тыж сторінкы діскузії, шаблоны ітд.), або зазначте потрібный простор назв.",
 'search-nonefound' => 'На вашу пожадавку не были найджены жадны резултаты.',
-'powersearch' => 'Росшырене гляданя',
 'powersearch-legend' => 'Росшырене гляданя',
 'powersearch-ns' => 'Глядати у просторах назв:',
 'powersearch-redir' => 'Список напрямлинь',
-'powersearch-field' => 'Глядати',
 'powersearch-togglelabel' => 'Позначіти:',
 'powersearch-toggleall' => 'Вшыткы',
 'powersearch-togglenone' => 'Жадный',
@@ -1226,8 +1208,6 @@ $1",
 'preferences' => 'Наставлїня',
 'mypreferences' => 'Наставлїня',
 'prefs-edits' => 'Чісло едітовань:',
-'prefsnologin' => 'Не сьте приголошеный(а)!',
-'prefsnologintext' => 'Кідь хочете мінити хосновательскы наставлїня, мусите ся <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} приголосити]</span>.',
 'changepassword' => 'Змінити гесло',
 'prefs-skin' => 'Взгляд',
 'skin-preview' => 'Попереднїй нагляд',
@@ -1251,7 +1231,6 @@ $1",
 'prefs-email' => 'Параметры електронічной пошты',
 'prefs-rendering' => 'Взгляд',
 'saveprefs' => 'Уложыти',
-'resetprefs' => 'Вернути неуложены зміны',
 'restoreprefs' => 'Обновити вшыткы штандартны наставлїня (у вшыткых секціях)',
 'prefs-editing' => 'Едітованя',
 'rows' => 'Рядкы:',
@@ -1271,7 +1250,6 @@ $1",
 'localtime' => 'Містный час:',
 'timezoneuseserverdefault' => 'Хосновати штандартне наставлїня вікі ($1)',
 'timezoneuseoffset' => 'Інше (задайте посун)',
-'timezoneoffset' => 'Посун¹:',
 'servertime' => 'Час сервера:',
 'guesstimezone' => 'Начітати з переглядача',
 'timezoneregion-africa' => 'Африка',
@@ -1526,6 +1504,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.',
@@ -2003,10 +1982,8 @@ $1',
 'protectedpages' => 'Замкнуты сторінкы',
 'protectedpages-indef' => 'Лем замкы на нестановлено',
 'protectedpages-cascade' => 'Лем каскадовы замкы',
-'protectedpagestext' => 'Наслїдуючі сторінкы суть замкнуты або напів замкнуты про едітованя або переменованя',
 'protectedpagesempty' => 'Жадна сторінка не є замкнута з тыма параметрами.',
 'protectedtitles' => 'Замкнуты назвы сторінок',
-'protectedtitlestext' => 'Наслїдуючі назвы суть замкнуты і не дозволены про сторінкы',
 'protectedtitlesempty' => 'Жадна назва не є замкнута з тыма параметрами.',
 'listusers' => 'Список хоснователїв',
 'listusers-editsonly' => 'Вказати лем хоснователїв з едітованями',
@@ -3484,10 +3461,6 @@ $1',
 'exif-urgency-high' => 'Высока ($1)',
 'exif-urgency-other' => 'Хоснователём дефінована пріоріта ($1)',
 
-# External editor support
-'edit-externally' => 'Едітовати тот файл хоснувчі екстерну аплікацію',
-'edit-externally-help' => '(Веце інформацій найдете в [https://www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вшыткы',
 'namespacesall' => 'вшыткы',
@@ -3705,8 +3678,7 @@ MediaWiki є дістрібуована в надїї, же буде хосно
 
 # Special:SpecialPages
 'specialpages' => 'Шпеціалны сторінкы',
-'specialpages-note' => '----
-* Звычайны шпеціалны сторінкы.
+'specialpages-note' => '* Звычайны шпеціалны сторінкы.
 * <span class="mw-specialpagerestricted">Шпеціалны сторінкы з&nbsp;обмедженым приступом</span>
 * <span class="mw-specialpagecached">Кешованы шпеціалны сторінкы</span>',
 'specialpages-group-maintenance' => 'Технічны репорты',
@@ -3916,4 +3888,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 8c27d9f..ddb0b9d 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( 'नवीनतमसम्भन्दिन_परिवर्त' ),
@@ -422,7 +422,6 @@ The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
 'qbedit' => 'सम्पाद्यताम्',
 'qbpageoptions' => 'इदं पृष्ठम्',
 'qbmyoptions' => 'मम पृष्ठानि',
-'qbspecialpages' => 'विशेषपृष्ठानि',
 'faq' => 'बहुधा पृच्छ्यमानाः प्रश्नाः',
 'faqpage' => 'Project:बहुधा पृछ्यमानाः प्रश्नाः',
 
@@ -537,8 +536,6 @@ $1',
 'pagetitle' => '$1 - {{SITENAME}}',
 'retrievedfrom' => '"$1" इत्यस्माद् उद्धृतम्',
 'youhavenewmessages' => 'भवदर्थम् $1 सन्ति। ($2).',
-'newmessageslink' => 'नूतनाः सन्देशाः',
-'newmessagesdifflink' => 'अन्तिमं परिवर्तनम्',
 'youhavenewmessagesfromusers' => 'भवदर्थम् {{PLURAL:$3|अन्यस्मात् सदस्यात्|$3 सदस्येभ्यः}} $1 अस्ति ($2)।',
 'youhavenewmessagesmanyusers' => 'नैकेभ्यः योजकेभ्यः ते $1 सन्ति $2 ।',
 'newmessageslinkplural' => '{{PLURAL:$1|नूतनः सन्देशः|नूतनसन्देशाः}}',
@@ -628,9 +625,6 @@ $1',
 'perfcachedts' => 'अधोनिदेशितलेखः सञ्चितः । पूर्वपदोन्नतिः $1 । $4 {{PLURAL:}} अधिकाधिकपरिणामः सञ्चये उपलब्धः ।',
 'querypage-no-updates' => 'अस्य पृष्ठस्य परिशोधनं विफलीकृतमस्ति । 
 सद्यः अत्रत्यः विषयः न नवीक्रियते ।',
-'wrong_wfQuery_params' => 'wfQuery() इत्येतस्य अशुद्धः मानदण्डः दत्तः अस्ति<br />
-कार्यम्: $1<br />
-पृच्छा: $2',
 'viewsource' => 'स्रोतः दृश्यताम्',
 'viewsource-title' => '$1 इत्येतस्य स्रोतः दृश्यताम् ।',
 'actionthrottled' => 'कार्यम् अवरुद्धम् अस्ति',
@@ -1238,12 +1232,8 @@ You can still [$1 view this revision]",
 # Search results
 'searchresults' => 'अन्वेषणस्य फलितानि',
 'searchresults-title' => '"$1" इत्यस्य कृते अन्वेषणफलानि',
-'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' => 'पुटपाठस्य मेलाः',
 'notextmatches' => 'न कस्यापि पृष्ठस्य पाठः अस्य सममस्ति',
 'prevn' => 'प्राक्तनानि {{PLURAL:$1|$1}}',
@@ -1252,10 +1242,8 @@ You can still [$1 view this revision]",
 'nextn-title' => 'प्राक्तन-{{PLURAL:$1|फलितम्| फलितानि}}',
 'shown-title' => 'प्रत्येकस्मिन् पृष्ठे $1 {{PLURAL:$1|फलितम्|फलितानि}} दर्श्यताम्',
 'viewprevnext' => 'दर्श्यताम् ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'अन्वेषणस्य विकल्पाः ।',
 'searchmenu-exists' => 'अस्मिन् विकिमध्ये "[[:$1]]"नामकं पृष्ठं विद्यते।',
 'searchmenu-new' => "'''अस्यां विक्यां \"[[:\$1]]\" इति पृष्ठं सृज्यताम्!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|एतदुपसर्गयुक्तपुटं पश्यतु ]]',
 'searchprofile-articles' => 'आन्तर्यम्',
 'searchprofile-project' => 'सहायता प्रकल्पपृष्ठानि च',
 'searchprofile-images' => 'बहुमाध्यमः',
@@ -1283,15 +1271,10 @@ You can still [$1 view this revision]",
 'showingresults' => "निम्नगतक्रमाङ्कस्य '''$2''' तः आरभ्य अधिकतमं परिणामः'''$1''' {{PLURAL:$1| दर्शितः}}।",
 'showingresultsnum' => "निम्नगतक्रमाङ्क'''$2'''तः आरभ्य अधिकतमः '''$3''' परिणामः {{PLURAL:$3|दर्शितः}}।",
 'showingresultsheader' => "'''$4''' इत्येतस्य {{PLURAL:$5|'''$3'''स्य '''$1'''  फलितम्|'''$3'''स्य '''$1 - $2'''  फलितानि}}",
-'nonefound' => "'''सूचना''': स्वतः अत्र केषुचिदेव नामाकाशेषु अन्वेषणं क्रियते।
-
-सकले घटके अन्वेषणं कर्तुं स्व अन्वेषणपदेभ्यः पूर्वं ''all:'' इति योजयतु, अथवा इष्टं नामाकाशं पूर्वलग्नरूपेण योजयतु।",
 'search-nonefound' => 'भवतः अपेक्षानुगुणं फलितं न किमपि विद्यते ।',
-'powersearch' => 'प्रगतम् अन्वेषणम्',
 'powersearch-legend' => 'प्रगतम् अन्वेषणम्',
 'powersearch-ns' => 'नामाकाशेषु अन्विष्यताम्:',
 'powersearch-redir' => 'अनुप्रेषणानां सूचिका दर्श्यताम्',
-'powersearch-field' => 'इत्यस्मै अन्विष्यताम्',
 'powersearch-togglelabel' => 'आयीका:',
 'powersearch-toggleall' => 'सर्वम्',
 'powersearch-togglenone' => 'नास्ति',
@@ -1304,8 +1287,6 @@ You can still [$1 view this revision]",
 'preferences' => 'इष्टतमानि',
 'mypreferences' => 'मम इष्टतमानि',
 'prefs-edits' => 'सम्पादनानां सख्याः',
-'prefsnologin' => 'नैव प्रविष्ट',
-'prefsnologintext' => 'वरीयतां परिवर्तयितुं भवता <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}नामाभिलेखः]</span> करणियः।',
 'changepassword' => 'कूटशब्दः परिवर्त्यताम्',
 'prefs-skin' => 'त्वक्',
 'skin-preview' => 'प्राग्दृश्यम्',
@@ -1329,7 +1310,6 @@ You can still [$1 view this revision]",
 'prefs-email' => 'इमेल वैकल्पिकाः',
 'prefs-rendering' => 'स्वरुपः',
 'saveprefs' => 'संरक्ष्यताम्',
-'resetprefs' => 'असंरक्षितानि परिवर्तनानि विलुप्यन्ताम्',
 'restoreprefs' => 'समग्राः व्यवस्थादय व्यवस्थानुसारं पुनः संरक्ष्यताम्',
 'prefs-editing' => 'सम्पादनम्',
 'rows' => 'पंक्ति',
@@ -1347,7 +1327,6 @@ You can still [$1 view this revision]",
 'localtime' => 'स्थानीय समय:',
 'timezoneuseserverdefault' => 'विकिनिश्चितं ($1) उपयुज्यताम् ।',
 'timezoneuseoffset' => 'अन्ये (समयान्तरं निर्दिशतु )',
-'timezoneoffset' => 'समयान्तरम् ¹',
 'servertime' => 'वितारकसमयः ।',
 'guesstimezone' => 'जालदर्शिकातः पूरयतु ।',
 'timezoneregion-africa' => 'कालद्वीप',
@@ -2056,10 +2035,8 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'protectedpages' => 'सुरक्षितानि पुतानि ।',
 'protectedpages-indef' => 'अनिर्दिष्टसुरक्षा केवलम् ।',
 'protectedpages-cascade' => 'प्रपातसंरक्षणं केवलम् ।',
-'protectedpagestext' => 'अधोसूचितपुटानि चालनात् सम्पादनात् वा सुरक्षितानि ।',
 'protectedpagesempty' => 'अनेन विस्तारेण न किमपि पुटं सद्यः न सुरक्षितम् ।',
 'protectedtitles' => 'सुरक्षितानि शीर्षकानि ।',
-'protectedtitlestext' => 'अधो दत्तशीर्षकाणि सर्जनात् रक्षितानि ।',
 'protectedtitlesempty' => 'एतैः विस्तारैः न किमपि शीर्षकं सद्यः परिरक्षितानि ।',
 'listusers' => 'योजक सूचि',
 'listusers-editsonly' => 'केवलं सम्पादनसहितयोजकान् दर्शयतु ।',
@@ -3521,10 +3498,6 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 'exif-urgency-high' => 'उन्नतम् ($1)',
 'exif-urgency-other' => 'योजकनिरूपिता आद्यता : $1',
 
-# External editor support
-'edit-externally' => 'बाह्यां प्रणालीम् उपयुज्य इयं सञ्चिका सम्पाद्यताम् ।',
-'edit-externally-help' => '(अधिकासूचनार्थं [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] इत्येतत् दृश्यताम्)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सर्वाणि',
 'namespacesall' => 'सर्वाणि',
@@ -3728,8 +3701,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'विशेषपृष्ठानि',
-'specialpages-note' => '----
-* साधारणं विशेषपुटम् । 
+'specialpages-note' => '* साधारणं विशेषपुटम् । 
 * <span class="mw-specialpagerestricted">प्रतिद्धं विशेषपुटम् ।</span>',
 'specialpages-group-maintenance' => 'निर्वहणवृत्तानि ।',
 'specialpages-group-other' => 'अन्यविशेषपुटानि ।',
@@ -3917,4 +3889,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 1f6fa8a..b38de6b 100644 (file)
@@ -201,7 +201,6 @@ $messages = array(
 'qbedit' => 'Уларыт',
 'qbpageoptions' => 'Бу сирэй',
 'qbmyoptions' => 'Мин сирэйдэрим',
-'qbspecialpages' => 'Аналлаах сирэйдэр',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -317,8 +316,6 @@ $1',
 'ok' => 'Сөп',
 'retrievedfrom' => '"$1" -н кэллэ',
 'youhavenewmessages' => '$1 ($2) кэллэ',
-'newmessageslink' => 'саҥа суруктар',
-'newmessagesdifflink' => 'кэлиҥҥи уларытыы',
 'youhavenewmessagesfromusers' => 'Маны $1 {{PLURAL:$3|соҕотох кыттааччыттан|$3 кыттааччыттан}} туппуккун ($2).',
 'youhavenewmessagesmanyusers' => 'Маны $1 элбэх кыттааччыттан туппуккун ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|саҥа этии|саҥа этии}}',
@@ -415,9 +412,6 @@ $1',
 'perfcached' => 'Бу кээстэн ылыллыбыт онон бүтэһик уларыйыылары аахсымыан сөп. Кээскэ {{PLURAL:$1|соҕотох суруктан|$1 суруктан}} ордук хараллыбат.',
 'perfcachedts' => 'Бу билии кээстэн ылыллыбыт, бүтэһигин $1 уларыйбыт. Кээскэ {{PLURAL:$4|соҕотох суруктан|$4 суруктан}} ордук хараллыбат.',
 'querypage-no-updates' => 'Бу сирэй уларыйыыта бобуллан турар. Билиитэ билигин кыайан уларыйбат.',
-'wrong_wfQuery_params' => 'wfQuery() сыыһа киллэриилээх<br />
-Пуунсуйата: $1<br />
-Ыйытыга: $2',
 'viewsource' => 'Көрүү',
 'viewsource-title' => 'Бу сирэй $1 исходнигын көрүү',
 'actionthrottled' => 'Түргэнин хааччахтааһын',
@@ -1103,12 +1097,8 @@ $1",
 # Search results
 'searchresults' => 'Булулунна',
 'searchresults-title' => 'Көрдөөһүн түмүгэ "$1"',
-'searchresulttext' => 'Көрдөөһүн туһунан сиһилии ааҕыаххын баҕардаххына [[{{MediaWiki:Helppage}}|маны]] көр.',
-'searchsubtitle' => 'Эн [[:$1]] көмөтүнэн ([[Special:Prefixindex/$1|"$1" саҕаланар сирэйдэри ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" сигэнэр сирэйдэри]]) көрдөөбүтүҥ',
-'searchsubtitleinvalid' => 'По запросу «$1»',
 'toomanymatches' => 'Наһаа элбэх ыйытыы төнүннэ, бука диэн атыннык көрдөө',
 'titlematches' => 'Ыстатыйалар ааттара хоһулаһар',
-'notitlematches' => 'Ыстатыйалар ааттара хоһуласпаттар',
 'textmatches' => 'Ыстатыйалар истэрэ хатыланар',
 'notextmatches' => 'Ыстатыйалар истэрэ хатыламмат',
 'prevn' => 'инники {{PLURAL:$1|$1}}',
@@ -1117,10 +1107,8 @@ $1",
 'nextn-title' => 'Бу кэннинээҕи $1 {{PLURAL:$1|сурук|суруктар}}',
 'shown-title' => 'Сирэйгэ $1 {{PLURAL:$1|суругу|суруктары}} көрдөр',
 'viewprevnext' => 'Көр ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Көрдөөһүн туруоруулара',
 'searchmenu-exists' => "'''Бу биикигэ бу сирэй маннык ааттаах \"[[\$1]]\"'''",
 'searchmenu-new' => "'''Бу биикигэ \"[[:\$1]]\" сирэйи айарга!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Маннык префикстаах сирэйдэри көрөргө]]',
 'searchprofile-articles' => 'Ыстатыйалар истэрэ',
 'searchprofile-project' => 'Көмө уонна Бырайыак сирэйдэрэ',
 'searchprofile-images' => 'Мультимедиа',
@@ -1148,13 +1136,10 @@ $1",
 'showingresults' => 'Манна {{PLURAL:$1|түмүк|түмүктэр}} {{PLURAL:$1|көрдөрүлүннэ|көрдөрүлүннүлэр}} <strong>$1</strong> , мантан саҕалаан №&nbsp;<strong>$2</strong>.',
 'showingresultsnum' => 'Манна {{PLURAL:$3|түмүк|түмүктэр}} {{PLURAL:$3|көрдөрөлүннэ|көрдөрүлүннүлэр}} <strong>$3</strong>, мантан саҕалаан №&nbsp;<strong>$2</strong>.',
 'showingresultsheader' => "'''$4''' анаммыт {{PLURAL:$5|мантан '''$3''' түмүгэ - '''$1'''|мантан '''$3''' түмүктэрэ '''$1 - $2'''}}",
-'nonefound' => "'''Болҕой:''' Анаан эппэтэххэ көрдөөһүн аат сорох далларыгар эрэ көрдүүр. Бу сыһыарыыны ''all:'' тутуннаххына аат туох баар далларыгар барытыгар (холобур, кыттаачылар ырыытыыларыгар, халыыптарга иҥин) көрдүөҕэ.",
 'search-nonefound' => 'Көрдөбүлгэ эппиэттиир билэлэр көстүбэтилэр.',
-'powersearch' => 'Бу бөлөхтөргө көрдөө',
 'powersearch-legend' => 'Дириҥэтэн көрдөөһүн',
 'powersearch-ns' => 'Аат далыгар көрдөө:',
 'powersearch-redir' => 'Утаарыылар тиһиликтэрэ',
-'powersearch-field' => 'Көрдөөһүн',
 'powersearch-togglelabel' => 'Бэлиэтээ:',
 'powersearch-toggleall' => 'Барытын',
 'powersearch-togglenone' => 'Бэлиэтээмэ',
@@ -1166,8 +1151,6 @@ $1",
 'preferences' => 'Уларытыылар',
 'mypreferences' => 'Туруоруулар',
 'prefs-edits' => 'Көннөрүү ахсаана:',
-'prefsnologin' => 'Ааккын эппэтиҥ',
-'prefsnologintext' => 'Эн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ааккын эттэххинэ]</span> эрэ кыттаачы туруорууларын уларытар кыахтаныаҥ.',
 'changepassword' => 'Киирии тылы уларытарга',
 'prefs-skin' => 'Тас көстүү',
 'skin-preview' => 'Хайдах буолара',
@@ -1191,7 +1174,6 @@ $1",
 'prefs-email' => 'Email туруоруулара',
 'prefs-rendering' => 'Тас көрүҥэ',
 'saveprefs' => 'Бигэргэт',
-'resetprefs' => 'Бигэргэтиллибэтэх уларыйыылары сот',
 'restoreprefs' => 'Туруоруулары саҥаттан (салааларга барыларыгар)',
 'prefs-editing' => 'Уларытыы',
 'rows' => 'Строкаалара:',
@@ -1209,7 +1191,6 @@ $1",
 'localtime' => 'Олохтоох кэмим:',
 'timezoneuseserverdefault' => 'Сиэрбэр туруоруутунан ($1)',
 'timezoneuseoffset' => 'Атын (сыҕарыйыытын көрдөр)',
-'timezoneoffset' => 'Сыҕарыйыы¹:',
 'servertime' => 'Сиэрбэр бириэмэтэ:',
 'guesstimezone' => 'Интэриниэтим бырагыраамматыттан ылан толор',
 'timezoneregion-africa' => 'Африка',
@@ -1460,6 +1441,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 кэнниттэн оҥоһуллубуттары көрдөр',
@@ -1958,10 +1940,8 @@ $1',
 'protectedpages' => 'Көмүскэммит ыстатыйалар',
 'protectedpages-indef' => 'Болдьоҕо суох эрэ көмүскэллэр',
 'protectedpages-cascade' => 'Каскаадынан эрэ көмүскэнии',
-'protectedpagestext' => 'Бу ыстатыйалар аатын уларытартан уонна көннөрөртөн көмүскэммиттэр',
 'protectedpagesempty' => 'Билигин этиллибит параметрдаах көмүскэниллибит ыстатыйалар суохтар.',
 'protectedtitles' => 'Көмүскэммит ааттар',
-'protectedtitlestext' => 'Бу ааттары оҥорор/айар бобуллар',
 'protectedtitlesempty' => 'Биир да аат бу параметрдарынан көмүскэммэт',
 'listusers' => 'Кыттааччылар испииһэктэрэ',
 'listusers-editsonly' => 'Саатар биир көннөрүүнү оҥорбут кыттааччылары көрдөр',
@@ -3464,10 +3444,6 @@ $1',
 'exif-urgency-high' => 'Үрдүк ($1)',
 'exif-urgency-other' => 'Кыттааччы эппит приоритета ($1)',
 
-# External editor support
-'edit-externally' => 'Бу билэни таһынааҕы бырагыраамма көмөтүнэн уларытарга',
-'edit-externally-help' => 'Сиһилии бу ыйынньыгынан баран көр: [https://www.mediawiki.org/wiki/Manual:External_editors туруоруулар туһунан].',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бары',
 'namespacesall' => 'бары',
@@ -3690,8 +3666,7 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 
 # Special:SpecialPages
 'specialpages' => 'Анал сирэйдэр',
-'specialpages-note' => '----
-* Көннөрү анал сирэйдэр.
+'specialpages-note' => '* Көннөрү анал сирэйдэр.
 * <strong class="mw-specialpagerestricted">Хааччахтардаах анал сирэйдэр.</strong>
 * <span class="mw-specialpagecached">Кээстэммит анал сирэйдэр (эргэрбит буолуохтарын сөп).</span>',
 'specialpages-group-maintenance' => 'Техническэй отчуоттар',
@@ -3888,4 +3863,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..a67ece4 100644 (file)
@@ -162,7 +162,6 @@ $messages = array(
 'qbedit' => 'Tońge',
 'qbpageoptions' => 'Noa sakam',
 'qbmyoptions' => 'In̕anḱ sakamko',
-'qbspecialpages' => 'Asokay teaḱ sakamko',
 'faq' => 'Baḍae kupuliko',
 'faqpage' => 'Project:FAQ',
 
@@ -276,8 +275,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',
@@ -360,9 +357,6 @@ Pasec eṭaḱ hoṛ noa do lahareko get giḍi akada.',
 'badtitletext' => 'Amaḱ nehorakaḱ sakam ńutum do bań puraoa, bạnuka, se be sudhrạo joṛao bhitri katha se bhitri wiki ńutum.
 Noa re do mit se aema bisó menaḱa oka do ńutumre bań beoharok.',
 'querypage-no-updates' => 'Noa sakam reaḱ nahaḱ halot bondo gea. Nonḍe doho akana ḍaṭako do baṅ saphaḱa.',
-'wrong_wfQuery_params' => 'wfQuery ()-re vul perameṭar em hoeakana<br />
-Fańson: $1<br />
-Query: $2',
 'viewsource' => 'Vitrireaḱ ńelme',
 'viewsource-title' => '$1 renaḱ ńamoḱ ṭhại ńelmẽ',
 'actionthrottled' => 'Kạmi reaḱ dhara bại',
@@ -732,7 +726,6 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'prefs-changeemail' => 'E-mail ṭhikạna bodolme',
 'prefs-setemail' => 'E-mail ṭhikana benaome',
 'saveprefs' => 'Rukhiyạymẽ',
-'resetprefs' => 'Baṅ rukhiyạaḱ ocogmẽ',
 'rows' => 'Sạrko:',
 'searchresultshead' => 'Sendra',
 'timezoneregion-africa' => 'Aphrika',
@@ -1160,10 +1153,6 @@ jeleń',
 'exif-datetime' => 'Rẽt bodol reaḱ tạrikh ar okte',
 'exif-artist' => 'Onoliạ',
 
-# External editor support
-'edit-externally' => 'Noa rẽt tońge joṛao lạgitte bahre reaḱ koejoń  beoharme',
-'edit-externally-help' => '(Nonḍe ńelme [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] bạṛtite baḍay lạgit)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Sanam, sanamak, sanamko',
 'namespacesall' => 'sanam',
index 7b7490c..fa3cdb3 100644 (file)
@@ -194,7 +194,6 @@ $messages = array(
 'qbedit' => 'Acontza',
 'qbpageoptions' => 'Possibilidades de sa pàgina',
 'qbmyoptions' => 'Is preferèntzias meas',
-'qbspecialpages' => 'Pàginas spetziales',
 'faq' => 'Pregontas/Respostas (FAQ)',
 'faqpage' => 'Project:FAQ',
 
@@ -293,8 +292,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',
@@ -608,18 +605,13 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
 # Search results
 'searchresults' => 'Resurtados de sa chirca',
 'searchresults-title' => 'Resurtados pro sa chirca de "$1"',
-'searchresulttext' => 'Pro àteras informatziones a subra sa chirca intre de {{SITENAME}}, càstia [[{{MediaWiki:Helppage}}|Chirca in {{SITENAME}}]].',
-'searchsubtitle' => 'Chirca de \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|totu is pàginas ca incumentzant pro "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totu is pàginas chi ligant a "$1"]])',
-'searchsubtitleinvalid' => 'As chircadu "$1"',
 'titlematches' => "Currispondèntzias in su tìtulu de s'artìculu",
-'notitlematches' => 'Peruna currispondentzia de is tìtulos de pàgina',
 'textmatches' => "Currispondèntzias in su testu de s'artìculu",
 'notextmatches' => "Peruna currispondèntzia in su testu de s'artìculu",
 'prevn' => '{{PLURAL:$1|cabudianu|cabudianos $1}}',
 'nextn' => '{{PLURAL:$1|imbeniente|imbenientes $1}}',
 'shown-title' => 'Ammustra $1 {{PLURAL:$1|resurtadu|resurtados}} pro pàgina',
 'viewprevnext' => 'Càstia ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Possibilidades de chirca',
 'searchprofile-everything' => 'Totu',
 'searchprofile-advanced' => 'Avantzada',
 'searchprofile-articles-tooltip' => 'Chirca in $1',
@@ -637,13 +629,9 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
 'searchall' => 'totu',
 'showingresults' => "Inoghe sighende {{PLURAL:$1|benit ammustradu '''1''' resurtadu|benint ammustrados '''$1''' resurtados}} incumentzende dae su nùmeru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultadu '''$1''' de '''$3'''|Resultadus '''$1 - $2''' de '''$3'''}} pro '''$4'''",
-'nonefound' => "'''Annota''': sa chirca est fata \"pro definidura\" sceti in unos cantos Nùmene-logos.
-Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàginas de cuntierra, template, etc), opuru sèbera comente prefissu su pretzisu Nùmene-logu ki boles.",
-'powersearch' => 'Chirca',
 'powersearch-legend' => 'Chirca delantada',
 'powersearch-ns' => 'Chirca in su nùmene-logu:',
 'powersearch-redir' => 'Lista re-indiritzamentos',
-'powersearch-field' => 'Chirca',
 'powersearch-togglelabel' => 'Seletziona:',
 'powersearch-toggleall' => 'Totu',
 'powersearch-togglenone' => 'Nudda',
@@ -652,8 +640,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',
-'prefsnologintext' => 'Depes èsser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} intradu]</span> pro seberare is preferèntzias.',
 'changepassword' => 'Càmbia password',
 'prefs-skin' => 'Bisura',
 'skin-preview' => 'Antiprima',
@@ -664,7 +650,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'prefs-misc' => 'Àteras preferèntzias',
 'prefs-resetpass' => 'Càmbia password',
 'saveprefs' => 'Sarva preferèntzias',
-'resetprefs' => 'Re-imposta is preferèntzias',
 'prefs-editing' => 'Box de acontzadura',
 'rows' => 'Lìnias:',
 'columns' => 'Colunnas:',
@@ -675,7 +660,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'savedprefs' => 'Is preferèntzias tuas sunt stadas sarbadas.',
 'timezonelegend' => 'Zona de oràriu:',
 'localtime' => 'Ora locale:',
-'timezoneoffset' => 'Diferèntzia¹:',
 'timezoneregion-africa' => 'Àfrica',
 'timezoneregion-america' => 'Amèrica',
 'timezoneregion-antarctica' => 'Antàrtide',
@@ -775,6 +759,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',
@@ -1439,10 +1424,6 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
 
 'exif-sharpness-0' => 'Normale',
 
-# External editor support
-'edit-externally' => 'Acontza custu file usendi unu programma de foras',
-'edit-externally-help' => '(Pro àteras informatziones càstia is [https://www.mediawiki.org/wiki/Manual:External_editors istrutziones])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totu',
 'namespacesall' => 'totu',
@@ -1525,4 +1506,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 5c1ee3e..cb964b3 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' ),
@@ -309,7 +309,6 @@ $messages = array(
 'qbedit' => 'Cancia',
 'qbpageoptions' => 'Opzioni pàggina',
 'qbmyoptions' => 'Li mè pàggini',
-'qbspecialpages' => 'Pàggini spiciali',
 'faq' => 'Dumanni cumuni',
 'faqpage' => 'Project:Dumanni comuni',
 
@@ -423,8 +422,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}}',
@@ -515,9 +512,6 @@ Nun desi nudda spiecazzioni.",
 'perfcached' => "'''Nota:''' li dati ca sèquinu sunnu stratti di na copia ''cache'' dû database, nun aggiurnati n tempu riali. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => 'Li dati ccà sutta foru attruvati e sunnu aggiurnati ô $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "L'aggiurnamenti dâ pàggina sunnu timpuraniamenti suspisi. Li dati 'n chidda cuntinuti nun vèninu aggiurnati.",
-'wrong_wfQuery_params' => 'Paràmitri errati pi wfQuery()<br />
-Funzioni: $1<br />
-Query: $2',
 'viewsource' => 'Talìa la fonti',
 'viewsource-title' => 'Visualizza la surgenti di $1',
 'actionthrottled' => 'Azzioni ritardata',
@@ -1020,12 +1014,8 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 # Search results
 'searchresults' => 'Risurtati dâ circata',
 'searchresults-title' => 'Risurtati dâ circata di "$1"',
-'searchresulttext' => 'Pi cchiossai nfurmazzioni supra la circata nterna di {{SITENAME}}, talìa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Pruvasti a circari: '''[[$1]]'''",
-'searchsubtitleinvalid' => "Circata di '''$1'''",
 'toomanymatches' => 'Troppi currispunnenzi. Cancia la richiesta.',
 'titlematches' => "Ntê tìtuli di l'artìculi",
-'notitlematches' => 'Nudda currispunnenza ntê tìtuli dî pàggini',
 'textmatches' => "Ntô testu di l'artìculi",
 'notextmatches' => 'Nudda currispunnenza ntô testu dî pàggini',
 'prevn' => 'li pricidenti {{PLURAL:$1|$1}}',
@@ -1034,10 +1024,8 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'nextn-title' => '{{PLURAL:$1|Risultatu successivu|$1 risultata successivi}}',
 'shown-title' => 'Ammustra {{PLURAL:$1|nu risultatu|$1 risultati}} pi pàggina',
 'viewprevnext' => 'Talìa ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzioni di circata',
 'searchmenu-exists' => "* Pàggina '''[[$1]]'''",
 'searchmenu-new' => "'''Crea la pàggina \"[[:\$1]]\" supra sta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza li pàggini cu stu prifissu]]',
 'searchprofile-articles' => 'Pàggini di cuntinutu',
 'searchprofile-project' => "Pàggini d'ajutu e dô pruggettu",
 'searchprofile-images' => 'Multimedia',
@@ -1065,13 +1053,10 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'showingresults' => "Ammustra nzinu a {{PLURAL:$1|'''1''' risurtatu|'''$1''' risurtati}} a pàrtiri dô nùmmuru '''$2'''.",
 'showingresultsnum' => "L'alencu cunteni {{PLURAL:$3|'''1''' risurtatu|'''$3''' risurtati}} a pàrtiri dû nùmmuru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultatu '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} pi '''$4'''",
-'nonefound' => "'''Nota''': la circata è effittuata pi default sulu nta arcuni namespace. Prova a primèttiri ''all:'' ô testu dâ circata pi circari nta tutti li namespace (cumprisi pàggini di discussioni, template, ecc) oppuru usa lu namespace disidiratu comu prifissu.",
 'search-nonefound' => 'La circata nun desi nuddu risurtatu.',
-'powersearch' => 'Arriscedi',
 'powersearch-legend' => 'Ricerca avanzata',
 'powersearch-ns' => 'Cerca ntê namespace:',
 'powersearch-redir' => 'Elenca redirect',
-'powersearch-field' => 'Cerca',
 'powersearch-togglelabel' => 'Silizziona:',
 'powersearch-toggleall' => 'Tutti',
 'powersearch-togglenone' => 'Nuddu',
@@ -1082,8 +1067,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',
-'prefsnologintext' => 'Pi putiri pirsunalizzari li prifirenzi è nicissariu fari l\'<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} accessu]</span>.',
 'changepassword' => 'Cancia la password',
 'prefs-skin' => 'Aspettu',
 'skin-preview' => 'Antiprima',
@@ -1104,7 +1087,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'prefs-email' => 'Opzioni email',
 'prefs-rendering' => 'Aspettu',
 'saveprefs' => 'Sarva li prifirenzi',
-'resetprefs' => 'Annulla',
 'restoreprefs' => 'Ripristina li mpustazzioni di default',
 'prefs-editing' => 'Cancia',
 'rows' => 'Righi:',
@@ -1122,7 +1104,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'localtime' => 'Uràriu lucali',
 'timezoneuseserverdefault' => 'Usa uràriu dû server',
 'timezoneuseoffset' => 'Àutru (spicificari diffirenza)',
-'timezoneoffset' => 'Uri di diffirenza¹',
 'servertime' => 'Uràriu dû server',
 'guesstimezone' => "Usa l'ura dû tò browser",
 'timezoneregion-africa' => 'Africa',
@@ -1336,6 +1317,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',
@@ -1665,10 +1647,8 @@ Li redirect <del>cancillati</del> furunu curretti.',
 'protectedpages' => 'Pàggini prutetti',
 'protectedpages-indef' => 'Sulu prutizzioni nfiniti',
 'protectedpages-cascade' => 'Sulu prutizzioni ricursivi',
-'protectedpagestext' => 'Sta pàggina hà statu prutiggiuta pi mpidìrinni lu canciamentu.',
 'protectedpagesempty' => 'A lu mumentu nun ci sunnu pàggini prutetti',
 'protectedtitles' => 'Tituli prutiggiuti',
-'protectedtitlestext' => 'Nun si ponnu criari pàggini ccu li tìtuli nnicati di sècutu',
 'protectedtitlesempty' => 'Nta stu mumentu nun ci sunnu tìtuli prutetti ccu li paràmitri nnicati.',
 'listusers' => 'Lista di utilizzatura',
 'listusers-editsonly' => 'Ammustra sulu utenti cu cuntribbuti',
@@ -2787,10 +2767,6 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
 'exif-gpsdirection-t' => 'Direzzioni riali',
 'exif-gpsdirection-m' => 'Direzzioni magnètica',
 
-# External editor support
-'edit-externally' => 'Cancia stu file usannu un prugramma sternu',
-'edit-externally-help' => "Pi chiossai nfurmazzioni cunzurtari l'[https://www.mediawiki.org/wiki/Manual:External_editors istruzzioni] ('n ngrisi)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutti',
 'namespacesall' => 'Tutti',
@@ -2939,8 +2915,7 @@ Stu còdici di cunferma scadi automaticamenti a li $4.',
 
 # Special:SpecialPages
 'specialpages' => 'Pàggini spiciali',
-'specialpages-note' => '----
-* Pàggini spiciali non risirvati.
+'specialpages-note' => '* Pàggini spiciali non risirvati.
 * <strong class="mw-specialpagerestricted">Pàggini spiciali risirvati sulu a quarchi catigurìa d\'utenti.</strong>',
 'specialpages-group-maintenance' => 'Resocunti di manutinzioni',
 'specialpages-group-other' => 'Autri pàggini spiciali',
index 2d96fb6..4bf8b35 100644 (file)
@@ -158,7 +158,6 @@ $messages = array(
 'qbedit' => 'Edit',
 'qbpageoptions' => 'This page',
 'qbmyoptions' => 'Ma pages',
-'qbspecialpages' => 'Byordinar pages',
 'faq' => 'ASQ',
 'faqpage' => 'Project:ASQ',
 
@@ -259,8 +258,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',
@@ -341,9 +338,6 @@ Please lat an [[Special:ListUsers/sysop|administrator]] ken aboot this, makin no
 'perfcached' => 'The follaeing data is cached an michtna be richt up tae date. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'The followin data is cached, an wis hindermaist chynged $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Updates for this page ar disablit at the meenit. Data here wilnae be refreshit at the meenit.',
-'wrong_wfQuery_params' => 'Wrang parameters tae wfQuery()<br />
-Exerce: $1<br />
-Aks: $2',
 'viewsource' => 'View soorce',
 'actionthrottled' => 'Action devalit',
 'actionthrottledtext' => 'As an anti-spam meisur, ye ar limitit frae daein this action ower mony times in a ower short tid, an ye hae exceedit this limit. Please try again in a wee.',
@@ -688,11 +682,7 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 # Search results
 'searchresults' => 'Rake results',
 'searchresults-title' => 'Rake affcome for "$1"',
-'searchresulttext' => 'For mair information aboot rakin {{SITENAME}}, see [[{{MediaWiki:Helppage}}|Rakin {{SITENAME}}]].',
-'searchsubtitle' => "Ye raked for '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Ye raked for '''$1'''",
 'titlematches' => 'Airticle teitle matches',
-'notitlematches' => 'Nae page teitle matches',
 'notextmatches' => 'Nae page text matches',
 'prevn' => 'foregaun {{PLURAL:$1|$1}}',
 'nextn' => 'neist {{PLURAL:$1|$1}}',
@@ -723,18 +713,13 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'showingresults' => "Shawin ablo up tae {{PLURAL:$1|'''1''' result|'''$1''' results}} stertin wi #'''$2'''.",
 'showingresultsnum' => "Shawin ablo {{PLURAL:$3|'''1''' result|'''$3''' results}} stertin wi #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Ootcome '''$1''' of '''$3'''|Ootcomes '''$1 - $2''' of '''$3'''}} for '''$4'''",
-'nonefound' => "'''Mynd''': unsuccessfu rakes is afttimes caused bi rakin for common words like \"hae\" an \"frae\", that isna indexed, or bi specifeein mair nor ae rake term (juist pages haudin aa the rake terms will kythe in the result).",
 'search-nonefound' => "Thare wur na ootcomes matching th' query.",
-'powersearch' => 'Rake',
 'powersearch-redir' => 'Leet redirects',
-'powersearch-field' => 'Rake for',
 'powersearch-toggleall' => 'Aw',
 'searchdisabled' => 'Rakin throu {{SITENAME}} is disabled for performance raesons. Ye can rake via Google juist nou. Mynd that thair indexes o {{SITENAME}} content micht be oot o date.',
 
 # Preferences page
 'mypreferences' => 'Ma preferences',
-'prefsnologin' => 'No loggit in',
-'prefsnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] tae set uiser preferences.',
 'changepassword' => 'Chynge password',
 'prefs-skin' => 'Huil',
 'skin-preview' => 'First Leuk',
@@ -752,7 +737,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'stub-threshold-disabled' => 'Tuckie',
 'recentchangescount' => 'Nummer o teitles in recent chynges',
 'savedprefs' => 'Yer preferences haes been hained.',
-'timezoneoffset' => 'Affset',
 'servertime' => 'Server time is nou',
 'guesstimezone' => 'Fill in frae brouser',
 'allowemail' => 'Allou email frae ither uisers',
@@ -1449,10 +1433,6 @@ If th' file haes bin modified frae tis original state, some details kin nae full
 
 'exif-contrast-1' => 'Saft',
 
-# External editor support
-'edit-externally' => 'Edit this file uisin an external application',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for mair guidance.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aw',
 'namespacesall' => 'aa',
index b9ff975..dff707f 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( 'برآمد' ),
@@ -248,7 +246,6 @@ $messages = array(
 'qbedit' => 'سنواريو',
 'qbpageoptions' => 'هيءُ صفحو',
 'qbmyoptions' => 'منهنجا صفحا',
-'qbspecialpages' => 'خاص صفحا',
 'faq' => 'ڪپوس',
 'faqpage' => 'Project:ڪپوس',
 
@@ -333,8 +330,6 @@ $messages = array(
 'ok' => 'ٺيڪ',
 'retrievedfrom' => '"$1" تان ورتل',
 'youhavenewmessages' => 'توهان لاءِ $1 ($2) آهن.',
-'newmessageslink' => 'نوان نياپا',
-'newmessagesdifflink' => 'آخري تبديلي',
 'editsection' => 'سنواريو',
 'editold' => 'سنواريو',
 'viewsourceold' => 'ڪوڊ ڏسو',
@@ -523,7 +518,6 @@ You cannot use the 'e-mail this user' feature unless a valid e-mail address is s
 'prevn' => 'پويان {{PLURAL:$1|$1}}',
 'nextn' => 'اڳيان {{PLURAL:$1|$1}}',
 'viewprevnext' => 'ڏسو ($1 {{int:pipe-separator}} $2) ($3)',
-'powersearch' => 'نفيس ڳولا',
 'powersearch-redir' => 'چورڻن جي فهرست ڏيکاريو',
 
 # Preferences page
@@ -952,10 +946,6 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
 'exif-gpsspeed-m' => 'ميل في ڪلاڪ',
 'exif-gpsspeed-n' => 'ڳنڍيون',
 
-# External editor support
-'edit-externally' => 'هيءُ فائيل ڪنهن خارجي منتقڪريءَ سان سنواريو',
-'edit-externally-help' => 'وڌيڪ معلومات لاءِ [https://www.mediawiki.org/wiki/Manual:External_editors هدايتون براءِ تنصيبڪاري] ڏسندا.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'سڀ',
 'namespacesall' => 'سڀ',
index 06629dd..bfef62e 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' ),
@@ -228,7 +226,6 @@ $messages = array(
 'qbedit' => 'Mudifigga',
 'qbpageoptions' => 'Prifirenzi pàgina',
 'qbmyoptions' => "Li me' pàgini",
-'qbspecialpages' => 'Pàgini ippiziari',
 'faq' => 'FAQ (infuimmazioni e aggiuddu)',
 'faqpage' => 'Project:FAQ (infuimmazioni e aggiuddu)',
 
@@ -322,8 +319,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',
@@ -398,9 +393,6 @@ Si priga di cuntattà un'[[Special:ListUsers/sysop|amministhradore]], ippizzific
 'perfcached' => "Li dati chi seghini so cabaddi da una còpia i' la mimória cache di la bancadati, no aggiornaddi in tempu riari. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => "Li dati chi seghini so cabaddi da una còpia i' la mimória cache di la bancadati. Ulthimu aggiornamentu: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => "L'aggiornamenti di la pàgina so timpuraniamenti suippesi. Li dati in edda cuntinuddi no sarani aggiornaddi.",
-'wrong_wfQuery_params' => "Errori i' li parametri inviaddi a la funzioni wfQuery()<br />
-funzioni: $1<br />
-Interrogazioni: $2",
 'viewsource' => 'Vèdi còdizi',
 'actionthrottled' => 'Azioni limitadda',
 'actionthrottledtext' => "Cumenti rimédiu anti-spam, v'è un lìmiti a l'azioni ch'è pussìbiri eseguì i'nu tempu isthabiriddu, e abà suparaddu. Pògu tèmpu e pói riprubà.",
@@ -749,17 +741,12 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 # Search results
 'searchresults' => 'Risulthaddi di la zercha',
 'searchresults-title' => 'Risulthaddi di la zercha di "$1"',
-'searchresulttext' => 'Pà maggiori infuimmazioni i cumenti zirchà i {{SITENAME}}, vèdi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Zercha di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutti li pagini ch\'ischumenzani pa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tutti li pagini chi puntani a "$1"]])',
-'searchsubtitleinvalid' => "Zirchendi '''$1'''",
 'titlematches' => 'Curripundènzi i lu tìturu di li pagini',
-'notitlematches' => 'Nisciuna curripundènzia i lu tìturi di li pàgini',
 'textmatches' => 'Curripundènzi i lu teshu di li pàgini',
 'notextmatches' => 'Nisciuna curripundènzia i lu teshu di li pàgini',
 'prevn' => 'prizzidenti {{PLURAL:$1|$1}}',
 'nextn' => 'sighenti {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Vèdi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzioni di zercha',
 'searchprofile-everything' => 'Tuttu',
 'search-result-size' => '$1 ({{PLURAL:$2|una paraura|$2 parauri}})',
 'search-redirect' => '(rinviu $1)',
@@ -773,12 +760,9 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'searchall' => 'tutti',
 'showingresults' => "Accó {{PLURAL:$1|màssimu '''1''' risulthaddu|màssimu li '''$1''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
 'showingresultsnum' => "Accó {{PLURAL:$3|'''1''' risulthaddu |li '''$3''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
-'nonefound' => "'''Nota''': Soru zerthi tipi di pàgina so zirchaddi i'otomàtiggu. Pruba ischribendi primma di la zercha toia ''all:'' pa zirchà tutti li cuntinuddi (dischussioni, mudelli, etc), o usa lu tipi di pàgina disizaddu cumenti prefissu.",
-'powersearch' => 'Zercha abanzadda',
 'powersearch-legend' => 'Zercha abanzadda',
 'powersearch-ns' => "Zercha i' li tipi di pàgina:",
 'powersearch-redir' => 'Listha rinvii',
-'powersearch-field' => 'Zercha',
 'powersearch-toggleall' => 'Tutti',
 'powersearch-togglenone' => 'Nisciunu',
 'searchdisabled' => 'Abà no pói zirchà in {{SITENAME}}; proba cun Google o sìmiri, ma ammèntaddi chi li cuntinuddi di {{SITENAME}} poni assé no aggiornaddi.',
@@ -787,8 +771,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',
-'prefsnologintext' => 'Pa mudìfiggà li prifirenzi è nezzessàriu [[Special:UserLogin|intrà]].',
 'changepassword' => "Ciamba paràura d'órdhini",
 'prefs-skin' => 'Aipettu gràficu',
 'skin-preview' => 'antiprimma',
@@ -801,7 +783,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'prefs-watchlist-edits' => 'Nùmaru di mudìfigghi da musthrà cu li funzioni abanzaddi:',
 'prefs-misc' => 'Vari',
 'saveprefs' => 'Saivva li prifirenzi',
-'resetprefs' => 'Rimpusthà li prifirènzi',
 'prefs-editing' => 'Casella di mudìfigga',
 'rows' => 'Righi:',
 'columns' => 'Curonni:',
@@ -813,7 +794,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'savedprefs' => 'Li tó prifirènzi so isthaddi saivvaddi.',
 'timezonelegend' => 'Fusu oràriu:',
 'localtime' => 'Ora lucari:',
-'timezoneoffset' => 'Diffarènzia¹:',
 'servertime' => 'Ora di lu server:',
 'guesstimezone' => "Usa l'ora di lu tóiu nabiggadori",
 'allowemail' => "Cunsenti lu rizzibimentu di postha erettrònica d'althri utenti (1)",
@@ -1147,10 +1127,8 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'deadendpages' => 'Pàgini chena iscidda',
 'deadendpagestext' => 'Li sighenti pàgini so chena cullegamenti bessu althri pàgini di {{SITENAME}}.',
 'protectedpages' => 'Pàgini prutiggiddi',
-'protectedpagestext' => "Inogghi v'è un'erencu di li pàgini prutiggiddi, di li quari è impididda la mudìfigga o l'ippusthamentu",
 'protectedpagesempty' => 'Abà nò vi so pàgini prutiggiddi.',
 'protectedtitles' => 'Tìturi prutiggiddi',
-'protectedtitlestext' => 'Li sighenti tìturi so prutiggiddi da la criazioni di pàgini nobi',
 'protectedtitlesempty' => 'Abà nò vi so tìturi prutiggiddi.',
 'listusers' => 'Erencu di li utenti',
 'newpages' => 'Pàgini più rizzenti',
@@ -1869,10 +1847,6 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-n' => 'Nodi',
 
-# External editor support
-'edit-externally' => 'Mudìfigga chistu file usendi un prugramma esthernu',
-'edit-externally-help' => "Pa maggiori infuimmazioni cunsulthà l'[https://www.mediawiki.org/wiki/Manual:External_editors isthruzioni] (in ingresu).",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutti',
 'namespacesall' => 'Tutti',
index 3233988..dc1beef 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' ),
@@ -255,7 +253,6 @@ $messages = array(
 'qbedit' => 'Rievdat',
 'qbpageoptions' => 'Siidoásahusat',
 'qbmyoptions' => 'Ásahusat',
-'qbspecialpages' => 'Doaibmasiiddut',
 
 # Vector skin
 'vector-action-addsection' => 'Lasit fáttá',
@@ -343,8 +340,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',
@@ -608,9 +603,6 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 # Search results
 'searchresults' => 'Ohcanbohtosat',
 'searchresults-title' => 'Ohcanbohtosat: «$1»',
-'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
-'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
-'notitlematches' => 'Ohcansátni ii dihtton ovttasge bájilčállagis',
 'prevn' => '← {{PLURAL:$1|$1}} ovddit',
 'nextn' => '{{PLURAL:$1|$1}} čuovvovaš →',
 'viewprevnext' => 'Čájet [$3] oktanaga.
@@ -623,7 +615,6 @@ $1 {{int:pipe-separator}} $2',
 'searchprofile-advanced' => 'Viiddiduvvon',
 'showingresults' => "{{PLURAL:$1|'''Okta''' boađus|'''$1''' bohtosa}} bohtosa'''$2''' rájes.",
 'showingresultsnum' => "Vuolábealde {{PLURAL:$3|lea '''okta''' ohcanboađus|leat '''$3''' ohcanbohtosa}} '''$2.''' bohtosa rájes.",
-'powersearch' => 'Oza',
 'powersearch-ns' => 'Oza nammagomuvuođain:',
 'powersearch-redir' => 'Listu ođđasitstivremiin',
 'powersearch-togglelabel' => 'Rievdat válljema:',
@@ -634,8 +625,6 @@ $1 {{int:pipe-separator}} $2',
 'preferences' => 'Ásahusat',
 'mypreferences' => 'Ásahusat',
 'prefs-edits' => 'Rievdadusaid mearri:',
-'prefsnologin' => 'It leat čálligoahtán sisa',
-'prefsnologintext' => 'Don fertet [[Special:UserLogin|čálligoahtit sisa]], ovdalgo sáhtát rievdadit du ásahusaid.',
 'changepassword' => 'Suollemassáni molson',
 'prefs-skin' => 'Olggosoaidnu',
 'skin-preview' => 'ovdalgihtii geahččan...',
@@ -647,7 +636,6 @@ $1 {{int:pipe-separator}} $2',
 'prefs-watchlist-edits' => 'Rievdadusaid mearri čuovvunlisttus',
 'prefs-misc' => 'Eará',
 'saveprefs' => 'Vurke ásahusaid',
-'resetprefs' => 'Máhcat vurkejuvvon ásahusaid',
 'prefs-editing' => 'Rievdadeapmi',
 'rows' => 'Gurgadasa:',
 'columns' => 'Kolumnat',
@@ -657,7 +645,6 @@ $1 {{int:pipe-separator}} $2',
 'savedprefs' => 'Du ásahusid vurken lihkosmuvai.',
 'timezonelegend' => 'Áigeavádat',
 'localtime' => 'Báikálaš áigi',
-'timezoneoffset' => 'Áigeearru',
 'servertime' => 'Servera áigi',
 'guesstimezone' => 'Jeara neahttabláđejeaddjis',
 'timezoneregion-africa' => 'Afrihkká',
@@ -934,7 +921,6 @@ $1 {{int:pipe-separator}} $2',
 'protectedpages' => 'Suodjáluvvon siiddut',
 'protectedpages-indef' => 'Beare siiddut, maid suodjaleapmi lea bissovaš',
 'protectedpages-cascade' => 'Beare siiddut, maid suodjaleapmi lea viiddiduvvon',
-'protectedpagestext' => 'Čuovvovaš siiddut leat suodjáluvvon sirdimiin ja rievdadusain',
 'protectedtitles' => 'Suodjaluvvon siidonamat',
 'listusers' => 'Geavaheaddjilistu',
 'newpages' => 'Ođđa siiddut',
index e1d8e0d..8a4b162 100644 (file)
@@ -131,7 +131,6 @@ $messages = array(
 'qbedit' => 'Ticpatlöx',
 'qbpageoptions' => 'Jan páhina',
 'qbmyoptions' => 'Hepáhinám',
-'qbspecialpages' => 'Páhinám extravám',
 'faq' => 'Cocmíiit cmaa',
 'faqpage' => 'Project:Cocmíiit cmaa',
 
@@ -216,8 +215,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',
@@ -283,9 +280,6 @@ Jan pos-coccebj plusöxde 1 jöx 1 characterám jan nepos-coccebj usadas titlen
 'perfcached' => 'Jan data coccebj cache ö necoccebj updatenom. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => "Jan data coccebj cache ö coccebjöx updatenom $1 'de. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Updatenámde jan páhina coccebj disablenöx cmaa. Jan data necanj cmaa.',
-'wrong_wfQuery_params' => 'Parameterám incorrectámde wfQuery()<br />
-Funccion: $1<br />
-Query: $2',
 'viewsource' => 'Cohuatlöx sourcenam',
 'protectedpagetext' => 'Jan páhina coccebj lockom neticpatlöx pos-poop.',
 'viewsourcetext' => 'Mecohuatlöx ö copynom sourcenam zode jan páhina:',
@@ -557,20 +551,14 @@ Informacion: (curt) = quiíxde vercion currentua,
 
 # Search results
 'searchresults' => 'Resuluámde yahöx',
-'searchresulttext' => 'Plusöxde informaciónde yahöx {{SITENAME}} iti, jumpöx [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Me yahöx '''[[:$1]]''' iti",
-'searchsubtitleinvalid' => "Me yahöx '''$1''' iti",
 'prevn' => 'jan {{PLURAL:$1|$1}}',
 'nextn' => 'hun {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Cohuatlöx ($1 {{int:pipe-separator}} $2) ($3)',
-'powersearch' => 'Yahöx',
 
 # Preferences page
 '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',
@@ -581,7 +569,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'prefs-watchlist' => 'Listade cáminot',
 'prefs-misc' => 'Jömc',
 'saveprefs' => 'Xuniim',
-'resetprefs' => "Reset'",
 'prefs-editing' => 'Ticpatlöx',
 'rows' => 'Rowám:',
 'columns' => 'Columnám:',
@@ -589,7 +576,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'savedprefs' => 'Hequáatlaác coccebj xuniimöx.',
 'timezonelegend' => 'Zonede xepe',
 'localtime' => 'Xepe locale',
-'timezoneoffset' => "Minus'set¹",
 'servertime' => 'Xepede server',
 'guesstimezone' => "Xuniimyabuatlecaún dai'browser",
 'allowemail' => 'Pos-coccebj e-iitomde diijömde caitóm',
@@ -787,7 +773,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'deadendpages' => 'Páhinám huiquiix',
 'deadendpagestext' => 'Jan páhinám huiquiix linkámde jömdeman páhinám jan wiki iti.',
 'protectedpages' => 'Páhinám protectöx',
-'protectedpagestext' => 'Jan páhinám coccebj protectöxde yacom jöx ticpatlöx',
 'protectedpagesempty' => '0 páhinám currentua coccebj protectöx jan parameterám mii.',
 'listusers' => 'Listade caitóm',
 'newpages' => 'Jan páhinám',
index 5ec3a85..5141736 100644 (file)
@@ -196,7 +196,6 @@ $messages = array(
 'qbedit' => 'Taisītė',
 'qbpageoptions' => 'Tas poslapis',
 'qbmyoptions' => 'Mona poslapē',
-'qbspecialpages' => 'Specēlė̅jė poslapē',
 'faq' => 'DOK',
 'faqpage' => 'Project:DOK',
 
@@ -303,8 +302,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ė',
@@ -373,9 +370,6 @@ Prašuom aple šėtā paskelbtė [[Special:ListUsers/sysop|adminėstratoriō]],
 'badtitletext' => 'Nuruodīts poslapė pavadėnėms bova neleistėns, toščės a neteisėngā sojongts terpkalbinis a terppruojektėnis pavadėnėms. Anamė gal būtė vėins a daugiau sėmbuoliu, neleistėnū pavadėnėmūs',
 'perfcachedts' => 'Ruodoma ėšsauguota doumenū kopėjė, katra bova atnaujėnta $1. Daugiausē $4 {{PLURAL:$4|rezoltats|rezoltatā|rezoltatu}} īr sauguoma.',
 'querypage-no-updates' => 'Atnaujėnėmā tam poslapiō nūnā ėšjongtė īr. Doumenīs nūnā čė nebus atnaujėntė.',
-'wrong_wfQuery_params' => 'Netaisingė parametrā i funkcėjė wfQuery()<br />
-Funkcėjė: $1<br />
-Ožklausėms: $2',
 'viewsource' => 'Veizėtė kuoda',
 'protectedpagetext' => 'Šėts poslapis īr ožrakints, saugont anū nū redagavėma.',
 'viewsourcetext' => 'Tomsta galėt veizietė ėr kopėjoutė poslapė kuoda:',
@@ -704,11 +698,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 # Search results
 'searchresults' => 'Paėiškuos rezoltatā',
 'searchresults-title' => 'Paėiškuos rezoltatā "$1"',
-'searchresulttext' => 'Daugiau infuormacėjės aple paėiška pruojektė {{SITENAME}} rasėt [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tamsta ėiškuojot \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|vėsė poslapē katrėi prasėded so "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vėsė poslapē katrėi ruod i "$1"]])',
-'searchsubtitleinvalid' => 'Jėškuom „$1“',
 'titlematches' => 'Straipsniu pavadėnėmu atitėkmenīs',
-'notitlematches' => 'Juokiū pavadinėma atitikmenū',
 'textmatches' => 'Poslapė torėnė atėtikmenīs',
 'notextmatches' => 'Juokiū poslapė teksta atitikmenū',
 'prevn' => 'onkstesnius {{PLURAL:$1|$1}}',
@@ -717,10 +707,8 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'nextn-title' => '{{PLURAL:$1|Kėts $1 rezoltats|Kėto $1 rezoltato|Kėti $1 rezoltatā}}',
 'shown-title' => 'Ruodītė $1 {{PLURAL:$1|rezoltata|rezultato|rezoltatus}} poslapī',
 'viewprevnext' => 'Veizėtė ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Paėiškuos nustatīmā',
 'searchmenu-exists' => "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
 'searchmenu-new' => "'''Sokortė poslapi „[[:$1]]“ šėtuo wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ėiškuotė poslapiu so šėtuom prīšdielio]]',
 'searchprofile-articles' => 'Torėnė poslapē',
 'searchprofile-project' => 'Pagelbas ė pruojekta poslapē',
 'searchprofile-images' => 'Daugēlīpės terpės failā',
@@ -747,21 +735,16 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'showingresults' => "Žemiau ruodoma lėgė '''$1''' {{PLURAL:$1|rezoltata|rezoltatu|rezoltatu}} pradedont #'''$2'''.",
 'showingresultsnum' => "Žemiau ruodoma '''$3''' {{PLURAL:$3|rezoltata|rezoltatu|rezoltatu}} pradedant #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezoltats '''$1''' ėš '''$3'''|Rezoltatā '''$1 - $2''' ėš '''$3'''}} vagol paklausėma '''$4'''",
-'nonefound' => "'''Pastebiejėms''': Palē nutīliejėma ėiškuoma tėktās kāp katruosė vardū srėtīsė. Pamiegīkėt prirašītė prėišdieli ''all:'', jēgo nuorėt ėiškiuotė vėsa torėnė (tamė tarpė aptarėma poslapius, šabluonus ė tēp tuoliau), aba nauduokėt nuorėma vardū srėti kāp prėišdieli.",
 'search-nonefound' => 'Nier rezoltatu, katrėi atitėktu ožklausėma.',
-'powersearch' => 'Ėiškuotė',
 'powersearch-legend' => 'Prapliesta paėiška',
 'powersearch-ns' => 'Ėiškoutė vardū srėtīsė:',
 'powersearch-redir' => 'Itrauktė paradresavėmus',
-'powersearch-field' => 'Ėiškoutė',
 'search-external' => 'Ėšuorėnė paėiška',
 
 # Preferences page
 'preferences' => 'Nustatīmā',
 'mypreferences' => 'Mona nustatīmā',
 'prefs-edits' => 'Keitėmu skaitlius:',
-'prefsnologin' => 'Naprisėjongis',
-'prefsnologintext' => 'Tamstā rēk būtė <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisėjongosam]</span>, kū galietomiet keistė sava nustatīmus.',
 'changepassword' => 'Pakeistė slaptažuodė',
 'prefs-skin' => 'Ėšruoda',
 'skin-preview' => 'Parveiza',
@@ -777,7 +760,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'prefs-misc' => 'Ivairė nustatīmā',
 'prefs-resetpass' => 'Keistė slaptažuodi',
 'saveprefs' => 'Ėšsauguotė',
-'resetprefs' => 'Atstatītė nostatīmos',
 'restoreprefs' => 'Atstatītė vėsus numatītūsius nustatīmus',
 'prefs-editing' => 'Redagavėms',
 'rows' => 'Eilotės:',
@@ -793,7 +775,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'localtime' => 'Vėitinis čiesos:',
 'timezoneuseserverdefault' => 'Nauduotė palē nutīliejėma ėš serverė',
 'timezoneuseoffset' => 'Kėta (patikslėntė skėrtoma)',
-'timezoneoffset' => 'Skėrtoms¹:',
 'servertime' => 'Serverė čiesos:',
 'guesstimezone' => 'Paimtė ėš naršīklės',
 'timezoneregion-africa' => 'Afrėka',
@@ -1137,7 +1118,6 @@ Infuormacėjė ėš [$2 faila aprašīma poslapė] īr pateikta žemiau.',
 'deadendpages' => 'Straipsnē-aklavėitės',
 'deadendpagestext' => 'Tė poslapē netor nūruodu i kėtus poslapius šėtom pruojektė.',
 'protectedpages' => 'Apsauguotė poslapē',
-'protectedpagestext' => 'Šėtē poslapē īr apsauguotė nū parkielėma a redagavėma',
 'protectedpagesempty' => 'Šėtu čiesu nier apsauguots anėjuoks fails so šėtās parametrās.',
 'protectedtitles' => 'Apsauguotė pavadinėmā',
 'protectedtitlesempty' => 'Šėtou čieso nier anėjuokė pavadinėma, katros apsauguots tās parametrās.',
@@ -1790,10 +1770,6 @@ Vėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk
 'exif-contrast-1' => 'Mažos',
 'exif-contrast-2' => 'Dėdlis',
 
-# External editor support
-'edit-externally' => 'Atdarītė ėšuoriniam redaktuorio',
-'edit-externally-help' => 'Nuoriedamė gautė daugiau infuormacėjės, veiziekėt [https://www.mediawiki.org/wiki/Manual:External_editors kruovėma instrokcėjės].',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'vėsos',
 'namespacesall' => 'vėsas',
@@ -1900,8 +1876,7 @@ Tamsta tēpuogi galėt [[Special:EditWatchlist/raw|redagoutė grīnaji keravuoja
 
 # Special:SpecialPages
 'specialpages' => 'Specēlė̅jė poslapē',
-'specialpages-note' => '----
-* Normalūs specēlė̅jė puslapē.
+'specialpages-note' => '* Normalūs specēlė̅jė puslapē.
 * <strong class="mw-specialpagerestricted">Apribuotė specēlė̅jė puslapē.</strong>',
 'specialpages-group-maintenance' => 'Sėstemas palaikīma pranešėmā',
 'specialpages-group-other' => 'Kėtė specēlė̅jė poslapē',
@@ -1943,4 +1918,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 dbc9451..8d3f81a 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' ),
@@ -364,7 +362,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Opcije stranice',
 'qbmyoptions' => 'Moje opcije',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'ČPP',
 'faqpage' => 'Project:ČPP',
 
@@ -480,8 +477,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}}',
@@ -577,9 +572,6 @@ Može sadržavati jedno ili više slova koja se ne mogu koristiti u naslovima.',
 'perfcachedts' => 'Sledeći podaci su keširani, a poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata|$4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je isključeno.
 Podaci koji se ovdje nalaze neće biti biti ažurirani.',
-'wrong_wfQuery_params' => 'Netačni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Pretraga: $2',
 'viewsource' => 'Pogledaj kod',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Akcija je usporena',
@@ -1265,12 +1257,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati pretrage za "$1"',
-'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, v. [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do "$1"]])',
-'searchsubtitleinvalid' => "Tražili ste '''$1'''",
 'toomanymatches' => 'Pronađeno je previše rezultata, molimo pokušajte unijeti konkretniji izraz',
 'titlematches' => 'Naslov članka odgovara',
-'notitlematches' => 'Nijedan naslov stranice ne odgovara',
 'textmatches' => 'Tekst stranice odgovara',
 'notextmatches' => 'Tekst stranice ne odgovara',
 'prevn' => 'prethodna {{PLURAL:$1|$1}}',
@@ -1279,10 +1267,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
 'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcije pretrage',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
 'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
 'searchprofile-images' => 'Multimedija',
@@ -1310,14 +1296,10 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "Dole {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
 'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Napomene''': Samo neki imenski prostori se pretražuju po početnim postavkama.
-Pokušajte u svoju pretragu staviti ''all:'' da se pretražuje cjelokupan sadržaj (uključujući stranice za razgovor, šablone/predloške itd.), ili koristite imenski prostor kao prefiks.",
 'search-nonefound' => 'Nisu pronađeni rezultati koji odgovaraju upitu.',
-'powersearch' => 'Napredna pretraga',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Pretraga u imenskim prostorima:',
 'powersearch-redir' => 'Pokaži spisak preusmjerenja',
-'powersearch-field' => 'Traži',
 'powersearch-togglelabel' => 'Označi:',
 'powersearch-toggleall' => 'Sve',
 'powersearch-togglenone' => 'Ništa',
@@ -1331,8 +1313,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',
-'prefsnologintext' => 'Da biste mogli podešavati korisničke postavke, morate <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} biti prijavljeni]</span>.',
 'changepassword' => 'Promijeni lozinku',
 'prefs-skin' => 'Izgled (skin)',
 'skin-preview' => 'Pretpregled',
@@ -1356,7 +1336,6 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'prefs-email' => 'E-mail opcije',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Snimi postavke',
-'resetprefs' => 'Poništi nesnimljene promjene postavki',
 'restoreprefs' => 'Vrati sve pretpostavljene postavke',
 'prefs-editing' => 'Uređivanje',
 'rows' => 'Redova:',
@@ -1374,7 +1353,6 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
 'servertime' => 'Vrijeme na serveru:',
 'guesstimezone' => 'Popuni iz preglednika',
 'timezoneregion-africa' => 'Afrika',
@@ -1625,6 +1603,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',
@@ -2108,10 +2087,8 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'Samo neograničena zaštićenja',
 'protectedpages-cascade' => 'Samo prenosive zaštite',
-'protectedpagestext' => 'Slijedeće stranice su zaštićene od izmjena i premještanja',
 'protectedpagesempty' => 'Trenutno nijedna stranica nije zaštićena s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Članci sa slijedećim naslovima su zaštićeni od kreiranja.',
 'protectedtitlesempty' => 'Nema naslova zaštićenih članaka sa ovim parametrima.',
 'listusers' => 'Spisak korisnika',
 'listusers-editsonly' => 'Pokaži samo korisnike koji su uređivali',
@@ -3622,10 +3599,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Priorite definiran od korisnika ($1)',
 
-# External editor support
-'edit-externally' => 'Izmijeni ovu datoteku/fajl koristeći eksternu aplikaciju',
-'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
@@ -3847,8 +3820,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 
 # Special:SpecialPages
 'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* Normalne posebne stranice.
+'specialpages-note' => '* Normalne posebne stranice.
 * <span class="mw-specialpagerestricted">Ograničene posebne stranice.</span>
 * <span class="mw-specialpagecached">Keširane posebne stranice (mogu biti zastarjele).</span>',
 'specialpages-group-maintenance' => 'Izvještaji za održavanje',
index 9bdc67d..79e3a49 100644 (file)
@@ -155,7 +155,6 @@ $messages = array(
 'qbedit' => 'Sbadl',
 'qbpageoptions' => 'Tasnat ad',
 'qbmyoptions' => 'Tisnatin inu',
-'qbspecialpages' => 'Tisnatin timzlay',
 'faq' => 'Isqsitn li bdda tsutulnin',
 'faqpage' => 'Project: Isqqsit li bdda',
 
@@ -268,8 +267,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)',
@@ -586,12 +583,8 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 # Search results
 'searchresults' => 'Mad akkan icnubcn',
 'searchresults-title' => 'Mad akkan icnubcn f "$1"',
-'searchresulttext' => 'Inɣmisn yaḍnin f {{SITENAME}},  ẓr  [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ar tsiggilt f \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tisniwin li kullu ttiswirnin s "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tisniwin li kullu ttiswirnin s "$1"]])',
-'searchsubtitleinvalid' => "Tsiggelt  '''$1'''",
 'toomanymatches' => 'Illa bzzaf maygan zund maya. sbadl taguri yad skra yaḍn',
 'titlematches' => 'Assaɣ n tasna iga zund',
-'notitlematches' => 'Ur ityuffa kra ntansa zund ɣwad',
 'textmatches' => 'Aṭṛiṣ n tasna iga zund',
 'notextmatches' => 'Ur ittyufa kra nu uṭṛiṣ igan zund ɣwad',
 'prevn' => 'Tamzwarut {{PLURAL:$1|$1}}',
@@ -600,7 +593,6 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'nextn-title' => '$1 {{PLURAL:$1|askfa d itfrn|iskfatn d itfrn}}',
 'shown-title' => 'Fsr $1 tayafut{{PLURAL:$1||s}} s tasna',
 'viewprevnext' => 'Mel ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Istayn ucnubc',
 'searchmenu-exists' => '"\'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad',
 'searchmenu-new' => "'''Skr Tasna « [[:$1|$1]] » ɣ wiki !'''",
 'searchprofile-articles' => 'Mayllan ɣ tasna',
@@ -630,13 +622,10 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'showingresults' => "Ẓr azddar  {{PLURAL:$1|'''1''' May tuykfan|'''$1''' Mad kfan}} Bdu s #'''$2'''",
 'showingresultsnum' => "Ẓr azddar (ifsr ɣ uzddar) {{PLURAL:$3|'''1''' may kfa|'''$3''' mad kfan}} Bdu s #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|May kfa '''$1''' ar '''$3'''|Mad kfan '''$1 - $2''' ar '''$3'''}} i '''$4'''",
-'nonefound' => "'''Arra''': Icnubbu ar tilin ɣir tiɣulin tuyzlaynin. Iɣ trit at cabbat ɣ kullu may tyuran d ḥtta tisnatin nu umsgdal s ''all:'', bdu acnubc  nek s kullu ma ɣɣid imun, ulla s assaɣ n tɣult li trit.",
 'search-nonefound' => 'Ur ittuykfa walu maygan zund ɣayli trit',
-'powersearch' => 'Amsigl imzwarn',
 'powersearch-legend' => 'Amsigl imzwarn',
 'powersearch-ns' => 'Icnubbucn ɣ tɣulin',
 'powersearch-redir' => 'Afsr n ismmatayn (Tifilit n ismmatayn)',
-'powersearch-field' => 'Acnubc ɣ',
 'powersearch-togglelabel' => 'Sti',
 'powersearch-toggleall' => 'Kullu',
 'powersearch-togglenone' => 'Walu',
@@ -649,7 +638,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',
@@ -666,7 +654,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
 'prefs-email' => 'lkhiyarat n Email',
 'prefs-rendering' => 'adm',
 'saveprefs' => 'sjjl',
-'resetprefs' => 'hiyd tghyirat li orsjilnin',
 'restoreprefs' => 'sglbd kollo regalega',
 'prefs-editing' => 'tahrir',
 'rows' => 'sfof:',
@@ -1213,10 +1200,6 @@ Wiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-n' => 'Knots',
 
-# External editor support
-'edit-externally' => 'Bddl asdaw ad s wasnas abrrani',
-'edit-externally-help' => '(Ẓṛ [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] bac ad taf uggar n inɣmisn)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kraygat (kullu)',
 'namespacesall' => 'kullu',
index d3149b0..7bf75e8 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( 'නිර්යාතකරන්න' ),
@@ -349,7 +347,6 @@ $messages = array(
 'qbedit' => 'සංස්කරණය',
 'qbpageoptions' => 'මෙම පිටුව',
 'qbmyoptions' => 'මගේ පිටු',
-'qbspecialpages' => 'විශේෂ පිටු',
 'faq' => 'නිවිප්‍ර',
 'faqpage' => 'Project:නිවිප්‍ර',
 
@@ -466,8 +463,6 @@ $1",
 'ok' => 'හරි',
 'retrievedfrom' => '"$1" වෙතින් සම්ප්‍රවේශනය කෙරිණි',
 'youhavenewmessages' => 'ඔබ හට $1 ($2)',
-'newmessageslink' => 'නව පණිවුඩ',
-'newmessagesdifflink' => 'අවසාන වෙනස',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|තවත් එක් පරිශීලකයෙකුගෙන්|පරිශීලකයන් $3 දෙනෙකුගෙන්}} ඔබ හට $1 ඇත ($2).',
 'youhavenewmessagesmanyusers' => 'බොහෝ පරිශීලකයන් වෙතින් ඔබ හට $1 ඇත ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|නව පණිවුඩයක්|නව පණිවුඩ}}',
@@ -565,9 +560,6 @@ URL  සඳහන් කරමින්, මෙම කරුණ [[Special:ListUs
 'perfcachedts' => 'පහත දත්ත පූර්වාපේක්‍ෂීව සංචිත කෙරී ඇති (කෑෂ් කෙරී ඇති) අතර, අවසන් වරට යාවත්කාලීන කර ඇත්තේ  $1 දීය. {{PLURAL:$4|එක් ප්‍රතිඵලයක|ප්‍රතිඵල $4 ක}} උපරිමයකට යටත්ව පූර්වාපේක්‍ෂීව සංචිත කෙරී ඇත.',
 'querypage-no-updates' => 'මෙම පිටුව සඳහා යාවත්කාල කිරීම් දැනට අක්‍රීය කොට ඇත.
 දැනට මෙහිදී දත්ත පුනස්ථාපනය සිදු නොවේ.',
-'wrong_wfQuery_params' => ' wfQuery() සඳහා සාවද්‍ය පරාමිතිකයන්<br />
-ශ්‍රිතය: $1<br />
-විමසුම: $2',
 'viewsource' => 'මූලාශ්‍රය නරඹන්න',
 'viewsource-title' => '$1 සඳහා මුලාශ්‍රය නරඹන්න',
 'actionthrottled' => 'ක්‍රියාව අවකරණය කරන ලදි',
@@ -1205,12 +1197,8 @@ $1",
 # Search results
 'searchresults' => 'ගවේෂණ ප්‍රතිඵල',
 'searchresults-title' => '"$1" සඳහා ගවේෂණ ප්‍රතිඵල',
-'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' => 'පිටු පෙළ ගැළපෙයි',
 'notextmatches' => 'පිටු පෙළ කිසිවක් නොගැළපෙයි',
 'prevn' => 'පෙර {{PLURAL:$1|$1}}',
@@ -1219,10 +1207,8 @@ $1",
 'nextn-title' => 'මීලඟ {{PLURAL:$1|ප්‍රතිඵලය|ප්‍රතිඵල $1}}',
 'shown-title' => 'එක් පිටුවකට {{PLURAL:$1|ප්‍රතිඵලයක්|ප්‍රතිඵල $1 ක්}} බැගින් පෙන්වන්න',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) නරඹන්න',
-'searchmenu-legend' => 'ගවේෂණ තෝරාගැනීම්',
 'searchmenu-exists' => "'''මෙම විකියෙහි \"[[:\$1]]\" ලෙස නම් කර ඇති පිටුවක් ඇත.'''",
 'searchmenu-new' => "'''මෙම විකියෙහි \"[[:\$1]]\" පිටුව තනන්න!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|මෙම උපසර්ගය භාවිත කරමින් පිටු පිරික්සන්න]]',
 'searchprofile-articles' => 'අන්තර්ගත පිටු',
 'searchprofile-project' => 'උදවු හා ව්‍යාපෘති පිටු',
 'searchprofile-images' => 'බහුමාධ්‍ය',
@@ -1250,14 +1236,10 @@ $1",
 'showingresults' => "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$1|ප්‍රතිඵල '''1'''  ක් |ප්‍රතිඵල '''$1''' ක්}} දක්වා පහත පෙන්වා ඇත.",
 'showingresultsnum' => "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$3|ප්‍රතිඵල '''1'''  ක් |ප්‍රතිඵල '''$3''' ක්}} පහත පෙන්වා ඇත.",
 'showingresultsheader' => "'''$4''' සඳහා {{PLURAL:$5| '''$3''' අතුරින් '''$1''' ප්‍රතිඵලය| '''$3''' අතුරින් '''$1 - $2''' ප්‍රතිඵලයන්}}",
-'nonefound' => "'''සටහන''': පෙරනිමියෙන් ගවේෂණය වන්නේ සමහරක් නාමඅවකාශ පමණි.
-ඔබ‍ගේ විමසුමට ''all:'' උපසර්ගය යෙදීම මගින් සියළු අන්තර්ගතය ගවේෂණයට ඉඩ සැලසීම අත්හදා බලන්න (සාකච්ඡා පිටු, සැකිලි, ආදියද ඇතුළුව), නැතහොත්, උපසර්ගය ලෙස අපේක්‍ෂිත නාමඅවකාශය භාවිතා කරන්න.",
 'search-nonefound' => 'විමසුම හා ගැලපෙන ප්‍රතිඵල කිසිවක් නොමැත.',
-'powersearch' => 'වැඩිමනත් ගවේෂණය කරන්න',
 'powersearch-legend' => 'වැඩිමනත් ගවේෂණය',
 'powersearch-ns' => 'නාමඅවකාශයන්හි ගවේෂණය කරන්න:',
 'powersearch-redir' => 'යළි-යොමු ලැයිස්තුගත කරන්න',
-'powersearch-field' => 'සඳහා ගවේෂණය',
 'powersearch-togglelabel' => 'පිරික්සන්න:',
 'powersearch-toggleall' => 'සියල්ල',
 'powersearch-togglenone' => 'කිසිවක් නොමැත',
@@ -1270,8 +1252,6 @@ $1",
 'preferences' => 'අභිරුචි',
 'mypreferences' => 'අභිරුචීන්',
 'prefs-edits' => 'සංස්කරණයන් සංඛ්‍යාව:',
-'prefsnologin' => 'පිවිසී නැත (Not logged in)',
-'prefsnologintext' => 'පරිශීලක අභිරුචි සැකසීමට නම්, ඔබ  <span class="plainlinks">[{{fullurl:Special:Userlogin|returnto=$1}} ප්‍රවිෂ්ටවී]</span> සිටිය යුතුය.',
 'changepassword' => 'මුරපදය වෙනස් කරන්න',
 'prefs-skin' => 'ඡවිය',
 'skin-preview' => 'පෙරදසුන',
@@ -1295,7 +1275,6 @@ $1",
 'prefs-email' => 'විද්‍යුත්-ලිපි තෝරාගැනීම්',
 'prefs-rendering' => 'පෙනුම',
 'saveprefs' => 'සුරැකුම',
-'resetprefs' => 'නොසුරැකූ වෙනස්වීම් නිෂ්කාශනය කරන්න',
 'restoreprefs' => 'පෙරනිමි සැකසුම් සියල්ලම යළි-පිහිටුවන්න',
 'prefs-editing' => 'සංස්කරණය කිරීම්',
 'rows' => 'පේළි:',
@@ -1313,7 +1292,6 @@ $1",
 'localtime' => 'ප්‍රාදේශීය වේලාව:',
 'timezoneuseserverdefault' => 'විකියෙහි සාමාන්‍ය විදිහ භාවිත කරන්න ($1)',
 'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමාකාරයෙන් දක්වන්න)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'සේවාදායකයේ වේලාව:',
 'guesstimezone' => 'බ්‍රවුසරයෙන් පුරවන්න',
 'timezoneregion-africa' => 'අප්‍රිකාව',
@@ -1546,6 +1524,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 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
@@ -2015,10 +1994,8 @@ When filtered by user, only files where that user uploaded the most recent versi
 'protectedpages' => 'ආරක්ෂිත පිටු',
 'protectedpages-indef' => 'අනිශ්චිත ආරක්ෂණයන් පමණයි',
 'protectedpages-cascade' => 'තීරු-දර්ශන ආරක්ෂණයන් පමණයි',
-'protectedpagestext' => 'ඉදිරියේ දැක්වෙන පිටු ගෙනයාම හෝ සංස්කරණය කිරීම හෝ වාරණය කොට ඇත',
 'protectedpagesempty' => 'මෙම පරාමිතීන් හා සමග සැලකූ කල,  කිසිදු පිටුවක් දැනට ආරක්ෂිත වී නොමැත.',
 'protectedtitles' => 'ආරක්‍ෂිත ශීර්ෂයන්',
-'protectedtitlestext' => 'පහත දැක්වෙන ශීර්ෂයන් තැනිය නොහැකි වන පරිදි ආරක්‍ෂණය කොට ඇත',
 'protectedtitlesempty' => 'මෙම පරාමිතීන් හා සමග සැලකූ කල, කිසිදු ශීර්ෂයක් දැනට ආරක්ෂිත වී නොමැත.',
 'listusers' => 'පරිශීලක ලැයිස්තුව',
 'listusers-editsonly' => 'සංස්කරණයන් සිදුකර ඇති පරිශීලකයන් පමණක් පෙන්වන්න',
@@ -3537,10 +3514,6 @@ Others will be hidden by default.
 'exif-urgency-high' => 'ඉහළයි ($1)',
 'exif-urgency-other' => 'පරිශීලක-අර්ථ දැක්වූ ප්‍රමුඛත්වය ($1)',
 
-# External editor support
-'edit-externally' => 'බාහිර  උපයෝගයක් භාවිතා කරමින් මෙම ගොනුව සංස්කරණය කරන්න',
-'edit-externally-help' => '(වැඩිදුර තොරතුරු සඳහා [https://www.mediawiki.org/wiki/Manual:External_editors පිහිටුවීම් උපදෙස්] බලන්න.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'සියල්ල',
 'namespacesall' => 'සියල්ල',
@@ -3819,8 +3792,7 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 
 # Special:SpecialPages
 'specialpages' => 'විශේෂ පිටු',
-'specialpages-note' => '----
-* සාමාන්‍ය විශේෂ පිටු.
+'specialpages-note' => '* සාමාන්‍ය විශේෂ පිටු.
 * <span class="mw-specialpagerestricted">සීමිත විශේෂ පිටු.</span>
 * <span class="mw-specialpagecached">කෑෂිත වි‍ශේෂ පිටු (යල් පැන ගිය විය හැක).</span>',
 'specialpages-group-maintenance' => 'නඩත්තු වාර්තා',
@@ -3994,4 +3966,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 43c6703..4634f4b 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í' ),
@@ -442,7 +441,6 @@ $messages = array(
 'qbedit' => 'Upraviť',
 'qbpageoptions' => 'Táto stránka',
 'qbmyoptions' => 'Moje stránky',
-'qbspecialpages' => 'Špeciálne stránky',
 'faq' => 'Často kladené otázky',
 'faqpage' => 'Project:Často kladené otázky',
 
@@ -558,8 +556,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}}',
@@ -660,9 +656,6 @@ Neudala vysvetlenie.',
 'perfcached' => 'Nasledujúce údaje pochádzajú z vyrovnávacej pamäte a nemusia byť úplne aktuálne. Vo vyrovnávacej pamäti {{PLURAL:$1|je dostupný|sú dostupné|je dostupných}} najviac {{PLURAL:$1|jeden výsledok|$1 výsledky|$1 výsledkov}}.',
 'perfcachedts' => 'Nasledujúce údaje pochádzajú z vyrovnávacej pamäte a naposledy boli aktualizované $1. Vo vyrovnávacej pamäti {{PLURAL:$4|je dostupný|sú dostupné|je dostupných}} najviac {{PLURAL:$4|jeden výsledok|$4 výsledky|$4 výsledkov}}.',
 'querypage-no-updates' => 'Aktualizácie tejto stránky sú momentálne vypnuté. Tieto dáta sa v súčasnosti nebudú obnovovať.',
-'wrong_wfQuery_params' => 'Nesprávny parameter pre wfQuery()<br />
-Funkcia: $1<br />
-Požiadavka: $2',
 'viewsource' => 'Zobraziť zdroj',
 'viewsource-title' => 'Zobrazenie zdroja stránky $1',
 'actionthrottled' => 'Činnosť bola spomalená',
@@ -1262,8 +1255,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:',
@@ -1353,12 +1346,8 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 # Search results
 'searchresults' => 'Výsledky vyhľadávania',
 'searchresults-title' => 'Výsledky hľadania „$1“',
-'searchresulttext' => 'Viac informácií o vyhľadávaní vo {{GRAMMAR:lokál|{{SITENAME}}}} nájdete na stránke [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Hľadali ste „'''[[:$1]]'''“ ([[Special:Prefixindex/$1|všetky stránky začínajúce na „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|všetky stránky odkazujúce na „$1“]])",
-'searchsubtitleinvalid' => 'Na vyhľadávaciu požiadavku „$1“',
 'toomanymatches' => 'Hľadanie vrátilo príliš veľa výsledkov. Prosím, skúste inú požiadavku.',
 'titlematches' => 'Vyhovujúce názvy stránok',
-'notitlematches' => 'V názvoch stránok nebola nájdená zhoda',
 'textmatches' => 'Zhody v textoch stránok',
 'notextmatches' => 'V textoch stránok nebola nájdená zhoda',
 'prevn' => '{{PLURAL:$1|predošlá|predošlé|predošlých}} $1',
@@ -1367,10 +1356,8 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'nextn-title' => '{{PLURAL:$1|Ďalší $1 výsledok|Ďalšie $1 výsledky|Ďalších $1 výsledkov}}',
 'shown-title' => 'Zobraziť $1 {{PLURAL:$1|výsledok|výsledky|výsledkov}} na stránku',
 'viewprevnext' => 'Zobraziť ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Možnosti hľadania',
 'searchmenu-exists' => "*Stránka '''[[$1]]'''",
 'searchmenu-new' => "'''Vytvoriť stránku „[[:$1|$1]]“ na tejto wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Prehliadať stránky s touto predponou]]',
 'searchprofile-articles' => 'Stránky s obsahom',
 'searchprofile-project' => 'Stránky pomocníka a projektu',
 'searchprofile-images' => 'Multimédiá',
@@ -1398,13 +1385,10 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'showingresults' => "Nižšie {{PLURAL:$1|je zobrazený jeden výsledok|sú zobrazené '''1''' výsledky|je zobrazených '''$1''' výsledkov}}, počnúc od  #<b>$2</b>.",
 'showingresultsnum' => "Nižšie {{PLURAL:$3|je zobrazený najviac '''1''' výsledok|sú zobrazené najviac '''$3''' výsledky|je zobrazených najviac '''$3''' výsledkov}}, počnúc od  #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Výsledok '''$1''' z '''$3'''|Výsledky '''$1 - $2''' z '''$3'''}} pre '''$4'''",
-'nonefound' => "'''Poznámka''': Štandardne sa vyhľadáva iba v niektorých menných priestoroch. Skúste pred vyhľadávaný reťazec napísať ''all:'', aby sa hľadalo v celom obsahu (vrátane diskusných stránok, šablón atď.) alebo použite ako predponu požadovaný menný priestor.",
 'search-nonefound' => 'Vyhľadávanie nenašlo žiadne výsledky.',
-'powersearch' => 'Vyhľadávanie',
 'powersearch-legend' => 'Pokročilé hľadanie',
 'powersearch-ns' => 'Hľadať v menných priestoroch:',
 'powersearch-redir' => 'Vypísať presmerovania',
-'powersearch-field' => 'Hľadať',
 'powersearch-togglelabel' => 'Skontrolovať:',
 'powersearch-toggleall' => 'Všetky',
 'powersearch-togglenone' => 'Žiadne',
@@ -1416,8 +1400,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ý/á',
-'prefsnologintext' => 'Aby ste mohli zmeniť svoje nastavenia, musíte byť <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prihlásený]</span>.',
 'changepassword' => 'Zmeniť heslo',
 'prefs-skin' => 'Vzhľad',
 'skin-preview' => 'Náhľad',
@@ -1441,7 +1423,6 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'prefs-email' => 'Možnosti emailu',
 'prefs-rendering' => 'Vzhľad',
 'saveprefs' => 'Uložiť nastavenia',
-'resetprefs' => 'Obnoviť pôvodné nastavenia',
 'restoreprefs' => 'Obnoviť všetky predvolené nastavenia (vo všetkých sekciách)',
 'prefs-editing' => 'Úpravy',
 'rows' => 'Riadky:',
@@ -1462,7 +1443,6 @@ každý, kto ho pozná si bude môcť prečítať váš zoznam sledovaných str
 'localtime' => 'Miestny čas:',
 'timezoneuseserverdefault' => 'Použiť predvoľby wiki ($1)',
 'timezoneuseoffset' => 'Iné (uvedením rozdielu)',
-'timezoneoffset' => 'Rozdiel¹:',
 'servertime' => 'Aktuálny čas na serveri:',
 'guesstimezone' => 'Prevziať z prehliadača',
 'timezoneregion-africa' => 'Afrika',
@@ -1714,6 +1694,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',
@@ -2210,10 +2191,8 @@ Každý riadok obsahuje odkaz na prvé a druhé presmerovanie a tiež prvý riad
 'protectedpages' => 'Zamknuté stránky',
 'protectedpages-indef' => 'Zamknutia iba na neurčito',
 'protectedpages-cascade' => 'Iba kaskádové zamykanie',
-'protectedpagestext' => 'Upravovanie alebo presúvanie nasledovných stránok je zamknuté',
 'protectedpagesempty' => 'Momentálne nie sú žiadne stránky s týmito parametrami zamknuté.',
 'protectedtitles' => 'Zamknuté názvy',
-'protectedtitlestext' => 'Možnosť vytvoriť stránky s nasledovnými názvami bola zamknutá',
 'protectedtitlesempty' => 'Tieto parametre momentálne nezamykajú žiadne názvy stránok.',
 'listusers' => 'Zoznam používateľov',
 'listusers-editsonly' => 'Vynechať používateľov bez úprav',
@@ -3273,7 +3252,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',
@@ -3737,10 +3716,6 @@ Ostatné budú predvolene skryté.
 'exif-urgency-high' => 'Vysoká ( $1 )',
 'exif-urgency-other' => 'Používateľom definovaná priorita ($1)',
 
-# External editor support
-'edit-externally' => 'Upraviť tento súbor pomocou externého programu',
-'edit-externally-help' => '(Viac informácií poskytnú inštrukcie pre nastavenie [https://www.mediawiki.org/wiki/Manual:External_editors externého editora])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'všetky',
 'namespacesall' => 'všetky',
@@ -3976,8 +3951,7 @@ Spolu s týmto programom by ste obdržať [{{SERVER}}{{SCRIPTPATH}}/COPYING kóp
 
 # Special:SpecialPages
 'specialpages' => 'Špeciálne stránky',
-'specialpages-note' => '----
-* Bežné špeciálne stránky.
+'specialpages-note' => '* Bežné špeciálne stránky.
 * <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
 * <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
 'specialpages-group-maintenance' => 'Údržbové správy',
@@ -4192,4 +4166,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 8e404e6..2816009 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' ),
@@ -345,7 +343,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Možnosti strani',
 'qbmyoptions' => 'Moje strani',
-'qbspecialpages' => 'Posebne strani',
 'faq' => 'Najpogostejša vprašanja',
 'faqpage' => 'Project:Najpogostejša vprašanja',
 
@@ -462,12 +459,10 @@ $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}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|zadnja sprememba|zadnji spremembi|zadnje spremembe}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novo sporočilo|999=nova sporočila}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|zadnja sprememba|999=zadnje spremembe}}',
 'youhavenewmessagesmulti' => 'Na $1 imate novo sporočilo',
 'editsection' => 'uredi',
 'editold' => 'spremeni',
@@ -565,9 +560,6 @@ Morda vsebuje enega ali več nepodprtih znakov.',
 'perfcached' => 'Navedeni podatki so shranjeni v predpomnilniku in morda niso popolnoma posodobljeni. V predpomnilniku {{PLURAL:$1|je|sta|so|je}} na razpolago največ $1 {{PLURAL:$1|rezultat|rezultata|rezultate|rezultatov}}.',
 'perfcachedts' => 'Prikazani podatki so shranjeni v predpomnilniku in so bili zadnjič osveženi $1. V predpomnilniku {{PLURAL:$4|je|sta|so|je}} na razpolago največ $4 {{PLURAL:$4|rezultat|rezultata|rezultate|rezultatov}}.',
 'querypage-no-updates' => 'Posodobitve za to stran so trenutno onemogočene. Tukajšnji podatki se v kratkem ne bodo osvežili.',
-'wrong_wfQuery_params' => 'Nepravilni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Poizvedba: $2',
 'viewsource' => 'Izvorno besedilo',
 'viewsource-title' => 'Ogled vira $1',
 'actionthrottled' => 'Dejanje zaustavljeno',
@@ -600,7 +592,8 @@ Administrator, ki ga je zaklenil, je podal naslednje pojasnilo: »$3«.',
 'invalidtitle-knownnamespace' => 'Neveljaven naslov z imenskim prostorom »$2« in besedilom »$3«',
 'invalidtitle-unknownnamespace' => 'Neveljaven naslov z neznano številko imenskega prostora $1 in besedilom »$2«',
 'exception-nologin' => 'Niste prijavljeni',
-'exception-nologin-text' => 'Izbrana stran ali dejanje zahteva, da ste na tem wikiju prijavljeni.',
+'exception-nologin-text' => 'Prosimo, [[Special:Userlogin|prijavite se]], da lahko dostopate do strani ali dejanja.',
+'exception-nologin-text-manual' => 'Da lahko dostopate do strani ali dejanja, se morate $1.',
 
 # Virus scanner
 'virus-badscanner' => "Slaba konfiguracija: neznani virus skener: ''$1''",
@@ -700,7 +693,7 @@ Preverite črkovanje.',
 'passwordtooshort' => 'Geslo mora imeti najmanj $1 {{PLURAL:$1|znak|znaka|znake|znakov|znakov}}.',
 'password-name-match' => 'Vaše geslo se mora razlikovati od vašega uporabniškega imena.',
 'password-login-forbidden' => 'Uporaba tega uporabniškega imena in gesla je prepovedana.',
-'mailmypassword' => 'Pošlji mi novo geslo',
+'mailmypassword' => 'Ponastavitev gesla',
 'passwordremindertitle' => 'Novo začasno geslo za {{GRAMMAR:tožilnik|{{SITENAME}}}}',
 'passwordremindertext' => 'Nekdo (verjetno vi, z IP-naslova $1) je zahteval novo
 prijavno geslo za {{GRAMMAR:tožilnik|{{SITENAME}}}} ($4). Ustvarjeno je
@@ -778,7 +771,7 @@ Morda ste že uspešno spremenili geslo ali pa ste zahtevali novo začasno geslo
 # Special:PasswordReset
 'passwordreset' => 'Ponastavitev gesla',
 'passwordreset-text-one' => 'Da ponastavite svoje geslo, izpolnite naslednji obrazec.',
-'passwordreset-text-many' => '{{PLURAL:$1|Da ponastavite svoje geslo, izpolnite eno od polj.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Da po e-pošti prejmete začasno geslo, izpolnite eno od polj.}}',
 'passwordreset-legend' => 'Ponastavitev gesla',
 'passwordreset-disabled' => 'Ponastavljanje gesla je na tem wikiju onemogočeno.',
 'passwordreset-emaildisabled' => 'Na tem wikiju so možnosti e-pošte onemogočene.',
@@ -1164,9 +1157,9 @@ To redakcijo si lahko ogledate; podrobnosti lahko najdete v [{{fullurl:{{#Specia
 Do skrite vsebine bodo še vedno lahko dostopali drugi administratorji {{GRAMMAR:rodilnik|{{SITENAME}}}} in jo z uporabo istega vmesnika tudi obnovili, razen kjer bodo uveljavljene dodatne omejitve.",
 'revdelete-confirm' => 'Prosim potrdite da nameravate to storiti, da se zavedate posledic in da to počnete v skladu s [[{{MediaWiki:Policy-url}}|politiko]].',
 'revdelete-suppress-text' => "Zadrževanje naj bi bilo uporabljeno '''le''' v sledečih primerih:
-* Potencialni klevetniški podatki
+* Morebitni klevetniški podatki
 * Neprimerni osebni podatki
-*: ''domači naslovi in telefonske številke, številke socialnega zavarovanja, etc.''",
+*: ''domači naslovi in telefonske številke, narodne številke istovetnosti itn.''",
 'revdelete-legend' => 'Nastavi omejitve vidnosti',
 'revdelete-hide-text' => 'Besedilo redakcije',
 'revdelete-hide-image' => 'Skrij vsebino datoteke.',
@@ -1175,8 +1168,8 @@ Do skrite vsebine bodo še vedno lahko dostopali drugi administratorji {{GRAMMAR
 'revdelete-hide-user' => 'Uporabniško ime/IP-naslov urejevalca',
 'revdelete-hide-restricted' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
 'revdelete-radio-same' => '(ne spremeni)',
-'revdelete-radio-set' => 'Vidno',
-'revdelete-radio-unset' => 'Skrito',
+'revdelete-radio-set' => 'Skrito',
+'revdelete-radio-unset' => 'Vidno',
 'revdelete-suppress' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
 'revdelete-unsuppress' => 'Odpraviti omejitve na obnovljenih redakcijah.',
 'revdelete-log' => 'Razlog:',
@@ -1269,12 +1262,8 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 # Search results
 'searchresults' => 'Izid iskanja',
 'searchresults-title' => 'Zadetki za povpraševanje »$1«',
-'searchresulttext' => 'Za več informacij o iskanju v {{GRAMMAR:dajalnik|{{SITENAME}}}} si oglejte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Za povpraševanje »'''[[:$1]]'''« ([[Special:Prefixindex/$1|vse strani začenši z »$1«]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vse strani, ki se povezujejo na »$1«]])",
-'searchsubtitleinvalid' => "Iskali ste '''$1'''",
 'toomanymatches' => 'Vrnjenih je bilo preveč zadetkov, poskusite z drugačno poizvedbo',
 'titlematches' => 'Ujemanje z naslovom članka',
-'notitlematches' => 'Iskanih besed ne vsebuje noben naslov članka',
 'textmatches' => 'Ujemanje z besedilom članka',
 'notextmatches' => 'Iskanih besed ne vsebuje nobeno besedilo članka',
 'prevn' => '{{PLURAL:$1|prejšnja|prejšnji|prejšnje|prejšnjih|prejšnjih}} $1',
@@ -1283,10 +1272,8 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title' => '{{PLURAL:$1|Naslednji rezultat|Naslednja $1 rezultata|Naslednji $1 rezultati|Naslednjih $1 rezultatov}}',
 'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultate|rezultatov}} na stran',
 'viewprevnext' => 'Prikazujem ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Možnosti za iskanje',
 'searchmenu-exists' => "'''Na tem wikiju obstaja stran »[[:$1]]«'''",
 'searchmenu-new' => "'''Ustvari stran »[[:$1]]« na tem wikiju!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Iskanje strani s to predpono]]',
 'searchprofile-articles' => 'Članki',
 'searchprofile-project' => 'Pomoč in projektne strani',
 'searchprofile-images' => 'Večpredstavnost',
@@ -1314,13 +1301,10 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'showingresults' => "Prikazujem do '''$1''' {{PLURAL:$1|zadetek|zadetka|zadetke|zadetkov}}, začenši s št. '''$2'''.",
 'showingresultsnum' => "Prikazujem '''$3''' {{PLURAL:$3|zadetek|zadetka|zadetke|zadetkov|zadetkov}}, začenši s št. '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Zadetek '''$1''' od '''$3'''|Zadetki '''$1 - $2''' od skupno '''$3'''}} za povpraševanje '''$4'''",
-'nonefound' => "'''Opomba''': neuspešna poizvedovanja so pogosta ob iskanju vsakdanjih besed, na primer ''imeti'' in ''iz'', ki jih ni na seznamu. Ker gre za zelo pogoste besede, boste skoraj zagotovo iskali uspešneje z zožitvijo tematskega področja. Poskusiti dodati predpono ''all:'' in tako iskati po celotni vsebini (vključno  z pogovornimi stranmi, predlogami, itd.) ali pa za predpono uporabite določen imenski prostor.",
 'search-nonefound' => 'Ni bilo zadetkov, ki ustrezajo poizvedbi.',
-'powersearch' => 'Napredno iskanje',
 'powersearch-legend' => 'Napredno iskanje',
 'powersearch-ns' => 'Iskanje v imenskih prostorih:',
 'powersearch-redir' => 'Seznam preusmeritev',
-'powersearch-field' => 'Išči',
 'powersearch-togglelabel' => 'Izberi:',
 'powersearch-toggleall' => 'Vse',
 'powersearch-togglenone' => 'Nič',
@@ -1334,8 +1318,7 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'preferences' => 'Nastavitve',
 'mypreferences' => 'Nastavitve',
 'prefs-edits' => 'Število urejanj:',
-'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Za spreminjanje uporabniških nastavitev morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span>.',
+'prefsnologintext2' => 'Za nastavljanje uporabniških nastavitev se morate $1.',
 'changepassword' => 'Zamenjava gesla',
 'prefs-skin' => 'Koža',
 'skin-preview' => 'Predogled',
@@ -1359,7 +1342,6 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'prefs-email' => 'Možnosti e-pošte',
 'prefs-rendering' => 'Videz',
 'saveprefs' => 'Shrani',
-'resetprefs' => 'Počisti neshranjene spremembe',
 'restoreprefs' => 'obnova vseh privzetih nastavitev (v vseh razdelkih)',
 'prefs-editing' => 'Urejanje',
 'rows' => 'Vrstic:',
@@ -1378,7 +1360,6 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'localtime' => 'Krajevni čas:',
 'timezoneuseserverdefault' => 'Uporabi privzeti wiki čas ($1)',
 'timezoneuseoffset' => 'Drugo (navedite izravnavo)',
-'timezoneoffset' => 'Izravnava¹:',
 'servertime' => 'Strežniški čas:',
 'guesstimezone' => 'Izpolni iz brskalnika',
 'timezoneregion-africa' => 'Afrika',
@@ -1631,10 +1612,12 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'recentchanges-summary' => 'Na tej strani lahko spremljate najnovejše spremembe wikija.',
 'recentchanges-noresult' => 'V podanem obdobju nobena sprememba ne ustreza tem merilom.',
 'recentchanges-feed-description' => 'Spremljajte zadnje spremembe wikija prek tega vira.',
-'recentchanges-label-newpage' => 'S tem urejanjem je bila ustvarjena nova stran',
+'recentchanges-label-newpage' => 'S tem urejanjem je uporabnik ustvaril novo stran',
 'recentchanges-label-minor' => 'Manjše urejanje',
-'recentchanges-label-bot' => 'To urejanje je bilo izvedeno z botom',
+'recentchanges-label-bot' => 'Urejanje je izvedel bot',
 'recentchanges-label-unpatrolled' => 'Urejanje še ni bilo pregledano',
+'recentchanges-label-plusminus' => 'Uporabnik je velikost strani spremenil za tolikšno število bajtov.',
+'recentchanges-legend-newpage' => '(glej tudi [[Special:NewPages|seznam novih strani]])',
 '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',
@@ -2148,10 +2131,8 @@ Sedaj je preusmeritev na [[$2]].',
 'protectedpages' => 'Zaščitene strani',
 'protectedpages-indef' => 'Samo neomejene zaščite',
 'protectedpages-cascade' => 'Le kaskadne zaščite',
-'protectedpagestext' => 'Spodaj navedene strani so zaščitene pred urejanjem ali prestavljanjem.',
 'protectedpagesempty' => 'Nobena stran ni trenutno zaščitena s temi parametri.',
 'protectedtitles' => 'Zaščiteni naslovi',
-'protectedtitlestext' => 'Naslednji naslovi so zaščiteni pred ustvarjanjem',
 'protectedtitlesempty' => 'Noben naslov ni trenutno zaščiten s temi parametri.',
 'listusers' => 'Seznam uporabnikov',
 'listusers-editsonly' => 'Pokaži samo uporabnike z urejanji',
@@ -2375,9 +2356,9 @@ Navežite stik z urejevalcem:
 e-pošta: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Nadaljnjih obvestil do obiska strani ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.
+Medtem ko ste prijavljeni, nadaljnjih obvestil ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.
 
-             Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
+Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
 
 --
 Za spremembo nastavitev e-poštnih obvestil obiščite
@@ -3193,7 +3174,7 @@ Z njenim zagonom lahko ogrozite vaš sistem.",
 'svg-long-desc' => 'datoteka SVG, v izvirniku $1 × $2 slikovnih točk, velikost datoteke: $3',
 'svg-long-desc-animated' => 'animirana datoteka SVG, v izvirniku $1 × $2 slikovnih točk, velikost datoteke: $3',
 'svg-long-error' => 'Neveljavna datoteka SVG: $1',
-'show-big-image' => 'Slika v višji ločljivosti',
+'show-big-image' => 'Izvirna datoteka',
 'show-big-image-preview' => 'Velikost predogleda: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Druga ločljivost|Drugi ločljivosti|Druge ločljivosti}}: $1.',
 'show-big-image-size' => '$1 × $2 točk',
@@ -3666,10 +3647,6 @@ Druga bodo po privzetem skrita.
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Uporabniško določena prednost ($1)',
 
-# External editor support
-'edit-externally' => 'Uredite datoteko z uporabo zunanjega orodja',
-'edit-externally-help' => '(Za več informacij glejte [https://www.mediawiki.org/wiki/Manual:External_editors navodila za namestitev])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'vse',
 'namespacesall' => 'vse',
@@ -3771,6 +3748,7 @@ Prosimo, potrdite, da jo resnično želite znova ustvariti.",
 
 # Separators for various lists, etc.
 'percent' => '$1&#160;%',
+'quotation-marks' => '»$1«',
 
 # Multipage image navigation
 'imgmultipageprev' => '← prejšnja stran',
@@ -3901,10 +3879,9 @@ Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo
 
 # Special:SpecialPages
 'specialpages' => 'Posebne strani',
-'specialpages-note' => '----
-* Navadne posebne strani.
-* <span class="mw-specialpagerestricted">Omejene posebne strani.</span>
-* <span class="mw-specialpagecached">Predpomnjene posebne strani (morda so zastarele).</span>',
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Navadne posebne strani.
+* <span class="mw-specialpagerestricted">Omejene posebne strani.</span>',
 'specialpages-group-maintenance' => 'Vzdrževalna poročila',
 'specialpages-group-other' => 'Ostale posebne strani',
 'specialpages-group-login' => 'Prijavite se / ustvarite račun',
@@ -4117,4 +4094,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 86b6148..ab6d649 100644 (file)
@@ -159,7 +159,6 @@ $messages = array(
 'qbedit' => 'Ändern',
 'qbpageoptions' => 'Seytaoptiona',
 'qbmyoptions' => 'Menne Seyta',
-'qbspecialpages' => 'Spezialseyta',
 'faq' => 'FAQ',
 
 # Vector skin
@@ -259,8 +258,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',
@@ -322,9 +319,6 @@ Meeglicherweise wurde se bereits vu jemand anders entfernt.',
 'perfcached' => 'De folgenden Daten stomma oaus damm Cache und sein meegliecherweise nee aktuell. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Diese Daten stomma oaus damm Cache, letztes Update: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "'''De Aktualisierungsfunktion fier diese Seite ies zurzeit deaktiviert. De Daten waan bis uff Weiteres nee erneuert.'''",
-'wrong_wfQuery_params' => 'Foalsche Parameter fier wfQuery()<br />
-Funksjonn: $1<br />
-Abfroage: $2',
 'viewsource' => 'Quelltext oasahn',
 'actionthrottled' => 'Aksjonszoahl limmetiert',
 'actionthrottledtext' => 'Du host diese Aksjonn zu uffte innerholb annes korza Zeitraums ausgeführt. Bitte woarte a poar Minuta und probiere is doann erneut.',
@@ -745,12 +739,8 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 # Search results
 'searchresults' => 'Sichergebnisse',
 'searchresults-title' => 'Suchergebnisse fier "$1"',
-'searchresulttext' => 'Fier meh Informationen zur Suche siehe de [[{{MediaWiki:Helppage}}|Hilfeseite]].',
-'searchsubtitle' => 'Denne Sichoafroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|olle miet „$1“ beginnenda Seyta]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|olle Seyta, de noach „$1“ verlinka]])',
-'searchsubtitleinvalid' => 'Denne Sichoafroage: „$1“.',
 'toomanymatches' => 'De Oazoahl dar Sichergebnisse ies zu gruß, bitte versiche anne andere Obfroage.',
 'titlematches' => 'Iebereinstimmunga miet Seytatitteln',
-'notitlematches' => 'Kenne Iebereinstimmunga miet Seytatitteln',
 'textmatches' => 'Iebereinstimmunga miet Inhalta',
 'notextmatches' => 'Kenne Iebereinstimmunga miet Inhalta',
 'prevn' => 'vurherige {{PLURAL:$1|$1}}',
@@ -759,10 +749,8 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'nextn-title' => '{{PLURAL:$1|Folgendes Ergebnis|Folgende $1 Ergebnisse}}',
 'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Suchoptiona',
 'searchmenu-exists' => "'''Is gitt anne Seite, de den Noama „[[:$1]]“ hoot'''",
 'searchmenu-new' => "'''Erstalle de Seite „[[:$1|$1]]“ ei diesem Wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige olle Seyta, de miet damm Sichbegriff oafanga]]',
 'searchprofile-articles' => 'Inhaltsseyta',
 'searchprofile-project' => 'Helfe on Projektseyta',
 'searchprofile-images' => 'Multimedia',
@@ -785,11 +773,9 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'showingresults' => "Hier {{PLURAL:$1|ies '''1''' Ergebnis|sein '''$1''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
 'showingresultsnum' => "Hier {{PLURAL:$3|ies '''1''' Ergebnis|sein '''$3''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnisse '''$1–$2''' vu '''$3'''}} fier '''$4'''",
-'nonefound' => "'''Hinweis:''' Is waan standardmäßig ocke eenige Noamensräume dorchsucht. Setze ''all:'' vur denn Suchbegriff, im olle Seita (inkl. Diskussionsseiten, Vorlagen usw.) zu dorchsucha oder gezielt dan Noama des zu dorchsuchenden Noamensraumes.",
 'search-nonefound' => 'Fier denne Sichoafroage wurden kenne Ergebnisse gefunda.',
 'powersearch-ns' => 'Suche ei Noamasräuma:',
 'powersearch-redir' => 'Weiterleitunga oanzeega:',
-'powersearch-field' => 'Suche noach:',
 'powersearch-toggleall' => 'Olle',
 'powersearch-togglenone' => 'Kenne',
 'searchdisabled' => 'De {{SITENAME}}-Suche ies deaktiviert. Du koast underdessa miet Google sucha. Bitte bedenke, doaß der Suchindex fier {{SITENAME}} veraltet sei koan.',
@@ -798,8 +784,6 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'preferences' => 'Eenstellunga',
 'mypreferences' => 'Meene Eistellunga',
 'prefs-edits' => 'Oazoahl dar Beoarbeetunga:',
-'prefsnologin' => 'Ne oagemeldet',
-'prefsnologintext' => 'Du mußt <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} oagemeldet]</span> sei, im denne Einstellunga ändern zu kinna.',
 'changepassword' => 'Poaßwurt ändern',
 'prefs-personal' => 'Nutzerdaten',
 'prefs-rc' => 'Letzte Änderunga',
@@ -820,7 +804,6 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'savedprefs' => 'Denne Einstallunga waan gespeichert.',
 'localtime' => 'Urtszeit:',
 'timezoneuseoffset' => 'Andere (Underschied oagahn)',
-'timezoneoffset' => 'Underschied¹:',
 'servertime' => "Aktuelle Zeit uff'm Server:",
 'guesstimezone' => 'Vum Browser iebernahma',
 'timezoneregion-africa' => 'Offreka',
@@ -989,6 +972,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.',
@@ -1254,10 +1238,8 @@ Jede Zeile enthält Links zu dar erschta und zweeta Wetterleitung suwie doas Zie
 'protectedpages' => 'Geschitzte Seyta',
 'protectedpages-indef' => 'Ock unbeschränkt geschitzte Seyta zeiga',
 'protectedpages-cascade' => 'Ock Seyta miet Kaskadenschutz',
-'protectedpagestext' => "Diese Spezialseite zeigt olle vur 'm Verschieba oder Beorbta geschitzta Seita.",
 'protectedpagesempty' => 'Aktuell sein kenne Seyta miet diesen Parametern geschitzt.',
 'protectedtitles' => 'Gesperrte Tittel',
-'protectedtitlestext' => 'De folgenden Tittel wurden zur Neuerstellung gesperrt.',
 'protectedtitlesempty' => 'Zurzeit sein miet dann oagegebena Parametern kenne Seyta zur Neuerstellung gesperrt.',
 'listusers' => 'Nutzerverzeichnis',
 'listusers-editsonly' => 'Zeige ock Nutzer miet Beiträga',
@@ -2138,10 +2120,6 @@ Weitere werden standardmäßig nicht angezeigt.
 
 'exif-gpsstatus-v' => 'Interoperabilität vu Messunga',
 
-# External editor support
-'edit-externally' => 'Diese Datei mit annem externen Programm bearbta',
-'edit-externally-help' => '(Siehe de [https://www.mediawiki.org/wiki/Manual:External_editors Installationsoaweisunga] fier weitere Informationen)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'olle',
 'namespacesall' => 'olle',
@@ -2280,8 +2258,7 @@ Du koast au de [[Special:EditWatchlist|Standard-Beoarbeetungsseyte]] benutza.',
 
 # Special:SpecialPages
 'specialpages' => 'Spezialseyta',
-'specialpages-note' => '----
-* Spezialseyta fier Jedermoan
+'specialpages-note' => '* Spezialseyta fier Jedermoan
 * <strong class="mw-specialpagerestricted">Spezialseyta fier Nutzer miet erweiterta Rechta</strong>',
 'specialpages-group-other' => 'Andere Spezialseyta',
 'specialpages-group-login' => 'Oamelda',
index 53a18c8..aa7451c 100644 (file)
@@ -154,7 +154,6 @@ $messages = array(
 'qbedit' => 'Wax ka bedel',
 'qbpageoptions' => 'Boggaan',
 'qbmyoptions' => 'Boggageyga',
-'qbspecialpages' => 'Bogaga qaaska ah',
 'faq' => 'SIL',
 'faqpage' => 'Project:SIL',
 
@@ -270,12 +269,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',
@@ -751,15 +748,12 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 # Search results
 'searchresults' => 'Natiijada raadinta (Baaris)',
 'searchresults-title' => 'Raadinta natiijooyinka "$1"',
-'searchsubtitle' => 'Waxaad raadisay \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dhamaan bogaaga ka bilaawdo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dhamaan bogagga la xiriiro "$1"]])',
-'searchsubtitleinvalid' => "Waxaa raadisay '''$1'''",
 'prevn' => 'Ka horeeya {{PLURAL:$1|$1}}',
 'nextn' => 'Ku xiga {{PLURAL:$1|$1}}',
 'prevn-title' => 'ka horeeyay  $1 {{PLURAL:$1|natiijo|natiijooyinka}}',
 'nextn-title' => 'Kan ku xiga $1 {{PLURAL:$1|natiijo|natiijooyinka}}',
 'shown-title' => 'Itusi $1 {{PLURAL:$1|natiijo|natiijooyinka}} halkii bog',
 'viewprevnext' => 'Fiiri ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Raadi doorashooyinka',
 'searchmenu-exists' => "'''Wikigaan wuu ku jiraa bog la dhoho  \"[[:\$1]]\" .'''",
 'searchmenu-new' => "'''Ku sameey bogga  \"[[:\$1]]\" wikigaan!'''",
 'searchprofile-articles' => 'Maqaalada kooban',
@@ -787,11 +781,9 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 'showingresultsnum' => "Hoos waxaa laga helay {{PLURAL:$3|'''1''' Natiijo|'''$3''' Natiijooyin}} Ka billow #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Natiijada  '''$1''' ee '''$3'''|Natiijooyinka '''$1 - $2'''  oo ah  '''$3'''}} ee '''$4'''",
 'search-nonefound' => 'Wax natiijo oo ka soo baxay ma jirto wixii aad raadisay',
-'powersearch' => 'Sidii aad wax uugu raadin laheed',
 'powersearch-legend' => 'Sidii aad wax uugu raadin laheed',
 'powersearch-ns' => 'ka raadi xarun magaceedka:',
 'powersearch-redir' => 'liiska inta la sii toosiyay',
-'powersearch-field' => 'Raadi',
 'powersearch-togglelabel' => 'Fiiri',
 'powersearch-toggleall' => 'Dhamaan',
 'powersearch-togglenone' => 'Waxna',
@@ -799,8 +791,6 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 # Preferences page
 'preferences' => 'Dooqyada',
 'mypreferences' => 'Dooqyadeyda',
-'prefsnologin' => 'Gudaha kuma jirtid',
-'prefsnologintext' => 'Waa in aad <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Gudaha ku jirtaa]</span> si aad dooqyadaada u dalbatid.',
 'prefs-skin' => 'Jirka',
 'skin-preview' => 'Horfiirin',
 'datedefault' => "Ma'jiro dooq",
@@ -1434,10 +1424,6 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 # Exif tags
 'exif-iimcategory' => 'Qeybta',
 
-# External editor support
-'edit-externally' => 'wax ka bedel faylkaan adiga oo isticmaalaya brogram dheeraad ah',
-'edit-externally-help' => '(Ka fiiri wax war ah oo kale  [https://www.mediawiki.org/wiki/Manual:External_editors sidii oo wax ugu habeysmi lahaa] )',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'dhamaan',
 'namespacesall' => 'dhamaan',
index 76a3ed2..a84e0f9 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' ),
@@ -372,7 +371,6 @@ $messages = array(
 'qbedit' => 'Redaktoni',
 'qbpageoptions' => 'Kjo faqe',
 'qbmyoptions' => 'Faqet e mia',
-'qbspecialpages' => 'Faqet speciale',
 'faq' => 'Pyetje që bëhen shpesh',
 'faqpage' => 'Project: Pyetje që bëhen shpesh',
 
@@ -488,8 +486,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}}',
@@ -584,9 +580,6 @@ Mund të përmbajë një ose më shumë germa, të cilat nuk mund të përdoren
 'perfcachedts' => 'Informacioni i mëposhtëm është një kopje e rifreskuar më $1. E shumta  {{PLURAL:$4|një rezultat është|$4 rezultate janë}} ruajtur në kopje.',
 'querypage-no-updates' => "Përditësimet për këtë faqe për momentin janë të ç'aktivizuara.
 Këtu informacioni nuk do të jetë i përditësuar.",
-'wrong_wfQuery_params' => 'Parametrat gabim tek wfQuery()<br />
-Funksioni: $1<br />
-Query: $2',
 'viewsource' => 'Shiko tekstin',
 'viewsource-title' => 'Shiko tekstin për $1',
 'actionthrottled' => 'Veprim u ndalua',
@@ -1202,12 +1195,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 # Search results
 'searchresults' => 'Rezultatet e kërkimit',
 'searchresults-title' => 'Rezultatet e kërkimit për "$1"',
-'searchresulttext' => 'Për më shumë informacion rreth kërkimit në {{SITENAME}} shikoni [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Kërkuat për "[[$1]]" ([[Special:Prefixindex/$1|të gjitha faqet që fillojnë me "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|të gjitha faqet që lidhen me"$1"]])',
-'searchsubtitleinvalid' => 'Kërkim për "$1"',
 'toomanymatches' => 'Ky kërkim ka shumë përfundime, provoni një pyetje tjetër më përcaktuese',
 'titlematches' => 'Tituj faqesh që përputhen',
-'notitlematches' => 'Nuk ka asnjë titull faqeje që përputhet',
 'textmatches' => 'Tekst faqesh që përputhet',
 'notextmatches' => 'Nuk ka asnjë tekst faqeje që përputhet',
 'prevn' => '{{PLURAL:$1|$1}} më para',
@@ -1216,10 +1205,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'nextn-title' => '$1 në vazhdim {{PLURAL:$1|rezultat|rezultate}}',
 'shown-title' => 'Trego $1 {{PLURAL:$1|rezultat|rezultate}} për faqe',
 'viewprevnext' => 'Shikoni ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Parazgjedhjet e kërkimit',
 'searchmenu-exists' => "'''Në këtë wiki kjo faqe është emëruar \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Hapë faqen \"[[:\$1]]\" në këtë wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfletoi faqet me këtë parashtesë]]',
 'searchprofile-articles' => 'Përmbajtja e faqeve',
 'searchprofile-project' => 'Ndihmë dhe faqet e Projektit',
 'searchprofile-images' => 'Multimedia',
@@ -1247,13 +1234,10 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'showingresults' => "Më poshtë tregohen {{PLURAL:$1|'''1''' përfundim|'''$1''' përfundime}} duke filluar nga #'''$2'''.",
 'showingresultsnum' => "Më poshtë tregohen {{PLURAL:$3|'''1''' përfundim|'''$3''' përfundime}} duke filluar nga #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultati '''$1''' nga '''$3'''|Rezultatet '''$1 - $2''' nga '''$3'''}} për '''$4'''",
-'nonefound' => "'''Shënim''': Kërkimet pa rezultate ndodhin kur kërkoni për fjalë që rastisen shpesh si \"ke\" dhe \"nga\", të cilat nuk janë të futura në regjistër, ose duke dhënë më shumë se një fjalë (vetëm faqet që i kanë të gjitha ato fjalë do të tregohen si rezultate).",
 'search-nonefound' => 'Nuk ka rezultate që përputhen me kërkesën.',
-'powersearch' => 'Kërko',
 'powersearch-legend' => 'Kërkim i përparuar',
 'powersearch-ns' => 'Kërkim në hapësira:',
 'powersearch-redir' => 'Trego përcjellimet',
-'powersearch-field' => 'Kërko për',
 'powersearch-togglelabel' => 'Zgjedh:',
 'powersearch-toggleall' => 'Tâna',
 'powersearch-togglenone' => 'Asnji',
@@ -1264,8 +1248,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',
-'prefsnologintext' => 'Duhet të jeni <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} të kyçur]</span> për të caktuar parapëlqimet e përdoruesit.',
 'changepassword' => 'Ndërroni fjalëkalimin',
 'prefs-skin' => 'Pamja',
 'skin-preview' => 'Parapamje',
@@ -1289,7 +1271,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'prefs-email' => 'Opsionet E-mail',
 'prefs-rendering' => 'Dukja',
 'saveprefs' => 'Ruaj parapëlqimet',
-'resetprefs' => 'Rikthe parapëlqimet',
 'restoreprefs' => 'Rikthe të gjitha të dhënat e mëparshme',
 'prefs-editing' => 'Redaktimi',
 'rows' => 'Rreshta:',
@@ -1307,7 +1288,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'localtime' => 'Ora lokale:',
 'timezoneuseserverdefault' => 'wiki default Përdorimi ( $1 )',
 'timezoneuseoffset' => 'Tjera (zgjidh rajonin)',
-'timezoneoffset' => 'Ofset¹:',
 'servertime' => 'Ora e shërbyesit:',
 'guesstimezone' => 'Gjeje nga shfletuesi',
 'timezoneregion-africa' => 'Afrikë',
@@ -1539,6 +1519,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',
@@ -2000,10 +1981,8 @@ Secili rresht përmban lidhjet tek përcjellimi i parë dhe përcjellimi i dytë
 'protectedpages' => 'Faqe të mbrojtura',
 'protectedpages-indef' => 'Vetëm mbrojtjet pa afat',
 'protectedpages-cascade' => 'Vetëm mbrojtjet',
-'protectedpagestext' => 'Faqet e mëposhtme janë të mbrojtura nga zhvendosja apo redaktimi',
 'protectedpagesempty' => 'Nuk ka faqe të mbrojtura me të dhënat e kërkuara.',
 'protectedtitles' => 'Titujt e mbrojtur',
-'protectedtitlestext' => 'Krijimi i këtyre titujve është i mbrojtur',
 'protectedtitlesempty' => 'Asnjë titull i mbrojtur nuk u gjet në këtë hapësirë.',
 'listusers' => 'Lista e përdoruesve',
 'listusers-editsonly' => 'Trego vetëm përdoruesit me redaktime',
@@ -3435,10 +3414,6 @@ Në qoftë se skeda është ndryshuar nga gjendja origjinale, disa hollësira mu
 'exif-urgency-high' => 'E Lartë ( $1 )',
 'exif-urgency-other' => 'Prioritet i përcaktuar nga përdoruesi ( $1 )',
 
-# External editor support
-'edit-externally' => 'Ndryshoni këtë skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shikoni [https://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për më shumë informacion)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'të gjitha',
 'namespacesall' => 'të gjitha',
@@ -3826,4 +3801,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 2d82b8f..86d9274 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( 'Корисничка_пријава' ),
@@ -554,7 +552,6 @@ $messages = array(
 'qbedit' => 'Уреди',
 'qbpageoptions' => 'Поставке странице',
 'qbmyoptions' => 'Моје странице',
-'qbspecialpages' => 'Посебне странице',
 'faq' => 'НПП',
 'faqpage' => 'Project:НПП',
 
@@ -674,8 +671,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => 'Преузето из „$1“',
 'youhavenewmessages' => 'Имате $1 ($2).',
-'newmessageslink' => 'нових порука',
-'newmessagesdifflink' => 'последња измена',
 'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|нове поруке}}',
@@ -775,9 +770,6 @@ $1',
 'perfcachedts' => 'Следећи подаци су кеширани, а последњи пут су ажурирани $2 у $3. Кеш садржи највише {{PLURAL:$4|један резултат|$4 резултата|$4 резултата}}.',
 'querypage-no-updates' => 'Ажурирање ове странице је тренутно онемогућено.
 Подаци који се овде налазе могу бити застарели.',
-'wrong_wfQuery_params' => 'Неисправни параметри за wfQuery()<br />
-Функција: $1<br />
-Упит: $2',
 'viewsource' => 'Изворни код',
 'viewsource-title' => 'Приказ извора странице $1',
 'actionthrottled' => 'Радња је успорена',
@@ -857,6 +849,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 +1165,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 />
@@ -1192,7 +1187,7 @@ $2
 Последња ставка у историји је приказана испод:",
 'semiprotectedpagewarning' => "'''Напомена:''' ова страница је заштићена, тако да само регистровани корисници могу да је уређују.
 Последњи запис у дневнику је приказан испод:",
-'cascadeprotectedwarning' => "'''Упозорење:''' ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:$1|следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:",
+'cascadeprotectedwarning' => "<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;\">'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:\$1|следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:</div>",
 'titleprotectedwarning' => "'''Упозорење: ова страница је заштићена тако да је могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].'''",
 'templatesused' => '{{PLURAL:$1|Шаблон|Шаблони}} на овој страници:',
 'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблони}} у овом прегледу:',
@@ -1367,8 +1362,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' => 'Разлог:',
@@ -1460,12 +1455,8 @@ $1",
 # Search results
 'searchresults' => 'Резултати претраге',
 'searchresults-title' => 'Резултати претраге за „$1“',
-'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' => 'Текст странице одговара',
 'notextmatches' => 'Ниједан текст странице не одговара',
 'prevn' => 'претходних {{PLURAL:$1|$1}}',
@@ -1474,10 +1465,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|следећи резултат|следећа резултата|следећих резултата}}',
 'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултата|резултата}} по страници',
 'viewprevnext' => 'Погледај ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Поставке претраге',
 'searchmenu-exists' => "'''Постоји и чланак под називом „[[:$1]]“.'''",
 'searchmenu-new' => "'''Направите страницу „[[:$1]]“.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прегледај странице с овим префиксом]]',
 'searchprofile-articles' => 'Чланци',
 'searchprofile-project' => 'Странице помоћи и пројеката',
 'searchprofile-images' => 'Датотеке',
@@ -1505,14 +1494,10 @@ $1",
 'showingresults' => "Испод {{PLURAL:$1|је приказан '''1''' резултат|су приказана '''$1''' резултата|је приказано '''$1''' резултата}} почев од броја '''$2'''.",
 'showingresultsnum' => "Испод {{PLURAL:$3|је приказан '''1''' резултат|су приказана '''$3''' резултата|је приказано '''$3''' резултата}} почев од броја '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
-'nonefound' => "'''Напомена''': само се неки именски простори претражују по подразумеваним поставкама.
-Ако желите све да претражите, додајте префикс '''all:''' испред траженог садржаја (ово укључује странице за разговор, шаблоне итд.) или користите префикс жељеног именског простора.",
 'search-nonefound' => 'Нема поклапања.',
-'powersearch' => 'Претражи',
 'powersearch-legend' => 'Напредна претрага',
 'powersearch-ns' => 'Тражи у следећим именским просторима:',
 'powersearch-redir' => 'Списак преусмерења',
-'powersearch-field' => 'Тражи',
 'powersearch-togglelabel' => 'Изабери:',
 'powersearch-toggleall' => 'све',
 'powersearch-togglenone' => 'ништа',
@@ -1525,8 +1510,6 @@ $1",
 'preferences' => 'Подешавања',
 'mypreferences' => 'Подешавања',
 'prefs-edits' => 'Број измена:',
-'prefsnologin' => 'Нисте пријављени',
-'prefsnologintext' => 'Морате бити <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} пријављени]</span> да бисте подешавали корисничке поставке.',
 'changepassword' => 'Промени лозинку',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Прегледај',
@@ -1550,7 +1533,6 @@ $1",
 'prefs-email' => 'Поставке е-поште',
 'prefs-rendering' => 'Изглед',
 'saveprefs' => 'Сачувај',
-'resetprefs' => 'Очисти несачуване измене',
 'restoreprefs' => 'Врати све на подразумевано (у свим одељцима)',
 'prefs-editing' => 'Уређивање',
 'rows' => 'Редова:',
@@ -1568,7 +1550,6 @@ $1",
 'localtime' => 'Локално време:',
 'timezoneuseserverdefault' => 'подразумеване вредности ($1)',
 'timezoneuseoffset' => 'друго (унесите одступање)',
-'timezoneoffset' => 'Одступање¹:',
 'servertime' => 'Време на серверу:',
 'guesstimezone' => 'попуни из прегледача',
 'timezoneregion-africa' => 'Африка',
@@ -1772,10 +1753,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' => 'постављање ове датотеке на заједничко складиште',
@@ -1815,6 +1796,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',
@@ -2328,10 +2310,8 @@ $1',
 'protectedpages' => 'Заштићене странице',
 'protectedpages-indef' => 'само неограничене заштите',
 'protectedpages-cascade' => 'само преносиве заштите',
-'protectedpagestext' => 'Следеће странице су заштићене од премештања или уређивања',
 'protectedpagesempty' => 'Нема заштићених страница с овим параметрима.',
 'protectedtitles' => 'Заштићени наслови',
-'protectedtitlestext' => 'Следећи наслови су заштићени од стварања',
 'protectedtitlesempty' => 'Нема заштићених наслова с овим параметрима.',
 'listusers' => 'Списак корисника',
 'listusers-editsonly' => 'прикажи само кориснике који су уређивали',
@@ -3972,10 +3952,6 @@ $8',
 'exif-urgency-high' => 'Високо ($1)',
 'exif-urgency-other' => 'Прилагођени приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Измени ову датотеку користећи спољашњи програм',
-'edit-externally-help' => '(Погледајте [https://www.mediawiki.org/wiki/Manual:External_editors упутство за подешавање] за више информација)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'све',
 'namespacesall' => 'све',
@@ -4080,6 +4056,7 @@ $5
 'ellipsis' => '…',
 'percent' => '$1%',
 'parentheses' => '($1)',
+'quotation-marks' => '„$1“',
 
 # Multipage image navigation
 'imgmultipageprev' => '← претходна страница',
@@ -4100,7 +4077,7 @@ $5
 'table_pager_empty' => 'Нема резултата',
 
 # Auto-summaries
-'autosumm-blank' => 'Уклоњен целокупан садржаја странице',
+'autosumm-blank' => 'Уклоњен целокупан садржај странице',
 'autosumm-replace' => 'Замена садржаја странице са „$1“',
 'autoredircomment' => 'Преусмерење на [[$1]]',
 'autosumm-new' => 'Нова страница: $1',
@@ -4133,7 +4110,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' => 'Наслови са списка надгледања су приказани испод и могу се уређивати додавањем или уклањањем ставки са списка;
 један наслов по реду.
@@ -4271,9 +4248,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Посебне странице',
-'specialpages-note' => '----
-* обичне посебне странице
-* <span class="mw-specialpagerestricted">ограничене посебне странице</span>',
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Нормалне посебне странице
+* <span class="mw-specialpagerestricted">Ð\9eграничене посебне странице</span>',
 'specialpages-group-maintenance' => 'Извештаји одржавања',
 'specialpages-group-other' => 'Остале посебне странице',
 'specialpages-group-login' => 'Пријава/регистрација',
@@ -4475,4 +4452,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 0b1de2c..284e4e7 100644 (file)
@@ -463,7 +463,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Postavke stranice',
 'qbmyoptions' => 'Moje stranice',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'NPP',
 'faqpage' => 'Project:NPP',
 
@@ -581,8 +580,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}}',
@@ -680,9 +677,6 @@ Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
 'perfcachedts' => 'Sledeći podaci su keširani, a poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata|$4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je trenutno onemogućeno.
 Podaci koji se ovde nalaze mogu biti zastareli.',
-'wrong_wfQuery_params' => 'Neispravni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Upit: $2',
 'viewsource' => 'Izvorni kod',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Radnja je usporena',
@@ -1057,8 +1051,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 />
@@ -1078,7 +1073,7 @@ Administrator koji je zaključao bazu podataka je naveo sledeće objašnjenje: $
 Poslednja stavka u istoriji je prikazana ispod:",
 'semiprotectedpagewarning' => "'''Napomena:''' ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.
 Poslednji zapis u dnevniku je prikazan ispod:",
-'cascadeprotectedwarning' => "'''Upozorenje:''' ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:",
+'cascadeprotectedwarning' => "<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:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:\$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
 'titleprotectedwarning' => "'''Upozorenje: ova stranica je zaštićena tako da je mogu napraviti samo korisnici [[Special:ListGroupRights|s određenim pravima]].'''",
 'templatesused' => '{{PLURAL:$1|Šablon|Šabloni}} na ovoj stranici:',
 'templatesusedpreview' => '{{PLURAL:$1|Šablon|Šabloni}} u ovom pregledu:',
@@ -1252,8 +1247,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:',
@@ -1345,12 +1340,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati pretrage za „$1“',
-'searchresulttext' => 'Za više informacija o pretraživanju projekta {{SITENAME}} pogledajte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Tražili ste '''[[:$1]]''' ([[Special:Prefixindex/$1|sve stranice koje počinju sa „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do „$1“]])",
-'searchsubtitleinvalid' => "Tražili ste '''$1'''",
 'toomanymatches' => 'Pronađeno je previše rezultata. Izmenite upit.',
 'titlematches' => 'Naslov stranice odgovara',
-'notitlematches' => 'Nijedan naslov stranice ne odgovara',
 'textmatches' => 'Tekst stranice odgovara',
 'notextmatches' => 'Nijedan tekst stranice ne odgovara',
 'prevn' => 'prethodnih {{PLURAL:$1|$1}}',
@@ -1359,10 +1350,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '$1 {{PLURAL:$1|sledeći rezultat|sledeća rezultata|sledećih rezultata}}',
 'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Postavke pretrage',
 'searchmenu-exists' => "'''Postoji i članak pod nazivom „[[:$1]]“.'''",
 'searchmenu-new' => "'''Napravite stranicu „[[:$1]]“.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice s ovim prefiksom]]',
 'searchprofile-articles' => 'Članci',
 'searchprofile-project' => 'Stranice pomoći i projekata',
 'searchprofile-images' => 'Datoteke',
@@ -1390,14 +1379,10 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'showingresults' => "Ispod {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od broja '''$2'''.",
 'showingresultsnum' => "Ispod {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od broja '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Napomena''': samo se neki imenski prostori pretražuju po podrazumevanim postavkama.
-Ako želite sve da pretražite, dodajte prefiks '''all:''' ispred traženog sadržaja (ovo uključuje stranice za razgovor, šablone itd.) ili koristite prefiks željenog imenskog prostora.",
 'search-nonefound' => 'Nema poklapanja.',
-'powersearch' => 'Pretraži',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Traži u sledećim imenskim prostorima:',
 'powersearch-redir' => 'Spisak preusmerenja',
-'powersearch-field' => 'Traži',
 'powersearch-togglelabel' => 'Izaberi:',
 'powersearch-toggleall' => 'sve',
 'powersearch-togglenone' => 'ništa',
@@ -1410,8 +1395,6 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'preferences' => 'Podešavanja',
 'mypreferences' => 'Podešavanja',
 'prefs-edits' => 'Broj izmena:',
-'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span> da biste podešavali korisničke postavke.',
 'changepassword' => 'Promeni lozinku',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Pregledaj',
@@ -1435,7 +1418,6 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'prefs-email' => 'Postavke e-pošte',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Sačuvaj',
-'resetprefs' => 'Očisti nesačuvane izmene',
 'restoreprefs' => 'Vrati sve na podrazumevano (u svim odeljcima)',
 'prefs-editing' => 'Uređivanje',
 'rows' => 'Redova:',
@@ -1453,7 +1435,6 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'localtime' => 'Lokalno vreme:',
 'timezoneuseserverdefault' => 'podrazumevane vrednosti ($1)',
 'timezoneuseoffset' => 'drugo (unesite odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
 'servertime' => 'Vreme na serveru:',
 'guesstimezone' => 'popuni iz pregledača',
 'timezoneregion-africa' => 'Afrika',
@@ -1651,10 +1632,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',
@@ -1691,6 +1672,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',
@@ -2197,10 +2179,8 @@ Sada je preusmerenje na [[$2]].',
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'samo neograničene zaštite',
 'protectedpages-cascade' => 'samo prenosive zaštite',
-'protectedpagestext' => 'Sledeće stranice su zaštićene od premeštanja ili uređivanja',
 'protectedpagesempty' => 'Nema zaštićenih stranica s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Sledeći naslovi su zaštićeni od stvaranja',
 'protectedtitlesempty' => 'Nema zaštićenih naslova s ovim parametrima.',
 'listusers' => 'Spisak korisnika',
 'listusers-editsonly' => 'prikaži samo korisnike koji su uređivali',
@@ -3814,10 +3794,6 @@ $8',
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Prilagođeni prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Izmeni ovu datoteku koristeći spoljašnji program',
-'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors uputstvo za podešavanje] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
@@ -3921,6 +3897,7 @@ Potvrdite da stvarno želite da napravite stranicu.",
 'ellipsis' => '…',
 'percent' => '$1%',
 'parentheses' => '($1)',
+'quotation-marks' => '„$1“',
 
 # Multipage image navigation
 'imgmultipageprev' => '← prethodna stranica',
@@ -3941,7 +3918,7 @@ Potvrdite da stvarno želite da napravite stranicu.",
 'table_pager_empty' => 'Nema rezultata',
 
 # Auto-summaries
-'autosumm-blank' => 'Uklonjen celokupan sadržaja stranice',
+'autosumm-blank' => 'Uklonjen celokupan sadržaj stranice',
 'autosumm-replace' => 'Zamena sadržaja stranice sa „$1“',
 'autoredircomment' => 'Preusmerenje na [[$1]]',
 'autosumm-new' => 'Nova stranica: $1',
@@ -3974,7 +3951,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.
@@ -4111,9 +4088,8 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 
 # Special:SpecialPages
 'specialpages' => 'Posebne stranice',
-'specialpages-note' => '----
-* obične posebne stranice
-* <span class="mw-specialpagerestricted">ograničene posebne stranice</span>',
+'specialpages-note' => '* Normalne posebne stranice
+* <span class="mw-specialpagerestricted">Ograničene posebne stranice</span>',
 'specialpages-group-maintenance' => 'Izveštaji održavanja',
 'specialpages-group-other' => 'Ostale posebne stranice',
 'specialpages-group-login' => 'Prijava/registracija',
@@ -4227,6 +4203,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',
@@ -4308,4 +4285,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..935142c 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' ),
@@ -277,7 +275,6 @@ $messages = array(
 'qbedit' => 'Kenki',
 'qbpageoptions' => 'A papira disi',
 'qbmyoptions' => 'Mi papira',
-'qbspecialpages' => 'Spesrutu papira',
 'faq' => 'FAQ (Sani di ben aksi furu)',
 'faqpage' => 'Project:Sani di ben aksi furu',
 
@@ -364,8 +361,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',
@@ -628,19 +623,14 @@ A kan ben trowe efu dribi.
 
 # Search results
 'searchresults' => 'Sukuleysi',
-'searchresulttext' => 'Fu pasa infrumasi abra suku opo {{SITENAME}}, leysi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Y ben o suku na '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Yu ben o suku na '''$1'''",
 'prevn' => '{{PLURAL:$1|$1}} di psa',
 'nextn' => '{{PLURAL:$1|$1}} trawan',
 'viewprevnext' => 'Luku ($1 {{int:pipe-separator}} $2) ($3).',
-'powersearch' => 'Suku moro dipi',
 
 # Preferences page
 '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',
@@ -653,7 +643,6 @@ A kan ben trowe efu dribi.
 'prefs-watchlist-edits' => 'Maximum teki fu dey ini mi granmeki sirey:',
 'prefs-misc' => 'Diversi',
 'saveprefs' => 'Oponaki',
-'resetprefs' => 'Bakadray na owru si',
 'prefs-editing' => 'Kenki',
 'rows' => 'Rei:',
 'columns' => 'Kolum:',
@@ -665,7 +654,6 @@ A kan ben trowe efu dribi.
 'savedprefs' => 'Yu masi ben oponaki.',
 'timezonelegend' => 'Gron fu ten',
 'localtime' => 'Lokali ten',
-'timezoneoffset' => 'Ski ini ten¹',
 'servertime' => 'Serverten',
 'guesstimezone' => 'Fu a browser presi',
 'allowemail' => 'E-mail fu trawan masyin adu',
@@ -880,7 +868,6 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
 'deadendpages' => 'Papira sondro miti',
 'deadendpagestext' => 'Den ondroben peprewoysi abi no skaki na trawan peprewoysi ini {{SITENAME}}.',
 'protectedpages' => 'Papira di sroto',
-'protectedpagestext' => 'Da ondroben peprewoysi ben tapu nanga kan no kenki abi efru e dribi ben',
 'listusers' => 'Réy fu kebroikiman',
 'newpages' => 'Nyun papira',
 'newpages-username' => 'Masyinnen:',
@@ -1186,10 +1173,6 @@ Trawan o kibri.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Kenki a file disi ini wan dorosey wrokosani.',
-'edit-externally-help' => 'Luku ini a [https://www.mediawiki.org/wiki/Manual:External_editors skorobuku fu den seti] gi moro yepi.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ala',
 'namespacesall' => 'ala',
index 04a10bd..519bdf3 100644 (file)
@@ -186,7 +186,6 @@ $messages = array(
 'qbedit' => 'Annerje',
 'qbpageoptions' => 'Disse Siede',
 'qbmyoptions' => 'Mien Sieden',
-'qbspecialpages' => 'Spezialsieden',
 'faq' => 'Oafte stoalde Froagen',
 'faqpage' => 'Project:FAQ',
 
@@ -300,8 +299,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',
@@ -389,9 +386,6 @@ Fielicht is ju al fon uurswál läsked wuuden.',
 'perfcached' => 'Do foulgjende Doaten stamme uut dän Cache un sunt muugelkerwiese nit aktuäl. Maximoal {{PLURAL:$1|een Resultoat is|$1 Resultoate sunt}} ferföigboar in dän Cache.',
 'perfcachedts' => 'Disse Doaten stamme uut dän Cache, lääste Update: $2, $3 Uure. Maximoal {{PLURAL:$4|een Resultoat is|$4 Resultoate sunt}} ferfïgboar in dän Cache.',
 'querypage-no-updates' => "'''Ju Aktualisierengsfunktion foar disse Siede is apstuuns deaktivierd. Do Doaten wäide toueerst nit fernäierd.'''",
-'wrong_wfQuery_params' => 'Falske Parameter foar wfQuery()<br />
-Funktion: $1<br />
-Oufroage: $2',
 'viewsource' => 'Wältext betrachtje',
 'viewsource-title' => 'Wältext fon Siede $1 bekiekje',
 'actionthrottled' => 'Aktionsantaal limitierd',
@@ -945,12 +939,8 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 # Search results
 'searchresults' => 'Säikresultoate',
 'searchresults-title' => 'Säikresultoate foar "$1"',
-'searchresulttext' => 'Foar moor Informatione tou ju Säike sjuch ju [[{{MediaWiki:Helppage}}|Hälpesiede]].',
-'searchsubtitle' => 'Dien Säikanfroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aal mäd „$1“ ounfangende Sieden]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal Sieden, do ätter „$1“ ferlinkje]])',
-'searchsubtitleinvalid' => 'Foar dien Säikanfroage „$1“.',
 'toomanymatches' => 'Ju Antaal fon Säikresultoate is tou groot, fersäik ne näie Oufroage.',
 'titlematches' => 'Uureenstämmengen mäd Uurskrifte',
-'notitlematches' => 'Neen Uureenstimmengen',
 'textmatches' => 'Uureenstämmengen mäd Texte',
 'notextmatches' => 'Neen Uureenstimmengen',
 'prevn' => 'foarige {{PLURAL:$1|$1}}',
@@ -959,10 +949,8 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'nextn-title' => '{{PLURAL:$1|Foulgjend Resultoat|Foulgjende $1 Resultoate}}',
 'shown-title' => 'Wies $1 {{PLURAL:$1|Resultoat|Resultoate}} pro Siede',
 'viewprevnext' => 'Wies ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Säikoptione',
 'searchmenu-exists' => "'''Dät rakt n Siede mäd Noome \"[[:\$1]]\" ap dissen Wiki'''",
 'searchmenu-new' => "'''Moak ju Siede „[[:$1]]“ in dissen Wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies aal Sieden, do mäd dän Säikbegriep ounfange]]',
 'searchprofile-articles' => 'Inhooldssieden',
 'searchprofile-project' => 'Hälpe un Projektsieden',
 'searchprofile-images' => 'Multimedia',
@@ -990,13 +978,10 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'showingresults' => "Hier {{PLURAL:$1|is '''1''' Resultoat|sunt '''$1''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
 'showingresultsnum' => "Hier {{PLURAL:$3|is '''1''' Resultoat|sunt '''$3''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultoat '''$1''' fon '''$3'''|Resultoate '''$1–$2''' fon '''$3'''}} foar '''$4'''",
-'nonefound' => "'''Waiwiesenge:''' Der wäide standoardmäitich man oankelde Noomensruume truchsoacht. Sät ''all:'' foar din Säikbegrip, uum aal Sieden (bietou Diskussionssieden, Foarloagen usw.) tou truchsäiken of sield dän Noome fon dän truchtousäikende Noomensruum.",
 'search-nonefound' => 'Foar dien Säikanfroage wuuden neen Resultoate fuunen.',
-'powersearch' => 'Fääre säike',
 'powersearch-legend' => 'Fääre säike',
 'powersearch-ns' => 'Säik in Noomensruume:',
 'powersearch-redir' => 'Fäärelaitengen anwiese',
-'powersearch-field' => 'Säik ätter:',
 'powersearch-togglelabel' => 'Wääl uut:',
 'powersearch-toggleall' => 'Aal',
 'powersearch-togglenone' => 'Neen',
@@ -1007,8 +992,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',
-'prefsnologintext' => 'Du moast <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anmälded]</span> weese, uum dien Ienstaalengen annerje tou konnen.',
 'changepassword' => 'Paaswoud annerje',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Foarskau',
@@ -1029,7 +1012,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'prefs-email' => 'E-Mail-Optione',
 'prefs-rendering' => 'Wo dät uutsjucht',
 'saveprefs' => 'Ienstaalengen spiekerje',
-'resetprefs' => 'Nit spiekerde Annerengen fersmiete',
 'restoreprefs' => 'Aal Standoard-Ienstaalengen wier häärstaale',
 'prefs-editing' => 'Beoarbaidje',
 'rows' => 'Riegen',
@@ -1047,7 +1029,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'localtime' => 'Tied bie Jou:',
 'timezoneuseserverdefault' => 'Standoardtied fon dän Server bruuke ($1)',
 'timezoneuseoffset' => 'Uur (Unnerskeed anreeke)',
-'timezoneoffset' => 'Unnerskeed¹:',
 'servertime' => 'Tied ap dän Server:',
 'guesstimezone' => 'Ienföigje uut dän Browser',
 'timezoneregion-africa' => 'Afrikoa',
@@ -1274,6 +1255,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.',
@@ -1688,10 +1670,8 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
 'protectedpages' => 'Skutsede Sieden',
 'protectedpages-indef' => 'Bloot uunbeskränkt bruukte Sieden wiese',
 'protectedpages-cascade' => 'Bloot Sieden mäd Kaskadenskuts',
-'protectedpagestext' => 'Do foulgjende Sieden sunt beskutsed juun Ferskuuwen of Beoarbaidjen',
 'protectedpagesempty' => 'Apstuuns sunt neen Sieden mäd disse Parametere skutsed.',
 'protectedtitles' => 'Speerde Tittele',
-'protectedtitlestext' => 'Do foulgjende Sieden sunt speerd uum näi tou moakjen',
 'protectedtitlesempty' => 'Apstuuns sunt mäd do ounroate Parametere neen Sieden speerd uum näi tou moakjen.',
 'listusers' => 'Benutser-Lieste',
 'listusers-editsonly' => 'Wies bloot Benutsere mäd Biedraage',
@@ -2955,10 +2935,6 @@ Wiedere wäide standoardmäitich nit anwiesd.
 'exif-gpsdirection-t' => 'Wuddelke Gjuchte',
 'exif-gpsdirection-m' => 'Magnetiske Gjuchte',
 
-# External editor support
-'edit-externally' => 'Disse Doatäi mäd n extern Program beoarbaidje',
-'edit-externally-help' => '(Sjuch do [https://www.mediawiki.org/wiki/Manual:External_editors Installationsanwiesengen] foar wiedere Informatione)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aal',
 'namespacesall' => 'aal',
@@ -3154,8 +3130,7 @@ Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''
 
 # Special:SpecialPages
 'specialpages' => 'Spezioalsieden',
-'specialpages-note' => '----
-* Reguläre Spezioalsieden
+'specialpages-note' => '* Reguläre Spezioalsieden
 * <span class="mw-specialpagerestricted">Tougriepsbeskränkede Spezioalsieden</span>
 * <span class="mw-specialpagecached">Cachegenerierde Spezioalsieden</span>',
 'specialpages-group-maintenance' => 'Fersuurgengsliesten',
@@ -3241,4 +3216,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 52ecb44..ee0d4d5 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' ),
@@ -273,7 +271,6 @@ $messages = array(
 'qbedit' => 'Édit',
 'qbpageoptions' => 'Kaca ieu',
 'qbmyoptions' => 'Kaca kuring',
-'qbspecialpages' => 'Kaca husus',
 'faq' => 'NLD',
 'faqpage' => 'Project:NLD',
 
@@ -387,8 +384,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',
@@ -475,7 +470,6 @@ Sigana geus dihapus ku nu séjén.',
 'perfcached' => "Data di handap ieu mangrupa 'cache' sahingga bisa jadi henteu mutahir. 'Cache' nyadiakeun paling loba {{PLURAL:$1|hiji hasil|$1 hasil}}.",
 'perfcachedts' => "Data di handap mangrupa 'cache' anu panungtungan diropéa $1. 'Cache' nyadiakeun paling loba {{PLURAL:$4|hiji hasil|$4 hasil}}.",
 'querypage-no-updates' => 'Pangrobahan ahir ti kaca ieu keur dipaéhkeun. Data anu aya di dieu ayeuna moal dimuat deui.',
-'wrong_wfQuery_params' => 'Parameter salah ka wfQuery()<br />Fungsi: $1<br />Pamenta: $2',
 'viewsource' => 'Témbongkeun sumber',
 'viewsource-title' => 'Témbongkeun sumber pikeun $1',
 'actionthrottled' => 'Peta diwates',
@@ -1011,12 +1005,8 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 # Search results
 'searchresults' => 'Hasil maluruh',
 'searchresults-title' => 'Hasil nyusud "$1"',
-'searchresulttext' => 'Pikeun iber nu leuwih lengkep ngeunaan nyaksrak di {{SITENAME}}, buka [[{{MediaWiki:Helppage}}|Nyaksrak {{SITENAME}}]].',
-'searchsubtitle' => 'Anjeun nyusud \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sakabéh kaca nu dimimitian ku "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sakabéh kaca nu numbu ka "$1"]])',
-'searchsubtitleinvalid' => 'Pikeun pamundut "$1"',
 'toomanymatches' => 'Loba teuing nu cocog, mangga cobi mundut nu sanésna',
 'titlematches' => 'Judul artikel nu cocog',
-'notitlematches' => 'Teu aya judul kaca nu cocog',
 'textmatches' => 'Téks kaca nu cocog',
 'notextmatches' => 'Teu aya téks kaca nu cocog',
 'prevn' => '{{PLURAL:$1|$1}} saméméhna',
@@ -1025,10 +1015,8 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 'nextn-title' => '$1 {{PLURAL:$1|hasil|hasil}} salajengna',
 'shown-title' => 'Témbongkeun $1 {{PLURAL:$1|hasil|hasil}} per kaca',
 'viewprevnext' => 'Témbongkeun ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Pilihan nyungsi',
 'searchmenu-exists' => "'''Dina wiki ieu geus aya kaca nu ngaranna \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Jieun kaca \"[[:\$1]]\" dina ieu wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sungsi kaca-kaca nu dimimitian ku ieu awalan]]',
 'searchprofile-articles' => 'Kaca eusi',
 'searchprofile-project' => 'Kaca Pitulung jeung Proyék',
 'searchprofile-images' => 'Multimédia',
@@ -1056,14 +1044,10 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 'showingresults' => "Di handap ieu némbongkeun {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimimitianku  #'''$2'''.",
 'showingresultsnum' => "Di handap ieu némbongkeun {{PLURAL:$3|'''1''' hasil|'''$3''' hasil}}, dimimitian #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' ti '''$3'''|Hasil '''$1 - $2''' ti '''$3'''}} pikeun '''$4'''",
-'nonefound' => "'''Catetan''': Ti buhunna (default), panyusud téh ukur ngawengku sababaraha ngaran rohang.
-Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup kaca obrolan, citakan, jsb.) atawa pilih rohang ngaran dina awalanana luyu jeung nu dimaksud.",
 'search-nonefound' => 'Euweuh hasil nu cocog jeung kueri.',
-'powersearch' => 'Sungsi',
 'powersearch-legend' => 'Panéangan tuluy',
 'powersearch-ns' => 'Téangan di ngaranspasi:',
 'powersearch-redir' => 'Daptar alihan',
-'powersearch-field' => 'Téangan keur',
 'powersearch-togglelabel' => 'Pariksa:',
 'powersearch-toggleall' => 'Kabéh',
 'powersearch-togglenone' => 'Henteu aya',
@@ -1074,8 +1058,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',
-'prefsnologintext' => 'Anjeun kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} asup log]</span> pikeun ngatur préferénsi pamaké.',
 'changepassword' => 'Robah sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pramidang',
@@ -1097,7 +1079,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 'prefs-email' => 'Pilihan surélék',
 'prefs-rendering' => 'Pidangan',
 'saveprefs' => 'Simpen préferénsi',
-'resetprefs' => 'Sét ulang préferénsi',
 'restoreprefs' => 'Larapkeun setélan buhun',
 'prefs-editing' => 'Ukuran kotak téks',
 'rows' => 'Baris',
@@ -1115,7 +1096,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 'localtime' => 'Wanci satempat:',
 'timezoneuseserverdefault' => 'Paké bawaan wiki ($1)',
 'timezoneuseoffset' => 'Lianna (tangtukeun bédana)',
-'timezoneoffset' => 'Béda¹:',
 'servertime' => 'Wanci server:',
 'guesstimezone' => 'Eusian ti panyungsi',
 'timezoneregion-africa' => 'Afrika',
@@ -1333,6 +1313,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',
@@ -1680,10 +1661,8 @@ Saméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.',
 'deadendpagestext' => 'Kaca-kaca di handap ieu teu numbu ka kaca séjén di {{SITENAME}}:',
 'protectedpages' => 'Kaca-kaca nu dikonci',
 'protectedpages-indef' => 'Ngan pikeun panangtayungan kalawan waktu nuteu kawates',
-'protectedpagestext' => 'Kaca-kaca di handap ieu teu bisa dialihkeun atawa diédit',
 'protectedpagesempty' => 'Dina danget ieu, teu aya kaca nu dikonci dumasar kana ieu paraméter.',
 'protectedtitles' => 'Judul nu dikonci',
-'protectedtitlestext' => 'Judul-judul di handap ieu teu bisa dijieun:',
 'protectedtitlesempty' => 'Dina danget ieu, euweuh judul nu keur dikonci tina paraméter-paraméter éta.',
 'listusers' => 'Daptar pamaké',
 'listusers-editsonly' => 'Témbongkeun ukur kontributor anu ngédit',
@@ -2790,10 +2769,6 @@ Nu séjénna bakal disumputkeun sakumaha asalna.
 
 'exif-urgency-normal' => 'Normal ($1)',
 
-# External editor support
-'edit-externally' => 'Édit koropak ieu migunakeun aplikasi éksternal',
-'edit-externally-help' => 'Baca [https://www.mediawiki.org/wiki/Manual:External_editors pituduh ngatur] pikeun émbaran leuwih jéntré.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sadaya',
 'namespacesall' => 'kabéh',
@@ -2932,8 +2907,7 @@ Coba ku sawangan normal.',
 
 # Special:SpecialPages
 'specialpages' => 'Kaca husus',
-'specialpages-note' => '----
-* Kaca husus bisa di buka ku umum.
+'specialpages-note' => '* Kaca husus bisa di buka ku umum.
 * <strong class="mw-specialpagerestricted">Cetak kandel kaca husus nu kawates.</strong>',
 'specialpages-group-maintenance' => 'Laporan pigawéeun',
 'specialpages-group-other' => 'Kaca husus lainna',
@@ -3026,4 +3000,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 b137d8e..e46b342 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' ),
@@ -484,7 +483,6 @@ $messages = array(
 'qbedit' => 'Redigera',
 'qbpageoptions' => 'Denna sida',
 'qbmyoptions' => 'Mina inställningar',
-'qbspecialpages' => 'Specialsidor',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -600,12 +598,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',
@@ -703,7 +699,6 @@ Den kan innehålla ett eller flera tecken som inte får användas i sidtitlar.',
 'perfcached' => 'Följande data är cachad och är möjligtvis inte helt uppdaterad. Maximalt {{PLURAL:$1|ett|$1}} resultat finns {{PLURAL:$1|tillgängligt|tillgängliga}} i cachen.',
 'perfcachedts' => 'Sidan är hämtad ur ett cacheminne och uppdaterades senast $1. Maximalt {{PLURAL:$4|ett|$4}} resultat finns {{PLURAL:$4|tillgängligt|tillgängliga}} i cachen.',
 'querypage-no-updates' => 'Uppdatering av den här sidan är inte aktiverad. Datan kommer i nuläget inte att uppdateras.',
-'wrong_wfQuery_params' => 'Felaktiga parametrar för wfQuery()<br /> Funktion: $1<br /> Förfrågan: $2',
 'viewsource' => 'Visa wikitext',
 'viewsource-title' => 'Visa källkod för $1',
 'actionthrottled' => 'Åtgärden stoppades',
@@ -734,7 +729,8 @@ Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ogiltig titel med namnrymden "$2" och texten "$3"',
 'invalidtitle-unknownnamespace' => 'Ogiltig titel med okänt namnrymdsnummer $1 och texten "$2"',
 'exception-nologin' => 'Inte inloggad',
-'exception-nologin-text' => 'Denna sida eller åtgärd kräver att du måste vara inloggad på denna wiki.',
+'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 +1280,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',
@@ -1294,8 +1291,8 @@ Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det d
 'revdelete-hide-user' => 'Redigerarens användarnamn/IP-adress',
 'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
 'revdelete-radio-same' => '(låt vara)',
-'revdelete-radio-set' => 'Synlig',
-'revdelete-radio-unset' => 'Dold',
+'revdelete-radio-set' => 'Dold',
+'revdelete-radio-unset' => 'Synlig',
 'revdelete-suppress' => 'Undanhåll data även från administratörer',
 'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
 'revdelete-log' => 'Anledning:',
@@ -1387,12 +1384,8 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Sökresultat',
 'searchresults-title' => 'Sökresultat för "$1"',
-'searchresulttext' => 'Se [[{{MediaWiki:Helppage}}|hjälpsidan]] för mer information om sökning på {{SITENAME}}.',
-'searchsubtitle' => 'Du sökte efter \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alla sidor som startar med "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alla sidor som länkar till "$1"]])',
-'searchsubtitleinvalid' => 'För sökbegreppet $1',
 'toomanymatches' => 'Sökningen gav för många resultat, försök med en annan fråga',
 'titlematches' => 'Träffar i sidtitlar',
-'notitlematches' => 'Det finns ingen sida vars titel överensstämmer med sökordet.',
 'textmatches' => 'Sidor som innehåller sökordet:',
 'notextmatches' => 'Det finns inga sidor som innehåller sökordet',
 'prevn' => 'föregående {{PLURAL:$1|$1}}',
@@ -1401,10 +1394,8 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Nästa $1 {{PLURAL:$1|resultat|resultat}}',
 'shown-title' => 'Visa $1 {{PLURAL:$1|resultat|resultat}} per sida',
 'viewprevnext' => 'Visa ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Sökalternativ',
 'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.'''",
 'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bläddra igenom sidor med detta prefix]]',
 'searchprofile-articles' => 'Innehållssidor',
 'searchprofile-project' => 'Hjälp- och projektsidor',
 'searchprofile-images' => 'Multimedia',
@@ -1432,13 +1423,10 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'showingresults' => "Nedan visas upp till {{PLURAL:$1|'''1''' post|'''$1''' poster}} från och med nummer '''$2'''.",
 'showingresultsnum' => "Nedan visas {{PLURAL:$3|'''1''' post|'''$3''' poster}} från och med nummer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} för '''$4'''",
-'nonefound' => "'''Observera:''' Som standard sker sökning endast i vissa namnrymder. Du kan pröva att skriva ''all:'' i början av din sökning om du vill söka i alla sidor (inklusive diskussionssidor, mallar, m.m.), eller så kan du att börja din sökning med namnet på den namnrymd du vill söka i.",
 'search-nonefound' => 'Inga resultat matchade frågan.',
-'powersearch' => 'Avancerad sökning',
 'powersearch-legend' => 'Avancerad sökning',
 'powersearch-ns' => 'Sök i namnrymderna:',
 'powersearch-redir' => 'Visa omdirigeringar',
-'powersearch-field' => 'Sök efter',
 'powersearch-togglelabel' => 'Kryssa:',
 'powersearch-toggleall' => 'Alla',
 'powersearch-togglenone' => 'Ingen',
@@ -1452,8 +1440,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',
-'prefsnologintext' => 'Du måste vara <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} inloggad]</span> för att kunna ändra dina inställningar.',
+'prefsnologintext2' => 'Var god $1 för att ändra användarinställningar.',
 'changepassword' => 'Byt lösenord',
 'prefs-skin' => 'Utseende',
 'skin-preview' => 'förhandsvisning',
@@ -1477,7 +1464,6 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'prefs-email' => 'Alternativ för e-post',
 'prefs-rendering' => 'Utseende',
 'saveprefs' => 'Spara',
-'resetprefs' => 'Återställ osparade ändringar',
 'restoreprefs' => 'Återgå till standardinställningar',
 'prefs-editing' => 'Redigering',
 'rows' => 'Rader:',
@@ -1498,7 +1484,6 @@ Någon som vet den kommer att kunna läsa din bevakningslista, så dela inte ut
 'localtime' => 'Lokal tid:',
 'timezoneuseserverdefault' => 'Använd wikins standard ($1)',
 'timezoneuseoffset' => 'Annan (specificera skillnad)',
-'timezoneoffset' => 'Skillnad¹:',
 'servertime' => 'Serverns tid:',
 'guesstimezone' => 'Fyll i från webbläsare',
 'timezoneregion-africa' => 'Afrika',
@@ -1752,6 +1737,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',
@@ -2253,10 +2239,8 @@ Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt
 'protectedpages' => 'Skyddade sidor',
 'protectedpages-indef' => 'Endast skydd på obestämd tid',
 'protectedpages-cascade' => 'Endast kaskaderande skydd',
-'protectedpagestext' => 'Följande sidor är skyddade mot redigering eller flyttning.',
 'protectedpagesempty' => 'Inga sidor är skyddade under de villkoren.',
 'protectedtitles' => 'Skyddade titlar',
-'protectedtitlestext' => 'Följande sidtitlar är skyddade från att skapas',
 'protectedtitlesempty' => 'Just nu finns inga skyddade sidtitlar med de parametrarna.',
 'listusers' => 'Användarlista',
 'listusers-editsonly' => 'Visa endast användare som redigerat',
@@ -2480,8 +2464,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
 
@@ -3312,7 +3295,7 @@ Om du kör den kan din dator skadas.",
 'svg-long-desc' => 'SVG-fil, grundstorlek: $1 × $2 pixlar, filstorlek: $3',
 'svg-long-desc-animated' => 'Animerad SVG-fil, standardstorlek $1 × $2 pixlar, filstorlek: $3',
 'svg-long-error' => 'Felaktig SVG-fil: $1',
-'show-big-image' => 'Högupplöst version',
+'show-big-image' => 'Originalfil',
 'show-big-image-preview' => 'Storlek på förhandsvisningen: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Annan upplösning|Andra upplösningar}}: $1.',
 'show-big-image-size' => '$1 × $2 pixlar',
@@ -3779,10 +3762,6 @@ Andra kommer att gömmas som standard
 'exif-urgency-high' => 'Hög ($1)',
 'exif-urgency-other' => 'Användardefinierad prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Redigera denna fil med hjälp av extern programvara',
-'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors installationsinstruktionerna] för mer information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alla',
 'namespacesall' => 'alla',
@@ -4007,10 +3986,9 @@ Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Publi
 
 # Special:SpecialPages
 'specialpages' => 'Specialsidor',
-'specialpages-note' => '----
-* Normala specialsidor.
-* <span class="mw-specialpagerestricted">Specialsidor med begränsad åtkomst.</span>
-* <span class="mw-specialpagecached">Cachade specialsidor (kan vara föråldrade).</span>',
+'specialpages-note-top' => 'Teckenförklaring',
+'specialpages-note' => '* Normala specialsidor.
+* <span class="mw-specialpagerestricted">Specialsidor med begränsad åtkomst.</span>',
 'specialpages-group-maintenance' => 'Underhållsrapporter',
 'specialpages-group-other' => 'Övriga specialsidor',
 'specialpages-group-login' => 'Logga in / skapa konto',
@@ -4223,4 +4201,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 73e2b60..6a74456 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' ),
@@ -281,7 +279,6 @@ $messages = array(
 'qbedit' => 'Hariri',
 'qbpageoptions' => 'Ukurasa huu',
 'qbmyoptions' => 'Kurasa zangu',
-'qbspecialpages' => 'Kurasa za pekee',
 'faq' => 'Maswali ya kawaida',
 'faqpage' => 'Project:Maswali Yaulizwayo Marakwamara',
 
@@ -397,8 +394,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 +449,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',
@@ -491,9 +487,6 @@ Huenda likawa tayari lishafutwa na mtu mwingine.',
 'perfcachedts' => 'Data zifuatazo zimetoka kwenye kache iliobadilishwa mara ya mwisho saa $3, tarehe $2. Mwisho wa {{PLURAL:$4|jibu moja linapatikana|majibu $4 yanapatikana}} katika kache.',
 'querypage-no-updates' => 'Mabadiliko kwa ajili ya ukurasa huu yamesimamishwa.
 Data za hapa haziwezi kunawirishwa kwa sasa.',
-'wrong_wfQuery_params' => 'Parameta za ulizio zilizoingizwa wfQuery() na zisizo sahihi ni<br />
-Kitenda: $1<br />
-Ulizio: $2',
 'viewsource' => 'Tazama msimbo',
 'viewsource-title' => 'Tazama chanzo cha $1',
 'actionthrottled' => 'Tendo limesimamishwa',
@@ -530,10 +523,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 +550,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 +993,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:',
@@ -1063,12 +1063,8 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 # Search results
 'searchresults' => 'Matokeo ya utafutaji',
 'searchresults-title' => 'Matokeo ya utafutaji kwa ajili ya "$1"',
-'searchresulttext' => 'Kwa maelezo zaidi kuhusu kutafuta {{SITENAME}}, tazama [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ulitafuta \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kurasa zote zinazoanza "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kurasa zote zinazoungwa na "$1"]])',
-'searchsubtitleinvalid' => "Ulitafuta '''$1'''",
 'toomanymatches' => 'Yalipatikana majibu mengi mno, kwa hiyo tafadhali jaribu ulizo mwingine',
 'titlematches' => 'Kurasa zinazo majina yenye maneno ya ulizo',
-'notitlematches' => 'Jina hili la ukurasa halikupatikana',
 'textmatches' => 'Kurasa zinazo maandishi yenye maneno ya ulizo',
 'notextmatches' => 'Maandishi yaliyotafutwa hayakupatikana kwenye kurasa zo zote',
 'prevn' => '{{PLURAL:$1|uliotangulia|$1 zilizotangulia}}',
@@ -1077,10 +1073,8 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 'nextn-title' => '{{PLURAL:$1|Tokeo $1 lijalo|Matokeo $1 yajayo}}',
 'shown-title' => '{{PLURAL:$1|Lionyewshwe tokeo|Yaonyeshwe matokeo}} $1 kwa kila ukurasa',
 'viewprevnext' => 'Tazama ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Hitiari za kutafuta',
 'searchmenu-exists' => "'''Ukurasa wa \"[[:\$1]]\" upo kwenye wiki hii'''",
 'searchmenu-new' => "'''Anzisha ukurasa wa \"[[:\$1]]\" katika wiki hii!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tafuta kurasa kwenye eneo hili la wiki]]',
 'searchprofile-articles' => 'Kurasa kwa kusudi ya wiki',
 'searchprofile-project' => 'Kurasa za msaada na za mradi',
 'searchprofile-images' => 'Picha na kadhalika',
@@ -1108,14 +1102,10 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 'showingresults' => "{{PLURAL:$1|Tokeo '''1''' linaonyeshwa|matokeo '''$1''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
 'showingresultsnum' => "{{PLURAL:$3|Tokeo '''1''' linaonyeshwa|Matokeo '''$3''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Tokeo '''$1''' kati ya jumla ya '''$3'''|Matokeo '''$1 - $2''' kati ya jumla ya '''$3'''}} kutokana na kuitafuta '''$4'''",
-'nonefound' => "'''Zingatia''': Utafutaji wa msingi unatafuta kwenye maeneo machache ya wiki tu.
-Ukitaka kutafuta kwenye maeneo yote (pamoja na kurasa za majadiliano, vigezo, nk) andika ''all:'' mwanzoni mwa kisanduku. Ukitaka kutafuta kwenye eneo linaloitwa ''fulani'' andika ''fulani:'' mwanzoni mwa kisanduku.",
 'search-nonefound' => 'Hakuna matokeo ya kutafuta ulizio ule.',
-'powersearch' => 'Tafuta kwa hali ya juu',
 'powersearch-legend' => 'Tafuta kwa hali ya juu',
 'powersearch-ns' => 'Tafuta kwenye maeneo ya wiki yafuatayo:',
 'powersearch-redir' => 'Orodhesha kurasa za kuelekeza',
-'powersearch-field' => 'Tafuta huu:',
 'powersearch-togglelabel' => 'Chagua:',
 'powersearch-toggleall' => 'Chagua yote',
 'powersearch-togglenone' => 'Usichague',
@@ -1128,8 +1118,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'preferences' => 'Mapendekezo',
 'mypreferences' => 'Mapendekezo',
 'prefs-edits' => 'Idadi ya marekebisho:',
-'prefsnologin' => 'Hujaingia',
-'prefsnologintext' => 'Inabidi <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} uingie akaunti yako]</span> ili ubadilishe mapendekezo yako.',
 'changepassword' => 'Badilisha neno la siri',
 'prefs-skin' => 'Umbo',
 'skin-preview' => 'Hakiki',
@@ -1153,7 +1141,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'prefs-email' => 'Hitiari za barua pepe',
 'prefs-rendering' => 'Umbo',
 'saveprefs' => 'Hifadhi',
-'resetprefs' => 'Utupe mabadiliko yasijahifadhika',
 'restoreprefs' => 'Rudisha mapendekezo ya msingi',
 'prefs-editing' => 'Kuhariri',
 'rows' => 'Mistari:',
@@ -1171,7 +1158,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'localtime' => 'Saa ya kwetu:',
 'timezoneuseserverdefault' => 'Tumia saa inayokubali na wiki yenyewe ($1)',
 'timezoneuseoffset' => 'Nyingine (weka tofauti ya saa)',
-'timezoneoffset' => 'Tofauti ya saa¹:',
 'servertime' => 'Saa ya seva:',
 'guesstimezone' => 'kivinjari kiweke saa',
 'timezoneregion-africa' => 'Afrika',
@@ -1227,6 +1213,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',
@@ -1378,6 +1365,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.',
@@ -1386,6 +1374,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',
@@ -1407,7 +1396,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"',
 
@@ -1723,6 +1712,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".',
@@ -1748,6 +1740,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.',
@@ -1806,10 +1800,8 @@ Sasa unaelekeza kwa [[$2]].',
 'protectedpages' => 'Kurasa zinazolindwa',
 'protectedpages-indef' => 'Ulinzi kwa muda usiojulikana tu',
 'protectedpages-cascade' => 'Mpangilio wa ulindaji tu',
-'protectedpagestext' => 'Kurasa zifuatazo zinalindwa zisisogezwe wala kuhaririwa',
 'protectedpagesempty' => 'Hakuna kurasa zinazolindwa kwa sasa kwa vigezo hivi.',
 'protectedtitles' => 'Majina yanayozuluiwa',
-'protectedtitlestext' => 'Yafuatayo ni majina ya kurasa yanayozuluiwa kuyatumia',
 'protectedtitlesempty' => 'Hakuna vichwa vinavyolindwa kwa vigezo hivi kwa sasa.',
 'listusers' => 'Orodha ya Watumiaji',
 'listusers-editsonly' => 'Onyesha watumiaji wenye kuhariri tu',
@@ -2591,7 +2583,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',
@@ -2838,10 +2830,6 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
 'exif-urgency-high' => 'Juu ($1)',
 'exif-urgency-other' => 'Upaumbele uliotajwa na mtumiaji ($1)',
 
-# External editor support
-'edit-externally' => 'Tumia programu ya nje kuhariri faili hii',
-'edit-externally-help' => '(Ona [https://www.mediawiki.org/wiki/Manual:External_editors maelezo (kwa Kiingereza)] kwa maarifa mengine.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'zote',
 'namespacesall' => 'zote',
@@ -3033,8 +3021,7 @@ Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public Lic
 
 # Special:SpecialPages
 'specialpages' => 'Kurasa maalum',
-'specialpages-note' => '----
-* Kurasa maalum za kawaida.
+'specialpages-note' => '* Kurasa maalum za kawaida.
 * <span class="mw-specialpagerestricted">Kurasa maalum zisizoonekana na wote.</span>
 * <span class="mw-specialpagecached">Kurasa maalum zinazotoka "cache" (might be obsolete).</span>',
 'specialpages-group-maintenance' => 'Ripoti za kurekebisha na kutunza kurasa',
@@ -3170,4 +3157,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 b3e547f..30a7013 100644 (file)
@@ -219,7 +219,6 @@ $messages = array(
 'qbedit' => 'Sprowjej',
 'qbpageoptions' => 'Ta zajta',
 'qbmyoptions' => 'Moje zajty',
-'qbspecialpages' => 'Szpecyjolne zajty',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -333,12 +332,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',
@@ -429,9 +426,6 @@ Eli tak ńy je, możno śe trefił feler we softwaru MediaWiki. Kej ja, pedz uo
 'perfcached' => 'To co sam je naszkryflane, to ino kopja ze pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} we tyj pamjyńći.',
 'perfcachedts' => 'To co sam je naszkryflane, to ino kopja s pamjyńći podryncznyj a bůło uaktualńůne $1. Nojwjyncyj {{PLURAL:$4|jeden wynik je|$4 wyniki sům}} dostympne.',
 'querypage-no-updates' => 'Uaktualńyńo lo tyj zajty sům terozki zawarte. Dane, kere sam sům, ńy zostouy uodśwjyżůne.',
-'wrong_wfQuery_params' => 'Felerne parametry przekozane do wfQuery()<br />
-Funkcyjo: $1<br />
-Zapytańy: $2',
 'viewsource' => 'Zdrzůdłowy tekst',
 'viewsource-title' => 'Uobocz zdrzůdło lo $1',
 'actionthrottled' => 'Akcyjo wstrzimano',
@@ -456,7 +450,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 +733,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 +747,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 +774,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 +890,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:',
@@ -971,12 +968,8 @@ $1',
 # Search results
 'searchresults' => 'Wyńiki sznupańo',
 'searchresults-title' => 'Wyniki sznupańo za „$1”',
-'searchresulttext' => 'Coby dowjydźeć śe wjyncyj uo šnupańu w {{GRAMMAR:D.lp|{{SITENAME}}}}, uobezdřij [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Wyńiki šnupańo za "[[:$1]]" ([[Special:Prefixindex/$1|zajty kere začynajům śe uod „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|zajty kere sům adresowane do „$1”]])',
-'searchsubtitleinvalid' => 'Lo zapytańo "$1"',
 'toomanymatches' => 'Za dužo elymyntůw kere pasujům do wzorca, wćep inkše zapytańy',
 'titlematches' => 'Znejdźono we titlach:',
-'notitlematches' => 'Ńy znejdźono we titlach',
 'textmatches' => 'Znejdźono na zajtach:',
 'notextmatches' => 'Ńy znejdźono we tekście zajtůw',
 'prevn' => 'poprzedńe {{PLURAL:$1|$1}}',
@@ -985,10 +978,8 @@ $1',
 'nextn-title' => '{{PLURAL:$1|Dolszy|Dolsze|Dolszych}} $1 {{PLURAL:$1|wyńik|wyńiki|wyńikůw}}',
 'shown-title' => 'Ukoż $1 {{PLURAL:$1|wynik|wyniki|wynikůw}} lo zajta',
 'viewprevnext' => 'Uobźyrej ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Uopcyje sznupańo',
 'searchmenu-exists' => "'''Ńy ma zajty uo mjańy \"[[:\$1]]\" na tyj wiki'''",
 'searchmenu-new' => "'''Stwůrz zajta „[[:$1|$1]]” na tyj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglůndej zajty kere s anfanga majům tyn przedrostek]]',
 'searchprofile-articles' => 'Zajty',
 'searchprofile-project' => 'Zajty půmocy a projektu',
 'searchprofile-images' => 'Multimedyja',
@@ -1016,13 +1007,10 @@ $1',
 'showingresults' => "To lista na keryj je {{PLURAL:$1|'''1''' wyńik|'''$1''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
 'showingresultsnum' => "To lista na keryj je {{PLURAL:$3|'''1''' wyńik|'''$3''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wyńik '''$1''' z '''$3'''|Wyńiki '''$1 – $2''' z '''$3'''}} lo '''$4'''",
-'nonefound' => "'''Dej pozůr''': Důmyślńy přešukiwane sům ino ńykere přestřyńy mjan. Poprůbuj popředźić wyšukiwano fraza předrostkym ''all:'', co spowoduje přešukańy coukij zawartośći {{GRAMMAR:D.lp|{{SITENAME}}}} (wůunčńy ze zajtami godki, šablůnůma atp.), abo poprůbuj užyć kej předrostka wybranyj, jydnyj přestřyńi mjan.",
 'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
-'powersearch' => 'Sznupańy zaawansowane',
 'powersearch-legend' => 'Sznupańy zaawansowane',
 'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
 'powersearch-redir' => 'Pokož překerowańa',
-'powersearch-field' => 'Sznupej',
 'powersearch-togglelabel' => 'Zaznocz:',
 'powersearch-toggleall' => 'Wszyjsko',
 'powersearch-togglenone' => 'żodno',
@@ -1034,8 +1022,6 @@ $1',
 'preferences' => 'Preferyncyje',
 'mypreferences' => 'Preferyncyje',
 'prefs-edits' => 'Liczba sprowjyń:',
-'prefsnologin' => 'Ńy ježeś zalůgowany',
-'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
 'changepassword' => 'Zmjana hasua',
 'prefs-skin' => 'Skůrka',
 'skin-preview' => 'podglůnd',
@@ -1059,7 +1045,6 @@ $1',
 'prefs-email' => 'E-brif',
 'prefs-rendering' => 'Wyglůnd',
 'saveprefs' => 'Spamjyntej',
-'resetprefs' => 'Preferencyje důmyślne',
 'restoreprefs' => 'Wćep wszyjskie důmyślne preferencyje',
 'prefs-editing' => 'Sprowjańy',
 'rows' => 'Wjerše:',
@@ -1077,7 +1062,6 @@ $1',
 'localtime' => 'Lokalny czas:',
 'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera ($1)',
 'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
-'timezoneoffset' => 'Dyferencyjo ¹:',
 'servertime' => 'Czas serwera:',
 'guesstimezone' => 'Pobjer z přeglůndarki',
 'timezoneregion-africa' => 'Afrika',
@@ -1098,7 +1082,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',
@@ -1569,10 +1553,8 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 'protectedpages' => 'Zawarte zajty',
 'protectedpages-indef' => 'Ino zabezpjeczyńo ńyuokreślůne',
 'protectedpages-cascade' => 'Yno zajty zabezpjeczůne rekursywńy',
-'protectedpagestext' => 'Zajty wymjyńůne půńiżyj sům zawarte uod przećepywańo i sprowjańo.',
 'protectedpagesempty' => 'Żodno zajta ńy je terozki zawarto ze podanymi parametrami.',
 'protectedtitles' => 'Zawarte mjana artikli',
-'protectedtitlestext' => 'Ůtwořyńy artikli uo nastympujůncych mjanach je zawarte',
 'protectedtitlesempty' => 'Do tych štalowań utwořyńy artikla uo dowolnym mjańy ńy je zawarte',
 'listusers' => 'Lista užytkowńikůw',
 'listusers-editsonly' => 'Pokoż yno użytkowńikůw kere majům sprowjyńa',
@@ -2366,7 +2348,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',
@@ -2665,10 +2647,6 @@ Eli plik był modyfikowany, dane mogům w tajli ńy być we zgodźe ze parametr
 'exif-gpsdirection-t' => 'kerůnek geůgrafičny',
 'exif-gpsdirection-m' => 'kerůnek magnetyčny',
 
-# External editor support
-'edit-externally' => 'Sprowjej tyn plik bez eksterno aplikacyjo',
-'edit-externally-help' => '(Zobocz [https://www.mediawiki.org/wiki/Manual:External_editors instrukcyje sztalowańo eksternych edytorůw], kaj je uo tym wjyncy naszkryflůne)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'do kupy',
 'namespacesall' => 'wszyjske',
@@ -2825,8 +2803,7 @@ Možeš tyž [[Special:EditWatchlist|užyć standardowygo edytora]].',
 
 # Special:SpecialPages
 'specialpages' => 'Szpecjalne zajty',
-'specialpages-note' => '----
-* Ekstra zajty uogůlńy dostympne.
+'specialpages-note' => '* Ekstra zajty uogůlńy dostympne.
 * <strong class="mw-specialpagerestricted">Ekstra zajty do kerych dostymp je uograńiczůny.</strong>',
 'specialpages-group-maintenance' => 'Raporty kůnserwacyjne',
 'specialpages-group-other' => 'Inkše ekstra zajty',
@@ -2862,4 +2839,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 edbb0b6..bcbfd21 100644 (file)
@@ -242,7 +242,6 @@ $messages = array(
 'qbedit' => 'தொகு',
 'qbpageoptions' => 'பக்க விருப்பத் தேர்வுகள்',
 'qbmyoptions' => 'என் விருப்பத்தேர்வுகள்',
-'qbspecialpages' => 'சிறப்புப் பக்கங்கள்',
 'faq' => 'அடிக்கடி கேட்கப்படும் கேள்விகள்',
 'faqpage' => 'Project:அடிக்கடி கேட்கப்படும் கேள்விகள்',
 
@@ -360,8 +359,6 @@ $1',
 'ok' => 'சரி',
 'retrievedfrom' => '"$1" இருந்து மீள்விக்கப்பட்டது',
 'youhavenewmessages' => 'உங்களுக்குப் $1 உள்ளன ($2).',
-'newmessageslink' => 'புதிய செய்திகள்',
-'newmessagesdifflink' => 'கடைசி மாற்றம்',
 'youhavenewmessagesfromusers' => 'உங்களுக்கு $1 {{PLURAL:$3|வேறொரு பயனரிடம்|$3 பயனர்களிடம்}} இருந்து உள்ளது ($2).',
 'youhavenewmessagesmanyusers' => 'உங்களுக்கு பல பயனர்களிடமிருந்து $1 பதிய செய்திகள்  உள்ளன ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ஒரு புதிய செய்தி|புதிய செய்திகள்}}',
@@ -453,9 +450,6 @@ $1',
 'perfcached' => 'பின்வரும் தரவுகள் இடைக்கிடங்கில் உள்ளன,  தரவுகள் புதுப்பித்தநிலையில் இல்லாமல் இருக்கலாம். அதிக அளவாக  {{PLURAL:$1|ஒரு முடிவு|$1 முடிவுகள்}} இடைக்கிடங்கில் இருக்கலாம்.',
 'perfcachedts' => 'பின்வரும் தரவுகள் இடைமாற்றைக் கொண்டுள்ளன, தரவுகள் கடைசியாக  $1 இல் புதுபிக்கப்பட்டுள்ளன.அதிகபட்சமாக {{PLURAL:$4|ஒரு முடிவு|$4 முடிவுகள்}} இடைமாற்றில் இருக்கலாம்.',
 'querypage-no-updates' => 'இப்பக்கத்துக்கான இற்றைப்படுத்தல்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன. இங்கே உள்ளத் தரவுகள் தற்சமயம் இற்றைப்படுத்தப்படமாட்டாது.',
-'wrong_wfQuery_params' => 'பிழையான அளபுருக்கள் wfQuery()<br />
-செயல்: $1<br />
-வினவல்: $2',
 'viewsource' => 'மூலத்தைப் பார்',
 'viewsource-title' => '$1க்கான மூலத்தைப்  பார்',
 'actionthrottled' => 'செயற்பாடு கட்டுப்படுத்தப்பட்டது',
@@ -1087,12 +1081,8 @@ $1",
 # Search results
 'searchresults' => 'தேடல் முடிவுகள்',
 'searchresults-title' => '"$1" இற்கான தேடல் முடிவுகள்',
-'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' => 'கட்டுரை உரை பொருந்துகிறது',
 'notextmatches' => 'கட்டுரை உரை எதுவும் பொருந்தவில்லை',
 'prevn' => 'முன் {{PLURAL:$1|$1}}',
@@ -1101,10 +1091,8 @@ $1",
 'nextn-title' => 'அடுத்த $1 {{PLURAL:$1|முடிவு|முடிவுகள்}}',
 'shown-title' => 'ஒரு பக்கத்திற்கு $1 {{PLURAL:$1|முடிவு|முடிவுகள்}} காட்டவும்',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) பக்கங்களைப் பார்.',
-'searchmenu-legend' => 'தேடல் விருப்பு',
 'searchmenu-exists' => "'''\"[[:\$1]]\" என்னும் பெயருடைய பக்கம் இந்த விக்கியில் உள்ளது'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" பக்கத்தை இந்த விக்கியில் உருவாக்கவும்!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|இந்த முன்னொட்டுடன் உலவித்தேடு]]',
 'searchprofile-articles' => 'உள்ளடக்கப் பக்கங்களின் பட்டியல்',
 'searchprofile-project' => 'உதவி மற்றும் திட்டப் பக்கங்கள்',
 'searchprofile-images' => 'பல்லூடகம்',
@@ -1134,15 +1122,10 @@ $1",
 'showingresults' => "'''$2''' இலிருந்து தொடங்கும்  {{PLURAL:$1|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$1''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
 'showingresultsnum' => "'''$2''' இலிருந்து தொடங்கும்  {{PLURAL:$3|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$3''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
 'showingresultsheader' => "'''$4''' இற்கான {{PLURAL:$5|முடிவு  '''$3''' இல் '''$1'''|முடிவுகள்'''$3''' இல்  '''$1 - $2''' }}",
-'nonefound' => "<strong>குறிப்பு</strong>:சில பெயர்வெளிகள் மட்டுமே இயல்பிருப்பாக தேடப்படும்.
-
-அனைத்து உள்ளடக்கங்களையும் (பேச்சு பக்கங்கள், வார்புருகள் மற்றும் பல) காண ''all:''  என்பதை உங்கள் கேள்விக்கு முன்னொட்டி முயற்சிக்கவும் அல்லது விரும்பப்படும் பெயர்வெளியை முன்னொட்டியாக உபயோகிக்கவும்.",
 'search-nonefound' => 'உங்கள் வினவலுக்கான முடிவுகள் எதுவும் இல்லை.',
-'powersearch' => 'மேம்படுத்தப்பட்ட தேடல்',
 'powersearch-legend' => 'மேம்பட்ட தேடல்',
 'powersearch-ns' => 'பெயர்வெளிகளில் தேடவும்',
 'powersearch-redir' => 'வழிமாற்றுகளைப் பட்டியலிடவும்',
-'powersearch-field' => 'தேடு',
 'powersearch-togglelabel' => 'சரிபார்க்கவும்:',
 'powersearch-toggleall' => 'அனைத்தும்',
 'powersearch-togglenone' => 'ஏதுமில்லை',
@@ -1154,8 +1137,6 @@ $1",
 'preferences' => 'விருப்பங்கள்',
 'mypreferences' => 'விருப்பத்தேர்வுகள்',
 'prefs-edits' => 'தொகுப்புகளின் எண்ணிக்கை:',
-'prefsnologin' => 'புகுபதிகை செய்யப்படவில்லை',
-'prefsnologintext' => 'பயனர் விருப்பத்தேர்வுகளை அமைப்பதற்கு நீங்கள் <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} புகுபதிகை ]</span> செய்திருக்க வேண்டும்.',
 'changepassword' => 'கடவுச்சொல்லை மாற்று',
 'prefs-skin' => 'முகப்புறை',
 'skin-preview' => 'முன்தோற்றம்',
@@ -1179,8 +1160,7 @@ $1",
 'prefs-email' => 'மின்னஞ்சல் விருப்பத்தேர்வுகள்',
 'prefs-rendering' => 'தோற்றம்',
 'saveprefs' => 'சேமி',
-'resetprefs' => 'சேமிக்காத மாற்றங்கள் நீக்குக',
-'restoreprefs' => 'எல்லோருக்கும் பொதுவான வடிவமைப்பைத் திரும்பக்கொண்டுவரவும் (எல்லா பிறிவுகளிலும்).',
+'restoreprefs' => 'எல்லோருக்கும் பொதுவான வடிவமைப்பைத் திரும்பக்கொண்டுவரவும் (எல்லா பிரிவுகளிலும்).',
 'prefs-editing' => 'தொகுத்தல்',
 'rows' => 'நிரைகள் (கிடை வரிசைகள்):',
 'columns' => 'நிரல்கள்',
@@ -1197,7 +1177,6 @@ $1",
 'localtime' => 'உள்ளூர் நேரம்:',
 'timezoneuseserverdefault' => 'விக்கி இயல்புநிலையை உபயோகிக்கவும் ($1)',
 'timezoneuseoffset' => 'மற்றவை (வித்தியாசத்தைக் குறிப்பிடவும்)',
-'timezoneoffset' => 'நேர இடைவெளி¹:',
 'servertime' => 'வழங்கி நேரம்:',
 'guesstimezone' => 'உலாவியிலிருந்து நிரப்பு',
 'timezoneregion-africa' => 'ஆப்ரிக்கா',
@@ -1438,6 +1417,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 தொடக்கம் செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்',
@@ -1880,10 +1860,8 @@ $1',
 'protectedpages' => 'காக்கப்பட்ட பக்கங்கள்',
 'protectedpages-indef' => 'காலவரையற்ற காப்பு (protections) மட்டும்',
 'protectedpages-cascade' => 'வடிவமான காப்புகள் (protections) மட்டும்',
-'protectedpagestext' => 'பின்வரும் பக்கங்கள் தொகுக்கப்படுவதிலிந்தும் நகர்த்தப்படுவதிலிருந்தும் காக்கப்பட்டுள்ளது',
 'protectedpagesempty' => 'இக்காரணிகளுடன் காக்கப்பட்டப் பக்கங்கள் கிடையாது.',
 'protectedtitles' => 'காக்கப்பட்ட தலைப்புகள்',
-'protectedtitlestext' => 'பின்வரும் தலைப்புகள் உருவாக்கப்படுவதிலிருந்து காக்கப்பட்டுள்ளது',
 'protectedtitlesempty' => 'இக்காரணிகளுடன் காக்கப்பட்டப் தலைப்புகள் எதுவும் கிடையாது.',
 'listusers' => 'பயனர் அட்டவணை',
 'listusers-editsonly' => 'தொகுத்த பயனர்களை மட்டும் காட்டு',
@@ -3301,10 +3279,6 @@ $1',
 'exif-urgency-high' => 'அதிகம் ($1)',
 'exif-urgency-other' => 'பயனர் அறுதியிட்ட முன்னுரிமை ( $1 )',
 
-# External editor support
-'edit-externally' => 'இக்கோப்பை வெளி மென்பொருள் கொண்டு தொகுக்க',
-'edit-externally-help' => 'மேலும் தகவல்களுக்கு [https://www.mediawiki.org/wiki/Manual:External_editors அமைப்பு அறிவுறுத்தல்கள்] பக்கத்தைப் பார்க்கவும்.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'அனைத்து',
 'namespacesall' => 'அனைத்து',
@@ -3507,8 +3481,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'சிறப்புப் பக்கங்கள்',
-'specialpages-note' => '----
- * சராசரி சிறப்புப் பக்கங்கள்.
+'specialpages-note' => ' * சராசரி சிறப்புப் பக்கங்கள்.
  * <span class="mw-specialpagerestricted">வரையறுத்த சிறப்புப் பக்கங்கள்.</span>',
 'specialpages-group-maintenance' => 'பராமரிப்பு அறிக்கைகள்',
 'specialpages-group-other' => 'ஏனைய சிறப்புப் பக்கங்கள்',
@@ -3696,4 +3669,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..8a3665c 100644 (file)
@@ -153,7 +153,6 @@ $messages = array(
 'qbedit' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
 'qbpageoptions' => 'ಈ ಪುಟ',
 'qbmyoptions' => 'ಎನ್ನ ಪುಟೊಲು',
-'qbspecialpages' => 'ವಿಶೇಷ ಪುಟೊಲು',
 'faq' => 'ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
 'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
 
@@ -261,8 +260,6 @@ $messages = array(
 'ok' => 'ಸರಿ',
 'retrievedfrom' => '"$1" ರ್ದ್ ದೆತ್ತಿನಂಚಿನ',
 'youhavenewmessages' => 'ಇರೆಗ್ $1 ಉಂಡು ($2).',
-'newmessageslink' => 'ಪೊಸ ಸಂದೇಶಲು',
-'newmessagesdifflink' => 'ಕಡೆತ ಬದಲಾವಣೆ',
 'youhavenewmessagesmulti' => '$1 ಡ್ ಇರೆಗ್ ಪೊಸ ಸಂದೇಶೊಲು ಉಂಡು',
 'editsection' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
 'editold' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
@@ -552,15 +549,10 @@ $messages = array(
 # Search results
 'searchresults' => 'ನಾಡಟದ ಫಲಿತಾಂಶೊಲು',
 'searchresults-title' => '"$1" ಕ್ ನಾಡಟದ ಫಲಿತಾಂಶೊಲು',
-'searchresulttext' => '{{SITENAME}} ಡ್ ನಾಡಟ ಮಲ್ಪುನ ಬಗ್ಗೆ ಜಾಸ್ತಿ ಮಾಹಿತಿಗ್ [[{{MediaWiki:Helppage}}|{{int:help}}]] ನ್ ತೂಲೆ.',
-'searchsubtitle' => 'ಈರ್ \'\'\'[[:$1]]\'\'\' ನ್ ನಾಡಿಯರ್ ([[Special:Prefixindex/$1|"$1" ರ್ದ್ ಶುರುವಾಪುನ ಪೂರ ಪುಟೊಲು]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗ್ ಲಿಂಕ್ ಕೊರ್ಪುನ ಪೂರ ಪುಟೊಲು]])',
-'searchsubtitleinvalid' => "'''$1''' ನ್ ಈರ್ ನಾಡಿಯರ್.",
-'notitlematches' => 'ವಾ ಪುಟೊತ ಶಿರ್ಷಿಕೆಲಾ ಹೊಂದಿಕೆ ಆವೊಂದಿಜ್ಜಿ',
 'notextmatches' => 'ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ',
 'prevn' => 'ದುಂಬುದ {{PLURAL:$1|$1}}',
 'nextn' => 'ಬೊಕ್ಕದ {{PLURAL:$1|$1}}',
 'viewprevnext' => 'ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ನಾಡಾಟದ ಆಯ್ಕೆಲು',
 'searchprofile-articles' => 'ಲೇಖನ ಪುಟೊ',
 'searchprofile-images' => 'ಬಹುಮಾಧ್ಯಮ',
 'searchprofile-everything' => 'ಪ್ರತಿಯೊಂಜಿ',
@@ -577,10 +569,8 @@ $messages = array(
 'search-interwiki-more' => '(ಮಸ್ತ್)',
 'searchrelated' => 'ಸ೦ಬ೦ಧ ಇತ್ತಿನ',
 'searchall' => 'ಮಾತಾ',
-'powersearch' => 'ನಾಡ್’ಲೆ',
 'powersearch-legend' => 'ಅಡ್ವಾನ್ಸ್’ಡ್ ಸರ್ಚ್',
 'powersearch-ns' => 'ನೇಮ್-ಸ್ಪೇಸ್’ಲೆಡ್ ನಾಡ್ಲೆ',
-'powersearch-field' => 'ನಾಡ್ಲೆ:',
 'powersearch-toggleall' => 'ಮಾತಾ',
 
 # Preferences page
@@ -963,10 +953,6 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'ಬಾಹ್ಯ(ಪಿದಯಿದ) ತಂತ್ರಾಶೊನು ಉಪಯೋಗ ಮಲ್ತ್’ದ್ ಇಂದೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
-'edit-externally-help' => 'ನನಲ ಮಾಹಿತಿಗ್ [https://www.mediawiki.org/wiki/Manual:External_editors ಸೆಟ್-ಅಪ್ ನಿರ್ದೇಶನೊಲೆನ್] ತೂಲೆ.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ಪೂರ',
 'namespacesall' => 'ಪೂರಾ',
index 443e64d..8f66393 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( 'ఎగుమతి' ),
@@ -151,10 +149,10 @@ $messages = array(
 'tog-hidepatrolled' => 'ఇటీవలి మార్పులలో నిఘా ఉన్న మార్పులను దాచు',
 'tog-newpageshidepatrolled' => 'కొత్త పేజీల జాబితా నుంచి నిఘా ఉన్న పేజీలను దాచు',
 'tog-extendwatchlist' => 'కేవలం ఇటీవలి మార్పులే కాక, మార్పులన్నీ చూపించటానికి నా వీక్షణా జాబితాను పెద్దది చేయి',
-'tog-usenewrc' => 'ఇటీవలి మార్పులు మరియు విక్షణ జాబితాలలో మార్పులను పేజీ వారిగా చూపించు (జావాస్క్రిప్టు అవసరం)',
+'tog-usenewrc' => 'ఇటీవలి మార్పులు మరియు విక్షణ జాబితాలలో మార్పులను పేజీ వారిగా చూపించు',
 'tog-numberheadings' => 'శీర్షికలకు అప్రమేయంగా వరుస సంఖ్యలు చేర్చు',
-'tog-showtoolbar' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\8dà°²à±\81 à°\9aà±\87à°¸à±\87à°\9fà°ªà±\8dà°ªà±\81à°¡à±\81, à°\85à°\82à°¦à±\81à°\95à±\81 à°¸à°¹à°¾à°¯à°ªà°¡à±\87 à°ªà°°à°¿à°\95రాలపà±\86à°\9fà±\8dà°\9fà±\86à°¨à±\81 à°\9aà±\82పిà°\82à°\9aà±\81 (à°\9cావాసà±\8dà°\95à±\8dà°°à°¿à°ªà±\8dà°\9fà±\81)',
-'tog-editondblclick' => 'డబుల్‌ క్లిక్కు చేసినప్పుడు పేజీని మార్చు (జావాస్క్రిప్టు)',
+'tog-showtoolbar' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°ªà°¨à°¿à°®à±\81à°\9fà±\8dà°² à°ªà°\9fà±\8dà°\9fà±\80ని à°\9aà±\82పిà°\82à°\9aà±\81',
+'tog-editondblclick' => 'డబుల్‌ క్లిక్కు చేసినప్పుడు పేజీని మార్చు',
 'tog-editsection' => '[మార్చు] లింకు ద్వారా విభాగం మార్పు చేతనం',
 'tog-editsectiononrightclick' => 'విభాగం పేరు మీద కుడి క్లిక్కుతో విభాగం మార్పు కావాలి (జావాస్క్రిప్టు)',
 'tog-showtoc' => 'విషయసూచిక చూపించు (3 కంటే ఎక్కువ శీర్షికలున్న పేజీలకు)',
@@ -166,7 +164,7 @@ $messages = array(
 'tog-minordefault' => 'ప్రత్యేకంగా తెలుపనంతవరకూ నా మార్పులను చిన్న మార్పులుగా గుర్తించు',
 'tog-previewontop' => 'వ్యాసం మార్పుల మునుచూపు సవరించు పెట్టె పైన చూపు',
 'tog-previewonfirst' => 'మొదటి  దిద్దుబాటు చేసినపుడు వ్యాసపు మునుచూపు చూపించు',
-'tog-nocache' => 'విహారిణిలో పుటల  స్థానికనకలును(కాషింగు) అచేతనం',
+'tog-nocache' => 'విహారిణిలో పుటల  స్థానికనకలును(కాషింగు) అచేతనం చేయి',
 'tog-enotifwatchlistpages' => 'నా వీక్షణాజాబితా లోని పేజీ లేదా దస్త్రం మారినపుడు నాకు ఈ-మెయిలు పంపు',
 'tog-enotifusertalkpages' => 'నా చర్చా పేజీలో మార్పులు జరిగినపుడు నాకు ఈ-మెయిలు పంపు',
 'tog-enotifminoredits' => 'పేజీలు మరియు దస్త్రాలకు జరిగే చిన్న మార్పులకు కూడా నాకు ఈ-మెయిలును పంపు',
@@ -174,7 +172,7 @@ $messages = array(
 'tog-shownumberswatching' => 'వీక్షకుల సంఖ్యను చూపు',
 'tog-oldsig' => 'ప్రస్తుత సంతకం:',
 'tog-fancysig' => 'సంతకాన్ని వికీపాఠ్యంగా తీసుకో (ఆటోమెటిక్‌ లింకు లేకుండా)',
-'tog-uselivepreview' => 'రాసà±\8dà°¤à±\81à°¨à±\8dనదానిని à°\8eà°ªà±\8dà°ªà°\9fà°¿à°\95à°ªà±\8dà°ªà±\81à°¡à±\81 à°¸à°°à°¿à°\9aà±\82à°¡à°\82à°¡à°¿ (à°\9cావాసà±\8dà°\95à±\8dà°°à°¿à°ªà±\8dà°\9fà±\81) (పరà±\80à°\95à±\8dషాదశలà±\8b à°\89à°\82ది)',
+'tog-uselivepreview' => 'à°µà±\86à°¨à±\81à°µà±\86à°\82à°\9f à°®à±\81à°¨à±\81à°\9cà±\82à°ªà±\81à°¨à±\81 à°µà°¾à°¡à±\81 (à°ªà±\8dà°°à°¯à±\8bà°\97ాతà±\8dà°®à°\95à°\82)',
 'tog-forceeditsummary' => 'దిద్దుబాటు సారాంశం ఖాళీగా ఉంటే ఆ విషయాన్ని నాకు సూచించు',
 'tog-watchlisthideown' => 'నా మార్పులను వీక్షణా జాబితాలో చూపించొద్దు',
 'tog-watchlisthidebots' => 'బాట్లు చేసిన మార్పులను నా వీక్షణా జాబితాలో చూపించొద్దు',
@@ -300,7 +298,6 @@ $messages = array(
 'qbedit' => 'సవరించు',
 'qbpageoptions' => 'ఈ పేజీ',
 'qbmyoptions' => 'నా పేజీలు',
-'qbspecialpages' => 'ప్రత్యేక పేజీలు',
 'faq' => 'తరచూ అడిగే ప్రశ్నలు',
 'faqpage' => 'Project:తరచూ అడిగే ప్రశ్నలు',
 
@@ -321,6 +318,7 @@ $messages = array(
 'namespaces' => 'పేరుబరులు',
 'variants' => 'రకరకాలు',
 
+'navigation-heading' => 'మార్గదర్శకపు మెనూ',
 'errorpagetitle' => 'పొరపాటు',
 'returnto' => 'తిరిగి $1కి.',
 'tagline' => '{{SITENAME}} నుండి',
@@ -414,12 +412,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' => 'సవరించు',
@@ -509,9 +505,6 @@ $1',
 'perfcachedts' => 'కింది సమాచారం ముందే సేకరించి పెట్టుకున్నది. దీన్ని $1న చివరిసారిగా తాజాకరించారు. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'ప్రస్తుతం ఈ పుటకి తాజాకరణలని అచేతనం చేసారు.
 ఇక్కడున్న భోగట్టా కూడా తాజాకరించబడదు.',
-'wrong_wfQuery_params' => 'wfQuery()కి తప్పుడు పారామీటర్లు వచ్చాయి<br />
-ఫంక్షను: $1<br />
-క్వీరీ: $2',
 'viewsource' => 'మూలాన్ని చూపించు',
 'viewsource-title' => '$1 యొక్క సోర్సు చూడండి',
 'actionthrottled' => 'కార్యాన్ని ఆపేసారు',
@@ -530,7 +523,7 @@ $2',
 'titleprotected' => "సభ్యులు [[User:$1|$1]] ఈ పేజీని సృష్టించనివ్వకుండా నిరోదిస్తున్నారు.
 అందుకు ఇచ్చిన కారణం: ''$2''.",
 'exception-nologin' => 'లోనికి ప్రవేశించిలేరు',
-'exception-nologin-text' => 'à°\88 à°µà°¿à°\95à±\80à°²à±\8b à°\88 à°ªà±\87à°\9cà±\80 à°²à±\87దా à°ªà°¨à°¿à°\95à°¿ à°®à±\80à°°à±\81 à°¤à°ªà±\8dపనిసరిà°\97à°¾ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°¿à°µà±\81à°\82డాలి.',
+'exception-nologin-text' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°\9aà±\82డడానిà°\95à°¿ à°²à±\87దా à°\88 à°\9aà°°à±\8dయనà±\81 à°\9aà±\86à°¯à±\8dయడానిà°\95à°¿ à°¦à°¯à°\9aà±\87సి [[Special:Userlogin|à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°\82à°¡à°¿]].',
 
 # Virus scanner
 'virus-badscanner' => "తప్పుడు స్వరూపణం: తెలియని వైరస్ స్కానర్: ''$1''",
@@ -552,7 +545,7 @@ $2',
 'yourname' => 'వాడుకరి పేరు:',
 'userlogin-yourname' => 'వాడుకరి పేరు',
 'userlogin-yourname-ph' => 'మీ వాడుకరి పేరును ఇవ్వండి',
-'createacct-another-username-ph' => 'à°®à±\80 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81à°¨à±\81 à°\87à°µà±\8dà°µండి',
+'createacct-another-username-ph' => 'à°®à±\80 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81à°¨à±\81 à°ªà±\8dà°°à°µà±\87శపà±\86à°\9fà±\8dà°\9fండి',
 'yourpassword' => 'సంకేతపదం:',
 'userlogin-yourpassword' => 'సంకేతపదం',
 'userlogin-yourpassword-ph' => 'మీ సంకేతపదాన్ని ఇవ్వండి',
@@ -588,6 +581,7 @@ $2',
 'createacct-emailrequired' => 'ఈమెయిలు చిరునామా',
 'createacct-emailoptional' => 'ఈమెయిలు చిరునామా (ఐచ్చికం)',
 'createacct-email-ph' => 'మీ ఈమెయిలు చిరునామాను ఇవ్వండి',
+'createacct-another-email-ph' => 'ఈమెయిలు చిరునామాను ఇవ్వండి',
 'createaccountmail' => 'తాత్కాలిక యాదృచ్చిక సంకేతపదాన్ని వాడి దాన్ని ఈ క్రింద ఇచ్చిన ఈమెయిలు చిరునామాకు పంపించు',
 'createacct-realname' => 'అసలు పేరు (ఐచ్చికం)',
 'createaccountreason' => 'కారణం:',
@@ -628,7 +622,7 @@ $2',
 'passwordtooshort' => 'మీ సంకేతపదం కనీసం {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} పొడవు ఉండాలి.',
 'password-name-match' => 'మీ సంకేతపదం మీ వాడుకరిపేరుకి భిన్నంగా ఉండాలి.',
 'password-login-forbidden' => 'ఈ వాడుకరిపేరు మరియు సంకేతపదాలను ఉపయోగించడం నిషిద్ధం.',
-'mailmypassword' => 'à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°\95à±\87తపదానà±\8dని à°\88-à°®à±\86యిలà±\8dà°²à±\8b à°ªà°\82పిà°\82చు',
+'mailmypassword' => 'à°¸à°\82à°\95à±\87తపదానà±\8dని à°®à°¾à°°à±\8dచు',
 'passwordremindertitle' => '{{SITENAME}} కోసం కొత్త తాత్కాలిక సంకేతపదం',
 'passwordremindertext' => '{{SITENAME}} ($4) లో కొత్త సంకేతపదం పంపించమని ఎవరో (బహుశ మీరే, ఐ.పీ. చిరునామా $1 నుండి) అడిగారు. వాడుకరి "$2" కొరకు "$3" అనే తాత్కాలిక సంకేతపదం సిద్ధంచేసి ఉంచాం. మీ ఉద్దేశం అదే అయితే, ఇప్పుడు మీరు సైటులోనికి ప్రవేశించి కొత్త సంకేతపదాన్ని ఎంచుకోవచ్చు. మీ తాత్కాలిక సంకేతపదం {{PLURAL:$5|ఒక రోజు|$5 రోజుల}}లో కాలంచెల్లుతుంది.
 
@@ -680,7 +674,7 @@ $2',
 'newpassword' => 'కొత్త సంకేతపదం:',
 'retypenew' => 'సంకేతపదం, మళ్ళీ',
 'resetpass_submit' => 'సంకేతపదాన్ని మార్చి లోనికి ప్రవేశించండి',
-'changepassword-success' => 'à°®à±\80 à°¸à°\82à°\95à±\87తపదానà±\8dని à°\9cయపà±\8dà°°à°¦à°\82à°\97à°¾ à°®à°¾à°°à±\8dà°\9aà°¾à°\82! à°\87à°\95 à°®à°¿à°®à±\8dమలà±\8dని à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°ªà°\9aà±\87à°¸à±\8dà°¤à±\81à°¨à±\8dనాà°\82...',
+'changepassword-success' => 'à°®à±\80 à°¸à°\82à°\95à±\87తపదà°\82 à°µà°¿à°\9cయవà°\82à°¤à°\82à°\97à°¾ à°®à°¾à°°à±\8dà°\9aబడిà°\82ది.',
 'resetpass_forbidden' => 'సంకేతపదాలను మార్చటం కుదరదు',
 'resetpass-no-info' => 'ఈ పేజీని నేరుగా చూడటానికి మీరు లోనికి ప్రవేశించివుండాలి.',
 'resetpass-submit-loggedin' => 'సంకేతపదాన్ని మార్చు',
@@ -728,6 +722,9 @@ $2
 'changeemail-submit' => 'ఈ-మెయిల్ మార్చు',
 'changeemail-cancel' => 'రద్దుచేయి',
 
+# Special:ResetTokens
+'resettokens-token-label' => '$1 (ప్రస్తుత విలువ: $2)',
+
 # Edit page toolbar
 'bold_sample' => 'బొద్దు అక్షరాలు',
 'bold_tip' => 'బొద్దు అక్షరాలు',
@@ -801,7 +798,7 @@ $2
 'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
 మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
 'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°²à±\8bనిà°\95à°¿ à°°à°\82à°¡ి',
+'loginreqlink' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aి',
 'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
 'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
 'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
@@ -1032,11 +1029,11 @@ $3 చెప్పిన కారణం: ''$2''",
 * అనుచితమైన వ్యక్తిగత సమాచారం
 * "ఇంటి చిరునామాలు, టెలిఫోను నంబర్లు, సోషల్ సెక్యూరిటీ నంబర్లు, వగైరాలు"',
 'revdelete-legend' => 'సందర్శక నిబంధనలు అమర్చు',
-'revdelete-hide-text' => 'à°\95à±\82à°°à±\8dà°ªà±\81 పాఠ్యం',
+'revdelete-hide-text' => 'à°ªà±\81à°¨à°\83పరిశà±\80లన పాఠ్యం',
 'revdelete-hide-image' => 'ఫైలులోని విషయాన్ని దాచు',
 'revdelete-hide-name' => 'చర్యను, లక్ష్యాన్నీ దాచు',
-'revdelete-hide-comment' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°µà±\8dయాà°\96à±\8dయనà±\81 à°¦à°¾à°\9aà±\81',
-'revdelete-hide-user' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°\9aà±\87సినవారి à°¸à°­à±\8dయనామానà±\8dని/à°\90à°ªà±\80ని à°¦à°¾à°\9aà±\81',
+'revdelete-hide-comment' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°¸à°¾à°°à°¾à°\82à°¶à°\82',
+'revdelete-hide-user' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°\9aà±\87సినవారి à°µà°¾à°¡à±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81/à°\90à°ªà±\80 à°\9aà°¿à°°à±\81నామా',
 'revdelete-hide-restricted' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
 'revdelete-radio-same' => '(మార్చకు)',
 'revdelete-radio-set' => 'అవును',
@@ -1119,18 +1116,15 @@ $1",
 'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
 'showhideselectedversions' => 'ఎంచుకున్న కూర్పులను చూపించు/దాచు',
 'editundo' => 'మార్పుని రద్దుచెయ్యి',
+'diff-empty' => '(తేడా లేదు)',
 'diff-multi' => '({{PLURAL:$2|ఒక వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
 'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
 
 # Search results
 'searchresults' => 'వెదుకులాట ఫలితాలు',
 'searchresults-title' => '"$1"కి అన్వేషణ ఫలితాలు',
-'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' => 'పేజిలోని పాఠం సరిపోలింది',
 'notextmatches' => 'పేజీ పాఠ్యమేదీ సరిపోలడం లేదు',
 'prevn' => 'క్రితం {{PLURAL:$1|$1}}',
@@ -1139,10 +1133,8 @@ $1",
 'nextn-title' => 'తదుపరి $1 {{PLURAL:$1|ఫలితం|ఫలితాలు}}',
 'shown-title' => 'పేజీకి $1 {{PLURAL:$1|ఫలితాన్ని|ఫలితాలను}} చూపించు',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) చూపించు.',
-'searchmenu-legend' => 'అన్వేషణ ఎంపికలు',
 'searchmenu-exists' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేజీ ఉంది'''",
 'searchmenu-new' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేరుతో పేజీని సృష్టించు!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ఈ ఉపసర్గ ఉన్న పేజీలను చూడండి]]',
 'searchprofile-articles' => 'విషయపు పేజీలు',
 'searchprofile-project' => 'సహాయం మరియు ప్రాజెక్టు పేజీలు',
 'searchprofile-images' => 'బహుళమాధ్యమాలు',
@@ -1170,13 +1162,10 @@ $1",
 'showingresults' => "కింద ఉన్న {{PLURAL:$1|'''ఒక్క''' ఫలితం|'''$1''' ఫలితాలు}}, #'''$2''' నుండి మొదలుకొని చూపిస్తున్నాం.",
 'showingresultsnum' => "కింద ఉన్న {{PLURAL:$3|'''ఒక్క''' ఫలితం|'''$3''' ఫలితాలు}}, #'''$2''' నుండి మొదలుకొని చూపిస్తున్నాం.",
 'showingresultsheader' => "'''$4''' కొరకై {{PLURAL:$5|'''$3'''లో '''$1''' ఫలితం|'''$3''' ఫలితాల్లో '''$1 - $2''' వరకు}}",
-'nonefound' => "'''గమనిక''': డిఫాల్టుగా కొన్ని నేమ్‌స్పేసుల్లో మాత్రమే వెతుకుతాం. చర్చాపేజీలు, మూసలు మొదలైన వాటితో సహా ఆన్ని నేమ్‌స్పేసుల్లోను వెతికేందుకు మీ అన్వేషకానికి ముందు ''all:'' అనే పదం ఉంచండి. లేదా మీరు వెతకదలచిన నేమ్‌స్పేసును ఆదిపదంగా పెట్టండి.",
 'search-nonefound' => 'మీ ప్రశ్నకి సరిపోలిన ఫలితాలేమీ లేవు.',
-'powersearch' => 'నిశితంగా వెతుకు',
 'powersearch-legend' => 'నిశితమైన అన్వేషణ',
 'powersearch-ns' => 'ఈ పేరుబరుల్లో వెతుకు:',
 'powersearch-redir' => 'దారిమార్పులను చూపించు',
-'powersearch-field' => 'దీని కోసం వెతుకు:',
 'powersearch-togglelabel' => 'ఎంచుకోవాల్సినవి:',
 'powersearch-toggleall' => 'అన్నీ',
 'powersearch-togglenone' => 'ఏదీకాదు',
@@ -1187,8 +1176,6 @@ $1",
 'preferences' => 'అభిరుచులు',
 'mypreferences' => 'అభిరుచులు',
 'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
-'prefsnologin' => 'లాగిన్‌ అయిలేరు',
-'prefsnologintext' => 'వాడుకరి అభిరుచులను మార్చుకోడానికి, మీరు <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} లోనికి ప్రవేశించి]</span> ఉండాలి.',
 'changepassword' => 'సంకేతపదాన్ని మార్చండి',
 'prefs-skin' => 'అలంకారం',
 'skin-preview' => 'మునుజూపు/సరిచూడు',
@@ -1212,7 +1199,6 @@ $1",
 'prefs-email' => 'ఈ-మెయిల్ ఎంపికలు',
 'prefs-rendering' => 'రూపురేఖలు',
 'saveprefs' => 'భద్రపరచు',
-'resetprefs' => 'మునుపటి వలె',
 'restoreprefs' => 'సృష్టించబడినప్పటి అభిరుచులు తిరిగి తీసుకురా',
 'prefs-editing' => 'మార్పులు',
 'rows' => 'వరుసలు',
@@ -1230,7 +1216,6 @@ $1",
 'localtime' => 'స్థానిక సమయం:',
 'timezoneuseserverdefault' => 'వికీ అప్రమేయాన్ని ఉపయోగించు ($1)',
 'timezoneuseoffset' => 'ఇతర (భేదాన్ని ఇవ్వండి)',
-'timezoneoffset' => 'తేడా¹:',
 'servertime' => 'సర్వరు సమయం:',
 'guesstimezone' => 'విహారిణి నుండి తీసుకో',
 'timezoneregion-africa' => 'ఆఫ్రికా',
@@ -1284,7 +1269,7 @@ $1",
 'prefs-signature' => 'సంతకం',
 'prefs-dateformat' => 'తేదీ ఆకృతి',
 'prefs-timeoffset' => 'సమయ సవరణ',
-'prefs-advancedediting' => 'à°\89à°¨à±\8dనత ఎంపికలు',
+'prefs-advancedediting' => 'సాధారణ ఎంపికలు',
 'prefs-advancedrc' => 'ఉన్నత ఎంపికలు',
 'prefs-advancedrendering' => 'ఉన్నత ఎంపికలు',
 'prefs-advancedsearchoptions' => 'ఉన్నత ఎంపికలు',
@@ -1451,6 +1436,7 @@ $1",
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|ఒక మార్పు|$1 మార్పులు}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|చివరి దర్శనం నుండి}}',
 'enhancedrc-history' => 'చరితం',
 'recentchanges' => 'ఇటీవలి మార్పులు',
 'recentchanges-legend' => 'ఇటీవలి మార్పుల ఎంపికలు',
@@ -1460,6 +1446,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 నుండి జరిగిన మార్పులను చూపించు',
@@ -1501,7 +1488,7 @@ $1",
 'reuploaddesc' => 'మళ్ళీ అప్‌లోడు ఫారంకు వెళ్ళు.',
 'upload-tryagain' => 'మార్చిన ఫైలు వివరణని దాఖలుచేయండి',
 'uploadnologin' => 'లాగిన్‌ అయిలేరు',
-'uploadnologintext' => 'à°«à±\88à°²à±\81 à°\85à°ªà±\8dâ\80\8cà°²à±\8bà°¡à±\81 à°\9aà±\86à°¯à±\8dయాలà°\82à°\9fà±\87, à°®à±\80à°°à±\81 [[Special:UserLogin|లాà°\97à°¿à°¨à±\8dâ\80\8c]] à°\95ావాలి',
+'uploadnologintext' => 'దసà±\8dà°¤à±\8dరాలనà±\81 à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aడానిà°\95à°¿ à°®à±\80à°°à±\81 $1 à°\89à°\82డాలి.',
 'upload_directory_missing' => 'ఎగుమతి డైరెక్టరీ ($1) తప్పింది మరియు వెబ్ సర్వర్ దాన్ని సృష్టించలేకున్నది.',
 'upload_directory_read_only' => 'అప్‌లోడు డైరెక్టరీ ($1), వెబ్‌సర్వరు రాసేందుకు అనుకూలంగా లేదు.',
 'uploaderror' => 'ఎక్కింపు పొరపాటు',
@@ -1700,6 +1687,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'listfiles_size' => 'పరిమాణం',
 'listfiles_description' => 'వివరణ',
 'listfiles_count' => 'కూర్పులు',
+'listfiles-latestversion-yes' => 'అవును',
+'listfiles-latestversion-no' => 'కాదు',
 
 # File description page
 'file-anchor-link' => 'దస్త్రం',
@@ -1792,6 +1781,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'randompage' => 'యాదృచ్ఛిక పేజీ',
 'randompage-nopages' => 'ఈ క్రింది {{PLURAL:$2|పెరుబరిలో|పెరుబరులలో}} పేజీలు ఏమి లేవు:$1',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'వెళ్ళు',
+
 # Random redirect
 'randomredirect' => 'యాదృచ్చిక దారిమార్పు',
 'randomredirect-nopages' => '"$1" పేరుబరిలో దారిమార్పులేమీ లేవు.',
@@ -1879,10 +1871,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'protectedpages' => 'సంరక్షిత పేజీలు',
 'protectedpages-indef' => 'అనంత సంరక్షణ మాత్రమే',
 'protectedpages-cascade' => 'కాస్కేడింగు రక్షణలు మాత్రమే',
-'protectedpagestext' => 'కింది పేజీలను తరలించకుండా, దిద్దుబాటు చెయ్యకుండా సంరక్షించాము',
 'protectedpagesempty' => 'ఈ పరామితులతో ప్రస్తుతం ఏ పేజీలు కూడా సంరక్షించబడి లేవు.',
 'protectedtitles' => 'సంరక్షిత శీర్షికలు',
-'protectedtitlestext' => 'కింది శీర్షికలతో పేజీలు సృష్టించకుండా సంరక్షించబడ్డాయి',
 'protectedtitlesempty' => 'ఈ పరామితులతో ప్రస్తుతం శీర్షికలేమీ సరక్షించబడి లేవు.',
 'listusers' => 'వాడుకరుల జాబితా',
 'listusers-editsonly' => 'మార్పులు చేసిన వాడుకరులను మాత్రమే చూపించు',
@@ -2812,7 +2802,7 @@ $1',
 'file-info-size-pages' => '$1 × $2 పిక్సెళ్ళు, దస్త్రపు పరిమాణం: $3, MIME రకం: $4, $5 {{PLURAL:$5|పేజీ|పేజీలు}}',
 'file-nohires' => 'మరింత స్పష్టమైన బొమ్మ లేదు.',
 'svg-long-desc' => 'SVG ఫైలు, నామమాత్రంగా $1 × $2 పిక్సెళ్ళు, ఫైలు పరిమాణం: $3',
-'show-big-image' => 'à°\85సలà±\81 à°ªà°°à°¿à°®à°¾à°£ం',
+'show-big-image' => 'à°\85సలà±\81 à°¦à°¸à±\8dà°¤à±\8dà°°ం',
 'show-big-image-preview' => 'ఈ మునుజూపు పరిమాణం: $1.',
 'show-big-image-other' => 'ఇతర {{PLURAL:$2|వైశాల్యం|వైశాల్యాలు}}: $1.',
 'show-big-image-size' => '$1 × $2 పిక్సెళ్ళు',
@@ -3248,10 +3238,6 @@ $1',
 'exif-urgency-high' => 'ఎక్కువ ($1)',
 'exif-urgency-other' => 'వాడుకరి-నిర్వచిత ప్రాథాన్యత ($1)',
 
-# External editor support
-'edit-externally' => 'బయటి అప్లికేషను వాడి ఈ ఫైలును మార్చు',
-'edit-externally-help' => '(మరింత సమాచారం కొరకు [https://www.mediawiki.org/wiki/Manual:External_editors సెటప్‌ సూచనల]ని చూడండి)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'అన్నీ',
 'namespacesall' => 'అన్నీ',
@@ -3418,6 +3404,7 @@ $5
 'version-license' => 'లైసెన్సు',
 'version-poweredby-credits' => "ఈ వికీ  '''[https://www.mediawiki.org/ మీడియావికీ]'''చే శక్తిమంతం, కాపీహక్కులు  © 2001-$1 $2.",
 'version-poweredby-others' => 'ఇతరులు',
+'version-poweredby-translators' => 'translatewiki.net అనువాదకులు',
 'version-license-info' => 'మీడియావికీ అన్నది స్వేచ్ఛా మృదూపకరణం; మీరు దీన్ని పునఃపంపిణీ చేయవచ్చు మరియు/లేదా ఫ్రీ సాఫ్ట్&zwnj;వేర్ ఫౌండేషన్ ప్రచురించిన గ్నూ జనరల్ పబ్లిక్ లైసెస్సు వెర్షను 2 లేదా (మీ ఎంపిక ప్రకారం) అంతకంటే కొత్త వెర్షను యొక్క నియమాలకు లోబడి మార్చుకోవచ్చు.
 
 మీడియావికీ ప్రజోపయోగ ఆకాంక్షతో పంపిణీ చేయబడుతుంది, కానీ ఎటువంటి వారంటీ లేకుండా; కనీసం ఏదైనా ప్రత్యేక ఉద్దేశానికి సరిపడుతుందని గానీ లేదా వస్తుత్వం యొక్క అంతర్నిహిత వారంటీ లేకుండా. మరిన్ని వివరాలకు గ్నూ జనరల్ పబ్లిక్ లైసెన్సుని చూడండి.
@@ -3451,8 +3438,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'ప్రత్యేక పేజీలు',
-'specialpages-note' => '----
-* మామూలు ప్రత్యేక పుటలు.
+'specialpages-note' => '* మామూలు ప్రత్యేక పుటలు.
 * <strong class="mw-specialpagerestricted">నియంత్రిత ప్రత్యేక పుటలు.</strong>
 * <span class="mw-specialpagecached">Cached ప్రత్యేక పుటలు (పాతబడి ఉండొచ్చు).</span>',
 'specialpages-group-maintenance' => 'నిర్వహణా నివేదికలు',
@@ -3492,6 +3478,8 @@ $5
 'tags-display-header' => 'మార్పుల జాబితాలో కనపించు రీతి',
 'tags-description-header' => 'అర్థం యొక్క పూర్తి వివరణ',
 'tags-hitcount-header' => 'ట్యాగులున్న మార్పులు',
+'tags-active-yes' => 'అవును',
+'tags-active-no' => 'కాదు',
 'tags-edit' => 'మార్చు',
 'tags-hitcount' => '$1 {{PLURAL:$1|మార్పు|మార్పులు}}',
 
@@ -3601,4 +3589,21 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|శతాబ్దం|శతాబ్దాలు}}',
 'duration-millennia' => '$1 {{PLURAL:$1|సహస్రాబ్దం|సహస్రాబ్దాలు}}',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|క్షణం|క్షణాలు}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|క్షణం|క్షణాలు}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|బైటు|బైట్లు}}',
+
+# 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 a9a16fa..445f918 100644 (file)
@@ -212,7 +212,6 @@ $messages = array(
 'qbedit' => 'Вироиш',
 'qbpageoptions' => 'Ин саҳифа',
 'qbmyoptions' => 'Саҳифаҳои ман',
-'qbspecialpages' => 'Саҳифаҳои вижа',
 'faq' => 'Саволҳои тез-тез пурсидашуда',
 'faqpage' => 'Project:Саволҳои тез-тез пурсидашуда',
 
@@ -322,8 +321,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Баргирифта аз "$1"',
 'youhavenewmessages' => 'Шумо $1 ($2) доред.',
-'newmessageslink' => 'пайёмҳои нав',
-'newmessagesdifflink' => 'тағйироти охирин',
 'youhavenewmessagesmulti' => 'Шумо номаҳои нав дар $1 доред.',
 'editsection' => 'вироиш',
 'editold' => 'вироиш',
@@ -404,9 +401,6 @@ $1',
 'perfcached' => 'Додаҳои зерин аз ҳофизаи муваққатӣ фарохонӣ шудаанд ва мумкин аст, комилан ба рӯз нашудаанд. 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' => 'Имкони ба рӯзрасонии ин саҳифа феълан ғайрифаъол шудааст.',
-'wrong_wfQuery_params' => 'Параметрҳои нодуруст ба wfQuery()<br />
-Амал: $1<br />
-Пурсуҷӯ: $2',
 'viewsource' => 'Намоиши матни вики',
 'actionthrottled' => 'Ҷилави амали шумо гирифта шуд',
 'actionthrottledtext' => 'Ба манзури ҷилавгирӣ аз спам, шумо иҷоза надоред, ки чунин амалеро беш аз чанд бор дар як муддати замони кӯтоҳ анҷом бидиҳед. Лутфан пас аз чанд дақиқа дубора талош кунед.',
@@ -799,18 +793,13 @@ $1',
 # Search results
 'searchresults' => 'Натиҷаҳои ҷустуҷӯ',
 'searchresults-title' => 'Натоиҷи ҷустуҷӯ барои "$1"',
-'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' => 'Матни мақола татбиқ мекунад',
 'notextmatches' => 'Матни ҳеҷ мақолае рост намеояд',
 'prevn' => 'қаблӣ {{PLURAL:$1|$1}}',
 'nextn' => 'баъдӣ {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Намоиш ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Гузинаҳои ҷустуҷӯ',
 'searchmenu-exists' => "'''Саҳифае бо номи \"[[:\$1]]\" дар ин вики вуҷуд дорад.'''",
 'searchmenu-new' => "'''Эҷоди саҳифаи \"[[:\$1]]\" дар ин вики!'''",
 'searchprofile-articles' => 'Саҳифаҳои мӯҳтаво',
@@ -836,14 +825,10 @@ $1',
 'searchall' => 'ҳама',
 'showingresults' => "Намоиши {{PLURAL:$1|'''1''' натиҷа|'''$1''' натоиҷ}} дар зер оғоз аз #'''$2'''.",
 'showingresultsnum' => "Намоиши {{PLURAL:$3|'''1''' натиҷа|'''$3''' натоиҷ}} оғоз аз #'''$2'''.",
-'nonefound' => "'''Эзоҳ''': Танҳо чанд фазоиномҳо аз рӯи пешфарш ҷустуҷӯ мешаванд.
-Ҷустуҷӯи худро бо пешванди ''ҳама:'' барои ҷустуҷӯи мӯҳтавои пурра (саҳифаҳои баҳс, шаблонҳо ва ғайраҳо) такрор кунед, ё фазои номи дилхоҳро чун пешванд истифода баред.",
 'search-nonefound' => 'Натиҷаи муносиб бо дархост пайдо нашуд.',
-'powersearch' => 'Ҷустуҷӯ',
 'powersearch-legend' => 'Ҷустуҷӯи пешрафта',
 'powersearch-ns' => 'Ҷустуҷӯ дар фазоҳои ном:',
 'powersearch-redir' => 'Феҳрист кардани масирҳо',
-'powersearch-field' => 'Ҷустуҷӯ барои',
 'search-external' => 'Ҷустуҷӯи хориҷӣ',
 'searchdisabled' => 'Ҷустуҷу дар {{SITENAME}} ғайрифаъол карда шудааст. Шумо метавонед тариқи Google дар ҳол ҷустуҷӯ кунед. Таваҷҷӯҳ кунед, ки натоиҷи ҷустуҷӯ {{SITENAME}} метавонад барӯз набошад.',
 
@@ -851,8 +836,6 @@ $1',
 'preferences' => 'Тарҷиҳот',
 'mypreferences' => 'Танзимот',
 'prefs-edits' => 'Шумораи вироишҳо:',
-'prefsnologin' => 'Ба систем ворид нашудаед',
-'prefsnologintext' => 'Барои танзими тарҷиҳоти корбарӣ бояд [[Special:UserLogin|вуруд ба систем шавед]].',
 'changepassword' => 'Иваз намудани калимаи убур',
 'prefs-skin' => 'Пӯст',
 'skin-preview' => 'Пешнамоиш',
@@ -866,7 +849,6 @@ $1',
 'prefs-misc' => 'Танзимоти ҳархела',
 'prefs-resetpass' => 'Тағйири гузарвожа',
 'saveprefs' => 'Захираи тарҷиҳот',
-'resetprefs' => 'Тозакунии тағйироти захиранашуда',
 'prefs-editing' => 'Дар ҳоли вироиш',
 'rows' => 'Теъдоди сатрҳо:',
 'columns' => 'Теъдоди сутунҳо:',
@@ -878,7 +860,6 @@ $1',
 'savedprefs' => 'Тарҷиҳоти шумо захира шуд.',
 'timezonelegend' => 'Минтақаи вақт:',
 'localtime' => 'Вақти маҳаллӣ:',
-'timezoneoffset' => 'Ихтилоф¹:',
 'servertime' => 'Вақти коргузор:',
 'guesstimezone' => 'Аз мурургар гирифта шавад',
 'timezoneregion-africa' => 'Африқо',
@@ -1291,10 +1272,8 @@ $1',
 'deadendpagestext' => 'Саҳифаҳои зерин ба ҳеҷ дигар саҳифае дар {{SITENAME}} пайванд нестанд.',
 'protectedpages' => 'Саҳифаҳои ҳифзшуда',
 'protectedpages-indef' => 'Фақат ҳифзшудаҳои номуайян',
-'protectedpagestext' => 'Саҳифаи зерин аз вироиш ё кӯчонидани ҳифз шудаанд',
 'protectedpagesempty' => 'Дар ҳоли ҳозир ҳеҷ саҳифае муҳофизат нашудааст.',
 'protectedtitles' => 'Унвонҳои муҳофизатшуда',
-'protectedtitlestext' => 'Унвонҳои зерин аз эҷод муҳофизат шудаанд',
 'protectedtitlesempty' => 'Дар ҳоли ҳозир ҳеҷ унвоне бо ин параметрҳо муҳофизат нащудааст',
 'listusers' => 'Рӯйхати корбарон',
 'usercreated' => '{{GENDER:$3|Эҷодшуда}} дар таърихи $1 дар соати $2',
@@ -2302,10 +2281,6 @@ $1',
 'exif-gpsdirection-t' => 'Раванди дуруст',
 'exif-gpsdirection-m' => 'Раванди магнетикӣ',
 
-# External editor support
-'edit-externally' => 'Ин файлро бо барномаи беруна таҳрир кунед',
-'edit-externally-help' => '(Барои иттилооти бештар [https://www.mediawiki.org/wiki/Manual:External_editors роҳнамои танзимотро оиди вироишгарони беруна] нигаред)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ҳама',
 'namespacesall' => 'ҳама',
@@ -2520,4 +2495,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..0c17df6 100644 (file)
@@ -153,7 +153,6 @@ $messages = array(
 'qbedit' => 'Viroiş',
 'qbpageoptions' => 'In sahifa',
 'qbmyoptions' => 'Sahifahoi man',
-'qbspecialpages' => 'Sahifahoi viƶa',
 'faq' => 'Savolhoi tez-tez pursidaşuda',
 'faqpage' => 'Project:Savolhoi tez-tez pursidaşuda',
 
@@ -263,8 +262,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ş',
@@ -344,9 +341,6 @@ Lutfan inro ba [[Special:ListUsers/sysop|mudir]] bo işora kardani nişonai URL
 'perfcached' => 'Dodahoi zerin az hofizai muvaqqatī faroxonī şudaand va mumkin ast, komilan ba rūz naşudaand. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Dodahoi zerin az hofizai muvaqqatī faroxonī şudaand va mumkin ast, oxirin ba rūzrasonī $1 ast. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "Imkoni ba rūzrasoniji in sahifa fe'lan ƣajrifa'ol şudaast.",
-'wrong_wfQuery_params' => 'Parametrhoi nodurust ba wfQuery()<br />
-Amal: $1<br />
-Pursuçū: $2',
 'viewsource' => 'Namoişi matni viki',
 'actionthrottled' => 'Çilavi amali şumo girifta şud',
 'actionthrottledtext' => 'Ba manzuri çilavgirī az spam, şumo içoza nadored, ki cunin amalero beş az cand bor dar jak muddati zamoni kūtoh ançom bidihed. Lutfan pas az cand daqiqa dubora taloş kuned.',
@@ -680,18 +674,13 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 # Search results
 'searchresults' => 'Natiçahoi çustuçū',
 'searchresults-title' => 'Natoiçi çustuçū baroi "$1"',
-'searchresulttext' => 'Baroi ittilooti beştar dar borai çustuçū dar {{SITENAME}}, nigared ba [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Şumo \'\'\'[[:$1]]\'\'\'ro çustuçū karded ([[Special:Prefixindex/$1|hamai sahifaho şurū\' bo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hamai sahifahoe, ki ba "$1" pajvastaand]])',
-'searchsubtitleinvalid' => "'''$1''' baroi pursuçū",
 'toomanymatches' => "Te'dodi mavoridi mutobiq xele zijod bud, lutfan darxosti digarero imtihon kuned",
 'titlematches' => 'Unvoni sahifa tatbiq mekunad',
-'notitlematches' => 'Unvonhoi heç maqolae rost nameojad',
 'textmatches' => 'Matni maqola tatbiq mekunad',
 'notextmatches' => 'Matni heç maqolae rost nameojad',
 'prevn' => 'qablī {{PLURAL:$1|$1}}',
 'nextn' => "ba'dī {{PLURAL:$1|$1}}",
 'viewprevnext' => 'Namoiş ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Guzinahoi çustuçū',
 'searchmenu-new' => "'''Eçodi sahifai \"[[:\$1]]\" dar in viki!'''",
 'searchprofile-advanced' => 'Peşrafta',
 'searchprofile-articles-tooltip' => 'Çustuçū dar $1',
@@ -711,13 +700,9 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'searchall' => 'hama',
 'showingresults' => "Namoişi {{PLURAL:$1|'''1''' natiça|'''$1''' natoiç}} dar zer oƣoz az #'''$2'''.",
 'showingresultsnum' => "Namoişi {{PLURAL:$3|'''1''' natiça|'''$3''' natoiç}} oƣoz az #'''$2'''.",
-'nonefound' => "'''Ezoh''': Tanho cand fazoinomho az rūi peşfarş çustuçū meşavand.
-Çustuçūi xudro bo peşvandi ''hama:'' baroi çustuçūi mūhtavoi purra (sahifahoi bahs, şablonho va ƣajraho) takror kuned, jo fazoi nomi dilxohro cun peşvand istifoda bared.",
-'powersearch' => 'Çustuçū',
 'powersearch-legend' => 'Çustuçūi peşrafta',
 'powersearch-ns' => 'Çustuçū dar fazohoi nom:',
 'powersearch-redir' => 'Fehrist kardani masirho',
-'powersearch-field' => 'Çustuçū baroi',
 'search-external' => 'Çustuçūi xoriçī',
 'searchdisabled' => "Çustuçu dar {{SITENAME}} ƣajrifa'ol karda şudaast. Şumo metavoned tariqi Google dar hol çustuçū kuned. Tavaççūh kuned, ki natoiçi çustuçū {{SITENAME}} metavonad barūz naboşad.",
 
@@ -725,7 +710,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ş',
@@ -739,7 +723,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'prefs-misc' => 'Tanzimoti harxela',
 'prefs-resetpass' => 'Taƣjiri guzarvoƶa',
 'saveprefs' => 'Zaxirai tarçihot',
-'resetprefs' => 'Tozakuniji taƣjiroti zaxiranaşuda',
 'prefs-editing' => 'Dar holi viroiş',
 'rows' => "Te'dodi satrho:",
 'columns' => "Te'dodi sutunho:",
@@ -750,7 +733,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'savedprefs' => 'Tarçihoti şumo zaxira şud.',
 'timezonelegend' => 'Mintaqai vaqt:',
 'localtime' => 'Vaqti mahallī:',
-'timezoneoffset' => 'Ixtilof¹:',
 'servertime' => 'Vaqti korguzor:',
 'guesstimezone' => 'Az mururgar girifta şavad',
 'timezoneregion-africa' => 'Afriqo',
@@ -1129,10 +1111,8 @@ Jak klik kardani rūi unvoni sutunho boisi taƣjiri tartibi namoişi parvandaho
 'deadendpagestext' => 'Sahifahoi zerin ba heç digar sahifae dar {{SITENAME}} pajvand nestand.',
 'protectedpages' => 'Sahifahoi hifzşuda',
 'protectedpages-indef' => 'Faqat hifzşudahoi nomuajjan',
-'protectedpagestext' => 'Sahifai zerin az viroiş jo kūconidani hifz şudaand',
 'protectedpagesempty' => 'Dar holi hozir heç sahifae muhofizat naşudaast.',
 'protectedtitles' => 'Unvonhoi muhofizatşuda',
-'protectedtitlestext' => 'Unvonhoi zerin az eçod muhofizat şudaand',
 'protectedtitlesempty' => 'Dar holi hozir heç unvone bo in parametrho muhofizat naщudaast',
 'listusers' => 'Rūjxati korbaron',
 'newpages' => 'Sahifahoi nav',
@@ -2086,10 +2066,6 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
 'exif-gpsdirection-t' => 'Ravandi durust',
 'exif-gpsdirection-m' => 'Ravandi magnetikī',
 
-# External editor support
-'edit-externally' => 'In fajlro bo barnomai beruna tahrir kuned',
-'edit-externally-help' => '(Baroi ittilooti beştar [https://www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroişgaroni beruna] nigared)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hama',
 'namespacesall' => 'hama',
@@ -2297,4 +2273,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 18541ae..83dd331 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( 'อีเมลผู้ใช้' ),
@@ -355,7 +353,6 @@ $messages = array(
 'qbedit' => 'แก้ไข',
 'qbpageoptions' => 'หน้านี้',
 'qbmyoptions' => 'หน้าของฉัน',
-'qbspecialpages' => 'หน้าพิเศษ',
 'faq' => 'คำถามถามบ่อย',
 'faqpage' => 'Project:คำถามถามบ่อย',
 
@@ -471,8 +468,6 @@ $1',
 'ok' => 'ตกลง',
 'retrievedfrom' => 'รับข้อมูลจาก "$1"',
 'youhavenewmessages' => 'คุณมี$1 ($2)',
-'newmessageslink' => 'ข้อความใหม่',
-'newmessagesdifflink' => 'การเปลี่ยนแปลงล่าสุด',
 'youhavenewmessagesfromusers' => 'คุณมี $1จาก{{PLURAL:$3|ผู้ใช้คนอื่น|ผู้ใช้ $3 คน}} ($2)',
 'youhavenewmessagesmanyusers' => 'คุณมี $1จากผู้ใช้หลายคน ($2)',
 'newmessageslinkplural' => '$1 ข้อความใหม่',
@@ -566,9 +561,6 @@ $1',
 'perfcached' => 'ข้อมูลต่อไปนี้ถูกเก็บในแคช และอาจล้าสมัย มีผลการค้นหาสูงสุด $1 รายการในแคช',
 'perfcachedts' => 'ข้อมูลต่อไปนี้ถูกเก็บในแคช และได้รับการปรับล่าสุดเมื่อ $1 ผลลัพธ์สูงสุด $4 รายการสามารถเก็บในแคชได้',
 'querypage-no-updates' => 'ขณะนี้การปรับปรุงหน้านี้ถูกระงับ ข้อมูลในที่นี้จะไม่รีเฟรชเป็นปัจจุบัน',
-'wrong_wfQuery_params' => 'พารามิเตอร์ที่ส่งไป wfQuery() ไม่ถูกต้อง<br />
-ฟังก์ชั่น: $1<br />
-คำค้น: $2',
 'viewsource' => 'ดูโค้ด',
 'viewsource-title' => 'ดูโค้ดสำหรับ $1',
 'actionthrottled' => 'การกระทำนี้ถูกระงับไว้ชั่วคราว',
@@ -1228,12 +1220,8 @@ $1",
 # Search results
 'searchresults' => 'ผลการค้นหา',
 'searchresults-title' => 'ผลการค้นหาสำหรับ "$1"',
-'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' => 'พบคำนี้ในหน้า',
 'notextmatches' => 'ไม่พบข้อความในหน้า',
 'prevn' => 'ก่อนหน้า $1',
@@ -1242,10 +1230,8 @@ $1",
 'nextn-title' => '$1 ผลลัพธ์ถัดไป',
 'shown-title' => 'แสดง $1 ผลลัพธ์ต่อหน้า',
 'viewprevnext' => 'ดู ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ตัวเลือกการค้นหา',
 'searchmenu-exists' => "'''มีหน้าชื่อ \"[[:\$1]]\" บนวิกินี้'''",
 'searchmenu-new' => "'''สร้างหน้า \"[[:\$1]]\" บนวิกินี้'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ค้นดูหน้าที่มีคำขึ้นต้นนี้]]',
 'searchprofile-articles' => 'หน้าเนื้อหา',
 'searchprofile-project' => 'คำอธิบายและหน้าโครงการ',
 'searchprofile-images' => 'มัลติมีเดีย',
@@ -1273,14 +1259,10 @@ $1",
 'showingresults' => "แสดง $1 รายการ เริ่มตั้งแต่รายการที่ '''$2'''",
 'showingresultsnum' => "แสดง $3 รายการ เริ่มตั้งแต่รายการที่  '''$2'''",
 'showingresultsheader' => "{{PLURAL:$5|ผลการค้นหา '''$1''' จาก '''$3'''|ผลการค้นหา '''$1 - $2''' จาก '''$3'''}} สำหรับ '''$4'''",
-'nonefound' => "'''คำเตือน''': มีเพียงบางเนมสเปซเท่านั้นที่จะถูกค้นหาโดยปริยาย
-ลองขึ้นต้นการค้นหาด้วย ''all:'' เพื่อค้นหาเนื้อหาทั้งหมด (รวมหน้าอภิปราย แม่แบบ ฯลฯ) หรือใช้คำขึ้นต้นเป็นเนมสเปซที่ต้องการ",
 'search-nonefound' => 'ไม่มีผลลัพธ์ตรงกับคำค้น',
-'powersearch' => 'ค้นหาระดับสูง',
 'powersearch-legend' => 'ค้นหาระดับสูง',
 'powersearch-ns' => 'ค้นหาในเนมสเปซ:',
 'powersearch-redir' => 'รายการหน้าเปลี่ยนทาง',
-'powersearch-field' => 'ค้นหา',
 'powersearch-togglelabel' => 'เลือก:',
 'powersearch-toggleall' => 'ทั้งหมด',
 'powersearch-togglenone' => 'ไม่เลือก',
@@ -1292,8 +1274,6 @@ $1",
 'preferences' => 'ตั้งค่าส่วนตัว',
 'mypreferences' => 'การตั้งค่า',
 'prefs-edits' => 'จำนวนการแก้ไข:',
-'prefsnologin' => 'ไม่ได้ล็อกอิน',
-'prefsnologintext' => 'คุณต้อง<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ล็อกอิน]</span>ก่อนเพื่อตั้งค่าส่วนตัว',
 'changepassword' => 'เปลี่ยนรหัสผ่าน',
 'prefs-skin' => 'หน้าตา',
 'skin-preview' => 'แสดงตัวอย่าง',
@@ -1317,7 +1297,6 @@ $1",
 'prefs-email' => 'ตัวเลือกอีเมล',
 'prefs-rendering' => 'รูปลักษณ์',
 'saveprefs' => 'บันทึก',
-'resetprefs' => 'ล้างการเปลี่ยนแปลงที่ยังไม่บันทึก',
 'restoreprefs' => 'คืนการตั้งค่าโดยปริยายทั้งหมด (ในทุกส่วน)',
 'prefs-editing' => 'การแก้ไข',
 'rows' => 'แถว:',
@@ -1338,7 +1317,6 @@ $1",
 'localtime' => 'เวลาท้องถิ่น',
 'timezoneuseserverdefault' => 'ใช้ค่าโดยปริยายของวิกิ ($1)',
 'timezoneuseoffset' => 'อื่น ๆ (ระบุส่วนต่างเวลา)',
-'timezoneoffset' => 'เวลาต่าง¹:',
 'servertime' => 'เวลาเซิร์ฟเวอร์:',
 'guesstimezone' => 'เรียกค่าจากเว็บเบราว์เซอร์',
 'timezoneregion-africa' => 'แอฟริกา',
@@ -1590,6 +1568,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',
@@ -2047,10 +2026,8 @@ $1',
 'protectedpages' => 'หน้าที่ถูกล็อก',
 'protectedpages-indef' => 'การล็อกแบบไม่มีกำหนดเท่านั้น',
 'protectedpages-cascade' => 'การล็อกแบบสืบทอดเท่านั้น',
-'protectedpagestext' => 'หน้าต่อไปนี้ถูกล็อกมิให้ย้ายหรือแก้ไข',
 'protectedpagesempty' => 'ขณะนี้ไม่มีหน้าใดถูกล็อกตามพารามิเตอร์เหล่านี้',
 'protectedtitles' => 'ชื่อเรื่องที่ถูกป้องกัน',
-'protectedtitlestext' => 'ชื่อเรื่องต่อไปนี้ถูกป้องกันมิให้สร้าง',
 'protectedtitlesempty' => 'ปัจจุบันไม่มีหัวเรื่องที่ได้รับการป้องกันด้วยพารามิเตอร์เหล่านี้',
 'listusers' => 'รายนามผู้ใช้',
 'listusers-editsonly' => 'แสดงเฉพาะผู้ใช้ที่มีการแก้ไข',
@@ -3440,10 +3417,6 @@ $1',
 'exif-iimcategory-spo' => 'กีฬา',
 'exif-iimcategory-wea' => 'ภูมิอากาศ',
 
-# External editor support
-'edit-externally' => 'แก้ไขไฟล์นี้โดยใช้ซอฟต์แวร์ตัวอื่น',
-'edit-externally-help' => '(ดู[https://www.mediawiki.org/wiki/Manual:External_editors วิธีการตั้งค่า]สำหรับข้อมูลเพิ่มเติม)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ทั้งหมด',
 'namespacesall' => 'ทั้งหมด',
@@ -3684,8 +3657,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'หน้าพิเศษ',
-'specialpages-note' => '----
-* หน้าพิเศษปกติ
+'specialpages-note' => '* หน้าพิเศษปกติ
 * <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
 'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
 'specialpages-group-other' => 'หน้าพิเศษอื่น ๆ',
@@ -3841,4 +3813,8 @@ $5
 'duration-centuries' => '$1 ศตวรรษ',
 'duration-millennia' => '$1 สหัสวรรษ',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'ตกลง',
+'expand_templates_preview' => 'ตัวอย่างผลแสดง',
+
 );
index 7090ecc..c8031b2 100644 (file)
@@ -180,7 +180,6 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'qbedit' => 'Redaktirle',
 'qbpageoptions' => 'Bu sahypa',
 'qbmyoptions' => 'Meniň sahypalarym',
-'qbspecialpages' => 'Ýörite sahypalar',
 'faq' => 'KSS',
 'faqpage' => 'Project:KSS',
 
@@ -296,8 +295,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',
@@ -383,9 +380,6 @@ Başga biri tarapyndan eýýäm öçürilen bolmagy mümkin.',
 'perfcached' => 'Aşakdaky maglumatlar keşirlenen bolup, könelişen bolmaklary mümkin! A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Aşakdaky maglumat keşirlenen bolup, iň soňky täzelenen wagty: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Häzirlikçe bu sahypanyň täzelenmegi togtadyldy. Bu ýerdäki maglumatlar häzirlikçe täzelenmeýär.',
-'wrong_wfQuery_params' => 'wfQuery() funksiýasyna nädogry parametrler<br />
-Funksiýa: $1<br />
-Talap: $2',
 'viewsource' => 'Çeşmäni gör',
 'actionthrottled' => 'Hereket çäklendirildi',
 'actionthrottledtext' => 'Anti-spam çäresi hökmünde, bu işi az salymyň içinde köp gezek amala aşyrmagyňyz çäklendirildi, we siz bu çäklendirmeden öte geçdiňiz.
@@ -935,12 +929,8 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 # Search results
 'searchresults' => 'Gözleg netijeleri',
 'searchresults-title' => '"$1" üçin gözleg netijeleri',
-'searchresulttext' => '{{SITENAME}} boýunça gözleg geçirmek barada jikme-jik maglumat almak üçin [[{{MediaWiki:Helppage}}|{{int:help}}]] sahypasyna göz aýlap bilersiňiz.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' üçin gözleg geçirdiňiz. ([[Special:Prefixindex/$1|"$1" bilen başlaýan ähli sahypalar]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' sahypasyna çykgydy bar bolan ähli sahypalar]])',
-'searchsubtitleinvalid' => "Gözlenen: '''$1'''",
 'toomanymatches' => 'Çakdanaşa köp gabat gelme tapyldy, başgaçarak talap ýazyp görüň',
 'titlematches' => 'Sahypa ady gabat gelýär',
-'notitlematches' => 'Şeýle atly sahypa gabat gelmedi',
 'textmatches' => 'Sahypa teksti gabat gelýär',
 'notextmatches' => 'Hiç bir sahypada tapylmady',
 'prevn' => 'öňki {{PLURAL:$1|$1}}',
@@ -949,10 +939,8 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'nextn-title' => 'Indiki $1 {{PLURAL:$1|netije|netije}}',
 'shown-title' => 'Sahypa başyna $1 {{PLURAL:$1|netije|netije}} görkez',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Gözleg opsiýalary',
 'searchmenu-exists' => "'''Bu wikide \"[[:\$1]]\" atly sahypa bar'''",
 'searchmenu-new' => "'''Bu wikide \"[[:\$1]]\" sahypasyny döret!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Şu prefiksli sahypalara göz aýla]]',
 'searchprofile-articles' => 'Mazmunly sahypalar',
 'searchprofile-project' => 'Ýardam we Taslama sahypalary',
 'searchprofile-images' => 'Multimedia',
@@ -980,14 +968,10 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'showingresults' => "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$1|'''1''' netije|'''$1''' netije}} görkezilýär.",
 'showingresultsnum' => "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$3|'''1''' netije|'''$3''' netije}} görkezilýär.",
 'showingresultsheader' => "'''$4''' üçin {{PLURAL:$5|'''$3''' netijeden '''$1''' sanysy|'''$3''' netijeden '''$1 - $2''' aralygy}}",
-'nonefound' => "'''Bellik''': Diňe käbir at giňişlikleri gaýybana tertipde gözlenilýär.
-Gözlegiňiziň başyna '''all:''' pristawkasyny goşup tutuş mazmuny (şol sanda pikir alyşma sahypalaryny, şablonlary we şm.) gözlemäge synanyşyň ýa-da pristawka hökmünde gerekleýän at giňişligiňizi ulanyň.",
 'search-nonefound' => 'Talaba gabat gelýän hiç hili netije ýok.',
-'powersearch' => 'Giňişleýin gözleg',
 'powersearch-legend' => 'Giňişleýin gözleg',
 'powersearch-ns' => 'At giňişliklerinde gözleg:',
 'powersearch-redir' => 'Gönükdirmeleri sanawla',
-'powersearch-field' => 'Gözle',
 'powersearch-togglelabel' => 'Belle:',
 'powersearch-toggleall' => 'Ählisi',
 'powersearch-togglenone' => 'Hiç biri',
@@ -1000,8 +984,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',
-'prefsnologintext' => 'Ulanyjy ileri tutmalaryny üýtgetmek üçin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sessiýa açmagyňyz gerek]</span>.',
 'changepassword' => 'Paroly üýtget',
 'prefs-skin' => 'Bezeg',
 'skin-preview' => 'Deslapky syn',
@@ -1023,7 +1005,6 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'prefs-email' => 'E-poçta opsiýalary',
 'prefs-rendering' => 'Daşky görnüş',
 'saveprefs' => 'Ýazdyr',
-'resetprefs' => 'Ýazdyrylmadyk üýtgeşmeleri aýyr',
 'restoreprefs' => 'Ähli gaýybana sazlamalary dikelt',
 'prefs-editing' => 'Redaktirleme',
 'rows' => 'Hatarlar:',
@@ -1041,7 +1022,6 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'localtime' => 'Ýerli wagt:',
 'timezoneuseserverdefault' => 'Serweriň gaýybanasyny ulan',
 'timezoneuseoffset' => 'Başga (süýşmäni görkez)',
-'timezoneoffset' => 'Süýşme¹:',
 'servertime' => 'Serwer wagty:',
 'guesstimezone' => 'Brauzerden doldur',
 'timezoneregion-africa' => 'Afrika',
@@ -1261,6 +1241,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',
@@ -1653,10 +1634,8 @@ Ol indi [[$2]] sahypasyna gönükdirýär.',
 'protectedpages' => 'Goragly sahypalar',
 'protectedpages-indef' => 'Diňe möhletsiz goraglar',
 'protectedpages-cascade' => 'Diňe kaskadly goraglar',
-'protectedpagestext' => 'Aşakdaky sahypalar atlary üýtgedilmez hem-de redaktirlenmez ýaly goraglydyr',
 'protectedpagesempty' => 'Häzirki wagtda bu parametrler bilen goralýan hiç hili sahypa ýok.',
 'protectedtitles' => 'Goragly atlar',
-'protectedtitlestext' => 'Aşakdaky atlar döredilmege garşy goraglydyr',
 'protectedtitlesempty' => 'Häzirki wagtda bu parametrler bilen goralýan hiç hili at ýok.',
 'listusers' => 'Ulanyjy sanawy',
 'listusers-editsonly' => 'Diňe özgerdiş eden ulanyjylary görkez',
@@ -2836,10 +2815,6 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
 'exif-gpsdirection-t' => 'Hakyky ugur',
 'exif-gpsdirection-m' => 'Magnit ugur',
 
-# External editor support
-'edit-externally' => 'Bu faýly daşarky programmalary ulanyp redaktirläň',
-'edit-externally-help' => '(Has köp maglumat üçin metadaky [https://www.mediawiki.org/wiki/Manual:External_editors gurmak boýunça gollanma] sahypasyna göz aýlaň)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Ählisini görkez',
 'namespacesall' => 'ählisi',
@@ -3023,8 +2998,7 @@ Bu programmanyň ýany bilen siz [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General P
 
 # Special:SpecialPages
 'specialpages' => 'Ýörite sahypalar',
-'specialpages-note' => '----
-* Adaty ýörite sahypalar.
+'specialpages-note' => '* Adaty ýörite sahypalar.
 * <strong class="mw-specialpagerestricted">Çäklendirilen ýörite sahypalar.</strong>',
 'specialpages-group-maintenance' => 'Tehniki abatlaýyş hasabatlary',
 'specialpages-group-other' => 'Başga ýörite sahypalar',
@@ -3109,4 +3083,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 38099bb..e7ef55f 100644 (file)
@@ -12,6 +12,7 @@
  * @author Felipe Aira
  * @author Jojit fb
  * @author Kaganer
+ * @author Namayan
  * @author Sky Harbor
  * @author tl.wikipedia.org sysops
  * @author לערי ריינהארט
@@ -51,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' ),
@@ -63,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' ),
@@ -109,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' ),
@@ -302,7 +303,6 @@ $messages = array(
 'qbedit' => 'Baguhin',
 'qbpageoptions' => 'Itong pahina',
 'qbmyoptions' => 'Mga pahina ko',
-'qbspecialpages' => 'Mga natatanging pahina',
 'faq' => "Mga karaniwang itinatanong (''FAQ'')",
 'faqpage' => "Project:Mga karaniwang itinatanong (''FAQ'')",
 
@@ -421,8 +421,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}}',
@@ -520,9 +518,6 @@ Maaaring naglalaman ito ng isa o higit pang mga panitik (karakter) na hindi maaa
 'perfcachedts' => 'Ang sumusunod na mga dato ay nakaligpit, at dating isinapanahon noong $1. Isang pinakamataas na {{PLURAL:$4|isang resulta ang|$4 mga resulta ang}} makukuha mula sa taguan.',
 'querypage-no-updates' => 'Kasulukuyang hindi gumagana ang mga pagbabago para sa pahinang ito.
 Ang mga dato dito ay hindi pa masasariwa sa kasalukuyan.',
-'wrong_wfQuery_params' => 'Maling mga parametro sa wfQuery()<br />
-Tungkulin: $1<br />
-Tanong: $2',
 'viewsource' => 'Tingnan ang batayan',
 'viewsource-title' => 'Tingnan ang pinagmulan para sa $1',
 'actionthrottled' => 'Hinadlangan ang gawain',
@@ -1173,12 +1168,8 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 # Search results
 'searchresults' => 'Kinalabasan/Resulta ng paghahanap',
 'searchresults-title' => 'Resulta ng paghahanap para sa "$1"',
-'searchresulttext' => 'Para sa mas maraming kabatiran hinggil sa paghahanap sa {{SITENAME}}, tingnan ang [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Hinanap mo ang \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|lahat ng mga pahinang nagsisimula sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|lahat ng mga pahinang nakakawing sa "$1"]])',
-'searchsubtitleinvalid' => "Hinanap mo ang '''$1'''",
 'toomanymatches' => 'Napakaraming mga tumutugmang ibinalik, pakisubok ang isang ibang tanong',
 'titlematches' => 'Tumutugma ang pamagat ng pahina',
-'notitlematches' => 'Walang tumutugmang pamagat ng pahina',
 'textmatches' => 'Tumutugma ang teksto ng pahina',
 'notextmatches' => 'Walang katugmang pahina ng teksto',
 'prevn' => 'nauna {{PLURAL:$1|$1}}',
@@ -1187,10 +1178,8 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'nextn-title' => 'Susunod na $1 {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Ipakita ang $1 {{PLURAL:$1|resulta|mga resulta}} na para sa bawat isang pahina',
 'viewprevnext' => 'Tingnan ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Mga pagpipilian para sa paghahanap',
 'searchmenu-exists' => "'''Mayroong pahinang may pangalang \"[[:\$1]]\" dito sa wiking ito'''",
 'searchmenu-new' => "'''Likhain ang pahinang \"[[:\$1]]\" sa wiking ito!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tingnan-tingnan ang mga pahinang may ganitong unahan/unlapi]]',
 'searchprofile-articles' => 'Mga pahina ng nilalaman',
 'searchprofile-project' => 'Mga pahina ng Tulong at Proyekto',
 'searchprofile-images' => 'Multimidya',
@@ -1218,14 +1207,10 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'showingresults' => "Ipinapakita sa ibaba ang magpahanggang sa {{PLURAL:$1|'''1''' resultang|'''$1''' mga resultang}} nagsisimula sa #'''$2'''.",
 'showingresultsnum' => "Ipinapakita sa ibaba ang {{PLURAL:$3|'''1''' resultang|'''$3''' mga resultang}} nagsisimula sa #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultang '''$1''' ng '''$3'''|Mga resultang '''$1 - $2''' ng '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Paunawa''': Ilang mga ngalan-espasyo lamang ang hinahanap ayon sa likas na pagkakatakda.
-Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialalaman (kabilang ang mga pahina ng usapan, mga suleras, atbp), o gamitin ang ninanais na espasyo ng pangalan bilang unlapi.",
 'search-nonefound' => 'Walang mga resultang tumutugma sa katanungan/pagtatanong.',
-'powersearch' => 'Paghahanap na may mas mataas na antas',
 'powersearch-legend' => 'Paghahanap na may mas mataas na antas',
 'powersearch-ns' => 'Maghanap sa mga espasyo ng pangalan:',
 'powersearch-redir' => 'Itala ang mga panuto',
-'powersearch-field' => 'Hanapin ang',
 'powersearch-togglelabel' => 'Suriin:',
 'powersearch-toggleall' => 'Lahat',
 'powersearch-togglenone' => 'Wala',
@@ -1236,8 +1221,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',
-'prefsnologintext' => 'Kailangan mong <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} lumagda/tumala]</span> para makapagtakda ng mga kagustuhang ng tagagamit.',
 'changepassword' => 'Baguhin ang hudyat',
 'prefs-skin' => 'Pabalat',
 'skin-preview' => 'Unang tingin',
@@ -1261,7 +1244,6 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'prefs-email' => 'Mga pagpipilian para sa e-liham',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Sagipin',
-'resetprefs' => 'Hawanin ang hindi nasagip na mga pagbabago',
 'restoreprefs' => 'Ibalik ang lahat ng likas na mga pagtatakda',
 'prefs-editing' => 'May binabago',
 'rows' => 'Mga pahalang na hanay:',
@@ -1279,7 +1261,6 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'localtime' => 'Lokal na oras:',
 'timezoneuseserverdefault' => 'Gamitin ang katakdaan ng wiki ($1)',
 'timezoneuseoffset' => "Iba pa (tukuyin ang pambawi o ''offset'')",
-'timezoneoffset' => "Pambawi/pambalanse (''offset'')¹:",
 'servertime' => 'Oras sa serbidor',
 'guesstimezone' => "Punuin ng mula sa pantingin-tingin (''browser'')",
 'timezoneregion-africa' => 'Aprika',
@@ -1517,6 +1498,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',
@@ -2001,10 +1983,8 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'protectedpages' => 'Mga nakaprotektang pahina',
 'protectedpages-indef' => 'Mga walang katiyakang proteksyon lamang',
 'protectedpages-cascade' => 'Baita-baitang na mga panananggalang lamang',
-'protectedpagestext' => 'Nakasanggalang ang sumusunod na mga pahina laban sa paglipat o pagbabago',
 'protectedpagesempty' => 'Sa kasalukuyan, walang mga pahinang nakasanggalang na may ganitong mga parametro.',
 'protectedtitles' => 'Nakasanggalang na mga pamagat',
-'protectedtitlestext' => 'Ang sumusunod ay mga pamagat na nakaprotekta mula sa pagkalikha.',
 'protectedtitlesempty' => 'Walang pamagat ang kasalukuyang nakaprotekta sa binigay na parametro.',
 'listusers' => 'Tala ng tagagamit',
 'listusers-editsonly' => 'Ipakita lamang ang mga tagagamit na gumawa/nakagawa na ng mga pagbabago',
@@ -2033,7 +2013,7 @@ Pakitandaan lamang na ang iba mga websayt ay maaaring nakakawing sa isang talaks
 'booksources-search-legend' => 'Maghanap ng mapagkukunang aklat',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => 'Puntahan',
-'booksources-text' => 'Matatagpuan sa ibaba ang isang tala ng mga kawing patungo sa ibang mga websayt na nanininda ng mga bago at gamit na aklat, at maaaring may iba pang impormasyon ito tungkol sa mga aklat na hinahanap mo:',
+'booksources-text' => 'Matatagpuan sa ibaba ang isang tala ng mga kawil patungo sa ibang mga website na nagtitinda ng mga bago at gamit nang aklat, at maaaring may iba pang impormasyon ito tungkol sa mga aklat na hinahanap mo:',
 'booksources-invalid-isbn' => 'Tila mukhang hindi yata katanggap-tanggap ang ibinigay na ISBN; pakisuri kung may mga kamalian ang pagkakasip/pagkakakopya mula sa orihinal na pinagmulan.',
 
 # Special:Log
@@ -2249,7 +2229,7 @@ Tugon at karagdagang tulong:
 'excontentauthor' => "ang nilalaman ay: '$1' (at ang tanging nag-ambag ay si '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => "nilalaman bago nablangko: '$1'",
 'exblank' => 'walang laman ang pahina',
-'delete-confirm' => 'Burahin ang "$1"',
+'delete-confirm' => 'Kaltasin ang "$1"',
 'delete-legend' => 'Burahin',
 'historywarning' => "'''Babala''': May kasaysayan ang pahinang buburahin mo na tinatayang may $1 {{PLURAL:$1|pagbabago|mga pagbabago}}:",
 'confirmdeletetext' => 'Lubos mo nang buburahin ang pahinang ito pati ang kalahatan ng kasaysayan nito.
@@ -2415,7 +2395,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:',
@@ -2592,8 +2571,8 @@ Tingnan ang [[Special:BlockList|talaan ng pagharang]] para sa lista ng kasalukuy
 'proxyblockreason' => 'Hinarang ang IP address mo dahil bukas na proxy ito. Makipag-ugnayan sa iyong tagabigay ng serbisyong Internet o suportang teknikal at ipaalam sa kanila itong seryesong suliranin sa seguridad.',
 'sorbs' => 'DNSBL',
 'sorbsreason' => 'Nakalista ang IP address mo bilang isang bukas na proxy sa DNSBL na ginagamit ng sayt na ito.',
-'sorbs_create_account_reason' => 'Nakatala ang iyong direksiyong IP bilang isang bukas na proxy sa DNSBL na ginagamit ng {{SITENAME}}.
-Hindi ka makakalikha ng kuwenta',
+'sorbs_create_account_reason' => 'Nakatala ang iyong IP address bilang open proxy sa DNSBL na ginagamit ng {{SITENAME}}.
+Hindi ka makakalikha ng account',
 'cant-block-while-blocked' => 'Hindi mo mahahadlangan/mahaharang ang ibang mga tagagamit habang hinahadlangan ka.',
 'cant-see-hidden-user' => 'Ang tagagamit na sinusubukan mong hadlangan ay naharang at naikubli na.
 Dahil wala kang karapatang magkubli ng tagagamit, hindi mo makikita o mababago ang paghadlang sa tagagamit.',
@@ -2741,7 +2720,7 @@ Sa huling kaso, maaari mong gumamit ng ungay, hal. [[{{#Special:Export}}/{{Media
 'allmessagesname' => 'Pangalan',
 'allmessagesdefault' => 'Tinakdang teksto',
 'allmessagescurrent' => 'Kasalukuyang teksto',
-'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa espasyo ng pangalang MediaWiki.
+'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa namespace ng MediaWiki.
 Pakidalaw ang [https://www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at [//translatewiki.net translatewiki.net] kung ibig mong magambag sa heneriko o pangkalahatang lokalisasyon ng MediaWiki.',
 'allmessagesnotsupportedDB' => "Hindi magagamit ang '''{{ns:special}}:AllMessages''' dahil hindi gumagana ang '''\$wgUseDatabaseMessages'''.",
 'allmessages-filter-legend' => 'Salain',
@@ -3586,10 +3565,6 @@ $8',
 'exif-urgency-high' => 'Mataas ($1)',
 'exif-urgency-other' => 'Pagkakauna-unang tinukoy ng tagagamit ($1)',
 
-# External editor support
-'edit-externally' => 'Baguhin ang talaksang ito sa pamamagitan ng isang panlabas na aplikasyon',
-'edit-externally-help' => 'Tingnan ang [//meta.wikimedia.org/wiki/Help:External_editors mga kaalaman/paraan sa paghahanda at pagaayos] para sa mas marami pang kabatiran.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'lahat',
 'namespacesall' => 'lahat',
@@ -3893,8 +3868,7 @@ Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangk
 
 # Special:SpecialPages
 'specialpages' => 'Mga natatanging pahina',
-'specialpages-note' => '----
-* Normal na natatanging mga pahina.
+'specialpages-note' => '* Normal na natatanging mga pahina.
 * <span class="mw-specialpagerestricted">Pinaghihigpitang natatanging mga pahina.</span>',
 'specialpages-group-maintenance' => 'Mga pagpapanatiling ulat',
 'specialpages-group-other' => 'Iba pang natatanging mga pahina',
@@ -4076,4 +4050,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 79babc5..03ca680 100644 (file)
@@ -264,7 +264,6 @@ $messages = array(
 'qbedit' => 'Сәрост кардеј',
 'qbpageoptions' => 'Ым сәһифә',
 'qbmyoptions' => 'Чымы сәһифон',
-'qbspecialpages' => 'Хысусијә сәһифон',
 'faq' => 'РАП',
 'faqpage' => 'Project:РАП',
 
@@ -364,8 +363,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Сәвон "$1"',
 'youhavenewmessages' => 'Шымә сәјоне $1 ($2).',
-'newmessageslink' => 'нујә хәбон',
-'newmessagesdifflink' => 'охонә дәгиши',
 'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|охонә дәгиши|охонә дәгишон}}',
 'editsection' => 'Sərost kardey',
 'editold' => 'Сәрост кардеј',
@@ -587,7 +584,6 @@ $messages = array(
 'nextn-title' => 'Думотоно шә $1 {{PLURAL:$1|нывыштәј|нывыштәјон}}',
 'shown-title' => 'Нишо дој $1 {{PLURAL:$1|нывыштәј|нывыштәјон}} сәһифәдә',
 'viewprevnext' => 'Дијә кардеј ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Бо нәве кукон',
 'searchmenu-exists' => "'''Бы вики-нәхшәдә һесте сәһифә «[[:$1]]»'''",
 'searchmenu-new' => "'''Сәһифә офәјеј «[[:$1]]» бә ым вики-нахшәдә!'''",
 'searchprofile-articles' => 'Әсосә сәһифон',
@@ -610,14 +606,11 @@ $messages = array(
 'searchall' => 'Һәммәј',
 'showingresultsheader' => "{{PLURAL:$5|Нәтиҹә'''$1''' из '''$3'''|Нәтиҹон '''$1 — $2''' че '''$3'''}} бо '''$4'''",
 'search-nonefound' => 'Бә шымә хәбәсә ујғун омә сәкыштә пәјдо ныбе.',
-'powersearch-field' => 'Нәве',
 'powersearch-toggleall' => 'Һәммәј',
 
 # Preferences page
 'preferences' => 'Кукон',
 'mypreferences' => 'Кукон',
-'prefsnologin' => 'Ыштәни едаштәнијоне',
-'prefsnologintext' => 'Шымә бәбе <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ыштәни едәштән]</span> бо иштирокәкә пеғәндон дәгиш кардеј.',
 'changepassword' => 'Пароли дәгиш кардеј',
 'skin-preview' => 'Сыфтәнә нишо дој',
 'prefs-user-pages' => 'Иштирокәкә сәһифон',
@@ -1000,10 +993,6 @@ $messages = array(
 
 'exif-dc-publisher' => 'Нәшрәкә',
 
-# External editor support
-'edit-externally' => 'Редактә кардеј ым фајли де заһири програм',
-'edit-externally-help' => '(Bo mıffəssələ məlumoton bə [https://www.mediawiki.org/wiki/Manual:External_editors dərsəvon bo soxtəy] diyə bıkən)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'һәммәј',
 'namespacesall' => 'һәммәј',
index 22a76af..c9b943c 100644 (file)
@@ -115,7 +115,6 @@ $messages = array(
 'qbedit' => 'Fatu',
 'qbpageoptions' => 'Peesi koʻeni',
 'qbmyoptions' => 'Peesi ʻaʻaku',
-'qbspecialpages' => 'Ngaahi peesi makehe',
 'faq' => 'Fehuʻi faʻa eke',
 'faqpage' => 'Project:Fehuʻi faʻa eke',
 
@@ -191,7 +190,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',
@@ -246,9 +244,6 @@ Ko e pule, naʻe lokaʻi ia, ʻoku pehē: $1',
 'badtitletext' => "Naʻe taʻeʻaonga ʻa e hingoa ʻo e peesi naʻa ke fili, pe naʻe ʻi ai ha fehokotaki māhehei fakalea kehe pe fehokotaki māhehei faka''wiki'' kehe. Mahalo pe ʻoku ʻi loto ha ʻū mataʻitohi ʻoku ʻikai lava ngāueʻaki ʻi ha hingoa.",
 'perfcached' => 'ʻOku fafaʻo ʻa e meʻaʻilo ʻi lalo, pea mahalo pē ʻoku ʻikai fakafoʻoua. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'ʻOku fafaʻo ʻa e meʻaʻilo ʻi lalo, naʻe fakaonopooni fakamuimui ia $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
-'wrong_wfQuery_params' => "Ngaahi mahuʻinga ʻikai totonu ki he ''wfQuery()''<br />
-Lakanga: $1<br />
-Eke: $2",
 'viewsource' => 'Vakai ki he tupunga',
 'protectedinterface' => 'Ko e peesi ʻeni ʻoku fakaai ia ʻa e potutohi maʻa e founga fakakomipiuta, ʻoku maluʻi ia ʻo taʻofi leakovi.',
 'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
@@ -435,15 +430,12 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'search-interwiki-more' => '(lahi ange)',
 'showingresults' => "ʻOku ʻasi ʻi lalo ʻa e ngaahi fua ʻoku kamata mo e #'''$2''' (aʻu ki he '''$1''').",
 'showingresultsnum' => "ʻOku ʻasi ʻi lalo ha fua ʻe '''$3''', ʻoku kamata mo e #'''$2'''.",
-'nonefound' => "Ko e ngaahi kumi naʻe ʻikai ke siaʻa. Mahalo pē te ke fiefeinga kumi ʻi he ngaahi vā hingoa kotoa (kupu, alea, sīpinga, mo e hā fua). Tānaki ''all:'' ʻi muʻa ʻo hoʻo fehuʻi.",
-'powersearch' => 'Kumi',
 'powersearch-legend' => 'Kumi lakasi',
 'powersearch-redir' => 'Hokohoko ʻo e ngaahi leʻei',
 
 # 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ē',
@@ -456,7 +448,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'prefs-watchlist-edits' => 'Ngaahi fatu hono lahi ʻoku ʻasi ʻi he hokohoko leʻo fano:',
 'prefs-misc' => 'Kehekehe',
 'saveprefs' => 'Haofaki',
-'resetprefs' => 'Fakafoki',
 'prefs-editing' => 'ʻOku fatu',
 'rows' => 'Ngaahi ʻotu:',
 'columns' => 'Vahaʻa laini:',
@@ -465,7 +456,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'savedprefs' => 'Kuo haofaki hoʻo faʻiteliha.',
 'timezonelegend' => 'Feituʻu taimi',
 'localtime' => 'Taimi fakafeituʻu:',
-'timezoneoffset' => 'Ngaahi houa ʻo e faikehekehe:',
 'servertime' => 'Taimi ʻo e tauhia:',
 'timezoneregion-africa' => 'ʻAfelika',
 'allowemail' => 'Fakamafeiaʻi ʻa e tohila mei he kau ʻetita ʻe taha',
@@ -1142,10 +1132,6 @@ Pea hoko ai pē hoʻo lava tānaki ha ʻuhinga ʻi he fakanounou',
 'exif-gpsdirection-t' => 'Tūkufua moʻoni',
 'exif-gpsdirection-m' => 'Tūkufua fakamakineti',
 
-# External editor support
-'edit-externally' => 'Fatuʻi ʻa e failé ni ngāueʻaki mo e polokalama ʻi tuʻa',
-'edit-externally-help' => 'Vakai ki he [https://www.mediawiki.org/wiki/Manual:External_editors fakahinohino ki he fokotuʻu] maʻa toe fakamatala.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kātoa',
 'namespacesall' => 'vā kotoa',
@@ -1220,4 +1206,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..35f7289 100644 (file)
@@ -175,7 +175,6 @@ $messages = array(
 'qbedit' => 'Senisim',
 'qbpageoptions' => 'Dispela pes',
 'qbmyoptions' => 'Ol pes bilong mi',
-'qbspecialpages' => 'Ol sipesol pes',
 
 # Vector skin
 'vector-action-delete' => 'Rausim',
@@ -254,7 +253,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',
@@ -371,8 +369,6 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 # Search results
 'searchresults' => 'Ol painim',
 'searchresults-title' => 'Ol painim long "$1"',
-'searchresulttext' => 'Long moa infomesen bilong painim {{SITENAME}}, lukim [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitleinvalid' => "Yu painim '''$1'''",
 'viewprevnext' => 'Lukim ($1 {{int:pipe-separator}} $2) ($3)',
 'searchprofile-images' => 'Media',
 'searchprofile-everything' => 'Olgeta',
@@ -385,11 +381,9 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 'search-interwiki-default' => '$1 ol painim:',
 'search-interwiki-more' => '(moa)',
 'searchall' => 'olgeta',
-'powersearch' => 'Mobeta Painim',
 'powersearch-legend' => 'Mobeta Painim',
 'powersearch-ns' => 'Painim long ol nem',
 'powersearch-redir' => 'Soim ol nupela rot',
-'powersearch-field' => 'Painim long',
 'powersearch-toggleall' => 'Olgeta',
 'powersearch-togglenone' => 'I nogat wanpela',
 
@@ -877,4 +871,7 @@ Yu inap lukim as tok bilong em',
 # Search suggestions
 'searchsuggest-search' => 'Painim',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK',
+
 );
index c66f7df..5f92fff 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',
@@ -511,7 +511,6 @@ $messages = array(
 'qbedit' => 'Değiştir',
 'qbpageoptions' => 'Bu sayfa',
 'qbmyoptions' => 'Sayfalarım',
-'qbspecialpages' => 'Özel sayfalar',
 'faq' => 'SSS',
 'faqpage' => 'Project:SSS',
 
@@ -628,8 +627,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}}',
@@ -730,9 +727,6 @@ Hiçbir açıklama yapılmadı.',
 'perfcached' => 'Aşağıdaki veriler önbellekten alınmıştır ve güncel olmayabilir. Önbellekte en fazla {{PLURAL:$1|bir sonuç|$1 sonuç}} mevcut.',
 'perfcachedts' => 'Aşağıdaki veri önbelleklenmiştir, son güncelleme tarihi: $1. Önbellekte en fazla {{PLURAL:$1|bir sonuç|$4 sonuç}} mevcut.',
 'querypage-no-updates' => 'Şu an için güncellemeler devre dışı bırakıldı. Buradaki veri hemen yenilenmeyecektir.',
-'wrong_wfQuery_params' => 'wfQuery() ye yanlış parametre<br />
-Fonksiyon: $1<br />
-Sorgu: $2',
 'viewsource' => 'Kaynağı gör',
 'viewsource-title' => '$1 sayfasının kaynağını görüntüle',
 'actionthrottled' => 'Eylem kısılmışdır',
@@ -761,7 +755,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 +806,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',
@@ -857,7 +855,7 @@ Yazılışı kontrol edin veya [[Special:UserLogin/signup|yeni bir hesap açın]
 'passwordtooshort' => 'Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.',
 'password-name-match' => 'Şifreniz kullanıcı adınızdan farklı olmalıdır.',
 'password-login-forbidden' => 'Bu kullanıcı adı ve şifre kullanımı yasaklanmıştır',
-'mailmypassword' => 'Bana e-posta ile yeni parola gönder',
+'mailmypassword' => 'Parolayı sıfırla',
 'passwordremindertitle' => '{{SITENAME}} için yeni geçici şifre',
 'passwordremindertext' => 'Birisi (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için yeni bir parola gönderilmesi istedi. "$2" kullanıcısına geçici olarak "$3" parolası oluşturuldu. Eğer bu sizin isteğiniz ise, oturum açıp yeni bir parola oluşturmanız gerekmektedir. Geçici parolanızın süresi {{PLURAL:$5|1 gün|$5 gün}} içinde dolacaktır.
 
@@ -866,13 +864,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.',
@@ -926,7 +924,7 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
 # Special:PasswordReset
 'passwordreset' => 'Parola sıfırlama',
 'passwordreset-text-one' => 'Parolanızı sıfırlamak için bu formu doldurun.',
-'passwordreset-text-many' => '{{PLURAL:$1|Parolanızı sıfırlamak için alanlardan birini doldurun.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|E-posta ile geçici bir parola almak için alanlardan birini doldurun.}}',
 'passwordreset-legend' => 'Şifreyi sıfırla',
 'passwordreset-disabled' => 'Parola sıfırlamaları bu wiki üzerinde devre dışı bırakıldı.',
 'passwordreset-emaildisabled' => "Bu wiki'deki e-posta özellikleri devre dışı bırakıldı.",
@@ -1303,19 +1301,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,16 +1399,16 @@ 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ı',
 'searchresults-title' => '"$1" için arama sonuçları',
-'searchresulttext' => '{{SITENAME}} içinde arama yapmak konusunda bilgi almak için [[{{MediaWiki:Helppage}}|{{int:help}}]] sayfasına bakabilirsiniz.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' için aradınız. ([[Special:Prefixindex/$1|"$1" ile başlayan tüm sayfalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' sayfasına bağlantısı olan tüm sayfalar]])',
-'searchsubtitleinvalid' => 'Aranan: "$1"',
 'toomanymatches' => 'Çok fazla eşleşme döndü, lütfen başka bir sorgu seçin',
 'titlematches' => 'Madde adı eşleşiyor',
-'notitlematches' => 'Hiçbir başlıkta bulunamadı',
 'textmatches' => 'Sayfa metni eşleşiyor',
 'notextmatches' => 'Hiçbir sayfada bulunamadı',
 'prevn' => 'önceki {{PLURAL:$1|$1}}',
@@ -1418,10 +1417,8 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'nextn-title' => 'Sonraki $1 {{PLURAL:$1|sonuç|sonuç}}',
 'shown-title' => 'Sayfa başına $1 {{PLURAL:$1|sonuç|sonuç}} göster',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) gör',
-'searchmenu-legend' => 'Arama seçenekleri',
 'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adında bir sayfa mevcut'''",
 'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" sayfasını oluştur!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu ön ekle sayfalara göz at]]',
 'searchprofile-articles' => 'İçerik sayfaları',
 'searchprofile-project' => 'Yardım ve proje sayfaları',
 'searchprofile-images' => 'Çokluortam',
@@ -1449,26 +1446,22 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'showingresults' => "$2. sonuçtan başlayarak {{PLURAL:$1|'''1''' sonuç |'''$1''' sonuç }} aşağıdadır:",
 'showingresultsnum' => "'''$2''' sonuçtan başlayarak {{PLURAL:$3|'''1''' sonuç|'''$3''' sonuç}} aşağıdadır:",
 'showingresultsheader' => "'''$4''' için {{PLURAL:$5|'''$3''' sonuçtan '''$1'''i|'''$1 - $2''' arası '''$3''' sonuç}}",
-'nonefound' => "'''Not''': Sadece bazı alan adları varsayılan olarak aranır.
-Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tartışma sayfalarını, şablonları vb. kapsayacak şekilde) deneyin veya önek olarak istenilen alan adını kullanın.",
 'search-nonefound' => 'Sorguyla eşleşen bir sonuç yok.',
-'powersearch' => 'Gelişmiş arama',
 'powersearch-legend' => 'Gelişmiş arama',
 'powersearch-ns' => 'Ad alanlarında ara:',
 'powersearch-redir' => 'Yönlendirmeleri listele',
-'powersearch-field' => 'Ara:',
 'powersearch-togglelabel' => 'Seç:',
 'powersearch-toggleall' => 'Hepsi',
 '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',
-'prefsnologintext' => 'Kullanıcı tercihlerinizi ayarlamak için <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} giriş yapmalısınız]</span>.',
+'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,8 +1485,7 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'prefs-email' => 'E-posta seçenekleri',
 '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',
@@ -1511,7 +1503,6 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'localtime' => 'Yerel saat:',
 'timezoneuseserverdefault' => 'Viki varsayılanını kullanın ($1)',
 'timezoneuseoffset' => 'Diğer (ofset belirtin)',
-'timezoneoffset' => 'Ofset¹:',
 'servertime' => 'Sunucu saati:',
 'guesstimezone' => 'Tarayıcınız sizin yerinize doldursun',
 'timezoneregion-africa' => 'Afrika',
@@ -1579,6 +1570,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',
@@ -1602,9 +1594,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:',
@@ -1655,6 +1649,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',
@@ -1669,11 +1664,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',
@@ -1726,8 +1728,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',
@@ -1738,6 +1740,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}}',
@@ -1752,6 +1756,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',
@@ -1794,7 +1800,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ı',
@@ -1932,13 +1938,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ı.',
@@ -1947,6 +1959,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ı.',
@@ -2011,8 +2046,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',
@@ -2023,6 +2057,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',
@@ -2066,6 +2101,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',
@@ -2120,6 +2156,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',
 
@@ -2149,8 +2187,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.
@@ -2196,6 +2238,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',
@@ -2205,6 +2249,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',
@@ -2212,14 +2258,13 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'protectedpages' => 'Koruma altındaki sayfalar',
 'protectedpages-indef' => 'Sadece süresiz korumalar',
 'protectedpages-cascade' => 'Sadece ardışık korumalar',
-'protectedpagestext' => 'Aşağıdaki sayfalar koruma altına alınmıştır',
 'protectedpagesempty' => 'Şu anda, bu parametrelerle korunan hiç bir sayfa yok.',
 'protectedtitles' => 'Korunan başlıklar',
-'protectedtitlestext' => 'Aşağıdaki başlıklar oluşturulmaya karşı korumalıdır',
 'protectedtitlesempty' => 'Şu anda, bu parametrelerle korunan hiç bir başlık yok.',
 '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',
@@ -2255,6 +2300,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',
@@ -2275,6 +2321,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
@@ -2395,7 +2443,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.',
@@ -2435,7 +2483,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
 
@@ -2477,10 +2525,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.',
@@ -2493,6 +2543,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;
@@ -2501,7 +2552,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ü.',
 
@@ -2522,7 +2573,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:',
@@ -2539,7 +2593,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',
@@ -2585,7 +2639,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.',
@@ -2632,7 +2687,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
@@ -2738,6 +2795,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',
@@ -2798,6 +2856,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',
@@ -2828,12 +2887,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.
@@ -2898,6 +2961,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',
@@ -2925,6 +2989,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',
@@ -2955,8 +3020,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',
@@ -3005,6 +3074,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üğü',
@@ -3017,6 +3095,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',
 
@@ -3118,11 +3200,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ı',
@@ -3132,14 +3216,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',
@@ -3151,11 +3238,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',
@@ -3176,6 +3265,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ı',
@@ -3210,7 +3301,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',
@@ -3219,6 +3310,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',
@@ -3408,13 +3501,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',
@@ -3424,26 +3522,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ı',
@@ -3459,6 +3566,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ı',
@@ -3645,6 +3755,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ı',
@@ -3682,10 +3793,6 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-urgency-high' => 'Yüksek ( $1 )',
 'exif-urgency-other' => 'Kullanıcı tanımlı öncelik ($1)',
 
-# External editor support
-'edit-externally' => 'Dosyayı harici bir uygulamayla değiştirin.',
-'edit-externally-help' => '(Daha fazla bilgi için metadaki [https://www.mediawiki.org/wiki/Manual:External_editors dış uygulama ayarları] (İngilizce) sayfasına bakabilirsiniz)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Hepsini göster',
 'namespacesall' => 'hepsi',
@@ -3742,13 +3849,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
 
@@ -3759,6 +3866,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
@@ -3878,6 +3986,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.
@@ -3893,10 +4003,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ı',
 
@@ -3913,10 +4025,9 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 
 # Special:SpecialPages
 'specialpages' => 'Özel sayfalar',
-'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>',
+'specialpages-note-top' => 'Gösterge',
+'specialpages-note' => '* Normal özel sayfalar.
+* <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',
@@ -3948,6 +4059,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ı',
@@ -3977,6 +4089,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.',
@@ -3994,18 +4107,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',
@@ -4014,17 +4133,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',
@@ -4045,15 +4171,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.',
@@ -4069,6 +4200,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"',
@@ -4089,17 +4221,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..93d6a74 100644 (file)
@@ -97,7 +97,6 @@ $messages = array(
 'qbedit' => 'Mşaḥlaf',
 'qbpageoptions' => 'iFaṭaṭe',
 'qbmyoptions' => 'aFaṭoṭayḍi',
-'qbspecialpages' => 'Faṭoṭe dilonoye',
 'faq' => 'Şuwole',
 'faqpage' => 'Project:FAQ',
 
@@ -180,8 +179,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',
@@ -389,14 +386,12 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 # Search results
 'searchresults' => 'Nafqe duKruxyayḍux',
 'searchresults-title' => 'Nafqe duKruxyo l"$1"',
-'searchsubtitleinvalid' => "Karixat '''$1'''",
 'prevn' => '{{PLURAL:$1|$1}} meqımtır',
 'nextn' => '{{PLURAL:$1 ḥaṭtır| $1 ḥaṭtır }}',
 'prevn-title' => '{{PLURAL:$1 Nafqo meqımtır|$1 Nafqe meqımtır}}',
 'nextn-title' => '{{PLURAL:$1|Nafqo ḥreno|$1 Nafqe ḥrene}}',
 'shown-title' => 'maḥway $1 {{PLURAL:$1|Nafqo|Nafqe}} bḥḍo Faṭo',
 'viewprevnext' => 'Maḥway ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => '3ayar duKruxyo',
 'searchmenu-exists' => "'''Kito Faṭo herke Işma \"[[:\$1]]\"yo'''",
 'searchmenu-new' => 'Kṭaw iFaṭaṭe "[[:$1]]" buWiki.',
 'searchprofile-articles' => 'Faṭoṭe daḤbişoṭo',
@@ -419,7 +414,6 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 'searchall' => 'kulle',
 'showingresultsheader' => "{{PLURAL:$5|Nafqo '''$1''' of '''$3'''|Nafqe '''$1 - $2''' men '''$3'''}} l'''$4'''",
 'search-nonefound' => 'Für deine Suchanfrage wurden keine Ergebnisse gefunden.',
-'powersearch-field' => 'Krax',
 'powersearch-togglelabel' => 'Sım Qontrol:',
 'powersearch-toggleall' => 'Kulle',
 
@@ -802,10 +796,6 @@ Others will be hidden by default.
 'exif-languagecode' => 'Leşono',
 'exif-cameraownername' => 'uMoro diQamera',
 
-# 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' => 'kulle',
 'namespacesall' => 'kulle',
index d26a779..4067436 100644 (file)
@@ -137,7 +137,6 @@ $messages = array(
 'qbedit' => 'Lulamisa',
 'qbpageoptions' => 'Tluka leri',
 'qbmyoptions' => 'Matluka ya mina',
-'qbspecialpages' => 'Matluka yohlawuleka',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -244,8 +243,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',
@@ -333,9 +330,6 @@ It may have already been deleted by someone else.',
 It may contain one or more characters which cannot be used in titles.',
 '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' => 'Vona tsalwa-tumbuluxa',
 'viewsource-title' => 'vona xihlovo xa $1',
 'protectedpagetext' => 'Tluka leri riserheleriwile kusivele ndzulamiso.',
@@ -522,7 +516,6 @@ Swihlamuseri: '''({{int:sweswi}})''' = kuhambana na ndzulamiso wa sweswinyana, '
 'showingresults' => "Kombisa e hansi kufika eka {{PLURAL:$1|'''1''' mbuyelo|'''$1''' mimbuyelo}} Kusungula hi#'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|nkutlunya '''$1''' wa '''$3''' lowu|minkutlunya '''$1 - $2''' ya '''$3''' leyi}} yelanaka na '''$4'''",
 'search-nonefound' => 'Kuhava mimbuyelo leyi yelanaka xikombelo lexi.',
-'powersearch' => 'Ndzavisiso',
 
 # Preferences page
 'mypreferences' => 'Minhlawulo ya mina',
@@ -531,7 +524,6 @@ Swihlamuseri: '''({{int:sweswi}})''' = kuhambana na ndzulamiso wa sweswinyana, '
 'prefs-datetime' => 'Siku na nkarhi',
 'prefs-watchlist' => 'Nxaxamelo wa Leswivoniwaka',
 'saveprefs' => 'Hlayisa',
-'resetprefs' => 'sula kucinca lokungahlayisiwangiki',
 'prefs-editing' => 'Kululamisa',
 'youremail' => 'E-mail:',
 'yourrealname' => 'Vito ra ntiyiso:',
@@ -875,10 +867,6 @@ Lebyi n'wana vuxokoxoko bya finiso byitumbetiwile.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Lulamisa fayili leyi utirhisa xilulamisi xale handle ka wiki leyi',
-'edit-externally-help' => '(Vona [https://www.mediawiki.org/wiki/Manual:External_editors swiletelo swo sungurisa] leswaku ukuma vuxokoxoko lebyi engetelekeke)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Hinkwawo',
 'namespacesall' => 'Hinkwawo',
@@ -908,4 +896,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 8444004..002b01b 100644 (file)
@@ -366,7 +366,6 @@ $messages = array(
 'qbedit' => 'Үзгәртү',
 'qbpageoptions' => 'Бу бит',
 'qbmyoptions' => 'Битләрем',
-'qbspecialpages' => 'Махсус битләр',
 'faq' => 'ЕБС',
 'faqpage' => 'Project:ЕБС',
 
@@ -483,8 +482,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|яңа хәбәр}}',
@@ -579,9 +576,6 @@ $1',
 'perfcached' => 'Бу мәгълүматлар кэштан алынган, аларда соңгы үзгәртүләр булмаска мөмкин. Кэшта иң күбе {{PLURAL:$1|язма}} саклана.',
 'perfcachedts' => 'Бу мәгълүматлар кэштан алынган, ул соңгы тапкыр $1 яңартылды. Кэшта иң күбе  {{PLURAL:$4|язма}} саклана',
 'querypage-no-updates' => 'Хәзер бу битне яңартып булмый. Монда күрсәтелгән мәгълүматлар кабул ителмәячәк.',
-'wrong_wfQuery_params' => 'wfQuery() функция өчен ярамаган параметрлар<br />
-Функция: $1<br />
-Сорау: $2',
 'viewsource' => 'Карау',
 'viewsource-title' => '$1 битенең яхма текстын карау',
 'actionthrottled' => 'Тизлек киметелгән',
@@ -1130,10 +1124,6 @@ $1",
 # Search results
 'searchresults' => 'Эзләү нәтиҗәләре',
 'searchresults-title' => '«$1» өчен эзләү нәтиҗәләре',
-'searchresulttext' => 'Проектның сәхифәләрендә эзләү турында тулырак мәгълумат алыр өчен [[{{MediaWiki:Helppage}}|өстәмә мәгълумат]] битенә керегез.',
-'searchsubtitle' => '«[[:$1]]» өчен эзләү ([[Special:Prefixindex/$1|«$1» дан башлый барлык битләр]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|«$1» га сылтый барлык битләр]])',
-'searchsubtitleinvalid' => '"$1" таләбе буенча',
-'notitlematches' => 'Битнең исемнәрендә туры килүләр юк',
 'notextmatches' => 'Тиңдәш текстлы битләр юк',
 'prevn' => 'алдагы {{PLURAL:$1|$1}}',
 'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
@@ -1141,10 +1131,8 @@ $1",
 'nextn-title' => 'Киләсе $1  {{PLURAL:$1|язма}}',
 'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|язма|язма}} күрсәтелсен',
 'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Эзләү көйләнмәләре',
 'searchmenu-exists' => "'''Бу вики-проекта «[[:$1]]» исемле бит бар инде'''",
 'searchmenu-new' => "'''«[[:$1]]»  исемле яңа бит ясау'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикслы битләрне күрсәтү]]',
 'searchprofile-articles' => 'Төп битләр',
 'searchprofile-project' => 'Ярдәм һәм проектлар бите',
 'searchprofile-images' => 'Мультимедиа',
@@ -1172,14 +1160,10 @@ $1",
 'showingresults' => "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
 'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3| башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
 'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән  '''$3'''}}",
-'nonefound' => "'''Искәрмә'''. Килешү буенча эзләү кайбер исем аланнарында гына эшли.
-Барлык аланнарда (бәхәс битләре, үрнәкләр, һ.б.) эзләү өчен ''all'' сүзен сайлагыз, яисә кирәкле исем аланын сайлагыз.",
 'search-nonefound' => 'Сорауга туры килгән җаваплар табылмады.',
-'powersearch' => 'Өстәмә эзләү',
 'powersearch-legend' => 'Өстәмә эзләү',
 'powersearch-ns' => 'исемнәрендә эзләү',
 'powersearch-redir' => 'Юнәлтүләр күрсәтелсен',
-'powersearch-field' => 'Эзләү',
 'powersearch-togglelabel' => 'Кире кагыу:',
 'powersearch-toggleall' => 'Барысы',
 'powersearch-togglenone' => 'Бирни дә юк',
@@ -1189,8 +1173,6 @@ $1",
 'preferences' => 'Көйләнмәләр',
 'mypreferences' => 'Көйләнмәләр',
 'prefs-edits' => 'Үзгәртүләр исәбе:',
-'prefsnologin' => 'Кермәгәнсез',
-'prefsnologintext' => 'Кулланучы көйләнмәләрене үзгәртү өчен, сез <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} керергә]</span> тиешсез.',
 'changepassword' => 'Серсүзне үзгәртү',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан карау',
@@ -1211,7 +1193,6 @@ $1",
 'prefs-email' => 'E-mail көйләүләре',
 'prefs-rendering' => 'Күренеш',
 'saveprefs' => 'Саклау',
-'resetprefs' => 'Сакланмаган үзгәртүләрне бетерү',
 'restoreprefs' => 'Баштагы көйләнмәләрне кире кайтару',
 'prefs-editing' => 'Үзгәртү',
 'rows' => 'Юллар:',
@@ -1229,7 +1210,6 @@ $1",
 'localtime' => 'Җирле вакыт',
 'timezoneuseserverdefault' => 'Сервернең көйләнмәләре кулланылсын ($1)',
 'timezoneuseoffset' => 'Башка (күчерелүне күрсәтегез)',
-'timezoneoffset' => 'Күчерелү¹:',
 'servertime' => 'Серверның вакыты:',
 'guesstimezone' => 'Браузердан тутыру',
 'timezoneregion-africa' => 'Африка',
@@ -1375,6 +1355,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 башлап яңа үзгәртүләрне күрсәт',
@@ -2374,10 +2355,6 @@ $1',
 'exif-gpsspeed-k' => 'км/сәг',
 'exif-gpsspeed-m' => 'миля/сәг',
 
-# External editor support
-'edit-externally' => 'Бу файлны тышкы кушымтаны кулланып үзгәртү',
-'edit-externally-help' => '(тулырак мәгълүмат өчен [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] битен карагыз)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'барлык',
 'namespacesall' => 'барлык',
@@ -2452,8 +2429,7 @@ $1',
 
 # Special:SpecialPages
 'specialpages' => 'Махсус битләр',
-'specialpages-note' => '----
-* Гади махсус битләр.
+'specialpages-note' => '* Гади махсус битләр.
 * <strong class="mw-specialpagerestricted">Чикләнелгән махсус битләр.</strong>
 * <span class="mw-specialpagecached">Кешланган махсус битләр.</span>',
 'specialpages-group-maintenance' => 'Техник карау хисапнамәсе',
@@ -2569,4 +2545,8 @@ $1',
 'api-error-uploaddisabled' => 'Бу викидә файллар йөкләү мөмкинлеге сүндерелгән.',
 'api-error-verification-error' => 'Бәлки, бу файл бозылгандыр яки дөрес түгел киңәйтелмәгә ия.',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Үрнәкләрне ачу',
+'expand_templates_ok' => 'OK',
+
 );
index 7b612dc..37b1f1e 100644 (file)
@@ -233,7 +233,6 @@ $messages = array(
 'qbedit' => 'Üzgärtü',
 'qbpageoptions' => 'Bu bit',
 'qbmyoptions' => 'Bitlärem',
-'qbspecialpages' => 'Maxsus bitlär',
 'faq' => 'YBS',
 'faqpage' => 'Project:YBS',
 
@@ -347,8 +346,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ü',
@@ -432,9 +429,6 @@ Zinhar öçen, URLnı kürsätep, bu turıda [[Special:ListUsers/sysop|idaräçe
 'perfcached' => 'Bu mäğlümatlar keştan alınğan, alarda soñğı üzgärtülär bulmasqa mömkin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Bu mäğlümatlar keştan alınğan, ul soñğı tapqır $1 yañartıldı. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Xäzer bu bitne yañartıp bulmıy. Monda kürsätelgän mäğlümatlar qabul itelmäyäçäk.',
-'wrong_wfQuery_params' => 'wfQuery() funksiä öçen yaramağan parametrlar<br />
-Funksiä: $1<br />
-Soraw: $2',
 'viewsource' => 'Qaraw',
 'actionthrottled' => 'Tizlek kimetelgän',
 'actionthrottledtext' => 'Spamğa qarşı köräş öçen az waqıt eçendä bu ğämälne yış qullanu tıyılğan. Zinhar, soñaraq qabatlağız.',
@@ -868,18 +862,12 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 # Search results
 'searchresults' => 'Ezläw näticäläre',
 'searchresults-title' => '«$1» öçen ezläw näticäläre',
-'searchresulttext' => 'Proyektnıñ säxifälärendä ezläw turında tulıraq mäğlumat alır öçen [[{{MediaWiki:Helppage}}|östämä mäğlumat]] bitenä keregez.',
-'searchsubtitle' => '«[[:$1]]» öçen ezläw ([[Special:Prefixindex/$1|«$1» dan başlıy barlıq bitlär]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|«$1» ğa sıltıy barlıq bitlär]])',
-'searchsubtitleinvalid' => '"$1" taläbe buyınça',
 'titlematches' => 'Mäqälä başlığı kileşä',
-'notitlematches' => 'Bitneñ isemnärendä turı kilülär yuq',
 'notextmatches' => 'Tiñdäş tekstlı bitlär yuq',
 'prevn' => 'aldağı {{PLURAL:$1|$1}}',
 'nextn' => 'çirattağı {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Kürsätelüe: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ezläw köylänmäläre',
 'searchmenu-new' => "'''«[[:$1]]»  isemle yaña bit yasaw'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu prefikslı bitlärne kürsätü]]',
 'searchprofile-articles' => 'Töp bitlär',
 'searchprofile-project' => 'Yärdäm häm proyektlar bite',
 'searchprofile-images' => 'Multimedia',
@@ -906,14 +894,10 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 'showingresults' => "Asta № '''$2''' {{PLURAL:$1|başlap}} '''$1''' {{PLURAL:$1|rezultat}} kürsätelgän.",
 'showingresultsnum' => "Asta № '''$2''' {{PLURAL:$3| başlap}} '''$3''' {{PLURAL:$3|rezultat}} kürsätelgän.",
 'showingresultsheader' => "'''$4''' öçen {{PLURAL:$5|Rezultat '''$1''' sennän '''$3'''|Rezultatlar '''$1 — $2''' sennän  '''$3'''}}",
-'nonefound' => "'''İskärmä'''. Kileşü buyınça ezläw qayber isem alannarında ğına eşli.
-Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' süzen saylağız, yäisä kiräkle isem alanın saylağız.",
 'search-nonefound' => 'Sorawğa turı kilgän cawaplar tabılmadı.',
-'powersearch' => 'Östämä ezläw',
 'powersearch-legend' => 'Östämä ezläw',
 'powersearch-ns' => 'isemnärendä ezläw',
 'powersearch-redir' => 'Yünältülär kürsätelsen',
-'powersearch-field' => 'Ezläw',
 'powersearch-togglelabel' => 'Kire qağıw:',
 'powersearch-toggleall' => 'Barısı',
 'powersearch-togglenone' => 'Birni dä yuq',
@@ -923,8 +907,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',
-'prefsnologintext' => 'Qullanuçı köylänmälärene üzgärtü öçen, sez <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kerergä]</span> tieşsez.',
 'changepassword' => 'Sersüzne üzgärtü',
 'prefs-skin' => 'Küreneş',
 'skin-preview' => 'Aldan qaraw',
@@ -943,7 +925,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' s
 'prefs-email' => 'E-mail köyläwläre',
 'prefs-rendering' => 'Küreneş',
 'saveprefs' => 'Saqlaw',
-'resetprefs' => 'Saqlanmağan üzgärtülärne beterü',
 'restoreprefs' => 'Baştağı köylänmälärne kire qaytaru',
 'prefs-editing' => 'Üzgärtü',
 'rows' => 'Yullar:',
@@ -961,7 +942,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' s
 'localtime' => 'Cirle waqıt',
 'timezoneuseserverdefault' => 'Serverneñ köylänmäläre qullanılsın',
 'timezoneuseoffset' => 'Başqa (küçerelüne kürsätegez)',
-'timezoneoffset' => 'Küçerelü¹:',
 'servertime' => 'Servernıñ waqıtı:',
 'guesstimezone' => 'Brauzerdan tutıru',
 'timezoneregion-africa' => 'Afrika',
@@ -2036,10 +2016,6 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
 'exif-gpsspeed-k' => 'km/säğ',
 'exif-gpsspeed-m' => 'milya/säğ',
 
-# External editor support
-'edit-externally' => 'Bu faylnı tışqı quşımtanı qullanıp üzgärtü',
-'edit-externally-help' => '(tulıraq mäğlümat öçen [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] biten qarağız)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'barlıq',
 'namespacesall' => 'barlıq',
@@ -2102,8 +2078,7 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
 
 # Special:SpecialPages
 'specialpages' => 'Maxsus bitlär',
-'specialpages-note' => '----
-* Ğädi maxsus bitlär.
+'specialpages-note' => '* Ğädi maxsus bitlär.
 * <strong class="mw-specialpagerestricted">Çiklänelgän ğädi maxsus bitlär</strong>',
 'specialpages-group-maintenance' => 'Texnik qaraw xisapnamäse',
 'specialpages-group-other' => 'Başqa maxsus bitlär',
index 63a770c..90058f4 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(
@@ -127,7 +127,7 @@ $messages = array(
 'tog-watchlisthidebots' => 'Хайгаарал даңзызындан роботтарның эдиглерин чажыр',
 'tog-watchlisthideminor' => 'Хайгаарал даңзызындан бичии эдиглерни чажыр',
 'tog-watchlisthidepatrolled' => 'Хайгаарал даңзындан истээн өскерлиишкиннерны чажырары',
-'tog-showhiddencats' => 'ЧажÑ\8bÑ\82 Ð±Ó©Ð»Ò¯ÐºÑ\82еÑ\80ни ÐºÓ©Ñ\80гүзеÑ\80и',
+'tog-showhiddencats' => 'ЧажÑ\8bÑ\82 Ð°Ò£Ð³Ñ\8bлалдаÑ\80нÑ\8b ÐºÓ©Ñ\80гүзеÑ\80',
 
 'underline-always' => 'Кезээде',
 'underline-never' => 'Кажан-даа',
@@ -221,7 +221,6 @@ $messages = array(
 'qbedit' => 'Өскертири',
 'qbpageoptions' => 'Бо арын',
 'qbmyoptions' => 'Мээң арыннарым',
-'qbspecialpages' => 'Тускай арыннар',
 'faq' => 'Бо-ла салыр айтырыглар (БлСА)',
 'faqpage' => 'Project:БлСА',
 
@@ -321,8 +320,6 @@ $messages = array(
 'ok' => 'Чөп',
 'retrievedfrom' => '«$1» деп адрестен парлаттынган',
 'youhavenewmessages' => 'Силерде $1 ($2) бар.',
-'newmessageslink' => 'чаа чагаалар',
-'newmessagesdifflink' => 'эрткен өскерлиишкин',
 'youhavenewmessagesmulti' => '«$1» деп арында силерге чаа чагаалар бар.',
 'editsection' => 'эдер',
 'editold' => 'эдер',
@@ -602,7 +599,7 @@ Please check if you want to create/edit this page.',
 'nextn' => 'дараазында {{PLURAL:$1|$1}}',
 'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
 'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
-'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнелди|түңнелди}} көргүзери',
+'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнел}} көргүзер',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
 'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
 'searchmenu-new' => "'''Бо викиде «[[:$1]]» арынны чогаадыры'''",
@@ -627,7 +624,6 @@ Please check if you want to create/edit this page.',
 'searchall' => 'шупту',
 'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|'''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
 'search-nonefound' => 'Айыткан негелдениң түңнели чок',
-'powersearch' => 'Advanced search',
 'powersearch-ns' => 'Аттар делгемнеринден дилээри:',
 'powersearch-toggleall' => 'Шупту',
 
@@ -751,20 +747,21 @@ 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 тура чаа өскерилгелерни көргүзер',
 'rcshowhideminor' => 'Бичии өскерлиишкиннерни $1',
-'rcshowhidebots' => 'РобоÑ\82Ñ\82аÑ\80нÑ\83 $1',
-'rcshowhideliu' => 'Ð\9aиÑ\80еÑ\80 Ð°Ð¶Ñ\8bглакÑ\87Ñ\8bлаÑ\80нÑ\8b $1',
-'rcshowhideanons' => 'Ат эвес ажыглакчыларны $1',
+'rcshowhidebots' => 'РобоÑ\82Ñ\82аÑ\80нÑ\8b $1',
+'rcshowhideliu' => 'Ð\9aиÑ\80ген ÐºÐ¸Ñ\80жикÑ\87илеÑ\80ни $1',
+'rcshowhideanons' => 'Ады чок ажыглакчыларны $1',
 'rcshowhidepatr' => 'истээн өскерлиишкиннерни $1',
-'rcshowhidemine' => 'Ð\9cÑ\8dÑ\8dÒ£ Ó©Ñ\81кеÑ\80лииÑ\88кинимни $1',
-'rclinks' => '$2 хүнде эрткен $1 өскерлиишкиннерни көргүзери<br />$3',
+'rcshowhidemine' => 'ЭдиглеÑ\80имни $1',
+'rclinks' => 'Сөөлгү $2 хүн иштинде болган $1 өскерлиишкиннерни көргүзер<br />$3',
 'diff' => 'ылгал',
 'hist' => 'төөгү',
-'hide' => 'чажырары',
-'show' => 'көÑ\80гүзеÑ\80и',
+'hide' => 'Чажырар',
+'show' => 'Ð\9aÓ©Ñ\80гүзеÑ\80',
 'minoreditletter' => 'б',
 'newpageletter' => 'Ч',
 'boteditletter' => 'р',
@@ -873,7 +870,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'brokenredirects-delete' => 'ырадыры',
 
 'withoutinterwiki' => 'Дыл холбаалар эвес арыннар',
-'withoutinterwiki-submit' => 'Көргүзери',
+'withoutinterwiki-submit' => 'Көргүзер',
 
 'fewestrevisions' => 'Эң эвээш үндүрери арыннар',
 
@@ -987,7 +984,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'unwatching' => 'Хайгааравайн турар...',
 
 'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} ажыглакчызы',
-'enotif_anon_editor' => 'аÑ\82 Ñ\8dвеÑ\81 Ð°Ð¶Ñ\8bглакÑ\87Ñ\8b $1',
+'enotif_anon_editor' => 'аÑ\82 Ñ\87ок ÐºÐ¸Ñ\80жикÑ\87и $1',
 'changed' => 'өскертти',
 
 # Delete
@@ -1095,7 +1092,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'contribslink' => 'салыышкыннар',
 'blocklogpage' => 'Кызыгаарлаашкынның журналы',
 'blocklogentry' => ', [[$1]] $2 дургузунда кызыгаарлаттынган: $3',
-'block-log-flags-anononly' => 'чүгле ат эвес ажыглакчылар',
+'block-log-flags-anononly' => 'чүгле адыжок киржикчилер',
 'block-log-flags-nocreate' => 'Кижилер бүрүткээри хоруглуг',
 'block-log-flags-hiddenname' => 'ажыглакчының ады чажырган',
 
@@ -1199,7 +1196,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-summary' => 'Кысказы-биле бижиңер',
 
 # Attribution
-'anonymous' => '{{grammar:genitive|{{SITENAME}}}} ат эвес {{PLURAL:$1|ажыглакчызы|ажыглакчылары}}',
+'anonymous' => '{{grammar:genitive|{{SITENAME}}}} адыжок {{PLURAL:$1|киржикчизи}}',
 
 # Skin names
 'skinname-cologneblue' => 'Cologne Blue',
@@ -1285,10 +1282,6 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'exif-iimcategory-spo' => 'Спорт',
 'exif-iimcategory-wea' => 'Агаар',
 
-# External editor support
-'edit-externally' => 'Бо файлды даштыкы капсырылга-биле эдер',
-'edit-externally-help' => '(Улаштыр тодарадырда бо [https://www.mediawiki.org/wiki/Manual:External_editors кыстып алыр саавырны] көрүңер)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'шупту',
 'namespacesall' => 'шупту',
index 226e4a2..b42b277 100644 (file)
@@ -204,7 +204,6 @@ $messages = array(
 'qbedit' => 'تەھرىر',
 'qbpageoptions' => 'بۇ بەت',
 'qbmyoptions' => 'بەتلەرىم',
-'qbspecialpages' => 'ئالاھىدە بەتلەر',
 'faq' => 'كۆپ كۆرۈلىدىغان مەسىلىلەر',
 'faqpage' => 'Project:كۆپ كۆرۈلىدىغان مەسىلىلەر',
 
@@ -298,7 +297,7 @@ $1',
 'copyrightpage' => '{{ns:project}}:نەشر ئۇچۇرى',
 'currentevents' => 'نۆۋەتتىكى ھادىسە',
 'currentevents-url' => 'Project:نۆۋەتتىكى ھادىسە',
-'disclaimers' => 'جاÛ\8bابÙ\83ارÙ\84Ù\89Ù\82Ù\86Ù\89 Ù\83Û\95Ú\86Û\88رÛ\88Ù\85 Ù\82Ù\89Ù\84Ù\89Ø´ Ø¨Ø§Ù\8aاÙ\86اتÙ\89',
+'disclaimers' => 'ئاگاھÙ\84اÙ\86دÛ\87رÛ\87Ø´Ù\84ار',
 'disclaimerpage' => 'Project:ئادەتتىكى جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
 'edithelp' => 'تەھرىرلەش ياردىمى',
 'helppage' => 'Help:مەزمۇنلار',
@@ -325,8 +324,6 @@ $1',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => '"$1" دىن ئېرىشكەن',
 'youhavenewmessages' => 'سىزدە $1 ($2) بار.',
-'newmessageslink' => 'يېڭى ئۇچۇر',
-'newmessagesdifflink' => 'ئاخىرقى ئۆزگەرتىش',
 'youhavenewmessagesfromusers' => 'سىزنىڭ {{PLURAL:$3|باشقا ئىشلەتكۈچى|$3 ئىشلەتكۈچى}} $1  ($2)ڭىز بار.',
 'youhavenewmessagesmanyusers' => 'سىزنىڭ نۇرغۇن ئىشلەتكۈچىدىن كەلگەن $1  ($2) بار.',
 'newmessageslinkplural' => '{{PLURAL:$1|بىر يېڭى |يېڭى ئۇچۇر}}ئۇچۇر',
@@ -387,6 +384,7 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 # General errors
 'error' => 'خاتالىق',
 'databaseerror' => 'ساندان خاتالىقى',
+'databaseerror-query' => 'سوراق: $1',
 'databaseerror-function' => 'فۇنكىسىيە: $1',
 'databaseerror-error' => 'خاتا: $1',
 'laggedslavemode' => 'ئاگاھلاندۇرۇش: بەت يېقىنقى يېڭىلاشنى ئۆز ئىچىگە ئالمىغان بولۇشى مۇمكىن.',
@@ -432,11 +430,6 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 'querypage-no-updates' => 'نۆۋەتتە مەزكۇر بەتنى يېڭىلاش چەكلەندى.
 
 بۇ جايدىكى سانلىق مەلۇماتنى دەرھال يېڭىلىغىلى بولمايدۇ.',
-'wrong_wfQuery_params' => 'خاتا پارامېتىر  wfQuery()<br />غا يوللاندى
-
-فونكسىيە: $1<br />
-
-سۈرۈشتۈرۈش: $2',
 'viewsource' => 'مەنبەنى كۆرسەت',
 'viewsource-title' => '$1 نىڭ ئەسلى كودىنى كۆرسەت',
 'actionthrottled' => 'مەشغۇلات چەكلەندى',
@@ -579,7 +572,7 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 'passwordtooshort' => 'ئىم ئاز دېگەندە {{PLURAL:$1|1 ھەرپ|$1 ھەرپ}} بولۇشى لازىم.',
 'password-name-match' => 'پارولىڭىز ئىشلەتكۈچى نامىڭىزدىن پەرقلىنىشى لازىم.',
 'password-login-forbidden' => 'بۇ ئىشلەتكۈچى نامى ۋە پارول چەكلەنگەن.',
-'mailmypassword' => 'Ù\8aÛ\90Ú­Ù\89 Ø¦Ù\89Ù\85Ù\86Ù\89 Ø¦Û\90Ø®Û\95تÙ\83Û\95 Ø¦Û\95Û\8bÛ\95ت',
+'mailmypassword' => 'پارÙ\88Ù\84Ù\86Ù\89 Ø¦Û\95سÙ\84Ù\89Ú¯Û\95 Ù\82اÙ\8aتÛ\87رÙ\85اÙ\82',
 'passwordremindertitle' => '{{SITENAME}} ئۈچۈن يېڭى ۋاقىتلىق پارول',
 'passwordremindertext' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1)
 {{SITENAME}} بېكەتنىڭ يېڭى ئىم ($4) نى ئىلتىماس قىلدى .
@@ -1132,12 +1125,8 @@ $1",
 # Search results
 'searchresults' => 'ئىزدەش نەتىجىسى',
 'searchresults-title' => '"$1" نىڭ ئىزدەش نەتىجىسى',
-'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' => 'بەت مەزمۇنى ماس كەلدى',
 'notextmatches' => 'ماس كېلىدىغان بەت مەزمۇنى يوق',
 'prevn' => 'ئالدى {{PLURAL:$1|$1}}',
@@ -1146,10 +1135,8 @@ $1",
 'nextn-title' => 'كېيىكى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}',
 'shown-title' => 'ھەر بىر بەتتە $1 {{PLURAL:$1|نەتىجە |نەتىجە }} كۆرسەت',
 'viewprevnext' => 'كۆرسەت ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ئىزدەش تاللانما',
 'searchmenu-exists' => "'''بۇ wiki دا  \"[[:\$1]]\" ئاتلىق بەت بار '''",
 'searchmenu-new' => "'''بۇ wiki دا  \"[[:\$1]]\" ئاتلىق بەت قۇر!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بۇنى ئالدى قوشۇلغۇچى قىلغان بەتكە كۆز يۈگۈرت ]]',
 'searchprofile-articles' => 'مەزمۇن بېتى',
 'searchprofile-project' => 'ياردەم ۋە قۇرۇلۇش بەتلەر',
 'searchprofile-images' => 'كۆپ ۋاسىتە',
@@ -1177,14 +1164,10 @@ $1",
 'showingresults' => "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$1|'''1''' نەتىجە|'''$1''' نەتىجە}} كۆرسىتىدۇ:",
 'showingresultsnum' => "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$3|'''1''' نەتىجە |'''$3''' نەتىجە }} كۆرسىتىدۇ:",
 'showingresultsheader' => "'''$4''' نىڭ {{PLURAL:$5|'''$1''' دىن '''$3'''غىچە نەتىجە | '''$1 - $2''' غىچە جەمئى '''$3''' نەتىجە}}",
-'nonefound' => "'''دىققەت''': كۆڭۈلدىكى ئەھۋالدا بىر قىسىم ئات بوشلۇقى بەتلىرىلا ئىزدىلىدۇ.
-ئىزدەش جۈملىڭىزنىڭ ئالدىغا ''all:'' ئالدى قوشۇلغۇچىسى قوشۇپ سىناڭ، بۇنداق بولغاندا ھەممە بەت (مۇنازىرە بېتى، قېلىپ قاتارلىقلارنى ئۆز ئىچىگە ئالىدۇ)تىن ئىزدەيدۇ، ياكى لازىملىق ئات بوشلۇقى ئالدى قوشۇلغۇچى قىلىنسىمۇ بولىدۇ.",
 'search-nonefound' => 'سۈرۈشتۈرۈشكە ماس نەتىجە تېپىلمىدى.',
-'powersearch' => 'ئالىي ئىزدەش',
 'powersearch-legend' => 'ئالىي ئىزدەش',
 'powersearch-ns' => 'ئات بوشلۇقىدىن ئىزدە:',
 'powersearch-redir' => 'قايتا نىشانلانغان بەت تىزىملىكى',
-'powersearch-field' => 'ئىزدە',
 'powersearch-togglelabel' => 'تاللا:',
 'powersearch-toggleall' => 'ھەممىسى',
 'powersearch-togglenone' => 'يوق',
@@ -1196,8 +1179,6 @@ $1",
 'preferences' => 'مايىللىق',
 'mypreferences' => 'مايىللىق',
 'prefs-edits' => 'تەھرىر سانى:',
-'prefsnologin' => 'تىزىمغا كىرمىدى',
-'prefsnologintext' => 'سىز ئالدى بىلەن <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} تىزىمغا كىر]</span>سىڭىز ئاندىن ئىشلەتكۈچى مايىللىقنى تەڭشىيەلەيسىز.',
 'changepassword' => 'پارولنى ئۆزگەرتىش',
 'prefs-skin' => 'تېرە',
 'skin-preview' => 'ئالدىن كۆزەت',
@@ -1221,7 +1202,6 @@ $1",
 'prefs-email' => 'ئېلخەت تاللانما',
 'prefs-rendering' => 'كۆرۈنۈش',
 'saveprefs' => 'ساقلا',
-'resetprefs' => 'ساقلىمىغان ئۆزگەرتىشلەرنى تازىلا',
 'restoreprefs' => 'بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر',
 'prefs-editing' => 'تەھرىرلەۋاتىدۇ',
 'rows' => 'قۇر:',
@@ -1239,7 +1219,6 @@ $1",
 'localtime' => 'يەرلىك ۋاقىت:',
 'timezoneuseserverdefault' => 'ۋىكىنىڭ كۆڭۈلدىكى قىممىتى($1)نى ئىشلەت',
 'timezoneuseoffset' => 'باشقا (بەلگىلەنگەن  چەتنەش)',
-'timezoneoffset' => '¹ۋاقىت پەرقى:',
 'servertime' => 'مۇلازىمىتىر ۋاقتى:',
 'guesstimezone' => 'توركۆرگۈدىن تولدۇر',
 'timezoneregion-africa' => 'ئافرىقا',
@@ -1487,6 +1466,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 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت',
@@ -1977,10 +1957,8 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 'protectedpages' => 'قوغدالغان بەتلەر',
 'protectedpages-indef' => 'پەقەت قەرەلسىز قوغدالغان بەت',
 'protectedpages-cascade' => 'پەقەت زەنجىرسىمان قوغدالغان بەت',
-'protectedpagestext' => 'تۆۋەندىكى بەتلەر يۆتكەش ياكى تەھرىرلەشنىڭ ئالدىنى ئېلىش ئۈچۈن قوغدالغان',
 'protectedpagesempty' => 'بۇ پارامېتىرلاردا قوغدالغان بەت يوق.',
 'protectedtitles' => 'قوغدالغان ماۋزۇلار',
-'protectedtitlestext' => 'تۆۋەندىكى بەتلەر قۇرۇشتىن ساقلىنىش ئۈچۈن قوغدالغان',
 'protectedtitlesempty' => 'بۇ پارامېتىرلاردا قوغدالغان ماۋزۇ يوق',
 'listusers' => 'ئىشلەتكۈچى تىزىملىكى',
 'listusers-editsonly' => 'تەھرىرلەنگەن ئىشلەتكۈچىلەرنىلا كۆرسەت',
@@ -2405,7 +2383,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' => 'ئات بوشلۇقى',
@@ -3055,7 +3032,7 @@ $1',
 'svg-long-desc' => 'SVG ھۆججىتى، ئاتاقتىكى چوڭلۇقى $1 × $2 نۇقتا، ھۆججەت چوڭلۇقى: $3',
 'svg-long-desc-animated' => 'جانلاندۇرۇم SVG ھۆججەت، سۈرەت چوڭلۇقى $1×$2 پىكسېل، ھۆججەت چوڭلۇقى: $3',
 'svg-long-error' => 'ئۈنۈمسىز SVG ھۈججەت:$1',
-'show-big-image' => 'تÙ\88Ù\84Û\87Ù\82 Ø¦Û\90Ù\86Ù\89Ù\82Ù\84Ù\89Ù\82 Ø¯Û\95رÙ\89جÙ\89سÙ\89',
+'show-big-image' => 'ئÛ\95سÙ\84Ù\89 Ú¾Û\86ججÛ\95ت',
 'show-big-image-preview' => 'بۇ ئالدىن كۆزىتىشنىڭ چوڭلۇقى: $1.',
 'show-big-image-other' => 'باشقا {{PLURAL:$2|چوڭلۇقى}}: $1.',
 'show-big-image-size' => '$1 × $2 پىكسېل',
@@ -3555,10 +3532,6 @@ Variants for Chinese language
 'exif-urgency-high' => 'يۇقىرى ($1)',
 'exif-urgency-other' => 'ئىشلەتكۈچى بەلگىلىگەن ئالدىنلىق ($1)',
 
-# External editor support
-'edit-externally' => 'بۇ ھۆججەتنى سىرتقى قوللىنىشچان پروگراممىدا تەھرىرلە',
-'edit-externally-help' => '( [https://www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ھەممىسى',
 'namespacesall' => 'ھەممىسى',
@@ -3976,4 +3949,9 @@ MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئېلان 
 'limitreport-walltime' => 'ئەمەلىي كەتكەن ۋاقىت',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|سېكۇنت}}',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'نەتىجە',
+'expand_templates_ok' => 'جەزملە',
+'expand_templates_preview' => 'ئالدىن كۆزەت',
+
 );
index 1fe93fe..a894b2b 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' ),
@@ -523,7 +524,6 @@ $messages = array(
 'qbedit' => 'Редагувати',
 'qbpageoptions' => 'Налаштування сторінки',
 'qbmyoptions' => 'Мої налаштування',
-'qbspecialpages' => 'Спеціальні сторінки',
 'faq' => 'Часті питання',
 'faqpage' => 'Project:Часті питання',
 
@@ -641,12 +641,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' => 'ред.',
@@ -746,9 +744,6 @@ $1',
 'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше  {{PLURAL:$1| запису| записів}}.',
 'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|запису|записів}}.',
 'querypage-no-updates' => 'Зміни цієї сторінки зараз заборонені. Дані тут не можуть бути оновлені зараз.',
-'wrong_wfQuery_params' => 'Неприпустима параметри функцій wfQuery()<br />
-Функція: $1<br />
-Запит: $2',
 'viewsource' => 'Перегляд',
 'viewsource-title' => 'Перегляд вихідного коду сторінки $1',
 'actionthrottled' => 'Обмеження за швидкістю',
@@ -774,7 +769,8 @@ $1',
 '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''",
@@ -877,7 +873,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). Для користувача
@@ -950,7 +946,7 @@ $1',
 # Special:PasswordReset
 'passwordreset' => 'Скинути пароль',
 'passwordreset-text-one' => 'Заповніть цю форму для відновлення пароля.',
-'passwordreset-text-many' => '{{PLURAL:$1|Заповніть одне з полів для скидання пароля.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Заповніть одне з полів для отримання тимчасового паролю через електронну пошту.}}',
 'passwordreset-legend' => 'Перевстановити пароль',
 'passwordreset-disabled' => 'У цій вікі вимкнена можливість скидання пароля.',
 'passwordreset-emaildisabled' => 'Функції електронної пошти вимкнуто в цій вікі.',
@@ -1442,12 +1438,8 @@ $1",
 # Search results
 'searchresults' => 'Результати пошуку',
 'searchresults-title' => 'Результати пошуку для «$1»',
-'searchresulttext' => 'Для отримання детальнішої інформації про пошук у проекті, див. [[{{MediaWiki:Helppage}}|розділ допомоги]].',
-'searchsubtitle' => 'Ви шукали «[[:$1]]» ([[Special:Prefixindex/$1|усі сторінки, що починаються на «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|усі сторінки, що мають посилання на «$1»]])',
-'searchsubtitleinvalid' => 'На запит «$1»',
 'toomanymatches' => 'Знайдено дуже багато відповідностей, будь ласка, спробуйте інший запит',
 'titlematches' => 'Збіги в назвах сторінок',
-'notitlematches' => 'Нема збігів у назвах сторінок',
 'textmatches' => 'Збіги в текстах сторінок',
 'notextmatches' => 'Немає збігів у текстах сторінок',
 'prevn' => '{{PLURAL:$1|попередня $1|попередні $1|попередні $1}}',
@@ -1456,10 +1448,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Наступний $1 запис|Наступні $1 записи|Наступні $1 записів}}',
 'shown-title' => 'Показувати $1 {{PLURAL:$1|запис|записи|записів}} на сторінці',
 'viewprevnext' => 'Переглянути ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Параметри пошуку',
 'searchmenu-exists' => "'''У цій вікі є сторінка з назвою «[[:$1]]»'''",
 'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у цій вікі!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показати сторінки з цим префіксом]]',
 'searchprofile-articles' => 'Статті',
 'searchprofile-project' => 'Сторінки довідки і проекту',
 'searchprofile-images' => 'Мультимедіа',
@@ -1487,13 +1477,10 @@ $1",
 'showingresults' => "Нижче {{PLURAL:$1|показане|показані|показані}} '''$1''' {{PLURAL:$1|результат|результати|результатів}}, починаючи з №&nbsp;'''$2'''",
 'showingresultsnum' => 'Нижче показано <strong>$3</strong> {{PLURAL:$3|результат|результати|результатів}}, починаючи з №&nbsp;<strong>$2</strong>.',
 'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
-'nonefound' => "'''Зауваження:''' За умовчанням пошук відбувається не в усіх просторах назв. Використовуйте префікс ''all:'', щоб шукати у всіх просторах назв (у т.ч. сторінки обговорень, шаблони тощо), або зазначте потрібний простір назв.",
 'search-nonefound' => 'Не знайдено результатів, що відповідають запиту.',
-'powersearch' => 'Розширений пошук',
 'powersearch-legend' => 'Розширений пошук',
 'powersearch-ns' => 'Пошук у просторах назв:',
 'powersearch-redir' => 'Показувати перенаправлення',
-'powersearch-field' => 'Шукати',
 'powersearch-togglelabel' => 'Позначити:',
 'powersearch-toggleall' => 'Усі',
 'powersearch-togglenone' => 'Жодний',
@@ -1505,8 +1492,7 @@ $1",
 'preferences' => 'Налаштування',
 'mypreferences' => 'Налаштування',
 'prefs-edits' => 'Кількість редагувань:',
-'prefsnologin' => 'Ви не ввійшли в систему',
-'prefsnologintext' => 'Щоб змінити налаштування користувача, ви повинні <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ввійти до системи]</span>.',
+'prefsnologintext2' => 'Потрібно $1 для налаштування параметрів користувача.',
 'changepassword' => 'Змінити пароль',
 'prefs-skin' => 'Оформлення',
 'skin-preview' => 'Попередній перегляд',
@@ -1530,7 +1516,6 @@ $1",
 'prefs-email' => 'Параметри електронної пошти',
 'prefs-rendering' => 'Зовнішній вигляд',
 'saveprefs' => 'Зберегти',
-'resetprefs' => 'Скасувати незбережені зміни',
 'restoreprefs' => 'Відновити всі стандартні налаштування (у всіх розділах)',
 'prefs-editing' => 'Редагування',
 'rows' => 'Рядків:',
@@ -1551,7 +1536,6 @@ $1",
 'localtime' => 'Місцевий час:',
 'timezoneuseserverdefault' => 'Використовувати стандартне налаштування вікі ($1)',
 'timezoneuseoffset' => 'Інше (зазначте зміщення)',
-'timezoneoffset' => 'Зміщення¹:',
 'servertime' => 'Час сервера:',
 'guesstimezone' => 'Заповнити з браузера',
 'timezoneregion-africa' => 'Африка',
@@ -1809,6 +1793,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.',
@@ -2320,10 +2307,8 @@ $1',
 'protectedpages' => 'Захищені сторінки',
 'protectedpages-indef' => 'Тільки безстроково захищені',
 'protectedpages-cascade' => 'Тільки каскадний захист',
-'protectedpagestext' => 'Такі сторінки захищені від перейменування або зміни.',
 'protectedpagesempty' => 'Зараз нема захищених сторінок із зазначеними параметрами',
 'protectedtitles' => 'Заборонені назви',
-'protectedtitlestext' => 'Наступні назви не дозволено використовувати',
 'protectedtitlesempty' => 'Зараз нема захищених назв із зазначеними параметрами.',
 'listusers' => 'Список користувачів',
 'listusers-editsonly' => 'Показати лише користувачів, які зробили принаймні одне редагування',
@@ -2551,9 +2536,9 @@ $PAGEINTRO $NEWPAGE
 електронною поштою: $PAGEEDITOR_EMAIL
 через вікі: $PAGEEDITOR_WIKI
 
-Якщо ви не відвідаєте цю сторінку, то в подальшому не будете отримувати сповіщень про наступні редагування. Ви також можете вимкнути налаштування сповіщень для усіх сторінок зі списку спостереження.
+Якщо ви не відвідаєте цю сторінку під своїм обліковим записом, то в подальшому не будете отримувати сповіщень про наступні дії. Ви також можете вимкнути налаштування сповіщень для усіх сторінок зі списку спостереження.
 
-                        Ваша дружня система сповіщення {{grammar:genitive|{{SITENAME}}}}
+Ваша дружня система сповіщення {{grammar:genitive|{{SITENAME}}}}
 
 --
 Зміна налаштувань повідомлень електронною поштою
@@ -3941,10 +3926,6 @@ $8',
 'exif-urgency-high' => 'Висока ($1)',
 'exif-urgency-other' => 'Визначений користувачем пріоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Редагувати цей файл, використовуючи зовнішню програму',
-'edit-externally-help' => '(Подробиці див. на сторінці [https://www.mediawiki.org/wiki/Manual:External_editors Інструкції з установки зовнішніх редакторів])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'всі',
 'namespacesall' => 'всі',
@@ -4245,10 +4226,9 @@ MediaWiki поширюється в надії, що вона буде кори
 
 # Special:SpecialPages
 'specialpages' => 'Спеціальні сторінки',
-'specialpages-note' => '----
-* Звичайні службові сторінки
-* <span class="mw-specialpagerestricted">Сторінки з обмеженим доступом.</span>
-* <span class="mw-specialpagecached">Кешовані сторінки (можуть бути застарілими).</span>',
+'specialpages-note-top' => 'Легенда',
+'specialpages-note' => '* Звичайні службові сторінки
+* <span class="mw-specialpagerestricted">Сторінки з обмеженим доступом.</span>',
 'specialpages-group-maintenance' => 'Технічні звіти',
 'specialpages-group-other' => 'Інші',
 'specialpages-group-login' => 'Вхід до системи / реєстрація',
@@ -4461,4 +4441,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 cc5d0f7..131ac4e 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( 'صارف_ڈاک' ),
@@ -303,7 +302,6 @@ $messages = array(
 'qbedit' => 'ترمیم',
 'qbpageoptions' => 'صفحۂ ہٰذا',
 'qbmyoptions' => 'میرے صفحات',
-'qbspecialpages' => 'خاص صفحات',
 'faq' => 'معلوماتِ عامہ',
 'faqpage' => 'Project:معلوماتِ عامہ',
 
@@ -417,8 +415,6 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '‘‘$1’’ مستعادہ منجانب',
 'youhavenewmessages' => 'آپکے لیۓ ایک $1 ہے۔ ($2)',
-'newmessageslink' => 'نئے پیغامات',
-'newmessagesdifflink' => 'تـجـدیـد مـاقـبل آخـر سے فـرق',
 'newmessagesdifflinkplural' => 'آخری {{PLURAL:$1|تبدیلی|تبدیلیاں}}',
 'youhavenewmessagesmulti' => 'ء$1 پر آپ کیلئے نئے پیغامات ہیں',
 'editsection' => 'ترمیم',
@@ -901,10 +897,6 @@ $1",
 # Search results
 'searchresults' => 'تلاش کا نتیجہ',
 'searchresults-title' => 'نتائجِ تلاش برائے "$1"',
-'searchresulttext' => 'ویکیپیڈیا میں تلاش کے بارے میں مزید معلومات کے لیۓ، ویکیپیڈیا میں تلاش کا صفحہ دیکھیۓ۔',
-'searchsubtitle' => 'آپ کی تلاش برائے \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" سے شروع ہونے والے تمام صفحات]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" سے مربوط تمام صفحات]])',
-'searchsubtitleinvalid' => "آپ کی تلاش براۓ '''$1'''",
-'notitlematches' => 'کوئی بھی مماثل عنوان صفحہ نہیں ملا',
 'notextmatches' => 'کوئی بھی مماثل متن موجود نہیں',
 'prevn' => 'پچھلے {{PLURAL:$1|$1}}',
 'nextn' => 'اگلے {{PLURAL:$1|$1}}',
@@ -912,7 +904,6 @@ $1",
 'nextn-title' => 'آگے $1 {{PLURAL:$1|نتیجہ|نتائج}}',
 'shown-title' => 'فی صفحہ $1 {{PLURAL:$1|نتیجہ|نتائج}} دِکھاؤ',
 'viewprevnext' => 'دیکھیں($1 {{int:pipe-separator}} $2) ($3)۔',
-'searchmenu-legend' => 'اختیاراتِ تلاش',
 'searchmenu-exists' => "'''اِس ویکی پر \"[[:\$1]]\" نامی ایک صفحہ موجود ہے'''",
 'searchmenu-new' => "'''اِس ویکی پر صفحہ \"[[:\$1]]\" تخلیق کیجئے!'''",
 'searchprofile-articles' => 'مشمولاتی صفحات',
@@ -938,14 +929,10 @@ $1",
 'mwsuggest-disable' => 'AJAX تجاویز غیرفعال',
 'searchrelated' => 'متعلقہ',
 'searchall' => 'تمام',
-'nonefound' => "'''یاددہانی''': عموماً صرف چند جائے نام تلاش کئے جاتے ہیں۔
-تمام مواد (بشمول تبادلۂ خیال صحات، سانچہ جات وغیرہ) میں تلاش کیلئے اپنے استفسار سے پہلے ''all:'' لگائیے، یا اپنی پسند کا جائے نام بطور سابقہ استعمال کیجئے۔",
 'search-nonefound' => 'استفسار کے مطابق نتائج نہیں ملے.',
-'powersearch' => 'پیشرفتہ تلاش',
 'powersearch-legend' => 'پیشرفتہ تلاش',
 'powersearch-ns' => 'جائے نام میں تلاش:',
 'powersearch-redir' => 'فہرستِ رجوع مکرر',
-'powersearch-field' => 'تلاش برائے',
 'powersearch-togglelabel' => 'جانچ',
 'powersearch-toggleall' => 'تمام',
 'powersearch-togglenone' => 'کوئی نہیں',
@@ -958,8 +945,6 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'میری ترجیہات',
 'prefs-edits' => 'تدوینات کی تعداد:',
-'prefsnologin' => 'نا داخل شدہ حالت',
-'prefsnologintext' => 'ترجیحات ترتیب دینے کیلئے <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} داخل نوشتہ]</span> ہونا لازمی ہے.',
 'changepassword' => 'کلمۂ شناخت تبدیل کریں',
 'prefs-skin' => 'جِلد',
 'skin-preview' => 'پیش منظر',
@@ -978,7 +963,6 @@ $1",
 'prefs-email' => 'اختیاراتِ برقی ڈاک',
 'prefs-rendering' => 'ظاہریت',
 'saveprefs' => 'محفوظ',
-'resetprefs' => 'نامحفوظ تبدیلیاں صاف کرو',
 'restoreprefs' => 'تمام بےنقص ترتیبات بحال کیجئے',
 'prefs-editing' => 'تدوین',
 'rows' => 'صفیں:',
@@ -1644,4 +1628,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..4a05487 100644 (file)
@@ -255,7 +255,6 @@ $messages = array(
 'qbedit' => 'Tahrirlash',
 'qbpageoptions' => 'Ushbu sahifa moslamalari',
 'qbmyoptions' => 'Moslamalarim',
-'qbspecialpages' => 'Maxsus sahifalar',
 'faq' => 'TSS',
 'faqpage' => 'Project:TSS',
 
@@ -371,11 +370,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',
@@ -740,12 +737,8 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 # Search results
 'searchresults' => 'Qidiruv natijalari',
 'searchresults-title' => '"$1" uchun qidiruv natijalari',
-'searchresulttext' => '{{SITENAME}}da qidirish haqida qoʻshimcha maʼlumot olish uchun [[{{MediaWiki:Helppage}}|yordam]] sahifasiga qarang.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\'ni qidirdingiz ([[Special:Prefixindex/$1|"$1" bilan boshlanadigan sahifalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"ga bogʻlangan sahifalar]])',
-'searchsubtitleinvalid' => "'''$1'''ni qidirdingiz",
 'toomanymatches' => "Juda ko'p o'xshashliklar topildi, iltimos, boshqa so'rov bilan urinib ko'ring",
 'titlematches' => 'Sahifalar nomlaridagi mos kelishlar',
-'notitlematches' => 'Bunday sarlavha topilmadi',
 'textmatches' => 'Sahifalar matnlaridagi mos kelishlar',
 'notextmatches' => 'Bunday matn topilmadi',
 'prevn' => 'oldingi {{PLURAL:$1|$1}}',
@@ -754,10 +747,8 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'nextn-title' => 'Keyingi $1 {{PLURAL:$1|natija|natijalar}}',
 'shown-title' => 'Sahifada $1 ta natija koʻrsatish',
 'viewprevnext' => 'Koʻrish ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Qidiruv shartlari',
 'searchmenu-exists' => "'''Ushbu vikida \"[[:\$1]]\" nomli sahifa mavjud.'''",
 'searchmenu-new' => "'''Ushbu vikida \"[[:\$1]]\" sahifasini yarat!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shu prefiksli sahifalarni koʻrsatish]]',
 'searchprofile-articles' => 'Asosiy sahifalar',
 'searchprofile-project' => 'Yordam va loyiha sahifalari',
 'searchprofile-images' => 'Multimedia',
@@ -786,11 +777,9 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'showingresultsnum' => "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
 'showingresultsheader' => "$4 uchun {{PLURAL:$5|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}}",
 'search-nonefound' => 'Talabga javob beradigan natija topilmadi.',
-'powersearch' => 'Qidiruv',
 'powersearch-legend' => 'Kengaytirilgan qidiruv',
 'powersearch-ns' => 'Bu nom-fazolarda izla:',
 'powersearch-redir' => 'Qayta yoʻnaltirishlarni koʻrsatish',
-'powersearch-field' => 'Qidiruv',
 'powersearch-togglelabel' => 'Belgilash:',
 'powersearch-toggleall' => 'Hammasini',
 'powersearch-togglenone' => 'Hech qaysini',
@@ -800,7 +789,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',
@@ -821,7 +809,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'prefs-email' => 'Elektron pochta moslamalari',
 'prefs-rendering' => 'Tashqi ko‘rinishi',
 'saveprefs' => 'Saqlash',
-'resetprefs' => 'Bekor qilish',
 'restoreprefs' => 'Barcha moslamalarni dastlabki holatiga qaytarish',
 'prefs-editing' => 'Tahrirlash',
 'rows' => 'Qatorlar soni:',
@@ -839,7 +826,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'localtime' => 'Mahalliy vaqt:',
 'timezoneuseserverdefault' => 'Server moslamalaridan foydalanish ($1)',
 'timezoneuseoffset' => "Boshqa (siljishni ko'rsating)",
-'timezoneoffset' => 'Siljish¹:',
 'servertime' => 'Server vaqti:',
 'guesstimezone' => "Brauzerdan to'ldirish",
 'timezoneregion-africa' => 'Afrika',
@@ -1655,10 +1641,6 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'exif-iimcategory-spo' => 'Sport',
 'exif-iimcategory-wea' => 'Ob-havo',
 
-# External editor support
-'edit-externally' => 'Bu faylni tashqi dasturiy ilovalar yordamida tahrirla',
-'edit-externally-help' => "(Batafsil ma'lumotlar uchun [https://www.mediawiki.org/wiki/Manual:External_editors bu yerga] qarang)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Barcha',
 'namespacesall' => 'Barchasi',
index adf3bca..7964401 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' ),
@@ -315,7 +315,6 @@ $messages = array(
 'qbedit' => 'Canbia',
 'qbpageoptions' => 'Opsion pajina',
 'qbmyoptions' => 'Łe me pajine',
-'qbspecialpages' => 'Pagine speciali',
 'faq' => 'Domande frequenti',
 'faqpage' => 'Project:Domande frequenti',
 
@@ -431,8 +430,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}}',
@@ -527,9 +524,6 @@ No xe stà dà nisuna spiegasion in merito.',
 'perfcachedts' => "Sti dati cua xe stà ajornadi l'ultima volta el $1. Inte ła cache xe disponibiłe al masimo {{PLURAL:$4|on rexultado|$4 rexultadi}}.",
 'querypage-no-updates' => "L'azornamento periodico de sta pagina el xe sospeso. 
 I dati che ghè qua drento no i xe azornà.",
-'wrong_wfQuery_params' => 'Erore ne i parametri invià a ła funsion wfQuery()<br />
-Funsion: $1<br />
-Query: $2',
 'viewsource' => 'Varda el testo',
 'viewsource-title' => 'Varda el testo de $1',
 'actionthrottled' => 'Asion ritardà',
@@ -1171,12 +1165,8 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => 'Risultati de la riserca',
 'searchresults-title' => 'Risultati de la riserca de "$1"',
-'searchresulttext' => 'Par informassion su la riserca drento de {{SITENAME}}, varda [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Te ghè sercà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tute le pagine che taca con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tute le pagine che ponta a "$1"]])',
-'searchsubtitleinvalid' => "Riserca de '''$1'''",
 'toomanymatches' => 'Xe stà catà massa corispondense, par piaser próa a modificar la richiesta.',
 'titlematches' => 'In tei titoli de le pagine',
-'notitlematches' => 'Nei titoli de pagina no gò catà gnente',
 'textmatches' => 'Corispondense nel testo de le pagine',
 'notextmatches' => 'Nei testi de le pagine no gò catà gnente',
 'prevn' => '{{PLURAL:quela prima|le $1 prima}} de ste qua',
@@ -1185,10 +1175,8 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => '{{PLURAL:$1|el risultato dopo|i $1 risultati dopo}}',
 'shown-title' => 'Fà védar {{PLURAL:$1|un risultato|$1 risultati}} par pagina',
 'viewprevnext' => 'Varda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzion de riserca',
 'searchmenu-exists' => 'Su sto sito ghe xe na pagina che se ciama "[[:$1]]"',
 'searchmenu-new' => "'''Crèa la pagina \"[[:\$1]]\" su sta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Varda tute le pagine che taca co ste létere]]',
 'searchprofile-articles' => 'Pagine de contenuti',
 'searchprofile-project' => 'Pagine de progeto e de ajuto',
 'searchprofile-images' => 'File',
@@ -1216,14 +1204,10 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'showingresults' => "Qua de soto vien mostrà al massimo {{PLURAL:$1|'''1''' risultato|'''$1''' risultati}} a partir dal nùmaro '''$2'''.",
 'showingresultsnum' => "Qua soto ghe xe {{PLURAL:$3|'''1''' risultato|'''$3''' risultati}} a partir da #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultato '''$1''' de '''$3'''|Risultati '''$1 - $2''' de '''$3'''}} par '''$4'''",
-'nonefound' => "'''Ocio''': par default se serca solo in certi namespace. 
-Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i namespace (conpresi pagine de discussion, modèi, ecc.) o se nò métighe davanti el namespace che te voli.",
 'search-nonefound' => 'La riserca no la gà catà gnente.',
-'powersearch' => 'Riserca',
 'powersearch-legend' => 'Riserca avansà',
 'powersearch-ns' => 'Serca ne i namespace:',
 'powersearch-redir' => 'Elenca redirect',
-'powersearch-field' => 'Serca',
 'powersearch-togglelabel' => 'Selessiona:',
 'powersearch-toggleall' => 'Tuti quanti',
 'powersearch-togglenone' => 'Nissun',
@@ -1235,8 +1219,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',
-'prefsnologintext' => 'Te ghè da aver eseguìo el <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} login]</span> par poder personalixare le to preferense.',
 'changepassword' => 'Cànbia ła password',
 'prefs-skin' => 'Aspeto grafico',
 'skin-preview' => 'Anteprima',
@@ -1260,7 +1242,6 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'prefs-email' => 'Preferense e-mail',
 'prefs-rendering' => 'Aspeto grafico',
 'saveprefs' => 'Salva le preferense',
-'resetprefs' => 'Reinposta le preferense',
 'restoreprefs' => 'Ripristina le inpostassion predefinìe',
 'prefs-editing' => 'Canbiamento',
 'rows' => 'Righe:',
@@ -1278,7 +1259,6 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'localtime' => 'Ora locale:',
 'timezoneuseserverdefault' => 'Dopara el orario predefinìo de wiki ($1)',
 'timezoneuseoffset' => 'Altro (spesifica difarensa)',
-'timezoneoffset' => 'Difarensa¹:',
 'servertime' => 'Ora del server:',
 'guesstimezone' => "Dòpara l'ora del to browser",
 'timezoneregion-africa' => 'Africa',
@@ -1513,6 +1493,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',
@@ -1990,10 +1971,8 @@ Le righe <del>sbarà</del> le xe xà stà sistemà.',
 'protectedpages' => 'Pagine protete',
 'protectedpages-indef' => 'Solo le protezion infinìe',
 'protectedpages-cascade' => 'Solo protezion ricorsive',
-'protectedpagestext' => 'De seguito vien presentà un elenco de pagine protete, che no se pol modificar o spostar',
 'protectedpagesempty' => 'Al momento no ghe xe pagine protete',
 'protectedtitles' => 'Titoli proteti',
-'protectedtitlestext' => 'No se pol crear pagine coi titoli elencà de seguito',
 'protectedtitlesempty' => 'Al momento no ghe xe titoli proteti coi parametri specificà.',
 'listusers' => 'Elenco dei utenti',
 'listusers-editsonly' => 'Fà védar sol che i utenti che gà fato dei contributi',
@@ -3468,10 +3447,6 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Priorità definie dal utente ($1)',
 
-# External editor support
-'edit-externally' => 'Modifega sto file usando on programa foresto',
-'edit-externally-help' => '(Par saverghene de pì consultare łe [https://www.mediawiki.org/wiki/Manual:External_editors istrusion])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tute',
 'namespacesall' => 'Tuti',
@@ -3687,8 +3662,7 @@ Insieme co sto programa te dovaressi 'ver ricevùo na copia de la Licensa Public
 
 # Special:SpecialPages
 'specialpages' => 'Pagine speciali',
-'specialpages-note' => '----
-* Pàjine speciałi normałi.
+'specialpages-note' => '* Pàjine speciałi normałi.
 * <span class="mw-specialpagerestricted">Pàjine speciałi a aceso limità.</span>',
 'specialpages-group-maintenance' => 'Resoconti de manutenzion',
 'specialpages-group-other' => 'Altre pagine speciali',
@@ -3882,4 +3856,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 98ad9f3..5c42133 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',
@@ -230,7 +242,6 @@ $messages = array(
 'qbedit' => 'Redaktiruida',
 'qbpageoptions' => 'Necen lehtpolen järgendused',
 'qbmyoptions' => 'Minun järgendused',
-'qbspecialpages' => 'Specialižed lehtpoled',
 'faq' => 'PPK',
 'faqpage' => 'Project:PPK',
 
@@ -251,6 +262,7 @@ $messages = array(
 'namespaces' => 'Nimiavaruded',
 'variants' => 'Variantad',
 
+'navigation-heading' => 'Navigacii',
 'errorpagetitle' => 'Petuz',
 'returnto' => 'Pörttas lehtpolele $1.',
 'tagline' => '{{SITENAME}}',
@@ -288,7 +300,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 +358,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 +409,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',
@@ -434,9 +445,6 @@ Siš voib olda simvoloid, kudambid ei sa panda nimihe.',
 'perfcachedts' => "Nened andmused oma kešespäi, ned oma uzištadud jäl'gmäižel kerdal siloi: $1. Kešas ei ole enambad mi {{PLURAL:$1|rezul'tat|$1 rezul'tatad}}.",
 'querypage-no-updates' => "Necen lehtpolen udištand ei ole nügüd' kävutamas.
 Anttud naku andmused ei udištugoi.",
-'wrong_wfQuery_params' => 'Värad parametrad necen funkcijan täht: wfQuery()<br />
-Funkcii: $1<br />
-Ecind: $2',
 'viewsource' => 'Kc. purde',
 'viewsource-title' => 'Ozutada $1-lehtpolen lähtmižtekst',
 'actionthrottled' => 'Tegendan piguz om kaidetud',
@@ -463,10 +471,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 +501,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 +598,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',
@@ -900,13 +925,8 @@ Tö ei voigoi kävutada sidä.',
 # Search results
 'searchresults' => "Ectä rezul'tatad",
 'searchresults-title' => 'Ecindan rezul\'tatad sanale "$1"',
-'searchresulttext' => 'Ližainformacijad ecmižes sab sada [[{{MediaWiki:Helppage}}|Abu]]-lehtpolespäi.',
-'searchsubtitle' => 'Tö ecit \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kaik lehtpoled, kudambad augotase nimespäi "$1"]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|Kaik lehtpoled, kudambad kosketadas necidä nimed]])',
-'searchsubtitleinvalid' => "Tö ecit '''$1'''",
 'toomanymatches' => "Om löutud äjahko rezul'tatoid, olgat hüväd, eckat toine sana",
 'titlematches' => 'Löutud lehtpoliden nimed',
-'notitlematches' => 'Ei ole ningomid lehtpoliden nimid',
 'textmatches' => 'Löutud tekstanpalad lehtpolil',
 'notextmatches' => 'Lehtpoliden tekstoiš ei ole ectud sanad',
 'prevn' => 'vene (ru){{PLURAL:$1|edeline $1|edeližed $1}}',
@@ -915,10 +935,8 @@ Tö ei voigoi kävutada sidä.',
 'nextn-title' => "$1 {{PLURAL:$1|jäl'ghine rezul'tat|jäl'ghišt rezul'tatad}}",
 'shown-title' => "Ozutada $1 {{PLURAL:$1|rezul'tat|rezul'tatad}} lehtpoleks",
 'viewprevnext' => 'Kacta ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ecindan järgendused',
 'searchmenu-exists' => "'''Neciš Wikiš om jo lehtpol' ningoižen nimenke: \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Säta lehtpol' \"[[:\$1]]\" neciš Wikiš!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ozutada kaik lehtpoled necen prefiksanke]]',
 'searchprofile-articles' => 'Südäimištlehtpoled',
 'searchprofile-project' => 'Abun da projektoiden lehtpoled',
 'searchprofile-images' => "Mul'timedii",
@@ -946,14 +964,10 @@ Tö ei voigoi kävutada sidä.',
 'showingresults' => "Alemba ozutadas {{PLURAL:$1|'''1''' rezul'tat|'''$1''' rezul'tatad}} nomeraspäi #'''$2''' augotaden.",
 'showingresultsnum' => "Alemba ozutadas {{PLURAL:$3|'''1''' rezul'tat|'''$3''' rezul'tatad}} nomeraspäi '''$2''' augotaden.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-š rezul'tatoišpäi|Rezul'tatad '''$1–$2''' '''$3'''-špäi}} '''$4'''-n täht",
-'nonefound' => "'''Note''': Ectäs tobjimalaz kaidetud nimiavaruzišpäi.
-Kävutagat prefiks ''all:'', miše ectä kaikes südäimištospäi (lodulehtpolid, šablonoid i m. e. mülütaden), vai kävutagat tarbhaine nimiavaruz.",
 'search-nonefound' => "Ecmižhe ei löudnus rezul'tatoid.",
-'powersearch' => 'Levitoittud ecind',
 'powersearch-legend' => 'Levitoittud ecind',
 'powersearch-ns' => 'Ecind nimiavaruziš:',
 'powersearch-redir' => 'Ozutada oigendused',
-'powersearch-field' => 'Eci',
 'powersearch-togglelabel' => 'Kodvda:',
 'powersearch-toggleall' => 'Kaik',
 'powersearch-togglenone' => 'Ei ole nimidä',
@@ -966,8 +980,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.',
-'prefsnologintext' => 'Teile pidab <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjutadas sistemha]</span>, miše toižetada järgendusid.',
 'changepassword' => 'Peitsanan toižetuz',
 'prefs-skin' => 'Irdnägu',
 'skin-preview' => 'Ezikaclend',
@@ -990,7 +1002,6 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'prefs-email' => 'E-počtan opcijad',
 'prefs-rendering' => 'Nägu',
 'saveprefs' => 'Kirjutada',
-'resetprefs' => 'Čuta kaičematomad toižetused',
 'restoreprefs' => 'Endištada kaik augotižjärgendused',
 'prefs-editing' => 'Redaktiruind',
 'rows' => 'Rivid:',
@@ -1008,7 +1019,6 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'localtime' => 'Tahonaig:',
 'timezoneuseserverdefault' => 'Kävutada serveran järgendused ($1)',
 'timezoneuseoffset' => 'Toine (kirjutagat sirdandmär)',
-'timezoneoffset' => 'Aigan sirdandmär¹:',
 'servertime' => 'Serveran aig:',
 'guesstimezone' => 'Täutta kaclimespäi',
 'timezoneregion-africa' => 'Afrik',
@@ -1048,7 +1058,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',
@@ -1063,6 +1073,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',
@@ -1070,6 +1081,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
@@ -1220,6 +1232,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.',
@@ -1228,6 +1241,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',
@@ -1413,6 +1427,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',
@@ -1492,6 +1507,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.',
@@ -1569,10 +1587,8 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'protectedpages' => 'Kaitud lehtpoled',
 'protectedpages-indef' => 'Vaiše strokutomad kaičendad',
 'protectedpages-cascade' => 'Vaiše kaskadkaičendad',
-'protectedpagestext' => 'Nened lehtpoled oma kaitud redaktiruindaspäi da sirdandaspäi',
 'protectedpagesempty' => "Nügüd' ei ole neniden parametriden mödhe kaitud lehtpolid.",
 'protectedtitles' => 'Kaitud lehtpoliden nimed',
-'protectedtitlestext' => 'Nenid lehtpoliden nimid ei sa kävutada.',
 'protectedtitlesempty' => "Nügüd' ei ole neniden parametriden mödhe kaitud lehtpoliden nimid.",
 'listusers' => 'Kävutajiden nimikirjutez',
 'listusers-editsonly' => 'Ozutada vaiše kävutajid, kudambil om redakcijoid',
@@ -1936,7 +1952,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’:',
@@ -2339,6 +2355,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",
@@ -2381,7 +2399,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',
@@ -2739,6 +2757,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',
@@ -2760,10 +2781,6 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-urgency-low' => 'Madal ($1)',
 'exif-urgency-high' => 'Korged ($1)',
 
-# External editor support
-'edit-externally' => 'Redaktiruida nece fail irdprogrammal',
-'edit-externally-help' => '(Kc. [https://www.mediawiki.org/wiki/Manual:External_editors seižutamižinstrukcijoid])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kaik',
 'namespacesall' => 'kaik',
@@ -2819,6 +2836,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' →",
@@ -2934,8 +2954,7 @@ Kävutagat normaline ezikacund.',
 
 # Special:SpecialPages
 'specialpages' => 'Specialižed lehtpoled',
-'specialpages-note' => '----
-* Järgeližed specialižed lehtpoled.
+'specialpages-note' => '* Järgeližed specialižed lehtpoled.
 * <span class="mw-specialpagerestricted">Kaitud specialižed lehtpoled.</span>',
 'specialpages-group-maintenance' => 'Tehnižen holitandan satusenladindad',
 'specialpages-group-other' => 'Toižed specialižed lehtpoled',
@@ -2973,7 +2992,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}}',
 
@@ -3006,6 +3027,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",
@@ -3048,4 +3070,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 1bf601a..80cfa0f 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(
@@ -482,7 +494,6 @@ $messages = array(
 'qbedit' => 'Sửa đổi',
 'qbpageoptions' => 'Trang này',
 'qbmyoptions' => 'Trang cá nhân',
-'qbspecialpages' => 'Trang đặc biệt',
 'faq' => 'Câu hỏi thường gặp',
 'faqpage' => 'Project:Các câu hỏi thường gặp',
 
@@ -599,12 +610,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',
@@ -700,9 +709,6 @@ Không có lý do nào được đưa ra.',
 'perfcached' => 'Dữ liệu sau được lấy từ bộ nhớ đệm và có thể đã lỗi thời. Tối đa có sẵn {{PLURAL:$1|một kết quả|$1 kết quả}} trong bộ nhớ đệm.',
 'perfcachedts' => 'Dữ liệu dưới đây được đưa vào vùng nhớ đệm và được cập nhật lần cuối lúc $1. Tối đa có sẵn {{PLURAL:$4|một kết quả|$4 kết quả}} trong vùng nhớ đệm.',
 'querypage-no-updates' => 'Việc cập nhật trang này hiện đã bị tắt. Dữ liệu ở đây có thể bị lỗi thời.',
-'wrong_wfQuery_params' => 'Tham số sai trong wfQuery()<br />
-Hàm: $1<br />
-Truy vấn: $2',
 'viewsource' => 'Xem mã nguồn',
 'viewsource-title' => 'Xem mã nguồn của $1',
 'actionthrottled' => 'Thao tác bị giới hạn',
@@ -730,7 +736,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 +833,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 +896,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.',
@@ -1376,12 +1383,8 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Kết quả tìm kiếm',
 'searchresults-title' => 'Kết quả tìm kiếm “$1”',
-'searchresulttext' => 'Để biết thêm chi tiết về tìm kiếm tại {{SITENAME}}, xem [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Bạn đã tìm '''[[:$1]]''' ([[Special:Prefixindex/$1|tất cả các trang bắt đầu bằng “$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tất cả các trang liên kết đến “$1”]])",
-'searchsubtitleinvalid' => "Tìm '''$1'''",
 'toomanymatches' => 'Có quá nhiều kết quả được trả về, xin hãy thử câu tìm kiếm khác',
 'titlematches' => 'Đề mục tương tự',
-'notitlematches' => 'Không có tên trang nào có nội dung tương tự',
 'textmatches' => 'Câu chữ tương tự',
 'notextmatches' => 'Không tìm thấy nội dung trang',
 'prevn' => '{{PLURAL:$1|$1}} mục trước',
@@ -1390,10 +1393,8 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'nextn-title' => '$1 {{PLURAL:$1|kết quả|kết quả}} sau',
 'shown-title' => 'Hiển thị $1 {{PLURAL:$1|kết quả|kết quả}} mỗi trang',
 'viewprevnext' => 'Xem ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tùy chọn tìm kiếm',
 'searchmenu-exists' => "* Trang '''[[$1]]'''",
 'searchmenu-new' => "'''Tạo trang “[[:$1]]” trên wiki này!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Duyệt các trang với tiền tố này]]',
 'searchprofile-articles' => 'Trang nội dung',
 'searchprofile-project' => 'Trang trợ giúp và trang dự án',
 'searchprofile-images' => 'Đa phương tiện',
@@ -1421,13 +1422,10 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'showingresults' => "Dưới đây là {{PLURAL:$1|'''1'''|'''$1'''}} kết quả bắt đầu từ #'''$2'''.",
 'showingresultsnum' => "Dưới đây là {{PLURAL:$3|'''1'''|'''$3'''}} kết quả bắt đầu từ #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Kết quả thứ '''$1''' trong tổng số '''$3''' kết quả|Kết quả từ '''$1 - $2''' trong tổng số '''$3''' kết quả}} cho '''$4'''",
-'nonefound' => "'''Chú ý''': Theo mặc định chỉ tìm kiếm một số không gian tên. Hãy thử bắt đầu từ khóa bằng ''all:'' để tìm mọi nội dung (kể cả trang thảo luận, bản mẫu, v.v.), hoặc bắt đầu bằng không gian tên mong muốn (ví dụ ''Thảo luận:'', ''Bản mẫu:'', ''Thể loại:''…).",
 'search-nonefound' => 'Không có kết quả nào khớp với câu truy vấn.',
-'powersearch' => 'Tìm kiếm nâng cao',
 'powersearch-legend' => 'Tìm kiếm nâng cao',
 'powersearch-ns' => 'Tìm trong không gian tên:',
 'powersearch-redir' => 'Liệt kê cả trang đổi hướng',
-'powersearch-field' => 'Tìm',
 'powersearch-togglelabel' => 'Chọn:',
 'powersearch-toggleall' => 'Tất cả',
 'powersearch-togglenone' => 'Không',
@@ -1439,8 +1437,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',
-'prefsnologintext' => 'Bạn phải <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} đăng nhập]</span> để thiết lập tùy chọn cá nhân.',
+'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',
@@ -1464,7 +1461,6 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-email' => 'Tùy chọn thư điện tử',
 'prefs-rendering' => 'Bề ngoài',
 'saveprefs' => 'Lưu tùy chọn',
-'resetprefs' => 'Mặc định lại lựa chọn',
 'restoreprefs' => 'Mặc định lại toàn bộ tùy chọn (trong tất cả các phần)',
 'prefs-editing' => 'Sửa đổi',
 'rows' => 'Số hàng:',
@@ -1485,7 +1481,6 @@ Bất cứ ai biết nó sẽ có thể để đọc danh sách theo dõi của
 'localtime' => 'Giờ hiện tại:',
 'timezoneuseserverdefault' => 'Sử dụng giờ mặc định của wiki ($1)',
 'timezoneuseoffset' => 'Khác (cần ghi số giờ chênh lệch)',
-'timezoneoffset' => 'Chênh giờ¹:',
 'servertime' => 'Giờ máy chủ:',
 'guesstimezone' => 'Dùng giờ của trình duyệt',
 'timezoneregion-africa' => 'Châu Phi',
@@ -1740,6 +1735,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.',
@@ -2242,10 +2240,8 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 'protectedpages' => 'Trang bị khóa',
 'protectedpages-indef' => 'Chỉ hiển thị khóa vô hạn',
 'protectedpages-cascade' => 'Chỉ hiển thị khóa theo tầng',
-'protectedpagestext' => 'Các trang này bị khóa không cho sửa đổi hay di chuyển',
 'protectedpagesempty' => 'Hiện không có trang nào bị khóa với các thông số này.',
 'protectedtitles' => 'Tên trang bị khóa',
-'protectedtitlestext' => 'Các tựa trang sau đây đã bị khóa không cho tạo mới',
 'protectedtitlesempty' => 'Không có tựa trang nào bị khóa với các thông số như vậy.',
 'listusers' => 'Danh sách thành viên',
 'listusers-editsonly' => 'Chỉ hiện thành viên có tham gia sửa đổi',
@@ -2467,9 +2463,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:
@@ -3295,7 +3291,7 @@ Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
 'svg-long-desc' => 'tập tin SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
 'svg-long-desc-animated' => 'tập tin hình động SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
 'svg-long-error' => 'Tập tin SVG có lỗi: $1',
-'show-big-image' => 'Độ phân giải tối đa',
+'show-big-image' => 'Tập tin gốc',
 'show-big-image-preview' => 'Kích thước của hình xem trước: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Độ phân giải|Các độ phân giải}} khác: $1.',
 'show-big-image-size' => '$1×$2 điểm ảnh',
@@ -3810,10 +3806,6 @@ Những thông tin khác mặc định sẽ được ẩn đi.
 'exif-urgency-high' => 'Cao ($1)',
 'exif-urgency-other' => 'Ưu tiên người dùng định nghĩa ($1)',
 
-# External editor support
-'edit-externally' => 'Sửa bằng phần mềm bên ngoài',
-'edit-externally-help' => '(Xem [https://www.mediawiki.org/wiki/Manual:External_editors hướng dẫn cài đặt bằng tiếng Anh] để biết thêm thông tin)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tất cả',
 'namespacesall' => 'tất cả',
@@ -4105,10 +4097,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' => '----
-* 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>',
+'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>',
 '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',
@@ -4321,4 +4312,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 0019952..823718a 100644 (file)
@@ -173,7 +173,6 @@ $messages = array(
 'qbedit' => 'Ändrn',
 'qbpageoptions' => 'Sajdn-âjschdelungn',
 'qbmyoptions' => 'Mâj sajdn',
-'qbspecialpages' => 'Sondâr-sajdn',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -278,8 +277,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',
@@ -483,10 +480,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 # Search results
 'searchresults' => 'Bam suchng gfundne sachng',
 'searchresults-title' => 'Gfundn bam suchng nach „$1“',
-'searchresulttext' => 'Wenn´sd wisn wilsd, wii genau mä´ alles af {{SITENAME}} suchng ghôô, dan gug af dâr [[{{MediaWiki:Helppage}}|Hilfssajdn]] nôôch.',
-'searchsubtitle' => 'Gsuchd wä´n soll nach: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aln sajdn, dii wo mid „$1“ ôôfangn]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aln sajdn, dii wo af „$1“ fârwajsn]])',
-'searchsubtitleinvalid' => 'Daj Suchanfraache: „$1“.',
-'notitlematches' => 'Gha sajdn gfundn, däärn nôômâ basn dääd',
 'notextmatches' => 'Närchnds gfundn.',
 'prevn' => '{{PLURAL:$1|foorichâr|fooriche $1}}',
 'nextn' => '{{PLURAL:$1|nägschdâr|nägschde $1}}',
@@ -523,13 +516,10 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'showingresults' => "Hiâr {{PLURAL:$1|is '''1'''|sin '''$1'''}} Ärgääbnis , ôôgfangn baj numâr '''$2.'''",
 'showingresultsnum' => "Hiâr {{PLURAL:$3|is '''1''' |sin '''$3''' }} Ärgääbnis, oogfangn baj numâr '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ärgääbnis '''$1''' don '''$3'''|Ärgääbnis '''$1–$2''' fon '''$3'''}} fir '''$4'''",
-'nonefound' => "'''Oobachd:''' Oone wajdas wäd bloos in ajniche Nôômârajm gsuuchd. Wen'd iwarôôl (aa in disghusjoon'n, foorlaachn usw.) suchng wilsd, musd ''all:'' foorschrajm, oda aa den nôôma (midâm dobl-bhungd) fo genau dem nôômaraum, fon dem de waasd, dass´es nur in däm drin saj ko.",
 'search-nonefound' => 'Dsu dajna suuchfrôôchn is nigs gfundn wôrn.',
-'powersearch' => 'Suuche mid mäa oogaabm',
 'powersearch-legend' => 'Suuche mid mäa oogaam',
 'powersearch-ns' => 'In dena Nôômâsrajm suchng:',
 'powersearch-redir' => 'Wajdälajdunga oodsajng',
-'powersearch-field' => 'Suuch nôôch:',
 'powersearch-togglelabel' => 'Wääl aus:',
 'powersearch-toggleall' => 'Ale dsam',
 'powersearch-togglenone' => 'Gôôr ghane',
@@ -540,8 +530,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',
-'prefsnologintext' => 'Ärschd wen\'d <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} ôôgmäld]</span> bisch, ghôôsch dâj âjschdelungn ändârn.',
 'changepassword' => "S'bhaswôrd ändârn",
 'prefs-skin' => 'Schaale',
 'skin-preview' => 'Môôl schbign',
@@ -560,7 +548,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'prefs-email' => 'Iimejl-ajschdelungn',
 'prefs-rendering' => 'Ufbuds',
 'saveprefs' => 'Aâjschdelungn schbajchrn',
-'resetprefs' => 'Nigs iwârneemn',
 'restoreprefs' => 'Uf dii uur-ajschdelungn dsrig',
 'prefs-editing' => 'Bearbajdungs-fenschdâr',
 'rows' => 'Soofiil dsajln:',
@@ -573,7 +560,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'localtime' => 'Hiisiche Uurdsajd:',
 'timezoneuseserverdefault' => 'Dsajd-dsoon fom server neem',
 'timezoneuseoffset' => 'Andre dsajd-dsoon (fârschiiwung undn ajndraachn)',
-'timezoneoffset' => 'Fârschiiwung¹:',
 'servertime' => 'Uurdsaj ufm Server',
 'guesstimezone' => 'Fom brausa iwârneem',
 'timezoneregion-africa' => 'Afrighaa',
@@ -1008,10 +994,6 @@ Bloos  dsajln, dii mi´m dsajchn * ôôfanga, wärn berigsichdichd. Un dä ärsc
 'exif-imagewidth' => 'brajdn',
 'exif-imagelength' => 'Heen',
 
-# External editor support
-'edit-externally' => 'Dii dadaj mid an ägsdärna brogram ändârn',
-'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [https://www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ale',
 'namespacesall' => 'ale',
index 019ee08..815402e 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' ),
@@ -263,7 +262,6 @@ $messages = array(
 'qbedit' => 'Redakön',
 'qbpageoptions' => 'Pad at',
 'qbmyoptions' => 'Pads obik',
-'qbspecialpages' => 'Pads patik',
 'faq' => 'Säks suvo pasäköls',
 'faqpage' => 'Project:FAQ',
 
@@ -369,8 +367,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}}',
@@ -456,9 +452,6 @@ Ba ya pemoükon fa geban votik.',
 'perfcached' => 'Nüns sököl ekömons se el caché e ba no binons anuik. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Nüns sököl kömons se mem nelaidüpik e päbevobons lätiküno ün: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Atimükam pada at penemögükon. Nünods isik no poflifedükons suno.',
-'wrong_wfQuery_params' => 'Paramets neverätik lü wfQuery()<br />
-Dun: $1<br />
-Beg: $2',
 'viewsource' => 'Logön fonäti',
 'viewsource-title' => 'Logön fonäti pada: "$1"',
 'actionthrottled' => 'Dun pemiedükon',
@@ -944,12 +937,8 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 # Search results
 'searchresults' => 'Sukaseks',
 'searchresults-title' => 'Sukaseks pro: "$1"',
-'searchresulttext' => 'Ad lärnön mödikumosi dö suks in {{SITENAME}}, logolös [[{{MediaWiki:Helppage}}|Suks in {{SITENAME}}]].',
-'searchsubtitle' => 'Esukol padi: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pads me "$1" primöls valiks]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pads lü "$1" yumöls valiks]])',
-'searchsubtitleinvalid' => "Esukol padi: '''$1'''",
 'toomanymatches' => 'Pads tu mödiks labü vöd(s) pesuköl petuvons. Sukolös vödi(s) votik.',
 'titlematches' => 'Leigon ko padatiäd',
-'notitlematches' => 'Leigon ko padatiäds nonik',
 'textmatches' => 'Leigon ko dil padavödema',
 'notextmatches' => 'Leigon ko nos in padavödem',
 'prevn' => 'büik {{PLURAL:$1|$1}}',
@@ -958,10 +947,8 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'nextn-title' => '{{PLURAL:$1|Sukasek|Sukaseks}} fovik $1',
 'shown-title' => 'Jonön {{PLURAL:$1|sukaseki|sukasekis}} $1 a pad',
 'viewprevnext' => 'Logön padis ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Sukaparamets',
 'searchmenu-exists' => "'''Dabinon pad labü nem: \"[[:\$1]]\" su vük at'''",
 'searchmenu-new' => "'''Jafolös padi: \"[[:\$1]]\" su vük at!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Logön padis labü foyümot at]]',
 'searchprofile-articles' => 'Ninädapads',
 'searchprofile-project' => 'Yufa e Proyegapads',
 'searchprofile-images' => 'Mödamedäd',
@@ -989,13 +976,10 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'showingresults' => "Pajonons dono jü {{PLURAL:$1|sukasek '''1'''|sukaseks '''$1'''}}, primölo me nüm #'''$2'''.",
 'showingresultsnum' => "Dono pajonons {{PLURAL:$3:|sek '''1'''|seks '''$3'''}}, primölo me nüm: '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Sek: '''$1''' se '''$3'''|Seks: '''$1 - $2''' se '''$3'''}} pro '''$4'''",
-'nonefound' => "'''Noet''': Suks jenons nomiko in nemaspads te aniks. Ad demön nemaspadis valik (keninükamü bespikapads, samafomots e r.), gebolös foyümoti: ''all:'', u nemaspadi pevilöl as foyümot.",
 'search-nonefound' => 'Sukaseks nonik dabinons.',
-'powersearch' => 'Suk',
 'powersearch-legend' => 'Suk komplitikum',
 'powersearch-ns' => 'Sukön in nemaspads:',
 'powersearch-redir' => 'Lisedön lüodükömis',
-'powersearch-field' => 'Sukön',
 'powersearch-togglelabel' => 'Välön:',
 'powersearch-toggleall' => 'Valik',
 'powersearch-togglenone' => 'Nonik',
@@ -1006,8 +990,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',
-'prefsnologintext' => 'Nedol <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nunädön oli]</span> büä kanol votükön gebanabuükamis.',
 'changepassword' => 'Votükön letavödi',
 'prefs-skin' => 'Fomät',
 'skin-preview' => 'Büologed',
@@ -1025,7 +1007,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'prefs-resetpass' => 'Votükön letavödi',
 'prefs-rendering' => 'Selogam',
 'saveprefs' => 'Dakipolöd',
-'resetprefs' => 'Buükams rigik',
 'restoreprefs' => 'Geikön lü paramets kösömik valik',
 'prefs-editing' => 'Redakam',
 'rows' => 'Kedets:',
@@ -1041,7 +1022,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'localtime' => 'Tim topik:',
 'timezoneuseserverdefault' => 'Gebön parametemi kösömik vüka ($1)',
 'timezoneuseoffset' => 'Votik (nunolös difi)',
-'timezoneoffset' => 'Näedot¹:',
 'servertime' => 'Tim dünanünöma:',
 'guesstimezone' => 'Benüpenolös yufü befüresodatävöm',
 'timezoneregion-africa' => 'Frikop',
@@ -1239,6 +1219,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',
@@ -1561,10 +1542,8 @@ Primanünods: ninädasot/donasot, a.s. <code>image/jpeg</code>.',
 'protectedpages' => 'Pads pejelöl',
 'protectedpages-indef' => 'Te jels nefümik',
 'protectedpages-cascade' => 'Te vatafalajels',
-'protectedpagestext' => 'Pads fovik pejelons e no kanons patöpätükön u paredakön',
 'protectedpagesempty' => 'Pads nonik pejelons',
 'protectedtitles' => 'Tiäds pejelöl',
-'protectedtitlestext' => 'Tiäds sököl no dalons pajafön:',
 'protectedtitlesempty' => 'Tiäds nonik pejelons me paramets at.',
 'listusers' => 'Gebanalised',
 'listusers-editsonly' => 'Jonön te gebanis keblünöl',
@@ -2693,10 +2672,6 @@ Nünabinets votik poklänedons.
 'exif-iimcategory-spo' => 'Spots',
 'exif-iimcategory-wea' => 'Stom',
 
-# External editor support
-'edit-externally' => 'Votükön ragivi at me nünömaprogram plödik',
-'edit-externally-help' => '(Reidolös eli [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] [in Linglänapük] ad tuvön nünis pluik)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'valikis',
 'namespacesall' => 'valik',
@@ -2844,8 +2819,7 @@ Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
 
 # Special:SpecialPages
 'specialpages' => 'Pads patik',
-'specialpages-note' => '----
-* Pads patik nomik.
+'specialpages-note' => '* Pads patik nomik.
 * <span class="mw-specialpagerestricted">Pads patik pemiedüköl.</span>',
 'specialpages-group-maintenance' => 'Nunods tefü kiped',
 'specialpages-group-other' => 'Pads patik votik',
@@ -2916,4 +2890,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..b1b9d11 100644 (file)
@@ -102,7 +102,6 @@ $messages = array(
 'qbfind' => 'Etsi',
 'qbedit' => 'Muuttaa',
 'qbpageoptions' => 'Kase cülci',
-'qbspecialpages' => 'Osoobenoid cüľľed',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -179,8 +178,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',
@@ -360,10 +357,6 @@ Mõnõd šabloonad eväd lee lizettü.",
 # Search results
 'searchresults' => 'Etsüü tulõmuhsõd',
 'searchresults-title' => 'Etsü tulõmuhsõd ettsüsõnalõõ "$1"',
-'searchresulttext' => 'Lisäsoobšeńńad ettsimizessä on [[{{MediaWiki:Helppage}}|praavilacüľľellä]].',
-'searchsubtitle' => 'Etsizid fraaza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kõikõd cüľľed, kummad alkõa fraazaakaa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõikõd cüľľed näütteväd cüľľelee "$1"]])',
-'searchsubtitleinvalid' => "Ettsizittä: '''$1'''",
-'notitlematches' => 'Eb löütännü miltäiss cülciä sene ettsüsõnaaka',
 'notextmatches' => 'Ettsisõnaa eb löütünnü cüľľee tekstiissä',
 'prevn' => '{{PLURAL:$1|edellinen|$1 entiiss}}',
 'nextn' => '{{PLURAL:$1|$1}} vahtiaava →',
@@ -394,14 +387,10 @@ Mõnõd šabloonad eväd lee lizettü.",
 'searchrelated' => 'sittu',
 'searchall' => 'kõik',
 'showingresultsheader' => "{{PLURAL:$5|Tuloz '''$1''' '''$3'''-ss|Tulohsõd '''$1-$2''' '''$3'''-ss}} «$4» vart",
-'nonefound' => "'''Zametšańńa''': Ettsü etsib anult osiss nimiruumii.
-Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taas juttucüľľeekaa, sablooniikaa, jne.), vai tarvittõga nimiruumi niku prefiksi.",
 'search-nonefound' => 'Cüsümühse mukaizõssi eb õõ mitäid löütettü.',
-'powersearch' => 'Etenennü ettsü',
 'powersearch-legend' => 'Etenennü ettsü',
 'powersearch-ns' => 'Etsi nimiruumõssa:',
 'powersearch-redir' => 'Spiiska mešaitussijõ',
-'powersearch-field' => 'Etsi',
 
 # Preferences page
 'preferences' => 'Koozid',
@@ -673,7 +662,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:',
@@ -896,10 +884,6 @@ Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull fa
 'exif-iimcategory-pol' => 'Politiikka',
 'exif-iimcategory-wea' => 'Ilma',
 
-# External editor support
-'edit-externally' => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
-'edit-externally-help' => '(Kattsoga [https://www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'koko istori',
 'namespacesall' => 'kõik',
index 8f9695f..9066965 100644 (file)
@@ -184,7 +184,6 @@ $messages = array(
 'qbedit' => 'Toimõndaq',
 'qbpageoptions' => 'Leheküle säädmine',
 'qbmyoptions' => 'Mu säädmiseq',
-'qbspecialpages' => 'Tallitusleheküleq',
 'faq' => 'Sagõhõhe küsüdüq küsümiseq',
 'faqpage' => 'Project:KKK',
 
@@ -298,8 +297,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',
@@ -383,9 +380,6 @@ võlssi näüdät kiili- vai wikidevaihõlinõ päälkiri.",
 'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Järgmäne teedüs om puhvõrdõt ja om viimäte muudõt $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Taad lehe teedüst parhilla värskis ei tetäq.',
-'wrong_wfQuery_params' => 'Võlss suurusõq tallitusõlõ wfQuery()<br />
-Tallitus: $1<br />
-Perräküsümine: $2',
 'viewsource' => 'Kaeq lätteteksti',
 'actionthrottled' => 'Tallitusõ kibõhus piirõt',
 'actionthrottledtext' => "Taa tallitusõ mitmit kõrdo tegemine om prahipandjidõ peräst ärq keelet. Olõt taad lühkü ao seen pall'o hulga tennüq. Prooviq veidükese ao peräst vahtsõst.",
@@ -747,11 +741,7 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 # Search results
 'searchresults' => 'Otsmisõ tulõmusõq',
 'searchresults-title' => 'Otsmisõ "$1" tulõmiq',
-'searchresulttext' => 'Lisateedüst otsmisõ kotsilõ kaeq [[{{MediaWiki:Helppage}}|{{SITENAME}} otsmisoppusõst]].',
-'searchsubtitle' => 'Sa otsõt fraasi "[[:$1]]" ([[Special:Prefixindex/$1|kõik kiräkotussõga "$1" päälenakkajaq leheq]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõik leheq, kon om linke artiklilõ "$1"]])',
-'searchsubtitleinvalid' => 'Otsminõ "$1"',
 'titlematches' => "Artiklipäälkir'ost löüt",
-'notitlematches' => "Artiklipäälkir'ost es lövväq",
 'textmatches' => 'Artiklitekstest löüt',
 'notextmatches' => 'Artiklitekstest es lövväq',
 'prevn' => '← {{PLURAL:$1|mineväne|$1 mineväst}}',
@@ -786,15 +776,10 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'showingresults' => "{{PLURAL:$1|'''Üts''' tulõmus|'''$1''' tulõmust}} (tulõmusõst '''$2''' pääle).",
 'showingresultsnum' => "Näüdätäs {{PLURAL:$3|'''1''' tulõmus|'''$3''' tulõmust}} tulõmusõst #'''$2''' pääle.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st vastussõst|Vastusõq '''$1–$2''' '''$3'''-st}} perräküsümisele '''$4'''",
-'nonefound' => "'''Hoiatus''':  Otsitas õnnõ üten jaon nimeruumõn.
-Ku tahat otsiq kõrraga kõigist nimeruumidest (ka arotuskülgi päält, näüdüssist jne) pruugiq
-otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq edejakus tuu nimeruumi nimme.",
 'search-nonefound' => 'Perräküsümisele löüdä-äs vastust.',
-'powersearch' => 'Otsminõ',
 'powersearch-legend' => 'Laendõt otsminõ',
 'powersearch-ns' => 'Otsminõ nimeruumõst:',
 'powersearch-redir' => 'Loeq üles ümbresaatmisõq',
-'powersearch-field' => 'Otsiq',
 'search-external' => 'Väline otsminõ',
 'searchdisabled' => "{{SITENAME}} otsminõ parhillaq ei tüütäq. Niikavva, ku otsminõ jälq tüüle saa, võit pruukiq otsmisõs alanolõvat Google'i otsikasti, a näide teedüs {{SITENAME}} sisust pruugi-i ollaq alasi kõgõ värskimb.",
 
@@ -802,8 +787,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',
-'prefsnologintext' => 'Et säädmiisi tetäq, tulõ sul [[Special:UserLogin|nimega sisse minnäq]].',
 'changepassword' => 'Muudaq salasõnna',
 'prefs-skin' => 'Vällänägemine',
 'skin-preview' => 'Kaeminõ',
@@ -816,7 +799,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 'prefs-watchlist-edits' => 'Perräkaemisnimekirän näüdätävide muutuisi hulk:',
 'prefs-misc' => 'Muuq säädmiseq',
 'saveprefs' => 'Pästäq säädmiseq ärq',
-'resetprefs' => 'Võtaq säädmiseq tagasi',
 'prefs-editing' => 'Toimõnduskasti suurus',
 'rows' => 'Rito',
 'columns' => 'Tulpõ',
@@ -828,7 +810,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 'savedprefs' => 'Su muutmisõq ommaq pästedüq.',
 'timezonelegend' => 'Aovüü',
 'localtime' => 'Paiklik aig',
-'timezoneoffset' => 'Aovaheq',
 'servertime' => 'Serveri aig',
 'guesstimezone' => 'Võtaq aig võrgokaejast',
 'allowemail' => 'Lupaq tõisil pruukjil mullõ e-posti saataq',
@@ -1194,7 +1175,6 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'deadendpages' => 'Leheq, kon olõ-i linke',
 'deadendpagestext' => 'Nail lehil olõ-i linke tõisi viki lehti pääle.',
 'protectedpages' => 'Kaidsõduq leheq',
-'protectedpagestext' => 'Naaq leheq kaidsõtasõq ärq tõistõ paika panõkist ja muutmisõst.',
 'protectedpagesempty' => 'Olõ-i kaidsõtuid lehti.',
 'listusers' => 'Pruukjaq',
 'newpages' => 'Vahtsõq leheküleq',
@@ -2103,10 +2083,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'exif-gpsdirection-t' => 'Peris tsiht',
 'exif-gpsdirection-m' => 'Magnõttsiht',
 
-# External editor support
-'edit-externally' => 'Toimõndaq taad teedüstüt välidse programmiga',
-'edit-externally-help' => '(Lisateedüst loeq [https://www.mediawiki.org/wiki/Manual:External_editors pruukmisoppusõ lehe päält])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => ', terveq aolugu',
 'namespacesall' => 'kõik',
@@ -2207,8 +2183,7 @@ Prooviq harilikku kaehust.',
 
 # Special:SpecialPages
 'specialpages' => 'Tallitusleheküleq',
-'specialpages-note' => '----
-* Hariliguq tallitusleheq.
+'specialpages-note' => '* Hariliguq tallitusleheq.
 * <strong class="mw-specialpagerestricted">Piiredüq tallitusleheq.</strong>',
 'specialpages-group-maintenance' => 'Kõrranpidämisteedüseq',
 'specialpages-group-other' => 'Muuq tallitusleheq',
index bc2295d..d979d9b 100644 (file)
@@ -219,7 +219,6 @@ $messages = array(
 'qbedit' => 'Candjî',
 'qbpageoptions' => 'Cisse pådje ci',
 'qbmyoptions' => 'Mes pådjes',
-'qbspecialpages' => 'Pådjes sipeciåles',
 
 # Vector skin
 'vector-action-addsection' => 'Radjouter on sudjet',
@@ -318,8 +317,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î',
@@ -392,9 +389,6 @@ Adon dijhoz l' a on [[Special:ListUsers/sysop|manaedjeu]], sins rovyî d' mete l
 'badtitletext' => "Li tite del pådje dimandêye n' esteut nén valide, il estet vude, oudonbén c' esteut on cron loyén eterlingaedje ou eterwiki. Ça s' pout k' il åye onk ou sacwants caracteres ki n' polèt nén esse eployîs dins les tites.",
 'perfcached' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, et ça s' pout ki ça n' soeye nén ttafwaitmint a djoû. Li muchete a-st on macsimom {{PLURAL:$1|d' on rzultat|di $1 rizultats}}.",
 'perfcachedts' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, ey elle ont stî metowes a djoû pol dierin côp li $1. Li muchete a-st on macsimom {{PLURAL:$4|d' on rzultat|di $4 rizultats}}.",
-'wrong_wfQuery_params' => 'Parametes incoreks po wfQuery()<br />
-Fonccion: $1<br />
-Cweraedje: $2',
 'viewsource' => 'Vey côde sourdant',
 'viewsource-title' => 'Côde sourdant di «$1»',
 'viewsourcetext' => "Loukîz li contnou d' l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis:",
@@ -787,11 +781,7 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 # Search results
 'searchresults' => 'Rizultats do cweraedje',
 'searchresults-title' => 'Rizultats des rcwerances po « $1 »',
-'searchresulttext' => 'Po pus di racsegnes sol manire di fé des cweraedjes so {{SITENAME}}, loukîz [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Vos avoz cwerou après «'''[[:$1]]'''» ([[Special:Prefixindex/$1|totes les pådjes ki cmincèt avou «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pådjes ki loynut viè «$1»]])",
-'searchsubtitleinvalid' => 'Pol cweraedje «$1»',
 'titlematches' => 'Årtikes avou on tite ki corespond',
-'notitlematches' => 'Nol årtike avou on tite ki corespond',
 'textmatches' => 'Årtikes avou do tecse ki corespond',
 'notextmatches' => 'Nol årtike avou do tecse ki corespond',
 'prevn' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
@@ -800,7 +790,6 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'nextn-title' => '{{PLURAL:$1|rizultat shuvant|$1 rizultats shuvants}}',
 'shown-title' => 'Mostrer $1 rizultat{{PLURAL:$1||s}} par pådje',
 'viewprevnext' => 'Vey ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tchuzes di cweraedje',
 'searchmenu-exists' => "'''Gn a ddja ene pådje lomêye « [[:$1]] » so ç' wiki ci'''",
 'searchmenu-new' => "'''Ahiver l' pådje \"[[:\$1]]\" so ç' wiki ci!'''",
 'searchprofile-articles' => 'Pådjes di contnou',
@@ -826,14 +815,10 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'showingresults' => "Chal pa dzo {{PLURAL:$1|'''1''' rizultat|'''$1''' rizultats}} a pårti do limero '''$2'''.",
 'showingresultsnum' => "Chal pa dzo {{PLURAL:$3|'''1''' rizultat|'''$3''' rizultats}} a pårti do limero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rizultat '''$1'''|Rizultats '''$1 - $2'''}} foû di '''$3'' po '''$4'''",
-'nonefound' => "'''Note''': li prémetowe dujhance c' est d' cweri seulmint e sacwants espåces di lomaedje.
-Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' contnou do wiki (dj' ô bén, ezès pådjes di copene, les modeles, evnd.), oudobén vos ploz mete li no d' l' espåce di lomaedje come betchete.",
 'search-nonefound' => "N' a rén di çou ki vs cweroz après",
-'powersearch' => 'Cweri',
 'powersearch-legend' => 'Pus spepieus rcweraedjes',
 'powersearch-ns' => 'Cweri ezès espåces di lomaedje:',
 'powersearch-redir' => 'Håyner les rdjiblaedjes',
-'powersearch-field' => 'Cweri',
 'powersearch-togglelabel' => 'Tchoezi:',
 'powersearch-toggleall' => 'Totafwait',
 'powersearch-togglenone' => 'Disclitchî tot',
@@ -844,8 +829,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î",
-'prefsnologintext' => 'I vs fåt esse <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} elodjî]</span> po pleur candjî vos preferinces.',
 'changepassword' => "Candjî l' sicret",
 'prefs-skin' => 'Pea',
 'skin-preview' => 'vey divant',
@@ -865,7 +848,6 @@ Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' c
 'prefs-email' => "Tchuzes d' emilaedje",
 'prefs-rendering' => 'Rivnance',
 'saveprefs' => 'Schaper les preferinces',
-'resetprefs' => 'Rimete les prémetowès valixhances',
 'restoreprefs' => 'Rimete totes les prémetowès valixhances',
 'prefs-editing' => 'Boesse di tecse',
 'rows' => 'Royes',
@@ -880,7 +862,6 @@ Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' c
 'localtime' => "L' eure locåle",
 'timezoneuseserverdefault' => "Epoyî l' prémetowe valixhance ($1)",
 'timezoneuseoffset' => "Ôte (dinez l' diferince d' eures)",
-'timezoneoffset' => "Diferince d' eures¹:",
 'servertime' => "L' eure sol sierveu:",
 'guesstimezone' => "Prinde d' après l' betchteu",
 'timezoneregion-africa' => 'Afrike',
@@ -1313,10 +1294,8 @@ Asteure c' est on redjiblaedje viè [[$2]].",
 'protectedpages' => 'Pådjes protedjeyes',
 'protectedpages-indef' => "Seulmint les protedjaedje disk' a todi",
 'protectedpages-cascade' => 'Seulmint les protedjaedjes e cascåde',
-'protectedpagestext' => "Les pådjes shuvantes sont protedjeyes siconte li displaeçaedje ou l' candjmint do tecse",
 'protectedpagesempty' => 'I gn a pol moumint nole pådje sifwaitmint protedjeye.',
 'protectedtitles' => 'Tites protedjîs',
-'protectedtitlestext' => "Les tites shuvants sont protedjîs, ça fwait k' on n' pout nén ahiver ene pådje lomêye inla.",
 'protectedtitlesempty' => 'I gn a pol moumint nou tite sifwaitmint protedjî.',
 'listusers' => 'Djivêye des uzeus',
 'usereditcount' => '$1 candjmint{{PLURAL:$1||s}}',
@@ -2126,10 +2105,6 @@ est raptiti. Les ôtes seront catchîs.
 'exif-gpsspeed-m' => 'miles/h',
 'exif-gpsspeed-n' => 'nuks',
 
-# External editor support
-'edit-externally' => "Candjî ç' fitchî ci avou on dfoûtrin programe",
-'edit-externally-help' => "(Loukîz les [https://www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totafwait',
 'namespacesall' => 'tos',
index ab280d9..dae3db1 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' ),
@@ -221,7 +220,6 @@ $messages = array(
 'qbedit' => 'Igliwat',
 'qbpageoptions' => 'Ini nga pakli',
 'qbmyoptions' => 'Akon mga pakli',
-'qbspecialpages' => 'Mga pinaurog nga pakli',
 'faq' => 'AGG',
 'faqpage' => 'Project:AGG',
 
@@ -339,8 +337,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}}',
@@ -443,9 +439,6 @@ Bangin mayda usa o damo nga mga agi nga diri puyde magamit ha mga titulo.',
 'perfcachedts' => 'An nasunod nga data gin-cache, ngan kataposan ginbag-o dida han $1. In maximum hin {{PLURAL:$4|usa ka resulta|$4 ka resulta}} aada hit cache.',
 'querypage-no-updates' => 'An mga kabag-ohan para hini nga pakli ha yana diri mahihimo.
 An data dini diri mahihimo nga bag-o.',
-'wrong_wfQuery_params' => 'Sayop nga mga parameter ha wfQuery()<br />
-Funsyon: $1<br />
-Kweri: $2',
 'viewsource' => 'Kitaa an ginkuhaan',
 'viewsource-title' => 'Kitaa an tinikangan para han $1',
 'actionthrottled' => 'Ginpahinay an ginbuhat',
@@ -954,11 +947,8 @@ Diri mo ini malalabtan.',
 # Search results
 'searchresults' => 'Mga nabilingan han pagbiling',
 'searchresults-title' => 'Mga nabilngan han pagbiling para han "$1"',
-'searchresulttext' => 'Para ha kadugangan nga impormasyon bahin han pagbiling hin {{SITENAME}}, kitaa an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitleinvalid' => "Imo ginpamiling an '''$1'''",
 'toomanymatches' => 'Sobra kadamo nga mga igo an ginbalik, alayon pagbuhat hin iba nga pakiana',
 'titlematches' => 'Parehas an titulo han pakli',
-'notitlematches' => 'Waray titulo nga pakli an parehas',
 'textmatches' => 'Parehas an teksto han pakli',
 'notextmatches' => 'Waray teksto han pakli an parehas',
 'prevn' => 'naha-una nga {{PLURAL:$1|$1}}',
@@ -967,10 +957,8 @@ Diri mo ini malalabtan.',
 'nextn-title' => 'Sunod nga $1 {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Kitaa $1 {{PLURAL:$1|resulta|mga resulta}} kada pakli',
 'viewprevnext' => 'Kitaa an ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Mga pagpipilian han pamiling',
 'searchmenu-exists' => "'''May-ada pakli nga nakangaran hin \"[[:\$1]]\" hini nga wiki.'''",
 'searchmenu-new' => "'''Himoa an pakli \"[[:\$1]]\" hini nga wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ig-browse an mga pakli gamit hini nga prefix]]',
 'searchprofile-articles' => 'Mga unod nga pakli',
 'searchprofile-project' => 'Mga Bulig ngan Proyekto nga pakli',
 'searchprofile-images' => 'Multimedia',
@@ -997,11 +985,9 @@ Diri mo ini malalabtan.',
 'searchall' => 'ngatanan',
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' han '''$3'''|Mga resulta '''$1 - $2''' han '''$3'''}} para ha '''$4'''",
 'search-nonefound' => 'Waray resulta an nakakabaton han pakiana.',
-'powersearch' => 'Abansado nga pagbiling',
 'powersearch-legend' => 'Abansado nga pagbiling',
 'powersearch-ns' => "Pamiling ha mga ngaran-lat'ang:",
 'powersearch-redir' => 'Talaan hin mga redirect',
-'powersearch-field' => 'Bilnga an',
 'powersearch-togglelabel' => 'Panginano-a:',
 'powersearch-toggleall' => 'Ngatanan',
 'powersearch-togglenone' => 'Waray',
@@ -1015,7 +1001,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',
@@ -1039,7 +1024,6 @@ Ginpapasabot nga an sulod han mga panudlok han {{SITENAME}} in bangin daan an.',
 'prefs-email' => 'Mga pagpipilian han e-mail',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Igtipig',
-'resetprefs' => 'Pabay-i an diri nakatipig nga mga pagbabag-o',
 'restoreprefs' => 'Igbalik an ngatanan ngada nga aada-nga-daan nga settings (ha ngatanan nga mga bahin)',
 'prefs-editing' => 'Ginliliwat',
 'rows' => 'Mga rumbay pahigda:',
@@ -1059,7 +1043,6 @@ Kun hin-o man it maaram hini in puyde bumasa han imo talaan han binabantayan, tu
 'localtime' => 'Oras nga lokal',
 'timezoneuseserverdefault' => 'Gamita an aada-nga-daan han wiki ($1)',
 'timezoneuseoffset' => 'Iba (igbutang an offset)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Oras han serbidor:',
 'guesstimezone' => 'Butanga tikang han panngaykay(browser)',
 'timezoneregion-africa' => 'Aprika',
@@ -2339,10 +2322,6 @@ An iba in daan nakatago.
 'exif-urgency-low' => 'Hamubo ($1)',
 'exif-urgency-high' => 'Hataas ($1)',
 
-# External editor support
-'edit-externally' => 'Igliwat ini nga fayl gamit han gawas nga aplikasyon',
-'edit-externally-help' => '(Kitaa an [https://www.mediawiki.org/wiki/Manual:External_editors mga pagtutdo hin pag-ayad] para han dugang nga pananabutan)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ngatanan',
 'namespacesall' => 'ngatanan',
index ef55c2e..e1297d2 100644 (file)
@@ -219,7 +219,6 @@ $messages = array(
 'qbedit' => 'Soppi',
 'qbpageoptions' => 'Xëtuw tànneef',
 'qbmyoptions' => 'Samay tànneef',
-'qbspecialpages' => 'Xëti jagleel',
 'faq' => 'Laaj yi ëpp',
 'faqpage' => 'Project:FAQ',
 
@@ -327,8 +326,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',
@@ -409,9 +406,6 @@ Di la sakku nga yegge ko ab [[Special:ListUsers/sysop|yorkat]] , jox ko màkkaan
 'perfcached' => 'Lii ab duppitu ndencitu sumb mi la, kon xéj-na beesul. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Njoxe yii di toftal ab duppitu nëbbitu dàttub njoxe bi la, te yeesalam gu mujj mi ngi am ci: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Yeesal yu xët wii dañ leen a doxadil fi mu ne nii. Xibaar yi ne fii ci suuf beesuñu.',
-'wrong_wfQuery_params' => 'Njuumte ci xibaar yi ci wfQuery()<br />
-Solo : $1<br />
-Laaj : $2',
 'viewsource' => 'Xool gongikuwaayam',
 'actionthrottled' => 'Jëf jees digal',
 'actionthrottledtext' => 'Ngir xeex spam yi, jëf ji nga namm a def dañ kaa digal ci yoon yoo ko man ci benn diir bu gatt. Te mel na ne romb nga boobu dig. Jéemaatal fii aki simili.',
@@ -848,13 +842,8 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 # Search results
 'searchresults' => 'Ngértey ceet gi',
 'searchresults-title' => 'Ngértey ceet gu "$1"',
-'searchresulttext' => 'Ngir yeneeni xibaar ci ceet gi ci {{SITENAME}}, xoolal [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Yaa ngi seet « \'\'\'[[:$1]]\'\'\' » ([[Special:Prefixindex/$1|wépp xët wu tambalee "$1"]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|wépp xët wu lëkkalook "$1"]])',
-'searchsubtitleinvalid' => 'Yaa ngi seet « $1 »',
 'toomanymatches' => 'Dafa bari ay yem-yem. Soppil laaj bi.',
 'titlematches' => 'Koju xët yi ñoo yam',
-'notitlematches' => 'Amul benn koju xët wu yam ak ceet gi',
 'textmatches' => 'Mbindu jukki yi ñoo yam.',
 'notextmatches' => 'Amul benn mbindu jukki bu yam ak ceet gi.',
 'prevn' => '{{PLURAL:$1|wi jiitu|$1 yi jiitu}}',
@@ -863,10 +852,8 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 'nextn-title' => '$1 {{PLURAL:$1|ngérte bi toftal|ngérte yi toftal}}',
 'shown-title' => 'Wone $1 {{PLURAL:$1|ngérte|ngérte}} ciw xët',
 'viewprevnext' => 'Xool ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tànneefi ceet',
 'searchmenu-exists' => "'''wenn xët wu tudd « [[:$1]] » moo am ci bii wiki'''",
 'searchmenu-new' => "'''Sosal xët wii di « [[:$1|$1]] » ci bii wiki !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Xoolal xët wi tambalee nii]]',
 'searchprofile-articles' => 'Xëti ëmbiit',
 'searchprofile-project' => 'Xëti Ndimbal ak Sémb',
 'searchprofile-images' => 'Barixibaarukaay',
@@ -893,14 +880,10 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 'showingresults' => 'Woneg <b>$1</b> {{PLURAL:$1|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.',
 'showingresultsnum' => 'Woneg <b>$3</b> {{PLURAL:$3|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.',
 'showingresultsheader' => "{{PLURAL:$5|Ngérte '''$1''' bu '''$3'''|Ngértey '''$1 - $2'''}}  ngir '''$4'''",
-'nonefound' => "<strong>Karmat</strong> : ci yenn barabi tur yi rekk lañuy seet cig tëralnjëkk.
-Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti waxtaanuwaay yi, royuwaay yi, añs), walla nga jëfandikoo barabu tur bi la neek",
 'search-nonefound' => 'Ceet gi jurul dara.',
-'powersearch' => 'Seet',
 'powersearch-legend' => 'Ceet gu xóot',
 'powersearch-ns' => 'Seet ci barabi tur yi :',
 'powersearch-redir' => 'Limu jubluwaat yi',
-'powersearch-field' => 'Seet',
 'powersearch-togglelabel' => 'Fal:',
 'powersearch-toggleall' => 'Yépp',
 'powersearch-togglenone' => 'Dara',
@@ -911,8 +894,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',
-'prefsnologintext' => 'Laaj na nga <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} dugg]</span> ngir soppi say tànneef.',
 'changepassword' => 'Coppiteg baatujàll bi',
 'prefs-skin' => 'Melokaan',
 'skin-preview' => 'Wonendil',
@@ -928,7 +909,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'prefs-resetpass' => 'Soppi baatujàll',
 'prefs-email' => 'Tànneefi m-bataaxal',
 'saveprefs' => 'Wattu',
-'resetprefs' => 'Loppanti tànneef yi',
 'restoreprefs' => 'Delloo say tànneef nañu meloon ca sag mbindu',
 'prefs-editing' => 'Boyotu coppite',
 'rows' => 'Rëdd:',
@@ -944,7 +924,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'localtime' => 'Waxtuw barab:',
 'timezoneuseserverdefault' => 'Jëfandikoo waxtuw joxekaay bi',
 'timezoneuseoffset' => 'Yeneen (waxaaleel wuute gi)',
-'timezoneoffset' => 'Wuute¹ :',
 'servertime' => 'Waxtu joxekaay bi :',
 'guesstimezone' => 'Jëfandikoo waxtuw sa joowukaay',
 'timezoneregion-africa' => 'Afrig',
@@ -1149,6 +1128,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.',
@@ -1421,10 +1401,8 @@ Léegi mi ngi jublu [[$2]].',
 'deadendpagestext' => 'Xët yii di toftal lëkkaloowuñu ak wenn xët ci bii wiki',
 'protectedpages' => 'Xët yi ñu aar',
 'protectedpages-indef' => 'Yi ñu aarandi rekk',
-'protectedpagestext' => 'Xët yii di toftal dañu leen aar, maneesu leen soppi walla tuddewaat',
 'protectedpagesempty' => 'Nii-nii amul wenn xët wu ñu aar ci gii anam',
 'protectedtitles' => 'Koj yi ñu aar',
-'protectedtitlestext' => 'Maneesul a sos ay xët ak koj yi ñu lim fii',
 'protectedtitlesempty' => 'Nii-nii amul benn koj bu ñu aar ci gii anam.',
 'listusers' => 'Limu jëfandikukat yi',
 'listusers-editsonly' => 'Wone jëfandikukat yi am ay cëru',
@@ -2095,10 +2073,6 @@ Lëkkalekaay yiy toftal, ci wenn rëdd wi, dees leen di jàppee nikiy sette, maa
 
 'exif-componentsconfiguration-0' => 'Amul',
 
-# External editor support
-'edit-externally' => 'Soppi xët wii ak ab tëriin bu biti',
-'edit-externally-help' => 'Xoolal [https://www.mediawiki.org/wiki/Manual:External_editors tegtali camp gi] ngir yeneeni xamle',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'yépp',
 'namespacesall' => 'Yépp',
index 60606bf..267d12f 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"分类里个媒体',
@@ -178,7 +178,6 @@ $messages = array(
 'qbedit' => '編',
 'qbpageoptions' => '箇頁',
 'qbmyoptions' => '我頁',
-'qbspecialpages' => '特殊頁',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -293,8 +292,6 @@ $1',
 'ok' => '好',
 'retrievedfrom' => '取自“$1”',
 'youhavenewmessages' => '你侬有$1($2)。',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '此垡更改',
 'newmessageslinkplural' => '{{PLURAL:$1|新消息}}',
 'newmessagesdifflinkplural' => '此垡̺{{PLURAL:$1|变化}}',
 'youhavenewmessagesmulti' => '爾徠$1裏有新信息',
@@ -387,9 +384,6 @@ $1',
 'perfcached' => '下向是缓存数据,呒数弗是最新个。 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' => '当前禁止对此页面进行更新。箇搭个数据弗好立即刷新。',
-'wrong_wfQuery_params' => '错误个参数拨传递到 wfQuery()<br />
-函数:$1<br />
-查询:$2',
 'viewsource' => '望源码',
 'actionthrottled' => '动作已压制',
 'actionthrottledtext' => '基于反垃圾链接个考量,限制垃拉短时间内多趟重复箇只操作。请过脱几分钟再试试看。',
@@ -932,12 +926,8 @@ $1",
 # Search results
 'searchresults' => '搜寻结果',
 'searchresults-title' => '搜寻“$1”个结果',
-'searchresulttext' => '更加全面个关于拉{{SITENAME}}里向搜索个信息,请倷看[[{{MediaWiki:Helppage}}:搜索|搜索{{SITENAME}}]]。',
-'searchsubtitle' => '搜索\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" 打头个页面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有链接到“$1”个页面]])',
-'searchsubtitleinvalid' => "倷搜寻 '''$1'''",
 'toomanymatches' => '匹配结果忒多哉,请尝试弗同个查询关键词',
 'titlematches' => '页面标题匹配',
-'notitlematches' => '寻弗着匹配个页面标题',
 'textmatches' => '页面内容匹配',
 'notextmatches' => '呒没匹配个页面文本',
 'prevn' => '上个 $1',
@@ -946,10 +936,8 @@ $1",
 'nextn-title' => '后$1个结果',
 'shown-title' => '一页显示$1个结果',
 'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
-'searchmenu-legend' => '搜索选项',
 'searchmenu-exists' => "'''箇wiki里有一页名字“[[:$1]]”哉'''",
 'searchmenu-new' => "'''徕箇wiki里建“[[:$1]]”页!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|浏览带箇只前缀个页面]]',
 'searchprofile-articles' => '内容页',
 'searchprofile-project' => '帮助搭项目页',
 'searchprofile-images' => '多媒体',
@@ -977,13 +965,10 @@ $1",
 'showingresults' => '下头显示从第<b>$2</b>条开始个<b>$1</b>条结果:',
 'showingresultsnum' => '下头显示从第<b>$2</b>条开始个<b>$3</b>条结果:',
 'showingresultsheader' => "对'''$4'''个{{PLURAL:$5|第'''$1'''至第'''$3'''项结果|第'''$1-$2'''项,共'''$3'''个结果}}",
-'nonefound' => "'''注意''':只默认搜索部分名字空间个页面。尝试垃拉侬个搜索语句前头添加“all:”前缀,箇能介好搜索全部页面(包括讨论页、模板咾啥),或者亦可使用所需名字空间作为前缀。",
 'search-nonefound' => '查询呒有结果。',
-'powersearch' => '高级搜索',
 'powersearch-legend' => '高级搜索',
 'powersearch-ns' => '垃拉箇眼名字空间里向搜索:',
 'powersearch-redir' => '重定向列表',
-'powersearch-field' => '搜索',
 'powersearch-togglelabel' => '选择:',
 'powersearch-toggleall' => '全选',
 'powersearch-togglenone' => '侪弗选',
@@ -994,8 +979,6 @@ $1",
 'preferences' => '偏好',
 'mypreferences' => '偏好设定',
 'prefs-edits' => '编辑数量:',
-'prefsnologin' => '朆登录',
-'prefsnologintext' => '侬必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>再好设置个人参数。',
 'changepassword' => '改密码',
 'prefs-skin' => '皮肤',
 'skin-preview' => '预览',
@@ -1014,7 +997,6 @@ $1",
 'prefs-email' => '邮箱选项',
 'prefs-rendering' => '外观',
 'saveprefs' => '保存',
-'resetprefs' => '清除弗曾保存个更改',
 'restoreprefs' => '复原全部默认设定',
 'prefs-editing' => '编辑',
 'rows' => '行:',
@@ -1031,7 +1013,6 @@ $1",
 'localtime' => '当地辰光:',
 'timezoneuseserverdefault' => '使用服务器默认值',
 'timezoneuseoffset' => '其它(指定时差)',
-'timezoneoffset' => '时差¹:',
 'servertime' => '服务器辰光:',
 'guesstimezone' => '从浏览器填写',
 'timezoneregion-africa' => '非洲',
@@ -1443,7 +1424,7 @@ $1",
 # Rollback
 'rollback' => '恢复编辑',
 'rollback_short' => '恢复',
-'rollbacklink' => '恢复',
+'rollbacklink' => '回退',
 'rollbackfailed' => '恢复失败',
 'revertpage' => '恢复[[Special:Contributions/$2|$2]] ([[User talk:$2|讲张]])个改动;恢复到[[User:$1|$1]]个上一版本',
 
@@ -1739,10 +1720,6 @@ Variants for Chinese language
 'exif-gpsspeed-k' => '公里每小时',
 'exif-gpsspeed-m' => '英里每小时',
 
-# External editor support
-'edit-externally' => '用外部应用程序来编辑该只文件',
-'edit-externally-help' => '(请参见[https://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信息)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
index 6ed1f28..2807171 100644 (file)
@@ -197,7 +197,6 @@ $messages = array(
 'qbedit' => 'Чиклх',
 'qbpageoptions' => 'Тер халх',
 'qbmyoptions' => 'Тана халхс',
-'qbspecialpages' => 'Көдлхнә халхс',
 'faq' => 'Юм би',
 'faqpage' => 'Project:Юм би',
 
@@ -306,8 +305,6 @@ $1',
 'ok' => 'Тиим',
 'retrievedfrom' => '"$1" гидг халхас йовулсн',
 'youhavenewmessages' => 'Та $1та бәәнәт ($2).',
-'newmessageslink' => 'шин зәңгс',
-'newmessagesdifflink' => 'шидрә сольлһн',
 'youhavenewmessagesmulti' => 'Таньд $1 деер шин зәңг ирсн бәәнә.',
 'editsection' => 'чиклх',
 'editold' => 'чиклх',
@@ -553,10 +550,6 @@ $1',
 # Search results
 'searchresults' => 'Хәәлһнә ашуд',
 'searchresults-title' => 'Хәәлһнә ашуд "$1" төлә',
-'searchresulttext' => 'Дәкәд өггцна төлә,  [[{{MediaWiki:Helppage}}|дөң өггдг һазрт]] хәләтн.',
-'searchsubtitle' => '«[[:$1]]» сурвра ([[Special:Prefixindex/$1|эн нертә эклсн халхс]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|эн нерт заадг]])',
-'searchsubtitleinvalid' => "Тадн '''$1''' төлә хәәләт",
-'notitlematches' => 'Нернә ирлцлһн уга',
 'notextmatches' => 'Әдл бичг халхд уга',
 'prevn' => 'урдк {{PLURAL:$1|$1}}',
 'nextn' => 'дарук {{PLURAL:$1|$1}}',
@@ -579,21 +572,15 @@ $1',
 'mwsuggest-disable' => 'AJAX селвг унтрах',
 'searcheverything-enable' => 'Цуг нернә ууд хәәх',
 'searchall' => 'цуг',
-'nonefound' => "'''Нүдлтн''': Мел зәрм нернә у талд урдаснь хәәсмн.
-''all:'' гидг эклц немтн та һазр болһнд хәәх.",
-'powersearch' => 'Күчн хәәлһн',
 'powersearch-legend' => 'Күчн хәәлһн',
 'powersearch-ns' => 'Эн нернә у дотран хәәх:',
 'powersearch-redir' => 'Авч одлһуд үзүлх',
-'powersearch-field' => 'Хәәх',
 'powersearch-togglenone' => 'Уга',
 
 # Preferences page
 'preferences' => 'Дурллһн',
 'mypreferences' => 'Көгүд',
 'prefs-edits' => 'Чикллһнә то:',
-'prefsnologin' => 'Та харһв биш',
-'prefsnologintext' => 'Та <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} харһх]</span> кергтә,  тегәд көгүдиг сольҗ чаднат.',
 'changepassword' => 'Нууц үгиг сольҗ',
 'prefs-skin' => 'Хувцнь',
 'skin-preview' => 'Хәләвр',
@@ -619,7 +606,6 @@ $1',
 'localtime' => 'Бәәрн һазра цаг:',
 'timezoneuseserverdefault' => 'Серверинь олзлх',
 'timezoneuseoffset' => 'Талдан (көндллһн заатн)',
-'timezoneoffset' => 'Көндллһн¹:',
 'servertime' => 'Серверин цаг:',
 'guesstimezone' => 'Хәләлгчәс авх',
 'timezoneregion-africa' => 'Априк',
@@ -707,6 +693,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',
@@ -1164,10 +1151,6 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'exif-orientation-1' => 'Кирин',
 'exif-orientation-2' => 'Теңгрин хормаһар туссн',
 
-# External editor support
-'edit-externally' => 'Эн боомгиг һаза заклһар чиклх',
-'edit-externally-help' => '([https://www.mediawiki.org/wiki/Manual:External_editors Тәвллһнә заалт]  икәр өггцнә төлә хәләтн)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'цуг',
 'namespacesall' => 'цуг',
index fe9c8e0..05018e9 100644 (file)
@@ -127,7 +127,6 @@ $messages = array(
 'qbedit' => 'რედაქტირება',
 'qbpageoptions' => 'თე ხასჷლა',
 'qbmyoptions' => 'ჩქიმი ხასჷლეფი',
-'qbspecialpages' => 'გჷშაკერძაფილი ხასჷლეფი',
 'faq' => 'ბხშირი კითხვეფი',
 
 # Vector skin
@@ -203,8 +202,6 @@ $messages = array(
 'ok' => 'ჯგირი',
 'retrievedfrom' => 'გორილ რე "$1"-იშე',
 'youhavenewmessages' => 'თქვა გიღუნა $1 ($2).',
-'newmessageslink' => 'ახალი შატყვინაფეფი',
-'newmessagesdifflink' => 'ეკონია თირაფა',
 'editsection' => 'რედაქტირაფა',
 'editold' => 'რედაქტირაფა',
 'viewsourceold' => 'წყუშ ძირაფა',
@@ -397,10 +394,6 @@ $messages = array(
 # Search results
 'searchresults' => 'გორუაშ მოღალირობეფ',
 'searchresults-title' => '"$1"–იშ გორუაშ მოღალირობეფ',
-'searchresulttext' => '{{SITENAME}}–იშ ოგორალო უმოს იმფორმაციოაშო  ქოძირით  [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'თქვა დოგორით \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ირი ხასილა, დოჭყაფილი "$1"-ით]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ირი ხასილა, გინორცხილ "$1"-შა]])',
-'searchsubtitleinvalid' => "თქვა გორუნდით '''$1'''",
-'notitlematches' => 'ვა უხუჯანს ნამუთინი ხასილაშ ჯოხო',
 'notextmatches' => 'ნამთინ ხასილაშ ტექსტი ვა უხუჯანს',
 'prevn' => 'წოხლენ $1',
 'nextn' => 'უკულიან {{PLURAL:$1|$1}}',
@@ -431,14 +424,10 @@ $messages = array(
 'searchrelated' => 'მათანგეფ',
 'searchall' => 'არძო',
 'showingresultsheader' => "{{PLURAL:$5|მოღალუ '''$1''' '''$3'''-შე|მოღალუეფ '''$1 - $2''' '''$3'''-შე}} '''$4'''-შო",
-'nonefound' => "'''გეთოლწონით''': სტანდარტულო ხვალე ნამთინე ჯოხოთ ოფირჩას მეურს გორუა.
-ოგორალი ზიტყვას ვარა ზიტყვეფიშ ბუნას წოხოლე ქეწუყ’უნეთ ''all:'' ირდიხას იგორასინ თიშენ (სხუნუაშ ხასილეფიშ, თანგეფიშ დო ა.უ. მეკოროცხუათ,), ვარ-და პრეფიქსო გიმირინეთ კორნებულ ჯოხოთ ოფირჩა.",
 'search-nonefound' => 'თქვანი მოგორაფილიშ მუთუნნერ მანგი მოღალუქ ვეძირჷ.',
-'powersearch' => 'გოძინელ გორუა',
 'powersearch-legend' => 'გოძინელ გორუა',
 'powersearch-ns' => 'დოგორ ჯოხოეფიშ ოფირჩას:',
 'powersearch-redir' => 'გინოწურაფეფიშ ერკებულიშ ძირაფა',
-'powersearch-field' => 'დოგორი ათენა',
 
 # Preferences page
 'preferences' => 'კონფიგურაცია',
@@ -881,10 +870,6 @@ $messages = array(
 'exif-imagewidth' => 'სიგანე',
 'exif-imagelength' => 'სიმაღალე',
 
-# External editor support
-'edit-externally' => 'თე ფაილიშ ორედაქტირაფალო გიმირინეთ გალენ პროგრამა',
-'edit-externally-help' => '(უმოს ინფორმაციაშო ქოძირით [https://www.mediawiki.org/wiki/Manual:External_editors])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'არძა',
 'namespacesall' => 'არძა',
index 688f52b..5b422ee 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(
@@ -353,7 +354,6 @@ $messages = array(
 'qbedit' => 'ענדערן',
 'qbpageoptions' => 'דער בלאט',
 'qbmyoptions' => 'מיינע בלעטער',
-'qbspecialpages' => 'ספעציעלע בלעטער',
 'faq' => 'מערסטע געפרעגטע פראגעס',
 'faqpage' => 'Project:מערסטע געפרעגט פראגעס',
 
@@ -471,12 +471,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' => 'רעדאַקטירן',
@@ -576,9 +574,6 @@ $1',
 'perfcachedts' => 'די פאלגנדע דאטן זענען פונעם זאַפאַס, וואס איז לעצט געווארן דערהײַנטיגט $1. מאקסימום {{PLURAL:$4|איין רעזולטאט איז|$4 רעזולטאטן זענען}} פאראן אין זאפאס',
 'querypage-no-updates' => 'דערהיינטיגן דעם בלאט איז איצט אומערמעגלעכט.
 דאטן דא וועט נישט דערווייל ווערן באנייט.',
-'wrong_wfQuery_params' => 'די פארעמעטערס אריינגפיטערט צו wfQuery() זענען נישט ריכטיג:<br />
-פֿונקיציע: $1<br />
-פֿארלאנג: $2',
 'viewsource' => 'ווײַזן מקור',
 'viewsource-title' => 'באקוקן מקור פֿון $1',
 'actionthrottled' => 'די אַקציע איז באַגרענעצט',
@@ -608,7 +603,8 @@ $2',
 'invalidtitle-knownnamespace' => 'אומגילטירער טיטל מיט נאמענטייל "$2" און טעקסט "$3"',
 'invalidtitle-unknownnamespace' => 'אומגילטיקער טיטל מיט אומבאוואוסטן נאמענטייל נומער $1 און טעקסט "$2"',
 'exception-nologin' => 'נישט אַרײַנלאגירט',
-'exception-nologin-text' => 'דער בלאט אדער אקציע פֿאדערט אז איר זענט אריינלאגירט ביי דער וויקי.',
+'exception-nologin-text' => 'איר שאפרט זיין [[Special:Userlogin|אריינלאגירט]] to כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.',
+'exception-nologin-text-manual' => 'זייט אזוי גוט $1 כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.',
 
 # Virus scanner
 'virus-badscanner' => "שלעכטע קאנפֿיגוראציע: אומבאוואוסטער ווירוס איבערקוקער: ''$1''",
@@ -1276,12 +1272,8 @@ $1",
 # Search results
 'searchresults' => 'זוכן רעזולטאטן',
 'searchresults-title' => 'זוכן רעזולטאַטן פֿאַר "$1"',
-'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' => 'בלעטער מיט פאַסנדיקן אינהאַלט',
 'notextmatches' => 'נישטאָ קיין בלעטער מיט פאַסנדיקן אינהאַלט',
 'prevn' => '{{PLURAL:$1|פֿריערדיקער|$1 פֿריערדיקע}}',
@@ -1290,10 +1282,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|קומענדיקער רעזולטאַט|קומענדיקע $1 רעזולטאַטן}}',
 'shown-title' => 'ווײַזן $1  {{PLURAL:$1|רעזולטאַט| רעזולטאַטן}} אויף א בלאַט',
 'viewprevnext' => 'קוקט אויף ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'זוכן ברירות',
 'searchmenu-exists' => "'''ס'איז פֿאַראַן א בלאַט מיטן נאמען \"[[:\$1]]\" אין דער וויקי'''",
 'searchmenu-new' => "'''באַשאַפֿן דעם בלאַט \"[[:\$1]]\" אויף דער וויקי'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|בלעטערן בלעטער מיט דעם פרעפֿיקס]]',
 'searchprofile-articles' => 'אינהאלט בלעטער',
 'searchprofile-project' => 'הילף און פראיעקט בלעטער',
 'searchprofile-images' => 'מולטימעדיע',
@@ -1321,14 +1311,10 @@ $1",
 'showingresults' => "ווייזן ביז {{PLURAL:$1|רעזולטאט '''איינס'''|'''$1''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
 'showingresultsnum' => "ווייזן {{PLURAL:$3|רעזולטאט '''איינס'''|'''$3''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
 'showingresultsheader' => "{{PLURAL:$5|רעזולטאַט '''$1''' פֿון '''$3'''| רעזולטאַטן '''$1 - $2''' פֿון '''$3'''}} פֿאַר '''$4'''",
-'nonefound' => "'''  אכטונג''': בלויז אין טייל נאמענטיילן ווערט געזוכט גרונטלעך.
-איר קענט שרייבן'''all:''' בעפאר דער זוך טערמין כדי צו זוכן אין אלע בלעטער (אריינגערעכנט שמועס בלעטער, מוסטערן, א.א.וו.), אדער שרייבן בעפארן זוך-טערמין דעם נאמענטייל וואס איר זענט אינטערסירט דערין.",
 'search-nonefound' => 'נישטא קיין רעזולטאטן פֿאַר דער שאלה.',
-'powersearch' => 'זוכן',
 'powersearch-legend' => 'ווײַטהאלטן זוכן',
 'powersearch-ns' => 'זוכן אין נאמענטיילן:',
 'powersearch-redir' => 'ווײַז ווײַטערפֿירונג בלעטער',
-'powersearch-field' => 'זוך',
 'powersearch-togglelabel' => 'קאנטראלירן:',
 'powersearch-toggleall' => 'אלע',
 'powersearch-togglenone' => 'קיין',
@@ -1342,8 +1328,7 @@ $1",
 'preferences' => 'פרעפֿערענצן',
 'mypreferences' => 'פּרעפֿערענצן',
 'prefs-edits' => 'צאָל ענדערונגען:',
-'prefsnologin' => 'נישט אריינלאגירט',
-'prefsnologintext' => 'איר דארפט זיין  <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} אריינלאגירט]</span> כדי צו ענדערן באניצער פרעפֿערענצן.',
+'prefsnologintext2' => 'זייט אזוי גוט $1 כדי צו שטעלן באניצער פרעפערענצן.',
 'changepassword' => 'טוישן פאַסווארט',
 'prefs-skin' => 'סקין',
 'skin-preview' => 'פארויסדיגע ווייזונג',
@@ -1367,7 +1352,6 @@ $1",
 'prefs-email' => 'ע־פאסט אפציעס',
 'prefs-rendering' => 'אויסזען',
 'saveprefs' => 'אויפֿהיטן',
-'resetprefs' => 'אוועקנעמען נישט-אויפגעהיטענע ענדערונגען',
 'restoreprefs' => 'צוריקשטעלן אלע גרונטלעכע שטעלונגען (אין אלע אפטיילן)',
 'prefs-editing' => 'באַאַרבעטן',
 'rows' => 'שורות:',
@@ -1388,7 +1372,6 @@ $1",
 'localtime' => 'לאקאלע צייט:',
 'timezoneuseserverdefault' => 'ניצן סערווירער גרונט ($1)',
 'timezoneuseoffset' => 'אַנדער (ספעציפֿירט אונטערשייד)',
-'timezoneoffset' => 'אונטערשייד¹:',
 'servertime' => 'סארווער צײַט:',
 'guesstimezone' => 'אנפֿילן פֿון בלעטערער',
 'timezoneregion-africa' => 'אפריקע',
@@ -1642,6 +1625,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',
@@ -2096,10 +2081,8 @@ $1",
 'protectedpages' => 'געשיצטע בלעטער',
 'protectedpages-indef' => 'בלויז אומבאַשרענקטע באַשוצינגען',
 'protectedpages-cascade' => 'בלויז קאַסקאַדירנדיקע באַשיצונגען',
-'protectedpagestext' => 'די פֿאלגנדע בלעטער זענען געשיצט פון רעדאַקטירן און באוועגן:',
 'protectedpagesempty' => 'אצינד זענען קיין בלעטער נישט געשיצט מיט די דאזיגע פאַראַמעטערס.',
 'protectedtitles' => 'געשיצטע קעפלעך',
-'protectedtitlestext' => 'די פֿאלגנדע קעפלעך זענען געשיצט פון באשאפֿן:',
 'protectedtitlesempty' => 'אצינד זענען קיין קעפלעך נישט באַשיצט מיט די דאזיגע פאַראַמעטערס.',
 'listusers' => 'באַניצער ליסטע',
 'listusers-editsonly' => 'ווייזן נאר באניצערס מיט רעדאקטירונגען',
@@ -2320,7 +2303,7 @@ $PAGEINTRO $NEWPAGE
 ע-פאסט: $PAGEEDITOR_EMAIL
 וויקי: $PAGEEDITOR_WIKI
 
-עס ×\95×\95×¢×\98 ×\9eער × ×\99ש×\98 ×\96×\99×\99×\9f ×§×\99×\99×\9f ×\9e×¢×\9c×\93×\95× ×\92×¢×\9f ×\90×\99×\9f ×¤×\90×\9c ×¤×\95×\9f × ×\90×\9a ×¢× ×\93ער×\95× ×\92×¢×\9f × ×\90ר ×\90×\95×\99×\91 ×\90×\99ר ×\95×\95×¢×\98 ×\91×\90×\96×\95×\9b×\9f ×\93×¢×\9d ×\91×\9c×\90ט.
+עס ×\95×\95×¢×\98 ×\9eער × ×\99ש×\98 ×\96×\99×\99×\9f ×§×\99×\99×\9f ×\9e×¢×\9c×\93×\95× ×\92×¢×\9f ×\90×\99×\9f ×¤×\90×\9c ×¤×\95×\9f × ×\90×\9a ×\90ק×\98×\99×\95×\95×\99×\98×¢×\98 × ×\90ר ×\90×\95×\99×\91 ×\90×\99ר ×\95×\95×¢×\98 ×\91×\90×\96×\95×\9b×\9f ×\93×¢×\9d ×\91×\9c×\90×\98 ×\95×\95×¢×\9f ×\90ר×\99×\99× ×\9c×\90×\92×\99רט.
 איר קענט אויך צוריקשטעלן די מעלדונגען פאנען פון אלע אייערע אויפֿגעפאסטע בלעטער אין אייער אויפפאסונג ליסטע.
 
 אייער פֿריינטליכע  {{SITENAME}} מעלדונגען סיסטעם
@@ -2509,7 +2492,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' => 'נאמענטייל:',
@@ -3127,7 +3109,7 @@ $1',
 'file-nohires' => 'נישטא מיט א העכערער רעזאלוציע.',
 'svg-long-desc' => 'טעקע SVG, נאמינעל: $1 × $2 פיקסעלן, טעקע גרייס: $3',
 'svg-long-error' => 'אומגילטיקע SVG טעקע: $1',
-'show-big-image' => '×\91×\99×\9c×\93 ×\9e×\99×\98 ×\93ער ×\92רעס×\98ער ×¨×¢×\96×\90×\9c×\95צ×\99ע',
+'show-big-image' => '×\90ר×\92×\99× ×¢×\9c×¢ ×\98עקע',
 'show-big-image-preview' => 'גרייס פון דעם פארויסקוק: $1.',
 'show-big-image-other' => '{{PLURAL:$2|אנדער רעזאלוציע|אנדערע רעזאלוציעס}}: $1.',
 'show-big-image-size' => '$1 × $2 פיקצעלן',
@@ -3532,10 +3514,6 @@ $1',
 'exif-urgency-high' => 'הויך ($1)',
 'exif-urgency-other' => 'באניצער־דעפינירטע פריאריטעט ($1)',
 
-# External editor support
-'edit-externally' => 'רעדאַקטירט די טעקע מיט א דרויסנדיגער אַפליקאַציע',
-'edit-externally-help' => 'זעט די [https://www.mediawiki.org/wiki/Manual:External_editors אויפֿשטעל אנווייזונגען] פאר מער אינפארמאציע.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'אַלע',
 'namespacesall' => 'אַלע',
@@ -3773,10 +3751,8 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'ספּעציעלע זײַטן',
-'specialpages-note' => '----
-* נארמאַלע באַזונדערע בלעטער.
-* <strong class="mw-specialpagerestricted">באַגרענעצטע באַזונדערע בלעטער.</strong>
-* <span class="mw-specialpagecached">באַזונדערע בלעטער פֿון זאַפאַס (קענען זײַן פֿאַרעלטערט).</span>',
+'specialpages-note' => '* נארמאַלע באַזונדערע בלעטער.
+* <span class="mw-specialpagerestricted">באַגרענעצטע באַזונדערע בלעטער.</span>',
 'specialpages-group-maintenance' => 'אויפֿהאַלטונג באַריכטן',
 'specialpages-group-other' => 'אַנדערע ספעציעלע בלעטער',
 'specialpages-group-login' => 'ארײַנלאגירן / שאַפֿן קאנטע',
@@ -3984,4 +3960,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 1b4338a..61581e7 100644 (file)
@@ -209,7 +209,6 @@ $messages = array(
 'qbedit' => 'Àtúnṣe',
 'qbpageoptions' => 'Ojúewé yi',
 'qbmyoptions' => 'Àwọn ojúewé mi',
-'qbspecialpages' => 'Àwọn ojúewé pàtàkì',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -326,8 +325,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}}',
@@ -423,9 +420,6 @@ Kò ṣe àlàyé kankan.',
 'perfcachedts' => 'Ìwònyí jẹ́ dátà láti inú cache, ọjọ́ tí a ṣe àtúnṣe rẹ̀ gbẹ̀yìn ni $1. Ó pọ̀jùlọ {{PLURAL:$4|èsì kan|èsì $4}} wà nínú cache.',
 'querypage-no-updates' => 'Àtúnṣe sí ojúewé yìí kò ṣe é ṣe lọ́wọ́lọ́wọ́.
 Àwọn ìpèsè tuntun kò ní hàn báyìí ná.',
-'wrong_wfQuery_params' => 'Àwọn pàrámítà àìtọ́ sí wfQuery()<br />
-Ìlò: $1<br />
-Ìtọrọ: $2',
 'viewsource' => 'Wo àmìọ̀rọ̀',
 'viewsource-title' => 'Ẹ wo ìsun fún $1',
 'actionthrottled' => 'Ìgbése bíntín',
@@ -1098,12 +1092,8 @@ Kò ṣe é bòmọ́lẹ̀.',
 # Search results
 'searchresults' => 'Àwọn èsì àwárí',
 'searchresults-title' => 'Àwọn èsì àwárí fún "$1"',
-'searchresulttext' => 'Fún ẹ̀kúnrẹ́rẹ́ nípa ṣíṣe ìwárí {{SITENAME}}, ẹ̀ wo [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ẹ ṣ\'àwáàrí fun \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gbogbo ojúewé tó bẹ̀rẹ̀ pẹ̀lu "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gbogbo ojúewé tó jápọ̀ mọ́ "$1"]])',
-'searchsubtitleinvalid' => "Ẹ ti ṣ'àwáàrí fun '''$1'''",
 'toomanymatches' => 'Àwọn ìbáramu ti pọ̀jù, ẹ jọ̀wọ́ ẹ gbìyànjú lọ́nà mìíràn',
 'titlematches' => 'Àkọlé ojúewé báramu',
-'notitlematches' => 'Kò sí àkọlé ojúewé tóbáramu',
 'textmatches' => 'Ọ̀rọ̀ ojúewé tóbáramu:',
 'notextmatches' => 'Kò sí ọ̀rọ̀ ojúewé tóbáramu',
 'prevn' => '{{PLURAL:$1|$1}} tókọjá',
@@ -1112,10 +1102,8 @@ Kò ṣe é bòmọ́lẹ̀.',
 'nextn-title' => '{{PLURAL:$1|Èsì $1 tóúnbọ̀|Àwọn èsì $1 tóúnbọ̀}}',
 'shown-title' => '{{PLURAL:$1|Ìfihàn èsì $1|Ìfihàn àwọn èsì $1}} nínú ojúewé kọ̀ọ̀kan',
 'viewprevnext' => 'Ẹ wo ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Àwọn àṣàyàn àwáàrí',
 'searchmenu-exists' => "'''Ojúewé tó ún jẹ́ \"[[:\$1]]\" wà lórí wiki yìí'''",
 'searchmenu-new' => "'''Dá ojúewé \"[[:\$1]]\" sí orí wiki yìí!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ẹ lọ sí àwọn ojúewé tí wọ́n ní àsopọ̀ yìí]]',
 'searchprofile-articles' => 'Àwọn ojúewé Àkóónú',
 'searchprofile-project' => 'Àwọn ojúewé Ìrànwọ́ àti Iṣẹ́-ọwọ́',
 'searchprofile-images' => 'Amóhùnmáwòrán',
@@ -1143,14 +1131,10 @@ Kò ṣe é bòmọ́lẹ̀.',
 'showingresults' => "Ìfihàn nísàlẹ̀ títí dé {{PLURAL:$1|èsì '''1'''|àwọn èsì '''$1'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
 'showingresultsnum' => "Ìfihàn nísàlẹ̀ {{PLURAL:$3|èsì '''1'''|àwọn èsì '''$3'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Èsì '''$1''' nínú ''''$3'''|Àwọn èsì '''$1 - $2''' nínú '''$3'''}} fún '''$4'''",
-'nonefound' => "'''Àkíyèsí''': Àwọn orúkọàyè mélòó níkan ni wọ́n jẹ́ wíwárí látìbẹ̀rẹ̀.
-Ẹ ṣàlẹ̀mọ́wájú ìtọrọ yín pẹ̀lú ''gbogbo'' láti ṣàwárí gbogbo àkóónú (nínú àwọn ojúewé ọ̀rọ̀, àwọn àdàkọ, a.bẹ.bẹ.lọ), tàbí kí ẹ lo orúkọàyè tóyẹ gẹ́gẹ́ bíi àlẹ̀mọ́wájú.",
 'search-nonefound' => 'Kò sí àwọn èsì kankan tóbáramu mọ́ ìtọrọ.',
-'powersearch' => 'Ṣe àwárí',
 'powersearch-legend' => 'Àwárí kíkúnrẹ́rẹ́',
 'powersearch-ns' => 'Àwárí nínú orúkọàyè:',
 'powersearch-redir' => 'Àkójọ àwọn àtúnjúwe',
-'powersearch-field' => 'Àwáàrí fún',
 'powersearch-togglelabel' => 'Ìyẹ̀wò:',
 'powersearch-toggleall' => 'Gbogbo wọn',
 'powersearch-togglenone' => 'Ìkankan',
@@ -1163,8 +1147,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é',
-'prefsnologintext' => 'Ẹ gbọ́dọ̀ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} wọlé]</span> láti to àwọn ìfẹ́ràn oníṣe.',
 'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
 'prefs-skin' => 'Skin (Àwọ̀)',
 'skin-preview' => 'Àkọ́yẹ̀wò',
@@ -1188,7 +1170,6 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'prefs-email' => 'Àwọn àṣàyàn e-mail',
 'prefs-rendering' => 'Wíwò',
 'saveprefs' => 'Ìmúpamọ́',
-'resetprefs' => 'Ìpalẹ̀mọ́ àwọn àyípadà àìmúpamọ́',
 'restoreprefs' => 'Ìdápadà gbogbo áwọn ìtò àtìbẹ̀rẹ̀ (nínú gbogbo àwọn abala)',
 'prefs-editing' => 'Àtúnṣe ṣíṣẹ',
 'rows' => 'Àwọn ìtẹ̀lé gbọlọjọ:',
@@ -1206,7 +1187,6 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'localtime' => 'Àkókò ìbílẹ̀:',
 'timezoneuseserverdefault' => 'Lo ti wiki ($1)',
 'timezoneuseoffset' => 'Òmíràn (ẹ tọ́ka ìyàtọ̀)',
-'timezoneoffset' => 'Ìyàtọ̀¹:',
 'servertime' => 'Àsìkò ẹ̀rọ-ìwọ̀fà:',
 'guesstimezone' => 'Parí látí inú awòtakùn',
 'timezoneregion-africa' => 'Áfríkà',
@@ -1441,6 +1421,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',
@@ -1463,7 +1444,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"',
 
@@ -1929,10 +1910,8 @@ Oríìlà kọ̀ọ̀kan ní àjápọ̀ sí àtúnjúwe àkọ́kọ́ àti èk
 'protectedpages' => 'Àwọn ojúewé aláàbò',
 'protectedpages-indef' => 'Àwọn àbò aláìlópin',
 'protectedpages-cascade' => 'Àwọn àbò atẹ̀léra nìkan',
-'protectedpagestext' => 'Àwọn ojúewé ìsàlẹ̀ yìí jẹ́ dídáàbòbò láti yínìpòdà tàbí síṣàtúnṣe',
 'protectedpagesempty' => 'Kò sí àwọn ojúewé kankan tó ní àbò pẹ̀lú àwọn pàrámítà wọ̀nyí.',
 'protectedtitles' => 'Àwọn àkọlé ajẹ́dídáàbòbò',
-'protectedtitlestext' => 'Àwọn àkọlé ìsàlẹ̀ yìí jẹ́ dídáàbòbò láti dá',
 'protectedtitlesempty' => 'Kò sí àwọn àkolé kankan tó ní àbò pẹ̀lú àwọn pàrámítà wọ̀nyí.',
 'listusers' => 'Àkójọ àwọn oníṣe',
 'listusers-editsonly' => 'Ìfihàn àwọn oníṣe tí wọ́n ní àtúnṣe níkan',
@@ -2368,7 +2347,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):',
@@ -2963,7 +2942,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',
@@ -3279,10 +3258,6 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'exif-urgency-low' => 'Kúkúrú ($1)',
 'exif-urgency-high' => 'Gíga ($1)',
 
-# External editor support
-'edit-externally' => "Ẹ lo ìmúlò òde láti ṣ'àtúnṣe fáìlì yìí",
-'edit-externally-help' => '(Ẹ wo [https://www.mediawiki.org/wiki/Manual:External_editors ìlànà ìṣètò] fún ẹ̀kúnrẹ́rẹ́)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'gbogbo',
 'namespacesall' => 'gbogbo',
@@ -3466,8 +3441,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Àwọn ojúewé pàtàkì',
-'specialpages-note' => '----
-* Àwọn ojúewé pàtàkì onídéédé.
+'specialpages-note' => '* Àwọn ojúewé pàtàkì onídéédé.
 * <span class="mw-specialpagerestricted">Àwọn ojúewé pàtàkì àìgbàláyè.</span>',
 'specialpages-group-maintenance' => 'Àwọn ìjábọ̀ ìtọ́jú',
 'specialpages-group-other' => 'Àwọn ojúewé pàtàkì míràn',
index 7bd19a2..27e5910 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( '解封' ),
@@ -378,7 +376,6 @@ $messages = array(
 'qbedit' => '編輯',
 'qbpageoptions' => '呢一頁',
 'qbmyoptions' => '我嘅選項',
-'qbspecialpages' => '特別頁',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -492,8 +489,6 @@ $1',
 'ok' => 'OK',
 'retrievedfrom' => '由 "$1" 收',
 'youhavenewmessages' => '你有$1($2)。',
-'newmessageslink' => '新信息',
-'newmessagesdifflink' => '上次更改',
 'youhavenewmessagesmulti' => '你響 $1 有新信',
 'editsection' => '編輯',
 'editold' => '編輯',
@@ -578,9 +573,6 @@ $1',
 'perfcached' => '以下嘅資料係嚟自快取,可能唔係最新嘅。 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' => '響呢一頁嘅更新現時停用。啲資料將唔會即時更新。',
-'wrong_wfQuery_params' => 'wfQuery() 嘅參數錯誤<br />
-函數: $1<br />
-查詢: $2',
 'viewsource' => '睇吓原始碼',
 'actionthrottled' => '動作已壓制',
 'actionthrottledtext' => '基於反垃圾嘢嘅考量,你而家響呢段短時間之內限制咗去做呢一個動作,而你已經超過咗個上限。請響幾分鐘之後再試過。',
@@ -1093,12 +1085,8 @@ $1",
 # Search results
 'searchresults' => '搵嘢結果',
 'searchresults-title' => '對"$1"嘅搵嘢結果',
-'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' => '頁面文字符合',
 'notextmatches' => '冇頁面文字符合',
 'prevn' => '前$1',
@@ -1107,10 +1095,8 @@ $1",
 'nextn-title' => '後$1項結果',
 'shown-title' => '每版顯示$1項結果',
 'viewprevnext' => '去睇 ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => '搵嘢選項',
 'searchmenu-exists' => "'''響呢個wiki度有一版叫做\"[[:\$1]]\"。'''",
 'searchmenu-new' => "'''響呢個wiki度開呢版\"[[:\$1]]\"!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去睇以呢個做開頭嘅版]]',
 'searchprofile-articles' => '內容頁',
 'searchprofile-project' => '幫手同計劃頁',
 'searchprofile-images' => '多媒體',
@@ -1138,13 +1124,10 @@ $1",
 'showingresults' => "'自#'''$2'''起顯示最多'''$1'''個結果。",
 'showingresultsnum' => "自#'''$2'''起顯示'''$3'''個結果。",
 'showingresultsheader' => "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''項結果|第'''$1 - $2'''項,共'''$3'''項結果}}",
-'nonefound' => "'''注意''': 只有一啲空間名係會作預設搵嘢。試吓''all:''去搵全部嘅嘢(包埋討論版、模等),或用需要嘅空間名做前綴。",
 'search-nonefound' => '響個查詢度無結果配合。',
-'powersearch' => '進階搵嘢',
 'powersearch-legend' => '進階搵嘢',
 'powersearch-ns' => '喺以下嘅空間名度搵:',
 'powersearch-redir' => '彈去清單',
-'powersearch-field' => '搵',
 'powersearch-togglelabel' => '查:',
 'powersearch-toggleall' => '全部',
 'powersearch-togglenone' => '無',
@@ -1155,8 +1138,6 @@ $1",
 'preferences' => '喜好設定',
 'mypreferences' => '自訂喜好',
 'prefs-edits' => '編輯數:',
-'prefsnologin' => '重未登入',
-'prefsnologintext' => '你一定要去<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>設定好用戶喜好值先。',
 'changepassword' => '改密碼',
 'prefs-skin' => '畫面',
 'skin-preview' => '預覽',
@@ -1177,7 +1158,6 @@ $1",
 'prefs-email' => '電郵選項',
 'prefs-rendering' => '外觀',
 'saveprefs' => '儲存',
-'resetprefs' => '清除未保存嘅更改',
 'restoreprefs' => '恢復全部預設設定',
 'prefs-editing' => '編輯中',
 'rows' => '列:',
@@ -1195,7 +1175,6 @@ $1",
 'localtime' => '本地時間:',
 'timezoneuseserverdefault' => '用伺服器預設值',
 'timezoneuseoffset' => '其他 (指定偏移)',
-'timezoneoffset' => '偏移¹:',
 'servertime' => '伺機器時間:',
 'guesstimezone' => '由瀏覽器填上',
 'timezoneregion-africa' => '非洲',
@@ -1421,6 +1400,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嘅新更改',
@@ -1818,10 +1798,8 @@ $1',
 'protectedpages' => '保護頁',
 'protectedpages-indef' => '只有無期保謢頁',
 'protectedpages-cascade' => '只有連串保護頁',
-'protectedpagestext' => '以下嘅頁面係受保頁面,唔能夠移動或編輯',
 'protectedpagesempty' => '響呢啲參數度,現時無頁面響度保護緊。',
 'protectedtitles' => '保護咗嘅標題',
-'protectedtitlestext' => '下面係一個保護咗唔䦒得嘅標題',
 'protectedtitlesempty' => '響呢啲參數之下並無標題保護住。',
 'listusers' => '用戶一覽',
 'listusers-editsonly' => '只顯示有編輯嘅用戶',
@@ -3037,10 +3015,6 @@ Variants for Chinese language
 'exif-gpsdirection-t' => '真實方向',
 'exif-gpsdirection-m' => '地磁方向',
 
-# External editor support
-'edit-externally' => '用外面程式來改呢個檔案',
-'edit-externally-help' => '(去[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] 睇多啲資料)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
@@ -3229,8 +3203,7 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅
 
 # Special:SpecialPages
 'specialpages' => '特別頁',
-'specialpages-note' => '----
-* 標準特別頁。
+'specialpages-note' => '* 標準特別頁。
 * <strong class="mw-specialpagerestricted">有限制嘅特別頁。</strong>',
 'specialpages-group-maintenance' => '維護報告',
 'specialpages-group-other' => '其它特別頁',
@@ -3318,4 +3291,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 720d5c5..bf2f637 100644 (file)
@@ -185,7 +185,6 @@ $messages = array(
 'qbedit' => 'Bewerk',
 'qbpageoptions' => 'Paginaopties',
 'qbmyoptions' => 'Mien opties',
-'qbspecialpages' => 'Speciaole pahina’s',
 'faq' => 'FAQ (veehestelde vraehen)',
 'faqpage' => 'Project:Veehestelde vraehen',
 
@@ -299,8 +298,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',
@@ -377,9 +374,6 @@ Maek hiervon maldienge bie 'n [[Special:ListUsers/sysop|beheêrder]] von {{SITEN
 'perfcached' => "De hehevens komm'n uut een cache en zien meuhlijk nie actueel. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => "De hehevens komm'n uut een cache en zien voe 't lèst biehewerkt op $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Deêze pagina kan nie biehewerkt worn. Deêze hehevens worn nie ververst.',
-'wrong_wfQuery_params' => 'Foute parameters voe wfQuery()<br />
-Functie: $1<br />
-Zoekopdracht: $2',
 'viewsource' => 'brontekst bekieken',
 'actionthrottled' => 'Handelienge tehenehouwen',
 'actionthrottledtext' => "As maetrehel tehen spam is 't antal keern per tiedseêneid da je deêze handelienge kan verrichen beperkt.
@@ -779,12 +773,8 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
 # Search results
 'searchresults' => 'Zoekresultaoten',
 'searchresults-title' => 'Zuikresultaot\'n vò "$1"',
-'searchresulttext' => 'Voe meêr informaotie over zoeken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:ulpe}}]].',
-'searchsubtitle' => "Je zoch ni '''[[:$1]]'''",
-'searchsubtitleinvalid' => 'Voe zoekopdracht "$1"',
 'toomanymatches' => 'Der waeren te vee resultaoten. Probeer asjeblieft een aore zoekopdracht.',
 'titlematches' => 'Overeênkomst mie onderwerp',
-'notitlematches' => "Hin resultaoten evon'n",
 'textmatches' => 'Overeênkomst mie inoud',
 'notextmatches' => "Hin pagina's evon'n",
 'prevn' => 'vorrege {{PLURAL:$1|$1}}',
@@ -816,9 +806,7 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
 'showingresults' => "Ieronder {{PLURAL:$1|sti '''1''' resultaot|staen '''$1''' resultaoten}} vanof #'''$2'''.",
 'showingresultsnum' => "Ieronder {{PLURAL:$3|sti '''1''' resultaot|staen '''$3''' resultaoten}} vanof #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaot '''$1''' von '''$3'''|Resultaot'n '''$1 - $2''' von '''$3'''}} vò '''$4'''",
-'nonefound' => "'''Opmerkieng''': mislukte zoekopdrachten worn vaok veroôrzaekt deur zoekn ni vee voekomm'nde woôrn as \"van\" en \"de\", die an nie in de indexen worn openoom'n, of deur meêr dan eên zoekterm op te heven. Allin pagina's die an aolle zoektermen bevatt'n worn openoom'n in de resultaoten.",
 'search-nonefound' => "Er zin geen resultaot'n vò je zoekopdracht.",
-'powersearch' => 'Uutebreid zoeken',
 'powersearch-legend' => 'Uutebreid zoeken',
 'search-external' => 'Extern zoeken',
 'searchdisabled' => "Zoeken in {{SITENAME}} is nie meuhlijk.
@@ -829,8 +817,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
 'preferences' => 'Vòkeuren',
 'mypreferences' => 'Mien vòkeuren',
 'prefs-edits' => 'Antal bewerkiengen:',
-'prefsnologin' => 'Nie anemeld',
-'prefsnologintext' => 'Je mò <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anemeld]</span> zien om je vòkeuren te kunn\'n instell\'n.',
 'changepassword' => 'Wachtwoôrd wiezigen',
 'prefs-skin' => 'Vurmhevieng',
 'skin-preview' => 'Voevertoônienge',
@@ -843,7 +829,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
 'prefs-watchlist-edits' => 'Maximaol antal bewerkiengen in de uutebreide volglieste:',
 'prefs-misc' => 'Rest',
 'saveprefs' => 'Opslaene',
-'resetprefs' => 'Nie opeslogen wiezigiengen herstellen',
 'prefs-editing' => 'Bewerken',
 'rows' => 'Rehels:',
 'columns' => "Kolomm'n:",
@@ -855,7 +840,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
 'savedprefs' => 'Je vòkeuren zien opeslogen.',
 'timezonelegend' => 'Tiedzône',
 'localtime' => 'Lokaole tied',
-'timezoneoffset' => 'Tiedsverschil¹',
 'servertime' => 'Servertied',
 'guesstimezone' => 'Vanuut de browser toevoehen',
 'allowemail' => 'Laet e-mail van aore gebrukers toe.',
@@ -1317,10 +1301,6 @@ Aorre veld'n worr'n verborr'n.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => "Dit bestand in 'n extern programma bewark'n",
-'edit-externally-help' => '(zieë de [https://www.mediawiki.org/wiki/Manual:External_editors handleidienge vò instelliengen] vò meê informaosie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aol',
 'namespacesall' => 'aol',
index 936502d..9ba481a 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个子分类}}。',
@@ -520,7 +539,6 @@ $messages = array(
 'qbedit' => '编辑',
 'qbpageoptions' => '该页面',
 'qbmyoptions' => '我的页面',
-'qbspecialpages' => '特殊页面',
 'faq' => '常见问题',
 'faqpage' => 'Project:常见问题',
 
@@ -529,7 +547,7 @@ $messages = array(
 'vector-action-delete' => '删除',
 'vector-action-move' => '移动',
 'vector-action-protect' => '保护',
-'vector-action-undelete' => '恢复',
+'vector-action-undelete' => '还原',
 'vector-action-unprotect' => '更改保护',
 'vector-simplesearch-preference' => '启用简化的搜索栏(仅Vector皮肤)',
 'vector-view-create' => '创建',
@@ -552,7 +570,7 @@ $messages = array(
 'searcharticle' => '前往',
 'history' => '页面历史',
 'history_short' => '历史',
-'updatedmarker' => 'æ\9b´æ\96°äº\8eæ\88\91ä¸\8a次访é\97®å\90\8e',
+'updatedmarker' => 'æ\88\91ä¸\8a次访é\97®å\90\8eç\9a\84ä¿®æ\94¹',
 'printableversion' => '打印版本',
 'permalink' => '永久链接',
 'print' => '打印',
@@ -563,8 +581,8 @@ $messages = array(
 'create-this-page' => '创建本页',
 'delete' => '删除',
 'deletethispage' => '删除本页',
-'undeletethispage' => '恢复本页',
-'undelete_short' => '恢复$1个编辑',
+'undeletethispage' => '还原本页',
+'undelete_short' => '还原{{PLURAL:$1|$1个编辑}}',
 'viewdeleted_short' => '查看$1个被删除的编辑',
 'protect' => '保护',
 'protect_change' => '更改',
@@ -635,12 +653,10 @@ $1',
 'backlinksubtitle' => '←$1',
 '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' => '编辑',
@@ -732,9 +748,6 @@ $1',
 'perfcached' => '以下是缓存的数据,可能不是最新的数据。缓存中最多有{{PLURAL:$1|$1条结果}}。',
 'perfcachedts' => '以下是缓存的数据,最后更新于$1。缓存中最多有{{PLURAL:$4|$4条结果}}。',
 'querypage-no-updates' => '该页面的更新目前停用。这里的数据不会马上刷新。',
-'wrong_wfQuery_params' => '错误的参数被传递到 wfQuery()<br />
-函数:$1<br />
-查询:$2',
 'viewsource' => '查看源代码',
 'viewsource-title' => '查看$1的源代码',
 'actionthrottled' => '操作被限制',
@@ -764,7 +777,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''",
@@ -854,7 +868,7 @@ $2',
 'passwordtooshort' => '您的密码至少需要$1个字符。',
 'password-name-match' => '您的密码必须和您的用户名不相同。',
 'password-login-forbidden' => '这个用户名称及密码的使用是被禁止的。',
-'mailmypassword' => '电子邮件发送新密码',
+'mailmypassword' => '重置密码',
 'passwordremindertitle' => '{{SITENAME}}的新临时密码',
 'passwordremindertext' => '有人(可能是您,来自IP地址$1)已请求{{SITENAME}}的新密码($4)。
 用户“$2”的一个新临时密码现在已被设置好为“$3”。
@@ -921,7 +935,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上无法使用邮件功能。',
@@ -961,17 +975,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' => '粗体文字',
@@ -1045,9 +1059,7 @@ $2
 'accmailtitle' => '密码已寄出',
 'accmailtext' => "为[[User talk:$1|$1]]随机生成的密码已送至$2。登录后可以在''[[Special:ChangePassword|更改密码]]''页面中修改。",
 'newarticle' => '(新页面)',
-'newarticletext' => '您进入了一个尚未创建的页面。
-要创建该页面,请在下面的编辑框中输入内容(详情参见[[{{MediaWiki:Helppage}}|帮助页]])。
-如果您误入此页,请点击浏览器中的“返回”按钮。',
+'newarticletext' => "你点击了一个尚不存在的页面的链接。要创建该页面,请在下面的编辑框中输入内容(更多信息请见[[{{MediaWiki:Helppage}}|帮助页面]])。如果你是错误地到达这里,请点击你的浏览器的'''返回'''按钮。",
 'anontalkpagetext' => "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
 'noarticletext' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑本页面]。</span>',
 'noarticletext-nopermission' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志],但你没有权限创建本页面。',
@@ -1058,10 +1070,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 。",
@@ -1238,7 +1250,7 @@ $3的理由是''$2''",
 'rev-suppressed-diff-view' => "差异对比中的一次修订已被'''监督隐藏'''。您可以对比此差异。详细信息可在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中找到。",
 'rev-delundel' => '显示/隐藏',
 'rev-showdeleted' => '显示',
-'revisiondelete' => '删除/恢复版本',
+'revisiondelete' => '删除/还原版本',
 'revdelete-nooldid-title' => '无效目标版本',
 'revdelete-nooldid-text' => '您尚未指定一个目标修订去进行这个功能、
 所指定的修订不存在,或者您尝试去隐藏现时的修订。',
@@ -1352,12 +1364,8 @@ $1",
 # Search results
 'searchresults' => '搜索结果',
 'searchresults-title' => '“$1”的搜索结果',
-'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' => '页面内容匹配',
 'notextmatches' => '没有页面内容匹配',
 'prevn' => '前$1个',
@@ -1366,10 +1374,8 @@ $1",
 'nextn-title' => '后$1个结果',
 'shown-title' => '每页显示$1项结果',
 'viewprevnext' => '查看($1{{int:pipe-separator}}$2)($3)',
-'searchmenu-legend' => '搜索选项',
 'searchmenu-exists' => "'''本wiki上有名为“[[:$1]]”的页面。'''",
 'searchmenu-new' => "'''在本wiki上新建名为“[[:$1]]”的页面!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去浏览以此为首的页面]]',
 'searchprofile-articles' => '内容页面',
 'searchprofile-project' => '帮助和项目页面',
 'searchprofile-images' => '多媒体',
@@ -1397,13 +1403,10 @@ $1",
 'showingresults' => "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
 'showingresultsnum' => "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
 'showingresultsheader' => "关于'''$4'''的{{PLURAL:$5|第'''$1'''条结果,共'''$3'''条结果|第'''$1~$2'''条结果,共'''$3'''条结果}}",
-'nonefound' => "'''注意''':只有某些名字空间被默认搜索。请尝试给你的搜索内容添加前缀“all:”以搜索全部内容(包括讨论页面、模板等)或使用期望的名字空间作为前缀。",
 'search-nonefound' => '找不到和查询相匹配的结果。',
-'powersearch' => '高级搜索',
 'powersearch-legend' => '高级搜索',
 'powersearch-ns' => '在以下的名字空间中搜索:',
 'powersearch-redir' => '列出重定向',
-'powersearch-field' => '搜索',
 'powersearch-togglelabel' => '选择:',
 'powersearch-toggleall' => '全选',
 'powersearch-togglenone' => '全不选',
@@ -1415,8 +1418,7 @@ $1",
 'preferences' => '设置',
 'mypreferences' => '设置',
 'prefs-edits' => '编辑数:',
-'prefsnologin' => '未登录',
-'prefsnologintext' => '您必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>才能设置个人参数。',
+'prefsnologintext2' => '进行用户设置需要您$1。',
 'changepassword' => '更改密码',
 'prefs-skin' => '皮肤',
 'skin-preview' => '预览',
@@ -1430,9 +1432,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' => '更改电子邮件地址',
@@ -1440,7 +1442,6 @@ $1",
 'prefs-email' => '电子邮件',
 'prefs-rendering' => '显示',
 'saveprefs' => '保存',
-'resetprefs' => '清除未保存的更改',
 'restoreprefs' => '恢复所有默认设置(所有部分)',
 'prefs-editing' => '编辑',
 'rows' => '行:',
@@ -1452,16 +1453,13 @@ $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' => '当地时间:',
 'timezoneuseserverdefault' => '使用wiki默认值($1)',
 'timezoneuseoffset' => '其它(指定时差)',
-'timezoneoffset' => '时差¹:',
 'servertime' => '服务器时间:',
 'guesstimezone' => '使用浏览器设置',
 'timezoneregion-africa' => '非洲',
@@ -1502,9 +1500,7 @@ $1",
 'gender-unknown' => '我不愿意指明(被称为“他/她”)',
 'gender-male' => '他',
 'gender-female' => '她',
-'prefs-help-gender' => '这是选填项目。
-软件使用其以显示正确的性别称呼。
-该信息将会公开。',
+'prefs-help-gender' => '该设置为可选项目。软件根据它的值在称呼你及对他人提及你时使用适当的语法性别。该信息会被公开。',
 'email' => '电子邮件',
 'prefs-help-realname' => '真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。',
 'prefs-help-email' => '电子邮件是可选项,但是在您忘记密码时很有用。',
@@ -1525,9 +1521,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' => '电子邮件地址有效',
@@ -1611,7 +1607,7 @@ $1",
 'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
 'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
 'right-browsearchive' => '搜索被删除的页面',
-'right-undelete' => '恢复页面',
+'right-undelete' => '还原页面',
 'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
 'right-suppressionlog' => '查看非公开日志',
 'right-block' => '阻止其他用户编辑',
@@ -1679,7 +1675,7 @@ $1",
 'action-deleterevision' => '删除本版本',
 'action-deletedhistory' => '查看本页面被删除的历史',
 'action-browsearchive' => '搜索被删除的页面',
-'action-undelete' => '恢复本页',
+'action-undelete' => '还原本页',
 'action-suppressrevision' => '审查和恢复本隐藏版本',
 'action-suppressionlog' => '查看本非公开日志',
 'action-block' => '阻止该用户编辑',
@@ -1702,7 +1698,7 @@ $1",
 
 # Recent changes
 'nchanges' => '$1个更改',
-'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|自上次访问}}',
+'enhancedrc-since-last-visit' => '{{PLURAL:$1|上次访问后}}$1个',
 'enhancedrc-history' => '历史',
 'recentchanges' => '最近更改',
 'recentchanges-legend' => '最近更改选项',
@@ -1713,6 +1709,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之后的新更改',
@@ -1919,8 +1918,7 @@ $1',
 'zip-wrong-format' => '指定的文件不是一个 ZIP 文件。',
 'zip-bad' => '该文件是已损坏或以其它方式无法读取的 ZIP 文件。
 不能正确检查安全。',
-'zip-unsupported' => '该文件是 ZIP 文件,其中使用 MediaWiki 不支持的ZIP功能。
-不能正确检查安全。',
+'zip-unsupported' => '该文件是使用MediaWiki不支持的ZIP特性的ZIP文件。无法正确地检查其安全性。',
 
 # Special:UploadStash
 'uploadstash' => '上传隐藏',
@@ -2029,11 +2027,11 @@ $1',
 # File reversion
 'filerevert' => '恢复$1',
 'filerevert-legend' => '恢复文件',
-'filerevert-intro' => "您正在将文件'''[[Media:$1|$1]]'''恢复到[$4 于$2 $3的版本]。",
+'filerevert-intro' => "你将要恢复文件'''[[Media:$1|$1]]'''至[$4 $2 $3的版本]。",
 'filerevert-comment' => '原因:',
-'filerevert-defaultcomment' => '已经恢复到于$1 $2的版本',
+'filerevert-defaultcomment' => '恢复至$1 $2的版本',
 'filerevert-submit' => '恢复',
-'filerevert-success' => "'''[[Media:$1|$1]]'''已经恢复到[$4 于$2 $3的版本]。",
+'filerevert-success' => "'''[[Media:$1|$1]]'''已经恢复至[$4 $2 $3的版本]。",
 'filerevert-badversion' => '文件并无所请求时间戳下的早期本地版本。',
 
 # File deletion
@@ -2138,7 +2136,7 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1字节',
-'ncategories' => '$1个分类',
+'ncategories' => '$1个{{PLURAL:$1|分类}}',
 'ninterwikis' => '$1个跨语言链接',
 'nlinks' => '$1个链接',
 'nmembers' => '$1个成员',
@@ -2180,10 +2178,8 @@ $1',
 'protectedpages' => '受保护页面',
 'protectedpages-indef' => '仅无限期保护',
 'protectedpages-cascade' => '仅连锁保护',
-'protectedpagestext' => '以下页面受到保护,不能移移或编辑',
 'protectedpagesempty' => '在这些参数下没有页面正在保护。',
 'protectedtitles' => '受保护标题',
-'protectedtitlestext' => '以下标题受到保护,不能创建',
 'protectedtitlesempty' => '在这些参数之下并无标题正在保护。',
 'listusers' => '用户列表',
 'listusers-editsonly' => '只显示有编辑的用户',
@@ -2387,7 +2383,7 @@ $1',
 'enotif_body_intro_moved' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|移动}},请浏览<$3>查看当前版本。',
 'enotif_body_intro_restored' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|恢复}},请浏览<$3>查看当前版本。',
 'enotif_body_intro_changed' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|更改}},请浏览 $3 查看当前版本。',
-'enotif_lastvisited' => '请浏览 $1 查看你上次访问后的所有更改。',
+'enotif_lastvisited' => '请浏览 $1 查看你上次访问后的所有更改。',
 'enotif_lastdiff' => '请浏览 $1 查看该更改。',
 'enotif_anon_editor' => '匿名用户$1',
 'enotif_body' => '亲爱的$WATCHINGUSERNAME:
@@ -2401,7 +2397,7 @@ $PAGEINTRO$NEWPAGE
 电子邮件:$PAGEEDITOR_EMAIL
 用户页面:$PAGEEDITOR_WIKI
 
-在你访问该页面之前,我们不会发送新增更改的通知。
+在你登录并访问该页面之前,我们不会发送新增更改的通知。
 你也可以重设你的监视列表中所有监视页面的通知标志。
 
 {{SITENAME}}通知系统
@@ -2435,16 +2431,16 @@ $UNWATCHURL
 'dellogpage' => '删除日志',
 'dellogpagetext' => '下面是最近的删除的列表。',
 'deletionlog' => '删除记录',
-'reverted' => '恢复到早期版本',
+'reverted' => '恢复到较早的版本',
 'deletecomment' => '原因:',
 'deleteotherreason' => '其他/附加原因:',
 'deletereasonotherlist' => '其他原因',
 'deletereason-dropdown' => '*常见删除原因
-** 广告
-** 破坏行为
-** 侵犯著作权
-** 作者申请
-** 损坏的重定向',
+**广告
+**破坏行为
+**侵犯著作权
+**作者申请
+**受损重定向',
 'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
@@ -2456,12 +2452,12 @@ $UNWATCHURL
 'rollbacklinkcount' => '回退$1次编辑',
 'rollbacklinkcount-morethan' => '回退超过$1次的编辑',
 'rollbackfailed' => '回退失败',
-'cantrollback' => '无法恢复编辑。最后的贡献者是本文的唯一作者。',
+'cantrollback' => '无法恢复编辑,最后贡献者是该页面的唯一作者。',
 'alreadyrolled' => '无法回退[[User:$2|$2]]([[User talk:$2|讨论]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])对[[:$1]]的编辑,其他人已经编辑或者回退了该页。
 
 本页最后的编辑者是[[User:$3|$3]]([[User talk:$3|讨论]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
 'editcomment' => '编辑摘要:"<i>$1</i>"。',
-'revertpage' => '已恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后一个修订版本',
+'revertpage' => '恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后版本',
 'revertpage-nouser' => '恢复由隐藏用户的编辑到{{GENDER:$1|[[User:$1|$1]]}}的最后一个修订版本',
 'rollback-success' => '已恢复$1的编辑,更改回$2的最后版本。',
 
@@ -2552,15 +2548,15 @@ $UNWATCHURL
 'undelete-revision' => '$1由$3(在$4 $5)所编写的已删除修订版本:',
 'undeleterevision-missing' => '无效或丢失的修订版本。您可能使用了错误的链接,或者此修订版本已经被从存档中恢复或移除。',
 'undelete-nodiff' => '找不到先前的修订版本。',
-'undeletebtn' => '恢复',
-'undeletelink' => '查看/恢复',
+'undeletebtn' => '还原',
+'undeletelink' => '查看/还原',
 'undeleteviewlink' => '查看',
 'undeletereset' => '重设',
 'undeleteinvert' => '反向选择',
 'undeletecomment' => '原因:',
-'undeletedrevisions' => '$1个版本已恢复',
-'undeletedrevisions-files' => '$1个版本和$2个文件已恢复',
-'undeletedfiles' => '$1个文件已经被恢复',
+'undeletedrevisions' => '{{PLURAL:$1|$1个版本}}被还原',
+'undeletedrevisions-files' => '{{PLURAL:$1|$1个版本}}和{{PLURAL:$2|$2个文件}}被还原',
+'undeletedfiles' => '{{PLURAL:$1|$1个文件}}被还原',
 'cannotundelete' => '恢复删除失败:
 $1',
 'undeletedpage' => "'''$1已经被恢复'''
@@ -3056,35 +3052,35 @@ $2',
 'tooltip-watchlistedit-raw-submit' => '更新监视列表',
 'tooltip-recreate' => '重建该页面,无论是否被删除。',
 'tooltip-upload' => '开始上传',
-'tooltip-rollback' => '单击“回退”恢复上一位贡献者对本页的编辑',
+'tooltip-rollback' => '单击“回退”恢复最后贡献者对该页面的编辑',
 'tooltip-undo' => '“撤销”可以恢复该编辑并在预览模式下打开编辑表单。它允许在摘要中加入原因。',
 'tooltip-preferences-save' => '保存系统设置',
 'tooltip-summary' => '请输入简短的摘要',
 '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' => '该网站服务器不能提供您的客户端能识别的数据格式。',
@@ -3107,7 +3103,7 @@ $2',
 这可能是由于一个链往匹配黑名单的外部站点的链接引起的。',
 'spamprotectionmatch' => '以下文本触发了我们的垃圾链接过滤器:$1',
 'spambot_username' => 'MediaWiki垃圾链接清理器',
-'spam_reverting' => '恢复到不包含链接的最近修订版本$1',
+'spam_reverting' => '恢复至不包含$1的链接的最后版本',
 'spam_blanking' => '消隐所有包含链接至$1的修订',
 'spam_deleting' => '正在删除所有包含至$1的版本',
 'simpleantispam-label' => "反垃圾检查。
@@ -3288,7 +3284,7 @@ Variants for Chinese language
 'variantname-kk-cyrl' => 'kk-cyrl',
 
 # Metadata
-'metadata' => 'å\8e\9få§\8b数据',
+'metadata' => 'å\85\83数据',
 'metadata-help' => '此文件中包含有扩展的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。
 
 如果此文件的源文件已经被修改,一些信息在修改后的文件中将不能完全反映出来。',
@@ -3700,10 +3696,6 @@ Variants for Chinese language
 'exif-urgency-high' => '高($1)',
 'exif-urgency-other' => '用户定义的优先级($1)',
 
-# External editor support
-'edit-externally' => '用外部应用程序编辑本文件',
-'edit-externally-help' => '(更多信息请见[https://www.mediawiki.org/wiki/Manual:External_editors 安装说明])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '所有',
 'namespacesall' => '全部',
@@ -3928,9 +3920,9 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 
 # Special:SpecialPages
 'specialpages' => '特殊页面',
-'specialpages-note' => '----
-*普通特殊页面。
-*<span class="mw-specialpagerestricted">非公开特殊页面。</span>',
+'specialpages-note-top' => '图例',
+'specialpages-note' => '*普通特殊页面。
+*<span class="mw-specialpagerestricted">受限特殊页面。</span>',
 'specialpages-group-maintenance' => '维护报告',
 'specialpages-group-other' => '其它特殊页面',
 'specialpages-group-login' => '登录/创建账户',
@@ -4140,6 +4132,21 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'limitreport-templateargumentsize' => '模板参数大小',
 'limitreport-templateargumentsize-value' => '$1/$2 字节',
 'limitreport-expansiondepth' => '最高扩展深度',
-'limitreport-expensivefunctioncount' => '高级函数分析器',
+'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 b2b4b91..52dfc6c 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 個子分類。',
@@ -424,7 +426,6 @@ $messages = array(
 'qbedit' => '編輯',
 'qbpageoptions' => '頁面選項',
 'qbmyoptions' => '我的選項',
-'qbspecialpages' => '特殊頁面',
 'faq' => '常見問題解答',
 'faqpage' => 'Project:常見問題解答',
 
@@ -539,12 +540,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' => '編輯',
@@ -643,9 +642,6 @@ $1',
 'perfcachedts' => '下列是快取資料,其最後更新時間是$1。只有{{PLURAL:$4|一個結果|$4個結果}}會被顯示。 A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => '目前禁止對此頁面進行更新。
 此處的資料將不能被立即重新整理。',
-'wrong_wfQuery_params' => '錯誤的參數被傳遞到 wfQuery()<br />
-函數:$1<br />
-查詢:$2',
 'viewsource' => '檢視原始碼',
 'viewsource-title' => '檢視 $1 的原始碼',
 'actionthrottled' => '動作已壓制',
@@ -675,7 +671,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 +767,7 @@ $2',
 'passwordtooshort' => '您的密碼不能少於$1個字元。',
 'password-name-match' => '您的密碼必須跟您的用戶名不相同。',
 'password-login-forbidden' => '這個用戶名稱及密碼的使用是被禁止的。',
-'mailmypassword' => '將新密碼寄給我',
+'mailmypassword' => '重設密碼',
 'passwordremindertitle' => '{{SITENAME}}的新臨時密碼',
 'passwordremindertext' => '有人(可能是您,來自IP位址$1)已請求{{SITENAME}}的新密碼 ($4)。
 用戶"$2"的一個新臨時密碼現在已被設定好為"$3"。
@@ -841,7 +838,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)已禁用電子郵件功能。',
@@ -1301,12 +1298,8 @@ $1",
 # Search results
 'searchresults' => '搜尋結果',
 'searchresults-title' => '對「$1」的搜尋結果',
-'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' => '頁面內容相符',
 'notextmatches' => '沒有頁面內容匹配',
 'prevn' => '前 $1 個',
@@ -1315,10 +1308,8 @@ $1",
 'nextn-title' => '後 $1 項結果',
 'shown-title' => '每頁顯示 $1 項結果',
 'viewprevnext' => '檢視($1 {{int:pipe-separator}} $2)($3)',
-'searchmenu-legend' => '搜尋選項',
 'searchmenu-exists' => "'''在這個 wiki 上已有一頁面叫做「[[:$1]]」。'''",
 'searchmenu-new' => "'''在這個 wiki 上建立這個頁面「[[:$1]]」!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去瀏覽以此為首的頁面]]',
 'searchprofile-articles' => '內容頁面',
 'searchprofile-project' => '幫助和計劃頁面',
 'searchprofile-images' => '多媒體',
@@ -1346,13 +1337,10 @@ $1",
 'showingresults' => '下面顯示從第 <b>$2</b> 條開始的 <b>$1</b> 條結果:',
 'showingresultsnum' => "下面顯示從第 '''$2''' 條開始的 '''{{PLURAL:$3|1|$3}}''' 條結果。",
 'showingresultsheader' => "對'''$4'''的{{PLURAL:$5|第 '''$1''' 至第 '''$3''' 項結果|第 '''$1 - $2''' 項,共 '''$3''' 項結果}}",
-'nonefound' => "'''注意:'''只有一些名字空間是會作為預設搜尋。嘗試''all:''去搜尋全部的頁面(包埋討論頁面、模板等),或可用需要的名字空間作為前綴。",
 'search-nonefound' => '在查詢中無結果相符。',
-'powersearch' => '進階搜尋',
 'powersearch-legend' => '進階搜尋',
 'powersearch-ns' => '在以下的名字空間中搜尋:',
 'powersearch-redir' => '重定向清單',
-'powersearch-field' => '搜尋',
 'powersearch-togglelabel' => '核取:',
 'powersearch-toggleall' => '所有',
 'powersearch-togglenone' => '無',
@@ -1364,13 +1352,12 @@ $1",
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
 'prefs-edits' => '編輯次數:',
-'prefsnologin' => '還未登入',
-'prefsnologintext' => '您必須先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>才能設置個人參數。',
+'prefsnologintext2' => '請$1以進入用戶設定。',
 'changepassword' => '變更密碼',
 'prefs-skin' => '外觀',
 'skin-preview' => '預覽',
 'datedefault' => '預設值',
-'prefs-beta' => 'Beta 功能',
+'prefs-beta' => '測試功能',
 'prefs-datetime' => '日期和時間',
 'prefs-labs' => '實驗中的功能',
 'prefs-user-pages' => '使用者頁面',
@@ -1389,7 +1376,6 @@ $1",
 'prefs-email' => '電子郵件選項',
 'prefs-rendering' => '外觀',
 'saveprefs' => '儲存',
-'resetprefs' => '清除未儲存的變更',
 'restoreprefs' => '還原所有預設設定(所有部分)',
 'prefs-editing' => '編輯',
 'rows' => '行:',
@@ -1409,7 +1395,6 @@ $1",
 'localtime' => '當地時間:',
 'timezoneuseserverdefault' => '使用預設($1)',
 'timezoneuseoffset' => '其他 (指定偏移)',
-'timezoneoffset' => '時差¹:',
 'servertime' => '伺服器時間:',
 'guesstimezone' => '從瀏覽器填寫',
 'timezoneregion-africa' => '非洲',
@@ -1529,7 +1514,7 @@ $1",
 'grouppage-bot' => '{{ns:project}}:機器人',
 'grouppage-sysop' => '{{ns:project}}:管理員',
 'grouppage-bureaucrat' => '{{ns:project}}:行政員',
-'grouppage-suppress' => '{{ns:project}}:監督',
+'grouppage-suppress' => '{{ns:project}}:監督',
 
 # Rights
 'right-read' => '閱讀頁面',
@@ -1663,6 +1648,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 以來的新變更',
@@ -2141,10 +2129,8 @@ $1',
 'protectedpages' => '受保護頁面',
 'protectedpages-indef' => '只有無期之保護頁面',
 'protectedpages-cascade' => '只有連鎖之保護頁面',
-'protectedpagestext' => '以下頁面已經被保護以防止移動或編輯',
 'protectedpagesempty' => '在這些參數下沒有頁面正在保護。',
 'protectedtitles' => '受保護標題',
-'protectedtitlestext' => '以下的頁面已經被保護以防止建立',
 'protectedtitlesempty' => '在這些參數之下並無標題正在保護。',
 'listusers' => '用戶列表',
 'listusers-editsonly' => '只顯示有編輯的用戶',
@@ -2357,13 +2343,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
@@ -3675,10 +3661,6 @@ Variants for Chinese language
 'exif-urgency-high' => '高( $1 )',
 'exif-urgency-other' => '用戶定義( $1 )',
 
-# External editor support
-'edit-externally' => '用外部程式編輯此檔案',
-'edit-externally-help' => '(請參見[https://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
@@ -3904,10 +3886,9 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 
 # Special:SpecialPages
 'specialpages' => '特殊頁面',
-'specialpages-note' => '----
-* 標準特殊頁面。
-* <strong class="mw-specialpagerestricted">有限制的特殊頁面。</strong>
-* <span class="mw-specialpagecached">用於重新整理的特殊頁面(可能過時)。</span>',
+'specialpages-note-top' => '圖例',
+'specialpages-note' => '* 標準特殊頁面。
+* <span class="mw-specialpagerestricted">用於重新整理的特殊頁面(可能過時)。</span>',
 'specialpages-group-maintenance' => '維護報告',
 'specialpages-group-other' => '其它特殊頁面',
 'specialpages-group-login' => '登入/建立新帳號',
@@ -4119,4 +4100,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 d3a863b..c2aede0 100644 (file)
@@ -29,7 +29,6 @@
  * @file
  * @since 1.20
  */
-
 class CLDRPluralRuleEvaluator {
        /**
         * Evaluate a number against a set of plural rules. If a rule passes,
@@ -48,8 +47,8 @@ class CLDRPluralRuleEvaluator {
         * Convert a set of rules to a compiled form which is optimised for
         * fast evaluation. The result will be an array of strings, and may be cached.
         *
-        * @param $rules The rules to compile
-        * @return An array of compile rules.
+        * @param array $rules The rules to compile
+        * @return array An array of compile rules.
         */
        public static function compile( array $rules ) {
                // We can't use array_map() for this because it generates a warning if
@@ -63,6 +62,10 @@ class CLDRPluralRuleEvaluator {
        /**
         * Evaluate a compiled set of rules returned by compile(). Do not allow
         * the user to edit the compiled form, or else PHP errors may result.
+        *
+        * @param int The number to be evaluated against the rules
+        * @param array The associative array of plural rules in pluralform => rule format.
+        * @return int The index of the plural form which passed the evaluation
         */
        public static function evaluateCompiled( $number, array $rules ) {
                // The compiled form is RPN, with tokens strictly delimited by
@@ -96,11 +99,11 @@ class CLDRPluralRuleEvaluator {
        /**
         * Do a single operation
         *
-        * @param $token string The token string
-        * @param $left The left operand. If it is an object, its state may be destroyed.
-        * @param $right The right operand
+        * @param string $token The token string
+        * @param mixed $left The left operand. If it is an object, its state may be destroyed.
+        * @param mixed $right The right operand
         * @throws CLDRPluralRuleError
-        * @return mixed
+        * @return mixed The operation result
         */
        private static function doOperation( $token, $left, $right ) {
                if ( in_array( $token, array( 'in', 'not-in', 'within', 'not-within' ) ) ) {
@@ -150,8 +153,19 @@ class CLDRPluralRuleEvaluator {
  * Evaluator helper class representing a range list.
  */
 class CLDRPluralRuleEvaluator_Range {
+       /**
+        * The parts
+        *
+        * @var array
+        */
        public $parts = array();
 
+       /**
+        * Initialize a new instance of CLDRPluralRuleEvaluator_Range
+        *
+        * @param int $start The start of the range
+        * @param int|bool $end The end of the range, or false if the range is not bounded.
+        */
        function __construct( $start, $end = false ) {
                if ( $end === false ) {
                        $this->parts[] = $start;
@@ -161,16 +175,18 @@ class CLDRPluralRuleEvaluator_Range {
        }
 
        /**
-        * Determine if the given number is inside the range. If $integerConstraint
-        * is true, the number must additionally be an integer if it is to match
-        * any interval part.
+        * Determine if the given number is inside the range.
+        *
+        * @param int $number The number to check
+        * @param bool $integerConstraint If true, also asserts the number is an integer; otherwise, number simply has to be inside the range.
+        * @return bool True if the number is inside the range; otherwise, false.
         */
        function isNumberIn( $number, $integerConstraint = true ) {
                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 {
@@ -185,14 +201,18 @@ class CLDRPluralRuleEvaluator_Range {
        /**
         * Readable alias for isNumberIn( $number, false ), and the implementation
         * of the "within" operator.
+        *
+        * @param int $number The number to check
+        * @return bool True if the number is inside the range; otherwise, false.
         */
        function isNumberWithin( $number ) {
                return $this->isNumberIn( $number, false );
        }
 
        /**
-        * Add another part to this range. The supplied new part may either be a
-        * range object itself, or a single number.
+        * Add another part to this range.
+        *
+        * @param mixed The part to add, either a range object itself or a single number.
         */
        function add( $other ) {
                if ( $other instanceof self ) {
@@ -203,7 +223,10 @@ class CLDRPluralRuleEvaluator_Range {
        }
 
        /**
-        * For debugging
+        * Returns the string representation of the rule evaluator range.
+        * The purpose of this method is to help debugging.
+        *
+        * @return string The string representation of the rule evaluator range
         */
        function __toString() {
                $s = 'Range(';
@@ -227,8 +250,39 @@ class CLDRPluralRuleEvaluator_Range {
  * Helper class for converting rules to reverse polish notation (RPN).
  */
 class CLDRPluralRuleConverter {
-       public $rule, $pos, $end;
+       /**
+        * The rule
+        *
+        * @var string
+        */
+       public $rule;
+
+       /**
+        * The position
+        *
+        * @var int
+        */
+       public $pos;
+
+       /**
+        * The last position possible
+        *
+        * @var int
+        */
+       public $end;
+
+       /**
+        * The operators
+        *
+        * @var array
+        */
        public $operators = array();
+
+       /**
+        * The operands
+        *
+        * @var array
+        */
        public $operands = array();
 
        /**
@@ -268,6 +322,9 @@ class CLDRPluralRuleConverter {
 
        /**
         * Convert a rule to RPN. This is the only public entry point.
+        *
+        * @param $rule The rule to convert
+        * @return string The RPN representation of the rule
         */
        public static function convert( $rule ) {
                $parser = new self( $rule );
@@ -285,6 +342,8 @@ class CLDRPluralRuleConverter {
 
        /**
         * Do the operation.
+        *
+        * @return string The RPN representation of the rule (e.g. "5 3 mod n is")
         */
        protected function doConvert() {
                $expectOperator = true;
@@ -341,8 +400,9 @@ class CLDRPluralRuleConverter {
        }
 
        /**
-        * Fetch the next token from the input string. Return it as a
-        * CLDRPluralRuleConverter_Fragment object.
+        * Fetch the next token from the input string.
+        *
+        * @return CLDRPluralRuleConverter_Fragment The next token
         */
        protected function nextToken() {
                if ( $this->pos >= $this->end ) {
@@ -390,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 );
                        }
@@ -441,6 +501,8 @@ class CLDRPluralRuleConverter {
 
        /**
         * Create a numerical expression object
+        *
+        * @return CLDRPluralRuleConverter_Expression The numerical expression
         */
        protected function newNumber( $text, $pos ) {
                return new CLDRPluralRuleConverter_Expression( $this, 'number', $text, $pos, strlen( $text ) );
@@ -448,6 +510,8 @@ class CLDRPluralRuleConverter {
 
        /**
         * Create a binary operator
+        *
+        * @return CLDRPluralRuleConverter_Operator The operator
         */
        protected function newOperator( $type, $pos, $length ) {
                return new CLDRPluralRuleConverter_Operator( $this, $type, $pos, $length );
@@ -517,6 +581,11 @@ class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragmen
  * messages), and the binary operator at that location.
  */
 class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
+       /**
+        * The name
+        *
+        * @var string
+        */
        public $name;
 
        /**
@@ -527,6 +596,8 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
         *   r = range
         *
         * A number is a kind of range.
+        *
+        * @var array
         */
        static $opTypes = array(
                'or' => 'bbb',
@@ -544,6 +615,8 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
 
        /**
         * Map converting from the abbrevation to the full form.
+        *
+        * @var array
         */
        static $typeSpecMap = array(
                'b' => 'boolean',
@@ -551,11 +624,26 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
                'r' => 'range',
        );
 
+       /**
+        * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
+        *
+        * @param CLDRPluralRuleConverter $parser The parser
+        * @param string $name The operator name
+        * @param int $pos The position
+        * @param int $pos The length
+        */
        function __construct( $parser, $name, $pos, $length ) {
                parent::__construct( $parser, $pos, $length );
                $this->name = $name;
        }
 
+       /**
+        * Compute the operation
+        *
+        * @param CLDRPluralRuleConverter_Expression $left The left part of the expression
+        * @param CLDRPluralRuleConverter_Expression $right The right part of the expression
+        * @return CLDRPluralRuleConverter_Expression The result of the operation
+        */
        public function operate( $left, $right ) {
                $typeSpec = self::$opTypes[$this->name];
 
index 30e93c9..fb2cd8c 100644 (file)
@@ -787,7 +787,6 @@ abstract class Maintenance {
                        $this->output( "\n" );
                }
 
-
                // Script specific parameters not defined on construction by
                // Maintenance::addDefaultParams()
                $scriptSpecificParams = array_diff_key(
@@ -1274,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;
                }
@@ -1285,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 8fdb958..f16772c 100644 (file)
@@ -82,7 +82,6 @@ class TextPassDumper extends BackupDumper {
         */
        protected $db;
 
-
        /**
         * Drop the database connection $this->db and try to get a new one.
         *
@@ -123,7 +122,6 @@ class TextPassDumper extends BackupDumper {
                        throw new MWException( __METHOD__ . " rotating DB failed to obtain new load balancer (" . $e->getMessage() . ")" );
                }
 
-
                // 2. The Connection, through the load balancer.
                try {
                        $this->db = $this->lb->getConnection( DB_SLAVE, 'dump' );
@@ -132,7 +130,6 @@ class TextPassDumper extends BackupDumper {
                }
        }
 
-
        function initProgress( $history = WikiExporter::FULL ) {
                parent::initProgress();
                $this->timeOfCheckpoint = $this->startTime;
@@ -420,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++;
 
@@ -556,7 +553,6 @@ class TextPassDumper extends BackupDumper {
                return "";
        }
 
-
        /**
         * May throw a database error if, say, the server dies during query.
         * @param $id
index d42f9f7..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 ) {
@@ -75,7 +75,10 @@ do {
                        }
                        $file = $args[0];
                        print "Loading cdb file $file...";
-                       $fileHandle = CdbReader::open( $file );
+                       try {
+                               $fileHandle = CdbReader::open( $file );
+                       } catch ( CdbException $e ) {}
+
                        if ( !$fileHandle ) {
                                print "not a cdb file or unable to read it\n";
                        } else {
@@ -91,7 +94,12 @@ do {
                                print "Need to specify a key, Luke\n";
                                break;
                        }
-                       $res = $fileHandle->get( $args[0] );
+                       try {
+                               $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";
                        } elseif ( is_string( $res ) ) {
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 b6ca281..543156d 100644 (file)
@@ -1197,7 +1197,6 @@ disabled
 disabledtranscode
 disablemail
 disablepp
-disablesuggest
 disclaimerpage
 diskussion
 displayname
@@ -2530,9 +2529,7 @@ newheader
 newid
 newimages
 newlen
-newmessagesdifflink
 newmessagesdifflinkplural
-newmessageslink
 newmessageslinkplural
 newname
 newnames
@@ -3126,7 +3123,6 @@ prefixindex
 prefixsearchdisabled
 prefs
 prefsection
-prefsnologin
 prefsnologintext2
 prefsubmit
 preload
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 5d783cb..37c2a31 100644 (file)
@@ -29,7 +29,6 @@ $originalDir = getcwd();
 require_once __DIR__ . '/commandLine.inc';
 require_once __DIR__ . '/backupTextPass.inc';
 
-
 $dumper = new TextPassDumper( $argv );
 
 if ( !isset( $options['help'] ) ) {
index 1a9293c..0ec1955 100644 (file)
@@ -64,7 +64,7 @@ By default, outputs relative paths against the parent directory of \$wgUploadDir
                                $this->mSharedSupplement = true;
                        }
                }
-               $this-> { $this->mAction } ( $this->mShared );
+               $this->{ $this->mAction } ( $this->mShared );
                if ( $this->mSharedSupplement ) {
                        $this->fetchUsed( true );
                }
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" );
                }
        }
diff --git a/maintenance/fuzz-tester.php b/maintenance/fuzz-tester.php
deleted file mode 100644 (file)
index 548bb2f..0000000
+++ /dev/null
@@ -1,2692 +0,0 @@
-<?php
-/**
- * Performs fuzz-style testing of MediaWiki's parser and forms.
- *
- * Copyright © 2006 Nick Jenkins
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Maintenance
- * @author Nick Jenkins ( http://nickj.org/ ).
-
-
-Started: 18 May 2006.
-
-Description:
-  Performs fuzz-style testing of MediaWiki's parser and forms.
-
-How:
-  - Generate lots of nasty wiki text.
-  - Ask the Parser to render that wiki text to HTML, or ask MediaWiki's forms
-       to deal with that wiki text.
-  - Check MediaWiki's output for problems.
-  - Repeat.
-
-Why:
-  - To help find bugs.
-  - To help find security issues, or potential security issues.
-
-What type of problems are being checked for:
-  - Unclosed tags.
-  - Errors or interesting warnings from Tidy.
-  - PHP errors / warnings / notices.
-  - MediaWiki internal errors.
-  - Very slow responses.
-  - No response from apache.
-  - Optionally checking for malformed HTML using the W3C validator.
-
-Background:
-  Many of the wikiFuzz class methods are a modified PHP port,
-  of a "shameless" Python port, of LCAMTUF'S MANGELME:
-  - http://www.securiteam.com/tools/6Z00N1PBFK.html
-  - http://www.securityfocus.com/archive/1/378632/2004-10-15/2004-10-21/0
-
-Video:
-  There's an XviD video discussing this fuzz tester. You can get it from:
-  http://files.nickj.org/MediaWiki/Fuzz-Testing-MediaWiki-xvid.avi
-
-Requirements:
-  To run this, you will need:
-  - Command-line PHP5, with PHP-curl enabled (not all installations have this
-       enabled - try "apt-get install php5-curl" if you're on Debian to install).
-  - the Tidy standalone executable. ("apt-get install tidy").
-
-Optional:
-  - If you want to run the curl scripts, you'll need standalone curl installed
-       ("apt-get install curl")
-  - For viewing the W3C validator output on a command line, the "html2text"
-       program may be useful ("apt-get install html2text")
-
-Saving tests and test results:
-  Any of the fuzz tests which find problems are saved for later review.
-  In order to help track down problems, tests are saved in a number of
-  different formats. The default filename extensions and their meanings are:
-  - ".test.php" : PHP script that reproduces just that one problem using PHP-Curl.
-  - ".curl.sh"  : Shell script that reproduces that problem using standalone curl.
-  - ".data.bin" : The serialized PHP data so that this script can re-run the test.
-  - ".info.txt" : A human-readable text file with details of the field contents.
-
-Wiki configuration for testing:
-  You should make some additions to LocalSettings.php in order to catch the most
-  errors. Note this configuration is for **TESTING PURPOSES ONLY**, and is IN NO
-  WAY, SHAPE, OR FORM suitable for deployment on a hostile network. That said,
-  personally I find these additions to be the most helpful for testing purposes:
-
-  // --------- Start ---------
-  // Everyone can do everything. Very useful for testing, yet useless for deployment.
-  $wgGroupPermissions['*']['autoconfirmed']   = true;
-  $wgGroupPermissions['*']['block']           = true;
-  $wgGroupPermissions['*']['bot']             = true;
-  $wgGroupPermissions['*']['delete']          = true;
-  $wgGroupPermissions['*']['deletedhistory']  = true;
-  $wgGroupPermissions['*']['deleterevision']  = true;
-  $wgGroupPermissions['*']['editinterface']   = true;
-  $wgGroupPermissions['*']['hiderevision']    = true;
-  $wgGroupPermissions['*']['import']          = true;
-  $wgGroupPermissions['*']['importupload']    = true;
-  $wgGroupPermissions['*']['minoredit']       = true;
-  $wgGroupPermissions['*']['move']            = true;
-  $wgGroupPermissions['*']['patrol']          = true;
-  $wgGroupPermissions['*']['protect']         = true;
-  $wgGroupPermissions['*']['proxyunbannable'] = true;
-  $wgGroupPermissions['*']['renameuser']      = true;
-  $wgGroupPermissions['*']['reupload']        = true;
-  $wgGroupPermissions['*']['reupload-shared'] = true;
-  $wgGroupPermissions['*']['rollback']        = true;
-  $wgGroupPermissions['*']['siteadmin']       = true;
-  $wgGroupPermissions['*']['unwatchedpages']  = true;
-  $wgGroupPermissions['*']['upload']          = true;
-  $wgGroupPermissions['*']['userrights']      = true;
-  $wgGroupPermissions['*']['renameuser']      = true;
-  $wgGroupPermissions['*']['makebot']         = true;
-  $wgGroupPermissions['*']['makesysop']       = true;
-
-  // Enable weird and wonderful options:
-                                                         // Increase default error reporting level.
-  error_reporting (E_ALL);    // At a later date could be increased to E_ALL | E_STRICT
-  $wgEnableUploads = true;    // enable uploads.
-  $wgDBerrorLog = "/root/mediawiki-db-error-log.txt";  // log DB errors, replace with suitable path.
-  $wgShowSQLErrors = true;    // Show SQL errors (instead of saying the query was hidden).
-  $wgShowExceptionDetails = true;  // want backtraces.
-  $wgEnableAPI = true;        // enable API.
-  $wgEnableWriteAPI = true;   // enable API.
-
-  // Install & enable Parser Hook extensions to increase code coverage. E.g.:
-  require_once "extensions/ParserFunctions/ParserFunctions.php";
-  require_once "extensions/Cite/Cite.php";
-  require_once "extensions/inputbox/inputbox.php";
-  require_once "extensions/Sort/Sort.php";
-  require_once "extensions/wikihiero/wikihiero.php";
-  require_once "extensions/CharInsert/CharInsert.php";
-  require_once "extensions/FixedImage/FixedImage.php";
-
-  // Install & enable Special Page extensions to increase code coverage. E.g.:
-  require_once "extensions/Cite/SpecialCite.php";
-  require_once "extensions/Renameuser/SpecialRenameuser.php";
-  // --------- End ---------
-
-  If you want to try E_STRICT error logging, add this to the above:
-  // --------- Start ---------
-  error_reporting (E_ALL | E_STRICT);
-  set_error_handler( 'error_handler' );
-  function error_handler ($type, $message, $file=__FILE__, $line=__LINE__) {
-        if ($message == "var: Deprecated. Please use the public/private/protected modifiers") return;
-        print "<br />\n<b>Strict Standards:</b> Type: <b>$type</b>:  $message in <b>$file</b> on line <b>$line</b><br />\n";
-  }
-  // --------- End ---------
-
-  Also add/change this in LocalSettings.php:
-  // --------- Start ---------
-  $wgEnableProfileInfo = true;
-  $wgDBserver = "localhost"; // replace with DB server hostname
-  // --------- End ---------
-
-Usage:
-  Run with "php fuzz-tester.php".
-  To see the various command-line options, run "php fuzz-tester.php --help".
-  To stop the script, press Ctrl-C.
-
-Console output:
-  - If requested, first any previously failed tests will be rerun.
-  - Then new tests will be generated and run. Any tests that fail will be saved,
-       and a brief message about why they failed will be printed on the console.
-  - The console will show the number of tests run, time run, number of tests
-       failed, number of tests being done per minute, and the name of the current test.
-
-TODO:
-  Some known things that could improve this script:
-  - Logging in with cookie jar storage needed for some tests (as there are some
-       pages that cannot be tested without being logged in, and which are currently
-       untested - e.g. Special:Emailuser, Special:Preferences, adding to Watchist).
-  - Testing of Timeline extension (I cannot test as ploticus has/had issues on
-       my architecture).
-
-*/
-
-// ///////////////////////// COMMAND LINE HELP ////////////////////////////////////
-
-// This is a command line script, load MediaWiki env (gives command line options);
-require_once __DIR__ . '/commandLine.inc';
-
-// if the user asked for an explanation of command line options.
-if ( isset( $options["help"] ) ) {
-       print <<<ENDS
-MediaWiki $wgVersion fuzz tester
-Usage: php {$_SERVER["SCRIPT_NAME"]} [--quiet] [--base-url=<url-to-test-wiki>]
-                                                  [--directory=<failed-test-path>] [--include-binary]
-                                                  [--w3c-validate] [--delete-passed-retests] [--help]
-                                                  [--user=<username>] [--password=<password>]
-                                                  [--rerun-failed-tests] [--max-errors=<int>]
-                                                  [--max-runtime=<num-minutes>]
-                                                  [--specific-test=<test-name>]
-
-Options:
-  --quiet                 : Hides passed tests, shows only failed tests.
-  --base-url              : URL to a wiki on which to run the tests.
-                                                       The "http://" is optional and can be omitted.
-  --directory             : Full path to directory for storing failed tests.
-                                                       Will be created if it does not exist.
-  --include-binary        : Includes non-alphanumeric characters in the tests.
-  --w3c-validate          : Validates pages using the W3C's web validator.
-                                                       Slow. Currently many pages fail validation.
-  --user                  : Login name of a valid user on your test wiki.
-  --password              : Password for the valid user on your test wiki.
-  --delete-passed-retests : Will delete retests that now pass.
-                                                       Requires --rerun-failed-tests to be meaningful.
-  --rerun-failed-tests    : Whether to rerun any previously failed tests.
-  --max-errors            : Maximum number of errors to report before exiting.
-                                                       Does not include errors from --rerun-failed-tests
-  --max-runtime           : Maximum runtime, in minutes, to run before exiting.
-                                                       Only applies to new tests, not --rerun-failed-tests
-  --specific-test         : Runs only the specified fuzz test.
-                                                       Only applies to new tests, not --rerun-failed-tests
-  --keep-passed-tests     : Saves all test files, even those that pass.
-  --help                  : Show this help message.
-
-Example:
-  If you wanted to fuzz test a nightly MediaWiki checkout using cron for 1 hour,
-  and only wanted to be informed of errors, and did not want to redo previously
-  failed tests, and wanted a maximum of 100 errors, then you could do:
-  php {$_SERVER["SCRIPT_NAME"]} --quiet --max-errors=100 --max-runtime=60
-
-
-ENDS;
-
-       exit( 0 );
-}
-
-
-// if we got command line options, check they look valid.
-$validOptions = array ( "quiet", "base-url", "directory", "include-binary",
-               "w3c-validate", "user", "password", "delete-passed-retests",
-               "rerun-failed-tests", "max-errors",
-               "max-runtime", "specific-test", "keep-passed-tests", "help" );
-if ( !empty( $options ) ) {
-       $unknownArgs = array_diff ( array_keys( $options ), $validOptions );
-       foreach ( $unknownArgs as $invalidArg ) {
-               print "Ignoring invalid command-line option: --$invalidArg\n";
-       }
-}
-
-
-// /////////////////////////// CONFIGURATION ////////////////////////////////////
-
-// URL to some wiki on which we can run our tests.
-if ( !empty( $options["base-url"] ) ) {
-       define( "WIKI_BASE_URL", $options["base-url"] );
-} else {
-       define( "WIKI_BASE_URL", $wgServer . $wgScriptPath . '/' );
-}
-
-// The directory name where we store the output.
-// Example for Windows: "c:\\temp\\wiki-fuzz"
-if ( !empty( $options["directory"] ) ) {
-       define( "DIRECTORY", $options["directory"] );
-} else {
-       define( "DIRECTORY", "{$wgUploadDirectory}/fuzz-tests" );
-}
-
-// Should our test fuzz data include binary strings?
-define( "INCLUDE_BINARY",  isset( $options["include-binary"] ) );
-
-// Whether we want to validate HTML output on the web.
-// At the moment very few generated pages will validate, so not recommended.
-define( "VALIDATE_ON_WEB", isset( $options["w3c-validate"] ) );
-// URL to use to validate our output:
-define( "VALIDATOR_URL",  "http://validator.w3.org/check" );
-
-// Location of Tidy standalone executable.
-define( "PATH_TO_TIDY",  "/usr/bin/tidy" );
-
-// The name of a user who has edited on your wiki. Used
-// when testing the Special:Contributions and Special:Userlogin page.
-if ( !empty( $options["user"] ) ) {
-       define( "USER_ON_WIKI", $options["user"] );
-} else {
-       define( "USER_ON_WIKI", "nickj" );
-}
-
-// The password of the above user. Used when testing the login page,
-// and to do this we sometimes need to login successfully.
-if ( !empty( $options["password"] ) ) {
-       define( "USER_PASSWORD", $options["password"] );
-} else {
-       // And no, this is not a valid password on any public wiki.
-       define( "USER_PASSWORD", "nickj" );
-}
-
-// If we have a test that failed, and then we run it again, and it passes,
-// do you want to delete it or keep it?
-define( "DELETE_PASSED_RETESTS", isset( $options["delete-passed-retests"] ) );
-
-// Do we want to rerun old saved tests at script startup?
-// Set to true to help catch regressions, or false if you only want new stuff.
-define( "RERUN_OLD_TESTS", isset( $options["rerun-failed-tests"] ) );
-
-// File where the database errors are logged. Should be defined in LocalSettings.php.
-define( "DB_ERROR_LOG_FILE", $wgDBerrorLog );
-
-// Run in chatty mode (all output, default), or run in quiet mode (only prints out details of failed tests)?
-define( "QUIET", isset( $options["quiet"] ) );
-
-// Keep all test files, even those that pass. Potentially useful to tracking input that causes something
-// unusual to happen, if you don't know what "unusual" is until later.
-define( "KEEP_PASSED_TESTS", isset( $options["keep-passed-tests"] ) );
-
-// The maximum runtime, if specified.
-if ( !empty( $options["max-runtime"] ) && intval( $options["max-runtime"] ) > 0 ) {
-       define( "MAX_RUNTIME", intval( $options["max-runtime"] ) );
-}
-
-// The maximum number of problems to find, if specified. Excludes retest errors.
-if ( !empty( $options["max-errors"] ) && intval( $options["max-errors"] ) > 0 ) {
-       define( "MAX_ERRORS", intval( $options["max-errors"] ) );
-}
-
-// if the user has requested a specific test (instead of all tests), and the test they asked for looks valid.
-if ( !empty( $options["specific-test"] ) ) {
-       if ( class_exists( $options["specific-test"] ) && get_parent_class( $options["specific-test"] ) == "pageTest" ) {
-               define( "SPECIFIC_TEST", $options["specific-test"] );
-       }
-       else {
-               print "Ignoring invalid --specific-test\n";
-       }
-}
-
-// Define the file extensions we'll use:
-define( "PHP_TEST" , ".test.php" );
-define( "CURL_TEST", ".curl.sh" );
-define( "DATA_FILE", ".data.bin" );
-define( "INFO_FILE", ".info.txt" );
-define( "HTML_FILE", ".wiki_preview.html" );
-
-// If it goes wrong, we want to know about it.
-error_reporting( E_ALL | E_STRICT );
-
-// //////////////  A CLASS THAT GENERATES RANDOM NASTY WIKI & HTML STRINGS  //////////////////////
-
-class wikiFuzz {
-
-       // Only some HTML tags are understood with params by MediaWiki, the rest are ignored.
-       // List the tags that accept params below, as well as what those params are.
-       public static $data = array(
-                       "B"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "CAPTION"    => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
-                       "CENTER"     => array( "CLASS", "STYLE", "ID", "lang", "dir", "title" ),
-                       "DIV"        => array( "CLASS", "STYLE", "ID", "align", "lang", "dir", "title" ),
-                       "FONT"       => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "face", "size", "color" ),
-                       "H1"         => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
-                       "H2"         => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
-                       "HR"         => array( "STYLE", "CLASS", "ID", "WIDTH", "lang", "dir", "title", "size", "noshade" ),
-                       "LI"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "value" ),
-                       "TABLE"      => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "BORDER", "CELLPADDING",
-                                                                  "CELLSPACING", "lang", "dir", "title", "summary", "frame", "rules" ),
-                       "TD"         => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
-                                                                 "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
-                                                                 "dir", "title", "char", "charoff" ),
-                       "TH"         => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
-                                                                 "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
-                                                                 "dir", "title", "char", "charoff" ),
-                       "TR"         => array( "CLASS", "STYLE", "ID", "BGCOLOR", "ALIGN", "VALIGN", "lang", "dir", "title", "char", "charoff" ),
-                       "UL"         => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "type" ),
-                       "P"          => array( "style", "class", "id", "align", "lang", "dir", "title" ),
-                       "blockquote" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "cite" ),
-                       "span"       => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
-                       "code"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "tt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "small"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "big"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "s"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "u"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "del"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
-                       "ins"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
-                       "sub"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "sup"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "ol"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "start" ),
-                       "br"         => array( "CLASS", "ID", "STYLE", "title", "clear" ),
-                       "cite"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "var"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "ruby"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "rt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "rp"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "dt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "dl"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "em"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "strong"     => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "i"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-                       "thead"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
-                       "tfoot"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
-                       "tbody"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
-                       "colgroup"   => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign', 'span', 'width' ),
-                       "col"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign', 'span', 'width' ),
-                       "pre"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "width" ),
-
-                       // extension tags that accept parameters:
-                       "sort"         => array( "order", "class" ),
-                       "ref"          => array( "name" ),
-                       "categorytree" => array( "hideroot", "mode", "style" ),
-                       "chemform"     => array( "link", "wikilink", "query" ),
-                       "section"      => array( "begin", "new" ),
-
-                       // older MW transclusion.
-                       "transclude"   => array( "page" ),
-                               );
-
-       // The types of the HTML that we will be testing were defined above
-       // Note: this needs to be initialized later to be equal to: array_keys(wikiFuzz::$data);
-       // as such, it also needs to also be publicly modifiable.
-       public static $types;
-
-
-       // Some attribute values.
-       static private $other = array( "&", "=", ":", "?", "\"", "\n", "%n%n%n%n%n%n%n%n%n%n%n%n", "\\" );
-       static private $ints  = array(
-                       // various numbers
-                       "0", "-1", "127", "-7897", "89000", "808080", "90928345",
-                       "0xfffffff", "ffff",
-
-                       // Different ways of saying: '
-                       "&#0000039;", // Long UTF-8 Unicode encoding
-                       "&#39;",  // dec version.
-                       "&#x27;", // hex version.
-                       "&#xA7;", // malformed hex variant, MSB not zero.
-
-                       // Different ways of saying: "
-                       "&#0000034;", // Long UTF-8 Unicode encoding
-                       "&#34;",
-                       "&#x22;", // hex version.
-                       "&#xA2;", // malformed hex variant, MSB not zero.
-
-                       // Different ways of saying: <
-                       "<",
-                       "&#0000060",  // Long UTF-8 Unicode encoding without semicolon (Mediawiki wants the colon)
-                       "&#0000060;", // Long UTF-8 Unicode encoding with semicolon
-                       "&#60;",
-                       "&#x3C;",     // hex version.
-                       "&#xBC;",     // malformed hex variant, MSB not zero.
-                       "&#x0003C;",  // mid-length hex version
-                       "&#X00003C;", // slightly longer hex version, with capital "X"
-
-                       // Different ways of saying: >
-                       ">",
-                       "&#0000062;", // Long UTF-8 Unicode encoding
-                       "&#62;",
-                       "&#x3E;",     // hex version.
-                       "&#xBE;",     // malformed variant, MSB not zero.
-
-                       // Different ways of saying: [
-                       "&#0000091;", // Long UTF-8 Unicode encoding
-                       "&#91;",
-                       "&#x5B;",     // hex version.
-
-                       // Different ways of saying: {{
-                       "&#0000123;&#0000123;", // Long UTF-8 Unicode encoding
-                       "&#123;&#123;",
-                       "&#x7B;&#x7B;",         // hex version.
-
-                       // Different ways of saying: |
-                       "&#0000124;", // Long UTF-8 Unicode encoding
-                       "&#124;",
-                       "&#x7C;",     // hex version.
-                       "&#xFC;",     // malformed hex variant, MSB not zero.
-
-                       // a "lignature" - http://www.robinlionheart.com/stds/html4/spchars#ligature
-                       // &#8204; == &zwnj;
-                       "&#8204;"
-                               );
-
-       // Defines various wiki-related bits of syntax, that can potentially cause
-       // MediaWiki to do something other than just print that literal text.
-       static private $ext = array(
-                       // links, templates, parameters.
-                       "[[", "]]", "{{", "}}", "|", "[", "]", "{{{", "}}}", "|]]",
-
-                       // wiki tables.
-                       "\n{|", "\n|}",
-                       "!",
-                       "\n!",
-                       "!!",
-                       "||",
-                       "\n|-", "| ", "\n|",
-
-                       // section headings.
-                       "=", "==", "===", "====", "=====", "======",
-
-                       // lists (ordered and unordered) and indentation.
-                       "\n*", "*", "\n:", ":",
-                       "\n#", "#",
-
-                       // definition lists (dl, dt, dd), newline, and newline with pre, and a tab.
-                       "\n;", ";", "\n ",
-
-                       // Whitespace: newline, tab, space.
-                       "\n", "\t", " ",
-
-                       // Some XSS attack vectors from http://ha.ckers.org/xss.html
-                       "&#x09;", // tab
-                       "&#x0A;", // newline
-                       "&#x0D;", // carriage return
-                       "\0",     // null character
-                       " &#14; ", // spaces and meta characters
-                       "'';!--\"<XSS>=&{()}", // compact injection of XSS & SQL tester
-
-                       // various NULL fields
-                       "%00",
-                       "&#00;",
-                       "\0",
-
-                       // horizontal rule.
-                       "-----", "\n-----",
-
-                       // signature, redirect, bold, italics.
-                       "~~~~", "#REDIRECT [[", "'''", "''",
-
-                       // comments.
-                       "<!--", "-->",
-
-                       // quotes.
-                       "\"", "'",
-
-                       // tag start and tag end.
-                       "<", ">",
-
-                       // implicit link creation on URIs.
-                       "http://",
-                       "https://",
-                       "ftp://",
-                       "irc://",
-                       "news:",
-                       'gopher://',
-                       'telnet://',
-                       'nntp://',
-                       'worldwind://',
-                       'mailto:',
-
-                       // images.
-                       "[[image:",
-                       ".gif",
-                       ".png",
-                       ".jpg",
-                       ".jpeg",
-                       'thumbnail=',
-                       'thumbnail',
-                       'thumb=',
-                       'thumb',
-                       'right',
-                       'none',
-                       'left',
-                       'framed',
-                       'frame',
-                       'enframed',
-                       'centre',
-                       'center',
-                       "Image:",
-                       "[[:Image",
-                       'px',
-                       'upright=',
-                       'border',
-
-                       // misc stuff to throw at the Parser.
-                       '%08X',
-                       '/',
-                       ":x{|",
-                       "\n|+",
-                       "<noinclude>",
-                       "</noinclude>",
-                       " \302\273",
-                       " :",
-                       " !",
-                       " ;",
-                       "\302\253",
-                       "[[category:",
-                       "?=",
-                       "(",
-                       ")",
-                       "]]]",
-                       "../",
-                       "{{{{",
-                       "}}}}",
-                       "[[Special:",
-                       "<includeonly>",
-                       "</includeonly>",
-                       "<!--MWTEMPLATESECTION=",
-                       '<!--MWTOC-->',
-
-                       // implicit link creation on booknum, RFC, and PubMed ID usage (both with and without IDs)
-                       "ISBN 2",
-                       "RFC 000",
-                       "PMID 000",
-                       "ISBN ",
-                       "RFC ",
-                       "PMID ",
-
-                       // magic words:
-                       '__NOTOC__',
-                       '__FORCETOC__',
-                       '__NOEDITSECTION__',
-                       '__START__',
-                       '__NOTITLECONVERT__',
-                       '__NOCONTENTCONVERT__',
-                       '__END__',
-                       '__TOC__',
-                       '__NOTC__',
-                       '__NOCC__',
-                       "__FORCETOC__",
-                       "__NEWSECTIONLINK__",
-                       "__NOGALLERY__",
-
-                       // more magic words / internal templates.
-                       '{{PAGENAME}}',
-                       '{{PAGENAMEE}}',
-                       '{{NAMESPACE}}',
-                       "{{MSG:",
-                       "}}",
-                       "{{MSGNW:",
-                       "}}",
-                       "{{INT:",
-                       "}}",
-                       '{{SITENAME}}',
-                       "{{NS:",
-                       "}}",
-                       "{{LOCALURL:",
-                       "}}",
-                       "{{LOCALURLE:",
-                       "}}",
-                       "{{SCRIPTPATH}}",
-                       "{{GRAMMAR:gentiv|",
-                       "}}",
-                       "{{REVISIONID}}",
-                       "{{SUBPAGENAME}}",
-                       "{{SUBPAGENAMEE}}",
-                       "{{ns:0}}",
-                       "{{fullurle:",
-                       "}}",
-                       "{{subst::",
-                       "}}",
-                       "{{UCFIRST:",
-                       "}}",
-                       "{{UC:",
-                       '{{SERVERNAME}}',
-                       '{{SERVER}}',
-                       "{{RAW:",
-                       "}}",
-                       "{{PLURAL:",
-                       "}}",
-                       "{{LCFIRST:",
-                       "}}",
-                       "{{LC:",
-                       "}}",
-                       '{{CURRENTWEEK}}',
-                       '{{CURRENTDOW}}',
-                       "{{INT:{{LC:contribs-showhideminor}}|",
-                       "}}",
-                       "{{INT:googlesearch|",
-                       "}}",
-                        "{{ROOTPAGENAME}}",
-                       "{{BASEPAGENAME}}",
-                       "{{CONTENTLANGUAGE}}",
-                       "{{PAGESINNAMESPACE:}}",
-                       "{{#language:",
-                       "}}",
-                       "{{#special:",
-                       "}}",
-                       "{{#special:emailuser",
-                       "}}",
-
-                       // Some raw link for magic words.
-                       "{{NUMBEROFPAGES:R",
-                       "}}",
-                       "{{NUMBEROFUSERS:R",
-                       "}}",
-                       "{{NUMBEROFARTICLES:R",
-                       "}}",
-                       "{{NUMBEROFFILES:R",
-                       "}}",
-                       "{{NUMBEROFADMINS:R",
-                       "}}",
-                       "{{padleft:",
-                       "}}",
-                       "{{padright:",
-                       "}}",
-                       "{{DEFAULTSORT:",
-                       "}}",
-
-                       // internal Math "extension":
-                       "<math>",
-                       "</math>",
-
-                       // Parser extension functions:
-                       "{{#expr:",
-                       "{{#if:",
-                       "{{#ifeq:",
-                       "{{#ifexist:",
-                       "{{#ifexpr:",
-                       "{{#switch:",
-                       "{{#time:",
-                       "}}",
-
-                       // references table for the Cite extension.
-                       "<references/>",
-
-                       // Internal Parser tokens - try inserting some of these.
-                       "UNIQ25f46b0524f13e67NOPARSE",
-                       "UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002",
-                       "\x07UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002-QINU",
-
-                       // Inputbox extension:
-                       "<inputbox>\ntype=search\nsearchbuttonlabel=\n",
-                       "</inputbox>",
-
-                       // charInsert extension:
-                       "<charInsert>",
-                       "</charInsert>",
-
-                       // wikiHiero extension:
-                       "<hiero>",
-                       "</hiero>",
-
-                       // Image gallery:
-                       "<gallery>",
-                       "</gallery>",
-
-                       // FixedImage extension.
-                       "<fundraising/>",
-
-                       // Timeline extension: currently untested.
-
-                       // Nowiki:
-                       "<nOwIkI>",
-                       "</nowiki>",
-
-                       // an external image to test the external image displaying code
-                       "http://debian.org/Pics/debian.png",
-
-                       // LabeledSectionTransclusion extension.
-                       "{{#lstx:",
-                       "}}",
-                       "{{#lst:",
-                       "}}",
-                       "{{#lst:Main Page|",
-                       "}}"
-                       );
-
-       /**
-        ** Randomly returns one element of the input array.
-        */
-       public static function chooseInput( array $input ) {
-               $randindex = wikiFuzz::randnum( count( $input ) - 1 );
-               return $input[$randindex];
-       }
-
-       // Max number of parameters for HTML attributes.
-       static private $maxparams = 10;
-
-       /**
-        * Returns random number between finish and start.
-        * @param $finish
-        * @param $start int
-        * @return int
-        */
-       public static function randnum( $finish, $start = 0 ) {
-               return mt_rand( $start, $finish );
-       }
-
-       /**
-        * Returns a mix of random text and random wiki syntax.
-        * @return string
-        */
-       private static function randstring() {
-               $thestring = "";
-
-               for ( $i = 0; $i < 40; $i++ ) {
-                       $what = wikiFuzz::randnum( 1 );
-
-                       if ( $what == 0 ) { // include some random wiki syntax
-                               $which = wikiFuzz::randnum( count( wikiFuzz::$ext ) - 1 );
-                               $thestring .= wikiFuzz::$ext[$which];
-                       }
-                       else { // include some random text
-                               $char = INCLUDE_BINARY
-                                       // Decimal version:
-                                       // "&#" . wikiFuzz::randnum(255) . ";"
-                                       // Hex version:
-                                       ? "&#x" . str_pad( dechex( wikiFuzz::randnum( 255 ) ), wikiFuzz::randnum( 2, 7 ), "0", STR_PAD_LEFT ) . ";"
-                                       // A truly binary version:
-                                       // ? chr(wikiFuzz::randnum(0,255))
-                                       : chr( wikiFuzz::randnum( 126, 32 ) );
-
-                               $length = wikiFuzz::randnum( 8 );
-                               $thestring .= str_repeat ( $char, $length );
-                       }
-               }
-               return $thestring;
-       }
-
-       /**
-        * Returns either random text, or random wiki syntax, or random data from "ints",
-        *        or random data from "other".
-        * @return string
-        */
-       private static function makestring() {
-               $what = wikiFuzz::randnum( 2 );
-               if ( $what == 0 ) {
-                       return wikiFuzz::randstring();
-               } elseif ( $what == 1 ) {
-                       return wikiFuzz::$ints[wikiFuzz::randnum( count( wikiFuzz::$ints ) - 1 )];
-               } else {
-                       return wikiFuzz::$other[wikiFuzz::randnum( count( wikiFuzz::$other ) - 1 )];
-               }
-       }
-
-       /**
-        * Returns the matched character slash-escaped as in a C string
-        * Helper for makeTitleSafe callback
-        * @param $matches
-        * @return string
-        */
-       private static function stringEscape( $matches ) {
-               return sprintf( "\\x%02x", ord( $matches[1] ) );
-       }
-
-       /**
-        ** Strips out the stuff that Mediawiki balks at in a page's title.
-        **        Implementation copied/pasted from cleanupTable.inc & cleanupImages.php
-        * @param $str string
-        * @return string
-        */
-       public static function makeTitleSafe( $str ) {
-               $legalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF";
-               return preg_replace_callback(
-                               "/([^$legalTitleChars])/", 'wikiFuzz::stringEscape',
-                               $str );
-       }
-
-       /**
-        ** Returns a string of fuzz text.
-        * @return string
-        */
-       private static function loop() {
-               switch ( wikiFuzz::randnum( 3 ) ) {
-                       case 1: // an opening tag, with parameters.
-                               $string = "";
-                               $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
-                               $t = wikiFuzz::$types[$i];
-                               $arr = wikiFuzz::$data[$t];
-                               $string .= "<" . $t . " ";
-                               $num_params = min( wikiFuzz::$maxparams, count( $arr ) );
-                               for ( $z = 0; $z < $num_params; $z++ ) {
-                                       $badparam = $arr[wikiFuzz::randnum( count( $arr ) - 1 )];
-                                       $badstring = wikiFuzz::makestring();
-                                       $string .= $badparam . "=" . wikiFuzz::getRandQuote() . $badstring . wikiFuzz::getRandQuote() . " ";
-                               }
-                               $string .= ">\n";
-                               return $string;
-                       case 2: // a closing tag.
-                               $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
-                               return "</" . wikiFuzz::$types[$i] . ">";
-                       case 3: // a random string, between tags.
-                               return wikiFuzz::makeString();
-               }
-               return "";    // catch-all, should never be called.
-       }
-
-       /**
-        * Returns one of the three styles of random quote: ', ", and nothing.
-        * @return string
-        */
-       private static function getRandQuote() {
-               switch ( wikiFuzz::randnum( 3 ) ) {
-                       case 1 : return "'";
-                       case 2 : return "\"";
-                       default: return "";
-               }
-       }
-
-       /**
-        ** Returns fuzz text, with the parameter indicating approximately how many lines of text you want.
-        * @param $maxtypes int
-        * @return string
-        */
-       public static function makeFuzz( $maxtypes = 2 ) {
-               $page = "";
-               for ( $k = 0; $k < $maxtypes; $k++ ) {
-                       $page .= wikiFuzz::loop();
-               }
-               return $page;
-       }
-}
-
-
-// //////   MEDIAWIKI PAGES TO TEST, AND HOW TO TEST THEM  ///////
-
-/**
- ** A page test has just these things:
- **        1) Form parameters.
- **        2) the URL we are going to test those parameters on.
- **        3) Any cookies required for the test.
- **        4) Whether Tidy should validate the page. Defaults to true, but can be turned off.
- **        Declared abstract because it should be extended by a class
- **        that supplies these parameters.
- */
-abstract class pageTest {
-       protected $params;
-       protected $pagePath;
-       protected $cookie = "";
-       protected $tidyValidate = true;
-
-       public function getParams() {
-               return $this->params;
-       }
-
-       public function getPagePath() {
-               return $this->pagePath;
-       }
-
-       public function getCookie() {
-               return $this->cookie;
-       }
-
-       public function tidyValidate() {
-               return $this->tidyValidate;
-       }
-}
-
-
-/**
- ** a page test for the "Edit" page. Tests Parser.php and Sanitizer.php.
- */
-class editPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=WIKIFUZZ";
-
-               $this->params = array (
-                               "action"        => "submit",
-                               "wpMinoredit"   => wikiFuzz::makeFuzz( 2 ),
-                               "wpPreview"     => wikiFuzz::makeFuzz( 2 ),
-                               "wpSection"     => wikiFuzz::makeFuzz( 2 ),
-                               "wpEdittime"    => wikiFuzz::makeFuzz( 2 ),
-                               "wpSummary"     => wikiFuzz::makeFuzz( 2 ),
-                               "wpScrolltop"   => wikiFuzz::makeFuzz( 2 ),
-                               "wpStarttime"   => wikiFuzz::makeFuzz( 2 ),
-                               "wpAutoSummary" => wikiFuzz::makeFuzz( 2 ),
-                               "wpTextbox1"    => wikiFuzz::makeFuzz( 40 )  // the main wiki text, need lots of this.
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSection"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEdittime"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSummary"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpScrolltop"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpStarttime"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpAutoSummary"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpTextbox1"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Listusers".
- */
-class listusersTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Listusers";
-
-               $this->params = array (
-                               "title"        => wikiFuzz::makeFuzz( 2 ),
-                               "group"        => wikiFuzz::makeFuzz( 2 ),
-                               "username"     => wikiFuzz::makeFuzz( 2 ),
-                               "Go"           => wikiFuzz::makeFuzz( 2 ),
-                               "limit"        => wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "offset"       => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Search".
- */
-class searchTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Search";
-
-               $this->params = array (
-                               "action"        => "index.php?title=Special:Search",
-                               "ns0"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns1"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns2"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns3"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns4"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns5"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns6"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns7"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns8"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns9"           => wikiFuzz::makeFuzz( 2 ),
-                               "ns10"          => wikiFuzz::makeFuzz( 2 ),
-                               "ns11"          => wikiFuzz::makeFuzz( 2 ),
-                               "ns12"          => wikiFuzz::makeFuzz( 2 ),
-                               "ns13"          => wikiFuzz::makeFuzz( 2 ),
-                               "ns14"          => wikiFuzz::makeFuzz( 2 ),
-                               "ns15"          => wikiFuzz::makeFuzz( 2 ),
-                               "redirs"        => wikiFuzz::makeFuzz( 2 ),
-                               "search"        => wikiFuzz::makeFuzz( 2 ),
-                               "offset"        => wikiFuzz::chooseInput( array( "", "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "fulltext"      => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "searchx"       => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) )
-                                       );
-       }
-}
-
-
-/**
- ** a page test for "Special:Recentchanges".
- */
-class recentchangesTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Recentchanges";
-
-               $this->params = array (
-                               "action"        => wikiFuzz::makeFuzz( 2 ),
-                               "title"         => wikiFuzz::makeFuzz( 2 ),
-                               "namespace"     => wikiFuzz::chooseInput( range( -1, 15 ) ),
-                               "Go"            => wikiFuzz::makeFuzz( 2 ),
-                               "invert"        => wikiFuzz::chooseInput( array( "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "hideanons"     => wikiFuzz::chooseInput( array( "-1", "------'-------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'limit'         => wikiFuzz::chooseInput( array( "0", "-1", "---------'----0", "+1", "81340909772349234",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               "days"          => wikiFuzz::chooseInput( array( "-1", "----------'---0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "hideminor"     => wikiFuzz::chooseInput( array( "-1", "-----------'--0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "hidebots"      => wikiFuzz::chooseInput( array( "-1", "---------'----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "hideliu"       => wikiFuzz::chooseInput( array( "-1", "-------'------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "hidepatrolled" => wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "hidemyself"    => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'categories_any' => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'categories'    => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'feed'          => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Prefixindex".
- */
-class prefixindexTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Prefixindex";
-
-               $this->params = array (
-                               "title"         => "Special:Prefixindex",
-                               "namespace"     => wikiFuzz::randnum( 101, -10 ),
-                               "Go"            => wikiFuzz::makeFuzz( 2 )
-                               );
-
-               // sometimes we want 'prefix', sometimes we want 'from', and sometimes we want nothing.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) {
-                       $this->params["prefix"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
-                                                                                                wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
-               }
-               if ( wikiFuzz::randnum( 3 ) == 0 ) {
-                       $this->params["from"]   = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
-                                                                                               wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
-               }
-       }
-}
-
-
-/**
- ** a page test for "Special:MIMEsearch".
- */
-class mimeSearchTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:MIMEsearch";
-
-               $this->params = array (
-                               "action"        => "index.php?title=Special:MIMEsearch",
-                               "mime"          => wikiFuzz::makeFuzz( 3 ),
-                               'limit'         => wikiFuzz::chooseInput( array( "0", "-1", "-------'------0", "+1", "81342321351235325",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               'offset'        => wikiFuzz::chooseInput( array( "0", "-1", "-----'--------0", "+1", "81341231235365252234324",  wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Log".
- */
-class specialLogTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Log";
-
-               $this->params = array (
-                               "type"        => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "par"         => wikiFuzz::makeFuzz( 2 ),
-                               "user"        => wikiFuzz::makeFuzz( 2 ),
-                               "page"        => wikiFuzz::makeFuzz( 2 ),
-                               "from"        => wikiFuzz::makeFuzz( 2 ),
-                               "until"       => wikiFuzz::makeFuzz( 2 ),
-                               "title"       => wikiFuzz::makeFuzz( 2 )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Userlogin", with a successful login.
- */
-class successfulUserLoginTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Userlogin&action=submitlogin&type=login&returnto=" . wikiFuzz::makeFuzz( 2 );
-
-               $this->params = array (
-                               "wpName"          => USER_ON_WIKI,
-                               // sometimes real password, sometimes not:
-                               'wpPassword'      => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), USER_PASSWORD ) ),
-                               'wpRemember'      => wikiFuzz::makeFuzz( 2 )
-                               );
-
-               $this->cookie = "wikidb_session=" .  wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
-       }
-}
-
-
-/**
- ** a page test for "Special:Userlogin".
- */
-class userLoginTest extends pageTest {
-       function __construct() {
-
-               $this->pagePath = "index.php?title=Special:Userlogin";
-
-               $this->params = array (
-                               'wpRetype'        => wikiFuzz::makeFuzz( 2 ),
-                               'wpRemember'      => wikiFuzz::makeFuzz( 2 ),
-                               'wpRealName'      => wikiFuzz::makeFuzz( 2 ),
-                               'wpPassword'      => wikiFuzz::makeFuzz( 2 ),
-                               'wpName'          => wikiFuzz::makeFuzz( 2 ),
-                               'wpMailmypassword' => wikiFuzz::makeFuzz( 2 ),
-                               'wpLoginattempt'  => wikiFuzz::makeFuzz( 2 ),
-                               'wpEmail'         => wikiFuzz::makeFuzz( 2 ),
-                               'wpDomain'        => wikiFuzz::chooseInput( array( "", "local", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpCreateaccountMail' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpCreateaccount' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpCookieCheck'   => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'type'            => wikiFuzz::chooseInput( array( "signup", "login", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'returnto'        => wikiFuzz::makeFuzz( 2 ),
-                               'action'          => wikiFuzz::chooseInput( array( "", "submitlogin", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               $this->cookie = "wikidb_session=" . wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
-       }
-}
-
-
-/**
- ** a page test for "Special:Ipblocklist" (also includes unblocking)
- */
-class ipblocklistTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Ipblocklist";
-
-               $this->params = array (
-                               'wpUnblockAddress' => wikiFuzz::makeFuzz( 2 ),
-                               'ip'              => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
-                                                                        // something like an IP address, sometimes invalid:
-                                                                        ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
-                                                                          . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
-                               'id'              => wikiFuzz::makeFuzz( 2 ),
-                               'wpUnblockReason' => wikiFuzz::makeFuzz( 2 ),
-                               'action'          => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "success", "submit", "unblock" ) ),
-                               'wpEditToken'     => wikiFuzz::makeFuzz( 2 ),
-                               'wpBlock'         => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "" ) ),
-                               'limit'           => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1",
-                                                                                                "09700982312351132098234",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               'offset'          => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1",
-                                                                                                "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["ip"] );
-               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["id"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpUnblockAddress"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Newimages".
- */
-class newImagesTest extends  pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Newimages";
-
-               $this->params = array (
-                               'hidebots'  => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "1", "", "-1" ) ),
-                               'wpIlMatch' => wikiFuzz::makeFuzz( 2 ),
-                               'until'     => wikiFuzz::makeFuzz( 2 ),
-                               'from'      => wikiFuzz::makeFuzz( 2 )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["until"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["from"] );
-       }
-}
-
-
-/**
- ** a page test for the "Special:Imagelist" page.
- */
-class imagelistTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Imagelist";
-
-               $this->params = array (
-                               'sort'      => wikiFuzz::chooseInput( array( "bysize", "byname" , "bydate", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'limit'     => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "09700982312351132098234",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               'offset'    => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpIlMatch' => wikiFuzz::makeFuzz( 2 )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Export".
- */
-class specialExportTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Export";
-
-               $this->params = array (
-                               'action'      => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'pages'       => wikiFuzz::makeFuzz( 2 ),
-                               'curonly'     => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'listauthors' => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'history'     => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
-
-                               );
-
-               // For the time being, need to disable "submit" action as Tidy barfs on MediaWiki's XML export.
-               if ( $this->params['action'] == 'submit' ) $this->params['action'] = '';
-
-               // Sometimes remove the history field.
-               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["history"] );
-
-               // page does not produce HTML.
-               $this->tidyValidate = false;
-       }
-}
-
-
-/**
- ** a page test for "Special:Booksources".
- */
-class specialBooksourcesTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Booksources";
-
-               $this->params = array (
-                               'go'    => wikiFuzz::makeFuzz( 2 ),
-                               // ISBN codes have to contain some semi-numeric stuff or will be ignored:
-                               'isbn'  => "0X0" . wikiFuzz::makeFuzz( 2 )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Allpages".
- */
-class specialAllpagesTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special%3AAllpages";
-
-               $this->params = array (
-                               'from'      => wikiFuzz::makeFuzz( 2 ),
-                               'namespace' => wikiFuzz::chooseInput( range( -1, 15 ) ),
-                               'go'        => wikiFuzz::makeFuzz( 2 )
-                               );
-       }
-}
-
-
-/**
- ** a page test for the page History.
- */
-class pageHistoryTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Main_Page&action=history";
-
-               $this->params = array (
-                               'limit'     => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               'offset'    => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "go"        => wikiFuzz::chooseInput( array( "first", "last", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "dir"       => wikiFuzz::chooseInput( array( "prev", "next", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "diff"      => wikiFuzz::chooseInput( array( "-1", "--------'-----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "oldid"     => wikiFuzz::chooseInput( array( "prev", "-1", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "feed"      => wikiFuzz::makeFuzz( 2 )
-                               );
-       }
-}
-
-
-/**
- ** a page test for the Special:Contributions".
- */
-class contributionsTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Contributions/" . USER_ON_WIKI;
-
-               $this->params = array (
-                               'target'    => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "newbies", USER_ON_WIKI ) ),
-                               'namespace' => wikiFuzz::chooseInput( array( -1, 15, 1, wikiFuzz::makeFuzz( 2 ) ) ),
-                               'offset'    => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "982342131232131231241", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'bot'       => wikiFuzz::chooseInput( array( "", "-1", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'go'        => wikiFuzz::chooseInput( array( "-1", 'prev', 'next', wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-       }
-}
-
-
-/**
- ** a page test for viewing a normal page, whilst posting various params.
- */
-class viewPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Main_Page";
-
-               $this->params = array (
-                               "useskin"        => wikiFuzz::chooseInput( array( "chick", "cologneblue", "myskin",
-                                                                               "nostalgia", "simple", "standard", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "uselang"        => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ),
-                                               "ab", "af", "an", "ar", "arc", "as", "ast", "av", "ay", "az", "ba",
-                                               "bat-smg", "be", "bg", "bm", "bn", "bo", "bpy", "br", "bs", "ca",
-                                               "ce", "cs", "csb", "cv", "cy", "da", "de", "dv", "dz", "el", "en",
-                                               "eo", "es", "et", "eu", "fa", "fi", "fo", "fr", "fur", "fy", "ga",
-                                               "gn", "gsw", "gu", "he", "hi", "hr", "hu", "ia", "id", "ii", "is",
-                                               "it", "ja", "jv", "ka", "km", "kn", "ko", "ks", "ku", "kv", "la",
-                                               "li", "lo", "lt", "lv", "mk", "ml", "ms", "nah", "nap", "nds",
-                                               "nds-nl", "nl", "nn", "no", "non", "nv", "oc", "or", "os", "pa",
-                                               "pl", "pms", "ps", "pt", "pt-br", "qu", "rmy", "ro", "ru", "sc",
-                                               "sd", "sk", "sl", "sq", "sr", "sr-ec", "sr-el",
-                                               "su", "sv", "ta", "te", "th", "tr", "tt", "ty", "tyv", "udm",
-                                               "ug", "uk", "ur", "utf8", "vec", "vi", "wa", "xal", "yi", "za",
-                                               "zh", "zh-cn", "zh-hk", "zh-sg", "zh-tw", "zh-tw" ) ),
-                               "returnto"       => wikiFuzz::makeFuzz( 2 ),
-                               "feed"           => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "rcid"           => wikiFuzz::makeFuzz( 2 ),
-                               "action"         => wikiFuzz::chooseInput( array( "view", "raw", "render", wikiFuzz::makeFuzz( 2 ), "markpatrolled" ) ),
-                               "printable"      => wikiFuzz::makeFuzz( 2 ),
-                               "oldid"          => wikiFuzz::makeFuzz( 2 ),
-                               "redirect"       => wikiFuzz::makeFuzz( 2 ),
-                               "diff"           => wikiFuzz::makeFuzz( 2 ),
-                               "search"         => wikiFuzz::makeFuzz( 2 ),
-                               "rdfrom"         => wikiFuzz::makeFuzz( 2 ),  // things from Article.php from here on:
-                               "token"          => wikiFuzz::makeFuzz( 2 ),
-                               "tbid"           => wikiFuzz::makeFuzz( 2 ),
-                               // @todo FIXME: Duplicate array key.
-                               "action"         => wikiFuzz::chooseInput( array( "purge", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpReason"       => wikiFuzz::makeFuzz( 2 ),
-                               "wpEditToken"    => wikiFuzz::makeFuzz( 2 ),
-                               "from"           => wikiFuzz::makeFuzz( 2 ),
-                               "bot"            => wikiFuzz::makeFuzz( 2 ),
-                               "summary"        => wikiFuzz::makeFuzz( 2 ),
-                               "direction"      => wikiFuzz::chooseInput( array( "next", "prev", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "section"        => wikiFuzz::makeFuzz( 2 ),
-                               "preload"        => wikiFuzz::makeFuzz( 2 ),
-
-                               );
-
-               // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
-               if ( $this->params["feed"] == "atom" )     { unset( $this->params["feed"] ); }
-               elseif ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
-
-               // Raw pages cannot really be validated
-               if ( $this->params["action"] == "raw" ) unset( $this->params["action"] );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rcid"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["diff"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rdfrom"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["oldid"] );
-
-               // usually don't want action == purge.
-               if ( wikiFuzz::randnum( 6 ) > 1 ) unset( $this->params["action"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Allmessages".
- */
-class specialAllmessagesTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Allmessages";
-
-               // only really has one parameter
-               $this->params = array (
-                               "ot"     => wikiFuzz::chooseInput( array( "php", "html", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-       }
-}
-
-/**
- ** a page test for "Special:Newpages".
- */
-class specialNewpagesPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Newpages";
-
-               $this->params = array (
-                               "namespace" => wikiFuzz::chooseInput( range( -1, 15 ) ),
-                               "feed"      => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'limit'     => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               'offset'    => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
-               if ( $this->params["feed"] == "atom" )     { unset( $this->params["feed"] ); }
-               elseif ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
-       }
-}
-
-/**
- ** a page test for "redirect.php"
- */
-class redirectTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "redirect.php";
-
-               $this->params = array (
-                               "wpDropdown" => wikiFuzz::makeFuzz( 2 )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpDropdown"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Confirmemail"
- */
-class confirmEmail extends pageTest {
-       function __construct() {
-               // sometimes we send a bogus confirmation code, and sometimes we don't.
-               $this->pagePath = "index.php?title=Special:Confirmemail" . wikiFuzz::chooseInput( array( "", "/" . wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 1 ) ) ) );
-
-               $this->params = array (
-                               "token" => wikiFuzz::makeFuzz( 2 )
-                               );
-       }
-}
-
-
-/**
- ** a page test for "Special:Watchlist"
- **        Note: this test would be better if we were logged in.
- */
-class watchlistTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Watchlist";
-
-               $this->params = array (
-                               "remove"   => wikiFuzz::chooseInput( array( "Remove checked items from watchlist", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'days'     => wikiFuzz::chooseInput( array( 0, -1, -230, "--", 3, 9, wikiFuzz::makeFuzz( 2 ) ) ),
-                               'hideOwn'  => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'hideBots' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'namespace' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'action'   => wikiFuzz::chooseInput( array( "submit", "clear", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'id[]'     => wikiFuzz::makeFuzz( 2 ),
-                               'edit'     => wikiFuzz::makeFuzz( 2 ),
-                               'token'    => wikiFuzz::chooseInput( array( "", "1243213", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we specifiy "reset", and sometimes we don't.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) $this->params["reset"] = wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) );
-       }
-}
-
-/**
- ** a page test for "Special:Movepage"
- */
-class specialMovePage extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Movepage";
-
-               $this->params = array (
-                               "action"      => wikiFuzz::chooseInput( array( "success", "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
-                               'target'      => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
-                               'wpOldTitle'  => wikiFuzz::chooseInput( array( "z", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpNewTitle'  => wikiFuzz::chooseInput( array( "y", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpReason'    => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpMovetalk'  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpDeleteAndMove'  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpConfirm'   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'talkmoved'   => wikiFuzz::chooseInput( array( "1", wikiFuzz::makeFuzz( 2 ), "articleexists", 'notalkpage' ) ),
-                               'oldtitle'    => wikiFuzz::makeFuzz( 2 ),
-                               'newtitle'    => wikiFuzz::makeFuzz( 2 ),
-                               'wpMovetalk'  => wikiFuzz::chooseInput( array( "1", "0", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpNewTitle"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpReason"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpOldTitle"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Undelete"
- */
-class specialUndeletePageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Undelete";
-
-               $this->params = array (
-                               "action"      => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
-                               'target'      => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
-                               'timestamp'   => wikiFuzz::chooseInput( array( "125223", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'file'        => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'restore'     => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'preview'     => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpComment'   => wikiFuzz::makeFuzz( 2 )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["target"] );
-               if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["restore"] );
-               if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["preview"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Unlockdb"
- */
-class specialUnlockdbPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Unlockdb";
-
-               $this->params = array (
-                               "action"        => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpEditToken'   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Lockdb"
- */
-class specialLockdbPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Lockdb";
-
-               $this->params = array (
-                               "action"       => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpEditToken'  => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpLockReason' => wikiFuzz::makeFuzz( 2 ),
-                               'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Userrights"
- */
-class specialUserrights extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Userrights";
-
-               $this->params = array (
-                               'wpEditToken'   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'user-editname' => wikiFuzz::chooseInput( array( "Nickj2", "Nickj2\n<xyz>", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'ssearchuser'   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'saveusergroups' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ), "Save User Groups" ),
-                               'member[]'      => wikiFuzz::chooseInput( array( "0", "bot", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "available[]"   => wikiFuzz::chooseInput( array( "0", "sysop", "bureaucrat", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['ssearchuser'] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['saveusergroups'] );
-       }
-}
-
-
-/**
- ** a test for page protection and unprotection.
- */
-class pageProtectionForm extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Main_Page";
-
-               $this->params = array (
-                               "action"               => "protect",
-                               'wpEditToken'          => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "mwProtect-level-edit" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
-                               "mwProtect-level-move" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
-                               "mwProtectUnchained"   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               'mwProtect-reason'     => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["mwProtectUnchained"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['mwProtect-reason'] );
-       }
-}
-
-
-/**
- ** a page test for "Special:Blockip".
- */
-class specialBlockip extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Blockip";
-
-               $this->params = array (
-                               "action"          => wikiFuzz::chooseInput( array( "submit", "",  wikiFuzz::makeFuzz( 2 ) ) ),
-                               'wpEditToken'     => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpBlockAddress"  => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
-                                                                         // something like an IP address, sometimes invalid:
-                                                                        ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
-                                                                         . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
-                               "ip"              => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
-                                                                         // something like an IP address, sometimes invalid:
-                                                                        ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
-                                                                         . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
-                               "wpBlockOther"    => wikiFuzz::chooseInput( array( '', 'Nickj2', wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpBlockExpiry"   => wikiFuzz::chooseInput( array( "other", "2 hours", "1 day", "3 days", "1 week", "2 weeks",
-                                                                                 "1 month", "3 months", "6 months", "1 year", "infinite", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpBlockReason"   => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpAnonOnly"      => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpCreateAccount" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpBlock"         => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockOther"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockExpiry"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockReason"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpAnonOnly"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpCreateAccount"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockAddress"] );
-               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["ip"] );
-       }
-}
-
-
-/**
- ** a test for the imagepage.
- */
-class imagepageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Image:Small-email.png";
-
-               $this->params = array (
-                               "image"         => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpReason"      => wikiFuzz::makeFuzz( 2 ),
-                               "oldimage"      => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpEditToken"   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["image"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldimage"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEditToken"] );
-       }
-}
-
-
-/**
- ** a test for page deletion form.
- */
-class pageDeletion extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Main_Page&action=delete";
-
-               $this->params = array (
-                               "wpEditToken" => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpReason"    => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "wpConfirm"   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpReason"] );
-               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpEditToken"] );
-               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpConfirm"] );
-       }
-}
-
-
-
-/**
- ** a test for Revision Deletion.
- */
-class specialRevisionDeletePageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Revisiondelete";
-
-               $this->params = array (
-                               "target"               => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "oldid"                => wikiFuzz::makeFuzz( 2 ),
-                               "oldid[]"              => wikiFuzz::makeFuzz( 2 ),
-                               "wpReason"             => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "revdelete-hide-text"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "revdelete-hide-comment" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "revdelete-hide-user"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "revdelete-hide-restricted" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid[]"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-text"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-comment"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-user"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-restricted"] );
-       }
-}
-
-
-/**
- ** a test for Special:Import.
- */
-class specialImportPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Import";
-
-               $this->params = array (
-                               "action"         => "submit",
-                               "source"         => wikiFuzz::chooseInput( array( "upload", "interwiki", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "MAX_FILE_SIZE"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "xmlimport"      => wikiFuzz::chooseInput( array( "/var/www/hosts/mediawiki/wiki/AdminSettings.php", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "namespace"      => wikiFuzz::chooseInput( array( wikiFuzz::randnum( 30, -6 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                               "interwiki"      => wikiFuzz::makeFuzz( 2 ),
-                               "interwikiHistory" => wikiFuzz::makeFuzz( 2 ),
-                               "frompage"       => wikiFuzz::makeFuzz( 2 ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["action"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["source"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["MAX_FILE_SIZE"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["xmlimport"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwiki"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwikiHistory"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["frompage"] );
-
-               // Note: Need to do a file upload to fully test this Special page.
-       }
-}
-
-
-/**
- ** a test for thumb.php
- */
-class thumbTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "thumb.php";
-
-               $this->params = array (
-                               "f"  => wikiFuzz::chooseInput( array( "..", "\\", "small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "w"  => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                               "r"  => wikiFuzz::chooseInput( array( "0", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["f"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["w"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["r"] );
-       }
-}
-
-/**
- ** a test for profileinfo.php
- */
-class profileInfo extends pageTest {
-       function __construct() {
-               $this->pagePath = "profileinfo.php";
-
-               $this->params = array (
-                               "expand"  => wikiFuzz::makeFuzz( 2 ),
-                               "sort"    => wikiFuzz::chooseInput( array( "time", "count", "name", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "filter"  => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["sort"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["filter"] );
-       }
-}
-
-
-/**
- ** a test for Special:Cite (extension Special page).
- */
-class specialCitePageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Cite";
-
-               $this->params = array (
-                               "page"    => wikiFuzz::chooseInput( array( "\" onmouseover=\"alert(1);\"", "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "id"      => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "-9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["page"] );
-               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["id"] );
-       }
-}
-
-
-/**
- ** a test for Special:Filepath (extension Special page).
- */
-class specialFilepathPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Filepath";
-
-               $this->params = array (
-                               "file"    => wikiFuzz::chooseInput( array( "Small-email.png", "Small-email.png" . wikiFuzz::makeFuzz( 1 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-       }
-}
-
-
-/**
- ** a test for Special:Renameuser (extension Special page).
- */
-class specialRenameuserPageTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Renameuser";
-
-               $this->params = array (
-                               "oldusername"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
-                               "newusername"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
-                               "token"         => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-       }
-}
-
-
-/**
- ** a test for Special:Linksearch (extension Special page).
- */
-class specialLinksearch extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special%3ALinksearch";
-
-               $this->params = array (
-                               "target" => wikiFuzz::makeFuzz( 2 ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 10 ) == 0 ) unset( $this->params["target"] );
-       }
-}
-
-
-/**
- ** a test for Special:CategoryTree (extension Special page).
- */
-class specialCategoryTree extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:CategoryTree";
-
-               $this->params = array (
-                               "target" => wikiFuzz::makeFuzz( 2 ),
-                               "from"   => wikiFuzz::makeFuzz( 2 ),
-                               "until"  => wikiFuzz::makeFuzz( 2 ),
-                               "showas" => wikiFuzz::makeFuzz( 2 ),
-                               "mode"   => wikiFuzz::chooseInput( array( "pages", "categories", "all", wikiFuzz::makeFuzz( 2 ) ) ),
-                               );
-
-               // sometimes we do want to specify certain parameters.
-               if ( wikiFuzz::randnum( 5 ) == 0 ) $this->params["notree"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-       }
-}
-
-
-/**
- ** a test for "Special:Chemicalsources" (extension Special page).
- */
-class specialChemicalsourcesTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "index.php?title=Special:Chemicalsources";
-
-               // choose an input format to use.
-               $format =  wikiFuzz::chooseInput(
-                                       array(  'go',
-                                                       'CAS',
-                                                       'EINECS',
-                                                       'CHEBI',
-                                                       'PubChem',
-                                                       'SMILES',
-                                                       'InChI',
-                                                       'ATCCode',
-                                                       'KEGG',
-                                                       'RTECS',
-                                                       'ECNumber',
-                                                       'DrugBank',
-                                                       'Formula',
-                                                       'Name'
-                                                )
-                                       );
-
-               // values for different formats usually start with either letters or numbers.
-               switch ( $format ) {
-                       case 'Name'   : $value = "A"; break;
-                       case 'InChI'  :
-                       case 'SMILES' :
-                       case 'Formula': $value = "C"; break;
-                       default       : $value = "0"; break;
-               }
-
-               // and then we append the fuzz input.
-               $this->params = array ( $format => $value . wikiFuzz::makeFuzz( 2 ) );
-       }
-}
-
-
-/**
- ** A test for api.php (programmatic interface to MediaWiki in XML/JSON/RSS/etc formats).
- ** Quite involved to test because there are lots of options/parameters, and because
- ** for a lot of the functionality if all the parameters don't make sense then it just
- ** returns the help screen - so currently a lot of the tests aren't actually doing much
- ** because something wasn't right in the query.
- **
- ** @todo Incomplete / unfinished; Runs too fast (suggests not much testing going on).
- */
-class api extends pageTest {
-
-       // API login mode.
-       private static function loginMode() {
-               $arr =  array ( "lgname"        => wikiFuzz::makeFuzz( 2 ),
-                                               "lgpassword"    => wikiFuzz::makeFuzz( 2 ),
-                                          );
-               // sometimes we want to specify the extra "lgdomain" parameter.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) {
-                       $arr["lgdomain"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-               }
-
-               return $arr;
-       }
-
-       // API OpenSearch mode.
-       private static function opensearchMode() {
-               return array ( "search"        => wikiFuzz::makeFuzz( 2 ) );
-       }
-
-       // API watchlist feed mode.
-       private static function feedwatchlistMode() {
-               // @todo FIXME: Add "wikiFuzz::makeFuzz(2)" as possible value below?
-               return array ( "feedformat"    => wikiFuzz::chooseInput( array( "rss", "atom" ) ) );
-       }
-
-       // API query mode.
-       private static function queryMode() {
-               // @todo FIXME: Add "wikiFuzz::makeFuzz(2)" as possible params for the elements below?
-               //        Suspect this will stuff up the tests more, but need to check.
-               $params = array (
-                                        // @todo FIXME: More titles.
-                                        "titles"        => wikiFuzz::chooseInput( array( "Main Page" ) ),
-                                        // @todo FIXME: More pageids.
-                                        "pageids"       => 1,
-                                        "prop"          => wikiFuzz::chooseInput( array( "info", "revisions", "watchlist" ) ),
-                                        "list"          => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "usercontribs", "recentchanges", "backlinks", "embeddedin", "imagelinks" ) ),
-                                        "meta"          => wikiFuzz::chooseInput( array( "siteinfo" ) ),
-                                        "generator"     => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "info", "revisions" ) ),
-                                        "siprop"        => wikiFuzz::chooseInput( array( "general", "namespaces", "general|namespaces" ) ),
-                                  );
-
-                // Add extra parameters based on what list choice we got.
-                switch ( $params["list"] ) {
-                       case "usercontribs" : self::addListParams ( $params, "uc", array( "limit", "start", "end", "user", "dir" ) ); break;
-                       case "allpages"     : self::addListParams ( $params, "ap", array( "from", "prefix", "namespace", "filterredir", "limit" ) ); break;
-                       case "watchlist"    : self::addListParams ( $params, "wl", array( "allrev", "start", "end", "namespace", "dir", "limit", "prop" ) ); break;
-                       case "logevents"    : self::addListParams ( $params, "le", array( "limit", "type", "start", "end", "user", "dir" ) ); break;
-                       case "recentchanges": self::addListParams ( $params, "rc", array( "limit", "prop", "show", "namespace", "start", "end", "dir" ) ); break;
-                       case "backlinks"    : self::addListParams ( $params, "bl", array( "continue", "namespace", "redirect", "limit" ) ); break;
-                       case "embeddedin"   : self::addListParams ( $params, "ei", array( "continue", "namespace", "redirect", "limit" ) ); break;
-                       case "imagelinks"   : self::addListParams ( $params, "il", array( "continue", "namespace", "redirect", "limit" ) ); break;
-                }
-
-                if ( $params["prop"] == "revisions" ) {
-                       self::addListParams ( $params, "rv", array( "prop", "limit", "startid", "endid", "end", "dir" ) );
-                }
-
-                // Sometimes we want redirects, sometimes we don't.
-                if ( wikiFuzz::randnum( 3 ) == 0 ) {
-                       $params["redirects"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-                }
-
-                return $params;
-       }
-
-       // Adds all the elements to the array, using the specified prefix.
-       private static function addListParams( &$array, $prefix, $elements ) {
-               foreach ( $elements as $element ) {
-                       $array[$prefix . $element] = self::getParamDetails( $element );
-               }
-       }
-
-       // For a given element name, returns the data for that element.
-       private static function getParamDetails( $element ) {
-               switch ( $element ) {
-                       case 'startid'    :
-                       case 'endid'      :
-                       case 'start'      :
-                       case 'end'        :
-                       case 'limit'      : return wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", "320742734234235", "20060230121212", wikiFuzz::randnum( 9000, -100 ), wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'dir'        : return wikiFuzz::chooseInput( array( "newer", "older", wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'user'       : return wikiFuzz::chooseInput( array( USER_ON_WIKI, wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'namespace'  : return wikiFuzz::chooseInput( array( -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 200000, wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'filterredir': return wikiFuzz::chooseInput( array( "all", "redirects", "nonredirectsallpages", wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'allrev'     : return wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'prop'       : return wikiFuzz::chooseInput( array( "user", "comment", "timestamp", "patrol", "flags", "user|user|comment|flags", wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'type'       : return wikiFuzz::chooseInput( array( "block", "protect", "rights", "delete", "upload", "move", "import", "renameuser", "newusers", "makebot", wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'hide'       : return wikiFuzz::chooseInput( array( "minor", "bots", "anons", "liu", "liu|bots|", wikiFuzz::makeFuzz( 2 ) ) );
-                       case 'show'       : return wikiFuzz::chooseInput( array( 'minor', '!minor', 'bot', '!bot', 'anon', '!anon', wikiFuzz::makeFuzz( 2 ) ) );
-                       default           : return wikiFuzz::makeFuzz( 2 );
-               }
-       }
-
-       // Entry point.
-       function __construct() {
-               $this->pagePath = "api.php";
-
-               $modes = array ( "help",
-                                               "login",
-                                               "opensearch",
-                                               "feedwatchlist",
-                                               "query" );
-               $action = wikiFuzz::chooseInput( array_merge ( $modes, array( wikiFuzz::makeFuzz( 2 ) ) ) );
-
-               switch ( $action ) {
-                       case "login"         : $this->params = self::loginMode();
-                                                                  break;
-                       case "opensearch"    : $this->params = self::opensearchMode();
-                                                                  break;
-                       case "feedwatchlist" : $this->params = self::feedwatchlistMode();
-                                                                  break;
-                       case "query"         : $this->params = self::queryMode();
-                                                                  break;
-                       case "help"         :
-                       default             :  // Do something random - "Crazy Ivan" mode.
-                                                                  $random_mode = wikiFuzz::chooseInput( $modes ) . "Mode";
-                                                                  // There is no "helpMode".
-                                                                  if ( $random_mode == "helpMode" ) $random_mode = "queryMode";
-                                                                  $this->params = self::$random_mode();
-                                                                  break;
-               }
-
-               // Save the selected action.
-               $this->params["action"] = $action;
-
-               // Set the cookie:
-               // @todo FIXME: Need to get this cookie dynamically set, rather than hard-coded.
-               $this->cookie = "wikidbUserID=10001; wikidbUserName=Test; wikidb_session=178df0fe68c75834643af65dec9ec98a; wikidbToken=1adc6753d62c44aec950c024d7ae0540";
-
-               // Output format
-               $this->params["format"] = wikiFuzz::chooseInput( array( "json", "jsonfm", "php", "phpfm",
-                                                                                                                          "wddx", "wddxfm", "xml", "xmlfm",
-                                                                                                                          "yaml", "yamlfm", "raw", "rawfm",
-                                                                                                                          wikiFuzz::makeFuzz( 2 ) ) );
-
-               // Page does not produce HTML (sometimes).
-               $this->tidyValidate = false;
-       }
-}
-
-
-/**
- ** a page test for the GeSHi extension.
- */
-class GeSHi_Test extends pageTest {
-
-       private function getGeSHiContent() {
-               return "<source lang=\"" . $this->getLang() . "\" "
-                          . ( wikiFuzz::randnum( 2 ) == 0 ? "line " : "" )
-                          . ( wikiFuzz::randnum( 2 ) == 0 ? "strict " : "" )
-                          . "start=" . wikiFuzz::chooseInput( array( wikiFuzz::randnum( 6000, -6000 ), wikiFuzz::makeFuzz( 2 ) ) )
-                          . ">"
-                          . wikiFuzz::makeFuzz( 2 )
-                          . "</source>";
-       }
-
-       private function getLang() {
-       return wikiFuzz::chooseInput( array( "actionscript", "ada", "apache", "applescript", "asm", "asp", "autoit", "bash", "blitzbasic", "bnf", "c", "c_mac", "caddcl", "cadlisp",
-                               "cfdg", "cfm", "cpp", "cpp-qt", "csharp", "css", "d", "delphi", "diff", "div", "dos", "eiffel", "fortran", "freebasic", "gml", "groovy", "html4strict", "idl",
-                               "ini", "inno", "io", "java", "java5", "javascript", "latex", "lisp", "lua", "matlab", "mirc", "mpasm", "mysql", "nsis", "objc", "ocaml", "ocaml-brief", "oobas",
-                               "oracle8", "pascal", "perl", "php", "php-brief", "plsql", "python", "qbasic", "rails", "reg", "robots", "ruby", "sas", "scheme", "sdlbasic", "smalltalk", "smarty",
-                               "sql", "tcl", "text", "thinbasic", "tsql", "vb", "vbnet", "vhdl", "visualfoxpro", "winbatch", "xml", "xpp", "z80", wikiFuzz::makeFuzz( 1 ) ) );
-       }
-
-       function __construct() {
-               $this->pagePath = "index.php?title=WIKIFUZZ";
-
-               $this->params = array (
-                               "action"        => "submit",
-                               "wpMinoredit"   => "test",
-                               "wpPreview"     => "test",
-                               "wpSection"     => "test",
-                               "wpEdittime"    => "test",
-                               "wpSummary"     => "test",
-                               "wpScrolltop"   => "test",
-                               "wpStarttime"   => "test",
-                               "wpAutoSummary" => "test",
-                               "wpTextbox1"    => $this->getGeSHiContent() // the main wiki text, contains fake GeSHi content.
-                               );
-       }
-}
-
-/**
- ** selects a page test to run.
- * @param $count
- * @return \api|\confirmEmail|\contributionsTest|\editPageTest|\imagelistTest|\imagepageTest|\ipblocklistTest|\listusersTest|\mimeSearchTest|\newImagesTest|\pageDeletion|\pageHistoryTest|\pageProtectionForm|\prefixindexTest|\profileInfo|\recentchangesTest|\redirectTest|\searchTest|\specialAllmessagesTest|\specialAllpagesTest|\specialBlockip|\specialBooksourcesTest|\specialCategoryTree|\specialChemicalsourcesTest|\specialCitePageTest|\specialExportTest|\specialFilepathPageTest|\specialImportPageTest|\specialLinksearch|\specialLockdbPageTest|\specialLogTest|\specialMovePage|\specialNewpagesPageTest|\specialRenameuserPageTest|\specialRevisionDeletePageTest|\specialUndeletePageTest|\specialUnlockdbPageTest|\specialUserrights|\successfulUserLoginTest|\thumbTest|\userLoginTest|\viewPageTest|\watchlistTest
- */
-function selectPageTest( $count ) {
-
-       // if the user only wants a specific test, then only ever give them that.
-       if ( defined( "SPECIFIC_TEST" ) ) {
-               $testType = SPECIFIC_TEST;
-               return new $testType ();
-       }
-
-       // Some of the time we test Special pages, the remaining
-       // time we test using the standard edit page.
-       switch ( $count % 100 ) {
-               case 0 : return new successfulUserLoginTest();
-               case 1 : return new listusersTest();
-               case 2 : return new searchTest();
-               case 3 : return new recentchangesTest();
-               case 4 : return new prefixindexTest();
-               case 5 : return new mimeSearchTest();
-               case 6 : return new specialLogTest();
-               case 7 : return new userLoginTest();
-               case 8 : return new ipblocklistTest();
-               case 9 : return new newImagesTest();
-               case 10: return new imagelistTest();
-               case 11: return new specialExportTest();
-               case 12: return new specialBooksourcesTest();
-               case 13: return new specialAllpagesTest();
-               case 14: return new pageHistoryTest();
-               case 15: return new contributionsTest();
-               case 16: return new viewPageTest();
-               case 17: return new specialAllmessagesTest();
-               case 18: return new specialNewpagesPageTest();
-               case 19: return new searchTest();
-               case 20: return new redirectTest();
-               case 21: return new confirmEmail();
-               case 22: return new watchlistTest();
-               case 24: return new specialUndeletePageTest();
-               case 25: return new specialMovePage();
-               case 26: return new specialUnlockdbPageTest();
-               case 27: return new specialLockdbPageTest();
-               case 28: return new specialUserrights();
-               case 29: return new pageProtectionForm();
-               case 30: return new specialBlockip();
-               case 31: return new imagepageTest();
-               case 32: return new pageDeletion();
-               case 33: return new specialRevisionDeletePageTest();
-               case 34: return new specialImportPageTest();
-               case 35: return new thumbTest();
-               case 37: return new profileInfo();
-               case 38: return new specialCitePageTest();
-               case 39: return new specialFilepathPageTest();
-               case 40: return new specialRenameuserPageTest();
-               case 41: return new specialLinksearch();
-               case 42: return new specialCategoryTree();
-               case 43: return new api();
-               case 44: return new specialChemicalsourcesTest();
-               default: return new editPageTest();
-       }
-}
-
-
-// /////////////////////  SAVING OUTPUT  /////////////////////////
-
-/**
- ** Utility function for saving a file. Currently has no error checking.
- */
-function saveFile( $data, $name ) {
-       file_put_contents( $name, $data );
-}
-
-/**
- ** Returns a test as an experimental GET-to-POST URL.
- **        This doesn't seem to always work though, and sometimes the output is too long
- **        to be a valid GET URL, so we also save in other formats.
- * @param $test pageTest
- * @return string
- */
-function getAsURL( pageTest $test ) {
-       $used_question_mark = ( strpos( $test->getPagePath(), "?" ) !== false );
-       $retval = "http://get-to-post.nickj.org/?" . WIKI_BASE_URL . $test->getPagePath();
-       foreach ( $test->getParams() as $param => $value ) {
-               if ( !$used_question_mark ) {
-                       $retval .= "?";
-                       $used_question_mark = true;
-               }
-               else {
-                       $retval .= "&";
-               }
-               $retval .= $param . "=" . urlencode( $value );
-       }
-       return $retval;
-}
-
-
-/**
- ** Saves a plain-text human-readable version of a test.
- */
-function saveTestAsText( pageTest $test, $filename ) {
-       $str = "Test: " . $test->getPagePath();
-       foreach ( $test->getParams() as $param => $value ) {
-               $str .= "\n$param: $value";
-       }
-       $str .= "\nGet-to-post URL: " . getAsURL( $test ) . "\n";
-       saveFile( $str, $filename );
-}
-
-
-/**
- ** Saves a test as a standalone basic PHP script that shows this one problem.
- **        Resulting script requires PHP-Curl be installed in order to work.
- */
-function saveTestAsPHP( pageTest $test, $filename ) {
-       $str = "<?php\n"
-               . "\$params = " . var_export( escapeForCurl( $test->getParams() ), true ) . ";\n"
-               . "\$ch = curl_init();\n"
-               . "curl_setopt(\$ch, CURLOPT_POST, 1);\n"
-               . "curl_setopt(\$ch, CURLOPT_POSTFIELDS, \$params );\n"
-               . "curl_setopt(\$ch, CURLOPT_URL, " . var_export( WIKI_BASE_URL . $test->getPagePath(), true ) . ");\n"
-               . "curl_setopt(\$ch, CURLOPT_RETURNTRANSFER,1);\n"
-               .  ( $test->getCookie() ? "curl_setopt(\$ch, CURLOPT_COOKIE, " . var_export( $test->getCookie(), true ) . ");\n" : "" )
-               . "\$result=curl_exec(\$ch);\n"
-               . "curl_close (\$ch);\n"
-               . "print \$result;\n"
-               . "\n";
-       saveFile( $str, $filename );
-}
-
-/**
- * Escapes a value so that it can be used on the command line by Curl.
- *        Specifically, "<" and "@" need to be escaped if they are the first character,
- *        otherwise  curl interprets these as meaning that we want to insert a file.
- * @param $input_params array
- * @return array
- */
-function escapeForCurl( array $input_params ) {
-       $output_params = array();
-       foreach ( $input_params as $param => $value ) {
-               if ( strlen( $value ) > 0 && ( $value[0] == "@" || $value[0] == "<" ) ) {
-                       $value = "\\" . $value;
-               }
-               $output_params[$param] = $value;
-       }
-       return $output_params;
-}
-
-
-/**
- ** Saves a test as a standalone CURL shell script that shows this one problem.
- **        Resulting script requires standalone Curl be installed in order to work.
- */
-function saveTestAsCurl( pageTest $test, $filename ) {
-       $str = "#!/bin/bash\n"
-               . "curl --silent --include --globoff \\\n"
-               . ( $test->getCookie() ? " --cookie " . escapeshellarg( $test->getCookie() ) . " \\\n" : "" );
-       foreach ( escapeForCurl( $test->getParams() ) as $param => $value ) {
-               $str .= " -F " . escapeshellarg( $param ) . "=" . escapeshellarg( $value ) . " \\\n";
-       }
-       $str .= " " . escapeshellarg( WIKI_BASE_URL . $test->getPagePath() ); // beginning space matters.
-       $str .= "\n";
-       saveFile( $str, $filename );
-       chmod( $filename, 0755 ); // make executable
-}
-
-
-/**
- ** Saves the internal data structure to file.
- */
-function saveTestData ( pageTest $test, $filename ) {
-       saveFile( serialize( $test ),  $filename );
-}
-
-
-/**
- ** saves a test in the various formats.
- */
-function saveTest( pageTest $test, $testname ) {
-       $base_name = DIRECTORY . "/" . $testname;
-       saveTestAsText( $test, $base_name . INFO_FILE );
-       saveTestAsPHP ( $test, $base_name . PHP_TEST );
-       saveTestAsCurl( $test, $base_name . CURL_TEST );
-       saveTestData  ( $test, $base_name . DATA_FILE );
-}
-
-// ////////////////// MEDIAWIKI OUTPUT /////////////////////////
-
-/**
- * Asks MediaWiki for the HTML output of a test.
- * @param $test pageTest
- * @return string
- */
-function wikiTestOutput( pageTest $test ) {
-
-       $ch = curl_init();
-
-       // specify the cookie, if required.
-       if ( $test->getCookie() ) {
-               curl_setopt( $ch, CURLOPT_COOKIE, $test->getCookie() );
-       }
-       curl_setopt( $ch, CURLOPT_POST, 1 );                          // save form using a POST
-
-       $params = escapeForCurl( $test->getParams() );
-       curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );             // load the POST variables
-
-       curl_setopt( $ch, CURLOPT_URL, WIKI_BASE_URL . $test->getPagePath() );  // set url to post to
-       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );                 // return into a variable
-
-       $result = curl_exec ( $ch );
-
-       // if we encountered an error, then say so, and return an empty string.
-       if ( curl_error( $ch ) ) {
-               print "\nCurl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch );
-               $result = "";
-       }
-
-       curl_close ( $ch );
-
-       return $result;
-}
-
-
-// ////////////////// HTML VALIDATION /////////////////////////
-
-/**
- * Asks the validator whether this is valid HTML, or not.
- * @param $text string
- * @return array
- */
-function validateHTML( $text ) {
-
-       $params = array ( "fragment"   => $text );
-
-       $ch = curl_init();
-
-       curl_setopt( $ch, CURLOPT_POST, 1 );                    // save form using a POST
-       curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );        // load the POST variables
-       curl_setopt( $ch, CURLOPT_URL, VALIDATOR_URL );         // set url to post to
-       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );           // return into a variable
-
-       $result = curl_exec ( $ch );
-
-       // if we encountered an error, then log it, and exit.
-       if ( curl_error( $ch ) ) {
-               trigger_error( "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) );
-               print "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) . " - exiting.\n";
-               exit( 1 );
-       }
-
-       curl_close ( $ch );
-
-       $valid = ( strpos( $result, "Failed validation" ) === false );
-
-       return array( $valid, $result );
-}
-
-/**
- * Get tidy to check for no HTML errors in the output file (e.g. unescaped strings).
- * @param $name
- * @return bool
- */
-function tidyCheckFile( $name ) {
-       $file = DIRECTORY . "/" . $name;
-       $command = PATH_TO_TIDY . " -output /tmp/out.html -quiet $file 2>&1";
-       $x = `$command`;
-
-       // Look for the most interesting Tidy errors and warnings.
-       if (   strpos( $x, "end of file while parsing attributes" ) !== false
-                       || strpos( $x, "attribute with missing trailing quote mark" ) !== false
-                       || strpos( $x, "missing '>' for end of tag" ) !== false
-                       || strpos( $x, "Error:" ) !== false ) {
-               print "\nTidy found something - view details with: $command";
-               return false;
-       } else {
-               return true;
-       }
-}
-
-/**
- ** Returns whether or not an database error log file has changed in size since
- **        the last time this was run. This is used to tell if a test caused a DB error.
- * @return bool
- */
-function dbErrorLogged() {
-       static $filesize;
-
-       // first time running this function
-       if ( !isset( $filesize ) ) {
-               // create log if it does not exist
-               if ( DB_ERROR_LOG_FILE && !file_exists( DB_ERROR_LOG_FILE ) ) {
-                       saveFile( '', DB_ERROR_LOG_FILE );
-               }
-               $filesize = filesize( DB_ERROR_LOG_FILE );
-               return false;
-       }
-
-       $newsize = filesize( DB_ERROR_LOG_FILE );
-       // if the log has grown, then assume the current test caused it.
-       if ( $newsize != $filesize ) {
-               $filesize = $newsize;
-               return true;
-       }
-
-       return false;
-}
-
-// //////////////// TOP-LEVEL PROBLEM-FINDING FUNCTION ////////////////////////
-
-/**
- * takes a page test, and runs it and tests it for problems in the output.
- *        Returns: False on finding a problem, or True on no problems being found.
- * @param $test pageTest
- * @param $testname
- * @param $can_overwrite bool
- * @return bool
- */
-function runWikiTest( pageTest $test, &$testname, $can_overwrite = false ) {
-
-       // by default don't overwrite a previous test of the same name.
-       while ( ! $can_overwrite && file_exists( DIRECTORY . "/" . $testname . DATA_FILE ) ) {
-               $testname .= "-" . mt_rand( 0, 9 );
-       }
-
-       $filename = DIRECTORY . "/" . $testname . DATA_FILE;
-
-       // Store the time before and after, to find slow pages.
-       $before = microtime( true );
-
-       // Get MediaWiki to give us the output of this test.
-       $wiki_preview = wikiTestOutput( $test );
-
-       $after = microtime( true );
-
-       // if we received no response, then that's interesting.
-       if ( $wiki_preview == "" ) {
-               print "\nNo response received for: $filename";
-               return false;
-       }
-
-       // save output HTML to file.
-       $html_file = DIRECTORY . "/" . $testname . HTML_FILE;
-       saveFile( $wiki_preview,  $html_file );
-
-       // if there were PHP errors in the output, then that's interesting too.
-       if (       strpos( $wiki_preview, "<b>Warning</b>: "        ) !== false
-                       || strpos( $wiki_preview, "<b>Fatal error</b>: "    ) !== false
-                       || strpos( $wiki_preview, "<b>Notice</b>: "         ) !== false
-                       || strpos( $wiki_preview, "<b>Error</b>: "          ) !== false
-                       || strpos( $wiki_preview, "<b>Strict Standards:</b>" ) !== false
-                       ) {
-               $error = substr( $wiki_preview, strpos( $wiki_preview, "</b>:" ) + 7, 50 );
-               // Avoid probable PHP bug with bad session ids; http://bugs.php.net/bug.php?id=38224
-               if ( $error != "Unknown: The session id contains illegal character" ) {
-                       print "\nPHP error/warning/notice in HTML output: $html_file ; $error";
-                       return false;
-               }
-       }
-
-       // if there was a MediaWiki Backtrace message in the output, then that's also interesting.
-       if ( strpos( $wiki_preview, "Backtrace:" ) !== false ) {
-               print "\nInternal MediaWiki error in HTML output: $html_file";
-               return false;
-       }
-
-       // if there was a Parser error comment in the output, then that's potentially interesting.
-       if ( strpos( $wiki_preview, "!-- ERR" ) !== false ) {
-               print "\nParser Error comment in HTML output: $html_file";
-               return false;
-       }
-
-       // if a database error was logged, then that's definitely interesting.
-       if ( dbErrorLogged() ) {
-               print "\nDatabase Error logged for: $filename";
-               return false;
-       }
-
-       // validate result
-       $valid = true;
-       if ( VALIDATE_ON_WEB ) {
-               list ( $valid, $validator_output ) = validateHTML( $wiki_preview );
-               if ( !$valid ) print "\nW3C web validation failed - view details with: html2text " . DIRECTORY . "/" . $testname . ".validator_output.html";
-       }
-
-       // Get tidy to check the page, unless we already know it produces non-(X)HTML output.
-       if ( $test->tidyValidate() ) {
-               $valid = tidyCheckFile( $testname . HTML_FILE ) && $valid;
-       }
-
-       // if it took more than 2 seconds to render, then it may be interesting too. (Possible DoS attack?)
-       if ( ( $after - $before ) >= 2 ) {
-               print "\nParticularly slow to render (" . round( $after - $before, 2 ) . " seconds): $filename";
-               return false;
-       }
-
-       if ( $valid ) {
-               // Remove temp HTML file if test was valid:
-               unlink( $html_file );
-       } elseif ( VALIDATE_ON_WEB ) {
-               saveFile( $validator_output,   DIRECTORY . "/" . $testname . ".validator_output.html" );
-       }
-
-       return $valid;
-}
-
-
-// ///////////////// RERUNNING OLD TESTS ///////////////////
-
-/**
- ** We keep our failed tests so that they can be rerun.
- **        This function does that retesting.
- */
-function rerunPreviousTests() {
-       print "Retesting previously found problems.\n";
-
-       $dir_contents = scandir ( DIRECTORY );
-
-       // sort file into the order a normal person would use.
-       natsort ( $dir_contents );
-
-       foreach ( $dir_contents as $file ) {
-
-               // if file is not a test, then skip it.
-               // Note we need to escape any periods or will be treated as "any character".
-               $matches = array();
-               if ( !preg_match( "/(.*)" . str_replace( ".", "\.", DATA_FILE ) . "$/", $file, $matches ) ) continue;
-
-               // reload the test.
-               $full_path = DIRECTORY . "/" . $file;
-               $test = unserialize( file_get_contents( $full_path ) );
-
-               // if this is not a valid test, then skip it.
-               if ( ! $test instanceof pageTest ) {
-                       print "\nSkipping invalid test - $full_path";
-                       continue;
-               }
-
-               // The date format is in Apache log format, which makes it easier to locate
-               // which retest caused which error in the Apache logs (only happens usually if
-               // apache segfaults).
-               if ( !QUIET ) print "[" . date ( "D M d H:i:s Y" ) . "] Retesting $file (" . get_class( $test ) . ")";
-
-               // run test
-               $testname = $matches[1];
-               $valid = runWikiTest( $test, $testname, true );
-
-               if ( !$valid ) {
-                       saveTest( $test, $testname );
-                       if ( QUIET ) {
-                               print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
-                       } else {
-                               print "\n";
-                       }
-               }
-               else {
-                       if ( !QUIET ) print "\r";
-                       if ( DELETE_PASSED_RETESTS ) {
-                               $prefix = DIRECTORY . "/" . $testname;
-                               if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE );
-                               if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST );
-                               if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST );
-                               if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE );
-                       }
-               }
-       }
-
-       print "\nDone retesting.\n";
-}
-
-
-// ////////////////////  MAIN LOOP  ////////////////////////
-
-
-// first check whether CURL is installed, because sometimes it's not.
-if ( ! function_exists( 'curl_init' ) ) {
-       die( "Could not find 'curl_init' function. Is the curl extension compiled into PHP?\n" );
-}
-
-// Initialization of types. wikiFuzz doesn't have a constructor because we want to
-// access it staticly and not have any globals.
-wikiFuzz::$types = array_keys( wikiFuzz::$data );
-
-// Make directory if doesn't exist
-if ( !is_dir( DIRECTORY ) ) {
-       mkdir ( DIRECTORY, 0700 );
-}
-// otherwise, we first retest the things that we have found in previous runs
-elseif ( RERUN_OLD_TESTS ) {
-       rerunPreviousTests();
-}
-
-// main loop.
-$start_time = date( "U" );
-$num_errors = 0;
-if ( !QUIET ) {
-       print "Beginning main loop. Results are stored in the " . DIRECTORY . " directory.\n";
-       print "Press CTRL+C to stop testing.\n";
-}
-
-for ( $count = 0; true; $count++ ) {
-       if ( !QUIET ) {
-               // spinning progress indicator.
-               switch( $count % 4 ) {
-                       case '0': print "\r/";  break;
-                       case '1': print "\r-";  break;
-                       case '2': print "\r\\"; break;
-                       case '3': print "\r|";  break;
-               }
-               print " $count";
-       }
-
-       // generate a page test to run.
-       $test = selectPageTest( $count );
-
-       $mins = ( date( "U" ) - $start_time ) / 60;
-       if ( !QUIET && $mins > 0 ) {
-               print ".  $num_errors poss errors. "
-                       . floor( $mins ) . " mins. "
-                       . round ( $count / $mins, 0 ) . " tests/min. "
-                       . get_class( $test ); // includes the current test name.
-       }
-
-       // run this test against MediaWiki, and see if the output was valid.
-       $testname = $count;
-       $valid = runWikiTest( $test, $testname, false );
-
-       // save the failed test
-       if ( ! $valid ) {
-               if ( QUIET ) {
-                       print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
-               } else {
-                       print "\n";
-               }
-               saveTest( $test, $testname );
-               $num_errors += 1;
-       } elseif ( KEEP_PASSED_TESTS ) {
-               // print current time, with microseconds (matches "strace" format), and the test name.
-               print " " . date( "H:i:s." ) . substr( current( explode( " ", microtime() ) ), 2 ) . " " . $testname;
-               saveTest( $test, $testname );
-       }
-
-       // stop if we have reached max number of errors.
-       if ( defined( "MAX_ERRORS" ) && $num_errors >= MAX_ERRORS ) {
-               break;
-       }
-
-       // stop if we have reached max number of mins runtime.
-       if ( defined( "MAX_RUNTIME" ) && $mins >= MAX_RUNTIME ) {
-               break;
-       }
-}
index 0b21a1f..ab28c8b 100644 (file)
@@ -125,7 +125,6 @@ class GenerateSitemap extends Maintenance {
         */
        public $findex;
 
-
        /**
         * A resource pointing to a sitemap file
         *
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 4e845f1..f9390f6 100644 (file)
@@ -50,7 +50,7 @@ class StatsOutput {
 }
 
 /** Outputs WikiText */
-class WikiStatsOutput extends statsOutput {
+class WikiStatsOutput extends StatsOutput {
        function heading() {
                global $wgDummyLanguageCodes;
                $version = SpecialVersion::getVersion( 'nodb' );
@@ -123,7 +123,7 @@ class WikiStatsOutput extends statsOutput {
 }
 
 /** Output text. To be used on a terminal for example. */
-class TextStatsOutput extends statsOutput {
+class TextStatsOutput extends StatsOutput {
        function element( $in, $heading = false ) {
                echo $in . "\t";
        }
@@ -134,7 +134,7 @@ class TextStatsOutput extends statsOutput {
 }
 
 /** csv output. Some people love excel */
-class CsvStatsOutput extends statsOutput {
+class CsvStatsOutput extends StatsOutput {
        function element( $in, $heading = false ) {
                echo $in . ";";
        }
index 746f14f..b06c11f 100644 (file)
@@ -262,6 +262,7 @@ $wgIgnoredMessages = array(
        'edithelppage',
        'autocomment-prefix',
        'move-redirect-text',
+       'interlanguage-link-title-langonly',
 );
 
 /** Optional messages, which may be translated only if changed in the target language. */
@@ -476,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 6d81ca8..945bc60 100644 (file)
@@ -188,7 +188,6 @@ $wgMessageStructure = array(
                'qbedit',
                'qbpageoptions',
                'qbmyoptions',
-               'qbspecialpages',
                'faq',
                'faqpage',
                'sitetitle',
@@ -312,8 +311,6 @@ $wgMessageStructure = array(
                'backlinksubtitle',
                'retrievedfrom',
                'youhavenewmessages',
-               'newmessageslink',
-               'newmessagesdifflink',
                'youhavenewmessagesfromusers',
                'youhavenewmessagesmanyusers',
                'newmessageslinkplural',
@@ -408,7 +405,6 @@ $wgMessageStructure = array(
                'perfcached',
                'perfcachedts',
                'querypage-no-updates',
-               'wrong_wfQuery_params',
                'viewsource',
                'viewsource-title',
                'actionthrottled',
@@ -957,12 +953,8 @@ $wgMessageStructure = array(
                'search-summary',
                'searchresults',
                'searchresults-title',
-               'searchresulttext',
-               'searchsubtitle',
-               'searchsubtitleinvalid',
                'toomanymatches',
                'titlematches',
-               'notitlematches',
                'textmatches',
                'notextmatches',
                'prevn',
@@ -971,11 +963,9 @@ $wgMessageStructure = array(
                'nextn-title',
                'shown-title',
                'viewprevnext',
-               'searchmenu-legend',
                'searchmenu-exists',
                'searchmenu-new',
                'searchmenu-new-nocreate',
-               'searchmenu-prefix',
                'searchprofile-articles',
                'searchprofile-project',
                'searchprofile-images',
@@ -997,20 +987,16 @@ $wgMessageStructure = array(
                'search-interwiki-custom',
                'search-interwiki-more',
                'search-relatedarticle',
-               'mwsuggest-disable',
                'searcheverything-enable',
                'searchrelated',
                'searchall',
                'showingresults',
                'showingresultsnum',
                'showingresultsheader',
-               'nonefound',
                'search-nonefound',
-               'powersearch',
                'powersearch-legend',
                'powersearch-ns',
                'powersearch-redir',
-               'powersearch-field',
                'powersearch-togglelabel',
                'powersearch-toggleall',
                'powersearch-togglenone',
@@ -1027,7 +1013,6 @@ $wgMessageStructure = array(
                'preferences-summary',
                'mypreferences',
                'prefs-edits',
-               'prefsnologin',
                'prefsnologintext2',
                'changepassword',
                'changepassword-summary',
@@ -1053,7 +1038,6 @@ $wgMessageStructure = array(
                'prefs-email',
                'prefs-rendering',
                'saveprefs',
-               'resetprefs',
                'restoreprefs',
                'prefs-editing',
                'rows',
@@ -1072,7 +1056,6 @@ $wgMessageStructure = array(
                'localtime',
                'timezoneuseserverdefault',
                'timezoneuseoffset',
-               'timezoneoffset',
                'servertime',
                'guesstimezone',
                'timezoneregion-africa',
@@ -1331,6 +1314,9 @@ $wgMessageStructure = array(
                'recentchanges-label-minor',
                'recentchanges-label-bot',
                'recentchanges-label-unpatrolled',
+               'recentchanges-label-plusminus',
+               'recentchanges-legend-newpage',
+               'recentchanges-legend-plusminus',
                'rcnote',
                'rcnotefrom',
                'rclistfrom',
@@ -1827,11 +1813,9 @@ $wgMessageStructure = array(
                'protectedpages-indef',
                'protectedpages-summary',
                'protectedpages-cascade',
-               'protectedpagestext',
                'protectedpagesempty',
                'protectedtitles',
                'protectedtitles-summary',
-               'protectedtitlestext',
                'protectedtitlesempty',
                'listusers',
                'listusers-summary',
@@ -2207,7 +2191,7 @@ $wgMessageStructure = array(
                'undelete-error-long',
                'undelete-show-file-confirm',
                'undelete-show-file-submit',
-               'undelete-revisionrow',
+               'undelete-revision-row',
        ),
        'nsform' => array(
                'namespace',
@@ -2722,6 +2706,7 @@ $wgMessageStructure = array(
                'tooltip-preferences-save',
                'tooltip-summary',
                'interlanguage-link-title',
+               'interlanguage-link-title-langonly',
        ),
        'stylesheets' => array(
                'common.css',
@@ -3452,10 +3437,6 @@ $wgMessageStructure = array(
                'exif-urgency-high',
                'exif-urgency-other',
        ),
-       'edit-externally' => array(
-               'edit-externally',
-               'edit-externally-help',
-       ),
        'all' => array(
                'watchlistall2',
                'namespacesall',
@@ -3735,6 +3716,7 @@ $wgMessageStructure = array(
        'special-specialpages' => array(
                'specialpages',
                'specialpages-summary',
+               'specialpages-note-top',
                'specialpages-note',
                'specialpages-group-maintenance',
                'specialpages-group-other',
@@ -3973,6 +3955,19 @@ $wgMessageStructure = array(
                'limitreport-expensivefunctioncount',
                'limitreport-expensivefunctioncount-value',
        ),
+       'expandtemplates' => array(
+               'expandtemplates',
+               'expand_templates_intro',
+               'expand_templates_title',
+               'expand_templates_input',
+               'expand_templates_output',
+               'expand_templates_xml_output',
+               'expand_templates_ok',
+               'expand_templates_remove_comments',
+               'expand_templates_remove_nowiki',
+               'expand_templates_generate_xml',
+               'expand_templates_preview',
+       ),
 );
 
 /** Comments for each block */
@@ -4176,7 +4171,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',
@@ -4220,4 +4214,5 @@ Variants for Chinese language",
        'cachedspecial' => 'SpecialCachedPage',
        'rotation' => 'Image rotation',
        'limitreport' => 'Limit report',
+       'expandtemplates' => 'Special:ExpandTemplates'
 );
diff --git a/maintenance/language/zhtable/trad2simp_supp_unset.manual b/maintenance/language/zhtable/trad2simp_supp_unset.manual
deleted file mode 100644 (file)
index e69de29..0000000
index 01fbac7..d98654e 100644 (file)
@@ -149,7 +149,7 @@ class LockServerDaemon {
                $socketArray->addSocket( $this->sock ); // add listening socket
                do {
                        list( $read, $write ) = $socketArray->socketsForSelect();
-                       if ( socket_select( $read, $write, $except = NULL, NULL ) < 1 ) {
+                       if ( socket_select( $read, $write, $except = null, null ) < 1 ) {
                                continue; // wait
                        }
                        // Check if there is a client trying to connect...
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 f991c1b..5171b17 100644 (file)
@@ -99,7 +99,6 @@ class MoveBatch extends Maintenance {
                                continue;
                        }
 
-
                        $this->output( $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText() );
                        $dbw->begin( __METHOD__ );
                        $err = $source->moveTo( $dest, false, $reason, !$noredirects );
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 7e15c09..ee3f709 100644 (file)
@@ -174,8 +174,6 @@ class ReassignEdits extends Maintenance {
                $user->load();
                return $user;
        }
-
-
 }
 
 $maintClass = "ReassignEdits";
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 7fe5c4c..9f73e49 100644 (file)
@@ -207,6 +207,5 @@ class RefreshImageMetadata extends Maintenance {
        }
 }
 
-
 $maintClass = 'RefreshImageMetadata';
 require_once RUN_MAINTENANCE_IF_MAIN;
index 93ba24a..76340cd 100644 (file)
@@ -60,6 +60,5 @@ class BatchedQueryRunner extends Maintenance {
        }
 }
 
-
 $maintClass = "BatchedQueryRunner";
 require_once RUN_MAINTENANCE_IF_MAIN;
index cd9768d..9168d6f 100644 (file)
@@ -57,7 +57,6 @@ class ShowCacheStats extends Maintenance {
                $this->output( sprintf( "without session:   %-10d %6.2f%%\n", $noSession, $noSession / $total * 100 ) );
                $this->output( sprintf( "total:             %-10d %6.2f%%\n", $total, 100 ) );
 
-
                $this->output( "\nParser cache\n" );
                $hits = intval( $wgMemc->get( wfMemcKey( 'stats', 'pcache_hit' ) ) );
                $expired = intval( $wgMemc->get( wfMemcKey( 'stats', 'pcache_miss_expired' ) ) );
index 03dc113..9174d12 100644 (file)
@@ -34,7 +34,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
        $cs->check( $fix, $xml );
 }
 
-
 // ----------------------------------------------------------------------------------
 
 /**
@@ -331,7 +330,6 @@ class CheckStorage {
                }
        }
 
-
        function error( $type, $msg, $ids ) {
                if ( is_array( $ids ) && count( $ids ) == 1 ) {
                        $ids = reset( $ids );
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 fdc28d9..d693986 100644 (file)
@@ -45,7 +45,6 @@ if ( isset( $options['limit'] ) ) {
 }
 $type = isset( $options['type'] ) ? $options['type'] : 'ConcatenatedGzipHistoryBlob';
 
-
 $dbr = wfGetDB( DB_SLAVE );
 $res = $dbr->select(
        array( 'page', 'revision', 'text' ),
index 7857dd9..c2df0dd 100644 (file)
@@ -24,7 +24,6 @@
 
 require __DIR__ . '/../commandLine.inc';
 
-
 if ( count( $args ) < 1 ) {
        echo "Usage: php trackBlobs.php <cluster> [... <cluster>]\n";
        echo "Adds blobs from a given ES cluster to the blob_tracking table\n";
index 6f3b6f4..e01406d 100644 (file)
@@ -171,7 +171,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 51da80d..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,13 +43,12 @@ 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 );
                }
        }
 
-
        /**
         * This is used to check options. Only needed on construction
         *
@@ -179,7 +178,6 @@ class userOptions {
                }
        }
 
-
        /** Change our users options */
        private function CHANGER() {
                $this->warn();
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..df124cc 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',
@@ -1176,4 +1185,15 @@ return array(
                ),
                'position' => 'top',
        ),
+
+       /* OOJS */
+       // WARNING: oojs is NOT COMPATIBLE with older browsers and
+       // WILL BREAK if loaded in browsers that don't support ES5
+       'oojs' => array(
+               'scripts' => array(
+                       'resources/oojs/oojs.js',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
 );
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 2d22bad..bc2a0a2 100644 (file)
@@ -9,6 +9,12 @@
                var isValid = mw.util.validateEmail( mail ),
                        $label = $( '#mw-emailaddress-validity' );
 
+               // Set up the validity notice if it doesn't already exist
+               if ( $label.length === 0 ) {
+                       $label = $( '<label for="wpNewEmail" id="mw-emailaddress-validity"></label>' )
+                               .insertAfter( '#wpNewEmail' );
+               }
+
                // We allow empty address
                if ( isValid === null ) {
                        $label.text( '' ).removeClass( 'valid invalid' );
        }
 
        $( function () {
-               // Lame tip to let user know if its email is valid. See bug 22449.
-               // Only bind once for 'blur' so that the user can fill it in without errors;
-               // after that, look at every keypress for immediate feedback.
-               $( '#wpNewEmail' ).one( 'blur', function () {
-                       var $this = $( this );
-                       if ( $( '#mw-emailaddress-validity' ).length === 0 ) {
-                               $this.after( '<label for="wpNewEmail" id="mw-emailaddress-validity"></label>' );
-                       }
-
-                       updateMailValidityLabel( $this.val() );
-                       $this.keyup( function () {
+               $( '#wpNewEmail' )
+                       // Lame tip to let user know if its email is valid. See bug 22449.
+                       // Only bind once for 'blur' so that the user can fill it in without errors;
+                       // after that, look at every keypress for immediate feedback.
+                       .one( 'blur', function () {
+                               var $this = $( this );
                                updateMailValidityLabel( $this.val() );
+                               $this.keyup( function () {
+                                       updateMailValidityLabel( $this.val() );
+                               } );
+                       } )
+                       // Supress built-in validation notice and just call updateMailValidityLabel(),
+                       // to avoid double notice. See bug 40909.
+                       .on( 'invalid', function ( e ) {
+                               e.preventDefault();
+                               updateMailValidityLabel( $( this ).val() );
                        } );
-               } );
        } );
 }( mediaWiki, jQuery ) );
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 dde5abf..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;
                        thumbPhpRegex = /thumb\.php/,
                        regexes = [
                                // Thumbnails
-                               /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)\/[^\s\/]+-\1[^\s\/]*$/,
+                               /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)\/[^\s\/]+-(?:\1|thumbnail)[^\s\/]*$/,
 
                                // Thumbnails in non-hashed upload directories
-                               /\/([^\s\/]+)\/[^\s\/]+-\1[^\s\/]*$/,
+                               /\/([^\s\/]+)\/[^\s\/]+-(?:\1|thumbnail)[^\s\/]*$/,
 
                                // Full size images
                                /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s\/]+)$/,
                 * Get the URL to this title
                 *
                 * @see mw.util#getUrl
+                * @param {Object} [params] A mapping of query parameter names to values,
+                *     e.g. `{ action: 'edit' }`.
                 * @return {string}
                 */
-               getUrl: function () {
-                       return mw.util.getUrl( this.toString() );
+               getUrl: function ( params ) {
+                       return mw.util.getUrl( this.toString(), params );
                },
 
                /**
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;
                                                }
 
index a057cce..86f06b8 100644 (file)
                 * Get the link to a page name (relative to `wgServer`),
                 *
                 * @param {string} str Page name to get the link for.
-                * @param {Object} params A mapping of query parameter names to values,
-                *     e.g. { action: 'edit' }. Optional.
+                * @param {Object} [params] A mapping of query parameter names to values,
+                *     e.g. `{ action: 'edit' }`.
                 * @return {string} Location for a page with name of `str` or boolean false on error.
                 */
                getUrl: function ( str, params ) {
diff --git a/resources/oojs/oojs.js b/resources/oojs/oojs.js
new file mode 100644 (file)
index 0000000..d2d61e9
--- /dev/null
@@ -0,0 +1,847 @@
+/*!
+ * Object Oriented JavaScript Library v1.0.5
+ * https://github.com/trevorparscal/oojs
+ *
+ * Copyright 2011-2013 OOJS Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: Wed Oct 23 2013 02:22:02 GMT+0200 (CEST)
+ */
+( function ( global ) {
+
+'use strict';
+var
+       /**
+        * Namespace for all classes, static methods and static properties.
+        * @class OO
+        * @singleton
+        */
+       oo = {},
+       hasOwn = oo.hasOwnProperty,
+       toString = oo.toString;
+
+/* Class Methods */
+
+
+/**
+ * Assert whether a value is a plain object or not.
+ *
+ * @method
+ * @param {Mixed} obj
+ * @return {boolean}
+ */
+oo.isPlainObject = function ( obj ) {
+       // Any object or value whose internal [[Class]] property is not "[object Object]"
+       if ( toString.call( obj ) !== '[object Object]' ) {
+               return false;
+       }
+
+       // The try/catch suppresses exceptions thrown when attempting to access
+       // the "constructor" property of certain host objects suich as window.location
+       // in Firefox < 20 (https://bugzilla.mozilla.org/814622)
+       try {
+               if ( obj.constructor &&
+                               !hasOwn.call( obj.constructor.prototype, 'isPrototypeOf' ) ) {
+                       return false;
+               }
+       } catch ( e ) {
+               return false;
+       }
+
+       return true;
+};
+
+/**
+ * Utility for common usage of Object#create for inheriting from one
+ * prototype to another.
+ *
+ * Beware: This redefines the prototype, call before setting your prototypes.
+ * Beware: This redefines the prototype, can only be called once on a function.
+ *  If called multiple times on the same function, the previous prototype is lost.
+ *  This is how prototypal inheritance works, it can only be one straight chain
+ *  (just like classical inheritance in PHP for example). If you need to work with
+ *  multiple constructors consider storing an instance of the other constructor in a
+ *  property instead, or perhaps use a mixin (see oo.mixinClass).
+ *
+ *     function Foo() {}
+ *     Foo.prototype.jump = function () {};
+ *
+ *     function FooBar() {}
+ *     oo.inheritClass( FooBar, Foo );
+ *     FooBar.prop.feet = 2;
+ *     FooBar.prototype.walk = function () {};
+ *
+ *     function FooBarQuux() {}
+ *     OO.inheritClass( FooBarQuux, FooBar );
+ *     FooBarQuux.prototype.jump = function () {};
+ *
+ *     FooBarQuux.prop.feet === 2;
+ *     var fb = new FooBar();
+ *     fb.jump();
+ *     fb.walk();
+ *     fb instanceof Foo && fb instanceof FooBar && fb instanceof FooBarQuux;
+ *
+ * @method
+ * @param {Function} targetFn
+ * @param {Function} originFn
+ * @throws {Error} If target already inherits from origin
+ */
+oo.inheritClass = function ( targetFn, originFn ) {
+       if ( targetFn.prototype instanceof originFn ) {
+               throw new Error( 'Target already inherits from origin' );
+       }
+
+       var targetConstructor = targetFn.prototype.constructor;
+
+       targetFn.prototype = Object.create( originFn.prototype, {
+               // Restore constructor property of targetFn
+               constructor: {
+                       value: targetConstructor,
+                       enumerable: false,
+                       writable: true,
+                       configurable: true
+               }
+       } );
+
+       // Extend static properties - always initialize both sides
+       originFn.static = originFn.static || {};
+       targetFn.static = Object.create( originFn.static );
+};
+
+/**
+ * Utility to copy over *own* prototype properties of a mixin.
+ * The 'constructor' (whether implicit or explicit) is not copied over.
+ *
+ * This does not create inheritance to the origin. If inheritance is needed
+ * use oo.inheritClass instead.
+ *
+ * Beware: This can redefine a prototype property, call before setting your prototypes.
+ * Beware: Don't call before oo.inheritClass.
+ *
+ *     function Foo() {}
+ *     function Context() {}
+ *
+ *     // Avoid repeating this code
+ *     function ContextLazyLoad() {}
+ *     ContextLazyLoad.prototype.getContext = function () {
+ *         if ( !this.context ) {
+ *             this.context = new Context();
+ *         }
+ *         return this.context;
+ *     };
+ *
+ *     function FooBar() {}
+ *     OO.inheritClass( FooBar, Foo );
+ *     OO.mixinClass( FooBar, ContextLazyLoad );
+ *
+ * @method
+ * @param {Function} targetFn
+ * @param {Function} originFn
+ */
+oo.mixinClass = function ( targetFn, originFn ) {
+       var key;
+
+       // Copy prototype properties
+       for ( key in originFn.prototype ) {
+               if ( key !== 'constructor' && hasOwn.call( originFn.prototype, key ) ) {
+                       targetFn.prototype[key] = originFn.prototype[key];
+               }
+       }
+
+       // Copy static properties - always initialize both sides
+       targetFn.static = targetFn.static || {};
+       if ( originFn.static ) {
+               for ( key in originFn.static ) {
+                       if ( hasOwn.call( originFn.static, key ) ) {
+                               targetFn.static[key] = originFn.static[key];
+                       }
+               }
+       } else {
+               originFn.static = {};
+       }
+};
+
+/* Object Methods */
+
+/**
+ * Create a new object that is an instance of the same
+ * constructor as the input, inherits from the same object
+ * and contains the same own properties.
+ *
+ * This makes a shallow non-recursive copy of own properties.
+ * To create a recursive copy of plain objects, use #copy.
+ *
+ *     var foo = new Person( mom, dad );
+ *     foo.setAge( 21 );
+ *     var foo2 = OO.cloneObject( foo );
+ *     foo.setAge( 22 );
+ *
+ *     // Then
+ *     foo2 !== foo; // true
+ *     foo2 instanceof Person; // true
+ *     foo2.getAge(); // 21
+ *     foo.getAge(); // 22
+ *
+ * @method
+ * @param {Object} origin
+ * @return {Object} Clone of origin
+ */
+oo.cloneObject = function ( origin ) {
+       var key, r;
+
+       r = Object.create( origin.constructor.prototype );
+
+       for ( key in origin ) {
+               if ( hasOwn.call( origin, key ) ) {
+                       r[key] = origin[key];
+               }
+       }
+
+       return r;
+};
+
+/**
+ * Gets an array of all property values in an object.
+ *
+ * @method
+ * @param {Object} Object to get values from
+ * @returns {Array} List of object values
+ */
+oo.getObjectValues = function ( obj ) {
+       var key, values;
+
+       if ( obj !== Object( obj ) ) {
+               throw new TypeError( 'Called on non-object' );
+       }
+
+       values = [];
+       for ( key in obj ) {
+               if ( hasOwn.call( obj, key ) ) {
+                       values[values.length] = obj[key];
+               }
+       }
+
+       return values;
+};
+
+/**
+ * Recursively compares properties between two objects.
+ *
+ * A false result may be caused by property inequality or by properties in one object missing from
+ * the other. An asymmetrical test may also be performed, which checks only that properties in the
+ * first object are present in the second object, but not the inverse.
+ *
+ * @method
+ * @param {Object} a First object to compare
+ * @param {Object} b Second object to compare
+ * @param {boolean} [asymmetrical] Whether to check only that b contains values from a
+ * @returns {boolean} If the objects contain the same values as each other
+ */
+oo.compare = function ( a, b, asymmetrical ) {
+       var aValue, bValue, aType, bType, k;
+
+       if ( a === b ) {
+               return true;
+       }
+
+       for ( k in a ) {
+               aValue = a[k];
+               bValue = b[k];
+               aType = typeof aValue;
+               bType = typeof bValue;
+               if ( aType !== bType ||
+                       ( ( aType === 'string' || aType === 'number' ) && aValue !== bValue ) ||
+                       ( aValue === Object( aValue ) && !oo.compare( aValue, bValue, asymmetrical ) ) ) {
+                       return false;
+               }
+       }
+       // If the check is not asymmetrical, recursing with the arguments swapped will verify our result
+       return asymmetrical ? true : oo.compare( b, a, true );
+};
+
+/**
+ * Create a plain deep copy of any kind of object.
+ *
+ * Copies are deep, and will either be an object or an array depending on `source`.
+ *
+ * @method
+ * @param {Object} source Object to copy
+ * @param {Function} [callback] Applied to leaf values before they added to the clone
+ * @returns {Object} Copy of source object
+ */
+oo.copy = function ( source, callback ) {
+       var key, sourceValue, sourceType, destination;
+
+       if ( typeof source.clone === 'function' ) {
+               return source.clone();
+       }
+
+       destination = Array.isArray( source ) ? new Array( source.length ) : {};
+
+       for ( key in source ) {
+               sourceValue = source[key];
+               sourceType = typeof sourceValue;
+               if ( Array.isArray( sourceValue ) ) {
+                       // Array
+                       destination[key] = oo.copy( sourceValue, callback );
+               } else if ( sourceValue && typeof sourceValue.clone === 'function' ) {
+                       // Duck type object with custom clone method
+                       destination[key] = callback ?
+                               callback( sourceValue.clone() ) : sourceValue.clone();
+               } else if ( sourceValue && typeof sourceValue.cloneNode === 'function' ) {
+                       // DOM Node
+                       destination[key] = callback ?
+                               callback( sourceValue.cloneNode( true ) ) : sourceValue.cloneNode( true );
+               } else if ( oo.isPlainObject( sourceValue ) ) {
+                       // Plain objects
+                       destination[key] = oo.copy( sourceValue, callback );
+               } else {
+                       // Non-plain objects (incl. functions) and primitive values
+                       destination[key] = callback ? callback( sourceValue ) : sourceValue;
+               }
+       }
+
+       return destination;
+};
+
+/**
+ * Generates a hash of an object based on its name and data.
+ * Performance optimization: http://jsperf.com/ve-gethash-201208#/toJson_fnReplacerIfAoForElse
+ *
+ * To avoid two objects with the same values generating different hashes, we utilize the replacer
+ * argument of JSON.stringify and sort the object by key as it's being serialized. This may or may
+ * not be the fastest way to do this; we should investigate this further.
+ *
+ * Objects and arrays are hashed recursively. When hashing an object that has a .getHash()
+ * function, we call that function and use its return value rather than hashing the object
+ * ourselves. This allows classes to define custom hashing.
+ *
+ * @param {Object} val Object to generate hash for
+ * @returns {string} Hash of object
+ */
+oo.getHash = function ( val ) {
+       return JSON.stringify( val, oo.getHash.keySortReplacer );
+};
+
+/**
+ * Helper function for oo.getHash which sorts objects by key.
+ *
+ * This is a callback passed into JSON.stringify.
+ *
+ * @param {string} key Property name of value being replaced
+ * @param {Mixed} val Property value to replace
+ * @returns {Mixed} Replacement value
+ */
+oo.getHash.keySortReplacer = function ( key, val ) {
+       var normalized, keys, i, len;
+       if ( val && typeof val.getHashObject === 'function' ) {
+               // This object has its own custom hash function, use it
+               val = val.getHashObject();
+       }
+       if ( !Array.isArray( val ) && Object( val ) === val ) {
+               // Only normalize objects when the key-order is ambiguous
+               // (e.g. any object not an array).
+               normalized = {};
+               keys = Object.keys( val ).sort();
+               i = 0;
+               len = keys.length;
+               for ( ; i < len; i += 1 ) {
+                       normalized[keys[i]] = val[keys[i]];
+               }
+               return normalized;
+
+       // Primitive values and arrays get stable hashes
+       // by default. Lets those be stringified as-is.
+       } else {
+               return val;
+       }
+};
+
+/**
+ * Compute the union (duplicate-free merge) of a set of arrays.
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * By building an object (with the values for keys) in parallel with
+ * the array, a new item's existence in the union can be computed faster
+ *
+ * @param {Array...} arrays Arrays to union
+ * @returns {Array} Union of the arrays
+ */
+oo.simpleArrayUnion = function () {
+       var i, ilen, arr, j, jlen,
+               obj = {},
+               result = [];
+
+       for ( i = 0, ilen = arguments.length; i < ilen; i++ ) {
+               arr = arguments[i];
+               for ( j = 0, jlen = arr.length; j < jlen; j++ ) {
+                       if ( !obj[ arr[j] ] ) {
+                               obj[ arr[j] ] = true;
+                               result.push( arr[j] );
+                       }
+               }
+       }
+
+       return result;
+};
+
+/**
+ * Combine arrays (intersection or difference).
+ *
+ * An intersection checks the item exists in 'b' while difference checks it doesn't.
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * By building an object (with the values for keys) of 'b' we can
+ * compute the result faster
+ *
+ * @private
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @param {boolean} includeB Whether to items in 'b'
+ * @returns {Array} Combination (intersection or difference) of arrays
+ */
+function simpleArrayCombine( a, b, includeB ) {
+       var i, ilen, isInB,
+               bObj = {},
+               result = [];
+
+       for ( i = 0, ilen = b.length; i < ilen; i++ ) {
+               bObj[ b[i] ] = true;
+       }
+
+       for ( i = 0, ilen = a.length; i < ilen; i++ ) {
+               isInB = !!bObj[ a[i] ];
+               if ( isInB === includeB ) {
+                       result.push( a[i] );
+               }
+       }
+
+       return result;
+}
+
+/**
+ * Compute the intersection of two arrays (items in both arrays).
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @returns {Array} Intersection of arrays
+ */
+oo.simpleArrayIntersection = function ( a, b ) {
+       return simpleArrayCombine( a, b, true );
+};
+
+/**
+ * Compute the difference of two arrays (items in 'a' but not 'b').
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @returns {Array} Intersection of arrays
+ */
+oo.simpleArrayDifference = function ( a, b ) {
+       return simpleArrayCombine( a, b, false );
+};
+/**
+ * Event emitter.
+ *
+ * @class OO.EventEmitter
+ *
+ * @constructor
+ * @property {Object} bindings
+ */
+oo.EventEmitter = function OoEventEmitter() {
+       // Properties
+       this.bindings = {};
+};
+
+/* Methods */
+
+/**
+ * Add a listener to events of a specific event.
+ *
+ * If the callback/context are already bound to the event, they will not be bound again.
+ *
+ * @method
+ * @param {string} event Type of event to listen to
+ * @param {Function} callback Function to call when event occurs
+ * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
+ * @param {Object} [context=null] Object to use as context for callback function or call method on
+ * @throws {Error} Listener argument is not a function or method name
+ * @chainable
+ */
+oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
+       var i, bindings, binding;
+
+       // Validate callback
+       if ( typeof callback !== 'function' ) {
+               throw new Error( 'Invalid callback. Function or method name expected.' );
+       }
+       // Fallback to null context
+       if ( arguments.length < 4 ) {
+               context = null;
+       }
+       if ( this.bindings.hasOwnProperty( event ) ) {
+               // Check for duplicate callback and context for this event
+               bindings = this.bindings[event];
+               i = bindings.length;
+               while ( i-- ) {
+                       binding = bindings[i];
+                       if ( bindings.callback === callback && bindings.context === context ) {
+                               return this;
+                       }
+               }
+       } else {
+               // Auto-initialize bindings list
+               bindings = this.bindings[event] = [];
+       }
+       // Add binding
+       bindings.push( {
+               'callback': callback,
+               'args': args,
+               'context': context
+       } );
+       return this;
+};
+
+/**
+ * Adds a one-time listener to a specific event.
+ *
+ * @method
+ * @param {string} event Type of event to listen to
+ * @param {Function} listener Listener to call when event occurs
+ * @chainable
+ */
+oo.EventEmitter.prototype.once = function ( event, listener ) {
+       var eventEmitter = this;
+       return this.on( event, function listenerWrapper() {
+               eventEmitter.off( event, listenerWrapper );
+               listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
+       } );
+};
+
+/**
+ * Remove a specific listener from a specific event.
+ *
+ * @method
+ * @param {string} event Type of event to remove listener from
+ * @param {Function} [callback] Listener to remove, omit to remove all
+ * @param {Object} [context=null] Object used context for callback function or method
+ * @chainable
+ * @throws {Error} Listener argument is not a function
+ */
+oo.EventEmitter.prototype.off = function ( event, callback, context ) {
+       var i, bindings;
+
+       if ( arguments.length === 1 ) {
+               // Remove all bindings for event
+               if ( event in this.bindings ) {
+                       delete this.bindings[event];
+               }
+       } else {
+               if ( typeof callback !== 'function' ) {
+                       throw new Error( 'Invalid callback. Function expected.' );
+               }
+               if ( !( event in this.bindings ) || !this.bindings[event].length ) {
+                       // No matching bindings
+                       return this;
+               }
+               // Fallback to null context
+               if ( arguments.length < 3 ) {
+                       context = null;
+               }
+               // Remove matching handlers
+               bindings = this.bindings[event];
+               i = bindings.length;
+               while ( i-- ) {
+                       if ( bindings[i].callback === callback && bindings[i].context === context ) {
+                               bindings.splice( i, 1 );
+                       }
+               }
+               // Cleanup if now empty
+               if ( bindings.length === 0 ) {
+                       delete this.bindings[event];
+               }
+       }
+       return this;
+};
+
+/**
+ * Emit an event.
+ * TODO: Should this be chainable? What is the usefulness of the boolean
+ * return value here?
+ *
+ * @method
+ * @param {string} event Type of event
+ * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
+ * @returns {boolean} If event was handled by at least one listener
+ */
+oo.EventEmitter.prototype.emit = function ( event ) {
+       var i, len, binding, bindings, args;
+
+       if ( event in this.bindings ) {
+               // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
+               bindings = this.bindings[event].slice();
+               args = Array.prototype.slice.call( arguments, 1 );
+               for ( i = 0, len = bindings.length; i < len; i++ ) {
+                       binding = bindings[i];
+                       binding.callback.apply(
+                               binding.context,
+                               binding.args ? binding.args.concat( args ) : args
+                       );
+               }
+               return true;
+       }
+       return false;
+};
+
+/**
+ * Connect event handlers to an object.
+ *
+ * @method
+ * @param {Object} context Object to call methods on when events occur
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of
+ * event bindings keyed by event name containing either method names, functions or arrays containing
+ * method name or function followed by a list of arguments to be passed to callback before emitted
+ * arguments
+ * @chainable
+ */
+oo.EventEmitter.prototype.connect = function ( context, methods ) {
+       var method, callback, args, event;
+
+       for ( event in methods ) {
+               method = methods[event];
+               // Allow providing additional args
+               if ( Array.isArray( method ) ) {
+                       args = method.slice( 1 );
+                       method = method[0];
+               } else {
+                       args = [];
+               }
+               // Allow callback to be a method name
+               if ( typeof method === 'string' ) {
+                       // Validate method
+                       if ( !context[method] || typeof context[method] !== 'function' ) {
+                               throw new Error( 'Method not found: ' + method );
+                       }
+                       // Resolve to function
+                       callback = context[method];
+               } else {
+                       callback = method;
+               }
+               // Add binding
+               this.on.apply( this, [ event, callback, args, context ] );
+       }
+       return this;
+};
+
+/**
+ * Disconnect event handlers from an object.
+ *
+ * @method
+ * @param {Object} context Object to disconnect methods from
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
+ * event bindings keyed by event name containing either method names or functions
+ * @chainable
+ */
+oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
+       var i, method, callback, event, bindings;
+
+       if ( methods ) {
+               // Remove specific connections to the context
+               for ( event in methods ) {
+                       method = methods[event];
+                       if ( typeof method === 'string' ) {
+                               // Validate method
+                               if ( !context[method] || typeof context[method] !== 'function' ) {
+                                       throw new Error( 'Method not found: ' + method );
+                               }
+                               // Resolve to function
+                               callback = context[method];
+                       } else {
+                               callback = method;
+                       }
+                       this.off( event, callback, context );
+               }
+       } else {
+               // Remove all connections to the context
+               for ( event in this.bindings ) {
+                       bindings = this.bindings[event];
+                       i = bindings.length;
+                       while ( i-- ) {
+                               if ( bindings[i].context === context ) {
+                                       this.off( event, bindings[i].callback, context );
+                               }
+                       }
+               }
+       }
+
+       return this;
+};
+/**
+ * Data registry.
+ *
+ * @class OO.Registry
+ * @mixins OO.EventEmitter
+ *
+ * @constructor
+ */
+oo.Registry = function OoRegistry() {
+       // Mixin constructors
+       oo.EventEmitter.call( this );
+
+       // Properties
+       this.registry = {};
+};
+
+/* Inheritance */
+
+oo.mixinClass( oo.Registry, oo.EventEmitter );
+
+/* Events */
+
+/**
+ * @event register
+ * @param {string} name
+ * @param {Mixed} data
+ */
+
+/* Methods */
+
+/**
+ * Associate one or more symbolic names with some data.
+ *
+ * Only the base name will be registered, overriding any existing entry with the same base name.
+ *
+ * @method
+ * @param {string|string[]} name Symbolic name or list of symbolic names
+ * @param {Mixed} data Data to associate with symbolic name
+ * @fires register
+ * @throws {Error} Name argument must be a string or array
+ */
+oo.Registry.prototype.register = function ( name, data ) {
+       if ( typeof name !== 'string' && !Array.isArray( name ) ) {
+               throw new Error( 'Name argument must be a string or array, cannot be a ' + typeof name );
+       }
+       var i, len;
+       if ( Array.isArray( name ) ) {
+               for ( i = 0, len = name.length; i < len; i++ ) {
+                       this.register( name[i], data );
+               }
+       } else if ( typeof name === 'string' ) {
+               this.registry[name] = data;
+               this.emit( 'register', name, data );
+       } else {
+               throw new Error( 'Name must be a string or array of strings, cannot be a ' + typeof name );
+       }
+};
+
+/**
+ * Gets data for a given symbolic name.
+ *
+ * Lookups are done using the base name.
+ *
+ * @method
+ * @param {string} name Symbolic name
+ * @returns {Mixed|undefined} Data associated with symbolic name
+ */
+oo.Registry.prototype.lookup = function ( name ) {
+       return this.registry[name];
+};
+/**
+ * Object factory.
+ *
+ * @class OO.Factory
+ * @extends OO.Registry
+ *
+ * @constructor
+ */
+oo.Factory = function OoFactory() {
+       // Parent constructor
+       oo.Registry.call( this );
+
+       // Properties
+       this.entries = [];
+};
+
+/* Inheritance */
+
+oo.inheritClass( oo.Factory, oo.Registry );
+
+/* Methods */
+
+/**
+ * Register a constructor with the factory.
+ *
+ * Classes must have a static `name` property to be registered.
+ *
+ *     @example
+ *     function MyClass() {};
+ *     // Adds a static property to the class defining a symbolic name
+ *     MyClass.static = { 'name': 'mine' };
+ *     // Registers class with factory, available via symbolic name 'mine'
+ *     factory.register( MyClass );
+ *
+ * @method
+ * @param {Function} constructor Constructor to use when creating object
+ * @throws {Error} Name must be a string and must not be empty
+ * @throws {Error} Constructor must be a function
+ */
+oo.Factory.prototype.register = function ( constructor ) {
+       var name;
+
+       if ( typeof constructor !== 'function' ) {
+               throw new Error( 'constructor must be a function, cannot be a ' + typeof constructor );
+       }
+       name = constructor.static && constructor.static.name;
+       if ( typeof name !== 'string' || name === '' ) {
+               throw new Error( 'Name must be a string and must not be empty' );
+       }
+       this.entries.push( name );
+       oo.Registry.prototype.register.call( this, name, constructor );
+};
+
+/**
+ * Create an object based on a name.
+ *
+ * Name is used to look up the constructor to use, while all additional arguments are passed to the
+ * constructor directly, so leaving one out will pass an undefined to the constructor.
+ *
+ * @method
+ * @param {string} name Object name
+ * @param {Mixed...} [args] Arguments to pass to the constructor
+ * @returns {Object} The new object
+ * @throws {Error} Unknown object name
+ */
+oo.Factory.prototype.create = function ( name ) {
+       var args, obj, constructor;
+
+       if ( !this.registry.hasOwnProperty( name ) ) {
+               throw new Error( 'No class registered by that name: ' + name );
+       }
+       constructor = this.registry[name];
+
+       // Convert arguments to array and shift the first argument (name) off
+       args = Array.prototype.slice.call( arguments, 1 );
+
+       // We can't use the "new" operator with .apply directly because apply needs a
+       // context. So instead just do what "new" does: create an object that inherits from
+       // the constructor's prototype (which also makes it an "instanceof" the constructor),
+       // then invoke the constructor with the object as context, and return it (ignoring
+       // the constructor's return value).
+       obj = Object.create( constructor.prototype );
+       constructor.apply( obj, args );
+       return obj;
+};
+/*jshint node:true */
+if ( typeof module !== 'undefined' && module.exports ) {
+       module.exports = oo;
+} else {
+       global.OO = oo;
+}
+}( this ) );
index b6a27d2..6aba2f9 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * This script provides a function which is run to evaluate whether or not to
- * continue loading the jquery and mediawiki modules. This code should work on
+ * continue loading jQuery and the MediaWiki modules. This code should work on
  * even the most ancient of browsers, so be very careful when editing.
  */
 
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 0370e05..142cb8d 100644 (file)
@@ -169,7 +169,6 @@ class CologneBlueTemplate extends BaseTemplate {
 
                        $lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) );
 
-
                        // Second row. Privileged actions.
                        $element = array();
 
@@ -183,7 +182,6 @@ class CologneBlueTemplate extends BaseTemplate {
 
                        $lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) );
 
-
                        // Third row. Language links.
                        $lines[] = $this->otherLanguages();
                }
@@ -467,7 +465,6 @@ class CologneBlueTemplate extends BaseTemplate {
                        $bar = $this->sidebarAdditions( $bar );
                }
 
-
                // Fill out special sidebar items with content
                $orig_bar = $bar;
                $bar = array();
@@ -481,7 +478,6 @@ class CologneBlueTemplate extends BaseTemplate {
                        }
                }
 
-
                // Output the sidebar
                // CologneBlue uses custom messages for some portlets, but we should keep the ids for consistency
                $idToMessage = array(
index 6d66cac..f7fb0d8 100644 (file)
@@ -321,5 +321,3 @@ echo $footerEnd;
 <?php
        }
 } // end of class
-
-
index 5862877..c7804a0 100644 (file)
@@ -112,6 +112,7 @@ div.top,
 div#column-one,
 #colophon,
 .mw-editsection,
+.mw-editsection-like,
 .toctoggle,
 .tochidden,
 div#f-poweredbyico,
index f5b6231..2e61f63 100644 (file)
@@ -1187,7 +1187,8 @@ table.floatleft {
 }
 
 /* Display editsection links smaller and next to headings */
-.mw-editsection {
+.mw-editsection,
+.mw-editsection-like {
        font-size: small;
        font-weight: normal;
        margin-left: 1em;
index e97bbdb..150d2d2 100644 (file)
@@ -4,6 +4,7 @@
 #jump-to-nav,
 #footer,
 .mw-editsection,
+.mw-editsection-like,
 .noprint {
        display: none;
 }
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 ) {
index 042956a..cc49fde 100644 (file)
@@ -100,17 +100,14 @@ class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
                print <<<EOT
 
 ParserTest-specific options:
-
   --regex="<regex>"        Only run parser tests that match the given regex
   --file="<filename>"      File describing parser tests
   --keep-uploads           Re-use the same upload directory for each test, don't delete it
 
-
 Database options:
   --use-normal-tables      Use normal DB tables.
   --reuse-db               Init DB only if tables are missing and keep after finish.
 
-
 Debugging options:
   --debug-tests            Log testing activity to the PHPUnitCommand log channel.
 
index 6ce78b5..7a7ec8f 100644 (file)
@@ -35,6 +35,13 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        private static $dbSetup = false;
        private static $oldTablePrefix = false;
 
+       /**
+        * Original value of PHP's error_reporting setting.
+        *
+        * @var int
+        */
+       private $phpErrorLevel;
+
        /**
         * Holds the paths of temporary files/directories created through getNewTempFile,
         * and getNewTempDirectory
@@ -172,6 +179,8 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                parent::setUp();
                $this->called['setUp'] = 1;
 
+               $this->phpErrorLevel = intval( ini_get( 'error_reporting' ) );
+
                /*
                // @todo global variables to restore for *every* test
                array(
@@ -233,6 +242,18 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                }
                $this->mwGlobals = array();
 
+               $phpErrorLevel = intval( ini_get( 'error_reporting' ) );
+
+               if ( $phpErrorLevel !== $this->phpErrorLevel ) {
+                       ini_set( 'error_reporting', $this->phpErrorLevel );
+
+                       $oldHex = strtoupper( dechex( $this->phpErrorLevel ) );
+                       $newHex = strtoupper( dechex( $phpErrorLevel ) );
+                       $message = "PHP error_reporting setting was left dirty: was 0x$oldHex before test, 0x$newHex after test!";
+
+                       $this->fail( $message );
+               }
+
                parent::tearDown();
                wfProfileOut( __METHOD__ );
        }
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();
        }
 
        /**
index 7d2b04f..0dee6b0 100644 (file)
@@ -202,7 +202,6 @@ class EditPageTest extends MediaWikiLangTestCase {
                        "expected article not being created if empty"
                );
 
-
                $this->assertEdit(
                        'MediaWiki:January',
                        null,
index 63fff6e..e2a3711 100644 (file)
@@ -38,7 +38,6 @@ class ExceptionTest extends MediaWikiTestCase {
                );
        }
 
-
        /**
         * Lame JSON schema validation.
         *
index 868090e..f67f696 100644 (file)
@@ -141,7 +141,6 @@ class GlobalTest extends MediaWikiTestCase {
                $this->assertEquals( $result, wfArrayToCgi( $array ) );
        }
 
-
        /**
         * @covers ::wfArrayToCgi
         */
@@ -293,11 +292,11 @@ class GlobalTest extends MediaWikiTestCase {
                unlink( $wgDebugLogFile );
 
                wfDebugMem();
-               $this->assertGreaterThan( 5000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
+               $this->assertGreaterThan( 1000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
                unlink( $wgDebugLogFile );
 
                wfDebugMem( true );
-               $this->assertGreaterThan( 5000000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
+               $this->assertGreaterThan( 1000000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
                unlink( $wgDebugLogFile );
 
                $wgDebugLogFile = $old_log_file;
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 8fea8cc..e60dc54 100644 (file)
@@ -240,7 +240,6 @@ class PathRouterTest extends MediaWikiTestCase {
                $this->assertEquals( $matches, array( 'title' => "Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." ) );
        }
 
-
        /**
         * Ensure that the php passed site of parameter values are not urldecoded
         */
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 e17c7b0..7e275a5 100644 (file)
@@ -56,7 +56,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                }
        }
 
-       public function tearDown() {
+       protected function tearDown() {
                global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
 
                parent::tearDown();
@@ -170,7 +170,6 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $this->assertRevEquals( $orig, $rev );
        }
 
-
        /**
         * @covers Revision::newFromArchiveRow
         */
index 4e83e35..f830e36 100644 (file)
@@ -57,7 +57,6 @@ class RevisionTest_ContentHandlerUseDB extends RevisionStorageTest {
                }
        }
 
-
        /**
         * @covers Revision::getContentFormat
         */
index b5819ff..fc23919 100644 (file)
@@ -325,7 +325,6 @@ class RevisionTest extends MediaWikiTestCase {
                $this->assertEquals( $expectedText, $rev->getRawText( $audience ) );
        }
 
-
        public function dataGetSize() {
                return array(
                        array( "hello world.", CONTENT_MODEL_WIKITEXT, 12 ),
@@ -428,7 +427,6 @@ class RevisionTest extends MediaWikiTestCase {
                $this->assertEquals( "bar", $content->getText() ); // clones should be independent
        }
 
-
        /**
         * Tests whether $rev->getContent() returns the same object repeatedly if appropriate.
         *
index fb8f7ad..65057a5 100644 (file)
  */
 class SpecialPageTest extends MediaWikiTestCase {
 
-       public function setUp() {
+       protected function setUp() {
                parent::setUp();
 
                $this->setMwGlobals( array(
+                       'wgScript' => '/index.php',
                        'wgContLang' => Language::factory( 'en' )
                ) );
        }
@@ -57,4 +58,58 @@ class SpecialPageTest extends MediaWikiTestCase {
                );
        }
 
+       /**
+        * @dataProvider requireLoginAnonProvider
+        */
+       public function testRequireLoginAnon( $expected, $reason, $title ) {
+               $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
+
+               $user = User::newFromId( 0 );
+               $specialPage->getContext()->setUser( $user );
+               $specialPage->getContext()->setLanguage( Language::factory( 'en' ) );
+
+               $this->setExpectedException( 'UserNotLoggedIn', $expected );
+
+               if ( $reason === 'blank' && $title === 'blank' ) {
+                       $specialPage->requireLogin();
+               } else {
+                       $specialPage->requireLogin( $reason, $title );
+               }
+       }
+
+       public function requireLoginAnonProvider() {
+               $lang = 'en';
+
+               $msg = wfMessage( 'loginreqlink' )->inLanguage( $lang )->escaped();
+               $loginLink = '<a href="/index.php?title=Special:UserLogin&amp;returnto=Special%3AWatchlist"'
+                       . ' title="Special:UserLogin">' . $msg . '</a>';
+
+               $expected1 = wfMessage( 'exception-nologin-text-manual' )
+                       ->params( $loginLink )->inLanguage( $lang )->text();
+
+               $expected2 = wfMessage( 'about' )->inLanguage( $lang )->text();
+
+               return array(
+                       array( $expected1, null, null ),
+                       array( $expected2, 'about', null ),
+                       array( $expected2, wfMessage( 'about' ), null ),
+                       array( $expected2, 'about', 'about' ),
+                       array( $expected2, 'about', wfMessage( 'about' ) ),
+                       array( $expected1, 'blank', 'blank' )
+               );
+       }
+
+       public function testRequireLoginNotAnon() {
+               $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
+
+               $user = User::newFromId( 0 );
+               $user->setId( 1 );
+               $specialPage->getContext()->setUser( $user );
+
+               $specialPage->requireLogin();
+
+               // no exception thrown, logged in use can access special page
+               $this->assertTrue( true );
+       }
+
 }
index 08a5495..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();
@@ -228,7 +230,7 @@ class StatusTest extends MediaWikiTestCase {
         */
        public function testCleanParams( $cleanCallback, $params, $expected ) {
                $method = new ReflectionMethod( 'Status', 'cleanParams' );
-               $method->setAccessible(TRUE);
+               $method->setAccessible( true );
                $status = new Status();
                $status->cleanCallback = $cleanCallback;
 
@@ -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 4a0a755..c7cbc7b 100644 (file)
@@ -47,7 +47,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                date_default_timezone_set( $localZone );
 
                $this->title = Title::makeTitle( NS_MAIN, "Main Page" );
-               if ( !isset( $this->userUser ) || !( $this->userUser instanceOf User ) ) {
+               if ( !isset( $this->userUser ) || !( $this->userUser instanceof User ) ) {
                        $this->userUser = User::newFromName( $this->userName );
 
                        if ( !$this->userUser->getID() ) {
index 1258eb1..796adf3 100644 (file)
@@ -576,7 +576,6 @@ class WikiPageTest extends MediaWikiLangTestCase {
                );
        }
 
-
        /**
         * @dataProvider provideIsCountable
         * @covers WikiPage::isCountable
@@ -678,7 +677,6 @@ just a test
 more stuff
 ";
 
-
        public function dataReplaceSection() {
                //NOTE: assume the Help namespace to contain wikitext
                return array(
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 1540af5..ba7fb25 100644 (file)
@@ -3,6 +3,7 @@
 /**
  * @group API
  * @group Database
+ * @group medium
  */
 
 /**
@@ -95,7 +96,6 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $this->assertTrue( $exception, "Got exception" );
        }
 
-
        /**
         * @depends testLogin
         */
@@ -110,6 +110,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        $this->markTestIncomplete( $e->getMessage() );
                }
 
+               /** @var array $filePaths */
                $filePath = $filePaths[0];
                $fileSize = filesize( $filePath );
                $fileName = basename( $filePath );
@@ -147,7 +148,6 @@ class ApiUploadTest extends ApiTestCaseUpload {
                unlink( $filePath );
        }
 
-
        /**
         * @depends testLogin
         */
@@ -185,7 +185,6 @@ class ApiUploadTest extends ApiTestCaseUpload {
                unlink( $filePath );
        }
 
-
        /**
         * @depends testLogin
         */
@@ -201,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
@@ -257,7 +257,6 @@ class ApiUploadTest extends ApiTestCaseUpload {
                unlink( $filePaths[1] );
        }
 
-
        /**
         * @depends testLogin
         */
@@ -272,6 +271,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        $this->markTestIncomplete( $e->getMessage() );
                }
 
+               /** @var array $filePaths */
                $fileNames[0] = basename( $filePaths[0] );
                $fileNames[1] = "SameContentAs" . $fileNames[0];
 
@@ -356,6 +356,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        $this->markTestIncomplete( $e->getMessage() );
                }
 
+               /** @var array $filePaths */
                $filePath = $filePaths[0];
                $fileSize = filesize( $filePath );
                $fileName = basename( $filePath );
index 59756b2..1d534ee 100644 (file)
@@ -66,7 +66,6 @@ class RandomImageGenerator {
                )
        );
 
-
        public function __construct( $options = array() ) {
                foreach ( array( 'dictionaryFile', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'shapesToDraw' ) as $property ) {
                        if ( isset( $options[$property] ) ) {
@@ -112,10 +111,13 @@ class RandomImageGenerator {
                return $filenames;
        }
 
-
        /**
         * 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;
@@ -159,7 +161,6 @@ class RandomImageGenerator {
                return $filenames;
        }
 
-
        /**
         * Generate data representing an image of random size (within limits),
         * consisting of randomly colored and sized upward pointing triangles against a random background color
@@ -222,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/>' );
@@ -250,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.
@@ -307,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();
@@ -355,7 +359,6 @@ class RandomImageGenerator {
                );
        }
 
-
        /**
         * Based on an image specification, write such an image to disk, using the command line ImageMagick program ('convert').
         *
@@ -365,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;
@@ -392,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();
@@ -426,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..1b5a05e 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] ) ) . ']';
@@ -200,7 +204,7 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
                        if ( $numericIds ) {
                                ksort( $results, SORT_NUMERIC );
                        } elseif ( $sort !== null && $sort !== false ) {
-                               uasort( $results, $sort );
+                               usort( $results, $sort );
                        }
                }
        }
index 9cfab41..a657459 100644 (file)
@@ -102,47 +102,43 @@ STR;
 
        protected function assertResult( $exp, $result, $message = '' ) {
                try {
-                       $this->assertResultRecursive( $exp, $result );
-               } catch ( Exception $e ) {
+                       $exp = self::sanitizeResultArray( $exp );
+                       $result = self::sanitizeResultArray( $result );
+                       $this->assertEquals( $exp, $result );
+               } catch ( PHPUnit_Framework_ExpectationFailedException $e ) {
                        if ( is_array( $message ) ) {
                                $message = http_build_query( $message );
                        }
-                       print "\nRequest: $message\n";
-                       print "\nExpected:\n";
-                       print_r( $exp );
-                       print "\nResult:\n";
-                       print_r( $result );
-                       throw $e; // rethrow it
+                       throw new PHPUnit_Framework_ExpectationFailedException(
+                               $e->getMessage() . "\nRequest: $message",
+                               new PHPUnit_Framework_ComparisonFailure(
+                                       $exp,
+                                       $result,
+                                       print_r( $exp, true ),
+                                       print_r( $result, true ),
+                                       false,
+                                       $e->getComparisonFailure()->getMessage() . "\nRequest: $message"
+                               )
+                       );
                }
        }
 
        /**
-        * Recursively compare arrays, ignoring mismatches in numeric key and pageids.
-        * @param $expected array expected values
-        * @param $result array returned values
+        * Recursively ksorts a result array and removes any 'pageid' keys.
+        * @param array $result
+        * @return array
         */
-       private function assertResultRecursive( $expected, $result ) {
-               reset( $expected );
-               reset( $result );
-               while ( true ) {
-                       $e = each( $expected );
-                       $r = each( $result );
-                       // If either of the arrays is shorter, abort. If both are done, success.
-                       $this->assertEquals( (bool)$e, (bool)$r );
-                       if ( !$e ) {
-                               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'] ) ) );
-                       // don't compare pageids
-                       if ( $e['key'] !== 'pageid' ) {
-                               // If values are arrays, compare recursively, otherwise compare with ===
-                               if ( is_array( $e['value'] ) && is_array( $r['value'] ) ) {
-                                       $this->assertResultRecursive( $e['value'], $r['value'] );
-                               } else {
-                                       $this->assertEquals( $e['value'], $r['value'] );
-                               }
+       private static function sanitizeResultArray( $result ) {
+               unset( $result['pageid'] );
+               foreach ( $result as $key => $value ) {
+                       if ( is_array( $value ) ) {
+                               $result[$key] = self::sanitizeResultArray( $value );
                        }
                }
+
+               // Sort the result by keys, then take advantage of how array_merge will
+               // renumber numeric keys while leaving others alone.
+               ksort( $result );
+               return array_merge( $result );
        }
 }
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 58f2014..16dac94 100644 (file)
@@ -68,7 +68,6 @@ class DatabaseMysqlBaseTest extends MediaWikiTestCase {
                $this->assertEquals( $expected, $quoted );
        }
 
-
        /**
         * Feeds testAddIdentifierQuotes
         *
index df73000..91399be 100644 (file)
@@ -2,7 +2,6 @@
 
 class MWDebugTest extends MediaWikiTestCase {
 
-
        protected function setUp() {
                parent::setUp();
                // Make sure MWDebug class is enabled
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 64276d9..f4f4154 100644 (file)
@@ -210,7 +210,6 @@ class ExifRotationTest extends MediaWikiTestCase {
                );
        }
 
-
        const TEST_WIDTH = 100;
        const TEST_HEIGHT = 200;
 
index 4cd2e8e..667c078 100644 (file)
@@ -16,8 +16,6 @@ class ExifTest extends MediaWikiTestCase {
 
                $this->mediaPath = __DIR__ . '/../../data/media/';
 
-
-
                $this->setMwGlobals( 'wgShowEXIF', true );
        }
 
index 6d1d681..7ffde3b 100644 (file)
@@ -80,7 +80,6 @@ class JpegMetadataExtractorTest extends MediaWikiTestCase {
                $this->assertEquals( $expected, $res['XMP'] );
        }
 
-
        public function testIPTCHashComparisionNoHash() {
                $segments = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-psir.jpg' );
                $res = JpegMetadataExtractor::doPSIR( $segments['PSIR'][0] );
index 5157228..bff64bb 100644 (file)
@@ -14,7 +14,6 @@ class JpegTest extends MediaWikiTestCase {
 
                $this->filePath = __DIR__ . '/../../data/media/';
 
-
                $this->setMwGlobals( 'wgShowEXIF', true );
 
                $this->backend = new FSFileBackend( array(
index 33a03a2..84deb1b 100644 (file)
@@ -121,7 +121,6 @@ class PNGMetadataExtractorTest extends MediaWikiTestCase {
                $this->assertEquals( 1, $meta['bitDepth'] );
        }
 
-
        public function testPngIndexColour() {
                $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
                        'Png-native-test.png' );
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 982b46b..4f17601 100644 (file)
@@ -26,7 +26,6 @@ class UploadBaseTest extends MediaWikiTestCase {
                parent::tearDown();
        }
 
-
        /**
         * First checks the return code
         * of UploadBase::getTitle() and then the actual returned title
index f0203d4..34ffb53 100644 (file)
@@ -67,7 +67,6 @@ class ZipDirectoryReaderTest extends MediaWikiTestCase {
                        'Wrong CD start disk error' );
        }
 
-
        public function testCentralDirectoryGap() {
                $this->readZipAssertError( 'cd-gap.zip', 'zip-bad',
                        'CD gap error' );
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 ab4d4ab..f551248 100644 (file)
@@ -225,7 +225,6 @@ class LanguageSrTest extends LanguageClassesTestCase {
                $this->assertConverted( $text, 'sr-ec', $msg );
        }
 
-
        /** Wrapper for converter::convertTo() method*/
        protected function convertTo( $text, $variant ) {
                return $this->getLang()
index aa09def..e958fde 100644 (file)
@@ -1134,7 +1134,6 @@ class LanguageTest extends LanguageClassesTestCase {
                );
        }
 
-
        /**
         * @dataProvider provideFormatDuration
         * @covers Language::formatDuration
@@ -1487,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' ),
@@ -1501,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 13f57c1..8cd3a6a 100644 (file)
@@ -105,7 +105,6 @@ class LanguageUzTest extends LanguageClassesTestCase {
                $this->assertConverted( $text, 'uz-cyrl', $msg );
        }
 
-
        /** Wrapper for converter::convertTo() method*/
        protected function convertTo( $text, $variant ) {
                return $this->getLang()->mConverter->convertTo( $text, $variant );
index 7b3fb68..6abd09f 100644 (file)
@@ -26,7 +26,7 @@ class CLDRPluralRuleEvaluatorTest extends MediaWikiTestCase {
 
        function validTestCases() {
                $tests = array(
-                       # expected, number, rule, comment
+                       # expected, rule, number, comment
                        array( 0, 'n is 1', 1, 'integer number and is' ),
                        array( 0, 'n is 1', "1", 'string integer number and is' ),
                        array( 0, 'n is 1', 1.0, 'float number and is' ),
index 83d8c71..6950fa3 100644 (file)
@@ -48,7 +48,6 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
                throw new MWException( "Could not determine revision id (" . $status->getWikiText() . ")" );
        }
 
-
        /**
         * gunzips the given file and stores the result in the original file name
         *
@@ -110,7 +109,6 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
                }
        }
 
-
        /**
         * Step the current XML reader until node end of given name is found.
         *
@@ -230,7 +228,6 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
                }
        }
 
-
        /**
         * Asserts that the xml reader is at an element of given tag that contains a given text,
         * and skips over the element.
index 83d7701..2a5bd5f 100644 (file)
@@ -111,7 +111,6 @@ class MaintenanceFixup extends Maintenance {
                $this->testCase = $testCase;
        }
 
-
        // --- Making protected functions visible for test
 
        public function output( $out, $channel = null ) {
@@ -122,7 +121,6 @@ class MaintenanceFixup extends Maintenance {
                return call_user_func_array( array( "parent", __FUNCTION__ ), func_get_args() );
        }
 
-
        // --- Requirements for getting instance of abstract class
 
        public function execute() {
@@ -135,7 +133,6 @@ class MaintenanceFixup extends Maintenance {
  */
 class MaintenanceTest extends MediaWikiTestCase {
 
-
        /**
         * The main Maintenance instance that is used for testing.
         *
@@ -143,7 +140,6 @@ class MaintenanceTest extends MediaWikiTestCase {
         */
        private $m;
 
-
        protected function setUp() {
                parent::setUp();
                $this->m = new MaintenanceFixup( $this );
@@ -157,7 +153,6 @@ class MaintenanceTest extends MediaWikiTestCase {
                parent::tearDown();
        }
 
-
        /**
         * asserts the output before and after simulating shutdown
         *
@@ -182,7 +177,6 @@ class MaintenanceTest extends MediaWikiTestCase {
                $this->expectOutputString( $postShutdownOutput );
        }
 
-
        // Although the following tests do not seem to be too consistent (compare for
        // example the newlines within the test.*StringString tests, or the
        // test.*Intermittent.* tests), the objective of these tests is not to describe
index 0f36bc4..adf026c 100644 (file)
@@ -137,7 +137,6 @@ class BaseDumpTest extends MediaWikiTestCase {
                $this->assertPrefetchEquals( "BackupDumperTestP2Text1", 2, 2 );
        }
 
-
        /**
         * Constructs a temporary file that can be used for prefetching
         *
index 15a928e..8a297b1 100644 (file)
@@ -418,7 +418,6 @@ class TextPassDumperTest extends DumpTestCase {
                $this->checkpointHelper( "gzip" );
        }
 
-
        /**
         * Creates a stub file that is used for testing the text pass of dumps
         *
index 438281d..5640b8d 100644 (file)
@@ -8,7 +8,6 @@
  */
 class BackupDumperLoggerTest extends DumpTestCase {
 
-
        // We'll add several log entries and users for this test. The following
        // variables hold the corresponding ids.
        private $userId1, $userId2;
@@ -85,7 +84,6 @@ class BackupDumperLoggerTest extends DumpTestCase {
                }
        }
 
-
        /**
         * asserts that the xml reader is at the beginning of a log entry and skips over
         * it while analyzing it.
index c6094d9..6963601 100644 (file)
@@ -272,7 +272,6 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertDumpEnd();
        }
 
-
        function testXmlDumpsBackupUseCase() {
                // xmldumps-backup typically performs a single dump that that writes
                // out three files
index 42792d5..dd80840 100644 (file)
@@ -25,7 +25,6 @@ class SemiMockedFetchText extends FetchText {
         */
        private $mockInvocations = array( 'getStdin' => 0 );
 
-
        /**
         * Data for the fake stdin
         *
@@ -82,7 +81,6 @@ class FetchTextTest extends MediaWikiTestCase {
        private $textId4;
        private $textId5;
 
-
        /**
         * @var Exception|null As the current MediaWikiTestCase::run is not
         * robust enough to recover from thrown exceptions directly, we cannot
@@ -119,7 +117,6 @@ class FetchTextTest extends MediaWikiTestCase {
                throw new MWException( "Could not determine text id" );
        }
 
-
        function addDBData() {
                $this->tablesUsed[] = 'page';
                $this->tablesUsed[] = 'revision';
@@ -145,7 +142,6 @@ class FetchTextTest extends MediaWikiTestCase {
                }
        }
 
-
        protected function setUp() {
                parent::setUp();
 
@@ -157,7 +153,6 @@ class FetchTextTest extends MediaWikiTestCase {
                $this->fetchText = new SemiMockedFetchText();
        }
 
-
        /**
         * Helper to relate FetchText's input and output
         */
@@ -170,7 +165,6 @@ class FetchTextTest extends MediaWikiTestCase {
                $this->expectOutputString( $expectedOutput );
        }
 
-
        // Instead of the following functions, a data provider would be great.
        // However, as data providers are evaluated /before/ addDBData, a data
        // provider would not know the required ids.
index a385320..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
@@ -144,7 +149,6 @@ class SideBarTest extends MediaWikiLangTestCase {
                );
        }
 
-
        #### Attributes for external links ##########################
        private function getAttribs() {
                # Sidebar text we will use everytime
@@ -163,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 746cb70..cce1b7e 100644 (file)
@@ -193,7 +193,6 @@ class ResourcesTest extends MediaWikiTestCase {
                        }
                }
 
-
                return $cases;
        }
 }
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));
index f0bb0fc..cb0bf69 100644 (file)
 
        } );
 
-       QUnit.test( 'getUrl', 2, function ( assert ) {
+       QUnit.test( 'getUrl', 3, function ( assert ) {
                var title;
 
                // Config
                mw.config.set( 'wgArticlePath', '/wiki/$1' );
 
                title = new mw.Title( 'Foobar' );
-               assert.equal( title.getUrl(), '/wiki/Foobar', 'Basic functionally, getUrl uses mw.util.getUrl' );
+               assert.equal( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' );
+               assert.equal( title.getUrl({ action: 'edit' }), '/wiki/Foobar?action=edit', 'Basic functionality, \'params\' parameter' );
 
                title = new mw.Title( 'John Doe', 3 );
                assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
        } );
 
-       QUnit.test( 'newFromImg', 36, function ( assert ) {
+       QUnit.test( 'newFromImg', 40, function ( assert ) {
                var title, i, thisCase, prefix,
                        cases = [
+                               {
+                                       url: '//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Princess_Alexandra_of_Denmark_%28later_Queen_Alexandra%2C_wife_of_Edward_VII%29_with_her_two_eldest_sons%2C_Prince_Albert_Victor_%28Eddy%29_and_George_Frederick_Ernest_Albert_%28later_George_V%29.jpg/939px-thumbnail.jpg',
+                                       typeOfUrl: 'Hashed thumb with shortened path',
+                                       nameText: 'Princess Alexandra of Denmark (later Queen Alexandra, wife of Edward VII) with her two eldest sons, Prince Albert Victor (Eddy) and George Frederick Ernest Albert (later George V)',
+                                       prefixedText: 'File:Princess Alexandra of Denmark (later Queen Alexandra, wife of Edward VII) with her two eldest sons, Prince Albert Victor (Eddy) and George Frederick Ernest Albert (later George V).jpg'
+                               },
                                {
                                        url: '/wiki/images/thumb/9/91/Anticlockwise_heliotrope%27s.jpg/99px-Anticlockwise_heliotrope%27s.jpg',
                                        typeOfUrl: 'Normal hashed directory thumbnail',
index 88e5885..f4433f4 100644 (file)
@@ -527,7 +527,6 @@ class TestFileIterator implements Iterator {
                return false;
        }
 
-
        /**
         * Clear section name and its data
         */
index 35ab9f2..ad5239e 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -180,7 +180,6 @@ function wfStreamThumb( array $params ) {
                return;
        }
 
-
        // Check the source file storage path
        if ( !$img->exists() ) {
                $redirectedLocation = false;
@@ -247,7 +246,6 @@ function wfStreamThumb( array $params ) {
        unset( $params['r'] ); // ignore 'r' because we unconditionally pass File::RENDER
        unset( $params['f'] ); // We're done with 'f' parameter.
 
-
        // Get the normalized thumbnail name from the parameters...
        try {
                $thumbName = $img->thumbName( $params );